diff --git a/sound/soc/codecs/msm_hdmi_codec_rx.c b/sound/soc/codecs/msm_hdmi_codec_rx.c index a81d89af51b1..002476d7a923 100755 --- a/sound/soc/codecs/msm_hdmi_codec_rx.c +++ b/sound/soc/codecs/msm_hdmi_codec_rx.c @@ -37,15 +37,20 @@ static int msm_hdmi_edid_ctl_info(struct snd_kcontrol *kcontrol, int rc; 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)) { uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES; 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, @@ -56,16 +61,21 @@ static int msm_hdmi_edid_get(struct snd_kcontrol *kcontrol, int rc; 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( codec_data->hdmi_core_pdev, &edid_blk); if (!IS_ERR_VALUE(rc)) { - memcpy(ucontrol->value.bytes.data, edid_blk.audio_data_blk, - edid_blk.audio_data_blk_size); + memcpy(ucontrol->value.bytes.data, + edid_blk.audio_data_blk, + edid_blk.audio_data_blk_size); memcpy((ucontrol->value.bytes.data + - edid_blk.audio_data_blk_size), - edid_blk.spk_alloc_data_blk, - edid_blk.spk_alloc_data_blk_size); + edid_blk.audio_data_blk_size), + edid_blk.spk_alloc_data_blk, + edid_blk.spk_alloc_data_blk_size); } return rc; @@ -90,6 +100,11 @@ static int msm_hdmi_audio_codec_rx_dai_startup( struct msm_hdmi_audio_codec_rx_data *codec_data = 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 = codec_data->hdmi_ops.cable_status( 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 = 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)) { dev_err_ratelimited(dai->dev, "%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 = 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( codec_data->hdmi_core_pdev, 0); if (IS_ERR_VALUE(rc)) {