Message ID | 20190716115725.66558-6-cychiang@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add HDMI jack support on RK3288 | expand |
On Tue, Jul 16, 2019 at 7:58 PM Cheng-Yi Chiang <cychiang@chromium.org> wrote: > > diff --git a/sound/soc/rockchip/rockchip_max98090.c b/sound/soc/rockchip/rockchip_max98090.c > index c82948e383da..c81c4acda917 100644 > --- a/sound/soc/rockchip/rockchip_max98090.c > +++ b/sound/soc/rockchip/rockchip_max98090.c > +static struct snd_soc_jack rk_hdmi_jack; > + > +static int rk_hdmi_init(struct snd_soc_pcm_runtime *runtime) > +{ > + struct snd_soc_card *card = runtime->card; > + struct snd_soc_component *component = runtime->codec_dai->component; > + int ret; > + > + /* enable jack detection */ > + ret = snd_soc_card_jack_new(card, "HDMI Jack", SND_JACK_LINEOUT, > + &rk_hdmi_jack, NULL, 0); > + if (ret) { > + dev_err(card->dev, "Can't new HDMI Jack %d\n", ret); > + return ret; > + } > + > + return hdmi_codec_set_jack_detect(component, &rk_hdmi_jack); > +} In the patch, you should select SND_SOC_HDMI_CODEC, because the patch uses hdmi_codec_set_jack_detect which depends on hdmi-codec.c.
On Tue, Jul 16, 2019 at 10:16 PM Tzung-Bi Shih <tzungbi@google.com> wrote: > > On Tue, Jul 16, 2019 at 7:58 PM Cheng-Yi Chiang <cychiang@chromium.org> wrote: > > > > diff --git a/sound/soc/rockchip/rockchip_max98090.c b/sound/soc/rockchip/rockchip_max98090.c > > index c82948e383da..c81c4acda917 100644 > > --- a/sound/soc/rockchip/rockchip_max98090.c > > +++ b/sound/soc/rockchip/rockchip_max98090.c > > +static struct snd_soc_jack rk_hdmi_jack; > > + > > +static int rk_hdmi_init(struct snd_soc_pcm_runtime *runtime) > > +{ > > + struct snd_soc_card *card = runtime->card; > > + struct snd_soc_component *component = runtime->codec_dai->component; > > + int ret; > > + > > + /* enable jack detection */ > > + ret = snd_soc_card_jack_new(card, "HDMI Jack", SND_JACK_LINEOUT, > > + &rk_hdmi_jack, NULL, 0); > > + if (ret) { > > + dev_err(card->dev, "Can't new HDMI Jack %d\n", ret); > > + return ret; > > + } > > + > > + return hdmi_codec_set_jack_detect(component, &rk_hdmi_jack); > > +} > In the patch, you should select SND_SOC_HDMI_CODEC, because the patch > uses hdmi_codec_set_jack_detect which depends on hdmi-codec.c. Thanks! I'll fix in v5.
diff --git a/sound/soc/rockchip/rockchip_max98090.c b/sound/soc/rockchip/rockchip_max98090.c index c82948e383da..c81c4acda917 100644 --- a/sound/soc/rockchip/rockchip_max98090.c +++ b/sound/soc/rockchip/rockchip_max98090.c @@ -134,6 +134,25 @@ enum { DAILINK_HDMI, }; +static struct snd_soc_jack rk_hdmi_jack; + +static int rk_hdmi_init(struct snd_soc_pcm_runtime *runtime) +{ + struct snd_soc_card *card = runtime->card; + struct snd_soc_component *component = runtime->codec_dai->component; + int ret; + + /* enable jack detection */ + ret = snd_soc_card_jack_new(card, "HDMI Jack", SND_JACK_LINEOUT, + &rk_hdmi_jack, NULL, 0); + if (ret) { + dev_err(card->dev, "Can't new HDMI Jack %d\n", ret); + return ret; + } + + return hdmi_codec_set_jack_detect(component, &rk_hdmi_jack); +} + /* max98090 and HDMI codec dai_link */ static struct snd_soc_dai_link rk_dailinks[] = { [DAILINK_MAX98090] = { @@ -151,6 +170,7 @@ static struct snd_soc_dai_link rk_dailinks[] = { .ops = &rk_aif1_ops, .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS, + .init = rk_hdmi_init, SND_SOC_DAILINK_REG(hdmi), } };
In machine driver, create a jack and let hdmi-codec report jack status. Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> --- sound/soc/rockchip/rockchip_max98090.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)