aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2012-09-16 21:38:39 -0400
committerShawn Guo <shawn.guo@linaro.org>2012-10-14 22:10:15 -0400
commitc5a0d4977f00ca18c49d46fdaff4b2cfeaa4eb28 (patch)
tree2bea7a21542264bbb6b11b6ea5e31139e9ff45f3 /arch
parent69ac71d370b21cc52a2afd06f3a6d6d1da5edc75 (diff)
ARM: imx: enable multi-platform build
It enables multi-platform build for imx. With ARCH_MULTI_* options coming to play, ARCH_MXC becomes an user invisible option, while ARCH_IMX_V4_V5 and ARCH_IMX_V6_V7 get removed. Both imx_v4_v5_defconfig and imx_v6_v7_defconfig get updated to adopt the changes. AUTO_ZRELADDR and ARM_PATCH_PHYS_VIRT are selected by ARCH_MXC now to save the duplication. Headers timex.h and uncompress.h are not needed for multi-platform build. Remove them. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig13
-rw-r--r--arch/arm/configs/imx_v4_v5_defconfig5
-rw-r--r--arch/arm/configs/imx_v6_v7_defconfig3
-rw-r--r--arch/arm/mach-imx/Kconfig59
-rw-r--r--arch/arm/mach-imx/include/mach/timex.h22
-rw-r--r--arch/arm/mach-imx/include/mach/uncompress.h132
6 files changed, 33 insertions, 201 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index bffd47a3855..cce4f8d08de 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -433,19 +433,6 @@ config ARCH_FOOTBRIDGE
433 Support for systems based on the DC21285 companion chip 433 Support for systems based on the DC21285 companion chip
434 ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. 434 ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
435 435
436config ARCH_MXC
437 bool "Freescale MXC/iMX-based"
438 select ARCH_REQUIRE_GPIOLIB
439 select CLKDEV_LOOKUP
440 select CLKSRC_MMIO
441 select GENERIC_CLOCKEVENTS
442 select GENERIC_IRQ_CHIP
443 select MULTI_IRQ_HANDLER
444 select SPARSE_IRQ
445 select USE_OF
446 help
447 Support for Freescale MXC/iMX-based family of processors
448
449config ARCH_MXS 436config ARCH_MXS
450 bool "Freescale MXS-based" 437 bool "Freescale MXS-based"
451 select ARCH_REQUIRE_GPIOLIB 438 select ARCH_REQUIRE_GPIOLIB
diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig
index 78ed575feb1..bd012441b74 100644
--- a/arch/arm/configs/imx_v4_v5_defconfig
+++ b/arch/arm/configs/imx_v4_v5_defconfig
@@ -17,8 +17,9 @@ CONFIG_MODULE_UNLOAD=y
17# CONFIG_BLK_DEV_BSG is not set 17# CONFIG_BLK_DEV_BSG is not set
18# CONFIG_IOSCHED_DEADLINE is not set 18# CONFIG_IOSCHED_DEADLINE is not set
19# CONFIG_IOSCHED_CFQ is not set 19# CONFIG_IOSCHED_CFQ is not set
20CONFIG_ARCH_MXC=y 20CONFIG_ARCH_MULTI_V4T=y
21CONFIG_ARCH_IMX_V4_V5=y 21CONFIG_ARCH_MULTI_V5=y
22# CONFIG_ARCH_MULTI_V7 is not set
22CONFIG_ARCH_MX1ADS=y 23CONFIG_ARCH_MX1ADS=y
23CONFIG_MACH_SCB9328=y 24CONFIG_MACH_SCB9328=y
24CONFIG_MACH_APF9328=y 25CONFIG_MACH_APF9328=y
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 66aa7a6db88..a4965f37257 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -16,7 +16,8 @@ CONFIG_MODULE_UNLOAD=y
16CONFIG_MODVERSIONS=y 16CONFIG_MODVERSIONS=y
17CONFIG_MODULE_SRCVERSION_ALL=y 17CONFIG_MODULE_SRCVERSION_ALL=y
18# CONFIG_BLK_DEV_BSG is not set 18# CONFIG_BLK_DEV_BSG is not set
19CONFIG_ARCH_MXC=y 19CONFIG_ARCH_MULTI_V6=y
20CONFIG_ARCH_MULTI_V7=y
20CONFIG_MACH_MX31LILLY=y 21CONFIG_MACH_MX31LILLY=y
21CONFIG_MACH_MX31LITE=y 22CONFIG_MACH_MX31LITE=y
22CONFIG_MACH_PCM037=y 23CONFIG_MACH_PCM037=y
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 05ded3748d7..892631f1e4c 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -1,4 +1,20 @@
1if ARCH_MXC 1config ARCH_MXC
2 def_bool y if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7
3 select ARCH_REQUIRE_GPIOLIB
4 select ARM_PATCH_PHYS_VIRT
5 select AUTO_ZRELADDR if !ZBOOT_ROM
6 select CLKDEV_LOOKUP
7 select CLKSRC_MMIO
8 select GENERIC_CLOCKEVENTS
9 select GENERIC_IRQ_CHIP
10 select MULTI_IRQ_HANDLER
11 select SPARSE_IRQ
12 select USE_OF
13 help
14 Support for Freescale MXC/iMX-based family of processors
15
16menu "Freescale i.MX support"
17 depends on ARCH_MXC
2 18
3config MXC_IRQ_PRIOR 19config MXC_IRQ_PRIOR
4 bool "Use IRQ priority" 20 bool "Use IRQ priority"
@@ -161,21 +177,7 @@ config SOC_IMX51
161 select PINCTRL_IMX51 177 select PINCTRL_IMX51
162 select SOC_IMX5 178 select SOC_IMX5
163 179
164menu "Freescale MXC Implementations" 180if ARCH_MULTI_V4T
165
166choice
167 prompt "Freescale CPU family:"
168 default ARCH_IMX_V6_V7
169
170config ARCH_IMX_V4_V5
171 bool "i.MX1, i.MX21, i.MX25, i.MX27"
172 select ARM_PATCH_PHYS_VIRT
173 select AUTO_ZRELADDR if !ZBOOT_ROM
174 help
175 This enables support for systems based on the Freescale i.MX ARMv4
176 and ARMv5 SoCs
177
178if ARCH_IMX_V4_V5
179 181
180comment "MX1 platforms:" 182comment "MX1 platforms:"
181config MACH_MXLADS 183config MACH_MXLADS
@@ -204,6 +206,10 @@ config MACH_APF9328
204 help 206 help
205 Say Yes here if you are using the Armadeus APF9328 development board 207 Say Yes here if you are using the Armadeus APF9328 development board
206 208
209endif
210
211if ARCH_MULTI_V5
212
207comment "MX21 platforms:" 213comment "MX21 platforms:"
208 214
209config MACH_MX21ADS 215config MACH_MX21ADS
@@ -455,16 +461,7 @@ config MACH_IMX27_DT
455 461
456endif 462endif
457 463
458config ARCH_IMX_V6_V7 464if ARCH_MULTI_V6
459 bool "i.MX3, i.MX5, i.MX6"
460 select ARM_PATCH_PHYS_VIRT
461 select AUTO_ZRELADDR if !ZBOOT_ROM
462 select MIGHT_HAVE_CACHE_L2X0
463 help
464 This enables support for systems based on the Freescale i.MX3, i.MX5
465 and i.MX6 family.
466
467if ARCH_IMX_V6_V7
468 465
469comment "MX31 platforms:" 466comment "MX31 platforms:"
470 467
@@ -729,6 +726,10 @@ config MACH_VPR200
729 Include support for VPR200 platform. This includes specific 726 Include support for VPR200 platform. This includes specific
730 configurations for the board and its peripherals. 727 configurations for the board and its peripherals.
731 728
729endif
730
731if ARCH_MULTI_V7
732
732comment "i.MX5 platforms:" 733comment "i.MX5 platforms:"
733 734
734config MACH_MX50_RDP 735config MACH_MX50_RDP
@@ -847,10 +848,6 @@ config SOC_IMX6Q
847 848
848endif 849endif
849 850
850endchoice
851
852endmenu
853
854source "arch/arm/mach-imx/devices/Kconfig" 851source "arch/arm/mach-imx/devices/Kconfig"
855 852
856endif 853endmenu
diff --git a/arch/arm/mach-imx/include/mach/timex.h b/arch/arm/mach-imx/include/mach/timex.h
deleted file mode 100644
index 10343d1f87e..00000000000
--- a/arch/arm/mach-imx/include/mach/timex.h
+++ /dev/null
@@ -1,22 +0,0 @@
1/*
2 * Copyright (C) 1999 ARM Limited
3 * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#ifndef __ASM_ARCH_MXC_TIMEX_H__
17#define __ASM_ARCH_MXC_TIMEX_H__
18
19/* Bogus value */
20#define CLOCK_TICK_RATE 12345678
21
22#endif /* __ASM_ARCH_MXC_TIMEX_H__ */
diff --git a/arch/arm/mach-imx/include/mach/uncompress.h b/arch/arm/mach-imx/include/mach/uncompress.h
deleted file mode 100644
index 477971b0093..00000000000
--- a/arch/arm/mach-imx/include/mach/uncompress.h
+++ /dev/null
@@ -1,132 +0,0 @@
1/*
2 * arch/arm/plat-mxc/include/mach/uncompress.h
3 *
4 * Copyright (C) 1999 ARM Limited
5 * Copyright (C) Shane Nay (shane@minirl.com)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 */
17#ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__
18#define __ASM_ARCH_MXC_UNCOMPRESS_H__
19
20#define __MXC_BOOT_UNCOMPRESS
21
22#include <asm/mach-types.h>
23
24unsigned long uart_base;
25
26#define UART(x) (*(volatile unsigned long *)(uart_base + (x)))
27
28#define USR2 0x98
29#define USR2_TXFE (1<<14)
30#define TXR 0x40
31#define UCR1 0x80
32#define UCR1_UARTEN 1
33
34/*
35 * The following code assumes the serial port has already been
36 * initialized by the bootloader. We search for the first enabled
37 * port in the most probable order. If you didn't setup a port in
38 * your bootloader then nothing will appear (which might be desired).
39 *
40 * This does not append a newline
41 */
42
43static void putc(int ch)
44{
45 if (!uart_base)
46 return;
47 if (!(UART(UCR1) & UCR1_UARTEN))
48 return;
49
50 while (!(UART(USR2) & USR2_TXFE))
51 barrier();
52
53 UART(TXR) = ch;
54}
55
56static inline void flush(void)
57{
58}
59
60#define MX1_UART1_BASE_ADDR 0x00206000
61#define MX25_UART1_BASE_ADDR 0x43f90000
62#define MX2X_UART1_BASE_ADDR 0x1000a000
63#define MX3X_UART1_BASE_ADDR 0x43F90000
64#define MX3X_UART2_BASE_ADDR 0x43F94000
65#define MX3X_UART5_BASE_ADDR 0x43FB4000
66#define MX51_UART1_BASE_ADDR 0x73fbc000
67#define MX50_UART1_BASE_ADDR 0x53fbc000
68#define MX53_UART1_BASE_ADDR 0x53fbc000
69
70static __inline__ void __arch_decomp_setup(unsigned long arch_id)
71{
72 switch (arch_id) {
73 case MACH_TYPE_MX1ADS:
74 case MACH_TYPE_SCB9328:
75 uart_base = MX1_UART1_BASE_ADDR;
76 break;
77 case MACH_TYPE_MX25_3DS:
78 uart_base = MX25_UART1_BASE_ADDR;
79 break;
80 case MACH_TYPE_IMX27LITE:
81 case MACH_TYPE_MX27_3DS:
82 case MACH_TYPE_MX27ADS:
83 case MACH_TYPE_PCM038:
84 case MACH_TYPE_MX21ADS:
85 case MACH_TYPE_PCA100:
86 case MACH_TYPE_MXT_TD60:
87 case MACH_TYPE_IMX27IPCAM:
88 uart_base = MX2X_UART1_BASE_ADDR;
89 break;
90 case MACH_TYPE_MX31LITE:
91 case MACH_TYPE_ARMADILLO5X0:
92 case MACH_TYPE_MX31MOBOARD:
93 case MACH_TYPE_QONG:
94 case MACH_TYPE_MX31_3DS:
95 case MACH_TYPE_PCM037:
96 case MACH_TYPE_MX31ADS:
97 case MACH_TYPE_MX35_3DS:
98 case MACH_TYPE_PCM043:
99 case MACH_TYPE_LILLY1131:
100 case MACH_TYPE_VPR200:
101 case MACH_TYPE_EUKREA_CPUIMX35SD:
102 uart_base = MX3X_UART1_BASE_ADDR;
103 break;
104 case MACH_TYPE_MAGX_ZN5:
105 uart_base = MX3X_UART2_BASE_ADDR;
106 break;
107 case MACH_TYPE_BUG:
108 uart_base = MX3X_UART5_BASE_ADDR;
109 break;
110 case MACH_TYPE_MX51_BABBAGE:
111 case MACH_TYPE_EUKREA_CPUIMX51SD:
112 case MACH_TYPE_MX51_3DS:
113 uart_base = MX51_UART1_BASE_ADDR;
114 break;
115 case MACH_TYPE_MX50_RDP:
116 uart_base = MX50_UART1_BASE_ADDR;
117 break;
118 case MACH_TYPE_MX53_EVK:
119 case MACH_TYPE_MX53_LOCO:
120 case MACH_TYPE_MX53_SMD:
121 case MACH_TYPE_MX53_ARD:
122 uart_base = MX53_UART1_BASE_ADDR;
123 break;
124 default:
125 break;
126 }
127}
128
129#define arch_decomp_setup() __arch_decomp_setup(arch_id)
130#define arch_decomp_wdog()
131
132#endif /* __ASM_ARCH_MXC_UNCOMPRESS_H__ */