ASoC: jack: add snd_soc_codec_set_jack
There are many codecs with the capability of jack detection. Usually, we create a jack on machine driver but there is no common function for machine driver to deliver the jack pointer to codec driver. snd_soc_codec_set_jack can be used for delivering the jack pointer to codec driver and enable the jack detection function. To make it work, codec driver need to define a callback function to receive the jack pointer and do all necessary procedure for enabling jack detection. Signed-off-by: Bard Liao <bardliao@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
73548dd316
Коммит
d7344010d1
|
@ -434,6 +434,8 @@ int snd_soc_codec_set_sysclk(struct snd_soc_codec *codec, int clk_id,
|
||||||
int source, unsigned int freq, int dir);
|
int source, unsigned int freq, int dir);
|
||||||
int snd_soc_codec_set_pll(struct snd_soc_codec *codec, int pll_id, int source,
|
int snd_soc_codec_set_pll(struct snd_soc_codec *codec, int pll_id, int source,
|
||||||
unsigned int freq_in, unsigned int freq_out);
|
unsigned int freq_in, unsigned int freq_out);
|
||||||
|
int snd_soc_codec_set_jack(struct snd_soc_codec *codec,
|
||||||
|
struct snd_soc_jack *jack, void *data);
|
||||||
|
|
||||||
int snd_soc_register_card(struct snd_soc_card *card);
|
int snd_soc_register_card(struct snd_soc_card *card);
|
||||||
int snd_soc_unregister_card(struct snd_soc_card *card);
|
int snd_soc_unregister_card(struct snd_soc_card *card);
|
||||||
|
@ -908,6 +910,8 @@ struct snd_soc_codec_driver {
|
||||||
int clk_id, int source, unsigned int freq, int dir);
|
int clk_id, int source, unsigned int freq, int dir);
|
||||||
int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source,
|
int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source,
|
||||||
unsigned int freq_in, unsigned int freq_out);
|
unsigned int freq_in, unsigned int freq_out);
|
||||||
|
int (*set_jack)(struct snd_soc_codec *codec,
|
||||||
|
struct snd_soc_jack *jack, void *data);
|
||||||
|
|
||||||
/* codec IO */
|
/* codec IO */
|
||||||
struct regmap *(*get_regmap)(struct device *);
|
struct regmap *(*get_regmap)(struct device *);
|
||||||
|
|
|
@ -22,6 +22,24 @@
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <trace/events/asoc.h>
|
#include <trace/events/asoc.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* snd_soc_codec_set_jack - configure codec jack.
|
||||||
|
* @codec: CODEC
|
||||||
|
* @jack: structure to use for the jack
|
||||||
|
* @data: can be used if codec driver need extra data for configuring jack
|
||||||
|
*
|
||||||
|
* Configures and enables jack detection function.
|
||||||
|
*/
|
||||||
|
int snd_soc_codec_set_jack(struct snd_soc_codec *codec,
|
||||||
|
struct snd_soc_jack *jack, void *data)
|
||||||
|
{
|
||||||
|
if (codec->driver->set_jack)
|
||||||
|
return codec->driver->set_jack(codec, jack, data);
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(snd_soc_codec_set_jack);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* snd_soc_card_jack_new - Create a new jack
|
* snd_soc_card_jack_new - Create a new jack
|
||||||
* @card: ASoC card
|
* @card: ASoC card
|
||||||
|
|
Загрузка…
Ссылка в новой задаче