ASoC: Convert WM8523 to table based control and DAPM initialization
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
Родитель
fef24d92a6
Коммит
1661699aaa
|
@ -85,7 +85,7 @@ static const char *wm8523_zd_count_text[] = {
|
||||||
static const struct soc_enum wm8523_zc_count =
|
static const struct soc_enum wm8523_zc_count =
|
||||||
SOC_ENUM_SINGLE(WM8523_ZERO_DETECT, 0, 2, wm8523_zd_count_text);
|
SOC_ENUM_SINGLE(WM8523_ZERO_DETECT, 0, 2, wm8523_zd_count_text);
|
||||||
|
|
||||||
static const struct snd_kcontrol_new wm8523_snd_controls[] = {
|
static const struct snd_kcontrol_new wm8523_controls[] = {
|
||||||
SOC_DOUBLE_R_TLV("Playback Volume", WM8523_DAC_GAINL, WM8523_DAC_GAINR,
|
SOC_DOUBLE_R_TLV("Playback Volume", WM8523_DAC_GAINL, WM8523_DAC_GAINR,
|
||||||
0, 448, 0, dac_tlv),
|
0, 448, 0, dac_tlv),
|
||||||
SOC_SINGLE("ZC Switch", WM8523_DAC_CTRL3, 4, 1, 0),
|
SOC_SINGLE("ZC Switch", WM8523_DAC_CTRL3, 4, 1, 0),
|
||||||
|
@ -102,22 +102,11 @@ SND_SOC_DAPM_OUTPUT("LINEVOUTL"),
|
||||||
SND_SOC_DAPM_OUTPUT("LINEVOUTR"),
|
SND_SOC_DAPM_OUTPUT("LINEVOUTR"),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_soc_dapm_route intercon[] = {
|
static const struct snd_soc_dapm_route wm8523_dapm_routes[] = {
|
||||||
{ "LINEVOUTL", NULL, "DAC" },
|
{ "LINEVOUTL", NULL, "DAC" },
|
||||||
{ "LINEVOUTR", NULL, "DAC" },
|
{ "LINEVOUTR", NULL, "DAC" },
|
||||||
};
|
};
|
||||||
|
|
||||||
static int wm8523_add_widgets(struct snd_soc_codec *codec)
|
|
||||||
{
|
|
||||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
|
||||||
|
|
||||||
snd_soc_dapm_new_controls(dapm, wm8523_dapm_widgets,
|
|
||||||
ARRAY_SIZE(wm8523_dapm_widgets));
|
|
||||||
snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon));
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
int value;
|
int value;
|
||||||
int ratio;
|
int ratio;
|
||||||
|
@ -480,10 +469,6 @@ static int wm8523_probe(struct snd_soc_codec *codec)
|
||||||
/* Bias level configuration will have done an extra enable */
|
/* Bias level configuration will have done an extra enable */
|
||||||
regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
|
regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
|
||||||
|
|
||||||
snd_soc_add_controls(codec, wm8523_snd_controls,
|
|
||||||
ARRAY_SIZE(wm8523_snd_controls));
|
|
||||||
wm8523_add_widgets(codec);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_enable:
|
err_enable:
|
||||||
|
@ -513,6 +498,13 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8523 = {
|
||||||
.reg_word_size = sizeof(u16),
|
.reg_word_size = sizeof(u16),
|
||||||
.reg_cache_default = wm8523_reg,
|
.reg_cache_default = wm8523_reg,
|
||||||
.volatile_register = wm8523_volatile_register,
|
.volatile_register = wm8523_volatile_register,
|
||||||
|
|
||||||
|
.controls = wm8523_controls,
|
||||||
|
.num_controls = ARRAY_SIZE(wm8523_controls),
|
||||||
|
.dapm_widgets = wm8523_dapm_widgets,
|
||||||
|
.num_dapm_widgets = ARRAY_SIZE(wm8523_dapm_widgets),
|
||||||
|
.dapm_routes = wm8523_dapm_routes,
|
||||||
|
.num_dapm_routes = ARRAY_SIZE(wm8523_dapm_routes),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id wm8523_of_match[] = {
|
static const struct of_device_id wm8523_of_match[] = {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче