diff --git a/sound/soc/amlogic/auge/spdif.c b/sound/soc/amlogic/auge/spdif.c index 8464ad95f94d..89c58eb862c8 100644 --- a/sound/soc/amlogic/auge/spdif.c +++ b/sound/soc/amlogic/auge/spdif.c @@ -1075,12 +1075,23 @@ static int aml_dai_spdif_prepare( spdif_get_channel_status_info(&chsts, runtime->rate); spdif_set_channel_status_info(&chsts, p_spdif->id); +#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON) + /* TOHDMITX_CTRL0 + * ODROID is spdif_b only would notify to hdmitx + */ + if (p_spdif->id == 1) { + spdifout_to_hdmitx_ctrl(p_spdif->id); + /* notify to hdmitx */ + spdif_notify_to_hdmitx(substream); + } +#else /* TOHDMITX_CTRL0 * Both spdif_a/spdif_b would notify to hdmitx */ spdifout_to_hdmitx_ctrl(p_spdif->id); /* notify to hdmitx */ spdif_notify_to_hdmitx(substream); +#endif } else { struct toddr *to = p_spdif->tddr; diff --git a/sound/soc/amlogic/auge/spdif_hw.c b/sound/soc/amlogic/auge/spdif_hw.c index 4b7e4499d050..de1f103b0b55 100644 --- a/sound/soc/amlogic/auge/spdif_hw.c +++ b/sound/soc/amlogic/auge/spdif_hw.c @@ -624,8 +624,15 @@ void spdifout_play_with_zerodata(unsigned int spdif_id) /* spdif clk */ spdifout_clk_ctrl(spdif_id, true); + +#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON) + /* ODROID spdif_b only to hdmitx */ + if (spdif_id == 1) + spdifout_to_hdmitx_ctrl(spdif_id); +#else /* spdif to hdmitx */ spdifout_to_hdmitx_ctrl(spdif_id); +#endif /* spdif ctrl */ spdifout_fifo_ctrl(spdif_id,