[alsa-devel] [PATCH] ASoC: dsd1791: Introduce driver for TI DSD1791 stereo codec
Mark Brown
broonie at opensource.wolfsonmicro.com
Tue Dec 20 01:39:17 CET 2011
On Mon, Dec 19, 2011 at 01:53:30PM -0500, Michael Williamson wrote:
> +/* DSD1791 register cache (16 through 23 are used) */
> +static const u8 dsd1791_reg[] = {
> + [16] = 0xFF,
> + [17] = 0xFF,
> + [18] = 0x50,
> + [19] = 0x00,
> + [20] = 0x00,
> + [21] = 0x01,
> + [22] = 0x00,
> + [23] = 0x00,
> +};
Use the regmap API.
> + reg = snd_soc_read(codec, DSD1791_REG_AUDFMT);
> + reg &= ~(DSD1791_FMT_MASK);
> + reg |= fmt;
> + return snd_soc_write(codec, DSD1791_REG_AUDFMT, reg);
snd_soc_update_bits().
> +static const struct snd_kcontrol_new dsd1791_snd_controls[] = {
> + SOC_SINGLE("Left Playback Volume", DSD1791_REG_DIGATT_L, 0, 255, 0),
> + SOC_SINGLE("Right Playback Volume", DSD1791_REG_DIGATT_R, 0, 255, 0),
This should be a single stereo control and you should supply dB data.
> + /* enable attenuation control */
> + reg = snd_soc_read(codec, DSD1791_REG_AUDFMT);
> + reg |= 0x80;
> + snd_soc_write(codec, DSD1791_REG_AUDFMT, reg);
This should probably be runtime controllable, or if it's got a good
reason for not being it should be using snd_soc_update_bits().
> + snd_soc_add_controls(codec, dsd1791_snd_controls,
> + ARRAY_SIZE(dsd1791_snd_controls));
Initialize the controls from the driver.
More information about the Alsa-devel
mailing list