msm: audio: soc: add null checks for hdmi ops
Add null checks to prevent hdmi ops from being called if they have not been defined. CRs-Fixed: 1009284 Change-Id: If772bd86cc9b754fbc900eb47338429e9b841eef Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
This commit is contained in:
parent
9d822a9489
commit
1bdf3dcbf1
1 changed files with 34 additions and 9 deletions
|
@ -37,15 +37,20 @@ static int msm_hdmi_edid_ctl_info(struct snd_kcontrol *kcontrol,
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
codec_data = snd_soc_codec_get_drvdata(codec);
|
codec_data = snd_soc_codec_get_drvdata(codec);
|
||||||
rc = codec_data->hdmi_ops.get_audio_edid_blk(codec_data->hdmi_core_pdev,
|
|
||||||
&edid_blk);
|
if (!codec_data->hdmi_ops.get_audio_edid_blk)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
rc = codec_data->hdmi_ops.get_audio_edid_blk(
|
||||||
|
codec_data->hdmi_core_pdev,
|
||||||
|
&edid_blk);
|
||||||
if (!IS_ERR_VALUE(rc)) {
|
if (!IS_ERR_VALUE(rc)) {
|
||||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
|
||||||
uinfo->count = edid_blk.audio_data_blk_size +
|
uinfo->count = edid_blk.audio_data_blk_size +
|
||||||
edid_blk.spk_alloc_data_blk_size;
|
edid_blk.spk_alloc_data_blk_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int msm_hdmi_edid_get(struct snd_kcontrol *kcontrol,
|
static int msm_hdmi_edid_get(struct snd_kcontrol *kcontrol,
|
||||||
|
@ -56,16 +61,21 @@ static int msm_hdmi_edid_get(struct snd_kcontrol *kcontrol,
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
codec_data = snd_soc_codec_get_drvdata(codec);
|
codec_data = snd_soc_codec_get_drvdata(codec);
|
||||||
|
|
||||||
|
if (!codec_data->hdmi_ops.get_audio_edid_blk)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
rc = codec_data->hdmi_ops.get_audio_edid_blk(
|
rc = codec_data->hdmi_ops.get_audio_edid_blk(
|
||||||
codec_data->hdmi_core_pdev, &edid_blk);
|
codec_data->hdmi_core_pdev, &edid_blk);
|
||||||
|
|
||||||
if (!IS_ERR_VALUE(rc)) {
|
if (!IS_ERR_VALUE(rc)) {
|
||||||
memcpy(ucontrol->value.bytes.data, edid_blk.audio_data_blk,
|
memcpy(ucontrol->value.bytes.data,
|
||||||
edid_blk.audio_data_blk_size);
|
edid_blk.audio_data_blk,
|
||||||
|
edid_blk.audio_data_blk_size);
|
||||||
memcpy((ucontrol->value.bytes.data +
|
memcpy((ucontrol->value.bytes.data +
|
||||||
edid_blk.audio_data_blk_size),
|
edid_blk.audio_data_blk_size),
|
||||||
edid_blk.spk_alloc_data_blk,
|
edid_blk.spk_alloc_data_blk,
|
||||||
edid_blk.spk_alloc_data_blk_size);
|
edid_blk.spk_alloc_data_blk_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -90,6 +100,11 @@ static int msm_hdmi_audio_codec_rx_dai_startup(
|
||||||
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
||||||
dev_get_drvdata(dai->codec->dev);
|
dev_get_drvdata(dai->codec->dev);
|
||||||
|
|
||||||
|
if (!codec_data->hdmi_ops.cable_status) {
|
||||||
|
dev_err(dai->dev, "%s() cable_status is null\n", __func__);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
msm_hdmi_audio_codec_return_value =
|
msm_hdmi_audio_codec_return_value =
|
||||||
codec_data->hdmi_ops.cable_status(
|
codec_data->hdmi_ops.cable_status(
|
||||||
codec_data->hdmi_core_pdev, 1);
|
codec_data->hdmi_core_pdev, 1);
|
||||||
|
@ -123,6 +138,11 @@ static int msm_hdmi_audio_codec_rx_dai_hw_params(
|
||||||
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
||||||
dev_get_drvdata(dai->codec->dev);
|
dev_get_drvdata(dai->codec->dev);
|
||||||
|
|
||||||
|
if (!codec_data->hdmi_ops.audio_info_setup) {
|
||||||
|
dev_err(dai->dev, "%s() audio_info_setup is null\n", __func__);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (IS_ERR_VALUE(msm_hdmi_audio_codec_return_value)) {
|
if (IS_ERR_VALUE(msm_hdmi_audio_codec_return_value)) {
|
||||||
dev_err_ratelimited(dai->dev,
|
dev_err_ratelimited(dai->dev,
|
||||||
"%s() HDMI core is not ready (ret val = %d)\n",
|
"%s() HDMI core is not ready (ret val = %d)\n",
|
||||||
|
@ -200,6 +220,11 @@ static void msm_hdmi_audio_codec_rx_dai_shutdown(
|
||||||
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
struct msm_hdmi_audio_codec_rx_data *codec_data =
|
||||||
dev_get_drvdata(dai->codec->dev);
|
dev_get_drvdata(dai->codec->dev);
|
||||||
|
|
||||||
|
if (!codec_data->hdmi_ops.cable_status) {
|
||||||
|
dev_err(dai->dev, "%s() cable_status is null\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rc = codec_data->hdmi_ops.cable_status(
|
rc = codec_data->hdmi_ops.cable_status(
|
||||||
codec_data->hdmi_core_pdev, 0);
|
codec_data->hdmi_core_pdev, 0);
|
||||||
if (IS_ERR_VALUE(rc)) {
|
if (IS_ERR_VALUE(rc)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue