ASoC: OMAP: HDMI: Move HDMI codec trigger function to generic HDMI driver
The function hdmi_audio_trigger is a callback used by ASoC to stop/start HDMI audio. Also, it does not perform IP-specific configuration directly. Hence, it should be placed in the general portion of the HDMI driver, along with the other ASoC callbacks. Also, make this function static. Signed-off-by: Ricardo Neri <ricardo.neri@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
Родитель
80a4859628
Коммит
edefcdad6a
|
@ -561,6 +561,37 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev)
|
||||||
#if defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI) || \
|
#if defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI) || \
|
||||||
defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI_MODULE)
|
defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI_MODULE)
|
||||||
|
|
||||||
|
static int hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||||
|
struct snd_soc_dai *dai)
|
||||||
|
{
|
||||||
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
struct platform_device *pdev = to_platform_device(codec->dev);
|
||||||
|
struct hdmi_ip_data *ip_data = snd_soc_codec_get_drvdata(codec);
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if (!(ip_data->ops) && !(ip_data->ops->audio_enable)) {
|
||||||
|
dev_err(&pdev->dev, "Cannot enable/disable audio\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (cmd) {
|
||||||
|
case SNDRV_PCM_TRIGGER_START:
|
||||||
|
case SNDRV_PCM_TRIGGER_RESUME:
|
||||||
|
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||||
|
ip_data->ops->audio_enable(ip_data, true);
|
||||||
|
break;
|
||||||
|
case SNDRV_PCM_TRIGGER_STOP:
|
||||||
|
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||||
|
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||||
|
ip_data->ops->audio_enable(ip_data, false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
err = -EINVAL;
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
static int hdmi_audio_hw_params(struct snd_pcm_substream *substream,
|
static int hdmi_audio_hw_params(struct snd_pcm_substream *substream,
|
||||||
struct snd_pcm_hw_params *params,
|
struct snd_pcm_hw_params *params,
|
||||||
struct snd_soc_dai *dai)
|
struct snd_soc_dai *dai)
|
||||||
|
|
|
@ -1213,36 +1213,4 @@ void ti_hdmi_4xxx_wp_audio_enable(struct hdmi_ip_data *ip_data, bool enable)
|
||||||
REG_FLD_MOD(hdmi_wp_base(ip_data),
|
REG_FLD_MOD(hdmi_wp_base(ip_data),
|
||||||
HDMI_WP_AUDIO_CTRL, enable, 30, 30);
|
HDMI_WP_AUDIO_CTRL, enable, 30, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
|
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
|
||||||
struct platform_device *pdev = to_platform_device(codec->dev);
|
|
||||||
struct hdmi_ip_data *ip_data = snd_soc_codec_get_drvdata(codec);
|
|
||||||
int err = 0;
|
|
||||||
|
|
||||||
if (!(ip_data->ops) && !(ip_data->ops->audio_enable)) {
|
|
||||||
dev_err(&pdev->dev, "Cannot enable/disable audio\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (cmd) {
|
|
||||||
case SNDRV_PCM_TRIGGER_START:
|
|
||||||
case SNDRV_PCM_TRIGGER_RESUME:
|
|
||||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
|
||||||
ip_data->ops->audio_enable(ip_data, true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SNDRV_PCM_TRIGGER_STOP:
|
|
||||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
|
||||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
|
||||||
ip_data->ops->audio_enable(ip_data, false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
err = -EINVAL;
|
|
||||||
}
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -576,8 +576,6 @@ struct hdmi_core_audio_config {
|
||||||
|
|
||||||
#if defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI) || \
|
#if defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI) || \
|
||||||
defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI_MODULE)
|
defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI_MODULE)
|
||||||
int hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
|
|
||||||
struct snd_soc_dai *dai);
|
|
||||||
int hdmi_config_audio_acr(struct hdmi_ip_data *ip_data,
|
int hdmi_config_audio_acr(struct hdmi_ip_data *ip_data,
|
||||||
u32 sample_freq, u32 *n, u32 *cts);
|
u32 sample_freq, u32 *n, u32 *cts);
|
||||||
void hdmi_core_audio_infoframe_config(struct hdmi_ip_data *ip_data,
|
void hdmi_core_audio_infoframe_config(struct hdmi_ip_data *ip_data,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче