Skip to content

RFC Migrate more OMAP DMA code to DMA engine

Tony Lindgren linux-arm-kernel linux-omap 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest0 of 26 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 26 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH RFC 00/26] Migrate more OMAP DMA code to DMA engine
Quoted 44 lines · Russell King - ARM Linux
Quoted 43 lines · Russell King - ARM Linux
Quoted 13 lines · Tony Lindgren
Quoted 11 lines · Russell King - ARM Linux

The following patch series moves code to setup the DMA hardware and service interrupts from the hardware to the DMA engine driver. This reduces the dependency on the legacy DMA implementation.

This series does not remove the channel allocation/freeing hooks which are used to manage the allocation of physical channels - this is the next step in the evolution.

The patches which move the interrupt handling are currently less than perfect since they're writing to ENABLE_L0 under a different spinlock, and hence RFC only at the moment.

Quoted 5 lines

Nice to see this happening. These seem to work for me based on a quick try on omap2+, but on omap1 the build fails:

arch/arm/mach-omap1/dma.c: In function ?dma_write?:
arch/arm/mach-omap1/dma.c:186: error: ?const struct omap_dma_reg? has no member named ?size?

Right, needs this incremental patch:

arch/arm/mach-omap1/dma.c +2 -2
index 3afde9628839..404f89e3eeb8 100644
@@ -183,7 +183,7 @@ static inline void dma_write(u32 val, int reg, int lch)
 	addr += reg_map[reg].stride * lch;
 
 	__raw_writew(val, addr);
-	if (reg_map[reg].size == OMAP_DMA_REG_2X16BIT)
+	if (reg_map[reg].type == OMAP_DMA_REG_2X16BIT)
 		__raw_writew(val >> 16, addr + 2);
 }
 
@@ -196,7 +196,7 @@ static inline u32 dma_read(int reg, int lch)
 	addr += reg_map[reg].stride * lch;
 
 	val = __raw_readw(addr);
-	if (reg_map[reg].size == OMAP_DMA_REG_2X16BIT)
+	if (reg_map[reg].type == OMAP_DMA_REG_2X16BIT)
 		val |= __raw_readw(addr + 2) << 16;
 
Quoted 4 lines

arch/arm/mach-omap1/dma.c static inline u32 dma_read(int reg, int lch) · line 202

Quoted 2 lines
arch/arm/mach-omap1/dma.c +0 -0
 	return val;

Any news on this?

Sorry for the delay, now getting this:

arch/arm/mach-omap1/dma.c: In function ?omap1_system_dma_init?:
arch/arm/mach-omap1/dma.c:368: error: ?struct omap_dma_dev_attr? has no member named ?chan?

Regards,

Tony