mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 15:40:03 +02:00
ASoC: ux500: Program the MSP FIFO watermarks
The DMA engine is configured for four-element bursts, but the MSP
driver never programs the FIFO watermark register and instead depends
on its previous or reset value. The DB8500 DMA request protocol requires
the peripheral watermark to match the DMA packet size.
Program four-element receive and transmit watermarks when configuring
the first direction, before enabling MSP DMA requests.
Fixes: 3592b7f69a ("ASoC: Ux500: Add MSP I2S-driver")
Assisted-by: LLM
Signed-off-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260902-ux500-msp-fixes-v2-9-4b60b002d55a@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
dc1a1b1e22
commit
2519439b4b
|
|
@ -507,6 +507,8 @@ int ux500_msp_i2s_open(struct ux500_msp *msp,
|
|||
old_reg &= ~mask;
|
||||
new_reg |= old_reg;
|
||||
writel(new_reg, msp->registers + MSP_GCR);
|
||||
writel(MSP_WMRK_TX_4_ELEMENTS | MSP_WMRK_RX_4_ELEMENTS,
|
||||
msp->registers + MSP_WMRK);
|
||||
}
|
||||
|
||||
res = enable_msp(msp, config, first);
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ enum msp_direction {
|
|||
#define MSP_SRG 0x10
|
||||
#define MSP_FLR 0x14
|
||||
#define MSP_DMACR 0x18
|
||||
#define MSP_WMRK 0x1c
|
||||
|
||||
#define MSP_IMSC 0x20
|
||||
#define MSP_RIS 0x24
|
||||
|
|
@ -228,6 +229,10 @@ enum msp_direction {
|
|||
#define RDMAE_SHIFT 0
|
||||
#define TDMAE_SHIFT 1
|
||||
|
||||
/* FIFO watermark register */
|
||||
#define MSP_WMRK_RX_4_ELEMENTS BIT(0)
|
||||
#define MSP_WMRK_TX_4_ELEMENTS BIT(3)
|
||||
|
||||
/* Interrupt Register */
|
||||
#define RX_SERVICE_INT BIT(0)
|
||||
#define RX_OVERRUN_ERROR_INT BIT(1)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user