Message ID | 20240422134354.89291-3-srinivas.kandagatla@linaro.org |
---|---|
State | New |
Headers | show |
Series | ASoC: qcom: display port changes | expand |
On Mon, Apr 22, 2024 at 02:43:52PM +0100, Srinivas Kandagatla wrote: > From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > > Add a common function to add Display port jack, this can be used by > multiple board files and avoid any code duplication. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > --- > sound/soc/qcom/common.c | 29 +++++++++++++++++++++++++++++ > sound/soc/qcom/common.h | 3 +++ > 2 files changed, 32 insertions(+) > > diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c > index 747041fa7866..3bfe618e7bd7 100644 > --- a/sound/soc/qcom/common.c > +++ b/sound/soc/qcom/common.c > @@ -7,10 +7,14 @@ > #include <sound/jack.h> > #include <linux/input-event-codes.h> > #include "common.h" Missing newline. > +#define NAME_SIZE 32 > > static const struct snd_soc_dapm_widget qcom_jack_snd_widgets[] = { > SND_SOC_DAPM_HP("Headphone Jack", NULL), > SND_SOC_DAPM_MIC("Mic Jack", NULL), > + SND_SOC_DAPM_SPK("HDMI/DP0 Jack", NULL), > + SND_SOC_DAPM_SPK("HDMI/DP1 Jack", NULL), > + SND_SOC_DAPM_SPK("HDMI/DP2 Jack", NULL), > }; > > int qcom_snd_parse_of(struct snd_soc_card *card) > @@ -239,4 +243,29 @@ int qcom_snd_wcd_jack_setup(struct snd_soc_pcm_runtime *rtd, > return 0; > } > EXPORT_SYMBOL_GPL(qcom_snd_wcd_jack_setup); > + > +int qcom_snd_dp_jack_setup(struct snd_soc_pcm_runtime *rtd, > + struct snd_soc_jack *hdmi_jack, int hdmi_pcm_id) The function is called dp_jack_setup() so shouldn't the parameters reflect that and be called dp_jack etc. for consistency (i.e. even if you plan on using this interface also for hdmi)? Johan
diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c index 747041fa7866..3bfe618e7bd7 100644 --- a/sound/soc/qcom/common.c +++ b/sound/soc/qcom/common.c @@ -7,10 +7,14 @@ #include <sound/jack.h> #include <linux/input-event-codes.h> #include "common.h" +#define NAME_SIZE 32 static const struct snd_soc_dapm_widget qcom_jack_snd_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Mic Jack", NULL), + SND_SOC_DAPM_SPK("HDMI/DP0 Jack", NULL), + SND_SOC_DAPM_SPK("HDMI/DP1 Jack", NULL), + SND_SOC_DAPM_SPK("HDMI/DP2 Jack", NULL), }; int qcom_snd_parse_of(struct snd_soc_card *card) @@ -239,4 +243,29 @@ int qcom_snd_wcd_jack_setup(struct snd_soc_pcm_runtime *rtd, return 0; } EXPORT_SYMBOL_GPL(qcom_snd_wcd_jack_setup); + +int qcom_snd_dp_jack_setup(struct snd_soc_pcm_runtime *rtd, + struct snd_soc_jack *hdmi_jack, int hdmi_pcm_id) +{ + struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0); + struct snd_soc_card *card = rtd->card; + char jack_name[NAME_SIZE]; + int rval, i; + + snprintf(jack_name, sizeof(jack_name), "HDMI/DP%d Jack", hdmi_pcm_id); + rval = snd_soc_card_jack_new(card, jack_name, SND_JACK_AVOUT, hdmi_jack); + if (rval) + return rval; + + for_each_rtd_codec_dais(rtd, i, codec_dai) { + rval = snd_soc_component_set_jack(codec_dai->component, hdmi_jack, NULL); + if (rval != 0 && rval != -ENOTSUPP) { + dev_warn(card->dev, "Failed to set jack: %d\n", rval); + return rval; + } + } + + return 0; +} +EXPORT_SYMBOL_GPL(qcom_snd_dp_jack_setup); MODULE_LICENSE("GPL"); diff --git a/sound/soc/qcom/common.h b/sound/soc/qcom/common.h index d7f80ee5ae26..3675d72c5285 100644 --- a/sound/soc/qcom/common.h +++ b/sound/soc/qcom/common.h @@ -9,5 +9,8 @@ int qcom_snd_parse_of(struct snd_soc_card *card); int qcom_snd_wcd_jack_setup(struct snd_soc_pcm_runtime *rtd, struct snd_soc_jack *jack, bool *jack_setup); +int qcom_snd_dp_jack_setup(struct snd_soc_pcm_runtime *rtd, + struct snd_soc_jack *jack, int id); + #endif