break;
}
- aml_tdm_enable(p_tdm->actrl,
- substream->stream, p_tdm->id, false);
-
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
dev_info(substream->pcm->card->dev, "tdm playback stop\n");
aml_frddr_enable(p_tdm->fddr, 0);
dev_info(substream->pcm->card->dev, "tdm capture stop\n");
aml_toddr_enable(p_tdm->tddr, 0);
}
+ aml_tdm_enable(p_tdm->actrl,
+ substream->stream, p_tdm->id, false);
break;
default:
return -EINVAL;
aml_tdm_set_format(p_tdm->actrl,
&(p_tdm->setting), p_tdm->clk_sel, p_tdm->id, fmt,
1, 1);
+ if (p_tdm->contns_clk && !IS_ERR(p_tdm->mclk)) {
+ int ret = clk_prepare_enable(p_tdm->mclk);
+
+ if (ret) {
+ pr_err("Can't enable mclk: %d\n", ret);
+ return ret;
+ }
+ }
capture:
/* update skew for ACODEC_ADC */
*frddrtype = (val >> 4) & 0x7;
}
+void aml_tdmout_enable_gain(int tdmout_id, int en)
+{
+ unsigned int reg, offset;
+
+ offset = EE_AUDIO_TDMOUT_B_CTRL1
+ - EE_AUDIO_TDMOUT_A_CTRL1;
+ reg = EE_AUDIO_TDMOUT_A_CTRL1 + offset * tdmout_id;
+ audiobus_update_bits(reg, 0x1 << 26, !!en << 26);
+}
+
void aml_tdm_clk_pad_select(
struct aml_audio_controller *actrl,
int mpad, int mclk_sel,
extern void aml_tdm_fifo_reset(
struct aml_audio_controller *actrl,
int stream, int index);
+void aml_tdmout_enable_gain(int tdmout_id, int en);
extern int tdmout_get_frddr_type(int bitwidth);