From: Mark A. Greer <[email protected]> Move the SoC-specific map_desc structure from the common I/O code into the proper SoC-specific file and make the common I/O init code take the map_desc as a parameter. This allows support for SoCs with different map_desc contents to be easily added.
Signed-off-by: Mark A. Greer <[email protected]> --- arch/arm/mach-davinci/board-dm355-evm.c | 2 -- arch/arm/mach-davinci/board-dm644x-evm.c | 2 -- arch/arm/mach-davinci/board-dm646x-evm.c | 2 -- arch/arm/mach-davinci/board-sffsdr.c | 2 -- arch/arm/mach-davinci/common.c | 3 +++ arch/arm/mach-davinci/devices.c | 1 - arch/arm/mach-davinci/dm355.c | 11 +++++++++++ arch/arm/mach-davinci/dm644x.c | 11 +++++++++++ arch/arm/mach-davinci/dm646x.c | 11 +++++++++++ arch/arm/mach-davinci/include/mach/common.h | 6 +++++- arch/arm/mach-davinci/io.c | 17 ++--------------- 11 files changed, 43 insertions(+), 25 deletions(-) diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index eb9bfb3..f2c5b41 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c @@ -26,7 +26,6 @@ #include <asm/setup.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/mach/map.h> #include <asm/mach/flash.h> #include <mach/hardware.h> @@ -189,7 +188,6 @@ static struct davinci_uart_config uart_config __initdata = { static void __init dm355_evm_map_io(void) { - davinci_map_common_io(); davinci_soc_init(&davinci_soc_info_dm355); } diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index 53c06dc..d11d96f 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c @@ -32,7 +32,6 @@ #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/mach/map.h> #include <asm/mach/flash.h> #include <mach/dm644x.h> @@ -590,7 +589,6 @@ static struct davinci_uart_config uart_config __initdata = { static void __init davinci_evm_map_io(void) { - davinci_map_common_io(); davinci_soc_init(&davinci_soc_info_dm644x); } diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index bb61d8c..e9e38c8 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -31,7 +31,6 @@ #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/mach/map.h> #include <asm/mach/flash.h> #include <mach/dm646x.h> #include <mach/common.h> @@ -115,7 +114,6 @@ static void __init evm_init_i2c(void) static void __init davinci_map_io(void) { - davinci_map_common_io(); davinci_soc_init(&davinci_soc_info_dm646x); } diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c index db408f0..c06b966 100644 --- a/arch/arm/mach-davinci/board-sffsdr.c +++ b/arch/arm/mach-davinci/board-sffsdr.c @@ -43,7 +43,6 @@ #include <asm/mach-types.h> #include <asm/mach/arch.h> -#include <asm/mach/map.h> #include <asm/mach/flash.h> #include <mach/dm644x.h> @@ -147,7 +146,6 @@ static struct davinci_uart_config uart_config __initdata = { static void __init davinci_sffsdr_map_io(void) { - davinci_map_common_io(); davinci_soc_init(&davinci_soc_info_dm644x); } diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c index 2f4d375..8198558 100644 --- a/arch/arm/mach-davinci/common.c +++ b/arch/arm/mach-davinci/common.c @@ -33,6 +33,9 @@ int __init davinci_soc_init(struct davinci_soc_info *soc_info) memcpy(davinci_soc_info, soc_info, sizeof(struct davinci_soc_info)); + davinci_map_common_io(davinci_soc_info->io_desc, + davinci_soc_info->io_desc_num); + if (davinci_soc_info->cpu_clks) { ret = davinci_clk_init(davinci_soc_info->cpu_clks); diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c index a0f5a60..f0f4463 100644 --- a/arch/arm/mach-davinci/devices.c +++ b/arch/arm/mach-davinci/devices.c @@ -20,7 +20,6 @@ #include <asm/io.h> #include <asm/mach-types.h> -#include <asm/mach/map.h> #include <mach/hardware.h> #include <mach/edma.h> diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index 1e446ee..76691fc 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c @@ -467,10 +467,21 @@ EVT_CFG(DM355, EVT9_ASP1_RX, 1, 1, 0, false) EVT_CFG(DM355, EVT26_MMC0_RX, 2, 1, 0, false) }; +static struct map_desc dm355_io_desc[] __initdata = { + { + .virtual = IO_VIRT, + .pfn = __phys_to_pfn(IO_PHYS), + .length = IO_SIZE, + .type = MT_DEVICE + }, +}; + DAVINCI_SOC_START(dm355) .cpu_id = DAVINCI_CPU_ID_DM355, .cpu_clks = dm355_clks, .mux_pins = dm355_pins, .mux_pins_num = ARRAY_SIZE(dm355_pins), .mux_base = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE), + .io_desc = dm355_io_desc, + .io_desc_num = ARRAY_SIZE(dm355_io_desc), DAVINCI_SOC_END diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 92cda29..3475a0b 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c @@ -359,10 +359,21 @@ MUX_CFG(DM644X, LOEEN, 0, 24, 1, 1, true) MUX_CFG(DM644X, LFLDEN, 0, 25, 1, 1, false) }; +static struct map_desc dm644x_io_desc[] __initdata = { + { + .virtual = IO_VIRT, + .pfn = __phys_to_pfn(IO_PHYS), + .length = IO_SIZE, + .type = MT_DEVICE + }, +}; + DAVINCI_SOC_START(dm644x) .cpu_id = DAVINCI_CPU_ID_DM6446, .cpu_clks = dm644x_clks, .mux_pins = dm644x_pins, .mux_pins_num = ARRAY_SIZE(dm644x_pins), .mux_base = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE), + .io_desc = dm644x_io_desc, + .io_desc_num = ARRAY_SIZE(dm644x_io_desc), DAVINCI_SOC_END diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 0b0f9dd..2405f29 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c @@ -270,10 +270,21 @@ MUX_CFG(DM646X, AUDCK1, 0, 29, 1, 0, false) MUX_CFG(DM646X, AUDCK0, 0, 28, 1, 0, false) }; +static struct map_desc dm646x_io_desc[] __initdata = { + { + .virtual = IO_VIRT, + .pfn = __phys_to_pfn(IO_PHYS), + .length = IO_SIZE, + .type = MT_DEVICE + }, +}; + DAVINCI_SOC_START(dm646x) .cpu_id = DAVINCI_CPU_ID_DM6467, .cpu_clks = dm646x_clks, .mux_pins = dm646x_pins, .mux_pins_num = ARRAY_SIZE(dm646x_pins), .mux_base = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE), + .io_desc = dm646x_io_desc, + .io_desc_num = ARRAY_SIZE(dm646x_io_desc), DAVINCI_SOC_END diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h index 741968a..128203f 100644 --- a/arch/arm/mach-davinci/include/mach/common.h +++ b/arch/arm/mach-davinci/include/mach/common.h @@ -12,12 +12,14 @@ #ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H #define __ARCH_ARM_MACH_DAVINCI_COMMON_H +#include <asm/mach/map.h> + struct sys_timer; extern struct sys_timer davinci_timer; extern void davinci_irq_init(void); -extern void davinci_map_common_io(void); +extern void davinci_map_common_io(struct map_desc *io_desc, int num); /* parameters describe VBUS sourcing for host mode */ extern void setup_usb(unsigned mA, unsigned potpgt_msec); @@ -32,6 +34,8 @@ struct davinci_soc_info { const struct mux_config *mux_pins; unsigned long mux_pins_num; void __iomem *mux_base; + struct map_desc *io_desc; + unsigned long io_desc_num; }; #define DAVINCI_SOC_START(_name) \ diff --git a/arch/arm/mach-davinci/io.c b/arch/arm/mach-davinci/io.c index 41a394c..66777e8 100644 --- a/arch/arm/mach-davinci/io.c +++ b/arch/arm/mach-davinci/io.c @@ -20,22 +20,9 @@ #include <mach/clock.h> #include <mach/mux.h> -/* - * The machine specific code may provide the extra mapping besides the - * default mapping provided here. - */ -static struct map_desc davinci_io_desc[] __initdata = { - { - .virtual = IO_VIRT, - .pfn = __phys_to_pfn(IO_PHYS), - .length = IO_SIZE, - .type = MT_DEVICE - }, -}; - -void __init davinci_map_common_io(void) +void __init davinci_map_common_io(struct map_desc *io_desc, int num) { - iotable_init(davinci_io_desc, ARRAY_SIZE(davinci_io_desc)); + iotable_init(io_desc, num); /* Normally devicemaps_init() would flush caches and tlb after * mdesc->map_io(), but we must also do it here because of the CPU -- 1.6.0.3 _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
