diff options
57 files changed, 719 insertions, 851 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3ca1ba981efb..4c3e10cc9511 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -1051,7 +1051,6 @@ source "arch/arm/mach-sa1100/Kconfig" | |||
1051 | 1051 | ||
1052 | source "arch/arm/plat-samsung/Kconfig" | 1052 | source "arch/arm/plat-samsung/Kconfig" |
1053 | source "arch/arm/plat-s3c24xx/Kconfig" | 1053 | source "arch/arm/plat-s3c24xx/Kconfig" |
1054 | source "arch/arm/plat-s5p/Kconfig" | ||
1055 | 1054 | ||
1056 | source "arch/arm/plat-spear/Kconfig" | 1055 | source "arch/arm/plat-spear/Kconfig" |
1057 | 1056 | ||
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 157900da8782..18194acab493 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -160,9 +160,7 @@ machine-$(CONFIG_ARCH_MXS) := mxs | |||
160 | machine-$(CONFIG_ARCH_NETX) := netx | 160 | machine-$(CONFIG_ARCH_NETX) := netx |
161 | machine-$(CONFIG_ARCH_NOMADIK) := nomadik | 161 | machine-$(CONFIG_ARCH_NOMADIK) := nomadik |
162 | machine-$(CONFIG_ARCH_OMAP1) := omap1 | 162 | machine-$(CONFIG_ARCH_OMAP1) := omap1 |
163 | machine-$(CONFIG_ARCH_OMAP2) := omap2 | 163 | machine-$(CONFIG_ARCH_OMAP2PLUS) := omap2 |
164 | machine-$(CONFIG_ARCH_OMAP3) := omap2 | ||
165 | machine-$(CONFIG_ARCH_OMAP4) := omap2 | ||
166 | machine-$(CONFIG_ARCH_ORION5X) := orion5x | 164 | machine-$(CONFIG_ARCH_ORION5X) := orion5x |
167 | machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell | 165 | machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell |
168 | machine-$(CONFIG_ARCH_PNX4008) := pnx4008 | 166 | machine-$(CONFIG_ARCH_PNX4008) := pnx4008 |
@@ -205,7 +203,7 @@ plat-$(CONFIG_PLAT_NOMADIK) := nomadik | |||
205 | plat-$(CONFIG_PLAT_ORION) := orion | 203 | plat-$(CONFIG_PLAT_ORION) := orion |
206 | plat-$(CONFIG_PLAT_PXA) := pxa | 204 | plat-$(CONFIG_PLAT_PXA) := pxa |
207 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx samsung | 205 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx samsung |
208 | plat-$(CONFIG_PLAT_S5P) := s5p samsung | 206 | plat-$(CONFIG_PLAT_S5P) := samsung |
209 | plat-$(CONFIG_PLAT_SPEAR) := spear | 207 | plat-$(CONFIG_PLAT_SPEAR) := spear |
210 | plat-$(CONFIG_PLAT_VERSATILE) := versatile | 208 | plat-$(CONFIG_PLAT_VERSATILE) := versatile |
211 | 209 | ||
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index bb7779b57795..64ce3bbe22b5 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -63,7 +63,14 @@ extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd, | |||
63 | unsigned int ctrl); | 63 | unsigned int ctrl); |
64 | 64 | ||
65 | extern struct sys_timer omap1_timer; | 65 | extern struct sys_timer omap1_timer; |
66 | extern bool omap_32k_timer_init(void); | 66 | #ifdef CONFIG_OMAP_32K_TIMER |
67 | extern int omap_32k_timer_init(void); | ||
68 | #else | ||
69 | static inline int __init omap_32k_timer_init(void) | ||
70 | { | ||
71 | return -ENODEV; | ||
72 | } | ||
73 | #endif | ||
67 | 74 | ||
68 | extern u32 omap_irq_flags; | 75 | extern u32 omap_irq_flags; |
69 | 76 | ||
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index dcd8ddbec2bb..fa1fa4deb6aa 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <plat/tc.h> | 22 | #include <plat/tc.h> |
23 | #include <plat/board.h> | 23 | #include <plat/board.h> |
24 | #include <plat/mux.h> | 24 | #include <plat/mux.h> |
25 | #include <plat/dma.h> | ||
25 | #include <plat/mmc.h> | 26 | #include <plat/mmc.h> |
26 | #include <plat/omap7xx.h> | 27 | #include <plat/omap7xx.h> |
27 | 28 | ||
@@ -31,6 +32,22 @@ | |||
31 | #include "common.h" | 32 | #include "common.h" |
32 | #include "clock.h" | 33 | #include "clock.h" |
33 | 34 | ||
35 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | ||
36 | |||
37 | static struct platform_device omap_pcm = { | ||
38 | .name = "omap-pcm-audio", | ||
39 | .id = -1, | ||
40 | }; | ||
41 | |||
42 | static void omap_init_audio(void) | ||
43 | { | ||
44 | platform_device_register(&omap_pcm); | ||
45 | } | ||
46 | |||
47 | #else | ||
48 | static inline void omap_init_audio(void) {} | ||
49 | #endif | ||
50 | |||
34 | /*-------------------------------------------------------------------------*/ | 51 | /*-------------------------------------------------------------------------*/ |
35 | 52 | ||
36 | #if defined(CONFIG_RTC_DRV_OMAP) || defined(CONFIG_RTC_DRV_OMAP_MODULE) | 53 | #if defined(CONFIG_RTC_DRV_OMAP) || defined(CONFIG_RTC_DRV_OMAP_MODULE) |
@@ -128,6 +145,56 @@ static inline void omap1_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
128 | } | 145 | } |
129 | } | 146 | } |
130 | 147 | ||
148 | #define OMAP_MMC_NR_RES 4 | ||
149 | |||
150 | /* | ||
151 | * Register MMC devices. | ||
152 | */ | ||
153 | static int __init omap_mmc_add(const char *name, int id, unsigned long base, | ||
154 | unsigned long size, unsigned int irq, | ||
155 | unsigned rx_req, unsigned tx_req, | ||
156 | struct omap_mmc_platform_data *data) | ||
157 | { | ||
158 | struct platform_device *pdev; | ||
159 | struct resource res[OMAP_MMC_NR_RES]; | ||
160 | int ret; | ||
161 | |||
162 | pdev = platform_device_alloc(name, id); | ||
163 | if (!pdev) | ||
164 | return -ENOMEM; | ||
165 | |||
166 | memset(res, 0, OMAP_MMC_NR_RES * sizeof(struct resource)); | ||
167 | res[0].start = base; | ||
168 | res[0].end = base + size - 1; | ||
169 | res[0].flags = IORESOURCE_MEM; | ||
170 | res[1].start = res[1].end = irq; | ||
171 | res[1].flags = IORESOURCE_IRQ; | ||
172 | res[2].start = rx_req; | ||
173 | res[2].name = "rx"; | ||
174 | res[2].flags = IORESOURCE_DMA; | ||
175 | res[3].start = tx_req; | ||
176 | res[3].name = "tx"; | ||
177 | res[3].flags = IORESOURCE_DMA; | ||
178 | |||
179 | ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); | ||
180 | if (ret == 0) | ||
181 | ret = platform_device_add_data(pdev, data, sizeof(*data)); | ||
182 | if (ret) | ||
183 | goto fail; | ||
184 | |||
185 | ret = platform_device_add(pdev); | ||
186 | if (ret) | ||
187 | goto fail; | ||
188 | |||
189 | /* return device handle to board setup code */ | ||
190 | data->dev = &pdev->dev; | ||
191 | return 0; | ||
192 | |||
193 | fail: | ||
194 | platform_device_put(pdev); | ||
195 | return ret; | ||
196 | } | ||
197 | |||
131 | void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | 198 | void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, |
132 | int nr_controllers) | 199 | int nr_controllers) |
133 | { | 200 | { |
@@ -135,6 +202,7 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
135 | 202 | ||
136 | for (i = 0; i < nr_controllers; i++) { | 203 | for (i = 0; i < nr_controllers; i++) { |
137 | unsigned long base, size; | 204 | unsigned long base, size; |
205 | unsigned rx_req, tx_req; | ||
138 | unsigned int irq = 0; | 206 | unsigned int irq = 0; |
139 | 207 | ||
140 | if (!mmc_data[i]) | 208 | if (!mmc_data[i]) |
@@ -146,19 +214,24 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
146 | case 0: | 214 | case 0: |
147 | base = OMAP1_MMC1_BASE; | 215 | base = OMAP1_MMC1_BASE; |
148 | irq = INT_MMC; | 216 | irq = INT_MMC; |
217 | rx_req = OMAP_DMA_MMC_RX; | ||
218 | tx_req = OMAP_DMA_MMC_TX; | ||
149 | break; | 219 | break; |
150 | case 1: | 220 | case 1: |
151 | if (!cpu_is_omap16xx()) | 221 | if (!cpu_is_omap16xx()) |
152 | return; | 222 | return; |
153 | base = OMAP1_MMC2_BASE; | 223 | base = OMAP1_MMC2_BASE; |
154 | irq = INT_1610_MMC2; | 224 | irq = INT_1610_MMC2; |
225 | rx_req = OMAP_DMA_MMC2_RX; | ||
226 | tx_req = OMAP_DMA_MMC2_TX; | ||
155 | break; | 227 | break; |
156 | default: | 228 | default: |
157 | continue; | 229 | continue; |
158 | } | 230 | } |
159 | size = OMAP1_MMC_SIZE; | 231 | size = OMAP1_MMC_SIZE; |
160 | 232 | ||
161 | omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]); | 233 | omap_mmc_add("mmci-omap", i, base, size, irq, |
234 | rx_req, tx_req, mmc_data[i]); | ||
162 | }; | 235 | }; |
163 | } | 236 | } |
164 | 237 | ||
@@ -242,23 +315,48 @@ void __init omap1_camera_init(void *info) | |||
242 | 315 | ||
243 | static inline void omap_init_sti(void) {} | 316 | static inline void omap_init_sti(void) {} |
244 | 317 | ||
245 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | 318 | /* Numbering for the SPI-capable controllers when used for SPI: |
319 | * spi = 1 | ||
320 | * uwire = 2 | ||
321 | * mmc1..2 = 3..4 | ||
322 | * mcbsp1..3 = 5..7 | ||
323 | */ | ||
246 | 324 | ||
247 | static struct platform_device omap_pcm = { | 325 | #if defined(CONFIG_SPI_OMAP_UWIRE) || defined(CONFIG_SPI_OMAP_UWIRE_MODULE) |
248 | .name = "omap-pcm-audio", | 326 | |
249 | .id = -1, | 327 | #define OMAP_UWIRE_BASE 0xfffb3000 |
328 | |||
329 | static struct resource uwire_resources[] = { | ||
330 | { | ||
331 | .start = OMAP_UWIRE_BASE, | ||
332 | .end = OMAP_UWIRE_BASE + 0x20, | ||
333 | .flags = IORESOURCE_MEM, | ||
334 | }, | ||
250 | }; | 335 | }; |
251 | 336 | ||
252 | static void omap_init_audio(void) | 337 | static struct platform_device omap_uwire_device = { |
338 | .name = "omap_uwire", | ||
339 | .id = -1, | ||
340 | .num_resources = ARRAY_SIZE(uwire_resources), | ||
341 | .resource = uwire_resources, | ||
342 | }; | ||
343 | |||
344 | static void omap_init_uwire(void) | ||
253 | { | 345 | { |
254 | platform_device_register(&omap_pcm); | 346 | /* FIXME define and use a boot tag; not all boards will be hooking |
255 | } | 347 | * up devices to the microwire controller, and multi-board configs |
348 | * mean that CONFIG_SPI_OMAP_UWIRE may be configured anyway... | ||
349 | */ | ||
256 | 350 | ||
351 | /* board-specific code must configure chipselects (only a few | ||
352 | * are normally used) and SCLK/SDI/SDO (each has two choices). | ||
353 | */ | ||
354 | (void) platform_device_register(&omap_uwire_device); | ||
355 | } | ||
257 | #else | 356 | #else |
258 | static inline void omap_init_audio(void) {} | 357 | static inline void omap_init_uwire(void) {} |
259 | #endif | 358 | #endif |
260 | 359 | ||
261 | /*-------------------------------------------------------------------------*/ | ||
262 | 360 | ||
263 | /* | 361 | /* |
264 | * This gets called after board-specific INIT_MACHINE, and initializes most | 362 | * This gets called after board-specific INIT_MACHINE, and initializes most |
@@ -292,11 +390,12 @@ static int __init omap1_init_devices(void) | |||
292 | * in alphabetical order so they're easier to sort through. | 390 | * in alphabetical order so they're easier to sort through. |
293 | */ | 391 | */ |
294 | 392 | ||
393 | omap_init_audio(); | ||
295 | omap_init_mbox(); | 394 | omap_init_mbox(); |
296 | omap_init_rtc(); | 395 | omap_init_rtc(); |
297 | omap_init_spi100k(); | 396 | omap_init_spi100k(); |
298 | omap_init_sti(); | 397 | omap_init_sti(); |
299 | omap_init_audio(); | 398 | omap_init_uwire(); |
300 | 399 | ||
301 | return 0; | 400 | return 0; |
302 | } | 401 | } |
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 4d8dd9a1b04c..4062480bfec7 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -232,20 +232,6 @@ static inline void omap_mpu_timer_init(void) | |||
232 | } | 232 | } |
233 | #endif /* CONFIG_OMAP_MPU_TIMER */ | 233 | #endif /* CONFIG_OMAP_MPU_TIMER */ |
234 | 234 | ||
235 | static inline int omap_32k_timer_usable(void) | ||
236 | { | ||
237 | int res = false; | ||
238 | |||
239 | if (cpu_is_omap730() || cpu_is_omap15xx()) | ||
240 | return res; | ||
241 | |||
242 | #ifdef CONFIG_OMAP_32K_TIMER | ||
243 | res = omap_32k_timer_init(); | ||
244 | #endif | ||
245 | |||
246 | return res; | ||
247 | } | ||
248 | |||
249 | /* | 235 | /* |
250 | * --------------------------------------------------------------------------- | 236 | * --------------------------------------------------------------------------- |
251 | * Timer initialization | 237 | * Timer initialization |
@@ -253,7 +239,7 @@ static inline int omap_32k_timer_usable(void) | |||
253 | */ | 239 | */ |
254 | static void __init omap1_timer_init(void) | 240 | static void __init omap1_timer_init(void) |
255 | { | 241 | { |
256 | if (!omap_32k_timer_usable()) | 242 | if (omap_32k_timer_init() != 0) |
257 | omap_mpu_timer_init(); | 243 | omap_mpu_timer_init(); |
258 | } | 244 | } |
259 | 245 | ||
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 325b9a0aa4a0..eae49c3980c9 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -71,6 +71,7 @@ | |||
71 | 71 | ||
72 | /* 16xx specific defines */ | 72 | /* 16xx specific defines */ |
73 | #define OMAP1_32K_TIMER_BASE 0xfffb9000 | 73 | #define OMAP1_32K_TIMER_BASE 0xfffb9000 |
74 | #define OMAP1_32KSYNC_TIMER_BASE 0xfffbc400 | ||
74 | #define OMAP1_32K_TIMER_CR 0x08 | 75 | #define OMAP1_32K_TIMER_CR 0x08 |
75 | #define OMAP1_32K_TIMER_TVR 0x00 | 76 | #define OMAP1_32K_TIMER_TVR 0x00 |
76 | #define OMAP1_32K_TIMER_TCR 0x04 | 77 | #define OMAP1_32K_TIMER_TCR 0x04 |
@@ -182,10 +183,29 @@ static __init void omap_init_32k_timer(void) | |||
182 | * Timer initialization | 183 | * Timer initialization |
183 | * --------------------------------------------------------------------------- | 184 | * --------------------------------------------------------------------------- |
184 | */ | 185 | */ |
185 | bool __init omap_32k_timer_init(void) | 186 | int __init omap_32k_timer_init(void) |
186 | { | 187 | { |
187 | omap_init_clocksource_32k(); | 188 | int ret = -ENODEV; |
188 | omap_init_32k_timer(); | ||
189 | 189 | ||
190 | return true; | 190 | if (cpu_is_omap16xx()) { |
191 | void __iomem *base; | ||
192 | struct clk *sync32k_ick; | ||
193 | |||
194 | base = ioremap(OMAP1_32KSYNC_TIMER_BASE, SZ_1K); | ||
195 | if (!base) { | ||
196 | pr_err("32k_counter: failed to map base addr\n"); | ||
197 | return -ENODEV; | ||
198 | } | ||
199 | |||
200 | sync32k_ick = clk_get(NULL, "omap_32ksync_ick"); | ||
201 | if (!IS_ERR(sync32k_ick)) | ||
202 | clk_enable(sync32k_ick); | ||
203 | |||
204 | ret = omap_init_clocksource_32k(base); | ||
205 | } | ||
206 | |||
207 | if (!ret) | ||
208 | omap_init_32k_timer(); | ||
209 | |||
210 | return ret; | ||
191 | } | 211 | } |
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 964ee67a3b77..4cf5142f22cc 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -78,12 +78,12 @@ config SOC_OMAP3430 | |||
78 | default y | 78 | default y |
79 | select ARCH_OMAP_OTG | 79 | select ARCH_OMAP_OTG |
80 | 80 | ||
81 | config SOC_OMAPTI81XX | 81 | config SOC_TI81XX |
82 | bool "TI81XX support" | 82 | bool "TI81XX support" |
83 | depends on ARCH_OMAP3 | 83 | depends on ARCH_OMAP3 |
84 | default y | 84 | default y |
85 | 85 | ||
86 | config SOC_OMAPAM33XX | 86 | config SOC_AM33XX |
87 | bool "AM33XX support" | 87 | bool "AM33XX support" |
88 | depends on ARCH_OMAP3 | 88 | depends on ARCH_OMAP3 |
89 | default y | 89 | default y |
@@ -320,12 +320,12 @@ config MACH_OMAP_3630SDP | |||
320 | 320 | ||
321 | config MACH_TI8168EVM | 321 | config MACH_TI8168EVM |
322 | bool "TI8168 Evaluation Module" | 322 | bool "TI8168 Evaluation Module" |
323 | depends on SOC_OMAPTI81XX | 323 | depends on SOC_TI81XX |
324 | default y | 324 | default y |
325 | 325 | ||
326 | config MACH_TI8148EVM | 326 | config MACH_TI8148EVM |
327 | bool "TI8148 Evaluation Module" | 327 | bool "TI8148 Evaluation Module" |
328 | depends on SOC_OMAPTI81XX | 328 | depends on SOC_TI81XX |
329 | default y | 329 | default y |
330 | 330 | ||
331 | config MACH_OMAP_4430SDP | 331 | config MACH_OMAP_4430SDP |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 385c083d24b2..fa742f3c2629 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -24,10 +24,11 @@ endif | |||
24 | obj-$(CONFIG_TWL4030_CORE) += omap_twl.o | 24 | obj-$(CONFIG_TWL4030_CORE) += omap_twl.o |
25 | 25 | ||
26 | # SMP support ONLY available for OMAP4 | 26 | # SMP support ONLY available for OMAP4 |
27 | |||
27 | obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o | 28 | obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o |
28 | obj-$(CONFIG_HOTPLUG_CPU) += omap-hotplug.o | 29 | obj-$(CONFIG_HOTPLUG_CPU) += omap-hotplug.o |
29 | obj-$(CONFIG_ARCH_OMAP4) += omap4-common.o omap-wakeupgen.o \ | 30 | obj-$(CONFIG_ARCH_OMAP4) += omap4-common.o omap-wakeupgen.o |
30 | sleep44xx.o | 31 | obj-$(CONFIG_ARCH_OMAP4) += sleep44xx.o |
31 | 32 | ||
32 | plus_sec := $(call as-instr,.arch_extension sec,+sec) | 33 | plus_sec := $(call as-instr,.arch_extension sec,+sec) |
33 | AFLAGS_omap-headsmp.o :=-Wa,-march=armv7-a$(plus_sec) | 34 | AFLAGS_omap-headsmp.o :=-Wa,-march=armv7-a$(plus_sec) |
@@ -64,10 +65,10 @@ endif | |||
64 | ifeq ($(CONFIG_PM),y) | 65 | ifeq ($(CONFIG_PM),y) |
65 | obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o | 66 | obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o |
66 | obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o | 67 | obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o |
67 | obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o \ | 68 | obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o |
68 | cpuidle34xx.o | 69 | obj-$(CONFIG_ARCH_OMAP3) += cpuidle34xx.o |
69 | obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o \ | 70 | obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o |
70 | cpuidle44xx.o | 71 | obj-$(CONFIG_ARCH_OMAP4) += cpuidle44xx.o |
71 | obj-$(CONFIG_PM_DEBUG) += pm-debug.o | 72 | obj-$(CONFIG_PM_DEBUG) += pm-debug.o |
72 | obj-$(CONFIG_OMAP_SMARTREFLEX) += sr_device.o smartreflex.o | 73 | obj-$(CONFIG_OMAP_SMARTREFLEX) += sr_device.o smartreflex.o |
73 | obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o | 74 | obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o |
@@ -84,90 +85,86 @@ endif | |||
84 | # PRCM | 85 | # PRCM |
85 | obj-y += prm_common.o | 86 | obj-y += prm_common.o |
86 | obj-$(CONFIG_ARCH_OMAP2) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o | 87 | obj-$(CONFIG_ARCH_OMAP2) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o |
87 | obj-$(CONFIG_ARCH_OMAP3) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o \ | 88 | obj-$(CONFIG_ARCH_OMAP3) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o |
88 | vc3xxx_data.o vp3xxx_data.o | 89 | obj-$(CONFIG_ARCH_OMAP3) += vc3xxx_data.o vp3xxx_data.o |
89 | # XXX The presence of cm2xxx_3xxx.o on the line below is temporary and | 90 | obj-$(CONFIG_ARCH_OMAP4) += prcm.o cminst44xx.o cm44xx.o |
90 | # will be removed once the OMAP4 part of the codebase is converted to | 91 | obj-$(CONFIG_ARCH_OMAP4) += prcm_mpu44xx.o prminst44xx.o |
91 | # use OMAP4-specific PRCM functions. | 92 | obj-$(CONFIG_ARCH_OMAP4) += vc44xx_data.o vp44xx_data.o prm44xx.o |
92 | obj-$(CONFIG_ARCH_OMAP4) += prcm.o cm2xxx_3xxx.o cminst44xx.o \ | ||
93 | cm44xx.o prcm_mpu44xx.o \ | ||
94 | prminst44xx.o vc44xx_data.o \ | ||
95 | vp44xx_data.o prm44xx.o | ||
96 | 93 | ||
97 | # OMAP voltage domains | 94 | # OMAP voltage domains |
98 | voltagedomain-common := voltage.o vc.o vp.o | 95 | voltagedomain-common := voltage.o vc.o vp.o |
99 | obj-$(CONFIG_ARCH_OMAP2) += $(voltagedomain-common) \ | 96 | obj-$(CONFIG_ARCH_OMAP2) += $(voltagedomain-common) |
100 | voltagedomains2xxx_data.o | 97 | obj-$(CONFIG_ARCH_OMAP2) += voltagedomains2xxx_data.o |
101 | obj-$(CONFIG_ARCH_OMAP3) += $(voltagedomain-common) \ | 98 | obj-$(CONFIG_ARCH_OMAP3) += $(voltagedomain-common) |
102 | voltagedomains3xxx_data.o | 99 | obj-$(CONFIG_ARCH_OMAP3) += voltagedomains3xxx_data.o |
103 | obj-$(CONFIG_ARCH_OMAP4) += $(voltagedomain-common) \ | 100 | obj-$(CONFIG_ARCH_OMAP4) += $(voltagedomain-common) |
104 | voltagedomains44xx_data.o | 101 | obj-$(CONFIG_ARCH_OMAP4) += voltagedomains44xx_data.o |
105 | 102 | ||
106 | # OMAP powerdomain framework | 103 | # OMAP powerdomain framework |
107 | powerdomain-common += powerdomain.o powerdomain-common.o | 104 | powerdomain-common += powerdomain.o powerdomain-common.o |
108 | obj-$(CONFIG_ARCH_OMAP2) += $(powerdomain-common) \ | 105 | obj-$(CONFIG_ARCH_OMAP2) += $(powerdomain-common) |
109 | powerdomain2xxx_3xxx.o \ | 106 | obj-$(CONFIG_ARCH_OMAP2) += powerdomains2xxx_data.o |
110 | powerdomains2xxx_data.o \ | 107 | obj-$(CONFIG_ARCH_OMAP2) += powerdomain2xxx_3xxx.o |
111 | powerdomains2xxx_3xxx_data.o | 108 | obj-$(CONFIG_ARCH_OMAP2) += powerdomains2xxx_3xxx_data.o |
112 | obj-$(CONFIG_ARCH_OMAP3) += $(powerdomain-common) \ | 109 | obj-$(CONFIG_ARCH_OMAP3) += $(powerdomain-common) |
113 | powerdomain2xxx_3xxx.o \ | 110 | obj-$(CONFIG_ARCH_OMAP3) += powerdomain2xxx_3xxx.o |
114 | powerdomains3xxx_data.o \ | 111 | obj-$(CONFIG_ARCH_OMAP3) += powerdomains3xxx_data.o |
115 | powerdomains2xxx_3xxx_data.o | 112 | obj-$(CONFIG_ARCH_OMAP3) += powerdomains2xxx_3xxx_data.o |
116 | obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \ | 113 | obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) |
117 | powerdomain44xx.o \ | 114 | obj-$(CONFIG_ARCH_OMAP4) += powerdomain44xx.o |
118 | powerdomains44xx_data.o | 115 | obj-$(CONFIG_ARCH_OMAP4) += powerdomains44xx_data.o |
119 | 116 | ||
120 | # PRCM clockdomain control | 117 | # PRCM clockdomain control |
121 | clockdomain-common += clockdomain.o \ | 118 | clockdomain-common += clockdomain.o |
122 | clockdomains_common_data.o | 119 | clockdomain-common += clockdomains_common_data.o |
123 | obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) \ | 120 | obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) |
124 | clockdomain2xxx_3xxx.o \ | 121 | obj-$(CONFIG_ARCH_OMAP2) += clockdomain2xxx_3xxx.o |
125 | clockdomains2xxx_3xxx_data.o | 122 | obj-$(CONFIG_ARCH_OMAP2) += clockdomains2xxx_3xxx_data.o |
126 | obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o | 123 | obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o |
127 | obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o | 124 | obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o |
128 | obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) \ | 125 | obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) |
129 | clockdomain2xxx_3xxx.o \ | 126 | obj-$(CONFIG_ARCH_OMAP3) += clockdomain2xxx_3xxx.o |
130 | clockdomains2xxx_3xxx_data.o \ | 127 | obj-$(CONFIG_ARCH_OMAP3) += clockdomains2xxx_3xxx_data.o |
131 | clockdomains3xxx_data.o | 128 | obj-$(CONFIG_ARCH_OMAP3) += clockdomains3xxx_data.o |
132 | obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) \ | 129 | obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) |
133 | clockdomain44xx.o \ | 130 | obj-$(CONFIG_ARCH_OMAP4) += clockdomain44xx.o |
134 | clockdomains44xx_data.o | 131 | obj-$(CONFIG_ARCH_OMAP4) += clockdomains44xx_data.o |
135 | 132 | ||
136 | # Clock framework | 133 | # Clock framework |
137 | obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o \ | 134 | obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o |
138 | clkt2xxx_sys.o \ | 135 | obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_sys.o |
139 | clkt2xxx_dpllcore.o \ | 136 | obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpllcore.o |
140 | clkt2xxx_virt_prcm_set.o \ | 137 | obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_virt_prcm_set.o |
141 | clkt2xxx_apll.o clkt2xxx_osc.o \ | 138 | obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_apll.o clkt2xxx_osc.o |
142 | clkt2xxx_dpll.o clkt_iclk.o | 139 | obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpll.o clkt_iclk.o |
143 | obj-$(CONFIG_SOC_OMAP2420) += clock2420_data.o | 140 | obj-$(CONFIG_SOC_OMAP2420) += clock2420_data.o |
144 | obj-$(CONFIG_SOC_OMAP2430) += clock2430.o clock2430_data.o | 141 | obj-$(CONFIG_SOC_OMAP2430) += clock2430.o clock2430_data.o |
145 | obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o \ | 142 | obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o |
146 | clock34xx.o clkt34xx_dpll3m2.o \ | 143 | obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o clkt34xx_dpll3m2.o |
147 | clock3517.o clock36xx.o \ | 144 | obj-$(CONFIG_ARCH_OMAP3) += clock3517.o clock36xx.o |
148 | dpll3xxx.o clock3xxx_data.o \ | 145 | obj-$(CONFIG_ARCH_OMAP3) += dpll3xxx.o clock3xxx_data.o |
149 | clkt_iclk.o | 146 | obj-$(CONFIG_ARCH_OMAP3) += clkt_iclk.o |
150 | obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o \ | 147 | obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o |
151 | dpll3xxx.o dpll44xx.o | 148 | obj-$(CONFIG_ARCH_OMAP4) += dpll3xxx.o dpll44xx.o |
152 | 149 | ||
153 | # OMAP2 clock rate set data (old "OPP" data) | 150 | # OMAP2 clock rate set data (old "OPP" data) |
154 | obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o | 151 | obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o |
155 | obj-$(CONFIG_SOC_OMAP2430) += opp2430_data.o | 152 | obj-$(CONFIG_SOC_OMAP2430) += opp2430_data.o |
156 | 153 | ||
157 | # hwmod data | 154 | # hwmod data |
158 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_ipblock_data.o \ | 155 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_ipblock_data.o |
159 | omap_hwmod_2xxx_3xxx_ipblock_data.o \ | 156 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_3xxx_ipblock_data.o |
160 | omap_hwmod_2xxx_interconnect_data.o \ | 157 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_interconnect_data.o |
161 | omap_hwmod_2xxx_3xxx_interconnect_data.o \ | 158 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_3xxx_interconnect_data.o |
162 | omap_hwmod_2420_data.o | 159 | obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2420_data.o |
163 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_ipblock_data.o \ | 160 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_ipblock_data.o |
164 | omap_hwmod_2xxx_3xxx_ipblock_data.o \ | 161 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_3xxx_ipblock_data.o |
165 | omap_hwmod_2xxx_interconnect_data.o \ | 162 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_interconnect_data.o |
166 | omap_hwmod_2xxx_3xxx_interconnect_data.o \ | 163 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_3xxx_interconnect_data.o |
167 | omap_hwmod_2430_data.o | 164 | obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o |
168 | obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o \ | 165 | obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o |
169 | omap_hwmod_2xxx_3xxx_interconnect_data.o \ | 166 | obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_interconnect_data.o |
170 | omap_hwmod_3xxx_data.o | 167 | obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o |
171 | obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o | 168 | obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o |
172 | 169 | ||
173 | # EMU peripherals | 170 | # EMU peripherals |
@@ -208,23 +205,19 @@ obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o | |||
208 | obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o | 205 | obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o |
209 | obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o | 206 | obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o |
210 | obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o | 207 | obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o |
211 | obj-$(CONFIG_MACH_NOKIA_RM680) += board-rm680.o \ | 208 | obj-$(CONFIG_MACH_NOKIA_RM680) += board-rm680.o sdram-nokia.o |
212 | sdram-nokia.o | 209 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o |
213 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \ | 210 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o |
214 | sdram-nokia.o \ | 211 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o |
215 | board-rx51-peripherals.o \ | 212 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom.o board-zoom-peripherals.o |
216 | board-rx51-video.o | 213 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom-display.o |
217 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom.o \ | 214 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom-debugboard.o |
218 | board-zoom-peripherals.o \ | 215 | obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom.o board-zoom-peripherals.o |
219 | board-zoom-display.o \ | 216 | obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom-display.o |
220 | board-zoom-debugboard.o | 217 | obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom-debugboard.o |
221 | obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom.o \ | 218 | obj-$(CONFIG_MACH_OMAP_3630SDP) += board-3630sdp.o |
222 | board-zoom-peripherals.o \ | 219 | obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-peripherals.o |
223 | board-zoom-display.o \ | 220 | obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-display.o |
224 | board-zoom-debugboard.o | ||
225 | obj-$(CONFIG_MACH_OMAP_3630SDP) += board-3630sdp.o \ | ||
226 | board-zoom-peripherals.o \ | ||
227 | board-zoom-display.o | ||
228 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o | 221 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o |
229 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o | 222 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o |
230 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o | 223 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index d6c9e6180318..4cb1fe666311 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -55,7 +55,7 @@ static inline void omap34xx_map_common_io(void) | |||
55 | } | 55 | } |
56 | #endif | 56 | #endif |
57 | 57 | ||
58 | #ifdef CONFIG_SOC_OMAPTI81XX | 58 | #ifdef CONFIG_SOC_TI81XX |
59 | extern void omapti81xx_map_common_io(void); | 59 | extern void omapti81xx_map_common_io(void); |
60 | #else | 60 | #else |
61 | static inline void omapti81xx_map_common_io(void) | 61 | static inline void omapti81xx_map_common_io(void) |
@@ -63,7 +63,7 @@ static inline void omapti81xx_map_common_io(void) | |||
63 | } | 63 | } |
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | #ifdef CONFIG_SOC_OMAPAM33XX | 66 | #ifdef CONFIG_SOC_AM33XX |
67 | extern void omapam33xx_map_common_io(void); | 67 | extern void omapam33xx_map_common_io(void); |
68 | #else | 68 | #else |
69 | static inline void omapam33xx_map_common_io(void) | 69 | static inline void omapam33xx_map_common_io(void) |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index ae62ece04ef9..7b4b9327e543 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -645,7 +645,11 @@ static inline void omap242x_mmc_mux(struct omap_mmc_platform_data | |||
645 | 645 | ||
646 | void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) | 646 | void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) |
647 | { | 647 | { |
648 | char *name = "mmci-omap"; | 648 | struct platform_device *pdev; |
649 | struct omap_hwmod *oh; | ||
650 | int id = 0; | ||
651 | char *oh_name = "msdi1"; | ||
652 | char *dev_name = "mmci-omap"; | ||
649 | 653 | ||
650 | if (!mmc_data[0]) { | 654 | if (!mmc_data[0]) { |
651 | pr_err("%s fails: Incomplete platform data\n", __func__); | 655 | pr_err("%s fails: Incomplete platform data\n", __func__); |
@@ -653,8 +657,17 @@ void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) | |||
653 | } | 657 | } |
654 | 658 | ||
655 | omap242x_mmc_mux(mmc_data[0]); | 659 | omap242x_mmc_mux(mmc_data[0]); |
656 | omap_mmc_add(name, 0, OMAP2_MMC1_BASE, OMAP2420_MMC_SIZE, | 660 | |
657 | INT_24XX_MMC_IRQ, mmc_data[0]); | 661 | oh = omap_hwmod_lookup(oh_name); |
662 | if (!oh) { | ||
663 | pr_err("Could not look up %s\n", oh_name); | ||
664 | return; | ||
665 | } | ||
666 | pdev = omap_device_build(dev_name, id, oh, mmc_data[0], | ||
667 | sizeof(struct omap_mmc_platform_data), NULL, 0, 0); | ||
668 | if (IS_ERR(pdev)) | ||
669 | WARN(1, "Can'd build omap_device for %s:%s.\n", | ||
670 | dev_name, oh->name); | ||
658 | } | 671 | } |
659 | 672 | ||
660 | #endif | 673 | #endif |
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index b19d8496c16e..ff75abe60af2 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c | |||
@@ -227,10 +227,6 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
227 | 227 | ||
228 | dma_stride = OMAP2_DMA_STRIDE; | 228 | dma_stride = OMAP2_DMA_STRIDE; |
229 | dma_common_ch_start = CSDP; | 229 | dma_common_ch_start = CSDP; |
230 | if (cpu_is_omap3630() || cpu_is_omap44xx()) | ||
231 | dma_common_ch_end = CCDN; | ||
232 | else | ||
233 | dma_common_ch_end = CCFN; | ||
234 | 230 | ||
235 | p = kzalloc(sizeof(struct omap_system_dma_plat_info), GFP_KERNEL); | 231 | p = kzalloc(sizeof(struct omap_system_dma_plat_info), GFP_KERNEL); |
236 | if (!p) { | 232 | if (!p) { |
@@ -277,6 +273,13 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
277 | dev_err(&pdev->dev, "%s: kzalloc fail\n", __func__); | 273 | dev_err(&pdev->dev, "%s: kzalloc fail\n", __func__); |
278 | return -ENOMEM; | 274 | return -ENOMEM; |
279 | } | 275 | } |
276 | |||
277 | /* Check the capabilities register for descriptor loading feature */ | ||
278 | if (dma_read(CAPS_0, 0) & DMA_HAS_DESCRIPTOR_CAPS) | ||
279 | dma_common_ch_end = CCDN; | ||
280 | else | ||
281 | dma_common_ch_end = CCFN; | ||
282 | |||
280 | return 0; | 283 | return 0; |
281 | } | 284 | } |
282 | 285 | ||
diff --git a/arch/arm/mach-omap2/dsp.c b/arch/arm/mach-omap2/dsp.c index 3376388b317a..845309f146fe 100644 --- a/arch/arm/mach-omap2/dsp.c +++ b/arch/arm/mach-omap2/dsp.c | |||
@@ -28,8 +28,6 @@ | |||
28 | 28 | ||
29 | #include <plat/dsp.h> | 29 | #include <plat/dsp.h> |
30 | 30 | ||
31 | extern phys_addr_t omap_dsp_get_mempool_base(void); | ||
32 | |||
33 | static struct platform_device *omap_dsp_pdev; | 31 | static struct platform_device *omap_dsp_pdev; |
34 | 32 | ||
35 | static struct omap_dsp_platform_data omap_dsp_pdata __initdata = { | 33 | static struct omap_dsp_platform_data omap_dsp_pdata __initdata = { |
@@ -47,6 +45,31 @@ static struct omap_dsp_platform_data omap_dsp_pdata __initdata = { | |||
47 | .dsp_cm_rmw_bits = omap2_cm_rmw_mod_reg_bits, | 45 | .dsp_cm_rmw_bits = omap2_cm_rmw_mod_reg_bits, |
48 | }; | 46 | }; |
49 | 47 | ||
48 | static phys_addr_t omap_dsp_phys_mempool_base; | ||
49 | |||
50 | void __init omap_dsp_reserve_sdram_memblock(void) | ||
51 | { | ||
52 | phys_addr_t size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE; | ||
53 | phys_addr_t paddr; | ||
54 | |||
55 | if (!size) | ||
56 | return; | ||
57 | |||
58 | paddr = arm_memblock_steal(size, SZ_1M); | ||
59 | if (!paddr) { | ||
60 | pr_err("%s: failed to reserve %llx bytes\n", | ||
61 | __func__, (unsigned long long)size); | ||
62 | return; | ||
63 | } | ||
64 | |||
65 | omap_dsp_phys_mempool_base = paddr; | ||
66 | } | ||
67 | |||
68 | static phys_addr_t omap_dsp_get_mempool_base(void) | ||
69 | { | ||
70 | return omap_dsp_phys_mempool_base; | ||
71 | } | ||
72 | |||
50 | static int __init omap_dsp_init(void) | 73 | static int __init omap_dsp_init(void) |
51 | { | 74 | { |
52 | struct platform_device *pdev; | 75 | struct platform_device *pdev; |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 580e684e8825..46b09dae770e 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -50,6 +50,19 @@ | |||
50 | #define GPMC_ECC_SIZE_CONFIG 0x1fc | 50 | #define GPMC_ECC_SIZE_CONFIG 0x1fc |
51 | #define GPMC_ECC1_RESULT 0x200 | 51 | #define GPMC_ECC1_RESULT 0x200 |
52 | 52 | ||
53 | /* GPMC ECC control settings */ | ||
54 | #define GPMC_ECC_CTRL_ECCCLEAR 0x100 | ||
55 | #define GPMC_ECC_CTRL_ECCDISABLE 0x000 | ||
56 | #define GPMC_ECC_CTRL_ECCREG1 0x001 | ||
57 | #define GPMC_ECC_CTRL_ECCREG2 0x002 | ||
58 | #define GPMC_ECC_CTRL_ECCREG3 0x003 | ||
59 | #define GPMC_ECC_CTRL_ECCREG4 0x004 | ||
60 | #define GPMC_ECC_CTRL_ECCREG5 0x005 | ||
61 | #define GPMC_ECC_CTRL_ECCREG6 0x006 | ||
62 | #define GPMC_ECC_CTRL_ECCREG7 0x007 | ||
63 | #define GPMC_ECC_CTRL_ECCREG8 0x008 | ||
64 | #define GPMC_ECC_CTRL_ECCREG9 0x009 | ||
65 | |||
53 | #define GPMC_CS0_OFFSET 0x60 | 66 | #define GPMC_CS0_OFFSET 0x60 |
54 | #define GPMC_CS_SIZE 0x30 | 67 | #define GPMC_CS_SIZE 0x30 |
55 | 68 | ||
@@ -860,8 +873,9 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size) | |||
860 | gpmc_ecc_used = cs; | 873 | gpmc_ecc_used = cs; |
861 | 874 | ||
862 | /* clear ecc and enable bits */ | 875 | /* clear ecc and enable bits */ |
863 | val = ((0x00000001<<8) | 0x00000001); | 876 | gpmc_write_reg(GPMC_ECC_CONTROL, |
864 | gpmc_write_reg(GPMC_ECC_CONTROL, val); | 877 | GPMC_ECC_CTRL_ECCCLEAR | |
878 | GPMC_ECC_CTRL_ECCREG1); | ||
865 | 879 | ||
866 | /* program ecc and result sizes */ | 880 | /* program ecc and result sizes */ |
867 | val = ((((ecc_size >> 1) - 1) << 22) | (0x0000000F)); | 881 | val = ((((ecc_size >> 1) - 1) << 22) | (0x0000000F)); |
@@ -869,13 +883,15 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size) | |||
869 | 883 | ||
870 | switch (mode) { | 884 | switch (mode) { |
871 | case GPMC_ECC_READ: | 885 | case GPMC_ECC_READ: |
872 | gpmc_write_reg(GPMC_ECC_CONTROL, 0x101); | 886 | case GPMC_ECC_WRITE: |
887 | gpmc_write_reg(GPMC_ECC_CONTROL, | ||
888 | GPMC_ECC_CTRL_ECCCLEAR | | ||
889 | GPMC_ECC_CTRL_ECCREG1); | ||
873 | break; | 890 | break; |
874 | case GPMC_ECC_READSYN: | 891 | case GPMC_ECC_READSYN: |
875 | gpmc_write_reg(GPMC_ECC_CONTROL, 0x100); | 892 | gpmc_write_reg(GPMC_ECC_CONTROL, |
876 | break; | 893 | GPMC_ECC_CTRL_ECCCLEAR | |
877 | case GPMC_ECC_WRITE: | 894 | GPMC_ECC_CTRL_ECCDISABLE); |
878 | gpmc_write_reg(GPMC_ECC_CONTROL, 0x101); | ||
879 | break; | 895 | break; |
880 | default: | 896 | default: |
881 | printk(KERN_INFO "Error: Unrecognized Mode[%d]!\n", mode); | 897 | printk(KERN_INFO "Error: Unrecognized Mode[%d]!\n", mode); |
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index b0268eaffe13..be697d4e0843 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -355,7 +355,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, | |||
355 | * | 355 | * |
356 | * temporary HACK: ocr_mask instead of fixed supply | 356 | * temporary HACK: ocr_mask instead of fixed supply |
357 | */ | 357 | */ |
358 | if (cpu_is_omap3505() || cpu_is_omap3517()) | 358 | if (soc_is_am35xx()) |
359 | mmc->slots[0].ocr_mask = MMC_VDD_165_195 | | 359 | mmc->slots[0].ocr_mask = MMC_VDD_165_195 | |
360 | MMC_VDD_26_27 | | 360 | MMC_VDD_26_27 | |
361 | MMC_VDD_27_28 | | 361 | MMC_VDD_27_28 | |
@@ -365,7 +365,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, | |||
365 | else | 365 | else |
366 | mmc->slots[0].ocr_mask = c->ocr_mask; | 366 | mmc->slots[0].ocr_mask = c->ocr_mask; |
367 | 367 | ||
368 | if (!cpu_is_omap3517() && !cpu_is_omap3505()) | 368 | if (!soc_is_am35xx()) |
369 | mmc->slots[0].features |= HSMMC_HAS_PBIAS; | 369 | mmc->slots[0].features |= HSMMC_HAS_PBIAS; |
370 | 370 | ||
371 | if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0)) | 371 | if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0)) |
@@ -388,7 +388,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, | |||
388 | } | 388 | } |
389 | } | 389 | } |
390 | 390 | ||
391 | if (cpu_is_omap3517() || cpu_is_omap3505()) | 391 | if (soc_is_am35xx()) |
392 | mmc->slots[0].set_power = nop_mmc_set_power; | 392 | mmc->slots[0].set_power = nop_mmc_set_power; |
393 | 393 | ||
394 | /* OMAP3630 HSMMC1 supports only 4-bit */ | 394 | /* OMAP3630 HSMMC1 supports only 4-bit */ |
@@ -400,7 +400,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, | |||
400 | } | 400 | } |
401 | break; | 401 | break; |
402 | case 2: | 402 | case 2: |
403 | if (cpu_is_omap3517() || cpu_is_omap3505()) | 403 | if (soc_is_am35xx()) |
404 | mmc->slots[0].set_power = am35x_hsmmc2_set_power; | 404 | mmc->slots[0].set_power = am35x_hsmmc2_set_power; |
405 | 405 | ||
406 | if (c->ext_clock) | 406 | if (c->ext_clock) |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index f1398171d8a2..0389b3264abe 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -185,8 +185,7 @@ static void __init omap3_cpuinfo(void) | |||
185 | */ | 185 | */ |
186 | if (cpu_is_omap3630()) { | 186 | if (cpu_is_omap3630()) { |
187 | cpu_name = "OMAP3630"; | 187 | cpu_name = "OMAP3630"; |
188 | } else if (cpu_is_omap3517()) { | 188 | } else if (soc_is_am35xx()) { |
189 | /* AM35xx devices */ | ||
190 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; | 189 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; |
191 | } else if (cpu_is_ti816x()) { | 190 | } else if (cpu_is_ti816x()) { |
192 | cpu_name = "TI816X"; | 191 | cpu_name = "TI816X"; |
@@ -352,13 +351,13 @@ void __init omap3xxx_check_revision(void) | |||
352 | */ | 351 | */ |
353 | switch (rev) { | 352 | switch (rev) { |
354 | case 0: | 353 | case 0: |
355 | omap_revision = OMAP3517_REV_ES1_0; | 354 | omap_revision = AM35XX_REV_ES1_0; |
356 | cpu_rev = "1.0"; | 355 | cpu_rev = "1.0"; |
357 | break; | 356 | break; |
358 | case 1: | 357 | case 1: |
359 | /* FALLTHROUGH */ | 358 | /* FALLTHROUGH */ |
360 | default: | 359 | default: |
361 | omap_revision = OMAP3517_REV_ES1_1; | 360 | omap_revision = AM35XX_REV_ES1_1; |
362 | cpu_rev = "1.1"; | 361 | cpu_rev = "1.1"; |
363 | } | 362 | } |
364 | break; | 363 | break; |
diff --git a/arch/arm/mach-omap2/include/mach/omap-wakeupgen.h b/arch/arm/mach-omap2/include/mach/omap-wakeupgen.h index d79321b0f2a2..548de90b58c2 100644 --- a/arch/arm/mach-omap2/include/mach/omap-wakeupgen.h +++ b/arch/arm/mach-omap2/include/mach/omap-wakeupgen.h | |||
@@ -16,18 +16,10 @@ | |||
16 | #define OMAP_WKG_ENB_B_0 0x14 | 16 | #define OMAP_WKG_ENB_B_0 0x14 |
17 | #define OMAP_WKG_ENB_C_0 0x18 | 17 | #define OMAP_WKG_ENB_C_0 0x18 |
18 | #define OMAP_WKG_ENB_D_0 0x1c | 18 | #define OMAP_WKG_ENB_D_0 0x1c |
19 | #define OMAP_WKG_ENB_SECURE_A_0 0x20 | ||
20 | #define OMAP_WKG_ENB_SECURE_B_0 0x24 | ||
21 | #define OMAP_WKG_ENB_SECURE_C_0 0x28 | ||
22 | #define OMAP_WKG_ENB_SECURE_D_0 0x2c | ||
23 | #define OMAP_WKG_ENB_A_1 0x410 | 19 | #define OMAP_WKG_ENB_A_1 0x410 |
24 | #define OMAP_WKG_ENB_B_1 0x414 | 20 | #define OMAP_WKG_ENB_B_1 0x414 |
25 | #define OMAP_WKG_ENB_C_1 0x418 | 21 | #define OMAP_WKG_ENB_C_1 0x418 |
26 | #define OMAP_WKG_ENB_D_1 0x41c | 22 | #define OMAP_WKG_ENB_D_1 0x41c |
27 | #define OMAP_WKG_ENB_SECURE_A_1 0x420 | ||
28 | #define OMAP_WKG_ENB_SECURE_B_1 0x424 | ||
29 | #define OMAP_WKG_ENB_SECURE_C_1 0x428 | ||
30 | #define OMAP_WKG_ENB_SECURE_D_1 0x42c | ||
31 | #define OMAP_AUX_CORE_BOOT_0 0x800 | 23 | #define OMAP_AUX_CORE_BOOT_0 0x800 |
32 | #define OMAP_AUX_CORE_BOOT_1 0x804 | 24 | #define OMAP_AUX_CORE_BOOT_1 0x804 |
33 | #define OMAP_PTMSYNCREQ_MASK 0xc00 | 25 | #define OMAP_PTMSYNCREQ_MASK 0xc00 |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 4b9491aa36fa..e1f9c6fc0414 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -173,7 +173,7 @@ static struct map_desc omap34xx_io_desc[] __initdata = { | |||
173 | }; | 173 | }; |
174 | #endif | 174 | #endif |
175 | 175 | ||
176 | #ifdef CONFIG_SOC_OMAPTI81XX | 176 | #ifdef CONFIG_SOC_TI81XX |
177 | static struct map_desc omapti81xx_io_desc[] __initdata = { | 177 | static struct map_desc omapti81xx_io_desc[] __initdata = { |
178 | { | 178 | { |
179 | .virtual = L4_34XX_VIRT, | 179 | .virtual = L4_34XX_VIRT, |
@@ -184,7 +184,7 @@ static struct map_desc omapti81xx_io_desc[] __initdata = { | |||
184 | }; | 184 | }; |
185 | #endif | 185 | #endif |
186 | 186 | ||
187 | #ifdef CONFIG_SOC_OMAPAM33XX | 187 | #ifdef CONFIG_SOC_AM33XX |
188 | static struct map_desc omapam33xx_io_desc[] __initdata = { | 188 | static struct map_desc omapam33xx_io_desc[] __initdata = { |
189 | { | 189 | { |
190 | .virtual = L4_34XX_VIRT, | 190 | .virtual = L4_34XX_VIRT, |
@@ -216,41 +216,11 @@ static struct map_desc omap44xx_io_desc[] __initdata = { | |||
216 | .type = MT_DEVICE, | 216 | .type = MT_DEVICE, |
217 | }, | 217 | }, |
218 | { | 218 | { |
219 | .virtual = OMAP44XX_GPMC_VIRT, | ||
220 | .pfn = __phys_to_pfn(OMAP44XX_GPMC_PHYS), | ||
221 | .length = OMAP44XX_GPMC_SIZE, | ||
222 | .type = MT_DEVICE, | ||
223 | }, | ||
224 | { | ||
225 | .virtual = OMAP44XX_EMIF1_VIRT, | ||
226 | .pfn = __phys_to_pfn(OMAP44XX_EMIF1_PHYS), | ||
227 | .length = OMAP44XX_EMIF1_SIZE, | ||
228 | .type = MT_DEVICE, | ||
229 | }, | ||
230 | { | ||
231 | .virtual = OMAP44XX_EMIF2_VIRT, | ||
232 | .pfn = __phys_to_pfn(OMAP44XX_EMIF2_PHYS), | ||
233 | .length = OMAP44XX_EMIF2_SIZE, | ||
234 | .type = MT_DEVICE, | ||
235 | }, | ||
236 | { | ||
237 | .virtual = OMAP44XX_DMM_VIRT, | ||
238 | .pfn = __phys_to_pfn(OMAP44XX_DMM_PHYS), | ||
239 | .length = OMAP44XX_DMM_SIZE, | ||
240 | .type = MT_DEVICE, | ||
241 | }, | ||
242 | { | ||
243 | .virtual = L4_PER_44XX_VIRT, | 219 | .virtual = L4_PER_44XX_VIRT, |
244 | .pfn = __phys_to_pfn(L4_PER_44XX_PHYS), | 220 | .pfn = __phys_to_pfn(L4_PER_44XX_PHYS), |
245 | .length = L4_PER_44XX_SIZE, | 221 | .length = L4_PER_44XX_SIZE, |
246 | .type = MT_DEVICE, | 222 | .type = MT_DEVICE, |
247 | }, | 223 | }, |
248 | { | ||
249 | .virtual = L4_EMU_44XX_VIRT, | ||
250 | .pfn = __phys_to_pfn(L4_EMU_44XX_PHYS), | ||
251 | .length = L4_EMU_44XX_SIZE, | ||
252 | .type = MT_DEVICE, | ||
253 | }, | ||
254 | #ifdef CONFIG_OMAP4_ERRATA_I688 | 224 | #ifdef CONFIG_OMAP4_ERRATA_I688 |
255 | { | 225 | { |
256 | .virtual = OMAP4_SRAM_VA, | 226 | .virtual = OMAP4_SRAM_VA, |
@@ -286,14 +256,14 @@ void __init omap34xx_map_common_io(void) | |||
286 | } | 256 | } |
287 | #endif | 257 | #endif |
288 | 258 | ||
289 | #ifdef CONFIG_SOC_OMAPTI81XX | 259 | #ifdef CONFIG_SOC_TI81XX |
290 | void __init omapti81xx_map_common_io(void) | 260 | void __init omapti81xx_map_common_io(void) |
291 | { | 261 | { |
292 | iotable_init(omapti81xx_io_desc, ARRAY_SIZE(omapti81xx_io_desc)); | 262 | iotable_init(omapti81xx_io_desc, ARRAY_SIZE(omapti81xx_io_desc)); |
293 | } | 263 | } |
294 | #endif | 264 | #endif |
295 | 265 | ||
296 | #ifdef CONFIG_SOC_OMAPAM33XX | 266 | #ifdef CONFIG_SOC_AM33XX |
297 | void __init omapam33xx_map_common_io(void) | 267 | void __init omapam33xx_map_common_io(void) |
298 | { | 268 | { |
299 | iotable_init(omapam33xx_io_desc, ARRAY_SIZE(omapam33xx_io_desc)); | 269 | iotable_init(omapam33xx_io_desc, ARRAY_SIZE(omapam33xx_io_desc)); |
diff --git a/arch/arm/mach-omap2/iomap.h b/arch/arm/mach-omap2/iomap.h index 0812b154f5b5..80b88921faba 100644 --- a/arch/arm/mach-omap2/iomap.h +++ b/arch/arm/mach-omap2/iomap.h | |||
@@ -37,9 +37,6 @@ | |||
37 | #define OMAP4_L3_PER_IO_OFFSET 0xb1100000 | 37 | #define OMAP4_L3_PER_IO_OFFSET 0xb1100000 |
38 | #define OMAP4_L3_PER_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) | 38 | #define OMAP4_L3_PER_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) |
39 | 39 | ||
40 | #define OMAP4_GPMC_IO_OFFSET 0xa9000000 | ||
41 | #define OMAP4_GPMC_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_GPMC_IO_OFFSET) | ||
42 | |||
43 | #define OMAP2_EMU_IO_OFFSET 0xaa800000 /* Emulation */ | 40 | #define OMAP2_EMU_IO_OFFSET 0xaa800000 /* Emulation */ |
44 | #define OMAP2_EMU_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_EMU_IO_OFFSET) | 41 | #define OMAP2_EMU_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_EMU_IO_OFFSET) |
45 | 42 | ||
@@ -170,28 +167,3 @@ | |||
170 | #define L4_ABE_44XX_VIRT (L4_ABE_44XX_PHYS + OMAP2_L4_IO_OFFSET) | 167 | #define L4_ABE_44XX_VIRT (L4_ABE_44XX_PHYS + OMAP2_L4_IO_OFFSET) |
171 | #define L4_ABE_44XX_SIZE SZ_1M | 168 | #define L4_ABE_44XX_SIZE SZ_1M |
172 | 169 | ||
173 | #define L4_EMU_44XX_PHYS L4_EMU_44XX_BASE | ||
174 | /* 0x54000000 --> 0xfe800000 */ | ||
175 | #define L4_EMU_44XX_VIRT (L4_EMU_44XX_PHYS + OMAP2_EMU_IO_OFFSET) | ||
176 | #define L4_EMU_44XX_SIZE SZ_8M | ||
177 | |||
178 | #define OMAP44XX_GPMC_PHYS OMAP44XX_GPMC_BASE | ||
179 | /* 0x50000000 --> 0xf9000000 */ | ||
180 | #define OMAP44XX_GPMC_VIRT (OMAP44XX_GPMC_PHYS + OMAP4_GPMC_IO_OFFSET) | ||
181 | #define OMAP44XX_GPMC_SIZE SZ_1M | ||
182 | |||
183 | |||
184 | #define OMAP44XX_EMIF1_PHYS OMAP44XX_EMIF1_BASE | ||
185 | /* 0x4c000000 --> 0xfd100000 */ | ||
186 | #define OMAP44XX_EMIF1_VIRT (OMAP44XX_EMIF1_PHYS + OMAP4_L3_PER_IO_OFFSET) | ||
187 | #define OMAP44XX_EMIF1_SIZE SZ_1M | ||
188 | |||
189 | #define OMAP44XX_EMIF2_PHYS OMAP44XX_EMIF2_BASE | ||
190 | /* 0x4d000000 --> 0xfd200000 */ | ||
191 | #define OMAP44XX_EMIF2_SIZE SZ_1M | ||
192 | #define OMAP44XX_EMIF2_VIRT (OMAP44XX_EMIF1_VIRT + OMAP44XX_EMIF1_SIZE) | ||
193 | |||
194 | #define OMAP44XX_DMM_PHYS OMAP44XX_DMM_BASE | ||
195 | /* 0x4e000000 --> 0xfd300000 */ | ||
196 | #define OMAP44XX_DMM_SIZE SZ_1M | ||
197 | #define OMAP44XX_DMM_VIRT (OMAP44XX_EMIF2_VIRT + OMAP44XX_EMIF2_SIZE) | ||
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 1ecf54565fe2..fdc4303be563 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -231,7 +231,7 @@ static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs | |||
231 | goto out; | 231 | goto out; |
232 | 232 | ||
233 | irqnr = readl_relaxed(base_addr + 0xd8); | 233 | irqnr = readl_relaxed(base_addr + 0xd8); |
234 | #ifdef CONFIG_SOC_OMAPTI81XX | 234 | #ifdef CONFIG_SOC_TI81XX |
235 | if (irqnr) | 235 | if (irqnr) |
236 | goto out; | 236 | goto out; |
237 | irqnr = readl_relaxed(base_addr + 0xf8); | 237 | irqnr = readl_relaxed(base_addr + 0xf8); |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index fd48797fa95a..b26d3c9bca16 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -3306,7 +3306,7 @@ int __init omap3xxx_hwmod_init(void) | |||
3306 | rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || | 3306 | rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || |
3307 | rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { | 3307 | rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { |
3308 | h = omap34xx_hwmod_ocp_ifs; | 3308 | h = omap34xx_hwmod_ocp_ifs; |
3309 | } else if (rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1) { | 3309 | } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) { |
3310 | h = am35xx_hwmod_ocp_ifs; | 3310 | h = am35xx_hwmod_ocp_ifs; |
3311 | } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || | 3311 | } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || |
3312 | rev == OMAP3630_REV_ES1_2) { | 3312 | rev == OMAP3630_REV_ES1_2) { |
diff --git a/arch/arm/mach-omap2/powerdomains3xxx_data.c b/arch/arm/mach-omap2/powerdomains3xxx_data.c index b7ea468eea32..fb0a0a6869d1 100644 --- a/arch/arm/mach-omap2/powerdomains3xxx_data.c +++ b/arch/arm/mach-omap2/powerdomains3xxx_data.c | |||
@@ -311,7 +311,7 @@ void __init omap3xxx_powerdomains_init(void) | |||
311 | rev == OMAP3430_REV_ES3_0 || rev == OMAP3630_REV_ES1_0) | 311 | rev == OMAP3430_REV_ES3_0 || rev == OMAP3630_REV_ES1_0) |
312 | pwrdm_register_pwrdms(powerdomains_omap3430es2_es3_0); | 312 | pwrdm_register_pwrdms(powerdomains_omap3430es2_es3_0); |
313 | else if (rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2 || | 313 | else if (rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2 || |
314 | rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1 || | 314 | rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1 || |
315 | rev == OMAP3630_REV_ES1_1 || rev == OMAP3630_REV_ES1_2) | 315 | rev == OMAP3630_REV_ES1_1 || rev == OMAP3630_REV_ES1_2) |
316 | pwrdm_register_pwrdms(powerdomains_omap3430es3_1plus); | 316 | pwrdm_register_pwrdms(powerdomains_omap3430es3_1plus); |
317 | else | 317 | else |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 1b7835865c83..840929bd9dae 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
@@ -90,7 +90,7 @@ static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id) | |||
90 | } | 90 | } |
91 | 91 | ||
92 | static struct irqaction omap2_gp_timer_irq = { | 92 | static struct irqaction omap2_gp_timer_irq = { |
93 | .name = "gp timer", | 93 | .name = "gp_timer", |
94 | .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, | 94 | .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, |
95 | .handler = omap2_gp_timer_interrupt, | 95 | .handler = omap2_gp_timer_interrupt, |
96 | }; | 96 | }; |
@@ -132,7 +132,7 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode, | |||
132 | } | 132 | } |
133 | 133 | ||
134 | static struct clock_event_device clockevent_gpt = { | 134 | static struct clock_event_device clockevent_gpt = { |
135 | .name = "gp timer", | 135 | .name = "gp_timer", |
136 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | 136 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, |
137 | .shift = 32, | 137 | .shift = 32, |
138 | .set_next_event = omap2_gp_timer_set_next_event, | 138 | .set_next_event = omap2_gp_timer_set_next_event, |
@@ -236,22 +236,8 @@ static void __init omap2_gp_clockevent_init(int gptimer_id, | |||
236 | } | 236 | } |
237 | 237 | ||
238 | /* Clocksource code */ | 238 | /* Clocksource code */ |
239 | |||
240 | #ifdef CONFIG_OMAP_32K_TIMER | ||
241 | /* | ||
242 | * When 32k-timer is enabled, don't use GPTimer for clocksource | ||
243 | * instead, just leave default clocksource which uses the 32k | ||
244 | * sync counter. See clocksource setup in plat-omap/counter_32k.c | ||
245 | */ | ||
246 | |||
247 | static void __init omap2_gp_clocksource_init(int unused, const char *dummy) | ||
248 | { | ||
249 | omap_init_clocksource_32k(); | ||
250 | } | ||
251 | |||
252 | #else | ||
253 | |||
254 | static struct omap_dm_timer clksrc; | 239 | static struct omap_dm_timer clksrc; |
240 | static bool use_gptimer_clksrc; | ||
255 | 241 | ||
256 | /* | 242 | /* |
257 | * clocksource | 243 | * clocksource |
@@ -262,7 +248,7 @@ static cycle_t clocksource_read_cycles(struct clocksource *cs) | |||
262 | } | 248 | } |
263 | 249 | ||
264 | static struct clocksource clocksource_gpt = { | 250 | static struct clocksource clocksource_gpt = { |
265 | .name = "gp timer", | 251 | .name = "gp_timer", |
266 | .rating = 300, | 252 | .rating = 300, |
267 | .read = clocksource_read_cycles, | 253 | .read = clocksource_read_cycles, |
268 | .mask = CLOCKSOURCE_MASK(32), | 254 | .mask = CLOCKSOURCE_MASK(32), |
@@ -278,7 +264,46 @@ static u32 notrace dmtimer_read_sched_clock(void) | |||
278 | } | 264 | } |
279 | 265 | ||
280 | /* Setup free-running counter for clocksource */ | 266 | /* Setup free-running counter for clocksource */ |
281 | static void __init omap2_gp_clocksource_init(int gptimer_id, | 267 | static int __init omap2_sync32k_clocksource_init(void) |
268 | { | ||
269 | int ret; | ||
270 | struct omap_hwmod *oh; | ||
271 | void __iomem *vbase; | ||
272 | const char *oh_name = "counter_32k"; | ||
273 | |||
274 | /* | ||
275 | * First check hwmod data is available for sync32k counter | ||
276 | */ | ||
277 | oh = omap_hwmod_lookup(oh_name); | ||
278 | if (!oh || oh->slaves_cnt == 0) | ||
279 | return -ENODEV; | ||
280 | |||
281 | omap_hwmod_setup_one(oh_name); | ||
282 | |||
283 | vbase = omap_hwmod_get_mpu_rt_va(oh); | ||
284 | if (!vbase) { | ||
285 | pr_warn("%s: failed to get counter_32k resource\n", __func__); | ||
286 | return -ENXIO; | ||
287 | } | ||
288 | |||
289 | ret = omap_hwmod_enable(oh); | ||
290 | if (ret) { | ||
291 | pr_warn("%s: failed to enable counter_32k module (%d)\n", | ||
292 | __func__, ret); | ||
293 | return ret; | ||
294 | } | ||
295 | |||
296 | ret = omap_init_clocksource_32k(vbase); | ||
297 | if (ret) { | ||
298 | pr_warn("%s: failed to initialize counter_32k as a clocksource (%d)\n", | ||
299 | __func__, ret); | ||
300 | omap_hwmod_idle(oh); | ||
301 | } | ||
302 | |||
303 | return ret; | ||
304 | } | ||
305 | |||
306 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, | ||
282 | const char *fck_source) | 307 | const char *fck_source) |
283 | { | 308 | { |
284 | int res; | 309 | int res; |
@@ -286,9 +311,6 @@ static void __init omap2_gp_clocksource_init(int gptimer_id, | |||
286 | res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source); | 311 | res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source); |
287 | BUG_ON(res); | 312 | BUG_ON(res); |
288 | 313 | ||
289 | pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", | ||
290 | gptimer_id, clksrc.rate); | ||
291 | |||
292 | __omap_dm_timer_load_start(&clksrc, | 314 | __omap_dm_timer_load_start(&clksrc, |
293 | OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1); | 315 | OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1); |
294 | setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); | 316 | setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); |
@@ -296,15 +318,36 @@ static void __init omap2_gp_clocksource_init(int gptimer_id, | |||
296 | if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) | 318 | if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) |
297 | pr_err("Could not register clocksource %s\n", | 319 | pr_err("Could not register clocksource %s\n", |
298 | clocksource_gpt.name); | 320 | clocksource_gpt.name); |
321 | else | ||
322 | pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", | ||
323 | gptimer_id, clksrc.rate); | ||
324 | } | ||
325 | |||
326 | static void __init omap2_clocksource_init(int gptimer_id, | ||
327 | const char *fck_source) | ||
328 | { | ||
329 | /* | ||
330 | * First give preference to kernel parameter configuration | ||
331 | * by user (clocksource="gp_timer"). | ||
332 | * | ||
333 | * In case of missing kernel parameter for clocksource, | ||
334 | * first check for availability for 32k-sync timer, in case | ||
335 | * of failure in finding 32k_counter module or registering | ||
336 | * it as clocksource, execution will fallback to gp-timer. | ||
337 | */ | ||
338 | if (use_gptimer_clksrc == true) | ||
339 | omap2_gptimer_clocksource_init(gptimer_id, fck_source); | ||
340 | else if (omap2_sync32k_clocksource_init()) | ||
341 | /* Fall back to gp-timer code */ | ||
342 | omap2_gptimer_clocksource_init(gptimer_id, fck_source); | ||
299 | } | 343 | } |
300 | #endif | ||
301 | 344 | ||
302 | #define OMAP_SYS_TIMER_INIT(name, clkev_nr, clkev_src, \ | 345 | #define OMAP_SYS_TIMER_INIT(name, clkev_nr, clkev_src, \ |
303 | clksrc_nr, clksrc_src) \ | 346 | clksrc_nr, clksrc_src) \ |
304 | static void __init omap##name##_timer_init(void) \ | 347 | static void __init omap##name##_timer_init(void) \ |
305 | { \ | 348 | { \ |
306 | omap2_gp_clockevent_init((clkev_nr), clkev_src); \ | 349 | omap2_gp_clockevent_init((clkev_nr), clkev_src); \ |
307 | omap2_gp_clocksource_init((clksrc_nr), clksrc_src); \ | 350 | omap2_clocksource_init((clksrc_nr), clksrc_src); \ |
308 | } | 351 | } |
309 | 352 | ||
310 | #define OMAP_SYS_TIMER(name) \ | 353 | #define OMAP_SYS_TIMER(name) \ |
@@ -335,7 +378,7 @@ static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, | |||
335 | static void __init omap4_timer_init(void) | 378 | static void __init omap4_timer_init(void) |
336 | { | 379 | { |
337 | omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE); | 380 | omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE); |
338 | omap2_gp_clocksource_init(2, OMAP4_MPU_SOURCE); | 381 | omap2_clocksource_init(2, OMAP4_MPU_SOURCE); |
339 | #ifdef CONFIG_LOCAL_TIMERS | 382 | #ifdef CONFIG_LOCAL_TIMERS |
340 | /* Local timers are not supprted on OMAP4430 ES1.0 */ | 383 | /* Local timers are not supprted on OMAP4430 ES1.0 */ |
341 | if (omap_rev() != OMAP4430_REV_ES1_0) { | 384 | if (omap_rev() != OMAP4430_REV_ES1_0) { |
@@ -503,3 +546,28 @@ static int __init omap2_dm_timer_init(void) | |||
503 | return 0; | 546 | return 0; |
504 | } | 547 | } |
505 | arch_initcall(omap2_dm_timer_init); | 548 | arch_initcall(omap2_dm_timer_init); |
549 | |||
550 | /** | ||
551 | * omap2_override_clocksource - clocksource override with user configuration | ||
552 | * | ||
553 | * Allows user to override default clocksource, using kernel parameter | ||
554 | * clocksource="gp_timer" (For all OMAP2PLUS architectures) | ||
555 | * | ||
556 | * Note that, here we are using same standard kernel parameter "clocksource=", | ||
557 | * and not introducing any OMAP specific interface. | ||
558 | */ | ||
559 | static int __init omap2_override_clocksource(char *str) | ||
560 | { | ||
561 | if (!str) | ||
562 | return 0; | ||
563 | /* | ||
564 | * For OMAP architecture, we only have two options | ||
565 | * - sync_32k (default) | ||
566 | * - gp_timer (sys_clk based) | ||
567 | */ | ||
568 | if (!strcmp(str, "gp_timer")) | ||
569 | use_gptimer_clksrc = true; | ||
570 | |||
571 | return 0; | ||
572 | } | ||
573 | early_param("clocksource", omap2_override_clocksource); | ||
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index 8d5ed775dd56..b19d1b43c12e 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
@@ -90,7 +90,7 @@ void __init usb_musb_init(struct omap_musb_board_data *musb_board_data) | |||
90 | musb_plat.mode = board_data->mode; | 90 | musb_plat.mode = board_data->mode; |
91 | musb_plat.extvbus = board_data->extvbus; | 91 | musb_plat.extvbus = board_data->extvbus; |
92 | 92 | ||
93 | if (cpu_is_omap3517() || cpu_is_omap3505()) { | 93 | if (soc_is_am35xx()) { |
94 | oh_name = "am35x_otg_hs"; | 94 | oh_name = "am35x_otg_hs"; |
95 | name = "musb-am35x"; | 95 | name = "musb-am35x"; |
96 | } else if (cpu_is_ti81xx()) { | 96 | } else if (cpu_is_ti81xx()) { |
diff --git a/arch/arm/mach-omap2/voltagedomains3xxx_data.c b/arch/arm/mach-omap2/voltagedomains3xxx_data.c index 57db2038b23c..d0103c80d040 100644 --- a/arch/arm/mach-omap2/voltagedomains3xxx_data.c +++ b/arch/arm/mach-omap2/voltagedomains3xxx_data.c | |||
@@ -118,7 +118,7 @@ void __init omap3xxx_voltagedomains_init(void) | |||
118 | } | 118 | } |
119 | #endif | 119 | #endif |
120 | 120 | ||
121 | if (cpu_is_omap3517() || cpu_is_omap3505()) | 121 | if (soc_is_am35xx()) |
122 | voltdms = voltagedomains_am35xx; | 122 | voltdms = voltagedomains_am35xx; |
123 | else | 123 | else |
124 | voltdms = voltagedomains_omap3; | 124 | voltdms = voltagedomains_omap3; |
diff --git a/arch/arm/mach-s3c24xx/Makefile b/arch/arm/mach-s3c24xx/Makefile index 3518fe812d5f..270a0b6f4f22 100644 --- a/arch/arm/mach-s3c24xx/Makefile +++ b/arch/arm/mach-s3c24xx/Makefile | |||
@@ -14,6 +14,8 @@ obj- := | |||
14 | 14 | ||
15 | # core | 15 | # core |
16 | 16 | ||
17 | obj-y += common.o | ||
18 | |||
17 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o | 19 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o |
18 | obj-$(CONFIG_S3C2410_DMA) += dma-s3c2410.o | 20 | obj-$(CONFIG_S3C2410_DMA) += dma-s3c2410.o |
19 | obj-$(CONFIG_S3C2410_PM) += pm-s3c2410.o sleep-s3c2410.o | 21 | obj-$(CONFIG_S3C2410_PM) += pm-s3c2410.o sleep-s3c2410.o |
@@ -33,6 +35,10 @@ obj-$(CONFIG_S3C2440_DMA) += dma-s3c2440.o | |||
33 | 35 | ||
34 | obj-$(CONFIG_CPU_S3C2443) += s3c2443.o irq-s3c2443.o clock-s3c2443.o | 36 | obj-$(CONFIG_CPU_S3C2443) += s3c2443.o irq-s3c2443.o clock-s3c2443.o |
35 | 37 | ||
38 | # PM | ||
39 | |||
40 | obj-$(CONFIG_PM) += pm.o irq-pm.o sleep.o | ||
41 | |||
36 | # common code | 42 | # common code |
37 | 43 | ||
38 | obj-$(CONFIG_S3C2443_COMMON) += common-s3c2443.o | 44 | obj-$(CONFIG_S3C2443_COMMON) += common-s3c2443.o |
diff --git a/arch/arm/plat-s3c24xx/cpu.c b/arch/arm/mach-s3c24xx/common.c index 290942d9adda..56cdd34cce41 100644 --- a/arch/arm/plat-s3c24xx/cpu.c +++ b/arch/arm/mach-s3c24xx/common.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
7 | * S3C24XX CPU Support | 7 | * Common code for S3C24XX machines |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License as published by | 10 | * it under the terms of the GNU General Public License as published by |
@@ -41,6 +41,7 @@ | |||
41 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
42 | #include <asm/mach/map.h> | 42 | #include <asm/mach/map.h> |
43 | 43 | ||
44 | #include <mach/regs-clock.h> | ||
44 | #include <mach/regs-gpio.h> | 45 | #include <mach/regs-gpio.h> |
45 | #include <plat/regs-serial.h> | 46 | #include <plat/regs-serial.h> |
46 | 47 | ||
@@ -52,6 +53,8 @@ | |||
52 | #include <plat/s3c2416.h> | 53 | #include <plat/s3c2416.h> |
53 | #include <plat/s3c244x.h> | 54 | #include <plat/s3c244x.h> |
54 | #include <plat/s3c2443.h> | 55 | #include <plat/s3c2443.h> |
56 | #include <plat/cpu-freq.h> | ||
57 | #include <plat/pll.h> | ||
55 | 58 | ||
56 | /* table of supported CPUs */ | 59 | /* table of supported CPUs */ |
57 | 60 | ||
@@ -234,3 +237,67 @@ void __init s3c24xx_init_io(struct map_desc *mach_desc, int size) | |||
234 | 237 | ||
235 | s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids)); | 238 | s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids)); |
236 | } | 239 | } |
240 | |||
241 | /* Serial port registrations */ | ||
242 | |||
243 | static struct resource s3c2410_uart0_resource[] = { | ||
244 | [0] = DEFINE_RES_MEM(S3C2410_PA_UART0, SZ_16K), | ||
245 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX0, \ | ||
246 | IRQ_S3CUART_ERR0 - IRQ_S3CUART_RX0 + 1, \ | ||
247 | NULL, IORESOURCE_IRQ) | ||
248 | }; | ||
249 | |||
250 | static struct resource s3c2410_uart1_resource[] = { | ||
251 | [0] = DEFINE_RES_MEM(S3C2410_PA_UART1, SZ_16K), | ||
252 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX1, \ | ||
253 | IRQ_S3CUART_ERR1 - IRQ_S3CUART_RX1 + 1, \ | ||
254 | NULL, IORESOURCE_IRQ) | ||
255 | }; | ||
256 | |||
257 | static struct resource s3c2410_uart2_resource[] = { | ||
258 | [0] = DEFINE_RES_MEM(S3C2410_PA_UART2, SZ_16K), | ||
259 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX2, \ | ||
260 | IRQ_S3CUART_ERR2 - IRQ_S3CUART_RX2 + 1, \ | ||
261 | NULL, IORESOURCE_IRQ) | ||
262 | }; | ||
263 | |||
264 | static struct resource s3c2410_uart3_resource[] = { | ||
265 | [0] = DEFINE_RES_MEM(S3C2443_PA_UART3, SZ_16K), | ||
266 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX3, \ | ||
267 | IRQ_S3CUART_ERR3 - IRQ_S3CUART_RX3 + 1, \ | ||
268 | NULL, IORESOURCE_IRQ) | ||
269 | }; | ||
270 | |||
271 | struct s3c24xx_uart_resources s3c2410_uart_resources[] __initdata = { | ||
272 | [0] = { | ||
273 | .resources = s3c2410_uart0_resource, | ||
274 | .nr_resources = ARRAY_SIZE(s3c2410_uart0_resource), | ||
275 | }, | ||
276 | [1] = { | ||
277 | .resources = s3c2410_uart1_resource, | ||
278 | .nr_resources = ARRAY_SIZE(s3c2410_uart1_resource), | ||
279 | }, | ||
280 | [2] = { | ||
281 | .resources = s3c2410_uart2_resource, | ||
282 | .nr_resources = ARRAY_SIZE(s3c2410_uart2_resource), | ||
283 | }, | ||
284 | [3] = { | ||
285 | .resources = s3c2410_uart3_resource, | ||
286 | .nr_resources = ARRAY_SIZE(s3c2410_uart3_resource), | ||
287 | }, | ||
288 | }; | ||
289 | |||
290 | /* initialise all the clocks */ | ||
291 | |||
292 | void __init_or_cpufreq s3c24xx_setup_clocks(unsigned long fclk, | ||
293 | unsigned long hclk, | ||
294 | unsigned long pclk) | ||
295 | { | ||
296 | clk_upll.rate = s3c24xx_get_pll(__raw_readl(S3C2410_UPLLCON), | ||
297 | clk_xtal.rate); | ||
298 | |||
299 | clk_mpll.rate = fclk; | ||
300 | clk_h.rate = hclk; | ||
301 | clk_p.rate = pclk; | ||
302 | clk_f.rate = fclk; | ||
303 | } | ||
diff --git a/arch/arm/plat-s3c24xx/irq-pm.c b/arch/arm/mach-s3c24xx/irq-pm.c index 0efb2e2848c8..0efb2e2848c8 100644 --- a/arch/arm/plat-s3c24xx/irq-pm.c +++ b/arch/arm/mach-s3c24xx/irq-pm.c | |||
diff --git a/arch/arm/plat-s3c24xx/pm.c b/arch/arm/mach-s3c24xx/pm.c index 60627e63a254..60627e63a254 100644 --- a/arch/arm/plat-s3c24xx/pm.c +++ b/arch/arm/mach-s3c24xx/pm.c | |||
diff --git a/arch/arm/plat-s3c24xx/sleep.S b/arch/arm/mach-s3c24xx/sleep.S index c56612569b40..c56612569b40 100644 --- a/arch/arm/plat-s3c24xx/sleep.S +++ b/arch/arm/mach-s3c24xx/sleep.S | |||
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c index 44ae077dbc28..2132c4f389e1 100644 --- a/arch/arm/plat-omap/counter_32k.c +++ b/arch/arm/plat-omap/counter_32k.c | |||
@@ -28,19 +28,20 @@ | |||
28 | 28 | ||
29 | #include <plat/clock.h> | 29 | #include <plat/clock.h> |
30 | 30 | ||
31 | /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ | ||
32 | #define OMAP2_32KSYNCNT_CR_OFF 0x10 | ||
33 | |||
31 | /* | 34 | /* |
32 | * 32KHz clocksource ... always available, on pretty most chips except | 35 | * 32KHz clocksource ... always available, on pretty most chips except |
33 | * OMAP 730 and 1510. Other timers could be used as clocksources, with | 36 | * OMAP 730 and 1510. Other timers could be used as clocksources, with |
34 | * higher resolution in free-running counter modes (e.g. 12 MHz xtal), | 37 | * higher resolution in free-running counter modes (e.g. 12 MHz xtal), |
35 | * but systems won't necessarily want to spend resources that way. | 38 | * but systems won't necessarily want to spend resources that way. |
36 | */ | 39 | */ |
37 | static void __iomem *timer_32k_base; | 40 | static void __iomem *sync32k_cnt_reg; |
38 | |||
39 | #define OMAP16XX_TIMER_32K_SYNCHRONIZED 0xfffbc410 | ||
40 | 41 | ||
41 | static u32 notrace omap_32k_read_sched_clock(void) | 42 | static u32 notrace omap_32k_read_sched_clock(void) |
42 | { | 43 | { |
43 | return timer_32k_base ? __raw_readl(timer_32k_base) : 0; | 44 | return sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; |
44 | } | 45 | } |
45 | 46 | ||
46 | /** | 47 | /** |
@@ -60,7 +61,7 @@ static void omap_read_persistent_clock(struct timespec *ts) | |||
60 | struct timespec *tsp = &persistent_ts; | 61 | struct timespec *tsp = &persistent_ts; |
61 | 62 | ||
62 | last_cycles = cycles; | 63 | last_cycles = cycles; |
63 | cycles = timer_32k_base ? __raw_readl(timer_32k_base) : 0; | 64 | cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; |
64 | delta = cycles - last_cycles; | 65 | delta = cycles - last_cycles; |
65 | 66 | ||
66 | nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); | 67 | nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); |
@@ -69,55 +70,41 @@ static void omap_read_persistent_clock(struct timespec *ts) | |||
69 | *ts = *tsp; | 70 | *ts = *tsp; |
70 | } | 71 | } |
71 | 72 | ||
72 | int __init omap_init_clocksource_32k(void) | 73 | /** |
74 | * omap_init_clocksource_32k - setup and register counter 32k as a | ||
75 | * kernel clocksource | ||
76 | * @pbase: base addr of counter_32k module | ||
77 | * @size: size of counter_32k to map | ||
78 | * | ||
79 | * Returns 0 upon success or negative error code upon failure. | ||
80 | * | ||
81 | */ | ||
82 | int __init omap_init_clocksource_32k(void __iomem *vbase) | ||
73 | { | 83 | { |
74 | static char err[] __initdata = KERN_ERR | 84 | int ret; |
75 | "%s: can't register clocksource!\n"; | 85 | |
76 | 86 | /* | |
77 | if (cpu_is_omap16xx() || cpu_class_is_omap2()) { | 87 | * 32k sync Counter register offset is at 0x10 |
78 | u32 pbase; | 88 | */ |
79 | unsigned long size = SZ_4K; | 89 | sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF; |
80 | void __iomem *base; | 90 | |
81 | struct clk *sync_32k_ick; | 91 | /* |
82 | 92 | * 120000 rough estimate from the calculations in | |
83 | if (cpu_is_omap16xx()) { | 93 | * __clocksource_updatefreq_scale. |
84 | pbase = OMAP16XX_TIMER_32K_SYNCHRONIZED; | 94 | */ |
85 | size = SZ_1K; | 95 | clocks_calc_mult_shift(&persistent_mult, &persistent_shift, |
86 | } else if (cpu_is_omap2420()) | 96 | 32768, NSEC_PER_SEC, 120000); |
87 | pbase = OMAP2420_32KSYNCT_BASE + 0x10; | 97 | |
88 | else if (cpu_is_omap2430()) | 98 | ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768, |
89 | pbase = OMAP2430_32KSYNCT_BASE + 0x10; | 99 | 250, 32, clocksource_mmio_readl_up); |
90 | else if (cpu_is_omap34xx()) | 100 | if (ret) { |
91 | pbase = OMAP3430_32KSYNCT_BASE + 0x10; | 101 | pr_err("32k_counter: can't register clocksource\n"); |
92 | else if (cpu_is_omap44xx()) | 102 | return ret; |
93 | pbase = OMAP4430_32KSYNCT_BASE + 0x10; | ||
94 | else | ||
95 | return -ENODEV; | ||
96 | |||
97 | /* For this to work we must have a static mapping in io.c for this area */ | ||
98 | base = ioremap(pbase, size); | ||
99 | if (!base) | ||
100 | return -ENODEV; | ||
101 | |||
102 | sync_32k_ick = clk_get(NULL, "omap_32ksync_ick"); | ||
103 | if (!IS_ERR(sync_32k_ick)) | ||
104 | clk_enable(sync_32k_ick); | ||
105 | |||
106 | timer_32k_base = base; | ||
107 | |||
108 | /* | ||
109 | * 120000 rough estimate from the calculations in | ||
110 | * __clocksource_updatefreq_scale. | ||
111 | */ | ||
112 | clocks_calc_mult_shift(&persistent_mult, &persistent_shift, | ||
113 | 32768, NSEC_PER_SEC, 120000); | ||
114 | |||
115 | if (clocksource_mmio_init(base, "32k_counter", 32768, 250, 32, | ||
116 | clocksource_mmio_readl_up)) | ||
117 | printk(err, "32k_counter"); | ||
118 | |||
119 | setup_sched_clock(omap_32k_read_sched_clock, 32, 32768); | ||
120 | register_persistent_clock(NULL, omap_read_persistent_clock); | ||
121 | } | 103 | } |
104 | |||
105 | setup_sched_clock(omap_32k_read_sched_clock, 32, 32768); | ||
106 | register_persistent_clock(NULL, omap_read_persistent_clock); | ||
107 | pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n"); | ||
108 | |||
122 | return 0; | 109 | return 0; |
123 | } | 110 | } |
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index 09b07d252892..1cba9273d2cb 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -28,54 +28,6 @@ | |||
28 | #include <plat/menelaus.h> | 28 | #include <plat/menelaus.h> |
29 | #include <plat/omap44xx.h> | 29 | #include <plat/omap44xx.h> |
30 | 30 | ||
31 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \ | ||
32 | defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE) | ||
33 | |||
34 | #define OMAP_MMC_NR_RES 2 | ||
35 | |||
36 | /* | ||
37 | * Register MMC devices. Called from mach-omap1 and mach-omap2 device init. | ||
38 | */ | ||
39 | int __init omap_mmc_add(const char *name, int id, unsigned long base, | ||
40 | unsigned long size, unsigned int irq, | ||
41 | struct omap_mmc_platform_data *data) | ||
42 | { | ||
43 | struct platform_device *pdev; | ||
44 | struct resource res[OMAP_MMC_NR_RES]; | ||
45 | int ret; | ||
46 | |||
47 | pdev = platform_device_alloc(name, id); | ||
48 | if (!pdev) | ||
49 | return -ENOMEM; | ||
50 | |||
51 | memset(res, 0, OMAP_MMC_NR_RES * sizeof(struct resource)); | ||
52 | res[0].start = base; | ||
53 | res[0].end = base + size - 1; | ||
54 | res[0].flags = IORESOURCE_MEM; | ||
55 | res[1].start = res[1].end = irq; | ||
56 | res[1].flags = IORESOURCE_IRQ; | ||
57 | |||
58 | ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); | ||
59 | if (ret == 0) | ||
60 | ret = platform_device_add_data(pdev, data, sizeof(*data)); | ||
61 | if (ret) | ||
62 | goto fail; | ||
63 | |||
64 | ret = platform_device_add(pdev); | ||
65 | if (ret) | ||
66 | goto fail; | ||
67 | |||
68 | /* return device handle to board setup code */ | ||
69 | data->dev = &pdev->dev; | ||
70 | return 0; | ||
71 | |||
72 | fail: | ||
73 | platform_device_put(pdev); | ||
74 | return ret; | ||
75 | } | ||
76 | |||
77 | #endif | ||
78 | |||
79 | /*-------------------------------------------------------------------------*/ | 31 | /*-------------------------------------------------------------------------*/ |
80 | 32 | ||
81 | #if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE) | 33 | #if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE) |
@@ -109,79 +61,6 @@ static void omap_init_rng(void) | |||
109 | static inline void omap_init_rng(void) {} | 61 | static inline void omap_init_rng(void) {} |
110 | #endif | 62 | #endif |
111 | 63 | ||
112 | /*-------------------------------------------------------------------------*/ | ||
113 | |||
114 | /* Numbering for the SPI-capable controllers when used for SPI: | ||
115 | * spi = 1 | ||
116 | * uwire = 2 | ||
117 | * mmc1..2 = 3..4 | ||
118 | * mcbsp1..3 = 5..7 | ||
119 | */ | ||
120 | |||
121 | #if defined(CONFIG_SPI_OMAP_UWIRE) || defined(CONFIG_SPI_OMAP_UWIRE_MODULE) | ||
122 | |||
123 | #define OMAP_UWIRE_BASE 0xfffb3000 | ||
124 | |||
125 | static struct resource uwire_resources[] = { | ||
126 | { | ||
127 | .start = OMAP_UWIRE_BASE, | ||
128 | .end = OMAP_UWIRE_BASE + 0x20, | ||
129 | .flags = IORESOURCE_MEM, | ||
130 | }, | ||
131 | }; | ||
132 | |||
133 | static struct platform_device omap_uwire_device = { | ||
134 | .name = "omap_uwire", | ||
135 | .id = -1, | ||
136 | .num_resources = ARRAY_SIZE(uwire_resources), | ||
137 | .resource = uwire_resources, | ||
138 | }; | ||
139 | |||
140 | static void omap_init_uwire(void) | ||
141 | { | ||
142 | /* FIXME define and use a boot tag; not all boards will be hooking | ||
143 | * up devices to the microwire controller, and multi-board configs | ||
144 | * mean that CONFIG_SPI_OMAP_UWIRE may be configured anyway... | ||
145 | */ | ||
146 | |||
147 | /* board-specific code must configure chipselects (only a few | ||
148 | * are normally used) and SCLK/SDI/SDO (each has two choices). | ||
149 | */ | ||
150 | (void) platform_device_register(&omap_uwire_device); | ||
151 | } | ||
152 | #else | ||
153 | static inline void omap_init_uwire(void) {} | ||
154 | #endif | ||
155 | |||
156 | #if defined(CONFIG_TIDSPBRIDGE) || defined(CONFIG_TIDSPBRIDGE_MODULE) | ||
157 | |||
158 | static phys_addr_t omap_dsp_phys_mempool_base; | ||
159 | |||
160 | void __init omap_dsp_reserve_sdram_memblock(void) | ||
161 | { | ||
162 | phys_addr_t size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE; | ||
163 | phys_addr_t paddr; | ||
164 | |||
165 | if (!size) | ||
166 | return; | ||
167 | |||
168 | paddr = arm_memblock_steal(size, SZ_1M); | ||
169 | if (!paddr) { | ||
170 | pr_err("%s: failed to reserve %llx bytes\n", | ||
171 | __func__, (unsigned long long)size); | ||
172 | return; | ||
173 | } | ||
174 | |||
175 | omap_dsp_phys_mempool_base = paddr; | ||
176 | } | ||
177 | |||
178 | phys_addr_t omap_dsp_get_mempool_base(void) | ||
179 | { | ||
180 | return omap_dsp_phys_mempool_base; | ||
181 | } | ||
182 | EXPORT_SYMBOL(omap_dsp_get_mempool_base); | ||
183 | #endif | ||
184 | |||
185 | /* | 64 | /* |
186 | * This gets called after board-specific INIT_MACHINE, and initializes most | 65 | * This gets called after board-specific INIT_MACHINE, and initializes most |
187 | * on-chip peripherals accessible on this board (except for few like USB): | 66 | * on-chip peripherals accessible on this board (except for few like USB): |
@@ -208,7 +87,6 @@ static int __init omap_init_devices(void) | |||
208 | * in alphabetical order so they're easier to sort through. | 87 | * in alphabetical order so they're easier to sort through. |
209 | */ | 88 | */ |
210 | omap_init_rng(); | 89 | omap_init_rng(); |
211 | omap_init_uwire(); | ||
212 | return 0; | 90 | return 0; |
213 | } | 91 | } |
214 | arch_initcall(omap_init_devices); | 92 | arch_initcall(omap_init_devices); |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 987e6101267d..cb16ade437cb 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -852,7 +852,7 @@ omap_dma_set_prio_lch(int lch, unsigned char read_prio, | |||
852 | } | 852 | } |
853 | l = p->dma_read(CCR, lch); | 853 | l = p->dma_read(CCR, lch); |
854 | l &= ~((1 << 6) | (1 << 26)); | 854 | l &= ~((1 << 6) | (1 << 26)); |
855 | if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) | 855 | if (cpu_class_is_omap2() && !cpu_is_omap242x()) |
856 | l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); | 856 | l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); |
857 | else | 857 | else |
858 | l |= ((read_prio & 0x1) << 6); | 858 | l |= ((read_prio & 0x1) << 6); |
@@ -2080,7 +2080,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2080 | } | 2080 | } |
2081 | } | 2081 | } |
2082 | 2082 | ||
2083 | if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) | 2083 | if (cpu_class_is_omap2() && !cpu_is_omap242x()) |
2084 | omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, | 2084 | omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, |
2085 | DMA_DEFAULT_FIFO_DEPTH, 0); | 2085 | DMA_DEFAULT_FIFO_DEPTH, 0); |
2086 | 2086 | ||
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index c4ed35e89fbd..3b0cfeb33d05 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -82,8 +82,6 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg, | |||
82 | 82 | ||
83 | static void omap_timer_restore_context(struct omap_dm_timer *timer) | 83 | static void omap_timer_restore_context(struct omap_dm_timer *timer) |
84 | { | 84 | { |
85 | __raw_writel(timer->context.tiocp_cfg, | ||
86 | timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); | ||
87 | if (timer->revision == 1) | 85 | if (timer->revision == 1) |
88 | __raw_writel(timer->context.tistat, timer->sys_stat); | 86 | __raw_writel(timer->context.tistat, timer->sys_stat); |
89 | 87 | ||
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h index a557b8484e6c..d1cb6f527b7e 100644 --- a/arch/arm/plat-omap/include/plat/common.h +++ b/arch/arm/plat-omap/include/plat/common.h | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <plat/i2c.h> | 30 | #include <plat/i2c.h> |
31 | #include <plat/omap_hwmod.h> | 31 | #include <plat/omap_hwmod.h> |
32 | 32 | ||
33 | extern int __init omap_init_clocksource_32k(void); | 33 | extern int __init omap_init_clocksource_32k(void __iomem *vbase); |
34 | 34 | ||
35 | extern void __init omap_check_revision(void); | 35 | extern void __init omap_check_revision(void); |
36 | 36 | ||
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h index 4bdf14ec6747..297245dba66e 100644 --- a/arch/arm/plat-omap/include/plat/cpu.h +++ b/arch/arm/plat-omap/include/plat/cpu.h | |||
@@ -121,6 +121,7 @@ IS_OMAP_CLASS(16xx, 0x16) | |||
121 | IS_OMAP_CLASS(24xx, 0x24) | 121 | IS_OMAP_CLASS(24xx, 0x24) |
122 | IS_OMAP_CLASS(34xx, 0x34) | 122 | IS_OMAP_CLASS(34xx, 0x34) |
123 | IS_OMAP_CLASS(44xx, 0x44) | 123 | IS_OMAP_CLASS(44xx, 0x44) |
124 | IS_AM_CLASS(35xx, 0x35) | ||
124 | IS_AM_CLASS(33xx, 0x33) | 125 | IS_AM_CLASS(33xx, 0x33) |
125 | 126 | ||
126 | IS_TI_CLASS(81xx, 0x81) | 127 | IS_TI_CLASS(81xx, 0x81) |
@@ -148,6 +149,7 @@ IS_AM_SUBCLASS(335x, 0x335) | |||
148 | #define cpu_is_ti81xx() 0 | 149 | #define cpu_is_ti81xx() 0 |
149 | #define cpu_is_ti816x() 0 | 150 | #define cpu_is_ti816x() 0 |
150 | #define cpu_is_ti814x() 0 | 151 | #define cpu_is_ti814x() 0 |
152 | #define soc_is_am35xx() 0 | ||
151 | #define cpu_is_am33xx() 0 | 153 | #define cpu_is_am33xx() 0 |
152 | #define cpu_is_am335x() 0 | 154 | #define cpu_is_am335x() 0 |
153 | #define cpu_is_omap44xx() 0 | 155 | #define cpu_is_omap44xx() 0 |
@@ -357,6 +359,7 @@ IS_OMAP_TYPE(3517, 0x3517) | |||
357 | # undef cpu_is_ti81xx | 359 | # undef cpu_is_ti81xx |
358 | # undef cpu_is_ti816x | 360 | # undef cpu_is_ti816x |
359 | # undef cpu_is_ti814x | 361 | # undef cpu_is_ti814x |
362 | # undef soc_is_am35xx | ||
360 | # undef cpu_is_am33xx | 363 | # undef cpu_is_am33xx |
361 | # undef cpu_is_am335x | 364 | # undef cpu_is_am335x |
362 | # define cpu_is_omap3430() is_omap3430() | 365 | # define cpu_is_omap3430() is_omap3430() |
@@ -378,6 +381,7 @@ IS_OMAP_TYPE(3517, 0x3517) | |||
378 | # define cpu_is_ti81xx() is_ti81xx() | 381 | # define cpu_is_ti81xx() is_ti81xx() |
379 | # define cpu_is_ti816x() is_ti816x() | 382 | # define cpu_is_ti816x() is_ti816x() |
380 | # define cpu_is_ti814x() is_ti814x() | 383 | # define cpu_is_ti814x() is_ti814x() |
384 | # define soc_is_am35xx() is_am35xx() | ||
381 | # define cpu_is_am33xx() is_am33xx() | 385 | # define cpu_is_am33xx() is_am33xx() |
382 | # define cpu_is_am335x() is_am335x() | 386 | # define cpu_is_am335x() is_am335x() |
383 | #endif | 387 | #endif |
@@ -433,6 +437,10 @@ IS_OMAP_TYPE(3517, 0x3517) | |||
433 | #define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) | 437 | #define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) |
434 | #define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) | 438 | #define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) |
435 | 439 | ||
440 | #define AM35XX_CLASS 0x35170034 | ||
441 | #define AM35XX_REV_ES1_0 AM35XX_CLASS | ||
442 | #define AM35XX_REV_ES1_1 (AM35XX_CLASS | (0x1 << 8)) | ||
443 | |||
436 | #define AM335X_CLASS 0x33500034 | 444 | #define AM335X_CLASS 0x33500034 |
437 | #define AM335X_REV_ES1_0 AM335X_CLASS | 445 | #define AM335X_REV_ES1_0 AM335X_CLASS |
438 | 446 | ||
diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h index 42afb4c45517..c5811d4409b0 100644 --- a/arch/arm/plat-omap/include/plat/dma.h +++ b/arch/arm/plat-omap/include/plat/dma.h | |||
@@ -312,6 +312,11 @@ | |||
312 | #define CLEAR_CSR_ON_READ BIT(0xC) | 312 | #define CLEAR_CSR_ON_READ BIT(0xC) |
313 | #define IS_WORD_16 BIT(0xD) | 313 | #define IS_WORD_16 BIT(0xD) |
314 | 314 | ||
315 | /* Defines for DMA Capabilities */ | ||
316 | #define DMA_HAS_TRANSPARENT_CAPS (0x1 << 18) | ||
317 | #define DMA_HAS_CONSTANT_FILL_CAPS (0x1 << 19) | ||
318 | #define DMA_HAS_DESCRIPTOR_CAPS (0x3 << 20) | ||
319 | |||
315 | enum omap_reg_offsets { | 320 | enum omap_reg_offsets { |
316 | 321 | ||
317 | GCR, GSCR, GRST1, HW_ID, | 322 | GCR, GSCR, GRST1, HW_ID, |
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h index bdf871a84d62..5da73562e486 100644 --- a/arch/arm/plat-omap/include/plat/dmtimer.h +++ b/arch/arm/plat-omap/include/plat/dmtimer.h | |||
@@ -75,7 +75,6 @@ struct clk; | |||
75 | 75 | ||
76 | struct timer_regs { | 76 | struct timer_regs { |
77 | u32 tidr; | 77 | u32 tidr; |
78 | u32 tiocp_cfg; | ||
79 | u32 tistat; | 78 | u32 tistat; |
80 | u32 tisr; | 79 | u32 tisr; |
81 | u32 tier; | 80 | u32 tier; |
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index 3e7ae0f0215f..a7754a886d42 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h | |||
@@ -177,9 +177,6 @@ extern void omap_mmc_notify_cover_event(struct device *dev, int slot, | |||
177 | void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | 177 | void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, |
178 | int nr_controllers); | 178 | int nr_controllers); |
179 | void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data); | 179 | void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data); |
180 | int omap_mmc_add(const char *name, int id, unsigned long base, | ||
181 | unsigned long size, unsigned int irq, | ||
182 | struct omap_mmc_platform_data *data); | ||
183 | #else | 180 | #else |
184 | static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | 181 | static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, |
185 | int nr_controllers) | 182 | int nr_controllers) |
@@ -188,12 +185,6 @@ static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
188 | static inline void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) | 185 | static inline void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) |
189 | { | 186 | { |
190 | } | 187 | } |
191 | static inline int omap_mmc_add(const char *name, int id, unsigned long base, | ||
192 | unsigned long size, unsigned int irq, | ||
193 | struct omap_mmc_platform_data *data) | ||
194 | { | ||
195 | return 0; | ||
196 | } | ||
197 | 188 | ||
198 | #endif | 189 | #endif |
199 | 190 | ||
diff --git a/arch/arm/plat-s3c24xx/Makefile b/arch/arm/plat-s3c24xx/Makefile index 2467b800cc76..9f60549c8da1 100644 --- a/arch/arm/plat-s3c24xx/Makefile +++ b/arch/arm/plat-s3c24xx/Makefile | |||
@@ -12,10 +12,7 @@ obj- := | |||
12 | 12 | ||
13 | # Core files | 13 | # Core files |
14 | 14 | ||
15 | obj-y += cpu.o | ||
16 | obj-y += irq.o | 15 | obj-y += irq.o |
17 | obj-y += dev-uart.o | ||
18 | obj-y += clock.o | ||
19 | obj-$(CONFIG_S3C24XX_DCLK) += clock-dclk.o | 16 | obj-$(CONFIG_S3C24XX_DCLK) += clock-dclk.o |
20 | 17 | ||
21 | obj-$(CONFIG_CPU_FREQ_S3C24XX) += cpu-freq.o | 18 | obj-$(CONFIG_CPU_FREQ_S3C24XX) += cpu-freq.o |
@@ -23,9 +20,6 @@ obj-$(CONFIG_CPU_FREQ_S3C24XX_DEBUGFS) += cpu-freq-debugfs.o | |||
23 | 20 | ||
24 | # Architecture dependent builds | 21 | # Architecture dependent builds |
25 | 22 | ||
26 | obj-$(CONFIG_PM) += pm.o | ||
27 | obj-$(CONFIG_PM) += irq-pm.o | ||
28 | obj-$(CONFIG_PM) += sleep.o | ||
29 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o | 23 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o |
30 | obj-$(CONFIG_S3C24XX_DMA) += dma.o | 24 | obj-$(CONFIG_S3C24XX_DMA) += dma.o |
31 | obj-$(CONFIG_S3C2410_IOTIMING) += s3c2410-iotiming.o | 25 | obj-$(CONFIG_S3C2410_IOTIMING) += s3c2410-iotiming.o |
diff --git a/arch/arm/plat-s3c24xx/clock.c b/arch/arm/plat-s3c24xx/clock.c deleted file mode 100644 index 931d26d1a54b..000000000000 --- a/arch/arm/plat-s3c24xx/clock.c +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | /* linux/arch/arm/plat-s3c24xx/clock.c | ||
2 | * | ||
3 | * Copyright (c) 2004-2005 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C24XX Core clock control support | ||
7 | * | ||
8 | * Based on, and code from linux/arch/arm/mach-versatile/clock.c | ||
9 | ** | ||
10 | ** Copyright (C) 2004 ARM Limited. | ||
11 | ** Written by Deep Blue Solutions Limited. | ||
12 | * | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, write to the Free Software | ||
26 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
27 | */ | ||
28 | |||
29 | #include <linux/init.h> | ||
30 | #include <linux/kernel.h> | ||
31 | #include <linux/clk.h> | ||
32 | #include <linux/io.h> | ||
33 | |||
34 | #include <mach/hardware.h> | ||
35 | #include <asm/irq.h> | ||
36 | |||
37 | #include <mach/regs-clock.h> | ||
38 | #include <mach/regs-gpio.h> | ||
39 | |||
40 | #include <plat/cpu-freq.h> | ||
41 | |||
42 | #include <plat/clock.h> | ||
43 | #include <plat/cpu.h> | ||
44 | #include <plat/pll.h> | ||
45 | |||
46 | /* initialise all the clocks */ | ||
47 | |||
48 | void __init_or_cpufreq s3c24xx_setup_clocks(unsigned long fclk, | ||
49 | unsigned long hclk, | ||
50 | unsigned long pclk) | ||
51 | { | ||
52 | clk_upll.rate = s3c24xx_get_pll(__raw_readl(S3C2410_UPLLCON), | ||
53 | clk_xtal.rate); | ||
54 | |||
55 | clk_mpll.rate = fclk; | ||
56 | clk_h.rate = hclk; | ||
57 | clk_p.rate = pclk; | ||
58 | clk_f.rate = fclk; | ||
59 | } | ||
diff --git a/arch/arm/plat-s3c24xx/dev-uart.c b/arch/arm/plat-s3c24xx/dev-uart.c deleted file mode 100644 index 9ab22e662fff..000000000000 --- a/arch/arm/plat-s3c24xx/dev-uart.c +++ /dev/null | |||
@@ -1,100 +0,0 @@ | |||
1 | /* linux/arch/arm/plat-s3c24xx/dev-uart.c | ||
2 | * | ||
3 | * Copyright (c) 2004 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * Base S3C24XX UART resource and platform device definitions | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/types.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/list.h> | ||
17 | #include <linux/serial_core.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | |||
20 | #include <asm/mach/arch.h> | ||
21 | #include <asm/mach/map.h> | ||
22 | #include <asm/mach/irq.h> | ||
23 | #include <mach/hardware.h> | ||
24 | #include <mach/map.h> | ||
25 | |||
26 | #include <plat/devs.h> | ||
27 | #include <plat/regs-serial.h> | ||
28 | |||
29 | /* Serial port registrations */ | ||
30 | |||
31 | static struct resource s3c2410_uart0_resource[] = { | ||
32 | [0] = { | ||
33 | .start = S3C2410_PA_UART0, | ||
34 | .end = S3C2410_PA_UART0 + 0x3fff, | ||
35 | .flags = IORESOURCE_MEM, | ||
36 | }, | ||
37 | [1] = { | ||
38 | .start = IRQ_S3CUART_RX0, | ||
39 | .end = IRQ_S3CUART_ERR0, | ||
40 | .flags = IORESOURCE_IRQ, | ||
41 | } | ||
42 | }; | ||
43 | |||
44 | static struct resource s3c2410_uart1_resource[] = { | ||
45 | [0] = { | ||
46 | .start = S3C2410_PA_UART1, | ||
47 | .end = S3C2410_PA_UART1 + 0x3fff, | ||
48 | .flags = IORESOURCE_MEM, | ||
49 | }, | ||
50 | [1] = { | ||
51 | .start = IRQ_S3CUART_RX1, | ||
52 | .end = IRQ_S3CUART_ERR1, | ||
53 | .flags = IORESOURCE_IRQ, | ||
54 | } | ||
55 | }; | ||
56 | |||
57 | static struct resource s3c2410_uart2_resource[] = { | ||
58 | [0] = { | ||
59 | .start = S3C2410_PA_UART2, | ||
60 | .end = S3C2410_PA_UART2 + 0x3fff, | ||
61 | .flags = IORESOURCE_MEM, | ||
62 | }, | ||
63 | [1] = { | ||
64 | .start = IRQ_S3CUART_RX2, | ||
65 | .end = IRQ_S3CUART_ERR2, | ||
66 | .flags = IORESOURCE_IRQ, | ||
67 | } | ||
68 | }; | ||
69 | |||
70 | static struct resource s3c2410_uart3_resource[] = { | ||
71 | [0] = { | ||
72 | .start = S3C2443_PA_UART3, | ||
73 | .end = S3C2443_PA_UART3 + 0x3fff, | ||
74 | .flags = IORESOURCE_MEM, | ||
75 | }, | ||
76 | [1] = { | ||
77 | .start = IRQ_S3CUART_RX3, | ||
78 | .end = IRQ_S3CUART_ERR3, | ||
79 | .flags = IORESOURCE_IRQ, | ||
80 | }, | ||
81 | }; | ||
82 | |||
83 | struct s3c24xx_uart_resources s3c2410_uart_resources[] __initdata = { | ||
84 | [0] = { | ||
85 | .resources = s3c2410_uart0_resource, | ||
86 | .nr_resources = ARRAY_SIZE(s3c2410_uart0_resource), | ||
87 | }, | ||
88 | [1] = { | ||
89 | .resources = s3c2410_uart1_resource, | ||
90 | .nr_resources = ARRAY_SIZE(s3c2410_uart1_resource), | ||
91 | }, | ||
92 | [2] = { | ||
93 | .resources = s3c2410_uart2_resource, | ||
94 | .nr_resources = ARRAY_SIZE(s3c2410_uart2_resource), | ||
95 | }, | ||
96 | [3] = { | ||
97 | .resources = s3c2410_uart3_resource, | ||
98 | .nr_resources = ARRAY_SIZE(s3c2410_uart3_resource), | ||
99 | }, | ||
100 | }; | ||
diff --git a/arch/arm/plat-s5p/Kconfig b/arch/arm/plat-s5p/Kconfig deleted file mode 100644 index 2c1193c59928..000000000000 --- a/arch/arm/plat-s5p/Kconfig +++ /dev/null | |||
@@ -1,132 +0,0 @@ | |||
1 | # arch/arm/plat-s5p/Kconfig | ||
2 | # | ||
3 | # Copyright (c) 2009 Samsung Electronics Co., Ltd. | ||
4 | # http://www.samsung.com/ | ||
5 | # | ||
6 | # Licensed under GPLv2 | ||
7 | |||
8 | config PLAT_S5P | ||
9 | bool | ||
10 | depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) | ||
11 | default y | ||
12 | select ARM_VIC if !ARCH_EXYNOS | ||
13 | select ARM_GIC if ARCH_EXYNOS | ||
14 | select GIC_NON_BANKED if ARCH_EXYNOS4 | ||
15 | select NO_IOPORT | ||
16 | select ARCH_REQUIRE_GPIOLIB | ||
17 | select S3C_GPIO_TRACK | ||
18 | select S5P_GPIO_DRVSTR | ||
19 | select SAMSUNG_GPIOLIB_4BIT | ||
20 | select PLAT_SAMSUNG | ||
21 | select SAMSUNG_CLKSRC | ||
22 | select SAMSUNG_IRQ_VIC_TIMER | ||
23 | help | ||
24 | Base platform code for Samsung's S5P series SoC. | ||
25 | |||
26 | config S5P_EXT_INT | ||
27 | bool | ||
28 | help | ||
29 | Use the external interrupts (other than GPIO interrupts.) | ||
30 | Note: Do not choose this for S5P6440 and S5P6450. | ||
31 | |||
32 | config S5P_GPIO_INT | ||
33 | bool | ||
34 | help | ||
35 | Common code for the GPIO interrupts (other than external interrupts.) | ||
36 | |||
37 | config S5P_HRT | ||
38 | bool | ||
39 | select SAMSUNG_DEV_PWM | ||
40 | help | ||
41 | Use the High Resolution timer support | ||
42 | |||
43 | config S5P_DEV_UART | ||
44 | def_bool y | ||
45 | depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210) | ||
46 | |||
47 | config S5P_PM | ||
48 | bool | ||
49 | help | ||
50 | Common code for power management support on S5P and newer SoCs | ||
51 | Note: Do not select this for S5P6440 and S5P6450. | ||
52 | |||
53 | config S5P_SLEEP | ||
54 | bool | ||
55 | help | ||
56 | Internal config node to apply common S5P sleep management code. | ||
57 | Can be selected by S5P and newer SoCs with similar sleep procedure. | ||
58 | |||
59 | config S5P_DEV_FIMC0 | ||
60 | bool | ||
61 | help | ||
62 | Compile in platform device definitions for FIMC controller 0 | ||
63 | |||
64 | config S5P_DEV_FIMC1 | ||
65 | bool | ||
66 | help | ||
67 | Compile in platform device definitions for FIMC controller 1 | ||
68 | |||
69 | config S5P_DEV_FIMC2 | ||
70 | bool | ||
71 | help | ||
72 | Compile in platform device definitions for FIMC controller 2 | ||
73 | |||
74 | config S5P_DEV_FIMC3 | ||
75 | bool | ||
76 | help | ||
77 | Compile in platform device definitions for FIMC controller 3 | ||
78 | |||
79 | config S5P_DEV_JPEG | ||
80 | bool | ||
81 | help | ||
82 | Compile in platform device definitions for JPEG codec | ||
83 | |||
84 | config S5P_DEV_G2D | ||
85 | bool | ||
86 | help | ||
87 | Compile in platform device definitions for G2D device | ||
88 | |||
89 | config S5P_DEV_FIMD0 | ||
90 | bool | ||
91 | help | ||
92 | Compile in platform device definitions for FIMD controller 0 | ||
93 | |||
94 | config S5P_DEV_I2C_HDMIPHY | ||
95 | bool | ||
96 | help | ||
97 | Compile in platform device definitions for I2C HDMIPHY controller | ||
98 | |||
99 | config S5P_DEV_MFC | ||
100 | bool | ||
101 | help | ||
102 | Compile in platform device definitions for MFC | ||
103 | |||
104 | config S5P_DEV_ONENAND | ||
105 | bool | ||
106 | help | ||
107 | Compile in platform device definition for OneNAND controller | ||
108 | |||
109 | config S5P_DEV_CSIS0 | ||
110 | bool | ||
111 | help | ||
112 | Compile in platform device definitions for MIPI-CSIS channel 0 | ||
113 | |||
114 | config S5P_DEV_CSIS1 | ||
115 | bool | ||
116 | help | ||
117 | Compile in platform device definitions for MIPI-CSIS channel 1 | ||
118 | |||
119 | config S5P_DEV_TV | ||
120 | bool | ||
121 | help | ||
122 | Compile in platform device definition for TV interface | ||
123 | |||
124 | config S5P_DEV_USB_EHCI | ||
125 | bool | ||
126 | help | ||
127 | Compile in platform device definition for USB EHCI | ||
128 | |||
129 | config S5P_SETUP_MIPIPHY | ||
130 | bool | ||
131 | help | ||
132 | Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices | ||
diff --git a/arch/arm/plat-s5p/Makefile b/arch/arm/plat-s5p/Makefile deleted file mode 100644 index 4953d50707be..000000000000 --- a/arch/arm/plat-s5p/Makefile +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | # arch/arm/plat-s5p/Makefile | ||
2 | # | ||
3 | # Copyright (c) 2009 Samsung Electronics Co., Ltd. | ||
4 | # http://www.samsung.com/ | ||
5 | # | ||
6 | # Licensed under GPLv2 | ||
7 | |||
8 | obj-y := | ||
9 | obj-m := | ||
10 | obj-n := dummy.o | ||
11 | obj- := | ||
12 | |||
13 | # Core files | ||
14 | |||
15 | obj-y += clock.o | ||
16 | obj-y += irq.o | ||
17 | obj-$(CONFIG_S5P_EXT_INT) += irq-eint.o | ||
18 | obj-$(CONFIG_S5P_GPIO_INT) += irq-gpioint.o | ||
19 | obj-$(CONFIG_S5P_PM) += pm.o irq-pm.o | ||
20 | obj-$(CONFIG_S5P_SLEEP) += sleep.o | ||
21 | obj-$(CONFIG_S5P_HRT) += s5p-time.o | ||
22 | |||
23 | # devices | ||
24 | |||
25 | obj-$(CONFIG_S5P_DEV_UART) += dev-uart.o | ||
26 | obj-$(CONFIG_S5P_DEV_MFC) += dev-mfc.o | ||
27 | obj-$(CONFIG_S5P_SETUP_MIPIPHY) += setup-mipiphy.o | ||
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig index a0ffc77da809..f8c571031da8 100644 --- a/arch/arm/plat-samsung/Kconfig +++ b/arch/arm/plat-samsung/Kconfig | |||
@@ -13,6 +13,24 @@ config PLAT_SAMSUNG | |||
13 | help | 13 | help |
14 | Base platform code for all Samsung SoC based systems | 14 | Base platform code for all Samsung SoC based systems |
15 | 15 | ||
16 | config PLAT_S5P | ||
17 | bool | ||
18 | depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) | ||
19 | default y | ||
20 | select ARM_VIC if !ARCH_EXYNOS | ||
21 | select ARM_GIC if ARCH_EXYNOS | ||
22 | select GIC_NON_BANKED if ARCH_EXYNOS4 | ||
23 | select NO_IOPORT | ||
24 | select ARCH_REQUIRE_GPIOLIB | ||
25 | select S3C_GPIO_TRACK | ||
26 | select S5P_GPIO_DRVSTR | ||
27 | select SAMSUNG_GPIOLIB_4BIT | ||
28 | select PLAT_SAMSUNG | ||
29 | select SAMSUNG_CLKSRC | ||
30 | select SAMSUNG_IRQ_VIC_TIMER | ||
31 | help | ||
32 | Base platform code for Samsung's S5P series SoC. | ||
33 | |||
16 | if PLAT_SAMSUNG | 34 | if PLAT_SAMSUNG |
17 | 35 | ||
18 | # boot configurations | 36 | # boot configurations |
@@ -50,6 +68,14 @@ config S3C_LOWLEVEL_UART_PORT | |||
50 | this configuration should be between zero and two. The port | 68 | this configuration should be between zero and two. The port |
51 | must have been initialised by the boot-loader before use. | 69 | must have been initialised by the boot-loader before use. |
52 | 70 | ||
71 | # timer options | ||
72 | |||
73 | config S5P_HRT | ||
74 | bool | ||
75 | select SAMSUNG_DEV_PWM | ||
76 | help | ||
77 | Use the High Resolution timer support | ||
78 | |||
53 | # clock options | 79 | # clock options |
54 | 80 | ||
55 | config SAMSUNG_CLKSRC | 81 | config SAMSUNG_CLKSRC |
@@ -58,6 +84,11 @@ config SAMSUNG_CLKSRC | |||
58 | Select the clock code for the clksrc implementation | 84 | Select the clock code for the clksrc implementation |
59 | used by newer systems such as the S3C64XX. | 85 | used by newer systems such as the S3C64XX. |
60 | 86 | ||
87 | config S5P_CLOCK | ||
88 | def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) | ||
89 | help | ||
90 | Support common clock part for ARCH_S5P and ARCH_EXYNOS SoCs | ||
91 | |||
61 | # options for IRQ support | 92 | # options for IRQ support |
62 | 93 | ||
63 | config SAMSUNG_IRQ_VIC_TIMER | 94 | config SAMSUNG_IRQ_VIC_TIMER |
@@ -65,6 +96,22 @@ config SAMSUNG_IRQ_VIC_TIMER | |||
65 | help | 96 | help |
66 | Internal configuration to build the VIC timer interrupt code. | 97 | Internal configuration to build the VIC timer interrupt code. |
67 | 98 | ||
99 | config S5P_IRQ | ||
100 | def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) | ||
101 | help | ||
102 | Support common interrup part for ARCH_S5P and ARCH_EXYNOS SoCs | ||
103 | |||
104 | config S5P_EXT_INT | ||
105 | bool | ||
106 | help | ||
107 | Use the external interrupts (other than GPIO interrupts.) | ||
108 | Note: Do not choose this for S5P6440 and S5P6450. | ||
109 | |||
110 | config S5P_GPIO_INT | ||
111 | bool | ||
112 | help | ||
113 | Common code for the GPIO interrupts (other than external interrupts.) | ||
114 | |||
68 | # options for gpio configuration support | 115 | # options for gpio configuration support |
69 | 116 | ||
70 | config SAMSUNG_GPIOLIB_4BIT | 117 | config SAMSUNG_GPIOLIB_4BIT |
@@ -117,6 +164,12 @@ config S3C_GPIO_TRACK | |||
117 | Internal configuration option to enable the s3c specific gpio | 164 | Internal configuration option to enable the s3c specific gpio |
118 | chip tracking if the platform requires it. | 165 | chip tracking if the platform requires it. |
119 | 166 | ||
167 | # uart options | ||
168 | |||
169 | config S5P_DEV_UART | ||
170 | def_bool y | ||
171 | depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210) | ||
172 | |||
120 | # ADC driver | 173 | # ADC driver |
121 | 174 | ||
122 | config S3C_ADC | 175 | config S3C_ADC |
@@ -274,6 +327,76 @@ config SAMSUNG_DEV_BACKLIGHT | |||
274 | help | 327 | help |
275 | Compile in platform device definition LCD backlight with PWM Timer | 328 | Compile in platform device definition LCD backlight with PWM Timer |
276 | 329 | ||
330 | config S5P_DEV_CSIS0 | ||
331 | bool | ||
332 | help | ||
333 | Compile in platform device definitions for MIPI-CSIS channel 0 | ||
334 | |||
335 | config S5P_DEV_CSIS1 | ||
336 | bool | ||
337 | help | ||
338 | Compile in platform device definitions for MIPI-CSIS channel 1 | ||
339 | |||
340 | config S5P_DEV_FIMC0 | ||
341 | bool | ||
342 | help | ||
343 | Compile in platform device definitions for FIMC controller 0 | ||
344 | |||
345 | config S5P_DEV_FIMC1 | ||
346 | bool | ||
347 | help | ||
348 | Compile in platform device definitions for FIMC controller 1 | ||
349 | |||
350 | config S5P_DEV_FIMC2 | ||
351 | bool | ||
352 | help | ||
353 | Compile in platform device definitions for FIMC controller 2 | ||
354 | |||
355 | config S5P_DEV_FIMC3 | ||
356 | bool | ||
357 | help | ||
358 | Compile in platform device definitions for FIMC controller 3 | ||
359 | |||
360 | config S5P_DEV_FIMD0 | ||
361 | bool | ||
362 | help | ||
363 | Compile in platform device definitions for FIMD controller 0 | ||
364 | |||
365 | config S5P_DEV_G2D | ||
366 | bool | ||
367 | help | ||
368 | Compile in platform device definitions for G2D device | ||
369 | |||
370 | config S5P_DEV_I2C_HDMIPHY | ||
371 | bool | ||
372 | help | ||
373 | Compile in platform device definitions for I2C HDMIPHY controller | ||
374 | |||
375 | config S5P_DEV_JPEG | ||
376 | bool | ||
377 | help | ||
378 | Compile in platform device definitions for JPEG codec | ||
379 | |||
380 | config S5P_DEV_MFC | ||
381 | bool | ||
382 | help | ||
383 | Compile in setup memory (init) code for MFC | ||
384 | |||
385 | config S5P_DEV_ONENAND | ||
386 | bool | ||
387 | help | ||
388 | Compile in platform device definition for OneNAND controller | ||
389 | |||
390 | config S5P_DEV_TV | ||
391 | bool | ||
392 | help | ||
393 | Compile in platform device definition for TV interface | ||
394 | |||
395 | config S5P_DEV_USB_EHCI | ||
396 | bool | ||
397 | help | ||
398 | Compile in platform device definition for USB EHCI | ||
399 | |||
277 | config S3C24XX_PWM | 400 | config S3C24XX_PWM |
278 | bool "PWM device support" | 401 | bool "PWM device support" |
279 | select HAVE_PWM | 402 | select HAVE_PWM |
@@ -281,6 +404,11 @@ config S3C24XX_PWM | |||
281 | Support for exporting the PWM timer blocks via the pwm device | 404 | Support for exporting the PWM timer blocks via the pwm device |
282 | system | 405 | system |
283 | 406 | ||
407 | config S5P_SETUP_MIPIPHY | ||
408 | bool | ||
409 | help | ||
410 | Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices | ||
411 | |||
284 | # DMA | 412 | # DMA |
285 | 413 | ||
286 | config S3C_DMA | 414 | config S3C_DMA |
@@ -351,6 +479,18 @@ config SAMSUNG_WAKEMASK | |||
351 | and above. This code allows a set of interrupt to wakeup-mask | 479 | and above. This code allows a set of interrupt to wakeup-mask |
352 | mappings. See <plat/wakeup-mask.h> | 480 | mappings. See <plat/wakeup-mask.h> |
353 | 481 | ||
482 | config S5P_PM | ||
483 | bool | ||
484 | help | ||
485 | Common code for power management support on S5P and newer SoCs | ||
486 | Note: Do not select this for S5P6440 and S5P6450. | ||
487 | |||
488 | config S5P_SLEEP | ||
489 | bool | ||
490 | help | ||
491 | Internal config node to apply common S5P sleep management code. | ||
492 | Can be selected by S5P and newer SoCs with similar sleep procedure. | ||
493 | |||
354 | comment "Power Domain" | 494 | comment "Power Domain" |
355 | 495 | ||
356 | config SAMSUNG_PD | 496 | config SAMSUNG_PD |
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile index 6012366f33cb..860b2db4db15 100644 --- a/arch/arm/plat-samsung/Makefile +++ b/arch/arm/plat-samsung/Makefile | |||
@@ -13,12 +13,18 @@ obj- := | |||
13 | 13 | ||
14 | obj-y += init.o cpu.o | 14 | obj-y += init.o cpu.o |
15 | obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET) += time.o | 15 | obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET) += time.o |
16 | obj-$(CONFIG_S5P_HRT) += s5p-time.o | ||
17 | |||
16 | obj-y += clock.o | 18 | obj-y += clock.o |
17 | obj-y += pwm-clock.o | 19 | obj-y += pwm-clock.o |
18 | 20 | ||
19 | obj-$(CONFIG_SAMSUNG_CLKSRC) += clock-clksrc.o | 21 | obj-$(CONFIG_SAMSUNG_CLKSRC) += clock-clksrc.o |
22 | obj-$(CONFIG_S5P_CLOCK) += s5p-clock.o | ||
20 | 23 | ||
21 | obj-$(CONFIG_SAMSUNG_IRQ_VIC_TIMER) += irq-vic-timer.o | 24 | obj-$(CONFIG_SAMSUNG_IRQ_VIC_TIMER) += irq-vic-timer.o |
25 | obj-$(CONFIG_S5P_IRQ) += s5p-irq.o | ||
26 | obj-$(CONFIG_S5P_EXT_INT) += s5p-irq-eint.o | ||
27 | obj-$(CONFIG_S5P_GPIO_INT) += s5p-irq-gpioint.o | ||
22 | 28 | ||
23 | # ADC | 29 | # ADC |
24 | 30 | ||
@@ -30,9 +36,13 @@ obj-y += platformdata.o | |||
30 | 36 | ||
31 | obj-y += devs.o | 37 | obj-y += devs.o |
32 | obj-y += dev-uart.o | 38 | obj-y += dev-uart.o |
39 | obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o | ||
40 | obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o | ||
33 | 41 | ||
34 | obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT) += dev-backlight.o | 42 | obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT) += dev-backlight.o |
35 | 43 | ||
44 | obj-$(CONFIG_S5P_SETUP_MIPIPHY) += setup-mipiphy.o | ||
45 | |||
36 | # DMA support | 46 | # DMA support |
37 | 47 | ||
38 | obj-$(CONFIG_S3C_DMA) += dma.o s3c-dma-ops.o | 48 | obj-$(CONFIG_S3C_DMA) += dma.o s3c-dma-ops.o |
@@ -47,6 +57,9 @@ obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o | |||
47 | 57 | ||
48 | obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o | 58 | obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o |
49 | 59 | ||
60 | obj-$(CONFIG_S5P_PM) += s5p-pm.o s5p-irq-pm.o | ||
61 | obj-$(CONFIG_S5P_SLEEP) += s5p-sleep.o | ||
62 | |||
50 | # PD support | 63 | # PD support |
51 | 64 | ||
52 | obj-$(CONFIG_SAMSUNG_PD) += pd.o | 65 | obj-$(CONFIG_SAMSUNG_PD) += pd.o |
diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-samsung/s5p-clock.c index f68a9bb11948..41d3dfd5dddb 100644 --- a/arch/arm/plat-s5p/clock.c +++ b/arch/arm/plat-samsung/s5p-clock.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/clock.c | 1 | /* |
2 | * | ||
3 | * Copyright 2009 Samsung Electronics Co., Ltd. | 2 | * Copyright 2009 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com/ | 3 | * http://www.samsung.com/ |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/dev-mfc.c b/arch/arm/plat-samsung/s5p-dev-mfc.c index a30d36b7f61b..ad6089465e2a 100644 --- a/arch/arm/plat-s5p/dev-mfc.c +++ b/arch/arm/plat-samsung/s5p-dev-mfc.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/dev-mfc.c | 1 | /* |
2 | * | ||
3 | * Copyright (C) 2010-2011 Samsung Electronics Co.Ltd | 2 | * Copyright (C) 2010-2011 Samsung Electronics Co.Ltd |
4 | * | 3 | * |
5 | * Base S5P MFC resource and device definitions | 4 | * Base S5P MFC resource and device definitions |
@@ -9,7 +8,6 @@ | |||
9 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
10 | */ | 9 | */ |
11 | 10 | ||
12 | |||
13 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
14 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
15 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
diff --git a/arch/arm/plat-s5p/dev-uart.c b/arch/arm/plat-samsung/s5p-dev-uart.c index c9308db36183..cafa3deddcc1 100644 --- a/arch/arm/plat-s5p/dev-uart.c +++ b/arch/arm/plat-samsung/s5p-dev-uart.c | |||
@@ -1,6 +1,5 @@ | |||
1 | /* linux/arch/arm/plat-s5p/dev-uart.c | 1 | /* |
2 | * | 2 | * Copyright (c) 2009,2012 Samsung Electronics Co., Ltd. |
3 | * Copyright (c) 2009 Samsung Electronics Co., Ltd. | ||
4 | * http://www.samsung.com/ | 3 | * http://www.samsung.com/ |
5 | * | 4 | * |
6 | * Base S5P UART resource and device definitions | 5 | * Base S5P UART resource and device definitions |
@@ -14,6 +13,7 @@ | |||
14 | #include <linux/types.h> | 13 | #include <linux/types.h> |
15 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
16 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/ioport.h> | ||
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | 18 | ||
19 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
@@ -26,86 +26,38 @@ | |||
26 | /* Serial port registrations */ | 26 | /* Serial port registrations */ |
27 | 27 | ||
28 | static struct resource s5p_uart0_resource[] = { | 28 | static struct resource s5p_uart0_resource[] = { |
29 | [0] = { | 29 | [0] = DEFINE_RES_MEM(S5P_PA_UART0, S5P_SZ_UART), |
30 | .start = S5P_PA_UART0, | 30 | [1] = DEFINE_RES_IRQ(IRQ_UART0), |
31 | .end = S5P_PA_UART0 + S5P_SZ_UART - 1, | ||
32 | .flags = IORESOURCE_MEM, | ||
33 | }, | ||
34 | [1] = { | ||
35 | .start = IRQ_UART0, | ||
36 | .end = IRQ_UART0, | ||
37 | .flags = IORESOURCE_IRQ, | ||
38 | }, | ||
39 | }; | 31 | }; |
40 | 32 | ||
41 | static struct resource s5p_uart1_resource[] = { | 33 | static struct resource s5p_uart1_resource[] = { |
42 | [0] = { | 34 | [0] = DEFINE_RES_MEM(S5P_PA_UART1, S5P_SZ_UART), |
43 | .start = S5P_PA_UART1, | 35 | [1] = DEFINE_RES_IRQ(IRQ_UART1), |
44 | .end = S5P_PA_UART1 + S5P_SZ_UART - 1, | ||
45 | .flags = IORESOURCE_MEM, | ||
46 | }, | ||
47 | [1] = { | ||
48 | .start = IRQ_UART1, | ||
49 | .end = IRQ_UART1, | ||
50 | .flags = IORESOURCE_IRQ, | ||
51 | }, | ||
52 | }; | 36 | }; |
53 | 37 | ||
54 | static struct resource s5p_uart2_resource[] = { | 38 | static struct resource s5p_uart2_resource[] = { |
55 | [0] = { | 39 | [0] = DEFINE_RES_MEM(S5P_PA_UART2, S5P_SZ_UART), |
56 | .start = S5P_PA_UART2, | 40 | [1] = DEFINE_RES_IRQ(IRQ_UART2), |
57 | .end = S5P_PA_UART2 + S5P_SZ_UART - 1, | ||
58 | .flags = IORESOURCE_MEM, | ||
59 | }, | ||
60 | [1] = { | ||
61 | .start = IRQ_UART2, | ||
62 | .end = IRQ_UART2, | ||
63 | .flags = IORESOURCE_IRQ, | ||
64 | }, | ||
65 | }; | 41 | }; |
66 | 42 | ||
67 | static struct resource s5p_uart3_resource[] = { | 43 | static struct resource s5p_uart3_resource[] = { |
68 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 3 | 44 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 3 |
69 | [0] = { | 45 | [0] = DEFINE_RES_MEM(S5P_PA_UART3, S5P_SZ_UART), |
70 | .start = S5P_PA_UART3, | 46 | [1] = DEFINE_RES_IRQ(IRQ_UART3), |
71 | .end = S5P_PA_UART3 + S5P_SZ_UART - 1, | ||
72 | .flags = IORESOURCE_MEM, | ||
73 | }, | ||
74 | [1] = { | ||
75 | .start = IRQ_UART3, | ||
76 | .end = IRQ_UART3, | ||
77 | .flags = IORESOURCE_IRQ, | ||
78 | }, | ||
79 | #endif | 47 | #endif |
80 | }; | 48 | }; |
81 | 49 | ||
82 | static struct resource s5p_uart4_resource[] = { | 50 | static struct resource s5p_uart4_resource[] = { |
83 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 4 | 51 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 4 |
84 | [0] = { | 52 | [0] = DEFINE_RES_MEM(S5P_PA_UART4, S5P_SZ_UART), |
85 | .start = S5P_PA_UART4, | 53 | [1] = DEFINE_RES_IRQ(IRQ_UART4), |
86 | .end = S5P_PA_UART4 + S5P_SZ_UART - 1, | ||
87 | .flags = IORESOURCE_MEM, | ||
88 | }, | ||
89 | [1] = { | ||
90 | .start = IRQ_UART4, | ||
91 | .end = IRQ_UART4, | ||
92 | .flags = IORESOURCE_IRQ, | ||
93 | }, | ||
94 | #endif | 54 | #endif |
95 | }; | 55 | }; |
96 | 56 | ||
97 | static struct resource s5p_uart5_resource[] = { | 57 | static struct resource s5p_uart5_resource[] = { |
98 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 5 | 58 | #if CONFIG_SERIAL_SAMSUNG_UARTS > 5 |
99 | [0] = { | 59 | [0] = DEFINE_RES_MEM(S5P_PA_UART5, S5P_SZ_UART), |
100 | .start = S5P_PA_UART5, | 60 | [1] = DEFINE_RES_IRQ(IRQ_UART5), |
101 | .end = S5P_PA_UART5 + S5P_SZ_UART - 1, | ||
102 | .flags = IORESOURCE_MEM, | ||
103 | }, | ||
104 | [1] = { | ||
105 | .start = IRQ_UART5, | ||
106 | .end = IRQ_UART5, | ||
107 | .flags = IORESOURCE_IRQ, | ||
108 | }, | ||
109 | #endif | 61 | #endif |
110 | }; | 62 | }; |
111 | 63 | ||
diff --git a/arch/arm/plat-s5p/irq-eint.c b/arch/arm/plat-samsung/s5p-irq-eint.c index 139c050918c5..33bd3f3d20f5 100644 --- a/arch/arm/plat-s5p/irq-eint.c +++ b/arch/arm/plat-samsung/s5p-irq-eint.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/irq-eint.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | 3 | * http://www.samsung.com |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/irq-gpioint.c b/arch/arm/plat-samsung/s5p-irq-gpioint.c index 82c7311017a2..f9431fe5b06e 100644 --- a/arch/arm/plat-s5p/irq-gpioint.c +++ b/arch/arm/plat-samsung/s5p-irq-gpioint.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/irq-gpioint.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. |
4 | * Author: Kyungmin Park <kyungmin.park@samsung.com> | 3 | * Author: Kyungmin Park <kyungmin.park@samsung.com> |
5 | * Author: Joonyoung Shim <jy0922.shim@samsung.com> | 4 | * Author: Joonyoung Shim <jy0922.shim@samsung.com> |
diff --git a/arch/arm/plat-s5p/irq-pm.c b/arch/arm/plat-samsung/s5p-irq-pm.c index d1bfecae6c9f..7c1e3b7072fc 100644 --- a/arch/arm/plat-s5p/irq-pm.c +++ b/arch/arm/plat-samsung/s5p-irq-pm.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/irq-pm.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | 3 | * http://www.samsung.com |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/irq.c b/arch/arm/plat-samsung/s5p-irq.c index afdaa1082b9f..dfb47d638f03 100644 --- a/arch/arm/plat-s5p/irq.c +++ b/arch/arm/plat-samsung/s5p-irq.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* arch/arm/plat-s5p/irq.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2009 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2009 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com/ | 3 | * http://www.samsung.com/ |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/pm.c b/arch/arm/plat-samsung/s5p-pm.c index d15dc47b0e3d..0747468f0936 100644 --- a/arch/arm/plat-s5p/pm.c +++ b/arch/arm/plat-samsung/s5p-pm.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/pm.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | 3 | * http://www.samsung.com |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/sleep.S b/arch/arm/plat-samsung/s5p-sleep.S index 006bd01eda02..bdf6dadf8790 100644 --- a/arch/arm/plat-s5p/sleep.S +++ b/arch/arm/plat-samsung/s5p-sleep.S | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/sleep.S | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2011 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | 3 | * http://www.samsung.com |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/s5p-time.c b/arch/arm/plat-samsung/s5p-time.c index 17c0a2c58dfd..028b6e877eb9 100644 --- a/arch/arm/plat-s5p/s5p-time.c +++ b/arch/arm/plat-samsung/s5p-time.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* linux/arch/arm/plat-s5p/s5p-time.c | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2011 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com/ | 3 | * http://www.samsung.com/ |
5 | * | 4 | * |
diff --git a/arch/arm/plat-s5p/setup-mipiphy.c b/arch/arm/plat-samsung/setup-mipiphy.c index 683c466c0e6a..683c466c0e6a 100644 --- a/arch/arm/plat-s5p/setup-mipiphy.c +++ b/arch/arm/plat-samsung/setup-mipiphy.c | |||
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig index b42252c4bec8..1b173a6145d6 100644 --- a/drivers/net/ethernet/ti/Kconfig +++ b/drivers/net/ethernet/ti/Kconfig | |||
@@ -51,7 +51,7 @@ config TI_DAVINCI_CPDMA | |||
51 | 51 | ||
52 | config TI_CPSW | 52 | config TI_CPSW |
53 | tristate "TI CPSW Switch Support" | 53 | tristate "TI CPSW Switch Support" |
54 | depends on ARM && (ARCH_DAVINCI || SOC_OMAPAM33XX) | 54 | depends on ARM && (ARCH_DAVINCI || SOC_AM33XX) |
55 | select TI_DAVINCI_CPDMA | 55 | select TI_DAVINCI_CPDMA |
56 | select TI_DAVINCI_MDIO | 56 | select TI_DAVINCI_MDIO |
57 | ---help--- | 57 | ---help--- |