static int msm8x10_enable_codec_ext_clk(struct snd_soc_codec *codec, int enable, bool dapm) { int ret = 0; mutex_lock(&cdc_mclk_mutex); pr_debug("%s: enable = %d codec name %s enable %d mclk ref counter %d\n", __func__, enable, codec->name, enable, atomic_read(&mclk_rsc_ref)); if (enable) { if (atomic_inc_return(&mclk_rsc_ref) == 1) { digital_cdc_clk.clk_val = 9600000; msm_config_mclk(AFE_PORT_ID_SECONDARY_MI2S_RX, &digital_cdc_clk); msm8x10_wcd_mclk_enable(codec, 1, dapm); } } else { if (atomic_dec_return(&mclk_rsc_ref) == 0) { digital_cdc_clk.clk_val = 0; msm8x10_wcd_mclk_enable(codec, 0, dapm); msm_config_mclk(AFE_PORT_ID_SECONDARY_MI2S_RX, &digital_cdc_clk); } } mutex_unlock(&cdc_mclk_mutex); return ret; }
static int msm8x10_enable_codec_ext_clk(struct snd_soc_codec *codec, int enable, bool dapm) { int ret = 0; pr_debug("%s: enable = %d codec name %s enable %x\n", __func__, enable, codec->name, enable); if (enable) { digital_cdc_clk.clk_val = 9600000; msm_config_mi2s_clk(1); ret = msm_config_mclk(AFE_PORT_ID_SECONDARY_MI2S_RX, &digital_cdc_clk); msm8x10_wcd_mclk_enable(codec, 1, dapm); } else { msm8x10_wcd_mclk_enable(codec, 0, dapm); ret = msm_config_mclk(AFE_PORT_ID_SECONDARY_MI2S_RX, &digital_cdc_clk); msm_config_mi2s_clk(0); } return ret; }