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.