diff options
Diffstat (limited to 'arch/arm')
148 files changed, 1742 insertions, 2329 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2e4386cba23c..74d8d4f66109 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -361,37 +361,6 @@ config ARCH_AT91 | |||
361 | This enables support for systems based on Atmel | 361 | This enables support for systems based on Atmel |
362 | AT91RM9200 and AT91SAM9* processors. | 362 | AT91RM9200 and AT91SAM9* processors. |
363 | 363 | ||
364 | config ARCH_BCM2835 | ||
365 | bool "Broadcom BCM2835 family" | ||
366 | select ARCH_REQUIRE_GPIOLIB | ||
367 | select ARM_AMBA | ||
368 | select ARM_ERRATA_411920 | ||
369 | select ARM_TIMER_SP804 | ||
370 | select CLKDEV_LOOKUP | ||
371 | select CLKSRC_OF | ||
372 | select COMMON_CLK | ||
373 | select CPU_V6 | ||
374 | select GENERIC_CLOCKEVENTS | ||
375 | select MULTI_IRQ_HANDLER | ||
376 | select PINCTRL | ||
377 | select PINCTRL_BCM2835 | ||
378 | select SPARSE_IRQ | ||
379 | select USE_OF | ||
380 | help | ||
381 | This enables support for the Broadcom BCM2835 SoC. This SoC is | ||
382 | use in the Raspberry Pi, and Roku 2 devices. | ||
383 | |||
384 | config ARCH_CNS3XXX | ||
385 | bool "Cavium Networks CNS3XXX family" | ||
386 | select ARM_GIC | ||
387 | select CPU_V6K | ||
388 | select GENERIC_CLOCKEVENTS | ||
389 | select MIGHT_HAVE_CACHE_L2X0 | ||
390 | select MIGHT_HAVE_PCI | ||
391 | select PCI_DOMAINS if PCI | ||
392 | help | ||
393 | Support for Cavium Networks CNS3XXX platform. | ||
394 | |||
395 | config ARCH_CLPS711X | 364 | config ARCH_CLPS711X |
396 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" | 365 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" |
397 | select ARCH_REQUIRE_GPIOLIB | 366 | select ARCH_REQUIRE_GPIOLIB |
@@ -414,21 +383,6 @@ config ARCH_GEMINI | |||
414 | help | 383 | help |
415 | Support for the Cortina Systems Gemini family SoCs | 384 | Support for the Cortina Systems Gemini family SoCs |
416 | 385 | ||
417 | config ARCH_SIRF | ||
418 | bool "CSR SiRF" | ||
419 | select ARCH_REQUIRE_GPIOLIB | ||
420 | select AUTO_ZRELADDR | ||
421 | select COMMON_CLK | ||
422 | select GENERIC_CLOCKEVENTS | ||
423 | select GENERIC_IRQ_CHIP | ||
424 | select MIGHT_HAVE_CACHE_L2X0 | ||
425 | select NO_IOPORT | ||
426 | select PINCTRL | ||
427 | select PINCTRL_SIRF | ||
428 | select USE_OF | ||
429 | help | ||
430 | Support for CSR SiRFprimaII/Marco/Polo platforms | ||
431 | |||
432 | config ARCH_EBSA110 | 386 | config ARCH_EBSA110 |
433 | bool "EBSA-110" | 387 | bool "EBSA-110" |
434 | select ARCH_USES_GETTIMEOFFSET | 388 | select ARCH_USES_GETTIMEOFFSET |
@@ -903,51 +857,6 @@ config ARCH_U300 | |||
903 | help | 857 | help |
904 | Support for ST-Ericsson U300 series mobile platforms. | 858 | Support for ST-Ericsson U300 series mobile platforms. |
905 | 859 | ||
906 | config ARCH_U8500 | ||
907 | bool "ST-Ericsson U8500 Series" | ||
908 | depends on MMU | ||
909 | select ARCH_HAS_CPUFREQ | ||
910 | select ARCH_REQUIRE_GPIOLIB | ||
911 | select ARM_AMBA | ||
912 | select CLKDEV_LOOKUP | ||
913 | select CPU_V7 | ||
914 | select GENERIC_CLOCKEVENTS | ||
915 | select HAVE_SMP | ||
916 | select MIGHT_HAVE_CACHE_L2X0 | ||
917 | select SPARSE_IRQ | ||
918 | help | ||
919 | Support for ST-Ericsson's Ux500 architecture | ||
920 | |||
921 | config ARCH_NOMADIK | ||
922 | bool "STMicroelectronics Nomadik" | ||
923 | select ARCH_REQUIRE_GPIOLIB | ||
924 | select ARM_AMBA | ||
925 | select ARM_VIC | ||
926 | select CLKSRC_NOMADIK_MTU | ||
927 | select COMMON_CLK | ||
928 | select CPU_ARM926T | ||
929 | select GENERIC_CLOCKEVENTS | ||
930 | select MIGHT_HAVE_CACHE_L2X0 | ||
931 | select USE_OF | ||
932 | select PINCTRL | ||
933 | select PINCTRL_STN8815 | ||
934 | select SPARSE_IRQ | ||
935 | help | ||
936 | Support for the Nomadik platform by ST-Ericsson | ||
937 | |||
938 | config PLAT_SPEAR | ||
939 | bool "ST SPEAr" | ||
940 | select ARCH_HAS_CPUFREQ | ||
941 | select ARCH_REQUIRE_GPIOLIB | ||
942 | select ARM_AMBA | ||
943 | select CLKDEV_LOOKUP | ||
944 | select CLKSRC_MMIO | ||
945 | select COMMON_CLK | ||
946 | select GENERIC_CLOCKEVENTS | ||
947 | select HAVE_CLK | ||
948 | help | ||
949 | Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx). | ||
950 | |||
951 | config ARCH_DAVINCI | 860 | config ARCH_DAVINCI |
952 | bool "TI DaVinci" | 861 | bool "TI DaVinci" |
953 | select ARCH_HAS_HOLES_MEMORYMODEL | 862 | select ARCH_HAS_HOLES_MEMORYMODEL |
@@ -1039,6 +948,8 @@ source "arch/arm/mach-at91/Kconfig" | |||
1039 | 948 | ||
1040 | source "arch/arm/mach-bcm/Kconfig" | 949 | source "arch/arm/mach-bcm/Kconfig" |
1041 | 950 | ||
951 | source "arch/arm/mach-bcm2835/Kconfig" | ||
952 | |||
1042 | source "arch/arm/mach-clps711x/Kconfig" | 953 | source "arch/arm/mach-clps711x/Kconfig" |
1043 | 954 | ||
1044 | source "arch/arm/mach-cns3xxx/Kconfig" | 955 | source "arch/arm/mach-cns3xxx/Kconfig" |
@@ -1106,7 +1017,7 @@ source "arch/arm/plat-samsung/Kconfig" | |||
1106 | 1017 | ||
1107 | source "arch/arm/mach-socfpga/Kconfig" | 1018 | source "arch/arm/mach-socfpga/Kconfig" |
1108 | 1019 | ||
1109 | source "arch/arm/plat-spear/Kconfig" | 1020 | source "arch/arm/mach-spear/Kconfig" |
1110 | 1021 | ||
1111 | source "arch/arm/mach-s3c24xx/Kconfig" | 1022 | source "arch/arm/mach-s3c24xx/Kconfig" |
1112 | 1023 | ||
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 9b31f4311ea2..edb496b656b1 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -89,6 +89,10 @@ choice | |||
89 | bool "Kernel low-level debugging on 9263 and 9g45" | 89 | bool "Kernel low-level debugging on 9263 and 9g45" |
90 | depends on HAVE_AT91_DBGU1 | 90 | depends on HAVE_AT91_DBGU1 |
91 | 91 | ||
92 | config DEBUG_BCM2835 | ||
93 | bool "Kernel low-level debugging on BCM2835 PL011 UART" | ||
94 | depends on ARCH_BCM2835 | ||
95 | |||
92 | config DEBUG_CLPS711X_UART1 | 96 | config DEBUG_CLPS711X_UART1 |
93 | bool "Kernel low-level debugging messages via UART1" | 97 | bool "Kernel low-level debugging messages via UART1" |
94 | depends on ARCH_CLPS711X | 98 | depends on ARCH_CLPS711X |
@@ -103,6 +107,13 @@ choice | |||
103 | Say Y here if you want the debug print routines to direct | 107 | Say Y here if you want the debug print routines to direct |
104 | their output to the second serial port on these devices. | 108 | their output to the second serial port on these devices. |
105 | 109 | ||
110 | config DEBUG_CNS3XXX | ||
111 | bool "Kernel Kernel low-level debugging on Cavium Networks CNS3xxx" | ||
112 | depends on ARCH_CNS3XXX | ||
113 | help | ||
114 | Say Y here if you want the debug print routines to direct | ||
115 | their output to the CNS3xxx UART0. | ||
116 | |||
106 | config DEBUG_DAVINCI_DA8XX_UART1 | 117 | config DEBUG_DAVINCI_DA8XX_UART1 |
107 | bool "Kernel low-level debugging on DaVinci DA8XX using UART1" | 118 | bool "Kernel low-level debugging on DaVinci DA8XX using UART1" |
108 | depends on ARCH_DAVINCI_DA8XX | 119 | depends on ARCH_DAVINCI_DA8XX |
@@ -298,6 +309,13 @@ choice | |||
298 | Say Y here if you want kernel low-level debugging support | 309 | Say Y here if you want kernel low-level debugging support |
299 | on MVEBU based platforms. | 310 | on MVEBU based platforms. |
300 | 311 | ||
312 | config DEBUG_NOMADIK_UART | ||
313 | bool "Kernel low-level debugging messages via NOMADIK UART" | ||
314 | depends on ARCH_NOMADIK | ||
315 | help | ||
316 | Say Y here if you want kernel low-level debugging support | ||
317 | on NOMADIK based platforms. | ||
318 | |||
301 | config DEBUG_OMAP2PLUS_UART | 319 | config DEBUG_OMAP2PLUS_UART |
302 | bool "Kernel low-level debugging messages via OMAP2PLUS UART" | 320 | bool "Kernel low-level debugging messages via OMAP2PLUS UART" |
303 | depends on ARCH_OMAP2PLUS | 321 | depends on ARCH_OMAP2PLUS |
@@ -414,6 +432,13 @@ choice | |||
414 | Say Y here if you want the debug print routines to direct | 432 | Say Y here if you want the debug print routines to direct |
415 | their output to the uart1 port on SiRFmarco devices. | 433 | their output to the uart1 port on SiRFmarco devices. |
416 | 434 | ||
435 | config DEBUG_UX500_UART | ||
436 | depends on ARCH_U8500 | ||
437 | bool "Use Ux500 UART for low-level debug" | ||
438 | help | ||
439 | Say Y here if you want kernel low-level debugging support | ||
440 | on Ux500 based platforms. | ||
441 | |||
417 | config DEBUG_VEXPRESS_UART0_DETECT | 442 | config DEBUG_VEXPRESS_UART0_DETECT |
418 | bool "Autodetect UART0 on Versatile Express Cortex-A core tiles" | 443 | bool "Autodetect UART0 on Versatile Express Cortex-A core tiles" |
419 | depends on ARCH_VEXPRESS && CPU_CP15_MMU | 444 | depends on ARCH_VEXPRESS && CPU_CP15_MMU |
@@ -580,6 +605,8 @@ endchoice | |||
580 | 605 | ||
581 | config DEBUG_LL_INCLUDE | 606 | config DEBUG_LL_INCLUDE |
582 | string | 607 | string |
608 | default "debug/bcm2835.S" if DEBUG_BCM2835 | ||
609 | default "debug/cns3xxx.S" if DEBUG_CNS3XXX | ||
583 | default "debug/icedcc.S" if DEBUG_ICEDCC | 610 | default "debug/icedcc.S" if DEBUG_ICEDCC |
584 | default "debug/imx.S" if DEBUG_IMX1_UART || \ | 611 | default "debug/imx.S" if DEBUG_IMX1_UART || \ |
585 | DEBUG_IMX25_UART || \ | 612 | DEBUG_IMX25_UART || \ |
@@ -591,14 +618,17 @@ config DEBUG_LL_INCLUDE | |||
591 | DEBUG_IMX6Q_UART | 618 | DEBUG_IMX6Q_UART |
592 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART | 619 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART |
593 | default "debug/mvebu.S" if DEBUG_MVEBU_UART | 620 | default "debug/mvebu.S" if DEBUG_MVEBU_UART |
621 | default "debug/nomadik.S" if DEBUG_NOMADIK_UART | ||
594 | default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART | 622 | default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART |
595 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART | 623 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART |
624 | default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1 | ||
596 | default "debug/socfpga.S" if DEBUG_SOCFPGA_UART | 625 | default "debug/socfpga.S" if DEBUG_SOCFPGA_UART |
597 | default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 | 626 | default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 |
598 | default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \ | 627 | default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \ |
599 | DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1 | 628 | DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1 |
600 | default "debug/vt8500.S" if DEBUG_VT8500_UART0 | 629 | default "debug/vt8500.S" if DEBUG_VT8500_UART0 |
601 | default "debug/tegra.S" if DEBUG_TEGRA_UART | 630 | default "debug/tegra.S" if DEBUG_TEGRA_UART |
631 | default "debug/ux500.S" if DEBUG_UX500_UART | ||
602 | default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 | 632 | default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 |
603 | default "mach/debug-macro.S" | 633 | default "mach/debug-macro.S" |
604 | 634 | ||
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index ee4605f400b0..8276536815a8 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -191,9 +191,7 @@ machine-$(CONFIG_ARCH_VT8500) += vt8500 | |||
191 | machine-$(CONFIG_ARCH_W90X900) += w90x900 | 191 | machine-$(CONFIG_ARCH_W90X900) += w90x900 |
192 | machine-$(CONFIG_FOOTBRIDGE) += footbridge | 192 | machine-$(CONFIG_FOOTBRIDGE) += footbridge |
193 | machine-$(CONFIG_ARCH_SOCFPGA) += socfpga | 193 | machine-$(CONFIG_ARCH_SOCFPGA) += socfpga |
194 | machine-$(CONFIG_ARCH_SPEAR13XX) += spear13xx | 194 | machine-$(CONFIG_PLAT_SPEAR) += spear |
195 | machine-$(CONFIG_ARCH_SPEAR3XX) += spear3xx | ||
196 | machine-$(CONFIG_MACH_SPEAR600) += spear6xx | ||
197 | machine-$(CONFIG_ARCH_VIRT) += virt | 195 | machine-$(CONFIG_ARCH_VIRT) += virt |
198 | machine-$(CONFIG_ARCH_ZYNQ) += zynq | 196 | machine-$(CONFIG_ARCH_ZYNQ) += zynq |
199 | machine-$(CONFIG_ARCH_SUNXI) += sunxi | 197 | machine-$(CONFIG_ARCH_SUNXI) += sunxi |
@@ -207,7 +205,6 @@ plat-$(CONFIG_PLAT_ORION) += orion | |||
207 | plat-$(CONFIG_PLAT_PXA) += pxa | 205 | plat-$(CONFIG_PLAT_PXA) += pxa |
208 | plat-$(CONFIG_PLAT_S3C24XX) += samsung | 206 | plat-$(CONFIG_PLAT_S3C24XX) += samsung |
209 | plat-$(CONFIG_PLAT_S5P) += samsung | 207 | plat-$(CONFIG_PLAT_S5P) += samsung |
210 | plat-$(CONFIG_PLAT_SPEAR) += spear | ||
211 | plat-$(CONFIG_PLAT_VERSATILE) += versatile | 208 | plat-$(CONFIG_PLAT_VERSATILE) += versatile |
212 | 209 | ||
213 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 210 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
diff --git a/arch/arm/boot/dts/atlas6-evb.dts b/arch/arm/boot/dts/atlas6-evb.dts new file mode 100644 index 000000000000..ab042ca8dea1 --- /dev/null +++ b/arch/arm/boot/dts/atlas6-evb.dts | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | * DTS file for CSR SiRFatlas6 Evaluation Board | ||
3 | * | ||
4 | * Copyright (c) 2012 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | /dts-v1/; | ||
10 | |||
11 | /include/ "atlas6.dtsi" | ||
12 | |||
13 | / { | ||
14 | model = "CSR SiRFatlas6 Evaluation Board"; | ||
15 | compatible = "sirf,atlas6-cb", "sirf,atlas6"; | ||
16 | |||
17 | memory { | ||
18 | reg = <0x00000000 0x20000000>; | ||
19 | }; | ||
20 | |||
21 | axi { | ||
22 | peri-iobg { | ||
23 | uart@b0060000 { | ||
24 | pinctrl-names = "default"; | ||
25 | pinctrl-0 = <&uart1_pins_a>; | ||
26 | }; | ||
27 | spi@b00d0000 { | ||
28 | status = "okay"; | ||
29 | pinctrl-names = "default"; | ||
30 | pinctrl-0 = <&spi0_pins_a>; | ||
31 | spi@0 { | ||
32 | compatible = "spidev"; | ||
33 | reg = <0>; | ||
34 | spi-max-frequency = <1000000>; | ||
35 | }; | ||
36 | }; | ||
37 | spi@b0170000 { | ||
38 | pinctrl-names = "default"; | ||
39 | pinctrl-0 = <&spi1_pins_a>; | ||
40 | }; | ||
41 | i2c0: i2c@b00e0000 { | ||
42 | status = "okay"; | ||
43 | pinctrl-names = "default"; | ||
44 | pinctrl-0 = <&i2c0_pins_a>; | ||
45 | lcd@40 { | ||
46 | compatible = "sirf,lcd"; | ||
47 | reg = <0x40>; | ||
48 | }; | ||
49 | }; | ||
50 | |||
51 | }; | ||
52 | disp-iobg { | ||
53 | lcd@90010000 { | ||
54 | status = "okay"; | ||
55 | pinctrl-names = "default"; | ||
56 | pinctrl-0 = <&lcd_24pins_a>; | ||
57 | }; | ||
58 | }; | ||
59 | }; | ||
60 | display: display@0 { | ||
61 | panels { | ||
62 | panel0: panel@0 { | ||
63 | panel-name = "Innolux TFT"; | ||
64 | hactive = <800>; | ||
65 | vactive = <480>; | ||
66 | left_margin = <20>; | ||
67 | right_margin = <234>; | ||
68 | upper_margin = <3>; | ||
69 | lower_margin = <41>; | ||
70 | hsync_len = <3>; | ||
71 | vsync_len = <2>; | ||
72 | pixclock = <33264000>; | ||
73 | sync = <3>; | ||
74 | timing = <0x88>; | ||
75 | }; | ||
76 | }; | ||
77 | }; | ||
78 | }; | ||
diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi new file mode 100644 index 000000000000..7d1a27949c13 --- /dev/null +++ b/arch/arm/boot/dts/atlas6.dtsi | |||
@@ -0,0 +1,668 @@ | |||
1 | /* | ||
2 | * DTS file for CSR SiRFatlas6 SoC | ||
3 | * | ||
4 | * Copyright (c) 2012 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | /include/ "skeleton.dtsi" | ||
10 | / { | ||
11 | compatible = "sirf,atlas6"; | ||
12 | #address-cells = <1>; | ||
13 | #size-cells = <1>; | ||
14 | interrupt-parent = <&intc>; | ||
15 | |||
16 | cpus { | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <0>; | ||
19 | |||
20 | cpu@0 { | ||
21 | reg = <0x0>; | ||
22 | d-cache-line-size = <32>; | ||
23 | i-cache-line-size = <32>; | ||
24 | d-cache-size = <32768>; | ||
25 | i-cache-size = <32768>; | ||
26 | /* from bootloader */ | ||
27 | timebase-frequency = <0>; | ||
28 | bus-frequency = <0>; | ||
29 | clock-frequency = <0>; | ||
30 | }; | ||
31 | }; | ||
32 | |||
33 | axi { | ||
34 | compatible = "simple-bus"; | ||
35 | #address-cells = <1>; | ||
36 | #size-cells = <1>; | ||
37 | ranges = <0x40000000 0x40000000 0x80000000>; | ||
38 | |||
39 | intc: interrupt-controller@80020000 { | ||
40 | #interrupt-cells = <1>; | ||
41 | interrupt-controller; | ||
42 | compatible = "sirf,prima2-intc"; | ||
43 | reg = <0x80020000 0x1000>; | ||
44 | }; | ||
45 | |||
46 | sys-iobg { | ||
47 | compatible = "simple-bus"; | ||
48 | #address-cells = <1>; | ||
49 | #size-cells = <1>; | ||
50 | ranges = <0x88000000 0x88000000 0x40000>; | ||
51 | |||
52 | clks: clock-controller@88000000 { | ||
53 | compatible = "sirf,atlas6-clkc"; | ||
54 | reg = <0x88000000 0x1000>; | ||
55 | interrupts = <3>; | ||
56 | #clock-cells = <1>; | ||
57 | }; | ||
58 | |||
59 | reset-controller@88010000 { | ||
60 | compatible = "sirf,prima2-rstc"; | ||
61 | reg = <0x88010000 0x1000>; | ||
62 | }; | ||
63 | |||
64 | rsc-controller@88020000 { | ||
65 | compatible = "sirf,prima2-rsc"; | ||
66 | reg = <0x88020000 0x1000>; | ||
67 | }; | ||
68 | }; | ||
69 | |||
70 | mem-iobg { | ||
71 | compatible = "simple-bus"; | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <1>; | ||
74 | ranges = <0x90000000 0x90000000 0x10000>; | ||
75 | |||
76 | memory-controller@90000000 { | ||
77 | compatible = "sirf,prima2-memc"; | ||
78 | reg = <0x90000000 0x10000>; | ||
79 | interrupts = <27>; | ||
80 | clocks = <&clks 5>; | ||
81 | }; | ||
82 | }; | ||
83 | |||
84 | disp-iobg { | ||
85 | compatible = "simple-bus"; | ||
86 | #address-cells = <1>; | ||
87 | #size-cells = <1>; | ||
88 | ranges = <0x90010000 0x90010000 0x30000>; | ||
89 | |||
90 | lcd@90010000 { | ||
91 | compatible = "sirf,prima2-lcd"; | ||
92 | reg = <0x90010000 0x20000>; | ||
93 | interrupts = <30>; | ||
94 | clocks = <&clks 34>; | ||
95 | display=<&display>; | ||
96 | /* later transfer to pwm */ | ||
97 | bl-gpio = <&gpio 7 0>; | ||
98 | default-panel = <&panel0>; | ||
99 | }; | ||
100 | |||
101 | vpp@90020000 { | ||
102 | compatible = "sirf,prima2-vpp"; | ||
103 | reg = <0x90020000 0x10000>; | ||
104 | interrupts = <31>; | ||
105 | clocks = <&clks 35>; | ||
106 | }; | ||
107 | }; | ||
108 | |||
109 | graphics-iobg { | ||
110 | compatible = "simple-bus"; | ||
111 | #address-cells = <1>; | ||
112 | #size-cells = <1>; | ||
113 | ranges = <0x98000000 0x98000000 0x8000000>; | ||
114 | |||
115 | graphics@98000000 { | ||
116 | compatible = "powervr,sgx510"; | ||
117 | reg = <0x98000000 0x8000000>; | ||
118 | interrupts = <6>; | ||
119 | clocks = <&clks 32>; | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | dsp-iobg { | ||
124 | compatible = "simple-bus"; | ||
125 | #address-cells = <1>; | ||
126 | #size-cells = <1>; | ||
127 | ranges = <0xa8000000 0xa8000000 0x2000000>; | ||
128 | |||
129 | dspif@a8000000 { | ||
130 | compatible = "sirf,prima2-dspif"; | ||
131 | reg = <0xa8000000 0x10000>; | ||
132 | interrupts = <9>; | ||
133 | }; | ||
134 | |||
135 | gps@a8010000 { | ||
136 | compatible = "sirf,prima2-gps"; | ||
137 | reg = <0xa8010000 0x10000>; | ||
138 | interrupts = <7>; | ||
139 | clocks = <&clks 9>; | ||
140 | }; | ||
141 | |||
142 | dsp@a9000000 { | ||
143 | compatible = "sirf,prima2-dsp"; | ||
144 | reg = <0xa9000000 0x1000000>; | ||
145 | interrupts = <8>; | ||
146 | clocks = <&clks 8>; | ||
147 | }; | ||
148 | }; | ||
149 | |||
150 | peri-iobg { | ||
151 | compatible = "simple-bus"; | ||
152 | #address-cells = <1>; | ||
153 | #size-cells = <1>; | ||
154 | ranges = <0xb0000000 0xb0000000 0x180000>, | ||
155 | <0x56000000 0x56000000 0x1b00000>; | ||
156 | |||
157 | timer@b0020000 { | ||
158 | compatible = "sirf,prima2-tick"; | ||
159 | reg = <0xb0020000 0x1000>; | ||
160 | interrupts = <0>; | ||
161 | }; | ||
162 | |||
163 | nand@b0030000 { | ||
164 | compatible = "sirf,prima2-nand"; | ||
165 | reg = <0xb0030000 0x10000>; | ||
166 | interrupts = <41>; | ||
167 | clocks = <&clks 26>; | ||
168 | }; | ||
169 | |||
170 | audio@b0040000 { | ||
171 | compatible = "sirf,prima2-audio"; | ||
172 | reg = <0xb0040000 0x10000>; | ||
173 | interrupts = <35>; | ||
174 | clocks = <&clks 27>; | ||
175 | }; | ||
176 | |||
177 | uart0: uart@b0050000 { | ||
178 | cell-index = <0>; | ||
179 | compatible = "sirf,prima2-uart"; | ||
180 | reg = <0xb0050000 0x1000>; | ||
181 | interrupts = <17>; | ||
182 | fifosize = <128>; | ||
183 | clocks = <&clks 13>; | ||
184 | }; | ||
185 | |||
186 | uart1: uart@b0060000 { | ||
187 | cell-index = <1>; | ||
188 | compatible = "sirf,prima2-uart"; | ||
189 | reg = <0xb0060000 0x1000>; | ||
190 | interrupts = <18>; | ||
191 | fifosize = <32>; | ||
192 | clocks = <&clks 14>; | ||
193 | }; | ||
194 | |||
195 | uart2: uart@b0070000 { | ||
196 | cell-index = <2>; | ||
197 | compatible = "sirf,prima2-uart"; | ||
198 | reg = <0xb0070000 0x1000>; | ||
199 | interrupts = <19>; | ||
200 | fifosize = <128>; | ||
201 | clocks = <&clks 15>; | ||
202 | }; | ||
203 | |||
204 | usp0: usp@b0080000 { | ||
205 | cell-index = <0>; | ||
206 | compatible = "sirf,prima2-usp"; | ||
207 | reg = <0xb0080000 0x10000>; | ||
208 | interrupts = <20>; | ||
209 | clocks = <&clks 28>; | ||
210 | }; | ||
211 | |||
212 | usp1: usp@b0090000 { | ||
213 | cell-index = <1>; | ||
214 | compatible = "sirf,prima2-usp"; | ||
215 | reg = <0xb0090000 0x10000>; | ||
216 | interrupts = <21>; | ||
217 | clocks = <&clks 29>; | ||
218 | }; | ||
219 | |||
220 | dmac0: dma-controller@b00b0000 { | ||
221 | cell-index = <0>; | ||
222 | compatible = "sirf,prima2-dmac"; | ||
223 | reg = <0xb00b0000 0x10000>; | ||
224 | interrupts = <12>; | ||
225 | clocks = <&clks 24>; | ||
226 | }; | ||
227 | |||
228 | dmac1: dma-controller@b0160000 { | ||
229 | cell-index = <1>; | ||
230 | compatible = "sirf,prima2-dmac"; | ||
231 | reg = <0xb0160000 0x10000>; | ||
232 | interrupts = <13>; | ||
233 | clocks = <&clks 25>; | ||
234 | }; | ||
235 | |||
236 | vip@b00C0000 { | ||
237 | compatible = "sirf,prima2-vip"; | ||
238 | reg = <0xb00C0000 0x10000>; | ||
239 | clocks = <&clks 31>; | ||
240 | }; | ||
241 | |||
242 | spi0: spi@b00d0000 { | ||
243 | cell-index = <0>; | ||
244 | compatible = "sirf,prima2-spi"; | ||
245 | reg = <0xb00d0000 0x10000>; | ||
246 | interrupts = <15>; | ||
247 | sirf,spi-num-chipselects = <1>; | ||
248 | cs-gpios = <&gpio 0 0>; | ||
249 | sirf,spi-dma-rx-channel = <25>; | ||
250 | sirf,spi-dma-tx-channel = <20>; | ||
251 | #address-cells = <1>; | ||
252 | #size-cells = <0>; | ||
253 | clocks = <&clks 19>; | ||
254 | status = "disabled"; | ||
255 | }; | ||
256 | |||
257 | spi1: spi@b0170000 { | ||
258 | cell-index = <1>; | ||
259 | compatible = "sirf,prima2-spi"; | ||
260 | reg = <0xb0170000 0x10000>; | ||
261 | interrupts = <16>; | ||
262 | clocks = <&clks 20>; | ||
263 | status = "disabled"; | ||
264 | }; | ||
265 | |||
266 | i2c0: i2c@b00e0000 { | ||
267 | cell-index = <0>; | ||
268 | compatible = "sirf,prima2-i2c"; | ||
269 | reg = <0xb00e0000 0x10000>; | ||
270 | interrupts = <24>; | ||
271 | #address-cells = <1>; | ||
272 | #size-cells = <0>; | ||
273 | clocks = <&clks 17>; | ||
274 | }; | ||
275 | |||
276 | i2c1: i2c@b00f0000 { | ||
277 | cell-index = <1>; | ||
278 | compatible = "sirf,prima2-i2c"; | ||
279 | reg = <0xb00f0000 0x10000>; | ||
280 | interrupts = <25>; | ||
281 | #address-cells = <1>; | ||
282 | #size-cells = <0>; | ||
283 | clocks = <&clks 18>; | ||
284 | }; | ||
285 | |||
286 | tsc@b0110000 { | ||
287 | compatible = "sirf,prima2-tsc"; | ||
288 | reg = <0xb0110000 0x10000>; | ||
289 | interrupts = <33>; | ||
290 | clocks = <&clks 16>; | ||
291 | }; | ||
292 | |||
293 | gpio: pinctrl@b0120000 { | ||
294 | #gpio-cells = <2>; | ||
295 | #interrupt-cells = <2>; | ||
296 | compatible = "sirf,atlas6-pinctrl"; | ||
297 | reg = <0xb0120000 0x10000>; | ||
298 | interrupts = <43 44 45 46 47>; | ||
299 | gpio-controller; | ||
300 | interrupt-controller; | ||
301 | |||
302 | lcd_16pins_a: lcd0@0 { | ||
303 | lcd { | ||
304 | sirf,pins = "lcd_16bitsgrp"; | ||
305 | sirf,function = "lcd_16bits"; | ||
306 | }; | ||
307 | }; | ||
308 | lcd_18pins_a: lcd0@1 { | ||
309 | lcd { | ||
310 | sirf,pins = "lcd_18bitsgrp"; | ||
311 | sirf,function = "lcd_18bits"; | ||
312 | }; | ||
313 | }; | ||
314 | lcd_24pins_a: lcd0@2 { | ||
315 | lcd { | ||
316 | sirf,pins = "lcd_24bitsgrp"; | ||
317 | sirf,function = "lcd_24bits"; | ||
318 | }; | ||
319 | }; | ||
320 | lcdrom_pins_a: lcdrom0@0 { | ||
321 | lcd { | ||
322 | sirf,pins = "lcdromgrp"; | ||
323 | sirf,function = "lcdrom"; | ||
324 | }; | ||
325 | }; | ||
326 | uart0_pins_a: uart0@0 { | ||
327 | uart { | ||
328 | sirf,pins = "uart0grp"; | ||
329 | sirf,function = "uart0"; | ||
330 | }; | ||
331 | }; | ||
332 | uart1_pins_a: uart1@0 { | ||
333 | uart { | ||
334 | sirf,pins = "uart1grp"; | ||
335 | sirf,function = "uart1"; | ||
336 | }; | ||
337 | }; | ||
338 | uart2_pins_a: uart2@0 { | ||
339 | uart { | ||
340 | sirf,pins = "uart2grp"; | ||
341 | sirf,function = "uart2"; | ||
342 | }; | ||
343 | }; | ||
344 | uart2_noflow_pins_a: uart2@1 { | ||
345 | uart { | ||
346 | sirf,pins = "uart2_nostreamctrlgrp"; | ||
347 | sirf,function = "uart2_nostreamctrl"; | ||
348 | }; | ||
349 | }; | ||
350 | spi0_pins_a: spi0@0 { | ||
351 | spi { | ||
352 | sirf,pins = "spi0grp"; | ||
353 | sirf,function = "spi0"; | ||
354 | }; | ||
355 | }; | ||
356 | spi1_pins_a: spi1@0 { | ||
357 | spi { | ||
358 | sirf,pins = "spi1grp"; | ||
359 | sirf,function = "spi1"; | ||
360 | }; | ||
361 | }; | ||
362 | i2c0_pins_a: i2c0@0 { | ||
363 | i2c { | ||
364 | sirf,pins = "i2c0grp"; | ||
365 | sirf,function = "i2c0"; | ||
366 | }; | ||
367 | }; | ||
368 | i2c1_pins_a: i2c1@0 { | ||
369 | i2c { | ||
370 | sirf,pins = "i2c1grp"; | ||
371 | sirf,function = "i2c1"; | ||
372 | }; | ||
373 | }; | ||
374 | pwm0_pins_a: pwm0@0 { | ||
375 | pwm { | ||
376 | sirf,pins = "pwm0grp"; | ||
377 | sirf,function = "pwm0"; | ||
378 | }; | ||
379 | }; | ||
380 | pwm1_pins_a: pwm1@0 { | ||
381 | pwm { | ||
382 | sirf,pins = "pwm1grp"; | ||
383 | sirf,function = "pwm1"; | ||
384 | }; | ||
385 | }; | ||
386 | pwm2_pins_a: pwm2@0 { | ||
387 | pwm { | ||
388 | sirf,pins = "pwm2grp"; | ||
389 | sirf,function = "pwm2"; | ||
390 | }; | ||
391 | }; | ||
392 | pwm3_pins_a: pwm3@0 { | ||
393 | pwm { | ||
394 | sirf,pins = "pwm3grp"; | ||
395 | sirf,function = "pwm3"; | ||
396 | }; | ||
397 | }; | ||
398 | pwm4_pins_a: pwm4@0 { | ||
399 | pwm { | ||
400 | sirf,pins = "pwm4grp"; | ||
401 | sirf,function = "pwm4"; | ||
402 | }; | ||
403 | }; | ||
404 | gps_pins_a: gps@0 { | ||
405 | gps { | ||
406 | sirf,pins = "gpsgrp"; | ||
407 | sirf,function = "gps"; | ||
408 | }; | ||
409 | }; | ||
410 | vip_pins_a: vip@0 { | ||
411 | vip { | ||
412 | sirf,pins = "vipgrp"; | ||
413 | sirf,function = "vip"; | ||
414 | }; | ||
415 | }; | ||
416 | sdmmc0_pins_a: sdmmc0@0 { | ||
417 | sdmmc0 { | ||
418 | sirf,pins = "sdmmc0grp"; | ||
419 | sirf,function = "sdmmc0"; | ||
420 | }; | ||
421 | }; | ||
422 | sdmmc1_pins_a: sdmmc1@0 { | ||
423 | sdmmc1 { | ||
424 | sirf,pins = "sdmmc1grp"; | ||
425 | sirf,function = "sdmmc1"; | ||
426 | }; | ||
427 | }; | ||
428 | sdmmc2_pins_a: sdmmc2@0 { | ||
429 | sdmmc2 { | ||
430 | sirf,pins = "sdmmc2grp"; | ||
431 | sirf,function = "sdmmc2"; | ||
432 | }; | ||
433 | }; | ||
434 | sdmmc2_nowp_pins_a: sdmmc2_nowp@0 { | ||
435 | sdmmc2_nowp { | ||
436 | sirf,pins = "sdmmc2_nowpgrp"; | ||
437 | sirf,function = "sdmmc2_nowp"; | ||
438 | }; | ||
439 | }; | ||
440 | sdmmc3_pins_a: sdmmc3@0 { | ||
441 | sdmmc3 { | ||
442 | sirf,pins = "sdmmc3grp"; | ||
443 | sirf,function = "sdmmc3"; | ||
444 | }; | ||
445 | }; | ||
446 | sdmmc5_pins_a: sdmmc5@0 { | ||
447 | sdmmc5 { | ||
448 | sirf,pins = "sdmmc5grp"; | ||
449 | sirf,function = "sdmmc5"; | ||
450 | }; | ||
451 | }; | ||
452 | i2s_pins_a: i2s@0 { | ||
453 | i2s { | ||
454 | sirf,pins = "i2sgrp"; | ||
455 | sirf,function = "i2s"; | ||
456 | }; | ||
457 | }; | ||
458 | i2s_no_din_pins_a: i2s_no_din@0 { | ||
459 | i2s_no_din { | ||
460 | sirf,pins = "i2s_no_dingrp"; | ||
461 | sirf,function = "i2s_no_din"; | ||
462 | }; | ||
463 | }; | ||
464 | i2s_6chn_pins_a: i2s_6chn@0 { | ||
465 | i2s_6chn { | ||
466 | sirf,pins = "i2s_6chngrp"; | ||
467 | sirf,function = "i2s_6chn"; | ||
468 | }; | ||
469 | }; | ||
470 | ac97_pins_a: ac97@0 { | ||
471 | ac97 { | ||
472 | sirf,pins = "ac97grp"; | ||
473 | sirf,function = "ac97"; | ||
474 | }; | ||
475 | }; | ||
476 | nand_pins_a: nand@0 { | ||
477 | nand { | ||
478 | sirf,pins = "nandgrp"; | ||
479 | sirf,function = "nand"; | ||
480 | }; | ||
481 | }; | ||
482 | usp0_pins_a: usp0@0 { | ||
483 | usp0 { | ||
484 | sirf,pins = "usp0grp"; | ||
485 | sirf,function = "usp0"; | ||
486 | }; | ||
487 | }; | ||
488 | usp1_pins_a: usp1@0 { | ||
489 | usp1 { | ||
490 | sirf,pins = "usp1grp"; | ||
491 | sirf,function = "usp1"; | ||
492 | }; | ||
493 | }; | ||
494 | usb0_upli_drvbus_pins_a: usb0_upli_drvbus@0 { | ||
495 | usb0_upli_drvbus { | ||
496 | sirf,pins = "usb0_upli_drvbusgrp"; | ||
497 | sirf,function = "usb0_upli_drvbus"; | ||
498 | }; | ||
499 | }; | ||
500 | usb1_utmi_drvbus_pins_a: usb1_utmi_drvbus@0 { | ||
501 | usb1_utmi_drvbus { | ||
502 | sirf,pins = "usb1_utmi_drvbusgrp"; | ||
503 | sirf,function = "usb1_utmi_drvbus"; | ||
504 | }; | ||
505 | }; | ||
506 | warm_rst_pins_a: warm_rst@0 { | ||
507 | warm_rst { | ||
508 | sirf,pins = "warm_rstgrp"; | ||
509 | sirf,function = "warm_rst"; | ||
510 | }; | ||
511 | }; | ||
512 | pulse_count_pins_a: pulse_count@0 { | ||
513 | pulse_count { | ||
514 | sirf,pins = "pulse_countgrp"; | ||
515 | sirf,function = "pulse_count"; | ||
516 | }; | ||
517 | }; | ||
518 | cko0_rst_pins_a: cko0_rst@0 { | ||
519 | cko0_rst { | ||
520 | sirf,pins = "cko0_rstgrp"; | ||
521 | sirf,function = "cko0_rst"; | ||
522 | }; | ||
523 | }; | ||
524 | cko1_rst_pins_a: cko1_rst@0 { | ||
525 | cko1_rst { | ||
526 | sirf,pins = "cko1_rstgrp"; | ||
527 | sirf,function = "cko1_rst"; | ||
528 | }; | ||
529 | }; | ||
530 | }; | ||
531 | |||
532 | pwm@b0130000 { | ||
533 | compatible = "sirf,prima2-pwm"; | ||
534 | reg = <0xb0130000 0x10000>; | ||
535 | clocks = <&clks 21>; | ||
536 | }; | ||
537 | |||
538 | efusesys@b0140000 { | ||
539 | compatible = "sirf,prima2-efuse"; | ||
540 | reg = <0xb0140000 0x10000>; | ||
541 | clocks = <&clks 22>; | ||
542 | }; | ||
543 | |||
544 | pulsec@b0150000 { | ||
545 | compatible = "sirf,prima2-pulsec"; | ||
546 | reg = <0xb0150000 0x10000>; | ||
547 | interrupts = <48>; | ||
548 | clocks = <&clks 23>; | ||
549 | }; | ||
550 | |||
551 | pci-iobg { | ||
552 | compatible = "sirf,prima2-pciiobg", "simple-bus"; | ||
553 | #address-cells = <1>; | ||
554 | #size-cells = <1>; | ||
555 | ranges = <0x56000000 0x56000000 0x1b00000>; | ||
556 | |||
557 | sd0: sdhci@56000000 { | ||
558 | cell-index = <0>; | ||
559 | compatible = "sirf,prima2-sdhc"; | ||
560 | reg = <0x56000000 0x100000>; | ||
561 | interrupts = <38>; | ||
562 | bus-width = <8>; | ||
563 | clocks = <&clks 36>; | ||
564 | }; | ||
565 | |||
566 | sd1: sdhci@56100000 { | ||
567 | cell-index = <1>; | ||
568 | compatible = "sirf,prima2-sdhc"; | ||
569 | reg = <0x56100000 0x100000>; | ||
570 | interrupts = <38>; | ||
571 | status = "disabled"; | ||
572 | clocks = <&clks 36>; | ||
573 | }; | ||
574 | |||
575 | sd2: sdhci@56200000 { | ||
576 | cell-index = <2>; | ||
577 | compatible = "sirf,prima2-sdhc"; | ||
578 | reg = <0x56200000 0x100000>; | ||
579 | interrupts = <23>; | ||
580 | status = "disabled"; | ||
581 | clocks = <&clks 37>; | ||
582 | }; | ||
583 | |||
584 | sd3: sdhci@56300000 { | ||
585 | cell-index = <3>; | ||
586 | compatible = "sirf,prima2-sdhc"; | ||
587 | reg = <0x56300000 0x100000>; | ||
588 | interrupts = <23>; | ||
589 | status = "disabled"; | ||
590 | clocks = <&clks 37>; | ||
591 | }; | ||
592 | |||
593 | sd5: sdhci@56500000 { | ||
594 | cell-index = <5>; | ||
595 | compatible = "sirf,prima2-sdhc"; | ||
596 | reg = <0x56500000 0x100000>; | ||
597 | interrupts = <39>; | ||
598 | status = "disabled"; | ||
599 | clocks = <&clks 38>; | ||
600 | }; | ||
601 | |||
602 | pci-copy@57900000 { | ||
603 | compatible = "sirf,prima2-pcicp"; | ||
604 | reg = <0x57900000 0x100000>; | ||
605 | interrupts = <40>; | ||
606 | }; | ||
607 | |||
608 | rom-interface@57a00000 { | ||
609 | compatible = "sirf,prima2-romif"; | ||
610 | reg = <0x57a00000 0x100000>; | ||
611 | }; | ||
612 | }; | ||
613 | }; | ||
614 | |||
615 | rtc-iobg { | ||
616 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus"; | ||
617 | #address-cells = <1>; | ||
618 | #size-cells = <1>; | ||
619 | reg = <0x80030000 0x10000>; | ||
620 | |||
621 | gpsrtc@1000 { | ||
622 | compatible = "sirf,prima2-gpsrtc"; | ||
623 | reg = <0x1000 0x1000>; | ||
624 | interrupts = <55 56 57>; | ||
625 | }; | ||
626 | |||
627 | sysrtc@2000 { | ||
628 | compatible = "sirf,prima2-sysrtc"; | ||
629 | reg = <0x2000 0x1000>; | ||
630 | interrupts = <52 53 54>; | ||
631 | }; | ||
632 | |||
633 | pwrc@3000 { | ||
634 | compatible = "sirf,prima2-pwrc"; | ||
635 | reg = <0x3000 0x1000>; | ||
636 | interrupts = <32>; | ||
637 | }; | ||
638 | }; | ||
639 | |||
640 | uus-iobg { | ||
641 | compatible = "simple-bus"; | ||
642 | #address-cells = <1>; | ||
643 | #size-cells = <1>; | ||
644 | ranges = <0xb8000000 0xb8000000 0x40000>; | ||
645 | |||
646 | usb0: usb@b00e0000 { | ||
647 | compatible = "chipidea,ci13611a-prima2"; | ||
648 | reg = <0xb8000000 0x10000>; | ||
649 | interrupts = <10>; | ||
650 | clocks = <&clks 40>; | ||
651 | }; | ||
652 | |||
653 | usb1: usb@b00f0000 { | ||
654 | compatible = "chipidea,ci13611a-prima2"; | ||
655 | reg = <0xb8010000 0x10000>; | ||
656 | interrupts = <11>; | ||
657 | clocks = <&clks 41>; | ||
658 | }; | ||
659 | |||
660 | security@b00f0000 { | ||
661 | compatible = "sirf,prima2-security"; | ||
662 | reg = <0xb8030000 0x10000>; | ||
663 | interrupts = <42>; | ||
664 | clocks = <&clks 7>; | ||
665 | }; | ||
666 | }; | ||
667 | }; | ||
668 | }; | ||
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig index af472e4ed451..3a1c939735e0 100644 --- a/arch/arm/configs/bcm2835_defconfig +++ b/arch/arm/configs/bcm2835_defconfig | |||
@@ -29,6 +29,8 @@ CONFIG_EMBEDDED=y | |||
29 | CONFIG_PROFILING=y | 29 | CONFIG_PROFILING=y |
30 | CONFIG_OPROFILE=y | 30 | CONFIG_OPROFILE=y |
31 | CONFIG_JUMP_LABEL=y | 31 | CONFIG_JUMP_LABEL=y |
32 | CONFIG_ARCH_MULTI_V6=y | ||
33 | # CONFIG_ARCH_MULTI_V7 is not set | ||
32 | CONFIG_ARCH_BCM2835=y | 34 | CONFIG_ARCH_BCM2835=y |
33 | CONFIG_PREEMPT_VOLUNTARY=y | 35 | CONFIG_PREEMPT_VOLUNTARY=y |
34 | CONFIG_AEABI=y | 36 | CONFIG_AEABI=y |
diff --git a/arch/arm/configs/cns3420vb_defconfig b/arch/arm/configs/cns3420vb_defconfig index 313627adf46c..b1ff5cdba9a1 100644 --- a/arch/arm/configs/cns3420vb_defconfig +++ b/arch/arm/configs/cns3420vb_defconfig | |||
@@ -19,8 +19,11 @@ CONFIG_MODULE_FORCE_UNLOAD=y | |||
19 | CONFIG_MODVERSIONS=y | 19 | CONFIG_MODVERSIONS=y |
20 | # CONFIG_BLK_DEV_BSG is not set | 20 | # CONFIG_BLK_DEV_BSG is not set |
21 | CONFIG_IOSCHED_CFQ=m | 21 | CONFIG_IOSCHED_CFQ=m |
22 | CONFIG_ARCH_MULTI_V6=y | ||
23 | #CONFIG_ARCH_MULTI_V7 is not set | ||
22 | CONFIG_ARCH_CNS3XXX=y | 24 | CONFIG_ARCH_CNS3XXX=y |
23 | CONFIG_MACH_CNS3420VB=y | 25 | CONFIG_MACH_CNS3420VB=y |
26 | CONFIG_DEBUG_CNS3XXX=y | ||
24 | CONFIG_AEABI=y | 27 | CONFIG_AEABI=y |
25 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 28 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
26 | CONFIG_ZBOOT_ROM_BSS=0x0 | 29 | CONFIG_ZBOOT_ROM_BSS=0x0 |
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig index e31d442343c8..2e67a272df70 100644 --- a/arch/arm/configs/multi_v7_defconfig +++ b/arch/arm/configs/multi_v7_defconfig | |||
@@ -3,13 +3,19 @@ CONFIG_NO_HZ=y | |||
3 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
4 | CONFIG_ARCH_MVEBU=y | 4 | CONFIG_ARCH_MVEBU=y |
5 | CONFIG_MACH_ARMADA_370=y | 5 | CONFIG_MACH_ARMADA_370=y |
6 | CONFIG_ARCH_SIRF=y | ||
6 | CONFIG_MACH_ARMADA_XP=y | 7 | CONFIG_MACH_ARMADA_XP=y |
7 | CONFIG_ARCH_HIGHBANK=y | 8 | CONFIG_ARCH_HIGHBANK=y |
8 | CONFIG_ARCH_SOCFPGA=y | 9 | CONFIG_ARCH_SOCFPGA=y |
9 | CONFIG_ARCH_SUNXI=y | 10 | CONFIG_ARCH_SUNXI=y |
11 | CONFIG_ARCH_WM8850=y | ||
10 | # CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set | 12 | # CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set |
11 | CONFIG_ARCH_ZYNQ=y | 13 | CONFIG_ARCH_ZYNQ=y |
12 | CONFIG_ARM_ERRATA_754322=y | 14 | CONFIG_ARM_ERRATA_754322=y |
15 | CONFIG_PLAT_SPEAR=y | ||
16 | CONFIG_ARCH_SPEAR13XX=y | ||
17 | CONFIG_MACH_SPEAR1310=y | ||
18 | CONFIG_MACH_SPEAR1340=y | ||
13 | CONFIG_SMP=y | 19 | CONFIG_SMP=y |
14 | CONFIG_ARM_ARCH_TIMER=y | 20 | CONFIG_ARM_ARCH_TIMER=y |
15 | CONFIG_AEABI=y | 21 | CONFIG_AEABI=y |
@@ -23,6 +29,7 @@ CONFIG_BLK_DEV_SD=y | |||
23 | CONFIG_ATA=y | 29 | CONFIG_ATA=y |
24 | CONFIG_SATA_HIGHBANK=y | 30 | CONFIG_SATA_HIGHBANK=y |
25 | CONFIG_SATA_MV=y | 31 | CONFIG_SATA_MV=y |
32 | CONFIG_SATA_AHCI_PLATFORM=y | ||
26 | CONFIG_NETDEVICES=y | 33 | CONFIG_NETDEVICES=y |
27 | CONFIG_NET_CALXEDA_XGMAC=y | 34 | CONFIG_NET_CALXEDA_XGMAC=y |
28 | CONFIG_SMSC911X=y | 35 | CONFIG_SMSC911X=y |
@@ -31,17 +38,26 @@ CONFIG_SERIO_AMBAKMI=y | |||
31 | CONFIG_SERIAL_8250=y | 38 | CONFIG_SERIAL_8250=y |
32 | CONFIG_SERIAL_8250_CONSOLE=y | 39 | CONFIG_SERIAL_8250_CONSOLE=y |
33 | CONFIG_SERIAL_8250_DW=y | 40 | CONFIG_SERIAL_8250_DW=y |
41 | CONFIG_KEYBOARD_SPEAR=y | ||
34 | CONFIG_SERIAL_AMBA_PL011=y | 42 | CONFIG_SERIAL_AMBA_PL011=y |
35 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 43 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
36 | CONFIG_SERIAL_OF_PLATFORM=y | 44 | CONFIG_SERIAL_OF_PLATFORM=y |
45 | CONFIG_SERIAL_SIRFSOC=y | ||
46 | CONFIG_SERIAL_SIRFSOC_CONSOLE=y | ||
47 | CONFIG_SERIAL_VT8500=y | ||
48 | CONFIG_SERIAL_VT8500_CONSOLE=y | ||
37 | CONFIG_IPMI_HANDLER=y | 49 | CONFIG_IPMI_HANDLER=y |
38 | CONFIG_IPMI_SI=y | 50 | CONFIG_IPMI_SI=y |
39 | CONFIG_I2C=y | 51 | CONFIG_I2C=y |
40 | CONFIG_I2C_DESIGNWARE_PLATFORM=y | 52 | CONFIG_I2C_DESIGNWARE_PLATFORM=y |
53 | CONFIG_I2C_SIRF=y | ||
41 | CONFIG_SPI=y | 54 | CONFIG_SPI=y |
42 | CONFIG_SPI_PL022=y | 55 | CONFIG_SPI_PL022=y |
56 | CONFIG_SPI_SIRF=y | ||
57 | CONFIG_GPIO_PL061=y | ||
43 | CONFIG_FB=y | 58 | CONFIG_FB=y |
44 | CONFIG_FB_ARMCLCD=y | 59 | CONFIG_FB_ARMCLCD=y |
60 | CONFIG_FB_WM8505=y | ||
45 | CONFIG_FRAMEBUFFER_CONSOLE=y | 61 | CONFIG_FRAMEBUFFER_CONSOLE=y |
46 | CONFIG_USB=y | 62 | CONFIG_USB=y |
47 | CONFIG_USB_ISP1760_HCD=y | 63 | CONFIG_USB_ISP1760_HCD=y |
@@ -50,11 +66,18 @@ CONFIG_MMC=y | |||
50 | CONFIG_MMC_ARMMMCI=y | 66 | CONFIG_MMC_ARMMMCI=y |
51 | CONFIG_MMC_SDHCI=y | 67 | CONFIG_MMC_SDHCI=y |
52 | CONFIG_MMC_SDHCI_PLTFM=y | 68 | CONFIG_MMC_SDHCI_PLTFM=y |
69 | CONFIG_MMC_SDHCI_SPEAR=y | ||
70 | CONFIG_MMC_WMT=y | ||
53 | CONFIG_EDAC=y | 71 | CONFIG_EDAC=y |
54 | CONFIG_EDAC_MM_EDAC=y | 72 | CONFIG_EDAC_MM_EDAC=y |
55 | CONFIG_EDAC_HIGHBANK_MC=y | 73 | CONFIG_EDAC_HIGHBANK_MC=y |
56 | CONFIG_EDAC_HIGHBANK_L2=y | 74 | CONFIG_EDAC_HIGHBANK_L2=y |
57 | CONFIG_RTC_CLASS=y | 75 | CONFIG_RTC_CLASS=y |
58 | CONFIG_RTC_DRV_PL031=y | 76 | CONFIG_RTC_DRV_PL031=y |
77 | CONFIG_RTC_DRV_VT8500=y | ||
78 | CONFIG_PWM=y | ||
79 | CONFIG_PWM_VT8500=y | ||
59 | CONFIG_DMADEVICES=y | 80 | CONFIG_DMADEVICES=y |
60 | CONFIG_PL330_DMA=y | 81 | CONFIG_PL330_DMA=y |
82 | CONFIG_SIRF_DMA=y | ||
83 | CONFIG_DW_DMAC=y | ||
diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig index 86cfd2959c47..b01e7632ed2e 100644 --- a/arch/arm/configs/nhk8815_defconfig +++ b/arch/arm/configs/nhk8815_defconfig | |||
@@ -1,11 +1,9 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | # CONFIG_LOCALVERSION_AUTO is not set | 1 | # CONFIG_LOCALVERSION_AUTO is not set |
3 | # CONFIG_SWAP is not set | 2 | # CONFIG_SWAP is not set |
4 | CONFIG_SYSVIPC=y | 3 | CONFIG_SYSVIPC=y |
5 | CONFIG_IKCONFIG=y | 4 | CONFIG_IKCONFIG=y |
6 | CONFIG_IKCONFIG_PROC=y | 5 | CONFIG_IKCONFIG_PROC=y |
7 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_LOG_BUF_SHIFT=14 |
8 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
9 | CONFIG_BLK_DEV_INITRD=y | 7 | CONFIG_BLK_DEV_INITRD=y |
10 | CONFIG_EXPERT=y | 8 | CONFIG_EXPERT=y |
11 | CONFIG_KALLSYMS_ALL=y | 9 | CONFIG_KALLSYMS_ALL=y |
@@ -13,6 +11,7 @@ CONFIG_SLAB=y | |||
13 | CONFIG_MODULES=y | 11 | CONFIG_MODULES=y |
14 | CONFIG_MODULE_UNLOAD=y | 12 | CONFIG_MODULE_UNLOAD=y |
15 | # CONFIG_BLK_DEV_BSG is not set | 13 | # CONFIG_BLK_DEV_BSG is not set |
14 | # CONFIG_ARCH_MULTI_V7 is not set | ||
16 | CONFIG_ARCH_NOMADIK=y | 15 | CONFIG_ARCH_NOMADIK=y |
17 | CONFIG_MACH_NOMADIK_8815NHK=y | 16 | CONFIG_MACH_NOMADIK_8815NHK=y |
18 | CONFIG_PREEMPT=y | 17 | CONFIG_PREEMPT=y |
@@ -20,7 +19,6 @@ CONFIG_AEABI=y | |||
20 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 19 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
21 | CONFIG_ZBOOT_ROM_BSS=0x0 | 20 | CONFIG_ZBOOT_ROM_BSS=0x0 |
22 | CONFIG_FPE_NWFPE=y | 21 | CONFIG_FPE_NWFPE=y |
23 | CONFIG_PM=y | ||
24 | CONFIG_NET=y | 22 | CONFIG_NET=y |
25 | CONFIG_PACKET=y | 23 | CONFIG_PACKET=y |
26 | CONFIG_UNIX=y | 24 | CONFIG_UNIX=y |
@@ -32,14 +30,10 @@ CONFIG_IP_PNP=y | |||
32 | CONFIG_IP_PNP_DHCP=y | 30 | CONFIG_IP_PNP_DHCP=y |
33 | CONFIG_IP_PNP_BOOTP=y | 31 | CONFIG_IP_PNP_BOOTP=y |
34 | CONFIG_NET_IPIP=y | 32 | CONFIG_NET_IPIP=y |
35 | CONFIG_NET_IPGRE=y | ||
36 | CONFIG_NET_IPGRE_BROADCAST=y | ||
37 | CONFIG_IP_MROUTE=y | 33 | CONFIG_IP_MROUTE=y |
38 | # CONFIG_INET_LRO is not set | 34 | # CONFIG_INET_LRO is not set |
39 | # CONFIG_IPV6 is not set | 35 | # CONFIG_IPV6 is not set |
40 | CONFIG_BT=m | 36 | CONFIG_BT=m |
41 | CONFIG_BT_L2CAP=m | ||
42 | CONFIG_BT_SCO=m | ||
43 | CONFIG_BT_RFCOMM=m | 37 | CONFIG_BT_RFCOMM=m |
44 | CONFIG_BT_RFCOMM_TTY=y | 38 | CONFIG_BT_RFCOMM_TTY=y |
45 | CONFIG_BT_BNEP=m | 39 | CONFIG_BT_BNEP=m |
@@ -53,14 +47,16 @@ CONFIG_BT_HCIVHCI=m | |||
53 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 47 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
54 | CONFIG_MTD=y | 48 | CONFIG_MTD=y |
55 | CONFIG_MTD_TESTS=m | 49 | CONFIG_MTD_TESTS=m |
50 | CONFIG_MTD_CMDLINE_PARTS=y | ||
56 | CONFIG_MTD_CHAR=y | 51 | CONFIG_MTD_CHAR=y |
57 | CONFIG_MTD_BLOCK=y | 52 | CONFIG_MTD_BLOCK=y |
58 | CONFIG_MTD_NAND=y | ||
59 | CONFIG_MTD_NAND_ECC_SMC=y | 53 | CONFIG_MTD_NAND_ECC_SMC=y |
54 | CONFIG_MTD_NAND=y | ||
60 | CONFIG_MTD_NAND_FSMC=y | 55 | CONFIG_MTD_NAND_FSMC=y |
61 | CONFIG_MTD_ONENAND=y | 56 | CONFIG_MTD_ONENAND=y |
62 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y | 57 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y |
63 | CONFIG_MTD_ONENAND_GENERIC=y | 58 | CONFIG_MTD_ONENAND_GENERIC=y |
59 | CONFIG_PROC_DEVICETREE=y | ||
64 | CONFIG_BLK_DEV_LOOP=y | 60 | CONFIG_BLK_DEV_LOOP=y |
65 | CONFIG_BLK_DEV_CRYPTOLOOP=y | 61 | CONFIG_BLK_DEV_CRYPTOLOOP=y |
66 | CONFIG_BLK_DEV_RAM=y | 62 | CONFIG_BLK_DEV_RAM=y |
@@ -72,47 +68,48 @@ CONFIG_SCSI_CONSTANTS=y | |||
72 | CONFIG_SCSI_LOGGING=y | 68 | CONFIG_SCSI_LOGGING=y |
73 | CONFIG_SCSI_SCAN_ASYNC=y | 69 | CONFIG_SCSI_SCAN_ASYNC=y |
74 | CONFIG_NETDEVICES=y | 70 | CONFIG_NETDEVICES=y |
71 | CONFIG_NETCONSOLE=m | ||
75 | CONFIG_TUN=y | 72 | CONFIG_TUN=y |
76 | CONFIG_NET_ETHERNET=y | ||
77 | CONFIG_SMC91X=y | 73 | CONFIG_SMC91X=y |
78 | CONFIG_PPP=m | 74 | CONFIG_PPP=m |
79 | CONFIG_PPP_ASYNC=m | ||
80 | CONFIG_PPP_SYNC_TTY=m | ||
81 | CONFIG_PPP_DEFLATE=m | ||
82 | CONFIG_PPP_BSDCOMP=m | 75 | CONFIG_PPP_BSDCOMP=m |
76 | CONFIG_PPP_DEFLATE=m | ||
83 | CONFIG_PPP_MPPE=m | 77 | CONFIG_PPP_MPPE=m |
84 | CONFIG_PPPOE=m | 78 | CONFIG_PPPOE=m |
85 | CONFIG_NETCONSOLE=m | 79 | CONFIG_PPP_ASYNC=m |
80 | CONFIG_PPP_SYNC_TTY=m | ||
86 | # CONFIG_INPUT_MOUSEDEV is not set | 81 | # CONFIG_INPUT_MOUSEDEV is not set |
87 | CONFIG_INPUT_EVDEV=y | 82 | CONFIG_INPUT_EVDEV=y |
88 | # CONFIG_KEYBOARD_ATKBD is not set | 83 | # CONFIG_KEYBOARD_ATKBD is not set |
89 | # CONFIG_MOUSE_PS2 is not set | 84 | # CONFIG_MOUSE_PS2 is not set |
90 | # CONFIG_SERIO is not set | 85 | # CONFIG_SERIO is not set |
86 | # CONFIG_LEGACY_PTYS is not set | ||
91 | CONFIG_SERIAL_AMBA_PL011=y | 87 | CONFIG_SERIAL_AMBA_PL011=y |
92 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 88 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
93 | # CONFIG_LEGACY_PTYS is not set | 89 | CONFIG_HW_RANDOM=y |
94 | # CONFIG_HW_RANDOM is not set | 90 | CONFIG_HW_RANDOM_NOMADIK=y |
95 | CONFIG_I2C=y | ||
96 | CONFIG_I2C_CHARDEV=y | 91 | CONFIG_I2C_CHARDEV=y |
97 | CONFIG_I2C_GPIO=y | 92 | CONFIG_I2C_GPIO=y |
93 | CONFIG_I2C_NOMADIK=y | ||
98 | CONFIG_DEBUG_GPIO=y | 94 | CONFIG_DEBUG_GPIO=y |
99 | CONFIG_PINCTRL_NOMADIK=y | ||
100 | # CONFIG_HWMON is not set | 95 | # CONFIG_HWMON is not set |
101 | # CONFIG_VGA_CONSOLE is not set | 96 | CONFIG_MMC=y |
97 | CONFIG_MMC_CLKGATE=y | ||
98 | CONFIG_MMC_ARMMMCI=y | ||
102 | CONFIG_RTC_CLASS=y | 99 | CONFIG_RTC_CLASS=y |
100 | CONFIG_RTC_DRV_PL031=y | ||
101 | CONFIG_DMADEVICES=y | ||
102 | CONFIG_AMBA_PL08X=y | ||
103 | CONFIG_EXT2_FS=y | 103 | CONFIG_EXT2_FS=y |
104 | CONFIG_EXT3_FS=y | 104 | CONFIG_EXT3_FS=y |
105 | CONFIG_INOTIFY=y | ||
106 | CONFIG_FUSE_FS=y | 105 | CONFIG_FUSE_FS=y |
107 | CONFIG_MSDOS_FS=y | 106 | CONFIG_MSDOS_FS=y |
108 | CONFIG_VFAT_FS=y | 107 | CONFIG_VFAT_FS=y |
109 | CONFIG_TMPFS=y | 108 | CONFIG_TMPFS=y |
110 | CONFIG_JFFS2_FS=y | 109 | CONFIG_JFFS2_FS=y |
111 | CONFIG_NFS_FS=y | 110 | CONFIG_NFS_FS=y |
112 | CONFIG_NFS_V3=y | ||
113 | CONFIG_NFS_V3_ACL=y | 111 | CONFIG_NFS_V3_ACL=y |
114 | CONFIG_ROOT_NFS=y | 112 | CONFIG_ROOT_NFS=y |
115 | CONFIG_SMB_FS=m | ||
116 | CONFIG_CIFS=m | 113 | CONFIG_CIFS=m |
117 | CONFIG_CIFS_WEAK_PW_HASH=y | 114 | CONFIG_CIFS_WEAK_PW_HASH=y |
118 | CONFIG_NLS_CODEPAGE_437=y | 115 | CONFIG_NLS_CODEPAGE_437=y |
@@ -120,12 +117,11 @@ CONFIG_NLS_ASCII=y | |||
120 | CONFIG_NLS_ISO8859_1=y | 117 | CONFIG_NLS_ISO8859_1=y |
121 | CONFIG_NLS_ISO8859_15=y | 118 | CONFIG_NLS_ISO8859_15=y |
122 | # CONFIG_ENABLE_MUST_CHECK is not set | 119 | # CONFIG_ENABLE_MUST_CHECK is not set |
123 | CONFIG_DEBUG_KERNEL=y | 120 | CONFIG_DEBUG_FS=y |
124 | # CONFIG_SCHED_DEBUG is not set | 121 | # CONFIG_SCHED_DEBUG is not set |
125 | # CONFIG_DEBUG_PREEMPT is not set | 122 | # CONFIG_DEBUG_PREEMPT is not set |
126 | # CONFIG_DEBUG_BUGVERBOSE is not set | 123 | # CONFIG_DEBUG_BUGVERBOSE is not set |
127 | CONFIG_DEBUG_INFO=y | 124 | CONFIG_DEBUG_INFO=y |
128 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
129 | CONFIG_CRYPTO_MD5=y | 125 | CONFIG_CRYPTO_MD5=y |
130 | CONFIG_CRYPTO_SHA1=y | 126 | CONFIG_CRYPTO_SHA1=y |
131 | CONFIG_CRYPTO_DES=y | 127 | CONFIG_CRYPTO_DES=y |
diff --git a/arch/arm/configs/spear3xx_defconfig b/arch/arm/configs/spear3xx_defconfig index 865980c5f212..7ff23a077f5d 100644 --- a/arch/arm/configs/spear3xx_defconfig +++ b/arch/arm/configs/spear3xx_defconfig | |||
@@ -6,7 +6,9 @@ CONFIG_MODULES=y | |||
6 | CONFIG_MODULE_UNLOAD=y | 6 | CONFIG_MODULE_UNLOAD=y |
7 | CONFIG_MODVERSIONS=y | 7 | CONFIG_MODVERSIONS=y |
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | # CONFIG_ARCH_MULTI_V7 is not set | ||
9 | CONFIG_PLAT_SPEAR=y | 10 | CONFIG_PLAT_SPEAR=y |
11 | CONFIG_ARCH_SPEAR3XX=y | ||
10 | CONFIG_MACH_SPEAR300=y | 12 | CONFIG_MACH_SPEAR300=y |
11 | CONFIG_MACH_SPEAR310=y | 13 | CONFIG_MACH_SPEAR310=y |
12 | CONFIG_MACH_SPEAR320=y | 14 | CONFIG_MACH_SPEAR320=y |
diff --git a/arch/arm/configs/spear6xx_defconfig b/arch/arm/configs/spear6xx_defconfig index a2a1265f86b6..7822980d7d55 100644 --- a/arch/arm/configs/spear6xx_defconfig +++ b/arch/arm/configs/spear6xx_defconfig | |||
@@ -6,6 +6,7 @@ CONFIG_MODULES=y | |||
6 | CONFIG_MODULE_UNLOAD=y | 6 | CONFIG_MODULE_UNLOAD=y |
7 | CONFIG_MODVERSIONS=y | 7 | CONFIG_MODVERSIONS=y |
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | # CONFIG_ARCH_MULTI_V7 is not set | ||
9 | CONFIG_PLAT_SPEAR=y | 10 | CONFIG_PLAT_SPEAR=y |
10 | CONFIG_ARCH_SPEAR6XX=y | 11 | CONFIG_ARCH_SPEAR6XX=y |
11 | CONFIG_BINFMT_MISC=y | 12 | CONFIG_BINFMT_MISC=y |
diff --git a/arch/arm/mach-bcm2835/include/mach/debug-macro.S b/arch/arm/include/debug/bcm2835.S index 8a161e44ae28..aed9199bd847 100644 --- a/arch/arm/mach-bcm2835/include/mach/debug-macro.S +++ b/arch/arm/include/debug/bcm2835.S | |||
@@ -11,7 +11,8 @@ | |||
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <mach/bcm2835_soc.h> | 14 | #define BCM2835_DEBUG_PHYS 0x20201000 |
15 | #define BCM2835_DEBUG_VIRT 0xf0201000 | ||
15 | 16 | ||
16 | .macro addruart, rp, rv, tmp | 17 | .macro addruart, rp, rv, tmp |
17 | ldr \rp, =BCM2835_DEBUG_PHYS | 18 | ldr \rp, =BCM2835_DEBUG_PHYS |
diff --git a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S b/arch/arm/include/debug/cns3xxx.S index d04c150baa1c..d04c150baa1c 100644 --- a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S +++ b/arch/arm/include/debug/cns3xxx.S | |||
diff --git a/arch/arm/mach-nomadik/include/mach/debug-macro.S b/arch/arm/include/debug/nomadik.S index 735417922ce2..735417922ce2 100644 --- a/arch/arm/mach-nomadik/include/mach/debug-macro.S +++ b/arch/arm/include/debug/nomadik.S | |||
diff --git a/arch/arm/mach-prima2/include/mach/uart.h b/arch/arm/include/debug/sirf.S index c10510d01a44..dbf250cf18e6 100644 --- a/arch/arm/mach-prima2/include/mach/uart.h +++ b/arch/arm/include/debug/sirf.S | |||
@@ -1,15 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-prima2/include/mach/uart.h | 2 | * arch/arm/mach-prima2/include/mach/debug-macro.S |
3 | * | 3 | * |
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | 4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. |
5 | * | 5 | * |
6 | * Licensed under GPLv2 or later. | 6 | * Licensed under GPLv2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #ifndef __MACH_PRIMA2_SIRFSOC_UART_H | ||
10 | #define __MACH_PRIMA2_SIRFSOC_UART_H | ||
11 | |||
12 | /* UART-1: used as serial debug port */ | ||
13 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) | 9 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) |
14 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 | 10 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 |
15 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) | 11 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) |
@@ -17,8 +13,8 @@ | |||
17 | #else | 13 | #else |
18 | #define SIRFSOC_UART1_PA_BASE 0 | 14 | #define SIRFSOC_UART1_PA_BASE 0 |
19 | #endif | 15 | #endif |
20 | #define SIRFSOC_UART1_VA_BASE SIRFSOC_VA(0x060000) | 16 | |
21 | #define SIRFSOC_UART1_SIZE SZ_4K | 17 | #define SIRFSOC_UART1_VA_BASE 0xFEC60000 |
22 | 18 | ||
23 | #define SIRFSOC_UART_TXFIFO_STATUS 0x0114 | 19 | #define SIRFSOC_UART_TXFIFO_STATUS 0x0114 |
24 | #define SIRFSOC_UART_TXFIFO_DATA 0x0118 | 20 | #define SIRFSOC_UART_TXFIFO_DATA 0x0118 |
@@ -26,4 +22,21 @@ | |||
26 | #define SIRFSOC_UART1_TXFIFO_FULL (1 << 5) | 22 | #define SIRFSOC_UART1_TXFIFO_FULL (1 << 5) |
27 | #define SIRFSOC_UART1_TXFIFO_EMPTY (1 << 6) | 23 | #define SIRFSOC_UART1_TXFIFO_EMPTY (1 << 6) |
28 | 24 | ||
29 | #endif | 25 | .macro addruart, rp, rv, tmp |
26 | ldr \rp, =SIRFSOC_UART1_PA_BASE @ physical | ||
27 | ldr \rv, =SIRFSOC_UART1_VA_BASE @ virtual | ||
28 | .endm | ||
29 | |||
30 | .macro senduart,rd,rx | ||
31 | str \rd, [\rx, #SIRFSOC_UART_TXFIFO_DATA] | ||
32 | .endm | ||
33 | |||
34 | .macro busyuart,rd,rx | ||
35 | .endm | ||
36 | |||
37 | .macro waituart,rd,rx | ||
38 | 1001: ldr \rd, [\rx, #SIRFSOC_UART_TXFIFO_STATUS] | ||
39 | tst \rd, #SIRFSOC_UART1_TXFIFO_EMPTY | ||
40 | beq 1001b | ||
41 | .endm | ||
42 | |||
diff --git a/arch/arm/include/debug/ux500.S b/arch/arm/include/debug/ux500.S new file mode 100644 index 000000000000..2848857f5b62 --- /dev/null +++ b/arch/arm/include/debug/ux500.S | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | |||
13 | #if CONFIG_UX500_DEBUG_UART > 2 | ||
14 | #error Invalid Ux500 debug UART | ||
15 | #endif | ||
16 | |||
17 | /* | ||
18 | * DEBUG_LL only works if only one SOC is built in. We don't use #else below | ||
19 | * in order to get "__UX500_UART redefined" warnings if more than one SOC is | ||
20 | * built, so that there's some hint during the build that something is wrong. | ||
21 | */ | ||
22 | |||
23 | #ifdef CONFIG_UX500_SOC_DB8500 | ||
24 | #define U8500_UART0_PHYS_BASE (0x80120000) | ||
25 | #define U8500_UART1_PHYS_BASE (0x80121000) | ||
26 | #define U8500_UART2_PHYS_BASE (0x80007000) | ||
27 | #define U8500_UART0_VIRT_BASE (0xa8120000) | ||
28 | #define U8500_UART1_VIRT_BASE (0xa8121000) | ||
29 | #define U8500_UART2_VIRT_BASE (0xa8007000) | ||
30 | #define __UX500_PHYS_UART(n) U8500_UART##n##_PHYS_BASE | ||
31 | #define __UX500_VIRT_UART(n) U8500_UART##n##_VIRT_BASE | ||
32 | #endif | ||
33 | |||
34 | #if !defined(__UX500_PHYS_UART) || !defined(__UX500_VIRT_UART) | ||
35 | #error Unknown SOC | ||
36 | #endif | ||
37 | |||
38 | #define UX500_PHYS_UART(n) __UX500_PHYS_UART(n) | ||
39 | #define UX500_VIRT_UART(n) __UX500_VIRT_UART(n) | ||
40 | #define UART_PHYS_BASE UX500_PHYS_UART(CONFIG_UX500_DEBUG_UART) | ||
41 | #define UART_VIRT_BASE UX500_VIRT_UART(CONFIG_UX500_DEBUG_UART) | ||
42 | |||
43 | .macro addruart, rp, rv, tmp | ||
44 | ldr \rp, =UART_PHYS_BASE @ no, physical address | ||
45 | ldr \rv, =UART_VIRT_BASE @ yes, virtual address | ||
46 | .endm | ||
47 | |||
48 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-bcm2835/Kconfig b/arch/arm/mach-bcm2835/Kconfig new file mode 100644 index 000000000000..560045cafc34 --- /dev/null +++ b/arch/arm/mach-bcm2835/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | config ARCH_BCM2835 | ||
2 | bool "Broadcom BCM2835 family" if ARCH_MULTI_V6 | ||
3 | select ARCH_REQUIRE_GPIOLIB | ||
4 | select ARM_AMBA | ||
5 | select ARM_ERRATA_411920 | ||
6 | select ARM_TIMER_SP804 | ||
7 | select CLKDEV_LOOKUP | ||
8 | select CLKSRC_OF | ||
9 | select CPU_V6 | ||
10 | select GENERIC_CLOCKEVENTS | ||
11 | select PINCTRL | ||
12 | select PINCTRL_BCM2835 | ||
13 | help | ||
14 | This enables support for the Broadcom BCM2835 SoC. This SoC is | ||
15 | use in the Raspberry Pi, and Roku 2 devices. | ||
diff --git a/arch/arm/mach-bcm2835/Makefile.boot b/arch/arm/mach-bcm2835/Makefile.boot deleted file mode 100644 index b3271754e9fd..000000000000 --- a/arch/arm/mach-bcm2835/Makefile.boot +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
diff --git a/arch/arm/mach-bcm2835/bcm2835.c b/arch/arm/mach-bcm2835/bcm2835.c index 6f5785985dd1..740fa9ebe249 100644 --- a/arch/arm/mach-bcm2835/bcm2835.c +++ b/arch/arm/mach-bcm2835/bcm2835.c | |||
@@ -23,8 +23,6 @@ | |||
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
25 | 25 | ||
26 | #include <mach/bcm2835_soc.h> | ||
27 | |||
28 | #define PM_RSTC 0x1c | 26 | #define PM_RSTC 0x1c |
29 | #define PM_RSTS 0x20 | 27 | #define PM_RSTS 0x20 |
30 | #define PM_WDOG 0x24 | 28 | #define PM_WDOG 0x24 |
@@ -34,6 +32,10 @@ | |||
34 | #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 | 32 | #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 |
35 | #define PM_RSTS_HADWRH_SET 0x00000040 | 33 | #define PM_RSTS_HADWRH_SET 0x00000040 |
36 | 34 | ||
35 | #define BCM2835_PERIPH_PHYS 0x20000000 | ||
36 | #define BCM2835_PERIPH_VIRT 0xf0000000 | ||
37 | #define BCM2835_PERIPH_SIZE SZ_16M | ||
38 | |||
37 | static void __iomem *wdt_regs; | 39 | static void __iomem *wdt_regs; |
38 | 40 | ||
39 | /* | 41 | /* |
diff --git a/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h b/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h deleted file mode 100644 index d4dfcf7a9cda..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Stephen Warren | ||
3 | * | ||
4 | * Derived from code: | ||
5 | * Copyright (C) 2010 Broadcom | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | */ | ||
17 | |||
18 | #ifndef __MACH_BCM2835_BCM2835_SOC_H__ | ||
19 | #define __MACH_BCM2835_BCM2835_SOC_H__ | ||
20 | |||
21 | #include <asm/sizes.h> | ||
22 | |||
23 | #define BCM2835_PERIPH_PHYS 0x20000000 | ||
24 | #define BCM2835_PERIPH_VIRT 0xf0000000 | ||
25 | #define BCM2835_PERIPH_SIZE SZ_16M | ||
26 | #define BCM2835_DEBUG_PHYS 0x20201000 | ||
27 | #define BCM2835_DEBUG_VIRT 0xf0201000 | ||
28 | |||
29 | #endif | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/gpio.h b/arch/arm/mach-bcm2835/include/mach/gpio.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/gpio.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/timex.h b/arch/arm/mach-bcm2835/include/mach/timex.h deleted file mode 100644 index 6d021e136ae3..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/timex.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * BCM2835 system clock frequency | ||
3 | * | ||
4 | * Copyright (C) 2010 Broadcom | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #ifndef __ASM_ARCH_TIMEX_H | ||
22 | #define __ASM_ARCH_TIMEX_H | ||
23 | |||
24 | #define CLOCK_TICK_RATE (1000000) | ||
25 | |||
26 | #endif | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/uncompress.h b/arch/arm/mach-bcm2835/include/mach/uncompress.h deleted file mode 100644 index bf86dca3bf71..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Broadcom | ||
3 | * Copyright (C) 2003 ARM Limited | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/io.h> | ||
17 | #include <linux/amba/serial.h> | ||
18 | #include <mach/bcm2835_soc.h> | ||
19 | |||
20 | #define UART0_BASE BCM2835_DEBUG_PHYS | ||
21 | |||
22 | #define BCM2835_UART_DR IOMEM(UART0_BASE + UART01x_DR) | ||
23 | #define BCM2835_UART_FR IOMEM(UART0_BASE + UART01x_FR) | ||
24 | #define BCM2835_UART_CR IOMEM(UART0_BASE + UART011_CR) | ||
25 | |||
26 | static inline void putc(int c) | ||
27 | { | ||
28 | while (__raw_readl(BCM2835_UART_FR) & UART01x_FR_TXFF) | ||
29 | barrier(); | ||
30 | |||
31 | __raw_writel(c, BCM2835_UART_DR); | ||
32 | } | ||
33 | |||
34 | static inline void flush(void) | ||
35 | { | ||
36 | int fr; | ||
37 | |||
38 | do { | ||
39 | fr = __raw_readl(BCM2835_UART_FR); | ||
40 | barrier(); | ||
41 | } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); | ||
42 | } | ||
43 | |||
44 | #define arch_decomp_setup() | ||
diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig index 9ebfcc46feb1..dbf0df8bb0ac 100644 --- a/arch/arm/mach-cns3xxx/Kconfig +++ b/arch/arm/mach-cns3xxx/Kconfig | |||
@@ -1,8 +1,20 @@ | |||
1 | config ARCH_CNS3XXX | ||
2 | bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6 | ||
3 | select ARM_GIC | ||
4 | select CPU_V6K | ||
5 | select GENERIC_CLOCKEVENTS | ||
6 | select MIGHT_HAVE_CACHE_L2X0 | ||
7 | select MIGHT_HAVE_PCI | ||
8 | select PCI_DOMAINS if PCI | ||
9 | help | ||
10 | Support for Cavium Networks CNS3XXX platform. | ||
11 | |||
1 | menu "CNS3XXX platform type" | 12 | menu "CNS3XXX platform type" |
2 | depends on ARCH_CNS3XXX | 13 | depends on ARCH_CNS3XXX |
3 | 14 | ||
4 | config MACH_CNS3420VB | 15 | config MACH_CNS3420VB |
5 | bool "Support for CNS3420 Validation Board" | 16 | bool "Support for CNS3420 Validation Board" |
17 | depends on ATAGS | ||
6 | help | 18 | help |
7 | Include support for the Cavium Networks CNS3420 MPCore Platform | 19 | Include support for the Cavium Networks CNS3420 MPCore Platform |
8 | Baseboard. | 20 | Baseboard. |
diff --git a/arch/arm/mach-cns3xxx/Makefile b/arch/arm/mach-cns3xxx/Makefile index 11033f1c2e23..a1ff10848698 100644 --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | obj-$(CONFIG_ARCH_CNS3XXX) += core.o pm.o devices.o | 1 | obj-$(CONFIG_ARCH_CNS3XXX) += cns3xxx.o |
2 | obj-$(CONFIG_PCI) += pcie.o | 2 | cns3xxx-y += core.o pm.o |
3 | obj-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o | 3 | cns3xxx-$(CONFIG_ATAGS) += devices.o |
4 | cns3xxx-$(CONFIG_PCI) += pcie.o | ||
5 | cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o | ||
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c index a71867e1d8d6..ce096d678aa4 100644 --- a/arch/arm/mach-cns3xxx/cns3420vb.c +++ b/arch/arm/mach-cns3xxx/cns3420vb.c | |||
@@ -31,9 +31,8 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
34 | #include <mach/cns3xxx.h> | 34 | #include "cns3xxx.h" |
35 | #include <mach/irqs.h> | 35 | #include "pm.h" |
36 | #include <mach/pm.h> | ||
37 | #include "core.h" | 36 | #include "core.h" |
38 | #include "devices.h" | 37 | #include "devices.h" |
39 | 38 | ||
@@ -247,6 +246,7 @@ static void __init cns3420_map_io(void) | |||
247 | 246 | ||
248 | MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") | 247 | MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") |
249 | .atag_offset = 0x100, | 248 | .atag_offset = 0x100, |
249 | .nr_irqs = NR_IRQS_CNS3XXX, | ||
250 | .map_io = cns3420_map_io, | 250 | .map_io = cns3420_map_io, |
251 | .init_irq = cns3xxx_init_irq, | 251 | .init_irq = cns3xxx_init_irq, |
252 | .init_time = cns3xxx_timer_init, | 252 | .init_time = cns3xxx_timer_init, |
diff --git a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h b/arch/arm/mach-cns3xxx/cns3xxx.h index 191c8e57f289..d7d3a8d64282 100644 --- a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h +++ b/arch/arm/mach-cns3xxx/cns3xxx.h | |||
@@ -553,6 +553,8 @@ int cns3xxx_cpu_clock(void); | |||
553 | /* | 553 | /* |
554 | * ARM11 MPCore interrupt sources (primary GIC) | 554 | * ARM11 MPCore interrupt sources (primary GIC) |
555 | */ | 555 | */ |
556 | #define IRQ_TC11MP_GIC_START 32 | ||
557 | |||
556 | #define IRQ_CNS3XXX_PMU (IRQ_TC11MP_GIC_START + 0) | 558 | #define IRQ_CNS3XXX_PMU (IRQ_TC11MP_GIC_START + 0) |
557 | #define IRQ_CNS3XXX_SDIO (IRQ_TC11MP_GIC_START + 1) | 559 | #define IRQ_CNS3XXX_SDIO (IRQ_TC11MP_GIC_START + 1) |
558 | #define IRQ_CNS3XXX_L2CC (IRQ_TC11MP_GIC_START + 2) | 560 | #define IRQ_CNS3XXX_L2CC (IRQ_TC11MP_GIC_START + 2) |
@@ -624,9 +626,4 @@ int cns3xxx_cpu_clock(void); | |||
624 | 626 | ||
625 | #define NR_IRQS_CNS3XXX (IRQ_TC11MP_GIC_START + 64) | 627 | #define NR_IRQS_CNS3XXX (IRQ_TC11MP_GIC_START + 64) |
626 | 628 | ||
627 | #if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_CNS3XXX) | ||
628 | #undef NR_IRQS | ||
629 | #define NR_IRQS NR_IRQS_CNS3XXX | ||
630 | #endif | ||
631 | |||
632 | #endif /* __MACH_BOARD_CNS3XXX_H */ | 629 | #endif /* __MACH_BOARD_CNS3XXX_H */ |
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c index e698f26cc0cb..49e657c15067 100644 --- a/arch/arm/mach-cns3xxx/core.c +++ b/arch/arm/mach-cns3xxx/core.c | |||
@@ -13,12 +13,18 @@ | |||
13 | #include <linux/clockchips.h> | 13 | #include <linux/clockchips.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/irqchip/arm-gic.h> | 15 | #include <linux/irqchip/arm-gic.h> |
16 | #include <linux/of_platform.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/usb/ehci_pdriver.h> | ||
19 | #include <linux/usb/ohci_pdriver.h> | ||
20 | #include <asm/mach/arch.h> | ||
16 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
17 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
18 | #include <asm/mach/irq.h> | 23 | #include <asm/mach/irq.h> |
19 | #include <asm/hardware/cache-l2x0.h> | 24 | #include <asm/hardware/cache-l2x0.h> |
20 | #include <mach/cns3xxx.h> | 25 | #include "cns3xxx.h" |
21 | #include "core.h" | 26 | #include "core.h" |
27 | #include "pm.h" | ||
22 | 28 | ||
23 | static struct map_desc cns3xxx_io_desc[] __initdata = { | 29 | static struct map_desc cns3xxx_io_desc[] __initdata = { |
24 | { | 30 | { |
@@ -276,3 +282,116 @@ void __init cns3xxx_l2x0_init(void) | |||
276 | } | 282 | } |
277 | 283 | ||
278 | #endif /* CONFIG_CACHE_L2X0 */ | 284 | #endif /* CONFIG_CACHE_L2X0 */ |
285 | |||
286 | static int csn3xxx_usb_power_on(struct platform_device *pdev) | ||
287 | { | ||
288 | /* | ||
289 | * EHCI and OHCI share the same clock and power, | ||
290 | * resetting twice would cause the 1st controller been reset. | ||
291 | * Therefore only do power up at the first up device, and | ||
292 | * power down at the last down device. | ||
293 | * | ||
294 | * Set USB AHB INCR length to 16 | ||
295 | */ | ||
296 | if (atomic_inc_return(&usb_pwr_ref) == 1) { | ||
297 | cns3xxx_pwr_power_up(1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB); | ||
298 | cns3xxx_pwr_clk_en(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST); | ||
299 | cns3xxx_pwr_soft_rst(1 << PM_SOFT_RST_REG_OFFST_USB_HOST); | ||
300 | __raw_writel((__raw_readl(MISC_CHIP_CONFIG_REG) | (0X2 << 24)), | ||
301 | MISC_CHIP_CONFIG_REG); | ||
302 | } | ||
303 | |||
304 | return 0; | ||
305 | } | ||
306 | |||
307 | static void csn3xxx_usb_power_off(struct platform_device *pdev) | ||
308 | { | ||
309 | /* | ||
310 | * EHCI and OHCI share the same clock and power, | ||
311 | * resetting twice would cause the 1st controller been reset. | ||
312 | * Therefore only do power up at the first up device, and | ||
313 | * power down at the last down device. | ||
314 | */ | ||
315 | if (atomic_dec_return(&usb_pwr_ref) == 0) | ||
316 | cns3xxx_pwr_clk_dis(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST); | ||
317 | } | ||
318 | |||
319 | static struct usb_ehci_pdata cns3xxx_usb_ehci_pdata = { | ||
320 | .power_on = csn3xxx_usb_power_on, | ||
321 | .power_off = csn3xxx_usb_power_off, | ||
322 | }; | ||
323 | |||
324 | static struct usb_ohci_pdata cns3xxx_usb_ohci_pdata = { | ||
325 | .num_ports = 1, | ||
326 | .power_on = csn3xxx_usb_power_on, | ||
327 | .power_off = csn3xxx_usb_power_off, | ||
328 | }; | ||
329 | |||
330 | static struct of_dev_auxdata cns3xxx_auxdata[] __initconst = { | ||
331 | { "intel,usb-ehci", CNS3XXX_USB_BASE, "ehci-platform", &cns3xxx_usb_ehci_pdata }, | ||
332 | { "intel,usb-ohci", CNS3XXX_USB_OHCI_BASE, "ohci-platform", &cns3xxx_usb_ohci_pdata }, | ||
333 | { "cavium,cns3420-ahci", CNS3XXX_SATA2_BASE, "ahci", NULL }, | ||
334 | { "cavium,cns3420-sdhci", CNS3XXX_SDIO_BASE, "ahci", NULL }, | ||
335 | {}, | ||
336 | }; | ||
337 | |||
338 | static void __init cns3xxx_init(void) | ||
339 | { | ||
340 | struct device_node *dn; | ||
341 | |||
342 | cns3xxx_l2x0_init(); | ||
343 | |||
344 | dn = of_find_compatible_node(NULL, NULL, "cavium,cns3420-ahci"); | ||
345 | if (of_device_is_available(dn)) { | ||
346 | u32 tmp; | ||
347 | |||
348 | tmp = __raw_readl(MISC_SATA_POWER_MODE); | ||
349 | tmp |= 0x1 << 16; /* Disable SATA PHY 0 from SLUMBER Mode */ | ||
350 | tmp |= 0x1 << 17; /* Disable SATA PHY 1 from SLUMBER Mode */ | ||
351 | __raw_writel(tmp, MISC_SATA_POWER_MODE); | ||
352 | |||
353 | /* Enable SATA PHY */ | ||
354 | cns3xxx_pwr_power_up(0x1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY0); | ||
355 | cns3xxx_pwr_power_up(0x1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY1); | ||
356 | |||
357 | /* Enable SATA Clock */ | ||
358 | cns3xxx_pwr_clk_en(0x1 << PM_CLK_GATE_REG_OFFSET_SATA); | ||
359 | |||
360 | /* De-Asscer SATA Reset */ | ||
361 | cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SATA)); | ||
362 | } | ||
363 | |||
364 | dn = of_find_compatible_node(NULL, NULL, "cavium,cns3420-sdhci"); | ||
365 | if (of_device_is_available(dn)) { | ||
366 | u32 __iomem *gpioa = IOMEM(CNS3XXX_MISC_BASE_VIRT + 0x0014); | ||
367 | u32 gpioa_pins = __raw_readl(gpioa); | ||
368 | |||
369 | /* MMC/SD pins share with GPIOA */ | ||
370 | gpioa_pins |= 0x1fff0004; | ||
371 | __raw_writel(gpioa_pins, gpioa); | ||
372 | |||
373 | cns3xxx_pwr_clk_en(CNS3XXX_PWR_CLK_EN(SDIO)); | ||
374 | cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SDIO)); | ||
375 | } | ||
376 | |||
377 | pm_power_off = cns3xxx_power_off; | ||
378 | |||
379 | of_platform_populate(NULL, of_default_bus_match_table, | ||
380 | cns3xxx_auxdata, NULL); | ||
381 | } | ||
382 | |||
383 | static const char *cns3xxx_dt_compat[] __initdata = { | ||
384 | "cavium,cns3410", | ||
385 | "cavium,cns3420", | ||
386 | NULL, | ||
387 | }; | ||
388 | |||
389 | DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx") | ||
390 | .dt_compat = cns3xxx_dt_compat, | ||
391 | .nr_irqs = NR_IRQS_CNS3XXX, | ||
392 | .map_io = cns3xxx_map_io, | ||
393 | .init_irq = cns3xxx_init_irq, | ||
394 | .init_time = cns3xxx_timer_init, | ||
395 | .init_machine = cns3xxx_init, | ||
396 | .restart = cns3xxx_restart, | ||
397 | MACHINE_END | ||
diff --git a/arch/arm/mach-cns3xxx/devices.c b/arch/arm/mach-cns3xxx/devices.c index 1e40c99b015f..7da78a2451f1 100644 --- a/arch/arm/mach-cns3xxx/devices.c +++ b/arch/arm/mach-cns3xxx/devices.c | |||
@@ -16,9 +16,8 @@ | |||
16 | #include <linux/compiler.h> | 16 | #include <linux/compiler.h> |
17 | #include <linux/dma-mapping.h> | 17 | #include <linux/dma-mapping.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <mach/cns3xxx.h> | 19 | #include "cns3xxx.h" |
20 | #include <mach/irqs.h> | 20 | #include "pm.h" |
21 | #include <mach/pm.h> | ||
22 | #include "core.h" | 21 | #include "core.h" |
23 | #include "devices.h" | 22 | #include "devices.h" |
24 | 23 | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/irqs.h b/arch/arm/mach-cns3xxx/include/mach/irqs.h deleted file mode 100644 index 2ab96f8085c8..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2000 Deep Blue Solutions Ltd. | ||
3 | * Copyright 2003 ARM Limited | ||
4 | * Copyright 2008 Cavium Networks | ||
5 | * | ||
6 | * This file is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License, Version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __MACH_IRQS_H | ||
12 | #define __MACH_IRQS_H | ||
13 | |||
14 | #define IRQ_LOCALTIMER 29 | ||
15 | #define IRQ_LOCALWDOG 30 | ||
16 | #define IRQ_TC11MP_GIC_START 32 | ||
17 | |||
18 | #include <mach/cns3xxx.h> | ||
19 | |||
20 | #ifndef NR_IRQS | ||
21 | #error "NR_IRQS not defined by the board-specific files" | ||
22 | #endif | ||
23 | |||
24 | #endif | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/timex.h b/arch/arm/mach-cns3xxx/include/mach/timex.h deleted file mode 100644 index 1fd04217cacb..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/timex.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | /* | ||
2 | * Cavium Networks architecture timex specifications | ||
3 | * | ||
4 | * Copyright 2003 ARM Limited | ||
5 | * Copyright 2008 Cavium Networks | ||
6 | * | ||
7 | * This file is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License, Version 2, as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #define CLOCK_TICK_RATE (50000000 / 16) | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/uncompress.h b/arch/arm/mach-cns3xxx/include/mach/uncompress.h deleted file mode 100644 index 7a030b99df84..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2003 ARM Limited | ||
3 | * Copyright 2008 Cavium Networks | ||
4 | * | ||
5 | * This file is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License, Version 2, as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #include <asm/mach-types.h> | ||
11 | #include <mach/cns3xxx.h> | ||
12 | |||
13 | #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00)) | ||
14 | #define AMBA_UART_LCRH(base) (*(volatile unsigned char *)((base) + 0x2c)) | ||
15 | #define AMBA_UART_CR(base) (*(volatile unsigned char *)((base) + 0x30)) | ||
16 | #define AMBA_UART_FR(base) (*(volatile unsigned char *)((base) + 0x18)) | ||
17 | |||
18 | /* | ||
19 | * Return the UART base address | ||
20 | */ | ||
21 | static inline unsigned long get_uart_base(void) | ||
22 | { | ||
23 | if (machine_is_cns3420vb()) | ||
24 | return CNS3XXX_UART0_BASE; | ||
25 | else | ||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | /* | ||
30 | * This does not append a newline | ||
31 | */ | ||
32 | static inline void putc(int c) | ||
33 | { | ||
34 | unsigned long base = get_uart_base(); | ||
35 | |||
36 | while (AMBA_UART_FR(base) & (1 << 5)) | ||
37 | barrier(); | ||
38 | |||
39 | AMBA_UART_DR(base) = c; | ||
40 | } | ||
41 | |||
42 | static inline void flush(void) | ||
43 | { | ||
44 | unsigned long base = get_uart_base(); | ||
45 | |||
46 | while (AMBA_UART_FR(base) & (1 << 3)) | ||
47 | barrier(); | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * nothing to do | ||
52 | */ | ||
53 | #define arch_decomp_setup() | ||
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c index 311328314163..c7b204bff386 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/ptrace.h> | 21 | #include <linux/ptrace.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <mach/cns3xxx.h> | 23 | #include "cns3xxx.h" |
24 | #include "core.h" | 24 | #include "core.h" |
25 | 25 | ||
26 | enum cns3xxx_access_type { | 26 | enum cns3xxx_access_type { |
diff --git a/arch/arm/mach-cns3xxx/pm.c b/arch/arm/mach-cns3xxx/pm.c index 36458080332a..79e3d47aad65 100644 --- a/arch/arm/mach-cns3xxx/pm.c +++ b/arch/arm/mach-cns3xxx/pm.c | |||
@@ -11,8 +11,8 @@ | |||
11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
12 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
13 | #include <linux/atomic.h> | 13 | #include <linux/atomic.h> |
14 | #include <mach/cns3xxx.h> | 14 | #include "cns3xxx.h" |
15 | #include <mach/pm.h> | 15 | #include "pm.h" |
16 | #include "core.h" | 16 | #include "core.h" |
17 | 17 | ||
18 | void cns3xxx_pwr_clk_en(unsigned int block) | 18 | void cns3xxx_pwr_clk_en(unsigned int block) |
diff --git a/arch/arm/mach-cns3xxx/include/mach/pm.h b/arch/arm/mach-cns3xxx/pm.h index c2588cc991d1..c2588cc991d1 100644 --- a/arch/arm/mach-cns3xxx/include/mach/pm.h +++ b/arch/arm/mach-cns3xxx/pm.h | |||
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig index 82226a5d60ef..3213badf25d8 100644 --- a/arch/arm/mach-nomadik/Kconfig +++ b/arch/arm/mach-nomadik/Kconfig | |||
@@ -1,5 +1,23 @@ | |||
1 | if ARCH_NOMADIK | 1 | config ARCH_NOMADIK |
2 | bool "ST-Ericsson Nomadik" | ||
3 | depends on ARCH_MULTI_V5 | ||
4 | select ARCH_REQUIRE_GPIOLIB | ||
5 | select ARM_AMBA | ||
6 | select ARM_VIC | ||
7 | select CLKSRC_NOMADIK_MTU | ||
8 | select COMMON_CLK | ||
9 | select CPU_ARM926T | ||
10 | select GENERIC_CLOCKEVENTS | ||
11 | select MIGHT_HAVE_CACHE_L2X0 | ||
12 | select PINCTRL | ||
13 | select PINCTRL_NOMADIK | ||
14 | select PINCTRL_STN8815 | ||
15 | select SPARSE_IRQ | ||
16 | select USE_OF | ||
17 | help | ||
18 | Support for the Nomadik platform by ST-Ericsson | ||
2 | 19 | ||
20 | if ARCH_NOMADIK | ||
3 | menu "Nomadik boards" | 21 | menu "Nomadik boards" |
4 | 22 | ||
5 | config MACH_NOMADIK_8815NHK | 23 | config MACH_NOMADIK_8815NHK |
@@ -9,8 +27,8 @@ config MACH_NOMADIK_8815NHK | |||
9 | select I2C_ALGOBIT | 27 | select I2C_ALGOBIT |
10 | 28 | ||
11 | endmenu | 29 | endmenu |
30 | endif | ||
12 | 31 | ||
13 | config NOMADIK_8815 | 32 | config NOMADIK_8815 |
33 | depends on ARCH_NOMADIK | ||
14 | bool | 34 | bool |
15 | |||
16 | endif | ||
diff --git a/arch/arm/mach-nomadik/Makefile.boot b/arch/arm/mach-nomadik/Makefile.boot deleted file mode 100644 index ff0a4b5b0a82..000000000000 --- a/arch/arm/mach-nomadik/Makefile.boot +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
4 | |||
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index 21c1aa512640..59f6ff5c9bae 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/gpio.h> | 38 | #include <linux/gpio.h> |
39 | #include <linux/amba/mmci.h> | 39 | #include <linux/amba/mmci.h> |
40 | 40 | ||
41 | #include <mach/irqs.h> | ||
42 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
43 | #include <asm/mach/map.h> | 42 | #include <asm/mach/map.h> |
44 | #include <asm/mach/time.h> | 43 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-nomadik/include/mach/irqs.h b/arch/arm/mach-nomadik/include/mach/irqs.h deleted file mode 100644 index 90ac965a92fe..000000000000 --- a/arch/arm/mach-nomadik/include/mach/irqs.h +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | /* | ||
2 | * mach-nomadik/include/mach/irqs.h | ||
3 | * | ||
4 | * Copyright (C) ST Microelectronics | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARCH_IRQS_H | ||
21 | #define __ASM_ARCH_IRQS_H | ||
22 | |||
23 | #define IRQ_VIC_START 32 /* first VIC interrupt is 1 */ | ||
24 | |||
25 | /* | ||
26 | * Interrupt numbers generic for all Nomadik Chip cuts | ||
27 | */ | ||
28 | #define IRQ_WATCHDOG (IRQ_VIC_START+0) | ||
29 | #define IRQ_SOFTINT (IRQ_VIC_START+1) | ||
30 | #define IRQ_CRYPTO (IRQ_VIC_START+2) | ||
31 | #define IRQ_OWM (IRQ_VIC_START+3) | ||
32 | #define IRQ_MTU0 (IRQ_VIC_START+4) | ||
33 | #define IRQ_MTU1 (IRQ_VIC_START+5) | ||
34 | #define IRQ_GPIO0 (IRQ_VIC_START+6) | ||
35 | #define IRQ_GPIO1 (IRQ_VIC_START+7) | ||
36 | #define IRQ_GPIO2 (IRQ_VIC_START+8) | ||
37 | #define IRQ_GPIO3 (IRQ_VIC_START+9) | ||
38 | #define IRQ_RTC_RTT (IRQ_VIC_START+10) | ||
39 | #define IRQ_SSP (IRQ_VIC_START+11) | ||
40 | #define IRQ_UART0 (IRQ_VIC_START+12) | ||
41 | #define IRQ_DMA1 (IRQ_VIC_START+13) | ||
42 | #define IRQ_CLCD_MDIF (IRQ_VIC_START+14) | ||
43 | #define IRQ_DMA0 (IRQ_VIC_START+15) | ||
44 | #define IRQ_PWRFAIL (IRQ_VIC_START+16) | ||
45 | #define IRQ_UART1 (IRQ_VIC_START+17) | ||
46 | #define IRQ_FIRDA (IRQ_VIC_START+18) | ||
47 | #define IRQ_MSP0 (IRQ_VIC_START+19) | ||
48 | #define IRQ_I2C0 (IRQ_VIC_START+20) | ||
49 | #define IRQ_I2C1 (IRQ_VIC_START+21) | ||
50 | #define IRQ_SDMMC (IRQ_VIC_START+22) | ||
51 | #define IRQ_USBOTG (IRQ_VIC_START+23) | ||
52 | #define IRQ_SVA_IT0 (IRQ_VIC_START+24) | ||
53 | #define IRQ_SVA_IT1 (IRQ_VIC_START+25) | ||
54 | #define IRQ_SAA_IT0 (IRQ_VIC_START+26) | ||
55 | #define IRQ_SAA_IT1 (IRQ_VIC_START+27) | ||
56 | #define IRQ_UART2 (IRQ_VIC_START+28) | ||
57 | #define IRQ_MSP2 (IRQ_VIC_START+29) | ||
58 | #define IRQ_L2CC (IRQ_VIC_START+30) | ||
59 | #define IRQ_HPI (IRQ_VIC_START+31) | ||
60 | #define IRQ_SKE (IRQ_VIC_START+32) | ||
61 | #define IRQ_KP (IRQ_VIC_START+33) | ||
62 | #define IRQ_MEMST (IRQ_VIC_START+34) | ||
63 | #define IRQ_SGA_IT (IRQ_VIC_START+35) | ||
64 | #define IRQ_USBM (IRQ_VIC_START+36) | ||
65 | #define IRQ_MSP1 (IRQ_VIC_START+37) | ||
66 | |||
67 | #define NOMADIK_GPIO_OFFSET (IRQ_VIC_START+64) | ||
68 | |||
69 | /* After chip-specific IRQ numbers we have the GPIO ones */ | ||
70 | #define NOMADIK_NR_GPIO 128 /* last 4 not wired to pins */ | ||
71 | #define NOMADIK_GPIO_TO_IRQ(gpio) ((gpio) + NOMADIK_GPIO_OFFSET) | ||
72 | #define NOMADIK_IRQ_TO_GPIO(irq) ((irq) - NOMADIK_GPIO_OFFSET) | ||
73 | #define NOMADIK_NR_IRQS NOMADIK_GPIO_TO_IRQ(NOMADIK_NR_GPIO) | ||
74 | |||
75 | /* Following two are used by entry_macro.S, to access our dual-vic */ | ||
76 | #define VIC_REG_IRQSR0 0 | ||
77 | #define VIC_REG_IRQSR1 0x20 | ||
78 | |||
79 | #endif /* __ASM_ARCH_IRQS_H */ | ||
diff --git a/arch/arm/mach-nomadik/include/mach/timex.h b/arch/arm/mach-nomadik/include/mach/timex.h deleted file mode 100644 index 318b8896ce96..000000000000 --- a/arch/arm/mach-nomadik/include/mach/timex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_TIMEX_H | ||
2 | #define __ASM_ARCH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 2400000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-nomadik/include/mach/uncompress.h b/arch/arm/mach-nomadik/include/mach/uncompress.h deleted file mode 100644 index 106fccca2021..000000000000 --- a/arch/arm/mach-nomadik/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 STMicroelectronics | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
20 | #define __ASM_ARCH_UNCOMPRESS_H | ||
21 | |||
22 | #include <asm/setup.h> | ||
23 | #include <asm/io.h> | ||
24 | |||
25 | /* we need the constants in amba/serial.h, but it refers to amba_device */ | ||
26 | struct amba_device; | ||
27 | #include <linux/amba/serial.h> | ||
28 | |||
29 | #define NOMADIK_UART_DR (void __iomem *)0x101FB000 | ||
30 | #define NOMADIK_UART_LCRH (void __iomem *)0x101FB02c | ||
31 | #define NOMADIK_UART_CR (void __iomem *)0x101FB030 | ||
32 | #define NOMADIK_UART_FR (void __iomem *)0x101FB018 | ||
33 | |||
34 | static void putc(const char c) | ||
35 | { | ||
36 | /* Do nothing if the UART is not enabled. */ | ||
37 | if (!(readb(NOMADIK_UART_CR) & UART01x_CR_UARTEN)) | ||
38 | return; | ||
39 | |||
40 | if (c == '\n') | ||
41 | putc('\r'); | ||
42 | |||
43 | while (readb(NOMADIK_UART_FR) & UART01x_FR_TXFF) | ||
44 | barrier(); | ||
45 | writeb(c, NOMADIK_UART_DR); | ||
46 | } | ||
47 | |||
48 | static void flush(void) | ||
49 | { | ||
50 | if (!(readb(NOMADIK_UART_CR) & UART01x_CR_UARTEN)) | ||
51 | return; | ||
52 | while (readb(NOMADIK_UART_FR) & UART01x_FR_BUSY) | ||
53 | barrier(); | ||
54 | } | ||
55 | |||
56 | static inline void arch_decomp_setup(void) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig index 4f7379fe01e2..587c0bd70434 100644 --- a/arch/arm/mach-prima2/Kconfig +++ b/arch/arm/mach-prima2/Kconfig | |||
@@ -1,6 +1,26 @@ | |||
1 | config ARCH_SIRF | ||
2 | bool "CSR SiRF" if ARCH_MULTI_V7 | ||
3 | select ARCH_REQUIRE_GPIOLIB | ||
4 | select GENERIC_CLOCKEVENTS | ||
5 | select GENERIC_IRQ_CHIP | ||
6 | select MIGHT_HAVE_CACHE_L2X0 | ||
7 | select NO_IOPORT | ||
8 | select PINCTRL | ||
9 | select PINCTRL_SIRF | ||
10 | help | ||
11 | Support for CSR SiRFprimaII/Marco/Polo platforms | ||
12 | |||
1 | if ARCH_SIRF | 13 | if ARCH_SIRF |
2 | 14 | ||
3 | menu "CSR SiRF primaII/Marco/Polo Specific Features" | 15 | menu "CSR SiRF atlas6/primaII/Marco/Polo Specific Features" |
16 | |||
17 | config ARCH_ATLAS6 | ||
18 | bool "CSR SiRFSoC ATLAS6 ARM Cortex A9 Platform" | ||
19 | default y | ||
20 | select CPU_V7 | ||
21 | select SIRF_IRQ | ||
22 | help | ||
23 | Support for CSR SiRFSoC ARM Cortex A9 Platform | ||
4 | 24 | ||
5 | config ARCH_PRIMA2 | 25 | config ARCH_PRIMA2 |
6 | bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform" | 26 | bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform" |
diff --git a/arch/arm/mach-prima2/Makefile b/arch/arm/mach-prima2/Makefile index bfe360cbd177..7a6b4a323125 100644 --- a/arch/arm/mach-prima2/Makefile +++ b/arch/arm/mach-prima2/Makefile | |||
@@ -4,8 +4,7 @@ obj-y += rtciobrg.o | |||
4 | obj-$(CONFIG_DEBUG_LL) += lluart.o | 4 | obj-$(CONFIG_DEBUG_LL) += lluart.o |
5 | obj-$(CONFIG_CACHE_L2X0) += l2x0.o | 5 | obj-$(CONFIG_CACHE_L2X0) += l2x0.o |
6 | obj-$(CONFIG_SUSPEND) += pm.o sleep.o | 6 | obj-$(CONFIG_SUSPEND) += pm.o sleep.o |
7 | obj-$(CONFIG_SIRF_IRQ) += irq.o | ||
8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 7 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
9 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 8 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
10 | obj-$(CONFIG_ARCH_PRIMA2) += timer-prima2.o | 9 | |
11 | obj-$(CONFIG_ARCH_MARCO) += timer-marco.o | 10 | CFLAGS_hotplug.o += -march=armv7-a |
diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c index 2d57aa479a7b..4f94cd87972a 100644 --- a/arch/arm/mach-prima2/common.c +++ b/arch/arm/mach-prima2/common.c | |||
@@ -6,6 +6,7 @@ | |||
6 | * Licensed under GPLv2 or later. | 6 | * Licensed under GPLv2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/clocksource.h> | ||
9 | #include <linux/init.h> | 10 | #include <linux/init.h> |
10 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
11 | #include <linux/irqchip.h> | 12 | #include <linux/irqchip.h> |
@@ -31,12 +32,38 @@ void __init sirfsoc_init_late(void) | |||
31 | sirfsoc_pm_init(); | 32 | sirfsoc_pm_init(); |
32 | } | 33 | } |
33 | 34 | ||
35 | static __init void sirfsoc_init_time(void) | ||
36 | { | ||
37 | /* initialize clocking early, we want to set the OS timer */ | ||
38 | sirfsoc_of_clk_init(); | ||
39 | clocksource_of_init(); | ||
40 | } | ||
41 | |||
34 | static __init void sirfsoc_map_io(void) | 42 | static __init void sirfsoc_map_io(void) |
35 | { | 43 | { |
36 | sirfsoc_map_lluart(); | 44 | sirfsoc_map_lluart(); |
37 | sirfsoc_map_scu(); | 45 | sirfsoc_map_scu(); |
38 | } | 46 | } |
39 | 47 | ||
48 | #ifdef CONFIG_ARCH_ATLAS6 | ||
49 | static const char *atlas6_dt_match[] __initdata = { | ||
50 | "sirf,atlas6", | ||
51 | NULL | ||
52 | }; | ||
53 | |||
54 | DT_MACHINE_START(ATLAS6_DT, "Generic ATLAS6 (Flattened Device Tree)") | ||
55 | /* Maintainer: Barry Song <baohua.song@csr.com> */ | ||
56 | .nr_irqs = 128, | ||
57 | .map_io = sirfsoc_map_io, | ||
58 | .init_irq = irqchip_init, | ||
59 | .init_time = sirfsoc_init_time, | ||
60 | .init_machine = sirfsoc_mach_init, | ||
61 | .init_late = sirfsoc_init_late, | ||
62 | .dt_compat = atlas6_dt_match, | ||
63 | .restart = sirfsoc_restart, | ||
64 | MACHINE_END | ||
65 | #endif | ||
66 | |||
40 | #ifdef CONFIG_ARCH_PRIMA2 | 67 | #ifdef CONFIG_ARCH_PRIMA2 |
41 | static const char *prima2_dt_match[] __initdata = { | 68 | static const char *prima2_dt_match[] __initdata = { |
42 | "sirf,prima2", | 69 | "sirf,prima2", |
@@ -45,12 +72,10 @@ static const char *prima2_dt_match[] __initdata = { | |||
45 | 72 | ||
46 | DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)") | 73 | DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)") |
47 | /* Maintainer: Barry Song <baohua.song@csr.com> */ | 74 | /* Maintainer: Barry Song <baohua.song@csr.com> */ |
75 | .nr_irqs = 128, | ||
48 | .map_io = sirfsoc_map_io, | 76 | .map_io = sirfsoc_map_io, |
49 | .init_irq = sirfsoc_of_irq_init, | 77 | .init_irq = irqchip_init, |
50 | .init_time = sirfsoc_prima2_timer_init, | 78 | .init_time = sirfsoc_init_time, |
51 | #ifdef CONFIG_MULTI_IRQ_HANDLER | ||
52 | .handle_irq = sirfsoc_handle_irq, | ||
53 | #endif | ||
54 | .dma_zone_size = SZ_256M, | 79 | .dma_zone_size = SZ_256M, |
55 | .init_machine = sirfsoc_mach_init, | 80 | .init_machine = sirfsoc_mach_init, |
56 | .init_late = sirfsoc_init_late, | 81 | .init_late = sirfsoc_init_late, |
@@ -70,7 +95,7 @@ DT_MACHINE_START(MARCO_DT, "Generic MARCO (Flattened Device Tree)") | |||
70 | .smp = smp_ops(sirfsoc_smp_ops), | 95 | .smp = smp_ops(sirfsoc_smp_ops), |
71 | .map_io = sirfsoc_map_io, | 96 | .map_io = sirfsoc_map_io, |
72 | .init_irq = irqchip_init, | 97 | .init_irq = irqchip_init, |
73 | .init_time = sirfsoc_marco_timer_init, | 98 | .init_time = sirfsoc_init_time, |
74 | .init_machine = sirfsoc_mach_init, | 99 | .init_machine = sirfsoc_mach_init, |
75 | .init_late = sirfsoc_init_late, | 100 | .init_late = sirfsoc_init_late, |
76 | .dt_compat = marco_dt_match, | 101 | .dt_compat = marco_dt_match, |
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h index b7c26b62e4a7..81135cd88e54 100644 --- a/arch/arm/mach-prima2/common.h +++ b/arch/arm/mach-prima2/common.h | |||
@@ -13,8 +13,8 @@ | |||
13 | #include <asm/mach/time.h> | 13 | #include <asm/mach/time.h> |
14 | #include <asm/exception.h> | 14 | #include <asm/exception.h> |
15 | 15 | ||
16 | extern void sirfsoc_prima2_timer_init(void); | 16 | #define SIRFSOC_VA_BASE _AC(0xFEC00000, UL) |
17 | extern void sirfsoc_marco_timer_init(void); | 17 | #define SIRFSOC_VA(x) (SIRFSOC_VA_BASE + ((x) & 0x00FFF000)) |
18 | 18 | ||
19 | extern struct smp_operations sirfsoc_smp_ops; | 19 | extern struct smp_operations sirfsoc_smp_ops; |
20 | extern void sirfsoc_secondary_startup(void); | 20 | extern void sirfsoc_secondary_startup(void); |
diff --git a/arch/arm/mach-prima2/include/mach/clkdev.h b/arch/arm/mach-prima2/include/mach/clkdev.h deleted file mode 100644 index 66932518b1b7..000000000000 --- a/arch/arm/mach-prima2/include/mach/clkdev.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/clkdev.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_CLKDEV_H | ||
10 | #define __MACH_CLKDEV_H | ||
11 | |||
12 | #define __clk_get(clk) ({ 1; }) | ||
13 | #define __clk_put(clk) do { } while (0) | ||
14 | |||
15 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/debug-macro.S b/arch/arm/mach-prima2/include/mach/debug-macro.S deleted file mode 100644 index cd97492bb075..000000000000 --- a/arch/arm/mach-prima2/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <mach/hardware.h> | ||
10 | #include <mach/uart.h> | ||
11 | |||
12 | .macro addruart, rp, rv, tmp | ||
13 | ldr \rp, =SIRFSOC_UART1_PA_BASE @ physical | ||
14 | ldr \rv, =SIRFSOC_UART1_VA_BASE @ virtual | ||
15 | .endm | ||
16 | |||
17 | .macro senduart,rd,rx | ||
18 | str \rd, [\rx, #SIRFSOC_UART_TXFIFO_DATA] | ||
19 | .endm | ||
20 | |||
21 | .macro busyuart,rd,rx | ||
22 | .endm | ||
23 | |||
24 | .macro waituart,rd,rx | ||
25 | 1001: ldr \rd, [\rx, #SIRFSOC_UART_TXFIFO_STATUS] | ||
26 | tst \rd, #SIRFSOC_UART1_TXFIFO_EMPTY | ||
27 | beq 1001b | ||
28 | .endm | ||
29 | |||
diff --git a/arch/arm/mach-prima2/include/mach/entry-macro.S b/arch/arm/mach-prima2/include/mach/entry-macro.S deleted file mode 100644 index 86434e7a5be9..000000000000 --- a/arch/arm/mach-prima2/include/mach/entry-macro.S +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/entry-macro.S | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <mach/hardware.h> | ||
10 | |||
11 | #define SIRFSOC_INT_ID 0x38 | ||
12 | |||
13 | .macro get_irqnr_preamble, base, tmp | ||
14 | ldr \base, =sirfsoc_intc_base | ||
15 | ldr \base, [\base] | ||
16 | .endm | ||
17 | |||
18 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
19 | ldr \irqnr, [\base, #SIRFSOC_INT_ID] @ Get the highest priority irq | ||
20 | cmp \irqnr, #0x40 @ the irq num can't be larger than 0x3f | ||
21 | movges \irqnr, #0 | ||
22 | .endm | ||
diff --git a/arch/arm/mach-prima2/include/mach/hardware.h b/arch/arm/mach-prima2/include/mach/hardware.h deleted file mode 100644 index 105b96964f25..000000000000 --- a/arch/arm/mach-prima2/include/mach/hardware.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/hardware.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_HARDWARE_H__ | ||
10 | #define __MACH_HARDWARE_H__ | ||
11 | |||
12 | #include <asm/sizes.h> | ||
13 | #include <mach/map.h> | ||
14 | |||
15 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/irqs.h b/arch/arm/mach-prima2/include/mach/irqs.h deleted file mode 100644 index b778a0f248ed..000000000000 --- a/arch/arm/mach-prima2/include/mach/irqs.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/irqs.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_IRQS_H | ||
10 | #define __ASM_ARCH_IRQS_H | ||
11 | |||
12 | #define SIRFSOC_INTENAL_IRQ_START 0 | ||
13 | #define SIRFSOC_INTENAL_IRQ_END 127 | ||
14 | #define SIRFSOC_GPIO_IRQ_START (SIRFSOC_INTENAL_IRQ_END + 1) | ||
15 | #define NR_IRQS 288 | ||
16 | |||
17 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/map.h b/arch/arm/mach-prima2/include/mach/map.h deleted file mode 100644 index 6f243532570c..000000000000 --- a/arch/arm/mach-prima2/include/mach/map.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* | ||
2 | * memory & I/O static mapping definitions for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_PRIMA2_MAP_H__ | ||
10 | #define __MACH_PRIMA2_MAP_H__ | ||
11 | |||
12 | #include <linux/const.h> | ||
13 | |||
14 | #define SIRFSOC_VA_BASE _AC(0xFEC00000, UL) | ||
15 | |||
16 | #define SIRFSOC_VA(x) (SIRFSOC_VA_BASE + ((x) & 0x00FFF000)) | ||
17 | |||
18 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/timex.h b/arch/arm/mach-prima2/include/mach/timex.h deleted file mode 100644 index d6f98a75e562..000000000000 --- a/arch/arm/mach-prima2/include/mach/timex.h +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/timex.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_TIMEX_H__ | ||
10 | #define __MACH_TIMEX_H__ | ||
11 | |||
12 | #define CLOCK_TICK_RATE 1000000 | ||
13 | |||
14 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/uncompress.h b/arch/arm/mach-prima2/include/mach/uncompress.h deleted file mode 100644 index d1513a33709a..000000000000 --- a/arch/arm/mach-prima2/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/uncompress.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
10 | #define __ASM_ARCH_UNCOMPRESS_H | ||
11 | |||
12 | #include <linux/io.h> | ||
13 | #include <mach/hardware.h> | ||
14 | #include <mach/uart.h> | ||
15 | |||
16 | void arch_decomp_setup(void) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | static __inline__ void putc(char c) | ||
21 | { | ||
22 | /* | ||
23 | * during kernel decompression, all mappings are flat: | ||
24 | * virt_addr == phys_addr | ||
25 | */ | ||
26 | if (!SIRFSOC_UART1_PA_BASE) | ||
27 | return; | ||
28 | |||
29 | while (__raw_readl((void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_STATUS) | ||
30 | & SIRFSOC_UART1_TXFIFO_FULL) | ||
31 | barrier(); | ||
32 | |||
33 | __raw_writel(c, (void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_DATA); | ||
34 | } | ||
35 | |||
36 | static inline void flush(void) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | #endif | ||
41 | |||
diff --git a/arch/arm/mach-prima2/irq.c b/arch/arm/mach-prima2/irq.c deleted file mode 100644 index 6c0f3e9c43fb..000000000000 --- a/arch/arm/mach-prima2/irq.c +++ /dev/null | |||
@@ -1,129 +0,0 @@ | |||
1 | /* | ||
2 | * interrupt controller support for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/init.h> | ||
10 | #include <linux/io.h> | ||
11 | #include <linux/irq.h> | ||
12 | #include <linux/of.h> | ||
13 | #include <linux/of_address.h> | ||
14 | #include <linux/irqdomain.h> | ||
15 | #include <linux/syscore_ops.h> | ||
16 | #include <asm/mach/irq.h> | ||
17 | #include <asm/exception.h> | ||
18 | #include <mach/hardware.h> | ||
19 | |||
20 | #define SIRFSOC_INT_RISC_MASK0 0x0018 | ||
21 | #define SIRFSOC_INT_RISC_MASK1 0x001C | ||
22 | #define SIRFSOC_INT_RISC_LEVEL0 0x0020 | ||
23 | #define SIRFSOC_INT_RISC_LEVEL1 0x0024 | ||
24 | #define SIRFSOC_INIT_IRQ_ID 0x0038 | ||
25 | |||
26 | void __iomem *sirfsoc_intc_base; | ||
27 | |||
28 | static __init void | ||
29 | sirfsoc_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) | ||
30 | { | ||
31 | struct irq_chip_generic *gc; | ||
32 | struct irq_chip_type *ct; | ||
33 | |||
34 | gc = irq_alloc_generic_chip("SIRFINTC", 1, irq_start, base, handle_level_irq); | ||
35 | ct = gc->chip_types; | ||
36 | |||
37 | ct->chip.irq_mask = irq_gc_mask_clr_bit; | ||
38 | ct->chip.irq_unmask = irq_gc_mask_set_bit; | ||
39 | ct->regs.mask = SIRFSOC_INT_RISC_MASK0; | ||
40 | |||
41 | irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, IRQ_NOREQUEST, 0); | ||
42 | } | ||
43 | |||
44 | static __init void sirfsoc_irq_init(void) | ||
45 | { | ||
46 | sirfsoc_alloc_gc(sirfsoc_intc_base, 0, 32); | ||
47 | sirfsoc_alloc_gc(sirfsoc_intc_base + 4, 32, | ||
48 | SIRFSOC_INTENAL_IRQ_END + 1 - 32); | ||
49 | |||
50 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
51 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
52 | |||
53 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
54 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
55 | } | ||
56 | |||
57 | asmlinkage void __exception_irq_entry sirfsoc_handle_irq(struct pt_regs *regs) | ||
58 | { | ||
59 | u32 irqstat, irqnr; | ||
60 | |||
61 | irqstat = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INIT_IRQ_ID); | ||
62 | irqnr = irqstat & 0xff; | ||
63 | |||
64 | handle_IRQ(irqnr, regs); | ||
65 | } | ||
66 | |||
67 | static struct of_device_id intc_ids[] = { | ||
68 | { .compatible = "sirf,prima2-intc" }, | ||
69 | {}, | ||
70 | }; | ||
71 | |||
72 | void __init sirfsoc_of_irq_init(void) | ||
73 | { | ||
74 | struct device_node *np; | ||
75 | |||
76 | np = of_find_matching_node(NULL, intc_ids); | ||
77 | if (!np) | ||
78 | return; | ||
79 | |||
80 | sirfsoc_intc_base = of_iomap(np, 0); | ||
81 | if (!sirfsoc_intc_base) | ||
82 | panic("unable to map intc cpu registers\n"); | ||
83 | |||
84 | irq_domain_add_legacy(np, SIRFSOC_INTENAL_IRQ_END + 1, 0, 0, | ||
85 | &irq_domain_simple_ops, NULL); | ||
86 | |||
87 | of_node_put(np); | ||
88 | |||
89 | sirfsoc_irq_init(); | ||
90 | } | ||
91 | |||
92 | struct sirfsoc_irq_status { | ||
93 | u32 mask0; | ||
94 | u32 mask1; | ||
95 | u32 level0; | ||
96 | u32 level1; | ||
97 | }; | ||
98 | |||
99 | static struct sirfsoc_irq_status sirfsoc_irq_st; | ||
100 | |||
101 | static int sirfsoc_irq_suspend(void) | ||
102 | { | ||
103 | sirfsoc_irq_st.mask0 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
104 | sirfsoc_irq_st.mask1 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
105 | sirfsoc_irq_st.level0 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
106 | sirfsoc_irq_st.level1 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
107 | |||
108 | return 0; | ||
109 | } | ||
110 | |||
111 | static void sirfsoc_irq_resume(void) | ||
112 | { | ||
113 | writel_relaxed(sirfsoc_irq_st.mask0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
114 | writel_relaxed(sirfsoc_irq_st.mask1, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
115 | writel_relaxed(sirfsoc_irq_st.level0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
116 | writel_relaxed(sirfsoc_irq_st.level1, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
117 | } | ||
118 | |||
119 | static struct syscore_ops sirfsoc_irq_syscore_ops = { | ||
120 | .suspend = sirfsoc_irq_suspend, | ||
121 | .resume = sirfsoc_irq_resume, | ||
122 | }; | ||
123 | |||
124 | static int __init sirfsoc_irq_pm_init(void) | ||
125 | { | ||
126 | register_syscore_ops(&sirfsoc_irq_syscore_ops); | ||
127 | return 0; | ||
128 | } | ||
129 | device_initcall(sirfsoc_irq_pm_init); | ||
diff --git a/arch/arm/mach-prima2/lluart.c b/arch/arm/mach-prima2/lluart.c index a89f9b3c8cc5..99c0c927ca4a 100644 --- a/arch/arm/mach-prima2/lluart.c +++ b/arch/arm/mach-prima2/lluart.c | |||
@@ -9,8 +9,18 @@ | |||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <asm/page.h> | 10 | #include <asm/page.h> |
11 | #include <asm/mach/map.h> | 11 | #include <asm/mach/map.h> |
12 | #include <mach/map.h> | 12 | #include "common.h" |
13 | #include <mach/uart.h> | 13 | |
14 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) | ||
15 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 | ||
16 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) | ||
17 | #define SIRFSOC_UART1_PA_BASE 0xcc060000 | ||
18 | #else | ||
19 | #define SIRFSOC_UART1_PA_BASE 0 | ||
20 | #endif | ||
21 | |||
22 | #define SIRFSOC_UART1_VA_BASE SIRFSOC_VA(0x060000) | ||
23 | #define SIRFSOC_UART1_SIZE SZ_4K | ||
14 | 24 | ||
15 | void __init sirfsoc_map_lluart(void) | 25 | void __init sirfsoc_map_lluart(void) |
16 | { | 26 | { |
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c index 4b788310f6a6..d52e322e616c 100644 --- a/arch/arm/mach-prima2/platsmp.c +++ b/arch/arm/mach-prima2/platsmp.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/smp_scu.h> | 18 | #include <asm/smp_scu.h> |
19 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
20 | #include <asm/cputype.h> | 20 | #include <asm/cputype.h> |
21 | #include <mach/map.h> | ||
22 | 21 | ||
23 | #include "common.h" | 22 | #include "common.h" |
24 | 23 | ||
diff --git a/arch/arm/mach-prima2/timer-marco.c b/arch/arm/mach-prima2/timer-marco.c deleted file mode 100644 index f4eea2e97eb0..000000000000 --- a/arch/arm/mach-prima2/timer-marco.c +++ /dev/null | |||
@@ -1,316 +0,0 @@ | |||
1 | /* | ||
2 | * System timer for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/interrupt.h> | ||
11 | #include <linux/clockchips.h> | ||
12 | #include <linux/clocksource.h> | ||
13 | #include <linux/bitops.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/clk.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_irq.h> | ||
19 | #include <linux/of_address.h> | ||
20 | #include <asm/sched_clock.h> | ||
21 | #include <asm/localtimer.h> | ||
22 | #include <asm/mach/time.h> | ||
23 | |||
24 | #include "common.h" | ||
25 | |||
26 | #define SIRFSOC_TIMER_32COUNTER_0_CTRL 0x0000 | ||
27 | #define SIRFSOC_TIMER_32COUNTER_1_CTRL 0x0004 | ||
28 | #define SIRFSOC_TIMER_MATCH_0 0x0018 | ||
29 | #define SIRFSOC_TIMER_MATCH_1 0x001c | ||
30 | #define SIRFSOC_TIMER_COUNTER_0 0x0048 | ||
31 | #define SIRFSOC_TIMER_COUNTER_1 0x004c | ||
32 | #define SIRFSOC_TIMER_INTR_STATUS 0x0060 | ||
33 | #define SIRFSOC_TIMER_WATCHDOG_EN 0x0064 | ||
34 | #define SIRFSOC_TIMER_64COUNTER_CTRL 0x0068 | ||
35 | #define SIRFSOC_TIMER_64COUNTER_LO 0x006c | ||
36 | #define SIRFSOC_TIMER_64COUNTER_HI 0x0070 | ||
37 | #define SIRFSOC_TIMER_64COUNTER_LOAD_LO 0x0074 | ||
38 | #define SIRFSOC_TIMER_64COUNTER_LOAD_HI 0x0078 | ||
39 | #define SIRFSOC_TIMER_64COUNTER_RLATCHED_LO 0x007c | ||
40 | #define SIRFSOC_TIMER_64COUNTER_RLATCHED_HI 0x0080 | ||
41 | |||
42 | #define SIRFSOC_TIMER_REG_CNT 6 | ||
43 | |||
44 | static const u32 sirfsoc_timer_reg_list[SIRFSOC_TIMER_REG_CNT] = { | ||
45 | SIRFSOC_TIMER_WATCHDOG_EN, | ||
46 | SIRFSOC_TIMER_32COUNTER_0_CTRL, | ||
47 | SIRFSOC_TIMER_32COUNTER_1_CTRL, | ||
48 | SIRFSOC_TIMER_64COUNTER_CTRL, | ||
49 | SIRFSOC_TIMER_64COUNTER_RLATCHED_LO, | ||
50 | SIRFSOC_TIMER_64COUNTER_RLATCHED_HI, | ||
51 | }; | ||
52 | |||
53 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; | ||
54 | |||
55 | static void __iomem *sirfsoc_timer_base; | ||
56 | static void __init sirfsoc_of_timer_map(void); | ||
57 | |||
58 | /* disable count and interrupt */ | ||
59 | static inline void sirfsoc_timer_count_disable(int idx) | ||
60 | { | ||
61 | writel_relaxed(readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL + 4 * idx) & ~0x7, | ||
62 | sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL + 4 * idx); | ||
63 | } | ||
64 | |||
65 | /* enable count and interrupt */ | ||
66 | static inline void sirfsoc_timer_count_enable(int idx) | ||
67 | { | ||
68 | writel_relaxed(readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL + 4 * idx) | 0x7, | ||
69 | sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL + 4 * idx); | ||
70 | } | ||
71 | |||
72 | /* timer interrupt handler */ | ||
73 | static irqreturn_t sirfsoc_timer_interrupt(int irq, void *dev_id) | ||
74 | { | ||
75 | struct clock_event_device *ce = dev_id; | ||
76 | int cpu = smp_processor_id(); | ||
77 | |||
78 | /* clear timer interrupt */ | ||
79 | writel_relaxed(BIT(cpu), sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS); | ||
80 | |||
81 | if (ce->mode == CLOCK_EVT_MODE_ONESHOT) | ||
82 | sirfsoc_timer_count_disable(cpu); | ||
83 | |||
84 | ce->event_handler(ce); | ||
85 | |||
86 | return IRQ_HANDLED; | ||
87 | } | ||
88 | |||
89 | /* read 64-bit timer counter */ | ||
90 | static cycle_t sirfsoc_timer_read(struct clocksource *cs) | ||
91 | { | ||
92 | u64 cycles; | ||
93 | |||
94 | writel_relaxed((readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL) | | ||
95 | BIT(0)) & ~BIT(1), sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); | ||
96 | |||
97 | cycles = readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_RLATCHED_HI); | ||
98 | cycles = (cycles << 32) | readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_RLATCHED_LO); | ||
99 | |||
100 | return cycles; | ||
101 | } | ||
102 | |||
103 | static int sirfsoc_timer_set_next_event(unsigned long delta, | ||
104 | struct clock_event_device *ce) | ||
105 | { | ||
106 | int cpu = smp_processor_id(); | ||
107 | |||
108 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_0 + | ||
109 | 4 * cpu); | ||
110 | writel_relaxed(delta, sirfsoc_timer_base + SIRFSOC_TIMER_MATCH_0 + | ||
111 | 4 * cpu); | ||
112 | |||
113 | /* enable the tick */ | ||
114 | sirfsoc_timer_count_enable(cpu); | ||
115 | |||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | static void sirfsoc_timer_set_mode(enum clock_event_mode mode, | ||
120 | struct clock_event_device *ce) | ||
121 | { | ||
122 | switch (mode) { | ||
123 | case CLOCK_EVT_MODE_ONESHOT: | ||
124 | /* enable in set_next_event */ | ||
125 | break; | ||
126 | default: | ||
127 | break; | ||
128 | } | ||
129 | |||
130 | sirfsoc_timer_count_disable(smp_processor_id()); | ||
131 | } | ||
132 | |||
133 | static void sirfsoc_clocksource_suspend(struct clocksource *cs) | ||
134 | { | ||
135 | int i; | ||
136 | |||
137 | for (i = 0; i < SIRFSOC_TIMER_REG_CNT; i++) | ||
138 | sirfsoc_timer_reg_val[i] = readl_relaxed(sirfsoc_timer_base + sirfsoc_timer_reg_list[i]); | ||
139 | } | ||
140 | |||
141 | static void sirfsoc_clocksource_resume(struct clocksource *cs) | ||
142 | { | ||
143 | int i; | ||
144 | |||
145 | for (i = 0; i < SIRFSOC_TIMER_REG_CNT - 2; i++) | ||
146 | writel_relaxed(sirfsoc_timer_reg_val[i], sirfsoc_timer_base + sirfsoc_timer_reg_list[i]); | ||
147 | |||
148 | writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 2], | ||
149 | sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_LOAD_LO); | ||
150 | writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 1], | ||
151 | sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_LOAD_HI); | ||
152 | |||
153 | writel_relaxed(readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL) | | ||
154 | BIT(1) | BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); | ||
155 | } | ||
156 | |||
157 | static struct clock_event_device sirfsoc_clockevent = { | ||
158 | .name = "sirfsoc_clockevent", | ||
159 | .rating = 200, | ||
160 | .features = CLOCK_EVT_FEAT_ONESHOT, | ||
161 | .set_mode = sirfsoc_timer_set_mode, | ||
162 | .set_next_event = sirfsoc_timer_set_next_event, | ||
163 | }; | ||
164 | |||
165 | static struct clocksource sirfsoc_clocksource = { | ||
166 | .name = "sirfsoc_clocksource", | ||
167 | .rating = 200, | ||
168 | .mask = CLOCKSOURCE_MASK(64), | ||
169 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
170 | .read = sirfsoc_timer_read, | ||
171 | .suspend = sirfsoc_clocksource_suspend, | ||
172 | .resume = sirfsoc_clocksource_resume, | ||
173 | }; | ||
174 | |||
175 | static struct irqaction sirfsoc_timer_irq = { | ||
176 | .name = "sirfsoc_timer0", | ||
177 | .flags = IRQF_TIMER | IRQF_NOBALANCING, | ||
178 | .handler = sirfsoc_timer_interrupt, | ||
179 | .dev_id = &sirfsoc_clockevent, | ||
180 | }; | ||
181 | |||
182 | #ifdef CONFIG_LOCAL_TIMERS | ||
183 | |||
184 | static struct irqaction sirfsoc_timer1_irq = { | ||
185 | .name = "sirfsoc_timer1", | ||
186 | .flags = IRQF_TIMER | IRQF_NOBALANCING, | ||
187 | .handler = sirfsoc_timer_interrupt, | ||
188 | }; | ||
189 | |||
190 | static int __cpuinit sirfsoc_local_timer_setup(struct clock_event_device *ce) | ||
191 | { | ||
192 | /* Use existing clock_event for cpu 0 */ | ||
193 | if (!smp_processor_id()) | ||
194 | return 0; | ||
195 | |||
196 | ce->irq = sirfsoc_timer1_irq.irq; | ||
197 | ce->name = "local_timer"; | ||
198 | ce->features = sirfsoc_clockevent.features; | ||
199 | ce->rating = sirfsoc_clockevent.rating; | ||
200 | ce->set_mode = sirfsoc_timer_set_mode; | ||
201 | ce->set_next_event = sirfsoc_timer_set_next_event; | ||
202 | ce->shift = sirfsoc_clockevent.shift; | ||
203 | ce->mult = sirfsoc_clockevent.mult; | ||
204 | ce->max_delta_ns = sirfsoc_clockevent.max_delta_ns; | ||
205 | ce->min_delta_ns = sirfsoc_clockevent.min_delta_ns; | ||
206 | |||
207 | sirfsoc_timer1_irq.dev_id = ce; | ||
208 | BUG_ON(setup_irq(ce->irq, &sirfsoc_timer1_irq)); | ||
209 | irq_set_affinity(sirfsoc_timer1_irq.irq, cpumask_of(1)); | ||
210 | |||
211 | clockevents_register_device(ce); | ||
212 | return 0; | ||
213 | } | ||
214 | |||
215 | static void sirfsoc_local_timer_stop(struct clock_event_device *ce) | ||
216 | { | ||
217 | sirfsoc_timer_count_disable(1); | ||
218 | |||
219 | remove_irq(sirfsoc_timer1_irq.irq, &sirfsoc_timer1_irq); | ||
220 | } | ||
221 | |||
222 | static struct local_timer_ops sirfsoc_local_timer_ops __cpuinitdata = { | ||
223 | .setup = sirfsoc_local_timer_setup, | ||
224 | .stop = sirfsoc_local_timer_stop, | ||
225 | }; | ||
226 | #endif /* CONFIG_LOCAL_TIMERS */ | ||
227 | |||
228 | static void __init sirfsoc_clockevent_init(void) | ||
229 | { | ||
230 | clockevents_calc_mult_shift(&sirfsoc_clockevent, CLOCK_TICK_RATE, 60); | ||
231 | |||
232 | sirfsoc_clockevent.max_delta_ns = | ||
233 | clockevent_delta2ns(-2, &sirfsoc_clockevent); | ||
234 | sirfsoc_clockevent.min_delta_ns = | ||
235 | clockevent_delta2ns(2, &sirfsoc_clockevent); | ||
236 | |||
237 | sirfsoc_clockevent.cpumask = cpumask_of(0); | ||
238 | clockevents_register_device(&sirfsoc_clockevent); | ||
239 | #ifdef CONFIG_LOCAL_TIMERS | ||
240 | local_timer_register(&sirfsoc_local_timer_ops); | ||
241 | #endif | ||
242 | } | ||
243 | |||
244 | /* initialize the kernel jiffy timer source */ | ||
245 | void __init sirfsoc_marco_timer_init(void) | ||
246 | { | ||
247 | unsigned long rate; | ||
248 | u32 timer_div; | ||
249 | struct clk *clk; | ||
250 | |||
251 | /* initialize clocking early, we want to set the OS timer */ | ||
252 | sirfsoc_of_clk_init(); | ||
253 | |||
254 | /* timer's input clock is io clock */ | ||
255 | clk = clk_get_sys("io", NULL); | ||
256 | |||
257 | BUG_ON(IS_ERR(clk)); | ||
258 | rate = clk_get_rate(clk); | ||
259 | |||
260 | BUG_ON(rate < CLOCK_TICK_RATE); | ||
261 | BUG_ON(rate % CLOCK_TICK_RATE); | ||
262 | |||
263 | sirfsoc_of_timer_map(); | ||
264 | |||
265 | /* Initialize the timer dividers */ | ||
266 | timer_div = rate / CLOCK_TICK_RATE - 1; | ||
267 | writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); | ||
268 | writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL); | ||
269 | writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_1_CTRL); | ||
270 | |||
271 | /* Initialize timer counters to 0 */ | ||
272 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_LOAD_LO); | ||
273 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_LOAD_HI); | ||
274 | writel_relaxed(readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL) | | ||
275 | BIT(1) | BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); | ||
276 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_0); | ||
277 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_1); | ||
278 | |||
279 | /* Clear all interrupts */ | ||
280 | writel_relaxed(0xFFFF, sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS); | ||
281 | |||
282 | BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); | ||
283 | |||
284 | BUG_ON(setup_irq(sirfsoc_timer_irq.irq, &sirfsoc_timer_irq)); | ||
285 | |||
286 | sirfsoc_clockevent_init(); | ||
287 | } | ||
288 | |||
289 | static struct of_device_id timer_ids[] = { | ||
290 | { .compatible = "sirf,marco-tick" }, | ||
291 | {}, | ||
292 | }; | ||
293 | |||
294 | static void __init sirfsoc_of_timer_map(void) | ||
295 | { | ||
296 | struct device_node *np; | ||
297 | |||
298 | np = of_find_matching_node(NULL, timer_ids); | ||
299 | if (!np) | ||
300 | return; | ||
301 | sirfsoc_timer_base = of_iomap(np, 0); | ||
302 | if (!sirfsoc_timer_base) | ||
303 | panic("unable to map timer cpu registers\n"); | ||
304 | |||
305 | sirfsoc_timer_irq.irq = irq_of_parse_and_map(np, 0); | ||
306 | if (!sirfsoc_timer_irq.irq) | ||
307 | panic("No irq passed for timer0 via DT\n"); | ||
308 | |||
309 | #ifdef CONFIG_LOCAL_TIMERS | ||
310 | sirfsoc_timer1_irq.irq = irq_of_parse_and_map(np, 1); | ||
311 | if (!sirfsoc_timer1_irq.irq) | ||
312 | panic("No irq passed for timer1 via DT\n"); | ||
313 | #endif | ||
314 | |||
315 | of_node_put(np); | ||
316 | } | ||
diff --git a/arch/arm/mach-prima2/timer-prima2.c b/arch/arm/mach-prima2/timer-prima2.c deleted file mode 100644 index 6da584f8a949..000000000000 --- a/arch/arm/mach-prima2/timer-prima2.c +++ /dev/null | |||
@@ -1,241 +0,0 @@ | |||
1 | /* | ||
2 | * System timer for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/interrupt.h> | ||
11 | #include <linux/clockchips.h> | ||
12 | #include <linux/clocksource.h> | ||
13 | #include <linux/bitops.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/clk.h> | ||
16 | #include <linux/err.h> | ||
17 | #include <linux/slab.h> | ||
18 | #include <linux/of.h> | ||
19 | #include <linux/of_address.h> | ||
20 | #include <mach/map.h> | ||
21 | #include <asm/sched_clock.h> | ||
22 | #include <asm/mach/time.h> | ||
23 | |||
24 | #include "common.h" | ||
25 | |||
26 | #define SIRFSOC_TIMER_COUNTER_LO 0x0000 | ||
27 | #define SIRFSOC_TIMER_COUNTER_HI 0x0004 | ||
28 | #define SIRFSOC_TIMER_MATCH_0 0x0008 | ||
29 | #define SIRFSOC_TIMER_MATCH_1 0x000C | ||
30 | #define SIRFSOC_TIMER_MATCH_2 0x0010 | ||
31 | #define SIRFSOC_TIMER_MATCH_3 0x0014 | ||
32 | #define SIRFSOC_TIMER_MATCH_4 0x0018 | ||
33 | #define SIRFSOC_TIMER_MATCH_5 0x001C | ||
34 | #define SIRFSOC_TIMER_STATUS 0x0020 | ||
35 | #define SIRFSOC_TIMER_INT_EN 0x0024 | ||
36 | #define SIRFSOC_TIMER_WATCHDOG_EN 0x0028 | ||
37 | #define SIRFSOC_TIMER_DIV 0x002C | ||
38 | #define SIRFSOC_TIMER_LATCH 0x0030 | ||
39 | #define SIRFSOC_TIMER_LATCHED_LO 0x0034 | ||
40 | #define SIRFSOC_TIMER_LATCHED_HI 0x0038 | ||
41 | |||
42 | #define SIRFSOC_TIMER_WDT_INDEX 5 | ||
43 | |||
44 | #define SIRFSOC_TIMER_LATCH_BIT BIT(0) | ||
45 | |||
46 | #define SIRFSOC_TIMER_REG_CNT 11 | ||
47 | |||
48 | static const u32 sirfsoc_timer_reg_list[SIRFSOC_TIMER_REG_CNT] = { | ||
49 | SIRFSOC_TIMER_MATCH_0, SIRFSOC_TIMER_MATCH_1, SIRFSOC_TIMER_MATCH_2, | ||
50 | SIRFSOC_TIMER_MATCH_3, SIRFSOC_TIMER_MATCH_4, SIRFSOC_TIMER_MATCH_5, | ||
51 | SIRFSOC_TIMER_INT_EN, SIRFSOC_TIMER_WATCHDOG_EN, SIRFSOC_TIMER_DIV, | ||
52 | SIRFSOC_TIMER_LATCHED_LO, SIRFSOC_TIMER_LATCHED_HI, | ||
53 | }; | ||
54 | |||
55 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; | ||
56 | |||
57 | static void __iomem *sirfsoc_timer_base; | ||
58 | static void __init sirfsoc_of_timer_map(void); | ||
59 | |||
60 | /* timer0 interrupt handler */ | ||
61 | static irqreturn_t sirfsoc_timer_interrupt(int irq, void *dev_id) | ||
62 | { | ||
63 | struct clock_event_device *ce = dev_id; | ||
64 | |||
65 | WARN_ON(!(readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_STATUS) & BIT(0))); | ||
66 | |||
67 | /* clear timer0 interrupt */ | ||
68 | writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS); | ||
69 | |||
70 | ce->event_handler(ce); | ||
71 | |||
72 | return IRQ_HANDLED; | ||
73 | } | ||
74 | |||
75 | /* read 64-bit timer counter */ | ||
76 | static cycle_t sirfsoc_timer_read(struct clocksource *cs) | ||
77 | { | ||
78 | u64 cycles; | ||
79 | |||
80 | /* latch the 64-bit timer counter */ | ||
81 | writel_relaxed(SIRFSOC_TIMER_LATCH_BIT, sirfsoc_timer_base + SIRFSOC_TIMER_LATCH); | ||
82 | cycles = readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_LATCHED_HI); | ||
83 | cycles = (cycles << 32) | readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_LATCHED_LO); | ||
84 | |||
85 | return cycles; | ||
86 | } | ||
87 | |||
88 | static int sirfsoc_timer_set_next_event(unsigned long delta, | ||
89 | struct clock_event_device *ce) | ||
90 | { | ||
91 | unsigned long now, next; | ||
92 | |||
93 | writel_relaxed(SIRFSOC_TIMER_LATCH_BIT, sirfsoc_timer_base + SIRFSOC_TIMER_LATCH); | ||
94 | now = readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_LATCHED_LO); | ||
95 | next = now + delta; | ||
96 | writel_relaxed(next, sirfsoc_timer_base + SIRFSOC_TIMER_MATCH_0); | ||
97 | writel_relaxed(SIRFSOC_TIMER_LATCH_BIT, sirfsoc_timer_base + SIRFSOC_TIMER_LATCH); | ||
98 | now = readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_LATCHED_LO); | ||
99 | |||
100 | return next - now > delta ? -ETIME : 0; | ||
101 | } | ||
102 | |||
103 | static void sirfsoc_timer_set_mode(enum clock_event_mode mode, | ||
104 | struct clock_event_device *ce) | ||
105 | { | ||
106 | u32 val = readl_relaxed(sirfsoc_timer_base + SIRFSOC_TIMER_INT_EN); | ||
107 | switch (mode) { | ||
108 | case CLOCK_EVT_MODE_PERIODIC: | ||
109 | WARN_ON(1); | ||
110 | break; | ||
111 | case CLOCK_EVT_MODE_ONESHOT: | ||
112 | writel_relaxed(val | BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_INT_EN); | ||
113 | break; | ||
114 | case CLOCK_EVT_MODE_SHUTDOWN: | ||
115 | writel_relaxed(val & ~BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_INT_EN); | ||
116 | break; | ||
117 | case CLOCK_EVT_MODE_UNUSED: | ||
118 | case CLOCK_EVT_MODE_RESUME: | ||
119 | break; | ||
120 | } | ||
121 | } | ||
122 | |||
123 | static void sirfsoc_clocksource_suspend(struct clocksource *cs) | ||
124 | { | ||
125 | int i; | ||
126 | |||
127 | writel_relaxed(SIRFSOC_TIMER_LATCH_BIT, sirfsoc_timer_base + SIRFSOC_TIMER_LATCH); | ||
128 | |||
129 | for (i = 0; i < SIRFSOC_TIMER_REG_CNT; i++) | ||
130 | sirfsoc_timer_reg_val[i] = readl_relaxed(sirfsoc_timer_base + sirfsoc_timer_reg_list[i]); | ||
131 | } | ||
132 | |||
133 | static void sirfsoc_clocksource_resume(struct clocksource *cs) | ||
134 | { | ||
135 | int i; | ||
136 | |||
137 | for (i = 0; i < SIRFSOC_TIMER_REG_CNT - 2; i++) | ||
138 | writel_relaxed(sirfsoc_timer_reg_val[i], sirfsoc_timer_base + sirfsoc_timer_reg_list[i]); | ||
139 | |||
140 | writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 2], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); | ||
141 | writel_relaxed(sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT - 1], sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); | ||
142 | } | ||
143 | |||
144 | static struct clock_event_device sirfsoc_clockevent = { | ||
145 | .name = "sirfsoc_clockevent", | ||
146 | .rating = 200, | ||
147 | .features = CLOCK_EVT_FEAT_ONESHOT, | ||
148 | .set_mode = sirfsoc_timer_set_mode, | ||
149 | .set_next_event = sirfsoc_timer_set_next_event, | ||
150 | }; | ||
151 | |||
152 | static struct clocksource sirfsoc_clocksource = { | ||
153 | .name = "sirfsoc_clocksource", | ||
154 | .rating = 200, | ||
155 | .mask = CLOCKSOURCE_MASK(64), | ||
156 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
157 | .read = sirfsoc_timer_read, | ||
158 | .suspend = sirfsoc_clocksource_suspend, | ||
159 | .resume = sirfsoc_clocksource_resume, | ||
160 | }; | ||
161 | |||
162 | static struct irqaction sirfsoc_timer_irq = { | ||
163 | .name = "sirfsoc_timer0", | ||
164 | .flags = IRQF_TIMER, | ||
165 | .irq = 0, | ||
166 | .handler = sirfsoc_timer_interrupt, | ||
167 | .dev_id = &sirfsoc_clockevent, | ||
168 | }; | ||
169 | |||
170 | /* Overwrite weak default sched_clock with more precise one */ | ||
171 | static u32 notrace sirfsoc_read_sched_clock(void) | ||
172 | { | ||
173 | return (u32)(sirfsoc_timer_read(NULL) & 0xffffffff); | ||
174 | } | ||
175 | |||
176 | static void __init sirfsoc_clockevent_init(void) | ||
177 | { | ||
178 | sirfsoc_clockevent.cpumask = cpumask_of(0); | ||
179 | clockevents_config_and_register(&sirfsoc_clockevent, CLOCK_TICK_RATE, | ||
180 | 2, -2); | ||
181 | } | ||
182 | |||
183 | /* initialize the kernel jiffy timer source */ | ||
184 | void __init sirfsoc_prima2_timer_init(void) | ||
185 | { | ||
186 | unsigned long rate; | ||
187 | struct clk *clk; | ||
188 | |||
189 | /* initialize clocking early, we want to set the OS timer */ | ||
190 | sirfsoc_of_clk_init(); | ||
191 | |||
192 | /* timer's input clock is io clock */ | ||
193 | clk = clk_get_sys("io", NULL); | ||
194 | |||
195 | BUG_ON(IS_ERR(clk)); | ||
196 | |||
197 | rate = clk_get_rate(clk); | ||
198 | |||
199 | BUG_ON(rate < CLOCK_TICK_RATE); | ||
200 | BUG_ON(rate % CLOCK_TICK_RATE); | ||
201 | |||
202 | sirfsoc_of_timer_map(); | ||
203 | |||
204 | writel_relaxed(rate / CLOCK_TICK_RATE / 2 - 1, sirfsoc_timer_base + SIRFSOC_TIMER_DIV); | ||
205 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); | ||
206 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); | ||
207 | writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS); | ||
208 | |||
209 | BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); | ||
210 | |||
211 | setup_sched_clock(sirfsoc_read_sched_clock, 32, CLOCK_TICK_RATE); | ||
212 | |||
213 | BUG_ON(setup_irq(sirfsoc_timer_irq.irq, &sirfsoc_timer_irq)); | ||
214 | |||
215 | sirfsoc_clockevent_init(); | ||
216 | } | ||
217 | |||
218 | static struct of_device_id timer_ids[] = { | ||
219 | { .compatible = "sirf,prima2-tick" }, | ||
220 | {}, | ||
221 | }; | ||
222 | |||
223 | static void __init sirfsoc_of_timer_map(void) | ||
224 | { | ||
225 | struct device_node *np; | ||
226 | const unsigned int *intspec; | ||
227 | |||
228 | np = of_find_matching_node(NULL, timer_ids); | ||
229 | if (!np) | ||
230 | return; | ||
231 | sirfsoc_timer_base = of_iomap(np, 0); | ||
232 | if (!sirfsoc_timer_base) | ||
233 | panic("unable to map timer cpu registers\n"); | ||
234 | |||
235 | /* Get the interrupts property */ | ||
236 | intspec = of_get_property(np, "interrupts", NULL); | ||
237 | BUG_ON(!intspec); | ||
238 | sirfsoc_timer_irq.irq = be32_to_cpup(intspec); | ||
239 | |||
240 | of_node_put(np); | ||
241 | } | ||
diff --git a/arch/arm/mach-spear/Kconfig b/arch/arm/mach-spear/Kconfig new file mode 100644 index 000000000000..4c52ee2b77dc --- /dev/null +++ b/arch/arm/mach-spear/Kconfig | |||
@@ -0,0 +1,103 @@ | |||
1 | # | ||
2 | # SPEAr Platform configuration file | ||
3 | # | ||
4 | |||
5 | menuconfig PLAT_SPEAR | ||
6 | bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5 | ||
7 | default PLAT_SPEAR_SINGLE | ||
8 | select ARCH_REQUIRE_GPIOLIB | ||
9 | select ARM_AMBA | ||
10 | select CLKDEV_LOOKUP | ||
11 | select CLKSRC_MMIO | ||
12 | select COMMON_CLK | ||
13 | select GENERIC_CLOCKEVENTS | ||
14 | select HAVE_CLK | ||
15 | |||
16 | if PLAT_SPEAR | ||
17 | |||
18 | config ARCH_SPEAR13XX | ||
19 | bool "ST SPEAr13xx" | ||
20 | depends on ARCH_MULTI_V7 || PLAT_SPEAR_SINGLE | ||
21 | select ARCH_HAVE_CPUFREQ | ||
22 | select ARM_GIC | ||
23 | select CPU_V7 | ||
24 | select GPIO_SPEAR_SPICS | ||
25 | select HAVE_SMP | ||
26 | select MIGHT_HAVE_CACHE_L2X0 | ||
27 | select PINCTRL | ||
28 | select USE_OF | ||
29 | help | ||
30 | Supports for ARM's SPEAR13XX family | ||
31 | |||
32 | if ARCH_SPEAR13XX | ||
33 | |||
34 | config MACH_SPEAR1310 | ||
35 | bool "SPEAr1310 Machine support with Device Tree" | ||
36 | select PINCTRL_SPEAR1310 | ||
37 | help | ||
38 | Supports ST SPEAr1310 machine configured via the device-tree | ||
39 | |||
40 | config MACH_SPEAR1340 | ||
41 | bool "SPEAr1340 Machine support with Device Tree" | ||
42 | select PINCTRL_SPEAR1340 | ||
43 | help | ||
44 | Supports ST SPEAr1340 machine configured via the device-tree | ||
45 | |||
46 | endif #ARCH_SPEAR13XX | ||
47 | |||
48 | config ARCH_SPEAR3XX | ||
49 | bool "ST SPEAr3xx" | ||
50 | depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE | ||
51 | depends on !ARCH_SPEAR13XX | ||
52 | select ARM_VIC | ||
53 | select CPU_ARM926T | ||
54 | select PINCTRL | ||
55 | select USE_OF | ||
56 | help | ||
57 | Supports for ARM's SPEAR3XX family | ||
58 | |||
59 | if ARCH_SPEAR3XX | ||
60 | |||
61 | config MACH_SPEAR300 | ||
62 | bool "SPEAr300 Machine support with Device Tree" | ||
63 | select PINCTRL_SPEAR300 | ||
64 | help | ||
65 | Supports ST SPEAr300 machine configured via the device-tree | ||
66 | |||
67 | config MACH_SPEAR310 | ||
68 | bool "SPEAr310 Machine support with Device Tree" | ||
69 | select PINCTRL_SPEAR310 | ||
70 | help | ||
71 | Supports ST SPEAr310 machine configured via the device-tree | ||
72 | |||
73 | config MACH_SPEAR320 | ||
74 | bool "SPEAr320 Machine support with Device Tree" | ||
75 | select PINCTRL_SPEAR320 | ||
76 | help | ||
77 | Supports ST SPEAr320 machine configured via the device-tree | ||
78 | |||
79 | endif | ||
80 | |||
81 | config ARCH_SPEAR6XX | ||
82 | bool "ST SPEAr6XX" | ||
83 | depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE | ||
84 | depends on !ARCH_SPEAR13XX | ||
85 | select ARM_VIC | ||
86 | select CPU_ARM926T | ||
87 | help | ||
88 | Supports for ARM's SPEAR6XX family | ||
89 | |||
90 | config MACH_SPEAR600 | ||
91 | def_bool y | ||
92 | depends on ARCH_SPEAR6XX | ||
93 | select USE_OF | ||
94 | help | ||
95 | Supports ST SPEAr600 boards configured via the device-treesource "arch/arm/mach-spear6xx/Kconfig" | ||
96 | |||
97 | config ARCH_SPEAR_AUTO | ||
98 | def_bool PLAT_SPEAR_SINGLE | ||
99 | depends on !ARCH_SPEAR13XX && !ARCH_SPEAR6XX | ||
100 | select ARCH_SPEAR3XX | ||
101 | |||
102 | endif | ||
103 | |||
diff --git a/arch/arm/mach-spear/Makefile b/arch/arm/mach-spear/Makefile new file mode 100644 index 000000000000..af9bffb94f1c --- /dev/null +++ b/arch/arm/mach-spear/Makefile | |||
@@ -0,0 +1,26 @@ | |||
1 | # | ||
2 | # SPEAr Platform specific Makefile | ||
3 | # | ||
4 | |||
5 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include | ||
6 | |||
7 | # Common support | ||
8 | obj-y := restart.o time.o | ||
9 | |||
10 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | ||
11 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | ||
12 | |||
13 | obj-$(CONFIG_ARCH_SPEAR13XX) += spear13xx.o | ||
14 | obj-$(CONFIG_MACH_SPEAR1310) += spear1310.o | ||
15 | obj-$(CONFIG_MACH_SPEAR1340) += spear1340.o | ||
16 | |||
17 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear3xx.o | ||
18 | obj-$(CONFIG_ARCH_SPEAR3XX) += pl080.o | ||
19 | obj-$(CONFIG_MACH_SPEAR300) += spear300.o | ||
20 | obj-$(CONFIG_MACH_SPEAR310) += spear310.o | ||
21 | obj-$(CONFIG_MACH_SPEAR320) += spear320.o | ||
22 | |||
23 | obj-$(CONFIG_ARCH_SPEAR6XX) += spear6xx.o | ||
24 | obj-$(CONFIG_ARCH_SPEAR6XX) += pl080.o | ||
25 | |||
26 | CFLAGS_hotplug.o += -march=armv7-a | ||
diff --git a/arch/arm/mach-spear13xx/Makefile.boot b/arch/arm/mach-spear/Makefile.boot index 4674a4c221db..4674a4c221db 100644 --- a/arch/arm/mach-spear13xx/Makefile.boot +++ b/arch/arm/mach-spear/Makefile.boot | |||
diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear/generic.h index 633e678e01a3..8ba7e75b648d 100644 --- a/arch/arm/mach-spear13xx/include/mach/generic.h +++ b/arch/arm/mach-spear/generic.h | |||
@@ -1,9 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-spear13xx/include/mach/generic.h | 2 | * spear machine family generic header file |
3 | * | 3 | * |
4 | * spear13xx machine family generic header file | 4 | * Copyright (C) 2009-2012 ST Microelectronics |
5 | * | 5 | * Rajeev Kumar <rajeev-dlh.kumar@st.com> |
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | 6 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 7 | * |
9 | * This file is licensed under the terms of the GNU General Public | 8 | * This file is licensed under the terms of the GNU General Public |
@@ -15,37 +14,46 @@ | |||
15 | #define __MACH_GENERIC_H | 14 | #define __MACH_GENERIC_H |
16 | 15 | ||
17 | #include <linux/dmaengine.h> | 16 | #include <linux/dmaengine.h> |
17 | #include <linux/amba/pl08x.h> | ||
18 | #include <linux/init.h> | ||
18 | #include <asm/mach/time.h> | 19 | #include <asm/mach/time.h> |
19 | 20 | ||
20 | /* Add spear13xx structure declarations here */ | ||
21 | extern void spear13xx_timer_init(void); | 21 | extern void spear13xx_timer_init(void); |
22 | extern void spear3xx_timer_init(void); | ||
22 | extern struct pl022_ssp_controller pl022_plat_data; | 23 | extern struct pl022_ssp_controller pl022_plat_data; |
24 | extern struct pl08x_platform_data pl080_plat_data; | ||
23 | extern struct dw_dma_platform_data dmac_plat_data; | 25 | extern struct dw_dma_platform_data dmac_plat_data; |
24 | extern struct dw_dma_slave cf_dma_priv; | 26 | extern struct dw_dma_slave cf_dma_priv; |
25 | extern struct dw_dma_slave nand_read_dma_priv; | 27 | extern struct dw_dma_slave nand_read_dma_priv; |
26 | extern struct dw_dma_slave nand_write_dma_priv; | 28 | extern struct dw_dma_slave nand_write_dma_priv; |
29 | bool dw_dma_filter(struct dma_chan *chan, void *slave); | ||
27 | 30 | ||
28 | /* Add spear13xx family function declarations here */ | ||
29 | void __init spear_setup_of_timer(void); | 31 | void __init spear_setup_of_timer(void); |
32 | void __init spear3xx_clk_init(void __iomem *misc_base, | ||
33 | void __iomem *soc_config_base); | ||
34 | void __init spear3xx_map_io(void); | ||
35 | void __init spear3xx_dt_init_irq(void); | ||
36 | void __init spear6xx_clk_init(void __iomem *misc_base); | ||
30 | void __init spear13xx_map_io(void); | 37 | void __init spear13xx_map_io(void); |
31 | void __init spear13xx_l2x0_init(void); | 38 | void __init spear13xx_l2x0_init(void); |
32 | bool dw_dma_filter(struct dma_chan *chan, void *slave); | 39 | |
33 | void spear_restart(char, const char *); | 40 | void spear_restart(char, const char *); |
41 | |||
34 | void spear13xx_secondary_startup(void); | 42 | void spear13xx_secondary_startup(void); |
35 | void __cpuinit spear13xx_cpu_die(unsigned int cpu); | 43 | void __cpuinit spear13xx_cpu_die(unsigned int cpu); |
36 | 44 | ||
37 | extern struct smp_operations spear13xx_smp_ops; | 45 | extern struct smp_operations spear13xx_smp_ops; |
38 | 46 | ||
39 | #ifdef CONFIG_MACH_SPEAR1310 | 47 | #ifdef CONFIG_MACH_SPEAR1310 |
40 | void __init spear1310_clk_init(void); | 48 | void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base); |
41 | #else | 49 | #else |
42 | static inline void spear1310_clk_init(void) {} | 50 | static inline void spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base) {} |
43 | #endif | 51 | #endif |
44 | 52 | ||
45 | #ifdef CONFIG_MACH_SPEAR1340 | 53 | #ifdef CONFIG_MACH_SPEAR1340 |
46 | void __init spear1340_clk_init(void); | 54 | void __init spear1340_clk_init(void __iomem *misc_base); |
47 | #else | 55 | #else |
48 | static inline void spear1340_clk_init(void) {} | 56 | static inline void spear1340_clk_init(void __iomem *misc_base) {} |
49 | #endif | 57 | #endif |
50 | 58 | ||
51 | #endif /* __MACH_GENERIC_H */ | 59 | #endif /* __MACH_GENERIC_H */ |
diff --git a/arch/arm/mach-spear13xx/headsmp.S b/arch/arm/mach-spear/headsmp.S index ed85473a047f..ed85473a047f 100644 --- a/arch/arm/mach-spear13xx/headsmp.S +++ b/arch/arm/mach-spear/headsmp.S | |||
diff --git a/arch/arm/mach-spear13xx/hotplug.c b/arch/arm/mach-spear/hotplug.c index a7d2dd11a4f2..a7d2dd11a4f2 100644 --- a/arch/arm/mach-spear13xx/hotplug.c +++ b/arch/arm/mach-spear/hotplug.c | |||
diff --git a/arch/arm/plat-spear/include/plat/debug-macro.S b/arch/arm/mach-spear/include/mach/debug-macro.S index 75b05ad0fbad..75b05ad0fbad 100644 --- a/arch/arm/plat-spear/include/plat/debug-macro.S +++ b/arch/arm/mach-spear/include/mach/debug-macro.S | |||
diff --git a/arch/arm/mach-spear6xx/include/mach/irqs.h b/arch/arm/mach-spear/include/mach/irqs.h index 37a5c411a866..92da0a8c6bce 100644 --- a/arch/arm/mach-spear6xx/include/mach/irqs.h +++ b/arch/arm/mach-spear/include/mach/irqs.h | |||
@@ -1,10 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-spear6xx/include/mach/irqs.h | 2 | * IRQ helper macros for spear machine family |
3 | * | 3 | * |
4 | * IRQ helper macros for SPEAr6xx machine family | 4 | * Copyright (C) 2009-2012 ST Microelectronics |
5 | * | 5 | * Rajeev Kumar <rajeev-dlh.kumar@st.com> |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Viresh Kumar <viresh.linux@gmail.com> |
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | 7 | * |
9 | * This file is licensed under the terms of the GNU General Public | 8 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
@@ -14,6 +13,11 @@ | |||
14 | #ifndef __MACH_IRQS_H | 13 | #ifndef __MACH_IRQS_H |
15 | #define __MACH_IRQS_H | 14 | #define __MACH_IRQS_H |
16 | 15 | ||
16 | #ifdef CONFIG_ARCH_SPEAR3XX | ||
17 | #define NR_IRQS 256 | ||
18 | #endif | ||
19 | |||
20 | #ifdef CONFIG_ARCH_SPEAR6XX | ||
17 | /* IRQ definitions */ | 21 | /* IRQ definitions */ |
18 | /* VIC 1 */ | 22 | /* VIC 1 */ |
19 | #define IRQ_VIC_END 64 | 23 | #define IRQ_VIC_END 64 |
@@ -21,5 +25,11 @@ | |||
21 | /* GPIO pins virtual irqs */ | 25 | /* GPIO pins virtual irqs */ |
22 | #define VIRTUAL_IRQS 24 | 26 | #define VIRTUAL_IRQS 24 |
23 | #define NR_IRQS (IRQ_VIC_END + VIRTUAL_IRQS) | 27 | #define NR_IRQS (IRQ_VIC_END + VIRTUAL_IRQS) |
28 | #endif | ||
29 | |||
30 | #ifdef CONFIG_ARCH_SPEAR13XX | ||
31 | #define IRQ_GIC_END 160 | ||
32 | #define NR_IRQS IRQ_GIC_END | ||
33 | #endif | ||
24 | 34 | ||
25 | #endif /* __MACH_IRQS_H */ | 35 | #endif /* __MACH_IRQS_H */ |
diff --git a/arch/arm/mach-spear3xx/include/mach/misc_regs.h b/arch/arm/mach-spear/include/mach/misc_regs.h index 6309bf68d6f8..935639ce59ba 100644 --- a/arch/arm/mach-spear3xx/include/mach/misc_regs.h +++ b/arch/arm/mach-spear/include/mach/misc_regs.h | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | #include <mach/spear.h> | 17 | #include <mach/spear.h> |
18 | 18 | ||
19 | #define MISC_BASE IOMEM(VA_SPEAR3XX_ICM3_MISC_REG_BASE) | 19 | #define MISC_BASE (VA_SPEAR_ICM3_MISC_REG_BASE) |
20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) | 20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) |
21 | 21 | ||
22 | #endif /* __MACH_MISC_REGS_H */ | 22 | #endif /* __MACH_MISC_REGS_H */ |
diff --git a/arch/arm/mach-spear/include/mach/spear.h b/arch/arm/mach-spear/include/mach/spear.h new file mode 100644 index 000000000000..374ddc393df1 --- /dev/null +++ b/arch/arm/mach-spear/include/mach/spear.h | |||
@@ -0,0 +1,95 @@ | |||
1 | /* | ||
2 | * SPEAr3xx/6xx Machine family specific definition | ||
3 | * | ||
4 | * Copyright (C) 2009,2012 ST Microelectronics | ||
5 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
6 | * Viresh Kumar <viresh.linux@gmail.com> | ||
7 | * | ||
8 | * This file is licensed under the terms of the GNU General Public | ||
9 | * License version 2. This program is licensed "as is" without any | ||
10 | * warranty of any kind, whether express or implied. | ||
11 | */ | ||
12 | |||
13 | #ifndef __MACH_SPEAR_H | ||
14 | #define __MACH_SPEAR_H | ||
15 | |||
16 | #include <asm/memory.h> | ||
17 | |||
18 | #if defined(CONFIG_ARCH_SPEAR3XX) || defined (CONFIG_ARCH_SPEAR6XX) | ||
19 | |||
20 | /* ICM1 - Low speed connection */ | ||
21 | #define SPEAR_ICM1_2_BASE UL(0xD0000000) | ||
22 | #define VA_SPEAR_ICM1_2_BASE IOMEM(0xFD000000) | ||
23 | #define SPEAR_ICM1_UART_BASE UL(0xD0000000) | ||
24 | #define VA_SPEAR_ICM1_UART_BASE (VA_SPEAR_ICM1_2_BASE - SPEAR_ICM1_2_BASE + SPEAR_ICM1_UART_BASE) | ||
25 | #define SPEAR3XX_ICM1_SSP_BASE UL(0xD0100000) | ||
26 | |||
27 | /* ML-1, 2 - Multi Layer CPU Subsystem */ | ||
28 | #define SPEAR_ICM3_ML1_2_BASE UL(0xF0000000) | ||
29 | #define VA_SPEAR6XX_ML_CPU_BASE IOMEM(0xF0000000) | ||
30 | |||
31 | /* ICM3 - Basic Subsystem */ | ||
32 | #define SPEAR_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
33 | #define VA_SPEAR_ICM3_SMI_CTRL_BASE IOMEM(0xFC000000) | ||
34 | #define SPEAR_ICM3_DMA_BASE UL(0xFC400000) | ||
35 | #define SPEAR_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
36 | #define VA_SPEAR_ICM3_SYS_CTRL_BASE (VA_SPEAR_ICM3_SMI_CTRL_BASE - SPEAR_ICM3_SMI_CTRL_BASE + SPEAR_ICM3_SYS_CTRL_BASE) | ||
37 | #define SPEAR_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
38 | #define VA_SPEAR_ICM3_MISC_REG_BASE (VA_SPEAR_ICM3_SMI_CTRL_BASE - SPEAR_ICM3_SMI_CTRL_BASE + SPEAR_ICM3_MISC_REG_BASE) | ||
39 | |||
40 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
41 | #define SPEAR_DBG_UART_BASE SPEAR_ICM1_UART_BASE | ||
42 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR_ICM1_UART_BASE | ||
43 | |||
44 | /* Sysctl base for spear platform */ | ||
45 | #define SPEAR_SYS_CTRL_BASE SPEAR_ICM3_SYS_CTRL_BASE | ||
46 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR_ICM3_SYS_CTRL_BASE | ||
47 | #endif /* SPEAR3xx || SPEAR6XX */ | ||
48 | |||
49 | /* SPEAr320 Macros */ | ||
50 | #define SPEAR320_SOC_CONFIG_BASE UL(0xB3000000) | ||
51 | #define VA_SPEAR320_SOC_CONFIG_BASE IOMEM(0xFE000000) | ||
52 | |||
53 | #ifdef CONFIG_ARCH_SPEAR13XX | ||
54 | |||
55 | #define PERIP_GRP2_BASE UL(0xB3000000) | ||
56 | #define VA_PERIP_GRP2_BASE IOMEM(0xFE000000) | ||
57 | #define MCIF_SDHCI_BASE UL(0xB3000000) | ||
58 | #define SYSRAM0_BASE UL(0xB3800000) | ||
59 | #define VA_SYSRAM0_BASE IOMEM(0xFE800000) | ||
60 | #define SYS_LOCATION (VA_SYSRAM0_BASE + 0x600) | ||
61 | |||
62 | #define PERIP_GRP1_BASE UL(0xE0000000) | ||
63 | #define VA_PERIP_GRP1_BASE IOMEM(0xFD000000) | ||
64 | #define UART_BASE UL(0xE0000000) | ||
65 | #define VA_UART_BASE IOMEM(0xFD000000) | ||
66 | #define SSP_BASE UL(0xE0100000) | ||
67 | #define MISC_BASE UL(0xE0700000) | ||
68 | #define VA_MISC_BASE IOMEM(0xFD700000) | ||
69 | |||
70 | #define A9SM_AND_MPMC_BASE UL(0xEC000000) | ||
71 | #define VA_A9SM_AND_MPMC_BASE IOMEM(0xFC000000) | ||
72 | |||
73 | #define SPEAR1310_RAS_BASE UL(0xD8400000) | ||
74 | #define VA_SPEAR1310_RAS_BASE IOMEM(UL(0xFA400000)) | ||
75 | |||
76 | /* A9SM peripheral offsets */ | ||
77 | #define A9SM_PERIP_BASE UL(0xEC800000) | ||
78 | #define VA_A9SM_PERIP_BASE IOMEM(0xFC800000) | ||
79 | #define VA_SCU_BASE (VA_A9SM_PERIP_BASE + 0x00) | ||
80 | |||
81 | #define L2CC_BASE UL(0xED000000) | ||
82 | #define VA_L2CC_BASE IOMEM(UL(0xFB000000)) | ||
83 | |||
84 | /* others */ | ||
85 | #define DMAC0_BASE UL(0xEA800000) | ||
86 | #define DMAC1_BASE UL(0xEB000000) | ||
87 | #define MCIF_CF_BASE UL(0xB2800000) | ||
88 | |||
89 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
90 | #define SPEAR_DBG_UART_BASE UART_BASE | ||
91 | #define VA_SPEAR_DBG_UART_BASE VA_UART_BASE | ||
92 | |||
93 | #endif /* SPEAR13XX */ | ||
94 | |||
95 | #endif /* __MACH_SPEAR_H */ | ||
diff --git a/arch/arm/plat-spear/include/plat/timex.h b/arch/arm/mach-spear/include/mach/timex.h index ef95e5b780bd..ef95e5b780bd 100644 --- a/arch/arm/plat-spear/include/plat/timex.h +++ b/arch/arm/mach-spear/include/mach/timex.h | |||
diff --git a/arch/arm/plat-spear/include/plat/uncompress.h b/arch/arm/mach-spear/include/mach/uncompress.h index 51b2dc93e4da..51b2dc93e4da 100644 --- a/arch/arm/plat-spear/include/plat/uncompress.h +++ b/arch/arm/mach-spear/include/mach/uncompress.h | |||
diff --git a/arch/arm/plat-spear/pl080.c b/arch/arm/mach-spear/pl080.c index cfa1199d0f4a..cfa1199d0f4a 100644 --- a/arch/arm/plat-spear/pl080.c +++ b/arch/arm/mach-spear/pl080.c | |||
diff --git a/arch/arm/plat-spear/include/plat/pl080.h b/arch/arm/mach-spear/pl080.h index eb6590ded40d..eb6590ded40d 100644 --- a/arch/arm/plat-spear/include/plat/pl080.h +++ b/arch/arm/mach-spear/pl080.h | |||
diff --git a/arch/arm/mach-spear13xx/platsmp.c b/arch/arm/mach-spear/platsmp.c index af4ade61cd95..927979e26b4d 100644 --- a/arch/arm/mach-spear13xx/platsmp.c +++ b/arch/arm/mach-spear/platsmp.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
20 | #include <asm/smp_scu.h> | 20 | #include <asm/smp_scu.h> |
21 | #include <mach/spear.h> | 21 | #include <mach/spear.h> |
22 | #include <mach/generic.h> | 22 | #include "generic.h" |
23 | 23 | ||
24 | static DEFINE_SPINLOCK(boot_lock); | 24 | static DEFINE_SPINLOCK(boot_lock); |
25 | 25 | ||
diff --git a/arch/arm/plat-spear/restart.c b/arch/arm/mach-spear/restart.c index 7d4616d5df11..2b44500bb718 100644 --- a/arch/arm/plat-spear/restart.c +++ b/arch/arm/mach-spear/restart.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <linux/amba/sp810.h> | 14 | #include <linux/amba/sp810.h> |
15 | #include <asm/system_misc.h> | 15 | #include <asm/system_misc.h> |
16 | #include <mach/spear.h> | 16 | #include <mach/spear.h> |
17 | #include <mach/generic.h> | 17 | #include "generic.h" |
18 | 18 | ||
19 | #define SPEAR13XX_SYS_SW_RES (VA_MISC_BASE + 0x204) | 19 | #define SPEAR13XX_SYS_SW_RES (VA_MISC_BASE + 0x204) |
20 | void spear_restart(char mode, const char *cmd) | 20 | void spear_restart(char mode, const char *cmd) |
@@ -26,7 +26,8 @@ void spear_restart(char mode, const char *cmd) | |||
26 | /* hardware reset, Use on-chip reset capability */ | 26 | /* hardware reset, Use on-chip reset capability */ |
27 | #ifdef CONFIG_ARCH_SPEAR13XX | 27 | #ifdef CONFIG_ARCH_SPEAR13XX |
28 | writel_relaxed(0x01, SPEAR13XX_SYS_SW_RES); | 28 | writel_relaxed(0x01, SPEAR13XX_SYS_SW_RES); |
29 | #else | 29 | #endif |
30 | #if defined(CONFIG_ARCH_SPEAR3XX) || defined(CONFIG_ARCH_SPEAR6XX) | ||
30 | sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE); | 31 | sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE); |
31 | #endif | 32 | #endif |
32 | } | 33 | } |
diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear/spear1310.c index 56214d1076ef..ed3b5c287a7b 100644 --- a/arch/arm/mach-spear13xx/spear1310.c +++ b/arch/arm/mach-spear/spear1310.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/pata_arasan_cf_data.h> | 19 | #include <linux/pata_arasan_cf_data.h> |
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
22 | #include <mach/generic.h> | 22 | #include "generic.h" |
23 | #include <mach/spear.h> | 23 | #include <mach/spear.h> |
24 | 24 | ||
25 | /* Base addresses */ | 25 | /* Base addresses */ |
@@ -30,8 +30,6 @@ | |||
30 | 30 | ||
31 | #define SPEAR1310_RAS_GRP1_BASE UL(0xD8000000) | 31 | #define SPEAR1310_RAS_GRP1_BASE UL(0xD8000000) |
32 | #define VA_SPEAR1310_RAS_GRP1_BASE UL(0xFA000000) | 32 | #define VA_SPEAR1310_RAS_GRP1_BASE UL(0xFA000000) |
33 | #define SPEAR1310_RAS_BASE UL(0xD8400000) | ||
34 | #define VA_SPEAR1310_RAS_BASE IOMEM(UL(0xFA400000)) | ||
35 | 33 | ||
36 | static struct arasan_cf_pdata cf_pdata = { | 34 | static struct arasan_cf_pdata cf_pdata = { |
37 | .cf_if_clk = CF_IF_CLK_166M, | 35 | .cf_if_clk = CF_IF_CLK_166M, |
diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear/spear1340.c index 9a28beb2a113..75e38644bbfb 100644 --- a/arch/arm/mach-spear13xx/spear1340.c +++ b/arch/arm/mach-spear/spear1340.c | |||
@@ -20,10 +20,11 @@ | |||
20 | #include <linux/of_platform.h> | 20 | #include <linux/of_platform.h> |
21 | #include <linux/irqchip.h> | 21 | #include <linux/irqchip.h> |
22 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
23 | #include <mach/dma.h> | 23 | #include "generic.h" |
24 | #include <mach/generic.h> | ||
25 | #include <mach/spear.h> | 24 | #include <mach/spear.h> |
26 | 25 | ||
26 | #include "spear13xx-dma.h" | ||
27 | |||
27 | /* Base addresses */ | 28 | /* Base addresses */ |
28 | #define SPEAR1340_SATA_BASE UL(0xB1000000) | 29 | #define SPEAR1340_SATA_BASE UL(0xB1000000) |
29 | #define SPEAR1340_UART1_BASE UL(0xB4100000) | 30 | #define SPEAR1340_UART1_BASE UL(0xB4100000) |
diff --git a/arch/arm/mach-spear13xx/include/mach/dma.h b/arch/arm/mach-spear/spear13xx-dma.h index d50bdb605925..d50bdb605925 100644 --- a/arch/arm/mach-spear13xx/include/mach/dma.h +++ b/arch/arm/mach-spear/spear13xx-dma.h | |||
diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear/spear13xx.c index 25a10191b021..6dd208997176 100644 --- a/arch/arm/mach-spear13xx/spear13xx.c +++ b/arch/arm/mach-spear/spear13xx.c | |||
@@ -21,10 +21,11 @@ | |||
21 | #include <linux/of.h> | 21 | #include <linux/of.h> |
22 | #include <asm/hardware/cache-l2x0.h> | 22 | #include <asm/hardware/cache-l2x0.h> |
23 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
24 | #include <mach/dma.h> | 24 | #include "generic.h" |
25 | #include <mach/generic.h> | ||
26 | #include <mach/spear.h> | 25 | #include <mach/spear.h> |
27 | 26 | ||
27 | #include "spear13xx-dma.h" | ||
28 | |||
28 | /* common dw_dma filter routine to be used by peripherals */ | 29 | /* common dw_dma filter routine to be used by peripherals */ |
29 | bool dw_dma_filter(struct dma_chan *chan, void *slave) | 30 | bool dw_dma_filter(struct dma_chan *chan, void *slave) |
30 | { | 31 | { |
@@ -145,9 +146,9 @@ void __init spear13xx_map_io(void) | |||
145 | static void __init spear13xx_clk_init(void) | 146 | static void __init spear13xx_clk_init(void) |
146 | { | 147 | { |
147 | if (of_machine_is_compatible("st,spear1310")) | 148 | if (of_machine_is_compatible("st,spear1310")) |
148 | spear1310_clk_init(); | 149 | spear1310_clk_init(VA_MISC_BASE, VA_SPEAR1310_RAS_BASE); |
149 | else if (of_machine_is_compatible("st,spear1340")) | 150 | else if (of_machine_is_compatible("st,spear1340")) |
150 | spear1340_clk_init(); | 151 | spear1340_clk_init(VA_MISC_BASE); |
151 | else | 152 | else |
152 | pr_err("%s: Unknown machine\n", __func__); | 153 | pr_err("%s: Unknown machine\n", __func__); |
153 | } | 154 | } |
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear/spear300.c index bbc9b7e9c62c..bac56e845f7a 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear/spear300.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/irqchip.h> | 17 | #include <linux/irqchip.h> |
18 | #include <linux/of_platform.h> | 18 | #include <linux/of_platform.h> |
19 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
20 | #include <mach/generic.h> | 20 | #include "generic.h" |
21 | #include <mach/spear.h> | 21 | #include <mach/spear.h> |
22 | 22 | ||
23 | /* DMAC platform data's slave info */ | 23 | /* DMAC platform data's slave info */ |
@@ -185,7 +185,7 @@ struct pl08x_channel_data spear300_dma_info[] = { | |||
185 | static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = { | 185 | static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = { |
186 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 186 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
187 | &pl022_plat_data), | 187 | &pl022_plat_data), |
188 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 188 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
189 | &pl080_plat_data), | 189 | &pl080_plat_data), |
190 | {} | 190 | {} |
191 | }; | 191 | }; |
diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear/spear310.c index c13a434a8195..6ffbc63d516d 100644 --- a/arch/arm/mach-spear3xx/spear310.c +++ b/arch/arm/mach-spear/spear310.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/irqchip.h> | 18 | #include <linux/irqchip.h> |
19 | #include <linux/of_platform.h> | 19 | #include <linux/of_platform.h> |
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <mach/generic.h> | 21 | #include "generic.h" |
22 | #include <mach/spear.h> | 22 | #include <mach/spear.h> |
23 | 23 | ||
24 | #define SPEAR310_UART1_BASE UL(0xB2000000) | 24 | #define SPEAR310_UART1_BASE UL(0xB2000000) |
@@ -217,7 +217,7 @@ static struct amba_pl011_data spear310_uart_data[] = { | |||
217 | static struct of_dev_auxdata spear310_auxdata_lookup[] __initdata = { | 217 | static struct of_dev_auxdata spear310_auxdata_lookup[] __initdata = { |
218 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 218 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
219 | &pl022_plat_data), | 219 | &pl022_plat_data), |
220 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 220 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
221 | &pl080_plat_data), | 221 | &pl080_plat_data), |
222 | OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART1_BASE, NULL, | 222 | OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART1_BASE, NULL, |
223 | &spear310_uart_data[0]), | 223 | &spear310_uart_data[0]), |
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear/spear320.c index e1c77079a3e5..6eb3eec65f96 100644 --- a/arch/arm/mach-spear3xx/spear320.c +++ b/arch/arm/mach-spear/spear320.c | |||
@@ -19,7 +19,8 @@ | |||
19 | #include <linux/irqchip.h> | 19 | #include <linux/irqchip.h> |
20 | #include <linux/of_platform.h> | 20 | #include <linux/of_platform.h> |
21 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
22 | #include <mach/generic.h> | 22 | #include <asm/mach/map.h> |
23 | #include "generic.h" | ||
23 | #include <mach/spear.h> | 24 | #include <mach/spear.h> |
24 | 25 | ||
25 | #define SPEAR320_UART1_BASE UL(0xA3000000) | 26 | #define SPEAR320_UART1_BASE UL(0xA3000000) |
@@ -222,7 +223,7 @@ static struct amba_pl011_data spear320_uart_data[] = { | |||
222 | static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = { | 223 | static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = { |
223 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 224 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
224 | &pl022_plat_data), | 225 | &pl022_plat_data), |
225 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 226 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
226 | &pl080_plat_data), | 227 | &pl080_plat_data), |
227 | OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL, | 228 | OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL, |
228 | &spear320_ssp_data[0]), | 229 | &spear320_ssp_data[0]), |
@@ -253,7 +254,7 @@ static const char * const spear320_dt_board_compat[] = { | |||
253 | 254 | ||
254 | struct map_desc spear320_io_desc[] __initdata = { | 255 | struct map_desc spear320_io_desc[] __initdata = { |
255 | { | 256 | { |
256 | .virtual = VA_SPEAR320_SOC_CONFIG_BASE, | 257 | .virtual = (unsigned long)VA_SPEAR320_SOC_CONFIG_BASE, |
257 | .pfn = __phys_to_pfn(SPEAR320_SOC_CONFIG_BASE), | 258 | .pfn = __phys_to_pfn(SPEAR320_SOC_CONFIG_BASE), |
258 | .length = SZ_16M, | 259 | .length = SZ_16M, |
259 | .type = MT_DEVICE | 260 | .type = MT_DEVICE |
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear/spear3xx.c index d2b3937c4014..0227c97797cd 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear/spear3xx.c | |||
@@ -15,10 +15,13 @@ | |||
15 | 15 | ||
16 | #include <linux/amba/pl022.h> | 16 | #include <linux/amba/pl022.h> |
17 | #include <linux/amba/pl080.h> | 17 | #include <linux/amba/pl080.h> |
18 | #include <linux/clk.h> | ||
18 | #include <linux/io.h> | 19 | #include <linux/io.h> |
19 | #include <plat/pl080.h> | 20 | #include <asm/mach/map.h> |
20 | #include <mach/generic.h> | 21 | #include "pl080.h" |
22 | #include "generic.h" | ||
21 | #include <mach/spear.h> | 23 | #include <mach/spear.h> |
24 | #include <mach/misc_regs.h> | ||
22 | 25 | ||
23 | /* ssp device registration */ | 26 | /* ssp device registration */ |
24 | struct pl022_ssp_controller pl022_plat_data = { | 27 | struct pl022_ssp_controller pl022_plat_data = { |
@@ -65,13 +68,13 @@ struct pl08x_platform_data pl080_plat_data = { | |||
65 | */ | 68 | */ |
66 | struct map_desc spear3xx_io_desc[] __initdata = { | 69 | struct map_desc spear3xx_io_desc[] __initdata = { |
67 | { | 70 | { |
68 | .virtual = VA_SPEAR3XX_ICM1_2_BASE, | 71 | .virtual = (unsigned long)VA_SPEAR_ICM1_2_BASE, |
69 | .pfn = __phys_to_pfn(SPEAR3XX_ICM1_2_BASE), | 72 | .pfn = __phys_to_pfn(SPEAR_ICM1_2_BASE), |
70 | .length = SZ_16M, | 73 | .length = SZ_16M, |
71 | .type = MT_DEVICE | 74 | .type = MT_DEVICE |
72 | }, { | 75 | }, { |
73 | .virtual = VA_SPEAR3XX_ICM3_SMI_CTRL_BASE, | 76 | .virtual = (unsigned long)VA_SPEAR_ICM3_SMI_CTRL_BASE, |
74 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_SMI_CTRL_BASE), | 77 | .pfn = __phys_to_pfn(SPEAR_ICM3_SMI_CTRL_BASE), |
75 | .length = SZ_16M, | 78 | .length = SZ_16M, |
76 | .type = MT_DEVICE | 79 | .type = MT_DEVICE |
77 | }, | 80 | }, |
@@ -88,7 +91,7 @@ void __init spear3xx_timer_init(void) | |||
88 | char pclk_name[] = "pll3_clk"; | 91 | char pclk_name[] = "pll3_clk"; |
89 | struct clk *gpt_clk, *pclk; | 92 | struct clk *gpt_clk, *pclk; |
90 | 93 | ||
91 | spear3xx_clk_init(); | 94 | spear3xx_clk_init(MISC_BASE, VA_SPEAR320_SOC_CONFIG_BASE); |
92 | 95 | ||
93 | /* get the system timer clock */ | 96 | /* get the system timer clock */ |
94 | gpt_clk = clk_get_sys("gpt0", NULL); | 97 | gpt_clk = clk_get_sys("gpt0", NULL); |
diff --git a/arch/arm/mach-spear6xx/spear6xx.c b/arch/arm/mach-spear/spear6xx.c index 8904d8a52d84..ec8eefbbdfad 100644 --- a/arch/arm/mach-spear6xx/spear6xx.c +++ b/arch/arm/mach-spear/spear6xx.c | |||
@@ -24,9 +24,10 @@ | |||
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | #include <plat/pl080.h> | 27 | #include "pl080.h" |
28 | #include <mach/generic.h> | 28 | #include "generic.h" |
29 | #include <mach/spear.h> | 29 | #include <mach/spear.h> |
30 | #include <mach/misc_regs.h> | ||
30 | 31 | ||
31 | /* dmac device registration */ | 32 | /* dmac device registration */ |
32 | static struct pl08x_channel_data spear600_dma_info[] = { | 33 | static struct pl08x_channel_data spear600_dma_info[] = { |
@@ -321,7 +322,7 @@ static struct pl08x_channel_data spear600_dma_info[] = { | |||
321 | }, | 322 | }, |
322 | }; | 323 | }; |
323 | 324 | ||
324 | struct pl08x_platform_data pl080_plat_data = { | 325 | static struct pl08x_platform_data spear6xx_pl080_plat_data = { |
325 | .memcpy_channel = { | 326 | .memcpy_channel = { |
326 | .bus_id = "memcpy", | 327 | .bus_id = "memcpy", |
327 | .cctl_memcpy = | 328 | .cctl_memcpy = |
@@ -350,18 +351,18 @@ struct pl08x_platform_data pl080_plat_data = { | |||
350 | */ | 351 | */ |
351 | struct map_desc spear6xx_io_desc[] __initdata = { | 352 | struct map_desc spear6xx_io_desc[] __initdata = { |
352 | { | 353 | { |
353 | .virtual = VA_SPEAR6XX_ML_CPU_BASE, | 354 | .virtual = (unsigned long)VA_SPEAR6XX_ML_CPU_BASE, |
354 | .pfn = __phys_to_pfn(SPEAR6XX_ML_CPU_BASE), | 355 | .pfn = __phys_to_pfn(SPEAR_ICM3_ML1_2_BASE), |
355 | .length = 2 * SZ_16M, | 356 | .length = 2 * SZ_16M, |
356 | .type = MT_DEVICE | 357 | .type = MT_DEVICE |
357 | }, { | 358 | }, { |
358 | .virtual = VA_SPEAR6XX_ICM1_BASE, | 359 | .virtual = (unsigned long)VA_SPEAR_ICM1_2_BASE, |
359 | .pfn = __phys_to_pfn(SPEAR6XX_ICM1_BASE), | 360 | .pfn = __phys_to_pfn(SPEAR_ICM1_2_BASE), |
360 | .length = SZ_16M, | 361 | .length = SZ_16M, |
361 | .type = MT_DEVICE | 362 | .type = MT_DEVICE |
362 | }, { | 363 | }, { |
363 | .virtual = VA_SPEAR6XX_ICM3_SMI_CTRL_BASE, | 364 | .virtual = (unsigned long)VA_SPEAR_ICM3_SMI_CTRL_BASE, |
364 | .pfn = __phys_to_pfn(SPEAR6XX_ICM3_SMI_CTRL_BASE), | 365 | .pfn = __phys_to_pfn(SPEAR_ICM3_SMI_CTRL_BASE), |
365 | .length = SZ_16M, | 366 | .length = SZ_16M, |
366 | .type = MT_DEVICE | 367 | .type = MT_DEVICE |
367 | }, | 368 | }, |
@@ -378,7 +379,7 @@ void __init spear6xx_timer_init(void) | |||
378 | char pclk_name[] = "pll3_clk"; | 379 | char pclk_name[] = "pll3_clk"; |
379 | struct clk *gpt_clk, *pclk; | 380 | struct clk *gpt_clk, *pclk; |
380 | 381 | ||
381 | spear6xx_clk_init(); | 382 | spear6xx_clk_init(MISC_BASE); |
382 | 383 | ||
383 | /* get the system timer clock */ | 384 | /* get the system timer clock */ |
384 | gpt_clk = clk_get_sys("gpt0", NULL); | 385 | gpt_clk = clk_get_sys("gpt0", NULL); |
@@ -404,8 +405,8 @@ void __init spear6xx_timer_init(void) | |||
404 | 405 | ||
405 | /* Add auxdata to pass platform data */ | 406 | /* Add auxdata to pass platform data */ |
406 | struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = { | 407 | struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = { |
407 | OF_DEV_AUXDATA("arm,pl080", SPEAR6XX_ICM3_DMA_BASE, NULL, | 408 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
408 | &pl080_plat_data), | 409 | &spear6xx_pl080_plat_data), |
409 | {} | 410 | {} |
410 | }; | 411 | }; |
411 | 412 | ||
diff --git a/arch/arm/plat-spear/time.c b/arch/arm/mach-spear/time.c index bd5c53cd6962..d449673e40f7 100644 --- a/arch/arm/plat-spear/time.c +++ b/arch/arm/mach-spear/time.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <linux/time.h> | 23 | #include <linux/time.h> |
24 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <mach/generic.h> | 26 | #include "generic.h" |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * We would use TIMER0 and TIMER1 as clockevent and clocksource. | 29 | * We would use TIMER0 and TIMER1 as clockevent and clocksource. |
diff --git a/arch/arm/mach-spear13xx/Kconfig b/arch/arm/mach-spear13xx/Kconfig deleted file mode 100644 index eaadc66d96b3..000000000000 --- a/arch/arm/mach-spear13xx/Kconfig +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr13XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | if ARCH_SPEAR13XX | ||
6 | |||
7 | menu "SPEAr13xx Implementations" | ||
8 | config MACH_SPEAR1310 | ||
9 | bool "SPEAr1310 Machine support with Device Tree" | ||
10 | select PINCTRL_SPEAR1310 | ||
11 | help | ||
12 | Supports ST SPEAr1310 machine configured via the device-tree | ||
13 | |||
14 | config MACH_SPEAR1340 | ||
15 | bool "SPEAr1340 Machine support with Device Tree" | ||
16 | select PINCTRL_SPEAR1340 | ||
17 | help | ||
18 | Supports ST SPEAr1340 machine configured via the device-tree | ||
19 | endmenu | ||
20 | endif #ARCH_SPEAR13XX | ||
diff --git a/arch/arm/mach-spear13xx/Makefile b/arch/arm/mach-spear13xx/Makefile deleted file mode 100644 index 3435ea78c15d..000000000000 --- a/arch/arm/mach-spear13xx/Makefile +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr13XX machine series | ||
3 | # | ||
4 | |||
5 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | ||
6 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | ||
7 | |||
8 | obj-$(CONFIG_ARCH_SPEAR13XX) += spear13xx.o | ||
9 | obj-$(CONFIG_MACH_SPEAR1310) += spear1310.o | ||
10 | obj-$(CONFIG_MACH_SPEAR1340) += spear1340.o | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/debug-macro.S b/arch/arm/mach-spear13xx/include/mach/debug-macro.S deleted file mode 100644 index 9e3ae6bfe50d..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header spear13xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/hardware.h b/arch/arm/mach-spear13xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/irqs.h b/arch/arm/mach-spear13xx/include/mach/irqs.h deleted file mode 100644 index 271a62b4cd31..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/irqs.h | ||
3 | * | ||
4 | * IRQ helper macros for spear13xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IRQS_H | ||
15 | #define __MACH_IRQS_H | ||
16 | |||
17 | #define IRQ_GIC_END 160 | ||
18 | #define NR_IRQS IRQ_GIC_END | ||
19 | |||
20 | #endif /* __MACH_IRQS_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/spear.h b/arch/arm/mach-spear13xx/include/mach/spear.h deleted file mode 100644 index 7cfa6818865a..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/spear.h | ||
3 | * | ||
4 | * spear13xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR13XX_H | ||
15 | #define __MACH_SPEAR13XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | #define PERIP_GRP2_BASE UL(0xB3000000) | ||
20 | #define VA_PERIP_GRP2_BASE IOMEM(0xFE000000) | ||
21 | #define MCIF_SDHCI_BASE UL(0xB3000000) | ||
22 | #define SYSRAM0_BASE UL(0xB3800000) | ||
23 | #define VA_SYSRAM0_BASE IOMEM(0xFE800000) | ||
24 | #define SYS_LOCATION (VA_SYSRAM0_BASE + 0x600) | ||
25 | |||
26 | #define PERIP_GRP1_BASE UL(0xE0000000) | ||
27 | #define VA_PERIP_GRP1_BASE IOMEM(0xFD000000) | ||
28 | #define UART_BASE UL(0xE0000000) | ||
29 | #define VA_UART_BASE IOMEM(0xFD000000) | ||
30 | #define SSP_BASE UL(0xE0100000) | ||
31 | #define MISC_BASE UL(0xE0700000) | ||
32 | #define VA_MISC_BASE IOMEM(0xFD700000) | ||
33 | |||
34 | #define A9SM_AND_MPMC_BASE UL(0xEC000000) | ||
35 | #define VA_A9SM_AND_MPMC_BASE IOMEM(0xFC000000) | ||
36 | |||
37 | /* A9SM peripheral offsets */ | ||
38 | #define A9SM_PERIP_BASE UL(0xEC800000) | ||
39 | #define VA_A9SM_PERIP_BASE IOMEM(0xFC800000) | ||
40 | #define VA_SCU_BASE (VA_A9SM_PERIP_BASE + 0x00) | ||
41 | |||
42 | #define L2CC_BASE UL(0xED000000) | ||
43 | #define VA_L2CC_BASE IOMEM(UL(0xFB000000)) | ||
44 | |||
45 | /* others */ | ||
46 | #define DMAC0_BASE UL(0xEA800000) | ||
47 | #define DMAC1_BASE UL(0xEB000000) | ||
48 | #define MCIF_CF_BASE UL(0xB2800000) | ||
49 | |||
50 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
51 | #define SPEAR_DBG_UART_BASE UART_BASE | ||
52 | #define VA_SPEAR_DBG_UART_BASE VA_UART_BASE | ||
53 | |||
54 | #endif /* __MACH_SPEAR13XX_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/timex.h b/arch/arm/mach-spear13xx/include/mach/timex.h deleted file mode 100644 index 3a58b8284a6a..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr3XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/uncompress.h b/arch/arm/mach-spear13xx/include/mach/uncompress.h deleted file mode 100644 index 70fe72f05dea..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-spear3xx/Kconfig b/arch/arm/mach-spear3xx/Kconfig deleted file mode 100644 index 8bd37291fa4f..000000000000 --- a/arch/arm/mach-spear3xx/Kconfig +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr3XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | if ARCH_SPEAR3XX | ||
6 | |||
7 | menu "SPEAr3xx Implementations" | ||
8 | config MACH_SPEAR300 | ||
9 | bool "SPEAr300 Machine support with Device Tree" | ||
10 | select PINCTRL_SPEAR300 | ||
11 | help | ||
12 | Supports ST SPEAr300 machine configured via the device-tree | ||
13 | |||
14 | config MACH_SPEAR310 | ||
15 | bool "SPEAr310 Machine support with Device Tree" | ||
16 | select PINCTRL_SPEAR310 | ||
17 | help | ||
18 | Supports ST SPEAr310 machine configured via the device-tree | ||
19 | |||
20 | config MACH_SPEAR320 | ||
21 | bool "SPEAr320 Machine support with Device Tree" | ||
22 | select PINCTRL_SPEAR320 | ||
23 | help | ||
24 | Supports ST SPEAr320 machine configured via the device-tree | ||
25 | endmenu | ||
26 | endif #ARCH_SPEAR3XX | ||
diff --git a/arch/arm/mach-spear3xx/Makefile b/arch/arm/mach-spear3xx/Makefile deleted file mode 100644 index 8d12faa178fd..000000000000 --- a/arch/arm/mach-spear3xx/Makefile +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr3XX machine series | ||
3 | # | ||
4 | |||
5 | # common files | ||
6 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear3xx.o | ||
7 | |||
8 | # spear300 specific files | ||
9 | obj-$(CONFIG_MACH_SPEAR300) += spear300.o | ||
10 | |||
11 | # spear310 specific files | ||
12 | obj-$(CONFIG_MACH_SPEAR310) += spear310.o | ||
13 | |||
14 | # spear320 specific files | ||
15 | obj-$(CONFIG_MACH_SPEAR320) += spear320.o | ||
diff --git a/arch/arm/mach-spear3xx/Makefile.boot b/arch/arm/mach-spear3xx/Makefile.boot deleted file mode 100644 index 4674a4c221db..000000000000 --- a/arch/arm/mach-spear3xx/Makefile.boot +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/debug-macro.S b/arch/arm/mach-spear3xx/include/mach/debug-macro.S deleted file mode 100644 index 0a6381fad5d9..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header spear3xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h deleted file mode 100644 index df310799e416..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/generic.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/generic.h | ||
3 | * | ||
4 | * SPEAr3XX machine family generic header file | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_GENERIC_H | ||
15 | #define __MACH_GENERIC_H | ||
16 | |||
17 | #include <linux/amba/pl08x.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/platform_device.h> | ||
20 | #include <linux/amba/bus.h> | ||
21 | #include <asm/mach/time.h> | ||
22 | #include <asm/mach/map.h> | ||
23 | |||
24 | /* Add spear3xx family device structure declarations here */ | ||
25 | extern void spear3xx_timer_init(void); | ||
26 | extern struct pl022_ssp_controller pl022_plat_data; | ||
27 | extern struct pl08x_platform_data pl080_plat_data; | ||
28 | |||
29 | /* Add spear3xx family function declarations here */ | ||
30 | void __init spear_setup_of_timer(void); | ||
31 | void __init spear3xx_clk_init(void); | ||
32 | void __init spear3xx_map_io(void); | ||
33 | |||
34 | void spear_restart(char, const char *); | ||
35 | |||
36 | #endif /* __MACH_GENERIC_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/hardware.h b/arch/arm/mach-spear3xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/irqs.h b/arch/arm/mach-spear3xx/include/mach/irqs.h deleted file mode 100644 index f95e5b2b6686..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/irqs.h | ||
3 | * | ||
4 | * IRQ helper macros for SPEAr3xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IRQS_H | ||
15 | #define __MACH_IRQS_H | ||
16 | |||
17 | #define NR_IRQS 256 | ||
18 | |||
19 | #endif /* __MACH_IRQS_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/spear.h b/arch/arm/mach-spear3xx/include/mach/spear.h deleted file mode 100644 index 8cca95193d4d..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/spear.h | ||
3 | * | ||
4 | * SPEAr3xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR3XX_H | ||
15 | #define __MACH_SPEAR3XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | /* ICM1 - Low speed connection */ | ||
20 | #define SPEAR3XX_ICM1_2_BASE UL(0xD0000000) | ||
21 | #define VA_SPEAR3XX_ICM1_2_BASE UL(0xFD000000) | ||
22 | #define SPEAR3XX_ICM1_UART_BASE UL(0xD0000000) | ||
23 | #define VA_SPEAR3XX_ICM1_UART_BASE (VA_SPEAR3XX_ICM1_2_BASE | SPEAR3XX_ICM1_UART_BASE) | ||
24 | #define SPEAR3XX_ICM1_SSP_BASE UL(0xD0100000) | ||
25 | |||
26 | /* ML1 - Multi Layer CPU Subsystem */ | ||
27 | #define SPEAR3XX_ICM3_ML1_2_BASE UL(0xF0000000) | ||
28 | #define VA_SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
29 | |||
30 | /* ICM3 - Basic Subsystem */ | ||
31 | #define SPEAR3XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
32 | #define VA_SPEAR3XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
33 | #define SPEAR3XX_ICM3_DMA_BASE UL(0xFC400000) | ||
34 | #define SPEAR3XX_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
35 | #define VA_SPEAR3XX_ICM3_SYS_CTRL_BASE (VA_SPEAR3XX_ICM3_SMI_CTRL_BASE | SPEAR3XX_ICM3_SYS_CTRL_BASE) | ||
36 | #define SPEAR3XX_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
37 | #define VA_SPEAR3XX_ICM3_MISC_REG_BASE (VA_SPEAR3XX_ICM3_SMI_CTRL_BASE | SPEAR3XX_ICM3_MISC_REG_BASE) | ||
38 | |||
39 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
40 | #define SPEAR_DBG_UART_BASE SPEAR3XX_ICM1_UART_BASE | ||
41 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR3XX_ICM1_UART_BASE | ||
42 | |||
43 | /* Sysctl base for spear platform */ | ||
44 | #define SPEAR_SYS_CTRL_BASE SPEAR3XX_ICM3_SYS_CTRL_BASE | ||
45 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR3XX_ICM3_SYS_CTRL_BASE | ||
46 | |||
47 | /* SPEAr320 Macros */ | ||
48 | #define SPEAR320_SOC_CONFIG_BASE UL(0xB3000000) | ||
49 | #define VA_SPEAR320_SOC_CONFIG_BASE UL(0xFE000000) | ||
50 | #define SPEAR320_CONTROL_REG IOMEM(VA_SPEAR320_SOC_CONFIG_BASE) | ||
51 | #define SPEAR320_EXT_CTRL_REG IOMEM(VA_SPEAR320_SOC_CONFIG_BASE + 0x0018) | ||
52 | #define SPEAR320_UARTX_PCLK_MASK 0x1 | ||
53 | #define SPEAR320_UART2_PCLK_SHIFT 8 | ||
54 | #define SPEAR320_UART3_PCLK_SHIFT 9 | ||
55 | #define SPEAR320_UART4_PCLK_SHIFT 10 | ||
56 | #define SPEAR320_UART5_PCLK_SHIFT 11 | ||
57 | #define SPEAR320_UART6_PCLK_SHIFT 12 | ||
58 | #define SPEAR320_RS485_PCLK_SHIFT 13 | ||
59 | |||
60 | #endif /* __MACH_SPEAR3XX_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/timex.h b/arch/arm/mach-spear3xx/include/mach/timex.h deleted file mode 100644 index 9f5d08bd0c44..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr3XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/uncompress.h b/arch/arm/mach-spear3xx/include/mach/uncompress.h deleted file mode 100644 index b909b011f7c8..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-spear6xx/Kconfig b/arch/arm/mach-spear6xx/Kconfig deleted file mode 100644 index 339f397dea70..000000000000 --- a/arch/arm/mach-spear6xx/Kconfig +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr6XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | config MACH_SPEAR600 | ||
6 | def_bool y | ||
7 | depends on ARCH_SPEAR6XX | ||
8 | select USE_OF | ||
9 | help | ||
10 | Supports ST SPEAr600 boards configured via the device-tree | ||
diff --git a/arch/arm/mach-spear6xx/Makefile b/arch/arm/mach-spear6xx/Makefile deleted file mode 100644 index 898831d93f37..000000000000 --- a/arch/arm/mach-spear6xx/Makefile +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr6XX machine series | ||
3 | # | ||
4 | |||
5 | # common files | ||
6 | obj-y += spear6xx.o | ||
diff --git a/arch/arm/mach-spear6xx/Makefile.boot b/arch/arm/mach-spear6xx/Makefile.boot deleted file mode 100644 index 4674a4c221db..000000000000 --- a/arch/arm/mach-spear6xx/Makefile.boot +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/debug-macro.S b/arch/arm/mach-spear6xx/include/mach/debug-macro.S deleted file mode 100644 index 0f3ea39edd96..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header for SPEAr6xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/generic.h b/arch/arm/mach-spear6xx/include/mach/generic.h deleted file mode 100644 index 65514b159370..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/generic.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/generic.h | ||
3 | * | ||
4 | * SPEAr6XX machine family specific generic header file | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_GENERIC_H | ||
15 | #define __MACH_GENERIC_H | ||
16 | |||
17 | #include <linux/init.h> | ||
18 | |||
19 | void __init spear_setup_of_timer(void); | ||
20 | void spear_restart(char, const char *); | ||
21 | void __init spear6xx_clk_init(void); | ||
22 | |||
23 | #endif /* __MACH_GENERIC_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/hardware.h b/arch/arm/mach-spear6xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/misc_regs.h b/arch/arm/mach-spear6xx/include/mach/misc_regs.h deleted file mode 100644 index c34acc201d34..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/misc_regs.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/misc_regs.h | ||
3 | * | ||
4 | * Miscellaneous registers definitions for SPEAr6xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_MISC_REGS_H | ||
15 | #define __MACH_MISC_REGS_H | ||
16 | |||
17 | #include <mach/spear.h> | ||
18 | |||
19 | #define MISC_BASE IOMEM(VA_SPEAR6XX_ICM3_MISC_REG_BASE) | ||
20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) | ||
21 | |||
22 | #endif /* __MACH_MISC_REGS_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/spear.h b/arch/arm/mach-spear6xx/include/mach/spear.h deleted file mode 100644 index cb8ed2f4dc85..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/spear.h | ||
3 | * | ||
4 | * SPEAr6xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR6XX_H | ||
15 | #define __MACH_SPEAR6XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | /* ICM1 - Low speed connection */ | ||
20 | #define SPEAR6XX_ICM1_BASE UL(0xD0000000) | ||
21 | #define VA_SPEAR6XX_ICM1_BASE UL(0xFD000000) | ||
22 | #define SPEAR6XX_ICM1_UART0_BASE UL(0xD0000000) | ||
23 | #define VA_SPEAR6XX_ICM1_UART0_BASE (VA_SPEAR6XX_ICM1_2_BASE | SPEAR6XX_ICM1_UART0_BASE) | ||
24 | |||
25 | /* ML-1, 2 - Multi Layer CPU Subsystem */ | ||
26 | #define SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
27 | #define VA_SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
28 | |||
29 | /* ICM3 - Basic Subsystem */ | ||
30 | #define SPEAR6XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
31 | #define VA_SPEAR6XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
32 | #define SPEAR6XX_ICM3_DMA_BASE UL(0xFC400000) | ||
33 | #define SPEAR6XX_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
34 | #define VA_SPEAR6XX_ICM3_SYS_CTRL_BASE (VA_SPEAR6XX_ICM3_SMI_CTRL_BASE | SPEAR6XX_ICM3_SYS_CTRL_BASE) | ||
35 | #define SPEAR6XX_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
36 | #define VA_SPEAR6XX_ICM3_MISC_REG_BASE (VA_SPEAR6XX_ICM3_SMI_CTRL_BASE | SPEAR6XX_ICM3_MISC_REG_BASE) | ||
37 | |||
38 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
39 | #define SPEAR_DBG_UART_BASE SPEAR6XX_ICM1_UART0_BASE | ||
40 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR6XX_ICM1_UART0_BASE | ||
41 | |||
42 | /* Sysctl base for spear platform */ | ||
43 | #define SPEAR_SYS_CTRL_BASE SPEAR6XX_ICM3_SYS_CTRL_BASE | ||
44 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR6XX_ICM3_SYS_CTRL_BASE | ||
45 | |||
46 | #endif /* __MACH_SPEAR6XX_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/timex.h b/arch/arm/mach-spear6xx/include/mach/timex.h deleted file mode 100644 index ac1c5b005695..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr6XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/uncompress.h b/arch/arm/mach-spear6xx/include/mach/uncompress.h deleted file mode 100644 index 77f0765e21e1..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 3e5bbd0e5b23..eeea3bf4dffb 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -1,3 +1,17 @@ | |||
1 | config ARCH_U8500 | ||
2 | bool "ST-Ericsson U8500 Series" if ARCH_MULTI_V7 | ||
3 | depends on MMU | ||
4 | select ARCH_HAS_CPUFREQ | ||
5 | select ARCH_REQUIRE_GPIOLIB | ||
6 | select ARM_AMBA | ||
7 | select CLKDEV_LOOKUP | ||
8 | select CPU_V7 | ||
9 | select GENERIC_CLOCKEVENTS | ||
10 | select HAVE_SMP | ||
11 | select MIGHT_HAVE_CACHE_L2X0 | ||
12 | help | ||
13 | Support for ST-Ericsson's Ux500 architecture | ||
14 | |||
1 | if ARCH_U8500 | 15 | if ARCH_U8500 |
2 | 16 | ||
3 | config UX500_SOC_COMMON | 17 | config UX500_SOC_COMMON |
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile index f24710dfc395..bf9b6be5b180 100644 --- a/arch/arm/mach-ux500/Makefile +++ b/arch/arm/mach-ux500/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := cpu.o devices.o devices-common.o \ | 5 | obj-y := cpu.o devices.o devices-common.o \ |
6 | id.o usb.o timer.o | 6 | id.o usb.o timer.o pm.o |
7 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | 7 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o |
8 | obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o | 8 | obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o |
9 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o | 9 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o |
@@ -15,3 +15,5 @@ obj-$(CONFIG_MACH_MOP500) += board-mop500.o board-mop500-sdi.o \ | |||
15 | board-mop500-audio.o | 15 | board-mop500-audio.o |
16 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 16 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
17 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 17 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
18 | |||
19 | CFLAGS_hotplug.o += -march=armv7-a | ||
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c index 7209db7cdc72..aba9e5692958 100644 --- a/arch/arm/mach-ux500/board-mop500-audio.c +++ b/arch/arm/mach-ux500/board-mop500-audio.c | |||
@@ -10,10 +10,9 @@ | |||
10 | #include <linux/platform_data/pinctrl-nomadik.h> | 10 | #include <linux/platform_data/pinctrl-nomadik.h> |
11 | #include <linux/platform_data/dma-ste-dma40.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | 12 | ||
13 | #include <mach/devices.h> | 13 | #include "devices.h" |
14 | #include <mach/hardware.h> | 14 | #include "irqs.h" |
15 | #include <mach/irqs.h> | 15 | #include <linux/platform_data/asoc-ux500-msp.h> |
16 | #include <mach/msp.h> | ||
17 | 16 | ||
18 | #include "ste-dma40-db8500.h" | 17 | #include "ste-dma40-db8500.h" |
19 | #include "board-mop500.h" | 18 | #include "board-mop500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index 0a3f30df1eb8..f3976f9c404a 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c | |||
@@ -13,8 +13,6 @@ | |||
13 | 13 | ||
14 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | ||
17 | |||
18 | #include "pins-db8500.h" | 16 | #include "pins-db8500.h" |
19 | #include "board-mop500.h" | 17 | #include "board-mop500.h" |
20 | 18 | ||
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c index 051b62c27102..f76be4ade7c2 100644 --- a/arch/arm/mach-ux500/board-mop500-sdi.c +++ b/arch/arm/mach-ux500/board-mop500-sdi.c | |||
@@ -14,9 +14,9 @@ | |||
14 | #include <linux/platform_data/dma-ste-dma40.h> | 14 | #include <linux/platform_data/dma-ste-dma40.h> |
15 | 15 | ||
16 | #include <asm/mach-types.h> | 16 | #include <asm/mach-types.h> |
17 | #include <mach/devices.h> | 17 | #include "devices.h" |
18 | #include <mach/hardware.h> | ||
19 | 18 | ||
19 | #include "db8500-regs.h" | ||
20 | #include "devices-db8500.h" | 20 | #include "devices-db8500.h" |
21 | #include "board-mop500.h" | 21 | #include "board-mop500.h" |
22 | #include "ste-dma40-db8500.h" | 22 | #include "ste-dma40-db8500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index ead91c968ff4..d397c19570af 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c | |||
@@ -12,12 +12,15 @@ | |||
12 | #include <linux/mfd/tc3589x.h> | 12 | #include <linux/mfd/tc3589x.h> |
13 | #include <linux/input/matrix_keypad.h> | 13 | #include <linux/input/matrix_keypad.h> |
14 | 14 | ||
15 | #include <mach/irqs.h> | 15 | #include "irqs.h" |
16 | 16 | ||
17 | #include "board-mop500.h" | 17 | #include "board-mop500.h" |
18 | 18 | ||
19 | /* Dummy data that can be overridden by staging driver */ | 19 | static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = { |
20 | struct i2c_board_info __initdata __weak mop500_i2c3_devices_u8500[] = { | 20 | { |
21 | I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B), | ||
22 | .irq = NOMADIK_GPIO_TO_IRQ(84), | ||
23 | }, | ||
21 | }; | 24 | }; |
22 | 25 | ||
23 | /* | 26 | /* |
diff --git a/arch/arm/mach-ux500/board-mop500-uib.c b/arch/arm/mach-ux500/board-mop500-uib.c index 7037d3687e9f..bdaa422da028 100644 --- a/arch/arm/mach-ux500/board-mop500-uib.c +++ b/arch/arm/mach-ux500/board-mop500-uib.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/i2c.h> | 12 | #include <linux/i2c.h> |
13 | 13 | ||
14 | #include <mach/hardware.h> | ||
15 | #include "board-mop500.h" | 14 | #include "board-mop500.h" |
16 | #include "id.h" | 15 | #include "id.h" |
17 | 16 | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index b03457881c4b..0d59e1ad810f 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -41,13 +41,13 @@ | |||
41 | #include <asm/mach-types.h> | 41 | #include <asm/mach-types.h> |
42 | #include <asm/mach/arch.h> | 42 | #include <asm/mach/arch.h> |
43 | 43 | ||
44 | #include <mach/hardware.h> | 44 | #include "setup.h" |
45 | #include <mach/setup.h> | 45 | #include "devices.h" |
46 | #include <mach/devices.h> | 46 | #include "irqs.h" |
47 | #include <mach/irqs.h> | ||
48 | #include <linux/platform_data/crypto-ux500.h> | 47 | #include <linux/platform_data/crypto-ux500.h> |
49 | 48 | ||
50 | #include "ste-dma40-db8500.h" | 49 | #include "ste-dma40-db8500.h" |
50 | #include "db8500-regs.h" | ||
51 | #include "devices-db8500.h" | 51 | #include "devices-db8500.h" |
52 | #include "board-mop500.h" | 52 | #include "board-mop500.h" |
53 | #include "board-mop500-regulators.h" | 53 | #include "board-mop500-regulators.h" |
@@ -206,63 +206,6 @@ struct ab8500_platform_data ab8500_platdata = { | |||
206 | .codec = &ab8500_codec_pdata, | 206 | .codec = &ab8500_codec_pdata, |
207 | }; | 207 | }; |
208 | 208 | ||
209 | /* | ||
210 | * Thermal Sensor | ||
211 | */ | ||
212 | |||
213 | static struct resource db8500_thsens_resources[] = { | ||
214 | { | ||
215 | .name = "IRQ_HOTMON_LOW", | ||
216 | .start = IRQ_PRCMU_HOTMON_LOW, | ||
217 | .end = IRQ_PRCMU_HOTMON_LOW, | ||
218 | .flags = IORESOURCE_IRQ, | ||
219 | }, | ||
220 | { | ||
221 | .name = "IRQ_HOTMON_HIGH", | ||
222 | .start = IRQ_PRCMU_HOTMON_HIGH, | ||
223 | .end = IRQ_PRCMU_HOTMON_HIGH, | ||
224 | .flags = IORESOURCE_IRQ, | ||
225 | }, | ||
226 | }; | ||
227 | |||
228 | static struct db8500_thsens_platform_data db8500_thsens_data = { | ||
229 | .trip_points[0] = { | ||
230 | .temp = 70000, | ||
231 | .type = THERMAL_TRIP_ACTIVE, | ||
232 | .cdev_name = { | ||
233 | [0] = "thermal-cpufreq-0", | ||
234 | }, | ||
235 | }, | ||
236 | .trip_points[1] = { | ||
237 | .temp = 75000, | ||
238 | .type = THERMAL_TRIP_ACTIVE, | ||
239 | .cdev_name = { | ||
240 | [0] = "thermal-cpufreq-0", | ||
241 | }, | ||
242 | }, | ||
243 | .trip_points[2] = { | ||
244 | .temp = 80000, | ||
245 | .type = THERMAL_TRIP_ACTIVE, | ||
246 | .cdev_name = { | ||
247 | [0] = "thermal-cpufreq-0", | ||
248 | }, | ||
249 | }, | ||
250 | .trip_points[3] = { | ||
251 | .temp = 85000, | ||
252 | .type = THERMAL_TRIP_CRITICAL, | ||
253 | }, | ||
254 | .num_trips = 4, | ||
255 | }; | ||
256 | |||
257 | static struct platform_device u8500_thsens_device = { | ||
258 | .name = "db8500-thermal", | ||
259 | .resource = db8500_thsens_resources, | ||
260 | .num_resources = ARRAY_SIZE(db8500_thsens_resources), | ||
261 | .dev = { | ||
262 | .platform_data = &db8500_thsens_data, | ||
263 | }, | ||
264 | }; | ||
265 | |||
266 | static struct platform_device u8500_cpufreq_cooling_device = { | 209 | static struct platform_device u8500_cpufreq_cooling_device = { |
267 | .name = "db8500-cpufreq-cooling", | 210 | .name = "db8500-cpufreq-cooling", |
268 | }; | 211 | }; |
@@ -622,7 +565,6 @@ static struct platform_device *snowball_platform_devs[] __initdata = { | |||
622 | &snowball_key_dev, | 565 | &snowball_key_dev, |
623 | &snowball_sbnet_dev, | 566 | &snowball_sbnet_dev, |
624 | &snowball_gpio_en_3v3_regulator_dev, | 567 | &snowball_gpio_en_3v3_regulator_dev, |
625 | &u8500_thsens_device, | ||
626 | &u8500_cpufreq_cooling_device, | 568 | &u8500_cpufreq_cooling_device, |
627 | }; | 569 | }; |
628 | 570 | ||
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index eaa605f5d90d..16bf1ac020a8 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -8,8 +8,8 @@ | |||
8 | #define __BOARD_MOP500_H | 8 | #define __BOARD_MOP500_H |
9 | 9 | ||
10 | /* For NOMADIK_NR_GPIO */ | 10 | /* For NOMADIK_NR_GPIO */ |
11 | #include <mach/irqs.h> | 11 | #include "irqs.h" |
12 | #include <mach/msp.h> | 12 | #include <linux/platform_data/asoc-ux500-msp.h> |
13 | #include <linux/amba/mmci.h> | 13 | #include <linux/amba/mmci.h> |
14 | 14 | ||
15 | /* Snowball specific GPIO assignments, this board has no GPIO expander */ | 15 | /* Snowball specific GPIO assignments, this board has no GPIO expander */ |
diff --git a/arch/arm/mach-ux500/cache-l2x0.c b/arch/arm/mach-ux500/cache-l2x0.c index 1c1609da76ce..e12cc92dfca5 100644 --- a/arch/arm/mach-ux500/cache-l2x0.c +++ b/arch/arm/mach-ux500/cache-l2x0.c | |||
@@ -9,8 +9,8 @@ | |||
9 | 9 | ||
10 | #include <asm/cacheflush.h> | 10 | #include <asm/cacheflush.h> |
11 | #include <asm/hardware/cache-l2x0.h> | 11 | #include <asm/hardware/cache-l2x0.h> |
12 | #include <mach/hardware.h> | ||
13 | 12 | ||
13 | #include "db8500-regs.h" | ||
14 | #include "id.h" | 14 | #include "id.h" |
15 | 15 | ||
16 | static void __iomem *l2x0_base; | 16 | static void __iomem *l2x0_base; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 19235cf7bbe3..7a66a810274a 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -28,15 +28,13 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | 30 | ||
31 | #include <mach/hardware.h> | 31 | #include "setup.h" |
32 | #include <mach/setup.h> | 32 | #include "devices.h" |
33 | #include <mach/devices.h> | 33 | #include "irqs.h" |
34 | #include <mach/db8500-regs.h> | ||
35 | #include <mach/irqs.h> | ||
36 | 34 | ||
37 | #include "devices-db8500.h" | 35 | #include "devices-db8500.h" |
38 | #include "ste-dma40-db8500.h" | 36 | #include "ste-dma40-db8500.h" |
39 | 37 | #include "db8500-regs.h" | |
40 | #include "board-mop500.h" | 38 | #include "board-mop500.h" |
41 | #include "id.h" | 39 | #include "id.h" |
42 | 40 | ||
@@ -94,8 +92,6 @@ void __init u8500_map_io(void) | |||
94 | iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc)); | 92 | iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc)); |
95 | else | 93 | else |
96 | iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); | 94 | iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); |
97 | |||
98 | _PRCMU_BASE = __io_address(U8500_PRCMU_BASE); | ||
99 | } | 95 | } |
100 | 96 | ||
101 | static struct resource db8500_pmu_resources[] = { | 97 | static struct resource db8500_pmu_resources[] = { |
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 537870d3fea8..915e2636cbaa 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #include <linux/platform_device.h> | 9 | #include <linux/platform_device.h> |
10 | #include <linux/io.h> | 10 | #include <linux/io.h> |
11 | #include <linux/mfd/db8500-prcmu.h> | 11 | #include <linux/mfd/dbx500-prcmu.h> |
12 | #include <linux/clksrc-dbx500-prcmu.h> | 12 | #include <linux/clksrc-dbx500-prcmu.h> |
13 | #include <linux/sys_soc.h> | 13 | #include <linux/sys_soc.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
@@ -20,18 +20,17 @@ | |||
20 | #include <linux/irqchip.h> | 20 | #include <linux/irqchip.h> |
21 | #include <linux/irqchip/arm-gic.h> | 21 | #include <linux/irqchip/arm-gic.h> |
22 | #include <linux/platform_data/clk-ux500.h> | 22 | #include <linux/platform_data/clk-ux500.h> |
23 | #include <linux/platform_data/arm-ux500-pm.h> | ||
23 | 24 | ||
24 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
25 | 26 | ||
26 | #include <mach/hardware.h> | 27 | #include "setup.h" |
27 | #include <mach/setup.h> | 28 | #include "devices.h" |
28 | #include <mach/devices.h> | ||
29 | 29 | ||
30 | #include "board-mop500.h" | 30 | #include "board-mop500.h" |
31 | #include "db8500-regs.h" | ||
31 | #include "id.h" | 32 | #include "id.h" |
32 | 33 | ||
33 | void __iomem *_PRCMU_BASE; | ||
34 | |||
35 | /* | 34 | /* |
36 | * FIXME: Should we set up the GPIO domain here? | 35 | * FIXME: Should we set up the GPIO domain here? |
37 | * | 36 | * |
@@ -68,13 +67,23 @@ void __init ux500_init_irq(void) | |||
68 | * Init clocks here so that they are available for system timer | 67 | * Init clocks here so that they are available for system timer |
69 | * initialization. | 68 | * initialization. |
70 | */ | 69 | */ |
71 | if (cpu_is_u8500_family() || cpu_is_u9540()) | 70 | if (cpu_is_u8500_family()) { |
72 | db8500_prcmu_early_init(); | 71 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); |
73 | 72 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); | |
74 | if (cpu_is_u8500_family() || cpu_is_u9540()) | 73 | u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE, |
75 | u8500_clk_init(); | 74 | U8500_CLKRST3_BASE, U8500_CLKRST5_BASE, |
76 | else if (cpu_is_u8540()) | 75 | U8500_CLKRST6_BASE); |
76 | } else if (cpu_is_u9540()) { | ||
77 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); | ||
78 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); | ||
79 | u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE, | ||
80 | U8500_CLKRST3_BASE, U8500_CLKRST5_BASE, | ||
81 | U8500_CLKRST6_BASE); | ||
82 | } else if (cpu_is_u8540()) { | ||
83 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1); | ||
84 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1); | ||
77 | u8540_clk_init(); | 85 | u8540_clk_init(); |
86 | } | ||
78 | } | 87 | } |
79 | 88 | ||
80 | void __init ux500_init_late(void) | 89 | void __init ux500_init_late(void) |
diff --git a/arch/arm/mach-ux500/cpuidle.c b/arch/arm/mach-ux500/cpuidle.c index ce9149302cc3..654115afb367 100644 --- a/arch/arm/mach-ux500/cpuidle.c +++ b/arch/arm/mach-ux500/cpuidle.c | |||
@@ -16,10 +16,13 @@ | |||
16 | #include <linux/atomic.h> | 16 | #include <linux/atomic.h> |
17 | #include <linux/smp.h> | 17 | #include <linux/smp.h> |
18 | #include <linux/mfd/dbx500-prcmu.h> | 18 | #include <linux/mfd/dbx500-prcmu.h> |
19 | #include <linux/platform_data/arm-ux500-pm.h> | ||
19 | 20 | ||
20 | #include <asm/cpuidle.h> | 21 | #include <asm/cpuidle.h> |
21 | #include <asm/proc-fns.h> | 22 | #include <asm/proc-fns.h> |
22 | 23 | ||
24 | #include "db8500-regs.h" | ||
25 | |||
23 | static atomic_t master = ATOMIC_INIT(0); | 26 | static atomic_t master = ATOMIC_INIT(0); |
24 | static DEFINE_SPINLOCK(master_lock); | 27 | static DEFINE_SPINLOCK(master_lock); |
25 | static DEFINE_PER_CPU(struct cpuidle_device, ux500_cpuidle_device); | 28 | static DEFINE_PER_CPU(struct cpuidle_device, ux500_cpuidle_device); |
@@ -130,7 +133,7 @@ int __init ux500_idle_init(void) | |||
130 | int ret, cpu; | 133 | int ret, cpu; |
131 | struct cpuidle_device *device; | 134 | struct cpuidle_device *device; |
132 | 135 | ||
133 | /* Configure wake up reasons */ | 136 | /* Configure wake up reasons */ |
134 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | | 137 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | |
135 | PRCMU_WAKEUP(ABB)); | 138 | PRCMU_WAKEUP(ABB)); |
136 | 139 | ||
diff --git a/arch/arm/mach-ux500/include/mach/db8500-regs.h b/arch/arm/mach-ux500/db8500-regs.h index 1530d493879d..b2d7a0b98629 100644 --- a/arch/arm/mach-ux500/include/mach/db8500-regs.h +++ b/arch/arm/mach-ux500/db8500-regs.h | |||
@@ -170,4 +170,32 @@ | |||
170 | /* SoC identification number information */ | 170 | /* SoC identification number information */ |
171 | #define U8500_BB_UID_BASE (U8500_BACKUPRAM1_BASE + 0xFC0) | 171 | #define U8500_BB_UID_BASE (U8500_BACKUPRAM1_BASE + 0xFC0) |
172 | 172 | ||
173 | /* Offsets to specific addresses in some IP blocks for DMA */ | ||
174 | #define MSP_TX_RX_REG_OFFSET 0 | ||
175 | #define CRYP1_RX_REG_OFFSET 0x10 | ||
176 | #define CRYP1_TX_REG_OFFSET 0x8 | ||
177 | #define HASH1_TX_REG_OFFSET 0x4 | ||
178 | |||
179 | /* | ||
180 | * Macros to get at IO space when running virtually | ||
181 | * We dont map all the peripherals, let ioremap do | ||
182 | * this for us. We map only very basic peripherals here. | ||
183 | */ | ||
184 | #define U8500_IO_VIRTUAL 0xf0000000 | ||
185 | #define U8500_IO_PHYSICAL 0xa0000000 | ||
186 | /* This is where we map in the ROM to check ASIC IDs */ | ||
187 | #define UX500_VIRT_ROM 0xf0000000 | ||
188 | |||
189 | /* This macro is used in assembly, so no cast */ | ||
190 | #define IO_ADDRESS(x) \ | ||
191 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | ||
192 | |||
193 | /* typesafe io address */ | ||
194 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) | ||
195 | |||
196 | /* Used by some plat-nomadik code */ | ||
197 | #define io_p2v(n) __io_address(n) | ||
198 | |||
199 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) | ||
200 | |||
173 | #endif | 201 | #endif |
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c index 16b5f71e6974..f71b3d7bd4fb 100644 --- a/arch/arm/mach-ux500/devices-common.c +++ b/arch/arm/mach-ux500/devices-common.c | |||
@@ -13,8 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/platform_data/pinctrl-nomadik.h> | 14 | #include <linux/platform_data/pinctrl-nomadik.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include "irqs.h" |
17 | #include <mach/irqs.h> | ||
18 | 17 | ||
19 | #include "devices-common.h" | 18 | #include "devices-common.h" |
20 | 19 | ||
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index f3d9419f75d3..1cf94ce0feec 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -15,10 +15,10 @@ | |||
15 | #include <linux/platform_data/dma-ste-dma40.h> | 15 | #include <linux/platform_data/dma-ste-dma40.h> |
16 | #include <linux/mfd/dbx500-prcmu.h> | 16 | #include <linux/mfd/dbx500-prcmu.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include "setup.h" |
19 | #include <mach/setup.h> | 19 | #include "irqs.h" |
20 | #include <mach/irqs.h> | ||
21 | 20 | ||
21 | #include "db8500-regs.h" | ||
22 | #include "devices-db8500.h" | 22 | #include "devices-db8500.h" |
23 | #include "ste-dma40-db8500.h" | 23 | #include "ste-dma40-db8500.h" |
24 | 24 | ||
@@ -199,6 +199,8 @@ struct platform_device u8500_ske_keypad_device = { | |||
199 | 199 | ||
200 | struct prcmu_pdata db8500_prcmu_pdata = { | 200 | struct prcmu_pdata db8500_prcmu_pdata = { |
201 | .ab_platdata = &ab8500_platdata, | 201 | .ab_platdata = &ab8500_platdata, |
202 | .ab_irq = IRQ_DB8500_AB8500, | ||
203 | .irq_base = IRQ_PRCMU_BASE, | ||
202 | .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET, | 204 | .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET, |
203 | .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET, | 205 | .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET, |
204 | }; | 206 | }; |
diff --git a/arch/arm/mach-ux500/devices-db8500.h b/arch/arm/mach-ux500/devices-db8500.h index dbcb35c48f06..321998320f98 100644 --- a/arch/arm/mach-ux500/devices-db8500.h +++ b/arch/arm/mach-ux500/devices-db8500.h | |||
@@ -9,7 +9,8 @@ | |||
9 | #define __DEVICES_DB8500_H | 9 | #define __DEVICES_DB8500_H |
10 | 10 | ||
11 | #include <linux/platform_data/usb-musb-ux500.h> | 11 | #include <linux/platform_data/usb-musb-ux500.h> |
12 | #include <mach/irqs.h> | 12 | #include "irqs.h" |
13 | #include "db8500-regs.h" | ||
13 | #include "devices-common.h" | 14 | #include "devices-common.h" |
14 | 15 | ||
15 | struct ske_keypad_platform_data; | 16 | struct ske_keypad_platform_data; |
diff --git a/arch/arm/mach-ux500/devices.c b/arch/arm/mach-ux500/devices.c index ea0a2f92ca70..0f9e52b95935 100644 --- a/arch/arm/mach-ux500/devices.c +++ b/arch/arm/mach-ux500/devices.c | |||
@@ -11,8 +11,9 @@ | |||
11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
12 | #include <linux/amba/bus.h> | 12 | #include <linux/amba/bus.h> |
13 | 13 | ||
14 | #include <mach/hardware.h> | 14 | #include "setup.h" |
15 | #include <mach/setup.h> | 15 | |
16 | #include "db8500-regs.h" | ||
16 | 17 | ||
17 | void __init amba_add_devices(struct amba_device *devs[], int num) | 18 | void __init amba_add_devices(struct amba_device *devs[], int num) |
18 | { | 19 | { |
diff --git a/arch/arm/mach-ux500/include/mach/devices.h b/arch/arm/mach-ux500/devices.h index cbc6f1e4104d..cbc6f1e4104d 100644 --- a/arch/arm/mach-ux500/include/mach/devices.h +++ b/arch/arm/mach-ux500/devices.h | |||
diff --git a/arch/arm/mach-ux500/hotplug.c b/arch/arm/mach-ux500/hotplug.c index 2f6af259015d..87abcf278432 100644 --- a/arch/arm/mach-ux500/hotplug.c +++ b/arch/arm/mach-ux500/hotplug.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/smp_plat.h> | 16 | #include <asm/smp_plat.h> |
17 | 17 | ||
18 | #include <mach/setup.h> | 18 | #include "setup.h" |
19 | 19 | ||
20 | /* | 20 | /* |
21 | * platform-specific code to shutdown a CPU | 21 | * platform-specific code to shutdown a CPU |
diff --git a/arch/arm/mach-ux500/id.c b/arch/arm/mach-ux500/id.c index 9f951842e1e5..0d33d1a06955 100644 --- a/arch/arm/mach-ux500/id.c +++ b/arch/arm/mach-ux500/id.c | |||
@@ -14,9 +14,9 @@ | |||
14 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
15 | #include <asm/mach/map.h> | 15 | #include <asm/mach/map.h> |
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include "setup.h" |
18 | #include <mach/setup.h> | ||
19 | 18 | ||
19 | #include "db8500-regs.h" | ||
20 | #include "id.h" | 20 | #include "id.h" |
21 | 21 | ||
22 | struct dbx500_asic_id dbx500_id; | 22 | struct dbx500_asic_id dbx500_id; |
diff --git a/arch/arm/mach-ux500/include/mach/debug-macro.S b/arch/arm/mach-ux500/include/mach/debug-macro.S deleted file mode 100644 index 67035223334a..000000000000 --- a/arch/arm/mach-ux500/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | #include <mach/hardware.h> | ||
12 | |||
13 | #if CONFIG_UX500_DEBUG_UART > 2 | ||
14 | #error Invalid Ux500 debug UART | ||
15 | #endif | ||
16 | |||
17 | /* | ||
18 | * DEBUG_LL only works if only one SOC is built in. We don't use #else below | ||
19 | * in order to get "__UX500_UART redefined" warnings if more than one SOC is | ||
20 | * built, so that there's some hint during the build that something is wrong. | ||
21 | */ | ||
22 | |||
23 | #ifdef CONFIG_UX500_SOC_DB8500 | ||
24 | #define __UX500_UART(n) U8500_UART##n##_BASE | ||
25 | #endif | ||
26 | |||
27 | #ifndef __UX500_UART | ||
28 | #error Unknown SOC | ||
29 | #endif | ||
30 | |||
31 | #define UX500_UART(n) __UX500_UART(n) | ||
32 | #define UART_BASE UX500_UART(CONFIG_UX500_DEBUG_UART) | ||
33 | |||
34 | .macro addruart, rp, rv, tmp | ||
35 | ldr \rp, =UART_BASE @ no, physical address | ||
36 | ldr \rv, =IO_ADDRESS(UART_BASE) @ yes, virtual address | ||
37 | .endm | ||
38 | |||
39 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-ux500/include/mach/hardware.h b/arch/arm/mach-ux500/include/mach/hardware.h deleted file mode 100644 index 5201ddace503..000000000000 --- a/arch/arm/mach-ux500/include/mach/hardware.h +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson. | ||
3 | * | ||
4 | * U8500 hardware definitions | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | #ifndef __MACH_HARDWARE_H | ||
11 | #define __MACH_HARDWARE_H | ||
12 | |||
13 | /* | ||
14 | * Macros to get at IO space when running virtually | ||
15 | * We dont map all the peripherals, let ioremap do | ||
16 | * this for us. We map only very basic peripherals here. | ||
17 | */ | ||
18 | #define U8500_IO_VIRTUAL 0xf0000000 | ||
19 | #define U8500_IO_PHYSICAL 0xa0000000 | ||
20 | /* This is where we map in the ROM to check ASIC IDs */ | ||
21 | #define UX500_VIRT_ROM 0xf0000000 | ||
22 | |||
23 | /* This macro is used in assembly, so no cast */ | ||
24 | #define IO_ADDRESS(x) \ | ||
25 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | ||
26 | |||
27 | /* typesafe io address */ | ||
28 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) | ||
29 | |||
30 | /* Used by some plat-nomadik code */ | ||
31 | #define io_p2v(n) __io_address(n) | ||
32 | |||
33 | #include <mach/db8500-regs.h> | ||
34 | |||
35 | #define MSP_TX_RX_REG_OFFSET 0 | ||
36 | #define CRYP1_RX_REG_OFFSET 0x10 | ||
37 | #define CRYP1_TX_REG_OFFSET 0x8 | ||
38 | #define HASH1_TX_REG_OFFSET 0x4 | ||
39 | |||
40 | #ifndef __ASSEMBLY__ | ||
41 | |||
42 | extern void __iomem *_PRCMU_BASE; | ||
43 | |||
44 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) | ||
45 | |||
46 | #endif /* __ASSEMBLY__ */ | ||
47 | #endif /* __MACH_HARDWARE_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/arch/arm/mach-ux500/include/mach/msp.h deleted file mode 100644 index 9991aea3d577..000000000000 --- a/arch/arm/mach-ux500/include/mach/msp.h +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010 | ||
3 | * | ||
4 | * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson | ||
5 | * License terms: GNU General Public License (GPL), version 2. | ||
6 | */ | ||
7 | |||
8 | #ifndef __MSP_H | ||
9 | #define __MSP_H | ||
10 | |||
11 | #include <linux/platform_data/dma-ste-dma40.h> | ||
12 | |||
13 | enum msp_i2s_id { | ||
14 | MSP_I2S_0 = 0, | ||
15 | MSP_I2S_1, | ||
16 | MSP_I2S_2, | ||
17 | MSP_I2S_3, | ||
18 | }; | ||
19 | |||
20 | /* Platform data structure for a MSP I2S-device */ | ||
21 | struct msp_i2s_platform_data { | ||
22 | enum msp_i2s_id id; | ||
23 | struct stedma40_chan_cfg *msp_i2s_dma_rx; | ||
24 | struct stedma40_chan_cfg *msp_i2s_dma_tx; | ||
25 | }; | ||
26 | |||
27 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/timex.h b/arch/arm/mach-ux500/include/mach/timex.h deleted file mode 100644 index d0942c174018..000000000000 --- a/arch/arm/mach-ux500/include/mach/timex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_TIMEX_H | ||
2 | #define __ASM_ARCH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 110000000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/uncompress.h b/arch/arm/mach-ux500/include/mach/uncompress.h deleted file mode 100644 index 36969d52e53a..000000000000 --- a/arch/arm/mach-ux500/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
19 | #define __ASM_ARCH_UNCOMPRESS_H | ||
20 | |||
21 | #include <asm/setup.h> | ||
22 | #include <asm/mach-types.h> | ||
23 | #include <linux/io.h> | ||
24 | #include <linux/amba/serial.h> | ||
25 | #include <mach/hardware.h> | ||
26 | |||
27 | void __iomem *ux500_uart_base; | ||
28 | |||
29 | static void putc(const char c) | ||
30 | { | ||
31 | /* Do nothing if the UART is not enabled. */ | ||
32 | if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) | ||
33 | return; | ||
34 | |||
35 | if (c == '\n') | ||
36 | putc('\r'); | ||
37 | |||
38 | while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 5)) | ||
39 | barrier(); | ||
40 | __raw_writeb(c, ux500_uart_base + UART01x_DR); | ||
41 | } | ||
42 | |||
43 | static void flush(void) | ||
44 | { | ||
45 | if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) | ||
46 | return; | ||
47 | while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 3)) | ||
48 | barrier(); | ||
49 | } | ||
50 | |||
51 | static inline void arch_decomp_setup(void) | ||
52 | { | ||
53 | /* Use machine_is_foo() macro if you need to switch base someday */ | ||
54 | ux500_uart_base = (void __iomem *)U8500_UART2_BASE; | ||
55 | } | ||
56 | |||
57 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/irqs-board-mop500.h b/arch/arm/mach-ux500/irqs-board-mop500.h index d526dd8e87d3..d526dd8e87d3 100644 --- a/arch/arm/mach-ux500/include/mach/irqs-board-mop500.h +++ b/arch/arm/mach-ux500/irqs-board-mop500.h | |||
diff --git a/arch/arm/mach-ux500/include/mach/irqs-db8500.h b/arch/arm/mach-ux500/irqs-db8500.h index 68bc14974608..f3a9d5947ef3 100644 --- a/arch/arm/mach-ux500/include/mach/irqs-db8500.h +++ b/arch/arm/mach-ux500/irqs-db8500.h | |||
@@ -109,31 +109,6 @@ | |||
109 | 109 | ||
110 | /* Virtual interrupts corresponding to the PRCMU wakeups. */ | 110 | /* Virtual interrupts corresponding to the PRCMU wakeups. */ |
111 | #define IRQ_PRCMU_BASE IRQ_SOC_START | 111 | #define IRQ_PRCMU_BASE IRQ_SOC_START |
112 | #define NUM_PRCMU_WAKEUPS (IRQ_PRCMU_END - IRQ_PRCMU_BASE) | ||
113 | |||
114 | #define IRQ_PRCMU_RTC (IRQ_PRCMU_BASE) | ||
115 | #define IRQ_PRCMU_RTT0 (IRQ_PRCMU_BASE + 1) | ||
116 | #define IRQ_PRCMU_RTT1 (IRQ_PRCMU_BASE + 2) | ||
117 | #define IRQ_PRCMU_HSI0 (IRQ_PRCMU_BASE + 3) | ||
118 | #define IRQ_PRCMU_HSI1 (IRQ_PRCMU_BASE + 4) | ||
119 | #define IRQ_PRCMU_CA_WAKE (IRQ_PRCMU_BASE + 5) | ||
120 | #define IRQ_PRCMU_USB (IRQ_PRCMU_BASE + 6) | ||
121 | #define IRQ_PRCMU_ABB (IRQ_PRCMU_BASE + 7) | ||
122 | #define IRQ_PRCMU_ABB_FIFO (IRQ_PRCMU_BASE + 8) | ||
123 | #define IRQ_PRCMU_ARM (IRQ_PRCMU_BASE + 9) | ||
124 | #define IRQ_PRCMU_MODEM_SW_RESET_REQ (IRQ_PRCMU_BASE + 10) | ||
125 | #define IRQ_PRCMU_GPIO0 (IRQ_PRCMU_BASE + 11) | ||
126 | #define IRQ_PRCMU_GPIO1 (IRQ_PRCMU_BASE + 12) | ||
127 | #define IRQ_PRCMU_GPIO2 (IRQ_PRCMU_BASE + 13) | ||
128 | #define IRQ_PRCMU_GPIO3 (IRQ_PRCMU_BASE + 14) | ||
129 | #define IRQ_PRCMU_GPIO4 (IRQ_PRCMU_BASE + 15) | ||
130 | #define IRQ_PRCMU_GPIO5 (IRQ_PRCMU_BASE + 16) | ||
131 | #define IRQ_PRCMU_GPIO6 (IRQ_PRCMU_BASE + 17) | ||
132 | #define IRQ_PRCMU_GPIO7 (IRQ_PRCMU_BASE + 18) | ||
133 | #define IRQ_PRCMU_GPIO8 (IRQ_PRCMU_BASE + 19) | ||
134 | #define IRQ_PRCMU_CA_SLEEP (IRQ_PRCMU_BASE + 20) | ||
135 | #define IRQ_PRCMU_HOTMON_LOW (IRQ_PRCMU_BASE + 21) | ||
136 | #define IRQ_PRCMU_HOTMON_HIGH (IRQ_PRCMU_BASE + 22) | ||
137 | #define IRQ_PRCMU_END (IRQ_PRCMU_BASE + 23) | 112 | #define IRQ_PRCMU_END (IRQ_PRCMU_BASE + 23) |
138 | 113 | ||
139 | /* | 114 | /* |
diff --git a/arch/arm/mach-ux500/include/mach/irqs.h b/arch/arm/mach-ux500/irqs.h index fc77b4274c8d..15b2af698ed7 100644 --- a/arch/arm/mach-ux500/include/mach/irqs.h +++ b/arch/arm/mach-ux500/irqs.h | |||
@@ -10,8 +10,6 @@ | |||
10 | #ifndef ASM_ARCH_IRQS_H | 10 | #ifndef ASM_ARCH_IRQS_H |
11 | #define ASM_ARCH_IRQS_H | 11 | #define ASM_ARCH_IRQS_H |
12 | 12 | ||
13 | #include <mach/hardware.h> | ||
14 | |||
15 | #define IRQ_LOCALTIMER 29 | 13 | #define IRQ_LOCALTIMER 29 |
16 | #define IRQ_LOCALWDOG 30 | 14 | #define IRQ_LOCALWDOG 30 |
17 | 15 | ||
@@ -36,14 +34,14 @@ | |||
36 | /* This will be overridden by SoC-specific irq headers */ | 34 | /* This will be overridden by SoC-specific irq headers */ |
37 | #define IRQ_SOC_END IRQ_SOC_START | 35 | #define IRQ_SOC_END IRQ_SOC_START |
38 | 36 | ||
39 | #include <mach/irqs-db8500.h> | 37 | #include "irqs-db8500.h" |
40 | 38 | ||
41 | #define IRQ_BOARD_START IRQ_SOC_END | 39 | #define IRQ_BOARD_START IRQ_SOC_END |
42 | /* This will be overridden by board-specific irq headers */ | 40 | /* This will be overridden by board-specific irq headers */ |
43 | #define IRQ_BOARD_END IRQ_BOARD_START | 41 | #define IRQ_BOARD_END IRQ_BOARD_START |
44 | 42 | ||
45 | #ifdef CONFIG_MACH_MOP500 | 43 | #ifdef CONFIG_MACH_MOP500 |
46 | #include <mach/irqs-board-mop500.h> | 44 | #include "irqs-board-mop500.h" |
47 | #endif | 45 | #endif |
48 | 46 | ||
49 | #define UX500_NR_IRQS IRQ_BOARD_END | 47 | #define UX500_NR_IRQS IRQ_BOARD_END |
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 18f7af339dc9..12ad8ad850aa 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -22,9 +22,9 @@ | |||
22 | #include <asm/smp_plat.h> | 22 | #include <asm/smp_plat.h> |
23 | #include <asm/smp_scu.h> | 23 | #include <asm/smp_scu.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | 25 | #include "setup.h" |
26 | #include <mach/setup.h> | ||
27 | 26 | ||
27 | #include "db8500-regs.h" | ||
28 | #include "id.h" | 28 | #include "id.h" |
29 | 29 | ||
30 | /* This is called from headsmp.S to wakeup the secondary core */ | 30 | /* This is called from headsmp.S to wakeup the secondary core */ |
diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c new file mode 100644 index 000000000000..1a468f0fd22e --- /dev/null +++ b/arch/arm/mach-ux500/pm.c | |||
@@ -0,0 +1,167 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010-2013 | ||
3 | * Author: Rickard Andersson <rickard.andersson@stericsson.com> for | ||
4 | * ST-Ericsson. | ||
5 | * Author: Daniel Lezcano <daniel.lezcano@linaro.org> for Linaro. | ||
6 | * License terms: GNU General Public License (GPL) version 2 | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/irqchip/arm-gic.h> | ||
12 | #include <linux/delay.h> | ||
13 | #include <linux/io.h> | ||
14 | #include <linux/platform_data/arm-ux500-pm.h> | ||
15 | |||
16 | #include "db8500-regs.h" | ||
17 | |||
18 | /* ARM WFI Standby signal register */ | ||
19 | #define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130) | ||
20 | #define PRCM_ARM_WFI_STANDBY_WFI0 0x08 | ||
21 | #define PRCM_ARM_WFI_STANDBY_WFI1 0x10 | ||
22 | #define PRCM_IOCR (prcmu_base + 0x310) | ||
23 | #define PRCM_IOCR_IOFORCE 0x1 | ||
24 | |||
25 | /* Dual A9 core interrupt management unit registers */ | ||
26 | #define PRCM_A9_MASK_REQ (prcmu_base + 0x328) | ||
27 | #define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1 | ||
28 | |||
29 | #define PRCM_A9_MASK_ACK (prcmu_base + 0x32c) | ||
30 | #define PRCM_ARMITMSK31TO0 (prcmu_base + 0x11c) | ||
31 | #define PRCM_ARMITMSK63TO32 (prcmu_base + 0x120) | ||
32 | #define PRCM_ARMITMSK95TO64 (prcmu_base + 0x124) | ||
33 | #define PRCM_ARMITMSK127TO96 (prcmu_base + 0x128) | ||
34 | #define PRCM_POWER_STATE_VAL (prcmu_base + 0x25C) | ||
35 | #define PRCM_ARMITVAL31TO0 (prcmu_base + 0x260) | ||
36 | #define PRCM_ARMITVAL63TO32 (prcmu_base + 0x264) | ||
37 | #define PRCM_ARMITVAL95TO64 (prcmu_base + 0x268) | ||
38 | #define PRCM_ARMITVAL127TO96 (prcmu_base + 0x26C) | ||
39 | |||
40 | static void __iomem *prcmu_base; | ||
41 | |||
42 | /* This function decouple the gic from the prcmu */ | ||
43 | int prcmu_gic_decouple(void) | ||
44 | { | ||
45 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
46 | |||
47 | /* Set bit 0 register value to 1 */ | ||
48 | writel(val | PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, | ||
49 | PRCM_A9_MASK_REQ); | ||
50 | |||
51 | /* Make sure the register is updated */ | ||
52 | readl(PRCM_A9_MASK_REQ); | ||
53 | |||
54 | /* Wait a few cycles for the gic mask completion */ | ||
55 | udelay(1); | ||
56 | |||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | /* This function recouple the gic with the prcmu */ | ||
61 | int prcmu_gic_recouple(void) | ||
62 | { | ||
63 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
64 | |||
65 | /* Set bit 0 register value to 0 */ | ||
66 | writel(val & ~PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, PRCM_A9_MASK_REQ); | ||
67 | |||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | #define PRCMU_GIC_NUMBER_REGS 5 | ||
72 | |||
73 | /* | ||
74 | * This function checks if there are pending irq on the gic. It only | ||
75 | * makes sense if the gic has been decoupled before with the | ||
76 | * db8500_prcmu_gic_decouple function. Disabling an interrupt only | ||
77 | * disables the forwarding of the interrupt to any CPU interface. It | ||
78 | * does not prevent the interrupt from changing state, for example | ||
79 | * becoming pending, or active and pending if it is already | ||
80 | * active. Hence, we have to check the interrupt is pending *and* is | ||
81 | * active. | ||
82 | */ | ||
83 | bool prcmu_gic_pending_irq(void) | ||
84 | { | ||
85 | u32 pr; /* Pending register */ | ||
86 | u32 er; /* Enable register */ | ||
87 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
88 | int i; | ||
89 | |||
90 | /* 5 registers. STI & PPI not skipped */ | ||
91 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS; i++) { | ||
92 | |||
93 | pr = readl_relaxed(dist_base + GIC_DIST_PENDING_SET + i * 4); | ||
94 | er = readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4); | ||
95 | |||
96 | if (pr & er) | ||
97 | return true; /* There is a pending interrupt */ | ||
98 | } | ||
99 | |||
100 | return false; | ||
101 | } | ||
102 | |||
103 | /* | ||
104 | * This function checks if there are pending interrupt on the | ||
105 | * prcmu which has been delegated to monitor the irqs with the | ||
106 | * db8500_prcmu_copy_gic_settings function. | ||
107 | */ | ||
108 | bool prcmu_pending_irq(void) | ||
109 | { | ||
110 | u32 it, im; | ||
111 | int i; | ||
112 | |||
113 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
114 | it = readl(PRCM_ARMITVAL31TO0 + i * 4); | ||
115 | im = readl(PRCM_ARMITMSK31TO0 + i * 4); | ||
116 | if (it & im) | ||
117 | return true; /* There is a pending interrupt */ | ||
118 | } | ||
119 | |||
120 | return false; | ||
121 | } | ||
122 | |||
123 | /* | ||
124 | * This function checks if the specified cpu is in in WFI. It's usage | ||
125 | * makes sense only if the gic is decoupled with the db8500_prcmu_gic_decouple | ||
126 | * function. Of course passing smp_processor_id() to this function will | ||
127 | * always return false... | ||
128 | */ | ||
129 | bool prcmu_is_cpu_in_wfi(int cpu) | ||
130 | { | ||
131 | return readl(PRCM_ARM_WFI_STANDBY) & cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : | ||
132 | PRCM_ARM_WFI_STANDBY_WFI0; | ||
133 | } | ||
134 | |||
135 | /* | ||
136 | * This function copies the gic SPI settings to the prcmu in order to | ||
137 | * monitor them and abort/finish the retention/off sequence or state. | ||
138 | */ | ||
139 | int prcmu_copy_gic_settings(void) | ||
140 | { | ||
141 | u32 er; /* Enable register */ | ||
142 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
143 | int i; | ||
144 | |||
145 | /* We skip the STI and PPI */ | ||
146 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
147 | er = readl_relaxed(dist_base + | ||
148 | GIC_DIST_ENABLE_SET + (i + 1) * 4); | ||
149 | writel(er, PRCM_ARMITMSK31TO0 + i * 4); | ||
150 | } | ||
151 | |||
152 | return 0; | ||
153 | } | ||
154 | |||
155 | void __init ux500_pm_init(u32 phy_base, u32 size) | ||
156 | { | ||
157 | prcmu_base = ioremap(phy_base, size); | ||
158 | if (!prcmu_base) { | ||
159 | pr_err("could not remap PRCMU for PM functions\n"); | ||
160 | return; | ||
161 | } | ||
162 | /* | ||
163 | * On watchdog reboot the GIC is in some cases decoupled. | ||
164 | * This will make sure that the GIC is correctly configured. | ||
165 | */ | ||
166 | prcmu_gic_recouple(); | ||
167 | } | ||
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/setup.h index bddce2b49372..bddce2b49372 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/setup.h | |||
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c index d07bbe7f04a6..b6bd0efcbe64 100644 --- a/arch/arm/mach-ux500/timer.c +++ b/arch/arm/mach-ux500/timer.c | |||
@@ -14,10 +14,10 @@ | |||
14 | 14 | ||
15 | #include <asm/smp_twd.h> | 15 | #include <asm/smp_twd.h> |
16 | 16 | ||
17 | #include <mach/setup.h> | 17 | #include "setup.h" |
18 | #include <mach/hardware.h> | 18 | #include "irqs.h" |
19 | #include <mach/irqs.h> | ||
20 | 19 | ||
20 | #include "db8500-regs.h" | ||
21 | #include "id.h" | 21 | #include "id.h" |
22 | 22 | ||
23 | #ifdef CONFIG_HAVE_ARM_TWD | 23 | #ifdef CONFIG_HAVE_ARM_TWD |
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c index 78ac65f62e87..2dfc72f7cd8a 100644 --- a/arch/arm/mach-ux500/usb.c +++ b/arch/arm/mach-ux500/usb.c | |||
@@ -10,7 +10,7 @@ | |||
10 | #include <linux/platform_data/usb-musb-ux500.h> | 10 | #include <linux/platform_data/usb-musb-ux500.h> |
11 | #include <linux/platform_data/dma-ste-dma40.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | 12 | ||
13 | #include <mach/hardware.h> | 13 | #include "db8500-regs.h" |
14 | 14 | ||
15 | #define MUSB_DMA40_RX_CH { \ | 15 | #define MUSB_DMA40_RX_CH { \ |
16 | .mode = STEDMA40_MODE_LOGICAL, \ | 16 | .mode = STEDMA40_MODE_LOGICAL, \ |
diff --git a/arch/arm/plat-spear/Kconfig b/arch/arm/plat-spear/Kconfig deleted file mode 100644 index 8a08c31b5e20..000000000000 --- a/arch/arm/plat-spear/Kconfig +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr Platform configuration file | ||
3 | # | ||
4 | |||
5 | if PLAT_SPEAR | ||
6 | |||
7 | choice | ||
8 | prompt "ST SPEAr Family" | ||
9 | default ARCH_SPEAR3XX | ||
10 | |||
11 | config ARCH_SPEAR13XX | ||
12 | bool "ST SPEAr13xx with Device Tree" | ||
13 | select ARCH_HAS_CPUFREQ | ||
14 | select ARM_GIC | ||
15 | select CPU_V7 | ||
16 | select GPIO_SPEAR_SPICS | ||
17 | select HAVE_SMP | ||
18 | select MIGHT_HAVE_CACHE_L2X0 | ||
19 | select PINCTRL | ||
20 | select USE_OF | ||
21 | help | ||
22 | Supports for ARM's SPEAR13XX family | ||
23 | |||
24 | config ARCH_SPEAR3XX | ||
25 | bool "ST SPEAr3xx with Device Tree" | ||
26 | select ARM_VIC | ||
27 | select CPU_ARM926T | ||
28 | select PINCTRL | ||
29 | select USE_OF | ||
30 | help | ||
31 | Supports for ARM's SPEAR3XX family | ||
32 | |||
33 | config ARCH_SPEAR6XX | ||
34 | bool "SPEAr6XX" | ||
35 | select ARM_VIC | ||
36 | select CPU_ARM926T | ||
37 | help | ||
38 | Supports for ARM's SPEAR6XX family | ||
39 | |||
40 | endchoice | ||
41 | |||
42 | # Adding SPEAr machine specific configuration files | ||
43 | source "arch/arm/mach-spear13xx/Kconfig" | ||
44 | source "arch/arm/mach-spear3xx/Kconfig" | ||
45 | source "arch/arm/mach-spear6xx/Kconfig" | ||
46 | |||
47 | endif | ||
diff --git a/arch/arm/plat-spear/Makefile b/arch/arm/plat-spear/Makefile deleted file mode 100644 index 01e88532a5db..000000000000 --- a/arch/arm/plat-spear/Makefile +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr Platform specific Makefile | ||
3 | # | ||
4 | |||
5 | # Common support | ||
6 | obj-y := restart.o time.o | ||
7 | |||
8 | obj-$(CONFIG_ARCH_SPEAR3XX) += pl080.o | ||
9 | obj-$(CONFIG_ARCH_SPEAR6XX) += pl080.o | ||