Unverified Commit 42186bae authored by Mark Brown's avatar Mark Brown
Browse files

Add DMIC slew rate controls

Merge series from Seven Lee <wtli@nuvoton.com>:

Determine DMIC slew rate via property setup.

Change:
V3 -> V4:
 - add "maximum: 7" description.

V2 -> V3:
 - Update description of DMIC slew rate and remove
   "selection" key words from property name
 - Corrected variable name of DMIC slew rate from c file

V1 -> V2:
 - Corrected description of DMIC slew rate.

Seven Lee (2):
  ASoC: dt-bindings: nau8821: Add DMIC slew rate.
  ASoC: nau8821: Add slew rate controls.

 .../devicetree/bindings/sound/nuvoton,nau8821.yaml       | 9 +++++++++
 sound/soc/codecs/nau8821.c                               | 7 +++++++
 sound/soc/codecs/nau8821.h                               | 3 +++
 3 files changed, 19 insertions(+)

--
2.25.1
parents 601cc04c 91d1a18b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -89,6 +89,14 @@ properties:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 3072000

  nuvoton,dmic-slew-rate:
    description: The range 0 to 7 represents the speed of DMIC slew rate.
        The lowest value 0 means the slowest rate and the highest value
        7 means the fastest rate.
    $ref: /schemas/types.yaml#/definitions/uint32
    maximum: 7
    default: 0

  nuvoton,left-input-single-end:
    description: Enable left input with single-ended settings if set.
        For the headset mic application, the single-ended control is
@@ -127,6 +135,7 @@ examples:
            nuvoton,jack-insert-debounce = <7>;
            nuvoton,jack-eject-debounce = <0>;
            nuvoton,dmic-clk-threshold = <3072000>;
            nuvoton,dmic-slew-rate= <0>;
            #sound-dai-cells = <0>;
        };
    };
+7 −0
Original line number Diff line number Diff line
@@ -1738,6 +1738,10 @@ static int nau8821_read_device_properties(struct device *dev,
		&nau8821->dmic_clk_threshold);
	if (ret)
		nau8821->dmic_clk_threshold = 3072000;
	ret = device_property_read_u32(dev, "nuvoton,dmic-slew-rate",
		&nau8821->dmic_slew_rate);
	if (ret)
		nau8821->dmic_slew_rate = 0;

	return 0;
}
@@ -1797,6 +1801,9 @@ static void nau8821_init_regs(struct nau8821 *nau8821)
		NAU8821_ADC_SYNC_DOWN_MASK, NAU8821_ADC_SYNC_DOWN_64);
	regmap_update_bits(regmap, NAU8821_R2C_DAC_CTRL1,
		NAU8821_DAC_OVERSAMPLE_MASK, NAU8821_DAC_OVERSAMPLE_64);
	regmap_update_bits(regmap, NAU8821_R13_DMIC_CTRL,
		NAU8821_DMIC_SLEW_MASK, nau8821->dmic_slew_rate <<
		NAU8821_DMIC_SLEW_SFT);
	if (nau8821->left_input_single_end) {
		regmap_update_bits(regmap, NAU8821_R6B_PGA_MUTE,
			NAU8821_MUTE_MICNL_EN, NAU8821_MUTE_MICNL_EN);
+3 −0
Original line number Diff line number Diff line
@@ -236,6 +236,8 @@
#define NAU8821_DMIC_SRC_MASK	(0x3 << NAU8821_DMIC_SRC_SFT)
#define NAU8821_CLK_DMIC_SRC	(0x2 << NAU8821_DMIC_SRC_SFT)
#define NAU8821_DMIC_EN_SFT	0
#define NAU8821_DMIC_SLEW_SFT  8
#define NAU8821_DMIC_SLEW_MASK (0x7 << NAU8821_DMIC_SLEW_SFT)

/* GPIO12_CTRL (0x1a) */
#define NAU8821_JKDET_PULL_UP	(0x1 << 11) /* 0 - pull down, 1 - pull up */
@@ -573,6 +575,7 @@ struct nau8821 {
	int jack_eject_debounce;
	int fs;
	int dmic_clk_threshold;
	int dmic_slew_rate;
	int key_enable;
};