Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dma: iop-adma: allow building without platform headers

Now that iop3xx and iop13xx are gone, the iop-adma driver no
longer needs to deal with incompatible register layout defined
in machine specific header files.

Move the iop32x specific definitions into drivers/dma/iop-adma.h
and the platform_data into include/linux/platform_data/dma-iop32x.h,
and change the machine code to no longer reference those.

The DMA0_ID/DMA1_ID/AAU_ID macros are required as part of the
platform data interface and still need to be visible, so move
those from one header to the other.

Link: https://lore.kernel.org/r/20190809163334.489360-4-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+9 -18
+1 -6
arch/arm/include/asm/hardware/iop3xx-adma.h drivers/dma/iop-adma.h
··· 6 6 #define _ADMA_H 7 7 #include <linux/types.h> 8 8 #include <linux/io.h> 9 - #include <mach/hardware.h> 10 - #include <asm/hardware/iop_adma.h> 9 + #include <linux/platform_data/dma-iop32x.h> 11 10 12 11 /* Memory copy units */ 13 12 #define DMA_CCR(chan) (chan->mmr_base + 0x0) ··· 32 33 #define AAU_EDCR0_IDX 8 33 34 #define AAU_EDCR1_IDX 17 34 35 #define AAU_EDCR2_IDX 26 35 - 36 - #define DMA0_ID 0 37 - #define DMA1_ID 1 38 - #define AAU_ID 2 39 36 40 37 struct iop3xx_aau_desc_ctrl { 41 38 unsigned int int_en:1;
+4
arch/arm/include/asm/hardware/iop_adma.h include/linux/platform_data/dma-iop32x.h
··· 17 17 #endif 18 18 #define iop_paranoia(x) BUG_ON(IOP_PARANOIA && (x)) 19 19 20 + #define DMA0_ID 0 21 + #define DMA1_ID 1 22 + #define AAU_ID 2 23 + 20 24 /** 21 25 * struct iop_adma_device - internal representation of an ADMA device 22 26 * @pdev: Platform device
-6
arch/arm/mach-iop32x/include/mach/adma.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 */ 2 - #ifndef IOP32X_ADMA_H 3 - #define IOP32X_ADMA_H 4 - #include <asm/hardware/iop3xx-adma.h> 5 - #endif 6 -
+1 -2
arch/arm/plat-iop/adma.c
··· 6 6 #include <linux/platform_device.h> 7 7 #include <asm/hardware/iop3xx.h> 8 8 #include <linux/dma-mapping.h> 9 - #include <mach/adma.h> 10 - #include <asm/hardware/iop_adma.h> 9 + #include <linux/platform_data/dma-iop32x.h> 11 10 12 11 #define IRQ_DMA0_EOT IRQ_IOP32X_DMA0_EOT 13 12 #define IRQ_DMA0_EOC IRQ_IOP32X_DMA0_EOC
+2 -2
drivers/dma/Kconfig
··· 294 294 If unsure, say N. 295 295 296 296 config INTEL_IOP_ADMA 297 - tristate "Intel IOP ADMA support" 298 - depends on ARCH_IOP32X 297 + tristate "Intel IOP32x ADMA support" 298 + depends on ARCH_IOP32X || COMPILE_TEST 299 299 select DMA_ENGINE 300 300 select ASYNC_TX_ENABLE_CHANNEL_SWITCH 301 301 help
+1 -2
drivers/dma/iop-adma.c
··· 22 22 #include <linux/raid/pq.h> 23 23 #include <linux/slab.h> 24 24 25 - #include <mach/adma.h> 26 - 25 + #include "iop-adma.h" 27 26 #include "dmaengine.h" 28 27 29 28 #define to_iop_adma_chan(chan) container_of(chan, struct iop_adma_chan, common)