Commit 88abbf62 authored by Tzung-Bi Shih's avatar Tzung-Bi Shih Committed by Mark Brown

ASoC: mediatek: mt8183: support HDMI jack reporting

Supports HDMI jack reporting.
Signed-off-by: default avatarTzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20200710052505.3664118-4-tzungbi@google.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent f2024dc5
...@@ -127,6 +127,7 @@ config SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A ...@@ -127,6 +127,7 @@ config SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A
select SND_SOC_BT_SCO select SND_SOC_BT_SCO
select SND_SOC_TS3A227E select SND_SOC_TS3A227E
select SND_SOC_CROS_EC_CODEC if CROS_EC select SND_SOC_CROS_EC_CODEC if CROS_EC
select SND_SOC_HDMI_CODEC
help help
This adds ASoC driver for Mediatek MT8183 boards This adds ASoC driver for Mediatek MT8183 boards
with the MT6358 TS3A227E MAX98357A RT1015 audio codec. with the MT6358 TS3A227E MAX98357A RT1015 audio codec.
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/pinctrl/consumer.h> #include <linux/pinctrl/consumer.h>
#include <sound/hdmi-codec.h>
#include <sound/jack.h> #include <sound/jack.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <sound/soc.h> #include <sound/soc.h>
...@@ -36,7 +37,7 @@ static const char * const mt8183_pin_str[PIN_STATE_MAX] = { ...@@ -36,7 +37,7 @@ static const char * const mt8183_pin_str[PIN_STATE_MAX] = {
struct mt8183_mt6358_ts3a227_max98357_priv { struct mt8183_mt6358_ts3a227_max98357_priv {
struct pinctrl *pinctrl; struct pinctrl *pinctrl;
struct pinctrl_state *pin_states[PIN_STATE_MAX]; struct pinctrl_state *pin_states[PIN_STATE_MAX];
struct snd_soc_jack headset_jack; struct snd_soc_jack headset_jack, hdmi_jack;
}; };
static int mt8183_mt6358_i2s_hw_params(struct snd_pcm_substream *substream, static int mt8183_mt6358_i2s_hw_params(struct snd_pcm_substream *substream,
...@@ -337,6 +338,22 @@ static const struct snd_soc_ops mt8183_mt6358_ts3a227_max98357_wov_ops = { ...@@ -337,6 +338,22 @@ static const struct snd_soc_ops mt8183_mt6358_ts3a227_max98357_wov_ops = {
.shutdown = mt8183_mt6358_ts3a227_max98357_wov_shutdown, .shutdown = mt8183_mt6358_ts3a227_max98357_wov_shutdown,
}; };
static int
mt8183_mt6358_ts3a227_max98357_hdmi_init(struct snd_soc_pcm_runtime *rtd)
{
struct mt8183_mt6358_ts3a227_max98357_priv *priv =
snd_soc_card_get_drvdata(rtd->card);
int ret;
ret = snd_soc_card_jack_new(rtd->card, "HDMI Jack", SND_JACK_LINEOUT,
&priv->hdmi_jack, NULL, 0);
if (ret)
return ret;
return hdmi_codec_set_jack_detect(asoc_rtd_to_codec(rtd, 0)->component,
&priv->hdmi_jack);
}
static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = { static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = {
/* FE */ /* FE */
{ {
...@@ -499,6 +516,7 @@ static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = { ...@@ -499,6 +516,7 @@ static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = {
.ignore_suspend = 1, .ignore_suspend = 1,
.be_hw_params_fixup = mt8183_i2s_hw_params_fixup, .be_hw_params_fixup = mt8183_i2s_hw_params_fixup,
.ops = &mt8183_mt6358_tdm_ops, .ops = &mt8183_mt6358_tdm_ops,
.init = mt8183_mt6358_ts3a227_max98357_hdmi_init,
SND_SOC_DAILINK_REG(tdm), SND_SOC_DAILINK_REG(tdm),
}, },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment