mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:04:51 +01:00
ASoC: ti: davinci-mcasp: Streamline pdir behavior across rx & tx streams
Simplify the mcasp_set_clk_pdir caller convention in start/stop stream function, to make it so that set_clk_pdir gets called regardless when stream starts and also disables when stream ends. Functionality-wise, everything remains the same as the previously skipped calls are now either correctly configured (when McASP is SND_SOC_DAIFMT_BP_FC - pdir needs to be enabled) or called with a bitmask of zero (when McASP is SND_SOC_DAIFMT_BC_FC - pdir gets disabled). On brief regarding McASP Clock and Frame sync configurations, refer to [0]. [0]:TRM Section 12.1.1.4.2 https://www.ti.com/lit/ug/sprujd4a/sprujd4a.pdf Signed-off-by: Sen Wang <sen@ti.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com> Tested-by: Paresh Bhagat <p-bhagat@ti.com> Link: https://patch.msgid.link/20260203003703.2334443-4-sen@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e683cb088f
commit
016efcaa47
1 changed files with 4 additions and 4 deletions
|
|
@ -236,8 +236,8 @@ static void mcasp_start_rx(struct davinci_mcasp *mcasp)
|
|||
if (mcasp_is_frame_producer(mcasp) && mcasp_is_synchronous(mcasp)) {
|
||||
mcasp_set_ctl_reg(mcasp, DAVINCI_MCASP_GBLCTLX_REG, TXHCLKRST);
|
||||
mcasp_set_ctl_reg(mcasp, DAVINCI_MCASP_GBLCTLX_REG, TXCLKRST);
|
||||
mcasp_set_clk_pdir(mcasp, true);
|
||||
}
|
||||
mcasp_set_clk_pdir(mcasp, true);
|
||||
|
||||
/* Activate serializer(s) */
|
||||
mcasp_set_reg(mcasp, DAVINCI_MCASP_RXSTAT_REG, 0xFFFFFFFF);
|
||||
|
|
@ -312,10 +312,10 @@ static void mcasp_stop_rx(struct davinci_mcasp *mcasp)
|
|||
* In synchronous mode stop the TX clocks if no other stream is
|
||||
* running
|
||||
*/
|
||||
if (mcasp_is_frame_producer(mcasp) && mcasp_is_synchronous(mcasp) && !mcasp->streams) {
|
||||
if (!mcasp->streams)
|
||||
mcasp_set_clk_pdir(mcasp, false);
|
||||
if (mcasp_is_frame_producer(mcasp) && mcasp_is_synchronous(mcasp) && !mcasp->streams)
|
||||
mcasp_set_reg(mcasp, DAVINCI_MCASP_GBLCTLX_REG, 0);
|
||||
}
|
||||
|
||||
mcasp_set_reg(mcasp, DAVINCI_MCASP_GBLCTLR_REG, 0);
|
||||
mcasp_set_reg(mcasp, DAVINCI_MCASP_RXSTAT_REG, 0xFFFFFFFF);
|
||||
|
|
@ -341,7 +341,7 @@ static void mcasp_stop_tx(struct davinci_mcasp *mcasp)
|
|||
*/
|
||||
if (mcasp_is_frame_producer(mcasp) && mcasp_is_synchronous(mcasp) && mcasp->streams)
|
||||
val = TXHCLKRST | TXCLKRST | TXFSRST;
|
||||
else
|
||||
if (!mcasp->streams)
|
||||
mcasp_set_clk_pdir(mcasp, false);
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue