Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1661699a authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Convert WM8523 to table based control and DAPM initialization

parent fef24d92
Loading
Loading
Loading
Loading
+9 −17
Original line number Original line Diff line number Diff line
@@ -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[] = {