static int snddev_icodec_set_freq(struct msm_snddev_info *dev_info, u32 rate)
{
	int rc;
	struct snddev_icodec_state *icodec;

	if (!dev_info) {
		rc = -EINVAL;
		goto error;
	}

	icodec = dev_info->private_data;
	if (adie_codec_freq_supported(icodec->data->profile, rate) != 0) {
		pr_err("%s: adie_codec_freq_supported() failed\n", __func__);
		rc = -EINVAL;
		goto error;
	} else {
		if (snddev_icodec_check_freq(rate) != 0) {
			pr_err("%s: check_freq failed\n", __func__);
			rc = -EINVAL;
			goto error;
		} else
			icodec->sample_rate = rate;
	}

	if (icodec->enabled) {
		snddev_icodec_close(dev_info);
		snddev_icodec_open(dev_info);
	}

	return icodec->sample_rate;

error:
	return rc;
}
static int snddev_icodec_set_freq(struct msm_snddev_info *dev_info, u32 rate)
{
	int rc;
	struct snddev_icodec_state *icodec;

	MM_AUD_INFO("%s +++, rate: %d", __func__, rate);
	if (!dev_info) {
		rc = -EINVAL;
		goto error;
	}

	icodec = dev_info->private_data;

	if (support_adie) {
		if (adie_codec_freq_supported(icodec->data->profile, rate) != 0) {
			rc = -EINVAL;
			MM_AUD_INFO("%s fail_1", __func__);
			goto error;
		} else {
			if (snddev_icodec_check_freq(rate) != 0) {
				rc = -EINVAL;
				MM_AUD_INFO("%s fail_2", __func__);
				goto error;
			} else
				icodec->sample_rate = rate;
		}
	} else {
		if (snddev_icodec_check_freq(rate) != 0) {
			rc = -EINVAL;
			MM_AUD_INFO("%s fail_3", __func__);
			goto error;
		} else
			icodec->sample_rate = rate;
	}

	if (icodec->enabled) {
		snddev_icodec_close(dev_info);
		snddev_icodec_open(dev_info);
	}

	MM_AUD_INFO("%s ---, sample_rate: %d", __func__, icodec->sample_rate);
	return icodec->sample_rate;

error:
	MM_AUD_INFO("%s err, rc: %d", __func__, rc);
	return rc;
}