26 Jun
2011
26 Jun
'11
10:57 a.m.
On Mon, Jun 20, 2011 at 1:06 PM, Sangbeom Kim sbkim73@samsung.com wrote:
- if (is_secondary(i2s)) {
- ahb |= (AHB_DMARLD | AHB_INTMASK);
- mod |= MOD_TXS_IDMA;
This unconditional setting stealthily switches to using iDMA. Sorry I didn't notice it in last revision.
- writel(ahb, i2s->addr + I2SAHB);
- }
I meant, this is _dma_ related setting of post-24xx So it had better be done in hw_params of idma.c
@@ -1068,6 +1079,8 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev) ret = -ENOMEM; goto err2; }
- idma_reg_addr_init((void *)ioremap(regs_base, 0x100),
- i2s_cfg->idma_addr);
Oh dear! Not a great idea to do multiple mapping, even worse is doing it transiently during a function call. Perhaps provide base and iBuff address via platform data of samsung-idma and pass only _once_ ioremap'ed address from here.