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

Commit a5302181 authored by Liam Girdwood's avatar Liam Girdwood Committed by Jaroslav Kysela
Browse files

ALSA: asoc: core - refactored DAPM pin control API.



Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
snd_soc_dapm_disable_pin().

Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
Renamed snd_soc_dapm_get_endpoint_status() to
snd_soc_dapm_get_pin_status().

Signed-off-by: default avatarLiam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent be321a89
Loading
Loading
Loading
Loading
+5 −10
Original line number Original line Diff line number Diff line
@@ -234,16 +234,11 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
/* dapm sys fs - used by the core */
/* dapm sys fs - used by the core */
int snd_soc_dapm_sys_add(struct device *dev);
int snd_soc_dapm_sys_add(struct device *dev);


/* event handler for register modifier widget - used by the soc-dapm */
/* dapm audio pin control and status */
int dapm_reg_event(struct snd_soc_dapm_widget *w,
int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin);
		   struct snd_kcontrol *kcontrol, int event);
int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin);

int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin);
/* dapm audio endpoint control */
int snd_soc_dapm_sync(struct snd_soc_codec *codec);
int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
	char *pin, int status);
int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
	char *pin);
int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);


/* dapm widget types */
/* dapm widget types */
enum snd_soc_dapm_type {
enum snd_soc_dapm_type {
+5 −5
Original line number Original line Diff line number Diff line
@@ -216,14 +216,14 @@ static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
	snd_soc_dapm_add_route(codec, intercon, ARRAY_SIZE(intercon));
	snd_soc_dapm_add_route(codec, intercon, ARRAY_SIZE(intercon));


	/* not connected */
	/* not connected */
	snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
	snd_soc_dapm_disable_pin(codec, "RLINEIN");
	snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
	snd_soc_dapm_disable_pin(codec, "LLINEIN");


	/* always connected */
	/* always connected */
	snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
	snd_soc_dapm_enable_pin(codec, "Int Mic");
	snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
	snd_soc_dapm_enable_pin(codec, "Ext Spk");


	snd_soc_dapm_sync_endpoints(codec);
	snd_soc_dapm_sync(codec);


	return 0;
	return 0;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@
 *  ---------------------------------------
 *  ---------------------------------------
 *
 *
 *  Hence the machine layer should disable unsupported inputs/outputs by
 *  Hence the machine layer should disable unsupported inputs/outputs by
 *  snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0), etc.
 *  snd_soc_dapm_disable_pin(codec, "MONO_LOUT"), etc.
 */
 */


#include <linux/module.h>
#include <linux/module.h>
@@ -206,7 +206,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
		}
		}


		if (found)
		if (found)
			snd_soc_dapm_sync_endpoints(widget->codec);
			snd_soc_dapm_sync(widget->codec);
	}
	}


	ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
	ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
+8 −8
Original line number Original line Diff line number Diff line
@@ -103,17 +103,17 @@ static int evm_aic3x_init(struct snd_soc_codec *codec)
	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));


	/* not connected */
	/* not connected */
	snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
	snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
	snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
	snd_soc_dapm_disable_pin(codec, "HPLCOM");
	snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
	snd_soc_dapm_disable_pin(codec, "HPRCOM");


	/* always connected */
	/* always connected */
	snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
	snd_soc_dapm_enable_pin(codec, "Headphone Jack");
	snd_soc_dapm_set_endpoint(codec, "Line Out", 1);
	snd_soc_dapm_enable_pin(codec, "Line Out");
	snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
	snd_soc_dapm_enable_pin(codec, "Mic Jack");
	snd_soc_dapm_set_endpoint(codec, "Line In", 1);
	snd_soc_dapm_enable_pin(codec, "Line In");


	snd_soc_dapm_sync_endpoints(codec);
	snd_soc_dapm_sync(codec);


	return 0;
	return 0;
}
}
+19 −8
Original line number Original line Diff line number Diff line
@@ -50,11 +50,22 @@ static int n810_dmic_func;


static void n810_ext_control(struct snd_soc_codec *codec)
static void n810_ext_control(struct snd_soc_codec *codec)
{
{
	snd_soc_dapm_set_endpoint(codec, "Ext Spk", n810_spk_func);
	if (n810_spk_func)
	snd_soc_dapm_set_endpoint(codec, "Headphone Jack", n810_jack_func);
		snd_soc_dapm_enable_pin(codec, "Ext Spk");
	snd_soc_dapm_set_endpoint(codec, "DMic", n810_dmic_func);
	else
		snd_soc_dapm_disable_pin(codec, "Ext Spk");

	if (n810_jack_func)
		snd_soc_dapm_enable_pin(codec, "Headphone Jack");
	else
		snd_soc_dapm_disable_pin(codec, "Headphone Jack");

	if (n810_dmic_func)
		snd_soc_dapm_enable_pin(codec, "DMic");
	else
		snd_soc_dapm_disable_pin(codec, "DMic);


	snd_soc_dapm_sync_endpoints(codec);
	snd_soc_dapm_sync(codec);
}
}


static int n810_startup(struct snd_pcm_substream *substream)
static int n810_startup(struct snd_pcm_substream *substream)
@@ -236,9 +247,9 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
	int i, err;
	int i, err;


	/* Not connected */
	/* Not connected */
	snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
	snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
	snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
	snd_soc_dapm_disable_pin(codec, "HPLCOM");
	snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
	snd_soc_dapm_disable_pin(codec, "HPRCOM");


	/* Add N810 specific controls */
	/* Add N810 specific controls */
	for (i = 0; i < ARRAY_SIZE(aic33_n810_controls); i++) {
	for (i = 0; i < ARRAY_SIZE(aic33_n810_controls); i++) {
@@ -255,7 +266,7 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
	/* Set up N810 specific audio path audio_map */
	/* Set up N810 specific audio path audio_map */
	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));


	snd_soc_dapm_sync_endpoints(codec);
	snd_soc_dapm_sync(codec);


	return 0;
	return 0;
}
}
Loading