Message ID | 20191022185429.12769-1-erosca@de.adit-jv.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RESEND] ASoC: rsnd: dma: fix SSI9 4/5/6/7 busif dma address | expand |
Hi > From: Jiada Wang <jiada_wang@mentor.com> > > Currently each SSI unit's busif dma address is calculated by > following calculation formula: > 0xec540000 + 0x1000 * id + busif / 4 * 0xA000 + busif % 4 * 0x400 > > But according to R-Car3 HW manual 41.1.4 Register Configuration, > ssi9 4/5/6/7 busif data register address > (SSI9_4_BUSIF/SSI9_5_BUSIF/SSI9_6_BUSIF/SSI9_7_BUSIF) > are out of this rule. > > This patch updates the calculation formula to correct > ssi9 4/5/6/7 busif data register address. > > Fixes: 5e45a6fab3b9 ("ASoc: rsnd: dma: Calculate dma address with consider of BUSIF") > Signed-off-by: Jiada Wang <jiada_wang@mentor.com> > Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> > [erosca: minor improvements in commit description] > Cc: Andrew Gabbasov <andrew_gabbasov@mentor.com> > Cc: stable@vger.kernel.org # v4.20+ > Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com> > --- Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Hi Morimoto-san, On Wed, Oct 23, 2019 at 09:51:36AM +0900, Kuninori Morimoto wrote: > > Hi > > > From: Jiada Wang <jiada_wang@mentor.com> > > > > Currently each SSI unit's busif dma address is calculated by > > following calculation formula: > > 0xec540000 + 0x1000 * id + busif / 4 * 0xA000 + busif % 4 * 0x400 > > > > But according to R-Car3 HW manual 41.1.4 Register Configuration, > > ssi9 4/5/6/7 busif data register address > > (SSI9_4_BUSIF/SSI9_5_BUSIF/SSI9_6_BUSIF/SSI9_7_BUSIF) > > are out of this rule. > > > > This patch updates the calculation formula to correct > > ssi9 4/5/6/7 busif data register address. > > > > Fixes: 5e45a6fab3b9 ("ASoc: rsnd: dma: Calculate dma address with consider of BUSIF") > > Signed-off-by: Jiada Wang <jiada_wang@mentor.com> > > Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> > > [erosca: minor improvements in commit description] > > Cc: Andrew Gabbasov <andrew_gabbasov@mentor.com> > > Cc: stable@vger.kernel.org # v4.20+ > > Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com> > > --- > > Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Many thanks for the prompt responses.
diff --git a/sound/soc/sh/rcar/dma.c b/sound/soc/sh/rcar/dma.c index 0324a5c39619..28f65eba2bb4 100644 --- a/sound/soc/sh/rcar/dma.c +++ b/sound/soc/sh/rcar/dma.c @@ -508,10 +508,10 @@ static struct rsnd_mod_ops rsnd_dmapp_ops = { #define RDMA_SSI_I_N(addr, i) (addr ##_reg - 0x00300000 + (0x40 * i) + 0x8) #define RDMA_SSI_O_N(addr, i) (addr ##_reg - 0x00300000 + (0x40 * i) + 0xc) -#define RDMA_SSIU_I_N(addr, i, j) (addr ##_reg - 0x00441000 + (0x1000 * (i)) + (((j) / 4) * 0xA000) + (((j) % 4) * 0x400)) +#define RDMA_SSIU_I_N(addr, i, j) (addr ##_reg - 0x00441000 + (0x1000 * (i)) + (((j) / 4) * 0xA000) + (((j) % 4) * 0x400) - (0x4000 * ((i) / 9) * ((j) / 4))) #define RDMA_SSIU_O_N(addr, i, j) RDMA_SSIU_I_N(addr, i, j) -#define RDMA_SSIU_I_P(addr, i, j) (addr ##_reg - 0x00141000 + (0x1000 * (i)) + (((j) / 4) * 0xA000) + (((j) % 4) * 0x400)) +#define RDMA_SSIU_I_P(addr, i, j) (addr ##_reg - 0x00141000 + (0x1000 * (i)) + (((j) / 4) * 0xA000) + (((j) % 4) * 0x400) - (0x4000 * ((i) / 9) * ((j) / 4))) #define RDMA_SSIU_O_P(addr, i, j) RDMA_SSIU_I_P(addr, i, j) #define RDMA_SRC_I_N(addr, i) (addr ##_reg - 0x00500000 + (0x400 * i))