diff options
author | Olof Johansson <olof@lixom.net> | 2012-12-12 19:10:45 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-12-12 19:10:45 -0500 |
commit | 9c7466b217af784280d9fc841bbd559ef3bf33e9 (patch) | |
tree | c21ee243e48912201b4041fbf3f9bd9165603bd8 /arch | |
parent | 4a76411ea3f1da9032e031f8fff8894b97d141b2 (diff) | |
parent | 48d224d1efec98b0b78e511150b4f5752beceb7c (diff) |
ARM: arm-soc: Merge branch 'next/pm2' into next/pm
Another smaller branch merged into next/pm before pull request.
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch')
650 files changed, 14204 insertions, 6266 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 1e6956a90608..14db93e4c8a8 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -445,7 +445,7 @@ struct procfs_args { | |||
445 | * unhappy with OSF UFS. [CHECKME] | 445 | * unhappy with OSF UFS. [CHECKME] |
446 | */ | 446 | */ |
447 | static int | 447 | static int |
448 | osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags) | 448 | osf_ufs_mount(const char *dirname, struct ufs_args __user *args, int flags) |
449 | { | 449 | { |
450 | int retval; | 450 | int retval; |
451 | struct cdfs_args tmp; | 451 | struct cdfs_args tmp; |
@@ -465,7 +465,7 @@ osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags) | |||
465 | } | 465 | } |
466 | 466 | ||
467 | static int | 467 | static int |
468 | osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags) | 468 | osf_cdfs_mount(const char *dirname, struct cdfs_args __user *args, int flags) |
469 | { | 469 | { |
470 | int retval; | 470 | int retval; |
471 | struct cdfs_args tmp; | 471 | struct cdfs_args tmp; |
@@ -485,7 +485,7 @@ osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags) | |||
485 | } | 485 | } |
486 | 486 | ||
487 | static int | 487 | static int |
488 | osf_procfs_mount(char *dirname, struct procfs_args __user *args, int flags) | 488 | osf_procfs_mount(const char *dirname, struct procfs_args __user *args, int flags) |
489 | { | 489 | { |
490 | struct procfs_args tmp; | 490 | struct procfs_args tmp; |
491 | 491 | ||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ade7e924bef5..a920f2c422e9 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -433,19 +433,6 @@ config ARCH_FOOTBRIDGE | |||
433 | Support for systems based on the DC21285 companion chip | 433 | Support for systems based on the DC21285 companion chip |
434 | ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. | 434 | ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. |
435 | 435 | ||
436 | config ARCH_MXC | ||
437 | bool "Freescale MXC/iMX-based" | ||
438 | select ARCH_REQUIRE_GPIOLIB | ||
439 | select CLKDEV_LOOKUP | ||
440 | select CLKSRC_MMIO | ||
441 | select GENERIC_CLOCKEVENTS | ||
442 | select GENERIC_IRQ_CHIP | ||
443 | select MULTI_IRQ_HANDLER | ||
444 | select SPARSE_IRQ | ||
445 | select USE_OF | ||
446 | help | ||
447 | Support for Freescale MXC/iMX-based family of processors | ||
448 | |||
449 | config ARCH_MXS | 436 | config ARCH_MXS |
450 | bool "Freescale MXS-based" | 437 | bool "Freescale MXS-based" |
451 | select ARCH_REQUIRE_GPIOLIB | 438 | select ARCH_REQUIRE_GPIOLIB |
@@ -536,6 +523,8 @@ config ARCH_DOVE | |||
536 | select CPU_V7 | 523 | select CPU_V7 |
537 | select GENERIC_CLOCKEVENTS | 524 | select GENERIC_CLOCKEVENTS |
538 | select MIGHT_HAVE_PCI | 525 | select MIGHT_HAVE_PCI |
526 | select PINCTRL | ||
527 | select PINCTRL_DOVE | ||
539 | select PLAT_ORION_LEGACY | 528 | select PLAT_ORION_LEGACY |
540 | select USB_ARCH_HAS_EHCI | 529 | select USB_ARCH_HAS_EHCI |
541 | help | 530 | help |
@@ -547,6 +536,8 @@ config ARCH_KIRKWOOD | |||
547 | select CPU_FEROCEON | 536 | select CPU_FEROCEON |
548 | select GENERIC_CLOCKEVENTS | 537 | select GENERIC_CLOCKEVENTS |
549 | select PCI | 538 | select PCI |
539 | select PINCTRL | ||
540 | select PINCTRL_KIRKWOOD | ||
550 | select PLAT_ORION_LEGACY | 541 | select PLAT_ORION_LEGACY |
551 | help | 542 | help |
552 | Support for the following Marvell Kirkwood series SoCs: | 543 | Support for the following Marvell Kirkwood series SoCs: |
@@ -924,6 +915,7 @@ config ARCH_DAVINCI | |||
924 | select GENERIC_IRQ_CHIP | 915 | select GENERIC_IRQ_CHIP |
925 | select HAVE_IDE | 916 | select HAVE_IDE |
926 | select NEED_MACH_GPIO_H | 917 | select NEED_MACH_GPIO_H |
918 | select USE_OF | ||
927 | select ZONE_DMA | 919 | select ZONE_DMA |
928 | help | 920 | help |
929 | Support for TI's DaVinci platform. | 921 | Support for TI's DaVinci platform. |
@@ -937,7 +929,6 @@ config ARCH_OMAP | |||
937 | select CLKSRC_MMIO | 929 | select CLKSRC_MMIO |
938 | select GENERIC_CLOCKEVENTS | 930 | select GENERIC_CLOCKEVENTS |
939 | select HAVE_CLK | 931 | select HAVE_CLK |
940 | select NEED_MACH_GPIO_H | ||
941 | help | 932 | help |
942 | Support for TI's OMAP platform (OMAP1/2/3/4). | 933 | Support for TI's OMAP platform (OMAP1/2/3/4). |
943 | 934 | ||
@@ -959,7 +950,7 @@ config ARCH_ZYNQ | |||
959 | bool "Xilinx Zynq ARM Cortex A9 Platform" | 950 | bool "Xilinx Zynq ARM Cortex A9 Platform" |
960 | select ARM_AMBA | 951 | select ARM_AMBA |
961 | select ARM_GIC | 952 | select ARM_GIC |
962 | select CLKDEV_LOOKUP | 953 | select COMMON_CLK |
963 | select CPU_V7 | 954 | select CPU_V7 |
964 | select GENERIC_CLOCKEVENTS | 955 | select GENERIC_CLOCKEVENTS |
965 | select ICST | 956 | select ICST |
@@ -1058,7 +1049,7 @@ source "arch/arm/mach-msm/Kconfig" | |||
1058 | 1049 | ||
1059 | source "arch/arm/mach-mv78xx0/Kconfig" | 1050 | source "arch/arm/mach-mv78xx0/Kconfig" |
1060 | 1051 | ||
1061 | source "arch/arm/plat-mxc/Kconfig" | 1052 | source "arch/arm/mach-imx/Kconfig" |
1062 | 1053 | ||
1063 | source "arch/arm/mach-mxs/Kconfig" | 1054 | source "arch/arm/mach-mxs/Kconfig" |
1064 | 1055 | ||
@@ -1168,7 +1159,7 @@ config ARM_NR_BANKS | |||
1168 | config IWMMXT | 1159 | config IWMMXT |
1169 | bool "Enable iWMMXt support" | 1160 | bool "Enable iWMMXt support" |
1170 | depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 | 1161 | depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 |
1171 | default y if PXA27x || PXA3xx || PXA95x || ARCH_MMP | 1162 | default y if PXA27x || PXA3xx || ARCH_MMP |
1172 | help | 1163 | help |
1173 | Enable support for iWMMXt context switching at run time if | 1164 | Enable support for iWMMXt context switching at run time if |
1174 | running on a CPU that supports it. | 1165 | running on a CPU that supports it. |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index b0f3857b3a4c..00e9a53888ba 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -132,6 +132,23 @@ choice | |||
132 | their output to UART1 serial port on DaVinci TNETV107X | 132 | their output to UART1 serial port on DaVinci TNETV107X |
133 | devices. | 133 | devices. |
134 | 134 | ||
135 | config DEBUG_ZYNQ_UART0 | ||
136 | bool "Kernel low-level debugging on Xilinx Zynq using UART0" | ||
137 | depends on ARCH_ZYNQ | ||
138 | help | ||
139 | Say Y here if you want the debug print routines to direct | ||
140 | their output to UART0 on the Zynq platform. | ||
141 | |||
142 | config DEBUG_ZYNQ_UART1 | ||
143 | bool "Kernel low-level debugging on Xilinx Zynq using UART1" | ||
144 | depends on ARCH_ZYNQ | ||
145 | help | ||
146 | Say Y here if you want the debug print routines to direct | ||
147 | their output to UART1 on the Zynq platform. | ||
148 | |||
149 | If you have a ZC702 board and want early boot messages to | ||
150 | appear on the USB serial adaptor, select this option. | ||
151 | |||
135 | config DEBUG_DC21285_PORT | 152 | config DEBUG_DC21285_PORT |
136 | bool "Kernel low-level debugging messages via footbridge serial port" | 153 | bool "Kernel low-level debugging messages via footbridge serial port" |
137 | depends on FOOTBRIDGE | 154 | depends on FOOTBRIDGE |
@@ -209,20 +226,12 @@ choice | |||
209 | Say Y here if you want kernel low-level debugging support | 226 | Say Y here if you want kernel low-level debugging support |
210 | on i.MX50 or i.MX53. | 227 | on i.MX50 or i.MX53. |
211 | 228 | ||
212 | config DEBUG_IMX6Q_UART2 | 229 | config DEBUG_IMX6Q_UART |
213 | bool "i.MX6Q Debug UART2" | 230 | bool "i.MX6Q Debug UART" |
214 | depends on SOC_IMX6Q | 231 | depends on SOC_IMX6Q |
215 | help | 232 | help |
216 | Say Y here if you want kernel low-level debugging support | 233 | Say Y here if you want kernel low-level debugging support |
217 | on i.MX6Q UART2. This is correct for e.g. the SabreLite | 234 | on i.MX6Q. |
218 | board. | ||
219 | |||
220 | config DEBUG_IMX6Q_UART4 | ||
221 | bool "i.MX6Q Debug UART4" | ||
222 | depends on SOC_IMX6Q | ||
223 | help | ||
224 | Say Y here if you want kernel low-level debugging support | ||
225 | on i.MX6Q UART4. | ||
226 | 235 | ||
227 | config DEBUG_MMP_UART2 | 236 | config DEBUG_MMP_UART2 |
228 | bool "Kernel low-level debugging message via MMP UART2" | 237 | bool "Kernel low-level debugging message via MMP UART2" |
@@ -409,9 +418,25 @@ choice | |||
409 | 418 | ||
410 | endchoice | 419 | endchoice |
411 | 420 | ||
421 | config DEBUG_IMX6Q_UART_PORT | ||
422 | int "i.MX6Q Debug UART Port (1-5)" if DEBUG_IMX6Q_UART | ||
423 | range 1 5 | ||
424 | default 1 | ||
425 | depends on SOC_IMX6Q | ||
426 | help | ||
427 | Choose UART port on which kernel low-level debug messages | ||
428 | should be output. | ||
429 | |||
412 | config DEBUG_LL_INCLUDE | 430 | config DEBUG_LL_INCLUDE |
413 | string | 431 | string |
414 | default "debug/icedcc.S" if DEBUG_ICEDCC | 432 | default "debug/icedcc.S" if DEBUG_ICEDCC |
433 | default "debug/imx.S" if DEBUG_IMX1_UART || \ | ||
434 | DEBUG_IMX25_UART || \ | ||
435 | DEBUG_IMX21_IMX27_UART || \ | ||
436 | DEBUG_IMX31_IMX35_UART || \ | ||
437 | DEBUG_IMX51_UART || \ | ||
438 | DEBUG_IMX50_IMX53_UART ||\ | ||
439 | DEBUG_IMX6Q_UART | ||
415 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART | 440 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART |
416 | default "debug/mvebu.S" if DEBUG_MVEBU_UART | 441 | default "debug/mvebu.S" if DEBUG_MVEBU_UART |
417 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART | 442 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 5f914fca911b..97252d86a701 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -196,10 +196,8 @@ machine-$(CONFIG_ARCH_ZYNQ) += zynq | |||
196 | 196 | ||
197 | # Platform directory name. This list is sorted alphanumerically | 197 | # Platform directory name. This list is sorted alphanumerically |
198 | # by CONFIG_* macro name. | 198 | # by CONFIG_* macro name. |
199 | plat-$(CONFIG_ARCH_MXC) += mxc | ||
200 | plat-$(CONFIG_ARCH_OMAP) += omap | 199 | plat-$(CONFIG_ARCH_OMAP) += omap |
201 | plat-$(CONFIG_ARCH_S3C64XX) += samsung | 200 | plat-$(CONFIG_ARCH_S3C64XX) += samsung |
202 | plat-$(CONFIG_ARCH_ZYNQ) += versatile | ||
203 | plat-$(CONFIG_PLAT_IOP) += iop | 201 | plat-$(CONFIG_PLAT_IOP) += iop |
204 | plat-$(CONFIG_PLAT_NOMADIK) += nomadik | 202 | plat-$(CONFIG_PLAT_NOMADIK) += nomadik |
205 | plat-$(CONFIG_PLAT_ORION) += orion | 203 | plat-$(CONFIG_PLAT_ORION) += orion |
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index a517153a13ea..537208f22e56 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile | |||
@@ -54,10 +54,6 @@ ifeq ($(CONFIG_ARCH_SA1100),y) | |||
54 | OBJS += head-sa1100.o | 54 | OBJS += head-sa1100.o |
55 | endif | 55 | endif |
56 | 56 | ||
57 | ifeq ($(CONFIG_ARCH_VT8500),y) | ||
58 | OBJS += head-vt8500.o | ||
59 | endif | ||
60 | |||
61 | ifeq ($(CONFIG_CPU_XSCALE),y) | 57 | ifeq ($(CONFIG_CPU_XSCALE),y) |
62 | OBJS += head-xscale.o | 58 | OBJS += head-xscale.o |
63 | endif | 59 | endif |
diff --git a/arch/arm/boot/compressed/head-vt8500.S b/arch/arm/boot/compressed/head-vt8500.S deleted file mode 100644 index 1dc1e21a3be3..000000000000 --- a/arch/arm/boot/compressed/head-vt8500.S +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/boot/compressed/head-vt8500.S | ||
3 | * | ||
4 | * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com> | ||
5 | * | ||
6 | * VIA VT8500 specific tweaks. This is merged into head.S by the linker. | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #include <linux/linkage.h> | ||
11 | #include <asm/mach-types.h> | ||
12 | |||
13 | .section ".start", "ax" | ||
14 | |||
15 | __VT8500_start: | ||
16 | @ Compare the SCC ID register against a list of known values | ||
17 | ldr r1, .SCCID | ||
18 | ldr r3, [r1] | ||
19 | |||
20 | @ VT8500 override | ||
21 | ldr r4, .VT8500SCC | ||
22 | cmp r3, r4 | ||
23 | ldreq r7, .ID_BV07 | ||
24 | beq .Lendvt8500 | ||
25 | |||
26 | @ WM8505 override | ||
27 | ldr r4, .WM8505SCC | ||
28 | cmp r3, r4 | ||
29 | ldreq r7, .ID_8505 | ||
30 | beq .Lendvt8500 | ||
31 | |||
32 | @ Otherwise, leave the bootloader's machine id untouched | ||
33 | |||
34 | .SCCID: | ||
35 | .word 0xd8120000 | ||
36 | .VT8500SCC: | ||
37 | .word 0x34000102 | ||
38 | .WM8505SCC: | ||
39 | .word 0x34260103 | ||
40 | |||
41 | .ID_BV07: | ||
42 | .word MACH_TYPE_BV07 | ||
43 | .ID_8505: | ||
44 | .word MACH_TYPE_WM8505_7IN_NETBOOK | ||
45 | |||
46 | .Lendvt8500: | ||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index f37cf9fa5fa0..89dcc14f1931 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -17,13 +17,17 @@ dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb \ | |||
17 | usb_a9263.dtb \ | 17 | usb_a9263.dtb \ |
18 | usb_a9g20.dtb | 18 | usb_a9g20.dtb |
19 | dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb | 19 | dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb |
20 | dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \ | ||
21 | da850-evm.dtb | ||
20 | dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ | 22 | dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ |
21 | dove-cubox.dtb \ | 23 | dove-cubox.dtb \ |
22 | dove-dove-db.dtb | 24 | dove-dove-db.dtb |
23 | dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ | 25 | dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ |
24 | exynos4210-smdkv310.dtb \ | 26 | exynos4210-smdkv310.dtb \ |
25 | exynos4210-trats.dtb \ | 27 | exynos4210-trats.dtb \ |
26 | exynos5250-smdk5250.dtb | 28 | exynos4412-smdk4412.dtb \ |
29 | exynos5250-smdk5250.dtb \ | ||
30 | exynos5250-snow.dtb | ||
27 | dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb | 31 | dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb |
28 | dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ | 32 | dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ |
29 | integratorcp.dtb | 33 | integratorcp.dtb |
@@ -36,11 +40,20 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \ | |||
36 | kirkwood-ib62x0.dtb \ | 40 | kirkwood-ib62x0.dtb \ |
37 | kirkwood-iconnect.dtb \ | 41 | kirkwood-iconnect.dtb \ |
38 | kirkwood-iomega_ix2_200.dtb \ | 42 | kirkwood-iomega_ix2_200.dtb \ |
43 | kirkwood-is2.dtb \ | ||
39 | kirkwood-km_kirkwood.dtb \ | 44 | kirkwood-km_kirkwood.dtb \ |
40 | kirkwood-lschlv2.dtb \ | 45 | kirkwood-lschlv2.dtb \ |
41 | kirkwood-lsxhl.dtb \ | 46 | kirkwood-lsxhl.dtb \ |
47 | kirkwood-mplcec4.dtb \ | ||
48 | kirkwood-ns2.dtb \ | ||
49 | kirkwood-ns2lite.dtb \ | ||
50 | kirkwood-ns2max.dtb \ | ||
51 | kirkwood-ns2mini.dtb \ | ||
52 | kirkwood-nsa310.dtb \ | ||
53 | kirkwood-topkick.dtb \ | ||
42 | kirkwood-ts219-6281.dtb \ | 54 | kirkwood-ts219-6281.dtb \ |
43 | kirkwood-ts219-6282.dtb | 55 | kirkwood-ts219-6282.dtb \ |
56 | kirkwood-openblocks_a6.dtb | ||
44 | dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \ | 57 | dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \ |
45 | msm8960-cdp.dtb | 58 | msm8960-cdp.dtb |
46 | dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \ | 59 | dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \ |
@@ -51,30 +64,40 @@ dtb-$(CONFIG_ARCH_MXC) += imx51-babbage.dtb \ | |||
51 | imx53-qsb.dtb \ | 64 | imx53-qsb.dtb \ |
52 | imx53-smd.dtb \ | 65 | imx53-smd.dtb \ |
53 | imx6q-arm2.dtb \ | 66 | imx6q-arm2.dtb \ |
67 | imx6q-sabreauto.dtb \ | ||
54 | imx6q-sabrelite.dtb \ | 68 | imx6q-sabrelite.dtb \ |
55 | imx6q-sabresd.dtb | 69 | imx6q-sabresd.dtb |
56 | dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ | 70 | dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ |
57 | imx23-olinuxino.dtb \ | 71 | imx23-olinuxino.dtb \ |
58 | imx23-stmp378x_devb.dtb \ | 72 | imx23-stmp378x_devb.dtb \ |
73 | imx28-apf28.dtb \ | ||
74 | imx28-apf28dev.dtb \ | ||
59 | imx28-apx4devkit.dtb \ | 75 | imx28-apx4devkit.dtb \ |
60 | imx28-cfa10036.dtb \ | 76 | imx28-cfa10036.dtb \ |
61 | imx28-cfa10049.dtb \ | 77 | imx28-cfa10049.dtb \ |
62 | imx28-evk.dtb \ | 78 | imx28-evk.dtb \ |
63 | imx28-m28evk.dtb \ | 79 | imx28-m28evk.dtb \ |
80 | imx28-sps1.dtb \ | ||
64 | imx28-tx28.dtb | 81 | imx28-tx28.dtb |
65 | dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ | 82 | dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ |
83 | omap3-beagle.dtb \ | ||
66 | omap3-beagle-xm.dtb \ | 84 | omap3-beagle-xm.dtb \ |
67 | omap3-evm.dtb \ | 85 | omap3-evm.dtb \ |
68 | omap3-tobi.dtb \ | 86 | omap3-tobi.dtb \ |
69 | omap4-panda.dtb \ | 87 | omap4-panda.dtb \ |
70 | omap4-pandaES.dtb \ | 88 | omap4-panda-es.dtb \ |
71 | omap4-var_som.dtb \ | 89 | omap4-var-som.dtb \ |
72 | omap4-sdp.dtb \ | 90 | omap4-sdp.dtb \ |
73 | omap5-evm.dtb \ | 91 | omap5-evm.dtb \ |
74 | am335x-evm.dtb \ | 92 | am335x-evm.dtb \ |
93 | am335x-evmsk.dtb \ | ||
75 | am335x-bone.dtb | 94 | am335x-bone.dtb |
95 | dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb | ||
76 | dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb | 96 | dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb |
77 | dtb-$(CONFIG_ARCH_U8500) += snowball.dtb | 97 | dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \ |
98 | hrefprev60.dtb \ | ||
99 | hrefv60plus.dtb \ | ||
100 | ccu9540.dtb | ||
78 | dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ | 101 | dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ |
79 | r8a7740-armadillo800eva.dtb \ | 102 | r8a7740-armadillo800eva.dtb \ |
80 | sh73a0-kzm9g.dtb | 103 | sh73a0-kzm9g.dtb |
@@ -103,5 +126,6 @@ dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \ | |||
103 | dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \ | 126 | dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \ |
104 | wm8505-ref.dtb \ | 127 | wm8505-ref.dtb \ |
105 | wm8650-mid.dtb | 128 | wm8650-mid.dtb |
129 | dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb | ||
106 | 130 | ||
107 | endif | 131 | endif |
diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts index c634f87e230e..2c338889df1b 100644 --- a/arch/arm/boot/dts/am335x-bone.dts +++ b/arch/arm/boot/dts/am335x-bone.dts | |||
@@ -13,11 +13,31 @@ | |||
13 | model = "TI AM335x BeagleBone"; | 13 | model = "TI AM335x BeagleBone"; |
14 | compatible = "ti,am335x-bone", "ti,am33xx"; | 14 | compatible = "ti,am335x-bone", "ti,am33xx"; |
15 | 15 | ||
16 | cpus { | ||
17 | cpu@0 { | ||
18 | cpu0-supply = <&dcdc2_reg>; | ||
19 | }; | ||
20 | }; | ||
21 | |||
16 | memory { | 22 | memory { |
17 | device_type = "memory"; | 23 | device_type = "memory"; |
18 | reg = <0x80000000 0x10000000>; /* 256 MB */ | 24 | reg = <0x80000000 0x10000000>; /* 256 MB */ |
19 | }; | 25 | }; |
20 | 26 | ||
27 | am33xx_pinmux: pinmux@44e10800 { | ||
28 | pinctrl-names = "default"; | ||
29 | pinctrl-0 = <&user_leds_s0>; | ||
30 | |||
31 | user_leds_s0: user_leds_s0 { | ||
32 | pinctrl-single,pins = < | ||
33 | 0x54 0x7 /* gpmc_a5.gpio1_21, OUTPUT | MODE7 */ | ||
34 | 0x58 0x17 /* gpmc_a6.gpio1_22, OUTPUT_PULLUP | MODE7 */ | ||
35 | 0x5c 0x7 /* gpmc_a7.gpio1_23, OUTPUT | MODE7 */ | ||
36 | 0x60 0x17 /* gpmc_a8.gpio1_24, OUTPUT_PULLUP | MODE7 */ | ||
37 | >; | ||
38 | }; | ||
39 | }; | ||
40 | |||
21 | ocp { | 41 | ocp { |
22 | uart1: serial@44e09000 { | 42 | uart1: serial@44e09000 { |
23 | status = "okay"; | 43 | status = "okay"; |
@@ -33,6 +53,36 @@ | |||
33 | 53 | ||
34 | }; | 54 | }; |
35 | }; | 55 | }; |
56 | |||
57 | leds { | ||
58 | compatible = "gpio-leds"; | ||
59 | |||
60 | led@2 { | ||
61 | label = "beaglebone:green:heartbeat"; | ||
62 | gpios = <&gpio2 21 0>; | ||
63 | linux,default-trigger = "heartbeat"; | ||
64 | default-state = "off"; | ||
65 | }; | ||
66 | |||
67 | led@3 { | ||
68 | label = "beaglebone:green:mmc0"; | ||
69 | gpios = <&gpio2 22 0>; | ||
70 | linux,default-trigger = "mmc0"; | ||
71 | default-state = "off"; | ||
72 | }; | ||
73 | |||
74 | led@4 { | ||
75 | label = "beaglebone:green:usr2"; | ||
76 | gpios = <&gpio2 23 0>; | ||
77 | default-state = "off"; | ||
78 | }; | ||
79 | |||
80 | led@5 { | ||
81 | label = "beaglebone:green:usr3"; | ||
82 | gpios = <&gpio2 24 0>; | ||
83 | default-state = "off"; | ||
84 | }; | ||
85 | }; | ||
36 | }; | 86 | }; |
37 | 87 | ||
38 | /include/ "tps65217.dtsi" | 88 | /include/ "tps65217.dtsi" |
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts index 185d6325a458..9f65f17ebdf8 100644 --- a/arch/arm/boot/dts/am335x-evm.dts +++ b/arch/arm/boot/dts/am335x-evm.dts | |||
@@ -13,11 +13,39 @@ | |||
13 | model = "TI AM335x EVM"; | 13 | model = "TI AM335x EVM"; |
14 | compatible = "ti,am335x-evm", "ti,am33xx"; | 14 | compatible = "ti,am335x-evm", "ti,am33xx"; |
15 | 15 | ||
16 | cpus { | ||
17 | cpu@0 { | ||
18 | cpu0-supply = <&vdd1_reg>; | ||
19 | }; | ||
20 | }; | ||
21 | |||
16 | memory { | 22 | memory { |
17 | device_type = "memory"; | 23 | device_type = "memory"; |
18 | reg = <0x80000000 0x10000000>; /* 256 MB */ | 24 | reg = <0x80000000 0x10000000>; /* 256 MB */ |
19 | }; | 25 | }; |
20 | 26 | ||
27 | am33xx_pinmux: pinmux@44e10800 { | ||
28 | pinctrl-names = "default"; | ||
29 | pinctrl-0 = <&matrix_keypad_s0 &volume_keys_s0>; | ||
30 | |||
31 | matrix_keypad_s0: matrix_keypad_s0 { | ||
32 | pinctrl-single,pins = < | ||
33 | 0x54 0x7 /* gpmc_a5.gpio1_21, OUTPUT | MODE7 */ | ||
34 | 0x58 0x7 /* gpmc_a6.gpio1_22, OUTPUT | MODE7 */ | ||
35 | 0x64 0x27 /* gpmc_a9.gpio1_25, INPUT | MODE7 */ | ||
36 | 0x68 0x27 /* gpmc_a10.gpio1_26, INPUT | MODE7 */ | ||
37 | 0x6c 0x27 /* gpmc_a11.gpio1_27, INPUT | MODE7 */ | ||
38 | >; | ||
39 | }; | ||
40 | |||
41 | volume_keys_s0: volume_keys_s0 { | ||
42 | pinctrl-single,pins = < | ||
43 | 0x150 0x27 /* spi0_sclk.gpio0_2, INPUT | MODE7 */ | ||
44 | 0x154 0x27 /* spi0_d0.gpio0_3, INPUT | MODE7 */ | ||
45 | >; | ||
46 | }; | ||
47 | }; | ||
48 | |||
21 | ocp { | 49 | ocp { |
22 | uart1: serial@44e09000 { | 50 | uart1: serial@44e09000 { |
23 | status = "okay"; | 51 | status = "okay"; |
@@ -31,6 +59,49 @@ | |||
31 | reg = <0x2d>; | 59 | reg = <0x2d>; |
32 | }; | 60 | }; |
33 | }; | 61 | }; |
62 | |||
63 | i2c2: i2c@4802a000 { | ||
64 | status = "okay"; | ||
65 | clock-frequency = <100000>; | ||
66 | |||
67 | lis331dlh: lis331dlh@18 { | ||
68 | compatible = "st,lis331dlh", "st,lis3lv02d"; | ||
69 | reg = <0x18>; | ||
70 | Vdd-supply = <&lis3_reg>; | ||
71 | Vdd_IO-supply = <&lis3_reg>; | ||
72 | |||
73 | st,click-single-x; | ||
74 | st,click-single-y; | ||
75 | st,click-single-z; | ||
76 | st,click-thresh-x = <10>; | ||
77 | st,click-thresh-y = <10>; | ||
78 | st,click-thresh-z = <10>; | ||
79 | st,irq1-click; | ||
80 | st,irq2-click; | ||
81 | st,wakeup-x-lo; | ||
82 | st,wakeup-x-hi; | ||
83 | st,wakeup-y-lo; | ||
84 | st,wakeup-y-hi; | ||
85 | st,wakeup-z-lo; | ||
86 | st,wakeup-z-hi; | ||
87 | st,min-limit-x = <120>; | ||
88 | st,min-limit-y = <120>; | ||
89 | st,min-limit-z = <140>; | ||
90 | st,max-limit-x = <550>; | ||
91 | st,max-limit-y = <550>; | ||
92 | st,max-limit-z = <750>; | ||
93 | }; | ||
94 | |||
95 | tsl2550: tsl2550@39 { | ||
96 | compatible = "taos,tsl2550"; | ||
97 | reg = <0x39>; | ||
98 | }; | ||
99 | |||
100 | tmp275: tmp275@48 { | ||
101 | compatible = "ti,tmp275"; | ||
102 | reg = <0x48>; | ||
103 | }; | ||
104 | }; | ||
34 | }; | 105 | }; |
35 | 106 | ||
36 | vbat: fixedregulator@0 { | 107 | vbat: fixedregulator@0 { |
@@ -40,6 +111,53 @@ | |||
40 | regulator-max-microvolt = <5000000>; | 111 | regulator-max-microvolt = <5000000>; |
41 | regulator-boot-on; | 112 | regulator-boot-on; |
42 | }; | 113 | }; |
114 | |||
115 | lis3_reg: fixedregulator@1 { | ||
116 | compatible = "regulator-fixed"; | ||
117 | regulator-name = "lis3_reg"; | ||
118 | regulator-boot-on; | ||
119 | }; | ||
120 | |||
121 | matrix_keypad: matrix_keypad@0 { | ||
122 | compatible = "gpio-matrix-keypad"; | ||
123 | debounce-delay-ms = <5>; | ||
124 | col-scan-delay-us = <2>; | ||
125 | |||
126 | row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ | ||
127 | &gpio2 26 0 /* Bank1, pin26 */ | ||
128 | &gpio2 27 0>; /* Bank1, pin27 */ | ||
129 | |||
130 | col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ | ||
131 | &gpio2 22 0>; /* Bank1, pin22 */ | ||
132 | |||
133 | linux,keymap = <0x0000008b /* MENU */ | ||
134 | 0x0100009e /* BACK */ | ||
135 | 0x02000069 /* LEFT */ | ||
136 | 0x0001006a /* RIGHT */ | ||
137 | 0x0101001c /* ENTER */ | ||
138 | 0x0201006c>; /* DOWN */ | ||
139 | }; | ||
140 | |||
141 | gpio_keys: volume_keys@0 { | ||
142 | compatible = "gpio-keys"; | ||
143 | #address-cells = <1>; | ||
144 | #size-cells = <0>; | ||
145 | autorepeat; | ||
146 | |||
147 | switch@9 { | ||
148 | label = "volume-up"; | ||
149 | linux,code = <115>; | ||
150 | gpios = <&gpio1 2 1>; | ||
151 | gpio-key,wakeup; | ||
152 | }; | ||
153 | |||
154 | switch@10 { | ||
155 | label = "volume-down"; | ||
156 | linux,code = <114>; | ||
157 | gpios = <&gpio1 3 1>; | ||
158 | gpio-key,wakeup; | ||
159 | }; | ||
160 | }; | ||
43 | }; | 161 | }; |
44 | 162 | ||
45 | /include/ "tps65910.dtsi" | 163 | /include/ "tps65910.dtsi" |
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts new file mode 100644 index 000000000000..f5a6162a4ff2 --- /dev/null +++ b/arch/arm/boot/dts/am335x-evmsk.dts | |||
@@ -0,0 +1,250 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
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 version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | /* | ||
10 | * AM335x Starter Kit | ||
11 | * http://www.ti.com/tool/tmdssk3358 | ||
12 | */ | ||
13 | |||
14 | /dts-v1/; | ||
15 | |||
16 | /include/ "am33xx.dtsi" | ||
17 | |||
18 | / { | ||
19 | model = "TI AM335x EVM-SK"; | ||
20 | compatible = "ti,am335x-evmsk", "ti,am33xx"; | ||
21 | |||
22 | cpus { | ||
23 | cpu@0 { | ||
24 | cpu0-supply = <&vdd1_reg>; | ||
25 | }; | ||
26 | }; | ||
27 | |||
28 | memory { | ||
29 | device_type = "memory"; | ||
30 | reg = <0x80000000 0x10000000>; /* 256 MB */ | ||
31 | }; | ||
32 | |||
33 | am33xx_pinmux: pinmux@44e10800 { | ||
34 | pinctrl-names = "default"; | ||
35 | pinctrl-0 = <&user_leds_s0 &gpio_keys_s0>; | ||
36 | |||
37 | user_leds_s0: user_leds_s0 { | ||
38 | pinctrl-single,pins = < | ||
39 | 0x10 0x7 /* gpmc_ad4.gpio1_4, OUTPUT | MODE7 */ | ||
40 | 0x14 0x7 /* gpmc_ad5.gpio1_5, OUTPUT | MODE7 */ | ||
41 | 0x18 0x7 /* gpmc_ad6.gpio1_6, OUTPUT | MODE7 */ | ||
42 | 0x1c 0x7 /* gpmc_ad7.gpio1_7, OUTPUT | MODE7 */ | ||
43 | >; | ||
44 | }; | ||
45 | |||
46 | gpio_keys_s0: gpio_keys_s0 { | ||
47 | pinctrl-single,pins = < | ||
48 | 0x94 0x27 /* gpmc_oen_ren.gpio2_3, INPUT | MODE7 */ | ||
49 | 0x90 0x27 /* gpmc_advn_ale.gpio2_2, INPUT | MODE7 */ | ||
50 | 0x70 0x27 /* gpmc_wait0.gpio0_30, INPUT | MODE7 */ | ||
51 | 0x9c 0x27 /* gpmc_ben0_cle.gpio2_5, INPUT | MODE7 */ | ||
52 | >; | ||
53 | }; | ||
54 | }; | ||
55 | |||
56 | ocp { | ||
57 | uart1: serial@44e09000 { | ||
58 | status = "okay"; | ||
59 | }; | ||
60 | |||
61 | i2c1: i2c@44e0b000 { | ||
62 | status = "okay"; | ||
63 | clock-frequency = <400000>; | ||
64 | |||
65 | tps: tps@2d { | ||
66 | reg = <0x2d>; | ||
67 | }; | ||
68 | |||
69 | lis331dlh: lis331dlh@18 { | ||
70 | compatible = "st,lis331dlh", "st,lis3lv02d"; | ||
71 | reg = <0x18>; | ||
72 | Vdd-supply = <&lis3_reg>; | ||
73 | Vdd_IO-supply = <&lis3_reg>; | ||
74 | |||
75 | st,click-single-x; | ||
76 | st,click-single-y; | ||
77 | st,click-single-z; | ||
78 | st,click-thresh-x = <10>; | ||
79 | st,click-thresh-y = <10>; | ||
80 | st,click-thresh-z = <10>; | ||
81 | st,irq1-click; | ||
82 | st,irq2-click; | ||
83 | st,wakeup-x-lo; | ||
84 | st,wakeup-x-hi; | ||
85 | st,wakeup-y-lo; | ||
86 | st,wakeup-y-hi; | ||
87 | st,wakeup-z-lo; | ||
88 | st,wakeup-z-hi; | ||
89 | st,min-limit-x = <120>; | ||
90 | st,min-limit-y = <120>; | ||
91 | st,min-limit-z = <140>; | ||
92 | st,max-limit-x = <550>; | ||
93 | st,max-limit-y = <550>; | ||
94 | st,max-limit-z = <750>; | ||
95 | }; | ||
96 | }; | ||
97 | }; | ||
98 | |||
99 | vbat: fixedregulator@0 { | ||
100 | compatible = "regulator-fixed"; | ||
101 | regulator-name = "vbat"; | ||
102 | regulator-min-microvolt = <5000000>; | ||
103 | regulator-max-microvolt = <5000000>; | ||
104 | regulator-boot-on; | ||
105 | }; | ||
106 | |||
107 | lis3_reg: fixedregulator@1 { | ||
108 | compatible = "regulator-fixed"; | ||
109 | regulator-name = "lis3_reg"; | ||
110 | regulator-boot-on; | ||
111 | }; | ||
112 | |||
113 | leds { | ||
114 | compatible = "gpio-leds"; | ||
115 | |||
116 | led@1 { | ||
117 | label = "evmsk:green:usr0"; | ||
118 | gpios = <&gpio2 4 0>; | ||
119 | default-state = "off"; | ||
120 | }; | ||
121 | |||
122 | led@2 { | ||
123 | label = "evmsk:green:usr1"; | ||
124 | gpios = <&gpio2 5 0>; | ||
125 | default-state = "off"; | ||
126 | }; | ||
127 | |||
128 | led@3 { | ||
129 | label = "evmsk:green:mmc0"; | ||
130 | gpios = <&gpio2 6 0>; | ||
131 | linux,default-trigger = "mmc0"; | ||
132 | default-state = "off"; | ||
133 | }; | ||
134 | |||
135 | led@4 { | ||
136 | label = "evmsk:green:heartbeat"; | ||
137 | gpios = <&gpio2 7 0>; | ||
138 | linux,default-trigger = "heartbeat"; | ||
139 | default-state = "off"; | ||
140 | }; | ||
141 | }; | ||
142 | |||
143 | gpio_buttons: gpio_buttons@0 { | ||
144 | compatible = "gpio-keys"; | ||
145 | #address-cells = <1>; | ||
146 | #size-cells = <0>; | ||
147 | |||
148 | switch@1 { | ||
149 | label = "button0"; | ||
150 | linux,code = <0x100>; | ||
151 | gpios = <&gpio3 3 0>; | ||
152 | }; | ||
153 | |||
154 | switch@2 { | ||
155 | label = "button1"; | ||
156 | linux,code = <0x101>; | ||
157 | gpios = <&gpio3 2 0>; | ||
158 | }; | ||
159 | |||
160 | switch@3 { | ||
161 | label = "button2"; | ||
162 | linux,code = <0x102>; | ||
163 | gpios = <&gpio1 30 0>; | ||
164 | gpio-key,wakeup; | ||
165 | }; | ||
166 | |||
167 | switch@4 { | ||
168 | label = "button3"; | ||
169 | linux,code = <0x103>; | ||
170 | gpios = <&gpio3 5 0>; | ||
171 | }; | ||
172 | }; | ||
173 | }; | ||
174 | |||
175 | /include/ "tps65910.dtsi" | ||
176 | |||
177 | &tps { | ||
178 | vcc1-supply = <&vbat>; | ||
179 | vcc2-supply = <&vbat>; | ||
180 | vcc3-supply = <&vbat>; | ||
181 | vcc4-supply = <&vbat>; | ||
182 | vcc5-supply = <&vbat>; | ||
183 | vcc6-supply = <&vbat>; | ||
184 | vcc7-supply = <&vbat>; | ||
185 | vccio-supply = <&vbat>; | ||
186 | |||
187 | regulators { | ||
188 | vrtc_reg: regulator@0 { | ||
189 | regulator-always-on; | ||
190 | }; | ||
191 | |||
192 | vio_reg: regulator@1 { | ||
193 | regulator-always-on; | ||
194 | }; | ||
195 | |||
196 | vdd1_reg: regulator@2 { | ||
197 | /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */ | ||
198 | regulator-name = "vdd_mpu"; | ||
199 | regulator-min-microvolt = <912500>; | ||
200 | regulator-max-microvolt = <1312500>; | ||
201 | regulator-boot-on; | ||
202 | regulator-always-on; | ||
203 | }; | ||
204 | |||
205 | vdd2_reg: regulator@3 { | ||
206 | /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */ | ||
207 | regulator-name = "vdd_core"; | ||
208 | regulator-min-microvolt = <912500>; | ||
209 | regulator-max-microvolt = <1150000>; | ||
210 | regulator-boot-on; | ||
211 | regulator-always-on; | ||
212 | }; | ||
213 | |||
214 | vdd3_reg: regulator@4 { | ||
215 | regulator-always-on; | ||
216 | }; | ||
217 | |||
218 | vdig1_reg: regulator@5 { | ||
219 | regulator-always-on; | ||
220 | }; | ||
221 | |||
222 | vdig2_reg: regulator@6 { | ||
223 | regulator-always-on; | ||
224 | }; | ||
225 | |||
226 | vpll_reg: regulator@7 { | ||
227 | regulator-always-on; | ||
228 | }; | ||
229 | |||
230 | vdac_reg: regulator@8 { | ||
231 | regulator-always-on; | ||
232 | }; | ||
233 | |||
234 | vaux1_reg: regulator@9 { | ||
235 | regulator-always-on; | ||
236 | }; | ||
237 | |||
238 | vaux2_reg: regulator@10 { | ||
239 | regulator-always-on; | ||
240 | }; | ||
241 | |||
242 | vaux33_reg: regulator@11 { | ||
243 | regulator-always-on; | ||
244 | }; | ||
245 | |||
246 | vmmc_reg: regulator@12 { | ||
247 | regulator-always-on; | ||
248 | }; | ||
249 | }; | ||
250 | }; | ||
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi index bb31bff01998..20a3f29a6bfe 100644 --- a/arch/arm/boot/dts/am33xx.dtsi +++ b/arch/arm/boot/dts/am33xx.dtsi | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | / { | 13 | / { |
14 | compatible = "ti,am33xx"; | 14 | compatible = "ti,am33xx"; |
15 | interrupt-parent = <&intc>; | ||
15 | 16 | ||
16 | aliases { | 17 | aliases { |
17 | serial0 = &uart1; | 18 | serial0 = &uart1; |
@@ -25,6 +26,21 @@ | |||
25 | cpus { | 26 | cpus { |
26 | cpu@0 { | 27 | cpu@0 { |
27 | compatible = "arm,cortex-a8"; | 28 | compatible = "arm,cortex-a8"; |
29 | |||
30 | /* | ||
31 | * To consider voltage drop between PMIC and SoC, | ||
32 | * tolerance value is reduced to 2% from 4% and | ||
33 | * voltage value is increased as a precaution. | ||
34 | */ | ||
35 | operating-points = < | ||
36 | /* kHz uV */ | ||
37 | 720000 1285000 | ||
38 | 600000 1225000 | ||
39 | 500000 1125000 | ||
40 | 275000 1125000 | ||
41 | >; | ||
42 | voltage-tolerance = <2>; /* 2 percentage */ | ||
43 | clock-latency = <300000>; /* From omap-cpufreq driver */ | ||
28 | }; | 44 | }; |
29 | }; | 45 | }; |
30 | 46 | ||
@@ -40,6 +56,15 @@ | |||
40 | }; | 56 | }; |
41 | }; | 57 | }; |
42 | 58 | ||
59 | am33xx_pinmux: pinmux@44e10800 { | ||
60 | compatible = "pinctrl-single"; | ||
61 | reg = <0x44e10800 0x0238>; | ||
62 | #address-cells = <1>; | ||
63 | #size-cells = <0>; | ||
64 | pinctrl-single,register-width = <32>; | ||
65 | pinctrl-single,function-mask = <0x7f>; | ||
66 | }; | ||
67 | |||
43 | /* | 68 | /* |
44 | * XXX: Use a flat representation of the AM33XX interconnect. | 69 | * XXX: Use a flat representation of the AM33XX interconnect. |
45 | * The real AM33XX interconnect network is quite complex.Since | 70 | * The real AM33XX interconnect network is quite complex.Since |
@@ -70,7 +95,6 @@ | |||
70 | interrupt-controller; | 95 | interrupt-controller; |
71 | #interrupt-cells = <1>; | 96 | #interrupt-cells = <1>; |
72 | reg = <0x44e07000 0x1000>; | 97 | reg = <0x44e07000 0x1000>; |
73 | interrupt-parent = <&intc>; | ||
74 | interrupts = <96>; | 98 | interrupts = <96>; |
75 | }; | 99 | }; |
76 | 100 | ||
@@ -82,7 +106,6 @@ | |||
82 | interrupt-controller; | 106 | interrupt-controller; |
83 | #interrupt-cells = <1>; | 107 | #interrupt-cells = <1>; |
84 | reg = <0x4804c000 0x1000>; | 108 | reg = <0x4804c000 0x1000>; |
85 | interrupt-parent = <&intc>; | ||
86 | interrupts = <98>; | 109 | interrupts = <98>; |
87 | }; | 110 | }; |
88 | 111 | ||
@@ -94,7 +117,6 @@ | |||
94 | interrupt-controller; | 117 | interrupt-controller; |
95 | #interrupt-cells = <1>; | 118 | #interrupt-cells = <1>; |
96 | reg = <0x481ac000 0x1000>; | 119 | reg = <0x481ac000 0x1000>; |
97 | interrupt-parent = <&intc>; | ||
98 | interrupts = <32>; | 120 | interrupts = <32>; |
99 | }; | 121 | }; |
100 | 122 | ||
@@ -106,7 +128,6 @@ | |||
106 | interrupt-controller; | 128 | interrupt-controller; |
107 | #interrupt-cells = <1>; | 129 | #interrupt-cells = <1>; |
108 | reg = <0x481ae000 0x1000>; | 130 | reg = <0x481ae000 0x1000>; |
109 | interrupt-parent = <&intc>; | ||
110 | interrupts = <62>; | 131 | interrupts = <62>; |
111 | }; | 132 | }; |
112 | 133 | ||
@@ -115,7 +136,6 @@ | |||
115 | ti,hwmods = "uart1"; | 136 | ti,hwmods = "uart1"; |
116 | clock-frequency = <48000000>; | 137 | clock-frequency = <48000000>; |
117 | reg = <0x44e09000 0x2000>; | 138 | reg = <0x44e09000 0x2000>; |
118 | interrupt-parent = <&intc>; | ||
119 | interrupts = <72>; | 139 | interrupts = <72>; |
120 | status = "disabled"; | 140 | status = "disabled"; |
121 | }; | 141 | }; |
@@ -125,7 +145,6 @@ | |||
125 | ti,hwmods = "uart2"; | 145 | ti,hwmods = "uart2"; |
126 | clock-frequency = <48000000>; | 146 | clock-frequency = <48000000>; |
127 | reg = <0x48022000 0x2000>; | 147 | reg = <0x48022000 0x2000>; |
128 | interrupt-parent = <&intc>; | ||
129 | interrupts = <73>; | 148 | interrupts = <73>; |
130 | status = "disabled"; | 149 | status = "disabled"; |
131 | }; | 150 | }; |
@@ -135,7 +154,6 @@ | |||
135 | ti,hwmods = "uart3"; | 154 | ti,hwmods = "uart3"; |
136 | clock-frequency = <48000000>; | 155 | clock-frequency = <48000000>; |
137 | reg = <0x48024000 0x2000>; | 156 | reg = <0x48024000 0x2000>; |
138 | interrupt-parent = <&intc>; | ||
139 | interrupts = <74>; | 157 | interrupts = <74>; |
140 | status = "disabled"; | 158 | status = "disabled"; |
141 | }; | 159 | }; |
@@ -145,7 +163,6 @@ | |||
145 | ti,hwmods = "uart4"; | 163 | ti,hwmods = "uart4"; |
146 | clock-frequency = <48000000>; | 164 | clock-frequency = <48000000>; |
147 | reg = <0x481a6000 0x2000>; | 165 | reg = <0x481a6000 0x2000>; |
148 | interrupt-parent = <&intc>; | ||
149 | interrupts = <44>; | 166 | interrupts = <44>; |
150 | status = "disabled"; | 167 | status = "disabled"; |
151 | }; | 168 | }; |
@@ -155,7 +172,6 @@ | |||
155 | ti,hwmods = "uart5"; | 172 | ti,hwmods = "uart5"; |
156 | clock-frequency = <48000000>; | 173 | clock-frequency = <48000000>; |
157 | reg = <0x481a8000 0x2000>; | 174 | reg = <0x481a8000 0x2000>; |
158 | interrupt-parent = <&intc>; | ||
159 | interrupts = <45>; | 175 | interrupts = <45>; |
160 | status = "disabled"; | 176 | status = "disabled"; |
161 | }; | 177 | }; |
@@ -165,7 +181,6 @@ | |||
165 | ti,hwmods = "uart6"; | 181 | ti,hwmods = "uart6"; |
166 | clock-frequency = <48000000>; | 182 | clock-frequency = <48000000>; |
167 | reg = <0x481aa000 0x2000>; | 183 | reg = <0x481aa000 0x2000>; |
168 | interrupt-parent = <&intc>; | ||
169 | interrupts = <46>; | 184 | interrupts = <46>; |
170 | status = "disabled"; | 185 | status = "disabled"; |
171 | }; | 186 | }; |
@@ -176,7 +191,6 @@ | |||
176 | #size-cells = <0>; | 191 | #size-cells = <0>; |
177 | ti,hwmods = "i2c1"; | 192 | ti,hwmods = "i2c1"; |
178 | reg = <0x44e0b000 0x1000>; | 193 | reg = <0x44e0b000 0x1000>; |
179 | interrupt-parent = <&intc>; | ||
180 | interrupts = <70>; | 194 | interrupts = <70>; |
181 | status = "disabled"; | 195 | status = "disabled"; |
182 | }; | 196 | }; |
@@ -187,7 +201,6 @@ | |||
187 | #size-cells = <0>; | 201 | #size-cells = <0>; |
188 | ti,hwmods = "i2c2"; | 202 | ti,hwmods = "i2c2"; |
189 | reg = <0x4802a000 0x1000>; | 203 | reg = <0x4802a000 0x1000>; |
190 | interrupt-parent = <&intc>; | ||
191 | interrupts = <71>; | 204 | interrupts = <71>; |
192 | status = "disabled"; | 205 | status = "disabled"; |
193 | }; | 206 | }; |
@@ -198,7 +211,6 @@ | |||
198 | #size-cells = <0>; | 211 | #size-cells = <0>; |
199 | ti,hwmods = "i2c3"; | 212 | ti,hwmods = "i2c3"; |
200 | reg = <0x4819c000 0x1000>; | 213 | reg = <0x4819c000 0x1000>; |
201 | interrupt-parent = <&intc>; | ||
202 | interrupts = <30>; | 214 | interrupts = <30>; |
203 | status = "disabled"; | 215 | status = "disabled"; |
204 | }; | 216 | }; |
@@ -207,8 +219,124 @@ | |||
207 | compatible = "ti,omap3-wdt"; | 219 | compatible = "ti,omap3-wdt"; |
208 | ti,hwmods = "wd_timer2"; | 220 | ti,hwmods = "wd_timer2"; |
209 | reg = <0x44e35000 0x1000>; | 221 | reg = <0x44e35000 0x1000>; |
210 | interrupt-parent = <&intc>; | ||
211 | interrupts = <91>; | 222 | interrupts = <91>; |
212 | }; | 223 | }; |
224 | |||
225 | dcan0: d_can@481cc000 { | ||
226 | compatible = "bosch,d_can"; | ||
227 | ti,hwmods = "d_can0"; | ||
228 | reg = <0x481cc000 0x2000>; | ||
229 | interrupts = <52>; | ||
230 | status = "disabled"; | ||
231 | }; | ||
232 | |||
233 | dcan1: d_can@481d0000 { | ||
234 | compatible = "bosch,d_can"; | ||
235 | ti,hwmods = "d_can1"; | ||
236 | reg = <0x481d0000 0x2000>; | ||
237 | interrupts = <55>; | ||
238 | status = "disabled"; | ||
239 | }; | ||
240 | |||
241 | timer1: timer@44e31000 { | ||
242 | compatible = "ti,omap2-timer"; | ||
243 | reg = <0x44e31000 0x400>; | ||
244 | interrupts = <67>; | ||
245 | ti,hwmods = "timer1"; | ||
246 | ti,timer-alwon; | ||
247 | }; | ||
248 | |||
249 | timer2: timer@48040000 { | ||
250 | compatible = "ti,omap2-timer"; | ||
251 | reg = <0x48040000 0x400>; | ||
252 | interrupts = <68>; | ||
253 | ti,hwmods = "timer2"; | ||
254 | }; | ||
255 | |||
256 | timer3: timer@48042000 { | ||
257 | compatible = "ti,omap2-timer"; | ||
258 | reg = <0x48042000 0x400>; | ||
259 | interrupts = <69>; | ||
260 | ti,hwmods = "timer3"; | ||
261 | }; | ||
262 | |||
263 | timer4: timer@48044000 { | ||
264 | compatible = "ti,omap2-timer"; | ||
265 | reg = <0x48044000 0x400>; | ||
266 | interrupts = <92>; | ||
267 | ti,hwmods = "timer4"; | ||
268 | ti,timer-pwm; | ||
269 | }; | ||
270 | |||
271 | timer5: timer@48046000 { | ||
272 | compatible = "ti,omap2-timer"; | ||
273 | reg = <0x48046000 0x400>; | ||
274 | interrupts = <93>; | ||
275 | ti,hwmods = "timer5"; | ||
276 | ti,timer-pwm; | ||
277 | }; | ||
278 | |||
279 | timer6: timer@48048000 { | ||
280 | compatible = "ti,omap2-timer"; | ||
281 | reg = <0x48048000 0x400>; | ||
282 | interrupts = <94>; | ||
283 | ti,hwmods = "timer6"; | ||
284 | ti,timer-pwm; | ||
285 | }; | ||
286 | |||
287 | timer7: timer@4804a000 { | ||
288 | compatible = "ti,omap2-timer"; | ||
289 | reg = <0x4804a000 0x400>; | ||
290 | interrupts = <95>; | ||
291 | ti,hwmods = "timer7"; | ||
292 | ti,timer-pwm; | ||
293 | }; | ||
294 | |||
295 | rtc@44e3e000 { | ||
296 | compatible = "ti,da830-rtc"; | ||
297 | reg = <0x44e3e000 0x1000>; | ||
298 | interrupts = <75 | ||
299 | 76>; | ||
300 | ti,hwmods = "rtc"; | ||
301 | }; | ||
302 | |||
303 | spi0: spi@48030000 { | ||
304 | compatible = "ti,omap4-mcspi"; | ||
305 | #address-cells = <1>; | ||
306 | #size-cells = <0>; | ||
307 | reg = <0x48030000 0x400>; | ||
308 | interrupt = <65>; | ||
309 | ti,spi-num-cs = <2>; | ||
310 | ti,hwmods = "spi0"; | ||
311 | status = "disabled"; | ||
312 | }; | ||
313 | |||
314 | spi1: spi@481a0000 { | ||
315 | compatible = "ti,omap4-mcspi"; | ||
316 | #address-cells = <1>; | ||
317 | #size-cells = <0>; | ||
318 | reg = <0x481a0000 0x400>; | ||
319 | interrupt = <125>; | ||
320 | ti,spi-num-cs = <2>; | ||
321 | ti,hwmods = "spi1"; | ||
322 | status = "disabled"; | ||
323 | }; | ||
324 | |||
325 | usb@47400000 { | ||
326 | compatible = "ti,musb-am33xx"; | ||
327 | reg = <0x47400000 0x1000 /* usbss */ | ||
328 | 0x47401000 0x800 /* musb instance 0 */ | ||
329 | 0x47401800 0x800>; /* musb instance 1 */ | ||
330 | interrupts = <17 /* usbss */ | ||
331 | 18 /* musb instance 0 */ | ||
332 | 19>; /* musb instance 1 */ | ||
333 | multipoint = <1>; | ||
334 | num-eps = <16>; | ||
335 | ram-bits = <12>; | ||
336 | port0-mode = <3>; | ||
337 | port1-mode = <3>; | ||
338 | power = <250>; | ||
339 | ti,hwmods = "usb_otg_hs"; | ||
340 | }; | ||
213 | }; | 341 | }; |
214 | }; | 342 | }; |
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi index d410581a5a85..bfb5bb6528b5 100644 --- a/arch/arm/boot/dts/at91sam9260.dtsi +++ b/arch/arm/boot/dts/at91sam9260.dtsi | |||
@@ -246,6 +246,12 @@ | |||
246 | trigger-external; | 246 | trigger-external; |
247 | }; | 247 | }; |
248 | }; | 248 | }; |
249 | |||
250 | watchdog@fffffd40 { | ||
251 | compatible = "atmel,at91sam9260-wdt"; | ||
252 | reg = <0xfffffd40 0x10>; | ||
253 | status = "disabled"; | ||
254 | }; | ||
249 | }; | 255 | }; |
250 | 256 | ||
251 | nand0: nand@40000000 { | 257 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi index 3e6e5c1abbf3..ff5461278c03 100644 --- a/arch/arm/boot/dts/at91sam9263.dtsi +++ b/arch/arm/boot/dts/at91sam9263.dtsi | |||
@@ -195,6 +195,12 @@ | |||
195 | #size-cells = <0>; | 195 | #size-cells = <0>; |
196 | status = "disabled"; | 196 | status = "disabled"; |
197 | }; | 197 | }; |
198 | |||
199 | watchdog@fffffd40 { | ||
200 | compatible = "atmel,at91sam9260-wdt"; | ||
201 | reg = <0xfffffd40 0x10>; | ||
202 | status = "disabled"; | ||
203 | }; | ||
198 | }; | 204 | }; |
199 | 205 | ||
200 | nand0: nand@40000000 { | 206 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi index 3add030d61f8..a98c00a234eb 100644 --- a/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/arch/arm/boot/dts/at91sam9g45.dtsi | |||
@@ -262,6 +262,12 @@ | |||
262 | trigger-value = <0x6>; | 262 | trigger-value = <0x6>; |
263 | }; | 263 | }; |
264 | }; | 264 | }; |
265 | |||
266 | watchdog@fffffd40 { | ||
267 | compatible = "atmel,at91sam9260-wdt"; | ||
268 | reg = <0xfffffd40 0x10>; | ||
269 | status = "disabled"; | ||
270 | }; | ||
265 | }; | 271 | }; |
266 | 272 | ||
267 | nand0: nand@40000000 { | 273 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/ccu9540.dts b/arch/arm/boot/dts/ccu9540.dts new file mode 100644 index 000000000000..04305463f00d --- /dev/null +++ b/arch/arm/boot/dts/ccu9540.dts | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * Copyright 2012 ST-Ericsson AB | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "dbx5x0.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ST-Ericsson CCU9540 platform with Device Tree"; | ||
17 | compatible = "st-ericsson,ccu9540", "st-ericsson,u9540"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x20000000>; | ||
21 | }; | ||
22 | |||
23 | soc-u9500 { | ||
24 | uart@80120000 { | ||
25 | status = "okay"; | ||
26 | }; | ||
27 | |||
28 | uart@80121000 { | ||
29 | status = "okay"; | ||
30 | }; | ||
31 | |||
32 | uart@80007000 { | ||
33 | status = "okay"; | ||
34 | }; | ||
35 | |||
36 | // External Micro SD slot | ||
37 | sdi0_per1@80126000 { | ||
38 | arm,primecell-periphid = <0x10480180>; | ||
39 | max-frequency = <100000000>; | ||
40 | bus-width = <4>; | ||
41 | mmc-cap-sd-highspeed; | ||
42 | mmc-cap-mmc-highspeed; | ||
43 | vmmc-supply = <&ab8500_ldo_aux3_reg>; | ||
44 | |||
45 | cd-gpios = <&gpio7 6 0x4>; // 230 | ||
46 | cd-inverted; | ||
47 | |||
48 | status = "okay"; | ||
49 | }; | ||
50 | |||
51 | |||
52 | // WLAN SDIO channel | ||
53 | sdi1_per2@80118000 { | ||
54 | arm,primecell-periphid = <0x10480180>; | ||
55 | max-frequency = <50000000>; | ||
56 | bus-width = <4>; | ||
57 | |||
58 | status = "okay"; | ||
59 | }; | ||
60 | |||
61 | // On-board eMMC | ||
62 | sdi4_per2@80114000 { | ||
63 | arm,primecell-periphid = <0x10480180>; | ||
64 | max-frequency = <100000000>; | ||
65 | bus-width = <8>; | ||
66 | mmc-cap-mmc-highspeed; | ||
67 | vmmc-supply = <&ab8500_ldo_aux2_reg>; | ||
68 | |||
69 | status = "okay"; | ||
70 | }; | ||
71 | }; | ||
72 | }; | ||
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi new file mode 100644 index 000000000000..fddd17417433 --- /dev/null +++ b/arch/arm/boot/dts/cros5250-common.dtsi | |||
@@ -0,0 +1,184 @@ | |||
1 | /* | ||
2 | * Common device tree include for all Exynos 5250 boards based off of Daisy. | ||
3 | * | ||
4 | * Copyright (c) 2012 Google, Inc | ||
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 | aliases { | ||
13 | }; | ||
14 | |||
15 | memory { | ||
16 | reg = <0x40000000 0x80000000>; | ||
17 | }; | ||
18 | |||
19 | chosen { | ||
20 | }; | ||
21 | |||
22 | i2c@12C60000 { | ||
23 | samsung,i2c-sda-delay = <100>; | ||
24 | samsung,i2c-max-bus-freq = <378000>; | ||
25 | gpios = <&gpb3 0 2 3 0>, | ||
26 | <&gpb3 1 2 3 0>; | ||
27 | }; | ||
28 | |||
29 | i2c@12C70000 { | ||
30 | samsung,i2c-sda-delay = <100>; | ||
31 | samsung,i2c-max-bus-freq = <378000>; | ||
32 | gpios = <&gpb3 2 2 3 0>, | ||
33 | <&gpb3 3 2 3 0>; | ||
34 | }; | ||
35 | |||
36 | i2c@12C80000 { | ||
37 | samsung,i2c-sda-delay = <100>; | ||
38 | samsung,i2c-max-bus-freq = <66000>; | ||
39 | |||
40 | /* | ||
41 | * Disabled pullups since external part has its own pullups and | ||
42 | * double-pulling gets us out of spec in some cases. | ||
43 | */ | ||
44 | gpios = <&gpa0 6 3 0 0>, | ||
45 | <&gpa0 7 3 0 0>; | ||
46 | |||
47 | hdmiddc@50 { | ||
48 | compatible = "samsung,exynos5-hdmiddc"; | ||
49 | reg = <0x50>; | ||
50 | }; | ||
51 | }; | ||
52 | |||
53 | i2c@12C90000 { | ||
54 | samsung,i2c-sda-delay = <100>; | ||
55 | samsung,i2c-max-bus-freq = <66000>; | ||
56 | gpios = <&gpa1 2 3 3 0>, | ||
57 | <&gpa1 3 3 3 0>; | ||
58 | }; | ||
59 | |||
60 | i2c@12CA0000 { | ||
61 | status = "disabled"; | ||
62 | }; | ||
63 | |||
64 | i2c@12CB0000 { | ||
65 | samsung,i2c-sda-delay = <100>; | ||
66 | samsung,i2c-max-bus-freq = <66000>; | ||
67 | gpios = <&gpa2 2 3 3 0>, | ||
68 | <&gpa2 3 3 3 0>; | ||
69 | }; | ||
70 | |||
71 | i2c@12CC0000 { | ||
72 | status = "disabled"; | ||
73 | }; | ||
74 | |||
75 | i2c@12CD0000 { | ||
76 | samsung,i2c-sda-delay = <100>; | ||
77 | samsung,i2c-max-bus-freq = <66000>; | ||
78 | gpios = <&gpb2 2 3 3 0>, | ||
79 | <&gpb2 3 3 3 0>; | ||
80 | }; | ||
81 | |||
82 | i2c@12CE0000 { | ||
83 | samsung,i2c-sda-delay = <100>; | ||
84 | samsung,i2c-max-bus-freq = <378000>; | ||
85 | |||
86 | hdmiphy@38 { | ||
87 | compatible = "samsung,exynos5-hdmiphy"; | ||
88 | reg = <0x38>; | ||
89 | }; | ||
90 | }; | ||
91 | |||
92 | dwmmc0@12200000 { | ||
93 | num-slots = <1>; | ||
94 | supports-highspeed; | ||
95 | broken-cd; | ||
96 | fifo-depth = <0x80>; | ||
97 | card-detect-delay = <200>; | ||
98 | samsung,dw-mshc-ciu-div = <3>; | ||
99 | samsung,dw-mshc-sdr-timing = <2 3 3>; | ||
100 | samsung,dw-mshc-ddr-timing = <1 2 3>; | ||
101 | |||
102 | slot@0 { | ||
103 | reg = <0>; | ||
104 | bus-width = <8>; | ||
105 | gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>, | ||
106 | <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>, | ||
107 | <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>, | ||
108 | <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>, | ||
109 | <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>; | ||
110 | }; | ||
111 | }; | ||
112 | |||
113 | dwmmc1@12210000 { | ||
114 | status = "disabled"; | ||
115 | }; | ||
116 | |||
117 | dwmmc2@12220000 { | ||
118 | num-slots = <1>; | ||
119 | supports-highspeed; | ||
120 | fifo-depth = <0x80>; | ||
121 | card-detect-delay = <200>; | ||
122 | samsung,dw-mshc-ciu-div = <3>; | ||
123 | samsung,dw-mshc-sdr-timing = <2 3 3>; | ||
124 | samsung,dw-mshc-ddr-timing = <1 2 3>; | ||
125 | |||
126 | slot@0 { | ||
127 | reg = <0>; | ||
128 | bus-width = <4>; | ||
129 | samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; | ||
130 | wp-gpios = <&gpc2 1 0 0 3>; | ||
131 | gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>, | ||
132 | <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>, | ||
133 | <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>; | ||
134 | }; | ||
135 | }; | ||
136 | |||
137 | dwmmc3@12230000 { | ||
138 | num-slots = <1>; | ||
139 | supports-highspeed; | ||
140 | broken-cd; | ||
141 | fifo-depth = <0x80>; | ||
142 | card-detect-delay = <200>; | ||
143 | samsung,dw-mshc-ciu-div = <3>; | ||
144 | samsung,dw-mshc-sdr-timing = <2 3 3>; | ||
145 | samsung,dw-mshc-ddr-timing = <1 2 3>; | ||
146 | |||
147 | slot@0 { | ||
148 | reg = <0>; | ||
149 | bus-width = <4>; | ||
150 | /* See board-specific dts files for GPIOs */ | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | spi_0: spi@12d20000 { | ||
155 | status = "disabled"; | ||
156 | }; | ||
157 | |||
158 | spi_1: spi@12d30000 { | ||
159 | gpios = <&gpa2 4 2 3 0>, | ||
160 | <&gpa2 6 2 3 0>, | ||
161 | <&gpa2 7 2 3 0>; | ||
162 | samsung,spi-src-clk = <0>; | ||
163 | num-cs = <1>; | ||
164 | }; | ||
165 | |||
166 | spi_2: spi@12d40000 { | ||
167 | status = "disabled"; | ||
168 | }; | ||
169 | |||
170 | hdmi { | ||
171 | hpd-gpio = <&gpx3 7 0xf 1 3>; | ||
172 | }; | ||
173 | |||
174 | gpio-keys { | ||
175 | compatible = "gpio-keys"; | ||
176 | |||
177 | power { | ||
178 | label = "Power"; | ||
179 | gpios = <&gpx1 3 0 0x10000 0>; | ||
180 | linux,code = <116>; /* KEY_POWER */ | ||
181 | gpio-key,wakeup; | ||
182 | }; | ||
183 | }; | ||
184 | }; | ||
diff --git a/arch/arm/boot/dts/da850-enbw-cmc.dts b/arch/arm/boot/dts/da850-enbw-cmc.dts new file mode 100644 index 000000000000..422fdb3fcfc1 --- /dev/null +++ b/arch/arm/boot/dts/da850-enbw-cmc.dts | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Device Tree for AM1808 EnBW CMC board | ||
3 | * | ||
4 | * Copyright 2012 DENX Software Engineering GmbH | ||
5 | * Heiko Schocher <hs@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | /dts-v1/; | ||
13 | /include/ "da850.dtsi" | ||
14 | |||
15 | / { | ||
16 | compatible = "enbw,cmc", "ti,da850"; | ||
17 | model = "EnBW CMC"; | ||
18 | |||
19 | soc { | ||
20 | serial0: serial@1c42000 { | ||
21 | status = "okay"; | ||
22 | }; | ||
23 | serial1: serial@1d0c000 { | ||
24 | status = "okay"; | ||
25 | }; | ||
26 | serial2: serial@1d0d000 { | ||
27 | status = "okay"; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts new file mode 100644 index 000000000000..37dc5a3243b8 --- /dev/null +++ b/arch/arm/boot/dts/da850-evm.dts | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Device Tree for DA850 EVM board | ||
3 | * | ||
4 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation, version 2. | ||
9 | */ | ||
10 | /dts-v1/; | ||
11 | /include/ "da850.dtsi" | ||
12 | |||
13 | / { | ||
14 | compatible = "ti,da850-evm", "ti,da850"; | ||
15 | model = "DA850/AM1808/OMAP-L138 EVM"; | ||
16 | |||
17 | soc { | ||
18 | serial0: serial@1c42000 { | ||
19 | status = "okay"; | ||
20 | }; | ||
21 | serial1: serial@1d0c000 { | ||
22 | status = "okay"; | ||
23 | }; | ||
24 | serial2: serial@1d0d000 { | ||
25 | status = "okay"; | ||
26 | }; | ||
27 | }; | ||
28 | }; | ||
diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi new file mode 100644 index 000000000000..640ab75c20db --- /dev/null +++ b/arch/arm/boot/dts/da850.dtsi | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * Copyright 2012 DENX Software Engineering GmbH | ||
3 | * Heiko Schocher <hs@denx.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License as published by the | ||
7 | * Free Software Foundation; either version 2 of the License, or (at your | ||
8 | * option) any later version. | ||
9 | */ | ||
10 | /include/ "skeleton.dtsi" | ||
11 | |||
12 | / { | ||
13 | arm { | ||
14 | #address-cells = <1>; | ||
15 | #size-cells = <1>; | ||
16 | ranges; | ||
17 | intc: interrupt-controller { | ||
18 | compatible = "ti,cp-intc"; | ||
19 | interrupt-controller; | ||
20 | #interrupt-cells = <1>; | ||
21 | ti,intc-size = <100>; | ||
22 | reg = <0xfffee000 0x2000>; | ||
23 | }; | ||
24 | }; | ||
25 | soc { | ||
26 | compatible = "simple-bus"; | ||
27 | model = "da850"; | ||
28 | #address-cells = <1>; | ||
29 | #size-cells = <1>; | ||
30 | ranges = <0x0 0x01c00000 0x400000>; | ||
31 | |||
32 | serial0: serial@1c42000 { | ||
33 | compatible = "ns16550a"; | ||
34 | reg = <0x42000 0x100>; | ||
35 | clock-frequency = <150000000>; | ||
36 | reg-shift = <2>; | ||
37 | interrupts = <25>; | ||
38 | interrupt-parent = <&intc>; | ||
39 | status = "disabled"; | ||
40 | }; | ||
41 | serial1: serial@1d0c000 { | ||
42 | compatible = "ns16550a"; | ||
43 | reg = <0x10c000 0x100>; | ||
44 | clock-frequency = <150000000>; | ||
45 | reg-shift = <2>; | ||
46 | interrupts = <53>; | ||
47 | interrupt-parent = <&intc>; | ||
48 | status = "disabled"; | ||
49 | }; | ||
50 | serial2: serial@1d0d000 { | ||
51 | compatible = "ns16550a"; | ||
52 | reg = <0x10d000 0x100>; | ||
53 | clock-frequency = <150000000>; | ||
54 | reg-shift = <2>; | ||
55 | interrupts = <61>; | ||
56 | interrupt-parent = <&intc>; | ||
57 | status = "disabled"; | ||
58 | }; | ||
59 | }; | ||
60 | }; | ||
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi index 4b0e0ca08f40..9f553630242a 100644 --- a/arch/arm/boot/dts/dbx5x0.dtsi +++ b/arch/arm/boot/dts/dbx5x0.dtsi | |||
@@ -209,123 +209,103 @@ | |||
209 | // DB8500_REGULATOR_VAPE | 209 | // DB8500_REGULATOR_VAPE |
210 | db8500_vape_reg: db8500_vape { | 210 | db8500_vape_reg: db8500_vape { |
211 | regulator-compatible = "db8500_vape"; | 211 | regulator-compatible = "db8500_vape"; |
212 | regulator-name = "db8500-vape"; | ||
213 | regulator-always-on; | 212 | regulator-always-on; |
214 | }; | 213 | }; |
215 | 214 | ||
216 | // DB8500_REGULATOR_VARM | 215 | // DB8500_REGULATOR_VARM |
217 | db8500_varm_reg: db8500_varm { | 216 | db8500_varm_reg: db8500_varm { |
218 | regulator-compatible = "db8500_varm"; | 217 | regulator-compatible = "db8500_varm"; |
219 | regulator-name = "db8500-varm"; | ||
220 | }; | 218 | }; |
221 | 219 | ||
222 | // DB8500_REGULATOR_VMODEM | 220 | // DB8500_REGULATOR_VMODEM |
223 | db8500_vmodem_reg: db8500_vmodem { | 221 | db8500_vmodem_reg: db8500_vmodem { |
224 | regulator-compatible = "db8500_vmodem"; | 222 | regulator-compatible = "db8500_vmodem"; |
225 | regulator-name = "db8500-vmodem"; | ||
226 | }; | 223 | }; |
227 | 224 | ||
228 | // DB8500_REGULATOR_VPLL | 225 | // DB8500_REGULATOR_VPLL |
229 | db8500_vpll_reg: db8500_vpll { | 226 | db8500_vpll_reg: db8500_vpll { |
230 | regulator-compatible = "db8500_vpll"; | 227 | regulator-compatible = "db8500_vpll"; |
231 | regulator-name = "db8500-vpll"; | ||
232 | }; | 228 | }; |
233 | 229 | ||
234 | // DB8500_REGULATOR_VSMPS1 | 230 | // DB8500_REGULATOR_VSMPS1 |
235 | db8500_vsmps1_reg: db8500_vsmps1 { | 231 | db8500_vsmps1_reg: db8500_vsmps1 { |
236 | regulator-compatible = "db8500_vsmps1"; | 232 | regulator-compatible = "db8500_vsmps1"; |
237 | regulator-name = "db8500-vsmps1"; | ||
238 | }; | 233 | }; |
239 | 234 | ||
240 | // DB8500_REGULATOR_VSMPS2 | 235 | // DB8500_REGULATOR_VSMPS2 |
241 | db8500_vsmps2_reg: db8500_vsmps2 { | 236 | db8500_vsmps2_reg: db8500_vsmps2 { |
242 | regulator-compatible = "db8500_vsmps2"; | 237 | regulator-compatible = "db8500_vsmps2"; |
243 | regulator-name = "db8500-vsmps2"; | ||
244 | }; | 238 | }; |
245 | 239 | ||
246 | // DB8500_REGULATOR_VSMPS3 | 240 | // DB8500_REGULATOR_VSMPS3 |
247 | db8500_vsmps3_reg: db8500_vsmps3 { | 241 | db8500_vsmps3_reg: db8500_vsmps3 { |
248 | regulator-compatible = "db8500_vsmps3"; | 242 | regulator-compatible = "db8500_vsmps3"; |
249 | regulator-name = "db8500-vsmps3"; | ||
250 | }; | 243 | }; |
251 | 244 | ||
252 | // DB8500_REGULATOR_VRF1 | 245 | // DB8500_REGULATOR_VRF1 |
253 | db8500_vrf1_reg: db8500_vrf1 { | 246 | db8500_vrf1_reg: db8500_vrf1 { |
254 | regulator-compatible = "db8500_vrf1"; | 247 | regulator-compatible = "db8500_vrf1"; |
255 | regulator-name = "db8500-vrf1"; | ||
256 | }; | 248 | }; |
257 | 249 | ||
258 | // DB8500_REGULATOR_SWITCH_SVAMMDSP | 250 | // DB8500_REGULATOR_SWITCH_SVAMMDSP |
259 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { | 251 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { |
260 | regulator-compatible = "db8500_sva_mmdsp"; | 252 | regulator-compatible = "db8500_sva_mmdsp"; |
261 | regulator-name = "db8500-sva-mmdsp"; | ||
262 | }; | 253 | }; |
263 | 254 | ||
264 | // DB8500_REGULATOR_SWITCH_SVAMMDSPRET | 255 | // DB8500_REGULATOR_SWITCH_SVAMMDSPRET |
265 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { | 256 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { |
266 | regulator-compatible = "db8500_sva_mmdsp_ret"; | 257 | regulator-compatible = "db8500_sva_mmdsp_ret"; |
267 | regulator-name = "db8500-sva-mmdsp-ret"; | ||
268 | }; | 258 | }; |
269 | 259 | ||
270 | // DB8500_REGULATOR_SWITCH_SVAPIPE | 260 | // DB8500_REGULATOR_SWITCH_SVAPIPE |
271 | db8500_sva_pipe_reg: db8500_sva_pipe { | 261 | db8500_sva_pipe_reg: db8500_sva_pipe { |
272 | regulator-compatible = "db8500_sva_pipe"; | 262 | regulator-compatible = "db8500_sva_pipe"; |
273 | regulator-name = "db8500_sva_pipe"; | ||
274 | }; | 263 | }; |
275 | 264 | ||
276 | // DB8500_REGULATOR_SWITCH_SIAMMDSP | 265 | // DB8500_REGULATOR_SWITCH_SIAMMDSP |
277 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { | 266 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { |
278 | regulator-compatible = "db8500_sia_mmdsp"; | 267 | regulator-compatible = "db8500_sia_mmdsp"; |
279 | regulator-name = "db8500_sia_mmdsp"; | ||
280 | }; | 268 | }; |
281 | 269 | ||
282 | // DB8500_REGULATOR_SWITCH_SIAMMDSPRET | 270 | // DB8500_REGULATOR_SWITCH_SIAMMDSPRET |
283 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { | 271 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { |
284 | regulator-name = "db8500-sia-mmdsp-ret"; | ||
285 | }; | 272 | }; |
286 | 273 | ||
287 | // DB8500_REGULATOR_SWITCH_SIAPIPE | 274 | // DB8500_REGULATOR_SWITCH_SIAPIPE |
288 | db8500_sia_pipe_reg: db8500_sia_pipe { | 275 | db8500_sia_pipe_reg: db8500_sia_pipe { |
289 | regulator-compatible = "db8500_sia_pipe"; | 276 | regulator-compatible = "db8500_sia_pipe"; |
290 | regulator-name = "db8500-sia-pipe"; | ||
291 | }; | 277 | }; |
292 | 278 | ||
293 | // DB8500_REGULATOR_SWITCH_SGA | 279 | // DB8500_REGULATOR_SWITCH_SGA |
294 | db8500_sga_reg: db8500_sga { | 280 | db8500_sga_reg: db8500_sga { |
295 | regulator-compatible = "db8500_sga"; | 281 | regulator-compatible = "db8500_sga"; |
296 | regulator-name = "db8500-sga"; | ||
297 | vin-supply = <&db8500_vape_reg>; | 282 | vin-supply = <&db8500_vape_reg>; |
298 | }; | 283 | }; |
299 | 284 | ||
300 | // DB8500_REGULATOR_SWITCH_B2R2_MCDE | 285 | // DB8500_REGULATOR_SWITCH_B2R2_MCDE |
301 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { | 286 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { |
302 | regulator-compatible = "db8500_b2r2_mcde"; | 287 | regulator-compatible = "db8500_b2r2_mcde"; |
303 | regulator-name = "db8500-b2r2-mcde"; | ||
304 | vin-supply = <&db8500_vape_reg>; | 288 | vin-supply = <&db8500_vape_reg>; |
305 | }; | 289 | }; |
306 | 290 | ||
307 | // DB8500_REGULATOR_SWITCH_ESRAM12 | 291 | // DB8500_REGULATOR_SWITCH_ESRAM12 |
308 | db8500_esram12_reg: db8500_esram12 { | 292 | db8500_esram12_reg: db8500_esram12 { |
309 | regulator-compatible = "db8500_esram12"; | 293 | regulator-compatible = "db8500_esram12"; |
310 | regulator-name = "db8500-esram12"; | ||
311 | }; | 294 | }; |
312 | 295 | ||
313 | // DB8500_REGULATOR_SWITCH_ESRAM12RET | 296 | // DB8500_REGULATOR_SWITCH_ESRAM12RET |
314 | db8500_esram12_ret_reg: db8500_esram12_ret { | 297 | db8500_esram12_ret_reg: db8500_esram12_ret { |
315 | regulator-compatible = "db8500_esram12_ret"; | 298 | regulator-compatible = "db8500_esram12_ret"; |
316 | regulator-name = "db8500-esram12-ret"; | ||
317 | }; | 299 | }; |
318 | 300 | ||
319 | // DB8500_REGULATOR_SWITCH_ESRAM34 | 301 | // DB8500_REGULATOR_SWITCH_ESRAM34 |
320 | db8500_esram34_reg: db8500_esram34 { | 302 | db8500_esram34_reg: db8500_esram34 { |
321 | regulator-compatible = "db8500_esram34"; | 303 | regulator-compatible = "db8500_esram34"; |
322 | regulator-name = "db8500-esram34"; | ||
323 | }; | 304 | }; |
324 | 305 | ||
325 | // DB8500_REGULATOR_SWITCH_ESRAM34RET | 306 | // DB8500_REGULATOR_SWITCH_ESRAM34RET |
326 | db8500_esram34_ret_reg: db8500_esram34_ret { | 307 | db8500_esram34_ret_reg: db8500_esram34_ret { |
327 | regulator-compatible = "db8500_esram34_ret"; | 308 | regulator-compatible = "db8500_esram34_ret"; |
328 | regulator-name = "db8500-esram34-ret"; | ||
329 | }; | 309 | }; |
330 | }; | 310 | }; |
331 | 311 | ||
@@ -404,7 +384,6 @@ | |||
404 | // supplies to the display/camera | 384 | // supplies to the display/camera |
405 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | 385 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { |
406 | regulator-compatible = "ab8500_ldo_aux1"; | 386 | regulator-compatible = "ab8500_ldo_aux1"; |
407 | regulator-name = "V-DISPLAY"; | ||
408 | regulator-min-microvolt = <2500000>; | 387 | regulator-min-microvolt = <2500000>; |
409 | regulator-max-microvolt = <2900000>; | 388 | regulator-max-microvolt = <2900000>; |
410 | regulator-boot-on; | 389 | regulator-boot-on; |
@@ -415,7 +394,6 @@ | |||
415 | // supplies to the on-board eMMC | 394 | // supplies to the on-board eMMC |
416 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { | 395 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { |
417 | regulator-compatible = "ab8500_ldo_aux2"; | 396 | regulator-compatible = "ab8500_ldo_aux2"; |
418 | regulator-name = "V-eMMC1"; | ||
419 | regulator-min-microvolt = <1100000>; | 397 | regulator-min-microvolt = <1100000>; |
420 | regulator-max-microvolt = <3300000>; | 398 | regulator-max-microvolt = <3300000>; |
421 | }; | 399 | }; |
@@ -423,7 +401,6 @@ | |||
423 | // supply for VAUX3; SDcard slots | 401 | // supply for VAUX3; SDcard slots |
424 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { | 402 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { |
425 | regulator-compatible = "ab8500_ldo_aux3"; | 403 | regulator-compatible = "ab8500_ldo_aux3"; |
426 | regulator-name = "V-MMC-SD"; | ||
427 | regulator-min-microvolt = <1100000>; | 404 | regulator-min-microvolt = <1100000>; |
428 | regulator-max-microvolt = <3300000>; | 405 | regulator-max-microvolt = <3300000>; |
429 | }; | 406 | }; |
@@ -431,49 +408,41 @@ | |||
431 | // supply for v-intcore12; VINTCORE12 LDO | 408 | // supply for v-intcore12; VINTCORE12 LDO |
432 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { | 409 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { |
433 | regulator-compatible = "ab8500_ldo_initcore"; | 410 | regulator-compatible = "ab8500_ldo_initcore"; |
434 | regulator-name = "V-INTCORE"; | ||
435 | }; | 411 | }; |
436 | 412 | ||
437 | // supply for tvout; gpadc; TVOUT LDO | 413 | // supply for tvout; gpadc; TVOUT LDO |
438 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { | 414 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { |
439 | regulator-compatible = "ab8500_ldo_tvout"; | 415 | regulator-compatible = "ab8500_ldo_tvout"; |
440 | regulator-name = "V-TVOUT"; | ||
441 | }; | 416 | }; |
442 | 417 | ||
443 | // supply for ab8500-usb; USB LDO | 418 | // supply for ab8500-usb; USB LDO |
444 | ab8500_ldo_usb_reg: ab8500_ldo_usb { | 419 | ab8500_ldo_usb_reg: ab8500_ldo_usb { |
445 | regulator-compatible = "ab8500_ldo_usb"; | 420 | regulator-compatible = "ab8500_ldo_usb"; |
446 | regulator-name = "dummy"; | ||
447 | }; | 421 | }; |
448 | 422 | ||
449 | // supply for ab8500-vaudio; VAUDIO LDO | 423 | // supply for ab8500-vaudio; VAUDIO LDO |
450 | ab8500_ldo_audio_reg: ab8500_ldo_audio { | 424 | ab8500_ldo_audio_reg: ab8500_ldo_audio { |
451 | regulator-compatible = "ab8500_ldo_audio"; | 425 | regulator-compatible = "ab8500_ldo_audio"; |
452 | regulator-name = "V-AUD"; | ||
453 | }; | 426 | }; |
454 | 427 | ||
455 | // supply for v-anamic1 VAMic1-LDO | 428 | // supply for v-anamic1 VAMic1-LDO |
456 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { | 429 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { |
457 | regulator-compatible = "ab8500_ldo_anamic1"; | 430 | regulator-compatible = "ab8500_ldo_anamic1"; |
458 | regulator-name = "V-AMIC1"; | ||
459 | }; | 431 | }; |
460 | 432 | ||
461 | // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 | 433 | // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 |
462 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { | 434 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { |
463 | regulator-compatible = "ab8500_ldo_amamic2"; | 435 | regulator-compatible = "ab8500_ldo_amamic2"; |
464 | regulator-name = "V-AMIC2"; | ||
465 | }; | 436 | }; |
466 | 437 | ||
467 | // supply for v-dmic; VDMIC LDO | 438 | // supply for v-dmic; VDMIC LDO |
468 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { | 439 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { |
469 | regulator-compatible = "ab8500_ldo_dmic"; | 440 | regulator-compatible = "ab8500_ldo_dmic"; |
470 | regulator-name = "V-DMIC"; | ||
471 | }; | 441 | }; |
472 | 442 | ||
473 | // supply for U8500 CSI/DSI; VANA LDO | 443 | // supply for U8500 CSI/DSI; VANA LDO |
474 | ab8500_ldo_ana_reg: ab8500_ldo_ana { | 444 | ab8500_ldo_ana_reg: ab8500_ldo_ana { |
475 | regulator-compatible = "ab8500_ldo_ana"; | 445 | regulator-compatible = "ab8500_ldo_ana"; |
476 | regulator-name = "V-CSI/DSI"; | ||
477 | }; | 446 | }; |
478 | }; | 447 | }; |
479 | }; | 448 | }; |
@@ -577,42 +546,42 @@ | |||
577 | status = "disabled"; | 546 | status = "disabled"; |
578 | }; | 547 | }; |
579 | 548 | ||
580 | sdi@80126000 { | 549 | sdi0_per1@80126000 { |
581 | compatible = "arm,pl18x", "arm,primecell"; | 550 | compatible = "arm,pl18x", "arm,primecell"; |
582 | reg = <0x80126000 0x1000>; | 551 | reg = <0x80126000 0x1000>; |
583 | interrupts = <0 60 0x4>; | 552 | interrupts = <0 60 0x4>; |
584 | status = "disabled"; | 553 | status = "disabled"; |
585 | }; | 554 | }; |
586 | 555 | ||
587 | sdi@80118000 { | 556 | sdi1_per2@80118000 { |
588 | compatible = "arm,pl18x", "arm,primecell"; | 557 | compatible = "arm,pl18x", "arm,primecell"; |
589 | reg = <0x80118000 0x1000>; | 558 | reg = <0x80118000 0x1000>; |
590 | interrupts = <0 50 0x4>; | 559 | interrupts = <0 50 0x4>; |
591 | status = "disabled"; | 560 | status = "disabled"; |
592 | }; | 561 | }; |
593 | 562 | ||
594 | sdi@80005000 { | 563 | sdi2_per3@80005000 { |
595 | compatible = "arm,pl18x", "arm,primecell"; | 564 | compatible = "arm,pl18x", "arm,primecell"; |
596 | reg = <0x80005000 0x1000>; | 565 | reg = <0x80005000 0x1000>; |
597 | interrupts = <0 41 0x4>; | 566 | interrupts = <0 41 0x4>; |
598 | status = "disabled"; | 567 | status = "disabled"; |
599 | }; | 568 | }; |
600 | 569 | ||
601 | sdi@80119000 { | 570 | sdi3_per2@80119000 { |
602 | compatible = "arm,pl18x", "arm,primecell"; | 571 | compatible = "arm,pl18x", "arm,primecell"; |
603 | reg = <0x80119000 0x1000>; | 572 | reg = <0x80119000 0x1000>; |
604 | interrupts = <0 59 0x4>; | 573 | interrupts = <0 59 0x4>; |
605 | status = "disabled"; | 574 | status = "disabled"; |
606 | }; | 575 | }; |
607 | 576 | ||
608 | sdi@80114000 { | 577 | sdi4_per2@80114000 { |
609 | compatible = "arm,pl18x", "arm,primecell"; | 578 | compatible = "arm,pl18x", "arm,primecell"; |
610 | reg = <0x80114000 0x1000>; | 579 | reg = <0x80114000 0x1000>; |
611 | interrupts = <0 99 0x4>; | 580 | interrupts = <0 99 0x4>; |
612 | status = "disabled"; | 581 | status = "disabled"; |
613 | }; | 582 | }; |
614 | 583 | ||
615 | sdi@80008000 { | 584 | sdi5_per3@80008000 { |
616 | compatible = "arm,pl18x", "arm,primecell"; | 585 | compatible = "arm,pl18x", "arm,primecell"; |
617 | reg = <0x80008000 0x1000>; | 586 | reg = <0x80008000 0x1000>; |
618 | interrupts = <0 100 0x4>; | 587 | interrupts = <0 100 0x4>; |
@@ -660,5 +629,19 @@ | |||
660 | ranges = <0 0x50000000 0x4000000>; | 629 | ranges = <0 0x50000000 0x4000000>; |
661 | status = "disabled"; | 630 | status = "disabled"; |
662 | }; | 631 | }; |
632 | |||
633 | vmmci: regulator-gpio { | ||
634 | compatible = "regulator-gpio"; | ||
635 | |||
636 | regulator-min-microvolt = <1800000>; | ||
637 | regulator-max-microvolt = <2600000>; | ||
638 | regulator-name = "mmci-reg"; | ||
639 | regulator-type = "voltage"; | ||
640 | |||
641 | states = <1800000 0x1 | ||
642 | 2900000 0x0>; | ||
643 | |||
644 | status = "disabled"; | ||
645 | }; | ||
663 | }; | 646 | }; |
664 | }; | 647 | }; |
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts index 0adbd5a38095..fed7d3f9f431 100644 --- a/arch/arm/boot/dts/dove-cubox.dts +++ b/arch/arm/boot/dts/dove-cubox.dts | |||
@@ -40,3 +40,13 @@ | |||
40 | reg = <0>; | 40 | reg = <0>; |
41 | }; | 41 | }; |
42 | }; | 42 | }; |
43 | |||
44 | &pinctrl { | ||
45 | pinctrl-0 = <&pmx_gpio_18>; | ||
46 | pinctrl-names = "default"; | ||
47 | |||
48 | pmx_gpio_18: pmx-gpio-18 { | ||
49 | marvell,pins = "mpp18"; | ||
50 | marvell,function = "gpio"; | ||
51 | }; | ||
52 | }; | ||
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi index 5a00022383e7..61f391412a5a 100644 --- a/arch/arm/boot/dts/dove.dtsi +++ b/arch/arm/boot/dts/dove.dtsi | |||
@@ -4,6 +4,12 @@ | |||
4 | compatible = "marvell,dove"; | 4 | compatible = "marvell,dove"; |
5 | model = "Marvell Armada 88AP510 SoC"; | 5 | model = "Marvell Armada 88AP510 SoC"; |
6 | 6 | ||
7 | aliases { | ||
8 | gpio0 = &gpio0; | ||
9 | gpio1 = &gpio1; | ||
10 | gpio2 = &gpio2; | ||
11 | }; | ||
12 | |||
7 | soc@f1000000 { | 13 | soc@f1000000 { |
8 | compatible = "simple-bus"; | 14 | compatible = "simple-bus"; |
9 | #address-cells = <1>; | 15 | #address-cells = <1>; |
@@ -72,7 +78,8 @@ | |||
72 | #gpio-cells = <2>; | 78 | #gpio-cells = <2>; |
73 | gpio-controller; | 79 | gpio-controller; |
74 | reg = <0xd0400 0x20>; | 80 | reg = <0xd0400 0x20>; |
75 | ngpio = <32>; | 81 | ngpios = <32>; |
82 | interrupt-controller; | ||
76 | interrupts = <12>, <13>, <14>, <60>; | 83 | interrupts = <12>, <13>, <14>, <60>; |
77 | }; | 84 | }; |
78 | 85 | ||
@@ -81,7 +88,8 @@ | |||
81 | #gpio-cells = <2>; | 88 | #gpio-cells = <2>; |
82 | gpio-controller; | 89 | gpio-controller; |
83 | reg = <0xd0420 0x20>; | 90 | reg = <0xd0420 0x20>; |
84 | ngpio = <32>; | 91 | ngpios = <32>; |
92 | interrupt-controller; | ||
85 | interrupts = <61>; | 93 | interrupts = <61>; |
86 | }; | 94 | }; |
87 | 95 | ||
@@ -90,7 +98,12 @@ | |||
90 | #gpio-cells = <2>; | 98 | #gpio-cells = <2>; |
91 | gpio-controller; | 99 | gpio-controller; |
92 | reg = <0xe8400 0x0c>; | 100 | reg = <0xe8400 0x0c>; |
93 | ngpio = <8>; | 101 | ngpios = <8>; |
102 | }; | ||
103 | |||
104 | pinctrl: pinctrl@d0200 { | ||
105 | compatible = "marvell,dove-pinctrl"; | ||
106 | reg = <0xd0200 0x10>; | ||
94 | }; | 107 | }; |
95 | 108 | ||
96 | spi0: spi@10600 { | 109 | spi0: spi@10600 { |
diff --git a/arch/arm/boot/dts/evk-pro3.dts b/arch/arm/boot/dts/evk-pro3.dts index b7354e6506de..96e50f569433 100644 --- a/arch/arm/boot/dts/evk-pro3.dts +++ b/arch/arm/boot/dts/evk-pro3.dts | |||
@@ -22,10 +22,22 @@ | |||
22 | status = "okay"; | 22 | status = "okay"; |
23 | }; | 23 | }; |
24 | 24 | ||
25 | usart0: serial@fffb0000 { | ||
26 | status = "okay"; | ||
27 | }; | ||
28 | |||
29 | usart2: serial@fffb8000 { | ||
30 | status = "okay"; | ||
31 | }; | ||
32 | |||
25 | usb1: gadget@fffa4000 { | 33 | usb1: gadget@fffa4000 { |
26 | atmel,vbus-gpio = <&pioC 5 0>; | 34 | atmel,vbus-gpio = <&pioC 5 0>; |
27 | status = "okay"; | 35 | status = "okay"; |
28 | }; | 36 | }; |
37 | |||
38 | watchdog@fffffd40 { | ||
39 | status = "okay"; | ||
40 | }; | ||
29 | }; | 41 | }; |
30 | 42 | ||
31 | usb0: ohci@00500000 { | 43 | usb0: ohci@00500000 { |
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi index a26c3dd58269..3428f1a94dcc 100644 --- a/arch/arm/boot/dts/exynos4.dtsi +++ b/arch/arm/boot/dts/exynos4.dtsi | |||
@@ -28,6 +28,44 @@ | |||
28 | spi0 = &spi_0; | 28 | spi0 = &spi_0; |
29 | spi1 = &spi_1; | 29 | spi1 = &spi_1; |
30 | spi2 = &spi_2; | 30 | spi2 = &spi_2; |
31 | i2c0 = &i2c_0; | ||
32 | i2c1 = &i2c_1; | ||
33 | i2c2 = &i2c_2; | ||
34 | i2c3 = &i2c_3; | ||
35 | i2c4 = &i2c_4; | ||
36 | i2c5 = &i2c_5; | ||
37 | i2c6 = &i2c_6; | ||
38 | i2c7 = &i2c_7; | ||
39 | }; | ||
40 | |||
41 | pd_mfc: mfc-power-domain@10023C40 { | ||
42 | compatible = "samsung,exynos4210-pd"; | ||
43 | reg = <0x10023C40 0x20>; | ||
44 | }; | ||
45 | |||
46 | pd_g3d: g3d-power-domain@10023C60 { | ||
47 | compatible = "samsung,exynos4210-pd"; | ||
48 | reg = <0x10023C60 0x20>; | ||
49 | }; | ||
50 | |||
51 | pd_lcd0: lcd0-power-domain@10023C80 { | ||
52 | compatible = "samsung,exynos4210-pd"; | ||
53 | reg = <0x10023C80 0x20>; | ||
54 | }; | ||
55 | |||
56 | pd_tv: tv-power-domain@10023C20 { | ||
57 | compatible = "samsung,exynos4210-pd"; | ||
58 | reg = <0x10023C20 0x20>; | ||
59 | }; | ||
60 | |||
61 | pd_cam: cam-power-domain@10023C00 { | ||
62 | compatible = "samsung,exynos4210-pd"; | ||
63 | reg = <0x10023C00 0x20>; | ||
64 | }; | ||
65 | |||
66 | pd_gps: gps-power-domain@10023CE0 { | ||
67 | compatible = "samsung,exynos4210-pd"; | ||
68 | reg = <0x10023CE0 0x20>; | ||
31 | }; | 69 | }; |
32 | 70 | ||
33 | gic:interrupt-controller@10490000 { | 71 | gic:interrupt-controller@10490000 { |
@@ -121,7 +159,7 @@ | |||
121 | status = "disabled"; | 159 | status = "disabled"; |
122 | }; | 160 | }; |
123 | 161 | ||
124 | i2c@13860000 { | 162 | i2c_0: i2c@13860000 { |
125 | #address-cells = <1>; | 163 | #address-cells = <1>; |
126 | #size-cells = <0>; | 164 | #size-cells = <0>; |
127 | compatible = "samsung,s3c2440-i2c"; | 165 | compatible = "samsung,s3c2440-i2c"; |
@@ -130,7 +168,7 @@ | |||
130 | status = "disabled"; | 168 | status = "disabled"; |
131 | }; | 169 | }; |
132 | 170 | ||
133 | i2c@13870000 { | 171 | i2c_1: i2c@13870000 { |
134 | #address-cells = <1>; | 172 | #address-cells = <1>; |
135 | #size-cells = <0>; | 173 | #size-cells = <0>; |
136 | compatible = "samsung,s3c2440-i2c"; | 174 | compatible = "samsung,s3c2440-i2c"; |
@@ -139,7 +177,7 @@ | |||
139 | status = "disabled"; | 177 | status = "disabled"; |
140 | }; | 178 | }; |
141 | 179 | ||
142 | i2c@13880000 { | 180 | i2c_2: i2c@13880000 { |
143 | #address-cells = <1>; | 181 | #address-cells = <1>; |
144 | #size-cells = <0>; | 182 | #size-cells = <0>; |
145 | compatible = "samsung,s3c2440-i2c"; | 183 | compatible = "samsung,s3c2440-i2c"; |
@@ -148,7 +186,7 @@ | |||
148 | status = "disabled"; | 186 | status = "disabled"; |
149 | }; | 187 | }; |
150 | 188 | ||
151 | i2c@13890000 { | 189 | i2c_3: i2c@13890000 { |
152 | #address-cells = <1>; | 190 | #address-cells = <1>; |
153 | #size-cells = <0>; | 191 | #size-cells = <0>; |
154 | compatible = "samsung,s3c2440-i2c"; | 192 | compatible = "samsung,s3c2440-i2c"; |
@@ -157,7 +195,7 @@ | |||
157 | status = "disabled"; | 195 | status = "disabled"; |
158 | }; | 196 | }; |
159 | 197 | ||
160 | i2c@138A0000 { | 198 | i2c_4: i2c@138A0000 { |
161 | #address-cells = <1>; | 199 | #address-cells = <1>; |
162 | #size-cells = <0>; | 200 | #size-cells = <0>; |
163 | compatible = "samsung,s3c2440-i2c"; | 201 | compatible = "samsung,s3c2440-i2c"; |
@@ -166,7 +204,7 @@ | |||
166 | status = "disabled"; | 204 | status = "disabled"; |
167 | }; | 205 | }; |
168 | 206 | ||
169 | i2c@138B0000 { | 207 | i2c_5: i2c@138B0000 { |
170 | #address-cells = <1>; | 208 | #address-cells = <1>; |
171 | #size-cells = <0>; | 209 | #size-cells = <0>; |
172 | compatible = "samsung,s3c2440-i2c"; | 210 | compatible = "samsung,s3c2440-i2c"; |
@@ -175,7 +213,7 @@ | |||
175 | status = "disabled"; | 213 | status = "disabled"; |
176 | }; | 214 | }; |
177 | 215 | ||
178 | i2c@138C0000 { | 216 | i2c_6: i2c@138C0000 { |
179 | #address-cells = <1>; | 217 | #address-cells = <1>; |
180 | #size-cells = <0>; | 218 | #size-cells = <0>; |
181 | compatible = "samsung,s3c2440-i2c"; | 219 | compatible = "samsung,s3c2440-i2c"; |
@@ -184,7 +222,7 @@ | |||
184 | status = "disabled"; | 222 | status = "disabled"; |
185 | }; | 223 | }; |
186 | 224 | ||
187 | i2c@138D0000 { | 225 | i2c_7: i2c@138D0000 { |
188 | #address-cells = <1>; | 226 | #address-cells = <1>; |
189 | #size-cells = <0>; | 227 | #size-cells = <0>; |
190 | compatible = "samsung,s3c2440-i2c"; | 228 | compatible = "samsung,s3c2440-i2c"; |
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts index 3e68f52e8454..f2710018e84e 100644 --- a/arch/arm/boot/dts/exynos4210-origen.dts +++ b/arch/arm/boot/dts/exynos4210-origen.dts | |||
@@ -22,38 +22,54 @@ | |||
22 | compatible = "insignal,origen", "samsung,exynos4210"; | 22 | compatible = "insignal,origen", "samsung,exynos4210"; |
23 | 23 | ||
24 | memory { | 24 | memory { |
25 | reg = <0x40000000 0x40000000>; | 25 | reg = <0x40000000 0x10000000 |
26 | 0x50000000 0x10000000 | ||
27 | 0x60000000 0x10000000 | ||
28 | 0x70000000 0x10000000>; | ||
26 | }; | 29 | }; |
27 | 30 | ||
28 | chosen { | 31 | chosen { |
29 | bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; | 32 | bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; |
30 | }; | 33 | }; |
31 | 34 | ||
35 | mmc_reg: voltage-regulator { | ||
36 | compatible = "regulator-fixed"; | ||
37 | regulator-name = "VMEM_VDD_2.8V"; | ||
38 | regulator-min-microvolt = <2800000>; | ||
39 | regulator-max-microvolt = <2800000>; | ||
40 | gpio = <&gpx1 1 0>; | ||
41 | enable-active-high; | ||
42 | }; | ||
43 | |||
32 | sdhci@12530000 { | 44 | sdhci@12530000 { |
33 | samsung,sdhci-bus-width = <4>; | 45 | bus-width = <4>; |
34 | linux,mmc_cap_4_bit_data; | 46 | pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>; |
35 | samsung,sdhci-cd-internal; | 47 | pinctrl-names = "default"; |
36 | gpio-cd = <&gpk2 2 2 3 3>; | 48 | vmmc-supply = <&mmc_reg>; |
37 | gpios = <&gpk2 0 2 0 3>, | ||
38 | <&gpk2 1 2 0 3>, | ||
39 | <&gpk2 3 2 3 3>, | ||
40 | <&gpk2 4 2 3 3>, | ||
41 | <&gpk2 5 2 3 3>, | ||
42 | <&gpk2 6 2 3 3>; | ||
43 | status = "okay"; | 49 | status = "okay"; |
44 | }; | 50 | }; |
45 | 51 | ||
46 | sdhci@12510000 { | 52 | sdhci@12510000 { |
47 | samsung,sdhci-bus-width = <4>; | 53 | bus-width = <4>; |
48 | linux,mmc_cap_4_bit_data; | 54 | pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_cd>; |
49 | samsung,sdhci-cd-internal; | 55 | pinctrl-names = "default"; |
50 | gpio-cd = <&gpk0 2 2 3 3>; | 56 | vmmc-supply = <&mmc_reg>; |
51 | gpios = <&gpk0 0 2 0 3>, | 57 | status = "okay"; |
52 | <&gpk0 1 2 0 3>, | 58 | }; |
53 | <&gpk0 3 2 3 3>, | 59 | |
54 | <&gpk0 4 2 3 3>, | 60 | serial@13800000 { |
55 | <&gpk0 5 2 3 3>, | 61 | status = "okay"; |
56 | <&gpk0 6 2 3 3>; | 62 | }; |
63 | |||
64 | serial@13810000 { | ||
65 | status = "okay"; | ||
66 | }; | ||
67 | |||
68 | serial@13820000 { | ||
69 | status = "okay"; | ||
70 | }; | ||
71 | |||
72 | serial@13830000 { | ||
57 | status = "okay"; | 73 | status = "okay"; |
58 | }; | 74 | }; |
59 | 75 | ||
@@ -64,35 +80,35 @@ | |||
64 | 80 | ||
65 | up { | 81 | up { |
66 | label = "Up"; | 82 | label = "Up"; |
67 | gpios = <&gpx2 0 0 0x10000 2>; | 83 | gpios = <&gpx2 0 1>; |
68 | linux,code = <103>; | 84 | linux,code = <103>; |
69 | gpio-key,wakeup; | 85 | gpio-key,wakeup; |
70 | }; | 86 | }; |
71 | 87 | ||
72 | down { | 88 | down { |
73 | label = "Down"; | 89 | label = "Down"; |
74 | gpios = <&gpx2 1 0 0x10000 2>; | 90 | gpios = <&gpx2 1 1>; |
75 | linux,code = <108>; | 91 | linux,code = <108>; |
76 | gpio-key,wakeup; | 92 | gpio-key,wakeup; |
77 | }; | 93 | }; |
78 | 94 | ||
79 | back { | 95 | back { |
80 | label = "Back"; | 96 | label = "Back"; |
81 | gpios = <&gpx1 7 0 0x10000 2>; | 97 | gpios = <&gpx1 7 1>; |
82 | linux,code = <158>; | 98 | linux,code = <158>; |
83 | gpio-key,wakeup; | 99 | gpio-key,wakeup; |
84 | }; | 100 | }; |
85 | 101 | ||
86 | home { | 102 | home { |
87 | label = "Home"; | 103 | label = "Home"; |
88 | gpios = <&gpx1 6 0 0x10000 2>; | 104 | gpios = <&gpx1 6 1>; |
89 | linux,code = <102>; | 105 | linux,code = <102>; |
90 | gpio-key,wakeup; | 106 | gpio-key,wakeup; |
91 | }; | 107 | }; |
92 | 108 | ||
93 | menu { | 109 | menu { |
94 | label = "Menu"; | 110 | label = "Menu"; |
95 | gpios = <&gpx1 5 0 0x10000 2>; | 111 | gpios = <&gpx1 5 1>; |
96 | linux,code = <139>; | 112 | linux,code = <139>; |
97 | gpio-key,wakeup; | 113 | gpio-key,wakeup; |
98 | }; | 114 | }; |
@@ -101,7 +117,7 @@ | |||
101 | leds { | 117 | leds { |
102 | compatible = "gpio-leds"; | 118 | compatible = "gpio-leds"; |
103 | status { | 119 | status { |
104 | gpios = <&gpx1 3 0 0x10000 2>; | 120 | gpios = <&gpx1 3 1>; |
105 | linux,default-trigger = "heartbeat"; | 121 | linux,default-trigger = "heartbeat"; |
106 | }; | 122 | }; |
107 | }; | 123 | }; |
diff --git a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi index b12cf272ad0d..55a2efb763d1 100644 --- a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi +++ b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi | |||
@@ -16,6 +16,134 @@ | |||
16 | 16 | ||
17 | / { | 17 | / { |
18 | pinctrl@11400000 { | 18 | pinctrl@11400000 { |
19 | gpa0: gpa0 { | ||
20 | gpio-controller; | ||
21 | #gpio-cells = <2>; | ||
22 | |||
23 | interrupt-controller; | ||
24 | #interrupt-cells = <2>; | ||
25 | }; | ||
26 | |||
27 | gpa1: gpa1 { | ||
28 | gpio-controller; | ||
29 | #gpio-cells = <2>; | ||
30 | |||
31 | interrupt-controller; | ||
32 | #interrupt-cells = <2>; | ||
33 | }; | ||
34 | |||
35 | gpb: gpb { | ||
36 | gpio-controller; | ||
37 | #gpio-cells = <2>; | ||
38 | |||
39 | interrupt-controller; | ||
40 | #interrupt-cells = <2>; | ||
41 | }; | ||
42 | |||
43 | gpc0: gpc0 { | ||
44 | gpio-controller; | ||
45 | #gpio-cells = <2>; | ||
46 | |||
47 | interrupt-controller; | ||
48 | #interrupt-cells = <2>; | ||
49 | }; | ||
50 | |||
51 | gpc1: gpc1 { | ||
52 | gpio-controller; | ||
53 | #gpio-cells = <2>; | ||
54 | |||
55 | interrupt-controller; | ||
56 | #interrupt-cells = <2>; | ||
57 | }; | ||
58 | |||
59 | gpd0: gpd0 { | ||
60 | gpio-controller; | ||
61 | #gpio-cells = <2>; | ||
62 | |||
63 | interrupt-controller; | ||
64 | #interrupt-cells = <2>; | ||
65 | }; | ||
66 | |||
67 | gpd1: gpd1 { | ||
68 | gpio-controller; | ||
69 | #gpio-cells = <2>; | ||
70 | |||
71 | interrupt-controller; | ||
72 | #interrupt-cells = <2>; | ||
73 | }; | ||
74 | |||
75 | gpe0: gpe0 { | ||
76 | gpio-controller; | ||
77 | #gpio-cells = <2>; | ||
78 | |||
79 | interrupt-controller; | ||
80 | #interrupt-cells = <2>; | ||
81 | }; | ||
82 | |||
83 | gpe1: gpe1 { | ||
84 | gpio-controller; | ||
85 | #gpio-cells = <2>; | ||
86 | |||
87 | interrupt-controller; | ||
88 | #interrupt-cells = <2>; | ||
89 | }; | ||
90 | |||
91 | gpe2: gpe2 { | ||
92 | gpio-controller; | ||
93 | #gpio-cells = <2>; | ||
94 | |||
95 | interrupt-controller; | ||
96 | #interrupt-cells = <2>; | ||
97 | }; | ||
98 | |||
99 | gpe3: gpe3 { | ||
100 | gpio-controller; | ||
101 | #gpio-cells = <2>; | ||
102 | |||
103 | interrupt-controller; | ||
104 | #interrupt-cells = <2>; | ||
105 | }; | ||
106 | |||
107 | gpe4: gpe4 { | ||
108 | gpio-controller; | ||
109 | #gpio-cells = <2>; | ||
110 | |||
111 | interrupt-controller; | ||
112 | #interrupt-cells = <2>; | ||
113 | }; | ||
114 | |||
115 | gpf0: gpf0 { | ||
116 | gpio-controller; | ||
117 | #gpio-cells = <2>; | ||
118 | |||
119 | interrupt-controller; | ||
120 | #interrupt-cells = <2>; | ||
121 | }; | ||
122 | |||
123 | gpf1: gpf1 { | ||
124 | gpio-controller; | ||
125 | #gpio-cells = <2>; | ||
126 | |||
127 | interrupt-controller; | ||
128 | #interrupt-cells = <2>; | ||
129 | }; | ||
130 | |||
131 | gpf2: gpf2 { | ||
132 | gpio-controller; | ||
133 | #gpio-cells = <2>; | ||
134 | |||
135 | interrupt-controller; | ||
136 | #interrupt-cells = <2>; | ||
137 | }; | ||
138 | |||
139 | gpf3: gpf3 { | ||
140 | gpio-controller; | ||
141 | #gpio-cells = <2>; | ||
142 | |||
143 | interrupt-controller; | ||
144 | #interrupt-cells = <2>; | ||
145 | }; | ||
146 | |||
19 | uart0_data: uart0-data { | 147 | uart0_data: uart0-data { |
20 | samsung,pins = "gpa0-0", "gpa0-1"; | 148 | samsung,pins = "gpa0-0", "gpa0-1"; |
21 | samsung,pin-function = <0x2>; | 149 | samsung,pin-function = <0x2>; |
@@ -205,200 +333,345 @@ | |||
205 | }; | 333 | }; |
206 | 334 | ||
207 | pinctrl@11000000 { | 335 | pinctrl@11000000 { |
336 | gpj0: gpj0 { | ||
337 | gpio-controller; | ||
338 | #gpio-cells = <2>; | ||
339 | |||
340 | interrupt-controller; | ||
341 | #interrupt-cells = <2>; | ||
342 | }; | ||
343 | |||
344 | gpj1: gpj1 { | ||
345 | gpio-controller; | ||
346 | #gpio-cells = <2>; | ||
347 | |||
348 | interrupt-controller; | ||
349 | #interrupt-cells = <2>; | ||
350 | }; | ||
351 | |||
352 | gpk0: gpk0 { | ||
353 | gpio-controller; | ||
354 | #gpio-cells = <2>; | ||
355 | |||
356 | interrupt-controller; | ||
357 | #interrupt-cells = <2>; | ||
358 | }; | ||
359 | |||
360 | gpk1: gpk1 { | ||
361 | gpio-controller; | ||
362 | #gpio-cells = <2>; | ||
363 | |||
364 | interrupt-controller; | ||
365 | #interrupt-cells = <2>; | ||
366 | }; | ||
367 | |||
368 | gpk2: gpk2 { | ||
369 | gpio-controller; | ||
370 | #gpio-cells = <2>; | ||
371 | |||
372 | interrupt-controller; | ||
373 | #interrupt-cells = <2>; | ||
374 | }; | ||
375 | |||
376 | gpk3: gpk3 { | ||
377 | gpio-controller; | ||
378 | #gpio-cells = <2>; | ||
379 | |||
380 | interrupt-controller; | ||
381 | #interrupt-cells = <2>; | ||
382 | }; | ||
383 | |||
384 | gpl0: gpl0 { | ||
385 | gpio-controller; | ||
386 | #gpio-cells = <2>; | ||
387 | |||
388 | interrupt-controller; | ||
389 | #interrupt-cells = <2>; | ||
390 | }; | ||
391 | |||
392 | gpl1: gpl1 { | ||
393 | gpio-controller; | ||
394 | #gpio-cells = <2>; | ||
395 | |||
396 | interrupt-controller; | ||
397 | #interrupt-cells = <2>; | ||
398 | }; | ||
399 | |||
400 | gpl2: gpl2 { | ||
401 | gpio-controller; | ||
402 | #gpio-cells = <2>; | ||
403 | |||
404 | interrupt-controller; | ||
405 | #interrupt-cells = <2>; | ||
406 | }; | ||
407 | |||
408 | gpy0: gpy0 { | ||
409 | gpio-controller; | ||
410 | #gpio-cells = <2>; | ||
411 | }; | ||
412 | |||
413 | gpy1: gpy1 { | ||
414 | gpio-controller; | ||
415 | #gpio-cells = <2>; | ||
416 | }; | ||
417 | |||
418 | gpy2: gpy2 { | ||
419 | gpio-controller; | ||
420 | #gpio-cells = <2>; | ||
421 | }; | ||
422 | |||
423 | gpy3: gpy3 { | ||
424 | gpio-controller; | ||
425 | #gpio-cells = <2>; | ||
426 | }; | ||
427 | |||
428 | gpy4: gpy4 { | ||
429 | gpio-controller; | ||
430 | #gpio-cells = <2>; | ||
431 | }; | ||
432 | |||
433 | gpy5: gpy5 { | ||
434 | gpio-controller; | ||
435 | #gpio-cells = <2>; | ||
436 | }; | ||
437 | |||
438 | gpy6: gpy6 { | ||
439 | gpio-controller; | ||
440 | #gpio-cells = <2>; | ||
441 | }; | ||
442 | |||
443 | gpx0: gpx0 { | ||
444 | gpio-controller; | ||
445 | #gpio-cells = <2>; | ||
446 | |||
447 | interrupt-controller; | ||
448 | interrupt-parent = <&gic>; | ||
449 | interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>, | ||
450 | <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>; | ||
451 | #interrupt-cells = <2>; | ||
452 | }; | ||
453 | |||
454 | gpx1: gpx1 { | ||
455 | gpio-controller; | ||
456 | #gpio-cells = <2>; | ||
457 | |||
458 | interrupt-controller; | ||
459 | interrupt-parent = <&gic>; | ||
460 | interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, | ||
461 | <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; | ||
462 | #interrupt-cells = <2>; | ||
463 | }; | ||
464 | |||
465 | gpx2: gpx2 { | ||
466 | gpio-controller; | ||
467 | #gpio-cells = <2>; | ||
468 | |||
469 | interrupt-controller; | ||
470 | #interrupt-cells = <2>; | ||
471 | }; | ||
472 | |||
473 | gpx3: gpx3 { | ||
474 | gpio-controller; | ||
475 | #gpio-cells = <2>; | ||
476 | |||
477 | interrupt-controller; | ||
478 | #interrupt-cells = <2>; | ||
479 | }; | ||
480 | |||
208 | sd0_clk: sd0-clk { | 481 | sd0_clk: sd0-clk { |
209 | samsung,pins = "gpk0-0"; | 482 | samsung,pins = "gpk0-0"; |
210 | samsung,pin-function = <2>; | 483 | samsung,pin-function = <2>; |
211 | samsung,pin-pud = <0>; | 484 | samsung,pin-pud = <0>; |
212 | samsung,pin-drv = <0>; | 485 | samsung,pin-drv = <3>; |
213 | }; | 486 | }; |
214 | 487 | ||
215 | sd0_cmd: sd0-cmd { | 488 | sd0_cmd: sd0-cmd { |
216 | samsung,pins = "gpk0-1"; | 489 | samsung,pins = "gpk0-1"; |
217 | samsung,pin-function = <2>; | 490 | samsung,pin-function = <2>; |
218 | samsung,pin-pud = <0>; | 491 | samsung,pin-pud = <0>; |
219 | samsung,pin-drv = <0>; | 492 | samsung,pin-drv = <3>; |
220 | }; | 493 | }; |
221 | 494 | ||
222 | sd0_cd: sd0-cd { | 495 | sd0_cd: sd0-cd { |
223 | samsung,pins = "gpk0-2"; | 496 | samsung,pins = "gpk0-2"; |
224 | samsung,pin-function = <2>; | 497 | samsung,pin-function = <2>; |
225 | samsung,pin-pud = <3>; | 498 | samsung,pin-pud = <3>; |
226 | samsung,pin-drv = <0>; | 499 | samsung,pin-drv = <3>; |
227 | }; | 500 | }; |
228 | 501 | ||
229 | sd0_bus1: sd0-bus-width1 { | 502 | sd0_bus1: sd0-bus-width1 { |
230 | samsung,pins = "gpk0-3"; | 503 | samsung,pins = "gpk0-3"; |
231 | samsung,pin-function = <2>; | 504 | samsung,pin-function = <2>; |
232 | samsung,pin-pud = <3>; | 505 | samsung,pin-pud = <3>; |
233 | samsung,pin-drv = <0>; | 506 | samsung,pin-drv = <3>; |
234 | }; | 507 | }; |
235 | 508 | ||
236 | sd0_bus4: sd0-bus-width4 { | 509 | sd0_bus4: sd0-bus-width4 { |
237 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; | 510 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; |
238 | samsung,pin-function = <2>; | 511 | samsung,pin-function = <2>; |
239 | samsung,pin-pud = <3>; | 512 | samsung,pin-pud = <3>; |
240 | samsung,pin-drv = <0>; | 513 | samsung,pin-drv = <3>; |
241 | }; | 514 | }; |
242 | 515 | ||
243 | sd0_bus8: sd0-bus-width8 { | 516 | sd0_bus8: sd0-bus-width8 { |
244 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | 517 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; |
245 | samsung,pin-function = <3>; | 518 | samsung,pin-function = <3>; |
246 | samsung,pin-pud = <3>; | 519 | samsung,pin-pud = <3>; |
247 | samsung,pin-drv = <0>; | 520 | samsung,pin-drv = <3>; |
248 | }; | 521 | }; |
249 | 522 | ||
250 | sd4_clk: sd4-clk { | 523 | sd4_clk: sd4-clk { |
251 | samsung,pins = "gpk0-0"; | 524 | samsung,pins = "gpk0-0"; |
252 | samsung,pin-function = <3>; | 525 | samsung,pin-function = <3>; |
253 | samsung,pin-pud = <0>; | 526 | samsung,pin-pud = <0>; |
254 | samsung,pin-drv = <0>; | 527 | samsung,pin-drv = <3>; |
255 | }; | 528 | }; |
256 | 529 | ||
257 | sd4_cmd: sd4-cmd { | 530 | sd4_cmd: sd4-cmd { |
258 | samsung,pins = "gpk0-1"; | 531 | samsung,pins = "gpk0-1"; |
259 | samsung,pin-function = <3>; | 532 | samsung,pin-function = <3>; |
260 | samsung,pin-pud = <0>; | 533 | samsung,pin-pud = <0>; |
261 | samsung,pin-drv = <0>; | 534 | samsung,pin-drv = <3>; |
262 | }; | 535 | }; |
263 | 536 | ||
264 | sd4_cd: sd4-cd { | 537 | sd4_cd: sd4-cd { |
265 | samsung,pins = "gpk0-2"; | 538 | samsung,pins = "gpk0-2"; |
266 | samsung,pin-function = <3>; | 539 | samsung,pin-function = <3>; |
267 | samsung,pin-pud = <3>; | 540 | samsung,pin-pud = <3>; |
268 | samsung,pin-drv = <0>; | 541 | samsung,pin-drv = <3>; |
269 | }; | 542 | }; |
270 | 543 | ||
271 | sd4_bus1: sd4-bus-width1 { | 544 | sd4_bus1: sd4-bus-width1 { |
272 | samsung,pins = "gpk0-3"; | 545 | samsung,pins = "gpk0-3"; |
273 | samsung,pin-function = <3>; | 546 | samsung,pin-function = <3>; |
274 | samsung,pin-pud = <3>; | 547 | samsung,pin-pud = <3>; |
275 | samsung,pin-drv = <0>; | 548 | samsung,pin-drv = <3>; |
276 | }; | 549 | }; |
277 | 550 | ||
278 | sd4_bus4: sd4-bus-width4 { | 551 | sd4_bus4: sd4-bus-width4 { |
279 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; | 552 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; |
280 | samsung,pin-function = <3>; | 553 | samsung,pin-function = <3>; |
281 | samsung,pin-pud = <3>; | 554 | samsung,pin-pud = <3>; |
282 | samsung,pin-drv = <0>; | 555 | samsung,pin-drv = <3>; |
283 | }; | 556 | }; |
284 | 557 | ||
285 | sd4_bus8: sd4-bus-width8 { | 558 | sd4_bus8: sd4-bus-width8 { |
286 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | 559 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; |
287 | samsung,pin-function = <3>; | 560 | samsung,pin-function = <3>; |
288 | samsung,pin-pud = <4>; | 561 | samsung,pin-pud = <4>; |
289 | samsung,pin-drv = <0>; | 562 | samsung,pin-drv = <3>; |
290 | }; | 563 | }; |
291 | 564 | ||
292 | sd1_clk: sd1-clk { | 565 | sd1_clk: sd1-clk { |
293 | samsung,pins = "gpk1-0"; | 566 | samsung,pins = "gpk1-0"; |
294 | samsung,pin-function = <2>; | 567 | samsung,pin-function = <2>; |
295 | samsung,pin-pud = <0>; | 568 | samsung,pin-pud = <0>; |
296 | samsung,pin-drv = <0>; | 569 | samsung,pin-drv = <3>; |
297 | }; | 570 | }; |
298 | 571 | ||
299 | sd1_cmd: sd1-cmd { | 572 | sd1_cmd: sd1-cmd { |
300 | samsung,pins = "gpk1-1"; | 573 | samsung,pins = "gpk1-1"; |
301 | samsung,pin-function = <2>; | 574 | samsung,pin-function = <2>; |
302 | samsung,pin-pud = <0>; | 575 | samsung,pin-pud = <0>; |
303 | samsung,pin-drv = <0>; | 576 | samsung,pin-drv = <3>; |
304 | }; | 577 | }; |
305 | 578 | ||
306 | sd1_cd: sd1-cd { | 579 | sd1_cd: sd1-cd { |
307 | samsung,pins = "gpk1-2"; | 580 | samsung,pins = "gpk1-2"; |
308 | samsung,pin-function = <2>; | 581 | samsung,pin-function = <2>; |
309 | samsung,pin-pud = <3>; | 582 | samsung,pin-pud = <3>; |
310 | samsung,pin-drv = <0>; | 583 | samsung,pin-drv = <3>; |
311 | }; | 584 | }; |
312 | 585 | ||
313 | sd1_bus1: sd1-bus-width1 { | 586 | sd1_bus1: sd1-bus-width1 { |
314 | samsung,pins = "gpk1-3"; | 587 | samsung,pins = "gpk1-3"; |
315 | samsung,pin-function = <2>; | 588 | samsung,pin-function = <2>; |
316 | samsung,pin-pud = <3>; | 589 | samsung,pin-pud = <3>; |
317 | samsung,pin-drv = <0>; | 590 | samsung,pin-drv = <3>; |
318 | }; | 591 | }; |
319 | 592 | ||
320 | sd1_bus4: sd1-bus-width4 { | 593 | sd1_bus4: sd1-bus-width4 { |
321 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | 594 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; |
322 | samsung,pin-function = <2>; | 595 | samsung,pin-function = <2>; |
323 | samsung,pin-pud = <3>; | 596 | samsung,pin-pud = <3>; |
324 | samsung,pin-drv = <0>; | 597 | samsung,pin-drv = <3>; |
325 | }; | 598 | }; |
326 | 599 | ||
327 | sd2_clk: sd2-clk { | 600 | sd2_clk: sd2-clk { |
328 | samsung,pins = "gpk2-0"; | 601 | samsung,pins = "gpk2-0"; |
329 | samsung,pin-function = <2>; | 602 | samsung,pin-function = <2>; |
330 | samsung,pin-pud = <0>; | 603 | samsung,pin-pud = <0>; |
331 | samsung,pin-drv = <0>; | 604 | samsung,pin-drv = <3>; |
332 | }; | 605 | }; |
333 | 606 | ||
334 | sd2_cmd: sd2-cmd { | 607 | sd2_cmd: sd2-cmd { |
335 | samsung,pins = "gpk2-1"; | 608 | samsung,pins = "gpk2-1"; |
336 | samsung,pin-function = <2>; | 609 | samsung,pin-function = <2>; |
337 | samsung,pin-pud = <0>; | 610 | samsung,pin-pud = <0>; |
338 | samsung,pin-drv = <0>; | 611 | samsung,pin-drv = <3>; |
339 | }; | 612 | }; |
340 | 613 | ||
341 | sd2_cd: sd2-cd { | 614 | sd2_cd: sd2-cd { |
342 | samsung,pins = "gpk2-2"; | 615 | samsung,pins = "gpk2-2"; |
343 | samsung,pin-function = <2>; | 616 | samsung,pin-function = <2>; |
344 | samsung,pin-pud = <3>; | 617 | samsung,pin-pud = <3>; |
345 | samsung,pin-drv = <0>; | 618 | samsung,pin-drv = <3>; |
346 | }; | 619 | }; |
347 | 620 | ||
348 | sd2_bus1: sd2-bus-width1 { | 621 | sd2_bus1: sd2-bus-width1 { |
349 | samsung,pins = "gpk2-3"; | 622 | samsung,pins = "gpk2-3"; |
350 | samsung,pin-function = <2>; | 623 | samsung,pin-function = <2>; |
351 | samsung,pin-pud = <3>; | 624 | samsung,pin-pud = <3>; |
352 | samsung,pin-drv = <0>; | 625 | samsung,pin-drv = <3>; |
353 | }; | 626 | }; |
354 | 627 | ||
355 | sd2_bus4: sd2-bus-width4 { | 628 | sd2_bus4: sd2-bus-width4 { |
356 | samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6"; | 629 | samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6"; |
357 | samsung,pin-function = <2>; | 630 | samsung,pin-function = <2>; |
358 | samsung,pin-pud = <3>; | 631 | samsung,pin-pud = <3>; |
359 | samsung,pin-drv = <0>; | 632 | samsung,pin-drv = <3>; |
360 | }; | 633 | }; |
361 | 634 | ||
362 | sd2_bus8: sd2-bus-width8 { | 635 | sd2_bus8: sd2-bus-width8 { |
363 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; | 636 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; |
364 | samsung,pin-function = <3>; | 637 | samsung,pin-function = <3>; |
365 | samsung,pin-pud = <3>; | 638 | samsung,pin-pud = <3>; |
366 | samsung,pin-drv = <0>; | 639 | samsung,pin-drv = <3>; |
367 | }; | 640 | }; |
368 | 641 | ||
369 | sd3_clk: sd3-clk { | 642 | sd3_clk: sd3-clk { |
370 | samsung,pins = "gpk3-0"; | 643 | samsung,pins = "gpk3-0"; |
371 | samsung,pin-function = <2>; | 644 | samsung,pin-function = <2>; |
372 | samsung,pin-pud = <0>; | 645 | samsung,pin-pud = <0>; |
373 | samsung,pin-drv = <0>; | 646 | samsung,pin-drv = <3>; |
374 | }; | 647 | }; |
375 | 648 | ||
376 | sd3_cmd: sd3-cmd { | 649 | sd3_cmd: sd3-cmd { |
377 | samsung,pins = "gpk3-1"; | 650 | samsung,pins = "gpk3-1"; |
378 | samsung,pin-function = <2>; | 651 | samsung,pin-function = <2>; |
379 | samsung,pin-pud = <0>; | 652 | samsung,pin-pud = <0>; |
380 | samsung,pin-drv = <0>; | 653 | samsung,pin-drv = <3>; |
381 | }; | 654 | }; |
382 | 655 | ||
383 | sd3_cd: sd3-cd { | 656 | sd3_cd: sd3-cd { |
384 | samsung,pins = "gpk3-2"; | 657 | samsung,pins = "gpk3-2"; |
385 | samsung,pin-function = <2>; | 658 | samsung,pin-function = <2>; |
386 | samsung,pin-pud = <3>; | 659 | samsung,pin-pud = <3>; |
387 | samsung,pin-drv = <0>; | 660 | samsung,pin-drv = <3>; |
388 | }; | 661 | }; |
389 | 662 | ||
390 | sd3_bus1: sd3-bus-width1 { | 663 | sd3_bus1: sd3-bus-width1 { |
391 | samsung,pins = "gpk3-3"; | 664 | samsung,pins = "gpk3-3"; |
392 | samsung,pin-function = <2>; | 665 | samsung,pin-function = <2>; |
393 | samsung,pin-pud = <3>; | 666 | samsung,pin-pud = <3>; |
394 | samsung,pin-drv = <0>; | 667 | samsung,pin-drv = <3>; |
395 | }; | 668 | }; |
396 | 669 | ||
397 | sd3_bus4: sd3-bus-width4 { | 670 | sd3_bus4: sd3-bus-width4 { |
398 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; | 671 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; |
399 | samsung,pin-function = <2>; | 672 | samsung,pin-function = <2>; |
400 | samsung,pin-pud = <3>; | 673 | samsung,pin-pud = <3>; |
401 | samsung,pin-drv = <0>; | 674 | samsung,pin-drv = <3>; |
402 | }; | 675 | }; |
403 | 676 | ||
404 | eint0: ext-int0 { | 677 | eint0: ext-int0 { |
@@ -438,6 +711,11 @@ | |||
438 | }; | 711 | }; |
439 | 712 | ||
440 | pinctrl@03860000 { | 713 | pinctrl@03860000 { |
714 | gpz: gpz { | ||
715 | gpio-controller; | ||
716 | #gpio-cells = <2>; | ||
717 | }; | ||
718 | |||
441 | i2s0_bus: i2s0-bus { | 719 | i2s0_bus: i2s0-bus { |
442 | samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3", | 720 | samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3", |
443 | "gpz-4", "gpz-5", "gpz-6"; | 721 | "gpz-4", "gpz-5", "gpz-6"; |
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 63610c3ba3af..9b23a8255e39 100644 --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts | |||
@@ -43,6 +43,22 @@ | |||
43 | status = "okay"; | 43 | status = "okay"; |
44 | }; | 44 | }; |
45 | 45 | ||
46 | serial@13800000 { | ||
47 | status = "okay"; | ||
48 | }; | ||
49 | |||
50 | serial@13810000 { | ||
51 | status = "okay"; | ||
52 | }; | ||
53 | |||
54 | serial@13820000 { | ||
55 | status = "okay"; | ||
56 | }; | ||
57 | |||
58 | serial@13830000 { | ||
59 | status = "okay"; | ||
60 | }; | ||
61 | |||
46 | keypad@100A0000 { | 62 | keypad@100A0000 { |
47 | samsung,keypad-num-rows = <2>; | 63 | samsung,keypad-num-rows = <2>; |
48 | samsung,keypad-num-columns = <8>; | 64 | samsung,keypad-num-columns = <8>; |
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index a21511c14071..c346b64dff55 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts | |||
@@ -35,24 +35,15 @@ | |||
35 | regulator-name = "VMEM_VDD_2.8V"; | 35 | regulator-name = "VMEM_VDD_2.8V"; |
36 | regulator-min-microvolt = <2800000>; | 36 | regulator-min-microvolt = <2800000>; |
37 | regulator-max-microvolt = <2800000>; | 37 | regulator-max-microvolt = <2800000>; |
38 | gpio = <&gpk0 2 1 0 0>; | 38 | gpio = <&gpk0 2 0>; |
39 | enable-active-high; | 39 | enable-active-high; |
40 | }; | 40 | }; |
41 | 41 | ||
42 | sdhci_emmc: sdhci@12510000 { | 42 | sdhci_emmc: sdhci@12510000 { |
43 | bus-width = <8>; | 43 | bus-width = <8>; |
44 | non-removable; | 44 | non-removable; |
45 | broken-voltage; | 45 | pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>; |
46 | gpios = <&gpk0 0 2 0 3>, | 46 | pinctrl-names = "default"; |
47 | <&gpk0 1 2 0 3>, | ||
48 | <&gpk0 3 2 2 3>, | ||
49 | <&gpk0 4 2 2 3>, | ||
50 | <&gpk0 5 2 2 3>, | ||
51 | <&gpk0 6 2 2 3>, | ||
52 | <&gpk1 3 3 3 3>, | ||
53 | <&gpk1 4 3 3 3>, | ||
54 | <&gpk1 5 3 3 3>, | ||
55 | <&gpk1 6 3 3 3>; | ||
56 | vmmc-supply = <&vemmc_reg>; | 47 | vmmc-supply = <&vemmc_reg>; |
57 | status = "okay"; | 48 | status = "okay"; |
58 | }; | 49 | }; |
@@ -73,12 +64,74 @@ | |||
73 | status = "okay"; | 64 | status = "okay"; |
74 | }; | 65 | }; |
75 | 66 | ||
67 | gpio-keys { | ||
68 | compatible = "gpio-keys"; | ||
69 | |||
70 | vol-down-key { | ||
71 | gpios = <&gpx2 1 1>; | ||
72 | linux,code = <114>; | ||
73 | label = "volume down"; | ||
74 | debounce-interval = <10>; | ||
75 | }; | ||
76 | |||
77 | vol-up-key { | ||
78 | gpios = <&gpx2 0 1>; | ||
79 | linux,code = <115>; | ||
80 | label = "volume up"; | ||
81 | debounce-interval = <10>; | ||
82 | }; | ||
83 | |||
84 | power-key { | ||
85 | gpios = <&gpx2 7 1>; | ||
86 | linux,code = <116>; | ||
87 | label = "power"; | ||
88 | debounce-interval = <10>; | ||
89 | gpio-key,wakeup; | ||
90 | }; | ||
91 | |||
92 | ok-key { | ||
93 | gpios = <&gpx3 5 1>; | ||
94 | linux,code = <352>; | ||
95 | label = "ok"; | ||
96 | debounce-interval = <10>; | ||
97 | }; | ||
98 | }; | ||
99 | |||
100 | tsp_reg: voltage-regulator { | ||
101 | compatible = "regulator-fixed"; | ||
102 | regulator-name = "TSP_FIXED_VOLTAGES"; | ||
103 | regulator-min-microvolt = <2800000>; | ||
104 | regulator-max-microvolt = <2800000>; | ||
105 | gpio = <&gpl0 3 0>; | ||
106 | enable-active-high; | ||
107 | }; | ||
108 | |||
109 | i2c@13890000 { | ||
110 | samsung,i2c-sda-delay = <100>; | ||
111 | samsung,i2c-slave-addr = <0x10>; | ||
112 | samsung,i2c-max-bus-freq = <400000>; | ||
113 | pinctrl-0 = <&i2c3_bus>; | ||
114 | pinctrl-names = "default"; | ||
115 | status = "okay"; | ||
116 | |||
117 | mms114-touchscreen@48 { | ||
118 | compatible = "melfas,mms114"; | ||
119 | reg = <0x48>; | ||
120 | interrupt-parent = <&gpx0>; | ||
121 | interrupts = <4 2>; | ||
122 | x-size = <720>; | ||
123 | y-size = <1280>; | ||
124 | avdd-supply = <&tsp_reg>; | ||
125 | vdd-supply = <&tsp_reg>; | ||
126 | }; | ||
127 | }; | ||
128 | |||
76 | i2c@138B0000 { | 129 | i2c@138B0000 { |
77 | samsung,i2c-sda-delay = <100>; | 130 | samsung,i2c-sda-delay = <100>; |
78 | samsung,i2c-slave-addr = <0x10>; | 131 | samsung,i2c-slave-addr = <0x10>; |
79 | samsung,i2c-max-bus-freq = <100000>; | 132 | samsung,i2c-max-bus-freq = <100000>; |
80 | gpios = <&gpb 6 3 3 0>, | 133 | pinctrl-0 = <&i2c5_bus>; |
81 | <&gpb 7 3 3 0>; | 134 | pinctrl-names = "default"; |
82 | status = "okay"; | 135 | status = "okay"; |
83 | 136 | ||
84 | max8997_pmic@66 { | 137 | max8997_pmic@66 { |
@@ -93,9 +146,9 @@ | |||
93 | max8997,pmic-ignore-gpiodvs-side-effect; | 146 | max8997,pmic-ignore-gpiodvs-side-effect; |
94 | max8997,pmic-buck125-default-dvs-idx = <0>; | 147 | max8997,pmic-buck125-default-dvs-idx = <0>; |
95 | 148 | ||
96 | max8997,pmic-buck125-dvs-gpios = <&gpx0 5 1 0 0>, | 149 | max8997,pmic-buck125-dvs-gpios = <&gpx0 5 0>, |
97 | <&gpx0 6 1 0 0>, | 150 | <&gpx0 6 0>, |
98 | <&gpl0 0 1 0 0>; | 151 | <&gpl0 0 0>; |
99 | 152 | ||
100 | max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>, | 153 | max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>, |
101 | <1250000>, <1200000>, | 154 | <1250000>, <1200000>, |
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index 214c557eda7f..e31bfc4a6f09 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi | |||
@@ -31,6 +31,11 @@ | |||
31 | pinctrl2 = &pinctrl_2; | 31 | pinctrl2 = &pinctrl_2; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | pd_lcd1: lcd1-power-domain@10023CA0 { | ||
35 | compatible = "samsung,exynos4210-pd"; | ||
36 | reg = <0x10023CA0 0x20>; | ||
37 | }; | ||
38 | |||
34 | gic:interrupt-controller@10490000 { | 39 | gic:interrupt-controller@10490000 { |
35 | cpu-offset = <0x8000>; | 40 | cpu-offset = <0x8000>; |
36 | }; | 41 | }; |
@@ -46,27 +51,17 @@ | |||
46 | compatible = "samsung,pinctrl-exynos4210"; | 51 | compatible = "samsung,pinctrl-exynos4210"; |
47 | reg = <0x11400000 0x1000>; | 52 | reg = <0x11400000 0x1000>; |
48 | interrupts = <0 47 0>; | 53 | interrupts = <0 47 0>; |
49 | interrupt-controller; | ||
50 | #interrupt-cells = <2>; | ||
51 | }; | 54 | }; |
52 | 55 | ||
53 | pinctrl_1: pinctrl@11000000 { | 56 | pinctrl_1: pinctrl@11000000 { |
54 | compatible = "samsung,pinctrl-exynos4210"; | 57 | compatible = "samsung,pinctrl-exynos4210"; |
55 | reg = <0x11000000 0x1000>; | 58 | reg = <0x11000000 0x1000>; |
56 | interrupts = <0 46 0>; | 59 | interrupts = <0 46 0>; |
57 | interrupt-controller; | ||
58 | #interrupt-cells = <2>; | ||
59 | 60 | ||
60 | wakup_eint: wakeup-interrupt-controller { | 61 | wakup_eint: wakeup-interrupt-controller { |
61 | compatible = "samsung,exynos4210-wakeup-eint"; | 62 | compatible = "samsung,exynos4210-wakeup-eint"; |
62 | interrupt-parent = <&gic>; | 63 | interrupt-parent = <&gic>; |
63 | interrupt-controller; | 64 | interrupts = <0 32 0>; |
64 | #interrupt-cells = <2>; | ||
65 | interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>, | ||
66 | <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>, | ||
67 | <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, | ||
68 | <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>, | ||
69 | <0 32 0>; | ||
70 | }; | 65 | }; |
71 | }; | 66 | }; |
72 | 67 | ||
@@ -75,232 +70,10 @@ | |||
75 | reg = <0x03860000 0x1000>; | 70 | reg = <0x03860000 0x1000>; |
76 | }; | 71 | }; |
77 | 72 | ||
78 | gpio-controllers { | 73 | tmu@100C0000 { |
79 | #address-cells = <1>; | 74 | compatible = "samsung,exynos4210-tmu"; |
80 | #size-cells = <1>; | 75 | interrupt-parent = <&combiner>; |
81 | gpio-controller; | 76 | reg = <0x100C0000 0x100>; |
82 | ranges; | 77 | interrupts = <2 4>; |
83 | |||
84 | gpa0: gpio-controller@11400000 { | ||
85 | compatible = "samsung,exynos4-gpio"; | ||
86 | reg = <0x11400000 0x20>; | ||
87 | #gpio-cells = <4>; | ||
88 | }; | ||
89 | |||
90 | gpa1: gpio-controller@11400020 { | ||
91 | compatible = "samsung,exynos4-gpio"; | ||
92 | reg = <0x11400020 0x20>; | ||
93 | #gpio-cells = <4>; | ||
94 | }; | ||
95 | |||
96 | gpb: gpio-controller@11400040 { | ||
97 | compatible = "samsung,exynos4-gpio"; | ||
98 | reg = <0x11400040 0x20>; | ||
99 | #gpio-cells = <4>; | ||
100 | }; | ||
101 | |||
102 | gpc0: gpio-controller@11400060 { | ||
103 | compatible = "samsung,exynos4-gpio"; | ||
104 | reg = <0x11400060 0x20>; | ||
105 | #gpio-cells = <4>; | ||
106 | }; | ||
107 | |||
108 | gpc1: gpio-controller@11400080 { | ||
109 | compatible = "samsung,exynos4-gpio"; | ||
110 | reg = <0x11400080 0x20>; | ||
111 | #gpio-cells = <4>; | ||
112 | }; | ||
113 | |||
114 | gpd0: gpio-controller@114000A0 { | ||
115 | compatible = "samsung,exynos4-gpio"; | ||
116 | reg = <0x114000A0 0x20>; | ||
117 | #gpio-cells = <4>; | ||
118 | }; | ||
119 | |||
120 | gpd1: gpio-controller@114000C0 { | ||
121 | compatible = "samsung,exynos4-gpio"; | ||
122 | reg = <0x114000C0 0x20>; | ||
123 | #gpio-cells = <4>; | ||
124 | }; | ||
125 | |||
126 | gpe0: gpio-controller@114000E0 { | ||
127 | compatible = "samsung,exynos4-gpio"; | ||
128 | reg = <0x114000E0 0x20>; | ||
129 | #gpio-cells = <4>; | ||
130 | }; | ||
131 | |||
132 | gpe1: gpio-controller@11400100 { | ||
133 | compatible = "samsung,exynos4-gpio"; | ||
134 | reg = <0x11400100 0x20>; | ||
135 | #gpio-cells = <4>; | ||
136 | }; | ||
137 | |||
138 | gpe2: gpio-controller@11400120 { | ||
139 | compatible = "samsung,exynos4-gpio"; | ||
140 | reg = <0x11400120 0x20>; | ||
141 | #gpio-cells = <4>; | ||
142 | }; | ||
143 | |||
144 | gpe3: gpio-controller@11400140 { | ||
145 | compatible = "samsung,exynos4-gpio"; | ||
146 | reg = <0x11400140 0x20>; | ||
147 | #gpio-cells = <4>; | ||
148 | }; | ||
149 | |||
150 | gpe4: gpio-controller@11400160 { | ||
151 | compatible = "samsung,exynos4-gpio"; | ||
152 | reg = <0x11400160 0x20>; | ||
153 | #gpio-cells = <4>; | ||
154 | }; | ||
155 | |||
156 | gpf0: gpio-controller@11400180 { | ||
157 | compatible = "samsung,exynos4-gpio"; | ||
158 | reg = <0x11400180 0x20>; | ||
159 | #gpio-cells = <4>; | ||
160 | }; | ||
161 | |||
162 | gpf1: gpio-controller@114001A0 { | ||
163 | compatible = "samsung,exynos4-gpio"; | ||
164 | reg = <0x114001A0 0x20>; | ||
165 | #gpio-cells = <4>; | ||
166 | }; | ||
167 | |||
168 | gpf2: gpio-controller@114001C0 { | ||
169 | compatible = "samsung,exynos4-gpio"; | ||
170 | reg = <0x114001C0 0x20>; | ||
171 | #gpio-cells = <4>; | ||
172 | }; | ||
173 | |||
174 | gpf3: gpio-controller@114001E0 { | ||
175 | compatible = "samsung,exynos4-gpio"; | ||
176 | reg = <0x114001E0 0x20>; | ||
177 | #gpio-cells = <4>; | ||
178 | }; | ||
179 | |||
180 | gpj0: gpio-controller@11000000 { | ||
181 | compatible = "samsung,exynos4-gpio"; | ||
182 | reg = <0x11000000 0x20>; | ||
183 | #gpio-cells = <4>; | ||
184 | }; | ||
185 | |||
186 | gpj1: gpio-controller@11000020 { | ||
187 | compatible = "samsung,exynos4-gpio"; | ||
188 | reg = <0x11000020 0x20>; | ||
189 | #gpio-cells = <4>; | ||
190 | }; | ||
191 | |||
192 | gpk0: gpio-controller@11000040 { | ||
193 | compatible = "samsung,exynos4-gpio"; | ||
194 | reg = <0x11000040 0x20>; | ||
195 | #gpio-cells = <4>; | ||
196 | }; | ||
197 | |||
198 | gpk1: gpio-controller@11000060 { | ||
199 | compatible = "samsung,exynos4-gpio"; | ||
200 | reg = <0x11000060 0x20>; | ||
201 | #gpio-cells = <4>; | ||
202 | }; | ||
203 | |||
204 | gpk2: gpio-controller@11000080 { | ||
205 | compatible = "samsung,exynos4-gpio"; | ||
206 | reg = <0x11000080 0x20>; | ||
207 | #gpio-cells = <4>; | ||
208 | }; | ||
209 | |||
210 | gpk3: gpio-controller@110000A0 { | ||
211 | compatible = "samsung,exynos4-gpio"; | ||
212 | reg = <0x110000A0 0x20>; | ||
213 | #gpio-cells = <4>; | ||
214 | }; | ||
215 | |||
216 | gpl0: gpio-controller@110000C0 { | ||
217 | compatible = "samsung,exynos4-gpio"; | ||
218 | reg = <0x110000C0 0x20>; | ||
219 | #gpio-cells = <4>; | ||
220 | }; | ||
221 | |||
222 | gpl1: gpio-controller@110000E0 { | ||
223 | compatible = "samsung,exynos4-gpio"; | ||
224 | reg = <0x110000E0 0x20>; | ||
225 | #gpio-cells = <4>; | ||
226 | }; | ||
227 | |||
228 | gpl2: gpio-controller@11000100 { | ||
229 | compatible = "samsung,exynos4-gpio"; | ||
230 | reg = <0x11000100 0x20>; | ||
231 | #gpio-cells = <4>; | ||
232 | }; | ||
233 | |||
234 | gpy0: gpio-controller@11000120 { | ||
235 | compatible = "samsung,exynos4-gpio"; | ||
236 | reg = <0x11000120 0x20>; | ||
237 | #gpio-cells = <4>; | ||
238 | }; | ||
239 | |||
240 | gpy1: gpio-controller@11000140 { | ||
241 | compatible = "samsung,exynos4-gpio"; | ||
242 | reg = <0x11000140 0x20>; | ||
243 | #gpio-cells = <4>; | ||
244 | }; | ||
245 | |||
246 | gpy2: gpio-controller@11000160 { | ||
247 | compatible = "samsung,exynos4-gpio"; | ||
248 | reg = <0x11000160 0x20>; | ||
249 | #gpio-cells = <4>; | ||
250 | }; | ||
251 | |||
252 | gpy3: gpio-controller@11000180 { | ||
253 | compatible = "samsung,exynos4-gpio"; | ||
254 | reg = <0x11000180 0x20>; | ||
255 | #gpio-cells = <4>; | ||
256 | }; | ||
257 | |||
258 | gpy4: gpio-controller@110001A0 { | ||
259 | compatible = "samsung,exynos4-gpio"; | ||
260 | reg = <0x110001A0 0x20>; | ||
261 | #gpio-cells = <4>; | ||
262 | }; | ||
263 | |||
264 | gpy5: gpio-controller@110001C0 { | ||
265 | compatible = "samsung,exynos4-gpio"; | ||
266 | reg = <0x110001C0 0x20>; | ||
267 | #gpio-cells = <4>; | ||
268 | }; | ||
269 | |||
270 | gpy6: gpio-controller@110001E0 { | ||
271 | compatible = "samsung,exynos4-gpio"; | ||
272 | reg = <0x110001E0 0x20>; | ||
273 | #gpio-cells = <4>; | ||
274 | }; | ||
275 | |||
276 | gpx0: gpio-controller@11000C00 { | ||
277 | compatible = "samsung,exynos4-gpio"; | ||
278 | reg = <0x11000C00 0x20>; | ||
279 | #gpio-cells = <4>; | ||
280 | }; | ||
281 | |||
282 | gpx1: gpio-controller@11000C20 { | ||
283 | compatible = "samsung,exynos4-gpio"; | ||
284 | reg = <0x11000C20 0x20>; | ||
285 | #gpio-cells = <4>; | ||
286 | }; | ||
287 | |||
288 | gpx2: gpio-controller@11000C40 { | ||
289 | compatible = "samsung,exynos4-gpio"; | ||
290 | reg = <0x11000C40 0x20>; | ||
291 | #gpio-cells = <4>; | ||
292 | }; | ||
293 | |||
294 | gpx3: gpio-controller@11000C60 { | ||
295 | compatible = "samsung,exynos4-gpio"; | ||
296 | reg = <0x11000C60 0x20>; | ||
297 | #gpio-cells = <4>; | ||
298 | }; | ||
299 | |||
300 | gpz: gpio-controller@03860000 { | ||
301 | compatible = "samsung,exynos4-gpio"; | ||
302 | reg = <0x03860000 0x20>; | ||
303 | #gpio-cells = <4>; | ||
304 | }; | ||
305 | }; | 78 | }; |
306 | }; | 79 | }; |
diff --git a/arch/arm/boot/dts/exynos4212.dtsi b/arch/arm/boot/dts/exynos4212.dtsi new file mode 100644 index 000000000000..c6ae2005961f --- /dev/null +++ b/arch/arm/boot/dts/exynos4212.dtsi | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Samsung's Exynos4212 SoC device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * Samsung's Exynos4212 SoC device nodes are listed in this file. Exynos4212 | ||
8 | * based board files can include this file and provide values for board specfic | ||
9 | * bindings. | ||
10 | * | ||
11 | * Note: This file does not include device nodes for all the controllers in | ||
12 | * Exynos4212 SoC. As device tree coverage for Exynos4212 increases, additional | ||
13 | * nodes can be added to this file. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License version 2 as | ||
17 | * published by the Free Software Foundation. | ||
18 | */ | ||
19 | |||
20 | /include/ "exynos4x12.dtsi" | ||
21 | |||
22 | / { | ||
23 | compatible = "samsung,exynos4212"; | ||
24 | |||
25 | gic:interrupt-controller@10490000 { | ||
26 | cpu-offset = <0x8000>; | ||
27 | }; | ||
28 | }; | ||
diff --git a/arch/arm/boot/dts/exynos4412-smdk4412.dts b/arch/arm/boot/dts/exynos4412-smdk4412.dts new file mode 100644 index 000000000000..f05bf575cc45 --- /dev/null +++ b/arch/arm/boot/dts/exynos4412-smdk4412.dts | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Samsung's Exynos4412 based SMDK board device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * Device tree source file for Samsung's SMDK4412 board which is based on | ||
8 | * Samsung's Exynos4412 SoC. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | /dts-v1/; | ||
16 | /include/ "exynos4412.dtsi" | ||
17 | |||
18 | / { | ||
19 | model = "Samsung SMDK evaluation board based on Exynos4412"; | ||
20 | compatible = "samsung,smdk4412", "samsung,exynos4412"; | ||
21 | |||
22 | memory { | ||
23 | reg = <0x40000000 0x40000000>; | ||
24 | }; | ||
25 | |||
26 | chosen { | ||
27 | bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc"; | ||
28 | }; | ||
29 | |||
30 | serial@13800000 { | ||
31 | status = "okay"; | ||
32 | }; | ||
33 | |||
34 | serial@13810000 { | ||
35 | status = "okay"; | ||
36 | }; | ||
37 | |||
38 | serial@13820000 { | ||
39 | status = "okay"; | ||
40 | }; | ||
41 | |||
42 | serial@13830000 { | ||
43 | status = "okay"; | ||
44 | }; | ||
45 | }; | ||
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi new file mode 100644 index 000000000000..d7dfe312772a --- /dev/null +++ b/arch/arm/boot/dts/exynos4412.dtsi | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Samsung's Exynos4412 SoC device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * Samsung's Exynos4412 SoC device nodes are listed in this file. Exynos4412 | ||
8 | * based board files can include this file and provide values for board specfic | ||
9 | * bindings. | ||
10 | * | ||
11 | * Note: This file does not include device nodes for all the controllers in | ||
12 | * Exynos4412 SoC. As device tree coverage for Exynos4412 increases, additional | ||
13 | * nodes can be added to this file. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License version 2 as | ||
17 | * published by the Free Software Foundation. | ||
18 | */ | ||
19 | |||
20 | /include/ "exynos4x12.dtsi" | ||
21 | |||
22 | / { | ||
23 | compatible = "samsung,exynos4412"; | ||
24 | |||
25 | gic:interrupt-controller@10490000 { | ||
26 | cpu-offset = <0x4000>; | ||
27 | }; | ||
28 | }; | ||
diff --git a/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi new file mode 100644 index 000000000000..8e6115adcd97 --- /dev/null +++ b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi | |||
@@ -0,0 +1,965 @@ | |||
1 | /* | ||
2 | * Samsung's Exynos4x12 SoCs pin-mux and pin-config device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * Samsung's Exynos4x12 SoCs pin-mux and pin-config optiosn are listed as device | ||
8 | * tree nodes are listed in this file. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | / { | ||
16 | pinctrl@11400000 { | ||
17 | gpa0: gpa0 { | ||
18 | gpio-controller; | ||
19 | #gpio-cells = <2>; | ||
20 | |||
21 | interrupt-controller; | ||
22 | #interrupt-cells = <2>; | ||
23 | }; | ||
24 | |||
25 | gpa1: gpa1 { | ||
26 | gpio-controller; | ||
27 | #gpio-cells = <2>; | ||
28 | |||
29 | interrupt-controller; | ||
30 | #interrupt-cells = <2>; | ||
31 | }; | ||
32 | |||
33 | gpb: gpb { | ||
34 | gpio-controller; | ||
35 | #gpio-cells = <2>; | ||
36 | |||
37 | interrupt-controller; | ||
38 | #interrupt-cells = <2>; | ||
39 | }; | ||
40 | |||
41 | gpc0: gpc0 { | ||
42 | gpio-controller; | ||
43 | #gpio-cells = <2>; | ||
44 | |||
45 | interrupt-controller; | ||
46 | #interrupt-cells = <2>; | ||
47 | }; | ||
48 | |||
49 | gpc1: gpc1 { | ||
50 | gpio-controller; | ||
51 | #gpio-cells = <2>; | ||
52 | |||
53 | interrupt-controller; | ||
54 | #interrupt-cells = <2>; | ||
55 | }; | ||
56 | |||
57 | gpd0: gpd0 { | ||
58 | gpio-controller; | ||
59 | #gpio-cells = <2>; | ||
60 | |||
61 | interrupt-controller; | ||
62 | #interrupt-cells = <2>; | ||
63 | }; | ||
64 | |||
65 | gpd1: gpd1 { | ||
66 | gpio-controller; | ||
67 | #gpio-cells = <2>; | ||
68 | |||
69 | interrupt-controller; | ||
70 | #interrupt-cells = <2>; | ||
71 | }; | ||
72 | |||
73 | gpf0: gpf0 { | ||
74 | gpio-controller; | ||
75 | #gpio-cells = <2>; | ||
76 | |||
77 | interrupt-controller; | ||
78 | #interrupt-cells = <2>; | ||
79 | }; | ||
80 | |||
81 | gpf1: gpf1 { | ||
82 | gpio-controller; | ||
83 | #gpio-cells = <2>; | ||
84 | |||
85 | interrupt-controller; | ||
86 | #interrupt-cells = <2>; | ||
87 | }; | ||
88 | |||
89 | gpf2: gpf2 { | ||
90 | gpio-controller; | ||
91 | #gpio-cells = <2>; | ||
92 | |||
93 | interrupt-controller; | ||
94 | #interrupt-cells = <2>; | ||
95 | }; | ||
96 | |||
97 | gpf3: gpf3 { | ||
98 | gpio-controller; | ||
99 | #gpio-cells = <2>; | ||
100 | |||
101 | interrupt-controller; | ||
102 | #interrupt-cells = <2>; | ||
103 | }; | ||
104 | |||
105 | gpj0: gpj0 { | ||
106 | gpio-controller; | ||
107 | #gpio-cells = <2>; | ||
108 | |||
109 | interrupt-controller; | ||
110 | #interrupt-cells = <2>; | ||
111 | }; | ||
112 | |||
113 | gpj1: gpj1 { | ||
114 | gpio-controller; | ||
115 | #gpio-cells = <2>; | ||
116 | |||
117 | interrupt-controller; | ||
118 | #interrupt-cells = <2>; | ||
119 | }; | ||
120 | |||
121 | uart0_data: uart0-data { | ||
122 | samsung,pins = "gpa0-0", "gpa0-1"; | ||
123 | samsung,pin-function = <0x2>; | ||
124 | samsung,pin-pud = <0>; | ||
125 | samsung,pin-drv = <0>; | ||
126 | }; | ||
127 | |||
128 | uart0_fctl: uart0-fctl { | ||
129 | samsung,pins = "gpa0-2", "gpa0-3"; | ||
130 | samsung,pin-function = <2>; | ||
131 | samsung,pin-pud = <0>; | ||
132 | samsung,pin-drv = <0>; | ||
133 | }; | ||
134 | |||
135 | uart1_data: uart1-data { | ||
136 | samsung,pins = "gpa0-4", "gpa0-5"; | ||
137 | samsung,pin-function = <2>; | ||
138 | samsung,pin-pud = <0>; | ||
139 | samsung,pin-drv = <0>; | ||
140 | }; | ||
141 | |||
142 | uart1_fctl: uart1-fctl { | ||
143 | samsung,pins = "gpa0-6", "gpa0-7"; | ||
144 | samsung,pin-function = <2>; | ||
145 | samsung,pin-pud = <0>; | ||
146 | samsung,pin-drv = <0>; | ||
147 | }; | ||
148 | |||
149 | i2c2_bus: i2c2-bus { | ||
150 | samsung,pins = "gpa0-6", "gpa0-7"; | ||
151 | samsung,pin-function = <3>; | ||
152 | samsung,pin-pud = <3>; | ||
153 | samsung,pin-drv = <0>; | ||
154 | }; | ||
155 | |||
156 | uart2_data: uart2-data { | ||
157 | samsung,pins = "gpa1-0", "gpa1-1"; | ||
158 | samsung,pin-function = <2>; | ||
159 | samsung,pin-pud = <0>; | ||
160 | samsung,pin-drv = <0>; | ||
161 | }; | ||
162 | |||
163 | uart2_fctl: uart2-fctl { | ||
164 | samsung,pins = "gpa1-2", "gpa1-3"; | ||
165 | samsung,pin-function = <2>; | ||
166 | samsung,pin-pud = <0>; | ||
167 | samsung,pin-drv = <0>; | ||
168 | }; | ||
169 | |||
170 | uart_audio_a: uart-audio-a { | ||
171 | samsung,pins = "gpa1-0", "gpa1-1"; | ||
172 | samsung,pin-function = <4>; | ||
173 | samsung,pin-pud = <0>; | ||
174 | samsung,pin-drv = <0>; | ||
175 | }; | ||
176 | |||
177 | i2c3_bus: i2c3-bus { | ||
178 | samsung,pins = "gpa1-2", "gpa1-3"; | ||
179 | samsung,pin-function = <3>; | ||
180 | samsung,pin-pud = <3>; | ||
181 | samsung,pin-drv = <0>; | ||
182 | }; | ||
183 | |||
184 | uart3_data: uart3-data { | ||
185 | samsung,pins = "gpa1-4", "gpa1-5"; | ||
186 | samsung,pin-function = <2>; | ||
187 | samsung,pin-pud = <0>; | ||
188 | samsung,pin-drv = <0>; | ||
189 | }; | ||
190 | |||
191 | uart_audio_b: uart-audio-b { | ||
192 | samsung,pins = "gpa1-4", "gpa1-5"; | ||
193 | samsung,pin-function = <4>; | ||
194 | samsung,pin-pud = <0>; | ||
195 | samsung,pin-drv = <0>; | ||
196 | }; | ||
197 | |||
198 | spi0_bus: spi0-bus { | ||
199 | samsung,pins = "gpb-0", "gpb-2", "gpb-3"; | ||
200 | samsung,pin-function = <2>; | ||
201 | samsung,pin-pud = <3>; | ||
202 | samsung,pin-drv = <0>; | ||
203 | }; | ||
204 | |||
205 | i2c4_bus: i2c4-bus { | ||
206 | samsung,pins = "gpb-0", "gpb-1"; | ||
207 | samsung,pin-function = <3>; | ||
208 | samsung,pin-pud = <3>; | ||
209 | samsung,pin-drv = <0>; | ||
210 | }; | ||
211 | |||
212 | spi1_bus: spi1-bus { | ||
213 | samsung,pins = "gpb-4", "gpb-6", "gpb-7"; | ||
214 | samsung,pin-function = <2>; | ||
215 | samsung,pin-pud = <3>; | ||
216 | samsung,pin-drv = <0>; | ||
217 | }; | ||
218 | |||
219 | i2c5_bus: i2c5-bus { | ||
220 | samsung,pins = "gpb-2", "gpb-3"; | ||
221 | samsung,pin-function = <3>; | ||
222 | samsung,pin-pud = <3>; | ||
223 | samsung,pin-drv = <0>; | ||
224 | }; | ||
225 | |||
226 | i2s1_bus: i2s1-bus { | ||
227 | samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3", | ||
228 | "gpc0-4"; | ||
229 | samsung,pin-function = <2>; | ||
230 | samsung,pin-pud = <0>; | ||
231 | samsung,pin-drv = <0>; | ||
232 | }; | ||
233 | |||
234 | pcm1_bus: pcm1-bus { | ||
235 | samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3", | ||
236 | "gpc0-4"; | ||
237 | samsung,pin-function = <3>; | ||
238 | samsung,pin-pud = <0>; | ||
239 | samsung,pin-drv = <0>; | ||
240 | }; | ||
241 | |||
242 | ac97_bus: ac97-bus { | ||
243 | samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3", | ||
244 | "gpc0-4"; | ||
245 | samsung,pin-function = <4>; | ||
246 | samsung,pin-pud = <0>; | ||
247 | samsung,pin-drv = <0>; | ||
248 | }; | ||
249 | |||
250 | i2s2_bus: i2s2-bus { | ||
251 | samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3", | ||
252 | "gpc1-4"; | ||
253 | samsung,pin-function = <2>; | ||
254 | samsung,pin-pud = <0>; | ||
255 | samsung,pin-drv = <0>; | ||
256 | }; | ||
257 | |||
258 | pcm2_bus: pcm2-bus { | ||
259 | samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3", | ||
260 | "gpc1-4"; | ||
261 | samsung,pin-function = <3>; | ||
262 | samsung,pin-pud = <0>; | ||
263 | samsung,pin-drv = <0>; | ||
264 | }; | ||
265 | |||
266 | spdif_bus: spdif-bus { | ||
267 | samsung,pins = "gpc1-0", "gpc1-1"; | ||
268 | samsung,pin-function = <4>; | ||
269 | samsung,pin-pud = <0>; | ||
270 | samsung,pin-drv = <0>; | ||
271 | }; | ||
272 | |||
273 | i2c6_bus: i2c6-bus { | ||
274 | samsung,pins = "gpc1-3", "gpc1-4"; | ||
275 | samsung,pin-function = <4>; | ||
276 | samsung,pin-pud = <3>; | ||
277 | samsung,pin-drv = <0>; | ||
278 | }; | ||
279 | |||
280 | spi2_bus: spi2-bus { | ||
281 | samsung,pins = "gpc1-1", "gpc1-3", "gpc1-4"; | ||
282 | samsung,pin-function = <5>; | ||
283 | samsung,pin-pud = <3>; | ||
284 | samsung,pin-drv = <0>; | ||
285 | }; | ||
286 | |||
287 | pwm0_out: pwm0-out { | ||
288 | samsung,pins = "gpd0-0"; | ||
289 | samsung,pin-function = <2>; | ||
290 | samsung,pin-pud = <0>; | ||
291 | samsung,pin-drv = <0>; | ||
292 | }; | ||
293 | |||
294 | pwm1_out: pwm1-out { | ||
295 | samsung,pins = "gpd0-1"; | ||
296 | samsung,pin-function = <2>; | ||
297 | samsung,pin-pud = <0>; | ||
298 | samsung,pin-drv = <0>; | ||
299 | }; | ||
300 | |||
301 | lcd_ctrl: lcd-ctrl { | ||
302 | samsung,pins = "gpd0-0", "gpd0-1"; | ||
303 | samsung,pin-function = <3>; | ||
304 | samsung,pin-pud = <0>; | ||
305 | samsung,pin-drv = <0>; | ||
306 | }; | ||
307 | |||
308 | i2c7_bus: i2c7-bus { | ||
309 | samsung,pins = "gpd0-2", "gpd0-3"; | ||
310 | samsung,pin-function = <3>; | ||
311 | samsung,pin-pud = <3>; | ||
312 | samsung,pin-drv = <0>; | ||
313 | }; | ||
314 | |||
315 | pwm2_out: pwm2-out { | ||
316 | samsung,pins = "gpd0-2"; | ||
317 | samsung,pin-function = <2>; | ||
318 | samsung,pin-pud = <0>; | ||
319 | samsung,pin-drv = <0>; | ||
320 | }; | ||
321 | |||
322 | pwm3_out: pwm3-out { | ||
323 | samsung,pins = "gpd0-3"; | ||
324 | samsung,pin-function = <2>; | ||
325 | samsung,pin-pud = <0>; | ||
326 | samsung,pin-drv = <0>; | ||
327 | }; | ||
328 | |||
329 | i2c0_bus: i2c0-bus { | ||
330 | samsung,pins = "gpd1-0", "gpd1-1"; | ||
331 | samsung,pin-function = <2>; | ||
332 | samsung,pin-pud = <3>; | ||
333 | samsung,pin-drv = <0>; | ||
334 | }; | ||
335 | |||
336 | mipi0_clk: mipi0-clk { | ||
337 | samsung,pins = "gpd1-0", "gpd1-1"; | ||
338 | samsung,pin-function = <3>; | ||
339 | samsung,pin-pud = <0>; | ||
340 | samsung,pin-drv = <0>; | ||
341 | }; | ||
342 | |||
343 | i2c1_bus: i2c1-bus { | ||
344 | samsung,pins = "gpd1-2", "gpd1-3"; | ||
345 | samsung,pin-function = <2>; | ||
346 | samsung,pin-pud = <3>; | ||
347 | samsung,pin-drv = <0>; | ||
348 | }; | ||
349 | |||
350 | mipi1_clk: mipi1-clk { | ||
351 | samsung,pins = "gpd1-2", "gpd1-3"; | ||
352 | samsung,pin-function = <3>; | ||
353 | samsung,pin-pud = <0>; | ||
354 | samsung,pin-drv = <0>; | ||
355 | }; | ||
356 | |||
357 | lcd_clk: lcd-clk { | ||
358 | samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3"; | ||
359 | samsung,pin-function = <2>; | ||
360 | samsung,pin-pud = <0>; | ||
361 | samsung,pin-drv = <0>; | ||
362 | }; | ||
363 | |||
364 | lcd_data16: lcd-data-width16 { | ||
365 | samsung,pins = "gpf0-7", "gpf1-0", "gpf1-1", "gpf1-2", | ||
366 | "gpf1-3", "gpf1-6", "gpf1-7", "gpf2-0", | ||
367 | "gpf2-1", "gpf2-2", "gpf2-3", "gpf2-7", | ||
368 | "gpf3-0", "gpf3-1", "gpf3-2", "gpf3-3"; | ||
369 | samsung,pin-function = <2>; | ||
370 | samsung,pin-pud = <0>; | ||
371 | samsung,pin-drv = <0>; | ||
372 | }; | ||
373 | |||
374 | lcd_data18: lcd-data-width18 { | ||
375 | samsung,pins = "gpf0-6", "gpf0-7", "gpf1-0", "gpf1-1", | ||
376 | "gpf1-2", "gpf1-3", "gpf1-6", "gpf1-7", | ||
377 | "gpf2-0", "gpf2-1", "gpf2-2", "gpf2-3", | ||
378 | "gpf2-6", "gpf2-7", "gpf3-0", "gpf3-1", | ||
379 | "gpf3-2", "gpf3-3"; | ||
380 | samsung,pin-function = <2>; | ||
381 | samsung,pin-pud = <0>; | ||
382 | samsung,pin-drv = <0>; | ||
383 | }; | ||
384 | |||
385 | lcd_data24: lcd-data-width24 { | ||
386 | samsung,pins = "gpf0-4", "gpf0-5", "gpf0-6", "gpf0-7", | ||
387 | "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3", | ||
388 | "gpf1-4", "gpf1-5", "gpf1-6", "gpf1-7", | ||
389 | "gpf2-0", "gpf2-1", "gpf2-2", "gpf2-3", | ||
390 | "gpf2-4", "gpf2-5", "gpf2-6", "gpf2-7", | ||
391 | "gpf3-0", "gpf3-1", "gpf3-2", "gpf3-3"; | ||
392 | samsung,pin-function = <2>; | ||
393 | samsung,pin-pud = <0>; | ||
394 | samsung,pin-drv = <0>; | ||
395 | }; | ||
396 | |||
397 | lcd_ldi: lcd-ldi { | ||
398 | samsung,pins = "gpf3-4"; | ||
399 | samsung,pin-function = <2>; | ||
400 | samsung,pin-pud = <0>; | ||
401 | samsung,pin-drv = <0>; | ||
402 | }; | ||
403 | |||
404 | cam_port_a: cam-port-a { | ||
405 | samsung,pins = "gpj0-0", "gpj0-1", "gpj0-2", "gpj0-3", | ||
406 | "gpj0-4", "gpj0-5", "gpj0-6", "gpj0-7", | ||
407 | "gpj1-0", "gpj1-1", "gpj1-2", "gpj1-3", | ||
408 | "gpj1-4"; | ||
409 | samsung,pin-function = <2>; | ||
410 | samsung,pin-pud = <3>; | ||
411 | samsung,pin-drv = <0>; | ||
412 | }; | ||
413 | }; | ||
414 | |||
415 | pinctrl@11000000 { | ||
416 | gpk0: gpk0 { | ||
417 | gpio-controller; | ||
418 | #gpio-cells = <2>; | ||
419 | |||
420 | interrupt-controller; | ||
421 | #interrupt-cells = <2>; | ||
422 | }; | ||
423 | |||
424 | gpk1: gpk1 { | ||
425 | gpio-controller; | ||
426 | #gpio-cells = <2>; | ||
427 | |||
428 | interrupt-controller; | ||
429 | #interrupt-cells = <2>; | ||
430 | }; | ||
431 | |||
432 | gpk2: gpk2 { | ||
433 | gpio-controller; | ||
434 | #gpio-cells = <2>; | ||
435 | |||
436 | interrupt-controller; | ||
437 | #interrupt-cells = <2>; | ||
438 | }; | ||
439 | |||
440 | gpk3: gpk3 { | ||
441 | gpio-controller; | ||
442 | #gpio-cells = <2>; | ||
443 | |||
444 | interrupt-controller; | ||
445 | #interrupt-cells = <2>; | ||
446 | }; | ||
447 | |||
448 | gpl0: gpl0 { | ||
449 | gpio-controller; | ||
450 | #gpio-cells = <2>; | ||
451 | |||
452 | interrupt-controller; | ||
453 | #interrupt-cells = <2>; | ||
454 | }; | ||
455 | |||
456 | gpl1: gpl1 { | ||
457 | gpio-controller; | ||
458 | #gpio-cells = <2>; | ||
459 | |||
460 | interrupt-controller; | ||
461 | #interrupt-cells = <2>; | ||
462 | }; | ||
463 | |||
464 | gpl2: gpl2 { | ||
465 | gpio-controller; | ||
466 | #gpio-cells = <2>; | ||
467 | |||
468 | interrupt-controller; | ||
469 | #interrupt-cells = <2>; | ||
470 | }; | ||
471 | |||
472 | gpm0: gpm0 { | ||
473 | gpio-controller; | ||
474 | #gpio-cells = <2>; | ||
475 | |||
476 | interrupt-controller; | ||
477 | #interrupt-cells = <2>; | ||
478 | }; | ||
479 | |||
480 | gpm1: gpm1 { | ||
481 | gpio-controller; | ||
482 | #gpio-cells = <2>; | ||
483 | |||
484 | interrupt-controller; | ||
485 | #interrupt-cells = <2>; | ||
486 | }; | ||
487 | |||
488 | gpm2: gpm2 { | ||
489 | gpio-controller; | ||
490 | #gpio-cells = <2>; | ||
491 | |||
492 | interrupt-controller; | ||
493 | #interrupt-cells = <2>; | ||
494 | }; | ||
495 | |||
496 | gpm3: gpm3 { | ||
497 | gpio-controller; | ||
498 | #gpio-cells = <2>; | ||
499 | |||
500 | interrupt-controller; | ||
501 | #interrupt-cells = <2>; | ||
502 | }; | ||
503 | |||
504 | gpm4: gpm4 { | ||
505 | gpio-controller; | ||
506 | #gpio-cells = <2>; | ||
507 | |||
508 | interrupt-controller; | ||
509 | #interrupt-cells = <2>; | ||
510 | }; | ||
511 | |||
512 | gpy0: gpy0 { | ||
513 | gpio-controller; | ||
514 | #gpio-cells = <2>; | ||
515 | }; | ||
516 | |||
517 | gpy1: gpy1 { | ||
518 | gpio-controller; | ||
519 | #gpio-cells = <2>; | ||
520 | }; | ||
521 | |||
522 | gpy2: gpy2 { | ||
523 | gpio-controller; | ||
524 | #gpio-cells = <2>; | ||
525 | }; | ||
526 | |||
527 | gpy3: gpy3 { | ||
528 | gpio-controller; | ||
529 | #gpio-cells = <2>; | ||
530 | }; | ||
531 | |||
532 | gpy4: gpy4 { | ||
533 | gpio-controller; | ||
534 | #gpio-cells = <2>; | ||
535 | }; | ||
536 | |||
537 | gpy5: gpy5 { | ||
538 | gpio-controller; | ||
539 | #gpio-cells = <2>; | ||
540 | }; | ||
541 | |||
542 | gpy6: gpy6 { | ||
543 | gpio-controller; | ||
544 | #gpio-cells = <2>; | ||
545 | }; | ||
546 | |||
547 | gpx0: gpx0 { | ||
548 | gpio-controller; | ||
549 | #gpio-cells = <2>; | ||
550 | |||
551 | interrupt-controller; | ||
552 | interrupt-parent = <&gic>; | ||
553 | interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>, | ||
554 | <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>; | ||
555 | #interrupt-cells = <2>; | ||
556 | }; | ||
557 | |||
558 | gpx1: gpx1 { | ||
559 | gpio-controller; | ||
560 | #gpio-cells = <2>; | ||
561 | |||
562 | interrupt-controller; | ||
563 | interrupt-parent = <&gic>; | ||
564 | interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, | ||
565 | <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; | ||
566 | #interrupt-cells = <2>; | ||
567 | }; | ||
568 | |||
569 | gpx2: gpx2 { | ||
570 | gpio-controller; | ||
571 | #gpio-cells = <2>; | ||
572 | |||
573 | interrupt-controller; | ||
574 | #interrupt-cells = <2>; | ||
575 | }; | ||
576 | |||
577 | gpx3: gpx3 { | ||
578 | gpio-controller; | ||
579 | #gpio-cells = <2>; | ||
580 | |||
581 | interrupt-controller; | ||
582 | #interrupt-cells = <2>; | ||
583 | }; | ||
584 | |||
585 | sd0_clk: sd0-clk { | ||
586 | samsung,pins = "gpk0-0"; | ||
587 | samsung,pin-function = <2>; | ||
588 | samsung,pin-pud = <0>; | ||
589 | samsung,pin-drv = <3>; | ||
590 | }; | ||
591 | |||
592 | sd0_cmd: sd0-cmd { | ||
593 | samsung,pins = "gpk0-1"; | ||
594 | samsung,pin-function = <2>; | ||
595 | samsung,pin-pud = <0>; | ||
596 | samsung,pin-drv = <3>; | ||
597 | }; | ||
598 | |||
599 | sd0_cd: sd0-cd { | ||
600 | samsung,pins = "gpk0-2"; | ||
601 | samsung,pin-function = <2>; | ||
602 | samsung,pin-pud = <3>; | ||
603 | samsung,pin-drv = <3>; | ||
604 | }; | ||
605 | |||
606 | sd0_bus1: sd0-bus-width1 { | ||
607 | samsung,pins = "gpk0-3"; | ||
608 | samsung,pin-function = <2>; | ||
609 | samsung,pin-pud = <3>; | ||
610 | samsung,pin-drv = <3>; | ||
611 | }; | ||
612 | |||
613 | sd0_bus4: sd0-bus-width4 { | ||
614 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; | ||
615 | samsung,pin-function = <2>; | ||
616 | samsung,pin-pud = <3>; | ||
617 | samsung,pin-drv = <3>; | ||
618 | }; | ||
619 | |||
620 | sd0_bus8: sd0-bus-width8 { | ||
621 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | ||
622 | samsung,pin-function = <3>; | ||
623 | samsung,pin-pud = <3>; | ||
624 | samsung,pin-drv = <3>; | ||
625 | }; | ||
626 | |||
627 | sd4_clk: sd4-clk { | ||
628 | samsung,pins = "gpk0-0"; | ||
629 | samsung,pin-function = <3>; | ||
630 | samsung,pin-pud = <0>; | ||
631 | samsung,pin-drv = <3>; | ||
632 | }; | ||
633 | |||
634 | sd4_cmd: sd4-cmd { | ||
635 | samsung,pins = "gpk0-1"; | ||
636 | samsung,pin-function = <3>; | ||
637 | samsung,pin-pud = <0>; | ||
638 | samsung,pin-drv = <3>; | ||
639 | }; | ||
640 | |||
641 | sd4_cd: sd4-cd { | ||
642 | samsung,pins = "gpk0-2"; | ||
643 | samsung,pin-function = <3>; | ||
644 | samsung,pin-pud = <3>; | ||
645 | samsung,pin-drv = <3>; | ||
646 | }; | ||
647 | |||
648 | sd4_bus1: sd4-bus-width1 { | ||
649 | samsung,pins = "gpk0-3"; | ||
650 | samsung,pin-function = <3>; | ||
651 | samsung,pin-pud = <3>; | ||
652 | samsung,pin-drv = <3>; | ||
653 | }; | ||
654 | |||
655 | sd4_bus4: sd4-bus-width4 { | ||
656 | samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6"; | ||
657 | samsung,pin-function = <3>; | ||
658 | samsung,pin-pud = <3>; | ||
659 | samsung,pin-drv = <3>; | ||
660 | }; | ||
661 | |||
662 | sd4_bus8: sd4-bus-width8 { | ||
663 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | ||
664 | samsung,pin-function = <3>; | ||
665 | samsung,pin-pud = <4>; | ||
666 | samsung,pin-drv = <3>; | ||
667 | }; | ||
668 | |||
669 | sd1_clk: sd1-clk { | ||
670 | samsung,pins = "gpk1-0"; | ||
671 | samsung,pin-function = <2>; | ||
672 | samsung,pin-pud = <0>; | ||
673 | samsung,pin-drv = <3>; | ||
674 | }; | ||
675 | |||
676 | sd1_cmd: sd1-cmd { | ||
677 | samsung,pins = "gpk1-1"; | ||
678 | samsung,pin-function = <2>; | ||
679 | samsung,pin-pud = <0>; | ||
680 | samsung,pin-drv = <3>; | ||
681 | }; | ||
682 | |||
683 | sd1_cd: sd1-cd { | ||
684 | samsung,pins = "gpk1-2"; | ||
685 | samsung,pin-function = <2>; | ||
686 | samsung,pin-pud = <3>; | ||
687 | samsung,pin-drv = <3>; | ||
688 | }; | ||
689 | |||
690 | sd1_bus1: sd1-bus-width1 { | ||
691 | samsung,pins = "gpk1-3"; | ||
692 | samsung,pin-function = <2>; | ||
693 | samsung,pin-pud = <3>; | ||
694 | samsung,pin-drv = <3>; | ||
695 | }; | ||
696 | |||
697 | sd1_bus4: sd1-bus-width4 { | ||
698 | samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; | ||
699 | samsung,pin-function = <2>; | ||
700 | samsung,pin-pud = <3>; | ||
701 | samsung,pin-drv = <3>; | ||
702 | }; | ||
703 | |||
704 | sd2_clk: sd2-clk { | ||
705 | samsung,pins = "gpk2-0"; | ||
706 | samsung,pin-function = <2>; | ||
707 | samsung,pin-pud = <0>; | ||
708 | samsung,pin-drv = <3>; | ||
709 | }; | ||
710 | |||
711 | sd2_cmd: sd2-cmd { | ||
712 | samsung,pins = "gpk2-1"; | ||
713 | samsung,pin-function = <2>; | ||
714 | samsung,pin-pud = <0>; | ||
715 | samsung,pin-drv = <3>; | ||
716 | }; | ||
717 | |||
718 | sd2_cd: sd2-cd { | ||
719 | samsung,pins = "gpk2-2"; | ||
720 | samsung,pin-function = <2>; | ||
721 | samsung,pin-pud = <3>; | ||
722 | samsung,pin-drv = <3>; | ||
723 | }; | ||
724 | |||
725 | sd2_bus1: sd2-bus-width1 { | ||
726 | samsung,pins = "gpk2-3"; | ||
727 | samsung,pin-function = <2>; | ||
728 | samsung,pin-pud = <3>; | ||
729 | samsung,pin-drv = <3>; | ||
730 | }; | ||
731 | |||
732 | sd2_bus4: sd2-bus-width4 { | ||
733 | samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6"; | ||
734 | samsung,pin-function = <2>; | ||
735 | samsung,pin-pud = <3>; | ||
736 | samsung,pin-drv = <3>; | ||
737 | }; | ||
738 | |||
739 | sd2_bus8: sd2-bus-width8 { | ||
740 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; | ||
741 | samsung,pin-function = <3>; | ||
742 | samsung,pin-pud = <3>; | ||
743 | samsung,pin-drv = <3>; | ||
744 | }; | ||
745 | |||
746 | sd3_clk: sd3-clk { | ||
747 | samsung,pins = "gpk3-0"; | ||
748 | samsung,pin-function = <2>; | ||
749 | samsung,pin-pud = <0>; | ||
750 | samsung,pin-drv = <3>; | ||
751 | }; | ||
752 | |||
753 | sd3_cmd: sd3-cmd { | ||
754 | samsung,pins = "gpk3-1"; | ||
755 | samsung,pin-function = <2>; | ||
756 | samsung,pin-pud = <0>; | ||
757 | samsung,pin-drv = <3>; | ||
758 | }; | ||
759 | |||
760 | sd3_cd: sd3-cd { | ||
761 | samsung,pins = "gpk3-2"; | ||
762 | samsung,pin-function = <2>; | ||
763 | samsung,pin-pud = <3>; | ||
764 | samsung,pin-drv = <3>; | ||
765 | }; | ||
766 | |||
767 | sd3_bus1: sd3-bus-width1 { | ||
768 | samsung,pins = "gpk3-3"; | ||
769 | samsung,pin-function = <2>; | ||
770 | samsung,pin-pud = <3>; | ||
771 | samsung,pin-drv = <3>; | ||
772 | }; | ||
773 | |||
774 | sd3_bus4: sd3-bus-width4 { | ||
775 | samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6"; | ||
776 | samsung,pin-function = <2>; | ||
777 | samsung,pin-pud = <3>; | ||
778 | samsung,pin-drv = <3>; | ||
779 | }; | ||
780 | |||
781 | keypad_col0: keypad-col0 { | ||
782 | samsung,pins = "gpl2-0"; | ||
783 | samsung,pin-function = <3>; | ||
784 | samsung,pin-pud = <0>; | ||
785 | samsung,pin-drv = <0>; | ||
786 | }; | ||
787 | |||
788 | keypad_col1: keypad-col1 { | ||
789 | samsung,pins = "gpl2-1"; | ||
790 | samsung,pin-function = <3>; | ||
791 | samsung,pin-pud = <0>; | ||
792 | samsung,pin-drv = <0>; | ||
793 | }; | ||
794 | |||
795 | keypad_col2: keypad-col2 { | ||
796 | samsung,pins = "gpl2-2"; | ||
797 | samsung,pin-function = <3>; | ||
798 | samsung,pin-pud = <0>; | ||
799 | samsung,pin-drv = <0>; | ||
800 | }; | ||
801 | |||
802 | keypad_col3: keypad-col3 { | ||
803 | samsung,pins = "gpl2-3"; | ||
804 | samsung,pin-function = <3>; | ||
805 | samsung,pin-pud = <0>; | ||
806 | samsung,pin-drv = <0>; | ||
807 | }; | ||
808 | |||
809 | keypad_col4: keypad-col4 { | ||
810 | samsung,pins = "gpl2-4"; | ||
811 | samsung,pin-function = <3>; | ||
812 | samsung,pin-pud = <0>; | ||
813 | samsung,pin-drv = <0>; | ||
814 | }; | ||
815 | |||
816 | keypad_col5: keypad-col5 { | ||
817 | samsung,pins = "gpl2-5"; | ||
818 | samsung,pin-function = <3>; | ||
819 | samsung,pin-pud = <0>; | ||
820 | samsung,pin-drv = <0>; | ||
821 | }; | ||
822 | |||
823 | keypad_col6: keypad-col6 { | ||
824 | samsung,pins = "gpl2-6"; | ||
825 | samsung,pin-function = <3>; | ||
826 | samsung,pin-pud = <0>; | ||
827 | samsung,pin-drv = <0>; | ||
828 | }; | ||
829 | |||
830 | keypad_col7: keypad-col7 { | ||
831 | samsung,pins = "gpl2-7"; | ||
832 | samsung,pin-function = <3>; | ||
833 | samsung,pin-pud = <0>; | ||
834 | samsung,pin-drv = <0>; | ||
835 | }; | ||
836 | |||
837 | cam_port_b: cam-port-b { | ||
838 | samsung,pins = "gpm0-0", "gpm0-1", "gpm0-2", "gpm0-3", | ||
839 | "gpm0-4", "gpm0-5", "gpm0-6", "gpm0-7", | ||
840 | "gpm1-0", "gpm1-1", "gpm2-0", "gpm2-1", | ||
841 | "gpm2-2"; | ||
842 | samsung,pin-function = <3>; | ||
843 | samsung,pin-pud = <3>; | ||
844 | samsung,pin-drv = <0>; | ||
845 | }; | ||
846 | |||
847 | eint0: ext-int0 { | ||
848 | samsung,pins = "gpx0-0"; | ||
849 | samsung,pin-function = <0xf>; | ||
850 | samsung,pin-pud = <0>; | ||
851 | samsung,pin-drv = <0>; | ||
852 | }; | ||
853 | |||
854 | eint8: ext-int8 { | ||
855 | samsung,pins = "gpx1-0"; | ||
856 | samsung,pin-function = <0xf>; | ||
857 | samsung,pin-pud = <0>; | ||
858 | samsung,pin-drv = <0>; | ||
859 | }; | ||
860 | |||
861 | eint15: ext-int15 { | ||
862 | samsung,pins = "gpx1-7"; | ||
863 | samsung,pin-function = <0xf>; | ||
864 | samsung,pin-pud = <0>; | ||
865 | samsung,pin-drv = <0>; | ||
866 | }; | ||
867 | |||
868 | eint16: ext-int16 { | ||
869 | samsung,pins = "gpx2-0"; | ||
870 | samsung,pin-function = <0xf>; | ||
871 | samsung,pin-pud = <0>; | ||
872 | samsung,pin-drv = <0>; | ||
873 | }; | ||
874 | |||
875 | eint31: ext-int31 { | ||
876 | samsung,pins = "gpx3-7"; | ||
877 | samsung,pin-function = <0xf>; | ||
878 | samsung,pin-pud = <0>; | ||
879 | samsung,pin-drv = <0>; | ||
880 | }; | ||
881 | }; | ||
882 | |||
883 | pinctrl@03860000 { | ||
884 | gpz: gpz { | ||
885 | gpio-controller; | ||
886 | #gpio-cells = <2>; | ||
887 | |||
888 | interrupt-controller; | ||
889 | #interrupt-cells = <2>; | ||
890 | }; | ||
891 | |||
892 | i2s0_bus: i2s0-bus { | ||
893 | samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3", | ||
894 | "gpz-4", "gpz-5", "gpz-6"; | ||
895 | samsung,pin-function = <0x2>; | ||
896 | samsung,pin-pud = <0>; | ||
897 | samsung,pin-drv = <0>; | ||
898 | }; | ||
899 | |||
900 | pcm0_bus: pcm0-bus { | ||
901 | samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3", | ||
902 | "gpz-4"; | ||
903 | samsung,pin-function = <0x3>; | ||
904 | samsung,pin-pud = <0>; | ||
905 | samsung,pin-drv = <0>; | ||
906 | }; | ||
907 | }; | ||
908 | |||
909 | pinctrl@106E0000 { | ||
910 | gpv0: gpv0 { | ||
911 | gpio-controller; | ||
912 | #gpio-cells = <2>; | ||
913 | |||
914 | interrupt-controller; | ||
915 | #interrupt-cells = <2>; | ||
916 | }; | ||
917 | |||
918 | gpv1: gpv1 { | ||
919 | gpio-controller; | ||
920 | #gpio-cells = <2>; | ||
921 | |||
922 | interrupt-controller; | ||
923 | #interrupt-cells = <2>; | ||
924 | }; | ||
925 | |||
926 | gpv2: gpv2 { | ||
927 | gpio-controller; | ||
928 | #gpio-cells = <2>; | ||
929 | |||
930 | interrupt-controller; | ||
931 | #interrupt-cells = <2>; | ||
932 | }; | ||
933 | |||
934 | gpv3: gpv3 { | ||
935 | gpio-controller; | ||
936 | #gpio-cells = <2>; | ||
937 | |||
938 | interrupt-controller; | ||
939 | #interrupt-cells = <2>; | ||
940 | }; | ||
941 | |||
942 | gpv4: gpv4 { | ||
943 | gpio-controller; | ||
944 | #gpio-cells = <2>; | ||
945 | |||
946 | interrupt-controller; | ||
947 | #interrupt-cells = <2>; | ||
948 | }; | ||
949 | |||
950 | c2c_bus: c2c-bus { | ||
951 | samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3", | ||
952 | "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7", | ||
953 | "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3", | ||
954 | "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7", | ||
955 | "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3", | ||
956 | "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7", | ||
957 | "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3", | ||
958 | "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7", | ||
959 | "gpv4-0", "gpv4-1"; | ||
960 | samsung,pin-function = <0x2>; | ||
961 | samsung,pin-pud = <0>; | ||
962 | samsung,pin-drv = <0>; | ||
963 | }; | ||
964 | }; | ||
965 | }; | ||
diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi new file mode 100644 index 000000000000..179a62e46c9d --- /dev/null +++ b/arch/arm/boot/dts/exynos4x12.dtsi | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * Samsung's Exynos4x12 SoCs device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * Samsung's Exynos4x12 SoCs device nodes are listed in this file. Exynos4x12 | ||
8 | * based board files can include this file and provide values for board specfic | ||
9 | * bindings. | ||
10 | * | ||
11 | * Note: This file does not include device nodes for all the controllers in | ||
12 | * Exynos4x12 SoC. As device tree coverage for Exynos4x12 increases, additional | ||
13 | * nodes can be added to this file. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License version 2 as | ||
17 | * published by the Free Software Foundation. | ||
18 | */ | ||
19 | |||
20 | /include/ "exynos4.dtsi" | ||
21 | /include/ "exynos4x12-pinctrl.dtsi" | ||
22 | |||
23 | / { | ||
24 | aliases { | ||
25 | pinctrl0 = &pinctrl_0; | ||
26 | pinctrl1 = &pinctrl_1; | ||
27 | pinctrl2 = &pinctrl_2; | ||
28 | pinctrl3 = &pinctrl_3; | ||
29 | }; | ||
30 | |||
31 | combiner:interrupt-controller@10440000 { | ||
32 | interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, | ||
33 | <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>, | ||
34 | <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>, | ||
35 | <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>, | ||
36 | <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>; | ||
37 | }; | ||
38 | |||
39 | pinctrl_0: pinctrl@11400000 { | ||
40 | compatible = "samsung,pinctrl-exynos4x12"; | ||
41 | reg = <0x11400000 0x1000>; | ||
42 | interrupts = <0 47 0>; | ||
43 | }; | ||
44 | |||
45 | pinctrl_1: pinctrl@11000000 { | ||
46 | compatible = "samsung,pinctrl-exynos4x12"; | ||
47 | reg = <0x11000000 0x1000>; | ||
48 | interrupts = <0 46 0>; | ||
49 | |||
50 | wakup_eint: wakeup-interrupt-controller { | ||
51 | compatible = "samsung,exynos4210-wakeup-eint"; | ||
52 | interrupt-parent = <&gic>; | ||
53 | interrupts = <0 32 0>; | ||
54 | }; | ||
55 | }; | ||
56 | |||
57 | pinctrl_2: pinctrl@03860000 { | ||
58 | compatible = "samsung,pinctrl-exynos4x12"; | ||
59 | reg = <0x03860000 0x1000>; | ||
60 | interrupt-parent = <&combiner>; | ||
61 | interrupts = <10 0>; | ||
62 | }; | ||
63 | |||
64 | pinctrl_3: pinctrl@106E0000 { | ||
65 | compatible = "samsung,pinctrl-exynos4x12"; | ||
66 | reg = <0x106E0000 0x1000>; | ||
67 | interrupts = <0 72 0>; | ||
68 | }; | ||
69 | }; | ||
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index a352df403b7a..942d5761ca97 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts | |||
@@ -17,10 +17,6 @@ | |||
17 | compatible = "samsung,smdk5250", "samsung,exynos5250"; | 17 | compatible = "samsung,smdk5250", "samsung,exynos5250"; |
18 | 18 | ||
19 | aliases { | 19 | aliases { |
20 | mshc0 = &dwmmc_0; | ||
21 | mshc1 = &dwmmc_1; | ||
22 | mshc2 = &dwmmc_2; | ||
23 | mshc3 = &dwmmc_3; | ||
24 | }; | 20 | }; |
25 | 21 | ||
26 | memory { | 22 | memory { |
@@ -55,8 +51,31 @@ | |||
55 | }; | 51 | }; |
56 | }; | 52 | }; |
57 | 53 | ||
54 | i2c@121D0000 { | ||
55 | samsung,i2c-sda-delay = <100>; | ||
56 | samsung,i2c-max-bus-freq = <40000>; | ||
57 | samsung,i2c-slave-addr = <0x38>; | ||
58 | |||
59 | sata-phy { | ||
60 | compatible = "samsung,sata-phy"; | ||
61 | reg = <0x38>; | ||
62 | }; | ||
63 | }; | ||
64 | |||
65 | sata@122F0000 { | ||
66 | samsung,sata-freq = <66>; | ||
67 | }; | ||
68 | |||
58 | i2c@12C80000 { | 69 | i2c@12C80000 { |
59 | status = "disabled"; | 70 | samsung,i2c-sda-delay = <100>; |
71 | samsung,i2c-max-bus-freq = <66000>; | ||
72 | gpios = <&gpa0 6 3 3 0>, | ||
73 | <&gpa0 7 3 3 0>; | ||
74 | |||
75 | hdmiddc@50 { | ||
76 | compatible = "samsung,exynos5-hdmiddc"; | ||
77 | reg = <0x50>; | ||
78 | }; | ||
60 | }; | 79 | }; |
61 | 80 | ||
62 | i2c@12C90000 { | 81 | i2c@12C90000 { |
@@ -79,7 +98,17 @@ | |||
79 | status = "disabled"; | 98 | status = "disabled"; |
80 | }; | 99 | }; |
81 | 100 | ||
82 | dwmmc_0: dwmmc0@12200000 { | 101 | i2c@12CE0000 { |
102 | samsung,i2c-sda-delay = <100>; | ||
103 | samsung,i2c-max-bus-freq = <66000>; | ||
104 | |||
105 | hdmiphy@38 { | ||
106 | compatible = "samsung,exynos5-hdmiphy"; | ||
107 | reg = <0x38>; | ||
108 | }; | ||
109 | }; | ||
110 | |||
111 | dwmmc0@12200000 { | ||
83 | num-slots = <1>; | 112 | num-slots = <1>; |
84 | supports-highspeed; | 113 | supports-highspeed; |
85 | broken-cd; | 114 | broken-cd; |
@@ -100,11 +129,11 @@ | |||
100 | }; | 129 | }; |
101 | }; | 130 | }; |
102 | 131 | ||
103 | dwmmc_1: dwmmc1@12210000 { | 132 | dwmmc1@12210000 { |
104 | status = "disabled"; | 133 | status = "disabled"; |
105 | }; | 134 | }; |
106 | 135 | ||
107 | dwmmc_2: dwmmc2@12220000 { | 136 | dwmmc2@12220000 { |
108 | num-slots = <1>; | 137 | num-slots = <1>; |
109 | supports-highspeed; | 138 | supports-highspeed; |
110 | fifo-depth = <0x80>; | 139 | fifo-depth = <0x80>; |
@@ -125,7 +154,7 @@ | |||
125 | }; | 154 | }; |
126 | }; | 155 | }; |
127 | 156 | ||
128 | dwmmc_3: dwmmc3@12230000 { | 157 | dwmmc3@12230000 { |
129 | status = "disabled"; | 158 | status = "disabled"; |
130 | }; | 159 | }; |
131 | 160 | ||
@@ -166,4 +195,13 @@ | |||
166 | spi_2: spi@12d40000 { | 195 | spi_2: spi@12d40000 { |
167 | status = "disabled"; | 196 | status = "disabled"; |
168 | }; | 197 | }; |
198 | |||
199 | hdmi { | ||
200 | hpd-gpio = <&gpx3 7 0xf 1 3>; | ||
201 | }; | ||
202 | |||
203 | codec@11000000 { | ||
204 | samsung,mfc-r = <0x43000000 0x800000>; | ||
205 | samsung,mfc-l = <0x51000000 0x800000>; | ||
206 | }; | ||
169 | }; | 207 | }; |
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts new file mode 100644 index 000000000000..17dd951c1cd2 --- /dev/null +++ b/arch/arm/boot/dts/exynos5250-snow.dts | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * Google Snow board device tree source | ||
3 | * | ||
4 | * Copyright (c) 2012 Google, Inc | ||
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 | /dts-v1/; | ||
12 | /include/ "exynos5250.dtsi" | ||
13 | /include/ "cros5250-common.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "Google Snow"; | ||
17 | compatible = "google,snow", "samsung,exynos5250"; | ||
18 | |||
19 | gpio-keys { | ||
20 | compatible = "gpio-keys"; | ||
21 | |||
22 | lid-switch { | ||
23 | label = "Lid"; | ||
24 | gpios = <&gpx3 5 0 0x10000 0>; | ||
25 | linux,input-type = <5>; /* EV_SW */ | ||
26 | linux,code = <0>; /* SW_LID */ | ||
27 | debounce-interval = <1>; | ||
28 | gpio-key,wakeup; | ||
29 | }; | ||
30 | }; | ||
31 | |||
32 | /* | ||
33 | * On Snow we've got SIP WiFi and so can keep drive strengths low to | ||
34 | * reduce EMI. | ||
35 | */ | ||
36 | dwmmc3@12230000 { | ||
37 | slot@0 { | ||
38 | gpios = <&gpc4 0 2 0 0>, <&gpc4 1 2 3 0>, | ||
39 | <&gpc4 3 2 3 0>, <&gpc4 4 2 3 0>, | ||
40 | <&gpc4 5 2 3 0>, <&gpc4 6 2 3 0>; | ||
41 | }; | ||
42 | }; | ||
43 | }; | ||
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index dddfd6e444dc..36d8246ea50e 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -31,6 +31,10 @@ | |||
31 | gsc1 = &gsc_1; | 31 | gsc1 = &gsc_1; |
32 | gsc2 = &gsc_2; | 32 | gsc2 = &gsc_2; |
33 | gsc3 = &gsc_3; | 33 | gsc3 = &gsc_3; |
34 | mshc0 = &dwmmc_0; | ||
35 | mshc1 = &dwmmc_1; | ||
36 | mshc2 = &dwmmc_2; | ||
37 | mshc3 = &dwmmc_3; | ||
34 | }; | 38 | }; |
35 | 39 | ||
36 | gic:interrupt-controller@10481000 { | 40 | gic:interrupt-controller@10481000 { |
@@ -62,12 +66,24 @@ | |||
62 | interrupts = <0 42 0>; | 66 | interrupts = <0 42 0>; |
63 | }; | 67 | }; |
64 | 68 | ||
69 | codec@11000000 { | ||
70 | compatible = "samsung,mfc-v6"; | ||
71 | reg = <0x11000000 0x10000>; | ||
72 | interrupts = <0 96 0>; | ||
73 | }; | ||
74 | |||
65 | rtc { | 75 | rtc { |
66 | compatible = "samsung,s3c6410-rtc"; | 76 | compatible = "samsung,s3c6410-rtc"; |
67 | reg = <0x101E0000 0x100>; | 77 | reg = <0x101E0000 0x100>; |
68 | interrupts = <0 43 0>, <0 44 0>; | 78 | interrupts = <0 43 0>, <0 44 0>; |
69 | }; | 79 | }; |
70 | 80 | ||
81 | tmu@10060000 { | ||
82 | compatible = "samsung,exynos5250-tmu"; | ||
83 | reg = <0x10060000 0x100>; | ||
84 | interrupts = <0 65 0>; | ||
85 | }; | ||
86 | |||
71 | serial@12C00000 { | 87 | serial@12C00000 { |
72 | compatible = "samsung,exynos4210-uart"; | 88 | compatible = "samsung,exynos4210-uart"; |
73 | reg = <0x12C00000 0x100>; | 89 | reg = <0x12C00000 0x100>; |
@@ -92,6 +108,17 @@ | |||
92 | interrupts = <0 54 0>; | 108 | interrupts = <0 54 0>; |
93 | }; | 109 | }; |
94 | 110 | ||
111 | sata@122F0000 { | ||
112 | compatible = "samsung,exynos5-sata-ahci"; | ||
113 | reg = <0x122F0000 0x1ff>; | ||
114 | interrupts = <0 115 0>; | ||
115 | }; | ||
116 | |||
117 | sata-phy@12170000 { | ||
118 | compatible = "samsung,exynos5-sata-phy"; | ||
119 | reg = <0x12170000 0x1ff>; | ||
120 | }; | ||
121 | |||
95 | i2c@12C60000 { | 122 | i2c@12C60000 { |
96 | compatible = "samsung,s3c2440-i2c"; | 123 | compatible = "samsung,s3c2440-i2c"; |
97 | reg = <0x12C60000 0x100>; | 124 | reg = <0x12C60000 0x100>; |
@@ -156,6 +183,21 @@ | |||
156 | #size-cells = <0>; | 183 | #size-cells = <0>; |
157 | }; | 184 | }; |
158 | 185 | ||
186 | i2c@12CE0000 { | ||
187 | compatible = "samsung,s3c2440-hdmiphy-i2c"; | ||
188 | reg = <0x12CE0000 0x1000>; | ||
189 | interrupts = <0 64 0>; | ||
190 | #address-cells = <1>; | ||
191 | #size-cells = <0>; | ||
192 | }; | ||
193 | |||
194 | i2c@121D0000 { | ||
195 | compatible = "samsung,exynos5-sata-phy-i2c"; | ||
196 | reg = <0x121D0000 0x100>; | ||
197 | #address-cells = <1>; | ||
198 | #size-cells = <0>; | ||
199 | }; | ||
200 | |||
159 | spi_0: spi@12d20000 { | 201 | spi_0: spi@12d20000 { |
160 | compatible = "samsung,exynos4210-spi"; | 202 | compatible = "samsung,exynos4210-spi"; |
161 | reg = <0x12d20000 0x100>; | 203 | reg = <0x12d20000 0x100>; |
@@ -186,7 +228,7 @@ | |||
186 | #size-cells = <0>; | 228 | #size-cells = <0>; |
187 | }; | 229 | }; |
188 | 230 | ||
189 | dwmmc0@12200000 { | 231 | dwmmc_0: dwmmc0@12200000 { |
190 | compatible = "samsung,exynos5250-dw-mshc"; | 232 | compatible = "samsung,exynos5250-dw-mshc"; |
191 | reg = <0x12200000 0x1000>; | 233 | reg = <0x12200000 0x1000>; |
192 | interrupts = <0 75 0>; | 234 | interrupts = <0 75 0>; |
@@ -194,7 +236,7 @@ | |||
194 | #size-cells = <0>; | 236 | #size-cells = <0>; |
195 | }; | 237 | }; |
196 | 238 | ||
197 | dwmmc1@12210000 { | 239 | dwmmc_1: dwmmc1@12210000 { |
198 | compatible = "samsung,exynos5250-dw-mshc"; | 240 | compatible = "samsung,exynos5250-dw-mshc"; |
199 | reg = <0x12210000 0x1000>; | 241 | reg = <0x12210000 0x1000>; |
200 | interrupts = <0 76 0>; | 242 | interrupts = <0 76 0>; |
@@ -202,7 +244,7 @@ | |||
202 | #size-cells = <0>; | 244 | #size-cells = <0>; |
203 | }; | 245 | }; |
204 | 246 | ||
205 | dwmmc2@12220000 { | 247 | dwmmc_2: dwmmc2@12220000 { |
206 | compatible = "samsung,exynos5250-dw-mshc"; | 248 | compatible = "samsung,exynos5250-dw-mshc"; |
207 | reg = <0x12220000 0x1000>; | 249 | reg = <0x12220000 0x1000>; |
208 | interrupts = <0 77 0>; | 250 | interrupts = <0 77 0>; |
@@ -210,7 +252,7 @@ | |||
210 | #size-cells = <0>; | 252 | #size-cells = <0>; |
211 | }; | 253 | }; |
212 | 254 | ||
213 | dwmmc3@12230000 { | 255 | dwmmc_3: dwmmc3@12230000 { |
214 | compatible = "samsung,exynos5250-dw-mshc"; | 256 | compatible = "samsung,exynos5250-dw-mshc"; |
215 | reg = <0x12230000 0x1000>; | 257 | reg = <0x12230000 0x1000>; |
216 | interrupts = <0 78 0>; | 258 | interrupts = <0 78 0>; |
@@ -520,4 +562,16 @@ | |||
520 | reg = <0x13e30000 0x1000>; | 562 | reg = <0x13e30000 0x1000>; |
521 | interrupts = <0 88 0>; | 563 | interrupts = <0 88 0>; |
522 | }; | 564 | }; |
565 | |||
566 | hdmi { | ||
567 | compatible = "samsung,exynos5-hdmi"; | ||
568 | reg = <0x14530000 0x100000>; | ||
569 | interrupts = <0 95 0>; | ||
570 | }; | ||
571 | |||
572 | mixer { | ||
573 | compatible = "samsung,exynos5-mixer"; | ||
574 | reg = <0x14450000 0x10000>; | ||
575 | interrupts = <0 94 0>; | ||
576 | }; | ||
523 | }; | 577 | }; |
diff --git a/arch/arm/boot/dts/href.dtsi b/arch/arm/boot/dts/href.dtsi new file mode 100644 index 000000000000..592fb9dc35bd --- /dev/null +++ b/arch/arm/boot/dts/href.dtsi | |||
@@ -0,0 +1,273 @@ | |||
1 | /* | ||
2 | * Copyright 2012 ST-Ericsson AB | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /include/ "dbx5x0.dtsi" | ||
13 | |||
14 | / { | ||
15 | memory { | ||
16 | reg = <0x00000000 0x20000000>; | ||
17 | }; | ||
18 | |||
19 | gpio_keys { | ||
20 | compatible = "gpio-keys"; | ||
21 | #address-cells = <1>; | ||
22 | #size-cells = <0>; | ||
23 | |||
24 | button@1 { | ||
25 | linux,code = <11>; | ||
26 | label = "SFH7741 Proximity Sensor"; | ||
27 | }; | ||
28 | }; | ||
29 | |||
30 | soc-u9500 { | ||
31 | uart@80120000 { | ||
32 | status = "okay"; | ||
33 | }; | ||
34 | |||
35 | uart@80121000 { | ||
36 | status = "okay"; | ||
37 | }; | ||
38 | |||
39 | uart@80007000 { | ||
40 | status = "okay"; | ||
41 | }; | ||
42 | |||
43 | i2c@80004000 { | ||
44 | tc3589x@42 { | ||
45 | compatible = "tc3589x"; | ||
46 | reg = <0x42>; | ||
47 | interrupt-parent = <&gpio6>; | ||
48 | interrupts = <25 0x1>; | ||
49 | |||
50 | interrupt-controller; | ||
51 | #interrupt-cells = <2>; | ||
52 | |||
53 | tc3589x_gpio: tc3589x_gpio { | ||
54 | compatible = "tc3589x-gpio"; | ||
55 | interrupts = <0 0x1>; | ||
56 | |||
57 | interrupt-controller; | ||
58 | #interrupt-cells = <2>; | ||
59 | gpio-controller; | ||
60 | #gpio-cells = <2>; | ||
61 | }; | ||
62 | }; | ||
63 | }; | ||
64 | |||
65 | i2c@80128000 { | ||
66 | lp5521@0x33 { | ||
67 | compatible = "lp5521"; | ||
68 | reg = <0x33>; | ||
69 | }; | ||
70 | |||
71 | lp5521@0x34 { | ||
72 | compatible = "lp5521"; | ||
73 | reg = <0x34>; | ||
74 | }; | ||
75 | |||
76 | bh1780@0x29 { | ||
77 | compatible = "rohm,bh1780gli"; | ||
78 | reg = <0x33>; | ||
79 | }; | ||
80 | }; | ||
81 | |||
82 | // External Micro SD slot | ||
83 | sdi0_per1@80126000 { | ||
84 | arm,primecell-periphid = <0x10480180>; | ||
85 | max-frequency = <50000000>; | ||
86 | bus-width = <4>; | ||
87 | mmc-cap-sd-highspeed; | ||
88 | mmc-cap-mmc-highspeed; | ||
89 | vmmc-supply = <&ab8500_ldo_aux3_reg>; | ||
90 | |||
91 | cd-gpios = <&tc3589x_gpio 3 0x4>; | ||
92 | |||
93 | status = "okay"; | ||
94 | }; | ||
95 | |||
96 | // WLAN SDIO channel | ||
97 | sdi1_per2@80118000 { | ||
98 | arm,primecell-periphid = <0x10480180>; | ||
99 | max-frequency = <50000000>; | ||
100 | bus-width = <4>; | ||
101 | |||
102 | status = "okay"; | ||
103 | }; | ||
104 | |||
105 | // PoP:ed eMMC | ||
106 | sdi2_per3@80005000 { | ||
107 | arm,primecell-periphid = <0x10480180>; | ||
108 | max-frequency = <50000000>; | ||
109 | bus-width = <8>; | ||
110 | mmc-cap-mmc-highspeed; | ||
111 | |||
112 | status = "okay"; | ||
113 | }; | ||
114 | |||
115 | // On-board eMMC | ||
116 | sdi4_per2@80114000 { | ||
117 | arm,primecell-periphid = <0x10480180>; | ||
118 | max-frequency = <50000000>; | ||
119 | bus-width = <8>; | ||
120 | mmc-cap-mmc-highspeed; | ||
121 | vmmc-supply = <&ab8500_ldo_aux2_reg>; | ||
122 | |||
123 | status = "okay"; | ||
124 | }; | ||
125 | |||
126 | sound { | ||
127 | compatible = "stericsson,snd-soc-mop500"; | ||
128 | |||
129 | stericsson,cpu-dai = <&msp1 &msp3>; | ||
130 | stericsson,audio-codec = <&codec>; | ||
131 | }; | ||
132 | |||
133 | msp1: msp@80124000 { | ||
134 | status = "okay"; | ||
135 | }; | ||
136 | |||
137 | msp3: msp@80125000 { | ||
138 | status = "okay"; | ||
139 | }; | ||
140 | |||
141 | prcmu@80157000 { | ||
142 | db8500-prcmu-regulators { | ||
143 | db8500_vape_reg: db8500_vape { | ||
144 | regulator-name = "db8500-vape"; | ||
145 | }; | ||
146 | |||
147 | db8500_varm_reg: db8500_varm { | ||
148 | regulator-name = "db8500-varm"; | ||
149 | }; | ||
150 | |||
151 | db8500_vmodem_reg: db8500_vmodem { | ||
152 | regulator-name = "db8500-vmodem"; | ||
153 | }; | ||
154 | |||
155 | db8500_vpll_reg: db8500_vpll { | ||
156 | regulator-name = "db8500-vpll"; | ||
157 | }; | ||
158 | |||
159 | db8500_vsmps1_reg: db8500_vsmps1 { | ||
160 | regulator-name = "db8500-vsmps1"; | ||
161 | }; | ||
162 | |||
163 | db8500_vsmps2_reg: db8500_vsmps2 { | ||
164 | regulator-name = "db8500-vsmps2"; | ||
165 | }; | ||
166 | |||
167 | db8500_vsmps3_reg: db8500_vsmps3 { | ||
168 | regulator-name = "db8500-vsmps3"; | ||
169 | }; | ||
170 | |||
171 | db8500_vrf1_reg: db8500_vrf1 { | ||
172 | regulator-name = "db8500-vrf1"; | ||
173 | }; | ||
174 | |||
175 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { | ||
176 | regulator-name = "db8500-sva-mmdsp"; | ||
177 | }; | ||
178 | |||
179 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { | ||
180 | regulator-name = "db8500-sva-mmdsp-ret"; | ||
181 | }; | ||
182 | |||
183 | db8500_sva_pipe_reg: db8500_sva_pipe { | ||
184 | regulator-name = "db8500_sva_pipe"; | ||
185 | }; | ||
186 | |||
187 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { | ||
188 | regulator-name = "db8500_sia_mmdsp"; | ||
189 | }; | ||
190 | |||
191 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { | ||
192 | regulator-name = "db8500-sia-mmdsp-ret"; | ||
193 | }; | ||
194 | |||
195 | db8500_sia_pipe_reg: db8500_sia_pipe { | ||
196 | regulator-name = "db8500-sia-pipe"; | ||
197 | }; | ||
198 | |||
199 | db8500_sga_reg: db8500_sga { | ||
200 | regulator-name = "db8500-sga"; | ||
201 | }; | ||
202 | |||
203 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { | ||
204 | regulator-name = "db8500-b2r2-mcde"; | ||
205 | }; | ||
206 | |||
207 | db8500_esram12_reg: db8500_esram12 { | ||
208 | regulator-name = "db8500-esram12"; | ||
209 | }; | ||
210 | |||
211 | db8500_esram12_ret_reg: db8500_esram12_ret { | ||
212 | regulator-name = "db8500-esram12-ret"; | ||
213 | }; | ||
214 | |||
215 | db8500_esram34_reg: db8500_esram34 { | ||
216 | regulator-name = "db8500-esram34"; | ||
217 | }; | ||
218 | |||
219 | db8500_esram34_ret_reg: db8500_esram34_ret { | ||
220 | regulator-name = "db8500-esram34-ret"; | ||
221 | }; | ||
222 | }; | ||
223 | |||
224 | ab8500@5 { | ||
225 | ab8500-regulators { | ||
226 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | ||
227 | regulator-name = "V-DISPLAY"; | ||
228 | }; | ||
229 | |||
230 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { | ||
231 | regulator-name = "V-eMMC1"; | ||
232 | }; | ||
233 | |||
234 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { | ||
235 | regulator-name = "V-MMC-SD"; | ||
236 | }; | ||
237 | |||
238 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { | ||
239 | regulator-name = "V-INTCORE"; | ||
240 | }; | ||
241 | |||
242 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { | ||
243 | regulator-name = "V-TVOUT"; | ||
244 | }; | ||
245 | |||
246 | ab8500_ldo_usb_reg: ab8500_ldo_usb { | ||
247 | regulator-name = "dummy"; | ||
248 | }; | ||
249 | |||
250 | ab8500_ldo_audio_reg: ab8500_ldo_audio { | ||
251 | regulator-name = "V-AUD"; | ||
252 | }; | ||
253 | |||
254 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { | ||
255 | regulator-name = "V-AMIC1"; | ||
256 | }; | ||
257 | |||
258 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { | ||
259 | regulator-name = "V-AMIC2"; | ||
260 | }; | ||
261 | |||
262 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { | ||
263 | regulator-name = "V-DMIC"; | ||
264 | }; | ||
265 | |||
266 | ab8500_ldo_ana_reg: ab8500_ldo_ana { | ||
267 | regulator-name = "V-CSI/DSI"; | ||
268 | }; | ||
269 | }; | ||
270 | }; | ||
271 | }; | ||
272 | }; | ||
273 | }; | ||
diff --git a/arch/arm/boot/dts/hrefprev60.dts b/arch/arm/boot/dts/hrefprev60.dts new file mode 100644 index 000000000000..eec29c4a86dc --- /dev/null +++ b/arch/arm/boot/dts/hrefprev60.dts | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Copyright 2012 ST-Ericsson AB | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "dbx5x0.dtsi" | ||
14 | /include/ "href.dtsi" | ||
15 | /include/ "stuib.dtsi" | ||
16 | |||
17 | / { | ||
18 | model = "ST-Ericsson HREF (pre-v60) platform with Device Tree"; | ||
19 | compatible = "st-ericsson,mop500", "st-ericsson,u8500"; | ||
20 | |||
21 | gpio_keys { | ||
22 | button@1 { | ||
23 | gpios = <&tc3589x_gpio 7 0x4>; | ||
24 | }; | ||
25 | }; | ||
26 | |||
27 | soc-u9500 { | ||
28 | i2c@80004000 { | ||
29 | tps61052@33 { | ||
30 | compatible = "tps61052"; | ||
31 | reg = <0x33>; | ||
32 | }; | ||
33 | }; | ||
34 | |||
35 | i2c@80110000 { | ||
36 | bu21013_tp@0x5c { | ||
37 | reset-gpio = <&tc3589x_gpio 13 0x4>; | ||
38 | }; | ||
39 | }; | ||
40 | |||
41 | vmmci: regulator-gpio { | ||
42 | gpios = <&tc3589x_gpio 18 0x4>; | ||
43 | gpio-enable = <&tc3589x_gpio 17 0x4>; | ||
44 | |||
45 | status = "okay"; | ||
46 | }; | ||
47 | }; | ||
48 | }; | ||
diff --git a/arch/arm/boot/dts/hrefv60plus.dts b/arch/arm/boot/dts/hrefv60plus.dts index 2131d77dc9c9..55f4191a626e 100644 --- a/arch/arm/boot/dts/hrefv60plus.dts +++ b/arch/arm/boot/dts/hrefv60plus.dts | |||
@@ -11,85 +11,200 @@ | |||
11 | 11 | ||
12 | /dts-v1/; | 12 | /dts-v1/; |
13 | /include/ "dbx5x0.dtsi" | 13 | /include/ "dbx5x0.dtsi" |
14 | /include/ "href.dtsi" | ||
15 | /include/ "stuib.dtsi" | ||
14 | 16 | ||
15 | / { | 17 | / { |
16 | model = "ST-Ericsson HREF platform with Device Tree"; | 18 | model = "ST-Ericsson HREF (v60+) platform with Device Tree"; |
17 | compatible = "st-ericsson,hrefv60+"; | 19 | compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500"; |
18 | 20 | ||
19 | memory { | 21 | gpio_keys { |
20 | reg = <0x00000000 0x20000000>; | 22 | button@1 { |
23 | gpios = <&gpio6 25 0x4>; | ||
24 | }; | ||
21 | }; | 25 | }; |
22 | 26 | ||
23 | soc-u9500 { | 27 | soc-u9500 { |
24 | uart@80120000 { | 28 | i2c@80110000 { |
29 | bu21013_tp@0x5c { | ||
30 | reset-gpio = <&gpio4 15 0x4>; | ||
31 | }; | ||
32 | }; | ||
33 | |||
34 | // External Micro SD slot | ||
35 | sdi0_per1@80126000 { | ||
36 | arm,primecell-periphid = <0x10480180>; | ||
37 | max-frequency = <50000000>; | ||
38 | bus-width = <4>; | ||
39 | mmc-cap-sd-highspeed; | ||
40 | mmc-cap-mmc-highspeed; | ||
41 | vmmc-supply = <&ab8500_ldo_aux3_reg>; | ||
42 | |||
43 | cd-gpios = <&tc3589x_gpio 3 0x4>; | ||
44 | |||
25 | status = "okay"; | 45 | status = "okay"; |
26 | }; | 46 | }; |
27 | 47 | ||
28 | uart@80121000 { | 48 | // WLAN SDIO channel |
49 | sdi1_per2@80118000 { | ||
50 | arm,primecell-periphid = <0x10480180>; | ||
51 | max-frequency = <50000000>; | ||
52 | bus-width = <4>; | ||
53 | |||
29 | status = "okay"; | 54 | status = "okay"; |
30 | }; | 55 | }; |
31 | 56 | ||
32 | uart@80007000 { | 57 | // PoP:ed eMMC |
58 | sdi2_per3@80005000 { | ||
59 | arm,primecell-periphid = <0x10480180>; | ||
60 | max-frequency = <50000000>; | ||
61 | bus-width = <8>; | ||
62 | mmc-cap-mmc-highspeed; | ||
63 | |||
33 | status = "okay"; | 64 | status = "okay"; |
34 | }; | 65 | }; |
35 | 66 | ||
36 | i2c@80004000 { | 67 | // On-board eMMC |
37 | tc3589x@42 { | 68 | sdi4_per2@80114000 { |
38 | compatible = "tc3589x"; | 69 | arm,primecell-periphid = <0x10480180>; |
39 | reg = <0x42>; | 70 | max-frequency = <50000000>; |
40 | interrupt-parent = <&gpio6>; | 71 | bus-width = <8>; |
41 | interrupts = <25 0x1>; | 72 | mmc-cap-mmc-highspeed; |
73 | vmmc-supply = <&ab8500_ldo_aux2_reg>; | ||
42 | 74 | ||
43 | interrupt-controller; | 75 | status = "okay"; |
44 | #interrupt-cells = <2>; | 76 | }; |
45 | 77 | ||
46 | tc3589x_gpio: tc3589x_gpio { | 78 | prcmu@80157000 { |
47 | compatible = "tc3589x-gpio"; | 79 | db8500-prcmu-regulators { |
48 | interrupts = <0 0x1>; | 80 | db8500_vape_reg: db8500_vape { |
81 | regulator-name = "db8500-vape"; | ||
82 | }; | ||
49 | 83 | ||
50 | interrupt-controller; | 84 | db8500_varm_reg: db8500_varm { |
51 | #interrupt-cells = <2>; | 85 | regulator-name = "db8500-varm"; |
52 | gpio-controller; | ||
53 | #gpio-cells = <2>; | ||
54 | }; | 86 | }; |
55 | }; | ||
56 | 87 | ||
57 | tps61052@33 { | 88 | db8500_vmodem_reg: db8500_vmodem { |
58 | compatible = "tps61052"; | 89 | regulator-name = "db8500-vmodem"; |
59 | reg = <0x33>; | 90 | }; |
60 | }; | ||
61 | }; | ||
62 | 91 | ||
63 | i2c@80128000 { | 92 | db8500_vpll_reg: db8500_vpll { |
64 | lp5521@0x33 { | 93 | regulator-name = "db8500-vpll"; |
65 | compatible = "lp5521"; | 94 | }; |
66 | reg = <0x33>; | ||
67 | }; | ||
68 | 95 | ||
69 | lp5521@0x34 { | 96 | db8500_vsmps1_reg: db8500_vsmps1 { |
70 | compatible = "lp5521"; | 97 | regulator-name = "db8500-vsmps1"; |
71 | reg = <0x34>; | 98 | }; |
72 | }; | 99 | |
100 | db8500_vsmps2_reg: db8500_vsmps2 { | ||
101 | regulator-name = "db8500-vsmps2"; | ||
102 | }; | ||
103 | |||
104 | db8500_vsmps3_reg: db8500_vsmps3 { | ||
105 | regulator-name = "db8500-vsmps3"; | ||
106 | }; | ||
107 | |||
108 | db8500_vrf1_reg: db8500_vrf1 { | ||
109 | regulator-name = "db8500-vrf1"; | ||
110 | }; | ||
111 | |||
112 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { | ||
113 | regulator-name = "db8500-sva-mmdsp"; | ||
114 | }; | ||
115 | |||
116 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { | ||
117 | regulator-name = "db8500-sva-mmdsp-ret"; | ||
118 | }; | ||
119 | |||
120 | db8500_sva_pipe_reg: db8500_sva_pipe { | ||
121 | regulator-name = "db8500_sva_pipe"; | ||
122 | }; | ||
73 | 123 | ||
74 | bh1780@0x29 { | 124 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { |
75 | compatible = "rohm,bh1780gli"; | 125 | regulator-name = "db8500_sia_mmdsp"; |
76 | reg = <0x33>; | 126 | }; |
127 | |||
128 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { | ||
129 | regulator-name = "db8500-sia-mmdsp-ret"; | ||
130 | }; | ||
131 | |||
132 | db8500_sia_pipe_reg: db8500_sia_pipe { | ||
133 | regulator-name = "db8500-sia-pipe"; | ||
134 | }; | ||
135 | |||
136 | db8500_sga_reg: db8500_sga { | ||
137 | regulator-name = "db8500-sga"; | ||
138 | }; | ||
139 | |||
140 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { | ||
141 | regulator-name = "db8500-b2r2-mcde"; | ||
142 | }; | ||
143 | |||
144 | db8500_esram12_reg: db8500_esram12 { | ||
145 | regulator-name = "db8500-esram12"; | ||
146 | }; | ||
147 | |||
148 | db8500_esram12_ret_reg: db8500_esram12_ret { | ||
149 | regulator-name = "db8500-esram12-ret"; | ||
150 | }; | ||
151 | |||
152 | db8500_esram34_reg: db8500_esram34 { | ||
153 | regulator-name = "db8500-esram34"; | ||
154 | }; | ||
155 | |||
156 | db8500_esram34_ret_reg: db8500_esram34_ret { | ||
157 | regulator-name = "db8500-esram34-ret"; | ||
158 | }; | ||
77 | }; | 159 | }; |
78 | }; | ||
79 | 160 | ||
80 | sound { | 161 | ab8500@5 { |
81 | compatible = "stericsson,snd-soc-mop500"; | 162 | ab8500-regulators { |
163 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | ||
164 | regulator-name = "V-DISPLAY"; | ||
165 | }; | ||
82 | 166 | ||
83 | stericsson,cpu-dai = <&msp1 &msp3>; | 167 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { |
84 | stericsson,audio-codec = <&codec>; | 168 | regulator-name = "V-eMMC1"; |
85 | }; | 169 | }; |
86 | 170 | ||
87 | msp1: msp@80124000 { | 171 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { |
88 | status = "okay"; | 172 | regulator-name = "V-MMC-SD"; |
89 | }; | 173 | }; |
90 | 174 | ||
91 | msp3: msp@80125000 { | 175 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { |
92 | status = "okay"; | 176 | regulator-name = "V-INTCORE"; |
177 | }; | ||
178 | |||
179 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { | ||
180 | regulator-name = "V-TVOUT"; | ||
181 | }; | ||
182 | |||
183 | ab8500_ldo_usb_reg: ab8500_ldo_usb { | ||
184 | regulator-name = "dummy"; | ||
185 | }; | ||
186 | |||
187 | ab8500_ldo_audio_reg: ab8500_ldo_audio { | ||
188 | regulator-name = "V-AUD"; | ||
189 | }; | ||
190 | |||
191 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { | ||
192 | regulator-name = "V-AMIC1"; | ||
193 | }; | ||
194 | |||
195 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { | ||
196 | regulator-name = "V-AMIC2"; | ||
197 | }; | ||
198 | |||
199 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { | ||
200 | regulator-name = "V-DMIC"; | ||
201 | }; | ||
202 | |||
203 | ab8500_ldo_ana_reg: ab8500_ldo_ana { | ||
204 | regulator-name = "V-CSI/DSI"; | ||
205 | }; | ||
206 | }; | ||
207 | }; | ||
93 | }; | 208 | }; |
94 | }; | 209 | }; |
95 | }; | 210 | }; |
diff --git a/arch/arm/boot/dts/imx23-olinuxino.dts b/arch/arm/boot/dts/imx23-olinuxino.dts index 384d8b66f337..7c43b8e70b9f 100644 --- a/arch/arm/boot/dts/imx23-olinuxino.dts +++ b/arch/arm/boot/dts/imx23-olinuxino.dts | |||
@@ -40,6 +40,15 @@ | |||
40 | reg = <0>; | 40 | reg = <0>; |
41 | fsl,pinmux-ids = < | 41 | fsl,pinmux-ids = < |
42 | 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ | 42 | 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ |
43 | >; | ||
44 | fsl,drive-strength = <0>; | ||
45 | fsl,voltage = <1>; | ||
46 | fsl,pull-up = <0>; | ||
47 | }; | ||
48 | |||
49 | led_pin_gpio0_17: led_gpio0_17@0 { | ||
50 | reg = <0>; | ||
51 | fsl,pinmux-ids = < | ||
43 | 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ | 52 | 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ |
44 | >; | 53 | >; |
45 | fsl,drive-strength = <0>; | 54 | fsl,drive-strength = <0>; |
@@ -47,6 +56,15 @@ | |||
47 | fsl,pull-up = <0>; | 56 | fsl,pull-up = <0>; |
48 | }; | 57 | }; |
49 | }; | 58 | }; |
59 | |||
60 | ssp1: ssp@80034000 { | ||
61 | #address-cells = <1>; | ||
62 | #size-cells = <0>; | ||
63 | compatible = "fsl,imx23-spi"; | ||
64 | pinctrl-names = "default"; | ||
65 | pinctrl-0 = <&spi2_pins_a>; | ||
66 | status = "okay"; | ||
67 | }; | ||
50 | }; | 68 | }; |
51 | 69 | ||
52 | apbx@80040000 { | 70 | apbx@80040000 { |
@@ -91,11 +109,12 @@ | |||
91 | 109 | ||
92 | leds { | 110 | leds { |
93 | compatible = "gpio-leds"; | 111 | compatible = "gpio-leds"; |
112 | pinctrl-names = "default"; | ||
113 | pinctrl-0 = <&led_pin_gpio0_17>; | ||
94 | 114 | ||
95 | user { | 115 | user { |
96 | label = "green"; | 116 | label = "green"; |
97 | gpios = <&gpio2 1 0>; | 117 | gpios = <&gpio2 1 1>; |
98 | linux,default-trigger = "default-on"; | ||
99 | }; | 118 | }; |
100 | }; | 119 | }; |
101 | }; | 120 | }; |
diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi index 6d31aa383460..65415c598a5e 100644 --- a/arch/arm/boot/dts/imx23.dtsi +++ b/arch/arm/boot/dts/imx23.dtsi | |||
@@ -279,6 +279,19 @@ | |||
279 | fsl,voltage = <1>; | 279 | fsl,voltage = <1>; |
280 | fsl,pull-up = <0>; | 280 | fsl,pull-up = <0>; |
281 | }; | 281 | }; |
282 | |||
283 | spi2_pins_a: spi2@0 { | ||
284 | reg = <0>; | ||
285 | fsl,pinmux-ids = < | ||
286 | 0x0182 /* MX23_PAD_GPMI_WRN__SSP2_SCK */ | ||
287 | 0x0142 /* MX23_PAD_GPMI_RDY1__SSP2_CMD */ | ||
288 | 0x0002 /* MX23_PAD_GPMI_D00__SSP2_DATA0 */ | ||
289 | 0x0032 /* MX23_PAD_GPMI_D03__SSP2_DATA3 */ | ||
290 | >; | ||
291 | fsl,drive-strength = <1>; | ||
292 | fsl,voltage = <1>; | ||
293 | fsl,pull-up = <1>; | ||
294 | }; | ||
282 | }; | 295 | }; |
283 | 296 | ||
284 | digctl@8001c000 { | 297 | digctl@8001c000 { |
diff --git a/arch/arm/boot/dts/imx25-karo-tx25.dts b/arch/arm/boot/dts/imx25-karo-tx25.dts new file mode 100644 index 000000000000..d81f8a0b9794 --- /dev/null +++ b/arch/arm/boot/dts/imx25-karo-tx25.dts | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Sascha Hauer, Pengutronix | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "imx25.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "Ka-Ro TX25"; | ||
17 | compatible = "karo,imx25-tx25", "fsl,imx25"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x80000000 0x02000000 0x90000000 0x02000000>; | ||
21 | }; | ||
22 | |||
23 | soc { | ||
24 | aips@43f00000 { | ||
25 | uart1: serial@43f90000 { | ||
26 | status = "okay"; | ||
27 | }; | ||
28 | }; | ||
29 | |||
30 | spba@50000000 { | ||
31 | fec: ethernet@50038000 { | ||
32 | status = "okay"; | ||
33 | phy-mode = "rmii"; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | emi@80000000 { | ||
38 | nand@bb000000 { | ||
39 | nand-on-flash-bbt; | ||
40 | status = "okay"; | ||
41 | }; | ||
42 | }; | ||
43 | }; | ||
44 | }; | ||
diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi new file mode 100644 index 000000000000..e1b13ebc96d6 --- /dev/null +++ b/arch/arm/boot/dts/imx25.dtsi | |||
@@ -0,0 +1,515 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de> | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /include/ "skeleton.dtsi" | ||
13 | |||
14 | / { | ||
15 | aliases { | ||
16 | serial0 = &uart1; | ||
17 | serial1 = &uart2; | ||
18 | serial2 = &uart3; | ||
19 | serial3 = &uart4; | ||
20 | serial4 = &uart5; | ||
21 | gpio0 = &gpio1; | ||
22 | gpio1 = &gpio2; | ||
23 | gpio2 = &gpio3; | ||
24 | gpio3 = &gpio4; | ||
25 | usb0 = &usbotg; | ||
26 | usb1 = &usbhost1; | ||
27 | }; | ||
28 | |||
29 | asic: asic-interrupt-controller@68000000 { | ||
30 | compatible = "fsl,imx25-asic", "fsl,avic"; | ||
31 | interrupt-controller; | ||
32 | #interrupt-cells = <1>; | ||
33 | reg = <0x68000000 0x8000000>; | ||
34 | }; | ||
35 | |||
36 | clocks { | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <0>; | ||
39 | |||
40 | osc { | ||
41 | compatible = "fsl,imx-osc", "fixed-clock"; | ||
42 | clock-frequency = <24000000>; | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | soc { | ||
47 | #address-cells = <1>; | ||
48 | #size-cells = <1>; | ||
49 | compatible = "simple-bus"; | ||
50 | interrupt-parent = <&asic>; | ||
51 | ranges; | ||
52 | |||
53 | aips@43f00000 { /* AIPS1 */ | ||
54 | compatible = "fsl,aips-bus", "simple-bus"; | ||
55 | #address-cells = <1>; | ||
56 | #size-cells = <1>; | ||
57 | reg = <0x43f00000 0x100000>; | ||
58 | ranges; | ||
59 | |||
60 | i2c1: i2c@43f80000 { | ||
61 | #address-cells = <1>; | ||
62 | #size-cells = <0>; | ||
63 | compatible = "fsl,imx25-i2c", "fsl,imx21-i2c"; | ||
64 | reg = <0x43f80000 0x4000>; | ||
65 | clocks = <&clks 48>; | ||
66 | clock-names = ""; | ||
67 | interrupts = <3>; | ||
68 | status = "disabled"; | ||
69 | }; | ||
70 | |||
71 | i2c3: i2c@43f84000 { | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <0>; | ||
74 | compatible = "fsl,imx25-i2c", "fsl,imx21-i2c"; | ||
75 | reg = <0x43f84000 0x4000>; | ||
76 | clocks = <&clks 48>; | ||
77 | clock-names = ""; | ||
78 | interrupts = <10>; | ||
79 | status = "disabled"; | ||
80 | }; | ||
81 | |||
82 | can1: can@43f88000 { | ||
83 | compatible = "fsl,imx25-flexcan", "fsl,p1010-flexcan"; | ||
84 | reg = <0x43f88000 0x4000>; | ||
85 | interrupts = <43>; | ||
86 | clocks = <&clks 75>, <&clks 75>; | ||
87 | clock-names = "ipg", "per"; | ||
88 | status = "disabled"; | ||
89 | }; | ||
90 | |||
91 | can2: can@43f8c000 { | ||
92 | compatible = "fsl,imx25-flexcan", "fsl,p1010-flexcan"; | ||
93 | reg = <0x43f8c000 0x4000>; | ||
94 | interrupts = <44>; | ||
95 | clocks = <&clks 76>, <&clks 76>; | ||
96 | clock-names = "ipg", "per"; | ||
97 | status = "disabled"; | ||
98 | }; | ||
99 | |||
100 | uart1: serial@43f90000 { | ||
101 | compatible = "fsl,imx25-uart", "fsl,imx21-uart"; | ||
102 | reg = <0x43f90000 0x4000>; | ||
103 | interrupts = <45>; | ||
104 | clocks = <&clks 120>, <&clks 57>; | ||
105 | clock-names = "ipg", "per"; | ||
106 | status = "disabled"; | ||
107 | }; | ||
108 | |||
109 | uart2: serial@43f94000 { | ||
110 | compatible = "fsl,imx25-uart", "fsl,imx21-uart"; | ||
111 | reg = <0x43f94000 0x4000>; | ||
112 | interrupts = <32>; | ||
113 | clocks = <&clks 121>, <&clks 57>; | ||
114 | clock-names = "ipg", "per"; | ||
115 | status = "disabled"; | ||
116 | }; | ||
117 | |||
118 | i2c2: i2c@43f98000 { | ||
119 | #address-cells = <1>; | ||
120 | #size-cells = <0>; | ||
121 | compatible = "fsl,imx25-i2c", "fsl,imx21-i2c"; | ||
122 | reg = <0x43f98000 0x4000>; | ||
123 | clocks = <&clks 48>; | ||
124 | clock-names = ""; | ||
125 | interrupts = <4>; | ||
126 | status = "disabled"; | ||
127 | }; | ||
128 | |||
129 | owire@43f9c000 { | ||
130 | #address-cells = <1>; | ||
131 | #size-cells = <0>; | ||
132 | reg = <0x43f9c000 0x4000>; | ||
133 | clocks = <&clks 51>; | ||
134 | clock-names = ""; | ||
135 | interrupts = <2>; | ||
136 | status = "disabled"; | ||
137 | }; | ||
138 | |||
139 | spi1: cspi@43fa4000 { | ||
140 | #address-cells = <1>; | ||
141 | #size-cells = <0>; | ||
142 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | ||
143 | reg = <0x43fa4000 0x4000>; | ||
144 | clocks = <&clks 62>; | ||
145 | clock-names = "ipg"; | ||
146 | interrupts = <14>; | ||
147 | status = "disabled"; | ||
148 | }; | ||
149 | |||
150 | kpp@43fa8000 { | ||
151 | #address-cells = <1>; | ||
152 | #size-cells = <0>; | ||
153 | reg = <0x43fa8000 0x4000>; | ||
154 | clocks = <&clks 102>; | ||
155 | clock-names = ""; | ||
156 | interrupts = <24>; | ||
157 | status = "disabled"; | ||
158 | }; | ||
159 | |||
160 | iomuxc@43fac000{ | ||
161 | compatible = "fsl,imx25-iomuxc"; | ||
162 | reg = <0x43fac000 0x4000>; | ||
163 | }; | ||
164 | |||
165 | audmux@43fb0000 { | ||
166 | compatible = "fsl,imx25-audmux", "fsl,imx31-audmux"; | ||
167 | reg = <0x43fb0000 0x4000>; | ||
168 | status = "disabled"; | ||
169 | }; | ||
170 | }; | ||
171 | |||
172 | spba@50000000 { | ||
173 | compatible = "fsl,spba-bus", "simple-bus"; | ||
174 | #address-cells = <1>; | ||
175 | #size-cells = <1>; | ||
176 | reg = <0x50000000 0x40000>; | ||
177 | ranges; | ||
178 | |||
179 | spi3: cspi@50004000 { | ||
180 | #address-cells = <1>; | ||
181 | #size-cells = <0>; | ||
182 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | ||
183 | reg = <0x50004000 0x4000>; | ||
184 | interrupts = <0>; | ||
185 | clocks = <&clks 80>; | ||
186 | clock-names = "ipg"; | ||
187 | status = "disabled"; | ||
188 | }; | ||
189 | |||
190 | uart4: serial@50008000 { | ||
191 | compatible = "fsl,imx25-uart", "fsl,imx21-uart"; | ||
192 | reg = <0x50008000 0x4000>; | ||
193 | interrupts = <5>; | ||
194 | clocks = <&clks 123>, <&clks 57>; | ||
195 | clock-names = "ipg", "per"; | ||
196 | status = "disabled"; | ||
197 | }; | ||
198 | |||
199 | uart3: serial@5000c000 { | ||
200 | compatible = "fsl,imx25-uart", "fsl,imx21-uart"; | ||
201 | reg = <0x5000c000 0x4000>; | ||
202 | interrupts = <18>; | ||
203 | clocks = <&clks 122>, <&clks 57>; | ||
204 | clock-names = "ipg", "per"; | ||
205 | status = "disabled"; | ||
206 | }; | ||
207 | |||
208 | spi2: cspi@50010000 { | ||
209 | #address-cells = <1>; | ||
210 | #size-cells = <0>; | ||
211 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | ||
212 | reg = <0x50010000 0x4000>; | ||
213 | clocks = <&clks 79>; | ||
214 | clock-names = "ipg"; | ||
215 | interrupts = <13>; | ||
216 | status = "disabled"; | ||
217 | }; | ||
218 | |||
219 | ssi2: ssi@50014000 { | ||
220 | compatible = "fsl,imx25-ssi", "fsl,imx21-ssi"; | ||
221 | reg = <0x50014000 0x4000>; | ||
222 | interrupts = <11>; | ||
223 | status = "disabled"; | ||
224 | }; | ||
225 | |||
226 | esai@50018000 { | ||
227 | reg = <0x50018000 0x4000>; | ||
228 | interrupts = <7>; | ||
229 | }; | ||
230 | |||
231 | uart5: serial@5002c000 { | ||
232 | compatible = "fsl,imx25-uart", "fsl,imx21-uart"; | ||
233 | reg = <0x5002c000 0x4000>; | ||
234 | interrupts = <40>; | ||
235 | clocks = <&clks 124>, <&clks 57>; | ||
236 | clock-names = "ipg", "per"; | ||
237 | status = "disabled"; | ||
238 | }; | ||
239 | |||
240 | tsc: tsc@50030000 { | ||
241 | compatible = "fsl,imx25-adc", "fsl,imx21-tsc"; | ||
242 | reg = <0x50030000 0x4000>; | ||
243 | interrupts = <46>; | ||
244 | clocks = <&clks 119>; | ||
245 | clock-names = "ipg"; | ||
246 | status = "disabled"; | ||
247 | }; | ||
248 | |||
249 | ssi1: ssi@50034000 { | ||
250 | compatible = "fsl,imx25-ssi", "fsl,imx21-ssi"; | ||
251 | reg = <0x50034000 0x4000>; | ||
252 | interrupts = <12>; | ||
253 | status = "disabled"; | ||
254 | }; | ||
255 | |||
256 | fec: ethernet@50038000 { | ||
257 | compatible = "fsl,imx25-fec"; | ||
258 | reg = <0x50038000 0x4000>; | ||
259 | interrupts = <57>; | ||
260 | clocks = <&clks 88>, <&clks 65>; | ||
261 | clock-names = "ipg", "ahb"; | ||
262 | status = "disabled"; | ||
263 | }; | ||
264 | }; | ||
265 | |||
266 | aips@53f00000 { /* AIPS2 */ | ||
267 | compatible = "fsl,aips-bus", "simple-bus"; | ||
268 | #address-cells = <1>; | ||
269 | #size-cells = <1>; | ||
270 | reg = <0x53f00000 0x100000>; | ||
271 | ranges; | ||
272 | |||
273 | clks: ccm@53f80000 { | ||
274 | compatible = "fsl,imx25-ccm"; | ||
275 | reg = <0x53f80000 0x4000>; | ||
276 | interrupts = <31>; | ||
277 | #clock-cells = <1>; | ||
278 | }; | ||
279 | |||
280 | gpt4: timer@53f84000 { | ||
281 | compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; | ||
282 | reg = <0x53f84000 0x4000>; | ||
283 | clocks = <&clks 9>, <&clks 45>; | ||
284 | clock-names = "ipg", "per"; | ||
285 | interrupts = <1>; | ||
286 | }; | ||
287 | |||
288 | gpt3: timer@53f88000 { | ||
289 | compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; | ||
290 | reg = <0x53f88000 0x4000>; | ||
291 | clocks = <&clks 9>, <&clks 47>; | ||
292 | clock-names = "ipg", "per"; | ||
293 | interrupts = <29>; | ||
294 | }; | ||
295 | |||
296 | gpt2: timer@53f8c000 { | ||
297 | compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; | ||
298 | reg = <0x53f8c000 0x4000>; | ||
299 | clocks = <&clks 9>, <&clks 47>; | ||
300 | clock-names = "ipg", "per"; | ||
301 | interrupts = <53>; | ||
302 | }; | ||
303 | |||
304 | gpt1: timer@53f90000 { | ||
305 | compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; | ||
306 | reg = <0x53f90000 0x4000>; | ||
307 | clocks = <&clks 9>, <&clks 47>; | ||
308 | clock-names = "ipg", "per"; | ||
309 | interrupts = <54>; | ||
310 | }; | ||
311 | |||
312 | epit1: timer@53f94000 { | ||
313 | compatible = "fsl,imx25-epit"; | ||
314 | reg = <0x53f94000 0x4000>; | ||
315 | interrupts = <28>; | ||
316 | }; | ||
317 | |||
318 | epit2: timer@53f98000 { | ||
319 | compatible = "fsl,imx25-epit"; | ||
320 | reg = <0x53f98000 0x4000>; | ||
321 | interrupts = <27>; | ||
322 | }; | ||
323 | |||
324 | gpio4: gpio@53f9c000 { | ||
325 | compatible = "fsl,imx25-gpio", "fsl,imx35-gpio"; | ||
326 | reg = <0x53f9c000 0x4000>; | ||
327 | interrupts = <23>; | ||
328 | gpio-controller; | ||
329 | #gpio-cells = <2>; | ||
330 | interrupt-controller; | ||
331 | #interrupt-cells = <2>; | ||
332 | }; | ||
333 | |||
334 | pwm2: pwm@53fa0000 { | ||
335 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
336 | #pwm-cells = <2>; | ||
337 | reg = <0x53fa0000 0x4000>; | ||
338 | clocks = <&clks 106>, <&clks 36>; | ||
339 | clock-names = "ipg", "per"; | ||
340 | interrupts = <36>; | ||
341 | }; | ||
342 | |||
343 | gpio3: gpio@53fa4000 { | ||
344 | compatible = "fsl,imx25-gpio", "fsl,imx35-gpio"; | ||
345 | reg = <0x53fa4000 0x4000>; | ||
346 | interrupts = <16>; | ||
347 | gpio-controller; | ||
348 | #gpio-cells = <2>; | ||
349 | interrupt-controller; | ||
350 | #interrupt-cells = <2>; | ||
351 | }; | ||
352 | |||
353 | pwm3: pwm@53fa8000 { | ||
354 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
355 | #pwm-cells = <2>; | ||
356 | reg = <0x53fa8000 0x4000>; | ||
357 | clocks = <&clks 107>, <&clks 36>; | ||
358 | clock-names = "ipg", "per"; | ||
359 | interrupts = <41>; | ||
360 | }; | ||
361 | |||
362 | esdhc1: esdhc@53fb4000 { | ||
363 | compatible = "fsl,imx25-esdhc"; | ||
364 | reg = <0x53fb4000 0x4000>; | ||
365 | interrupts = <9>; | ||
366 | clocks = <&clks 86>, <&clks 63>, <&clks 45>; | ||
367 | clock-names = "ipg", "ahb", "per"; | ||
368 | status = "disabled"; | ||
369 | }; | ||
370 | |||
371 | esdhc2: esdhc@53fb8000 { | ||
372 | compatible = "fsl,imx25-esdhc"; | ||
373 | reg = <0x53fb8000 0x4000>; | ||
374 | interrupts = <8>; | ||
375 | clocks = <&clks 87>, <&clks 64>, <&clks 46>; | ||
376 | clock-names = "ipg", "ahb", "per"; | ||
377 | status = "disabled"; | ||
378 | }; | ||
379 | |||
380 | lcdc@53fbc000 { | ||
381 | reg = <0x53fbc000 0x4000>; | ||
382 | interrupts = <39>; | ||
383 | clocks = <&clks 103>, <&clks 66>, <&clks 49>; | ||
384 | clock-names = "ipg", "ahb", "per"; | ||
385 | status = "disabled"; | ||
386 | }; | ||
387 | |||
388 | slcdc@53fc0000 { | ||
389 | reg = <0x53fc0000 0x4000>; | ||
390 | interrupts = <38>; | ||
391 | status = "disabled"; | ||
392 | }; | ||
393 | |||
394 | pwm4: pwm@53fc8000 { | ||
395 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
396 | reg = <0x53fc8000 0x4000>; | ||
397 | clocks = <&clks 108>, <&clks 36>; | ||
398 | clock-names = "ipg", "per"; | ||
399 | interrupts = <42>; | ||
400 | }; | ||
401 | |||
402 | gpio1: gpio@53fcc000 { | ||
403 | compatible = "fsl,imx25-gpio", "fsl,imx35-gpio"; | ||
404 | reg = <0x53fcc000 0x4000>; | ||
405 | interrupts = <52>; | ||
406 | gpio-controller; | ||
407 | #gpio-cells = <2>; | ||
408 | interrupt-controller; | ||
409 | #interrupt-cells = <2>; | ||
410 | }; | ||
411 | |||
412 | gpio2: gpio@53fd0000 { | ||
413 | compatible = "fsl,imx25-gpio", "fsl,imx35-gpio"; | ||
414 | reg = <0x53fd0000 0x4000>; | ||
415 | interrupts = <51>; | ||
416 | gpio-controller; | ||
417 | #gpio-cells = <2>; | ||
418 | interrupt-controller; | ||
419 | #interrupt-cells = <2>; | ||
420 | }; | ||
421 | |||
422 | sdma@53fd4000 { | ||
423 | compatible = "fsl,imx25-sdma", "fsl,imx35-sdma"; | ||
424 | reg = <0x53fd4000 0x4000>; | ||
425 | clocks = <&clks 112>, <&clks 68>; | ||
426 | clock-names = "ipg", "ahb"; | ||
427 | interrupts = <34>; | ||
428 | }; | ||
429 | |||
430 | wdog@53fdc000 { | ||
431 | compatible = "fsl,imx25-wdt", "fsl,imx21-wdt"; | ||
432 | reg = <0x53fdc000 0x4000>; | ||
433 | clocks = <&clks 126>; | ||
434 | clock-names = ""; | ||
435 | interrupts = <55>; | ||
436 | }; | ||
437 | |||
438 | pwm1: pwm@53fe0000 { | ||
439 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
440 | #pwm-cells = <2>; | ||
441 | reg = <0x53fe0000 0x4000>; | ||
442 | clocks = <&clks 105>, <&clks 36>; | ||
443 | clock-names = "ipg", "per"; | ||
444 | interrupts = <26>; | ||
445 | }; | ||
446 | |||
447 | usbphy1: usbphy@1 { | ||
448 | compatible = "nop-usbphy"; | ||
449 | status = "disabled"; | ||
450 | }; | ||
451 | |||
452 | usbphy2: usbphy@2 { | ||
453 | compatible = "nop-usbphy"; | ||
454 | status = "disabled"; | ||
455 | }; | ||
456 | |||
457 | usbotg: usb@53ff4000 { | ||
458 | compatible = "fsl,imx25-usb", "fsl,imx27-usb"; | ||
459 | reg = <0x53ff4000 0x0200>; | ||
460 | interrupts = <37>; | ||
461 | clocks = <&clks 9>, <&clks 70>, <&clks 8>; | ||
462 | clock-names = "ipg", "ahb", "per"; | ||
463 | fsl,usbmisc = <&usbmisc 0>; | ||
464 | status = "disabled"; | ||
465 | }; | ||
466 | |||
467 | usbhost1: usb@53ff4400 { | ||
468 | compatible = "fsl,imx25-usb", "fsl,imx27-usb"; | ||
469 | reg = <0x53ff4400 0x0200>; | ||
470 | interrupts = <35>; | ||
471 | clocks = <&clks 9>, <&clks 70>, <&clks 8>; | ||
472 | clock-names = "ipg", "ahb", "per"; | ||
473 | fsl,usbmisc = <&usbmisc 1>; | ||
474 | status = "disabled"; | ||
475 | }; | ||
476 | |||
477 | usbmisc: usbmisc@53ff4600 { | ||
478 | #index-cells = <1>; | ||
479 | compatible = "fsl,imx25-usbmisc"; | ||
480 | clocks = <&clks 9>, <&clks 70>, <&clks 8>; | ||
481 | clock-names = "ipg", "ahb", "per"; | ||
482 | reg = <0x53ff4600 0x00f>; | ||
483 | status = "disabled"; | ||
484 | }; | ||
485 | |||
486 | dryice@53ffc000 { | ||
487 | compatible = "fsl,imx25-dryice", "fsl,imx25-rtc"; | ||
488 | reg = <0x53ffc000 0x4000>; | ||
489 | clocks = <&clks 81>; | ||
490 | clock-names = "ipg"; | ||
491 | interrupts = <25>; | ||
492 | }; | ||
493 | }; | ||
494 | |||
495 | emi@80000000 { | ||
496 | compatible = "fsl,emi-bus", "simple-bus"; | ||
497 | #address-cells = <1>; | ||
498 | #size-cells = <1>; | ||
499 | reg = <0x80000000 0x3b002000>; | ||
500 | ranges; | ||
501 | |||
502 | nand@bb000000 { | ||
503 | #address-cells = <1>; | ||
504 | #size-cells = <1>; | ||
505 | |||
506 | compatible = "fsl,imx25-nand"; | ||
507 | reg = <0xbb000000 0x2000>; | ||
508 | clocks = <&clks 50>; | ||
509 | clock-names = ""; | ||
510 | interrupts = <33>; | ||
511 | status = "disabled"; | ||
512 | }; | ||
513 | }; | ||
514 | }; | ||
515 | }; | ||
diff --git a/arch/arm/boot/dts/imx27-apf27.dts b/arch/arm/boot/dts/imx27-apf27.dts new file mode 100644 index 000000000000..c0327c054de2 --- /dev/null +++ b/arch/arm/boot/dts/imx27-apf27.dts | |||
@@ -0,0 +1,89 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Philippe Reynes <tremyfr@yahoo.fr> | ||
3 | * Copyright 2012 Armadeus Systems <support@armadeus.com> | ||
4 | * | ||
5 | * Based on code which is: Copyright 2012 Sascha Hauer, Pengutronix | ||
6 | * | ||
7 | * The code contained herein is licensed under the GNU General Public | ||
8 | * License. You may obtain a copy of the GNU General Public License | ||
9 | * Version 2 or later at the following locations: | ||
10 | * | ||
11 | * http://www.opensource.org/licenses/gpl-license.html | ||
12 | * http://www.gnu.org/copyleft/gpl.html | ||
13 | */ | ||
14 | |||
15 | /dts-v1/; | ||
16 | /include/ "imx27.dtsi" | ||
17 | |||
18 | / { | ||
19 | model = "Armadeus Systems APF27 module"; | ||
20 | compatible = "armadeus,imx27-apf27", "fsl,imx27"; | ||
21 | |||
22 | memory { | ||
23 | reg = <0xa0000000 0x04000000>; | ||
24 | }; | ||
25 | |||
26 | clocks { | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | |||
30 | osc26m { | ||
31 | compatible = "fsl,imx-osc26m", "fixed-clock"; | ||
32 | clock-frequency = <0>; | ||
33 | }; | ||
34 | }; | ||
35 | |||
36 | soc { | ||
37 | aipi@10000000 { | ||
38 | serial@1000a000 { | ||
39 | status = "okay"; | ||
40 | }; | ||
41 | |||
42 | ethernet@1002b000 { | ||
43 | status = "okay"; | ||
44 | }; | ||
45 | }; | ||
46 | |||
47 | nand@d8000000 { | ||
48 | status = "okay"; | ||
49 | nand-bus-width = <16>; | ||
50 | nand-ecc-mode = "hw"; | ||
51 | nand-on-flash-bbt; | ||
52 | |||
53 | partition@0 { | ||
54 | label = "u-boot"; | ||
55 | reg = <0x0 0x100000>; | ||
56 | }; | ||
57 | |||
58 | partition@100000 { | ||
59 | label = "env"; | ||
60 | reg = <0x100000 0x80000>; | ||
61 | }; | ||
62 | |||
63 | partition@180000 { | ||
64 | label = "env2"; | ||
65 | reg = <0x180000 0x80000>; | ||
66 | }; | ||
67 | |||
68 | partition@200000 { | ||
69 | label = "firmware"; | ||
70 | reg = <0x200000 0x80000>; | ||
71 | }; | ||
72 | |||
73 | partition@280000 { | ||
74 | label = "dtb"; | ||
75 | reg = <0x280000 0x80000>; | ||
76 | }; | ||
77 | |||
78 | partition@300000 { | ||
79 | label = "kernel"; | ||
80 | reg = <0x300000 0x500000>; | ||
81 | }; | ||
82 | |||
83 | partition@800000 { | ||
84 | label = "rootfs"; | ||
85 | reg = <0x800000 0xf800000>; | ||
86 | }; | ||
87 | }; | ||
88 | }; | ||
89 | }; | ||
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi index 3e54f1498841..b8d3905915ac 100644 --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi | |||
@@ -58,7 +58,7 @@ | |||
58 | reg = <0x10000000 0x10000000>; | 58 | reg = <0x10000000 0x10000000>; |
59 | ranges; | 59 | ranges; |
60 | 60 | ||
61 | wdog@10002000 { | 61 | wdog: wdog@10002000 { |
62 | compatible = "fsl,imx27-wdt", "fsl,imx21-wdt"; | 62 | compatible = "fsl,imx27-wdt", "fsl,imx21-wdt"; |
63 | reg = <0x10002000 0x4000>; | 63 | reg = <0x10002000 0x4000>; |
64 | interrupts = <27>; | 64 | interrupts = <27>; |
@@ -113,7 +113,7 @@ | |||
113 | i2c1: i2c@10012000 { | 113 | i2c1: i2c@10012000 { |
114 | #address-cells = <1>; | 114 | #address-cells = <1>; |
115 | #size-cells = <0>; | 115 | #size-cells = <0>; |
116 | compatible = "fsl,imx27-i2c", "fsl,imx1-i2c"; | 116 | compatible = "fsl,imx27-i2c", "fsl,imx21-i2c"; |
117 | reg = <0x10012000 0x1000>; | 117 | reg = <0x10012000 0x1000>; |
118 | interrupts = <12>; | 118 | interrupts = <12>; |
119 | status = "disabled"; | 119 | status = "disabled"; |
@@ -205,7 +205,7 @@ | |||
205 | i2c2: i2c@1001d000 { | 205 | i2c2: i2c@1001d000 { |
206 | #address-cells = <1>; | 206 | #address-cells = <1>; |
207 | #size-cells = <0>; | 207 | #size-cells = <0>; |
208 | compatible = "fsl,imx27-i2c", "fsl,imx1-i2c"; | 208 | compatible = "fsl,imx27-i2c", "fsl,imx21-i2c"; |
209 | reg = <0x1001d000 0x1000>; | 209 | reg = <0x1001d000 0x1000>; |
210 | interrupts = <1>; | 210 | interrupts = <1>; |
211 | status = "disabled"; | 211 | status = "disabled"; |
@@ -218,7 +218,8 @@ | |||
218 | status = "disabled"; | 218 | status = "disabled"; |
219 | }; | 219 | }; |
220 | }; | 220 | }; |
221 | nand@d8000000 { | 221 | |
222 | nfc: nand@d8000000 { | ||
222 | #address-cells = <1>; | 223 | #address-cells = <1>; |
223 | #size-cells = <1>; | 224 | #size-cells = <1>; |
224 | 225 | ||
diff --git a/arch/arm/boot/dts/imx28-apf28.dts b/arch/arm/boot/dts/imx28-apf28.dts new file mode 100644 index 000000000000..7eb075876c4c --- /dev/null +++ b/arch/arm/boot/dts/imx28-apf28.dts | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Armadeus Systems - <support@armadeus.com> | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "imx28.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "Armadeus Systems APF28 module"; | ||
17 | compatible = "armadeus,imx28-apf28", "fsl,imx28"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x40000000 0x08000000>; | ||
21 | }; | ||
22 | |||
23 | apb@80000000 { | ||
24 | apbh@80000000 { | ||
25 | gpmi-nand@8000c000 { | ||
26 | pinctrl-names = "default"; | ||
27 | pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>; | ||
28 | status = "okay"; | ||
29 | |||
30 | partition@0 { | ||
31 | label = "u-boot"; | ||
32 | reg = <0x0 0x300000>; | ||
33 | }; | ||
34 | |||
35 | partition@300000 { | ||
36 | label = "env"; | ||
37 | reg = <0x300000 0x80000>; | ||
38 | }; | ||
39 | |||
40 | partition@380000 { | ||
41 | label = "env2"; | ||
42 | reg = <0x380000 0x80000>; | ||
43 | }; | ||
44 | |||
45 | partition@400000 { | ||
46 | label = "dtb"; | ||
47 | reg = <0x400000 0x80000>; | ||
48 | }; | ||
49 | |||
50 | partition@480000 { | ||
51 | label = "splash"; | ||
52 | reg = <0x480000 0x80000>; | ||
53 | }; | ||
54 | |||
55 | partition@500000 { | ||
56 | label = "kernel"; | ||
57 | reg = <0x500000 0x800000>; | ||
58 | }; | ||
59 | |||
60 | partition@d00000 { | ||
61 | label = "rootfs"; | ||
62 | reg = <0xd00000 0xf300000>; | ||
63 | }; | ||
64 | }; | ||
65 | }; | ||
66 | |||
67 | apbx@80040000 { | ||
68 | duart: serial@80074000 { | ||
69 | pinctrl-names = "default"; | ||
70 | pinctrl-0 = <&duart_pins_a>; | ||
71 | status = "okay"; | ||
72 | }; | ||
73 | }; | ||
74 | }; | ||
75 | |||
76 | ahb@80080000 { | ||
77 | mac0: ethernet@800f0000 { | ||
78 | phy-mode = "rmii"; | ||
79 | pinctrl-names = "default"; | ||
80 | pinctrl-0 = <&mac0_pins_a>; | ||
81 | phy-reset-gpios = <&gpio4 13 0>; | ||
82 | status = "okay"; | ||
83 | }; | ||
84 | }; | ||
85 | }; | ||
diff --git a/arch/arm/boot/dts/imx28-apf28dev.dts b/arch/arm/boot/dts/imx28-apf28dev.dts new file mode 100644 index 000000000000..6d8865bfb4b7 --- /dev/null +++ b/arch/arm/boot/dts/imx28-apf28dev.dts | |||
@@ -0,0 +1,154 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Armadeus Systems - <support@armadeus.com> | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /* APF28Dev is a docking board for the APF28 SOM */ | ||
13 | /include/ "imx28-apf28.dts" | ||
14 | |||
15 | / { | ||
16 | model = "Armadeus Systems APF28Dev docking/development board"; | ||
17 | compatible = "armadeus,imx28-apf28dev", "armadeus,imx28-apf28", "fsl,imx28"; | ||
18 | |||
19 | apb@80000000 { | ||
20 | apbh@80000000 { | ||
21 | ssp0: ssp@80010000 { | ||
22 | compatible = "fsl,imx28-mmc"; | ||
23 | pinctrl-names = "default"; | ||
24 | pinctrl-0 = <&mmc0_4bit_pins_a | ||
25 | &mmc0_cd_cfg &mmc0_sck_cfg>; | ||
26 | bus-width = <4>; | ||
27 | status = "okay"; | ||
28 | }; | ||
29 | |||
30 | ssp2: ssp@80014000 { | ||
31 | compatible = "fsl,imx28-spi"; | ||
32 | pinctrl-names = "default"; | ||
33 | pinctrl-0 = <&spi2_pins_a>; | ||
34 | status = "okay"; | ||
35 | }; | ||
36 | |||
37 | pinctrl@80018000 { | ||
38 | pinctrl-names = "default"; | ||
39 | pinctrl-0 = <&hog_pins_apf28dev>; | ||
40 | |||
41 | hog_pins_apf28dev: hog@0 { | ||
42 | reg = <0>; | ||
43 | fsl,pinmux-ids = < | ||
44 | 0x1103 /* MX28_PAD_LCD_D16__GPIO_1_16 */ | ||
45 | 0x1113 /* MX28_PAD_LCD_D17__GPIO_1_17 */ | ||
46 | 0x1123 /* MX28_PAD_LCD_D18__GPIO_1_18 */ | ||
47 | 0x1133 /* MX28_PAD_LCD_D19__GPIO_1_19 */ | ||
48 | 0x1143 /* MX28_PAD_LCD_D20__GPIO_1_20 */ | ||
49 | 0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */ | ||
50 | 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ | ||
51 | >; | ||
52 | fsl,drive-strength = <0>; | ||
53 | fsl,voltage = <1>; | ||
54 | fsl,pull-up = <0>; | ||
55 | }; | ||
56 | |||
57 | lcdif_pins_apf28dev: lcdif-apf28dev@0 { | ||
58 | reg = <0>; | ||
59 | fsl,pinmux-ids = < | ||
60 | 0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */ | ||
61 | 0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */ | ||
62 | 0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */ | ||
63 | 0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */ | ||
64 | >; | ||
65 | fsl,drive-strength = <0>; | ||
66 | fsl,voltage = <1>; | ||
67 | fsl,pull-up = <0>; | ||
68 | }; | ||
69 | }; | ||
70 | |||
71 | lcdif@80030000 { | ||
72 | pinctrl-names = "default"; | ||
73 | pinctrl-0 = <&lcdif_16bit_pins_a | ||
74 | &lcdif_pins_apf28dev>; | ||
75 | status = "okay"; | ||
76 | }; | ||
77 | }; | ||
78 | |||
79 | apbx@80040000 { | ||
80 | lradc@80050000 { | ||
81 | status = "okay"; | ||
82 | }; | ||
83 | |||
84 | i2c0: i2c@80058000 { | ||
85 | pinctrl-names = "default"; | ||
86 | pinctrl-0 = <&i2c0_pins_a>; | ||
87 | status = "okay"; | ||
88 | }; | ||
89 | |||
90 | pwm: pwm@80064000 { | ||
91 | pinctrl-names = "default"; | ||
92 | pinctrl-0 = <&pwm3_pins_a &pwm4_pins_a>; | ||
93 | status = "okay"; | ||
94 | }; | ||
95 | |||
96 | usbphy0: usbphy@8007c000 { | ||
97 | status = "okay"; | ||
98 | }; | ||
99 | |||
100 | usbphy1: usbphy@8007e000 { | ||
101 | status = "okay"; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
105 | |||
106 | ahb@80080000 { | ||
107 | usb0: usb@80080000 { | ||
108 | vbus-supply = <®_usb0_vbus>; | ||
109 | status = "okay"; | ||
110 | }; | ||
111 | |||
112 | usb1: usb@80090000 { | ||
113 | status = "okay"; | ||
114 | }; | ||
115 | |||
116 | mac1: ethernet@800f4000 { | ||
117 | phy-mode = "rmii"; | ||
118 | pinctrl-names = "default"; | ||
119 | pinctrl-0 = <&mac1_pins_a>; | ||
120 | phy-reset-gpios = <&gpio0 23 0>; | ||
121 | status = "okay"; | ||
122 | }; | ||
123 | }; | ||
124 | |||
125 | regulators { | ||
126 | compatible = "simple-bus"; | ||
127 | |||
128 | reg_usb0_vbus: usb0_vbus { | ||
129 | compatible = "regulator-fixed"; | ||
130 | regulator-name = "usb0_vbus"; | ||
131 | regulator-min-microvolt = <5000000>; | ||
132 | regulator-max-microvolt = <5000000>; | ||
133 | gpio = <&gpio1 23 1>; | ||
134 | }; | ||
135 | }; | ||
136 | |||
137 | leds { | ||
138 | compatible = "gpio-leds"; | ||
139 | |||
140 | user { | ||
141 | label = "Heartbeat"; | ||
142 | gpios = <&gpio0 21 0>; | ||
143 | linux,default-trigger = "heartbeat"; | ||
144 | }; | ||
145 | }; | ||
146 | |||
147 | backlight { | ||
148 | compatible = "pwm-backlight"; | ||
149 | |||
150 | pwms = <&pwm 3 191000>; | ||
151 | brightness-levels = <0 4 8 16 32 64 128 255>; | ||
152 | default-brightness-level = <6>; | ||
153 | }; | ||
154 | }; | ||
diff --git a/arch/arm/boot/dts/imx28-cfa10036.dts b/arch/arm/boot/dts/imx28-cfa10036.dts index c03a577beca3..1594694532b9 100644 --- a/arch/arm/boot/dts/imx28-cfa10036.dts +++ b/arch/arm/boot/dts/imx28-cfa10036.dts | |||
@@ -22,6 +22,31 @@ | |||
22 | 22 | ||
23 | apb@80000000 { | 23 | apb@80000000 { |
24 | apbh@80000000 { | 24 | apbh@80000000 { |
25 | pinctrl@80018000 { | ||
26 | pinctrl-names = "default"; | ||
27 | pinctrl-0 = <&hog_pins_cfa10036>; | ||
28 | |||
29 | hog_pins_cfa10036: hog-10036@0 { | ||
30 | reg = <0>; | ||
31 | fsl,pinmux-ids = < | ||
32 | 0x2073 /* MX28_PAD_SSP0_D7__GPIO_2_7 */ | ||
33 | >; | ||
34 | fsl,drive-strength = <0>; | ||
35 | fsl,voltage = <1>; | ||
36 | fsl,pull-up = <0>; | ||
37 | }; | ||
38 | |||
39 | led_pins_cfa10036: leds-10036@0 { | ||
40 | reg = <0>; | ||
41 | fsl,pinmux-ids = < | ||
42 | 0x3043 /* MX28_PAD_AUART1_RX__GPIO_3_4 */ | ||
43 | >; | ||
44 | fsl,drive-strength = <0>; | ||
45 | fsl,voltage = <1>; | ||
46 | fsl,pull-up = <0>; | ||
47 | }; | ||
48 | }; | ||
49 | |||
25 | ssp0: ssp@80010000 { | 50 | ssp0: ssp@80010000 { |
26 | compatible = "fsl,imx28-mmc"; | 51 | compatible = "fsl,imx28-mmc"; |
27 | pinctrl-names = "default"; | 52 | pinctrl-names = "default"; |
@@ -33,16 +58,37 @@ | |||
33 | }; | 58 | }; |
34 | 59 | ||
35 | apbx@80040000 { | 60 | apbx@80040000 { |
61 | pwm: pwm@80064000 { | ||
62 | pinctrl-names = "default"; | ||
63 | pinctrl-0 = <&pwm4_pins_a>; | ||
64 | status = "okay"; | ||
65 | }; | ||
66 | |||
36 | duart: serial@80074000 { | 67 | duart: serial@80074000 { |
37 | pinctrl-names = "default"; | 68 | pinctrl-names = "default"; |
38 | pinctrl-0 = <&duart_pins_b>; | 69 | pinctrl-0 = <&duart_pins_b>; |
39 | status = "okay"; | 70 | status = "okay"; |
40 | }; | 71 | }; |
72 | |||
73 | i2c0: i2c@80058000 { | ||
74 | pinctrl-names = "default"; | ||
75 | pinctrl-0 = <&i2c0_pins_b>; | ||
76 | status = "okay"; | ||
77 | |||
78 | ssd1307: oled@3c { | ||
79 | compatible = "solomon,ssd1307fb-i2c"; | ||
80 | reg = <0x3c>; | ||
81 | pwms = <&pwm 4 3000>; | ||
82 | reset-gpios = <&gpio2 7 0>; | ||
83 | }; | ||
84 | }; | ||
41 | }; | 85 | }; |
42 | }; | 86 | }; |
43 | 87 | ||
44 | leds { | 88 | leds { |
45 | compatible = "gpio-leds"; | 89 | compatible = "gpio-leds"; |
90 | pinctrl-names = "default"; | ||
91 | pinctrl-0 = <&led_pins_cfa10036>; | ||
46 | 92 | ||
47 | power { | 93 | power { |
48 | gpios = <&gpio3 4 1>; | 94 | gpios = <&gpio3 4 1>; |
diff --git a/arch/arm/boot/dts/imx28-cfa10049.dts b/arch/arm/boot/dts/imx28-cfa10049.dts index 05c892e931e3..b222614ac9e0 100644 --- a/arch/arm/boot/dts/imx28-cfa10049.dts +++ b/arch/arm/boot/dts/imx28-cfa10049.dts | |||
@@ -22,6 +22,22 @@ | |||
22 | apb@80000000 { | 22 | apb@80000000 { |
23 | apbh@80000000 { | 23 | apbh@80000000 { |
24 | pinctrl@80018000 { | 24 | pinctrl@80018000 { |
25 | pinctrl-names = "default", "default"; | ||
26 | pinctrl-1 = <&hog_pins_cfa10049>; | ||
27 | |||
28 | hog_pins_cfa10049: hog-10049@0 { | ||
29 | reg = <0>; | ||
30 | fsl,pinmux-ids = < | ||
31 | 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ | ||
32 | 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ | ||
33 | 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */ | ||
34 | 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ | ||
35 | >; | ||
36 | fsl,drive-strength = <0>; | ||
37 | fsl,voltage = <1>; | ||
38 | fsl,pull-up = <0>; | ||
39 | }; | ||
40 | |||
25 | spi3_pins_cfa10049: spi3-cfa10049@0 { | 41 | spi3_pins_cfa10049: spi3-cfa10049@0 { |
26 | reg = <0>; | 42 | reg = <0>; |
27 | fsl,pinmux-ids = < | 43 | fsl,pinmux-ids = < |
@@ -29,6 +45,7 @@ | |||
29 | 0x01c1 /* MX28_PAD_GPMI_RESETN__SSP3_CMD */ | 45 | 0x01c1 /* MX28_PAD_GPMI_RESETN__SSP3_CMD */ |
30 | 0x0111 /* MX28_PAD_GPMI_CE1N__SSP3_D3 */ | 46 | 0x0111 /* MX28_PAD_GPMI_CE1N__SSP3_D3 */ |
31 | 0x01a2 /* MX28_PAD_GPMI_ALE__SSP3_D4 */ | 47 | 0x01a2 /* MX28_PAD_GPMI_ALE__SSP3_D4 */ |
48 | 0x01b2 /* MX28_PAD_GPMI_CLE__SSP3_D5 */ | ||
32 | >; | 49 | >; |
33 | fsl,drive-strength = <1>; | 50 | fsl,drive-strength = <1>; |
34 | fsl,voltage = <1>; | 51 | fsl,voltage = <1>; |
@@ -60,6 +77,11 @@ | |||
60 | spi-max-frequency = <100000>; | 77 | spi-max-frequency = <100000>; |
61 | }; | 78 | }; |
62 | 79 | ||
80 | dac0: dh2228@2 { | ||
81 | compatible = "rohm,dh2228fv"; | ||
82 | reg = <2>; | ||
83 | spi-max-frequency = <100000>; | ||
84 | }; | ||
63 | }; | 85 | }; |
64 | }; | 86 | }; |
65 | 87 | ||
@@ -96,4 +118,15 @@ | |||
96 | gpio = <&gpio0 7 1>; | 118 | gpio = <&gpio0 7 1>; |
97 | }; | 119 | }; |
98 | }; | 120 | }; |
121 | |||
122 | ahb@80080000 { | ||
123 | mac0: ethernet@800f0000 { | ||
124 | phy-mode = "rmii"; | ||
125 | pinctrl-names = "default"; | ||
126 | pinctrl-0 = <&mac0_pins_a>; | ||
127 | phy-reset-gpios = <&gpio2 21 0>; | ||
128 | phy-reset-duration = <100>; | ||
129 | status = "okay"; | ||
130 | }; | ||
131 | }; | ||
99 | }; | 132 | }; |
diff --git a/arch/arm/boot/dts/imx28-evk.dts b/arch/arm/boot/dts/imx28-evk.dts index a0ad71ca3a44..2da316e04409 100644 --- a/arch/arm/boot/dts/imx28-evk.dts +++ b/arch/arm/boot/dts/imx28-evk.dts | |||
@@ -76,7 +76,6 @@ | |||
76 | 0x20c3 /* MX28_PAD_SSP1_SCK__GPIO_2_12 */ | 76 | 0x20c3 /* MX28_PAD_SSP1_SCK__GPIO_2_12 */ |
77 | 0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */ | 77 | 0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */ |
78 | 0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */ | 78 | 0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */ |
79 | 0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */ | ||
80 | 0x3083 /* MX28_PAD_AUART2_RX__GPIO_3_8 */ | 79 | 0x3083 /* MX28_PAD_AUART2_RX__GPIO_3_8 */ |
81 | 0x3093 /* MX28_PAD_AUART2_TX__GPIO_3_9 */ | 80 | 0x3093 /* MX28_PAD_AUART2_TX__GPIO_3_9 */ |
82 | >; | 81 | >; |
@@ -85,6 +84,16 @@ | |||
85 | fsl,pull-up = <0>; | 84 | fsl,pull-up = <0>; |
86 | }; | 85 | }; |
87 | 86 | ||
87 | led_pin_gpio3_5: led_gpio3_5@0 { | ||
88 | reg = <0>; | ||
89 | fsl,pinmux-ids = < | ||
90 | 0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */ | ||
91 | >; | ||
92 | fsl,drive-strength = <0>; | ||
93 | fsl,voltage = <1>; | ||
94 | fsl,pull-up = <0>; | ||
95 | }; | ||
96 | |||
88 | gpmi_pins_evk: gpmi-nand-evk@0 { | 97 | gpmi_pins_evk: gpmi-nand-evk@0 { |
89 | reg = <0>; | 98 | reg = <0>; |
90 | fsl,pinmux-ids = < | 99 | fsl,pinmux-ids = < |
@@ -288,6 +297,8 @@ | |||
288 | 297 | ||
289 | leds { | 298 | leds { |
290 | compatible = "gpio-leds"; | 299 | compatible = "gpio-leds"; |
300 | pinctrl-names = "default"; | ||
301 | pinctrl-0 = <&led_pin_gpio3_5>; | ||
291 | 302 | ||
292 | user { | 303 | user { |
293 | label = "Heartbeat"; | 304 | label = "Heartbeat"; |
diff --git a/arch/arm/boot/dts/imx28-sps1.dts b/arch/arm/boot/dts/imx28-sps1.dts new file mode 100644 index 000000000000..e6cde8aa7fff --- /dev/null +++ b/arch/arm/boot/dts/imx28-sps1.dts | |||
@@ -0,0 +1,169 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Marek Vasut <marex@denx.de> | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "imx28.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "SchulerControl GmbH, SC SPS 1"; | ||
17 | compatible = "schulercontrol,imx28-sps1", "fsl,imx28"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x40000000 0x08000000>; | ||
21 | }; | ||
22 | |||
23 | apb@80000000 { | ||
24 | apbh@80000000 { | ||
25 | pinctrl@80018000 { | ||
26 | pinctrl-names = "default"; | ||
27 | pinctrl-0 = <&hog_pins_a>; | ||
28 | |||
29 | hog_pins_a: hog-gpios@0 { | ||
30 | reg = <0>; | ||
31 | fsl,pinmux-ids = < | ||
32 | 0x0003 /* MX28_PAD_GPMI_D00__GPIO_0_0 */ | ||
33 | 0x0033 /* MX28_PAD_GPMI_D03__GPIO_0_3 */ | ||
34 | 0x0063 /* MX28_PAD_GPMI_D06__GPIO_0_6 */ | ||
35 | >; | ||
36 | fsl,drive-strength = <0>; | ||
37 | fsl,voltage = <1>; | ||
38 | fsl,pull-up = <0>; | ||
39 | }; | ||
40 | |||
41 | }; | ||
42 | |||
43 | ssp0: ssp@80010000 { | ||
44 | compatible = "fsl,imx28-mmc"; | ||
45 | pinctrl-names = "default"; | ||
46 | pinctrl-0 = <&mmc0_4bit_pins_a>; | ||
47 | bus-width = <4>; | ||
48 | status = "okay"; | ||
49 | }; | ||
50 | |||
51 | ssp2: ssp@80014000 { | ||
52 | #address-cells = <1>; | ||
53 | #size-cells = <0>; | ||
54 | compatible = "fsl,imx28-spi"; | ||
55 | pinctrl-names = "default"; | ||
56 | pinctrl-0 = <&spi2_pins_a>; | ||
57 | status = "okay"; | ||
58 | |||
59 | flash: m25p80@0 { | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <1>; | ||
62 | compatible = "everspin,mr25h256", "mr25h256"; | ||
63 | spi-max-frequency = <40000000>; | ||
64 | reg = <0>; | ||
65 | }; | ||
66 | }; | ||
67 | }; | ||
68 | |||
69 | apbx@80040000 { | ||
70 | i2c0: i2c@80058000 { | ||
71 | pinctrl-names = "default"; | ||
72 | pinctrl-0 = <&i2c0_pins_a>; | ||
73 | clock-frequency = <400000>; | ||
74 | status = "okay"; | ||
75 | |||
76 | rtc: rtc@51 { | ||
77 | compatible = "nxp,pcf8563"; | ||
78 | reg = <0x51>; | ||
79 | }; | ||
80 | |||
81 | eeprom: eeprom@52 { | ||
82 | compatible = "atmel,24c64"; | ||
83 | reg = <0x52>; | ||
84 | pagesize = <32>; | ||
85 | }; | ||
86 | }; | ||
87 | |||
88 | duart: serial@80074000 { | ||
89 | pinctrl-names = "default"; | ||
90 | pinctrl-0 = <&duart_pins_a>; | ||
91 | status = "okay"; | ||
92 | }; | ||
93 | |||
94 | usbphy0: usbphy@8007c000 { | ||
95 | status = "okay"; | ||
96 | }; | ||
97 | |||
98 | auart0: serial@8006a000 { | ||
99 | pinctrl-names = "default"; | ||
100 | pinctrl-0 = <&auart0_pins_a>; | ||
101 | status = "okay"; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
105 | |||
106 | ahb@80080000 { | ||
107 | usb0: usb@80080000 { | ||
108 | vbus-supply = <®_usb0_vbus>; | ||
109 | pinctrl-names = "default"; | ||
110 | pinctrl-0 = <&usbphy0_pins_b>; | ||
111 | status = "okay"; | ||
112 | }; | ||
113 | |||
114 | mac0: ethernet@800f0000 { | ||
115 | phy-mode = "rmii"; | ||
116 | pinctrl-names = "default"; | ||
117 | pinctrl-0 = <&mac0_pins_a>; | ||
118 | status = "okay"; | ||
119 | }; | ||
120 | |||
121 | mac1: ethernet@800f4000 { | ||
122 | phy-mode = "rmii"; | ||
123 | pinctrl-names = "default"; | ||
124 | pinctrl-0 = <&mac1_pins_a>; | ||
125 | status = "okay"; | ||
126 | }; | ||
127 | }; | ||
128 | |||
129 | regulators { | ||
130 | compatible = "simple-bus"; | ||
131 | |||
132 | reg_usb0_vbus: usb0_vbus { | ||
133 | compatible = "regulator-fixed"; | ||
134 | regulator-name = "usb0_vbus"; | ||
135 | regulator-min-microvolt = <5000000>; | ||
136 | regulator-max-microvolt = <5000000>; | ||
137 | gpio = <&gpio3 9 0>; | ||
138 | }; | ||
139 | }; | ||
140 | |||
141 | leds { | ||
142 | #address-cells = <1>; | ||
143 | #size-cells = <0>; | ||
144 | compatible = "gpio-leds"; | ||
145 | status = "okay"; | ||
146 | |||
147 | led@1 { | ||
148 | label = "sps1-1:yellow:user"; | ||
149 | gpios = <&gpio0 6 0>; | ||
150 | linux,default-trigger = "heartbeat"; | ||
151 | reg = <0>; | ||
152 | }; | ||
153 | |||
154 | led@2 { | ||
155 | label = "sps1-2:red:user"; | ||
156 | gpios = <&gpio0 3 0>; | ||
157 | linux,default-trigger = "heartbeat"; | ||
158 | reg = <1>; | ||
159 | }; | ||
160 | |||
161 | led@3 { | ||
162 | label = "sps1-3:red:user"; | ||
163 | gpios = <&gpio0 0 0>; | ||
164 | default-trigger = "heartbeat"; | ||
165 | reg = <2>; | ||
166 | }; | ||
167 | |||
168 | }; | ||
169 | }; | ||
diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index 55c57ea6169e..d7013f73f2e9 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi | |||
@@ -492,6 +492,16 @@ | |||
492 | fsl,pull-up = <0>; | 492 | fsl,pull-up = <0>; |
493 | }; | 493 | }; |
494 | 494 | ||
495 | pwm3_pins_a: pwm3@0 { | ||
496 | reg = <0>; | ||
497 | fsl,pinmux-ids = < | ||
498 | 0x31c0 /* MX28_PAD_PWM3__PWM_3 */ | ||
499 | >; | ||
500 | fsl,drive-strength = <0>; | ||
501 | fsl,voltage = <1>; | ||
502 | fsl,pull-up = <0>; | ||
503 | }; | ||
504 | |||
495 | pwm4_pins_a: pwm4@0 { | 505 | pwm4_pins_a: pwm4@0 { |
496 | reg = <0>; | 506 | reg = <0>; |
497 | fsl,pinmux-ids = < | 507 | fsl,pinmux-ids = < |
@@ -535,6 +545,31 @@ | |||
535 | fsl,pull-up = <0>; | 545 | fsl,pull-up = <0>; |
536 | }; | 546 | }; |
537 | 547 | ||
548 | lcdif_16bit_pins_a: lcdif-16bit@0 { | ||
549 | reg = <0>; | ||
550 | fsl,pinmux-ids = < | ||
551 | 0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */ | ||
552 | 0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */ | ||
553 | 0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */ | ||
554 | 0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */ | ||
555 | 0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */ | ||
556 | 0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */ | ||
557 | 0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */ | ||
558 | 0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */ | ||
559 | 0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */ | ||
560 | 0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */ | ||
561 | 0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */ | ||
562 | 0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */ | ||
563 | 0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */ | ||
564 | 0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */ | ||
565 | 0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */ | ||
566 | 0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */ | ||
567 | >; | ||
568 | fsl,drive-strength = <0>; | ||
569 | fsl,voltage = <1>; | ||
570 | fsl,pull-up = <0>; | ||
571 | }; | ||
572 | |||
538 | can0_pins_a: can0@0 { | 573 | can0_pins_a: can0@0 { |
539 | reg = <0>; | 574 | reg = <0>; |
540 | fsl,pinmux-ids = < | 575 | fsl,pinmux-ids = < |
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi index 75d069fcf897..1fdee31b4909 100644 --- a/arch/arm/boot/dts/imx51.dtsi +++ b/arch/arm/boot/dts/imx51.dtsi | |||
@@ -76,17 +76,18 @@ | |||
76 | reg = <0x70000000 0x40000>; | 76 | reg = <0x70000000 0x40000>; |
77 | ranges; | 77 | ranges; |
78 | 78 | ||
79 | esdhc@70004000 { /* ESDHC1 */ | 79 | esdhc1: esdhc@70004000 { |
80 | compatible = "fsl,imx51-esdhc"; | 80 | compatible = "fsl,imx51-esdhc"; |
81 | reg = <0x70004000 0x4000>; | 81 | reg = <0x70004000 0x4000>; |
82 | interrupts = <1>; | 82 | interrupts = <1>; |
83 | status = "disabled"; | 83 | status = "disabled"; |
84 | }; | 84 | }; |
85 | 85 | ||
86 | esdhc@70008000 { /* ESDHC2 */ | 86 | esdhc2: esdhc@70008000 { |
87 | compatible = "fsl,imx51-esdhc"; | 87 | compatible = "fsl,imx51-esdhc"; |
88 | reg = <0x70008000 0x4000>; | 88 | reg = <0x70008000 0x4000>; |
89 | interrupts = <2>; | 89 | interrupts = <2>; |
90 | bus-width = <4>; | ||
90 | status = "disabled"; | 91 | status = "disabled"; |
91 | }; | 92 | }; |
92 | 93 | ||
@@ -97,7 +98,7 @@ | |||
97 | status = "disabled"; | 98 | status = "disabled"; |
98 | }; | 99 | }; |
99 | 100 | ||
100 | ecspi@70010000 { /* ECSPI1 */ | 101 | ecspi1: ecspi@70010000 { |
101 | #address-cells = <1>; | 102 | #address-cells = <1>; |
102 | #size-cells = <0>; | 103 | #size-cells = <0>; |
103 | compatible = "fsl,imx51-ecspi"; | 104 | compatible = "fsl,imx51-ecspi"; |
@@ -115,43 +116,45 @@ | |||
115 | status = "disabled"; | 116 | status = "disabled"; |
116 | }; | 117 | }; |
117 | 118 | ||
118 | esdhc@70020000 { /* ESDHC3 */ | 119 | esdhc3: esdhc@70020000 { |
119 | compatible = "fsl,imx51-esdhc"; | 120 | compatible = "fsl,imx51-esdhc"; |
120 | reg = <0x70020000 0x4000>; | 121 | reg = <0x70020000 0x4000>; |
121 | interrupts = <3>; | 122 | interrupts = <3>; |
123 | bus-width = <4>; | ||
122 | status = "disabled"; | 124 | status = "disabled"; |
123 | }; | 125 | }; |
124 | 126 | ||
125 | esdhc@70024000 { /* ESDHC4 */ | 127 | esdhc4: esdhc@70024000 { |
126 | compatible = "fsl,imx51-esdhc"; | 128 | compatible = "fsl,imx51-esdhc"; |
127 | reg = <0x70024000 0x4000>; | 129 | reg = <0x70024000 0x4000>; |
128 | interrupts = <4>; | 130 | interrupts = <4>; |
131 | bus-width = <4>; | ||
129 | status = "disabled"; | 132 | status = "disabled"; |
130 | }; | 133 | }; |
131 | }; | 134 | }; |
132 | 135 | ||
133 | usb@73f80000 { | 136 | usbotg: usb@73f80000 { |
134 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; | 137 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; |
135 | reg = <0x73f80000 0x0200>; | 138 | reg = <0x73f80000 0x0200>; |
136 | interrupts = <18>; | 139 | interrupts = <18>; |
137 | status = "disabled"; | 140 | status = "disabled"; |
138 | }; | 141 | }; |
139 | 142 | ||
140 | usb@73f80200 { | 143 | usbh1: usb@73f80200 { |
141 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; | 144 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; |
142 | reg = <0x73f80200 0x0200>; | 145 | reg = <0x73f80200 0x0200>; |
143 | interrupts = <14>; | 146 | interrupts = <14>; |
144 | status = "disabled"; | 147 | status = "disabled"; |
145 | }; | 148 | }; |
146 | 149 | ||
147 | usb@73f80400 { | 150 | usbh2: usb@73f80400 { |
148 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; | 151 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; |
149 | reg = <0x73f80400 0x0200>; | 152 | reg = <0x73f80400 0x0200>; |
150 | interrupts = <16>; | 153 | interrupts = <16>; |
151 | status = "disabled"; | 154 | status = "disabled"; |
152 | }; | 155 | }; |
153 | 156 | ||
154 | usb@73f80600 { | 157 | usbh3: usb@73f80600 { |
155 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; | 158 | compatible = "fsl,imx51-usb", "fsl,imx27-usb"; |
156 | reg = <0x73f80600 0x0200>; | 159 | reg = <0x73f80600 0x0200>; |
157 | interrupts = <17>; | 160 | interrupts = <17>; |
@@ -198,20 +201,20 @@ | |||
198 | #interrupt-cells = <2>; | 201 | #interrupt-cells = <2>; |
199 | }; | 202 | }; |
200 | 203 | ||
201 | wdog@73f98000 { /* WDOG1 */ | 204 | wdog1: wdog@73f98000 { |
202 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; | 205 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; |
203 | reg = <0x73f98000 0x4000>; | 206 | reg = <0x73f98000 0x4000>; |
204 | interrupts = <58>; | 207 | interrupts = <58>; |
205 | }; | 208 | }; |
206 | 209 | ||
207 | wdog@73f9c000 { /* WDOG2 */ | 210 | wdog2: wdog@73f9c000 { |
208 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; | 211 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; |
209 | reg = <0x73f9c000 0x4000>; | 212 | reg = <0x73f9c000 0x4000>; |
210 | interrupts = <59>; | 213 | interrupts = <59>; |
211 | status = "disabled"; | 214 | status = "disabled"; |
212 | }; | 215 | }; |
213 | 216 | ||
214 | iomuxc@73fa8000 { | 217 | iomuxc: iomuxc@73fa8000 { |
215 | compatible = "fsl,imx51-iomuxc"; | 218 | compatible = "fsl,imx51-iomuxc"; |
216 | reg = <0x73fa8000 0x4000>; | 219 | reg = <0x73fa8000 0x4000>; |
217 | 220 | ||
@@ -349,7 +352,7 @@ | |||
349 | reg = <0x80000000 0x10000000>; | 352 | reg = <0x80000000 0x10000000>; |
350 | ranges; | 353 | ranges; |
351 | 354 | ||
352 | ecspi@83fac000 { /* ECSPI2 */ | 355 | ecspi2: ecspi@83fac000 { |
353 | #address-cells = <1>; | 356 | #address-cells = <1>; |
354 | #size-cells = <0>; | 357 | #size-cells = <0>; |
355 | compatible = "fsl,imx51-ecspi"; | 358 | compatible = "fsl,imx51-ecspi"; |
@@ -358,14 +361,14 @@ | |||
358 | status = "disabled"; | 361 | status = "disabled"; |
359 | }; | 362 | }; |
360 | 363 | ||
361 | sdma@83fb0000 { | 364 | sdma: sdma@83fb0000 { |
362 | compatible = "fsl,imx51-sdma", "fsl,imx35-sdma"; | 365 | compatible = "fsl,imx51-sdma", "fsl,imx35-sdma"; |
363 | reg = <0x83fb0000 0x4000>; | 366 | reg = <0x83fb0000 0x4000>; |
364 | interrupts = <6>; | 367 | interrupts = <6>; |
365 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin"; | 368 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin"; |
366 | }; | 369 | }; |
367 | 370 | ||
368 | cspi@83fc0000 { | 371 | cspi: cspi@83fc0000 { |
369 | #address-cells = <1>; | 372 | #address-cells = <1>; |
370 | #size-cells = <0>; | 373 | #size-cells = <0>; |
371 | compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; | 374 | compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; |
@@ -374,19 +377,19 @@ | |||
374 | status = "disabled"; | 377 | status = "disabled"; |
375 | }; | 378 | }; |
376 | 379 | ||
377 | i2c@83fc4000 { /* I2C2 */ | 380 | i2c2: i2c@83fc4000 { |
378 | #address-cells = <1>; | 381 | #address-cells = <1>; |
379 | #size-cells = <0>; | 382 | #size-cells = <0>; |
380 | compatible = "fsl,imx51-i2c", "fsl,imx1-i2c"; | 383 | compatible = "fsl,imx51-i2c", "fsl,imx21-i2c"; |
381 | reg = <0x83fc4000 0x4000>; | 384 | reg = <0x83fc4000 0x4000>; |
382 | interrupts = <63>; | 385 | interrupts = <63>; |
383 | status = "disabled"; | 386 | status = "disabled"; |
384 | }; | 387 | }; |
385 | 388 | ||
386 | i2c@83fc8000 { /* I2C1 */ | 389 | i2c1: i2c@83fc8000 { |
387 | #address-cells = <1>; | 390 | #address-cells = <1>; |
388 | #size-cells = <0>; | 391 | #size-cells = <0>; |
389 | compatible = "fsl,imx51-i2c", "fsl,imx1-i2c"; | 392 | compatible = "fsl,imx51-i2c", "fsl,imx21-i2c"; |
390 | reg = <0x83fc8000 0x4000>; | 393 | reg = <0x83fc8000 0x4000>; |
391 | interrupts = <62>; | 394 | interrupts = <62>; |
392 | status = "disabled"; | 395 | status = "disabled"; |
@@ -401,13 +404,13 @@ | |||
401 | status = "disabled"; | 404 | status = "disabled"; |
402 | }; | 405 | }; |
403 | 406 | ||
404 | audmux@83fd0000 { | 407 | audmux: audmux@83fd0000 { |
405 | compatible = "fsl,imx51-audmux", "fsl,imx31-audmux"; | 408 | compatible = "fsl,imx51-audmux", "fsl,imx31-audmux"; |
406 | reg = <0x83fd0000 0x4000>; | 409 | reg = <0x83fd0000 0x4000>; |
407 | status = "disabled"; | 410 | status = "disabled"; |
408 | }; | 411 | }; |
409 | 412 | ||
410 | nand@83fdb000 { | 413 | nfc: nand@83fdb000 { |
411 | compatible = "fsl,imx51-nand"; | 414 | compatible = "fsl,imx51-nand"; |
412 | reg = <0x83fdb000 0x1000 0xcfff0000 0x10000>; | 415 | reg = <0x83fdb000 0x1000 0xcfff0000 0x10000>; |
413 | interrupts = <8>; | 416 | interrupts = <8>; |
@@ -423,7 +426,7 @@ | |||
423 | status = "disabled"; | 426 | status = "disabled"; |
424 | }; | 427 | }; |
425 | 428 | ||
426 | ethernet@83fec000 { | 429 | fec: ethernet@83fec000 { |
427 | compatible = "fsl,imx51-fec", "fsl,imx27-fec"; | 430 | compatible = "fsl,imx51-fec", "fsl,imx27-fec"; |
428 | reg = <0x83fec000 0x4000>; | 431 | reg = <0x83fec000 0x4000>; |
429 | interrupts = <87>; | 432 | interrupts = <87>; |
diff --git a/arch/arm/boot/dts/imx53-qsb.dts b/arch/arm/boot/dts/imx53-qsb.dts index 08948af86d1a..b0075537195b 100644 --- a/arch/arm/boot/dts/imx53-qsb.dts +++ b/arch/arm/boot/dts/imx53-qsb.dts | |||
@@ -60,10 +60,17 @@ | |||
60 | 697 0x80000000 /* MX53_PAD_EIM_DA12__GPIO3_12 */ | 60 | 697 0x80000000 /* MX53_PAD_EIM_DA12__GPIO3_12 */ |
61 | 701 0x80000000 /* MX53_PAD_EIM_DA13__GPIO3_13 */ | 61 | 701 0x80000000 /* MX53_PAD_EIM_DA13__GPIO3_13 */ |
62 | 868 0x80000000 /* MX53_PAD_PATA_DA_0__GPIO7_6 */ | 62 | 868 0x80000000 /* MX53_PAD_PATA_DA_0__GPIO7_6 */ |
63 | 1149 0x80000000 /* MX53_PAD_GPIO_16__GPIO7_11 */ | ||
64 | >; | ||
65 | }; | ||
66 | |||
67 | led_pin_gpio7_7: led_gpio7_7@0 { | ||
68 | fsl,pins = < | ||
63 | 873 0x80000000 /* MX53_PAD_PATA_DA_1__GPIO7_7 */ | 69 | 873 0x80000000 /* MX53_PAD_PATA_DA_1__GPIO7_7 */ |
64 | >; | 70 | >; |
65 | }; | 71 | }; |
66 | }; | 72 | }; |
73 | |||
67 | }; | 74 | }; |
68 | 75 | ||
69 | uart1: serial@53fbc000 { | 76 | uart1: serial@53fbc000 { |
@@ -100,76 +107,93 @@ | |||
100 | pmic: dialog@48 { | 107 | pmic: dialog@48 { |
101 | compatible = "dlg,da9053-aa", "dlg,da9052"; | 108 | compatible = "dlg,da9053-aa", "dlg,da9052"; |
102 | reg = <0x48>; | 109 | reg = <0x48>; |
110 | interrupt-parent = <&gpio7>; | ||
111 | interrupts = <11 0x8>; /* low-level active IRQ at GPIO7_11 */ | ||
103 | 112 | ||
104 | regulators { | 113 | regulators { |
105 | buck0 { | 114 | buck1_reg: buck1 { |
106 | regulator-min-microvolt = <500000>; | 115 | regulator-min-microvolt = <500000>; |
107 | regulator-max-microvolt = <2075000>; | 116 | regulator-max-microvolt = <2075000>; |
117 | regulator-always-on; | ||
108 | }; | 118 | }; |
109 | 119 | ||
110 | buck1 { | 120 | buck2_reg: buck2 { |
111 | regulator-min-microvolt = <500000>; | 121 | regulator-min-microvolt = <500000>; |
112 | regulator-max-microvolt = <2075000>; | 122 | regulator-max-microvolt = <2075000>; |
123 | regulator-always-on; | ||
113 | }; | 124 | }; |
114 | 125 | ||
115 | buck2 { | 126 | buck3_reg: buck3 { |
116 | regulator-min-microvolt = <925000>; | 127 | regulator-min-microvolt = <925000>; |
117 | regulator-max-microvolt = <2500000>; | 128 | regulator-max-microvolt = <2500000>; |
129 | regulator-always-on; | ||
118 | }; | 130 | }; |
119 | 131 | ||
120 | buck3 { | 132 | buck4_reg: buck4 { |
121 | regulator-min-microvolt = <925000>; | 133 | regulator-min-microvolt = <925000>; |
122 | regulator-max-microvolt = <2500000>; | 134 | regulator-max-microvolt = <2500000>; |
135 | regulator-always-on; | ||
123 | }; | 136 | }; |
124 | 137 | ||
125 | ldo4 { | 138 | ldo1_reg: ldo1 { |
126 | regulator-min-microvolt = <600000>; | 139 | regulator-min-microvolt = <600000>; |
127 | regulator-max-microvolt = <1800000>; | 140 | regulator-max-microvolt = <1800000>; |
141 | regulator-boot-on; | ||
142 | regulator-always-on; | ||
128 | }; | 143 | }; |
129 | 144 | ||
130 | ldo5 { | 145 | ldo2_reg: ldo2 { |
146 | regulator-min-microvolt = <600000>; | ||
147 | regulator-max-microvolt = <1800000>; | ||
148 | regulator-always-on; | ||
149 | }; | ||
150 | |||
151 | ldo3_reg: ldo3 { | ||
131 | regulator-min-microvolt = <600000>; | 152 | regulator-min-microvolt = <600000>; |
132 | regulator-max-microvolt = <1800000>; | 153 | regulator-max-microvolt = <1800000>; |
154 | regulator-always-on; | ||
133 | }; | 155 | }; |
134 | 156 | ||
135 | ldo6 { | 157 | ldo4_reg: ldo4 { |
136 | regulator-min-microvolt = <1725000>; | 158 | regulator-min-microvolt = <1725000>; |
137 | regulator-max-microvolt = <3300000>; | 159 | regulator-max-microvolt = <3300000>; |
160 | regulator-always-on; | ||
138 | }; | 161 | }; |
139 | 162 | ||
140 | ldo7 { | 163 | ldo5_reg: ldo5 { |
141 | regulator-min-microvolt = <1725000>; | 164 | regulator-min-microvolt = <1725000>; |
142 | regulator-max-microvolt = <3300000>; | 165 | regulator-max-microvolt = <3300000>; |
166 | regulator-always-on; | ||
143 | }; | 167 | }; |
144 | 168 | ||
145 | ldo8 { | 169 | ldo6_reg: ldo6 { |
146 | regulator-min-microvolt = <1200000>; | 170 | regulator-min-microvolt = <1200000>; |
147 | regulator-max-microvolt = <3600000>; | 171 | regulator-max-microvolt = <3600000>; |
172 | regulator-always-on; | ||
148 | }; | 173 | }; |
149 | 174 | ||
150 | ldo9 { | 175 | ldo7_reg: ldo7 { |
151 | regulator-min-microvolt = <1200000>; | 176 | regulator-min-microvolt = <1200000>; |
152 | regulator-max-microvolt = <3600000>; | 177 | regulator-max-microvolt = <3600000>; |
178 | regulator-always-on; | ||
153 | }; | 179 | }; |
154 | 180 | ||
155 | ldo10 { | 181 | ldo8_reg: ldo8 { |
156 | regulator-min-microvolt = <1200000>; | 182 | regulator-min-microvolt = <1200000>; |
157 | regulator-max-microvolt = <3600000>; | 183 | regulator-max-microvolt = <3600000>; |
184 | regulator-always-on; | ||
158 | }; | 185 | }; |
159 | 186 | ||
160 | ldo11 { | 187 | ldo9_reg: ldo9 { |
161 | regulator-min-microvolt = <1200000>; | 188 | regulator-min-microvolt = <1200000>; |
162 | regulator-max-microvolt = <3600000>; | 189 | regulator-max-microvolt = <3600000>; |
190 | regulator-always-on; | ||
163 | }; | 191 | }; |
164 | 192 | ||
165 | ldo12 { | 193 | ldo10_reg: ldo10 { |
166 | regulator-min-microvolt = <1250000>; | 194 | regulator-min-microvolt = <1250000>; |
167 | regulator-max-microvolt = <3650000>; | 195 | regulator-max-microvolt = <3650000>; |
168 | }; | 196 | regulator-always-on; |
169 | |||
170 | ldo13 { | ||
171 | regulator-min-microvolt = <1200000>; | ||
172 | regulator-max-microvolt = <3600000>; | ||
173 | }; | 197 | }; |
174 | }; | 198 | }; |
175 | }; | 199 | }; |
@@ -216,6 +240,8 @@ | |||
216 | 240 | ||
217 | leds { | 241 | leds { |
218 | compatible = "gpio-leds"; | 242 | compatible = "gpio-leds"; |
243 | pinctrl-names = "default"; | ||
244 | pinctrl-0 = <&led_pin_gpio7_7>; | ||
219 | 245 | ||
220 | user { | 246 | user { |
221 | label = "Heartbeat"; | 247 | label = "Heartbeat"; |
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi index 76ebb1ad2675..f45d4b1e21b5 100644 --- a/arch/arm/boot/dts/imx53.dtsi +++ b/arch/arm/boot/dts/imx53.dtsi | |||
@@ -81,17 +81,19 @@ | |||
81 | reg = <0x50000000 0x40000>; | 81 | reg = <0x50000000 0x40000>; |
82 | ranges; | 82 | ranges; |
83 | 83 | ||
84 | esdhc@50004000 { /* ESDHC1 */ | 84 | esdhc1: esdhc@50004000 { |
85 | compatible = "fsl,imx53-esdhc"; | 85 | compatible = "fsl,imx53-esdhc"; |
86 | reg = <0x50004000 0x4000>; | 86 | reg = <0x50004000 0x4000>; |
87 | interrupts = <1>; | 87 | interrupts = <1>; |
88 | bus-width = <4>; | ||
88 | status = "disabled"; | 89 | status = "disabled"; |
89 | }; | 90 | }; |
90 | 91 | ||
91 | esdhc@50008000 { /* ESDHC2 */ | 92 | esdhc2: esdhc@50008000 { |
92 | compatible = "fsl,imx53-esdhc"; | 93 | compatible = "fsl,imx53-esdhc"; |
93 | reg = <0x50008000 0x4000>; | 94 | reg = <0x50008000 0x4000>; |
94 | interrupts = <2>; | 95 | interrupts = <2>; |
96 | bus-width = <4>; | ||
95 | status = "disabled"; | 97 | status = "disabled"; |
96 | }; | 98 | }; |
97 | 99 | ||
@@ -102,7 +104,7 @@ | |||
102 | status = "disabled"; | 104 | status = "disabled"; |
103 | }; | 105 | }; |
104 | 106 | ||
105 | ecspi@50010000 { /* ECSPI1 */ | 107 | ecspi1: ecspi@50010000 { |
106 | #address-cells = <1>; | 108 | #address-cells = <1>; |
107 | #size-cells = <0>; | 109 | #size-cells = <0>; |
108 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; | 110 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; |
@@ -120,43 +122,45 @@ | |||
120 | status = "disabled"; | 122 | status = "disabled"; |
121 | }; | 123 | }; |
122 | 124 | ||
123 | esdhc@50020000 { /* ESDHC3 */ | 125 | esdhc3: esdhc@50020000 { |
124 | compatible = "fsl,imx53-esdhc"; | 126 | compatible = "fsl,imx53-esdhc"; |
125 | reg = <0x50020000 0x4000>; | 127 | reg = <0x50020000 0x4000>; |
126 | interrupts = <3>; | 128 | interrupts = <3>; |
129 | bus-width = <4>; | ||
127 | status = "disabled"; | 130 | status = "disabled"; |
128 | }; | 131 | }; |
129 | 132 | ||
130 | esdhc@50024000 { /* ESDHC4 */ | 133 | esdhc4: esdhc@50024000 { |
131 | compatible = "fsl,imx53-esdhc"; | 134 | compatible = "fsl,imx53-esdhc"; |
132 | reg = <0x50024000 0x4000>; | 135 | reg = <0x50024000 0x4000>; |
133 | interrupts = <4>; | 136 | interrupts = <4>; |
137 | bus-width = <4>; | ||
134 | status = "disabled"; | 138 | status = "disabled"; |
135 | }; | 139 | }; |
136 | }; | 140 | }; |
137 | 141 | ||
138 | usb@53f80000 { | 142 | usbotg: usb@53f80000 { |
139 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; | 143 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; |
140 | reg = <0x53f80000 0x0200>; | 144 | reg = <0x53f80000 0x0200>; |
141 | interrupts = <18>; | 145 | interrupts = <18>; |
142 | status = "disabled"; | 146 | status = "disabled"; |
143 | }; | 147 | }; |
144 | 148 | ||
145 | usb@53f80200 { | 149 | usbh1: usb@53f80200 { |
146 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; | 150 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; |
147 | reg = <0x53f80200 0x0200>; | 151 | reg = <0x53f80200 0x0200>; |
148 | interrupts = <14>; | 152 | interrupts = <14>; |
149 | status = "disabled"; | 153 | status = "disabled"; |
150 | }; | 154 | }; |
151 | 155 | ||
152 | usb@53f80400 { | 156 | usbh2: usb@53f80400 { |
153 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; | 157 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; |
154 | reg = <0x53f80400 0x0200>; | 158 | reg = <0x53f80400 0x0200>; |
155 | interrupts = <16>; | 159 | interrupts = <16>; |
156 | status = "disabled"; | 160 | status = "disabled"; |
157 | }; | 161 | }; |
158 | 162 | ||
159 | usb@53f80600 { | 163 | usbh3: usb@53f80600 { |
160 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; | 164 | compatible = "fsl,imx53-usb", "fsl,imx27-usb"; |
161 | reg = <0x53f80600 0x0200>; | 165 | reg = <0x53f80600 0x0200>; |
162 | interrupts = <17>; | 166 | interrupts = <17>; |
@@ -203,20 +207,20 @@ | |||
203 | #interrupt-cells = <2>; | 207 | #interrupt-cells = <2>; |
204 | }; | 208 | }; |
205 | 209 | ||
206 | wdog@53f98000 { /* WDOG1 */ | 210 | wdog1: wdog@53f98000 { |
207 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; | 211 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; |
208 | reg = <0x53f98000 0x4000>; | 212 | reg = <0x53f98000 0x4000>; |
209 | interrupts = <58>; | 213 | interrupts = <58>; |
210 | }; | 214 | }; |
211 | 215 | ||
212 | wdog@53f9c000 { /* WDOG2 */ | 216 | wdog2: wdog@53f9c000 { |
213 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; | 217 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; |
214 | reg = <0x53f9c000 0x4000>; | 218 | reg = <0x53f9c000 0x4000>; |
215 | interrupts = <59>; | 219 | interrupts = <59>; |
216 | status = "disabled"; | 220 | status = "disabled"; |
217 | }; | 221 | }; |
218 | 222 | ||
219 | iomuxc@53fa8000 { | 223 | iomuxc: iomuxc@53fa8000 { |
220 | compatible = "fsl,imx53-iomuxc"; | 224 | compatible = "fsl,imx53-iomuxc"; |
221 | reg = <0x53fa8000 0x4000>; | 225 | reg = <0x53fa8000 0x4000>; |
222 | 226 | ||
@@ -316,6 +320,24 @@ | |||
316 | }; | 320 | }; |
317 | }; | 321 | }; |
318 | 322 | ||
323 | can1 { | ||
324 | pinctrl_can1_1: can1grp-1 { | ||
325 | fsl,pins = < | ||
326 | 847 0x80000000 /* MX53_PAD_PATA_INTRQ__CAN1_TXCAN */ | ||
327 | 853 0x80000000 /* MX53_PAD_PATA_DIOR__CAN1_RXCAN */ | ||
328 | >; | ||
329 | }; | ||
330 | }; | ||
331 | |||
332 | can2 { | ||
333 | pinctrl_can2_1: can2grp-1 { | ||
334 | fsl,pins = < | ||
335 | 67 0x80000000 /* MX53_PAD_KEY_COL4__CAN2_TXCAN */ | ||
336 | 74 0x80000000 /* MX53_PAD_KEY_ROW4__CAN2_RXCAN */ | ||
337 | >; | ||
338 | }; | ||
339 | }; | ||
340 | |||
319 | i2c1 { | 341 | i2c1 { |
320 | pinctrl_i2c1_1: i2c1grp-1 { | 342 | pinctrl_i2c1_1: i2c1grp-1 { |
321 | fsl,pins = < | 343 | fsl,pins = < |
@@ -334,6 +356,15 @@ | |||
334 | }; | 356 | }; |
335 | }; | 357 | }; |
336 | 358 | ||
359 | i2c3 { | ||
360 | pinctrl_i2c3_1: i2c3grp-1 { | ||
361 | fsl,pins = < | ||
362 | 1102 0xc0000000 /* MX53_PAD_GPIO_6__I2C3_SDA */ | ||
363 | 1130 0xc0000000 /* MX53_PAD_GPIO_5__I2C3_SCL */ | ||
364 | >; | ||
365 | }; | ||
366 | }; | ||
367 | |||
337 | uart1 { | 368 | uart1 { |
338 | pinctrl_uart1_1: uart1grp-1 { | 369 | pinctrl_uart1_1: uart1grp-1 { |
339 | fsl,pins = < | 370 | fsl,pins = < |
@@ -369,6 +400,25 @@ | |||
369 | >; | 400 | >; |
370 | }; | 401 | }; |
371 | }; | 402 | }; |
403 | |||
404 | uart4 { | ||
405 | pinctrl_uart4_1: uart4grp-1 { | ||
406 | fsl,pins = < | ||
407 | 11 0x1c5 /* MX53_PAD_KEY_COL0__UART4_TXD_MUX */ | ||
408 | 18 0x1c5 /* MX53_PAD_KEY_ROW0__UART4_RXD_MUX */ | ||
409 | >; | ||
410 | }; | ||
411 | }; | ||
412 | |||
413 | uart5 { | ||
414 | pinctrl_uart5_1: uart5grp-1 { | ||
415 | fsl,pins = < | ||
416 | 24 0x1c5 /* MX53_PAD_KEY_COL1__UART5_TXD_MUX */ | ||
417 | 31 0x1c5 /* MX53_PAD_KEY_ROW1__UART5_RXD_MUX */ | ||
418 | >; | ||
419 | }; | ||
420 | }; | ||
421 | |||
372 | }; | 422 | }; |
373 | 423 | ||
374 | uart1: serial@53fbc000 { | 424 | uart1: serial@53fbc000 { |
@@ -429,10 +479,10 @@ | |||
429 | #interrupt-cells = <2>; | 479 | #interrupt-cells = <2>; |
430 | }; | 480 | }; |
431 | 481 | ||
432 | i2c@53fec000 { /* I2C3 */ | 482 | i2c3: i2c@53fec000 { |
433 | #address-cells = <1>; | 483 | #address-cells = <1>; |
434 | #size-cells = <0>; | 484 | #size-cells = <0>; |
435 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | 485 | compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; |
436 | reg = <0x53fec000 0x4000>; | 486 | reg = <0x53fec000 0x4000>; |
437 | interrupts = <64>; | 487 | interrupts = <64>; |
438 | status = "disabled"; | 488 | status = "disabled"; |
@@ -460,7 +510,7 @@ | |||
460 | status = "disabled"; | 510 | status = "disabled"; |
461 | }; | 511 | }; |
462 | 512 | ||
463 | ecspi@63fac000 { /* ECSPI2 */ | 513 | ecspi2: ecspi@63fac000 { |
464 | #address-cells = <1>; | 514 | #address-cells = <1>; |
465 | #size-cells = <0>; | 515 | #size-cells = <0>; |
466 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; | 516 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; |
@@ -469,14 +519,14 @@ | |||
469 | status = "disabled"; | 519 | status = "disabled"; |
470 | }; | 520 | }; |
471 | 521 | ||
472 | sdma@63fb0000 { | 522 | sdma: sdma@63fb0000 { |
473 | compatible = "fsl,imx53-sdma", "fsl,imx35-sdma"; | 523 | compatible = "fsl,imx53-sdma", "fsl,imx35-sdma"; |
474 | reg = <0x63fb0000 0x4000>; | 524 | reg = <0x63fb0000 0x4000>; |
475 | interrupts = <6>; | 525 | interrupts = <6>; |
476 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; | 526 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; |
477 | }; | 527 | }; |
478 | 528 | ||
479 | cspi@63fc0000 { | 529 | cspi: cspi@63fc0000 { |
480 | #address-cells = <1>; | 530 | #address-cells = <1>; |
481 | #size-cells = <0>; | 531 | #size-cells = <0>; |
482 | compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; | 532 | compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; |
@@ -485,19 +535,19 @@ | |||
485 | status = "disabled"; | 535 | status = "disabled"; |
486 | }; | 536 | }; |
487 | 537 | ||
488 | i2c@63fc4000 { /* I2C2 */ | 538 | i2c2: i2c@63fc4000 { |
489 | #address-cells = <1>; | 539 | #address-cells = <1>; |
490 | #size-cells = <0>; | 540 | #size-cells = <0>; |
491 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | 541 | compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; |
492 | reg = <0x63fc4000 0x4000>; | 542 | reg = <0x63fc4000 0x4000>; |
493 | interrupts = <63>; | 543 | interrupts = <63>; |
494 | status = "disabled"; | 544 | status = "disabled"; |
495 | }; | 545 | }; |
496 | 546 | ||
497 | i2c@63fc8000 { /* I2C1 */ | 547 | i2c1: i2c@63fc8000 { |
498 | #address-cells = <1>; | 548 | #address-cells = <1>; |
499 | #size-cells = <0>; | 549 | #size-cells = <0>; |
500 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | 550 | compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; |
501 | reg = <0x63fc8000 0x4000>; | 551 | reg = <0x63fc8000 0x4000>; |
502 | interrupts = <62>; | 552 | interrupts = <62>; |
503 | status = "disabled"; | 553 | status = "disabled"; |
@@ -512,13 +562,13 @@ | |||
512 | status = "disabled"; | 562 | status = "disabled"; |
513 | }; | 563 | }; |
514 | 564 | ||
515 | audmux@63fd0000 { | 565 | audmux: audmux@63fd0000 { |
516 | compatible = "fsl,imx53-audmux", "fsl,imx31-audmux"; | 566 | compatible = "fsl,imx53-audmux", "fsl,imx31-audmux"; |
517 | reg = <0x63fd0000 0x4000>; | 567 | reg = <0x63fd0000 0x4000>; |
518 | status = "disabled"; | 568 | status = "disabled"; |
519 | }; | 569 | }; |
520 | 570 | ||
521 | nand@63fdb000 { | 571 | nfc: nand@63fdb000 { |
522 | compatible = "fsl,imx53-nand"; | 572 | compatible = "fsl,imx53-nand"; |
523 | reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>; | 573 | reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>; |
524 | interrupts = <8>; | 574 | interrupts = <8>; |
@@ -534,7 +584,7 @@ | |||
534 | status = "disabled"; | 584 | status = "disabled"; |
535 | }; | 585 | }; |
536 | 586 | ||
537 | ethernet@63fec000 { | 587 | fec: ethernet@63fec000 { |
538 | compatible = "fsl,imx53-fec", "fsl,imx25-fec"; | 588 | compatible = "fsl,imx53-fec", "fsl,imx25-fec"; |
539 | reg = <0x63fec000 0x4000>; | 589 | reg = <0x63fec000 0x4000>; |
540 | interrupts = <87>; | 590 | interrupts = <87>; |
diff --git a/arch/arm/boot/dts/imx6q-sabreauto.dts b/arch/arm/boot/dts/imx6q-sabreauto.dts new file mode 100644 index 000000000000..826e4ad1477e --- /dev/null +++ b/arch/arm/boot/dts/imx6q-sabreauto.dts | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
4 | * | ||
5 | * The code contained herein is licensed under the GNU General Public | ||
6 | * License. You may obtain a copy of the GNU General Public License | ||
7 | * Version 2 or later at the following locations: | ||
8 | * | ||
9 | * http://www.opensource.org/licenses/gpl-license.html | ||
10 | * http://www.gnu.org/copyleft/gpl.html | ||
11 | */ | ||
12 | |||
13 | /dts-v1/; | ||
14 | /include/ "imx6q.dtsi" | ||
15 | |||
16 | / { | ||
17 | model = "Freescale i.MX6 Quad SABRE Automotive Board"; | ||
18 | compatible = "fsl,imx6q-sabreauto", "fsl,imx6q"; | ||
19 | |||
20 | memory { | ||
21 | reg = <0x10000000 0x80000000>; | ||
22 | }; | ||
23 | |||
24 | soc { | ||
25 | aips-bus@02000000 { /* AIPS1 */ | ||
26 | iomuxc@020e0000 { | ||
27 | pinctrl-names = "default"; | ||
28 | pinctrl-0 = <&pinctrl_hog>; | ||
29 | |||
30 | hog { | ||
31 | pinctrl_hog: hoggrp { | ||
32 | fsl,pins = < | ||
33 | 1376 0x80000000 /* MX6Q_PAD_NANDF_CS2__GPIO_6_15 */ | ||
34 | 13 0x80000000 /* MX6Q_PAD_SD2_DAT2__GPIO_1_13 */ | ||
35 | >; | ||
36 | }; | ||
37 | }; | ||
38 | }; | ||
39 | }; | ||
40 | |||
41 | aips-bus@02100000 { /* AIPS2 */ | ||
42 | uart4: serial@021f0000 { | ||
43 | pinctrl-names = "default"; | ||
44 | pinctrl-0 = <&pinctrl_uart4_1>; | ||
45 | status = "okay"; | ||
46 | }; | ||
47 | |||
48 | ethernet@02188000 { | ||
49 | pinctrl-names = "default"; | ||
50 | pinctrl-0 = <&pinctrl_enet_2>; | ||
51 | phy-mode = "rgmii"; | ||
52 | status = "okay"; | ||
53 | }; | ||
54 | |||
55 | usdhc@02198000 { /* uSDHC3 */ | ||
56 | pinctrl-names = "default"; | ||
57 | pinctrl-0 = <&pinctrl_usdhc3_1>; | ||
58 | cd-gpios = <&gpio6 15 0>; | ||
59 | wp-gpios = <&gpio1 13 0>; | ||
60 | status = "okay"; | ||
61 | }; | ||
62 | }; | ||
63 | }; | ||
64 | }; | ||
diff --git a/arch/arm/boot/dts/imx6q-sabresd.dts b/arch/arm/boot/dts/imx6q-sabresd.dts index e596c28c214d..a42402562b7b 100644 --- a/arch/arm/boot/dts/imx6q-sabresd.dts +++ b/arch/arm/boot/dts/imx6q-sabresd.dts | |||
@@ -38,6 +38,8 @@ | |||
38 | hog { | 38 | hog { |
39 | pinctrl_hog: hoggrp { | 39 | pinctrl_hog: hoggrp { |
40 | fsl,pins = < | 40 | fsl,pins = < |
41 | 1004 0x80000000 /* MX6Q_PAD_GPIO_4__GPIO_1_4 */ | ||
42 | 1012 0x80000000 /* MX6Q_PAD_GPIO_5__GPIO_1_5 */ | ||
41 | 1402 0x80000000 /* MX6Q_PAD_NANDF_D0__GPIO_2_0 */ | 43 | 1402 0x80000000 /* MX6Q_PAD_NANDF_D0__GPIO_2_0 */ |
42 | 1410 0x80000000 /* MX6Q_PAD_NANDF_D1__GPIO_2_1 */ | 44 | 1410 0x80000000 /* MX6Q_PAD_NANDF_D1__GPIO_2_1 */ |
43 | 1418 0x80000000 /* MX6Q_PAD_NANDF_D2__GPIO_2_2 */ | 45 | 1418 0x80000000 /* MX6Q_PAD_NANDF_D2__GPIO_2_2 */ |
@@ -73,4 +75,20 @@ | |||
73 | }; | 75 | }; |
74 | }; | 76 | }; |
75 | }; | 77 | }; |
78 | |||
79 | gpio-keys { | ||
80 | compatible = "gpio-keys"; | ||
81 | |||
82 | volume-up { | ||
83 | label = "Volume Up"; | ||
84 | gpios = <&gpio1 4 0>; | ||
85 | linux,code = <115>; /* KEY_VOLUMEUP */ | ||
86 | }; | ||
87 | |||
88 | volume-down { | ||
89 | label = "Volume Down"; | ||
90 | gpios = <&gpio1 5 0>; | ||
91 | linux,code = <114>; /* KEY_VOLUMEDOWN */ | ||
92 | }; | ||
93 | }; | ||
76 | }; | 94 | }; |
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index f3990b04fecf..6dfeaedef307 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi | |||
@@ -36,6 +36,14 @@ | |||
36 | compatible = "arm,cortex-a9"; | 36 | compatible = "arm,cortex-a9"; |
37 | reg = <0>; | 37 | reg = <0>; |
38 | next-level-cache = <&L2>; | 38 | next-level-cache = <&L2>; |
39 | operating-points = < | ||
40 | /* kHz uV */ | ||
41 | 792000 1100000 | ||
42 | 396000 950000 | ||
43 | 198000 850000 | ||
44 | >; | ||
45 | clock-latency = <61036>; /* two CLK32 periods */ | ||
46 | cpu0-supply = <®_cpu>; | ||
39 | }; | 47 | }; |
40 | 48 | ||
41 | cpu@1 { | 49 | cpu@1 { |
@@ -100,7 +108,7 @@ | |||
100 | clocks = <&clks 106>; | 108 | clocks = <&clks 106>; |
101 | }; | 109 | }; |
102 | 110 | ||
103 | gpmi-nand@00112000 { | 111 | nfc: gpmi-nand@00112000 { |
104 | compatible = "fsl,imx6q-gpmi-nand"; | 112 | compatible = "fsl,imx6q-gpmi-nand"; |
105 | #address-cells = <1>; | 113 | #address-cells = <1>; |
106 | #size-cells = <1>; | 114 | #size-cells = <1>; |
@@ -144,12 +152,12 @@ | |||
144 | reg = <0x02000000 0x40000>; | 152 | reg = <0x02000000 0x40000>; |
145 | ranges; | 153 | ranges; |
146 | 154 | ||
147 | spdif@02004000 { | 155 | spdif: spdif@02004000 { |
148 | reg = <0x02004000 0x4000>; | 156 | reg = <0x02004000 0x4000>; |
149 | interrupts = <0 52 0x04>; | 157 | interrupts = <0 52 0x04>; |
150 | }; | 158 | }; |
151 | 159 | ||
152 | ecspi@02008000 { /* eCSPI1 */ | 160 | ecspi1: ecspi@02008000 { |
153 | #address-cells = <1>; | 161 | #address-cells = <1>; |
154 | #size-cells = <0>; | 162 | #size-cells = <0>; |
155 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; | 163 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; |
@@ -160,7 +168,7 @@ | |||
160 | status = "disabled"; | 168 | status = "disabled"; |
161 | }; | 169 | }; |
162 | 170 | ||
163 | ecspi@0200c000 { /* eCSPI2 */ | 171 | ecspi2: ecspi@0200c000 { |
164 | #address-cells = <1>; | 172 | #address-cells = <1>; |
165 | #size-cells = <0>; | 173 | #size-cells = <0>; |
166 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; | 174 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; |
@@ -171,7 +179,7 @@ | |||
171 | status = "disabled"; | 179 | status = "disabled"; |
172 | }; | 180 | }; |
173 | 181 | ||
174 | ecspi@02010000 { /* eCSPI3 */ | 182 | ecspi3: ecspi@02010000 { |
175 | #address-cells = <1>; | 183 | #address-cells = <1>; |
176 | #size-cells = <0>; | 184 | #size-cells = <0>; |
177 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; | 185 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; |
@@ -182,7 +190,7 @@ | |||
182 | status = "disabled"; | 190 | status = "disabled"; |
183 | }; | 191 | }; |
184 | 192 | ||
185 | ecspi@02014000 { /* eCSPI4 */ | 193 | ecspi4: ecspi@02014000 { |
186 | #address-cells = <1>; | 194 | #address-cells = <1>; |
187 | #size-cells = <0>; | 195 | #size-cells = <0>; |
188 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; | 196 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; |
@@ -193,7 +201,7 @@ | |||
193 | status = "disabled"; | 201 | status = "disabled"; |
194 | }; | 202 | }; |
195 | 203 | ||
196 | ecspi@02018000 { /* eCSPI5 */ | 204 | ecspi5: ecspi@02018000 { |
197 | #address-cells = <1>; | 205 | #address-cells = <1>; |
198 | #size-cells = <0>; | 206 | #size-cells = <0>; |
199 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; | 207 | compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; |
@@ -213,7 +221,7 @@ | |||
213 | status = "disabled"; | 221 | status = "disabled"; |
214 | }; | 222 | }; |
215 | 223 | ||
216 | esai@02024000 { | 224 | esai: esai@02024000 { |
217 | reg = <0x02024000 0x4000>; | 225 | reg = <0x02024000 0x4000>; |
218 | interrupts = <0 51 0x04>; | 226 | interrupts = <0 51 0x04>; |
219 | }; | 227 | }; |
@@ -248,7 +256,7 @@ | |||
248 | status = "disabled"; | 256 | status = "disabled"; |
249 | }; | 257 | }; |
250 | 258 | ||
251 | asrc@02034000 { | 259 | asrc: asrc@02034000 { |
252 | reg = <0x02034000 0x4000>; | 260 | reg = <0x02034000 0x4000>; |
253 | interrupts = <0 50 0x04>; | 261 | interrupts = <0 50 0x04>; |
254 | }; | 262 | }; |
@@ -258,7 +266,7 @@ | |||
258 | }; | 266 | }; |
259 | }; | 267 | }; |
260 | 268 | ||
261 | vpu@02040000 { | 269 | vpu: vpu@02040000 { |
262 | reg = <0x02040000 0x3c000>; | 270 | reg = <0x02040000 0x3c000>; |
263 | interrupts = <0 3 0x04 0 12 0x04>; | 271 | interrupts = <0 3 0x04 0 12 0x04>; |
264 | }; | 272 | }; |
@@ -267,37 +275,37 @@ | |||
267 | reg = <0x0207c000 0x4000>; | 275 | reg = <0x0207c000 0x4000>; |
268 | }; | 276 | }; |
269 | 277 | ||
270 | pwm@02080000 { /* PWM1 */ | 278 | pwm1: pwm@02080000 { |
271 | reg = <0x02080000 0x4000>; | 279 | reg = <0x02080000 0x4000>; |
272 | interrupts = <0 83 0x04>; | 280 | interrupts = <0 83 0x04>; |
273 | }; | 281 | }; |
274 | 282 | ||
275 | pwm@02084000 { /* PWM2 */ | 283 | pwm2: pwm@02084000 { |
276 | reg = <0x02084000 0x4000>; | 284 | reg = <0x02084000 0x4000>; |
277 | interrupts = <0 84 0x04>; | 285 | interrupts = <0 84 0x04>; |
278 | }; | 286 | }; |
279 | 287 | ||
280 | pwm@02088000 { /* PWM3 */ | 288 | pwm3: pwm@02088000 { |
281 | reg = <0x02088000 0x4000>; | 289 | reg = <0x02088000 0x4000>; |
282 | interrupts = <0 85 0x04>; | 290 | interrupts = <0 85 0x04>; |
283 | }; | 291 | }; |
284 | 292 | ||
285 | pwm@0208c000 { /* PWM4 */ | 293 | pwm4: pwm@0208c000 { |
286 | reg = <0x0208c000 0x4000>; | 294 | reg = <0x0208c000 0x4000>; |
287 | interrupts = <0 86 0x04>; | 295 | interrupts = <0 86 0x04>; |
288 | }; | 296 | }; |
289 | 297 | ||
290 | flexcan@02090000 { /* CAN1 */ | 298 | can1: flexcan@02090000 { |
291 | reg = <0x02090000 0x4000>; | 299 | reg = <0x02090000 0x4000>; |
292 | interrupts = <0 110 0x04>; | 300 | interrupts = <0 110 0x04>; |
293 | }; | 301 | }; |
294 | 302 | ||
295 | flexcan@02094000 { /* CAN2 */ | 303 | can2: flexcan@02094000 { |
296 | reg = <0x02094000 0x4000>; | 304 | reg = <0x02094000 0x4000>; |
297 | interrupts = <0 111 0x04>; | 305 | interrupts = <0 111 0x04>; |
298 | }; | 306 | }; |
299 | 307 | ||
300 | gpt@02098000 { | 308 | gpt: gpt@02098000 { |
301 | compatible = "fsl,imx6q-gpt"; | 309 | compatible = "fsl,imx6q-gpt"; |
302 | reg = <0x02098000 0x4000>; | 310 | reg = <0x02098000 0x4000>; |
303 | interrupts = <0 55 0x04>; | 311 | interrupts = <0 55 0x04>; |
@@ -373,19 +381,19 @@ | |||
373 | #interrupt-cells = <2>; | 381 | #interrupt-cells = <2>; |
374 | }; | 382 | }; |
375 | 383 | ||
376 | kpp@020b8000 { | 384 | kpp: kpp@020b8000 { |
377 | reg = <0x020b8000 0x4000>; | 385 | reg = <0x020b8000 0x4000>; |
378 | interrupts = <0 82 0x04>; | 386 | interrupts = <0 82 0x04>; |
379 | }; | 387 | }; |
380 | 388 | ||
381 | wdog@020bc000 { /* WDOG1 */ | 389 | wdog1: wdog@020bc000 { |
382 | compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; | 390 | compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; |
383 | reg = <0x020bc000 0x4000>; | 391 | reg = <0x020bc000 0x4000>; |
384 | interrupts = <0 80 0x04>; | 392 | interrupts = <0 80 0x04>; |
385 | clocks = <&clks 0>; | 393 | clocks = <&clks 0>; |
386 | }; | 394 | }; |
387 | 395 | ||
388 | wdog@020c0000 { /* WDOG2 */ | 396 | wdog2: wdog@020c0000 { |
389 | compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; | 397 | compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; |
390 | reg = <0x020c0000 0x4000>; | 398 | reg = <0x020c0000 0x4000>; |
391 | interrupts = <0 81 0x04>; | 399 | interrupts = <0 81 0x04>; |
@@ -447,7 +455,7 @@ | |||
447 | anatop-max-voltage = <2750000>; | 455 | anatop-max-voltage = <2750000>; |
448 | }; | 456 | }; |
449 | 457 | ||
450 | regulator-vddcore@140 { | 458 | reg_cpu: regulator-vddcore@140 { |
451 | compatible = "fsl,anatop-regulator"; | 459 | compatible = "fsl,anatop-regulator"; |
452 | regulator-name = "cpu"; | 460 | regulator-name = "cpu"; |
453 | regulator-min-microvolt = <725000>; | 461 | regulator-min-microvolt = <725000>; |
@@ -505,27 +513,35 @@ | |||
505 | }; | 513 | }; |
506 | 514 | ||
507 | snvs@020cc000 { | 515 | snvs@020cc000 { |
508 | reg = <0x020cc000 0x4000>; | 516 | compatible = "fsl,sec-v4.0-mon", "simple-bus"; |
509 | interrupts = <0 19 0x04 0 20 0x04>; | 517 | #address-cells = <1>; |
518 | #size-cells = <1>; | ||
519 | ranges = <0 0x020cc000 0x4000>; | ||
520 | |||
521 | snvs-rtc-lp@34 { | ||
522 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; | ||
523 | reg = <0x34 0x58>; | ||
524 | interrupts = <0 19 0x04 0 20 0x04>; | ||
525 | }; | ||
510 | }; | 526 | }; |
511 | 527 | ||
512 | epit@020d0000 { /* EPIT1 */ | 528 | epit1: epit@020d0000 { /* EPIT1 */ |
513 | reg = <0x020d0000 0x4000>; | 529 | reg = <0x020d0000 0x4000>; |
514 | interrupts = <0 56 0x04>; | 530 | interrupts = <0 56 0x04>; |
515 | }; | 531 | }; |
516 | 532 | ||
517 | epit@020d4000 { /* EPIT2 */ | 533 | epit2: epit@020d4000 { /* EPIT2 */ |
518 | reg = <0x020d4000 0x4000>; | 534 | reg = <0x020d4000 0x4000>; |
519 | interrupts = <0 57 0x04>; | 535 | interrupts = <0 57 0x04>; |
520 | }; | 536 | }; |
521 | 537 | ||
522 | src@020d8000 { | 538 | src: src@020d8000 { |
523 | compatible = "fsl,imx6q-src"; | 539 | compatible = "fsl,imx6q-src"; |
524 | reg = <0x020d8000 0x4000>; | 540 | reg = <0x020d8000 0x4000>; |
525 | interrupts = <0 91 0x04 0 96 0x04>; | 541 | interrupts = <0 91 0x04 0 96 0x04>; |
526 | }; | 542 | }; |
527 | 543 | ||
528 | gpc@020dc000 { | 544 | gpc: gpc@020dc000 { |
529 | compatible = "fsl,imx6q-gpc"; | 545 | compatible = "fsl,imx6q-gpc"; |
530 | reg = <0x020dc000 0x4000>; | 546 | reg = <0x020dc000 0x4000>; |
531 | interrupts = <0 89 0x04 0 90 0x04>; | 547 | interrupts = <0 89 0x04 0 90 0x04>; |
@@ -536,7 +552,7 @@ | |||
536 | reg = <0x020e0000 0x38>; | 552 | reg = <0x020e0000 0x38>; |
537 | }; | 553 | }; |
538 | 554 | ||
539 | iomuxc@020e0000 { | 555 | iomuxc: iomuxc@020e0000 { |
540 | compatible = "fsl,imx6q-iomuxc"; | 556 | compatible = "fsl,imx6q-iomuxc"; |
541 | reg = <0x020e0000 0x4000>; | 557 | reg = <0x020e0000 0x4000>; |
542 | 558 | ||
@@ -748,17 +764,17 @@ | |||
748 | }; | 764 | }; |
749 | }; | 765 | }; |
750 | 766 | ||
751 | dcic@020e4000 { /* DCIC1 */ | 767 | dcic1: dcic@020e4000 { |
752 | reg = <0x020e4000 0x4000>; | 768 | reg = <0x020e4000 0x4000>; |
753 | interrupts = <0 124 0x04>; | 769 | interrupts = <0 124 0x04>; |
754 | }; | 770 | }; |
755 | 771 | ||
756 | dcic@020e8000 { /* DCIC2 */ | 772 | dcic2: dcic@020e8000 { |
757 | reg = <0x020e8000 0x4000>; | 773 | reg = <0x020e8000 0x4000>; |
758 | interrupts = <0 125 0x04>; | 774 | interrupts = <0 125 0x04>; |
759 | }; | 775 | }; |
760 | 776 | ||
761 | sdma@020ec000 { | 777 | sdma: sdma@020ec000 { |
762 | compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma"; | 778 | compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma"; |
763 | reg = <0x020ec000 0x4000>; | 779 | reg = <0x020ec000 0x4000>; |
764 | interrupts = <0 2 0x04>; | 780 | interrupts = <0 2 0x04>; |
@@ -784,7 +800,7 @@ | |||
784 | reg = <0x0217c000 0x4000>; | 800 | reg = <0x0217c000 0x4000>; |
785 | }; | 801 | }; |
786 | 802 | ||
787 | usb@02184000 { /* USB OTG */ | 803 | usbotg: usb@02184000 { |
788 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; | 804 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; |
789 | reg = <0x02184000 0x200>; | 805 | reg = <0x02184000 0x200>; |
790 | interrupts = <0 43 0x04>; | 806 | interrupts = <0 43 0x04>; |
@@ -794,7 +810,7 @@ | |||
794 | status = "disabled"; | 810 | status = "disabled"; |
795 | }; | 811 | }; |
796 | 812 | ||
797 | usb@02184200 { /* USB1 */ | 813 | usbh1: usb@02184200 { |
798 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; | 814 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; |
799 | reg = <0x02184200 0x200>; | 815 | reg = <0x02184200 0x200>; |
800 | interrupts = <0 40 0x04>; | 816 | interrupts = <0 40 0x04>; |
@@ -804,7 +820,7 @@ | |||
804 | status = "disabled"; | 820 | status = "disabled"; |
805 | }; | 821 | }; |
806 | 822 | ||
807 | usb@02184400 { /* USB2 */ | 823 | usbh2: usb@02184400 { |
808 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; | 824 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; |
809 | reg = <0x02184400 0x200>; | 825 | reg = <0x02184400 0x200>; |
810 | interrupts = <0 41 0x04>; | 826 | interrupts = <0 41 0x04>; |
@@ -813,7 +829,7 @@ | |||
813 | status = "disabled"; | 829 | status = "disabled"; |
814 | }; | 830 | }; |
815 | 831 | ||
816 | usb@02184600 { /* USB3 */ | 832 | usbh3: usb@02184600 { |
817 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; | 833 | compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; |
818 | reg = <0x02184600 0x200>; | 834 | reg = <0x02184600 0x200>; |
819 | interrupts = <0 42 0x04>; | 835 | interrupts = <0 42 0x04>; |
@@ -822,14 +838,14 @@ | |||
822 | status = "disabled"; | 838 | status = "disabled"; |
823 | }; | 839 | }; |
824 | 840 | ||
825 | usbmisc: usbmisc@02184800 { | 841 | usbmisc: usbmisc: usbmisc@02184800 { |
826 | #index-cells = <1>; | 842 | #index-cells = <1>; |
827 | compatible = "fsl,imx6q-usbmisc"; | 843 | compatible = "fsl,imx6q-usbmisc"; |
828 | reg = <0x02184800 0x200>; | 844 | reg = <0x02184800 0x200>; |
829 | clocks = <&clks 162>; | 845 | clocks = <&clks 162>; |
830 | }; | 846 | }; |
831 | 847 | ||
832 | ethernet@02188000 { | 848 | fec: ethernet@02188000 { |
833 | compatible = "fsl,imx6q-fec"; | 849 | compatible = "fsl,imx6q-fec"; |
834 | reg = <0x02188000 0x4000>; | 850 | reg = <0x02188000 0x4000>; |
835 | interrupts = <0 118 0x04 0 119 0x04>; | 851 | interrupts = <0 118 0x04 0 119 0x04>; |
@@ -843,66 +859,70 @@ | |||
843 | interrupts = <0 53 0x04 0 117 0x04 0 126 0x04>; | 859 | interrupts = <0 53 0x04 0 117 0x04 0 126 0x04>; |
844 | }; | 860 | }; |
845 | 861 | ||
846 | usdhc@02190000 { /* uSDHC1 */ | 862 | usdhc1: usdhc@02190000 { |
847 | compatible = "fsl,imx6q-usdhc"; | 863 | compatible = "fsl,imx6q-usdhc"; |
848 | reg = <0x02190000 0x4000>; | 864 | reg = <0x02190000 0x4000>; |
849 | interrupts = <0 22 0x04>; | 865 | interrupts = <0 22 0x04>; |
850 | clocks = <&clks 163>, <&clks 163>, <&clks 163>; | 866 | clocks = <&clks 163>, <&clks 163>, <&clks 163>; |
851 | clock-names = "ipg", "ahb", "per"; | 867 | clock-names = "ipg", "ahb", "per"; |
868 | bus-width = <4>; | ||
852 | status = "disabled"; | 869 | status = "disabled"; |
853 | }; | 870 | }; |
854 | 871 | ||
855 | usdhc@02194000 { /* uSDHC2 */ | 872 | usdhc2: usdhc@02194000 { |
856 | compatible = "fsl,imx6q-usdhc"; | 873 | compatible = "fsl,imx6q-usdhc"; |
857 | reg = <0x02194000 0x4000>; | 874 | reg = <0x02194000 0x4000>; |
858 | interrupts = <0 23 0x04>; | 875 | interrupts = <0 23 0x04>; |
859 | clocks = <&clks 164>, <&clks 164>, <&clks 164>; | 876 | clocks = <&clks 164>, <&clks 164>, <&clks 164>; |
860 | clock-names = "ipg", "ahb", "per"; | 877 | clock-names = "ipg", "ahb", "per"; |
878 | bus-width = <4>; | ||
861 | status = "disabled"; | 879 | status = "disabled"; |
862 | }; | 880 | }; |
863 | 881 | ||
864 | usdhc@02198000 { /* uSDHC3 */ | 882 | usdhc3: usdhc@02198000 { |
865 | compatible = "fsl,imx6q-usdhc"; | 883 | compatible = "fsl,imx6q-usdhc"; |
866 | reg = <0x02198000 0x4000>; | 884 | reg = <0x02198000 0x4000>; |
867 | interrupts = <0 24 0x04>; | 885 | interrupts = <0 24 0x04>; |
868 | clocks = <&clks 165>, <&clks 165>, <&clks 165>; | 886 | clocks = <&clks 165>, <&clks 165>, <&clks 165>; |
869 | clock-names = "ipg", "ahb", "per"; | 887 | clock-names = "ipg", "ahb", "per"; |
888 | bus-width = <4>; | ||
870 | status = "disabled"; | 889 | status = "disabled"; |
871 | }; | 890 | }; |
872 | 891 | ||
873 | usdhc@0219c000 { /* uSDHC4 */ | 892 | usdhc4: usdhc@0219c000 { |
874 | compatible = "fsl,imx6q-usdhc"; | 893 | compatible = "fsl,imx6q-usdhc"; |
875 | reg = <0x0219c000 0x4000>; | 894 | reg = <0x0219c000 0x4000>; |
876 | interrupts = <0 25 0x04>; | 895 | interrupts = <0 25 0x04>; |
877 | clocks = <&clks 166>, <&clks 166>, <&clks 166>; | 896 | clocks = <&clks 166>, <&clks 166>, <&clks 166>; |
878 | clock-names = "ipg", "ahb", "per"; | 897 | clock-names = "ipg", "ahb", "per"; |
898 | bus-width = <4>; | ||
879 | status = "disabled"; | 899 | status = "disabled"; |
880 | }; | 900 | }; |
881 | 901 | ||
882 | i2c@021a0000 { /* I2C1 */ | 902 | i2c1: i2c@021a0000 { |
883 | #address-cells = <1>; | 903 | #address-cells = <1>; |
884 | #size-cells = <0>; | 904 | #size-cells = <0>; |
885 | compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c"; | 905 | compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; |
886 | reg = <0x021a0000 0x4000>; | 906 | reg = <0x021a0000 0x4000>; |
887 | interrupts = <0 36 0x04>; | 907 | interrupts = <0 36 0x04>; |
888 | clocks = <&clks 125>; | 908 | clocks = <&clks 125>; |
889 | status = "disabled"; | 909 | status = "disabled"; |
890 | }; | 910 | }; |
891 | 911 | ||
892 | i2c@021a4000 { /* I2C2 */ | 912 | i2c2: i2c@021a4000 { |
893 | #address-cells = <1>; | 913 | #address-cells = <1>; |
894 | #size-cells = <0>; | 914 | #size-cells = <0>; |
895 | compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c"; | 915 | compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; |
896 | reg = <0x021a4000 0x4000>; | 916 | reg = <0x021a4000 0x4000>; |
897 | interrupts = <0 37 0x04>; | 917 | interrupts = <0 37 0x04>; |
898 | clocks = <&clks 126>; | 918 | clocks = <&clks 126>; |
899 | status = "disabled"; | 919 | status = "disabled"; |
900 | }; | 920 | }; |
901 | 921 | ||
902 | i2c@021a8000 { /* I2C3 */ | 922 | i2c3: i2c@021a8000 { |
903 | #address-cells = <1>; | 923 | #address-cells = <1>; |
904 | #size-cells = <0>; | 924 | #size-cells = <0>; |
905 | compatible = "fsl,imx6q-i2c", "fsl,imx1-i2c"; | 925 | compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; |
906 | reg = <0x021a8000 0x4000>; | 926 | reg = <0x021a8000 0x4000>; |
907 | interrupts = <0 38 0x04>; | 927 | interrupts = <0 38 0x04>; |
908 | clocks = <&clks 127>; | 928 | clocks = <&clks 127>; |
@@ -913,12 +933,12 @@ | |||
913 | reg = <0x021ac000 0x4000>; | 933 | reg = <0x021ac000 0x4000>; |
914 | }; | 934 | }; |
915 | 935 | ||
916 | mmdc@021b0000 { /* MMDC0 */ | 936 | mmdc0: mmdc@021b0000 { /* MMDC0 */ |
917 | compatible = "fsl,imx6q-mmdc"; | 937 | compatible = "fsl,imx6q-mmdc"; |
918 | reg = <0x021b0000 0x4000>; | 938 | reg = <0x021b0000 0x4000>; |
919 | }; | 939 | }; |
920 | 940 | ||
921 | mmdc@021b4000 { /* MMDC1 */ | 941 | mmdc1: mmdc@021b4000 { /* MMDC1 */ |
922 | reg = <0x021b4000 0x4000>; | 942 | reg = <0x021b4000 0x4000>; |
923 | }; | 943 | }; |
924 | 944 | ||
@@ -946,7 +966,7 @@ | |||
946 | interrupts = <0 109 0x04>; | 966 | interrupts = <0 109 0x04>; |
947 | }; | 967 | }; |
948 | 968 | ||
949 | audmux@021d8000 { | 969 | audmux: audmux@021d8000 { |
950 | compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; | 970 | compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; |
951 | reg = <0x021d8000 0x4000>; | 971 | reg = <0x021d8000 0x4000>; |
952 | status = "disabled"; | 972 | status = "disabled"; |
diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts index 61767757b50a..c9c3fa344647 100644 --- a/arch/arm/boot/dts/integratorap.dts +++ b/arch/arm/boot/dts/integratorap.dts | |||
@@ -18,6 +18,11 @@ | |||
18 | bootargs = "root=/dev/ram0 console=ttyAM0,38400n8 earlyprintk"; | 18 | bootargs = "root=/dev/ram0 console=ttyAM0,38400n8 earlyprintk"; |
19 | }; | 19 | }; |
20 | 20 | ||
21 | syscon { | ||
22 | /* AP system controller registers */ | ||
23 | reg = <0x11000000 0x100>; | ||
24 | }; | ||
25 | |||
21 | timer0: timer@13000000 { | 26 | timer0: timer@13000000 { |
22 | compatible = "arm,integrator-timer"; | 27 | compatible = "arm,integrator-timer"; |
23 | }; | 28 | }; |
diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts index 2dd5e4e48481..8b119399025a 100644 --- a/arch/arm/boot/dts/integratorcp.dts +++ b/arch/arm/boot/dts/integratorcp.dts | |||
@@ -18,6 +18,11 @@ | |||
18 | bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk"; | 18 | bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk"; |
19 | }; | 19 | }; |
20 | 20 | ||
21 | cpcon { | ||
22 | /* CP controller registers */ | ||
23 | reg = <0xcb000000 0x100>; | ||
24 | }; | ||
25 | |||
21 | timer0: timer@13000000 { | 26 | timer0: timer@13000000 { |
22 | compatible = "arm,sp804", "arm,primecell"; | 27 | compatible = "arm,sp804", "arm,primecell"; |
23 | }; | 28 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-6281.dtsi b/arch/arm/boot/dts/kirkwood-6281.dtsi new file mode 100644 index 000000000000..d6c9d65cbaeb --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-6281.dtsi | |||
@@ -0,0 +1,44 @@ | |||
1 | / { | ||
2 | ocp@f1000000 { | ||
3 | pinctrl: pinctrl@10000 { | ||
4 | compatible = "marvell,88f6281-pinctrl"; | ||
5 | reg = <0x10000 0x20>; | ||
6 | |||
7 | pmx_nand: pmx-nand { | ||
8 | marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", | ||
9 | "mpp4", "mpp5", "mpp18", | ||
10 | "mpp19"; | ||
11 | marvell,function = "nand"; | ||
12 | }; | ||
13 | pmx_sata0: pmx-sata0 { | ||
14 | marvell,pins = "mpp5", "mpp21", "mpp23"; | ||
15 | marvell,function = "sata0"; | ||
16 | }; | ||
17 | pmx_sata1: pmx-sata1 { | ||
18 | marvell,pins = "mpp4", "mpp20", "mpp22"; | ||
19 | marvell,function = "sata1"; | ||
20 | }; | ||
21 | pmx_spi: pmx-spi { | ||
22 | marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3"; | ||
23 | marvell,function = "spi"; | ||
24 | }; | ||
25 | pmx_twsi0: pmx-twsi0 { | ||
26 | marvell,pins = "mpp8", "mpp9"; | ||
27 | marvell,function = "twsi0"; | ||
28 | }; | ||
29 | pmx_uart0: pmx-uart0 { | ||
30 | marvell,pins = "mpp10", "mpp11"; | ||
31 | marvell,function = "uart0"; | ||
32 | }; | ||
33 | pmx_uart1: pmx-uart1 { | ||
34 | marvell,pins = "mpp13", "mpp14"; | ||
35 | marvell,function = "uart1"; | ||
36 | }; | ||
37 | pmx_sdio: pmx-sdio { | ||
38 | marvell,pins = "mpp12", "mpp13", "mpp14", | ||
39 | "mpp15", "mpp16", "mpp17"; | ||
40 | marvell,function = "sdio"; | ||
41 | }; | ||
42 | }; | ||
43 | }; | ||
44 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-6282.dtsi b/arch/arm/boot/dts/kirkwood-6282.dtsi new file mode 100644 index 000000000000..9ae2004d5675 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-6282.dtsi | |||
@@ -0,0 +1,45 @@ | |||
1 | / { | ||
2 | ocp@f1000000 { | ||
3 | |||
4 | pinctrl: pinctrl@10000 { | ||
5 | compatible = "marvell,88f6282-pinctrl"; | ||
6 | reg = <0x10000 0x20>; | ||
7 | |||
8 | pmx_sata0: pmx-sata0 { | ||
9 | marvell,pins = "mpp5", "mpp21", "mpp23"; | ||
10 | marvell,function = "sata0"; | ||
11 | }; | ||
12 | pmx_sata1: pmx-sata1 { | ||
13 | marvell,pins = "mpp4", "mpp20", "mpp22"; | ||
14 | marvell,function = "sata1"; | ||
15 | }; | ||
16 | pmx_spi: pmx-spi { | ||
17 | marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3"; | ||
18 | marvell,function = "spi"; | ||
19 | }; | ||
20 | pmx_twsi0: pmx-twsi0 { | ||
21 | marvell,pins = "mpp8", "mpp9"; | ||
22 | marvell,function = "twsi0"; | ||
23 | }; | ||
24 | pmx_uart0: pmx-uart0 { | ||
25 | marvell,pins = "mpp10", "mpp11"; | ||
26 | marvell,function = "uart0"; | ||
27 | }; | ||
28 | |||
29 | pmx_uart1: pmx-uart1 { | ||
30 | marvell,pins = "mpp13", "mpp14"; | ||
31 | marvell,function = "uart1"; | ||
32 | }; | ||
33 | }; | ||
34 | |||
35 | i2c@11100 { | ||
36 | compatible = "marvell,mv64xxx-i2c"; | ||
37 | reg = <0x11100 0x20>; | ||
38 | #address-cells = <1>; | ||
39 | #size-cells = <0>; | ||
40 | interrupts = <32>; | ||
41 | clock-frequency = <100000>; | ||
42 | status = "disabled"; | ||
43 | }; | ||
44 | }; | ||
45 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-98dx4122.dtsi b/arch/arm/boot/dts/kirkwood-98dx4122.dtsi new file mode 100644 index 000000000000..3271e4c8ea07 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-98dx4122.dtsi | |||
@@ -0,0 +1,31 @@ | |||
1 | / { | ||
2 | ocp@f1000000 { | ||
3 | pinctrl: pinctrl@10000 { | ||
4 | compatible = "marvell,98dx4122-pinctrl"; | ||
5 | reg = <0x10000 0x20>; | ||
6 | |||
7 | pmx_nand: pmx-nand { | ||
8 | marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", | ||
9 | "mpp4", "mpp5", "mpp18", | ||
10 | "mpp19"; | ||
11 | marvell,function = "nand"; | ||
12 | }; | ||
13 | pmx_spi: pmx-spi { | ||
14 | marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3"; | ||
15 | marvell,function = "spi"; | ||
16 | }; | ||
17 | pmx_twsi0: pmx-twsi0 { | ||
18 | marvell,pins = "mpp8", "mpp9"; | ||
19 | marvell,function = "twsi0"; | ||
20 | }; | ||
21 | pmx_uart0: pmx-uart0 { | ||
22 | marvell,pins = "mpp10", "mpp11"; | ||
23 | marvell,function = "uart0"; | ||
24 | }; | ||
25 | pmx_uart1: pmx-uart1 { | ||
26 | marvell,pins = "mpp13", "mpp14"; | ||
27 | marvell,function = "uart1"; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
31 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi index 9b32d0272825..6875ac00c174 100644 --- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi +++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi | |||
@@ -1,4 +1,5 @@ | |||
1 | /include/ "kirkwood.dtsi" | 1 | /include/ "kirkwood.dtsi" |
2 | /include/ "kirkwood-6281.dtsi" | ||
2 | 3 | ||
3 | / { | 4 | / { |
4 | model = "D-Link DNS NASes (kirkwood-based)"; | 5 | model = "D-Link DNS NASes (kirkwood-based)"; |
@@ -35,7 +36,116 @@ | |||
35 | 6000 2>; | 36 | 6000 2>; |
36 | }; | 37 | }; |
37 | 38 | ||
39 | gpio_poweroff { | ||
40 | compatible = "gpio-poweroff"; | ||
41 | gpios = <&gpio1 4 0>; | ||
42 | }; | ||
43 | |||
38 | ocp@f1000000 { | 44 | ocp@f1000000 { |
45 | pinctrl: pinctrl@10000 { | ||
46 | |||
47 | pinctrl-0 = < &pmx_nand &pmx_uart1 | ||
48 | &pmx_sata0 &pmx_sata1 | ||
49 | &pmx_led_power | ||
50 | &pmx_led_red_right_hdd | ||
51 | &pmx_led_red_left_hdd | ||
52 | &pmx_led_red_usb_325 | ||
53 | &pmx_button_power | ||
54 | &pmx_led_red_usb_320 | ||
55 | &pmx_power_off &pmx_power_back_on | ||
56 | &pmx_power_sata0 &pmx_power_sata1 | ||
57 | &pmx_present_sata0 &pmx_present_sata1 | ||
58 | &pmx_led_white_usb &pmx_fan_tacho | ||
59 | &pmx_fan_high_speed &pmx_fan_low_speed | ||
60 | &pmx_button_unmount &pmx_button_reset | ||
61 | &pmx_temp_alarm >; | ||
62 | pinctrl-names = "default"; | ||
63 | |||
64 | pmx_sata0: pmx-sata0 { | ||
65 | marvell,pins = "mpp20"; | ||
66 | marvell,function = "sata1"; | ||
67 | }; | ||
68 | pmx_sata1: pmx-sata1 { | ||
69 | marvell,pins = "mpp21"; | ||
70 | marvell,function = "sata0"; | ||
71 | }; | ||
72 | pmx_led_power: pmx-led-power { | ||
73 | marvell,pins = "mpp26"; | ||
74 | marvell,function = "gpio"; | ||
75 | }; | ||
76 | pmx_led_red_right_hdd: pmx-led-red-right-hdd { | ||
77 | marvell,pins = "mpp27"; | ||
78 | marvell,function = "gpio"; | ||
79 | }; | ||
80 | pmx_led_red_left_hdd: pmx-led-red-left-hdd { | ||
81 | marvell,pins = "mpp28"; | ||
82 | marvell,function = "gpio"; | ||
83 | }; | ||
84 | pmx_led_red_usb_325: pmx-led-red-usb-325 { | ||
85 | marvell,pins = "mpp29"; | ||
86 | marvell,function = "gpio"; | ||
87 | }; | ||
88 | pmx_button_power: pmx-button-power { | ||
89 | marvell,pins = "mpp34"; | ||
90 | marvell,function = "gpio"; | ||
91 | }; | ||
92 | pmx_led_red_usb_320: pmx-led-red-usb-320 { | ||
93 | marvell,pins = "mpp35"; | ||
94 | marvell,function = "gpio"; | ||
95 | }; | ||
96 | pmx_power_off: pmx-power-off { | ||
97 | marvell,pins = "mpp36"; | ||
98 | marvell,function = "gpio"; | ||
99 | }; | ||
100 | pmx_power_back_on: pmx-power-back-on { | ||
101 | marvell,pins = "mpp37"; | ||
102 | marvell,function = "gpio"; | ||
103 | }; | ||
104 | pmx_power_sata0: pmx-power-sata0 { | ||
105 | marvell,pins = "mpp39"; | ||
106 | marvell,function = "gpio"; | ||
107 | }; | ||
108 | pmx_power_sata1: pmx-power-sata1 { | ||
109 | marvell,pins = "mpp40"; | ||
110 | marvell,function = "gpio"; | ||
111 | }; | ||
112 | pmx_present_sata0: pmx-present-sata0 { | ||
113 | marvell,pins = "mpp41"; | ||
114 | marvell,function = "gpio"; | ||
115 | }; | ||
116 | pmx_present_sata1: pmx-present-sata1 { | ||
117 | marvell,pins = "mpp42"; | ||
118 | marvell,function = "gpio"; | ||
119 | }; | ||
120 | pmx_led_white_usb: pmx-led-white-usb { | ||
121 | marvell,pins = "mpp43"; | ||
122 | marvell,function = "gpio"; | ||
123 | }; | ||
124 | pmx_fan_tacho: pmx-fan-tacho { | ||
125 | marvell,pins = "mpp44"; | ||
126 | marvell,function = "gpio"; | ||
127 | }; | ||
128 | pmx_fan_high_speed: pmx-fan-high-speed { | ||
129 | marvell,pins = "mpp45"; | ||
130 | marvell,function = "gpio"; | ||
131 | }; | ||
132 | pmx_fan_low_speed: pmx-fan-low-speed { | ||
133 | marvell,pins = "mpp46"; | ||
134 | marvell,function = "gpio"; | ||
135 | }; | ||
136 | pmx_button_unmount: pmx-button-unmount { | ||
137 | marvell,pins = "mpp47"; | ||
138 | marvell,function = "gpio"; | ||
139 | }; | ||
140 | pmx_button_reset: pmx-button-reset { | ||
141 | marvell,pins = "mpp48"; | ||
142 | marvell,function = "gpio"; | ||
143 | }; | ||
144 | pmx_temp_alarm: pmx-temp-alarm { | ||
145 | marvell,pins = "mpp49"; | ||
146 | marvell,function = "gpio"; | ||
147 | }; | ||
148 | }; | ||
39 | sata@80000 { | 149 | sata@80000 { |
40 | status = "okay"; | 150 | status = "okay"; |
41 | nr-ports = <2>; | 151 | nr-ports = <2>; |
@@ -43,6 +153,7 @@ | |||
43 | 153 | ||
44 | nand@3000000 { | 154 | nand@3000000 { |
45 | status = "okay"; | 155 | status = "okay"; |
156 | chip-delay = <35>; | ||
46 | 157 | ||
47 | partition@0 { | 158 | partition@0 { |
48 | label = "u-boot"; | 159 | label = "u-boot"; |
@@ -76,4 +187,33 @@ | |||
76 | }; | 187 | }; |
77 | }; | 188 | }; |
78 | }; | 189 | }; |
190 | |||
191 | regulators { | ||
192 | compatible = "simple-bus"; | ||
193 | #address-cells = <1>; | ||
194 | #size-cells = <0>; | ||
195 | |||
196 | sata0_power: regulator@1 { | ||
197 | compatible = "regulator-fixed"; | ||
198 | reg = <1>; | ||
199 | regulator-name = "SATA0 Power"; | ||
200 | regulator-min-microvolt = <5000000>; | ||
201 | regulator-max-microvolt = <5000000>; | ||
202 | enable-active-high; | ||
203 | regulator-always-on; | ||
204 | regulator-boot-on; | ||
205 | gpio = <&gpio1 7 0>; | ||
206 | }; | ||
207 | sata1_power: regulator@2 { | ||
208 | compatible = "regulator-fixed"; | ||
209 | reg = <2>; | ||
210 | regulator-name = "SATA1 Power"; | ||
211 | regulator-min-microvolt = <5000000>; | ||
212 | regulator-max-microvolt = <5000000>; | ||
213 | enable-active-high; | ||
214 | regulator-always-on; | ||
215 | regulator-boot-on; | ||
216 | gpio = <&gpio1 8 0>; | ||
217 | }; | ||
218 | }; | ||
79 | }; | 219 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-dockstar.dts b/arch/arm/boot/dts/kirkwood-dockstar.dts index 08a582414b88..2e3dd34e21a5 100644 --- a/arch/arm/boot/dts/kirkwood-dockstar.dts +++ b/arch/arm/boot/dts/kirkwood-dockstar.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Seagate FreeAgent Dockstar"; | 7 | model = "Seagate FreeAgent Dockstar"; |
@@ -16,6 +17,25 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_usb_power_enable | ||
23 | &pmx_led_green &pmx_led_orange >; | ||
24 | pinctrl-names = "default"; | ||
25 | |||
26 | pmx_usb_power_enable: pmx-usb-power-enable { | ||
27 | marvell,pins = "mpp29"; | ||
28 | marvell,function = "gpio"; | ||
29 | }; | ||
30 | pmx_led_green: pmx-led-green { | ||
31 | marvell,pins = "mpp46"; | ||
32 | marvell,function = "gpio"; | ||
33 | }; | ||
34 | pmx_led_orange: pmx-led-orange { | ||
35 | marvell,pins = "mpp47"; | ||
36 | marvell,function = "gpio"; | ||
37 | }; | ||
38 | }; | ||
19 | serial@12000 { | 39 | serial@12000 { |
20 | clock-frequency = <200000000>; | 40 | clock-frequency = <200000000>; |
21 | status = "ok"; | 41 | status = "ok"; |
@@ -54,4 +74,21 @@ | |||
54 | gpios = <&gpio1 15 1>; | 74 | gpios = <&gpio1 15 1>; |
55 | }; | 75 | }; |
56 | }; | 76 | }; |
77 | regulators { | ||
78 | compatible = "simple-bus"; | ||
79 | #address-cells = <1>; | ||
80 | #size-cells = <0>; | ||
81 | |||
82 | usb_power: regulator@1 { | ||
83 | compatible = "regulator-fixed"; | ||
84 | reg = <1>; | ||
85 | regulator-name = "USB Power"; | ||
86 | regulator-min-microvolt = <5000000>; | ||
87 | regulator-max-microvolt = <5000000>; | ||
88 | enable-active-high; | ||
89 | regulator-always-on; | ||
90 | regulator-boot-on; | ||
91 | gpio = <&gpio0 29 0>; | ||
92 | }; | ||
93 | }; | ||
57 | }; | 94 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts index 26e281fbf6bc..f2d386c95b07 100644 --- a/arch/arm/boot/dts/kirkwood-dreamplug.dts +++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Globalscale Technologies Dreamplug"; | 7 | model = "Globalscale Technologies Dreamplug"; |
@@ -16,6 +17,26 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_spi | ||
23 | &pmx_led_bluetooth &pmx_led_wifi | ||
24 | &pmx_led_wifi_ap >; | ||
25 | pinctrl-names = "default"; | ||
26 | |||
27 | pmx_led_bluetooth: pmx-led-bluetooth { | ||
28 | marvell,pins = "mpp47"; | ||
29 | marvell,function = "gpio"; | ||
30 | }; | ||
31 | pmx_led_wifi: pmx-led-wifi { | ||
32 | marvell,pins = "mpp48"; | ||
33 | marvell,function = "gpio"; | ||
34 | }; | ||
35 | pmx_led_wifi_ap: pmx-led-wifi-ap { | ||
36 | marvell,pins = "mpp49"; | ||
37 | marvell,function = "gpio"; | ||
38 | }; | ||
39 | }; | ||
19 | serial@12000 { | 40 | serial@12000 { |
20 | clock-frequency = <200000000>; | 41 | clock-frequency = <200000000>; |
21 | status = "ok"; | 42 | status = "ok"; |
diff --git a/arch/arm/boot/dts/kirkwood-goflexnet.dts b/arch/arm/boot/dts/kirkwood-goflexnet.dts index 7c8238fbb6f9..1b133e0c566e 100644 --- a/arch/arm/boot/dts/kirkwood-goflexnet.dts +++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Seagate GoFlex Net"; | 7 | model = "Seagate GoFlex Net"; |
@@ -16,6 +17,61 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_usb_power_enable &pmx_led_orange | ||
23 | &pmx_led_left_cap_0 &pmx_led_left_cap_1 | ||
24 | &pmx_led_left_cap_2 &pmx_led_left_cap_3 | ||
25 | &pmx_led_right_cap_0 &pmx_led_right_cap_1 | ||
26 | &pmx_led_right_cap_2 &pmx_led_right_cap_3 | ||
27 | >; | ||
28 | pinctrl-names = "default"; | ||
29 | |||
30 | pmx_usb_power_enable: pmx-usb-power-enable { | ||
31 | marvell,pins = "mpp29"; | ||
32 | marvell,function = "gpio"; | ||
33 | }; | ||
34 | pmx_led_right_cap_0: pmx-led_right_cap_0 { | ||
35 | marvell,pins = "mpp38"; | ||
36 | marvell,function = "gpio"; | ||
37 | }; | ||
38 | pmx_led_right_cap_1: pmx-led_right_cap_1 { | ||
39 | marvell,pins = "mpp39"; | ||
40 | marvell,function = "gpio"; | ||
41 | }; | ||
42 | pmx_led_right_cap_2: pmx-led_right_cap_2 { | ||
43 | marvell,pins = "mpp40"; | ||
44 | marvell,function = "gpio"; | ||
45 | }; | ||
46 | pmx_led_right_cap_3: pmx-led_right_cap_3 { | ||
47 | marvell,pins = "mpp41"; | ||
48 | marvell,function = "gpio"; | ||
49 | }; | ||
50 | pmx_led_left_cap_0: pmx-led_left_cap_0 { | ||
51 | marvell,pins = "mpp42"; | ||
52 | marvell,function = "gpio"; | ||
53 | }; | ||
54 | pmx_led_left_cap_1: pmx-led_left_cap_1 { | ||
55 | marvell,pins = "mpp43"; | ||
56 | marvell,function = "gpio"; | ||
57 | }; | ||
58 | pmx_led_left_cap_2: pmx-led_left_cap_2 { | ||
59 | marvell,pins = "mpp44"; | ||
60 | marvell,function = "gpio"; | ||
61 | }; | ||
62 | pmx_led_left_cap_3: pmx-led_left_cap_3 { | ||
63 | marvell,pins = "mpp45"; | ||
64 | marvell,function = "gpio"; | ||
65 | }; | ||
66 | pmx_led_green: pmx-led_green { | ||
67 | marvell,pins = "mpp46"; | ||
68 | marvell,function = "gpio"; | ||
69 | }; | ||
70 | pmx_led_orange: pmx-led_orange { | ||
71 | marvell,pins = "mpp47"; | ||
72 | marvell,function = "gpio"; | ||
73 | }; | ||
74 | }; | ||
19 | serial@12000 { | 75 | serial@12000 { |
20 | clock-frequency = <200000000>; | 76 | clock-frequency = <200000000>; |
21 | status = "ok"; | 77 | status = "ok"; |
@@ -96,4 +152,21 @@ | |||
96 | gpios = <&gpio1 9 0>; | 152 | gpios = <&gpio1 9 0>; |
97 | }; | 153 | }; |
98 | }; | 154 | }; |
155 | regulators { | ||
156 | compatible = "simple-bus"; | ||
157 | #address-cells = <1>; | ||
158 | #size-cells = <0>; | ||
159 | |||
160 | usb_power: regulator@1 { | ||
161 | compatible = "regulator-fixed"; | ||
162 | reg = <1>; | ||
163 | regulator-name = "USB Power"; | ||
164 | regulator-min-microvolt = <5000000>; | ||
165 | regulator-max-microvolt = <5000000>; | ||
166 | enable-active-high; | ||
167 | regulator-always-on; | ||
168 | regulator-boot-on; | ||
169 | gpio = <&gpio0 29 0>; | ||
170 | }; | ||
171 | }; | ||
99 | }; | 172 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts index 66794ed75ff1..71902da33d63 100644 --- a/arch/arm/boot/dts/kirkwood-ib62x0.dts +++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)"; | 7 | model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)"; |
@@ -16,6 +17,39 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_nand | ||
23 | &pmx_led_os_red &pmx_power_off | ||
24 | &pmx_led_os_green &pmx_led_usb_transfer | ||
25 | &pmx_button_reset &pmx_button_usb_copy >; | ||
26 | pinctrl-names = "default"; | ||
27 | |||
28 | pmx_led_os_red: pmx-led-os-red { | ||
29 | marvell,pins = "mpp22"; | ||
30 | marvell,function = "gpio"; | ||
31 | }; | ||
32 | pmx_power_off: pmx-power-off { | ||
33 | marvell,pins = "mpp24"; | ||
34 | marvell,function = "gpio"; | ||
35 | }; | ||
36 | pmx_led_os_green: pmx-led-os-green { | ||
37 | marvell,pins = "mpp25"; | ||
38 | marvell,function = "gpio"; | ||
39 | }; | ||
40 | pmx_led_usb_transfer: pmx-led-usb-transfer { | ||
41 | marvell,pins = "mpp27"; | ||
42 | marvell,function = "gpio"; | ||
43 | }; | ||
44 | pmx_button_reset: pmx-button-reset { | ||
45 | marvell,pins = "mpp28"; | ||
46 | marvell,function = "gpio"; | ||
47 | }; | ||
48 | pmx_button_usb_copy: pmx-button-usb-copy { | ||
49 | marvell,pins = "mpp29"; | ||
50 | marvell,function = "gpio"; | ||
51 | }; | ||
52 | }; | ||
19 | serial@12000 { | 53 | serial@12000 { |
20 | clock-frequency = <200000000>; | 54 | clock-frequency = <200000000>; |
21 | status = "okay"; | 55 | status = "okay"; |
@@ -79,4 +113,10 @@ | |||
79 | gpios = <&gpio0 27 0>; | 113 | gpios = <&gpio0 27 0>; |
80 | }; | 114 | }; |
81 | }; | 115 | }; |
116 | gpio_poweroff { | ||
117 | compatible = "gpio-poweroff"; | ||
118 | gpios = <&gpio0 24 0>; | ||
119 | }; | ||
120 | |||
121 | |||
82 | }; | 122 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts index d97cd9d4753e..504f16be8b54 100644 --- a/arch/arm/boot/dts/kirkwood-iconnect.dts +++ b/arch/arm/boot/dts/kirkwood-iconnect.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Iomega Iconnect"; | 7 | model = "Iomega Iconnect"; |
@@ -18,6 +19,56 @@ | |||
18 | }; | 19 | }; |
19 | 20 | ||
20 | ocp@f1000000 { | 21 | ocp@f1000000 { |
22 | pinctrl: pinctrl@10000 { | ||
23 | |||
24 | pinctrl-0 = < &pmx_gpio_12 &pmx_gpio_35 | ||
25 | &pmx_gpio_41 &pmx_gpio_42 | ||
26 | &pmx_gpio_43 &pmx_gpio_44 | ||
27 | &pmx_gpio_45 &pmx_gpio_46 | ||
28 | &pmx_gpio_47 &pmx_gpio_48 >; | ||
29 | pinctrl-names = "default"; | ||
30 | |||
31 | pmx_gpio_12: pmx-gpio-12 { | ||
32 | marvell,pins = "mpp12"; | ||
33 | marvell,function = "gpio"; | ||
34 | }; | ||
35 | pmx_gpio_35: pmx-gpio-35 { | ||
36 | marvell,pins = "mpp35"; | ||
37 | marvell,function = "gpio"; | ||
38 | }; | ||
39 | pmx_gpio_41: pmx-gpio-41 { | ||
40 | marvell,pins = "mpp41"; | ||
41 | marvell,function = "gpio"; | ||
42 | }; | ||
43 | pmx_gpio_42: pmx-gpio-42 { | ||
44 | marvell,pins = "mpp42"; | ||
45 | marvell,function = "gpio"; | ||
46 | }; | ||
47 | pmx_gpio_43: pmx-gpio-43 { | ||
48 | marvell,pins = "mpp43"; | ||
49 | marvell,function = "gpio"; | ||
50 | }; | ||
51 | pmx_gpio_44: pmx-gpio-44 { | ||
52 | marvell,pins = "mpp44"; | ||
53 | marvell,function = "gpio"; | ||
54 | }; | ||
55 | pmx_gpio_45: pmx-gpio-45 { | ||
56 | marvell,pins = "mpp45"; | ||
57 | marvell,function = "gpio"; | ||
58 | }; | ||
59 | pmx_gpio_46: pmx-gpio-46 { | ||
60 | marvell,pins = "mpp46"; | ||
61 | marvell,function = "gpio"; | ||
62 | }; | ||
63 | pmx_gpio_47: pmx-gpio-47 { | ||
64 | marvell,pins = "mpp47"; | ||
65 | marvell,function = "gpio"; | ||
66 | }; | ||
67 | pmx_gpio_48: pmx-gpio-48 { | ||
68 | marvell,pins = "mpp48"; | ||
69 | marvell,function = "gpio"; | ||
70 | }; | ||
71 | }; | ||
21 | i2c@11000 { | 72 | i2c@11000 { |
22 | status = "okay"; | 73 | status = "okay"; |
23 | 74 | ||
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts index 865aeec40a26..6cae4599c4b3 100644 --- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts +++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Iomega StorCenter ix2-200"; | 7 | model = "Iomega StorCenter ix2-200"; |
@@ -16,6 +17,94 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_button_reset &pmx_button_power | ||
23 | &pmx_led_backup &pmx_led_power | ||
24 | &pmx_button_otb &pmx_led_rebuild | ||
25 | &pmx_led_health | ||
26 | &pmx_led_sata_brt_ctrl_1 | ||
27 | &pmx_led_sata_brt_ctrl_2 | ||
28 | &pmx_led_backup_brt_ctrl_1 | ||
29 | &pmx_led_backup_brt_ctrl_2 | ||
30 | &pmx_led_power_brt_ctrl_1 | ||
31 | &pmx_led_power_brt_ctrl_2 | ||
32 | &pmx_led_health_brt_ctrl_1 | ||
33 | &pmx_led_health_brt_ctrl_2 | ||
34 | &pmx_led_rebuild_brt_ctrl_1 | ||
35 | &pmx_led_rebuild_brt_ctrl_2 >; | ||
36 | pinctrl-names = "default"; | ||
37 | |||
38 | pmx_button_reset: pmx-button-reset { | ||
39 | marvell,pins = "mpp12"; | ||
40 | marvell,function = "gpio"; | ||
41 | }; | ||
42 | pmx_button_power: pmx-button-power { | ||
43 | marvell,pins = "mpp14"; | ||
44 | marvell,function = "gpio"; | ||
45 | }; | ||
46 | pmx_led_backup: pmx-led-backup { | ||
47 | marvell,pins = "mpp15"; | ||
48 | marvell,function = "gpio"; | ||
49 | }; | ||
50 | pmx_led_power: pmx-led-power { | ||
51 | marvell,pins = "mpp16"; | ||
52 | marvell,function = "gpio"; | ||
53 | }; | ||
54 | pmx_button_otb: pmx-button-otb { | ||
55 | marvell,pins = "mpp35"; | ||
56 | marvell,function = "gpio"; | ||
57 | }; | ||
58 | pmx_led_rebuild: pmx-led-rebuild { | ||
59 | marvell,pins = "mpp36"; | ||
60 | marvell,function = "gpio"; | ||
61 | }; | ||
62 | pmx_led_health: pmx-led_health { | ||
63 | marvell,pins = "mpp37"; | ||
64 | marvell,function = "gpio"; | ||
65 | }; | ||
66 | pmx_led_sata_brt_ctrl_1: pmx-led-sata-brt-ctrl-1 { | ||
67 | marvell,pins = "mpp38"; | ||
68 | marvell,function = "gpio"; | ||
69 | }; | ||
70 | pmx_led_sata_brt_ctrl_2: pmx-led-sata-brt-ctrl-2 { | ||
71 | marvell,pins = "mpp39"; | ||
72 | marvell,function = "gpio"; | ||
73 | }; | ||
74 | pmx_led_backup_brt_ctrl_1: pmx-led-backup-brt-ctrl-1 { | ||
75 | marvell,pins = "mpp40"; | ||
76 | marvell,function = "gpio"; | ||
77 | }; | ||
78 | pmx_led_backup_brt_ctrl_2: pmx-led-backup-brt-ctrl-2 { | ||
79 | marvell,pins = "mpp41"; | ||
80 | marvell,function = "gpio"; | ||
81 | }; | ||
82 | pmx_led_power_brt_ctrl_1: pmx-led-power-brt-ctrl-1 { | ||
83 | marvell,pins = "mpp42"; | ||
84 | marvell,function = "gpio"; | ||
85 | }; | ||
86 | pmx_led_power_brt_ctrl_2: pmx-led-power-brt-ctrl-2 { | ||
87 | marvell,pins = "mpp43"; | ||
88 | marvell,function = "gpio"; | ||
89 | }; | ||
90 | pmx_led_health_brt_ctrl_1: pmx-led-health-brt-ctrl-1 { | ||
91 | marvell,pins = "mpp44"; | ||
92 | marvell,function = "gpio"; | ||
93 | }; | ||
94 | pmx_led_health_brt_ctrl_2: pmx-led-health-brt-ctrl-2 { | ||
95 | marvell,pins = "mpp45"; | ||
96 | marvell,function = "gpio"; | ||
97 | }; | ||
98 | pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 { | ||
99 | marvell,pins = "mpp44"; | ||
100 | marvell,function = "gpio"; | ||
101 | }; | ||
102 | pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 { | ||
103 | marvell,pins = "mpp45"; | ||
104 | marvell,function = "gpio"; | ||
105 | }; | ||
106 | |||
107 | }; | ||
19 | i2c@11000 { | 108 | i2c@11000 { |
20 | status = "okay"; | 109 | status = "okay"; |
21 | 110 | ||
diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts new file mode 100644 index 000000000000..0bdce0ad7277 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-is2.dts | |||
@@ -0,0 +1,30 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood-ns2-common.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "LaCie Internet Space v2"; | ||
7 | compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x8000000>; | ||
12 | }; | ||
13 | |||
14 | ocp@f1000000 { | ||
15 | sata@80000 { | ||
16 | status = "okay"; | ||
17 | nr-ports = <1>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | ns2-leds { | ||
22 | compatible = "lacie,ns2-leds"; | ||
23 | |||
24 | blue-sata { | ||
25 | label = "ns2:blue:sata"; | ||
26 | slow-gpio = <&gpio0 29 0>; | ||
27 | cmd-gpio = <&gpio0 30 0>; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts index 75bdb93fed26..8db3123ac80f 100644 --- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts +++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts | |||
@@ -1,6 +1,7 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood.dtsi" | 3 | /include/ "kirkwood.dtsi" |
4 | /include/ "kirkwood-98dx4122.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
6 | model = "Keymile Kirkwood Reference Design"; | 7 | model = "Keymile Kirkwood Reference Design"; |
@@ -16,6 +17,22 @@ | |||
16 | }; | 17 | }; |
17 | 18 | ||
18 | ocp@f1000000 { | 19 | ocp@f1000000 { |
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_nand &pmx_i2c_gpio_sda | ||
23 | &pmx_i2c_gpio_scl >; | ||
24 | pinctrl-names = "default"; | ||
25 | |||
26 | pmx_i2c_gpio_sda: pmx-gpio-sda { | ||
27 | marvell,pins = "mpp8"; | ||
28 | marvell,function = "gpio"; | ||
29 | }; | ||
30 | pmx_i2c_gpio_scl: pmx-gpio-scl { | ||
31 | marvell,pins = "mpp9"; | ||
32 | marvell,function = "gpio"; | ||
33 | }; | ||
34 | }; | ||
35 | |||
19 | serial@12000 { | 36 | serial@12000 { |
20 | clock-frequency = <200000000>; | 37 | clock-frequency = <200000000>; |
21 | status = "ok"; | 38 | status = "ok"; |
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi index 8fea375c734d..37d45c4f88fb 100644 --- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi +++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi | |||
@@ -1,4 +1,5 @@ | |||
1 | /include/ "kirkwood.dtsi" | 1 | /include/ "kirkwood.dtsi" |
2 | /include/ "kirkwood-6281.dtsi" | ||
2 | 3 | ||
3 | / { | 4 | / { |
4 | chosen { | 5 | chosen { |
@@ -6,6 +7,71 @@ | |||
6 | }; | 7 | }; |
7 | 8 | ||
8 | ocp@f1000000 { | 9 | ocp@f1000000 { |
10 | pinctrl: pinctrl@10000 { | ||
11 | |||
12 | pinctrl-0 = < &pmx_power_hdd &pmx_usb_vbus | ||
13 | &pmx_fan_low &pmx_fan_high | ||
14 | &pmx_led_function_red &pmx_led_alarm | ||
15 | &pmx_led_info &pmx_led_power | ||
16 | &pmx_fan_lock &pmx_button_function | ||
17 | &pmx_power_switch &pmx_power_auto_switch | ||
18 | &pmx_led_function_blue >; | ||
19 | pinctrl-names = "default"; | ||
20 | |||
21 | pmx_power_hdd: pmx-power-hdd { | ||
22 | marvell,pins = "mpp10"; | ||
23 | marvell,function = "gpo"; | ||
24 | }; | ||
25 | pmx_usb_vbus: pmx-usb-vbus { | ||
26 | marvell,pins = "mpp11"; | ||
27 | marvell,function = "gpio"; | ||
28 | }; | ||
29 | pmx_fan_high: pmx-fan-high { | ||
30 | marvell,pins = "mpp18"; | ||
31 | marvell,function = "gpo"; | ||
32 | }; | ||
33 | pmx_fan_low: pmx-fan-low { | ||
34 | marvell,pins = "mpp19"; | ||
35 | marvell,function = "gpo"; | ||
36 | }; | ||
37 | pmx_led_function_blue: pmx-led-function-blue { | ||
38 | marvell,pins = "mpp36"; | ||
39 | marvell,function = "gpio"; | ||
40 | }; | ||
41 | pmx_led_alarm: pmx-led-alarm { | ||
42 | marvell,pins = "mpp37"; | ||
43 | marvell,function = "gpio"; | ||
44 | }; | ||
45 | pmx_led_info: pmx-led-info { | ||
46 | marvell,pins = "mpp38"; | ||
47 | marvell,function = "gpio"; | ||
48 | }; | ||
49 | pmx_led_power: pmx-led-power { | ||
50 | marvell,pins = "mpp39"; | ||
51 | marvell,function = "gpio"; | ||
52 | }; | ||
53 | pmx_fan_lock: pmx-fan-lock { | ||
54 | marvell,pins = "mpp40"; | ||
55 | marvell,function = "gpio"; | ||
56 | }; | ||
57 | pmx_button_function: pmx-button-function { | ||
58 | marvell,pins = "mpp41"; | ||
59 | marvell,function = "gpio"; | ||
60 | }; | ||
61 | pmx_power_switch: pmx-power-switch { | ||
62 | marvell,pins = "mpp42"; | ||
63 | marvell,function = "gpio"; | ||
64 | }; | ||
65 | pmx_power_auto_switch: pmx-power-auto-switch { | ||
66 | marvell,pins = "mpp43"; | ||
67 | marvell,function = "gpio"; | ||
68 | }; | ||
69 | pmx_led_function_red: pmx-led-function_red { | ||
70 | marvell,pins = "mpp48"; | ||
71 | marvell,function = "gpio"; | ||
72 | }; | ||
73 | |||
74 | }; | ||
9 | sata@80000 { | 75 | sata@80000 { |
10 | status = "okay"; | 76 | status = "okay"; |
11 | nr-ports = <1>; | 77 | nr-ports = <1>; |
@@ -94,4 +160,44 @@ | |||
94 | gpios = <&gpio1 16 1>; | 160 | gpios = <&gpio1 16 1>; |
95 | }; | 161 | }; |
96 | }; | 162 | }; |
163 | |||
164 | gpio_fan { | ||
165 | compatible = "gpio-fan"; | ||
166 | gpios = <&gpio0 19 1 | ||
167 | &gpio0 18 1>; | ||
168 | gpio-fan,speed-map = <0 3 | ||
169 | 1500 2 | ||
170 | 3250 1 | ||
171 | 5000 0>; | ||
172 | alarm-gpios = <&gpio1 8 0>; | ||
173 | }; | ||
174 | |||
175 | regulators { | ||
176 | compatible = "simple-bus"; | ||
177 | #address-cells = <1>; | ||
178 | #size-cells = <0>; | ||
179 | |||
180 | usb_power: regulator@1 { | ||
181 | compatible = "regulator-fixed"; | ||
182 | reg = <1>; | ||
183 | regulator-name = "USB Power"; | ||
184 | regulator-min-microvolt = <5000000>; | ||
185 | regulator-max-microvolt = <5000000>; | ||
186 | enable-active-high; | ||
187 | regulator-always-on; | ||
188 | regulator-boot-on; | ||
189 | gpio = <&gpio0 11 0>; | ||
190 | }; | ||
191 | hdd_power: regulator@2 { | ||
192 | compatible = "regulator-fixed"; | ||
193 | reg = <2>; | ||
194 | regulator-name = "HDD Power"; | ||
195 | regulator-min-microvolt = <5000000>; | ||
196 | regulator-max-microvolt = <5000000>; | ||
197 | enable-active-high; | ||
198 | regulator-always-on; | ||
199 | regulator-boot-on; | ||
200 | gpio = <&gpio0 10 0>; | ||
201 | }; | ||
202 | }; | ||
97 | }; | 203 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-mplcec4.dts b/arch/arm/boot/dts/kirkwood-mplcec4.dts new file mode 100644 index 000000000000..262c65403760 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts | |||
@@ -0,0 +1,178 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood.dtsi" | ||
4 | /include/ "kirkwood-6281.dtsi" | ||
5 | |||
6 | / { | ||
7 | model = "MPL CEC4"; | ||
8 | compatible = "mpl,cec4-10", "mpl,cec4", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
9 | |||
10 | memory { | ||
11 | device_type = "memory"; | ||
12 | reg = <0x00000000 0x20000000>; | ||
13 | }; | ||
14 | |||
15 | chosen { | ||
16 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
17 | }; | ||
18 | |||
19 | ocp@f1000000 { | ||
20 | pinctrl: pinctrl@10000 { | ||
21 | |||
22 | pinctrl-0 = < &pmx_nand &pmx_uart0 | ||
23 | &pmx_led_health &pmx_sdio | ||
24 | &pmx_sata0 &pmx_sata1 | ||
25 | &pmx_led_user1o | ||
26 | &pmx_led_user1g &pmx_led_user0o | ||
27 | &pmx_led_user0g &pmx_led_misc | ||
28 | &pmx_sdio_cd | ||
29 | >; | ||
30 | pinctrl-names = "default"; | ||
31 | |||
32 | pmx_led_health: pmx-led-health { | ||
33 | marvell,pins = "mpp7"; | ||
34 | marvell,function = "gpo"; | ||
35 | }; | ||
36 | |||
37 | pmx_sata1: pmx-sata1 { | ||
38 | marvell,pins = "mpp34"; | ||
39 | marvell,function = "sata1"; | ||
40 | }; | ||
41 | |||
42 | pmx_sata0: pmx-sata0 { | ||
43 | marvell,pins = "mpp35"; | ||
44 | marvell,function = "sata0"; | ||
45 | }; | ||
46 | |||
47 | pmx_led_user1o: pmx-led-user1o { | ||
48 | marvell,pins = "mpp40"; | ||
49 | marvell,function = "gpio"; | ||
50 | }; | ||
51 | |||
52 | pmx_led_user1g: pmx-led-user1g { | ||
53 | marvell,pins = "mpp41"; | ||
54 | marvell,function = "gpio"; | ||
55 | }; | ||
56 | |||
57 | pmx_led_user0o: pmx-led-user0o { | ||
58 | marvell,pins = "mpp44"; | ||
59 | marvell,function = "gpio"; | ||
60 | }; | ||
61 | |||
62 | pmx_led_user0g: pmx-led-user0g { | ||
63 | marvell,pins = "mpp45"; | ||
64 | marvell,function = "gpio"; | ||
65 | }; | ||
66 | |||
67 | pmx_led_misc: pmx-led-misc { | ||
68 | marvell,pins = "mpp46"; | ||
69 | marvell,function = "gpio"; | ||
70 | }; | ||
71 | |||
72 | pmx_sdio_cd: pmx-sdio-cd { | ||
73 | marvell,pins = "mpp47"; | ||
74 | marvell,function = "gpio"; | ||
75 | }; | ||
76 | }; | ||
77 | |||
78 | i2c@11000 { | ||
79 | status = "okay"; | ||
80 | |||
81 | rtc@51 { | ||
82 | compatible = "nxp,pcf8563"; | ||
83 | reg = <0x51>; | ||
84 | }; | ||
85 | |||
86 | eeprom@57 { | ||
87 | compatible = "atmel,24c02"; | ||
88 | reg = <0x57>; | ||
89 | }; | ||
90 | |||
91 | }; | ||
92 | |||
93 | serial@12000 { | ||
94 | clock-frequency = <200000000>; | ||
95 | status = "ok"; | ||
96 | }; | ||
97 | |||
98 | nand@3000000 { | ||
99 | status = "okay"; | ||
100 | |||
101 | partition@0 { | ||
102 | label = "uboot"; | ||
103 | reg = <0x0000000 0x100000>; | ||
104 | }; | ||
105 | |||
106 | partition@100000 { | ||
107 | label = "env"; | ||
108 | reg = <0x100000 0x80000>; | ||
109 | }; | ||
110 | |||
111 | partition@180000 { | ||
112 | label = "fdt"; | ||
113 | reg = <0x180000 0x80000>; | ||
114 | }; | ||
115 | |||
116 | partition@200000 { | ||
117 | label = "kernel"; | ||
118 | reg = <0x200000 0x400000>; | ||
119 | }; | ||
120 | |||
121 | partition@600000 { | ||
122 | label = "rootfs"; | ||
123 | reg = <0x600000 0x1fa00000>; | ||
124 | }; | ||
125 | }; | ||
126 | |||
127 | rtc@10300 { | ||
128 | status = "disabled"; | ||
129 | }; | ||
130 | |||
131 | sata@80000 { | ||
132 | nr-ports = <2>; | ||
133 | status = "okay"; | ||
134 | |||
135 | }; | ||
136 | }; | ||
137 | |||
138 | gpio-leds { | ||
139 | compatible = "gpio-leds"; | ||
140 | |||
141 | health { | ||
142 | label = "status:green:health"; | ||
143 | gpios = <&gpio0 7 1>; | ||
144 | }; | ||
145 | |||
146 | user1o { | ||
147 | label = "user1:orange"; | ||
148 | gpios = <&gpio1 8 1>; | ||
149 | default-state = "on"; | ||
150 | }; | ||
151 | |||
152 | user1g { | ||
153 | label = "user1:green"; | ||
154 | gpios = <&gpio1 9 1>; | ||
155 | default-state = "on"; | ||
156 | }; | ||
157 | |||
158 | user0o { | ||
159 | label = "user0:orange"; | ||
160 | gpios = <&gpio1 12 1>; | ||
161 | default-state = "on"; | ||
162 | }; | ||
163 | |||
164 | user0g { | ||
165 | label = "user0:green"; | ||
166 | gpios = <&gpio1 13 1>; | ||
167 | default-state = "on"; | ||
168 | }; | ||
169 | |||
170 | misc { | ||
171 | label = "status:orange:misc"; | ||
172 | gpios = <&gpio1 14 1>; | ||
173 | default-state = "on"; | ||
174 | }; | ||
175 | |||
176 | }; | ||
177 | }; | ||
178 | |||
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi new file mode 100644 index 000000000000..9bc6785ad228 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi | |||
@@ -0,0 +1,63 @@ | |||
1 | /include/ "kirkwood.dtsi" | ||
2 | |||
3 | / { | ||
4 | chosen { | ||
5 | bootargs = "console=ttyS0,115200n8"; | ||
6 | }; | ||
7 | |||
8 | ocp@f1000000 { | ||
9 | serial@12000 { | ||
10 | clock-frequency = <166666667>; | ||
11 | status = "okay"; | ||
12 | }; | ||
13 | |||
14 | spi@10600 { | ||
15 | status = "okay"; | ||
16 | |||
17 | flash@0 { | ||
18 | #address-cells = <1>; | ||
19 | #size-cells = <1>; | ||
20 | compatible = "mx25l4005a"; | ||
21 | reg = <0>; | ||
22 | spi-max-frequency = <20000000>; | ||
23 | mode = <0>; | ||
24 | |||
25 | partition@0 { | ||
26 | reg = <0x0 0x80000>; | ||
27 | label = "u-boot"; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
31 | |||
32 | i2c@11000 { | ||
33 | status = "okay"; | ||
34 | |||
35 | eeprom@50 { | ||
36 | compatible = "at,24c04"; | ||
37 | pagesize = <16>; | ||
38 | reg = <0x50>; | ||
39 | }; | ||
40 | }; | ||
41 | }; | ||
42 | |||
43 | gpio_keys { | ||
44 | compatible = "gpio-keys"; | ||
45 | #address-cells = <1>; | ||
46 | #size-cells = <0>; | ||
47 | |||
48 | button@1 { | ||
49 | label = "Power push button"; | ||
50 | linux,code = <116>; | ||
51 | gpios = <&gpio1 0 0>; | ||
52 | }; | ||
53 | }; | ||
54 | |||
55 | gpio-leds { | ||
56 | compatible = "gpio-leds"; | ||
57 | |||
58 | red-fail { | ||
59 | label = "ns2:red:fail"; | ||
60 | gpios = <&gpio0 12 0>; | ||
61 | }; | ||
62 | }; | ||
63 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts new file mode 100644 index 000000000000..f2d36ecf36d8 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-ns2.dts | |||
@@ -0,0 +1,30 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood-ns2-common.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "LaCie Network Space v2"; | ||
7 | compatible = "lacie,netspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x10000000>; | ||
12 | }; | ||
13 | |||
14 | ocp@f1000000 { | ||
15 | sata@80000 { | ||
16 | status = "okay"; | ||
17 | nr-ports = <1>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | ns2-leds { | ||
22 | compatible = "lacie,ns2-leds"; | ||
23 | |||
24 | blue-sata { | ||
25 | label = "ns2:blue:sata"; | ||
26 | slow-gpio = <&gpio0 29 0>; | ||
27 | cmd-gpio = <&gpio0 30 0>; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts new file mode 100644 index 000000000000..b02eb4ea1bb4 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts | |||
@@ -0,0 +1,30 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood-ns2-common.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "LaCie Network Space Lite v2"; | ||
7 | compatible = "lacie,netspace_lite_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x8000000>; | ||
12 | }; | ||
13 | |||
14 | ocp@f1000000 { | ||
15 | sata@80000 { | ||
16 | status = "okay"; | ||
17 | nr-ports = <1>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | gpio-leds { | ||
22 | compatible = "gpio-leds"; | ||
23 | |||
24 | blue-sata { | ||
25 | label = "ns2:blue:sata"; | ||
26 | gpios = <&gpio0 30 1>; | ||
27 | linux,default-trigger = "default-on"; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts new file mode 100644 index 000000000000..bcec4d6cada7 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-ns2max.dts | |||
@@ -0,0 +1,49 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood-ns2-common.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "LaCie Network Space Max v2"; | ||
7 | compatible = "lacie,netspace_max_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x10000000>; | ||
12 | }; | ||
13 | |||
14 | ocp@f1000000 { | ||
15 | sata@80000 { | ||
16 | status = "okay"; | ||
17 | nr-ports = <2>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | gpio_fan { | ||
22 | compatible = "gpio-fan"; | ||
23 | gpios = <&gpio0 22 1 | ||
24 | &gpio0 7 1 | ||
25 | &gpio1 1 1 | ||
26 | &gpio0 23 1>; | ||
27 | gpio-fan,speed-map = | ||
28 | < 0 0 | ||
29 | 1500 15 | ||
30 | 1700 14 | ||
31 | 1800 13 | ||
32 | 2100 12 | ||
33 | 3100 11 | ||
34 | 3300 10 | ||
35 | 4300 9 | ||
36 | 5500 8>; | ||
37 | alarm-gpios = <&gpio0 25 1>; | ||
38 | }; | ||
39 | |||
40 | ns2-leds { | ||
41 | compatible = "lacie,ns2-leds"; | ||
42 | |||
43 | blue-sata { | ||
44 | label = "ns2:blue:sata"; | ||
45 | slow-gpio = <&gpio0 29 0>; | ||
46 | cmd-gpio = <&gpio0 30 0>; | ||
47 | }; | ||
48 | }; | ||
49 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts new file mode 100644 index 000000000000..b79f5eb25589 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts | |||
@@ -0,0 +1,49 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood-ns2-common.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "LaCie Network Space Mini v2"; | ||
7 | compatible = "lacie,netspace_mini_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x8000000>; | ||
12 | }; | ||
13 | |||
14 | ocp@f1000000 { | ||
15 | sata@80000 { | ||
16 | status = "okay"; | ||
17 | nr-ports = <1>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | gpio_fan { | ||
22 | compatible = "gpio-fan"; | ||
23 | gpios = <&gpio0 22 1 | ||
24 | &gpio0 7 1 | ||
25 | &gpio1 1 1 | ||
26 | &gpio0 23 1>; | ||
27 | gpio-fan,speed-map = | ||
28 | < 0 0 | ||
29 | 3000 15 | ||
30 | 3180 14 | ||
31 | 4140 13 | ||
32 | 4570 12 | ||
33 | 6760 11 | ||
34 | 7140 10 | ||
35 | 7980 9 | ||
36 | 9200 8>; | ||
37 | alarm-gpios = <&gpio0 25 1>; | ||
38 | }; | ||
39 | |||
40 | ns2-leds { | ||
41 | compatible = "lacie,ns2-leds"; | ||
42 | |||
43 | blue-sata { | ||
44 | label = "ns2:blue:sata"; | ||
45 | slow-gpio = <&gpio0 29 0>; | ||
46 | cmd-gpio = <&gpio0 30 0>; | ||
47 | }; | ||
48 | }; | ||
49 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-nsa310.dts b/arch/arm/boot/dts/kirkwood-nsa310.dts new file mode 100644 index 000000000000..5509f9659546 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-nsa310.dts | |||
@@ -0,0 +1,144 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "ZyXEL NSA310"; | ||
7 | compatible = "zyxel,nsa310", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x10000000>; | ||
12 | }; | ||
13 | |||
14 | chosen { | ||
15 | bootargs = "console=ttyS0,115200"; | ||
16 | }; | ||
17 | |||
18 | ocp@f1000000 { | ||
19 | |||
20 | serial@12000 { | ||
21 | clock-frequency = <200000000>; | ||
22 | status = "ok"; | ||
23 | }; | ||
24 | |||
25 | sata@80000 { | ||
26 | status = "okay"; | ||
27 | nr-ports = <2>; | ||
28 | }; | ||
29 | |||
30 | i2c@11000 { | ||
31 | status = "okay"; | ||
32 | }; | ||
33 | |||
34 | nand@3000000 { | ||
35 | status = "okay"; | ||
36 | chip-delay = <35>; | ||
37 | |||
38 | partition@0 { | ||
39 | label = "uboot"; | ||
40 | reg = <0x0000000 0x0100000>; | ||
41 | read-only; | ||
42 | }; | ||
43 | partition@100000 { | ||
44 | label = "uboot_env"; | ||
45 | reg = <0x0100000 0x0080000>; | ||
46 | }; | ||
47 | partition@180000 { | ||
48 | label = "key_store"; | ||
49 | reg = <0x0180000 0x0080000>; | ||
50 | }; | ||
51 | partition@200000 { | ||
52 | label = "info"; | ||
53 | reg = <0x0200000 0x0080000>; | ||
54 | }; | ||
55 | partition@280000 { | ||
56 | label = "etc"; | ||
57 | reg = <0x0280000 0x0a00000>; | ||
58 | }; | ||
59 | partition@c80000 { | ||
60 | label = "kernel_1"; | ||
61 | reg = <0x0c80000 0x0a00000>; | ||
62 | }; | ||
63 | partition@1680000 { | ||
64 | label = "rootfs1"; | ||
65 | reg = <0x1680000 0x2fc0000>; | ||
66 | }; | ||
67 | partition@4640000 { | ||
68 | label = "kernel_2"; | ||
69 | reg = <0x4640000 0x0a00000>; | ||
70 | }; | ||
71 | partition@5040000 { | ||
72 | label = "rootfs2"; | ||
73 | reg = <0x5040000 0x2fc0000>; | ||
74 | }; | ||
75 | }; | ||
76 | }; | ||
77 | |||
78 | gpio_keys { | ||
79 | compatible = "gpio-keys"; | ||
80 | #address-cells = <1>; | ||
81 | #size-cells = <0>; | ||
82 | |||
83 | button@1 { | ||
84 | label = "Power Button"; | ||
85 | linux,code = <116>; | ||
86 | gpios = <&gpio1 14 0>; | ||
87 | }; | ||
88 | button@2 { | ||
89 | label = "Copy Button"; | ||
90 | linux,code = <133>; | ||
91 | gpios = <&gpio1 5 1>; | ||
92 | }; | ||
93 | button@3 { | ||
94 | label = "Reset Button"; | ||
95 | linux,code = <0x198>; | ||
96 | gpios = <&gpio1 4 1>; | ||
97 | }; | ||
98 | }; | ||
99 | |||
100 | gpio-leds { | ||
101 | compatible = "gpio-leds"; | ||
102 | |||
103 | green-sys { | ||
104 | label = "nsa310:green:sys"; | ||
105 | gpios = <&gpio0 28 0>; | ||
106 | }; | ||
107 | red-sys { | ||
108 | label = "nsa310:red:sys"; | ||
109 | gpios = <&gpio0 29 0>; | ||
110 | }; | ||
111 | green-hdd { | ||
112 | label = "nsa310:green:hdd"; | ||
113 | gpios = <&gpio1 9 0>; | ||
114 | }; | ||
115 | red-hdd { | ||
116 | label = "nsa310:red:hdd"; | ||
117 | gpios = <&gpio1 10 0>; | ||
118 | }; | ||
119 | green-esata { | ||
120 | label = "nsa310:green:esata"; | ||
121 | gpios = <&gpio0 12 0>; | ||
122 | }; | ||
123 | red-esata { | ||
124 | label = "nsa310:red:esata"; | ||
125 | gpios = <&gpio0 13 0>; | ||
126 | }; | ||
127 | green-usb { | ||
128 | label = "nsa310:green:usb"; | ||
129 | gpios = <&gpio0 15 0>; | ||
130 | }; | ||
131 | red-usb { | ||
132 | label = "nsa310:red:usb"; | ||
133 | gpios = <&gpio0 16 0>; | ||
134 | }; | ||
135 | green-copy { | ||
136 | label = "nsa310:green:copy"; | ||
137 | gpios = <&gpio1 7 0>; | ||
138 | }; | ||
139 | red-copy { | ||
140 | label = "nsa310:red:copy"; | ||
141 | gpios = <&gpio1 8 0>; | ||
142 | }; | ||
143 | }; | ||
144 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts new file mode 100644 index 000000000000..49d3d74d4d38 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts | |||
@@ -0,0 +1,98 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood.dtsi" | ||
4 | /include/ "kirkwood-6282.dtsi" | ||
5 | |||
6 | / { | ||
7 | model = "Plat'Home OpenBlocksA6"; | ||
8 | compatible = "plathome,openblocks-a6", "marvell,kirkwood-88f6283", "marvell,kirkwood"; | ||
9 | |||
10 | memory { | ||
11 | device_type = "memory"; | ||
12 | reg = <0x00000000 0x20000000>; | ||
13 | }; | ||
14 | |||
15 | chosen { | ||
16 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
17 | }; | ||
18 | |||
19 | ocp@f1000000 { | ||
20 | serial@12000 { | ||
21 | clock-frequency = <200000000>; | ||
22 | status = "ok"; | ||
23 | }; | ||
24 | |||
25 | serial@12100 { | ||
26 | clock-frequency = <200000000>; | ||
27 | status = "ok"; | ||
28 | }; | ||
29 | |||
30 | nand@3000000 { | ||
31 | chip-delay = <25>; | ||
32 | status = "okay"; | ||
33 | |||
34 | partition@0 { | ||
35 | label = "uboot"; | ||
36 | reg = <0x0 0x90000>; | ||
37 | }; | ||
38 | |||
39 | partition@90000 { | ||
40 | label = "env"; | ||
41 | reg = <0x90000 0x44000>; | ||
42 | }; | ||
43 | |||
44 | partition@d4000 { | ||
45 | label = "test"; | ||
46 | reg = <0xd4000 0x24000>; | ||
47 | }; | ||
48 | |||
49 | partition@f4000 { | ||
50 | label = "conf"; | ||
51 | reg = <0xf4000 0x400000>; | ||
52 | }; | ||
53 | |||
54 | partition@4f4000 { | ||
55 | label = "linux"; | ||
56 | reg = <0x4f4000 0x1d20000>; | ||
57 | }; | ||
58 | |||
59 | partition@2214000 { | ||
60 | label = "user"; | ||
61 | reg = <0x2214000 0x1dec000>; | ||
62 | }; | ||
63 | }; | ||
64 | |||
65 | sata@80000 { | ||
66 | nr-ports = <1>; | ||
67 | status = "okay"; | ||
68 | }; | ||
69 | |||
70 | i2c@11100 { | ||
71 | status = "okay"; | ||
72 | |||
73 | s35390a: s35390a@30 { | ||
74 | compatible = "s35390a"; | ||
75 | reg = <0x30>; | ||
76 | }; | ||
77 | }; | ||
78 | }; | ||
79 | |||
80 | gpio-leds { | ||
81 | compatible = "gpio-leds"; | ||
82 | |||
83 | led-red { | ||
84 | label = "obsa6:red:stat"; | ||
85 | gpios = <&gpio1 9 1>; | ||
86 | }; | ||
87 | |||
88 | led-green { | ||
89 | label = "obsa6:green:stat"; | ||
90 | gpios = <&gpio1 10 1>; | ||
91 | }; | ||
92 | |||
93 | led-yellow { | ||
94 | label = "obsa6:yellow:stat"; | ||
95 | gpios = <&gpio1 11 1>; | ||
96 | }; | ||
97 | }; | ||
98 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts new file mode 100644 index 000000000000..c0de5a7f660d --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-topkick.dts | |||
@@ -0,0 +1,85 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "Univeral Scientific Industrial Co. Topkick-1281P2"; | ||
7 | compatible = "usi,topkick-1281P2", "usi,topkick", "marvell,kirkwood-88f6282", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x10000000>; | ||
12 | }; | ||
13 | |||
14 | chosen { | ||
15 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
16 | }; | ||
17 | |||
18 | ocp@f1000000 { | ||
19 | serial@12000 { | ||
20 | clock-frequency = <200000000>; | ||
21 | status = "ok"; | ||
22 | }; | ||
23 | |||
24 | nand@3000000 { | ||
25 | status = "okay"; | ||
26 | |||
27 | partition@0 { | ||
28 | label = "u-boot"; | ||
29 | reg = <0x0000000 0x180000>; | ||
30 | }; | ||
31 | |||
32 | partition@180000 { | ||
33 | label = "u-boot env"; | ||
34 | reg = <0x0180000 0x20000>; | ||
35 | }; | ||
36 | |||
37 | partition@200000 { | ||
38 | label = "uImage"; | ||
39 | reg = <0x0200000 0x600000>; | ||
40 | }; | ||
41 | |||
42 | partition@800000 { | ||
43 | label = "uInitrd"; | ||
44 | reg = <0x0800000 0x1000000>; | ||
45 | }; | ||
46 | |||
47 | partition@1800000 { | ||
48 | label = "rootfs"; | ||
49 | reg = <0x1800000 0xe800000>; | ||
50 | }; | ||
51 | }; | ||
52 | |||
53 | sata@80000 { | ||
54 | status = "okay"; | ||
55 | nr-ports = <1>; | ||
56 | }; | ||
57 | }; | ||
58 | |||
59 | gpio-leds { | ||
60 | compatible = "gpio-leds"; | ||
61 | |||
62 | disk { | ||
63 | label = "topkick:yellow:disk"; | ||
64 | gpios = <&gpio0 21 1>; | ||
65 | linux,default-trigger = "ide-disk"; | ||
66 | }; | ||
67 | system2 { | ||
68 | label = "topkick:red:system"; | ||
69 | gpios = <&gpio1 5 1>; | ||
70 | }; | ||
71 | system { | ||
72 | label = "topkick:blue:system"; | ||
73 | gpios = <&gpio1 6 1>; | ||
74 | default-state = "on"; | ||
75 | }; | ||
76 | wifi { | ||
77 | label = "topkick:green:wifi"; | ||
78 | gpios = <&gpio1 7 1>; | ||
79 | }; | ||
80 | wifi2 { | ||
81 | label = "topkick:yellow:wifi"; | ||
82 | gpios = <&gpio1 16 1>; | ||
83 | }; | ||
84 | }; | ||
85 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts index ccbf32757800..8295c833887f 100644 --- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts +++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts | |||
@@ -1,8 +1,39 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood-ts219.dtsi" | 3 | /include/ "kirkwood-ts219.dtsi" |
4 | /include/ "kirkwood-6281.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
7 | ocp@f1000000 { | ||
8 | pinctrl: pinctrl@10000 { | ||
9 | |||
10 | pinctrl-0 = < &pmx_uart0 &pmx_uart1 &pmx_spi | ||
11 | &pmx_twsi0 &pmx_sata0 &pmx_sata1 | ||
12 | &pmx_ram_size &pmx_reset_button | ||
13 | &pmx_USB_copy_button &pmx_board_id>; | ||
14 | pinctrl-names = "default"; | ||
15 | |||
16 | pmx_ram_size: pmx-ram-size { | ||
17 | /* RAM: 0: 256 MB, 1: 512 MB */ | ||
18 | marvell,pins = "mpp36"; | ||
19 | marvell,function = "gpio"; | ||
20 | }; | ||
21 | pmx_USB_copy_button: pmx-USB-copy-button { | ||
22 | marvell,pins = "mpp15"; | ||
23 | marvell,function = "gpio"; | ||
24 | }; | ||
25 | pmx_reset_button: pmx-reset-button { | ||
26 | marvell,pins = "mpp16"; | ||
27 | marvell,function = "gpio"; | ||
28 | }; | ||
29 | pmx_board_id: pmx-board-id { | ||
30 | /* 0: TS-11x, 1: TS-21x */ | ||
31 | marvell,pins = "mpp44"; | ||
32 | marvell,function = "gpio"; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
36 | |||
6 | gpio_keys { | 37 | gpio_keys { |
7 | compatible = "gpio-keys"; | 38 | compatible = "gpio-keys"; |
8 | #address-cells = <1>; | 39 | #address-cells = <1>; |
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts index fbe9932161a1..df3f95dfba33 100644 --- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts +++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts | |||
@@ -1,8 +1,39 @@ | |||
1 | /dts-v1/; | 1 | /dts-v1/; |
2 | 2 | ||
3 | /include/ "kirkwood-ts219.dtsi" | 3 | /include/ "kirkwood-ts219.dtsi" |
4 | /include/ "kirkwood-6282.dtsi" | ||
4 | 5 | ||
5 | / { | 6 | / { |
7 | ocp@f1000000 { | ||
8 | pinctrl: pinctrl@10000 { | ||
9 | |||
10 | pinctrl-0 = < &pmx_uart0 &pmx_uart1 &pmx_spi | ||
11 | &pmx_twsi0 &pmx_sata0 &pmx_sata1 | ||
12 | &pmx_ram_size &pmx_reset_button | ||
13 | &pmx_USB_copy_button &pmx_board_id>; | ||
14 | pinctrl-names = "default"; | ||
15 | |||
16 | pmx_ram_size: pmx-ram-size { | ||
17 | /* RAM: 0: 256 MB, 1: 512 MB */ | ||
18 | marvell,pins = "mpp36"; | ||
19 | marvell,function = "gpio"; | ||
20 | }; | ||
21 | pmx_reset_button: pmx-reset-button { | ||
22 | marvell,pins = "mpp37"; | ||
23 | marvell,function = "gpio"; | ||
24 | }; | ||
25 | pmx_USB_copy_button: pmx-USB-copy-button { | ||
26 | marvell,pins = "mpp43"; | ||
27 | marvell,function = "gpio"; | ||
28 | }; | ||
29 | pmx_board_id: pmx-board-id { | ||
30 | /* 0: TS-11x, 1: TS-21x */ | ||
31 | marvell,pins = "mpp44"; | ||
32 | marvell,function = "gpio"; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
36 | |||
6 | gpio_keys { | 37 | gpio_keys { |
7 | compatible = "gpio-keys"; | 38 | compatible = "gpio-keys"; |
8 | #address-cells = <1>; | 39 | #address-cells = <1>; |
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi index 4e5b8154a5be..a990c30f0a26 100644 --- a/arch/arm/boot/dts/kirkwood.dtsi +++ b/arch/arm/boot/dts/kirkwood.dtsi | |||
@@ -4,6 +4,10 @@ | |||
4 | compatible = "marvell,kirkwood"; | 4 | compatible = "marvell,kirkwood"; |
5 | interrupt-parent = <&intc>; | 5 | interrupt-parent = <&intc>; |
6 | 6 | ||
7 | aliases { | ||
8 | gpio0 = &gpio0; | ||
9 | gpio1 = &gpio1; | ||
10 | }; | ||
7 | intc: interrupt-controller { | 11 | intc: interrupt-controller { |
8 | compatible = "marvell,orion-intc", "marvell,intc"; | 12 | compatible = "marvell,orion-intc", "marvell,intc"; |
9 | interrupt-controller; | 13 | interrupt-controller; |
@@ -24,7 +28,8 @@ | |||
24 | #gpio-cells = <2>; | 28 | #gpio-cells = <2>; |
25 | gpio-controller; | 29 | gpio-controller; |
26 | reg = <0x10100 0x40>; | 30 | reg = <0x10100 0x40>; |
27 | ngpio = <32>; | 31 | ngpios = <32>; |
32 | interrupt-controller; | ||
28 | interrupts = <35>, <36>, <37>, <38>; | 33 | interrupts = <35>, <36>, <37>, <38>; |
29 | }; | 34 | }; |
30 | 35 | ||
@@ -33,7 +38,8 @@ | |||
33 | #gpio-cells = <2>; | 38 | #gpio-cells = <2>; |
34 | gpio-controller; | 39 | gpio-controller; |
35 | reg = <0x10140 0x40>; | 40 | reg = <0x10140 0x40>; |
36 | ngpio = <18>; | 41 | ngpios = <18>; |
42 | interrupt-controller; | ||
37 | interrupts = <39>, <40>, <41>; | 43 | interrupts = <39>, <40>, <41>; |
38 | }; | 44 | }; |
39 | 45 | ||
@@ -77,6 +83,13 @@ | |||
77 | status = "okay"; | 83 | status = "okay"; |
78 | }; | 84 | }; |
79 | 85 | ||
86 | ehci@50000 { | ||
87 | compatible = "marvell,orion-ehci"; | ||
88 | reg = <0x50000 0x1000>; | ||
89 | interrupts = <19>; | ||
90 | status = "okay"; | ||
91 | }; | ||
92 | |||
80 | sata@80000 { | 93 | sata@80000 { |
81 | compatible = "marvell,orion-sata"; | 94 | compatible = "marvell,orion-sata"; |
82 | reg = <0x80000 0x5000>; | 95 | reg = <0x80000 0x5000>; |
diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi index e5ffe960dbf3..1582f484a867 100644 --- a/arch/arm/boot/dts/lpc32xx.dtsi +++ b/arch/arm/boot/dts/lpc32xx.dtsi | |||
@@ -182,6 +182,13 @@ | |||
182 | pnx,timeout = <0x64>; | 182 | pnx,timeout = <0x64>; |
183 | }; | 183 | }; |
184 | 184 | ||
185 | mpwm: mpwm@400E8000 { | ||
186 | compatible = "nxp,lpc3220-motor-pwm"; | ||
187 | reg = <0x400E8000 0x78>; | ||
188 | status = "disabled"; | ||
189 | #pwm-cells = <2>; | ||
190 | }; | ||
191 | |||
185 | i2cusb: i2c@31020300 { | 192 | i2cusb: i2c@31020300 { |
186 | compatible = "nxp,pnx-i2c"; | 193 | compatible = "nxp,pnx-i2c"; |
187 | reg = <0x31020300 0x100>; | 194 | reg = <0x31020300 0x100>; |
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi index 581cb081cb0f..761c4b69b25b 100644 --- a/arch/arm/boot/dts/omap2.dtsi +++ b/arch/arm/boot/dts/omap2.dtsi | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | / { | 13 | / { |
14 | compatible = "ti,omap2430", "ti,omap2420", "ti,omap2"; | 14 | compatible = "ti,omap2430", "ti,omap2420", "ti,omap2"; |
15 | interrupt-parent = <&intc>; | ||
15 | 16 | ||
16 | aliases { | 17 | aliases { |
17 | serial0 = &uart1; | 18 | serial0 = &uart1; |
@@ -65,5 +66,90 @@ | |||
65 | ti,hwmods = "uart3"; | 66 | ti,hwmods = "uart3"; |
66 | clock-frequency = <48000000>; | 67 | clock-frequency = <48000000>; |
67 | }; | 68 | }; |
69 | |||
70 | timer2: timer@4802a000 { | ||
71 | compatible = "ti,omap2-timer"; | ||
72 | reg = <0x4802a000 0x400>; | ||
73 | interrupts = <38>; | ||
74 | ti,hwmods = "timer2"; | ||
75 | }; | ||
76 | |||
77 | timer3: timer@48078000 { | ||
78 | compatible = "ti,omap2-timer"; | ||
79 | reg = <0x48078000 0x400>; | ||
80 | interrupts = <39>; | ||
81 | ti,hwmods = "timer3"; | ||
82 | }; | ||
83 | |||
84 | timer4: timer@4807a000 { | ||
85 | compatible = "ti,omap2-timer"; | ||
86 | reg = <0x4807a000 0x400>; | ||
87 | interrupts = <40>; | ||
88 | ti,hwmods = "timer4"; | ||
89 | }; | ||
90 | |||
91 | timer5: timer@4807c000 { | ||
92 | compatible = "ti,omap2-timer"; | ||
93 | reg = <0x4807c000 0x400>; | ||
94 | interrupts = <41>; | ||
95 | ti,hwmods = "timer5"; | ||
96 | ti,timer-dsp; | ||
97 | }; | ||
98 | |||
99 | timer6: timer@4807e000 { | ||
100 | compatible = "ti,omap2-timer"; | ||
101 | reg = <0x4807e000 0x400>; | ||
102 | interrupts = <42>; | ||
103 | ti,hwmods = "timer6"; | ||
104 | ti,timer-dsp; | ||
105 | }; | ||
106 | |||
107 | timer7: timer@48080000 { | ||
108 | compatible = "ti,omap2-timer"; | ||
109 | reg = <0x48080000 0x400>; | ||
110 | interrupts = <43>; | ||
111 | ti,hwmods = "timer7"; | ||
112 | ti,timer-dsp; | ||
113 | }; | ||
114 | |||
115 | timer8: timer@48082000 { | ||
116 | compatible = "ti,omap2-timer"; | ||
117 | reg = <0x48082000 0x400>; | ||
118 | interrupts = <44>; | ||
119 | ti,hwmods = "timer8"; | ||
120 | ti,timer-dsp; | ||
121 | }; | ||
122 | |||
123 | timer9: timer@48084000 { | ||
124 | compatible = "ti,omap2-timer"; | ||
125 | reg = <0x48084000 0x400>; | ||
126 | interrupts = <45>; | ||
127 | ti,hwmods = "timer9"; | ||
128 | ti,timer-pwm; | ||
129 | }; | ||
130 | |||
131 | timer10: timer@48086000 { | ||
132 | compatible = "ti,omap2-timer"; | ||
133 | reg = <0x48086000 0x400>; | ||
134 | interrupts = <46>; | ||
135 | ti,hwmods = "timer10"; | ||
136 | ti,timer-pwm; | ||
137 | }; | ||
138 | |||
139 | timer11: timer@48088000 { | ||
140 | compatible = "ti,omap2-timer"; | ||
141 | reg = <0x48088000 0x400>; | ||
142 | interrupts = <47>; | ||
143 | ti,hwmods = "timer11"; | ||
144 | ti,timer-pwm; | ||
145 | }; | ||
146 | |||
147 | timer12: timer@4808a000 { | ||
148 | compatible = "ti,omap2-timer"; | ||
149 | reg = <0x4808a000 0x400>; | ||
150 | interrupts = <48>; | ||
151 | ti,hwmods = "timer12"; | ||
152 | ti,timer-pwm; | ||
153 | }; | ||
68 | }; | 154 | }; |
69 | }; | 155 | }; |
diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi index bfd76b4a0ddc..af6560908905 100644 --- a/arch/arm/boot/dts/omap2420.dtsi +++ b/arch/arm/boot/dts/omap2420.dtsi | |||
@@ -14,6 +14,12 @@ | |||
14 | compatible = "ti,omap2420", "ti,omap2"; | 14 | compatible = "ti,omap2420", "ti,omap2"; |
15 | 15 | ||
16 | ocp { | 16 | ocp { |
17 | counter32k: counter@48004000 { | ||
18 | compatible = "ti,omap-counter32k"; | ||
19 | reg = <0x48004000 0x20>; | ||
20 | ti,hwmods = "counter_32k"; | ||
21 | }; | ||
22 | |||
17 | omap2420_pmx: pinmux@48000030 { | 23 | omap2420_pmx: pinmux@48000030 { |
18 | compatible = "ti,omap2420-padconf", "pinctrl-single"; | 24 | compatible = "ti,omap2420-padconf", "pinctrl-single"; |
19 | reg = <0x48000030 0x0113>; | 25 | reg = <0x48000030 0x0113>; |
@@ -30,7 +36,6 @@ | |||
30 | interrupts = <59>, /* TX interrupt */ | 36 | interrupts = <59>, /* TX interrupt */ |
31 | <60>; /* RX interrupt */ | 37 | <60>; /* RX interrupt */ |
32 | interrupt-names = "tx", "rx"; | 38 | interrupt-names = "tx", "rx"; |
33 | interrupt-parent = <&intc>; | ||
34 | ti,hwmods = "mcbsp1"; | 39 | ti,hwmods = "mcbsp1"; |
35 | }; | 40 | }; |
36 | 41 | ||
@@ -41,8 +46,15 @@ | |||
41 | interrupts = <62>, /* TX interrupt */ | 46 | interrupts = <62>, /* TX interrupt */ |
42 | <63>; /* RX interrupt */ | 47 | <63>; /* RX interrupt */ |
43 | interrupt-names = "tx", "rx"; | 48 | interrupt-names = "tx", "rx"; |
44 | interrupt-parent = <&intc>; | ||
45 | ti,hwmods = "mcbsp2"; | 49 | ti,hwmods = "mcbsp2"; |
46 | }; | 50 | }; |
51 | |||
52 | timer1: timer@48028000 { | ||
53 | compatible = "ti,omap2-timer"; | ||
54 | reg = <0x48028000 0x400>; | ||
55 | interrupts = <37>; | ||
56 | ti,hwmods = "timer1"; | ||
57 | ti,timer-alwon; | ||
58 | }; | ||
47 | }; | 59 | }; |
48 | }; | 60 | }; |
diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi index 4565d9750f4d..c3924457c9b6 100644 --- a/arch/arm/boot/dts/omap2430.dtsi +++ b/arch/arm/boot/dts/omap2430.dtsi | |||
@@ -14,6 +14,12 @@ | |||
14 | compatible = "ti,omap2430", "ti,omap2"; | 14 | compatible = "ti,omap2430", "ti,omap2"; |
15 | 15 | ||
16 | ocp { | 16 | ocp { |
17 | counter32k: counter@49020000 { | ||
18 | compatible = "ti,omap-counter32k"; | ||
19 | reg = <0x49020000 0x20>; | ||
20 | ti,hwmods = "counter_32k"; | ||
21 | }; | ||
22 | |||
17 | omap2430_pmx: pinmux@49002030 { | 23 | omap2430_pmx: pinmux@49002030 { |
18 | compatible = "ti,omap2430-padconf", "pinctrl-single"; | 24 | compatible = "ti,omap2430-padconf", "pinctrl-single"; |
19 | reg = <0x49002030 0x0154>; | 25 | reg = <0x49002030 0x0154>; |
@@ -32,7 +38,6 @@ | |||
32 | <60>, /* RX interrupt */ | 38 | <60>, /* RX interrupt */ |
33 | <61>; /* RX overflow interrupt */ | 39 | <61>; /* RX overflow interrupt */ |
34 | interrupt-names = "common", "tx", "rx", "rx_overflow"; | 40 | interrupt-names = "common", "tx", "rx", "rx_overflow"; |
35 | interrupt-parent = <&intc>; | ||
36 | ti,buffer-size = <128>; | 41 | ti,buffer-size = <128>; |
37 | ti,hwmods = "mcbsp1"; | 42 | ti,hwmods = "mcbsp1"; |
38 | }; | 43 | }; |
@@ -45,7 +50,6 @@ | |||
45 | <62>, /* TX interrupt */ | 50 | <62>, /* TX interrupt */ |
46 | <63>; /* RX interrupt */ | 51 | <63>; /* RX interrupt */ |
47 | interrupt-names = "common", "tx", "rx"; | 52 | interrupt-names = "common", "tx", "rx"; |
48 | interrupt-parent = <&intc>; | ||
49 | ti,buffer-size = <128>; | 53 | ti,buffer-size = <128>; |
50 | ti,hwmods = "mcbsp2"; | 54 | ti,hwmods = "mcbsp2"; |
51 | }; | 55 | }; |
@@ -58,7 +62,6 @@ | |||
58 | <89>, /* TX interrupt */ | 62 | <89>, /* TX interrupt */ |
59 | <90>; /* RX interrupt */ | 63 | <90>; /* RX interrupt */ |
60 | interrupt-names = "common", "tx", "rx"; | 64 | interrupt-names = "common", "tx", "rx"; |
61 | interrupt-parent = <&intc>; | ||
62 | ti,buffer-size = <128>; | 65 | ti,buffer-size = <128>; |
63 | ti,hwmods = "mcbsp3"; | 66 | ti,hwmods = "mcbsp3"; |
64 | }; | 67 | }; |
@@ -71,7 +74,6 @@ | |||
71 | <54>, /* TX interrupt */ | 74 | <54>, /* TX interrupt */ |
72 | <55>; /* RX interrupt */ | 75 | <55>; /* RX interrupt */ |
73 | interrupt-names = "common", "tx", "rx"; | 76 | interrupt-names = "common", "tx", "rx"; |
74 | interrupt-parent = <&intc>; | ||
75 | ti,buffer-size = <128>; | 77 | ti,buffer-size = <128>; |
76 | ti,hwmods = "mcbsp4"; | 78 | ti,hwmods = "mcbsp4"; |
77 | }; | 79 | }; |
@@ -84,9 +86,16 @@ | |||
84 | <81>, /* TX interrupt */ | 86 | <81>, /* TX interrupt */ |
85 | <82>; /* RX interrupt */ | 87 | <82>; /* RX interrupt */ |
86 | interrupt-names = "common", "tx", "rx"; | 88 | interrupt-names = "common", "tx", "rx"; |
87 | interrupt-parent = <&intc>; | ||
88 | ti,buffer-size = <128>; | 89 | ti,buffer-size = <128>; |
89 | ti,hwmods = "mcbsp5"; | 90 | ti,hwmods = "mcbsp5"; |
90 | }; | 91 | }; |
92 | |||
93 | timer1: timer@49018000 { | ||
94 | compatible = "ti,omap2-timer"; | ||
95 | reg = <0x49018000 0x400>; | ||
96 | interrupts = <37>; | ||
97 | ti,hwmods = "timer1"; | ||
98 | ti,timer-alwon; | ||
99 | }; | ||
91 | }; | 100 | }; |
92 | }; | 101 | }; |
diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts index c38cf76df81f..3705a81c1fc2 100644 --- a/arch/arm/boot/dts/omap3-beagle-xm.dts +++ b/arch/arm/boot/dts/omap3-beagle-xm.dts | |||
@@ -55,12 +55,6 @@ | |||
55 | interrupts = <7>; /* SYS_NIRQ cascaded to intc */ | 55 | interrupts = <7>; /* SYS_NIRQ cascaded to intc */ |
56 | interrupt-parent = <&intc>; | 56 | interrupt-parent = <&intc>; |
57 | 57 | ||
58 | vsim: regulator-vsim { | ||
59 | compatible = "ti,twl4030-vsim"; | ||
60 | regulator-min-microvolt = <1800000>; | ||
61 | regulator-max-microvolt = <3000000>; | ||
62 | }; | ||
63 | |||
64 | twl_audio: audio { | 58 | twl_audio: audio { |
65 | compatible = "ti,twl4030-audio"; | 59 | compatible = "ti,twl4030-audio"; |
66 | codec { | 60 | codec { |
diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts new file mode 100644 index 000000000000..f624dc85d441 --- /dev/null +++ b/arch/arm/boot/dts/omap3-beagle.dts | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
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 version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | /dts-v1/; | ||
9 | |||
10 | /include/ "omap3.dtsi" | ||
11 | |||
12 | / { | ||
13 | model = "TI OMAP3 BeagleBoard"; | ||
14 | compatible = "ti,omap3-beagle", "ti,omap3"; | ||
15 | |||
16 | memory { | ||
17 | device_type = "memory"; | ||
18 | reg = <0x80000000 0x10000000>; /* 256 MB */ | ||
19 | }; | ||
20 | |||
21 | leds { | ||
22 | compatible = "gpio-leds"; | ||
23 | pmu_stat { | ||
24 | label = "beagleboard::pmu_stat"; | ||
25 | gpios = <&twl_gpio 19 0>; /* LEDB */ | ||
26 | }; | ||
27 | |||
28 | heartbeat { | ||
29 | label = "beagleboard::usr0"; | ||
30 | gpios = <&gpio5 22 0>; /* 150 -> D6 LED */ | ||
31 | linux,default-trigger = "heartbeat"; | ||
32 | }; | ||
33 | |||
34 | mmc { | ||
35 | label = "beagleboard::usr1"; | ||
36 | gpios = <&gpio5 21 0>; /* 149 -> D7 LED */ | ||
37 | linux,default-trigger = "mmc0"; | ||
38 | }; | ||
39 | }; | ||
40 | |||
41 | }; | ||
42 | |||
43 | &i2c1 { | ||
44 | clock-frequency = <2600000>; | ||
45 | |||
46 | twl: twl@48 { | ||
47 | reg = <0x48>; | ||
48 | interrupts = <7>; /* SYS_NIRQ cascaded to intc */ | ||
49 | interrupt-parent = <&intc>; | ||
50 | }; | ||
51 | }; | ||
52 | |||
53 | /include/ "twl4030.dtsi" | ||
54 | |||
55 | &mmc1 { | ||
56 | vmmc-supply = <&vmmc1>; | ||
57 | vmmc_aux-supply = <&vsim>; | ||
58 | bus-width = <8>; | ||
59 | }; | ||
60 | |||
61 | &mmc2 { | ||
62 | status = "disabled"; | ||
63 | }; | ||
64 | |||
65 | &mmc3 { | ||
66 | status = "disabled"; | ||
67 | }; | ||
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 696e929d0304..1acc26148ffc 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | / { | 13 | / { |
14 | compatible = "ti,omap3430", "ti,omap3"; | 14 | compatible = "ti,omap3430", "ti,omap3"; |
15 | interrupt-parent = <&intc>; | ||
15 | 16 | ||
16 | aliases { | 17 | aliases { |
17 | serial0 = &uart1; | 18 | serial0 = &uart1; |
@@ -60,6 +61,12 @@ | |||
60 | ranges; | 61 | ranges; |
61 | ti,hwmods = "l3_main"; | 62 | ti,hwmods = "l3_main"; |
62 | 63 | ||
64 | counter32k: counter@48320000 { | ||
65 | compatible = "ti,omap-counter32k"; | ||
66 | reg = <0x48320000 0x20>; | ||
67 | ti,hwmods = "counter_32k"; | ||
68 | }; | ||
69 | |||
63 | intc: interrupt-controller@48200000 { | 70 | intc: interrupt-controller@48200000 { |
64 | compatible = "ti,omap2-intc"; | 71 | compatible = "ti,omap2-intc"; |
65 | interrupt-controller; | 72 | interrupt-controller; |
@@ -240,7 +247,6 @@ | |||
240 | <59>, /* TX interrupt */ | 247 | <59>, /* TX interrupt */ |
241 | <60>; /* RX interrupt */ | 248 | <60>; /* RX interrupt */ |
242 | interrupt-names = "common", "tx", "rx"; | 249 | interrupt-names = "common", "tx", "rx"; |
243 | interrupt-parent = <&intc>; | ||
244 | ti,buffer-size = <128>; | 250 | ti,buffer-size = <128>; |
245 | ti,hwmods = "mcbsp1"; | 251 | ti,hwmods = "mcbsp1"; |
246 | }; | 252 | }; |
@@ -255,7 +261,6 @@ | |||
255 | <63>, /* RX interrupt */ | 261 | <63>, /* RX interrupt */ |
256 | <4>; /* Sidetone */ | 262 | <4>; /* Sidetone */ |
257 | interrupt-names = "common", "tx", "rx", "sidetone"; | 263 | interrupt-names = "common", "tx", "rx", "sidetone"; |
258 | interrupt-parent = <&intc>; | ||
259 | ti,buffer-size = <1280>; | 264 | ti,buffer-size = <1280>; |
260 | ti,hwmods = "mcbsp2", "mcbsp2_sidetone"; | 265 | ti,hwmods = "mcbsp2", "mcbsp2_sidetone"; |
261 | }; | 266 | }; |
@@ -270,7 +275,6 @@ | |||
270 | <90>, /* RX interrupt */ | 275 | <90>, /* RX interrupt */ |
271 | <5>; /* Sidetone */ | 276 | <5>; /* Sidetone */ |
272 | interrupt-names = "common", "tx", "rx", "sidetone"; | 277 | interrupt-names = "common", "tx", "rx", "sidetone"; |
273 | interrupt-parent = <&intc>; | ||
274 | ti,buffer-size = <128>; | 278 | ti,buffer-size = <128>; |
275 | ti,hwmods = "mcbsp3", "mcbsp3_sidetone"; | 279 | ti,hwmods = "mcbsp3", "mcbsp3_sidetone"; |
276 | }; | 280 | }; |
@@ -283,7 +287,6 @@ | |||
283 | <54>, /* TX interrupt */ | 287 | <54>, /* TX interrupt */ |
284 | <55>; /* RX interrupt */ | 288 | <55>; /* RX interrupt */ |
285 | interrupt-names = "common", "tx", "rx"; | 289 | interrupt-names = "common", "tx", "rx"; |
286 | interrupt-parent = <&intc>; | ||
287 | ti,buffer-size = <128>; | 290 | ti,buffer-size = <128>; |
288 | ti,hwmods = "mcbsp4"; | 291 | ti,hwmods = "mcbsp4"; |
289 | }; | 292 | }; |
@@ -296,9 +299,103 @@ | |||
296 | <81>, /* TX interrupt */ | 299 | <81>, /* TX interrupt */ |
297 | <82>; /* RX interrupt */ | 300 | <82>; /* RX interrupt */ |
298 | interrupt-names = "common", "tx", "rx"; | 301 | interrupt-names = "common", "tx", "rx"; |
299 | interrupt-parent = <&intc>; | ||
300 | ti,buffer-size = <128>; | 302 | ti,buffer-size = <128>; |
301 | ti,hwmods = "mcbsp5"; | 303 | ti,hwmods = "mcbsp5"; |
302 | }; | 304 | }; |
305 | |||
306 | timer1: timer@48318000 { | ||
307 | compatible = "ti,omap2-timer"; | ||
308 | reg = <0x48318000 0x400>; | ||
309 | interrupts = <37>; | ||
310 | ti,hwmods = "timer1"; | ||
311 | ti,timer-alwon; | ||
312 | }; | ||
313 | |||
314 | timer2: timer@49032000 { | ||
315 | compatible = "ti,omap2-timer"; | ||
316 | reg = <0x49032000 0x400>; | ||
317 | interrupts = <38>; | ||
318 | ti,hwmods = "timer2"; | ||
319 | }; | ||
320 | |||
321 | timer3: timer@49034000 { | ||
322 | compatible = "ti,omap2-timer"; | ||
323 | reg = <0x49034000 0x400>; | ||
324 | interrupts = <39>; | ||
325 | ti,hwmods = "timer3"; | ||
326 | }; | ||
327 | |||
328 | timer4: timer@49036000 { | ||
329 | compatible = "ti,omap2-timer"; | ||
330 | reg = <0x49036000 0x400>; | ||
331 | interrupts = <40>; | ||
332 | ti,hwmods = "timer4"; | ||
333 | }; | ||
334 | |||
335 | timer5: timer@49038000 { | ||
336 | compatible = "ti,omap2-timer"; | ||
337 | reg = <0x49038000 0x400>; | ||
338 | interrupts = <41>; | ||
339 | ti,hwmods = "timer5"; | ||
340 | ti,timer-dsp; | ||
341 | }; | ||
342 | |||
343 | timer6: timer@4903a000 { | ||
344 | compatible = "ti,omap2-timer"; | ||
345 | reg = <0x4903a000 0x400>; | ||
346 | interrupts = <42>; | ||
347 | ti,hwmods = "timer6"; | ||
348 | ti,timer-dsp; | ||
349 | }; | ||
350 | |||
351 | timer7: timer@4903c000 { | ||
352 | compatible = "ti,omap2-timer"; | ||
353 | reg = <0x4903c000 0x400>; | ||
354 | interrupts = <43>; | ||
355 | ti,hwmods = "timer7"; | ||
356 | ti,timer-dsp; | ||
357 | }; | ||
358 | |||
359 | timer8: timer@4903e000 { | ||
360 | compatible = "ti,omap2-timer"; | ||
361 | reg = <0x4903e000 0x400>; | ||
362 | interrupts = <44>; | ||
363 | ti,hwmods = "timer8"; | ||
364 | ti,timer-pwm; | ||
365 | ti,timer-dsp; | ||
366 | }; | ||
367 | |||
368 | timer9: timer@49040000 { | ||
369 | compatible = "ti,omap2-timer"; | ||
370 | reg = <0x49040000 0x400>; | ||
371 | interrupts = <45>; | ||
372 | ti,hwmods = "timer9"; | ||
373 | ti,timer-pwm; | ||
374 | }; | ||
375 | |||
376 | timer10: timer@48086000 { | ||
377 | compatible = "ti,omap2-timer"; | ||
378 | reg = <0x48086000 0x400>; | ||
379 | interrupts = <46>; | ||
380 | ti,hwmods = "timer10"; | ||
381 | ti,timer-pwm; | ||
382 | }; | ||
383 | |||
384 | timer11: timer@48088000 { | ||
385 | compatible = "ti,omap2-timer"; | ||
386 | reg = <0x48088000 0x400>; | ||
387 | interrupts = <47>; | ||
388 | ti,hwmods = "timer11"; | ||
389 | ti,timer-pwm; | ||
390 | }; | ||
391 | |||
392 | timer12: timer@48304000 { | ||
393 | compatible = "ti,omap2-timer"; | ||
394 | reg = <0x48304000 0x400>; | ||
395 | interrupts = <95>; | ||
396 | ti,hwmods = "timer12"; | ||
397 | ti,timer-alwon; | ||
398 | ti,timer-secure; | ||
399 | }; | ||
303 | }; | 400 | }; |
304 | }; | 401 | }; |
diff --git a/arch/arm/boot/dts/omap4-panda-a4.dts b/arch/arm/boot/dts/omap4-panda-a4.dts new file mode 100644 index 000000000000..75466d2abfb5 --- /dev/null +++ b/arch/arm/boot/dts/omap4-panda-a4.dts | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
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 version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | /include/ "omap4-panda.dts" | ||
9 | |||
10 | /* Pandaboard Rev A4+ have external pullups on SCL & SDA */ | ||
11 | &dss_hdmi_pins { | ||
12 | pinctrl-single,pins = < | ||
13 | 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ | ||
14 | 0x5c 0x100 /* hdmi_scl.hdmi_scl INPUT | MODE 0 */ | ||
15 | 0x5e 0x100 /* hdmi_sda.hdmi_sda INPUT | MODE 0 */ | ||
16 | >; | ||
17 | }; | ||
diff --git a/arch/arm/boot/dts/omap4-pandaES.dts b/arch/arm/boot/dts/omap4-panda-es.dts index d4ba43a48d9b..73bc1a67e444 100644 --- a/arch/arm/boot/dts/omap4-pandaES.dts +++ b/arch/arm/boot/dts/omap4-panda-es.dts | |||
@@ -22,3 +22,12 @@ | |||
22 | "AFML", "Line In", | 22 | "AFML", "Line In", |
23 | "AFMR", "Line In"; | 23 | "AFMR", "Line In"; |
24 | }; | 24 | }; |
25 | |||
26 | /* PandaboardES has external pullups on SCL & SDA */ | ||
27 | &dss_hdmi_pins { | ||
28 | pinctrl-single,pins = < | ||
29 | 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ | ||
30 | 0x5c 0x100 /* hdmi_scl.hdmi_scl INPUT | MODE 0 */ | ||
31 | 0x5e 0x100 /* hdmi_sda.hdmi_sda INPUT | MODE 0 */ | ||
32 | >; | ||
33 | }; | ||
diff --git a/arch/arm/boot/dts/omap4-panda.dts b/arch/arm/boot/dts/omap4-panda.dts index e8f927cbb376..4122efe31cfd 100644 --- a/arch/arm/boot/dts/omap4-panda.dts +++ b/arch/arm/boot/dts/omap4-panda.dts | |||
@@ -65,6 +65,8 @@ | |||
65 | &twl6040_pins | 65 | &twl6040_pins |
66 | &mcpdm_pins | 66 | &mcpdm_pins |
67 | &mcbsp1_pins | 67 | &mcbsp1_pins |
68 | &dss_hdmi_pins | ||
69 | &tpd12s015_pins | ||
68 | >; | 70 | >; |
69 | 71 | ||
70 | twl6040_pins: pinmux_twl6040_pins { | 72 | twl6040_pins: pinmux_twl6040_pins { |
@@ -92,6 +94,22 @@ | |||
92 | 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ | 94 | 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ |
93 | >; | 95 | >; |
94 | }; | 96 | }; |
97 | |||
98 | dss_hdmi_pins: pinmux_dss_hdmi_pins { | ||
99 | pinctrl-single,pins = < | ||
100 | 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ | ||
101 | 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */ | ||
102 | 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */ | ||
103 | >; | ||
104 | }; | ||
105 | |||
106 | tpd12s015_pins: pinmux_tpd12s015_pins { | ||
107 | pinctrl-single,pins = < | ||
108 | 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */ | ||
109 | 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */ | ||
110 | 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ | ||
111 | >; | ||
112 | }; | ||
95 | }; | 113 | }; |
96 | 114 | ||
97 | &i2c1 { | 115 | &i2c1 { |
@@ -184,3 +202,7 @@ | |||
184 | &dmic { | 202 | &dmic { |
185 | status = "disabled"; | 203 | status = "disabled"; |
186 | }; | 204 | }; |
205 | |||
206 | &twl_usb_comparator { | ||
207 | usb-supply = <&vusb>; | ||
208 | }; | ||
diff --git a/arch/arm/boot/dts/omap4-sdp-es23plus.dts b/arch/arm/boot/dts/omap4-sdp-es23plus.dts new file mode 100644 index 000000000000..b4a40ffbce31 --- /dev/null +++ b/arch/arm/boot/dts/omap4-sdp-es23plus.dts | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
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 version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | /include/ "omap4-sdp.dts" | ||
9 | |||
10 | /* SDP boards with 4430 ES2.3+ or 4460 have external pullups on SCL & SDA */ | ||
11 | &dss_hdmi_pins { | ||
12 | pinctrl-single,pins = < | ||
13 | 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ | ||
14 | 0x5c 0x100 /* hdmi_scl.hdmi_scl INPUT | MODE 0 */ | ||
15 | 0x5e 0x100 /* hdmi_sda.hdmi_sda INPUT | MODE 0 */ | ||
16 | >; | ||
17 | }; | ||
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts index 5b7e04fbff50..43e5258a9372 100644 --- a/arch/arm/boot/dts/omap4-sdp.dts +++ b/arch/arm/boot/dts/omap4-sdp.dts | |||
@@ -124,6 +124,8 @@ | |||
124 | &dmic_pins | 124 | &dmic_pins |
125 | &mcbsp1_pins | 125 | &mcbsp1_pins |
126 | &mcbsp2_pins | 126 | &mcbsp2_pins |
127 | &dss_hdmi_pins | ||
128 | &tpd12s015_pins | ||
127 | >; | 129 | >; |
128 | 130 | ||
129 | uart2_pins: pinmux_uart2_pins { | 131 | uart2_pins: pinmux_uart2_pins { |
@@ -194,6 +196,22 @@ | |||
194 | 0xbc 0x100 /* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */ | 196 | 0xbc 0x100 /* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */ |
195 | >; | 197 | >; |
196 | }; | 198 | }; |
199 | |||
200 | dss_hdmi_pins: pinmux_dss_hdmi_pins { | ||
201 | pinctrl-single,pins = < | ||
202 | 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ | ||
203 | 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */ | ||
204 | 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */ | ||
205 | >; | ||
206 | }; | ||
207 | |||
208 | tpd12s015_pins: pinmux_tpd12s015_pins { | ||
209 | pinctrl-single,pins = < | ||
210 | 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */ | ||
211 | 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */ | ||
212 | 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ | ||
213 | >; | ||
214 | }; | ||
197 | }; | 215 | }; |
198 | 216 | ||
199 | &i2c1 { | 217 | &i2c1 { |
@@ -406,3 +424,7 @@ | |||
406 | &mcbsp3 { | 424 | &mcbsp3 { |
407 | status = "disabled"; | 425 | status = "disabled"; |
408 | }; | 426 | }; |
427 | |||
428 | &twl_usb_comparator { | ||
429 | usb-supply = <&vusb>; | ||
430 | }; | ||
diff --git a/arch/arm/boot/dts/omap4-var_som.dts b/arch/arm/boot/dts/omap4-var-som.dts index 6601e6af6092..6601e6af6092 100644 --- a/arch/arm/boot/dts/omap4-var_som.dts +++ b/arch/arm/boot/dts/omap4-var-som.dts | |||
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi index 3883f94fdbd0..739bb79e410e 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi | |||
@@ -95,6 +95,12 @@ | |||
95 | ranges; | 95 | ranges; |
96 | ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; | 96 | ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; |
97 | 97 | ||
98 | counter32k: counter@4a304000 { | ||
99 | compatible = "ti,omap-counter32k"; | ||
100 | reg = <0x4a304000 0x20>; | ||
101 | ti,hwmods = "counter_32k"; | ||
102 | }; | ||
103 | |||
98 | omap4_pmx_core: pinmux@4a100040 { | 104 | omap4_pmx_core: pinmux@4a100040 { |
99 | compatible = "ti,omap4-padconf", "pinctrl-single"; | 105 | compatible = "ti,omap4-padconf", "pinctrl-single"; |
100 | reg = <0x4a100040 0x0196>; | 106 | reg = <0x4a100040 0x0196>; |
@@ -340,7 +346,6 @@ | |||
340 | <0x49032000 0x7f>; /* L3 Interconnect */ | 346 | <0x49032000 0x7f>; /* L3 Interconnect */ |
341 | reg-names = "mpu", "dma"; | 347 | reg-names = "mpu", "dma"; |
342 | interrupts = <0 112 0x4>; | 348 | interrupts = <0 112 0x4>; |
343 | interrupt-parent = <&gic>; | ||
344 | ti,hwmods = "mcpdm"; | 349 | ti,hwmods = "mcpdm"; |
345 | }; | 350 | }; |
346 | 351 | ||
@@ -350,7 +355,6 @@ | |||
350 | <0x4902e000 0x7f>; /* L3 Interconnect */ | 355 | <0x4902e000 0x7f>; /* L3 Interconnect */ |
351 | reg-names = "mpu", "dma"; | 356 | reg-names = "mpu", "dma"; |
352 | interrupts = <0 114 0x4>; | 357 | interrupts = <0 114 0x4>; |
353 | interrupt-parent = <&gic>; | ||
354 | ti,hwmods = "dmic"; | 358 | ti,hwmods = "dmic"; |
355 | }; | 359 | }; |
356 | 360 | ||
@@ -361,7 +365,6 @@ | |||
361 | reg-names = "mpu", "dma"; | 365 | reg-names = "mpu", "dma"; |
362 | interrupts = <0 17 0x4>; | 366 | interrupts = <0 17 0x4>; |
363 | interrupt-names = "common"; | 367 | interrupt-names = "common"; |
364 | interrupt-parent = <&gic>; | ||
365 | ti,buffer-size = <128>; | 368 | ti,buffer-size = <128>; |
366 | ti,hwmods = "mcbsp1"; | 369 | ti,hwmods = "mcbsp1"; |
367 | }; | 370 | }; |
@@ -373,7 +376,6 @@ | |||
373 | reg-names = "mpu", "dma"; | 376 | reg-names = "mpu", "dma"; |
374 | interrupts = <0 22 0x4>; | 377 | interrupts = <0 22 0x4>; |
375 | interrupt-names = "common"; | 378 | interrupt-names = "common"; |
376 | interrupt-parent = <&gic>; | ||
377 | ti,buffer-size = <128>; | 379 | ti,buffer-size = <128>; |
378 | ti,hwmods = "mcbsp2"; | 380 | ti,hwmods = "mcbsp2"; |
379 | }; | 381 | }; |
@@ -385,7 +387,6 @@ | |||
385 | reg-names = "mpu", "dma"; | 387 | reg-names = "mpu", "dma"; |
386 | interrupts = <0 23 0x4>; | 388 | interrupts = <0 23 0x4>; |
387 | interrupt-names = "common"; | 389 | interrupt-names = "common"; |
388 | interrupt-parent = <&gic>; | ||
389 | ti,buffer-size = <128>; | 390 | ti,buffer-size = <128>; |
390 | ti,hwmods = "mcbsp3"; | 391 | ti,hwmods = "mcbsp3"; |
391 | }; | 392 | }; |
@@ -396,7 +397,6 @@ | |||
396 | reg-names = "mpu"; | 397 | reg-names = "mpu"; |
397 | interrupts = <0 16 0x4>; | 398 | interrupts = <0 16 0x4>; |
398 | interrupt-names = "common"; | 399 | interrupt-names = "common"; |
399 | interrupt-parent = <&gic>; | ||
400 | ti,buffer-size = <128>; | 400 | ti,buffer-size = <128>; |
401 | ti,hwmods = "mcbsp4"; | 401 | ti,hwmods = "mcbsp4"; |
402 | }; | 402 | }; |
@@ -431,12 +431,103 @@ | |||
431 | hw-caps-temp-alert; | 431 | hw-caps-temp-alert; |
432 | }; | 432 | }; |
433 | 433 | ||
434 | ocp2scp { | 434 | ocp2scp@4a0ad000 { |
435 | compatible = "ti,omap-ocp2scp"; | 435 | compatible = "ti,omap-ocp2scp"; |
436 | reg = <0x4a0ad000 0x1f>; | ||
436 | #address-cells = <1>; | 437 | #address-cells = <1>; |
437 | #size-cells = <1>; | 438 | #size-cells = <1>; |
438 | ranges; | 439 | ranges; |
439 | ti,hwmods = "ocp2scp_usb_phy"; | 440 | ti,hwmods = "ocp2scp_usb_phy"; |
440 | }; | 441 | }; |
442 | |||
443 | timer1: timer@4a318000 { | ||
444 | compatible = "ti,omap2-timer"; | ||
445 | reg = <0x4a318000 0x80>; | ||
446 | interrupts = <0 37 0x4>; | ||
447 | ti,hwmods = "timer1"; | ||
448 | ti,timer-alwon; | ||
449 | }; | ||
450 | |||
451 | timer2: timer@48032000 { | ||
452 | compatible = "ti,omap2-timer"; | ||
453 | reg = <0x48032000 0x80>; | ||
454 | interrupts = <0 38 0x4>; | ||
455 | ti,hwmods = "timer2"; | ||
456 | }; | ||
457 | |||
458 | timer3: timer@48034000 { | ||
459 | compatible = "ti,omap2-timer"; | ||
460 | reg = <0x48034000 0x80>; | ||
461 | interrupts = <0 39 0x4>; | ||
462 | ti,hwmods = "timer3"; | ||
463 | }; | ||
464 | |||
465 | timer4: timer@48036000 { | ||
466 | compatible = "ti,omap2-timer"; | ||
467 | reg = <0x48036000 0x80>; | ||
468 | interrupts = <0 40 0x4>; | ||
469 | ti,hwmods = "timer4"; | ||
470 | }; | ||
471 | |||
472 | timer5: timer@40138000 { | ||
473 | compatible = "ti,omap2-timer"; | ||
474 | reg = <0x40138000 0x80>, | ||
475 | <0x49038000 0x80>; | ||
476 | interrupts = <0 41 0x4>; | ||
477 | ti,hwmods = "timer5"; | ||
478 | ti,timer-dsp; | ||
479 | }; | ||
480 | |||
481 | timer6: timer@4013a000 { | ||
482 | compatible = "ti,omap2-timer"; | ||
483 | reg = <0x4013a000 0x80>, | ||
484 | <0x4903a000 0x80>; | ||
485 | interrupts = <0 42 0x4>; | ||
486 | ti,hwmods = "timer6"; | ||
487 | ti,timer-dsp; | ||
488 | }; | ||
489 | |||
490 | timer7: timer@4013c000 { | ||
491 | compatible = "ti,omap2-timer"; | ||
492 | reg = <0x4013c000 0x80>, | ||
493 | <0x4903c000 0x80>; | ||
494 | interrupts = <0 43 0x4>; | ||
495 | ti,hwmods = "timer7"; | ||
496 | ti,timer-dsp; | ||
497 | }; | ||
498 | |||
499 | timer8: timer@4013e000 { | ||
500 | compatible = "ti,omap2-timer"; | ||
501 | reg = <0x4013e000 0x80>, | ||
502 | <0x4903e000 0x80>; | ||
503 | interrupts = <0 44 0x4>; | ||
504 | ti,hwmods = "timer8"; | ||
505 | ti,timer-pwm; | ||
506 | ti,timer-dsp; | ||
507 | }; | ||
508 | |||
509 | timer9: timer@4803e000 { | ||
510 | compatible = "ti,omap2-timer"; | ||
511 | reg = <0x4803e000 0x80>; | ||
512 | interrupts = <0 45 0x4>; | ||
513 | ti,hwmods = "timer9"; | ||
514 | ti,timer-pwm; | ||
515 | }; | ||
516 | |||
517 | timer10: timer@48086000 { | ||
518 | compatible = "ti,omap2-timer"; | ||
519 | reg = <0x48086000 0x80>; | ||
520 | interrupts = <0 46 0x4>; | ||
521 | ti,hwmods = "timer10"; | ||
522 | ti,timer-pwm; | ||
523 | }; | ||
524 | |||
525 | timer11: timer@48088000 { | ||
526 | compatible = "ti,omap2-timer"; | ||
527 | reg = <0x48088000 0x80>; | ||
528 | interrupts = <0 47 0x4>; | ||
529 | ti,hwmods = "timer11"; | ||
530 | ti,timer-pwm; | ||
531 | }; | ||
441 | }; | 532 | }; |
442 | }; | 533 | }; |
diff --git a/arch/arm/boot/dts/omap5-evm.dts b/arch/arm/boot/dts/omap5-evm.dts index c663eba73168..8722c15bbba2 100644 --- a/arch/arm/boot/dts/omap5-evm.dts +++ b/arch/arm/boot/dts/omap5-evm.dts | |||
@@ -8,6 +8,7 @@ | |||
8 | /dts-v1/; | 8 | /dts-v1/; |
9 | 9 | ||
10 | /include/ "omap5.dtsi" | 10 | /include/ "omap5.dtsi" |
11 | /include/ "samsung_k3pe0e000b.dtsi" | ||
11 | 12 | ||
12 | / { | 13 | / { |
13 | model = "TI OMAP5 EVM board"; | 14 | model = "TI OMAP5 EVM board"; |
@@ -15,7 +16,7 @@ | |||
15 | 16 | ||
16 | memory { | 17 | memory { |
17 | device_type = "memory"; | 18 | device_type = "memory"; |
18 | reg = <0x80000000 0x40000000>; /* 1 GB */ | 19 | reg = <0x80000000 0x80000000>; /* 2 GB */ |
19 | }; | 20 | }; |
20 | 21 | ||
21 | vmmcsd_fixed: fixedregulator-mmcsd { | 22 | vmmcsd_fixed: fixedregulator-mmcsd { |
@@ -140,3 +141,13 @@ | |||
140 | &mcbsp3 { | 141 | &mcbsp3 { |
141 | status = "disabled"; | 142 | status = "disabled"; |
142 | }; | 143 | }; |
144 | |||
145 | &emif1 { | ||
146 | cs1-used; | ||
147 | device-handle = <&samsung_K3PE0E000B>; | ||
148 | }; | ||
149 | |||
150 | &emif2 { | ||
151 | cs1-used; | ||
152 | device-handle = <&samsung_K3PE0E000B>; | ||
153 | }; | ||
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi index 42c78beb4fdc..790bb2a4b343 100644 --- a/arch/arm/boot/dts/omap5.dtsi +++ b/arch/arm/boot/dts/omap5.dtsi | |||
@@ -77,6 +77,12 @@ | |||
77 | ranges; | 77 | ranges; |
78 | ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; | 78 | ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; |
79 | 79 | ||
80 | counter32k: counter@4ae04000 { | ||
81 | compatible = "ti,omap-counter32k"; | ||
82 | reg = <0x4ae04000 0x40>; | ||
83 | ti,hwmods = "counter_32k"; | ||
84 | }; | ||
85 | |||
80 | omap5_pmx_core: pinmux@4a002840 { | 86 | omap5_pmx_core: pinmux@4a002840 { |
81 | compatible = "ti,omap4-padconf", "pinctrl-single"; | 87 | compatible = "ti,omap4-padconf", "pinctrl-single"; |
82 | reg = <0x4a002840 0x01b6>; | 88 | reg = <0x4a002840 0x01b6>; |
@@ -104,6 +110,8 @@ | |||
104 | 110 | ||
105 | gpio1: gpio@4ae10000 { | 111 | gpio1: gpio@4ae10000 { |
106 | compatible = "ti,omap4-gpio"; | 112 | compatible = "ti,omap4-gpio"; |
113 | reg = <0x4ae10000 0x200>; | ||
114 | interrupts = <0 29 0x4>; | ||
107 | ti,hwmods = "gpio1"; | 115 | ti,hwmods = "gpio1"; |
108 | gpio-controller; | 116 | gpio-controller; |
109 | #gpio-cells = <2>; | 117 | #gpio-cells = <2>; |
@@ -113,6 +121,8 @@ | |||
113 | 121 | ||
114 | gpio2: gpio@48055000 { | 122 | gpio2: gpio@48055000 { |
115 | compatible = "ti,omap4-gpio"; | 123 | compatible = "ti,omap4-gpio"; |
124 | reg = <0x48055000 0x200>; | ||
125 | interrupts = <0 30 0x4>; | ||
116 | ti,hwmods = "gpio2"; | 126 | ti,hwmods = "gpio2"; |
117 | gpio-controller; | 127 | gpio-controller; |
118 | #gpio-cells = <2>; | 128 | #gpio-cells = <2>; |
@@ -122,6 +132,8 @@ | |||
122 | 132 | ||
123 | gpio3: gpio@48057000 { | 133 | gpio3: gpio@48057000 { |
124 | compatible = "ti,omap4-gpio"; | 134 | compatible = "ti,omap4-gpio"; |
135 | reg = <0x48057000 0x200>; | ||
136 | interrupts = <0 31 0x4>; | ||
125 | ti,hwmods = "gpio3"; | 137 | ti,hwmods = "gpio3"; |
126 | gpio-controller; | 138 | gpio-controller; |
127 | #gpio-cells = <2>; | 139 | #gpio-cells = <2>; |
@@ -131,6 +143,8 @@ | |||
131 | 143 | ||
132 | gpio4: gpio@48059000 { | 144 | gpio4: gpio@48059000 { |
133 | compatible = "ti,omap4-gpio"; | 145 | compatible = "ti,omap4-gpio"; |
146 | reg = <0x48059000 0x200>; | ||
147 | interrupts = <0 32 0x4>; | ||
134 | ti,hwmods = "gpio4"; | 148 | ti,hwmods = "gpio4"; |
135 | gpio-controller; | 149 | gpio-controller; |
136 | #gpio-cells = <2>; | 150 | #gpio-cells = <2>; |
@@ -140,6 +154,8 @@ | |||
140 | 154 | ||
141 | gpio5: gpio@4805b000 { | 155 | gpio5: gpio@4805b000 { |
142 | compatible = "ti,omap4-gpio"; | 156 | compatible = "ti,omap4-gpio"; |
157 | reg = <0x4805b000 0x200>; | ||
158 | interrupts = <0 33 0x4>; | ||
143 | ti,hwmods = "gpio5"; | 159 | ti,hwmods = "gpio5"; |
144 | gpio-controller; | 160 | gpio-controller; |
145 | #gpio-cells = <2>; | 161 | #gpio-cells = <2>; |
@@ -149,6 +165,8 @@ | |||
149 | 165 | ||
150 | gpio6: gpio@4805d000 { | 166 | gpio6: gpio@4805d000 { |
151 | compatible = "ti,omap4-gpio"; | 167 | compatible = "ti,omap4-gpio"; |
168 | reg = <0x4805d000 0x200>; | ||
169 | interrupts = <0 34 0x4>; | ||
152 | ti,hwmods = "gpio6"; | 170 | ti,hwmods = "gpio6"; |
153 | gpio-controller; | 171 | gpio-controller; |
154 | #gpio-cells = <2>; | 172 | #gpio-cells = <2>; |
@@ -158,6 +176,8 @@ | |||
158 | 176 | ||
159 | gpio7: gpio@48051000 { | 177 | gpio7: gpio@48051000 { |
160 | compatible = "ti,omap4-gpio"; | 178 | compatible = "ti,omap4-gpio"; |
179 | reg = <0x48051000 0x200>; | ||
180 | interrupts = <0 35 0x4>; | ||
161 | ti,hwmods = "gpio7"; | 181 | ti,hwmods = "gpio7"; |
162 | gpio-controller; | 182 | gpio-controller; |
163 | #gpio-cells = <2>; | 183 | #gpio-cells = <2>; |
@@ -167,6 +187,8 @@ | |||
167 | 187 | ||
168 | gpio8: gpio@48053000 { | 188 | gpio8: gpio@48053000 { |
169 | compatible = "ti,omap4-gpio"; | 189 | compatible = "ti,omap4-gpio"; |
190 | reg = <0x48053000 0x200>; | ||
191 | interrupts = <0 121 0x4>; | ||
170 | ti,hwmods = "gpio8"; | 192 | ti,hwmods = "gpio8"; |
171 | gpio-controller; | 193 | gpio-controller; |
172 | #gpio-cells = <2>; | 194 | #gpio-cells = <2>; |
@@ -176,6 +198,8 @@ | |||
176 | 198 | ||
177 | i2c1: i2c@48070000 { | 199 | i2c1: i2c@48070000 { |
178 | compatible = "ti,omap4-i2c"; | 200 | compatible = "ti,omap4-i2c"; |
201 | reg = <0x48070000 0x100>; | ||
202 | interrupts = <0 56 0x4>; | ||
179 | #address-cells = <1>; | 203 | #address-cells = <1>; |
180 | #size-cells = <0>; | 204 | #size-cells = <0>; |
181 | ti,hwmods = "i2c1"; | 205 | ti,hwmods = "i2c1"; |
@@ -183,6 +207,8 @@ | |||
183 | 207 | ||
184 | i2c2: i2c@48072000 { | 208 | i2c2: i2c@48072000 { |
185 | compatible = "ti,omap4-i2c"; | 209 | compatible = "ti,omap4-i2c"; |
210 | reg = <0x48072000 0x100>; | ||
211 | interrupts = <0 57 0x4>; | ||
186 | #address-cells = <1>; | 212 | #address-cells = <1>; |
187 | #size-cells = <0>; | 213 | #size-cells = <0>; |
188 | ti,hwmods = "i2c2"; | 214 | ti,hwmods = "i2c2"; |
@@ -190,20 +216,26 @@ | |||
190 | 216 | ||
191 | i2c3: i2c@48060000 { | 217 | i2c3: i2c@48060000 { |
192 | compatible = "ti,omap4-i2c"; | 218 | compatible = "ti,omap4-i2c"; |
219 | reg = <0x48060000 0x100>; | ||
220 | interrupts = <0 61 0x4>; | ||
193 | #address-cells = <1>; | 221 | #address-cells = <1>; |
194 | #size-cells = <0>; | 222 | #size-cells = <0>; |
195 | ti,hwmods = "i2c3"; | 223 | ti,hwmods = "i2c3"; |
196 | }; | 224 | }; |
197 | 225 | ||
198 | i2c4: i2c@4807A000 { | 226 | i2c4: i2c@4807a000 { |
199 | compatible = "ti,omap4-i2c"; | 227 | compatible = "ti,omap4-i2c"; |
228 | reg = <0x4807a000 0x100>; | ||
229 | interrupts = <0 62 0x4>; | ||
200 | #address-cells = <1>; | 230 | #address-cells = <1>; |
201 | #size-cells = <0>; | 231 | #size-cells = <0>; |
202 | ti,hwmods = "i2c4"; | 232 | ti,hwmods = "i2c4"; |
203 | }; | 233 | }; |
204 | 234 | ||
205 | i2c5: i2c@4807C000 { | 235 | i2c5: i2c@4807c000 { |
206 | compatible = "ti,omap4-i2c"; | 236 | compatible = "ti,omap4-i2c"; |
237 | reg = <0x4807c000 0x100>; | ||
238 | interrupts = <0 60 0x4>; | ||
207 | #address-cells = <1>; | 239 | #address-cells = <1>; |
208 | #size-cells = <0>; | 240 | #size-cells = <0>; |
209 | ti,hwmods = "i2c5"; | 241 | ti,hwmods = "i2c5"; |
@@ -211,42 +243,56 @@ | |||
211 | 243 | ||
212 | uart1: serial@4806a000 { | 244 | uart1: serial@4806a000 { |
213 | compatible = "ti,omap4-uart"; | 245 | compatible = "ti,omap4-uart"; |
246 | reg = <0x4806a000 0x100>; | ||
247 | interrupts = <0 72 0x4>; | ||
214 | ti,hwmods = "uart1"; | 248 | ti,hwmods = "uart1"; |
215 | clock-frequency = <48000000>; | 249 | clock-frequency = <48000000>; |
216 | }; | 250 | }; |
217 | 251 | ||
218 | uart2: serial@4806c000 { | 252 | uart2: serial@4806c000 { |
219 | compatible = "ti,omap4-uart"; | 253 | compatible = "ti,omap4-uart"; |
254 | reg = <0x4806c000 0x100>; | ||
255 | interrupts = <0 73 0x4>; | ||
220 | ti,hwmods = "uart2"; | 256 | ti,hwmods = "uart2"; |
221 | clock-frequency = <48000000>; | 257 | clock-frequency = <48000000>; |
222 | }; | 258 | }; |
223 | 259 | ||
224 | uart3: serial@48020000 { | 260 | uart3: serial@48020000 { |
225 | compatible = "ti,omap4-uart"; | 261 | compatible = "ti,omap4-uart"; |
262 | reg = <0x48020000 0x100>; | ||
263 | interrupts = <0 74 0x4>; | ||
226 | ti,hwmods = "uart3"; | 264 | ti,hwmods = "uart3"; |
227 | clock-frequency = <48000000>; | 265 | clock-frequency = <48000000>; |
228 | }; | 266 | }; |
229 | 267 | ||
230 | uart4: serial@4806e000 { | 268 | uart4: serial@4806e000 { |
231 | compatible = "ti,omap4-uart"; | 269 | compatible = "ti,omap4-uart"; |
270 | reg = <0x4806e000 0x100>; | ||
271 | interrupts = <0 70 0x4>; | ||
232 | ti,hwmods = "uart4"; | 272 | ti,hwmods = "uart4"; |
233 | clock-frequency = <48000000>; | 273 | clock-frequency = <48000000>; |
234 | }; | 274 | }; |
235 | 275 | ||
236 | uart5: serial@48066000 { | 276 | uart5: serial@48066000 { |
237 | compatible = "ti,omap5-uart"; | 277 | compatible = "ti,omap4-uart"; |
278 | reg = <0x48066000 0x100>; | ||
279 | interrupts = <0 105 0x4>; | ||
238 | ti,hwmods = "uart5"; | 280 | ti,hwmods = "uart5"; |
239 | clock-frequency = <48000000>; | 281 | clock-frequency = <48000000>; |
240 | }; | 282 | }; |
241 | 283 | ||
242 | uart6: serial@48068000 { | 284 | uart6: serial@48068000 { |
243 | compatible = "ti,omap6-uart"; | 285 | compatible = "ti,omap4-uart"; |
286 | reg = <0x48068000 0x100>; | ||
287 | interrupts = <0 106 0x4>; | ||
244 | ti,hwmods = "uart6"; | 288 | ti,hwmods = "uart6"; |
245 | clock-frequency = <48000000>; | 289 | clock-frequency = <48000000>; |
246 | }; | 290 | }; |
247 | 291 | ||
248 | mmc1: mmc@4809c000 { | 292 | mmc1: mmc@4809c000 { |
249 | compatible = "ti,omap4-hsmmc"; | 293 | compatible = "ti,omap4-hsmmc"; |
294 | reg = <0x4809c000 0x400>; | ||
295 | interrupts = <0 83 0x4>; | ||
250 | ti,hwmods = "mmc1"; | 296 | ti,hwmods = "mmc1"; |
251 | ti,dual-volt; | 297 | ti,dual-volt; |
252 | ti,needs-special-reset; | 298 | ti,needs-special-reset; |
@@ -254,24 +300,32 @@ | |||
254 | 300 | ||
255 | mmc2: mmc@480b4000 { | 301 | mmc2: mmc@480b4000 { |
256 | compatible = "ti,omap4-hsmmc"; | 302 | compatible = "ti,omap4-hsmmc"; |
303 | reg = <0x480b4000 0x400>; | ||
304 | interrupts = <0 86 0x4>; | ||
257 | ti,hwmods = "mmc2"; | 305 | ti,hwmods = "mmc2"; |
258 | ti,needs-special-reset; | 306 | ti,needs-special-reset; |
259 | }; | 307 | }; |
260 | 308 | ||
261 | mmc3: mmc@480ad000 { | 309 | mmc3: mmc@480ad000 { |
262 | compatible = "ti,omap4-hsmmc"; | 310 | compatible = "ti,omap4-hsmmc"; |
311 | reg = <0x480ad000 0x400>; | ||
312 | interrupts = <0 94 0x4>; | ||
263 | ti,hwmods = "mmc3"; | 313 | ti,hwmods = "mmc3"; |
264 | ti,needs-special-reset; | 314 | ti,needs-special-reset; |
265 | }; | 315 | }; |
266 | 316 | ||
267 | mmc4: mmc@480d1000 { | 317 | mmc4: mmc@480d1000 { |
268 | compatible = "ti,omap4-hsmmc"; | 318 | compatible = "ti,omap4-hsmmc"; |
319 | reg = <0x480d1000 0x400>; | ||
320 | interrupts = <0 96 0x4>; | ||
269 | ti,hwmods = "mmc4"; | 321 | ti,hwmods = "mmc4"; |
270 | ti,needs-special-reset; | 322 | ti,needs-special-reset; |
271 | }; | 323 | }; |
272 | 324 | ||
273 | mmc5: mmc@480d5000 { | 325 | mmc5: mmc@480d5000 { |
274 | compatible = "ti,omap4-hsmmc"; | 326 | compatible = "ti,omap4-hsmmc"; |
327 | reg = <0x480d5000 0x400>; | ||
328 | interrupts = <0 59 0x4>; | ||
275 | ti,hwmods = "mmc5"; | 329 | ti,hwmods = "mmc5"; |
276 | ti,needs-special-reset; | 330 | ti,needs-special-reset; |
277 | }; | 331 | }; |
@@ -287,7 +341,6 @@ | |||
287 | <0x49032000 0x7f>; /* L3 Interconnect */ | 341 | <0x49032000 0x7f>; /* L3 Interconnect */ |
288 | reg-names = "mpu", "dma"; | 342 | reg-names = "mpu", "dma"; |
289 | interrupts = <0 112 0x4>; | 343 | interrupts = <0 112 0x4>; |
290 | interrupt-parent = <&gic>; | ||
291 | ti,hwmods = "mcpdm"; | 344 | ti,hwmods = "mcpdm"; |
292 | }; | 345 | }; |
293 | 346 | ||
@@ -297,7 +350,6 @@ | |||
297 | <0x4902e000 0x7f>; /* L3 Interconnect */ | 350 | <0x4902e000 0x7f>; /* L3 Interconnect */ |
298 | reg-names = "mpu", "dma"; | 351 | reg-names = "mpu", "dma"; |
299 | interrupts = <0 114 0x4>; | 352 | interrupts = <0 114 0x4>; |
300 | interrupt-parent = <&gic>; | ||
301 | ti,hwmods = "dmic"; | 353 | ti,hwmods = "dmic"; |
302 | }; | 354 | }; |
303 | 355 | ||
@@ -308,7 +360,6 @@ | |||
308 | reg-names = "mpu", "dma"; | 360 | reg-names = "mpu", "dma"; |
309 | interrupts = <0 17 0x4>; | 361 | interrupts = <0 17 0x4>; |
310 | interrupt-names = "common"; | 362 | interrupt-names = "common"; |
311 | interrupt-parent = <&gic>; | ||
312 | ti,buffer-size = <128>; | 363 | ti,buffer-size = <128>; |
313 | ti,hwmods = "mcbsp1"; | 364 | ti,hwmods = "mcbsp1"; |
314 | }; | 365 | }; |
@@ -320,7 +371,6 @@ | |||
320 | reg-names = "mpu", "dma"; | 371 | reg-names = "mpu", "dma"; |
321 | interrupts = <0 22 0x4>; | 372 | interrupts = <0 22 0x4>; |
322 | interrupt-names = "common"; | 373 | interrupt-names = "common"; |
323 | interrupt-parent = <&gic>; | ||
324 | ti,buffer-size = <128>; | 374 | ti,buffer-size = <128>; |
325 | ti,hwmods = "mcbsp2"; | 375 | ti,hwmods = "mcbsp2"; |
326 | }; | 376 | }; |
@@ -332,9 +382,119 @@ | |||
332 | reg-names = "mpu", "dma"; | 382 | reg-names = "mpu", "dma"; |
333 | interrupts = <0 23 0x4>; | 383 | interrupts = <0 23 0x4>; |
334 | interrupt-names = "common"; | 384 | interrupt-names = "common"; |
335 | interrupt-parent = <&gic>; | ||
336 | ti,buffer-size = <128>; | 385 | ti,buffer-size = <128>; |
337 | ti,hwmods = "mcbsp3"; | 386 | ti,hwmods = "mcbsp3"; |
338 | }; | 387 | }; |
388 | |||
389 | timer1: timer@4ae18000 { | ||
390 | compatible = "ti,omap2-timer"; | ||
391 | reg = <0x4ae18000 0x80>; | ||
392 | interrupts = <0 37 0x4>; | ||
393 | ti,hwmods = "timer1"; | ||
394 | ti,timer-alwon; | ||
395 | }; | ||
396 | |||
397 | timer2: timer@48032000 { | ||
398 | compatible = "ti,omap2-timer"; | ||
399 | reg = <0x48032000 0x80>; | ||
400 | interrupts = <0 38 0x4>; | ||
401 | ti,hwmods = "timer2"; | ||
402 | }; | ||
403 | |||
404 | timer3: timer@48034000 { | ||
405 | compatible = "ti,omap2-timer"; | ||
406 | reg = <0x48034000 0x80>; | ||
407 | interrupts = <0 39 0x4>; | ||
408 | ti,hwmods = "timer3"; | ||
409 | }; | ||
410 | |||
411 | timer4: timer@48036000 { | ||
412 | compatible = "ti,omap2-timer"; | ||
413 | reg = <0x48036000 0x80>; | ||
414 | interrupts = <0 40 0x4>; | ||
415 | ti,hwmods = "timer4"; | ||
416 | }; | ||
417 | |||
418 | timer5: timer@40138000 { | ||
419 | compatible = "ti,omap2-timer"; | ||
420 | reg = <0x40138000 0x80>, | ||
421 | <0x49038000 0x80>; | ||
422 | interrupts = <0 41 0x4>; | ||
423 | ti,hwmods = "timer5"; | ||
424 | ti,timer-dsp; | ||
425 | }; | ||
426 | |||
427 | timer6: timer@4013a000 { | ||
428 | compatible = "ti,omap2-timer"; | ||
429 | reg = <0x4013a000 0x80>, | ||
430 | <0x4903a000 0x80>; | ||
431 | interrupts = <0 42 0x4>; | ||
432 | ti,hwmods = "timer6"; | ||
433 | ti,timer-dsp; | ||
434 | ti,timer-pwm; | ||
435 | }; | ||
436 | |||
437 | timer7: timer@4013c000 { | ||
438 | compatible = "ti,omap2-timer"; | ||
439 | reg = <0x4013c000 0x80>, | ||
440 | <0x4903c000 0x80>; | ||
441 | interrupts = <0 43 0x4>; | ||
442 | ti,hwmods = "timer7"; | ||
443 | ti,timer-dsp; | ||
444 | }; | ||
445 | |||
446 | timer8: timer@4013e000 { | ||
447 | compatible = "ti,omap2-timer"; | ||
448 | reg = <0x4013e000 0x80>, | ||
449 | <0x4903e000 0x80>; | ||
450 | interrupts = <0 44 0x4>; | ||
451 | ti,hwmods = "timer8"; | ||
452 | ti,timer-dsp; | ||
453 | ti,timer-pwm; | ||
454 | }; | ||
455 | |||
456 | timer9: timer@4803e000 { | ||
457 | compatible = "ti,omap2-timer"; | ||
458 | reg = <0x4803e000 0x80>; | ||
459 | interrupts = <0 45 0x4>; | ||
460 | ti,hwmods = "timer9"; | ||
461 | }; | ||
462 | |||
463 | timer10: timer@48086000 { | ||
464 | compatible = "ti,omap2-timer"; | ||
465 | reg = <0x48086000 0x80>; | ||
466 | interrupts = <0 46 0x4>; | ||
467 | ti,hwmods = "timer10"; | ||
468 | }; | ||
469 | |||
470 | timer11: timer@48088000 { | ||
471 | compatible = "ti,omap2-timer"; | ||
472 | reg = <0x48088000 0x80>; | ||
473 | interrupts = <0 47 0x4>; | ||
474 | ti,hwmods = "timer11"; | ||
475 | ti,timer-pwm; | ||
476 | }; | ||
477 | |||
478 | emif1: emif@0x4c000000 { | ||
479 | compatible = "ti,emif-4d5"; | ||
480 | ti,hwmods = "emif1"; | ||
481 | phy-type = <2>; /* DDR PHY type: Intelli PHY */ | ||
482 | reg = <0x4c000000 0x400>; | ||
483 | interrupts = <0 110 0x4>; | ||
484 | hw-caps-read-idle-ctrl; | ||
485 | hw-caps-ll-interface; | ||
486 | hw-caps-temp-alert; | ||
487 | }; | ||
488 | |||
489 | emif2: emif@0x4d000000 { | ||
490 | compatible = "ti,emif-4d5"; | ||
491 | ti,hwmods = "emif2"; | ||
492 | phy-type = <2>; /* DDR PHY type: Intelli PHY */ | ||
493 | reg = <0x4d000000 0x400>; | ||
494 | interrupts = <0 111 0x4>; | ||
495 | hw-caps-read-idle-ctrl; | ||
496 | hw-caps-ll-interface; | ||
497 | hw-caps-temp-alert; | ||
498 | }; | ||
339 | }; | 499 | }; |
340 | }; | 500 | }; |
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts new file mode 100644 index 000000000000..5a3a58b7e18f --- /dev/null +++ b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | /dts-v1/; | ||
10 | /include/ "orion5x.dtsi" | ||
11 | |||
12 | / { | ||
13 | model = "LaCie Ethernet Disk mini V2"; | ||
14 | compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x"; | ||
15 | |||
16 | memory { | ||
17 | reg = <0x00000000 0x4000000>; /* 64 MB */ | ||
18 | }; | ||
19 | |||
20 | chosen { | ||
21 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
22 | }; | ||
23 | |||
24 | ocp@f1000000 { | ||
25 | serial@12000 { | ||
26 | clock-frequency = <166666667>; | ||
27 | status = "okay"; | ||
28 | }; | ||
29 | |||
30 | sata@80000 { | ||
31 | status = "okay"; | ||
32 | nr-ports = <2>; | ||
33 | }; | ||
34 | }; | ||
35 | |||
36 | gpio_keys { | ||
37 | compatible = "gpio-keys"; | ||
38 | #address-cells = <1>; | ||
39 | #size-cells = <0>; | ||
40 | button@1 { | ||
41 | label = "Power-on Switch"; | ||
42 | linux,code = <116>; /* KEY_POWER */ | ||
43 | gpios = <&gpio0 18 0>; | ||
44 | }; | ||
45 | }; | ||
46 | |||
47 | gpio_leds { | ||
48 | compatible = "gpio-leds"; | ||
49 | |||
50 | led@1 { | ||
51 | label = "power:blue"; | ||
52 | gpios = <&gpio0 16 1>; | ||
53 | }; | ||
54 | }; | ||
55 | }; | ||
diff --git a/arch/arm/boot/dts/orion5x.dtsi b/arch/arm/boot/dts/orion5x.dtsi new file mode 100644 index 000000000000..8aad00f81ed9 --- /dev/null +++ b/arch/arm/boot/dts/orion5x.dtsi | |||
@@ -0,0 +1,98 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | /include/ "skeleton.dtsi" | ||
10 | |||
11 | / { | ||
12 | model = "Marvell Orion5x SoC"; | ||
13 | compatible = "marvell,orion5x"; | ||
14 | interrupt-parent = <&intc>; | ||
15 | |||
16 | intc: interrupt-controller { | ||
17 | compatible = "marvell,orion-intc", "marvell,intc"; | ||
18 | interrupt-controller; | ||
19 | #interrupt-cells = <1>; | ||
20 | reg = <0xf1020204 0x04>; | ||
21 | }; | ||
22 | |||
23 | ocp@f1000000 { | ||
24 | compatible = "simple-bus"; | ||
25 | ranges = <0x00000000 0xf1000000 0x4000000 | ||
26 | 0xf2200000 0xf2200000 0x0000800>; | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <1>; | ||
29 | |||
30 | gpio0: gpio@10100 { | ||
31 | compatible = "marvell,orion-gpio"; | ||
32 | #gpio-cells = <2>; | ||
33 | gpio-controller; | ||
34 | reg = <0x10100 0x40>; | ||
35 | ngpio = <32>; | ||
36 | interrupts = <6>, <7>, <8>, <9>; | ||
37 | }; | ||
38 | |||
39 | serial@12000 { | ||
40 | compatible = "ns16550a"; | ||
41 | reg = <0x12000 0x100>; | ||
42 | reg-shift = <2>; | ||
43 | interrupts = <3>; | ||
44 | /* set clock-frequency in board dts */ | ||
45 | status = "disabled"; | ||
46 | }; | ||
47 | |||
48 | serial@12100 { | ||
49 | compatible = "ns16550a"; | ||
50 | reg = <0x12100 0x100>; | ||
51 | reg-shift = <2>; | ||
52 | interrupts = <4>; | ||
53 | /* set clock-frequency in board dts */ | ||
54 | status = "disabled"; | ||
55 | }; | ||
56 | |||
57 | spi@10600 { | ||
58 | compatible = "marvell,orion-spi"; | ||
59 | #address-cells = <1>; | ||
60 | #size-cells = <0>; | ||
61 | cell-index = <0>; | ||
62 | reg = <0x10600 0x28>; | ||
63 | status = "disabled"; | ||
64 | }; | ||
65 | |||
66 | wdt@20300 { | ||
67 | compatible = "marvell,orion-wdt"; | ||
68 | reg = <0x20300 0x28>; | ||
69 | status = "okay"; | ||
70 | }; | ||
71 | |||
72 | sata@80000 { | ||
73 | compatible = "marvell,orion-sata"; | ||
74 | reg = <0x80000 0x5000>; | ||
75 | interrupts = <29>; | ||
76 | status = "disabled"; | ||
77 | }; | ||
78 | |||
79 | i2c@11000 { | ||
80 | compatible = "marvell,mv64xxx-i2c"; | ||
81 | reg = <0x11000 0x20>; | ||
82 | #address-cells = <1>; | ||
83 | #size-cells = <0>; | ||
84 | interrupts = <5>; | ||
85 | clock-frequency = <100000>; | ||
86 | status = "disabled"; | ||
87 | }; | ||
88 | |||
89 | crypto@90000 { | ||
90 | compatible = "marvell,orion-crypto"; | ||
91 | reg = <0x90000 0x10000>, | ||
92 | <0xf2200000 0x800>; | ||
93 | reg-names = "regs", "sram"; | ||
94 | interrupts = <22>; | ||
95 | status = "okay"; | ||
96 | }; | ||
97 | }; | ||
98 | }; | ||
diff --git a/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi b/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi new file mode 100644 index 000000000000..9657a5cbc3ad --- /dev/null +++ b/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * Timings and Geometry for Samsung K3PE0E000B memory part | ||
3 | */ | ||
4 | |||
5 | / { | ||
6 | samsung_K3PE0E000B: lpddr2 { | ||
7 | compatible = "Samsung,K3PE0E000B","jedec,lpddr2-s4"; | ||
8 | density = <4096>; | ||
9 | io-width = <32>; | ||
10 | |||
11 | tRPab-min-tck = <3>; | ||
12 | tRCD-min-tck = <3>; | ||
13 | tWR-min-tck = <3>; | ||
14 | tRASmin-min-tck = <3>; | ||
15 | tRRD-min-tck = <2>; | ||
16 | tWTR-min-tck = <2>; | ||
17 | tXP-min-tck = <2>; | ||
18 | tRTP-min-tck = <2>; | ||
19 | tCKE-min-tck = <3>; | ||
20 | tCKESR-min-tck = <3>; | ||
21 | tFAW-min-tck = <8>; | ||
22 | |||
23 | timings_samsung_K3PE0E000B_533MHz: lpddr2-timings@0 { | ||
24 | compatible = "jedec,lpddr2-timings"; | ||
25 | min-freq = <10000000>; | ||
26 | max-freq = <533333333>; | ||
27 | tRPab = <21000>; | ||
28 | tRCD = <18000>; | ||
29 | tWR = <15000>; | ||
30 | tRAS-min = <42000>; | ||
31 | tRRD = <10000>; | ||
32 | tWTR = <7500>; | ||
33 | tXP = <7500>; | ||
34 | tRTP = <7500>; | ||
35 | tCKESR = <15000>; | ||
36 | tDQSCK-max = <5500>; | ||
37 | tFAW = <50000>; | ||
38 | tZQCS = <90000>; | ||
39 | tZQCL = <360000>; | ||
40 | tZQinit = <1000000>; | ||
41 | tRAS-max-ns = <70000>; | ||
42 | tDQSCK-max-derated = <6000>; | ||
43 | }; | ||
44 | |||
45 | timings_samsung_K3PE0E000B_266MHz: lpddr2-timings@1 { | ||
46 | compatible = "jedec,lpddr2-timings"; | ||
47 | min-freq = <10000000>; | ||
48 | max-freq = <266666666>; | ||
49 | tRPab = <21000>; | ||
50 | tRCD = <18000>; | ||
51 | tWR = <15000>; | ||
52 | tRAS-min = <42000>; | ||
53 | tRRD = <10000>; | ||
54 | tWTR = <7500>; | ||
55 | tXP = <7500>; | ||
56 | tRTP = <7500>; | ||
57 | tCKESR = <15000>; | ||
58 | tDQSCK-max = <5500>; | ||
59 | tFAW = <50000>; | ||
60 | tZQCS = <90000>; | ||
61 | tZQCL = <360000>; | ||
62 | tZQinit = <1000000>; | ||
63 | tRAS-max-ns = <70000>; | ||
64 | tDQSCK-max-derated = <6000>; | ||
65 | }; | ||
66 | }; | ||
67 | }; | ||
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts index 702c0baa6004..9e02a913eb62 100644 --- a/arch/arm/boot/dts/snowball.dts +++ b/arch/arm/boot/dts/snowball.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "Calao Systems Snowball platform with device tree"; | 16 | model = "Calao Systems Snowball platform with device tree"; |
17 | compatible = "calaosystems,snowball-a9500"; | 17 | compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500"; |
18 | 18 | ||
19 | memory { | 19 | memory { |
20 | reg = <0x00000000 0x20000000>; | 20 | reg = <0x00000000 0x20000000>; |
@@ -120,10 +120,10 @@ | |||
120 | }; | 120 | }; |
121 | 121 | ||
122 | // External Micro SD slot | 122 | // External Micro SD slot |
123 | sdi@80126000 { | 123 | sdi0_per1@80126000 { |
124 | arm,primecell-periphid = <0x10480180>; | 124 | arm,primecell-periphid = <0x10480180>; |
125 | max-frequency = <50000000>; | 125 | max-frequency = <50000000>; |
126 | bus-width = <8>; | 126 | bus-width = <4>; |
127 | mmc-cap-mmc-highspeed; | 127 | mmc-cap-mmc-highspeed; |
128 | vmmc-supply = <&ab8500_ldo_aux3_reg>; | 128 | vmmc-supply = <&ab8500_ldo_aux3_reg>; |
129 | 129 | ||
@@ -134,7 +134,7 @@ | |||
134 | }; | 134 | }; |
135 | 135 | ||
136 | // On-board eMMC | 136 | // On-board eMMC |
137 | sdi@80114000 { | 137 | sdi4_per2@80114000 { |
138 | arm,primecell-periphid = <0x10480180>; | 138 | arm,primecell-periphid = <0x10480180>; |
139 | max-frequency = <50000000>; | 139 | max-frequency = <50000000>; |
140 | bus-width = <8>; | 140 | bus-width = <8>; |
@@ -183,5 +183,137 @@ | |||
183 | reg = <0x33>; | 183 | reg = <0x33>; |
184 | }; | 184 | }; |
185 | }; | 185 | }; |
186 | |||
187 | prcmu@80157000 { | ||
188 | db8500-prcmu-regulators { | ||
189 | db8500_vape_reg: db8500_vape { | ||
190 | regulator-name = "db8500-vape"; | ||
191 | }; | ||
192 | |||
193 | db8500_varm_reg: db8500_varm { | ||
194 | regulator-name = "db8500-varm"; | ||
195 | }; | ||
196 | |||
197 | db8500_vmodem_reg: db8500_vmodem { | ||
198 | regulator-name = "db8500-vmodem"; | ||
199 | }; | ||
200 | |||
201 | db8500_vpll_reg: db8500_vpll { | ||
202 | regulator-name = "db8500-vpll"; | ||
203 | }; | ||
204 | |||
205 | db8500_vsmps1_reg: db8500_vsmps1 { | ||
206 | regulator-name = "db8500-vsmps1"; | ||
207 | }; | ||
208 | |||
209 | db8500_vsmps2_reg: db8500_vsmps2 { | ||
210 | regulator-name = "db8500-vsmps2"; | ||
211 | }; | ||
212 | |||
213 | db8500_vsmps3_reg: db8500_vsmps3 { | ||
214 | regulator-name = "db8500-vsmps3"; | ||
215 | }; | ||
216 | |||
217 | db8500_vrf1_reg: db8500_vrf1 { | ||
218 | regulator-name = "db8500-vrf1"; | ||
219 | }; | ||
220 | |||
221 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { | ||
222 | regulator-name = "db8500-sva-mmdsp"; | ||
223 | }; | ||
224 | |||
225 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { | ||
226 | regulator-name = "db8500-sva-mmdsp-ret"; | ||
227 | }; | ||
228 | |||
229 | db8500_sva_pipe_reg: db8500_sva_pipe { | ||
230 | regulator-name = "db8500_sva_pipe"; | ||
231 | }; | ||
232 | |||
233 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { | ||
234 | regulator-name = "db8500_sia_mmdsp"; | ||
235 | }; | ||
236 | |||
237 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { | ||
238 | regulator-name = "db8500-sia-mmdsp-ret"; | ||
239 | }; | ||
240 | |||
241 | db8500_sia_pipe_reg: db8500_sia_pipe { | ||
242 | regulator-name = "db8500-sia-pipe"; | ||
243 | }; | ||
244 | |||
245 | db8500_sga_reg: db8500_sga { | ||
246 | regulator-name = "db8500-sga"; | ||
247 | }; | ||
248 | |||
249 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { | ||
250 | regulator-name = "db8500-b2r2-mcde"; | ||
251 | }; | ||
252 | |||
253 | db8500_esram12_reg: db8500_esram12 { | ||
254 | regulator-name = "db8500-esram12"; | ||
255 | }; | ||
256 | |||
257 | db8500_esram12_ret_reg: db8500_esram12_ret { | ||
258 | regulator-name = "db8500-esram12-ret"; | ||
259 | }; | ||
260 | |||
261 | db8500_esram34_reg: db8500_esram34 { | ||
262 | regulator-name = "db8500-esram34"; | ||
263 | }; | ||
264 | |||
265 | db8500_esram34_ret_reg: db8500_esram34_ret { | ||
266 | regulator-name = "db8500-esram34-ret"; | ||
267 | }; | ||
268 | }; | ||
269 | |||
270 | ab8500@5 { | ||
271 | ab8500-regulators { | ||
272 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | ||
273 | regulator-name = "V-DISPLAY"; | ||
274 | }; | ||
275 | |||
276 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { | ||
277 | regulator-name = "V-eMMC1"; | ||
278 | }; | ||
279 | |||
280 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { | ||
281 | regulator-name = "V-MMC-SD"; | ||
282 | }; | ||
283 | |||
284 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { | ||
285 | regulator-name = "V-INTCORE"; | ||
286 | }; | ||
287 | |||
288 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { | ||
289 | regulator-name = "V-TVOUT"; | ||
290 | }; | ||
291 | |||
292 | ab8500_ldo_usb_reg: ab8500_ldo_usb { | ||
293 | regulator-name = "dummy"; | ||
294 | }; | ||
295 | |||
296 | ab8500_ldo_audio_reg: ab8500_ldo_audio { | ||
297 | regulator-name = "V-AUD"; | ||
298 | }; | ||
299 | |||
300 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { | ||
301 | regulator-name = "V-AMIC1"; | ||
302 | }; | ||
303 | |||
304 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { | ||
305 | regulator-name = "V-AMIC2"; | ||
306 | }; | ||
307 | |||
308 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { | ||
309 | regulator-name = "V-DMIC"; | ||
310 | }; | ||
311 | |||
312 | ab8500_ldo_ana_reg: ab8500_ldo_ana { | ||
313 | regulator-name = "V-CSI/DSI"; | ||
314 | }; | ||
315 | }; | ||
316 | }; | ||
317 | }; | ||
186 | }; | 318 | }; |
187 | }; | 319 | }; |
diff --git a/arch/arm/boot/dts/stuib.dtsi b/arch/arm/boot/dts/stuib.dtsi new file mode 100644 index 000000000000..39446a247e79 --- /dev/null +++ b/arch/arm/boot/dts/stuib.dtsi | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | * Copyright 2012 ST-Ericsson AB | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | soc-u9500 { | ||
14 | i2c@80004000 { | ||
15 | stmpe1601: stmpe1601@40 { | ||
16 | compatible = "st,stmpe1601"; | ||
17 | reg = <0x40>; | ||
18 | interrupts = <26 0x1>; | ||
19 | interrupt-parent = <&gpio6>; | ||
20 | interrupt-controller; | ||
21 | |||
22 | wakeup-source; | ||
23 | st,autosleep-timeout = <1024>; | ||
24 | |||
25 | stmpe_keypad { | ||
26 | compatible = "st,stmpe-keypad"; | ||
27 | |||
28 | debounce-interval = <64>; | ||
29 | st,scan-count = <8>; | ||
30 | st,no-autorepeat; | ||
31 | |||
32 | linux,keymap = <0x205006b | ||
33 | 0x4010074 | ||
34 | 0x3050072 | ||
35 | 0x1030004 | ||
36 | 0x502006a | ||
37 | 0x500000a | ||
38 | 0x5008b | ||
39 | 0x706001c | ||
40 | 0x405000b | ||
41 | 0x6070003 | ||
42 | 0x3040067 | ||
43 | 0x303006c | ||
44 | 0x60400e7 | ||
45 | 0x602009e | ||
46 | 0x4020073 | ||
47 | 0x5050002 | ||
48 | 0x4030069 | ||
49 | 0x3020008>; | ||
50 | }; | ||
51 | }; | ||
52 | }; | ||
53 | |||
54 | i2c@80110000 { | ||
55 | bu21013_tp@0x5c { | ||
56 | compatible = "rhom,bu21013_tp"; | ||
57 | reg = <0x5c>; | ||
58 | touch-gpio = <&gpio2 20 0x4>; | ||
59 | avdd-supply = <&ab8500_ldo_aux1_reg>; | ||
60 | |||
61 | rhom,touch-max-x = <384>; | ||
62 | rhom,touch-max-y = <704>; | ||
63 | rhom,flip-y; | ||
64 | }; | ||
65 | |||
66 | bu21013_tp@0x5d { | ||
67 | compatible = "rhom,bu21013_tp"; | ||
68 | reg = <0x5d>; | ||
69 | touch-gpio = <&gpio2 20 0x4>; | ||
70 | avdd-supply = <&ab8500_ldo_aux1_reg>; | ||
71 | |||
72 | rhom,touch-max-x = <384>; | ||
73 | rhom,touch-max-y = <704>; | ||
74 | rhom,flip-y; | ||
75 | }; | ||
76 | }; | ||
77 | }; | ||
78 | }; | ||
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts index c3ef1ad26b6a..43eb72af8948 100644 --- a/arch/arm/boot/dts/tegra20-harmony.dts +++ b/arch/arm/boot/dts/tegra20-harmony.dts | |||
@@ -10,6 +10,18 @@ | |||
10 | reg = <0x00000000 0x40000000>; | 10 | reg = <0x00000000 0x40000000>; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | host1x { | ||
14 | hdmi { | ||
15 | status = "okay"; | ||
16 | |||
17 | vdd-supply = <&hdmi_vdd_reg>; | ||
18 | pll-supply = <&hdmi_pll_reg>; | ||
19 | |||
20 | nvidia,ddc-i2c-bus = <&hdmi_ddc>; | ||
21 | nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ | ||
22 | }; | ||
23 | }; | ||
24 | |||
13 | pinmux { | 25 | pinmux { |
14 | pinctrl-names = "default"; | 26 | pinctrl-names = "default"; |
15 | pinctrl-0 = <&state_default>; | 27 | pinctrl-0 = <&state_default>; |
@@ -262,9 +274,9 @@ | |||
262 | }; | 274 | }; |
263 | }; | 275 | }; |
264 | 276 | ||
265 | i2c@7000c400 { | 277 | hdmi_ddc: i2c@7000c400 { |
266 | status = "okay"; | 278 | status = "okay"; |
267 | clock-frequency = <400000>; | 279 | clock-frequency = <100000>; |
268 | }; | 280 | }; |
269 | 281 | ||
270 | i2c@7000c500 { | 282 | i2c@7000c500 { |
@@ -297,131 +309,98 @@ | |||
297 | vinldo9-supply = <&sm2_reg>; | 309 | vinldo9-supply = <&sm2_reg>; |
298 | 310 | ||
299 | regulators { | 311 | regulators { |
300 | #address-cells = <1>; | 312 | sys_reg: sys { |
301 | #size-cells = <0>; | ||
302 | |||
303 | sys_reg: regulator@0 { | ||
304 | reg = <0>; | ||
305 | regulator-compatible = "sys"; | ||
306 | regulator-name = "vdd_sys"; | 313 | regulator-name = "vdd_sys"; |
307 | regulator-always-on; | 314 | regulator-always-on; |
308 | }; | 315 | }; |
309 | 316 | ||
310 | regulator@1 { | 317 | sm0 { |
311 | reg = <1>; | ||
312 | regulator-compatible = "sm0"; | ||
313 | regulator-name = "vdd_sm0,vdd_core"; | 318 | regulator-name = "vdd_sm0,vdd_core"; |
314 | regulator-min-microvolt = <1200000>; | 319 | regulator-min-microvolt = <1200000>; |
315 | regulator-max-microvolt = <1200000>; | 320 | regulator-max-microvolt = <1200000>; |
316 | regulator-always-on; | 321 | regulator-always-on; |
317 | }; | 322 | }; |
318 | 323 | ||
319 | regulator@2 { | 324 | sm1 { |
320 | reg = <2>; | ||
321 | regulator-compatible = "sm1"; | ||
322 | regulator-name = "vdd_sm1,vdd_cpu"; | 325 | regulator-name = "vdd_sm1,vdd_cpu"; |
323 | regulator-min-microvolt = <1000000>; | 326 | regulator-min-microvolt = <1000000>; |
324 | regulator-max-microvolt = <1000000>; | 327 | regulator-max-microvolt = <1000000>; |
325 | regulator-always-on; | 328 | regulator-always-on; |
326 | }; | 329 | }; |
327 | 330 | ||
328 | sm2_reg: regulator@3 { | 331 | sm2_reg: sm2 { |
329 | reg = <3>; | ||
330 | regulator-compatible = "sm2"; | ||
331 | regulator-name = "vdd_sm2,vin_ldo*"; | 332 | regulator-name = "vdd_sm2,vin_ldo*"; |
332 | regulator-min-microvolt = <3700000>; | 333 | regulator-min-microvolt = <3700000>; |
333 | regulator-max-microvolt = <3700000>; | 334 | regulator-max-microvolt = <3700000>; |
334 | regulator-always-on; | 335 | regulator-always-on; |
335 | }; | 336 | }; |
336 | 337 | ||
337 | regulator@4 { | 338 | ldo0 { |
338 | reg = <4>; | ||
339 | regulator-compatible = "ldo0"; | ||
340 | regulator-name = "vdd_ldo0,vddio_pex_clk"; | 339 | regulator-name = "vdd_ldo0,vddio_pex_clk"; |
341 | regulator-min-microvolt = <3300000>; | 340 | regulator-min-microvolt = <3300000>; |
342 | regulator-max-microvolt = <3300000>; | 341 | regulator-max-microvolt = <3300000>; |
343 | }; | 342 | }; |
344 | 343 | ||
345 | regulator@5 { | 344 | ldo1 { |
346 | reg = <5>; | ||
347 | regulator-compatible = "ldo1"; | ||
348 | regulator-name = "vdd_ldo1,avdd_pll*"; | 345 | regulator-name = "vdd_ldo1,avdd_pll*"; |
349 | regulator-min-microvolt = <1100000>; | 346 | regulator-min-microvolt = <1100000>; |
350 | regulator-max-microvolt = <1100000>; | 347 | regulator-max-microvolt = <1100000>; |
351 | regulator-always-on; | 348 | regulator-always-on; |
352 | }; | 349 | }; |
353 | 350 | ||
354 | regulator@6 { | 351 | ldo2 { |
355 | reg = <6>; | ||
356 | regulator-compatible = "ldo2"; | ||
357 | regulator-name = "vdd_ldo2,vdd_rtc"; | 352 | regulator-name = "vdd_ldo2,vdd_rtc"; |
358 | regulator-min-microvolt = <1200000>; | 353 | regulator-min-microvolt = <1200000>; |
359 | regulator-max-microvolt = <1200000>; | 354 | regulator-max-microvolt = <1200000>; |
360 | }; | 355 | }; |
361 | 356 | ||
362 | regulator@7 { | 357 | ldo3 { |
363 | reg = <7>; | ||
364 | regulator-compatible = "ldo3"; | ||
365 | regulator-name = "vdd_ldo3,avdd_usb*"; | 358 | regulator-name = "vdd_ldo3,avdd_usb*"; |
366 | regulator-min-microvolt = <3300000>; | 359 | regulator-min-microvolt = <3300000>; |
367 | regulator-max-microvolt = <3300000>; | 360 | regulator-max-microvolt = <3300000>; |
368 | regulator-always-on; | 361 | regulator-always-on; |
369 | }; | 362 | }; |
370 | 363 | ||
371 | regulator@8 { | 364 | ldo4 { |
372 | reg = <8>; | ||
373 | regulator-compatible = "ldo4"; | ||
374 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; | 365 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; |
375 | regulator-min-microvolt = <1800000>; | 366 | regulator-min-microvolt = <1800000>; |
376 | regulator-max-microvolt = <1800000>; | 367 | regulator-max-microvolt = <1800000>; |
377 | regulator-always-on; | 368 | regulator-always-on; |
378 | }; | 369 | }; |
379 | 370 | ||
380 | regulator@9 { | 371 | ldo5 { |
381 | reg = <9>; | ||
382 | regulator-compatible = "ldo5"; | ||
383 | regulator-name = "vdd_ldo5,vcore_mmc"; | 372 | regulator-name = "vdd_ldo5,vcore_mmc"; |
384 | regulator-min-microvolt = <2850000>; | 373 | regulator-min-microvolt = <2850000>; |
385 | regulator-max-microvolt = <2850000>; | 374 | regulator-max-microvolt = <2850000>; |
386 | regulator-always-on; | 375 | regulator-always-on; |
387 | }; | 376 | }; |
388 | 377 | ||
389 | regulator@10 { | 378 | ldo6 { |
390 | reg = <10>; | ||
391 | regulator-compatible = "ldo6"; | ||
392 | regulator-name = "vdd_ldo6,avdd_vdac"; | 379 | regulator-name = "vdd_ldo6,avdd_vdac"; |
393 | regulator-min-microvolt = <1800000>; | 380 | regulator-min-microvolt = <1800000>; |
394 | regulator-max-microvolt = <1800000>; | 381 | regulator-max-microvolt = <1800000>; |
395 | }; | 382 | }; |
396 | 383 | ||
397 | regulator@11 { | 384 | hdmi_vdd_reg: ldo7 { |
398 | reg = <11>; | ||
399 | regulator-compatible = "ldo7"; | ||
400 | regulator-name = "vdd_ldo7,avdd_hdmi"; | 385 | regulator-name = "vdd_ldo7,avdd_hdmi"; |
401 | regulator-min-microvolt = <3300000>; | 386 | regulator-min-microvolt = <3300000>; |
402 | regulator-max-microvolt = <3300000>; | 387 | regulator-max-microvolt = <3300000>; |
403 | }; | 388 | }; |
404 | 389 | ||
405 | regulator@12 { | 390 | hdmi_pll_reg: ldo8 { |
406 | reg = <12>; | ||
407 | regulator-compatible = "ldo8"; | ||
408 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; | 391 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; |
409 | regulator-min-microvolt = <1800000>; | 392 | regulator-min-microvolt = <1800000>; |
410 | regulator-max-microvolt = <1800000>; | 393 | regulator-max-microvolt = <1800000>; |
411 | }; | 394 | }; |
412 | 395 | ||
413 | regulator@13 { | 396 | ldo9 { |
414 | reg = <13>; | ||
415 | regulator-compatible = "ldo9"; | ||
416 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; | 397 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; |
417 | regulator-min-microvolt = <2850000>; | 398 | regulator-min-microvolt = <2850000>; |
418 | regulator-max-microvolt = <2850000>; | 399 | regulator-max-microvolt = <2850000>; |
419 | regulator-always-on; | 400 | regulator-always-on; |
420 | }; | 401 | }; |
421 | 402 | ||
422 | regulator@14 { | 403 | ldo_rtc { |
423 | reg = <14>; | ||
424 | regulator-compatible = "ldo_rtc"; | ||
425 | regulator-name = "vdd_rtc_out,vdd_cell"; | 404 | regulator-name = "vdd_rtc_out,vdd_cell"; |
426 | regulator-min-microvolt = <3300000>; | 405 | regulator-min-microvolt = <3300000>; |
427 | regulator-max-microvolt = <3300000>; | 406 | regulator-max-microvolt = <3300000>; |
@@ -429,6 +408,11 @@ | |||
429 | }; | 408 | }; |
430 | }; | 409 | }; |
431 | }; | 410 | }; |
411 | |||
412 | temperature-sensor@4c { | ||
413 | compatible = "adi,adt7461"; | ||
414 | reg = <0x4c>; | ||
415 | }; | ||
432 | }; | 416 | }; |
433 | 417 | ||
434 | pmc { | 418 | pmc { |
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts index ddf287f52d49..6a93d1404c76 100644 --- a/arch/arm/boot/dts/tegra20-paz00.dts +++ b/arch/arm/boot/dts/tegra20-paz00.dts | |||
@@ -291,37 +291,26 @@ | |||
291 | vinldo9-supply = <&sm2_reg>; | 291 | vinldo9-supply = <&sm2_reg>; |
292 | 292 | ||
293 | regulators { | 293 | regulators { |
294 | #address-cells = <1>; | 294 | sys_reg: sys { |
295 | #size-cells = <0>; | ||
296 | |||
297 | sys_reg: regulator@0 { | ||
298 | reg = <0>; | ||
299 | regulator-compatible = "sys"; | ||
300 | regulator-name = "vdd_sys"; | 295 | regulator-name = "vdd_sys"; |
301 | regulator-always-on; | 296 | regulator-always-on; |
302 | }; | 297 | }; |
303 | 298 | ||
304 | regulator@1 { | 299 | sm0 { |
305 | reg = <1>; | ||
306 | regulator-compatible = "sm0"; | ||
307 | regulator-name = "+1.2vs_sm0,vdd_core"; | 300 | regulator-name = "+1.2vs_sm0,vdd_core"; |
308 | regulator-min-microvolt = <1200000>; | 301 | regulator-min-microvolt = <1200000>; |
309 | regulator-max-microvolt = <1200000>; | 302 | regulator-max-microvolt = <1200000>; |
310 | regulator-always-on; | 303 | regulator-always-on; |
311 | }; | 304 | }; |
312 | 305 | ||
313 | regulator@2 { | 306 | sm1 { |
314 | reg = <2>; | ||
315 | regulator-compatible = "sm1"; | ||
316 | regulator-name = "+1.0vs_sm1,vdd_cpu"; | 307 | regulator-name = "+1.0vs_sm1,vdd_cpu"; |
317 | regulator-min-microvolt = <1000000>; | 308 | regulator-min-microvolt = <1000000>; |
318 | regulator-max-microvolt = <1000000>; | 309 | regulator-max-microvolt = <1000000>; |
319 | regulator-always-on; | 310 | regulator-always-on; |
320 | }; | 311 | }; |
321 | 312 | ||
322 | sm2_reg: regulator@3 { | 313 | sm2_reg: sm2 { |
323 | reg = <3>; | ||
324 | regulator-compatible = "sm2"; | ||
325 | regulator-name = "+3.7vs_sm2,vin_ldo*"; | 314 | regulator-name = "+3.7vs_sm2,vin_ldo*"; |
326 | regulator-min-microvolt = <3700000>; | 315 | regulator-min-microvolt = <3700000>; |
327 | regulator-max-microvolt = <3700000>; | 316 | regulator-max-microvolt = <3700000>; |
@@ -330,53 +319,41 @@ | |||
330 | 319 | ||
331 | /* LDO0 is not connected to anything */ | 320 | /* LDO0 is not connected to anything */ |
332 | 321 | ||
333 | regulator@5 { | 322 | ldo1 { |
334 | reg = <5>; | ||
335 | regulator-compatible = "ldo1"; | ||
336 | regulator-name = "+1.1vs_ldo1,avdd_pll*"; | 323 | regulator-name = "+1.1vs_ldo1,avdd_pll*"; |
337 | regulator-min-microvolt = <1100000>; | 324 | regulator-min-microvolt = <1100000>; |
338 | regulator-max-microvolt = <1100000>; | 325 | regulator-max-microvolt = <1100000>; |
339 | regulator-always-on; | 326 | regulator-always-on; |
340 | }; | 327 | }; |
341 | 328 | ||
342 | regulator@6 { | 329 | ldo2 { |
343 | reg = <6>; | ||
344 | regulator-compatible = "ldo2"; | ||
345 | regulator-name = "+1.2vs_ldo2,vdd_rtc"; | 330 | regulator-name = "+1.2vs_ldo2,vdd_rtc"; |
346 | regulator-min-microvolt = <1200000>; | 331 | regulator-min-microvolt = <1200000>; |
347 | regulator-max-microvolt = <1200000>; | 332 | regulator-max-microvolt = <1200000>; |
348 | }; | 333 | }; |
349 | 334 | ||
350 | regulator@7 { | 335 | ldo3 { |
351 | reg = <7>; | ||
352 | regulator-compatible = "ldo3"; | ||
353 | regulator-name = "+3.3vs_ldo3,avdd_usb*"; | 336 | regulator-name = "+3.3vs_ldo3,avdd_usb*"; |
354 | regulator-min-microvolt = <3300000>; | 337 | regulator-min-microvolt = <3300000>; |
355 | regulator-max-microvolt = <3300000>; | 338 | regulator-max-microvolt = <3300000>; |
356 | regulator-always-on; | 339 | regulator-always-on; |
357 | }; | 340 | }; |
358 | 341 | ||
359 | regulator@8 { | 342 | ldo4 { |
360 | reg = <8>; | ||
361 | regulator-compatible = "ldo4"; | ||
362 | regulator-name = "+1.8vs_ldo4,avdd_osc,vddio_sys"; | 343 | regulator-name = "+1.8vs_ldo4,avdd_osc,vddio_sys"; |
363 | regulator-min-microvolt = <1800000>; | 344 | regulator-min-microvolt = <1800000>; |
364 | regulator-max-microvolt = <1800000>; | 345 | regulator-max-microvolt = <1800000>; |
365 | regulator-always-on; | 346 | regulator-always-on; |
366 | }; | 347 | }; |
367 | 348 | ||
368 | regulator@9 { | 349 | ldo5 { |
369 | reg = <9>; | ||
370 | regulator-compatible = "ldo5"; | ||
371 | regulator-name = "+2.85vs_ldo5,vcore_mmc"; | 350 | regulator-name = "+2.85vs_ldo5,vcore_mmc"; |
372 | regulator-min-microvolt = <2850000>; | 351 | regulator-min-microvolt = <2850000>; |
373 | regulator-max-microvolt = <2850000>; | 352 | regulator-max-microvolt = <2850000>; |
374 | regulator-always-on; | 353 | regulator-always-on; |
375 | }; | 354 | }; |
376 | 355 | ||
377 | regulator@10 { | 356 | ldo6 { |
378 | reg = <10>; | ||
379 | regulator-compatible = "ldo6"; | ||
380 | /* | 357 | /* |
381 | * Research indicates this should be | 358 | * Research indicates this should be |
382 | * 1.8v; other boards that use this | 359 | * 1.8v; other boards that use this |
@@ -390,34 +367,26 @@ | |||
390 | regulator-max-microvolt = <1800000>; | 367 | regulator-max-microvolt = <1800000>; |
391 | }; | 368 | }; |
392 | 369 | ||
393 | regulator@11 { | 370 | ldo7 { |
394 | reg = <11>; | ||
395 | regulator-compatible = "ldo7"; | ||
396 | regulator-name = "+3.3vs_ldo7,avdd_hdmi"; | 371 | regulator-name = "+3.3vs_ldo7,avdd_hdmi"; |
397 | regulator-min-microvolt = <3300000>; | 372 | regulator-min-microvolt = <3300000>; |
398 | regulator-max-microvolt = <3300000>; | 373 | regulator-max-microvolt = <3300000>; |
399 | }; | 374 | }; |
400 | 375 | ||
401 | regulator@12 { | 376 | ldo8 { |
402 | reg = <12>; | ||
403 | regulator-compatible = "ldo8"; | ||
404 | regulator-name = "+1.8vs_ldo8,avdd_hdmi_pll"; | 377 | regulator-name = "+1.8vs_ldo8,avdd_hdmi_pll"; |
405 | regulator-min-microvolt = <1800000>; | 378 | regulator-min-microvolt = <1800000>; |
406 | regulator-max-microvolt = <1800000>; | 379 | regulator-max-microvolt = <1800000>; |
407 | }; | 380 | }; |
408 | 381 | ||
409 | regulator@13 { | 382 | ldo9 { |
410 | reg = <13>; | ||
411 | regulator-compatible = "ldo9"; | ||
412 | regulator-name = "+2.85vs_ldo9,vdd_ddr_rx"; | 383 | regulator-name = "+2.85vs_ldo9,vdd_ddr_rx"; |
413 | regulator-min-microvolt = <2850000>; | 384 | regulator-min-microvolt = <2850000>; |
414 | regulator-max-microvolt = <2850000>; | 385 | regulator-max-microvolt = <2850000>; |
415 | regulator-always-on; | 386 | regulator-always-on; |
416 | }; | 387 | }; |
417 | 388 | ||
418 | regulator@14 { | 389 | ldo_rtc { |
419 | reg = <14>; | ||
420 | regulator-compatible = "ldo_rtc"; | ||
421 | regulator-name = "+3.3vs_rtc"; | 390 | regulator-name = "+3.3vs_rtc"; |
422 | regulator-min-microvolt = <3300000>; | 391 | regulator-min-microvolt = <3300000>; |
423 | regulator-max-microvolt = <3300000>; | 392 | regulator-max-microvolt = <3300000>; |
diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts index 331a3ef24d59..289480026fbf 100644 --- a/arch/arm/boot/dts/tegra20-plutux.dts +++ b/arch/arm/boot/dts/tegra20-plutux.dts | |||
@@ -6,6 +6,12 @@ | |||
6 | model = "Avionic Design Plutux board"; | 6 | model = "Avionic Design Plutux board"; |
7 | compatible = "ad,plutux", "ad,tamonten", "nvidia,tegra20"; | 7 | compatible = "ad,plutux", "ad,tamonten", "nvidia,tegra20"; |
8 | 8 | ||
9 | host1x { | ||
10 | hdmi { | ||
11 | status = "okay"; | ||
12 | }; | ||
13 | }; | ||
14 | |||
9 | i2c@7000c000 { | 15 | i2c@7000c000 { |
10 | wm8903: wm8903@1a { | 16 | wm8903: wm8903@1a { |
11 | compatible = "wlf,wm8903"; | 17 | compatible = "wlf,wm8903"; |
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts index f0ba901676ac..eafeca65eb21 100644 --- a/arch/arm/boot/dts/tegra20-seaboard.dts +++ b/arch/arm/boot/dts/tegra20-seaboard.dts | |||
@@ -395,37 +395,26 @@ | |||
395 | vinldo9-supply = <&sm2_reg>; | 395 | vinldo9-supply = <&sm2_reg>; |
396 | 396 | ||
397 | regulators { | 397 | regulators { |
398 | #address-cells = <1>; | 398 | sys_reg: sys { |
399 | #size-cells = <0>; | ||
400 | |||
401 | sys_reg: regulator@0 { | ||
402 | reg = <0>; | ||
403 | regulator-compatible = "sys"; | ||
404 | regulator-name = "vdd_sys"; | 399 | regulator-name = "vdd_sys"; |
405 | regulator-always-on; | 400 | regulator-always-on; |
406 | }; | 401 | }; |
407 | 402 | ||
408 | regulator@1 { | 403 | sm0 { |
409 | reg = <1>; | ||
410 | regulator-compatible = "sm0"; | ||
411 | regulator-name = "vdd_sm0,vdd_core"; | 404 | regulator-name = "vdd_sm0,vdd_core"; |
412 | regulator-min-microvolt = <1300000>; | 405 | regulator-min-microvolt = <1300000>; |
413 | regulator-max-microvolt = <1300000>; | 406 | regulator-max-microvolt = <1300000>; |
414 | regulator-always-on; | 407 | regulator-always-on; |
415 | }; | 408 | }; |
416 | 409 | ||
417 | regulator@2 { | 410 | sm1 { |
418 | reg = <2>; | ||
419 | regulator-compatible = "sm1"; | ||
420 | regulator-name = "vdd_sm1,vdd_cpu"; | 411 | regulator-name = "vdd_sm1,vdd_cpu"; |
421 | regulator-min-microvolt = <1125000>; | 412 | regulator-min-microvolt = <1125000>; |
422 | regulator-max-microvolt = <1125000>; | 413 | regulator-max-microvolt = <1125000>; |
423 | regulator-always-on; | 414 | regulator-always-on; |
424 | }; | 415 | }; |
425 | 416 | ||
426 | sm2_reg: regulator@3 { | 417 | sm2_reg: sm2 { |
427 | reg = <3>; | ||
428 | regulator-compatible = "sm2"; | ||
429 | regulator-name = "vdd_sm2,vin_ldo*"; | 418 | regulator-name = "vdd_sm2,vin_ldo*"; |
430 | regulator-min-microvolt = <3700000>; | 419 | regulator-min-microvolt = <3700000>; |
431 | regulator-max-microvolt = <3700000>; | 420 | regulator-max-microvolt = <3700000>; |
@@ -434,86 +423,66 @@ | |||
434 | 423 | ||
435 | /* LDO0 is not connected to anything */ | 424 | /* LDO0 is not connected to anything */ |
436 | 425 | ||
437 | regulator@5 { | 426 | ldo1 { |
438 | reg = <5>; | ||
439 | regulator-compatible = "ldo1"; | ||
440 | regulator-name = "vdd_ldo1,avdd_pll*"; | 427 | regulator-name = "vdd_ldo1,avdd_pll*"; |
441 | regulator-min-microvolt = <1100000>; | 428 | regulator-min-microvolt = <1100000>; |
442 | regulator-max-microvolt = <1100000>; | 429 | regulator-max-microvolt = <1100000>; |
443 | regulator-always-on; | 430 | regulator-always-on; |
444 | }; | 431 | }; |
445 | 432 | ||
446 | regulator@6 { | 433 | ldo2 { |
447 | reg = <6>; | ||
448 | regulator-compatible = "ldo2"; | ||
449 | regulator-name = "vdd_ldo2,vdd_rtc"; | 434 | regulator-name = "vdd_ldo2,vdd_rtc"; |
450 | regulator-min-microvolt = <1200000>; | 435 | regulator-min-microvolt = <1200000>; |
451 | regulator-max-microvolt = <1200000>; | 436 | regulator-max-microvolt = <1200000>; |
452 | }; | 437 | }; |
453 | 438 | ||
454 | regulator@7 { | 439 | ldo3 { |
455 | reg = <7>; | ||
456 | regulator-compatible = "ldo3"; | ||
457 | regulator-name = "vdd_ldo3,avdd_usb*"; | 440 | regulator-name = "vdd_ldo3,avdd_usb*"; |
458 | regulator-min-microvolt = <3300000>; | 441 | regulator-min-microvolt = <3300000>; |
459 | regulator-max-microvolt = <3300000>; | 442 | regulator-max-microvolt = <3300000>; |
460 | regulator-always-on; | 443 | regulator-always-on; |
461 | }; | 444 | }; |
462 | 445 | ||
463 | regulator@8 { | 446 | ldo4 { |
464 | reg = <8>; | ||
465 | regulator-compatible = "ldo4"; | ||
466 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; | 447 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; |
467 | regulator-min-microvolt = <1800000>; | 448 | regulator-min-microvolt = <1800000>; |
468 | regulator-max-microvolt = <1800000>; | 449 | regulator-max-microvolt = <1800000>; |
469 | regulator-always-on; | 450 | regulator-always-on; |
470 | }; | 451 | }; |
471 | 452 | ||
472 | regulator@9 { | 453 | ldo5 { |
473 | reg = <9>; | ||
474 | regulator-compatible = "ldo5"; | ||
475 | regulator-name = "vdd_ldo5,vcore_mmc"; | 454 | regulator-name = "vdd_ldo5,vcore_mmc"; |
476 | regulator-min-microvolt = <2850000>; | 455 | regulator-min-microvolt = <2850000>; |
477 | regulator-max-microvolt = <2850000>; | 456 | regulator-max-microvolt = <2850000>; |
478 | regulator-always-on; | 457 | regulator-always-on; |
479 | }; | 458 | }; |
480 | 459 | ||
481 | regulator@10 { | 460 | ldo6 { |
482 | reg = <10>; | ||
483 | regulator-compatible = "ldo6"; | ||
484 | regulator-name = "vdd_ldo6,avdd_vdac,vddio_vi,vddio_cam"; | 461 | regulator-name = "vdd_ldo6,avdd_vdac,vddio_vi,vddio_cam"; |
485 | regulator-min-microvolt = <1800000>; | 462 | regulator-min-microvolt = <1800000>; |
486 | regulator-max-microvolt = <1800000>; | 463 | regulator-max-microvolt = <1800000>; |
487 | }; | 464 | }; |
488 | 465 | ||
489 | regulator@11 { | 466 | ldo7 { |
490 | reg = <11>; | ||
491 | regulator-compatible = "ldo7"; | ||
492 | regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; | 467 | regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; |
493 | regulator-min-microvolt = <3300000>; | 468 | regulator-min-microvolt = <3300000>; |
494 | regulator-max-microvolt = <3300000>; | 469 | regulator-max-microvolt = <3300000>; |
495 | }; | 470 | }; |
496 | 471 | ||
497 | regulator@12 { | 472 | ldo8 { |
498 | reg = <12>; | ||
499 | regulator-compatible = "ldo8"; | ||
500 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; | 473 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; |
501 | regulator-min-microvolt = <1800000>; | 474 | regulator-min-microvolt = <1800000>; |
502 | regulator-max-microvolt = <1800000>; | 475 | regulator-max-microvolt = <1800000>; |
503 | }; | 476 | }; |
504 | 477 | ||
505 | regulator@13 { | 478 | ldo9 { |
506 | reg = <13>; | ||
507 | regulator-compatible = "ldo9"; | ||
508 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; | 479 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; |
509 | regulator-min-microvolt = <2850000>; | 480 | regulator-min-microvolt = <2850000>; |
510 | regulator-max-microvolt = <2850000>; | 481 | regulator-max-microvolt = <2850000>; |
511 | regulator-always-on; | 482 | regulator-always-on; |
512 | }; | 483 | }; |
513 | 484 | ||
514 | regulator@14 { | 485 | ldo_rtc { |
515 | reg = <14>; | ||
516 | regulator-compatible = "ldo_rtc"; | ||
517 | regulator-name = "vdd_rtc_out,vdd_cell"; | 486 | regulator-name = "vdd_rtc_out,vdd_cell"; |
518 | regulator-min-microvolt = <3300000>; | 487 | regulator-min-microvolt = <3300000>; |
519 | regulator-max-microvolt = <3300000>; | 488 | regulator-max-microvolt = <3300000>; |
@@ -592,6 +561,12 @@ | |||
592 | status = "okay"; | 561 | status = "okay"; |
593 | }; | 562 | }; |
594 | 563 | ||
564 | sdhci@c8000000 { | ||
565 | status = "okay"; | ||
566 | power-gpios = <&gpio 86 0>; /* gpio PK6 */ | ||
567 | bus-width = <4>; | ||
568 | }; | ||
569 | |||
595 | sdhci@c8000400 { | 570 | sdhci@c8000400 { |
596 | status = "okay"; | 571 | status = "okay"; |
597 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ | 572 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ |
diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi index f18cec9f6a77..a239ccdfaa52 100644 --- a/arch/arm/boot/dts/tegra20-tamonten.dtsi +++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi | |||
@@ -8,6 +8,16 @@ | |||
8 | reg = <0x00000000 0x20000000>; | 8 | reg = <0x00000000 0x20000000>; |
9 | }; | 9 | }; |
10 | 10 | ||
11 | host1x { | ||
12 | hdmi { | ||
13 | vdd-supply = <&hdmi_vdd_reg>; | ||
14 | pll-supply = <&hdmi_pll_reg>; | ||
15 | |||
16 | nvidia,ddc-i2c-bus = <&hdmi_ddc>; | ||
17 | nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ | ||
18 | }; | ||
19 | }; | ||
20 | |||
11 | pinmux { | 21 | pinmux { |
12 | pinctrl-names = "default"; | 22 | pinctrl-names = "default"; |
13 | pinctrl-0 = <&state_default>; | 23 | pinctrl-0 = <&state_default>; |
@@ -62,10 +72,6 @@ | |||
62 | nvidia,pins = "dap4"; | 72 | nvidia,pins = "dap4"; |
63 | nvidia,function = "dap4"; | 73 | nvidia,function = "dap4"; |
64 | }; | 74 | }; |
65 | ddc { | ||
66 | nvidia,pins = "ddc"; | ||
67 | nvidia,function = "i2c2"; | ||
68 | }; | ||
69 | dta { | 75 | dta { |
70 | nvidia,pins = "dta", "dtd"; | 76 | nvidia,pins = "dta", "dtd"; |
71 | nvidia,function = "sdio2"; | 77 | nvidia,function = "sdio2"; |
@@ -91,7 +97,7 @@ | |||
91 | nvidia,function = "pcie"; | 97 | nvidia,function = "pcie"; |
92 | }; | 98 | }; |
93 | hdint { | 99 | hdint { |
94 | nvidia,pins = "hdint", "pta"; | 100 | nvidia,pins = "hdint"; |
95 | nvidia,function = "hdmi"; | 101 | nvidia,function = "hdmi"; |
96 | }; | 102 | }; |
97 | i2cp { | 103 | i2cp { |
@@ -230,6 +236,39 @@ | |||
230 | nvidia,pull = <1>; | 236 | nvidia,pull = <1>; |
231 | }; | 237 | }; |
232 | }; | 238 | }; |
239 | |||
240 | state_i2cmux_ddc: pinmux_i2cmux_ddc { | ||
241 | ddc { | ||
242 | nvidia,pins = "ddc"; | ||
243 | nvidia,function = "i2c2"; | ||
244 | }; | ||
245 | pta { | ||
246 | nvidia,pins = "pta"; | ||
247 | nvidia,function = "rsvd4"; | ||
248 | }; | ||
249 | }; | ||
250 | |||
251 | state_i2cmux_pta: pinmux_i2cmux_pta { | ||
252 | ddc { | ||
253 | nvidia,pins = "ddc"; | ||
254 | nvidia,function = "rsvd4"; | ||
255 | }; | ||
256 | pta { | ||
257 | nvidia,pins = "pta"; | ||
258 | nvidia,function = "i2c2"; | ||
259 | }; | ||
260 | }; | ||
261 | |||
262 | state_i2cmux_idle: pinmux_i2cmux_idle { | ||
263 | ddc { | ||
264 | nvidia,pins = "ddc"; | ||
265 | nvidia,function = "rsvd4"; | ||
266 | }; | ||
267 | pta { | ||
268 | nvidia,pins = "pta"; | ||
269 | nvidia,function = "rsvd4"; | ||
270 | }; | ||
271 | }; | ||
233 | }; | 272 | }; |
234 | 273 | ||
235 | i2s@70002800 { | 274 | i2s@70002800 { |
@@ -246,6 +285,36 @@ | |||
246 | status = "okay"; | 285 | status = "okay"; |
247 | }; | 286 | }; |
248 | 287 | ||
288 | i2c@7000c400 { | ||
289 | clock-frequency = <100000>; | ||
290 | status = "okay"; | ||
291 | }; | ||
292 | |||
293 | i2cmux { | ||
294 | compatible = "i2c-mux-pinctrl"; | ||
295 | #address-cells = <1>; | ||
296 | #size-cells = <0>; | ||
297 | |||
298 | i2c-parent = <&{/i2c@7000c400}>; | ||
299 | |||
300 | pinctrl-names = "ddc", "pta", "idle"; | ||
301 | pinctrl-0 = <&state_i2cmux_ddc>; | ||
302 | pinctrl-1 = <&state_i2cmux_pta>; | ||
303 | pinctrl-2 = <&state_i2cmux_idle>; | ||
304 | |||
305 | hdmi_ddc: i2c@0 { | ||
306 | reg = <0>; | ||
307 | #address-cells = <1>; | ||
308 | #size-cells = <0>; | ||
309 | }; | ||
310 | |||
311 | i2c@1 { | ||
312 | reg = <1>; | ||
313 | #address-cells = <1>; | ||
314 | #size-cells = <0>; | ||
315 | }; | ||
316 | }; | ||
317 | |||
249 | i2c@7000d000 { | 318 | i2c@7000d000 { |
250 | clock-frequency = <400000>; | 319 | clock-frequency = <400000>; |
251 | status = "okay"; | 320 | status = "okay"; |
@@ -271,97 +340,72 @@ | |||
271 | vinldo9-supply = <&sm2_reg>; | 340 | vinldo9-supply = <&sm2_reg>; |
272 | 341 | ||
273 | regulators { | 342 | regulators { |
274 | #address-cells = <1>; | 343 | sys_reg: sys { |
275 | #size-cells = <0>; | ||
276 | |||
277 | sys_reg: regulator@0 { | ||
278 | reg = <0>; | ||
279 | regulator-compatible = "sys"; | ||
280 | regulator-name = "vdd_sys"; | 344 | regulator-name = "vdd_sys"; |
281 | regulator-always-on; | 345 | regulator-always-on; |
282 | }; | 346 | }; |
283 | 347 | ||
284 | regulator@1 { | 348 | sm0 { |
285 | reg = <1>; | ||
286 | regulator-compatible = "sm0"; | ||
287 | regulator-name = "vdd_sys_sm0,vdd_core"; | 349 | regulator-name = "vdd_sys_sm0,vdd_core"; |
288 | regulator-min-microvolt = <1200000>; | 350 | regulator-min-microvolt = <1200000>; |
289 | regulator-max-microvolt = <1200000>; | 351 | regulator-max-microvolt = <1200000>; |
290 | regulator-always-on; | 352 | regulator-always-on; |
291 | }; | 353 | }; |
292 | 354 | ||
293 | regulator@2 { | 355 | sm1 { |
294 | reg = <2>; | ||
295 | regulator-compatible = "sm1"; | ||
296 | regulator-name = "vdd_sys_sm1,vdd_cpu"; | 356 | regulator-name = "vdd_sys_sm1,vdd_cpu"; |
297 | regulator-min-microvolt = <1000000>; | 357 | regulator-min-microvolt = <1000000>; |
298 | regulator-max-microvolt = <1000000>; | 358 | regulator-max-microvolt = <1000000>; |
299 | regulator-always-on; | 359 | regulator-always-on; |
300 | }; | 360 | }; |
301 | 361 | ||
302 | sm2_reg: regulator@3 { | 362 | sm2_reg: sm2 { |
303 | reg = <3>; | ||
304 | regulator-compatible = "sm2"; | ||
305 | regulator-name = "vdd_sys_sm2,vin_ldo*"; | 363 | regulator-name = "vdd_sys_sm2,vin_ldo*"; |
306 | regulator-min-microvolt = <3700000>; | 364 | regulator-min-microvolt = <3700000>; |
307 | regulator-max-microvolt = <3700000>; | 365 | regulator-max-microvolt = <3700000>; |
308 | regulator-always-on; | 366 | regulator-always-on; |
309 | }; | 367 | }; |
310 | 368 | ||
311 | regulator@4 { | 369 | ldo0 { |
312 | reg = <4>; | ||
313 | regulator-compatible = "ldo0"; | ||
314 | regulator-name = "vdd_ldo0,vddio_pex_clk"; | 370 | regulator-name = "vdd_ldo0,vddio_pex_clk"; |
315 | regulator-min-microvolt = <3300000>; | 371 | regulator-min-microvolt = <3300000>; |
316 | regulator-max-microvolt = <3300000>; | 372 | regulator-max-microvolt = <3300000>; |
317 | }; | 373 | }; |
318 | 374 | ||
319 | regulator@5 { | 375 | ldo1 { |
320 | reg = <5>; | ||
321 | regulator-compatible = "ldo1"; | ||
322 | regulator-name = "vdd_ldo1,avdd_pll*"; | 376 | regulator-name = "vdd_ldo1,avdd_pll*"; |
323 | regulator-min-microvolt = <1100000>; | 377 | regulator-min-microvolt = <1100000>; |
324 | regulator-max-microvolt = <1100000>; | 378 | regulator-max-microvolt = <1100000>; |
325 | regulator-always-on; | 379 | regulator-always-on; |
326 | }; | 380 | }; |
327 | 381 | ||
328 | regulator@6 { | 382 | ldo2 { |
329 | reg = <6>; | ||
330 | regulator-compatible = "ldo2"; | ||
331 | regulator-name = "vdd_ldo2,vdd_rtc"; | 383 | regulator-name = "vdd_ldo2,vdd_rtc"; |
332 | regulator-min-microvolt = <1200000>; | 384 | regulator-min-microvolt = <1200000>; |
333 | regulator-max-microvolt = <1200000>; | 385 | regulator-max-microvolt = <1200000>; |
334 | }; | 386 | }; |
335 | 387 | ||
336 | regulator@7 { | 388 | ldo3 { |
337 | reg = <7>; | ||
338 | regulator-compatible = "ldo3"; | ||
339 | regulator-name = "vdd_ldo3,avdd_usb*"; | 389 | regulator-name = "vdd_ldo3,avdd_usb*"; |
340 | regulator-min-microvolt = <3300000>; | 390 | regulator-min-microvolt = <3300000>; |
341 | regulator-max-microvolt = <3300000>; | 391 | regulator-max-microvolt = <3300000>; |
342 | regulator-always-on; | 392 | regulator-always-on; |
343 | }; | 393 | }; |
344 | 394 | ||
345 | regulator@8 { | 395 | ldo4 { |
346 | reg = <8>; | ||
347 | regulator-compatible = "ldo4"; | ||
348 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; | 396 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; |
349 | regulator-min-microvolt = <1800000>; | 397 | regulator-min-microvolt = <1800000>; |
350 | regulator-max-microvolt = <1800000>; | 398 | regulator-max-microvolt = <1800000>; |
351 | regulator-always-on; | 399 | regulator-always-on; |
352 | }; | 400 | }; |
353 | 401 | ||
354 | regulator@9 { | 402 | ldo5 { |
355 | reg = <9>; | ||
356 | regulator-compatible = "ldo5"; | ||
357 | regulator-name = "vdd_ldo5,vcore_mmc"; | 403 | regulator-name = "vdd_ldo5,vcore_mmc"; |
358 | regulator-min-microvolt = <2850000>; | 404 | regulator-min-microvolt = <2850000>; |
359 | regulator-max-microvolt = <2850000>; | 405 | regulator-max-microvolt = <2850000>; |
360 | }; | 406 | }; |
361 | 407 | ||
362 | regulator@10 { | 408 | ldo6 { |
363 | reg = <10>; | ||
364 | regulator-compatible = "ldo6"; | ||
365 | regulator-name = "vdd_ldo6,avdd_vdac"; | 409 | regulator-name = "vdd_ldo6,avdd_vdac"; |
366 | /* | 410 | /* |
367 | * According to the Tegra 2 Automotive | 411 | * According to the Tegra 2 Automotive |
@@ -373,25 +417,19 @@ | |||
373 | regulator-max-microvolt = <2850000>; | 417 | regulator-max-microvolt = <2850000>; |
374 | }; | 418 | }; |
375 | 419 | ||
376 | regulator@11 { | 420 | hdmi_vdd_reg: ldo7 { |
377 | reg = <11>; | ||
378 | regulator-compatible = "ldo7"; | ||
379 | regulator-name = "vdd_ldo7,avdd_hdmi"; | 421 | regulator-name = "vdd_ldo7,avdd_hdmi"; |
380 | regulator-min-microvolt = <3300000>; | 422 | regulator-min-microvolt = <3300000>; |
381 | regulator-max-microvolt = <3300000>; | 423 | regulator-max-microvolt = <3300000>; |
382 | }; | 424 | }; |
383 | 425 | ||
384 | regulator@12 { | 426 | hdmi_pll_reg: ldo8 { |
385 | reg = <12>; | ||
386 | regulator-compatible = "ldo8"; | ||
387 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; | 427 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; |
388 | regulator-min-microvolt = <1800000>; | 428 | regulator-min-microvolt = <1800000>; |
389 | regulator-max-microvolt = <1800000>; | 429 | regulator-max-microvolt = <1800000>; |
390 | }; | 430 | }; |
391 | 431 | ||
392 | regulator@13 { | 432 | ldo9 { |
393 | reg = <13>; | ||
394 | regulator-compatible = "ldo9"; | ||
395 | regulator-name = "vdd_ldo9,vdd_ddr_rx,avdd_cam"; | 433 | regulator-name = "vdd_ldo9,vdd_ddr_rx,avdd_cam"; |
396 | /* | 434 | /* |
397 | * According to the Tegra 2 Automotive | 435 | * According to the Tegra 2 Automotive |
@@ -404,9 +442,7 @@ | |||
404 | regulator-always-on; | 442 | regulator-always-on; |
405 | }; | 443 | }; |
406 | 444 | ||
407 | regulator@14 { | 445 | ldo_rtc { |
408 | reg = <14>; | ||
409 | regulator-compatible = "ldo_rtc"; | ||
410 | regulator-name = "vdd_rtc_out"; | 446 | regulator-name = "vdd_rtc_out"; |
411 | regulator-min-microvolt = <3300000>; | 447 | regulator-min-microvolt = <3300000>; |
412 | regulator-max-microvolt = <3300000>; | 448 | regulator-max-microvolt = <3300000>; |
@@ -414,6 +450,11 @@ | |||
414 | }; | 450 | }; |
415 | }; | 451 | }; |
416 | }; | 452 | }; |
453 | |||
454 | temperature-sensor@4c { | ||
455 | compatible = "onnn,nct1008"; | ||
456 | reg = <0x4c>; | ||
457 | }; | ||
417 | }; | 458 | }; |
418 | 459 | ||
419 | pmc { | 460 | pmc { |
diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts index 9aff31b0fe4a..402b21004bef 100644 --- a/arch/arm/boot/dts/tegra20-tec.dts +++ b/arch/arm/boot/dts/tegra20-tec.dts | |||
@@ -6,10 +6,13 @@ | |||
6 | model = "Avionic Design Tamonten Evaluation Carrier"; | 6 | model = "Avionic Design Tamonten Evaluation Carrier"; |
7 | compatible = "ad,tec", "ad,tamonten", "nvidia,tegra20"; | 7 | compatible = "ad,tec", "ad,tamonten", "nvidia,tegra20"; |
8 | 8 | ||
9 | i2c@7000c000 { | 9 | host1x { |
10 | clock-frequency = <400000>; | 10 | hdmi { |
11 | status = "okay"; | 11 | status = "okay"; |
12 | }; | ||
13 | }; | ||
12 | 14 | ||
15 | i2c@7000c000 { | ||
13 | wm8903: wm8903@1a { | 16 | wm8903: wm8903@1a { |
14 | compatible = "wlf,wm8903"; | 17 | compatible = "wlf,wm8903"; |
15 | reg = <0x1a>; | 18 | reg = <0x1a>; |
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts index 27fb8a67ea42..b70b4cb754c8 100644 --- a/arch/arm/boot/dts/tegra20-trimslice.dts +++ b/arch/arm/boot/dts/tegra20-trimslice.dts | |||
@@ -10,6 +10,18 @@ | |||
10 | reg = <0x00000000 0x40000000>; | 10 | reg = <0x00000000 0x40000000>; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | host1x { | ||
14 | hdmi { | ||
15 | status = "okay"; | ||
16 | |||
17 | vdd-supply = <&hdmi_vdd_reg>; | ||
18 | pll-supply = <&hdmi_pll_reg>; | ||
19 | |||
20 | nvidia,ddc-i2c-bus = <&hdmi_ddc>; | ||
21 | nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ | ||
22 | }; | ||
23 | }; | ||
24 | |||
13 | pinmux { | 25 | pinmux { |
14 | pinctrl-names = "default"; | 26 | pinctrl-names = "default"; |
15 | pinctrl-0 = <&state_default>; | 27 | pinctrl-0 = <&state_default>; |
@@ -249,14 +261,24 @@ | |||
249 | clock-frequency = <216000000>; | 261 | clock-frequency = <216000000>; |
250 | }; | 262 | }; |
251 | 263 | ||
252 | i2c@7000c000 { | 264 | dvi_ddc: i2c@7000c000 { |
253 | status = "okay"; | 265 | status = "okay"; |
254 | clock-frequency = <400000>; | 266 | clock-frequency = <100000>; |
255 | }; | 267 | }; |
256 | 268 | ||
257 | i2c@7000c400 { | 269 | spi@7000c380 { |
258 | status = "okay"; | 270 | status = "okay"; |
259 | clock-frequency = <400000>; | 271 | spi-max-frequency = <48000000>; |
272 | spi-flash@0 { | ||
273 | compatible = "winbond,w25q80bl"; | ||
274 | reg = <0>; | ||
275 | spi-max-frequency = <48000000>; | ||
276 | }; | ||
277 | }; | ||
278 | |||
279 | hdmi_ddc: i2c@7000c400 { | ||
280 | status = "okay"; | ||
281 | clock-frequency = <100000>; | ||
260 | }; | 282 | }; |
261 | 283 | ||
262 | i2c@7000c500 { | 284 | i2c@7000c500 { |
@@ -300,6 +322,30 @@ | |||
300 | bus-width = <4>; | 322 | bus-width = <4>; |
301 | }; | 323 | }; |
302 | 324 | ||
325 | regulators { | ||
326 | compatible = "simple-bus"; | ||
327 | #address-cells = <1>; | ||
328 | #size-cells = <0>; | ||
329 | |||
330 | hdmi_vdd_reg: regulator@0 { | ||
331 | compatible = "regulator-fixed"; | ||
332 | reg = <0>; | ||
333 | regulator-name = "avdd_hdmi"; | ||
334 | regulator-min-microvolt = <3300000>; | ||
335 | regulator-max-microvolt = <3300000>; | ||
336 | regulator-always-on; | ||
337 | }; | ||
338 | |||
339 | hdmi_pll_reg: regulator@1 { | ||
340 | compatible = "regulator-fixed"; | ||
341 | reg = <1>; | ||
342 | regulator-name = "avdd_hdmi_pll"; | ||
343 | regulator-min-microvolt = <1800000>; | ||
344 | regulator-max-microvolt = <1800000>; | ||
345 | regulator-always-on; | ||
346 | }; | ||
347 | }; | ||
348 | |||
303 | sound { | 349 | sound { |
304 | compatible = "nvidia,tegra-audio-trimslice"; | 350 | compatible = "nvidia,tegra-audio-trimslice"; |
305 | nvidia,i2s-controller = <&tegra_i2s1>; | 351 | nvidia,i2s-controller = <&tegra_i2s1>; |
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts index 3e5952fcfbc5..adc47547eaae 100644 --- a/arch/arm/boot/dts/tegra20-ventana.dts +++ b/arch/arm/boot/dts/tegra20-ventana.dts | |||
@@ -64,11 +64,6 @@ | |||
64 | nvidia,pins = "dap4"; | 64 | nvidia,pins = "dap4"; |
65 | nvidia,function = "dap4"; | 65 | nvidia,function = "dap4"; |
66 | }; | 66 | }; |
67 | ddc { | ||
68 | nvidia,pins = "ddc", "owc", "spdi", "spdo", | ||
69 | "uac"; | ||
70 | nvidia,function = "rsvd2"; | ||
71 | }; | ||
72 | dta { | 67 | dta { |
73 | nvidia,pins = "dta", "dtb", "dtc", "dtd", "dte"; | 68 | nvidia,pins = "dta", "dtb", "dtc", "dtd", "dte"; |
74 | nvidia,function = "vi"; | 69 | nvidia,function = "vi"; |
@@ -98,7 +93,7 @@ | |||
98 | nvidia,function = "pcie"; | 93 | nvidia,function = "pcie"; |
99 | }; | 94 | }; |
100 | hdint { | 95 | hdint { |
101 | nvidia,pins = "hdint", "pta"; | 96 | nvidia,pins = "hdint"; |
102 | nvidia,function = "hdmi"; | 97 | nvidia,function = "hdmi"; |
103 | }; | 98 | }; |
104 | i2cp { | 99 | i2cp { |
@@ -129,6 +124,10 @@ | |||
129 | "lspi", "lvp1", "lvs"; | 124 | "lspi", "lvp1", "lvs"; |
130 | nvidia,function = "displaya"; | 125 | nvidia,function = "displaya"; |
131 | }; | 126 | }; |
127 | owc { | ||
128 | nvidia,pins = "owc", "spdi", "spdo", "uac"; | ||
129 | nvidia,function = "rsvd2"; | ||
130 | }; | ||
132 | pmc { | 131 | pmc { |
133 | nvidia,pins = "pmc"; | 132 | nvidia,pins = "pmc"; |
134 | nvidia,function = "pwr_on"; | 133 | nvidia,function = "pwr_on"; |
@@ -237,6 +236,49 @@ | |||
237 | "ld23_22"; | 236 | "ld23_22"; |
238 | nvidia,pull = <1>; | 237 | nvidia,pull = <1>; |
239 | }; | 238 | }; |
239 | drive_sdio1 { | ||
240 | nvidia,pins = "drive_sdio1"; | ||
241 | nvidia,high-speed-mode = <0>; | ||
242 | nvidia,schmitt = <1>; | ||
243 | nvidia,low-power-mode = <3>; | ||
244 | nvidia,pull-down-strength = <31>; | ||
245 | nvidia,pull-up-strength = <31>; | ||
246 | nvidia,slew-rate-rising = <3>; | ||
247 | nvidia,slew-rate-falling = <3>; | ||
248 | }; | ||
249 | }; | ||
250 | |||
251 | state_i2cmux_ddc: pinmux_i2cmux_ddc { | ||
252 | ddc { | ||
253 | nvidia,pins = "ddc"; | ||
254 | nvidia,function = "i2c2"; | ||
255 | }; | ||
256 | pta { | ||
257 | nvidia,pins = "pta"; | ||
258 | nvidia,function = "rsvd4"; | ||
259 | }; | ||
260 | }; | ||
261 | |||
262 | state_i2cmux_pta: pinmux_i2cmux_pta { | ||
263 | ddc { | ||
264 | nvidia,pins = "ddc"; | ||
265 | nvidia,function = "rsvd4"; | ||
266 | }; | ||
267 | pta { | ||
268 | nvidia,pins = "pta"; | ||
269 | nvidia,function = "i2c2"; | ||
270 | }; | ||
271 | }; | ||
272 | |||
273 | state_i2cmux_idle: pinmux_i2cmux_idle { | ||
274 | ddc { | ||
275 | nvidia,pins = "ddc"; | ||
276 | nvidia,function = "rsvd4"; | ||
277 | }; | ||
278 | pta { | ||
279 | nvidia,pins = "pta"; | ||
280 | nvidia,function = "rsvd4"; | ||
281 | }; | ||
240 | }; | 282 | }; |
241 | }; | 283 | }; |
242 | 284 | ||
@@ -281,6 +323,31 @@ | |||
281 | clock-frequency = <400000>; | 323 | clock-frequency = <400000>; |
282 | }; | 324 | }; |
283 | 325 | ||
326 | i2cmux { | ||
327 | compatible = "i2c-mux-pinctrl"; | ||
328 | #address-cells = <1>; | ||
329 | #size-cells = <0>; | ||
330 | |||
331 | i2c-parent = <&{/i2c@7000c400}>; | ||
332 | |||
333 | pinctrl-names = "ddc", "pta", "idle"; | ||
334 | pinctrl-0 = <&state_i2cmux_ddc>; | ||
335 | pinctrl-1 = <&state_i2cmux_pta>; | ||
336 | pinctrl-2 = <&state_i2cmux_idle>; | ||
337 | |||
338 | i2c@0 { | ||
339 | reg = <0>; | ||
340 | #address-cells = <1>; | ||
341 | #size-cells = <0>; | ||
342 | }; | ||
343 | |||
344 | i2c@1 { | ||
345 | reg = <1>; | ||
346 | #address-cells = <1>; | ||
347 | #size-cells = <0>; | ||
348 | }; | ||
349 | }; | ||
350 | |||
284 | i2c@7000c500 { | 351 | i2c@7000c500 { |
285 | status = "okay"; | 352 | status = "okay"; |
286 | clock-frequency = <400000>; | 353 | clock-frequency = <400000>; |
@@ -311,37 +378,26 @@ | |||
311 | vinldo9-supply = <&sm2_reg>; | 378 | vinldo9-supply = <&sm2_reg>; |
312 | 379 | ||
313 | regulators { | 380 | regulators { |
314 | #address-cells = <1>; | 381 | sys_reg: sys { |
315 | #size-cells = <0>; | ||
316 | |||
317 | sys_reg: regulator@0 { | ||
318 | reg = <0>; | ||
319 | regulator-compatible = "sys"; | ||
320 | regulator-name = "vdd_sys"; | 382 | regulator-name = "vdd_sys"; |
321 | regulator-always-on; | 383 | regulator-always-on; |
322 | }; | 384 | }; |
323 | 385 | ||
324 | regulator@1 { | 386 | sm0 { |
325 | reg = <1>; | ||
326 | regulator-compatible = "sm0"; | ||
327 | regulator-name = "vdd_sm0,vdd_core"; | 387 | regulator-name = "vdd_sm0,vdd_core"; |
328 | regulator-min-microvolt = <1200000>; | 388 | regulator-min-microvolt = <1200000>; |
329 | regulator-max-microvolt = <1200000>; | 389 | regulator-max-microvolt = <1200000>; |
330 | regulator-always-on; | 390 | regulator-always-on; |
331 | }; | 391 | }; |
332 | 392 | ||
333 | regulator@2 { | 393 | sm1 { |
334 | reg = <2>; | ||
335 | regulator-compatible = "sm1"; | ||
336 | regulator-name = "vdd_sm1,vdd_cpu"; | 394 | regulator-name = "vdd_sm1,vdd_cpu"; |
337 | regulator-min-microvolt = <1000000>; | 395 | regulator-min-microvolt = <1000000>; |
338 | regulator-max-microvolt = <1000000>; | 396 | regulator-max-microvolt = <1000000>; |
339 | regulator-always-on; | 397 | regulator-always-on; |
340 | }; | 398 | }; |
341 | 399 | ||
342 | sm2_reg: regulator@3 { | 400 | sm2_reg: sm2 { |
343 | reg = <3>; | ||
344 | regulator-compatible = "sm2"; | ||
345 | regulator-name = "vdd_sm2,vin_ldo*"; | 401 | regulator-name = "vdd_sm2,vin_ldo*"; |
346 | regulator-min-microvolt = <3700000>; | 402 | regulator-min-microvolt = <3700000>; |
347 | regulator-max-microvolt = <3700000>; | 403 | regulator-max-microvolt = <3700000>; |
@@ -350,86 +406,66 @@ | |||
350 | 406 | ||
351 | /* LDO0 is not connected to anything */ | 407 | /* LDO0 is not connected to anything */ |
352 | 408 | ||
353 | regulator@5 { | 409 | ldo1 { |
354 | reg = <5>; | ||
355 | regulator-compatible = "ldo1"; | ||
356 | regulator-name = "vdd_ldo1,avdd_pll*"; | 410 | regulator-name = "vdd_ldo1,avdd_pll*"; |
357 | regulator-min-microvolt = <1100000>; | 411 | regulator-min-microvolt = <1100000>; |
358 | regulator-max-microvolt = <1100000>; | 412 | regulator-max-microvolt = <1100000>; |
359 | regulator-always-on; | 413 | regulator-always-on; |
360 | }; | 414 | }; |
361 | 415 | ||
362 | regulator@6 { | 416 | ldo2 { |
363 | reg = <6>; | ||
364 | regulator-compatible = "ldo2"; | ||
365 | regulator-name = "vdd_ldo2,vdd_rtc"; | 417 | regulator-name = "vdd_ldo2,vdd_rtc"; |
366 | regulator-min-microvolt = <1200000>; | 418 | regulator-min-microvolt = <1200000>; |
367 | regulator-max-microvolt = <1200000>; | 419 | regulator-max-microvolt = <1200000>; |
368 | }; | 420 | }; |
369 | 421 | ||
370 | regulator@7 { | 422 | ldo3 { |
371 | reg = <7>; | ||
372 | regulator-compatible = "ldo3"; | ||
373 | regulator-name = "vdd_ldo3,avdd_usb*"; | 423 | regulator-name = "vdd_ldo3,avdd_usb*"; |
374 | regulator-min-microvolt = <3300000>; | 424 | regulator-min-microvolt = <3300000>; |
375 | regulator-max-microvolt = <3300000>; | 425 | regulator-max-microvolt = <3300000>; |
376 | regulator-always-on; | 426 | regulator-always-on; |
377 | }; | 427 | }; |
378 | 428 | ||
379 | regulator@8 { | 429 | ldo4 { |
380 | reg = <8>; | ||
381 | regulator-compatible = "ldo4"; | ||
382 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; | 430 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; |
383 | regulator-min-microvolt = <1800000>; | 431 | regulator-min-microvolt = <1800000>; |
384 | regulator-max-microvolt = <1800000>; | 432 | regulator-max-microvolt = <1800000>; |
385 | regulator-always-on; | 433 | regulator-always-on; |
386 | }; | 434 | }; |
387 | 435 | ||
388 | regulator@9 { | 436 | ldo5 { |
389 | reg = <9>; | ||
390 | regulator-compatible = "ldo5"; | ||
391 | regulator-name = "vdd_ldo5,vcore_mmc"; | 437 | regulator-name = "vdd_ldo5,vcore_mmc"; |
392 | regulator-min-microvolt = <2850000>; | 438 | regulator-min-microvolt = <2850000>; |
393 | regulator-max-microvolt = <2850000>; | 439 | regulator-max-microvolt = <2850000>; |
394 | regulator-always-on; | 440 | regulator-always-on; |
395 | }; | 441 | }; |
396 | 442 | ||
397 | regulator@10 { | 443 | ldo6 { |
398 | reg = <10>; | ||
399 | regulator-compatible = "ldo6"; | ||
400 | regulator-name = "vdd_ldo6,avdd_vdac"; | 444 | regulator-name = "vdd_ldo6,avdd_vdac"; |
401 | regulator-min-microvolt = <1800000>; | 445 | regulator-min-microvolt = <1800000>; |
402 | regulator-max-microvolt = <1800000>; | 446 | regulator-max-microvolt = <1800000>; |
403 | }; | 447 | }; |
404 | 448 | ||
405 | regulator@11 { | 449 | ldo7 { |
406 | reg = <11>; | ||
407 | regulator-compatible = "ldo7"; | ||
408 | regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; | 450 | regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; |
409 | regulator-min-microvolt = <3300000>; | 451 | regulator-min-microvolt = <3300000>; |
410 | regulator-max-microvolt = <3300000>; | 452 | regulator-max-microvolt = <3300000>; |
411 | }; | 453 | }; |
412 | 454 | ||
413 | regulator@12 { | 455 | ldo8 { |
414 | reg = <12>; | ||
415 | regulator-compatible = "ldo8"; | ||
416 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; | 456 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; |
417 | regulator-min-microvolt = <1800000>; | 457 | regulator-min-microvolt = <1800000>; |
418 | regulator-max-microvolt = <1800000>; | 458 | regulator-max-microvolt = <1800000>; |
419 | }; | 459 | }; |
420 | 460 | ||
421 | regulator@13 { | 461 | ldo9 { |
422 | reg = <13>; | ||
423 | regulator-compatible = "ldo9"; | ||
424 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; | 462 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; |
425 | regulator-min-microvolt = <2850000>; | 463 | regulator-min-microvolt = <2850000>; |
426 | regulator-max-microvolt = <2850000>; | 464 | regulator-max-microvolt = <2850000>; |
427 | regulator-always-on; | 465 | regulator-always-on; |
428 | }; | 466 | }; |
429 | 467 | ||
430 | regulator@14 { | 468 | ldo_rtc { |
431 | reg = <14>; | ||
432 | regulator-compatible = "ldo_rtc"; | ||
433 | regulator-name = "vdd_rtc_out,vdd_cell"; | 469 | regulator-name = "vdd_rtc_out,vdd_cell"; |
434 | regulator-min-microvolt = <3300000>; | 470 | regulator-min-microvolt = <3300000>; |
435 | regulator-max-microvolt = <3300000>; | 471 | regulator-max-microvolt = <3300000>; |
@@ -437,6 +473,11 @@ | |||
437 | }; | 473 | }; |
438 | }; | 474 | }; |
439 | }; | 475 | }; |
476 | |||
477 | temperature-sensor@4c { | ||
478 | compatible = "onnn,nct1008"; | ||
479 | reg = <0x4c>; | ||
480 | }; | ||
440 | }; | 481 | }; |
441 | 482 | ||
442 | pmc { | 483 | pmc { |
@@ -456,6 +497,12 @@ | |||
456 | status = "okay"; | 497 | status = "okay"; |
457 | }; | 498 | }; |
458 | 499 | ||
500 | sdhci@c8000000 { | ||
501 | status = "okay"; | ||
502 | power-gpios = <&gpio 86 0>; /* gpio PK6 */ | ||
503 | bus-width = <4>; | ||
504 | }; | ||
505 | |||
459 | sdhci@c8000400 { | 506 | sdhci@c8000400 { |
460 | status = "okay"; | 507 | status = "okay"; |
461 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ | 508 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ |
diff --git a/arch/arm/boot/dts/tegra20-whistler.dts b/arch/arm/boot/dts/tegra20-whistler.dts index c636d002d6d8..20d576ecd555 100644 --- a/arch/arm/boot/dts/tegra20-whistler.dts +++ b/arch/arm/boot/dts/tegra20-whistler.dts | |||
@@ -10,6 +10,18 @@ | |||
10 | reg = <0x00000000 0x20000000>; | 10 | reg = <0x00000000 0x20000000>; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | host1x { | ||
14 | hdmi { | ||
15 | status = "okay"; | ||
16 | |||
17 | vdd-supply = <&hdmi_vdd_reg>; | ||
18 | pll-supply = <&hdmi_pll_reg>; | ||
19 | |||
20 | nvidia,ddc-i2c-bus = <&hdmi_ddc>; | ||
21 | nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ | ||
22 | }; | ||
23 | }; | ||
24 | |||
13 | pinmux { | 25 | pinmux { |
14 | pinctrl-names = "default"; | 26 | pinctrl-names = "default"; |
15 | pinctrl-0 = <&state_default>; | 27 | pinctrl-0 = <&state_default>; |
@@ -246,6 +258,11 @@ | |||
246 | clock-frequency = <216000000>; | 258 | clock-frequency = <216000000>; |
247 | }; | 259 | }; |
248 | 260 | ||
261 | hdmi_ddc: i2c@7000c400 { | ||
262 | status = "okay"; | ||
263 | clock-frequency = <100000>; | ||
264 | }; | ||
265 | |||
249 | i2c@7000d000 { | 266 | i2c@7000d000 { |
250 | status = "okay"; | 267 | status = "okay"; |
251 | clock-frequency = <100000>; | 268 | clock-frequency = <100000>; |
@@ -295,243 +312,182 @@ | |||
295 | in20-supply = <&mbatt_reg>; | 312 | in20-supply = <&mbatt_reg>; |
296 | 313 | ||
297 | regulators { | 314 | regulators { |
298 | #address-cells = <1>; | 315 | mbatt_reg: mbatt { |
299 | #size-cells = <0>; | ||
300 | |||
301 | mbatt_reg: regulator@0 { | ||
302 | reg = <0>; | ||
303 | regulator-compatible = "mbatt"; | ||
304 | regulator-name = "vbat_pmu"; | 316 | regulator-name = "vbat_pmu"; |
305 | regulator-always-on; | 317 | regulator-always-on; |
306 | }; | 318 | }; |
307 | 319 | ||
308 | regulator@1 { | 320 | sd1 { |
309 | reg = <1>; | ||
310 | regulator-compatible = "sd1"; | ||
311 | regulator-name = "nvvdd_sv1,vdd_cpu_pmu"; | 321 | regulator-name = "nvvdd_sv1,vdd_cpu_pmu"; |
312 | regulator-min-microvolt = <1000000>; | 322 | regulator-min-microvolt = <1000000>; |
313 | regulator-max-microvolt = <1000000>; | 323 | regulator-max-microvolt = <1000000>; |
314 | regulator-always-on; | 324 | regulator-always-on; |
315 | }; | 325 | }; |
316 | 326 | ||
317 | regulator@2 { | 327 | sd2 { |
318 | reg = <2>; | ||
319 | regulator-compatible = "sd2"; | ||
320 | regulator-name = "nvvdd_sv2,vdd_core"; | 328 | regulator-name = "nvvdd_sv2,vdd_core"; |
321 | regulator-min-microvolt = <1200000>; | 329 | regulator-min-microvolt = <1200000>; |
322 | regulator-max-microvolt = <1200000>; | 330 | regulator-max-microvolt = <1200000>; |
323 | regulator-always-on; | 331 | regulator-always-on; |
324 | }; | 332 | }; |
325 | 333 | ||
326 | nvvdd_sv3_reg: regulator@3 { | 334 | nvvdd_sv3_reg: sd3 { |
327 | reg = <3>; | ||
328 | regulator-compatible = "sd3"; | ||
329 | regulator-name = "nvvdd_sv3"; | 335 | regulator-name = "nvvdd_sv3"; |
330 | regulator-min-microvolt = <1800000>; | 336 | regulator-min-microvolt = <1800000>; |
331 | regulator-max-microvolt = <1800000>; | 337 | regulator-max-microvolt = <1800000>; |
332 | regulator-always-on; | 338 | regulator-always-on; |
333 | }; | 339 | }; |
334 | 340 | ||
335 | regulator@4 { | 341 | ldo1 { |
336 | reg = <4>; | ||
337 | regulator-compatible = "ldo1"; | ||
338 | regulator-name = "nvvdd_ldo1,vddio_rx_ddr,vcore_acc"; | 342 | regulator-name = "nvvdd_ldo1,vddio_rx_ddr,vcore_acc"; |
339 | regulator-min-microvolt = <3300000>; | 343 | regulator-min-microvolt = <3300000>; |
340 | regulator-max-microvolt = <3300000>; | 344 | regulator-max-microvolt = <3300000>; |
341 | regulator-always-on; | 345 | regulator-always-on; |
342 | }; | 346 | }; |
343 | 347 | ||
344 | regulator@5 { | 348 | ldo2 { |
345 | reg = <5>; | ||
346 | regulator-compatible = "ldo2"; | ||
347 | regulator-name = "nvvdd_ldo2,avdd_pll*"; | 349 | regulator-name = "nvvdd_ldo2,avdd_pll*"; |
348 | regulator-min-microvolt = <1100000>; | 350 | regulator-min-microvolt = <1100000>; |
349 | regulator-max-microvolt = <1100000>; | 351 | regulator-max-microvolt = <1100000>; |
350 | regulator-always-on; | 352 | regulator-always-on; |
351 | }; | 353 | }; |
352 | 354 | ||
353 | regulator@6 { | 355 | ldo3 { |
354 | reg = <6>; | ||
355 | regulator-compatible = "ldo3"; | ||
356 | regulator-name = "nvvdd_ldo3,vcom_1v8b"; | 356 | regulator-name = "nvvdd_ldo3,vcom_1v8b"; |
357 | regulator-min-microvolt = <1800000>; | 357 | regulator-min-microvolt = <1800000>; |
358 | regulator-max-microvolt = <1800000>; | 358 | regulator-max-microvolt = <1800000>; |
359 | regulator-always-on; | 359 | regulator-always-on; |
360 | }; | 360 | }; |
361 | 361 | ||
362 | regulator@7 { | 362 | ldo4 { |
363 | reg = <7>; | ||
364 | regulator-compatible = "ldo4"; | ||
365 | regulator-name = "nvvdd_ldo4,avdd_usb*"; | 363 | regulator-name = "nvvdd_ldo4,avdd_usb*"; |
366 | regulator-min-microvolt = <3300000>; | 364 | regulator-min-microvolt = <3300000>; |
367 | regulator-max-microvolt = <3300000>; | 365 | regulator-max-microvolt = <3300000>; |
368 | regulator-always-on; | 366 | regulator-always-on; |
369 | }; | 367 | }; |
370 | 368 | ||
371 | regulator@8 { | 369 | ldo5 { |
372 | reg = <8>; | ||
373 | regulator-compatible = "ldo5"; | ||
374 | regulator-name = "nvvdd_ldo5,vcore_mmc,avdd_lcd1,vddio_1wire"; | 370 | regulator-name = "nvvdd_ldo5,vcore_mmc,avdd_lcd1,vddio_1wire"; |
375 | regulator-min-microvolt = <2800000>; | 371 | regulator-min-microvolt = <2800000>; |
376 | regulator-max-microvolt = <2800000>; | 372 | regulator-max-microvolt = <2800000>; |
377 | regulator-always-on; | 373 | regulator-always-on; |
378 | }; | 374 | }; |
379 | 375 | ||
380 | regulator@9 { | 376 | hdmi_pll_reg: ldo6 { |
381 | reg = <9>; | ||
382 | regulator-compatible = "ldo6"; | ||
383 | regulator-name = "nvvdd_ldo6,avdd_hdmi_pll"; | 377 | regulator-name = "nvvdd_ldo6,avdd_hdmi_pll"; |
384 | regulator-min-microvolt = <1800000>; | 378 | regulator-min-microvolt = <1800000>; |
385 | regulator-max-microvolt = <1800000>; | 379 | regulator-max-microvolt = <1800000>; |
386 | }; | 380 | }; |
387 | 381 | ||
388 | regulator@10 { | 382 | ldo7 { |
389 | reg = <10>; | ||
390 | regulator-compatible = "ldo7"; | ||
391 | regulator-name = "nvvdd_ldo7,avddio_audio"; | 383 | regulator-name = "nvvdd_ldo7,avddio_audio"; |
392 | regulator-min-microvolt = <2800000>; | 384 | regulator-min-microvolt = <2800000>; |
393 | regulator-max-microvolt = <2800000>; | 385 | regulator-max-microvolt = <2800000>; |
394 | regulator-always-on; | 386 | regulator-always-on; |
395 | }; | 387 | }; |
396 | 388 | ||
397 | regulator@11 { | 389 | ldo8 { |
398 | reg = <11>; | ||
399 | regulator-compatible = "ldo8"; | ||
400 | regulator-name = "nvvdd_ldo8,vcom_3v0,vcore_cmps"; | 390 | regulator-name = "nvvdd_ldo8,vcom_3v0,vcore_cmps"; |
401 | regulator-min-microvolt = <3000000>; | 391 | regulator-min-microvolt = <3000000>; |
402 | regulator-max-microvolt = <3000000>; | 392 | regulator-max-microvolt = <3000000>; |
403 | }; | 393 | }; |
404 | 394 | ||
405 | regulator@12 { | 395 | ldo9 { |
406 | reg = <12>; | ||
407 | regulator-compatible = "ldo9"; | ||
408 | regulator-name = "nvvdd_ldo9,avdd_cam*"; | 396 | regulator-name = "nvvdd_ldo9,avdd_cam*"; |
409 | regulator-min-microvolt = <2800000>; | 397 | regulator-min-microvolt = <2800000>; |
410 | regulator-max-microvolt = <2800000>; | 398 | regulator-max-microvolt = <2800000>; |
411 | }; | 399 | }; |
412 | 400 | ||
413 | regulator@13 { | 401 | ldo10 { |
414 | reg = <13>; | ||
415 | regulator-compatible = "ldo10"; | ||
416 | regulator-name = "nvvdd_ldo10,avdd_usb_ic_3v0"; | 402 | regulator-name = "nvvdd_ldo10,avdd_usb_ic_3v0"; |
417 | regulator-min-microvolt = <3000000>; | 403 | regulator-min-microvolt = <3000000>; |
418 | regulator-max-microvolt = <3000000>; | 404 | regulator-max-microvolt = <3000000>; |
419 | regulator-always-on; | 405 | regulator-always-on; |
420 | }; | 406 | }; |
421 | 407 | ||
422 | regulator@14 { | 408 | hdmi_vdd_reg: ldo11 { |
423 | reg = <14>; | ||
424 | regulator-compatible = "ldo11"; | ||
425 | regulator-name = "nvvdd_ldo11,vddio_pex_clk,vcom_33,avdd_hdmi"; | 409 | regulator-name = "nvvdd_ldo11,vddio_pex_clk,vcom_33,avdd_hdmi"; |
426 | regulator-min-microvolt = <3300000>; | 410 | regulator-min-microvolt = <3300000>; |
427 | regulator-max-microvolt = <3300000>; | 411 | regulator-max-microvolt = <3300000>; |
428 | }; | 412 | }; |
429 | 413 | ||
430 | regulator@15 { | 414 | ldo12 { |
431 | reg = <15>; | ||
432 | regulator-compatible = "ldo12"; | ||
433 | regulator-name = "nvvdd_ldo12,vddio_sdio"; | 415 | regulator-name = "nvvdd_ldo12,vddio_sdio"; |
434 | regulator-min-microvolt = <2800000>; | 416 | regulator-min-microvolt = <2800000>; |
435 | regulator-max-microvolt = <2800000>; | 417 | regulator-max-microvolt = <2800000>; |
436 | regulator-always-on; | 418 | regulator-always-on; |
437 | }; | 419 | }; |
438 | 420 | ||
439 | regulator@16 { | 421 | ldo13 { |
440 | reg = <16>; | ||
441 | regulator-compatible = "ldo13"; | ||
442 | regulator-name = "nvvdd_ldo13,vcore_phtn,vdd_af"; | 422 | regulator-name = "nvvdd_ldo13,vcore_phtn,vdd_af"; |
443 | regulator-min-microvolt = <2800000>; | 423 | regulator-min-microvolt = <2800000>; |
444 | regulator-max-microvolt = <2800000>; | 424 | regulator-max-microvolt = <2800000>; |
445 | }; | 425 | }; |
446 | 426 | ||
447 | regulator@17 { | 427 | ldo14 { |
448 | reg = <17>; | ||
449 | regulator-compatible = "ldo14"; | ||
450 | regulator-name = "nvvdd_ldo14,avdd_vdac"; | 428 | regulator-name = "nvvdd_ldo14,avdd_vdac"; |
451 | regulator-min-microvolt = <2800000>; | 429 | regulator-min-microvolt = <2800000>; |
452 | regulator-max-microvolt = <2800000>; | 430 | regulator-max-microvolt = <2800000>; |
453 | }; | 431 | }; |
454 | 432 | ||
455 | regulator@18 { | 433 | ldo15 { |
456 | reg = <18>; | ||
457 | regulator-compatible = "ldo15"; | ||
458 | regulator-name = "nvvdd_ldo15,vcore_temp,vddio_hdcp"; | 434 | regulator-name = "nvvdd_ldo15,vcore_temp,vddio_hdcp"; |
459 | regulator-min-microvolt = <3300000>; | 435 | regulator-min-microvolt = <3300000>; |
460 | regulator-max-microvolt = <3300000>; | 436 | regulator-max-microvolt = <3300000>; |
461 | }; | 437 | }; |
462 | 438 | ||
463 | regulator@19 { | 439 | ldo16 { |
464 | reg = <19>; | ||
465 | regulator-compatible = "ldo16"; | ||
466 | regulator-name = "nvvdd_ldo16,vdd_dbrtr"; | 440 | regulator-name = "nvvdd_ldo16,vdd_dbrtr"; |
467 | regulator-min-microvolt = <1300000>; | 441 | regulator-min-microvolt = <1300000>; |
468 | regulator-max-microvolt = <1300000>; | 442 | regulator-max-microvolt = <1300000>; |
469 | }; | 443 | }; |
470 | 444 | ||
471 | regulator@20 { | 445 | ldo17 { |
472 | reg = <20>; | ||
473 | regulator-compatible = "ldo17"; | ||
474 | regulator-name = "nvvdd_ldo17,vddio_mipi"; | 446 | regulator-name = "nvvdd_ldo17,vddio_mipi"; |
475 | regulator-min-microvolt = <1200000>; | 447 | regulator-min-microvolt = <1200000>; |
476 | regulator-max-microvolt = <1200000>; | 448 | regulator-max-microvolt = <1200000>; |
477 | }; | 449 | }; |
478 | 450 | ||
479 | regulator@21 { | 451 | ldo18 { |
480 | reg = <21>; | ||
481 | regulator-compatible = "ldo18"; | ||
482 | regulator-name = "nvvdd_ldo18,vddio_vi,vcore_cam*"; | 452 | regulator-name = "nvvdd_ldo18,vddio_vi,vcore_cam*"; |
483 | regulator-min-microvolt = <1800000>; | 453 | regulator-min-microvolt = <1800000>; |
484 | regulator-max-microvolt = <1800000>; | 454 | regulator-max-microvolt = <1800000>; |
485 | }; | 455 | }; |
486 | 456 | ||
487 | regulator@22 { | 457 | ldo19 { |
488 | reg = <22>; | ||
489 | regulator-compatible = "ldo19"; | ||
490 | regulator-name = "nvvdd_ldo19,avdd_lcd2,vddio_lx"; | 458 | regulator-name = "nvvdd_ldo19,avdd_lcd2,vddio_lx"; |
491 | regulator-min-microvolt = <2800000>; | 459 | regulator-min-microvolt = <2800000>; |
492 | regulator-max-microvolt = <2800000>; | 460 | regulator-max-microvolt = <2800000>; |
493 | }; | 461 | }; |
494 | 462 | ||
495 | regulator@23 { | 463 | ldo20 { |
496 | reg = <23>; | ||
497 | regulator-compatible = "ldo20"; | ||
498 | regulator-name = "nvvdd_ldo20,vddio_ddr_1v2,vddio_hsic,vcom_1v2"; | 464 | regulator-name = "nvvdd_ldo20,vddio_ddr_1v2,vddio_hsic,vcom_1v2"; |
499 | regulator-min-microvolt = <1200000>; | 465 | regulator-min-microvolt = <1200000>; |
500 | regulator-max-microvolt = <1200000>; | 466 | regulator-max-microvolt = <1200000>; |
501 | regulator-always-on; | 467 | regulator-always-on; |
502 | }; | 468 | }; |
503 | 469 | ||
504 | regulator@24 { | 470 | out5v { |
505 | reg = <24>; | ||
506 | regulator-compatible = "out5v"; | ||
507 | regulator-name = "usb0_vbus_reg"; | 471 | regulator-name = "usb0_vbus_reg"; |
508 | }; | 472 | }; |
509 | 473 | ||
510 | regulator@25 { | 474 | out33v { |
511 | reg = <25>; | ||
512 | regulator-compatible = "out33v"; | ||
513 | regulator-name = "pmu_out3v3"; | 475 | regulator-name = "pmu_out3v3"; |
514 | }; | 476 | }; |
515 | 477 | ||
516 | regulator@26 { | 478 | bbat { |
517 | reg = <26>; | ||
518 | regulator-compatible = "bbat"; | ||
519 | regulator-name = "pmu_bbat"; | 479 | regulator-name = "pmu_bbat"; |
520 | regulator-min-microvolt = <2400000>; | 480 | regulator-min-microvolt = <2400000>; |
521 | regulator-max-microvolt = <2400000>; | 481 | regulator-max-microvolt = <2400000>; |
522 | regulator-always-on; | 482 | regulator-always-on; |
523 | }; | 483 | }; |
524 | 484 | ||
525 | regulator@27 { | 485 | sdby { |
526 | reg = <27>; | ||
527 | regulator-compatible = "sdby"; | ||
528 | regulator-name = "vdd_aon"; | 486 | regulator-name = "vdd_aon"; |
529 | regulator-always-on; | 487 | regulator-always-on; |
530 | }; | 488 | }; |
531 | 489 | ||
532 | regulator@28 { | 490 | vrtc { |
533 | reg = <28>; | ||
534 | regulator-compatible = "vrtc"; | ||
535 | regulator-name = "vrtc,pmu_vccadc"; | 491 | regulator-name = "vrtc,pmu_vccadc"; |
536 | regulator-always-on; | 492 | regulator-always-on; |
537 | }; | 493 | }; |
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi index f3a09d0d45bc..fba998e3954a 100644 --- a/arch/arm/boot/dts/tegra20.dtsi +++ b/arch/arm/boot/dts/tegra20.dtsi | |||
@@ -4,6 +4,102 @@ | |||
4 | compatible = "nvidia,tegra20"; | 4 | compatible = "nvidia,tegra20"; |
5 | interrupt-parent = <&intc>; | 5 | interrupt-parent = <&intc>; |
6 | 6 | ||
7 | host1x { | ||
8 | compatible = "nvidia,tegra20-host1x", "simple-bus"; | ||
9 | reg = <0x50000000 0x00024000>; | ||
10 | interrupts = <0 65 0x04 /* mpcore syncpt */ | ||
11 | 0 67 0x04>; /* mpcore general */ | ||
12 | |||
13 | #address-cells = <1>; | ||
14 | #size-cells = <1>; | ||
15 | |||
16 | ranges = <0x54000000 0x54000000 0x04000000>; | ||
17 | |||
18 | mpe { | ||
19 | compatible = "nvidia,tegra20-mpe"; | ||
20 | reg = <0x54040000 0x00040000>; | ||
21 | interrupts = <0 68 0x04>; | ||
22 | }; | ||
23 | |||
24 | vi { | ||
25 | compatible = "nvidia,tegra20-vi"; | ||
26 | reg = <0x54080000 0x00040000>; | ||
27 | interrupts = <0 69 0x04>; | ||
28 | }; | ||
29 | |||
30 | epp { | ||
31 | compatible = "nvidia,tegra20-epp"; | ||
32 | reg = <0x540c0000 0x00040000>; | ||
33 | interrupts = <0 70 0x04>; | ||
34 | }; | ||
35 | |||
36 | isp { | ||
37 | compatible = "nvidia,tegra20-isp"; | ||
38 | reg = <0x54100000 0x00040000>; | ||
39 | interrupts = <0 71 0x04>; | ||
40 | }; | ||
41 | |||
42 | gr2d { | ||
43 | compatible = "nvidia,tegra20-gr2d"; | ||
44 | reg = <0x54140000 0x00040000>; | ||
45 | interrupts = <0 72 0x04>; | ||
46 | }; | ||
47 | |||
48 | gr3d { | ||
49 | compatible = "nvidia,tegra20-gr3d"; | ||
50 | reg = <0x54180000 0x00040000>; | ||
51 | }; | ||
52 | |||
53 | dc@54200000 { | ||
54 | compatible = "nvidia,tegra20-dc"; | ||
55 | reg = <0x54200000 0x00040000>; | ||
56 | interrupts = <0 73 0x04>; | ||
57 | |||
58 | rgb { | ||
59 | status = "disabled"; | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | dc@54240000 { | ||
64 | compatible = "nvidia,tegra20-dc"; | ||
65 | reg = <0x54240000 0x00040000>; | ||
66 | interrupts = <0 74 0x04>; | ||
67 | |||
68 | rgb { | ||
69 | status = "disabled"; | ||
70 | }; | ||
71 | }; | ||
72 | |||
73 | hdmi { | ||
74 | compatible = "nvidia,tegra20-hdmi"; | ||
75 | reg = <0x54280000 0x00040000>; | ||
76 | interrupts = <0 75 0x04>; | ||
77 | status = "disabled"; | ||
78 | }; | ||
79 | |||
80 | tvo { | ||
81 | compatible = "nvidia,tegra20-tvo"; | ||
82 | reg = <0x542c0000 0x00040000>; | ||
83 | interrupts = <0 76 0x04>; | ||
84 | status = "disabled"; | ||
85 | }; | ||
86 | |||
87 | dsi { | ||
88 | compatible = "nvidia,tegra20-dsi"; | ||
89 | reg = <0x54300000 0x00040000>; | ||
90 | status = "disabled"; | ||
91 | }; | ||
92 | }; | ||
93 | |||
94 | cache-controller@50043000 { | ||
95 | compatible = "arm,pl310-cache"; | ||
96 | reg = <0x50043000 0x1000>; | ||
97 | arm,data-latency = <5 5 2>; | ||
98 | arm,tag-latency = <4 4 2>; | ||
99 | cache-unified; | ||
100 | cache-level = <2>; | ||
101 | }; | ||
102 | |||
7 | intc: interrupt-controller { | 103 | intc: interrupt-controller { |
8 | compatible = "arm,cortex-a9-gic"; | 104 | compatible = "arm,cortex-a9-gic"; |
9 | reg = <0x50041000 0x1000 | 105 | reg = <0x50041000 0x1000 |
@@ -138,6 +234,16 @@ | |||
138 | status = "disabled"; | 234 | status = "disabled"; |
139 | }; | 235 | }; |
140 | 236 | ||
237 | spi@7000c380 { | ||
238 | compatible = "nvidia,tegra20-sflash"; | ||
239 | reg = <0x7000c380 0x80>; | ||
240 | interrupts = <0 39 0x04>; | ||
241 | nvidia,dma-request-selector = <&apbdma 11>; | ||
242 | #address-cells = <1>; | ||
243 | #size-cells = <0>; | ||
244 | status = "disabled"; | ||
245 | }; | ||
246 | |||
141 | i2c@7000c400 { | 247 | i2c@7000c400 { |
142 | compatible = "nvidia,tegra20-i2c"; | 248 | compatible = "nvidia,tegra20-i2c"; |
143 | reg = <0x7000c400 0x100>; | 249 | reg = <0x7000c400 0x100>; |
@@ -165,6 +271,46 @@ | |||
165 | status = "disabled"; | 271 | status = "disabled"; |
166 | }; | 272 | }; |
167 | 273 | ||
274 | spi@7000d400 { | ||
275 | compatible = "nvidia,tegra20-slink"; | ||
276 | reg = <0x7000d400 0x200>; | ||
277 | interrupts = <0 59 0x04>; | ||
278 | nvidia,dma-request-selector = <&apbdma 15>; | ||
279 | #address-cells = <1>; | ||
280 | #size-cells = <0>; | ||
281 | status = "disabled"; | ||
282 | }; | ||
283 | |||
284 | spi@7000d600 { | ||
285 | compatible = "nvidia,tegra20-slink"; | ||
286 | reg = <0x7000d600 0x200>; | ||
287 | interrupts = <0 82 0x04>; | ||
288 | nvidia,dma-request-selector = <&apbdma 16>; | ||
289 | #address-cells = <1>; | ||
290 | #size-cells = <0>; | ||
291 | status = "disabled"; | ||
292 | }; | ||
293 | |||
294 | spi@7000d800 { | ||
295 | compatible = "nvidia,tegra20-slink"; | ||
296 | reg = <0x7000d480 0x200>; | ||
297 | interrupts = <0 83 0x04>; | ||
298 | nvidia,dma-request-selector = <&apbdma 17>; | ||
299 | #address-cells = <1>; | ||
300 | #size-cells = <0>; | ||
301 | status = "disabled"; | ||
302 | }; | ||
303 | |||
304 | spi@7000da00 { | ||
305 | compatible = "nvidia,tegra20-slink"; | ||
306 | reg = <0x7000da00 0x200>; | ||
307 | interrupts = <0 93 0x04>; | ||
308 | nvidia,dma-request-selector = <&apbdma 18>; | ||
309 | #address-cells = <1>; | ||
310 | #size-cells = <0>; | ||
311 | status = "disabled"; | ||
312 | }; | ||
313 | |||
168 | pmc { | 314 | pmc { |
169 | compatible = "nvidia,tegra20-pmc"; | 315 | compatible = "nvidia,tegra20-pmc"; |
170 | reg = <0x7000e400 0x400>; | 316 | reg = <0x7000e400 0x400>; |
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a02.dts b/arch/arm/boot/dts/tegra30-cardhu-a02.dts index dd4222f00eca..adc88aa50eb6 100644 --- a/arch/arm/boot/dts/tegra30-cardhu-a02.dts +++ b/arch/arm/boot/dts/tegra30-cardhu-a02.dts | |||
@@ -83,5 +83,11 @@ | |||
83 | gpio = <&gpio 83 0>; /* GPIO PK3 */ | 83 | gpio = <&gpio 83 0>; /* GPIO PK3 */ |
84 | }; | 84 | }; |
85 | }; | 85 | }; |
86 | |||
87 | sdhci@78000400 { | ||
88 | status = "okay"; | ||
89 | power-gpios = <&gpio 28 0>; /* gpio PD4 */ | ||
90 | bus-width = <4>; | ||
91 | }; | ||
86 | }; | 92 | }; |
87 | 93 | ||
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a04.dts b/arch/arm/boot/dts/tegra30-cardhu-a04.dts index 0828f097ca86..08163e145d57 100644 --- a/arch/arm/boot/dts/tegra30-cardhu-a04.dts +++ b/arch/arm/boot/dts/tegra30-cardhu-a04.dts | |||
@@ -95,4 +95,10 @@ | |||
95 | gpio = <&gpio 232 0>; /* GPIO PDD0 */ | 95 | gpio = <&gpio 232 0>; /* GPIO PDD0 */ |
96 | }; | 96 | }; |
97 | }; | 97 | }; |
98 | |||
99 | sdhci@78000400 { | ||
100 | status = "okay"; | ||
101 | power-gpios = <&gpio 27 0>; /* gpio PD3 */ | ||
102 | bus-width = <4>; | ||
103 | }; | ||
98 | }; | 104 | }; |
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi index d10c9c5a3606..bdb2a660f376 100644 --- a/arch/arm/boot/dts/tegra30-cardhu.dtsi +++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi | |||
@@ -52,6 +52,22 @@ | |||
52 | nvidia,pull = <2>; | 52 | nvidia,pull = <2>; |
53 | nvidia,tristate = <0>; | 53 | nvidia,tristate = <0>; |
54 | }; | 54 | }; |
55 | sdmmc3_clk_pa6 { | ||
56 | nvidia,pins = "sdmmc3_clk_pa6"; | ||
57 | nvidia,function = "sdmmc3"; | ||
58 | nvidia,pull = <0>; | ||
59 | nvidia,tristate = <0>; | ||
60 | }; | ||
61 | sdmmc3_cmd_pa7 { | ||
62 | nvidia,pins = "sdmmc3_cmd_pa7", | ||
63 | "sdmmc3_dat0_pb7", | ||
64 | "sdmmc3_dat1_pb6", | ||
65 | "sdmmc3_dat2_pb5", | ||
66 | "sdmmc3_dat3_pb4"; | ||
67 | nvidia,function = "sdmmc3"; | ||
68 | nvidia,pull = <2>; | ||
69 | nvidia,tristate = <0>; | ||
70 | }; | ||
55 | sdmmc4_clk_pcc4 { | 71 | sdmmc4_clk_pcc4 { |
56 | nvidia,pins = "sdmmc4_clk_pcc4", | 72 | nvidia,pins = "sdmmc4_clk_pcc4", |
57 | "sdmmc4_rst_n_pcc3"; | 73 | "sdmmc4_rst_n_pcc3"; |
@@ -81,6 +97,15 @@ | |||
81 | nvidia,pull = <0>; | 97 | nvidia,pull = <0>; |
82 | nvidia,tristate = <0>; | 98 | nvidia,tristate = <0>; |
83 | }; | 99 | }; |
100 | sdio3 { | ||
101 | nvidia,pins = "drive_sdio3"; | ||
102 | nvidia,high-speed-mode = <0>; | ||
103 | nvidia,schmitt = <0>; | ||
104 | nvidia,pull-down-strength = <46>; | ||
105 | nvidia,pull-up-strength = <42>; | ||
106 | nvidia,slew-rate-rising = <1>; | ||
107 | nvidia,slew-rate-falling = <1>; | ||
108 | }; | ||
84 | }; | 109 | }; |
85 | }; | 110 | }; |
86 | 111 | ||
@@ -171,56 +196,41 @@ | |||
171 | vccio-supply = <&vdd_ac_bat_reg>; | 196 | vccio-supply = <&vdd_ac_bat_reg>; |
172 | 197 | ||
173 | regulators { | 198 | regulators { |
174 | #address-cells = <1>; | 199 | vdd1_reg: vdd1 { |
175 | #size-cells = <0>; | ||
176 | |||
177 | vdd1_reg: regulator@0 { | ||
178 | reg = <0>; | ||
179 | regulator-compatible = "vdd1"; | ||
180 | regulator-name = "vddio_ddr_1v2"; | 200 | regulator-name = "vddio_ddr_1v2"; |
181 | regulator-min-microvolt = <1200000>; | 201 | regulator-min-microvolt = <1200000>; |
182 | regulator-max-microvolt = <1200000>; | 202 | regulator-max-microvolt = <1200000>; |
183 | regulator-always-on; | 203 | regulator-always-on; |
184 | }; | 204 | }; |
185 | 205 | ||
186 | vdd2_reg: regulator@1 { | 206 | vdd2_reg: vdd2 { |
187 | reg = <1>; | ||
188 | regulator-compatible = "vdd2"; | ||
189 | regulator-name = "vdd_1v5_gen"; | 207 | regulator-name = "vdd_1v5_gen"; |
190 | regulator-min-microvolt = <1500000>; | 208 | regulator-min-microvolt = <1500000>; |
191 | regulator-max-microvolt = <1500000>; | 209 | regulator-max-microvolt = <1500000>; |
192 | regulator-always-on; | 210 | regulator-always-on; |
193 | }; | 211 | }; |
194 | 212 | ||
195 | vddctrl_reg: regulator@2 { | 213 | vddctrl_reg: vddctrl { |
196 | reg = <2>; | ||
197 | regulator-compatible = "vddctrl"; | ||
198 | regulator-name = "vdd_cpu,vdd_sys"; | 214 | regulator-name = "vdd_cpu,vdd_sys"; |
199 | regulator-min-microvolt = <1000000>; | 215 | regulator-min-microvolt = <1000000>; |
200 | regulator-max-microvolt = <1000000>; | 216 | regulator-max-microvolt = <1000000>; |
201 | regulator-always-on; | 217 | regulator-always-on; |
202 | }; | 218 | }; |
203 | 219 | ||
204 | vio_reg: regulator@3 { | 220 | vio_reg: vio { |
205 | reg = <3>; | ||
206 | regulator-compatible = "vio"; | ||
207 | regulator-name = "vdd_1v8_gen"; | 221 | regulator-name = "vdd_1v8_gen"; |
208 | regulator-min-microvolt = <1800000>; | 222 | regulator-min-microvolt = <1800000>; |
209 | regulator-max-microvolt = <1800000>; | 223 | regulator-max-microvolt = <1800000>; |
210 | regulator-always-on; | 224 | regulator-always-on; |
211 | }; | 225 | }; |
212 | 226 | ||
213 | ldo1_reg: regulator@4 { | 227 | ldo1_reg: ldo1 { |
214 | reg = <4>; | ||
215 | regulator-compatible = "ldo1"; | ||
216 | regulator-name = "vdd_pexa,vdd_pexb"; | 228 | regulator-name = "vdd_pexa,vdd_pexb"; |
217 | regulator-min-microvolt = <1050000>; | 229 | regulator-min-microvolt = <1050000>; |
218 | regulator-max-microvolt = <1050000>; | 230 | regulator-max-microvolt = <1050000>; |
219 | }; | 231 | }; |
220 | 232 | ||
221 | ldo2_reg: regulator@5 { | 233 | ldo2_reg: ldo2 { |
222 | reg = <5>; | ||
223 | regulator-compatible = "ldo2"; | ||
224 | regulator-name = "vdd_sata,avdd_plle"; | 234 | regulator-name = "vdd_sata,avdd_plle"; |
225 | regulator-min-microvolt = <1050000>; | 235 | regulator-min-microvolt = <1050000>; |
226 | regulator-max-microvolt = <1050000>; | 236 | regulator-max-microvolt = <1050000>; |
@@ -228,44 +238,34 @@ | |||
228 | 238 | ||
229 | /* LDO3 is not connected to anything */ | 239 | /* LDO3 is not connected to anything */ |
230 | 240 | ||
231 | ldo4_reg: regulator@7 { | 241 | ldo4_reg: ldo4 { |
232 | reg = <7>; | ||
233 | regulator-compatible = "ldo4"; | ||
234 | regulator-name = "vdd_rtc"; | 242 | regulator-name = "vdd_rtc"; |
235 | regulator-min-microvolt = <1200000>; | 243 | regulator-min-microvolt = <1200000>; |
236 | regulator-max-microvolt = <1200000>; | 244 | regulator-max-microvolt = <1200000>; |
237 | regulator-always-on; | 245 | regulator-always-on; |
238 | }; | 246 | }; |
239 | 247 | ||
240 | ldo5_reg: regulator@8 { | 248 | ldo5_reg: ldo5 { |
241 | reg = <8>; | ||
242 | regulator-compatible = "ldo5"; | ||
243 | regulator-name = "vddio_sdmmc,avdd_vdac"; | 249 | regulator-name = "vddio_sdmmc,avdd_vdac"; |
244 | regulator-min-microvolt = <3300000>; | 250 | regulator-min-microvolt = <3300000>; |
245 | regulator-max-microvolt = <3300000>; | 251 | regulator-max-microvolt = <3300000>; |
246 | regulator-always-on; | 252 | regulator-always-on; |
247 | }; | 253 | }; |
248 | 254 | ||
249 | ldo6_reg: regulator@9 { | 255 | ldo6_reg: ldo6 { |
250 | reg = <9>; | ||
251 | regulator-compatible = "ldo6"; | ||
252 | regulator-name = "avdd_dsi_csi,pwrdet_mipi"; | 256 | regulator-name = "avdd_dsi_csi,pwrdet_mipi"; |
253 | regulator-min-microvolt = <1200000>; | 257 | regulator-min-microvolt = <1200000>; |
254 | regulator-max-microvolt = <1200000>; | 258 | regulator-max-microvolt = <1200000>; |
255 | }; | 259 | }; |
256 | 260 | ||
257 | ldo7_reg: regulator@10 { | 261 | ldo7_reg: ldo7 { |
258 | reg = <10>; | ||
259 | regulator-compatible = "ldo7"; | ||
260 | regulator-name = "vdd_pllm,x,u,a_p_c_s"; | 262 | regulator-name = "vdd_pllm,x,u,a_p_c_s"; |
261 | regulator-min-microvolt = <1200000>; | 263 | regulator-min-microvolt = <1200000>; |
262 | regulator-max-microvolt = <1200000>; | 264 | regulator-max-microvolt = <1200000>; |
263 | regulator-always-on; | 265 | regulator-always-on; |
264 | }; | 266 | }; |
265 | 267 | ||
266 | ldo8_reg: regulator@11 { | 268 | ldo8_reg: ldo8 { |
267 | reg = <11>; | ||
268 | regulator-compatible = "ldo8"; | ||
269 | regulator-name = "vdd_ddr_hs"; | 269 | regulator-name = "vdd_ddr_hs"; |
270 | regulator-min-microvolt = <1000000>; | 270 | regulator-min-microvolt = <1000000>; |
271 | regulator-max-microvolt = <1000000>; | 271 | regulator-max-microvolt = <1000000>; |
@@ -275,6 +275,16 @@ | |||
275 | }; | 275 | }; |
276 | }; | 276 | }; |
277 | 277 | ||
278 | spi@7000da00 { | ||
279 | status = "okay"; | ||
280 | spi-max-frequency = <25000000>; | ||
281 | spi-flash@1 { | ||
282 | compatible = "winbond,w25q32"; | ||
283 | reg = <1>; | ||
284 | spi-max-frequency = <20000000>; | ||
285 | }; | ||
286 | }; | ||
287 | |||
278 | ahub { | 288 | ahub { |
279 | i2s@70080400 { | 289 | i2s@70080400 { |
280 | status = "okay"; | 290 | status = "okay"; |
@@ -409,6 +419,8 @@ | |||
409 | regulator-name = "vdd_com"; | 419 | regulator-name = "vdd_com"; |
410 | regulator-min-microvolt = <3300000>; | 420 | regulator-min-microvolt = <3300000>; |
411 | regulator-max-microvolt = <3300000>; | 421 | regulator-max-microvolt = <3300000>; |
422 | regulator-always-on; | ||
423 | regulator-boot-on; | ||
412 | enable-active-high; | 424 | enable-active-high; |
413 | gpio = <&gpio 24 0>; /* gpio PD0 */ | 425 | gpio = <&gpio 24 0>; /* gpio PD0 */ |
414 | vin-supply = <&sys_3v3_reg>; | 426 | vin-supply = <&sys_3v3_reg>; |
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi index df7f2270fc91..efa603d47a6a 100644 --- a/arch/arm/boot/dts/tegra30.dtsi +++ b/arch/arm/boot/dts/tegra30.dtsi | |||
@@ -4,6 +4,102 @@ | |||
4 | compatible = "nvidia,tegra30"; | 4 | compatible = "nvidia,tegra30"; |
5 | interrupt-parent = <&intc>; | 5 | interrupt-parent = <&intc>; |
6 | 6 | ||
7 | host1x { | ||
8 | compatible = "nvidia,tegra30-host1x", "simple-bus"; | ||
9 | reg = <0x50000000 0x00024000>; | ||
10 | interrupts = <0 65 0x04 /* mpcore syncpt */ | ||
11 | 0 67 0x04>; /* mpcore general */ | ||
12 | |||
13 | #address-cells = <1>; | ||
14 | #size-cells = <1>; | ||
15 | |||
16 | ranges = <0x54000000 0x54000000 0x04000000>; | ||
17 | |||
18 | mpe { | ||
19 | compatible = "nvidia,tegra30-mpe"; | ||
20 | reg = <0x54040000 0x00040000>; | ||
21 | interrupts = <0 68 0x04>; | ||
22 | }; | ||
23 | |||
24 | vi { | ||
25 | compatible = "nvidia,tegra30-vi"; | ||
26 | reg = <0x54080000 0x00040000>; | ||
27 | interrupts = <0 69 0x04>; | ||
28 | }; | ||
29 | |||
30 | epp { | ||
31 | compatible = "nvidia,tegra30-epp"; | ||
32 | reg = <0x540c0000 0x00040000>; | ||
33 | interrupts = <0 70 0x04>; | ||
34 | }; | ||
35 | |||
36 | isp { | ||
37 | compatible = "nvidia,tegra30-isp"; | ||
38 | reg = <0x54100000 0x00040000>; | ||
39 | interrupts = <0 71 0x04>; | ||
40 | }; | ||
41 | |||
42 | gr2d { | ||
43 | compatible = "nvidia,tegra30-gr2d"; | ||
44 | reg = <0x54140000 0x00040000>; | ||
45 | interrupts = <0 72 0x04>; | ||
46 | }; | ||
47 | |||
48 | gr3d { | ||
49 | compatible = "nvidia,tegra30-gr3d"; | ||
50 | reg = <0x54180000 0x00040000>; | ||
51 | }; | ||
52 | |||
53 | dc@54200000 { | ||
54 | compatible = "nvidia,tegra30-dc"; | ||
55 | reg = <0x54200000 0x00040000>; | ||
56 | interrupts = <0 73 0x04>; | ||
57 | |||
58 | rgb { | ||
59 | status = "disabled"; | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | dc@54240000 { | ||
64 | compatible = "nvidia,tegra30-dc"; | ||
65 | reg = <0x54240000 0x00040000>; | ||
66 | interrupts = <0 74 0x04>; | ||
67 | |||
68 | rgb { | ||
69 | status = "disabled"; | ||
70 | }; | ||
71 | }; | ||
72 | |||
73 | hdmi { | ||
74 | compatible = "nvidia,tegra30-hdmi"; | ||
75 | reg = <0x54280000 0x00040000>; | ||
76 | interrupts = <0 75 0x04>; | ||
77 | status = "disabled"; | ||
78 | }; | ||
79 | |||
80 | tvo { | ||
81 | compatible = "nvidia,tegra30-tvo"; | ||
82 | reg = <0x542c0000 0x00040000>; | ||
83 | interrupts = <0 76 0x04>; | ||
84 | status = "disabled"; | ||
85 | }; | ||
86 | |||
87 | dsi { | ||
88 | compatible = "nvidia,tegra30-dsi"; | ||
89 | reg = <0x54300000 0x00040000>; | ||
90 | status = "disabled"; | ||
91 | }; | ||
92 | }; | ||
93 | |||
94 | cache-controller@50043000 { | ||
95 | compatible = "arm,pl310-cache"; | ||
96 | reg = <0x50043000 0x1000>; | ||
97 | arm,data-latency = <6 6 2>; | ||
98 | arm,tag-latency = <5 5 2>; | ||
99 | cache-unified; | ||
100 | cache-level = <2>; | ||
101 | }; | ||
102 | |||
7 | intc: interrupt-controller { | 103 | intc: interrupt-controller { |
8 | compatible = "arm,cortex-a9-gic"; | 104 | compatible = "arm,cortex-a9-gic"; |
9 | reg = <0x50041000 0x1000 | 105 | reg = <0x50041000 0x1000 |
@@ -168,6 +264,66 @@ | |||
168 | status = "disabled"; | 264 | status = "disabled"; |
169 | }; | 265 | }; |
170 | 266 | ||
267 | spi@7000d400 { | ||
268 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
269 | reg = <0x7000d400 0x200>; | ||
270 | interrupts = <0 59 0x04>; | ||
271 | nvidia,dma-request-selector = <&apbdma 15>; | ||
272 | #address-cells = <1>; | ||
273 | #size-cells = <0>; | ||
274 | status = "disabled"; | ||
275 | }; | ||
276 | |||
277 | spi@7000d600 { | ||
278 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
279 | reg = <0x7000d600 0x200>; | ||
280 | interrupts = <0 82 0x04>; | ||
281 | nvidia,dma-request-selector = <&apbdma 16>; | ||
282 | #address-cells = <1>; | ||
283 | #size-cells = <0>; | ||
284 | status = "disabled"; | ||
285 | }; | ||
286 | |||
287 | spi@7000d800 { | ||
288 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
289 | reg = <0x7000d480 0x200>; | ||
290 | interrupts = <0 83 0x04>; | ||
291 | nvidia,dma-request-selector = <&apbdma 17>; | ||
292 | #address-cells = <1>; | ||
293 | #size-cells = <0>; | ||
294 | status = "disabled"; | ||
295 | }; | ||
296 | |||
297 | spi@7000da00 { | ||
298 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
299 | reg = <0x7000da00 0x200>; | ||
300 | interrupts = <0 93 0x04>; | ||
301 | nvidia,dma-request-selector = <&apbdma 18>; | ||
302 | #address-cells = <1>; | ||
303 | #size-cells = <0>; | ||
304 | status = "disabled"; | ||
305 | }; | ||
306 | |||
307 | spi@7000dc00 { | ||
308 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
309 | reg = <0x7000dc00 0x200>; | ||
310 | interrupts = <0 94 0x04>; | ||
311 | nvidia,dma-request-selector = <&apbdma 27>; | ||
312 | #address-cells = <1>; | ||
313 | #size-cells = <0>; | ||
314 | status = "disabled"; | ||
315 | }; | ||
316 | |||
317 | spi@7000de00 { | ||
318 | compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; | ||
319 | reg = <0x7000de00 0x200>; | ||
320 | interrupts = <0 79 0x04>; | ||
321 | nvidia,dma-request-selector = <&apbdma 28>; | ||
322 | #address-cells = <1>; | ||
323 | #size-cells = <0>; | ||
324 | status = "disabled"; | ||
325 | }; | ||
326 | |||
171 | pmc { | 327 | pmc { |
172 | compatible = "nvidia,tegra20-pmc", "nvidia,tegra30-pmc"; | 328 | compatible = "nvidia,tegra20-pmc", "nvidia,tegra30-pmc"; |
173 | reg = <0x7000e400 0x400>; | 329 | reg = <0x7000e400 0x400>; |
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi index ff000172c93c..63411b036932 100644 --- a/arch/arm/boot/dts/twl4030.dtsi +++ b/arch/arm/boot/dts/twl4030.dtsi | |||
@@ -37,6 +37,24 @@ | |||
37 | regulator-max-microvolt = <3150000>; | 37 | regulator-max-microvolt = <3150000>; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | vusb1v5: regulator-vusb1v5 { | ||
41 | compatible = "ti,twl4030-vusb1v5"; | ||
42 | }; | ||
43 | |||
44 | vusb1v8: regulator-vusb1v8 { | ||
45 | compatible = "ti,twl4030-vusb1v8"; | ||
46 | }; | ||
47 | |||
48 | vusb3v1: regulator-vusb3v1 { | ||
49 | compatible = "ti,twl4030-vusb3v1"; | ||
50 | }; | ||
51 | |||
52 | vsim: regulator-vsim { | ||
53 | compatible = "ti,twl4030-vsim"; | ||
54 | regulator-min-microvolt = <1800000>; | ||
55 | regulator-max-microvolt = <3000000>; | ||
56 | }; | ||
57 | |||
40 | twl_gpio: gpio { | 58 | twl_gpio: gpio { |
41 | compatible = "ti,twl4030-gpio"; | 59 | compatible = "ti,twl4030-gpio"; |
42 | gpio-controller; | 60 | gpio-controller; |
@@ -44,4 +62,13 @@ | |||
44 | interrupt-controller; | 62 | interrupt-controller; |
45 | #interrupt-cells = <1>; | 63 | #interrupt-cells = <1>; |
46 | }; | 64 | }; |
65 | |||
66 | twl4030-usb { | ||
67 | compatible = "ti,twl4030-usb"; | ||
68 | interrupts = <10>, <4>; | ||
69 | usb1v5-supply = <&vusb1v5>; | ||
70 | usb1v8-supply = <&vusb1v8>; | ||
71 | usb3v1-supply = <&vusb3v1>; | ||
72 | usb_mode = <1>; | ||
73 | }; | ||
47 | }; | 74 | }; |
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi index 123e2c40218a..9996cfc5ee80 100644 --- a/arch/arm/boot/dts/twl6030.dtsi +++ b/arch/arm/boot/dts/twl6030.dtsi | |||
@@ -86,4 +86,9 @@ | |||
86 | clk32kg: regulator-clk32kg { | 86 | clk32kg: regulator-clk32kg { |
87 | compatible = "ti,twl6030-clk32kg"; | 87 | compatible = "ti,twl6030-clk32kg"; |
88 | }; | 88 | }; |
89 | |||
90 | twl_usb_comparator: usb-comparator { | ||
91 | compatible = "ti,twl6030-usb"; | ||
92 | interrupts = <4>, <10>; | ||
93 | }; | ||
89 | }; | 94 | }; |
diff --git a/arch/arm/boot/dts/u9540.dts b/arch/arm/boot/dts/u9540.dts new file mode 100644 index 000000000000..95892ec6c342 --- /dev/null +++ b/arch/arm/boot/dts/u9540.dts | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * Copyright 2012 ST-Ericsson AB | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | /include/ "dbx5x0.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ST-Ericsson U9540 platform with Device Tree"; | ||
17 | compatible = "st-ericsson,u9540"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x20000000>; | ||
21 | }; | ||
22 | |||
23 | soc-u9500 { | ||
24 | uart@80120000 { | ||
25 | status = "okay"; | ||
26 | }; | ||
27 | |||
28 | uart@80121000 { | ||
29 | status = "okay"; | ||
30 | }; | ||
31 | |||
32 | uart@80007000 { | ||
33 | status = "okay"; | ||
34 | }; | ||
35 | |||
36 | // External Micro SD slot | ||
37 | sdi0_per1@80126000 { | ||
38 | arm,primecell-periphid = <0x10480180>; | ||
39 | max-frequency = <100000000>; | ||
40 | bus-width = <4>; | ||
41 | mmc-cap-sd-highspeed; | ||
42 | mmc-cap-mmc-highspeed; | ||
43 | vmmc-supply = <&ab8500_ldo_aux3_reg>; | ||
44 | |||
45 | cd-gpios = <&gpio7 6 0x4>; // 230 | ||
46 | cd-inverted; | ||
47 | |||
48 | status = "okay"; | ||
49 | }; | ||
50 | |||
51 | |||
52 | // WLAN SDIO channel | ||
53 | sdi1_per2@80118000 { | ||
54 | arm,primecell-periphid = <0x10480180>; | ||
55 | max-frequency = <50000000>; | ||
56 | bus-width = <4>; | ||
57 | |||
58 | status = "okay"; | ||
59 | }; | ||
60 | |||
61 | // On-board eMMC | ||
62 | sdi4_per2@80114000 { | ||
63 | arm,primecell-periphid = <0x10480180>; | ||
64 | max-frequency = <100000000>; | ||
65 | bus-width = <8>; | ||
66 | mmc-cap-mmc-highspeed; | ||
67 | vmmc-supply = <&ab8500_ldo_aux2_reg>; | ||
68 | |||
69 | status = "okay"; | ||
70 | }; | ||
71 | }; | ||
72 | }; | ||
diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi new file mode 100644 index 000000000000..401c1262d4ed --- /dev/null +++ b/arch/arm/boot/dts/zynq-7000.dtsi | |||
@@ -0,0 +1,166 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 Xilinx | ||
3 | * | ||
4 | * This software is licensed under the terms of the GNU General Public | ||
5 | * License version 2, as published by the Free Software Foundation, and | ||
6 | * may be copied, distributed, and modified under those terms. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | /include/ "skeleton.dtsi" | ||
14 | |||
15 | / { | ||
16 | compatible = "xlnx,zynq-7000"; | ||
17 | |||
18 | amba { | ||
19 | compatible = "simple-bus"; | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <1>; | ||
22 | interrupt-parent = <&intc>; | ||
23 | ranges; | ||
24 | |||
25 | intc: interrupt-controller@f8f01000 { | ||
26 | compatible = "arm,cortex-a9-gic"; | ||
27 | #interrupt-cells = <3>; | ||
28 | #address-cells = <1>; | ||
29 | interrupt-controller; | ||
30 | reg = <0xF8F01000 0x1000>, | ||
31 | <0xF8F00100 0x100>; | ||
32 | }; | ||
33 | |||
34 | L2: cache-controller { | ||
35 | compatible = "arm,pl310-cache"; | ||
36 | reg = <0xF8F02000 0x1000>; | ||
37 | arm,data-latency = <2 3 2>; | ||
38 | arm,tag-latency = <2 3 2>; | ||
39 | cache-unified; | ||
40 | cache-level = <2>; | ||
41 | }; | ||
42 | |||
43 | uart0: uart@e0000000 { | ||
44 | compatible = "xlnx,xuartps"; | ||
45 | reg = <0xE0000000 0x1000>; | ||
46 | interrupts = <0 27 4>; | ||
47 | clock = <50000000>; | ||
48 | }; | ||
49 | |||
50 | uart1: uart@e0001000 { | ||
51 | compatible = "xlnx,xuartps"; | ||
52 | reg = <0xE0001000 0x1000>; | ||
53 | interrupts = <0 50 4>; | ||
54 | clock = <50000000>; | ||
55 | }; | ||
56 | |||
57 | slcr: slcr@f8000000 { | ||
58 | compatible = "xlnx,zynq-slcr"; | ||
59 | reg = <0xF8000000 0x1000>; | ||
60 | |||
61 | clocks { | ||
62 | #address-cells = <1>; | ||
63 | #size-cells = <0>; | ||
64 | |||
65 | ps_clk: ps_clk { | ||
66 | #clock-cells = <0>; | ||
67 | compatible = "fixed-clock"; | ||
68 | /* clock-frequency set in board-specific file */ | ||
69 | clock-output-names = "ps_clk"; | ||
70 | }; | ||
71 | armpll: armpll { | ||
72 | #clock-cells = <0>; | ||
73 | compatible = "xlnx,zynq-pll"; | ||
74 | clocks = <&ps_clk>; | ||
75 | reg = <0x100 0x110>; | ||
76 | clock-output-names = "armpll"; | ||
77 | }; | ||
78 | ddrpll: ddrpll { | ||
79 | #clock-cells = <0>; | ||
80 | compatible = "xlnx,zynq-pll"; | ||
81 | clocks = <&ps_clk>; | ||
82 | reg = <0x104 0x114>; | ||
83 | clock-output-names = "ddrpll"; | ||
84 | }; | ||
85 | iopll: iopll { | ||
86 | #clock-cells = <0>; | ||
87 | compatible = "xlnx,zynq-pll"; | ||
88 | clocks = <&ps_clk>; | ||
89 | reg = <0x108 0x118>; | ||
90 | clock-output-names = "iopll"; | ||
91 | }; | ||
92 | uart_clk: uart_clk { | ||
93 | #clock-cells = <1>; | ||
94 | compatible = "xlnx,zynq-periph-clock"; | ||
95 | clocks = <&iopll &armpll &ddrpll>; | ||
96 | reg = <0x154>; | ||
97 | clock-output-names = "uart0_ref_clk", | ||
98 | "uart1_ref_clk"; | ||
99 | }; | ||
100 | cpu_clk: cpu_clk { | ||
101 | #clock-cells = <1>; | ||
102 | compatible = "xlnx,zynq-cpu-clock"; | ||
103 | clocks = <&iopll &armpll &ddrpll>; | ||
104 | reg = <0x120 0x1C4>; | ||
105 | clock-output-names = "cpu_6x4x", | ||
106 | "cpu_3x2x", | ||
107 | "cpu_2x", | ||
108 | "cpu_1x"; | ||
109 | }; | ||
110 | }; | ||
111 | }; | ||
112 | |||
113 | ttc0: ttc0@f8001000 { | ||
114 | #address-cells = <1>; | ||
115 | #size-cells = <0>; | ||
116 | compatible = "xlnx,ttc"; | ||
117 | reg = <0xF8001000 0x1000>; | ||
118 | clocks = <&cpu_clk 3>; | ||
119 | clock-names = "cpu_1x"; | ||
120 | clock-ranges; | ||
121 | |||
122 | ttc0_0: ttc0.0 { | ||
123 | status = "disabled"; | ||
124 | reg = <0>; | ||
125 | interrupts = <0 10 4>; | ||
126 | }; | ||
127 | ttc0_1: ttc0.1 { | ||
128 | status = "disabled"; | ||
129 | reg = <1>; | ||
130 | interrupts = <0 11 4>; | ||
131 | }; | ||
132 | ttc0_2: ttc0.2 { | ||
133 | status = "disabled"; | ||
134 | reg = <2>; | ||
135 | interrupts = <0 12 4>; | ||
136 | }; | ||
137 | }; | ||
138 | |||
139 | ttc1: ttc1@f8002000 { | ||
140 | #interrupt-parent = <&intc>; | ||
141 | #address-cells = <1>; | ||
142 | #size-cells = <0>; | ||
143 | compatible = "xlnx,ttc"; | ||
144 | reg = <0xF8002000 0x1000>; | ||
145 | clocks = <&cpu_clk 3>; | ||
146 | clock-names = "cpu_1x"; | ||
147 | clock-ranges; | ||
148 | |||
149 | ttc1_0: ttc1.0 { | ||
150 | status = "disabled"; | ||
151 | reg = <0>; | ||
152 | interrupts = <0 37 4>; | ||
153 | }; | ||
154 | ttc1_1: ttc1.1 { | ||
155 | status = "disabled"; | ||
156 | reg = <1>; | ||
157 | interrupts = <0 38 4>; | ||
158 | }; | ||
159 | ttc1_2: ttc1.2 { | ||
160 | status = "disabled"; | ||
161 | reg = <2>; | ||
162 | interrupts = <0 39 4>; | ||
163 | }; | ||
164 | }; | ||
165 | }; | ||
166 | }; | ||
diff --git a/arch/arm/boot/dts/zynq-ep107.dts b/arch/arm/boot/dts/zynq-ep107.dts deleted file mode 100644 index 37ca192fb193..000000000000 --- a/arch/arm/boot/dts/zynq-ep107.dts +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 Xilinx | ||
3 | * | ||
4 | * This software is licensed under the terms of the GNU General Public | ||
5 | * License version 2, as published by the Free Software Foundation, and | ||
6 | * may be copied, distributed, and modified under those terms. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | |||
14 | /dts-v1/; | ||
15 | / { | ||
16 | model = "Xilinx Zynq EP107"; | ||
17 | compatible = "xlnx,zynq-ep107"; | ||
18 | #address-cells = <1>; | ||
19 | #size-cells = <1>; | ||
20 | interrupt-parent = <&intc>; | ||
21 | |||
22 | memory { | ||
23 | device_type = "memory"; | ||
24 | reg = <0x0 0x10000000>; | ||
25 | }; | ||
26 | |||
27 | chosen { | ||
28 | bootargs = "console=ttyPS0,9600 root=/dev/ram rw initrd=0x800000,8M earlyprintk"; | ||
29 | linux,stdout-path = &uart0; | ||
30 | }; | ||
31 | |||
32 | amba { | ||
33 | compatible = "simple-bus"; | ||
34 | #address-cells = <1>; | ||
35 | #size-cells = <1>; | ||
36 | ranges; | ||
37 | |||
38 | intc: interrupt-controller@f8f01000 { | ||
39 | interrupt-controller; | ||
40 | compatible = "arm,gic"; | ||
41 | reg = <0xF8F01000 0x1000>; | ||
42 | #interrupt-cells = <2>; | ||
43 | }; | ||
44 | |||
45 | uart0: uart@e0000000 { | ||
46 | compatible = "xlnx,xuartps"; | ||
47 | reg = <0xE0000000 0x1000>; | ||
48 | interrupts = <59 0>; | ||
49 | clock = <50000000>; | ||
50 | }; | ||
51 | }; | ||
52 | }; | ||
diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts new file mode 100644 index 000000000000..c772942a399a --- /dev/null +++ b/arch/arm/boot/dts/zynq-zc702.dts | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 Xilinx | ||
3 | * Copyright (C) 2012 National Instruments Corp. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
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 | /dts-v1/; | ||
15 | /include/ "zynq-7000.dtsi" | ||
16 | |||
17 | / { | ||
18 | model = "Zynq ZC702 Development Board"; | ||
19 | compatible = "xlnx,zynq-zc702", "xlnx,zynq-7000"; | ||
20 | |||
21 | memory { | ||
22 | device_type = "memory"; | ||
23 | reg = <0x0 0x40000000>; | ||
24 | }; | ||
25 | |||
26 | chosen { | ||
27 | bootargs = "console=ttyPS1,115200 earlyprintk"; | ||
28 | }; | ||
29 | |||
30 | }; | ||
31 | |||
32 | &ps_clk { | ||
33 | clock-frequency = <33333330>; | ||
34 | }; | ||
35 | |||
36 | &ttc0_0 { | ||
37 | status = "ok"; | ||
38 | compatible = "xlnx,ttc-counter-clocksource"; | ||
39 | }; | ||
40 | |||
41 | &ttc0_1 { | ||
42 | status = "ok"; | ||
43 | compatible = "xlnx,ttc-counter-clockevent"; | ||
44 | }; | ||
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig index 40db34cf2771..0b7ee92c5713 100644 --- a/arch/arm/configs/dove_defconfig +++ b/arch/arm/configs/dove_defconfig | |||
@@ -8,11 +8,19 @@ CONFIG_MODULE_UNLOAD=y | |||
8 | # CONFIG_BLK_DEV_BSG is not set | 8 | # CONFIG_BLK_DEV_BSG is not set |
9 | CONFIG_ARCH_DOVE=y | 9 | CONFIG_ARCH_DOVE=y |
10 | CONFIG_MACH_DOVE_DB=y | 10 | CONFIG_MACH_DOVE_DB=y |
11 | CONFIG_MACH_CM_A510=y | ||
12 | CONFIG_MACH_DOVE_DT=y | ||
11 | CONFIG_NO_HZ=y | 13 | CONFIG_NO_HZ=y |
12 | CONFIG_HIGH_RES_TIMERS=y | 14 | CONFIG_HIGH_RES_TIMERS=y |
13 | CONFIG_AEABI=y | 15 | CONFIG_AEABI=y |
14 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 16 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
15 | CONFIG_ZBOOT_ROM_BSS=0x0 | 17 | CONFIG_ZBOOT_ROM_BSS=0x0 |
18 | CONFIG_HIGHMEM=y | ||
19 | CONFIG_USE_OF=y | ||
20 | CONFIG_ATAGS=y | ||
21 | CONFIG_ARM_APPENDED_DTB=y | ||
22 | CONFIG_ARM_ATAG_DTB_COMPAT=y | ||
23 | CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y | ||
16 | CONFIG_VFP=y | 24 | CONFIG_VFP=y |
17 | CONFIG_NET=y | 25 | CONFIG_NET=y |
18 | CONFIG_PACKET=y | 26 | CONFIG_PACKET=y |
@@ -62,6 +70,9 @@ CONFIG_SERIAL_8250=y | |||
62 | CONFIG_SERIAL_8250_CONSOLE=y | 70 | CONFIG_SERIAL_8250_CONSOLE=y |
63 | # CONFIG_SERIAL_8250_PCI is not set | 71 | # CONFIG_SERIAL_8250_PCI is not set |
64 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | 72 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 |
73 | CONFIG_SERIAL_CORE=y | ||
74 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
75 | CONFIG_SERIAL_OF_PLATFORM=y | ||
65 | # CONFIG_HW_RANDOM is not set | 76 | # CONFIG_HW_RANDOM is not set |
66 | CONFIG_I2C=y | 77 | CONFIG_I2C=y |
67 | CONFIG_I2C_CHARDEV=y | 78 | CONFIG_I2C_CHARDEV=y |
@@ -74,6 +85,18 @@ CONFIG_USB_DEVICEFS=y | |||
74 | CONFIG_USB_EHCI_HCD=y | 85 | CONFIG_USB_EHCI_HCD=y |
75 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 86 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
76 | CONFIG_USB_STORAGE=y | 87 | CONFIG_USB_STORAGE=y |
88 | CONFIG_MMC=y | ||
89 | CONFIG_MMC_SDHCI=y | ||
90 | CONFIG_MMC_SDHCI_IO_ACCESSORS=y | ||
91 | CONFIG_MMC_SDHCI_PLTFM=y | ||
92 | CONFIG_MMC_SDHCI_DOVE=y | ||
93 | CONFIG_NEW_LEDS=y | ||
94 | CONFIG_LEDS_CLASS=y | ||
95 | CONFIG_LEDS_GPIO=y | ||
96 | CONFIG_LEDS_TRIGGERS=y | ||
97 | CONFIG_LEDS_TRIGGER_TIMER=y | ||
98 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
99 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
77 | CONFIG_RTC_CLASS=y | 100 | CONFIG_RTC_CLASS=y |
78 | CONFIG_RTC_DRV_MV=y | 101 | CONFIG_RTC_DRV_MV=y |
79 | CONFIG_DMADEVICES=y | 102 | CONFIG_DMADEVICES=y |
@@ -122,6 +145,7 @@ CONFIG_CRYPTO_TWOFISH=y | |||
122 | CONFIG_CRYPTO_DEFLATE=y | 145 | CONFIG_CRYPTO_DEFLATE=y |
123 | CONFIG_CRYPTO_LZO=y | 146 | CONFIG_CRYPTO_LZO=y |
124 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 147 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
148 | CONFIG_CRYPTO_DEV_MV_CESA=y | ||
125 | CONFIG_CRC_CCITT=y | 149 | CONFIG_CRC_CCITT=y |
126 | CONFIG_CRC16=y | 150 | CONFIG_CRC16=y |
127 | CONFIG_LIBCRC32C=y | 151 | CONFIG_LIBCRC32C=y |
diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig index 78ed575feb1a..f71302c3ac33 100644 --- a/arch/arm/configs/imx_v4_v5_defconfig +++ b/arch/arm/configs/imx_v4_v5_defconfig | |||
@@ -18,7 +18,9 @@ CONFIG_MODULE_UNLOAD=y | |||
18 | # CONFIG_IOSCHED_DEADLINE is not set | 18 | # CONFIG_IOSCHED_DEADLINE is not set |
19 | # CONFIG_IOSCHED_CFQ is not set | 19 | # CONFIG_IOSCHED_CFQ is not set |
20 | CONFIG_ARCH_MXC=y | 20 | CONFIG_ARCH_MXC=y |
21 | CONFIG_ARCH_IMX_V4_V5=y | 21 | CONFIG_ARCH_MULTI_V4T=y |
22 | CONFIG_ARCH_MULTI_V5=y | ||
23 | # CONFIG_ARCH_MULTI_V7 is not set | ||
22 | CONFIG_ARCH_MX1ADS=y | 24 | CONFIG_ARCH_MX1ADS=y |
23 | CONFIG_MACH_SCB9328=y | 25 | CONFIG_MACH_SCB9328=y |
24 | CONFIG_MACH_APF9328=y | 26 | CONFIG_MACH_APF9328=y |
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig index 394ded624e37..44f117aab52c 100644 --- a/arch/arm/configs/imx_v6_v7_defconfig +++ b/arch/arm/configs/imx_v6_v7_defconfig | |||
@@ -17,6 +17,8 @@ CONFIG_MODVERSIONS=y | |||
17 | CONFIG_MODULE_SRCVERSION_ALL=y | 17 | CONFIG_MODULE_SRCVERSION_ALL=y |
18 | # CONFIG_BLK_DEV_BSG is not set | 18 | # CONFIG_BLK_DEV_BSG is not set |
19 | CONFIG_ARCH_MXC=y | 19 | CONFIG_ARCH_MXC=y |
20 | CONFIG_ARCH_MULTI_V6=y | ||
21 | CONFIG_ARCH_MULTI_V7=y | ||
20 | CONFIG_MACH_MX31LILLY=y | 22 | CONFIG_MACH_MX31LILLY=y |
21 | CONFIG_MACH_MX31LITE=y | 23 | CONFIG_MACH_MX31LITE=y |
22 | CONFIG_MACH_PCM037=y | 24 | CONFIG_MACH_PCM037=y |
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig index 74eee0c78f28..93f3794ba5cb 100644 --- a/arch/arm/configs/kirkwood_defconfig +++ b/arch/arm/configs/kirkwood_defconfig | |||
@@ -27,6 +27,14 @@ CONFIG_MACH_GOFLEXNET_DT=y | |||
27 | CONFIG_MACH_LSXL_DT=y | 27 | CONFIG_MACH_LSXL_DT=y |
28 | CONFIG_MACH_IOMEGA_IX2_200_DT=y | 28 | CONFIG_MACH_IOMEGA_IX2_200_DT=y |
29 | CONFIG_MACH_KM_KIRKWOOD_DT=y | 29 | CONFIG_MACH_KM_KIRKWOOD_DT=y |
30 | CONFIG_MACH_INETSPACE_V2_DT=y | ||
31 | CONFIG_MACH_MPLCEC4_DT=y | ||
32 | CONFIG_MACH_NETSPACE_V2_DT=y | ||
33 | CONFIG_MACH_NETSPACE_MAX_V2_DT=y | ||
34 | CONFIG_MACH_NETSPACE_LITE_V2_DT=y | ||
35 | CONFIG_MACH_NETSPACE_MINI_V2_DT=y | ||
36 | CONFIG_MACH_OPENBLOCKS_A6_DT=y | ||
37 | CONFIG_MACH_TOPKICK_DT=y | ||
30 | CONFIG_MACH_TS219=y | 38 | CONFIG_MACH_TS219=y |
31 | CONFIG_MACH_TS41X=y | 39 | CONFIG_MACH_TS41X=y |
32 | CONFIG_MACH_DOCKSTAR=y | 40 | CONFIG_MACH_DOCKSTAR=y |
@@ -40,6 +48,7 @@ CONFIG_MACH_D2NET_V2=y | |||
40 | CONFIG_MACH_NET2BIG_V2=y | 48 | CONFIG_MACH_NET2BIG_V2=y |
41 | CONFIG_MACH_NET5BIG_V2=y | 49 | CONFIG_MACH_NET5BIG_V2=y |
42 | CONFIG_MACH_T5325=y | 50 | CONFIG_MACH_T5325=y |
51 | CONFIG_MACH_NSA310_DT=y | ||
43 | # CONFIG_CPU_FEROCEON_OLD_ID is not set | 52 | # CONFIG_CPU_FEROCEON_OLD_ID is not set |
44 | CONFIG_PREEMPT=y | 53 | CONFIG_PREEMPT=y |
45 | CONFIG_AEABI=y | 54 | CONFIG_AEABI=y |
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 048aaca60814..7bf535104e26 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig | |||
@@ -61,6 +61,8 @@ CONFIG_MTD_NAND_GPMI_NAND=y | |||
61 | CONFIG_NETDEVICES=y | 61 | CONFIG_NETDEVICES=y |
62 | CONFIG_NET_ETHERNET=y | 62 | CONFIG_NET_ETHERNET=y |
63 | CONFIG_ENC28J60=y | 63 | CONFIG_ENC28J60=y |
64 | CONFIG_USB_USBNET=y | ||
65 | CONFIG_USB_NET_SMSC95XX=y | ||
64 | # CONFIG_NETDEV_1000 is not set | 66 | # CONFIG_NETDEV_1000 is not set |
65 | # CONFIG_NETDEV_10000 is not set | 67 | # CONFIG_NETDEV_10000 is not set |
66 | # CONFIG_WLAN is not set | 68 | # CONFIG_WLAN is not set |
@@ -158,6 +160,10 @@ CONFIG_NFS_V3=y | |||
158 | CONFIG_NFS_V3_ACL=y | 160 | CONFIG_NFS_V3_ACL=y |
159 | CONFIG_NFS_V4=y | 161 | CONFIG_NFS_V4=y |
160 | CONFIG_ROOT_NFS=y | 162 | CONFIG_ROOT_NFS=y |
163 | CONFIG_NLS_CODEPAGE_437=y | ||
164 | CONFIG_NLS_CODEPAGE_850=y | ||
165 | CONFIG_NLS_ISO8859_1=y | ||
166 | CONFIG_NLS_ISO8859_15=y | ||
161 | CONFIG_PRINTK_TIME=y | 167 | CONFIG_PRINTK_TIME=y |
162 | CONFIG_FRAME_WARN=2048 | 168 | CONFIG_FRAME_WARN=2048 |
163 | CONFIG_MAGIC_SYSRQ=y | 169 | CONFIG_MAGIC_SYSRQ=y |
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig index cd5e6ba9a54d..952430d9e2d9 100644 --- a/arch/arm/configs/orion5x_defconfig +++ b/arch/arm/configs/orion5x_defconfig | |||
@@ -1,7 +1,8 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_EXPERIMENTAL=y |
2 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
3 | CONFIG_NO_HZ=y | ||
4 | CONFIG_HIGH_RES_TIMERS=y | ||
3 | CONFIG_LOG_BUF_SHIFT=14 | 5 | CONFIG_LOG_BUF_SHIFT=14 |
4 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
5 | CONFIG_EXPERT=y | 6 | CONFIG_EXPERT=y |
6 | # CONFIG_SLUB_DEBUG is not set | 7 | # CONFIG_SLUB_DEBUG is not set |
7 | CONFIG_PROFILING=y | 8 | CONFIG_PROFILING=y |
@@ -10,6 +11,8 @@ CONFIG_KPROBES=y | |||
10 | CONFIG_MODULES=y | 11 | CONFIG_MODULES=y |
11 | CONFIG_MODULE_UNLOAD=y | 12 | CONFIG_MODULE_UNLOAD=y |
12 | # CONFIG_BLK_DEV_BSG is not set | 13 | # CONFIG_BLK_DEV_BSG is not set |
14 | CONFIG_PARTITION_ADVANCED=y | ||
15 | CONFIG_BSD_DISKLABEL=y | ||
13 | CONFIG_ARCH_ORION5X=y | 16 | CONFIG_ARCH_ORION5X=y |
14 | CONFIG_MACH_DB88F5281=y | 17 | CONFIG_MACH_DB88F5281=y |
15 | CONFIG_MACH_RD88F5182=y | 18 | CONFIG_MACH_RD88F5182=y |
@@ -24,7 +27,7 @@ CONFIG_MACH_TS409=y | |||
24 | CONFIG_MACH_WRT350N_V2=y | 27 | CONFIG_MACH_WRT350N_V2=y |
25 | CONFIG_MACH_TS78XX=y | 28 | CONFIG_MACH_TS78XX=y |
26 | CONFIG_MACH_MV2120=y | 29 | CONFIG_MACH_MV2120=y |
27 | CONFIG_MACH_EDMINI_V2=y | 30 | CONFIG_MACH_EDMINI_V2_DT=y |
28 | CONFIG_MACH_D2NET=y | 31 | CONFIG_MACH_D2NET=y |
29 | CONFIG_MACH_BIGDISK=y | 32 | CONFIG_MACH_BIGDISK=y |
30 | CONFIG_MACH_NET2BIG=y | 33 | CONFIG_MACH_NET2BIG=y |
@@ -33,17 +36,13 @@ CONFIG_MACH_WNR854T=y | |||
33 | CONFIG_MACH_RD88F5181L_GE=y | 36 | CONFIG_MACH_RD88F5181L_GE=y |
34 | CONFIG_MACH_RD88F5181L_FXO=y | 37 | CONFIG_MACH_RD88F5181L_FXO=y |
35 | CONFIG_MACH_RD88F6183AP_GE=y | 38 | CONFIG_MACH_RD88F6183AP_GE=y |
36 | CONFIG_NO_HZ=y | ||
37 | CONFIG_HIGH_RES_TIMERS=y | ||
38 | CONFIG_PREEMPT=y | 39 | CONFIG_PREEMPT=y |
39 | CONFIG_AEABI=y | 40 | CONFIG_AEABI=y |
40 | CONFIG_LEDS=y | ||
41 | CONFIG_LEDS_CPU=y | ||
42 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 41 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
43 | CONFIG_ZBOOT_ROM_BSS=0x0 | 42 | CONFIG_ZBOOT_ROM_BSS=0x0 |
43 | CONFIG_ARM_APPENDED_DTB=y | ||
44 | CONFIG_FPE_NWFPE=y | 44 | CONFIG_FPE_NWFPE=y |
45 | CONFIG_VFP=y | 45 | CONFIG_VFP=y |
46 | # CONFIG_SUSPEND is not set | ||
47 | CONFIG_NET=y | 46 | CONFIG_NET=y |
48 | CONFIG_PACKET=y | 47 | CONFIG_PACKET=y |
49 | CONFIG_UNIX=y | 48 | CONFIG_UNIX=y |
@@ -54,13 +53,10 @@ CONFIG_IP_PNP_DHCP=y | |||
54 | CONFIG_IP_PNP_BOOTP=y | 53 | CONFIG_IP_PNP_BOOTP=y |
55 | # CONFIG_IPV6 is not set | 54 | # CONFIG_IPV6 is not set |
56 | CONFIG_NET_DSA=y | 55 | CONFIG_NET_DSA=y |
57 | CONFIG_NET_DSA_MV88E6131=y | ||
58 | CONFIG_NET_DSA_MV88E6123_61_65=y | ||
59 | CONFIG_NET_PKTGEN=m | 56 | CONFIG_NET_PKTGEN=m |
60 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 57 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
61 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 58 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
62 | CONFIG_MTD=y | 59 | CONFIG_MTD=y |
63 | CONFIG_MTD_PARTITIONS=y | ||
64 | CONFIG_MTD_CMDLINE_PARTS=y | 60 | CONFIG_MTD_CMDLINE_PARTS=y |
65 | CONFIG_MTD_CHAR=y | 61 | CONFIG_MTD_CHAR=y |
66 | CONFIG_MTD_BLOCK=y | 62 | CONFIG_MTD_BLOCK=y |
@@ -82,12 +78,11 @@ CONFIG_CHR_DEV_SG=m | |||
82 | CONFIG_ATA=y | 78 | CONFIG_ATA=y |
83 | CONFIG_SATA_MV=y | 79 | CONFIG_SATA_MV=y |
84 | CONFIG_NETDEVICES=y | 80 | CONFIG_NETDEVICES=y |
85 | CONFIG_MARVELL_PHY=y | ||
86 | CONFIG_NET_ETHERNET=y | ||
87 | CONFIG_MII=y | 81 | CONFIG_MII=y |
88 | CONFIG_NET_PCI=y | 82 | CONFIG_NET_DSA_MV88E6131=y |
83 | CONFIG_NET_DSA_MV88E6123_61_65=y | ||
89 | CONFIG_MV643XX_ETH=y | 84 | CONFIG_MV643XX_ETH=y |
90 | # CONFIG_NETDEV_10000 is not set | 85 | CONFIG_MARVELL_PHY=y |
91 | # CONFIG_INPUT_MOUSEDEV is not set | 86 | # CONFIG_INPUT_MOUSEDEV is not set |
92 | CONFIG_INPUT_EVDEV=y | 87 | CONFIG_INPUT_EVDEV=y |
93 | # CONFIG_KEYBOARD_ATKBD is not set | 88 | # CONFIG_KEYBOARD_ATKBD is not set |
@@ -95,11 +90,12 @@ CONFIG_KEYBOARD_GPIO=y | |||
95 | # CONFIG_INPUT_MOUSE is not set | 90 | # CONFIG_INPUT_MOUSE is not set |
96 | # CONFIG_SERIO is not set | 91 | # CONFIG_SERIO is not set |
97 | # CONFIG_VT is not set | 92 | # CONFIG_VT is not set |
93 | CONFIG_LEGACY_PTY_COUNT=16 | ||
98 | CONFIG_SERIAL_8250=y | 94 | CONFIG_SERIAL_8250=y |
99 | CONFIG_SERIAL_8250_CONSOLE=y | 95 | CONFIG_SERIAL_8250_CONSOLE=y |
100 | # CONFIG_SERIAL_8250_PCI is not set | 96 | # CONFIG_SERIAL_8250_PCI is not set |
101 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | 97 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 |
102 | CONFIG_LEGACY_PTY_COUNT=16 | 98 | CONFIG_SERIAL_OF_PLATFORM=y |
103 | CONFIG_HW_RANDOM_TIMERIOMEM=m | 99 | CONFIG_HW_RANDOM_TIMERIOMEM=m |
104 | CONFIG_I2C=y | 100 | CONFIG_I2C=y |
105 | # CONFIG_I2C_COMPAT is not set | 101 | # CONFIG_I2C_COMPAT is not set |
@@ -109,10 +105,8 @@ CONFIG_GPIO_SYSFS=y | |||
109 | CONFIG_SENSORS_LM75=y | 105 | CONFIG_SENSORS_LM75=y |
110 | # CONFIG_VGA_ARB is not set | 106 | # CONFIG_VGA_ARB is not set |
111 | CONFIG_USB=y | 107 | CONFIG_USB=y |
112 | CONFIG_USB_DEVICEFS=y | ||
113 | CONFIG_USB_EHCI_HCD=y | 108 | CONFIG_USB_EHCI_HCD=y |
114 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 109 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
115 | CONFIG_USB_EHCI_TT_NEWSCHED=y | ||
116 | CONFIG_USB_PRINTER=y | 110 | CONFIG_USB_PRINTER=y |
117 | CONFIG_USB_STORAGE=y | 111 | CONFIG_USB_STORAGE=y |
118 | CONFIG_USB_STORAGE_DATAFAB=y | 112 | CONFIG_USB_STORAGE_DATAFAB=y |
@@ -140,7 +134,6 @@ CONFIG_EXT2_FS=y | |||
140 | CONFIG_EXT3_FS=y | 134 | CONFIG_EXT3_FS=y |
141 | # CONFIG_EXT3_FS_XATTR is not set | 135 | # CONFIG_EXT3_FS_XATTR is not set |
142 | CONFIG_EXT4_FS=m | 136 | CONFIG_EXT4_FS=m |
143 | CONFIG_INOTIFY=y | ||
144 | CONFIG_ISO9660_FS=m | 137 | CONFIG_ISO9660_FS=m |
145 | CONFIG_JOLIET=y | 138 | CONFIG_JOLIET=y |
146 | CONFIG_UDF_FS=m | 139 | CONFIG_UDF_FS=m |
@@ -150,25 +143,18 @@ CONFIG_TMPFS=y | |||
150 | CONFIG_JFFS2_FS=y | 143 | CONFIG_JFFS2_FS=y |
151 | CONFIG_CRAMFS=y | 144 | CONFIG_CRAMFS=y |
152 | CONFIG_NFS_FS=y | 145 | CONFIG_NFS_FS=y |
153 | CONFIG_NFS_V3=y | ||
154 | CONFIG_ROOT_NFS=y | 146 | CONFIG_ROOT_NFS=y |
155 | CONFIG_PARTITION_ADVANCED=y | ||
156 | CONFIG_BSD_DISKLABEL=y | ||
157 | CONFIG_NLS_CODEPAGE_437=y | 147 | CONFIG_NLS_CODEPAGE_437=y |
158 | CONFIG_NLS_CODEPAGE_850=y | 148 | CONFIG_NLS_CODEPAGE_850=y |
159 | CONFIG_NLS_ISO8859_1=y | 149 | CONFIG_NLS_ISO8859_1=y |
160 | CONFIG_NLS_ISO8859_2=y | 150 | CONFIG_NLS_ISO8859_2=y |
161 | CONFIG_MAGIC_SYSRQ=y | 151 | CONFIG_MAGIC_SYSRQ=y |
162 | CONFIG_DEBUG_FS=y | 152 | CONFIG_DEBUG_FS=y |
163 | CONFIG_DEBUG_KERNEL=y | ||
164 | # CONFIG_DEBUG_BUGVERBOSE is not set | 153 | # CONFIG_DEBUG_BUGVERBOSE is not set |
165 | CONFIG_DEBUG_INFO=y | 154 | CONFIG_DEBUG_INFO=y |
166 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
167 | CONFIG_LATENCYTOP=y | 155 | CONFIG_LATENCYTOP=y |
168 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
169 | # CONFIG_FTRACE is not set | 156 | # CONFIG_FTRACE is not set |
170 | CONFIG_DEBUG_USER=y | 157 | CONFIG_DEBUG_USER=y |
171 | CONFIG_DEBUG_ERRORS=y | ||
172 | CONFIG_DEBUG_LL=y | 158 | CONFIG_DEBUG_LL=y |
173 | CONFIG_CRYPTO_CBC=m | 159 | CONFIG_CRYPTO_CBC=m |
174 | CONFIG_CRYPTO_ECB=m | 160 | CONFIG_CRYPTO_ECB=m |
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig index da6845493caa..6fe7ede6f0c2 100644 --- a/arch/arm/configs/u8500_defconfig +++ b/arch/arm/configs/u8500_defconfig | |||
@@ -76,6 +76,7 @@ CONFIG_AB8500_CORE=y | |||
76 | CONFIG_REGULATOR=y | 76 | CONFIG_REGULATOR=y |
77 | CONFIG_REGULATOR_AB8500=y | 77 | CONFIG_REGULATOR_AB8500=y |
78 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | 78 | CONFIG_REGULATOR_FIXED_VOLTAGE=y |
79 | CONFIG_REGULATOR_GPIO=y | ||
79 | # CONFIG_HID_SUPPORT is not set | 80 | # CONFIG_HID_SUPPORT is not set |
80 | CONFIG_USB_GADGET=y | 81 | CONFIG_USB_GADGET=y |
81 | CONFIG_AB8500_USB=y | 82 | CONFIG_AB8500_USB=y |
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 23004847bb05..8ea02ac3ec1a 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h | |||
@@ -211,13 +211,6 @@ static inline void dma_free_writecombine(struct device *dev, size_t size, | |||
211 | extern void __init init_dma_coherent_pool_size(unsigned long size); | 211 | extern void __init init_dma_coherent_pool_size(unsigned long size); |
212 | 212 | ||
213 | /* | 213 | /* |
214 | * This can be called during boot to increase the size of the consistent | ||
215 | * DMA region above it's default value of 2MB. It must be called before the | ||
216 | * memory allocator is initialised, i.e. before any core_initcall. | ||
217 | */ | ||
218 | static inline void init_consistent_dma_size(unsigned long size) { } | ||
219 | |||
220 | /* | ||
221 | * For SA-1111, IXP425, and ADI systems the dma-mapping functions are "magic" | 214 | * For SA-1111, IXP425, and ADI systems the dma-mapping functions are "magic" |
222 | * and utilize bounce buffers as needed to work around limited DMA windows. | 215 | * and utilize bounce buffers as needed to work around limited DMA windows. |
223 | * | 216 | * |
diff --git a/arch/arm/include/debug/imx.S b/arch/arm/include/debug/imx.S new file mode 100644 index 000000000000..0c4e17d4d359 --- /dev/null +++ b/arch/arm/include/debug/imx.S | |||
@@ -0,0 +1,74 @@ | |||
1 | /* arch/arm/mach-imx/include/mach/debug-macro.S | ||
2 | * | ||
3 | * Debugging macro include header | ||
4 | * | ||
5 | * Copyright (C) 1994-1999 Russell King | ||
6 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | */ | ||
13 | #define IMX6Q_UART1_BASE_ADDR 0x02020000 | ||
14 | #define IMX6Q_UART2_BASE_ADDR 0x021e8000 | ||
15 | #define IMX6Q_UART3_BASE_ADDR 0x021ec000 | ||
16 | #define IMX6Q_UART4_BASE_ADDR 0x021f0000 | ||
17 | #define IMX6Q_UART5_BASE_ADDR 0x021f4000 | ||
18 | |||
19 | /* | ||
20 | * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion | ||
21 | * of IMX6Q_UART##n##_BASE_ADDR. | ||
22 | */ | ||
23 | #define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR | ||
24 | #define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n) | ||
25 | #define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT) | ||
26 | |||
27 | #ifdef CONFIG_DEBUG_IMX1_UART | ||
28 | #define UART_PADDR 0x00206000 | ||
29 | #elif defined (CONFIG_DEBUG_IMX25_UART) | ||
30 | #define UART_PADDR 0x43f90000 | ||
31 | #elif defined (CONFIG_DEBUG_IMX21_IMX27_UART) | ||
32 | #define UART_PADDR 0x1000a000 | ||
33 | #elif defined (CONFIG_DEBUG_IMX31_IMX35_UART) | ||
34 | #define UART_PADDR 0x43f90000 | ||
35 | #elif defined (CONFIG_DEBUG_IMX51_UART) | ||
36 | #define UART_PADDR 0x73fbc000 | ||
37 | #elif defined (CONFIG_DEBUG_IMX50_IMX53_UART) | ||
38 | #define UART_PADDR 0x53fbc000 | ||
39 | #elif defined (CONFIG_DEBUG_IMX6Q_UART) | ||
40 | #define UART_PADDR IMX6Q_DEBUG_UART_BASE | ||
41 | #endif | ||
42 | |||
43 | /* | ||
44 | * FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to | ||
45 | * stay sync with that. It's hard to maintain, and should be fixed | ||
46 | * globally for multi-platform build to use a fixed virtual address | ||
47 | * for low-level debug uart port across platforms. | ||
48 | */ | ||
49 | #define IMX_IO_P2V(x) ( \ | ||
50 | (((x) & 0x80000000) >> 7) | \ | ||
51 | (0xf4000000 + \ | ||
52 | (((x) & 0x50000000) >> 6) + \ | ||
53 | (((x) & 0x0b000000) >> 4) + \ | ||
54 | (((x) & 0x000fffff)))) | ||
55 | |||
56 | #define UART_VADDR IMX_IO_P2V(UART_PADDR) | ||
57 | |||
58 | .macro addruart, rp, rv, tmp | ||
59 | ldr \rp, =UART_PADDR @ physical | ||
60 | ldr \rv, =UART_VADDR @ virtual | ||
61 | .endm | ||
62 | |||
63 | .macro senduart,rd,rx | ||
64 | str \rd, [\rx, #0x40] @ TXDATA | ||
65 | .endm | ||
66 | |||
67 | .macro waituart,rd,rx | ||
68 | .endm | ||
69 | |||
70 | .macro busyuart,rd,rx | ||
71 | 1002: ldr \rd, [\rx, #0x98] @ SR2 | ||
72 | tst \rd, #1 << 3 @ TXDC | ||
73 | beq 1002b @ wait until transmit done | ||
74 | .endm | ||
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 84af1b506d92..b7ae124c16e5 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -343,7 +343,6 @@ static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { | |||
343 | static void __init at91sam9g45_map_io(void) | 343 | static void __init at91sam9g45_map_io(void) |
344 | { | 344 | { |
345 | at91_init_sram(0, AT91SAM9G45_SRAM_BASE, AT91SAM9G45_SRAM_SIZE); | 345 | at91_init_sram(0, AT91SAM9G45_SRAM_BASE, AT91SAM9G45_SRAM_SIZE); |
346 | init_consistent_dma_size(SZ_4M); | ||
347 | } | 346 | } |
348 | 347 | ||
349 | static void __init at91sam9g45_ioremap_registers(void) | 348 | static void __init at91sam9g45_ioremap_registers(void) |
diff --git a/arch/arm/mach-at91/include/mach/atmel-mci.h b/arch/arm/mach-at91/include/mach/atmel-mci.h index cd580a12e904..3069e4135573 100644 --- a/arch/arm/mach-at91/include/mach/atmel-mci.h +++ b/arch/arm/mach-at91/include/mach/atmel-mci.h | |||
@@ -14,11 +14,4 @@ struct mci_dma_data { | |||
14 | #define slave_data_ptr(s) (&(s)->sdata) | 14 | #define slave_data_ptr(s) (&(s)->sdata) |
15 | #define find_slave_dev(s) ((s)->sdata.dma_dev) | 15 | #define find_slave_dev(s) ((s)->sdata.dma_dev) |
16 | 16 | ||
17 | #define setup_dma_addr(s, t, r) do { \ | ||
18 | if (s) { \ | ||
19 | (s)->sdata.tx_reg = (t); \ | ||
20 | (s)->sdata.rx_reg = (r); \ | ||
21 | } \ | ||
22 | } while (0) | ||
23 | |||
24 | #endif /* __MACH_ATMEL_MCI_H */ | 17 | #endif /* __MACH_ATMEL_MCI_H */ |
diff --git a/arch/arm/mach-bcm2835/Makefile.boot b/arch/arm/mach-bcm2835/Makefile.boot index 2d30e17f5b69..b3271754e9fd 100644 --- a/arch/arm/mach-bcm2835/Makefile.boot +++ b/arch/arm/mach-bcm2835/Makefile.boot | |||
@@ -1,3 +1 @@ | |||
1 | zreladdr-y := 0x00008000 | zreladdr-y := 0x00008000 | |
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-bcm2835/bcm2835.c b/arch/arm/mach-bcm2835/bcm2835.c index f6fea4933571..53e3842c9330 100644 --- a/arch/arm/mach-bcm2835/bcm2835.c +++ b/arch/arm/mach-bcm2835/bcm2835.c | |||
@@ -30,12 +30,12 @@ static struct map_desc io_map __initdata = { | |||
30 | .type = MT_DEVICE | 30 | .type = MT_DEVICE |
31 | }; | 31 | }; |
32 | 32 | ||
33 | void __init bcm2835_map_io(void) | 33 | static void __init bcm2835_map_io(void) |
34 | { | 34 | { |
35 | iotable_init(&io_map, 1); | 35 | iotable_init(&io_map, 1); |
36 | } | 36 | } |
37 | 37 | ||
38 | void __init bcm2835_init(void) | 38 | static void __init bcm2835_init(void) |
39 | { | 39 | { |
40 | int ret; | 40 | int ret; |
41 | 41 | ||
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig index f8eecb959413..0153950f6068 100644 --- a/arch/arm/mach-davinci/Kconfig +++ b/arch/arm/mach-davinci/Kconfig | |||
@@ -58,6 +58,14 @@ config ARCH_DAVINCI_TNETV107X | |||
58 | 58 | ||
59 | comment "DaVinci Board Type" | 59 | comment "DaVinci Board Type" |
60 | 60 | ||
61 | config MACH_DA8XX_DT | ||
62 | bool "Support DA8XX platforms using device tree" | ||
63 | default y | ||
64 | depends on ARCH_DAVINCI_DA8XX | ||
65 | help | ||
66 | Say y here to include support for TI DaVinci DA850 based using | ||
67 | Flattened Device Tree. More information at Documentation/devicetree | ||
68 | |||
61 | config MACH_DAVINCI_EVM | 69 | config MACH_DAVINCI_EVM |
62 | bool "TI DM644x EVM" | 70 | bool "TI DM644x EVM" |
63 | default ARCH_DAVINCI_DM644x | 71 | default ARCH_DAVINCI_DM644x |
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile index 2227effcb0e9..fb5c1aa98a63 100644 --- a/arch/arm/mach-davinci/Makefile +++ b/arch/arm/mach-davinci/Makefile | |||
@@ -22,6 +22,7 @@ obj-$(CONFIG_AINTC) += irq.o | |||
22 | obj-$(CONFIG_CP_INTC) += cp_intc.o | 22 | obj-$(CONFIG_CP_INTC) += cp_intc.o |
23 | 23 | ||
24 | # Board specific | 24 | # Board specific |
25 | obj-$(CONFIG_MACH_DA8XX_DT) += da8xx-dt.o | ||
25 | obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o | 26 | obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o |
26 | obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o | 27 | obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o |
27 | obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o | 28 | obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o |
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index 88ebea89abdf..cdf8d0746e79 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c | |||
@@ -324,7 +324,7 @@ static __init void dm355_evm_init(void) | |||
324 | if (IS_ERR(aemif)) | 324 | if (IS_ERR(aemif)) |
325 | WARN("%s: unable to get AEMIF clock\n", __func__); | 325 | WARN("%s: unable to get AEMIF clock\n", __func__); |
326 | else | 326 | else |
327 | clk_enable(aemif); | 327 | clk_prepare_enable(aemif); |
328 | 328 | ||
329 | platform_add_devices(davinci_evm_devices, | 329 | platform_add_devices(davinci_evm_devices, |
330 | ARRAY_SIZE(davinci_evm_devices)); | 330 | ARRAY_SIZE(davinci_evm_devices)); |
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index 2f88103c6459..d41954507fc2 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c | |||
@@ -246,7 +246,7 @@ static __init void dm355_leopard_init(void) | |||
246 | if (IS_ERR(aemif)) | 246 | if (IS_ERR(aemif)) |
247 | WARN("%s: unable to get AEMIF clock\n", __func__); | 247 | WARN("%s: unable to get AEMIF clock\n", __func__); |
248 | else | 248 | else |
249 | clk_enable(aemif); | 249 | clk_prepare_enable(aemif); |
250 | 250 | ||
251 | platform_add_devices(davinci_leopard_devices, | 251 | platform_add_devices(davinci_leopard_devices, |
252 | ARRAY_SIZE(davinci_leopard_devices)); | 252 | ARRAY_SIZE(davinci_leopard_devices)); |
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 1b4a8adcfdc9..5d49c75388ca 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c | |||
@@ -478,7 +478,7 @@ static void __init evm_init_cpld(void) | |||
478 | aemif_clk = clk_get(NULL, "aemif"); | 478 | aemif_clk = clk_get(NULL, "aemif"); |
479 | if (IS_ERR(aemif_clk)) | 479 | if (IS_ERR(aemif_clk)) |
480 | return; | 480 | return; |
481 | clk_enable(aemif_clk); | 481 | clk_prepare_enable(aemif_clk); |
482 | 482 | ||
483 | if (request_mem_region(DM365_ASYNC_EMIF_DATA_CE1_BASE, SECTION_SIZE, | 483 | if (request_mem_region(DM365_ASYNC_EMIF_DATA_CE1_BASE, SECTION_SIZE, |
484 | "cpld") == NULL) | 484 | "cpld") == NULL) |
@@ -489,7 +489,7 @@ static void __init evm_init_cpld(void) | |||
489 | SECTION_SIZE); | 489 | SECTION_SIZE); |
490 | fail: | 490 | fail: |
491 | pr_err("ERROR: can't map CPLD\n"); | 491 | pr_err("ERROR: can't map CPLD\n"); |
492 | clk_disable(aemif_clk); | 492 | clk_disable_unprepare(aemif_clk); |
493 | return; | 493 | return; |
494 | } | 494 | } |
495 | 495 | ||
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index f22572cee49d..a84dfcbc1154 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c | |||
@@ -776,7 +776,7 @@ static __init void davinci_evm_init(void) | |||
776 | struct davinci_soc_info *soc_info = &davinci_soc_info; | 776 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
777 | 777 | ||
778 | aemif_clk = clk_get(NULL, "aemif"); | 778 | aemif_clk = clk_get(NULL, "aemif"); |
779 | clk_enable(aemif_clk); | 779 | clk_prepare_enable(aemif_clk); |
780 | 780 | ||
781 | if (HAS_ATA) { | 781 | if (HAS_ATA) { |
782 | if (HAS_NAND || HAS_NOR) | 782 | if (HAS_NAND || HAS_NOR) |
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index 1dbf85beed1b..9211e8800c79 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c | |||
@@ -194,7 +194,7 @@ static int evm_led_setup(struct i2c_client *client, int gpio, | |||
194 | while (ngpio--) { | 194 | while (ngpio--) { |
195 | leds->gpio = gpio++; | 195 | leds->gpio = gpio++; |
196 | leds++; | 196 | leds++; |
197 | }; | 197 | } |
198 | 198 | ||
199 | evm_led_dev = platform_device_alloc("leds-gpio", 0); | 199 | evm_led_dev = platform_device_alloc("leds-gpio", 0); |
200 | platform_device_add_data(evm_led_dev, &evm_led_data, | 200 | platform_device_add_data(evm_led_dev, &evm_led_data, |
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c index 144bf31d68dd..3e3e3afebf88 100644 --- a/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/arch/arm/mach-davinci/board-neuros-osd2.c | |||
@@ -188,7 +188,7 @@ static __init void davinci_ntosd2_init(void) | |||
188 | struct davinci_soc_info *soc_info = &davinci_soc_info; | 188 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
189 | 189 | ||
190 | aemif_clk = clk_get(NULL, "aemif"); | 190 | aemif_clk = clk_get(NULL, "aemif"); |
191 | clk_enable(aemif_clk); | 191 | clk_prepare_enable(aemif_clk); |
192 | 192 | ||
193 | if (HAS_ATA) { | 193 | if (HAS_ATA) { |
194 | if (HAS_NAND) | 194 | if (HAS_NAND) |
diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c index 64b0f65a8639..a794f6d9d444 100644 --- a/arch/arm/mach-davinci/common.c +++ b/arch/arm/mach-davinci/common.c | |||
@@ -87,8 +87,6 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info) | |||
87 | iotable_init(davinci_soc_info.io_desc, | 87 | iotable_init(davinci_soc_info.io_desc, |
88 | davinci_soc_info.io_desc_num); | 88 | davinci_soc_info.io_desc_num); |
89 | 89 | ||
90 | init_consistent_dma_size(14 << 20); | ||
91 | |||
92 | /* | 90 | /* |
93 | * Normally devicemaps_init() would flush caches and tlb after | 91 | * Normally devicemaps_init() would flush caches and tlb after |
94 | * mdesc->map_io(), but we must also do it here because of the CPU | 92 | * mdesc->map_io(), but we must also do it here because of the CPU |
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index b90c172d5541..68c5fe01857c 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c | |||
@@ -212,6 +212,12 @@ static struct clk tptc2_clk = { | |||
212 | .flags = ALWAYS_ENABLED, | 212 | .flags = ALWAYS_ENABLED, |
213 | }; | 213 | }; |
214 | 214 | ||
215 | static struct clk pruss_clk = { | ||
216 | .name = "pruss", | ||
217 | .parent = &pll0_sysclk2, | ||
218 | .lpsc = DA8XX_LPSC0_PRUSS, | ||
219 | }; | ||
220 | |||
215 | static struct clk uart0_clk = { | 221 | static struct clk uart0_clk = { |
216 | .name = "uart0", | 222 | .name = "uart0", |
217 | .parent = &pll0_sysclk2, | 223 | .parent = &pll0_sysclk2, |
@@ -385,6 +391,7 @@ static struct clk_lookup da850_clks[] = { | |||
385 | CLK(NULL, "tptc1", &tptc1_clk), | 391 | CLK(NULL, "tptc1", &tptc1_clk), |
386 | CLK(NULL, "tpcc1", &tpcc1_clk), | 392 | CLK(NULL, "tpcc1", &tpcc1_clk), |
387 | CLK(NULL, "tptc2", &tptc2_clk), | 393 | CLK(NULL, "tptc2", &tptc2_clk), |
394 | CLK("pruss_uio", "pruss", &pruss_clk), | ||
388 | CLK(NULL, "uart0", &uart0_clk), | 395 | CLK(NULL, "uart0", &uart0_clk), |
389 | CLK(NULL, "uart1", &uart1_clk), | 396 | CLK(NULL, "uart1", &uart1_clk), |
390 | CLK(NULL, "uart2", &uart2_clk), | 397 | CLK(NULL, "uart2", &uart2_clk), |
@@ -781,12 +788,6 @@ static struct map_desc da850_io_desc[] = { | |||
781 | .length = DA8XX_CP_INTC_SIZE, | 788 | .length = DA8XX_CP_INTC_SIZE, |
782 | .type = MT_DEVICE | 789 | .type = MT_DEVICE |
783 | }, | 790 | }, |
784 | { | ||
785 | .virtual = SRAM_VIRT, | ||
786 | .pfn = __phys_to_pfn(DA8XX_ARM_RAM_BASE), | ||
787 | .length = SZ_8K, | ||
788 | .type = MT_DEVICE | ||
789 | }, | ||
790 | }; | 791 | }; |
791 | 792 | ||
792 | static u32 da850_psc_bases[] = { DA8XX_PSC0_BASE, DA8XX_PSC1_BASE }; | 793 | static u32 da850_psc_bases[] = { DA8XX_PSC0_BASE, DA8XX_PSC1_BASE }; |
@@ -1239,8 +1240,8 @@ static struct davinci_soc_info davinci_soc_info_da850 = { | |||
1239 | .gpio_irq = IRQ_DA8XX_GPIO0, | 1240 | .gpio_irq = IRQ_DA8XX_GPIO0, |
1240 | .serial_dev = &da8xx_serial_device, | 1241 | .serial_dev = &da8xx_serial_device, |
1241 | .emac_pdata = &da8xx_emac_pdata, | 1242 | .emac_pdata = &da8xx_emac_pdata, |
1242 | .sram_dma = DA8XX_ARM_RAM_BASE, | 1243 | .sram_dma = DA8XX_SHARED_RAM_BASE, |
1243 | .sram_len = SZ_8K, | 1244 | .sram_len = SZ_128K, |
1244 | }; | 1245 | }; |
1245 | 1246 | ||
1246 | void __init da850_init(void) | 1247 | void __init da850_init(void) |
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c new file mode 100644 index 000000000000..37c27af18fa0 --- /dev/null +++ b/arch/arm/mach-davinci/da8xx-dt.c | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ | ||
3 | * | ||
4 | * Modified from mach-omap/omap2/board-generic.c | ||
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 | #include <linux/io.h> | ||
11 | #include <linux/of_irq.h> | ||
12 | #include <linux/of_platform.h> | ||
13 | #include <linux/irqdomain.h> | ||
14 | |||
15 | #include <asm/mach/arch.h> | ||
16 | |||
17 | #include <mach/common.h> | ||
18 | #include <mach/cp_intc.h> | ||
19 | #include <mach/da8xx.h> | ||
20 | |||
21 | #define DA8XX_NUM_UARTS 3 | ||
22 | |||
23 | void __init da8xx_uart_clk_enable(void) | ||
24 | { | ||
25 | int i; | ||
26 | for (i = 0; i < DA8XX_NUM_UARTS; i++) | ||
27 | davinci_serial_setup_clk(i, NULL); | ||
28 | } | ||
29 | |||
30 | static struct of_device_id da8xx_irq_match[] __initdata = { | ||
31 | { .compatible = "ti,cp-intc", .data = cp_intc_of_init, }, | ||
32 | { } | ||
33 | }; | ||
34 | |||
35 | static void __init da8xx_init_irq(void) | ||
36 | { | ||
37 | of_irq_init(da8xx_irq_match); | ||
38 | } | ||
39 | |||
40 | #ifdef CONFIG_ARCH_DAVINCI_DA850 | ||
41 | |||
42 | static void __init da850_init_machine(void) | ||
43 | { | ||
44 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
45 | |||
46 | da8xx_uart_clk_enable(); | ||
47 | } | ||
48 | |||
49 | static const char *da850_boards_compat[] __initdata = { | ||
50 | "enbw,cmc", | ||
51 | "ti,da850-evm", | ||
52 | "ti,da850", | ||
53 | NULL, | ||
54 | }; | ||
55 | |||
56 | DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x") | ||
57 | .map_io = da850_init, | ||
58 | .init_irq = da8xx_init_irq, | ||
59 | .timer = &davinci_timer, | ||
60 | .init_machine = da850_init_machine, | ||
61 | .dt_compat = da850_boards_compat, | ||
62 | .init_late = davinci_init_late, | ||
63 | .restart = da8xx_restart, | ||
64 | MACHINE_END | ||
65 | |||
66 | #endif | ||
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c index bd2f72b414bc..46c9a0c09ae5 100644 --- a/arch/arm/mach-davinci/devices-da8xx.c +++ b/arch/arm/mach-davinci/devices-da8xx.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <mach/time.h> | 22 | #include <mach/time.h> |
23 | #include <mach/da8xx.h> | 23 | #include <mach/da8xx.h> |
24 | #include <mach/cpuidle.h> | 24 | #include <mach/cpuidle.h> |
25 | #include <mach/sram.h> | ||
25 | 26 | ||
26 | #include "clock.h" | 27 | #include "clock.h" |
27 | #include "asp.h" | 28 | #include "asp.h" |
@@ -32,6 +33,7 @@ | |||
32 | #define DA8XX_WDOG_BASE 0x01c21000 /* DA8XX_TIMER64P1_BASE */ | 33 | #define DA8XX_WDOG_BASE 0x01c21000 /* DA8XX_TIMER64P1_BASE */ |
33 | #define DA8XX_I2C0_BASE 0x01c22000 | 34 | #define DA8XX_I2C0_BASE 0x01c22000 |
34 | #define DA8XX_RTC_BASE 0x01c23000 | 35 | #define DA8XX_RTC_BASE 0x01c23000 |
36 | #define DA8XX_PRUSS_MEM_BASE 0x01c30000 | ||
35 | #define DA8XX_MMCSD0_BASE 0x01c40000 | 37 | #define DA8XX_MMCSD0_BASE 0x01c40000 |
36 | #define DA8XX_SPI0_BASE 0x01c41000 | 38 | #define DA8XX_SPI0_BASE 0x01c41000 |
37 | #define DA830_SPI1_BASE 0x01e12000 | 39 | #define DA830_SPI1_BASE 0x01e12000 |
@@ -518,6 +520,75 @@ void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata) | |||
518 | } | 520 | } |
519 | } | 521 | } |
520 | 522 | ||
523 | static struct resource da8xx_pruss_resources[] = { | ||
524 | { | ||
525 | .start = DA8XX_PRUSS_MEM_BASE, | ||
526 | .end = DA8XX_PRUSS_MEM_BASE + 0xFFFF, | ||
527 | .flags = IORESOURCE_MEM, | ||
528 | }, | ||
529 | { | ||
530 | .start = IRQ_DA8XX_EVTOUT0, | ||
531 | .end = IRQ_DA8XX_EVTOUT0, | ||
532 | .flags = IORESOURCE_IRQ, | ||
533 | }, | ||
534 | { | ||
535 | .start = IRQ_DA8XX_EVTOUT1, | ||
536 | .end = IRQ_DA8XX_EVTOUT1, | ||
537 | .flags = IORESOURCE_IRQ, | ||
538 | }, | ||
539 | { | ||
540 | .start = IRQ_DA8XX_EVTOUT2, | ||
541 | .end = IRQ_DA8XX_EVTOUT2, | ||
542 | .flags = IORESOURCE_IRQ, | ||
543 | }, | ||
544 | { | ||
545 | .start = IRQ_DA8XX_EVTOUT3, | ||
546 | .end = IRQ_DA8XX_EVTOUT3, | ||
547 | .flags = IORESOURCE_IRQ, | ||
548 | }, | ||
549 | { | ||
550 | .start = IRQ_DA8XX_EVTOUT4, | ||
551 | .end = IRQ_DA8XX_EVTOUT4, | ||
552 | .flags = IORESOURCE_IRQ, | ||
553 | }, | ||
554 | { | ||
555 | .start = IRQ_DA8XX_EVTOUT5, | ||
556 | .end = IRQ_DA8XX_EVTOUT5, | ||
557 | .flags = IORESOURCE_IRQ, | ||
558 | }, | ||
559 | { | ||
560 | .start = IRQ_DA8XX_EVTOUT6, | ||
561 | .end = IRQ_DA8XX_EVTOUT6, | ||
562 | .flags = IORESOURCE_IRQ, | ||
563 | }, | ||
564 | { | ||
565 | .start = IRQ_DA8XX_EVTOUT7, | ||
566 | .end = IRQ_DA8XX_EVTOUT7, | ||
567 | .flags = IORESOURCE_IRQ, | ||
568 | }, | ||
569 | }; | ||
570 | |||
571 | static struct uio_pruss_pdata da8xx_uio_pruss_pdata = { | ||
572 | .pintc_base = 0x4000, | ||
573 | }; | ||
574 | |||
575 | static struct platform_device da8xx_uio_pruss_dev = { | ||
576 | .name = "pruss_uio", | ||
577 | .id = -1, | ||
578 | .num_resources = ARRAY_SIZE(da8xx_pruss_resources), | ||
579 | .resource = da8xx_pruss_resources, | ||
580 | .dev = { | ||
581 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
582 | .platform_data = &da8xx_uio_pruss_pdata, | ||
583 | } | ||
584 | }; | ||
585 | |||
586 | int __init da8xx_register_uio_pruss(void) | ||
587 | { | ||
588 | da8xx_uio_pruss_pdata.sram_pool = sram_get_gen_pool(); | ||
589 | return platform_device_register(&da8xx_uio_pruss_dev); | ||
590 | } | ||
591 | |||
521 | static const struct display_panel disp_panel = { | 592 | static const struct display_panel disp_panel = { |
522 | QVGA, | 593 | QVGA, |
523 | 16, | 594 | 16, |
@@ -900,7 +971,7 @@ static int da850_sata_init(struct device *dev, void __iomem *addr) | |||
900 | if (IS_ERR(da850_sata_clk)) | 971 | if (IS_ERR(da850_sata_clk)) |
901 | return PTR_ERR(da850_sata_clk); | 972 | return PTR_ERR(da850_sata_clk); |
902 | 973 | ||
903 | ret = clk_enable(da850_sata_clk); | 974 | ret = clk_prepare_enable(da850_sata_clk); |
904 | if (ret) | 975 | if (ret) |
905 | goto err0; | 976 | goto err0; |
906 | 977 | ||
@@ -931,7 +1002,7 @@ static int da850_sata_init(struct device *dev, void __iomem *addr) | |||
931 | return 0; | 1002 | return 0; |
932 | 1003 | ||
933 | err1: | 1004 | err1: |
934 | clk_disable(da850_sata_clk); | 1005 | clk_disable_unprepare(da850_sata_clk); |
935 | err0: | 1006 | err0: |
936 | clk_put(da850_sata_clk); | 1007 | clk_put(da850_sata_clk); |
937 | return ret; | 1008 | return ret; |
@@ -939,7 +1010,7 @@ err0: | |||
939 | 1010 | ||
940 | static void da850_sata_exit(struct device *dev) | 1011 | static void da850_sata_exit(struct device *dev) |
941 | { | 1012 | { |
942 | clk_disable(da850_sata_clk); | 1013 | clk_disable_unprepare(da850_sata_clk); |
943 | clk_put(da850_sata_clk); | 1014 | clk_put(da850_sata_clk); |
944 | } | 1015 | } |
945 | 1016 | ||
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index a255434908db..b49c3b77d55e 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c | |||
@@ -758,12 +758,6 @@ static struct map_desc dm355_io_desc[] = { | |||
758 | .length = IO_SIZE, | 758 | .length = IO_SIZE, |
759 | .type = MT_DEVICE | 759 | .type = MT_DEVICE |
760 | }, | 760 | }, |
761 | { | ||
762 | .virtual = SRAM_VIRT, | ||
763 | .pfn = __phys_to_pfn(0x00010000), | ||
764 | .length = SZ_32K, | ||
765 | .type = MT_MEMORY_NONCACHED, | ||
766 | }, | ||
767 | }; | 761 | }; |
768 | 762 | ||
769 | /* Contents of JTAG ID register used to identify exact cpu type */ | 763 | /* Contents of JTAG ID register used to identify exact cpu type */ |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index b680c832e0ba..6c3980540be0 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -985,12 +985,6 @@ static struct map_desc dm365_io_desc[] = { | |||
985 | .length = IO_SIZE, | 985 | .length = IO_SIZE, |
986 | .type = MT_DEVICE | 986 | .type = MT_DEVICE |
987 | }, | 987 | }, |
988 | { | ||
989 | .virtual = SRAM_VIRT, | ||
990 | .pfn = __phys_to_pfn(0x00010000), | ||
991 | .length = SZ_32K, | ||
992 | .type = MT_MEMORY_NONCACHED, | ||
993 | }, | ||
994 | }; | 988 | }; |
995 | 989 | ||
996 | static struct resource dm365_ks_resources[] = { | 990 | static struct resource dm365_ks_resources[] = { |
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index cd0c8b1e1ecf..11c79a3362ef 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c | |||
@@ -713,8 +713,7 @@ static int dm644x_venc_setup_clock(enum vpbe_enc_timings_type type, | |||
713 | break; | 713 | break; |
714 | case VPBE_ENC_CUSTOM_TIMINGS: | 714 | case VPBE_ENC_CUSTOM_TIMINGS: |
715 | if (pclock <= 27000000) { | 715 | if (pclock <= 27000000) { |
716 | v |= DM644X_VPSS_MUXSEL_PLL2_MODE | | 716 | v |= DM644X_VPSS_DACCLKEN; |
717 | DM644X_VPSS_DACCLKEN; | ||
718 | writel(v, DAVINCI_SYSMOD_VIRT(SYSMOD_VPSS_CLKCTL)); | 717 | writel(v, DAVINCI_SYSMOD_VIRT(SYSMOD_VPSS_CLKCTL)); |
719 | } else { | 718 | } else { |
720 | /* | 719 | /* |
@@ -786,12 +785,6 @@ static struct map_desc dm644x_io_desc[] = { | |||
786 | .length = IO_SIZE, | 785 | .length = IO_SIZE, |
787 | .type = MT_DEVICE | 786 | .type = MT_DEVICE |
788 | }, | 787 | }, |
789 | { | ||
790 | .virtual = SRAM_VIRT, | ||
791 | .pfn = __phys_to_pfn(0x00008000), | ||
792 | .length = SZ_16K, | ||
793 | .type = MT_MEMORY_NONCACHED, | ||
794 | }, | ||
795 | }; | 788 | }; |
796 | 789 | ||
797 | /* Contents of JTAG ID register used to identify exact cpu type */ | 790 | /* Contents of JTAG ID register used to identify exact cpu type */ |
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 97c0f8e555bd..ac7b431c4c8e 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c | |||
@@ -756,12 +756,6 @@ static struct map_desc dm646x_io_desc[] = { | |||
756 | .length = IO_SIZE, | 756 | .length = IO_SIZE, |
757 | .type = MT_DEVICE | 757 | .type = MT_DEVICE |
758 | }, | 758 | }, |
759 | { | ||
760 | .virtual = SRAM_VIRT, | ||
761 | .pfn = __phys_to_pfn(0x00010000), | ||
762 | .length = SZ_32K, | ||
763 | .type = MT_MEMORY_NONCACHED, | ||
764 | }, | ||
765 | }; | 759 | }; |
766 | 760 | ||
767 | /* Contents of JTAG ID register used to identify exact cpu type */ | 761 | /* Contents of JTAG ID register used to identify exact cpu type */ |
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h index bdc4aa8e672a..046c7238a3d6 100644 --- a/arch/arm/mach-davinci/include/mach/common.h +++ b/arch/arm/mach-davinci/include/mach/common.h | |||
@@ -104,8 +104,6 @@ int davinci_pm_init(void); | |||
104 | static inline int davinci_pm_init(void) { return 0; } | 104 | static inline int davinci_pm_init(void) { return 0; } |
105 | #endif | 105 | #endif |
106 | 106 | ||
107 | /* standard place to map on-chip SRAMs; they *may* support DMA */ | ||
108 | #define SRAM_VIRT 0xfffe0000 | ||
109 | #define SRAM_SIZE SZ_128K | 107 | #define SRAM_SIZE SZ_128K |
110 | 108 | ||
111 | #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */ | 109 | #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */ |
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index aaccdc4528fc..700d311c6854 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/platform_data/mmc-davinci.h> | 26 | #include <linux/platform_data/mmc-davinci.h> |
27 | #include <linux/platform_data/usb-davinci.h> | 27 | #include <linux/platform_data/usb-davinci.h> |
28 | #include <linux/platform_data/spi-davinci.h> | 28 | #include <linux/platform_data/spi-davinci.h> |
29 | #include <linux/platform_data/uio_pruss.h> | ||
29 | 30 | ||
30 | #include <media/davinci/vpif_types.h> | 31 | #include <media/davinci/vpif_types.h> |
31 | 32 | ||
@@ -72,6 +73,7 @@ extern unsigned int da850_max_speed; | |||
72 | #define DA8XX_AEMIF_CS2_BASE 0x60000000 | 73 | #define DA8XX_AEMIF_CS2_BASE 0x60000000 |
73 | #define DA8XX_AEMIF_CS3_BASE 0x62000000 | 74 | #define DA8XX_AEMIF_CS3_BASE 0x62000000 |
74 | #define DA8XX_AEMIF_CTL_BASE 0x68000000 | 75 | #define DA8XX_AEMIF_CTL_BASE 0x68000000 |
76 | #define DA8XX_SHARED_RAM_BASE 0x80000000 | ||
75 | #define DA8XX_ARM_RAM_BASE 0xffff0000 | 77 | #define DA8XX_ARM_RAM_BASE 0xffff0000 |
76 | 78 | ||
77 | void __init da830_init(void); | 79 | void __init da830_init(void); |
@@ -86,6 +88,7 @@ int da8xx_register_watchdog(void); | |||
86 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); | 88 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); |
87 | int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); | 89 | int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); |
88 | int da8xx_register_emac(void); | 90 | int da8xx_register_emac(void); |
91 | int da8xx_register_uio_pruss(void); | ||
89 | int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata); | 92 | int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata); |
90 | int da8xx_register_mmcsd0(struct davinci_mmc_config *config); | 93 | int da8xx_register_mmcsd0(struct davinci_mmc_config *config); |
91 | int da850_register_mmcsd1(struct davinci_mmc_config *config); | 94 | int da850_register_mmcsd1(struct davinci_mmc_config *config); |
diff --git a/arch/arm/mach-davinci/include/mach/serial.h b/arch/arm/mach-davinci/include/mach/serial.h index 46b3cd11c3c2..2d9d921e8b01 100644 --- a/arch/arm/mach-davinci/include/mach/serial.h +++ b/arch/arm/mach-davinci/include/mach/serial.h | |||
@@ -43,6 +43,7 @@ struct davinci_uart_config { | |||
43 | }; | 43 | }; |
44 | 44 | ||
45 | extern int davinci_serial_init(struct davinci_uart_config *); | 45 | extern int davinci_serial_init(struct davinci_uart_config *); |
46 | extern int davinci_serial_setup_clk(unsigned instance, unsigned int *rate); | ||
46 | #endif | 47 | #endif |
47 | 48 | ||
48 | #endif /* __ASM_ARCH_SERIAL_H */ | 49 | #endif /* __ASM_ARCH_SERIAL_H */ |
diff --git a/arch/arm/mach-davinci/include/mach/sram.h b/arch/arm/mach-davinci/include/mach/sram.h index 111f7cc71e07..4e5db56218b8 100644 --- a/arch/arm/mach-davinci/include/mach/sram.h +++ b/arch/arm/mach-davinci/include/mach/sram.h | |||
@@ -24,4 +24,7 @@ | |||
24 | extern void *sram_alloc(size_t len, dma_addr_t *dma); | 24 | extern void *sram_alloc(size_t len, dma_addr_t *dma); |
25 | extern void sram_free(void *addr, size_t len); | 25 | extern void sram_free(void *addr, size_t len); |
26 | 26 | ||
27 | /* Get the struct gen_pool * for use in platform data */ | ||
28 | extern struct gen_pool *sram_get_gen_pool(void); | ||
29 | |||
27 | #endif /* __MACH_SRAM_H */ | 30 | #endif /* __MACH_SRAM_H */ |
diff --git a/arch/arm/mach-davinci/serial.c b/arch/arm/mach-davinci/serial.c index 1875740fe27c..f2625814c3c9 100644 --- a/arch/arm/mach-davinci/serial.c +++ b/arch/arm/mach-davinci/serial.c | |||
@@ -70,11 +70,33 @@ static void __init davinci_serial_reset(struct plat_serial8250_port *p) | |||
70 | UART_DM646X_SCR_TX_WATERMARK); | 70 | UART_DM646X_SCR_TX_WATERMARK); |
71 | } | 71 | } |
72 | 72 | ||
73 | int __init davinci_serial_init(struct davinci_uart_config *info) | 73 | /* Enable UART clock and obtain its rate */ |
74 | int __init davinci_serial_setup_clk(unsigned instance, unsigned int *rate) | ||
74 | { | 75 | { |
75 | int i; | ||
76 | char name[16]; | 76 | char name[16]; |
77 | struct clk *uart_clk; | 77 | struct clk *clk; |
78 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
79 | struct device *dev = &soc_info->serial_dev->dev; | ||
80 | |||
81 | sprintf(name, "uart%d", instance); | ||
82 | clk = clk_get(dev, name); | ||
83 | if (IS_ERR(clk)) { | ||
84 | pr_err("%s:%d: failed to get UART%d clock\n", | ||
85 | __func__, __LINE__, instance); | ||
86 | return PTR_ERR(clk); | ||
87 | } | ||
88 | |||
89 | clk_prepare_enable(clk); | ||
90 | |||
91 | if (rate) | ||
92 | *rate = clk_get_rate(clk); | ||
93 | |||
94 | return 0; | ||
95 | } | ||
96 | |||
97 | int __init davinci_serial_init(struct davinci_uart_config *info) | ||
98 | { | ||
99 | int i, ret; | ||
78 | struct davinci_soc_info *soc_info = &davinci_soc_info; | 100 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
79 | struct device *dev = &soc_info->serial_dev->dev; | 101 | struct device *dev = &soc_info->serial_dev->dev; |
80 | struct plat_serial8250_port *p = dev->platform_data; | 102 | struct plat_serial8250_port *p = dev->platform_data; |
@@ -87,16 +109,9 @@ int __init davinci_serial_init(struct davinci_uart_config *info) | |||
87 | if (!(info->enabled_uarts & (1 << i))) | 109 | if (!(info->enabled_uarts & (1 << i))) |
88 | continue; | 110 | continue; |
89 | 111 | ||
90 | sprintf(name, "uart%d", i); | 112 | ret = davinci_serial_setup_clk(i, &p->uartclk); |
91 | uart_clk = clk_get(dev, name); | 113 | if (ret) |
92 | if (IS_ERR(uart_clk)) { | ||
93 | printk(KERN_ERR "%s:%d: failed to get UART%d clock\n", | ||
94 | __func__, __LINE__, i); | ||
95 | continue; | 114 | continue; |
96 | } | ||
97 | |||
98 | clk_enable(uart_clk); | ||
99 | p->uartclk = clk_get_rate(uart_clk); | ||
100 | 115 | ||
101 | if (!p->membase && p->mapbase) { | 116 | if (!p->membase && p->mapbase) { |
102 | p->membase = ioremap(p->mapbase, SZ_4K); | 117 | p->membase = ioremap(p->mapbase, SZ_4K); |
diff --git a/arch/arm/mach-davinci/sram.c b/arch/arm/mach-davinci/sram.c index db0f7787faf1..c5f7ee5cc80a 100644 --- a/arch/arm/mach-davinci/sram.c +++ b/arch/arm/mach-davinci/sram.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/io.h> | ||
13 | #include <linux/genalloc.h> | 14 | #include <linux/genalloc.h> |
14 | 15 | ||
15 | #include <mach/common.h> | 16 | #include <mach/common.h> |
@@ -17,6 +18,11 @@ | |||
17 | 18 | ||
18 | static struct gen_pool *sram_pool; | 19 | static struct gen_pool *sram_pool; |
19 | 20 | ||
21 | struct gen_pool *sram_get_gen_pool(void) | ||
22 | { | ||
23 | return sram_pool; | ||
24 | } | ||
25 | |||
20 | void *sram_alloc(size_t len, dma_addr_t *dma) | 26 | void *sram_alloc(size_t len, dma_addr_t *dma) |
21 | { | 27 | { |
22 | unsigned long vaddr; | 28 | unsigned long vaddr; |
@@ -32,7 +38,7 @@ void *sram_alloc(size_t len, dma_addr_t *dma) | |||
32 | return NULL; | 38 | return NULL; |
33 | 39 | ||
34 | if (dma) | 40 | if (dma) |
35 | *dma = dma_base + (vaddr - SRAM_VIRT); | 41 | *dma = gen_pool_virt_to_phys(sram_pool, vaddr); |
36 | return (void *)vaddr; | 42 | return (void *)vaddr; |
37 | 43 | ||
38 | } | 44 | } |
@@ -53,8 +59,10 @@ EXPORT_SYMBOL(sram_free); | |||
53 | */ | 59 | */ |
54 | static int __init sram_init(void) | 60 | static int __init sram_init(void) |
55 | { | 61 | { |
62 | phys_addr_t phys = davinci_soc_info.sram_dma; | ||
56 | unsigned len = davinci_soc_info.sram_len; | 63 | unsigned len = davinci_soc_info.sram_len; |
57 | int status = 0; | 64 | int status = 0; |
65 | void *addr; | ||
58 | 66 | ||
59 | if (len) { | 67 | if (len) { |
60 | len = min_t(unsigned, len, SRAM_SIZE); | 68 | len = min_t(unsigned, len, SRAM_SIZE); |
@@ -62,8 +70,17 @@ static int __init sram_init(void) | |||
62 | if (!sram_pool) | 70 | if (!sram_pool) |
63 | status = -ENOMEM; | 71 | status = -ENOMEM; |
64 | } | 72 | } |
65 | if (sram_pool) | 73 | |
66 | status = gen_pool_add(sram_pool, SRAM_VIRT, len, -1); | 74 | if (sram_pool) { |
75 | addr = ioremap(phys, len); | ||
76 | if (!addr) | ||
77 | return -ENOMEM; | ||
78 | status = gen_pool_add_virt(sram_pool, (unsigned)addr, | ||
79 | phys, len, -1); | ||
80 | if (status < 0) | ||
81 | iounmap(addr); | ||
82 | } | ||
83 | |||
67 | WARN_ON(status < 0); | 84 | WARN_ON(status < 0); |
68 | return status; | 85 | return status; |
69 | } | 86 | } |
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 75da315b6587..9847938785ca 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c | |||
@@ -379,7 +379,7 @@ static void __init davinci_timer_init(void) | |||
379 | 379 | ||
380 | timer_clk = clk_get(NULL, "timer0"); | 380 | timer_clk = clk_get(NULL, "timer0"); |
381 | BUG_ON(IS_ERR(timer_clk)); | 381 | BUG_ON(IS_ERR(timer_clk)); |
382 | clk_enable(timer_clk); | 382 | clk_prepare_enable(timer_clk); |
383 | 383 | ||
384 | /* init timer hw */ | 384 | /* init timer hw */ |
385 | timer_init(); | 385 | timer_init(); |
@@ -429,7 +429,7 @@ void davinci_watchdog_reset(struct platform_device *pdev) | |||
429 | wd_clk = clk_get(&pdev->dev, NULL); | 429 | wd_clk = clk_get(&pdev->dev, NULL); |
430 | if (WARN_ON(IS_ERR(wd_clk))) | 430 | if (WARN_ON(IS_ERR(wd_clk))) |
431 | return; | 431 | return; |
432 | clk_enable(wd_clk); | 432 | clk_prepare_enable(wd_clk); |
433 | 433 | ||
434 | /* disable, internal clock source */ | 434 | /* disable, internal clock source */ |
435 | __raw_writel(0, base + TCR); | 435 | __raw_writel(0, base + TCR); |
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c index f77b95336e2b..34509ffba221 100644 --- a/arch/arm/mach-davinci/usb.c +++ b/arch/arm/mach-davinci/usb.c | |||
@@ -42,14 +42,8 @@ static struct musb_hdrc_config musb_config = { | |||
42 | }; | 42 | }; |
43 | 43 | ||
44 | static struct musb_hdrc_platform_data usb_data = { | 44 | static struct musb_hdrc_platform_data usb_data = { |
45 | #if defined(CONFIG_USB_MUSB_OTG) | ||
46 | /* OTG requires a Mini-AB connector */ | 45 | /* OTG requires a Mini-AB connector */ |
47 | .mode = MUSB_OTG, | 46 | .mode = MUSB_OTG, |
48 | #elif defined(CONFIG_USB_MUSB_PERIPHERAL) | ||
49 | .mode = MUSB_PERIPHERAL, | ||
50 | #elif defined(CONFIG_USB_MUSB_HOST) | ||
51 | .mode = MUSB_HOST, | ||
52 | #endif | ||
53 | .clock = "usb", | 47 | .clock = "usb", |
54 | .config = &musb_config, | 48 | .config = &musb_config, |
55 | }; | 49 | }; |
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index da55107033dd..bb3b09aa9183 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -63,6 +63,7 @@ config SOC_EXYNOS5250 | |||
63 | depends on ARCH_EXYNOS5 | 63 | depends on ARCH_EXYNOS5 |
64 | select S5P_PM if PM | 64 | select S5P_PM if PM |
65 | select S5P_SLEEP if PM | 65 | select S5P_SLEEP if PM |
66 | select S5P_DEV_MFC | ||
66 | select SAMSUNG_DMADEV | 67 | select SAMSUNG_DMADEV |
67 | help | 68 | help |
68 | Enable EXYNOS5250 SoC support | 69 | Enable EXYNOS5250 SoC support |
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile index 9b58024f7d43..1797dee88a0d 100644 --- a/arch/arm/mach-exynos/Makefile +++ b/arch/arm/mach-exynos/Makefile | |||
@@ -53,7 +53,6 @@ obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o | |||
53 | obj-$(CONFIG_EXYNOS4_DEV_DWMCI) += dev-dwmci.o | 53 | obj-$(CONFIG_EXYNOS4_DEV_DWMCI) += dev-dwmci.o |
54 | obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o | 54 | obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o |
55 | obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o | 55 | obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o |
56 | obj-$(CONFIG_EXYNOS_DEV_DRM) += dev-drm.o | ||
57 | obj-$(CONFIG_EXYNOS_DEV_SYSMMU) += dev-sysmmu.o | 56 | obj-$(CONFIG_EXYNOS_DEV_SYSMMU) += dev-sysmmu.o |
58 | 57 | ||
59 | obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o | 58 | obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o |
diff --git a/arch/arm/mach-exynos/clock-exynos4.c b/arch/arm/mach-exynos/clock-exynos4.c index 6a45c9a9abe9..efead60b9436 100644 --- a/arch/arm/mach-exynos/clock-exynos4.c +++ b/arch/arm/mach-exynos/clock-exynos4.c | |||
@@ -576,6 +576,10 @@ static struct clk exynos4_init_clocks_off[] = { | |||
576 | .enable = exynos4_clk_ip_peril_ctrl, | 576 | .enable = exynos4_clk_ip_peril_ctrl, |
577 | .ctrlbit = (1 << 15), | 577 | .ctrlbit = (1 << 15), |
578 | }, { | 578 | }, { |
579 | .name = "tmu_apbif", | ||
580 | .enable = exynos4_clk_ip_perir_ctrl, | ||
581 | .ctrlbit = (1 << 17), | ||
582 | }, { | ||
579 | .name = "keypad", | 583 | .name = "keypad", |
580 | .enable = exynos4_clk_ip_perir_ctrl, | 584 | .enable = exynos4_clk_ip_perir_ctrl, |
581 | .ctrlbit = (1 << 16), | 585 | .ctrlbit = (1 << 16), |
@@ -613,11 +617,6 @@ static struct clk exynos4_init_clocks_off[] = { | |||
613 | .ctrlbit = (1 << 18), | 617 | .ctrlbit = (1 << 18), |
614 | }, { | 618 | }, { |
615 | .name = "iis", | 619 | .name = "iis", |
616 | .devname = "samsung-i2s.0", | ||
617 | .enable = exynos4_clk_ip_peril_ctrl, | ||
618 | .ctrlbit = (1 << 19), | ||
619 | }, { | ||
620 | .name = "iis", | ||
621 | .devname = "samsung-i2s.1", | 620 | .devname = "samsung-i2s.1", |
622 | .enable = exynos4_clk_ip_peril_ctrl, | 621 | .enable = exynos4_clk_ip_peril_ctrl, |
623 | .ctrlbit = (1 << 20), | 622 | .ctrlbit = (1 << 20), |
diff --git a/arch/arm/mach-exynos/clock-exynos5.c b/arch/arm/mach-exynos/clock-exynos5.c index c44ca1ee1b8d..7652f5d78a56 100644 --- a/arch/arm/mach-exynos/clock-exynos5.c +++ b/arch/arm/mach-exynos/clock-exynos5.c | |||
@@ -196,6 +196,11 @@ static int exynos5_clk_ip_isp1_ctrl(struct clk *clk, int enable) | |||
196 | return s5p_gatectrl(EXYNOS5_CLKGATE_IP_ISP1, clk, enable); | 196 | return s5p_gatectrl(EXYNOS5_CLKGATE_IP_ISP1, clk, enable); |
197 | } | 197 | } |
198 | 198 | ||
199 | static int exynos5_clk_hdmiphy_ctrl(struct clk *clk, int enable) | ||
200 | { | ||
201 | return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable); | ||
202 | } | ||
203 | |||
199 | /* Core list of CMU_CPU side */ | 204 | /* Core list of CMU_CPU side */ |
200 | 205 | ||
201 | static struct clksrc_clk exynos5_clk_mout_apll = { | 206 | static struct clksrc_clk exynos5_clk_mout_apll = { |
@@ -292,7 +297,7 @@ static struct clksrc_sources exynos5_clk_src_mpll = { | |||
292 | .nr_sources = ARRAY_SIZE(exynos5_clk_src_mpll_list), | 297 | .nr_sources = ARRAY_SIZE(exynos5_clk_src_mpll_list), |
293 | }; | 298 | }; |
294 | 299 | ||
295 | struct clksrc_clk exynos5_clk_mout_mpll = { | 300 | static struct clksrc_clk exynos5_clk_mout_mpll = { |
296 | .clk = { | 301 | .clk = { |
297 | .name = "mout_mpll", | 302 | .name = "mout_mpll", |
298 | }, | 303 | }, |
@@ -467,12 +472,12 @@ static struct clksrc_clk exynos5_clk_pclk_acp = { | |||
467 | 472 | ||
468 | /* Core list of CMU_TOP side */ | 473 | /* Core list of CMU_TOP side */ |
469 | 474 | ||
470 | struct clk *exynos5_clkset_aclk_top_list[] = { | 475 | static struct clk *exynos5_clkset_aclk_top_list[] = { |
471 | [0] = &exynos5_clk_mout_mpll_user.clk, | 476 | [0] = &exynos5_clk_mout_mpll_user.clk, |
472 | [1] = &exynos5_clk_mout_bpll_user.clk, | 477 | [1] = &exynos5_clk_mout_bpll_user.clk, |
473 | }; | 478 | }; |
474 | 479 | ||
475 | struct clksrc_sources exynos5_clkset_aclk = { | 480 | static struct clksrc_sources exynos5_clkset_aclk = { |
476 | .sources = exynos5_clkset_aclk_top_list, | 481 | .sources = exynos5_clkset_aclk_top_list, |
477 | .nr_sources = ARRAY_SIZE(exynos5_clkset_aclk_top_list), | 482 | .nr_sources = ARRAY_SIZE(exynos5_clkset_aclk_top_list), |
478 | }; | 483 | }; |
@@ -486,12 +491,12 @@ static struct clksrc_clk exynos5_clk_aclk_400 = { | |||
486 | .reg_div = { .reg = EXYNOS5_CLKDIV_TOP0, .shift = 24, .size = 3 }, | 491 | .reg_div = { .reg = EXYNOS5_CLKDIV_TOP0, .shift = 24, .size = 3 }, |
487 | }; | 492 | }; |
488 | 493 | ||
489 | struct clk *exynos5_clkset_aclk_333_166_list[] = { | 494 | static struct clk *exynos5_clkset_aclk_333_166_list[] = { |
490 | [0] = &exynos5_clk_mout_cpll.clk, | 495 | [0] = &exynos5_clk_mout_cpll.clk, |
491 | [1] = &exynos5_clk_mout_mpll_user.clk, | 496 | [1] = &exynos5_clk_mout_mpll_user.clk, |
492 | }; | 497 | }; |
493 | 498 | ||
494 | struct clksrc_sources exynos5_clkset_aclk_333_166 = { | 499 | static struct clksrc_sources exynos5_clkset_aclk_333_166 = { |
495 | .sources = exynos5_clkset_aclk_333_166_list, | 500 | .sources = exynos5_clkset_aclk_333_166_list, |
496 | .nr_sources = ARRAY_SIZE(exynos5_clkset_aclk_333_166_list), | 501 | .nr_sources = ARRAY_SIZE(exynos5_clkset_aclk_333_166_list), |
497 | }; | 502 | }; |
@@ -616,6 +621,11 @@ static struct clk exynos5_init_clocks_off[] = { | |||
616 | .enable = exynos5_clk_ip_peric_ctrl, | 621 | .enable = exynos5_clk_ip_peric_ctrl, |
617 | .ctrlbit = (1 << 24), | 622 | .ctrlbit = (1 << 24), |
618 | }, { | 623 | }, { |
624 | .name = "tmu_apbif", | ||
625 | .parent = &exynos5_clk_aclk_66.clk, | ||
626 | .enable = exynos5_clk_ip_peris_ctrl, | ||
627 | .ctrlbit = (1 << 21), | ||
628 | }, { | ||
619 | .name = "rtc", | 629 | .name = "rtc", |
620 | .parent = &exynos5_clk_aclk_66.clk, | 630 | .parent = &exynos5_clk_aclk_66.clk, |
621 | .enable = exynos5_clk_ip_peris_ctrl, | 631 | .enable = exynos5_clk_ip_peris_ctrl, |
@@ -664,17 +674,22 @@ static struct clk exynos5_init_clocks_off[] = { | |||
664 | .ctrlbit = (1 << 25), | 674 | .ctrlbit = (1 << 25), |
665 | }, { | 675 | }, { |
666 | .name = "mfc", | 676 | .name = "mfc", |
667 | .devname = "s5p-mfc", | 677 | .devname = "s5p-mfc-v6", |
668 | .enable = exynos5_clk_ip_mfc_ctrl, | 678 | .enable = exynos5_clk_ip_mfc_ctrl, |
669 | .ctrlbit = (1 << 0), | 679 | .ctrlbit = (1 << 0), |
670 | }, { | 680 | }, { |
671 | .name = "hdmi", | 681 | .name = "hdmi", |
672 | .devname = "exynos4-hdmi", | 682 | .devname = "exynos5-hdmi", |
673 | .enable = exynos5_clk_ip_disp1_ctrl, | 683 | .enable = exynos5_clk_ip_disp1_ctrl, |
674 | .ctrlbit = (1 << 6), | 684 | .ctrlbit = (1 << 6), |
675 | }, { | 685 | }, { |
686 | .name = "hdmiphy", | ||
687 | .devname = "exynos5-hdmi", | ||
688 | .enable = exynos5_clk_hdmiphy_ctrl, | ||
689 | .ctrlbit = (1 << 0), | ||
690 | }, { | ||
676 | .name = "mixer", | 691 | .name = "mixer", |
677 | .devname = "s5p-mixer", | 692 | .devname = "exynos5-mixer", |
678 | .enable = exynos5_clk_ip_disp1_ctrl, | 693 | .enable = exynos5_clk_ip_disp1_ctrl, |
679 | .ctrlbit = (1 << 5), | 694 | .ctrlbit = (1 << 5), |
680 | }, { | 695 | }, { |
@@ -966,7 +981,7 @@ static struct clk exynos5_clk_fimd1 = { | |||
966 | .ctrlbit = (1 << 0), | 981 | .ctrlbit = (1 << 0), |
967 | }; | 982 | }; |
968 | 983 | ||
969 | struct clk *exynos5_clkset_group_list[] = { | 984 | static struct clk *exynos5_clkset_group_list[] = { |
970 | [0] = &clk_ext_xtal_mux, | 985 | [0] = &clk_ext_xtal_mux, |
971 | [1] = NULL, | 986 | [1] = NULL, |
972 | [2] = &exynos5_clk_sclk_hdmi24m, | 987 | [2] = &exynos5_clk_sclk_hdmi24m, |
@@ -979,7 +994,7 @@ struct clk *exynos5_clkset_group_list[] = { | |||
979 | [9] = &exynos5_clk_mout_cpll.clk, | 994 | [9] = &exynos5_clk_mout_cpll.clk, |
980 | }; | 995 | }; |
981 | 996 | ||
982 | struct clksrc_sources exynos5_clkset_group = { | 997 | static struct clksrc_sources exynos5_clkset_group = { |
983 | .sources = exynos5_clkset_group_list, | 998 | .sources = exynos5_clkset_group_list, |
984 | .nr_sources = ARRAY_SIZE(exynos5_clkset_group_list), | 999 | .nr_sources = ARRAY_SIZE(exynos5_clkset_group_list), |
985 | }; | 1000 | }; |
@@ -1195,7 +1210,7 @@ static struct clksrc_clk exynos5_clk_sclk_spi2 = { | |||
1195 | .reg_div = { .reg = EXYNOS5_CLKDIV_PERIC2, .shift = 8, .size = 8 }, | 1210 | .reg_div = { .reg = EXYNOS5_CLKDIV_PERIC2, .shift = 8, .size = 8 }, |
1196 | }; | 1211 | }; |
1197 | 1212 | ||
1198 | struct clksrc_clk exynos5_clk_sclk_fimd1 = { | 1213 | static struct clksrc_clk exynos5_clk_sclk_fimd1 = { |
1199 | .clk = { | 1214 | .clk = { |
1200 | .name = "sclk_fimd", | 1215 | .name = "sclk_fimd", |
1201 | .devname = "exynos5-fb.1", | 1216 | .devname = "exynos5-fb.1", |
@@ -1476,7 +1491,7 @@ static void exynos5_clock_resume(void) | |||
1476 | #define exynos5_clock_resume NULL | 1491 | #define exynos5_clock_resume NULL |
1477 | #endif | 1492 | #endif |
1478 | 1493 | ||
1479 | struct syscore_ops exynos5_clock_syscore_ops = { | 1494 | static struct syscore_ops exynos5_clock_syscore_ops = { |
1480 | .suspend = exynos5_clock_suspend, | 1495 | .suspend = exynos5_clock_suspend, |
1481 | .resume = exynos5_clock_resume, | 1496 | .resume = exynos5_clock_resume, |
1482 | }; | 1497 | }; |
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 8dd19c696a60..454bc6ed9a8d 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -63,7 +63,7 @@ static void exynos4_map_io(void); | |||
63 | static void exynos5_map_io(void); | 63 | static void exynos5_map_io(void); |
64 | static void exynos4_init_clocks(int xtal); | 64 | static void exynos4_init_clocks(int xtal); |
65 | static void exynos5_init_clocks(int xtal); | 65 | static void exynos5_init_clocks(int xtal); |
66 | static void exynos_init_uarts(struct s3c2410_uartcfg *cfg, int no); | 66 | static void exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no); |
67 | static int exynos_init(void); | 67 | static int exynos_init(void); |
68 | 68 | ||
69 | static struct cpu_table cpu_ids[] __initdata = { | 69 | static struct cpu_table cpu_ids[] __initdata = { |
@@ -72,7 +72,7 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
72 | .idmask = EXYNOS4_CPU_MASK, | 72 | .idmask = EXYNOS4_CPU_MASK, |
73 | .map_io = exynos4_map_io, | 73 | .map_io = exynos4_map_io, |
74 | .init_clocks = exynos4_init_clocks, | 74 | .init_clocks = exynos4_init_clocks, |
75 | .init_uarts = exynos_init_uarts, | 75 | .init_uarts = exynos4_init_uarts, |
76 | .init = exynos_init, | 76 | .init = exynos_init, |
77 | .name = name_exynos4210, | 77 | .name = name_exynos4210, |
78 | }, { | 78 | }, { |
@@ -80,7 +80,7 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
80 | .idmask = EXYNOS4_CPU_MASK, | 80 | .idmask = EXYNOS4_CPU_MASK, |
81 | .map_io = exynos4_map_io, | 81 | .map_io = exynos4_map_io, |
82 | .init_clocks = exynos4_init_clocks, | 82 | .init_clocks = exynos4_init_clocks, |
83 | .init_uarts = exynos_init_uarts, | 83 | .init_uarts = exynos4_init_uarts, |
84 | .init = exynos_init, | 84 | .init = exynos_init, |
85 | .name = name_exynos4212, | 85 | .name = name_exynos4212, |
86 | }, { | 86 | }, { |
@@ -88,7 +88,7 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
88 | .idmask = EXYNOS4_CPU_MASK, | 88 | .idmask = EXYNOS4_CPU_MASK, |
89 | .map_io = exynos4_map_io, | 89 | .map_io = exynos4_map_io, |
90 | .init_clocks = exynos4_init_clocks, | 90 | .init_clocks = exynos4_init_clocks, |
91 | .init_uarts = exynos_init_uarts, | 91 | .init_uarts = exynos4_init_uarts, |
92 | .init = exynos_init, | 92 | .init = exynos_init, |
93 | .name = name_exynos4412, | 93 | .name = name_exynos4412, |
94 | }, { | 94 | }, { |
@@ -96,7 +96,6 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
96 | .idmask = EXYNOS5_SOC_MASK, | 96 | .idmask = EXYNOS5_SOC_MASK, |
97 | .map_io = exynos5_map_io, | 97 | .map_io = exynos5_map_io, |
98 | .init_clocks = exynos5_init_clocks, | 98 | .init_clocks = exynos5_init_clocks, |
99 | .init_uarts = exynos_init_uarts, | ||
100 | .init = exynos_init, | 99 | .init = exynos_init, |
101 | .name = name_exynos5250, | 100 | .name = name_exynos5250, |
102 | }, | 101 | }, |
@@ -257,25 +256,10 @@ static struct map_desc exynos5_iodesc[] __initdata = { | |||
257 | .length = SZ_64K, | 256 | .length = SZ_64K, |
258 | .type = MT_DEVICE, | 257 | .type = MT_DEVICE, |
259 | }, { | 258 | }, { |
260 | .virtual = (unsigned long)S5P_VA_COMBINER_BASE, | ||
261 | .pfn = __phys_to_pfn(EXYNOS5_PA_COMBINER), | ||
262 | .length = SZ_4K, | ||
263 | .type = MT_DEVICE, | ||
264 | }, { | ||
265 | .virtual = (unsigned long)S3C_VA_UART, | 259 | .virtual = (unsigned long)S3C_VA_UART, |
266 | .pfn = __phys_to_pfn(EXYNOS5_PA_UART), | 260 | .pfn = __phys_to_pfn(EXYNOS5_PA_UART), |
267 | .length = SZ_512K, | 261 | .length = SZ_512K, |
268 | .type = MT_DEVICE, | 262 | .type = MT_DEVICE, |
269 | }, { | ||
270 | .virtual = (unsigned long)S5P_VA_GIC_CPU, | ||
271 | .pfn = __phys_to_pfn(EXYNOS5_PA_GIC_CPU), | ||
272 | .length = SZ_8K, | ||
273 | .type = MT_DEVICE, | ||
274 | }, { | ||
275 | .virtual = (unsigned long)S5P_VA_GIC_DIST, | ||
276 | .pfn = __phys_to_pfn(EXYNOS5_PA_GIC_DIST), | ||
277 | .length = SZ_4K, | ||
278 | .type = MT_DEVICE, | ||
279 | }, | 263 | }, |
280 | }; | 264 | }; |
281 | 265 | ||
@@ -354,23 +338,6 @@ static void __init exynos4_map_io(void) | |||
354 | static void __init exynos5_map_io(void) | 338 | static void __init exynos5_map_io(void) |
355 | { | 339 | { |
356 | iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); | 340 | iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); |
357 | |||
358 | s3c_device_i2c0.resource[0].start = EXYNOS5_PA_IIC(0); | ||
359 | s3c_device_i2c0.resource[0].end = EXYNOS5_PA_IIC(0) + SZ_4K - 1; | ||
360 | s3c_device_i2c0.resource[1].start = EXYNOS5_IRQ_IIC; | ||
361 | s3c_device_i2c0.resource[1].end = EXYNOS5_IRQ_IIC; | ||
362 | |||
363 | s3c_sdhci_setname(0, "exynos4-sdhci"); | ||
364 | s3c_sdhci_setname(1, "exynos4-sdhci"); | ||
365 | s3c_sdhci_setname(2, "exynos4-sdhci"); | ||
366 | s3c_sdhci_setname(3, "exynos4-sdhci"); | ||
367 | |||
368 | /* The I2C bus controllers are directly compatible with s3c2440 */ | ||
369 | s3c_i2c0_setname("s3c2440-i2c"); | ||
370 | s3c_i2c1_setname("s3c2440-i2c"); | ||
371 | s3c_i2c2_setname("s3c2440-i2c"); | ||
372 | |||
373 | s3c64xx_spi_setname("exynos4210-spi"); | ||
374 | } | 341 | } |
375 | 342 | ||
376 | static void __init exynos4_init_clocks(int xtal) | 343 | static void __init exynos4_init_clocks(int xtal) |
@@ -589,7 +556,8 @@ static void __init combiner_init(void __iomem *combiner_base, | |||
589 | } | 556 | } |
590 | 557 | ||
591 | #ifdef CONFIG_OF | 558 | #ifdef CONFIG_OF |
592 | int __init combiner_of_init(struct device_node *np, struct device_node *parent) | 559 | static int __init combiner_of_init(struct device_node *np, |
560 | struct device_node *parent) | ||
593 | { | 561 | { |
594 | void __iomem *combiner_base; | 562 | void __iomem *combiner_base; |
595 | 563 | ||
@@ -729,7 +697,7 @@ static int __init exynos_init(void) | |||
729 | 697 | ||
730 | /* uart registration process */ | 698 | /* uart registration process */ |
731 | 699 | ||
732 | static void __init exynos_init_uarts(struct s3c2410_uartcfg *cfg, int no) | 700 | static void __init exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no) |
733 | { | 701 | { |
734 | struct s3c2410_uartcfg *tcfg = cfg; | 702 | struct s3c2410_uartcfg *tcfg = cfg; |
735 | u32 ucnt; | 703 | u32 ucnt; |
@@ -737,10 +705,7 @@ static void __init exynos_init_uarts(struct s3c2410_uartcfg *cfg, int no) | |||
737 | for (ucnt = 0; ucnt < no; ucnt++, tcfg++) | 705 | for (ucnt = 0; ucnt < no; ucnt++, tcfg++) |
738 | tcfg->has_fracval = 1; | 706 | tcfg->has_fracval = 1; |
739 | 707 | ||
740 | if (soc_is_exynos5250()) | 708 | s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no); |
741 | s3c24xx_init_uartdevs("exynos4210-uart", exynos5_uart_resources, cfg, no); | ||
742 | else | ||
743 | s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no); | ||
744 | } | 709 | } |
745 | 710 | ||
746 | static void __iomem *exynos_eint_base; | 711 | static void __iomem *exynos_eint_base; |
@@ -972,14 +937,7 @@ static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc) | |||
972 | struct irq_chip *chip = irq_get_chip(irq); | 937 | struct irq_chip *chip = irq_get_chip(irq); |
973 | 938 | ||
974 | chained_irq_enter(chip, desc); | 939 | chained_irq_enter(chip, desc); |
975 | chip->irq_mask(&desc->irq_data); | ||
976 | |||
977 | if (chip->irq_ack) | ||
978 | chip->irq_ack(&desc->irq_data); | ||
979 | |||
980 | generic_handle_irq(*irq_data); | 940 | generic_handle_irq(*irq_data); |
981 | |||
982 | chip->irq_unmask(&desc->irq_data); | ||
983 | chained_irq_exit(chip, desc); | 941 | chained_irq_exit(chip, desc); |
984 | } | 942 | } |
985 | 943 | ||
@@ -999,11 +957,14 @@ static int __init exynos_init_irq_eint(void) | |||
999 | * platforms switch over to using the pinctrl driver, the wakeup | 957 | * platforms switch over to using the pinctrl driver, the wakeup |
1000 | * interrupt support code here can be completely removed. | 958 | * interrupt support code here can be completely removed. |
1001 | */ | 959 | */ |
960 | static const struct of_device_id exynos_pinctrl_ids[] = { | ||
961 | { .compatible = "samsung,pinctrl-exynos4210", }, | ||
962 | { .compatible = "samsung,pinctrl-exynos4x12", }, | ||
963 | }; | ||
1002 | struct device_node *pctrl_np, *wkup_np; | 964 | struct device_node *pctrl_np, *wkup_np; |
1003 | const char *pctrl_compat = "samsung,pinctrl-exynos4210"; | ||
1004 | const char *wkup_compat = "samsung,exynos4210-wakeup-eint"; | 965 | const char *wkup_compat = "samsung,exynos4210-wakeup-eint"; |
1005 | 966 | ||
1006 | for_each_compatible_node(pctrl_np, NULL, pctrl_compat) { | 967 | for_each_matching_node(pctrl_np, exynos_pinctrl_ids) { |
1007 | if (of_device_is_available(pctrl_np)) { | 968 | if (of_device_is_available(pctrl_np)) { |
1008 | wkup_np = of_find_compatible_node(pctrl_np, NULL, | 969 | wkup_np = of_find_compatible_node(pctrl_np, NULL, |
1009 | wkup_compat); | 970 | wkup_compat); |
diff --git a/arch/arm/mach-exynos/dev-audio.c b/arch/arm/mach-exynos/dev-audio.c index ae321c7cb15f..a1cb42c39590 100644 --- a/arch/arm/mach-exynos/dev-audio.c +++ b/arch/arm/mach-exynos/dev-audio.c | |||
@@ -14,9 +14,9 @@ | |||
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
17 | #include <linux/platform_data/asoc-s3c.h> | ||
17 | 18 | ||
18 | #include <plat/gpio-cfg.h> | 19 | #include <plat/gpio-cfg.h> |
19 | #include <linux/platform_data/asoc-s3c.h> | ||
20 | 20 | ||
21 | #include <mach/map.h> | 21 | #include <mach/map.h> |
22 | #include <mach/dma.h> | 22 | #include <mach/dma.h> |
diff --git a/arch/arm/mach-exynos/dev-drm.c b/arch/arm/mach-exynos/dev-drm.c deleted file mode 100644 index 17c9c6ecc2e0..000000000000 --- a/arch/arm/mach-exynos/dev-drm.c +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-exynos/dev-drm.c | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * EXYNOS - core DRM device | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | */ | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/dma-mapping.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | |||
19 | #include <plat/devs.h> | ||
20 | |||
21 | static u64 exynos_drm_dma_mask = DMA_BIT_MASK(32); | ||
22 | |||
23 | struct platform_device exynos_device_drm = { | ||
24 | .name = "exynos-drm", | ||
25 | .dev = { | ||
26 | .dma_mask = &exynos_drm_dma_mask, | ||
27 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
28 | } | ||
29 | }; | ||
diff --git a/arch/arm/mach-exynos/dev-ohci.c b/arch/arm/mach-exynos/dev-ohci.c index 14ed7951a2c6..4244d02dafbd 100644 --- a/arch/arm/mach-exynos/dev-ohci.c +++ b/arch/arm/mach-exynos/dev-ohci.c | |||
@@ -12,10 +12,10 @@ | |||
12 | 12 | ||
13 | #include <linux/dma-mapping.h> | 13 | #include <linux/dma-mapping.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/platform_data/usb-exynos.h> | ||
15 | 16 | ||
16 | #include <mach/irqs.h> | 17 | #include <mach/irqs.h> |
17 | #include <mach/map.h> | 18 | #include <mach/map.h> |
18 | #include <linux/platform_data/usb-exynos.h> | ||
19 | 19 | ||
20 | #include <plat/devs.h> | 20 | #include <plat/devs.h> |
21 | #include <plat/usb-phy.h> | 21 | #include <plat/usb-phy.h> |
diff --git a/arch/arm/mach-exynos/dev-uart.c b/arch/arm/mach-exynos/dev-uart.c index 2e85c022fd16..7c42f4b7c8be 100644 --- a/arch/arm/mach-exynos/dev-uart.c +++ b/arch/arm/mach-exynos/dev-uart.c | |||
@@ -52,27 +52,3 @@ struct s3c24xx_uart_resources exynos4_uart_resources[] __initdata = { | |||
52 | .nr_resources = ARRAY_SIZE(exynos4_uart3_resource), | 52 | .nr_resources = ARRAY_SIZE(exynos4_uart3_resource), |
53 | }, | 53 | }, |
54 | }; | 54 | }; |
55 | |||
56 | EXYNOS_UART_RESOURCE(5, 0) | ||
57 | EXYNOS_UART_RESOURCE(5, 1) | ||
58 | EXYNOS_UART_RESOURCE(5, 2) | ||
59 | EXYNOS_UART_RESOURCE(5, 3) | ||
60 | |||
61 | struct s3c24xx_uart_resources exynos5_uart_resources[] __initdata = { | ||
62 | [0] = { | ||
63 | .resources = exynos5_uart0_resource, | ||
64 | .nr_resources = ARRAY_SIZE(exynos5_uart0_resource), | ||
65 | }, | ||
66 | [1] = { | ||
67 | .resources = exynos5_uart1_resource, | ||
68 | .nr_resources = ARRAY_SIZE(exynos5_uart0_resource), | ||
69 | }, | ||
70 | [2] = { | ||
71 | .resources = exynos5_uart2_resource, | ||
72 | .nr_resources = ARRAY_SIZE(exynos5_uart2_resource), | ||
73 | }, | ||
74 | [3] = { | ||
75 | .resources = exynos5_uart3_resource, | ||
76 | .nr_resources = ARRAY_SIZE(exynos5_uart3_resource), | ||
77 | }, | ||
78 | }; | ||
diff --git a/arch/arm/mach-exynos/dma.c b/arch/arm/mach-exynos/dma.c index 21d568b3b149..87e07d6fc615 100644 --- a/arch/arm/mach-exynos/dma.c +++ b/arch/arm/mach-exynos/dma.c | |||
@@ -275,6 +275,9 @@ static int __init exynos_dma_init(void) | |||
275 | exynos_pdma1_pdata.nr_valid_peri = | 275 | exynos_pdma1_pdata.nr_valid_peri = |
276 | ARRAY_SIZE(exynos4210_pdma1_peri); | 276 | ARRAY_SIZE(exynos4210_pdma1_peri); |
277 | exynos_pdma1_pdata.peri_id = exynos4210_pdma1_peri; | 277 | exynos_pdma1_pdata.peri_id = exynos4210_pdma1_peri; |
278 | |||
279 | if (samsung_rev() == EXYNOS4210_REV_0) | ||
280 | exynos_mdma1_device.res.start = EXYNOS4_PA_S_MDMA1; | ||
278 | } else if (soc_is_exynos4212() || soc_is_exynos4412()) { | 281 | } else if (soc_is_exynos4212() || soc_is_exynos4412()) { |
279 | exynos_pdma0_pdata.nr_valid_peri = | 282 | exynos_pdma0_pdata.nr_valid_peri = |
280 | ARRAY_SIZE(exynos4212_pdma0_peri); | 283 | ARRAY_SIZE(exynos4212_pdma0_peri); |
diff --git a/arch/arm/mach-exynos/include/mach/irqs.h b/arch/arm/mach-exynos/include/mach/irqs.h index 35bced6f9092..5d44616c2014 100644 --- a/arch/arm/mach-exynos/include/mach/irqs.h +++ b/arch/arm/mach-exynos/include/mach/irqs.h | |||
@@ -136,6 +136,9 @@ | |||
136 | #define EXYNOS4_IRQ_TSI IRQ_SPI(115) | 136 | #define EXYNOS4_IRQ_TSI IRQ_SPI(115) |
137 | #define EXYNOS4_IRQ_SATA IRQ_SPI(116) | 137 | #define EXYNOS4_IRQ_SATA IRQ_SPI(116) |
138 | 138 | ||
139 | #define EXYNOS4_IRQ_TMU_TRIG0 COMBINER_IRQ(2, 4) | ||
140 | #define EXYNOS4_IRQ_TMU_TRIG1 COMBINER_IRQ(3, 4) | ||
141 | |||
139 | #define EXYNOS4_IRQ_SYSMMU_MDMA0_0 COMBINER_IRQ(4, 0) | 142 | #define EXYNOS4_IRQ_SYSMMU_MDMA0_0 COMBINER_IRQ(4, 0) |
140 | #define EXYNOS4_IRQ_SYSMMU_SSS_0 COMBINER_IRQ(4, 1) | 143 | #define EXYNOS4_IRQ_SYSMMU_SSS_0 COMBINER_IRQ(4, 1) |
141 | #define EXYNOS4_IRQ_SYSMMU_FIMC0_0 COMBINER_IRQ(4, 2) | 144 | #define EXYNOS4_IRQ_SYSMMU_FIMC0_0 COMBINER_IRQ(4, 2) |
@@ -259,11 +262,6 @@ | |||
259 | #define EXYNOS5_IRQ_IEM_IEC IRQ_SPI(48) | 262 | #define EXYNOS5_IRQ_IEM_IEC IRQ_SPI(48) |
260 | #define EXYNOS5_IRQ_IEM_APC IRQ_SPI(49) | 263 | #define EXYNOS5_IRQ_IEM_APC IRQ_SPI(49) |
261 | #define EXYNOS5_IRQ_GPIO_C2C IRQ_SPI(50) | 264 | #define EXYNOS5_IRQ_GPIO_C2C IRQ_SPI(50) |
262 | #define EXYNOS5_IRQ_UART0 IRQ_SPI(51) | ||
263 | #define EXYNOS5_IRQ_UART1 IRQ_SPI(52) | ||
264 | #define EXYNOS5_IRQ_UART2 IRQ_SPI(53) | ||
265 | #define EXYNOS5_IRQ_UART3 IRQ_SPI(54) | ||
266 | #define EXYNOS5_IRQ_UART4 IRQ_SPI(55) | ||
267 | #define EXYNOS5_IRQ_IIC IRQ_SPI(56) | 265 | #define EXYNOS5_IRQ_IIC IRQ_SPI(56) |
268 | #define EXYNOS5_IRQ_IIC1 IRQ_SPI(57) | 266 | #define EXYNOS5_IRQ_IIC1 IRQ_SPI(57) |
269 | #define EXYNOS5_IRQ_IIC2 IRQ_SPI(58) | 267 | #define EXYNOS5_IRQ_IIC2 IRQ_SPI(58) |
diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h index 8480849affb9..9f180aa3a848 100644 --- a/arch/arm/mach-exynos/include/mach/map.h +++ b/arch/arm/mach-exynos/include/mach/map.h | |||
@@ -88,8 +88,11 @@ | |||
88 | #define EXYNOS4_PA_TWD 0x10500600 | 88 | #define EXYNOS4_PA_TWD 0x10500600 |
89 | #define EXYNOS4_PA_L2CC 0x10502000 | 89 | #define EXYNOS4_PA_L2CC 0x10502000 |
90 | 90 | ||
91 | #define EXYNOS4_PA_TMU 0x100C0000 | ||
92 | |||
91 | #define EXYNOS4_PA_MDMA0 0x10810000 | 93 | #define EXYNOS4_PA_MDMA0 0x10810000 |
92 | #define EXYNOS4_PA_MDMA1 0x12850000 | 94 | #define EXYNOS4_PA_MDMA1 0x12850000 |
95 | #define EXYNOS4_PA_S_MDMA1 0x12840000 | ||
93 | #define EXYNOS4_PA_PDMA0 0x12680000 | 96 | #define EXYNOS4_PA_PDMA0 0x12680000 |
94 | #define EXYNOS4_PA_PDMA1 0x12690000 | 97 | #define EXYNOS4_PA_PDMA1 0x12690000 |
95 | #define EXYNOS5_PA_MDMA0 0x10800000 | 98 | #define EXYNOS5_PA_MDMA0 0x10800000 |
@@ -279,7 +282,6 @@ | |||
279 | #define EXYNOS5_PA_UART1 0x12C10000 | 282 | #define EXYNOS5_PA_UART1 0x12C10000 |
280 | #define EXYNOS5_PA_UART2 0x12C20000 | 283 | #define EXYNOS5_PA_UART2 0x12C20000 |
281 | #define EXYNOS5_PA_UART3 0x12C30000 | 284 | #define EXYNOS5_PA_UART3 0x12C30000 |
282 | #define EXYNOS5_SZ_UART SZ_256 | ||
283 | 285 | ||
284 | #define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) | 286 | #define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) |
285 | 287 | ||
diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h index d4e392b811a3..70b2795f5283 100644 --- a/arch/arm/mach-exynos/include/mach/regs-pmu.h +++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h | |||
@@ -230,8 +230,6 @@ | |||
230 | 230 | ||
231 | /* For EXYNOS5 */ | 231 | /* For EXYNOS5 */ |
232 | 232 | ||
233 | #define EXYNOS5_USB_CFG S5P_PMUREG(0x0230) | ||
234 | |||
235 | #define EXYNOS5_AUTO_WDTRESET_DISABLE S5P_PMUREG(0x0408) | 233 | #define EXYNOS5_AUTO_WDTRESET_DISABLE S5P_PMUREG(0x0408) |
236 | #define EXYNOS5_MASK_WDTRESET_REQUEST S5P_PMUREG(0x040C) | 234 | #define EXYNOS5_MASK_WDTRESET_REQUEST S5P_PMUREG(0x040C) |
237 | 235 | ||
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c index eadf4b59e7d2..8858068d2b6a 100644 --- a/arch/arm/mach-exynos/mach-exynos4-dt.c +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c | |||
@@ -77,6 +77,8 @@ static const struct of_dev_auxdata exynos4_auxdata_lookup[] __initconst = { | |||
77 | "exynos4210-spi.2", NULL), | 77 | "exynos4210-spi.2", NULL), |
78 | OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA0, "dma-pl330.0", NULL), | 78 | OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA0, "dma-pl330.0", NULL), |
79 | OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL), | 79 | OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL), |
80 | OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU, | ||
81 | "exynos-tmu", NULL), | ||
80 | {}, | 82 | {}, |
81 | }; | 83 | }; |
82 | 84 | ||
@@ -94,6 +96,8 @@ static void __init exynos4_dt_machine_init(void) | |||
94 | 96 | ||
95 | static char const *exynos4_dt_compat[] __initdata = { | 97 | static char const *exynos4_dt_compat[] __initdata = { |
96 | "samsung,exynos4210", | 98 | "samsung,exynos4210", |
99 | "samsung,exynos4212", | ||
100 | "samsung,exynos4412", | ||
97 | NULL | 101 | NULL |
98 | }; | 102 | }; |
99 | 103 | ||
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index db1cd8eacf28..25f464cf7979 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c | |||
@@ -11,6 +11,8 @@ | |||
11 | 11 | ||
12 | #include <linux/of_platform.h> | 12 | #include <linux/of_platform.h> |
13 | #include <linux/serial_core.h> | 13 | #include <linux/serial_core.h> |
14 | #include <linux/memblock.h> | ||
15 | #include <linux/of_fdt.h> | ||
14 | 16 | ||
15 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
16 | #include <asm/hardware/gic.h> | 18 | #include <asm/hardware/gic.h> |
@@ -18,6 +20,7 @@ | |||
18 | 20 | ||
19 | #include <plat/cpu.h> | 21 | #include <plat/cpu.h> |
20 | #include <plat/regs-serial.h> | 22 | #include <plat/regs-serial.h> |
23 | #include <plat/mfc.h> | ||
21 | 24 | ||
22 | #include "common.h" | 25 | #include "common.h" |
23 | 26 | ||
@@ -47,6 +50,20 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = { | |||
47 | "s3c2440-i2c.0", NULL), | 50 | "s3c2440-i2c.0", NULL), |
48 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(1), | 51 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(1), |
49 | "s3c2440-i2c.1", NULL), | 52 | "s3c2440-i2c.1", NULL), |
53 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2), | ||
54 | "s3c2440-i2c.2", NULL), | ||
55 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(3), | ||
56 | "s3c2440-i2c.3", NULL), | ||
57 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(4), | ||
58 | "s3c2440-i2c.4", NULL), | ||
59 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(5), | ||
60 | "s3c2440-i2c.5", NULL), | ||
61 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(6), | ||
62 | "s3c2440-i2c.6", NULL), | ||
63 | OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(7), | ||
64 | "s3c2440-i2c.7", NULL), | ||
65 | OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8), | ||
66 | "s3c2440-hdmiphy-i2c", NULL), | ||
50 | OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0, | 67 | OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0, |
51 | "dw_mmc.0", NULL), | 68 | "dw_mmc.0", NULL), |
52 | OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI1, | 69 | OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI1, |
@@ -61,6 +78,12 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = { | |||
61 | "exynos4210-spi.1", NULL), | 78 | "exynos4210-spi.1", NULL), |
62 | OF_DEV_AUXDATA("samsung,exynos4210-spi", EXYNOS5_PA_SPI2, | 79 | OF_DEV_AUXDATA("samsung,exynos4210-spi", EXYNOS5_PA_SPI2, |
63 | "exynos4210-spi.2", NULL), | 80 | "exynos4210-spi.2", NULL), |
81 | OF_DEV_AUXDATA("samsung,exynos5-sata-ahci", 0x122F0000, | ||
82 | "exynos5-sata", NULL), | ||
83 | OF_DEV_AUXDATA("samsung,exynos5-sata-phy", 0x12170000, | ||
84 | "exynos5-sata-phy", NULL), | ||
85 | OF_DEV_AUXDATA("samsung,exynos5-sata-phy-i2c", 0x121D0000, | ||
86 | "exynos5-sata-phy-i2c", NULL), | ||
64 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA0, "dma-pl330.0", NULL), | 87 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA0, "dma-pl330.0", NULL), |
65 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA1, "dma-pl330.1", NULL), | 88 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA1, "dma-pl330.1", NULL), |
66 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_MDMA1, "dma-pl330.2", NULL), | 89 | OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_MDMA1, "dma-pl330.2", NULL), |
@@ -72,6 +95,13 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = { | |||
72 | "exynos-gsc.2", NULL), | 95 | "exynos-gsc.2", NULL), |
73 | OF_DEV_AUXDATA("samsung,exynos5-gsc", EXYNOS5_PA_GSC3, | 96 | OF_DEV_AUXDATA("samsung,exynos5-gsc", EXYNOS5_PA_GSC3, |
74 | "exynos-gsc.3", NULL), | 97 | "exynos-gsc.3", NULL), |
98 | OF_DEV_AUXDATA("samsung,exynos5-hdmi", 0x14530000, | ||
99 | "exynos5-hdmi", NULL), | ||
100 | OF_DEV_AUXDATA("samsung,exynos5-mixer", 0x14450000, | ||
101 | "exynos5-mixer", NULL), | ||
102 | OF_DEV_AUXDATA("samsung,mfc-v6", 0x11000000, "s5p-mfc-v6", NULL), | ||
103 | OF_DEV_AUXDATA("samsung,exynos5250-tmu", 0x10060000, | ||
104 | "exynos-tmu", NULL), | ||
75 | {}, | 105 | {}, |
76 | }; | 106 | }; |
77 | 107 | ||
@@ -92,6 +122,17 @@ static char const *exynos5250_dt_compat[] __initdata = { | |||
92 | NULL | 122 | NULL |
93 | }; | 123 | }; |
94 | 124 | ||
125 | static void __init exynos5_reserve(void) | ||
126 | { | ||
127 | struct s5p_mfc_dt_meminfo mfc_mem; | ||
128 | |||
129 | /* Reserve memory for MFC only if it's available */ | ||
130 | mfc_mem.compatible = "samsung,mfc-v6"; | ||
131 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) | ||
132 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, | ||
133 | mfc_mem.lsize); | ||
134 | } | ||
135 | |||
95 | DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | 136 | DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") |
96 | /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */ | 137 | /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */ |
97 | .init_irq = exynos5_init_irq, | 138 | .init_irq = exynos5_init_irq, |
@@ -103,4 +144,5 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | |||
103 | .timer = &exynos4_timer, | 144 | .timer = &exynos4_timer, |
104 | .dt_compat = exynos5250_dt_compat, | 145 | .dt_compat = exynos5250_dt_compat, |
105 | .restart = exynos5_restart, | 146 | .restart = exynos5_restart, |
147 | .reserve = exynos5_reserve, | ||
106 | MACHINE_END | 148 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index c05d7aa84031..27d4ed8b116e 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -25,7 +25,10 @@ | |||
25 | #include <linux/mmc/host.h> | 25 | #include <linux/mmc/host.h> |
26 | #include <linux/fb.h> | 26 | #include <linux/fb.h> |
27 | #include <linux/pwm_backlight.h> | 27 | #include <linux/pwm_backlight.h> |
28 | #include <linux/platform_data/i2c-s3c2410.h> | ||
29 | #include <linux/platform_data/mipi-csis.h> | ||
28 | #include <linux/platform_data/s3c-hsotg.h> | 30 | #include <linux/platform_data/s3c-hsotg.h> |
31 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
29 | #include <drm/exynos_drm.h> | 32 | #include <drm/exynos_drm.h> |
30 | 33 | ||
31 | #include <video/platform_lcd.h> | 34 | #include <video/platform_lcd.h> |
@@ -45,14 +48,11 @@ | |||
45 | #include <plat/devs.h> | 48 | #include <plat/devs.h> |
46 | #include <plat/fb.h> | 49 | #include <plat/fb.h> |
47 | #include <plat/sdhci.h> | 50 | #include <plat/sdhci.h> |
48 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
49 | #include <plat/clock.h> | 51 | #include <plat/clock.h> |
50 | #include <plat/gpio-cfg.h> | 52 | #include <plat/gpio-cfg.h> |
51 | #include <linux/platform_data/i2c-s3c2410.h> | ||
52 | #include <plat/mfc.h> | 53 | #include <plat/mfc.h> |
53 | #include <plat/fimc-core.h> | 54 | #include <plat/fimc-core.h> |
54 | #include <plat/camport.h> | 55 | #include <plat/camport.h> |
55 | #include <linux/platform_data/mipi-csis.h> | ||
56 | 56 | ||
57 | #include <mach/map.h> | 57 | #include <mach/map.h> |
58 | 58 | ||
@@ -113,7 +113,6 @@ static struct s3c_sdhci_platdata nuri_hsmmc0_data __initdata = { | |||
113 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | | 113 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | |
114 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 114 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | |
115 | MMC_CAP_ERASE), | 115 | MMC_CAP_ERASE), |
116 | .host_caps2 = MMC_CAP2_BROKEN_VOLTAGE, | ||
117 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 116 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
118 | }; | 117 | }; |
119 | 118 | ||
@@ -1327,9 +1326,6 @@ static struct platform_device *nuri_devices[] __initdata = { | |||
1327 | &cam_vdda_fixed_rdev, | 1326 | &cam_vdda_fixed_rdev, |
1328 | &cam_8m_12v_fixed_rdev, | 1327 | &cam_8m_12v_fixed_rdev, |
1329 | &exynos4_bus_devfreq, | 1328 | &exynos4_bus_devfreq, |
1330 | #ifdef CONFIG_DRM_EXYNOS | ||
1331 | &exynos_device_drm, | ||
1332 | #endif | ||
1333 | }; | 1329 | }; |
1334 | 1330 | ||
1335 | static void __init nuri_map_io(void) | 1331 | static void __init nuri_map_io(void) |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 9adf491674ea..c931ce15a966 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -23,7 +23,10 @@ | |||
23 | #include <linux/mfd/max8997.h> | 23 | #include <linux/mfd/max8997.h> |
24 | #include <linux/lcd.h> | 24 | #include <linux/lcd.h> |
25 | #include <linux/rfkill-gpio.h> | 25 | #include <linux/rfkill-gpio.h> |
26 | #include <linux/platform_data/i2c-s3c2410.h> | ||
26 | #include <linux/platform_data/s3c-hsotg.h> | 27 | #include <linux/platform_data/s3c-hsotg.h> |
28 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
29 | #include <linux/platform_data/usb-exynos.h> | ||
27 | 30 | ||
28 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
29 | #include <asm/hardware/gic.h> | 32 | #include <asm/hardware/gic.h> |
@@ -36,8 +39,6 @@ | |||
36 | #include <plat/cpu.h> | 39 | #include <plat/cpu.h> |
37 | #include <plat/devs.h> | 40 | #include <plat/devs.h> |
38 | #include <plat/sdhci.h> | 41 | #include <plat/sdhci.h> |
39 | #include <linux/platform_data/i2c-s3c2410.h> | ||
40 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
41 | #include <plat/clock.h> | 42 | #include <plat/clock.h> |
42 | #include <plat/gpio-cfg.h> | 43 | #include <plat/gpio-cfg.h> |
43 | #include <plat/backlight.h> | 44 | #include <plat/backlight.h> |
@@ -45,7 +46,6 @@ | |||
45 | #include <plat/mfc.h> | 46 | #include <plat/mfc.h> |
46 | #include <plat/hdmi.h> | 47 | #include <plat/hdmi.h> |
47 | 48 | ||
48 | #include <linux/platform_data/usb-exynos.h> | ||
49 | #include <mach/map.h> | 49 | #include <mach/map.h> |
50 | 50 | ||
51 | #include <drm/exynos_drm.h> | 51 | #include <drm/exynos_drm.h> |
@@ -709,9 +709,6 @@ static struct platform_device *origen_devices[] __initdata = { | |||
709 | &s5p_device_mfc_l, | 709 | &s5p_device_mfc_l, |
710 | &s5p_device_mfc_r, | 710 | &s5p_device_mfc_r, |
711 | &s5p_device_mixer, | 711 | &s5p_device_mixer, |
712 | #ifdef CONFIG_DRM_EXYNOS | ||
713 | &exynos_device_drm, | ||
714 | #endif | ||
715 | &exynos4_device_ohci, | 712 | &exynos4_device_ohci, |
716 | &origen_device_gpiokeys, | 713 | &origen_device_gpiokeys, |
717 | &origen_lcd_hv070wsa, | 714 | &origen_lcd_hv070wsa, |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index 730f1ac65928..a1555a73c7af 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/pwm_backlight.h> | 21 | #include <linux/pwm_backlight.h> |
22 | #include <linux/regulator/machine.h> | 22 | #include <linux/regulator/machine.h> |
23 | #include <linux/serial_core.h> | 23 | #include <linux/serial_core.h> |
24 | #include <linux/platform_data/i2c-s3c2410.h> | ||
24 | #include <linux/platform_data/s3c-hsotg.h> | 25 | #include <linux/platform_data/s3c-hsotg.h> |
25 | 26 | ||
26 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
@@ -34,7 +35,6 @@ | |||
34 | #include <plat/devs.h> | 35 | #include <plat/devs.h> |
35 | #include <plat/fb.h> | 36 | #include <plat/fb.h> |
36 | #include <plat/gpio-cfg.h> | 37 | #include <plat/gpio-cfg.h> |
37 | #include <linux/platform_data/i2c-s3c2410.h> | ||
38 | #include <plat/keypad.h> | 38 | #include <plat/keypad.h> |
39 | #include <plat/mfc.h> | 39 | #include <plat/mfc.h> |
40 | #include <plat/regs-serial.h> | 40 | #include <plat/regs-serial.h> |
@@ -317,9 +317,6 @@ static struct platform_device *smdk4x12_devices[] __initdata = { | |||
317 | &s5p_device_mfc, | 317 | &s5p_device_mfc, |
318 | &s5p_device_mfc_l, | 318 | &s5p_device_mfc_l, |
319 | &s5p_device_mfc_r, | 319 | &s5p_device_mfc_r, |
320 | #ifdef CONFIG_DRM_EXYNOS | ||
321 | &exynos_device_drm, | ||
322 | #endif | ||
323 | &samsung_device_keypad, | 320 | &samsung_device_keypad, |
324 | }; | 321 | }; |
325 | 322 | ||
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index ee4fb1a9cb72..063cb94b934d 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -20,7 +20,10 @@ | |||
20 | #include <linux/input.h> | 20 | #include <linux/input.h> |
21 | #include <linux/pwm.h> | 21 | #include <linux/pwm.h> |
22 | #include <linux/pwm_backlight.h> | 22 | #include <linux/pwm_backlight.h> |
23 | #include <linux/platform_data/i2c-s3c2410.h> | ||
23 | #include <linux/platform_data/s3c-hsotg.h> | 24 | #include <linux/platform_data/s3c-hsotg.h> |
25 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
26 | #include <linux/platform_data/usb-exynos.h> | ||
24 | 27 | ||
25 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
26 | #include <asm/hardware/gic.h> | 29 | #include <asm/hardware/gic.h> |
@@ -35,16 +38,13 @@ | |||
35 | #include <plat/fb.h> | 38 | #include <plat/fb.h> |
36 | #include <plat/keypad.h> | 39 | #include <plat/keypad.h> |
37 | #include <plat/sdhci.h> | 40 | #include <plat/sdhci.h> |
38 | #include <linux/platform_data/i2c-s3c2410.h> | ||
39 | #include <plat/gpio-cfg.h> | 41 | #include <plat/gpio-cfg.h> |
40 | #include <plat/backlight.h> | 42 | #include <plat/backlight.h> |
41 | #include <plat/mfc.h> | 43 | #include <plat/mfc.h> |
42 | #include <linux/platform_data/usb-ehci-s5p.h> | ||
43 | #include <plat/clock.h> | 44 | #include <plat/clock.h> |
44 | #include <plat/hdmi.h> | 45 | #include <plat/hdmi.h> |
45 | 46 | ||
46 | #include <mach/map.h> | 47 | #include <mach/map.h> |
47 | #include <linux/platform_data/usb-exynos.h> | ||
48 | 48 | ||
49 | #include <drm/exynos_drm.h> | 49 | #include <drm/exynos_drm.h> |
50 | #include "common.h" | 50 | #include "common.h" |
@@ -300,9 +300,6 @@ static struct platform_device *smdkv310_devices[] __initdata = { | |||
300 | &s5p_device_fimc_md, | 300 | &s5p_device_fimc_md, |
301 | &s5p_device_g2d, | 301 | &s5p_device_g2d, |
302 | &s5p_device_jpeg, | 302 | &s5p_device_jpeg, |
303 | #ifdef CONFIG_DRM_EXYNOS | ||
304 | &exynos_device_drm, | ||
305 | #endif | ||
306 | &exynos4_device_ac97, | 303 | &exynos4_device_ac97, |
307 | &exynos4_device_i2s0, | 304 | &exynos4_device_i2s0, |
308 | &exynos4_device_ohci, | 305 | &exynos4_device_ohci, |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index ebc9dd339a38..9e3340f18950 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -23,6 +23,8 @@ | |||
23 | #include <linux/i2c-gpio.h> | 23 | #include <linux/i2c-gpio.h> |
24 | #include <linux/i2c/mcs.h> | 24 | #include <linux/i2c/mcs.h> |
25 | #include <linux/i2c/atmel_mxt_ts.h> | 25 | #include <linux/i2c/atmel_mxt_ts.h> |
26 | #include <linux/platform_data/i2c-s3c2410.h> | ||
27 | #include <linux/platform_data/mipi-csis.h> | ||
26 | #include <linux/platform_data/s3c-hsotg.h> | 28 | #include <linux/platform_data/s3c-hsotg.h> |
27 | #include <drm/exynos_drm.h> | 29 | #include <drm/exynos_drm.h> |
28 | 30 | ||
@@ -35,7 +37,6 @@ | |||
35 | #include <plat/clock.h> | 37 | #include <plat/clock.h> |
36 | #include <plat/cpu.h> | 38 | #include <plat/cpu.h> |
37 | #include <plat/devs.h> | 39 | #include <plat/devs.h> |
38 | #include <linux/platform_data/i2c-s3c2410.h> | ||
39 | #include <plat/gpio-cfg.h> | 40 | #include <plat/gpio-cfg.h> |
40 | #include <plat/fb.h> | 41 | #include <plat/fb.h> |
41 | #include <plat/mfc.h> | 42 | #include <plat/mfc.h> |
@@ -43,7 +44,6 @@ | |||
43 | #include <plat/fimc-core.h> | 44 | #include <plat/fimc-core.h> |
44 | #include <plat/s5p-time.h> | 45 | #include <plat/s5p-time.h> |
45 | #include <plat/camport.h> | 46 | #include <plat/camport.h> |
46 | #include <linux/platform_data/mipi-csis.h> | ||
47 | 47 | ||
48 | #include <mach/map.h> | 48 | #include <mach/map.h> |
49 | 49 | ||
@@ -754,7 +754,6 @@ static struct s3c_sdhci_platdata universal_hsmmc0_data __initdata = { | |||
754 | .max_width = 8, | 754 | .max_width = 8, |
755 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | | 755 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | |
756 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED), | 756 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED), |
757 | .host_caps2 = MMC_CAP2_BROKEN_VOLTAGE, | ||
758 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 757 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
759 | }; | 758 | }; |
760 | 759 | ||
@@ -1081,9 +1080,6 @@ static struct platform_device *universal_devices[] __initdata = { | |||
1081 | &s5p_device_onenand, | 1080 | &s5p_device_onenand, |
1082 | &s5p_device_fimd0, | 1081 | &s5p_device_fimd0, |
1083 | &s5p_device_jpeg, | 1082 | &s5p_device_jpeg, |
1084 | #ifdef CONFIG_DRM_EXYNOS | ||
1085 | &exynos_device_drm, | ||
1086 | #endif | ||
1087 | &s3c_device_usb_hsotg, | 1083 | &s3c_device_usb_hsotg, |
1088 | &s5p_device_mfc, | 1084 | &s5p_device_mfc, |
1089 | &s5p_device_mfc_l, | 1085 | &s5p_device_mfc_l, |
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c index c0bc83a7663e..9f1351de52f7 100644 --- a/arch/arm/mach-exynos/pm_domains.c +++ b/arch/arm/mach-exynos/pm_domains.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <linux/pm_domain.h> | 19 | #include <linux/pm_domain.h> |
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/of_address.h> | 21 | #include <linux/of_address.h> |
22 | #include <linux/of_platform.h> | ||
23 | #include <linux/sched.h> | ||
22 | 24 | ||
23 | #include <mach/regs-pmu.h> | 25 | #include <mach/regs-pmu.h> |
24 | #include <plat/devs.h> | 26 | #include <plat/devs.h> |
@@ -83,12 +85,88 @@ static struct exynos_pm_domain PD = { \ | |||
83 | } | 85 | } |
84 | 86 | ||
85 | #ifdef CONFIG_OF | 87 | #ifdef CONFIG_OF |
88 | static void exynos_add_device_to_domain(struct exynos_pm_domain *pd, | ||
89 | struct device *dev) | ||
90 | { | ||
91 | int ret; | ||
92 | |||
93 | dev_dbg(dev, "adding to power domain %s\n", pd->pd.name); | ||
94 | |||
95 | while (1) { | ||
96 | ret = pm_genpd_add_device(&pd->pd, dev); | ||
97 | if (ret != -EAGAIN) | ||
98 | break; | ||
99 | cond_resched(); | ||
100 | } | ||
101 | |||
102 | pm_genpd_dev_need_restore(dev, true); | ||
103 | } | ||
104 | |||
105 | static void exynos_remove_device_from_domain(struct device *dev) | ||
106 | { | ||
107 | struct generic_pm_domain *genpd = dev_to_genpd(dev); | ||
108 | int ret; | ||
109 | |||
110 | dev_dbg(dev, "removing from power domain %s\n", genpd->name); | ||
111 | |||
112 | while (1) { | ||
113 | ret = pm_genpd_remove_device(genpd, dev); | ||
114 | if (ret != -EAGAIN) | ||
115 | break; | ||
116 | cond_resched(); | ||
117 | } | ||
118 | } | ||
119 | |||
120 | static void exynos_read_domain_from_dt(struct device *dev) | ||
121 | { | ||
122 | struct platform_device *pd_pdev; | ||
123 | struct exynos_pm_domain *pd; | ||
124 | struct device_node *node; | ||
125 | |||
126 | node = of_parse_phandle(dev->of_node, "samsung,power-domain", 0); | ||
127 | if (!node) | ||
128 | return; | ||
129 | pd_pdev = of_find_device_by_node(node); | ||
130 | if (!pd_pdev) | ||
131 | return; | ||
132 | pd = platform_get_drvdata(pd_pdev); | ||
133 | exynos_add_device_to_domain(pd, dev); | ||
134 | } | ||
135 | |||
136 | static int exynos_pm_notifier_call(struct notifier_block *nb, | ||
137 | unsigned long event, void *data) | ||
138 | { | ||
139 | struct device *dev = data; | ||
140 | |||
141 | switch (event) { | ||
142 | case BUS_NOTIFY_BIND_DRIVER: | ||
143 | if (dev->of_node) | ||
144 | exynos_read_domain_from_dt(dev); | ||
145 | |||
146 | break; | ||
147 | |||
148 | case BUS_NOTIFY_UNBOUND_DRIVER: | ||
149 | exynos_remove_device_from_domain(dev); | ||
150 | |||
151 | break; | ||
152 | } | ||
153 | return NOTIFY_DONE; | ||
154 | } | ||
155 | |||
156 | static struct notifier_block platform_nb = { | ||
157 | .notifier_call = exynos_pm_notifier_call, | ||
158 | }; | ||
159 | |||
86 | static __init int exynos_pm_dt_parse_domains(void) | 160 | static __init int exynos_pm_dt_parse_domains(void) |
87 | { | 161 | { |
162 | struct platform_device *pdev; | ||
88 | struct device_node *np; | 163 | struct device_node *np; |
89 | 164 | ||
90 | for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { | 165 | for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { |
91 | struct exynos_pm_domain *pd; | 166 | struct exynos_pm_domain *pd; |
167 | int on; | ||
168 | |||
169 | pdev = of_find_device_by_node(np); | ||
92 | 170 | ||
93 | pd = kzalloc(sizeof(*pd), GFP_KERNEL); | 171 | pd = kzalloc(sizeof(*pd), GFP_KERNEL); |
94 | if (!pd) { | 172 | if (!pd) { |
@@ -97,15 +175,22 @@ static __init int exynos_pm_dt_parse_domains(void) | |||
97 | return -ENOMEM; | 175 | return -ENOMEM; |
98 | } | 176 | } |
99 | 177 | ||
100 | if (of_get_property(np, "samsung,exynos4210-pd-off", NULL)) | 178 | pd->pd.name = kstrdup(np->name, GFP_KERNEL); |
101 | pd->is_off = true; | 179 | pd->name = pd->pd.name; |
102 | pd->name = np->name; | ||
103 | pd->base = of_iomap(np, 0); | 180 | pd->base = of_iomap(np, 0); |
104 | pd->pd.power_off = exynos_pd_power_off; | 181 | pd->pd.power_off = exynos_pd_power_off; |
105 | pd->pd.power_on = exynos_pd_power_on; | 182 | pd->pd.power_on = exynos_pd_power_on; |
106 | pd->pd.of_node = np; | 183 | pd->pd.of_node = np; |
107 | pm_genpd_init(&pd->pd, NULL, false); | 184 | |
185 | platform_set_drvdata(pdev, pd); | ||
186 | |||
187 | on = __raw_readl(pd->base + 0x4) & S5P_INT_LOCAL_PWR_EN; | ||
188 | |||
189 | pm_genpd_init(&pd->pd, NULL, !on); | ||
108 | } | 190 | } |
191 | |||
192 | bus_register_notifier(&platform_bus_type, &platform_nb); | ||
193 | |||
109 | return 0; | 194 | return 0; |
110 | } | 195 | } |
111 | #else | 196 | #else |
diff --git a/arch/arm/plat-mxc/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c index 5c10ad05df74..134377352966 100644 --- a/arch/arm/plat-mxc/3ds_debugboard.c +++ b/arch/arm/mach-imx/3ds_debugboard.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
22 | #include <linux/regulator/fixed.h> | 22 | #include <linux/regulator/fixed.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | 24 | #include "hardware.h" |
25 | 25 | ||
26 | /* LAN9217 ethernet base address */ | 26 | /* LAN9217 ethernet base address */ |
27 | #define LAN9217_BASE_ADDR(n) (n + 0x0) | 27 | #define LAN9217_BASE_ADDR(n) (n + 0x0) |
diff --git a/arch/arm/plat-mxc/include/mach/3ds_debugboard.h b/arch/arm/mach-imx/3ds_debugboard.h index 9fd6cb3f8fad..9fd6cb3f8fad 100644 --- a/arch/arm/plat-mxc/include/mach/3ds_debugboard.h +++ b/arch/arm/mach-imx/3ds_debugboard.h | |||
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 8d276584650e..b09924112f99 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
@@ -1,3 +1,70 @@ | |||
1 | config ARCH_MXC | ||
2 | bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 | ||
3 | select ARCH_REQUIRE_GPIOLIB | ||
4 | select ARM_PATCH_PHYS_VIRT | ||
5 | select AUTO_ZRELADDR if !ZBOOT_ROM | ||
6 | select CLKDEV_LOOKUP | ||
7 | select CLKSRC_MMIO | ||
8 | select GENERIC_CLOCKEVENTS | ||
9 | select GENERIC_IRQ_CHIP | ||
10 | select MULTI_IRQ_HANDLER | ||
11 | select SPARSE_IRQ | ||
12 | select USE_OF | ||
13 | help | ||
14 | Support for Freescale MXC/iMX-based family of processors | ||
15 | |||
16 | menu "Freescale i.MX support" | ||
17 | depends on ARCH_MXC | ||
18 | |||
19 | config MXC_IRQ_PRIOR | ||
20 | bool "Use IRQ priority" | ||
21 | help | ||
22 | Select this if you want to use prioritized IRQ handling. | ||
23 | This feature prevents higher priority ISR to be interrupted | ||
24 | by lower priority IRQ even IRQF_DISABLED flag is not set. | ||
25 | This may be useful in embedded applications, where are strong | ||
26 | requirements for timing. | ||
27 | Say N here, unless you have a specialized requirement. | ||
28 | |||
29 | config MXC_TZIC | ||
30 | bool | ||
31 | |||
32 | config MXC_AVIC | ||
33 | bool | ||
34 | |||
35 | config MXC_DEBUG_BOARD | ||
36 | bool "Enable MXC debug board(for 3-stack)" | ||
37 | help | ||
38 | The debug board is an integral part of the MXC 3-stack(PDK) | ||
39 | platforms, it can be attached or removed from the peripheral | ||
40 | board. On debug board, several debug devices(ethernet, UART, | ||
41 | buttons, LEDs and JTAG) are implemented. Between the MCU and | ||
42 | these devices, a CPLD is added as a bridge which performs | ||
43 | data/address de-multiplexing and decode, signal level shift, | ||
44 | interrupt control and various board functions. | ||
45 | |||
46 | config HAVE_EPIT | ||
47 | bool | ||
48 | |||
49 | config MXC_USE_EPIT | ||
50 | bool "Use EPIT instead of GPT" | ||
51 | depends on HAVE_EPIT | ||
52 | help | ||
53 | Use EPIT as the system timer on systems that have it. Normally you | ||
54 | don't have a reason to do so as the EPIT has the same features and | ||
55 | uses the same clocks as the GPT. Anyway, on some systems the GPT | ||
56 | may be in use for other purposes. | ||
57 | |||
58 | config MXC_ULPI | ||
59 | bool | ||
60 | |||
61 | config ARCH_HAS_RNGA | ||
62 | bool | ||
63 | |||
64 | config IRAM_ALLOC | ||
65 | bool | ||
66 | select GENERIC_ALLOCATOR | ||
67 | |||
1 | config HAVE_IMX_GPC | 68 | config HAVE_IMX_GPC |
2 | bool | 69 | bool |
3 | 70 | ||
@@ -5,6 +72,12 @@ config HAVE_IMX_MMDC | |||
5 | bool | 72 | bool |
6 | 73 | ||
7 | config HAVE_IMX_SRC | 74 | config HAVE_IMX_SRC |
75 | def_bool y if SMP | ||
76 | |||
77 | config IMX_HAVE_IOMUX_V1 | ||
78 | bool | ||
79 | |||
80 | config ARCH_MXC_IOMUX_V3 | ||
8 | bool | 81 | bool |
9 | 82 | ||
10 | config ARCH_MX1 | 83 | config ARCH_MX1 |
@@ -104,7 +177,7 @@ config SOC_IMX51 | |||
104 | select PINCTRL_IMX51 | 177 | select PINCTRL_IMX51 |
105 | select SOC_IMX5 | 178 | select SOC_IMX5 |
106 | 179 | ||
107 | if ARCH_IMX_V4_V5 | 180 | if ARCH_MULTI_V4T |
108 | 181 | ||
109 | comment "MX1 platforms:" | 182 | comment "MX1 platforms:" |
110 | config MACH_MXLADS | 183 | config MACH_MXLADS |
@@ -133,6 +206,10 @@ config MACH_APF9328 | |||
133 | help | 206 | help |
134 | Say Yes here if you are using the Armadeus APF9328 development board | 207 | Say Yes here if you are using the Armadeus APF9328 development board |
135 | 208 | ||
209 | endif | ||
210 | |||
211 | if ARCH_MULTI_V5 | ||
212 | |||
136 | comment "MX21 platforms:" | 213 | comment "MX21 platforms:" |
137 | 214 | ||
138 | config MACH_MX21ADS | 215 | config MACH_MX21ADS |
@@ -195,6 +272,13 @@ config MACH_EUKREA_MBIMXSD25_BASEBOARD | |||
195 | 272 | ||
196 | endchoice | 273 | endchoice |
197 | 274 | ||
275 | config MACH_IMX25_DT | ||
276 | bool "Support i.MX25 platforms from device tree" | ||
277 | select SOC_IMX25 | ||
278 | help | ||
279 | Include support for Freescale i.MX25 based platforms | ||
280 | using the device tree for discovery | ||
281 | |||
198 | comment "MX27 platforms:" | 282 | comment "MX27 platforms:" |
199 | 283 | ||
200 | config MACH_MX27ADS | 284 | config MACH_MX27ADS |
@@ -384,7 +468,7 @@ config MACH_IMX27_DT | |||
384 | 468 | ||
385 | endif | 469 | endif |
386 | 470 | ||
387 | if ARCH_IMX_V6_V7 | 471 | if ARCH_MULTI_V6 |
388 | 472 | ||
389 | comment "MX31 platforms:" | 473 | comment "MX31 platforms:" |
390 | 474 | ||
@@ -649,6 +733,10 @@ config MACH_VPR200 | |||
649 | Include support for VPR200 platform. This includes specific | 733 | Include support for VPR200 platform. This includes specific |
650 | configurations for the board and its peripherals. | 734 | configurations for the board and its peripherals. |
651 | 735 | ||
736 | endif | ||
737 | |||
738 | if ARCH_MULTI_V7 | ||
739 | |||
652 | comment "i.MX5 platforms:" | 740 | comment "i.MX5 platforms:" |
653 | 741 | ||
654 | config MACH_MX50_RDP | 742 | config MACH_MX50_RDP |
@@ -748,7 +836,14 @@ config SOC_IMX53 | |||
748 | 836 | ||
749 | config SOC_IMX6Q | 837 | config SOC_IMX6Q |
750 | bool "i.MX6 Quad support" | 838 | bool "i.MX6 Quad support" |
839 | select ARCH_HAS_CPUFREQ | ||
840 | select ARCH_HAS_OPP | ||
751 | select ARM_CPU_SUSPEND if PM | 841 | select ARM_CPU_SUSPEND if PM |
842 | select ARM_ERRATA_743622 | ||
843 | select ARM_ERRATA_751472 | ||
844 | select ARM_ERRATA_754322 | ||
845 | select ARM_ERRATA_764369 if SMP | ||
846 | select ARM_ERRATA_775420 | ||
752 | select ARM_GIC | 847 | select ARM_GIC |
753 | select COMMON_CLK | 848 | select COMMON_CLK |
754 | select CPU_V7 | 849 | select CPU_V7 |
@@ -756,13 +851,20 @@ config SOC_IMX6Q | |||
756 | select HAVE_CAN_FLEXCAN if CAN | 851 | select HAVE_CAN_FLEXCAN if CAN |
757 | select HAVE_IMX_GPC | 852 | select HAVE_IMX_GPC |
758 | select HAVE_IMX_MMDC | 853 | select HAVE_IMX_MMDC |
759 | select HAVE_IMX_SRC | ||
760 | select HAVE_SMP | 854 | select HAVE_SMP |
761 | select MFD_SYSCON | 855 | select MFD_SYSCON |
762 | select PINCTRL | 856 | select PINCTRL |
763 | select PINCTRL_IMX6Q | 857 | select PINCTRL_IMX6Q |
858 | select PL310_ERRATA_588369 if CACHE_PL310 | ||
859 | select PL310_ERRATA_727915 if CACHE_PL310 | ||
860 | select PL310_ERRATA_769419 if CACHE_PL310 | ||
861 | select PM_OPP if PM | ||
764 | 862 | ||
765 | help | 863 | help |
766 | This enables support for Freescale i.MX6 Quad processor. | 864 | This enables support for Freescale i.MX6 Quad processor. |
767 | 865 | ||
768 | endif | 866 | endif |
867 | |||
868 | source "arch/arm/mach-imx/devices/Kconfig" | ||
869 | |||
870 | endmenu | ||
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 895754aeb4f3..0634b3152c24 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | obj-y := time.o cpu.o system.o irq-common.o | ||
2 | |||
1 | obj-$(CONFIG_SOC_IMX1) += clk-imx1.o mm-imx1.o | 3 | obj-$(CONFIG_SOC_IMX1) += clk-imx1.o mm-imx1.o |
2 | obj-$(CONFIG_SOC_IMX21) += clk-imx21.o mm-imx21.o | 4 | obj-$(CONFIG_SOC_IMX21) += clk-imx21.o mm-imx21.o |
3 | 5 | ||
@@ -15,6 +17,24 @@ obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o $(i | |||
15 | obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \ | 17 | obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \ |
16 | clk-pfd.o clk-busy.o clk.o | 18 | clk-pfd.o clk-busy.o clk.o |
17 | 19 | ||
20 | obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o | ||
21 | obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o | ||
22 | |||
23 | obj-$(CONFIG_MXC_TZIC) += tzic.o | ||
24 | obj-$(CONFIG_MXC_AVIC) += avic.o | ||
25 | |||
26 | obj-$(CONFIG_IRAM_ALLOC) += iram_alloc.o | ||
27 | obj-$(CONFIG_MXC_ULPI) += ulpi.o | ||
28 | obj-$(CONFIG_MXC_USE_EPIT) += epit.o | ||
29 | obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o | ||
30 | obj-$(CONFIG_CPU_FREQ_IMX) += cpufreq.o | ||
31 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | ||
32 | |||
33 | ifdef CONFIG_SND_IMX_SOC | ||
34 | obj-y += ssi-fiq.o | ||
35 | obj-y += ssi-fiq-ksym.o | ||
36 | endif | ||
37 | |||
18 | # Support for CMOS sensor interface | 38 | # Support for CMOS sensor interface |
19 | obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o | 39 | obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o |
20 | 40 | ||
@@ -30,6 +50,7 @@ obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o | |||
30 | obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o | 50 | obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o |
31 | obj-$(CONFIG_MACH_EUKREA_CPUIMX25SD) += mach-eukrea_cpuimx25.o | 51 | obj-$(CONFIG_MACH_EUKREA_CPUIMX25SD) += mach-eukrea_cpuimx25.o |
32 | obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD) += eukrea_mbimxsd25-baseboard.o | 52 | obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD) += eukrea_mbimxsd25-baseboard.o |
53 | obj-$(CONFIG_MACH_IMX25_DT) += imx25-dt.o | ||
33 | 54 | ||
34 | # i.MX27 based machines | 55 | # i.MX27 based machines |
35 | obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o | 56 | obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o |
@@ -89,3 +110,5 @@ obj-$(CONFIG_MACH_MX50_RDP) += mach-mx50_rdp.o | |||
89 | 110 | ||
90 | obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o | 111 | obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o |
91 | obj-$(CONFIG_SOC_IMX53) += mach-imx53.o | 112 | obj-$(CONFIG_SOC_IMX53) += mach-imx53.o |
113 | |||
114 | obj-y += devices/ | ||
diff --git a/arch/arm/plat-mxc/avic.c b/arch/arm/mach-imx/avic.c index cbd55c36def3..0eff23ed92b9 100644 --- a/arch/arm/plat-mxc/avic.c +++ b/arch/arm/mach-imx/avic.c | |||
@@ -22,12 +22,11 @@ | |||
22 | #include <linux/irqdomain.h> | 22 | #include <linux/irqdomain.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/of.h> | 24 | #include <linux/of.h> |
25 | #include <mach/common.h> | ||
26 | #include <asm/mach/irq.h> | 25 | #include <asm/mach/irq.h> |
27 | #include <asm/exception.h> | 26 | #include <asm/exception.h> |
28 | #include <mach/hardware.h> | ||
29 | #include <mach/irqs.h> | ||
30 | 27 | ||
28 | #include "common.h" | ||
29 | #include "hardware.h" | ||
31 | #include "irq-common.h" | 30 | #include "irq-common.h" |
32 | 31 | ||
33 | #define AVIC_INTCNTL 0x00 /* int control reg */ | 32 | #define AVIC_INTCNTL 0x00 /* int control reg */ |
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31lilly.h b/arch/arm/mach-imx/board-mx31lilly.h index 0df71bfefbb1..0df71bfefbb1 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31lilly.h +++ b/arch/arm/mach-imx/board-mx31lilly.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31lite.h b/arch/arm/mach-imx/board-mx31lite.h index c1ad0ae807cc..c1ad0ae807cc 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31lite.h +++ b/arch/arm/mach-imx/board-mx31lite.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31moboard.h b/arch/arm/mach-imx/board-mx31moboard.h index de14543891cf..de14543891cf 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31moboard.h +++ b/arch/arm/mach-imx/board-mx31moboard.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/board-pcm038.h b/arch/arm/mach-imx/board-pcm038.h index 6f371e35753d..6f371e35753d 100644 --- a/arch/arm/plat-mxc/include/mach/board-pcm038.h +++ b/arch/arm/mach-imx/board-pcm038.h | |||
diff --git a/arch/arm/mach-imx/clk-imx1.c b/arch/arm/mach-imx/clk-imx1.c index 516ddee1948e..15f9d223cf0b 100644 --- a/arch/arm/mach-imx/clk-imx1.c +++ b/arch/arm/mach-imx/clk-imx1.c | |||
@@ -22,9 +22,9 @@ | |||
22 | #include <linux/clkdev.h> | 22 | #include <linux/clkdev.h> |
23 | #include <linux/err.h> | 23 | #include <linux/err.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <mach/common.h> | ||
27 | #include "clk.h" | 25 | #include "clk.h" |
26 | #include "common.h" | ||
27 | #include "hardware.h" | ||
28 | 28 | ||
29 | /* CCM register addresses */ | 29 | /* CCM register addresses */ |
30 | #define IO_ADDR_CCM(off) (MX1_IO_ADDRESS(MX1_CCM_BASE_ADDR + (off))) | 30 | #define IO_ADDR_CCM(off) (MX1_IO_ADDRESS(MX1_CCM_BASE_ADDR + (off))) |
@@ -82,7 +82,8 @@ int __init mx1_clocks_init(unsigned long fref) | |||
82 | pr_err("imx1 clk %d: register failed with %ld\n", | 82 | pr_err("imx1 clk %d: register failed with %ld\n", |
83 | i, PTR_ERR(clk[i])); | 83 | i, PTR_ERR(clk[i])); |
84 | 84 | ||
85 | clk_register_clkdev(clk[dma_gate], "ahb", "imx-dma"); | 85 | clk_register_clkdev(clk[dma_gate], "ahb", "imx1-dma"); |
86 | clk_register_clkdev(clk[hclk], "ipg", "imx1-dma"); | ||
86 | clk_register_clkdev(clk[csi_gate], NULL, "mx1-camera.0"); | 87 | clk_register_clkdev(clk[csi_gate], NULL, "mx1-camera.0"); |
87 | clk_register_clkdev(clk[mma_gate], "mma", NULL); | 88 | clk_register_clkdev(clk[mma_gate], "mma", NULL); |
88 | clk_register_clkdev(clk[usbd_gate], NULL, "imx_udc.0"); | 89 | clk_register_clkdev(clk[usbd_gate], NULL, "imx_udc.0"); |
@@ -94,18 +95,18 @@ int __init mx1_clocks_init(unsigned long fref) | |||
94 | clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.1"); | 95 | clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.1"); |
95 | clk_register_clkdev(clk[per1], "per", "imx1-uart.2"); | 96 | clk_register_clkdev(clk[per1], "per", "imx1-uart.2"); |
96 | clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.2"); | 97 | clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.2"); |
97 | clk_register_clkdev(clk[hclk], NULL, "imx-i2c.0"); | 98 | clk_register_clkdev(clk[hclk], NULL, "imx1-i2c.0"); |
98 | clk_register_clkdev(clk[per2], "per", "imx1-cspi.0"); | 99 | clk_register_clkdev(clk[per2], "per", "imx1-cspi.0"); |
99 | clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.0"); | 100 | clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.0"); |
100 | clk_register_clkdev(clk[per2], "per", "imx1-cspi.1"); | 101 | clk_register_clkdev(clk[per2], "per", "imx1-cspi.1"); |
101 | clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.1"); | 102 | clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.1"); |
102 | clk_register_clkdev(clk[per2], NULL, "imx-mmc.0"); | 103 | clk_register_clkdev(clk[per2], NULL, "imx-mmc.0"); |
103 | clk_register_clkdev(clk[per2], "per", "imx-fb.0"); | 104 | clk_register_clkdev(clk[per2], "per", "imx1-fb.0"); |
104 | clk_register_clkdev(clk[dummy], "ipg", "imx-fb.0"); | 105 | clk_register_clkdev(clk[dummy], "ipg", "imx1-fb.0"); |
105 | clk_register_clkdev(clk[dummy], "ahb", "imx-fb.0"); | 106 | clk_register_clkdev(clk[dummy], "ahb", "imx1-fb.0"); |
106 | clk_register_clkdev(clk[hclk], "mshc", NULL); | 107 | clk_register_clkdev(clk[hclk], "mshc", NULL); |
107 | clk_register_clkdev(clk[per3], "ssi", NULL); | 108 | clk_register_clkdev(clk[per3], "ssi", NULL); |
108 | clk_register_clkdev(clk[clk32], NULL, "mxc_rtc.0"); | 109 | clk_register_clkdev(clk[clk32], NULL, "imx1-rtc.0"); |
109 | clk_register_clkdev(clk[clko], "clko", NULL); | 110 | clk_register_clkdev(clk[clko], "clko", NULL); |
110 | 111 | ||
111 | mxc_timer_init(MX1_IO_ADDRESS(MX1_TIM1_BASE_ADDR), MX1_TIM1_INT); | 112 | mxc_timer_init(MX1_IO_ADDRESS(MX1_TIM1_BASE_ADDR), MX1_TIM1_INT); |
diff --git a/arch/arm/mach-imx/clk-imx21.c b/arch/arm/mach-imx/clk-imx21.c index cf65148bc519..d7ed66091a2a 100644 --- a/arch/arm/mach-imx/clk-imx21.c +++ b/arch/arm/mach-imx/clk-imx21.c | |||
@@ -25,9 +25,9 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | 27 | ||
28 | #include <mach/hardware.h> | ||
29 | #include <mach/common.h> | ||
30 | #include "clk.h" | 28 | #include "clk.h" |
29 | #include "common.h" | ||
30 | #include "hardware.h" | ||
31 | 31 | ||
32 | #define IO_ADDR_CCM(off) (MX21_IO_ADDRESS(MX21_CCM_BASE_ADDR + (off))) | 32 | #define IO_ADDR_CCM(off) (MX21_IO_ADDRESS(MX21_CCM_BASE_ADDR + (off))) |
33 | 33 | ||
@@ -156,16 +156,16 @@ int __init mx21_clocks_init(unsigned long lref, unsigned long href) | |||
156 | clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx21-cspi.1"); | 156 | clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx21-cspi.1"); |
157 | clk_register_clkdev(clk[per2], "per", "imx21-cspi.2"); | 157 | clk_register_clkdev(clk[per2], "per", "imx21-cspi.2"); |
158 | clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx21-cspi.2"); | 158 | clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx21-cspi.2"); |
159 | clk_register_clkdev(clk[per3], "per", "imx-fb.0"); | 159 | clk_register_clkdev(clk[per3], "per", "imx21-fb.0"); |
160 | clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx-fb.0"); | 160 | clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx21-fb.0"); |
161 | clk_register_clkdev(clk[lcdc_hclk_gate], "ahb", "imx-fb.0"); | 161 | clk_register_clkdev(clk[lcdc_hclk_gate], "ahb", "imx21-fb.0"); |
162 | clk_register_clkdev(clk[usb_gate], "per", "imx21-hcd.0"); | 162 | clk_register_clkdev(clk[usb_gate], "per", "imx21-hcd.0"); |
163 | clk_register_clkdev(clk[usb_hclk_gate], "ahb", "imx21-hcd.0"); | 163 | clk_register_clkdev(clk[usb_hclk_gate], "ahb", "imx21-hcd.0"); |
164 | clk_register_clkdev(clk[nfc_gate], NULL, "mxc_nand.0"); | 164 | clk_register_clkdev(clk[nfc_gate], NULL, "imx21-nand.0"); |
165 | clk_register_clkdev(clk[dma_hclk_gate], "ahb", "imx-dma"); | 165 | clk_register_clkdev(clk[dma_hclk_gate], "ahb", "imx21-dma"); |
166 | clk_register_clkdev(clk[dma_gate], "ipg", "imx-dma"); | 166 | clk_register_clkdev(clk[dma_gate], "ipg", "imx21-dma"); |
167 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); | 167 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); |
168 | clk_register_clkdev(clk[i2c_gate], NULL, "imx-i2c.0"); | 168 | clk_register_clkdev(clk[i2c_gate], NULL, "imx21-i2c.0"); |
169 | clk_register_clkdev(clk[kpp_gate], NULL, "mxc-keypad"); | 169 | clk_register_clkdev(clk[kpp_gate], NULL, "mxc-keypad"); |
170 | clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1.0"); | 170 | clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1.0"); |
171 | clk_register_clkdev(clk[brom_gate], "brom", NULL); | 171 | clk_register_clkdev(clk[brom_gate], "brom", NULL); |
diff --git a/arch/arm/mach-imx/clk-imx25.c b/arch/arm/mach-imx/clk-imx25.c index 01e2f843bf2e..b197aa73dc4b 100644 --- a/arch/arm/mach-imx/clk-imx25.c +++ b/arch/arm/mach-imx/clk-imx25.c | |||
@@ -23,11 +23,14 @@ | |||
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/clkdev.h> | 24 | #include <linux/clkdev.h> |
25 | #include <linux/err.h> | 25 | #include <linux/err.h> |
26 | #include <linux/of.h> | ||
27 | #include <linux/of_address.h> | ||
28 | #include <linux/of_irq.h> | ||
26 | 29 | ||
27 | #include <mach/hardware.h> | ||
28 | #include <mach/common.h> | ||
29 | #include <mach/mx25.h> | ||
30 | #include "clk.h" | 30 | #include "clk.h" |
31 | #include "common.h" | ||
32 | #include "hardware.h" | ||
33 | #include "mx25.h" | ||
31 | 34 | ||
32 | #define CRM_BASE MX25_IO_ADDRESS(MX25_CRM_BASE_ADDR) | 35 | #define CRM_BASE MX25_IO_ADDRESS(MX25_CRM_BASE_ADDR) |
33 | 36 | ||
@@ -55,6 +58,8 @@ | |||
55 | 58 | ||
56 | #define ccm(x) (CRM_BASE + (x)) | 59 | #define ccm(x) (CRM_BASE + (x)) |
57 | 60 | ||
61 | static struct clk_onecell_data clk_data; | ||
62 | |||
58 | static const char *cpu_sel_clks[] = { "mpll", "mpll_cpu_3_4", }; | 63 | static const char *cpu_sel_clks[] = { "mpll", "mpll_cpu_3_4", }; |
59 | static const char *per_sel_clks[] = { "ahb", "upll", }; | 64 | static const char *per_sel_clks[] = { "ahb", "upll", }; |
60 | 65 | ||
@@ -64,24 +69,30 @@ enum mx25_clks { | |||
64 | per7_sel, per8_sel, per9_sel, per10_sel, per11_sel, per12_sel, | 69 | per7_sel, per8_sel, per9_sel, per10_sel, per11_sel, per12_sel, |
65 | per13_sel, per14_sel, per15_sel, per0, per1, per2, per3, per4, per5, | 70 | per13_sel, per14_sel, per15_sel, per0, per1, per2, per3, per4, per5, |
66 | per6, per7, per8, per9, per10, per11, per12, per13, per14, per15, | 71 | per6, per7, per8, per9, per10, per11, per12, per13, per14, per15, |
67 | csi_ipg_per, esdhc1_ipg_per, esdhc2_ipg_per, gpt_ipg_per, i2c_ipg_per, | 72 | csi_ipg_per, epit_ipg_per, esai_ipg_per, esdhc1_ipg_per, esdhc2_ipg_per, |
68 | lcdc_ipg_per, nfc_ipg_per, ssi1_ipg_per, ssi2_ipg_per, uart_ipg_per, | 73 | gpt_ipg_per, i2c_ipg_per, lcdc_ipg_per, nfc_ipg_per, owire_ipg_per, |
69 | csi_ahb, esdhc1_ahb, esdhc2_ahb, fec_ahb, lcdc_ahb, sdma_ahb, | 74 | pwm_ipg_per, sim1_ipg_per, sim2_ipg_per, ssi1_ipg_per, ssi2_ipg_per, |
70 | usbotg_ahb, can1_ipg, can2_ipg, csi_ipg, cspi1_ipg, cspi2_ipg, | 75 | uart_ipg_per, ata_ahb, reserved1, csi_ahb, emi_ahb, esai_ahb, esdhc1_ahb, |
71 | cspi3_ipg, dryice_ipg, esdhc1_ipg, esdhc2_ipg, fec_ipg, iim_ipg, | 76 | esdhc2_ahb, fec_ahb, lcdc_ahb, rtic_ahb, sdma_ahb, slcdc_ahb, usbotg_ahb, |
72 | kpp_ipg, lcdc_ipg, pwm1_ipg, pwm2_ipg, pwm3_ipg, pwm4_ipg, sdma_ipg, | 77 | reserved2, reserved3, reserved4, reserved5, can1_ipg, can2_ipg, csi_ipg, |
73 | ssi1_ipg, ssi2_ipg, tsc_ipg, uart1_ipg, uart2_ipg, uart3_ipg, | 78 | cspi1_ipg, cspi2_ipg, cspi3_ipg, dryice_ipg, ect_ipg, epit1_ipg, epit2_ipg, |
74 | uart4_ipg, uart5_ipg, wdt_ipg, clk_max | 79 | reserved6, esdhc1_ipg, esdhc2_ipg, fec_ipg, reserved7, reserved8, reserved9, |
80 | gpt1_ipg, gpt2_ipg, gpt3_ipg, gpt4_ipg, reserved10, reserved11, reserved12, | ||
81 | iim_ipg, reserved13, reserved14, kpp_ipg, lcdc_ipg, reserved15, pwm1_ipg, | ||
82 | pwm2_ipg, pwm3_ipg, pwm4_ipg, rngb_ipg, reserved16, scc_ipg, sdma_ipg, | ||
83 | sim1_ipg, sim2_ipg, slcdc_ipg, spba_ipg, ssi1_ipg, ssi2_ipg, tsc_ipg, | ||
84 | uart1_ipg, uart2_ipg, uart3_ipg, uart4_ipg, uart5_ipg, reserved17, | ||
85 | wdt_ipg, clk_max | ||
75 | }; | 86 | }; |
76 | 87 | ||
77 | static struct clk *clk[clk_max]; | 88 | static struct clk *clk[clk_max]; |
78 | 89 | ||
79 | int __init mx25_clocks_init(void) | 90 | static int __init __mx25_clocks_init(unsigned long osc_rate) |
80 | { | 91 | { |
81 | int i; | 92 | int i; |
82 | 93 | ||
83 | clk[dummy] = imx_clk_fixed("dummy", 0); | 94 | clk[dummy] = imx_clk_fixed("dummy", 0); |
84 | clk[osc] = imx_clk_fixed("osc", 24000000); | 95 | clk[osc] = imx_clk_fixed("osc", osc_rate); |
85 | clk[mpll] = imx_clk_pllv1("mpll", "osc", ccm(CCM_MPCTL)); | 96 | clk[mpll] = imx_clk_pllv1("mpll", "osc", ccm(CCM_MPCTL)); |
86 | clk[upll] = imx_clk_pllv1("upll", "osc", ccm(CCM_UPCTL)); | 97 | clk[upll] = imx_clk_pllv1("upll", "osc", ccm(CCM_UPCTL)); |
87 | clk[mpll_cpu_3_4] = imx_clk_fixed_factor("mpll_cpu_3_4", "mpll", 3, 4); | 98 | clk[mpll_cpu_3_4] = imx_clk_fixed_factor("mpll_cpu_3_4", "mpll", 3, 4); |
@@ -123,22 +134,36 @@ int __init mx25_clocks_init(void) | |||
123 | clk[per14] = imx_clk_divider("per14", "per14_sel", ccm(CCM_PCDR3), 16, 6); | 134 | clk[per14] = imx_clk_divider("per14", "per14_sel", ccm(CCM_PCDR3), 16, 6); |
124 | clk[per15] = imx_clk_divider("per15", "per15_sel", ccm(CCM_PCDR3), 24, 6); | 135 | clk[per15] = imx_clk_divider("per15", "per15_sel", ccm(CCM_PCDR3), 24, 6); |
125 | clk[csi_ipg_per] = imx_clk_gate("csi_ipg_per", "per0", ccm(CCM_CGCR0), 0); | 136 | clk[csi_ipg_per] = imx_clk_gate("csi_ipg_per", "per0", ccm(CCM_CGCR0), 0); |
137 | clk[epit_ipg_per] = imx_clk_gate("epit_ipg_per", "per1", ccm(CCM_CGCR0), 1); | ||
138 | clk[esai_ipg_per] = imx_clk_gate("esai_ipg_per", "per2", ccm(CCM_CGCR0), 2); | ||
126 | clk[esdhc1_ipg_per] = imx_clk_gate("esdhc1_ipg_per", "per3", ccm(CCM_CGCR0), 3); | 139 | clk[esdhc1_ipg_per] = imx_clk_gate("esdhc1_ipg_per", "per3", ccm(CCM_CGCR0), 3); |
127 | clk[esdhc2_ipg_per] = imx_clk_gate("esdhc2_ipg_per", "per4", ccm(CCM_CGCR0), 4); | 140 | clk[esdhc2_ipg_per] = imx_clk_gate("esdhc2_ipg_per", "per4", ccm(CCM_CGCR0), 4); |
128 | clk[gpt_ipg_per] = imx_clk_gate("gpt_ipg_per", "per5", ccm(CCM_CGCR0), 5); | 141 | clk[gpt_ipg_per] = imx_clk_gate("gpt_ipg_per", "per5", ccm(CCM_CGCR0), 5); |
129 | clk[i2c_ipg_per] = imx_clk_gate("i2c_ipg_per", "per6", ccm(CCM_CGCR0), 6); | 142 | clk[i2c_ipg_per] = imx_clk_gate("i2c_ipg_per", "per6", ccm(CCM_CGCR0), 6); |
130 | clk[lcdc_ipg_per] = imx_clk_gate("lcdc_ipg_per", "per7", ccm(CCM_CGCR0), 7); | 143 | clk[lcdc_ipg_per] = imx_clk_gate("lcdc_ipg_per", "per7", ccm(CCM_CGCR0), 7); |
131 | clk[nfc_ipg_per] = imx_clk_gate("nfc_ipg_per", "per8", ccm(CCM_CGCR0), 8); | 144 | clk[nfc_ipg_per] = imx_clk_gate("nfc_ipg_per", "per8", ccm(CCM_CGCR0), 8); |
145 | clk[owire_ipg_per] = imx_clk_gate("owire_ipg_per", "per9", ccm(CCM_CGCR0), 9); | ||
146 | clk[pwm_ipg_per] = imx_clk_gate("pwm_ipg_per", "per10", ccm(CCM_CGCR0), 10); | ||
147 | clk[sim1_ipg_per] = imx_clk_gate("sim1_ipg_per", "per11", ccm(CCM_CGCR0), 11); | ||
148 | clk[sim2_ipg_per] = imx_clk_gate("sim2_ipg_per", "per12", ccm(CCM_CGCR0), 12); | ||
132 | clk[ssi1_ipg_per] = imx_clk_gate("ssi1_ipg_per", "per13", ccm(CCM_CGCR0), 13); | 149 | clk[ssi1_ipg_per] = imx_clk_gate("ssi1_ipg_per", "per13", ccm(CCM_CGCR0), 13); |
133 | clk[ssi2_ipg_per] = imx_clk_gate("ssi2_ipg_per", "per14", ccm(CCM_CGCR0), 14); | 150 | clk[ssi2_ipg_per] = imx_clk_gate("ssi2_ipg_per", "per14", ccm(CCM_CGCR0), 14); |
134 | clk[uart_ipg_per] = imx_clk_gate("uart_ipg_per", "per15", ccm(CCM_CGCR0), 15); | 151 | clk[uart_ipg_per] = imx_clk_gate("uart_ipg_per", "per15", ccm(CCM_CGCR0), 15); |
152 | clk[ata_ahb] = imx_clk_gate("ata_ahb", "ahb", ccm(CCM_CGCR0), 16); | ||
153 | /* CCM_CGCR0(17): reserved */ | ||
135 | clk[csi_ahb] = imx_clk_gate("csi_ahb", "ahb", ccm(CCM_CGCR0), 18); | 154 | clk[csi_ahb] = imx_clk_gate("csi_ahb", "ahb", ccm(CCM_CGCR0), 18); |
155 | clk[emi_ahb] = imx_clk_gate("emi_ahb", "ahb", ccm(CCM_CGCR0), 19); | ||
156 | clk[esai_ahb] = imx_clk_gate("esai_ahb", "ahb", ccm(CCM_CGCR0), 20); | ||
136 | clk[esdhc1_ahb] = imx_clk_gate("esdhc1_ahb", "ahb", ccm(CCM_CGCR0), 21); | 157 | clk[esdhc1_ahb] = imx_clk_gate("esdhc1_ahb", "ahb", ccm(CCM_CGCR0), 21); |
137 | clk[esdhc2_ahb] = imx_clk_gate("esdhc2_ahb", "ahb", ccm(CCM_CGCR0), 22); | 158 | clk[esdhc2_ahb] = imx_clk_gate("esdhc2_ahb", "ahb", ccm(CCM_CGCR0), 22); |
138 | clk[fec_ahb] = imx_clk_gate("fec_ahb", "ahb", ccm(CCM_CGCR0), 23); | 159 | clk[fec_ahb] = imx_clk_gate("fec_ahb", "ahb", ccm(CCM_CGCR0), 23); |
139 | clk[lcdc_ahb] = imx_clk_gate("lcdc_ahb", "ahb", ccm(CCM_CGCR0), 24); | 160 | clk[lcdc_ahb] = imx_clk_gate("lcdc_ahb", "ahb", ccm(CCM_CGCR0), 24); |
161 | clk[rtic_ahb] = imx_clk_gate("rtic_ahb", "ahb", ccm(CCM_CGCR0), 25); | ||
140 | clk[sdma_ahb] = imx_clk_gate("sdma_ahb", "ahb", ccm(CCM_CGCR0), 26); | 162 | clk[sdma_ahb] = imx_clk_gate("sdma_ahb", "ahb", ccm(CCM_CGCR0), 26); |
163 | clk[slcdc_ahb] = imx_clk_gate("slcdc_ahb", "ahb", ccm(CCM_CGCR0), 27); | ||
141 | clk[usbotg_ahb] = imx_clk_gate("usbotg_ahb", "ahb", ccm(CCM_CGCR0), 28); | 164 | clk[usbotg_ahb] = imx_clk_gate("usbotg_ahb", "ahb", ccm(CCM_CGCR0), 28); |
165 | /* CCM_CGCR0(29-31): reserved */ | ||
166 | /* CCM_CGCR1(0): reserved in datasheet, used as audmux in FSL kernel */ | ||
142 | clk[can1_ipg] = imx_clk_gate("can1_ipg", "ipg", ccm(CCM_CGCR1), 2); | 167 | clk[can1_ipg] = imx_clk_gate("can1_ipg", "ipg", ccm(CCM_CGCR1), 2); |
143 | clk[can2_ipg] = imx_clk_gate("can2_ipg", "ipg", ccm(CCM_CGCR1), 3); | 168 | clk[can2_ipg] = imx_clk_gate("can2_ipg", "ipg", ccm(CCM_CGCR1), 3); |
144 | clk[csi_ipg] = imx_clk_gate("csi_ipg", "ipg", ccm(CCM_CGCR1), 4); | 169 | clk[csi_ipg] = imx_clk_gate("csi_ipg", "ipg", ccm(CCM_CGCR1), 4); |
@@ -146,17 +171,41 @@ int __init mx25_clocks_init(void) | |||
146 | clk[cspi2_ipg] = imx_clk_gate("cspi2_ipg", "ipg", ccm(CCM_CGCR1), 6); | 171 | clk[cspi2_ipg] = imx_clk_gate("cspi2_ipg", "ipg", ccm(CCM_CGCR1), 6); |
147 | clk[cspi3_ipg] = imx_clk_gate("cspi3_ipg", "ipg", ccm(CCM_CGCR1), 7); | 172 | clk[cspi3_ipg] = imx_clk_gate("cspi3_ipg", "ipg", ccm(CCM_CGCR1), 7); |
148 | clk[dryice_ipg] = imx_clk_gate("dryice_ipg", "ipg", ccm(CCM_CGCR1), 8); | 173 | clk[dryice_ipg] = imx_clk_gate("dryice_ipg", "ipg", ccm(CCM_CGCR1), 8); |
174 | clk[ect_ipg] = imx_clk_gate("ect_ipg", "ipg", ccm(CCM_CGCR1), 9); | ||
175 | clk[epit1_ipg] = imx_clk_gate("epit1_ipg", "ipg", ccm(CCM_CGCR1), 10); | ||
176 | clk[epit2_ipg] = imx_clk_gate("epit2_ipg", "ipg", ccm(CCM_CGCR1), 11); | ||
177 | /* CCM_CGCR1(12): reserved in datasheet, used as esai in FSL kernel */ | ||
149 | clk[esdhc1_ipg] = imx_clk_gate("esdhc1_ipg", "ipg", ccm(CCM_CGCR1), 13); | 178 | clk[esdhc1_ipg] = imx_clk_gate("esdhc1_ipg", "ipg", ccm(CCM_CGCR1), 13); |
150 | clk[esdhc2_ipg] = imx_clk_gate("esdhc2_ipg", "ipg", ccm(CCM_CGCR1), 14); | 179 | clk[esdhc2_ipg] = imx_clk_gate("esdhc2_ipg", "ipg", ccm(CCM_CGCR1), 14); |
151 | clk[fec_ipg] = imx_clk_gate("fec_ipg", "ipg", ccm(CCM_CGCR1), 15); | 180 | clk[fec_ipg] = imx_clk_gate("fec_ipg", "ipg", ccm(CCM_CGCR1), 15); |
181 | /* CCM_CGCR1(16): reserved in datasheet, used as gpio1 in FSL kernel */ | ||
182 | /* CCM_CGCR1(17): reserved in datasheet, used as gpio2 in FSL kernel */ | ||
183 | /* CCM_CGCR1(18): reserved in datasheet, used as gpio3 in FSL kernel */ | ||
184 | clk[gpt1_ipg] = imx_clk_gate("gpt1_ipg", "ipg", ccm(CCM_CGCR1), 19); | ||
185 | clk[gpt2_ipg] = imx_clk_gate("gpt2_ipg", "ipg", ccm(CCM_CGCR1), 20); | ||
186 | clk[gpt3_ipg] = imx_clk_gate("gpt3_ipg", "ipg", ccm(CCM_CGCR1), 21); | ||
187 | clk[gpt4_ipg] = imx_clk_gate("gpt4_ipg", "ipg", ccm(CCM_CGCR1), 22); | ||
188 | /* CCM_CGCR1(23): reserved in datasheet, used as i2c1 in FSL kernel */ | ||
189 | /* CCM_CGCR1(24): reserved in datasheet, used as i2c2 in FSL kernel */ | ||
190 | /* CCM_CGCR1(25): reserved in datasheet, used as i2c3 in FSL kernel */ | ||
152 | clk[iim_ipg] = imx_clk_gate("iim_ipg", "ipg", ccm(CCM_CGCR1), 26); | 191 | clk[iim_ipg] = imx_clk_gate("iim_ipg", "ipg", ccm(CCM_CGCR1), 26); |
192 | /* CCM_CGCR1(27): reserved in datasheet, used as iomuxc in FSL kernel */ | ||
193 | /* CCM_CGCR1(28): reserved in datasheet, used as kpp in FSL kernel */ | ||
153 | clk[kpp_ipg] = imx_clk_gate("kpp_ipg", "ipg", ccm(CCM_CGCR1), 28); | 194 | clk[kpp_ipg] = imx_clk_gate("kpp_ipg", "ipg", ccm(CCM_CGCR1), 28); |
154 | clk[lcdc_ipg] = imx_clk_gate("lcdc_ipg", "ipg", ccm(CCM_CGCR1), 29); | 195 | clk[lcdc_ipg] = imx_clk_gate("lcdc_ipg", "ipg", ccm(CCM_CGCR1), 29); |
196 | /* CCM_CGCR1(30): reserved in datasheet, used as owire in FSL kernel */ | ||
155 | clk[pwm1_ipg] = imx_clk_gate("pwm1_ipg", "ipg", ccm(CCM_CGCR1), 31); | 197 | clk[pwm1_ipg] = imx_clk_gate("pwm1_ipg", "ipg", ccm(CCM_CGCR1), 31); |
156 | clk[pwm2_ipg] = imx_clk_gate("pwm2_ipg", "ipg", ccm(CCM_CGCR2), 0); | 198 | clk[pwm2_ipg] = imx_clk_gate("pwm2_ipg", "ipg", ccm(CCM_CGCR2), 0); |
157 | clk[pwm3_ipg] = imx_clk_gate("pwm3_ipg", "ipg", ccm(CCM_CGCR2), 1); | 199 | clk[pwm3_ipg] = imx_clk_gate("pwm3_ipg", "ipg", ccm(CCM_CGCR2), 1); |
158 | clk[pwm4_ipg] = imx_clk_gate("pwm4_ipg", "ipg", ccm(CCM_CGCR2), 2); | 200 | clk[pwm4_ipg] = imx_clk_gate("pwm4_ipg", "ipg", ccm(CCM_CGCR2), 2); |
201 | clk[rngb_ipg] = imx_clk_gate("rngb_ipg", "ipg", ccm(CCM_CGCR2), 3); | ||
202 | /* CCM_CGCR2(4): reserved in datasheet, used as rtic in FSL kernel */ | ||
203 | clk[scc_ipg] = imx_clk_gate("scc_ipg", "ipg", ccm(CCM_CGCR2), 5); | ||
159 | clk[sdma_ipg] = imx_clk_gate("sdma_ipg", "ipg", ccm(CCM_CGCR2), 6); | 204 | clk[sdma_ipg] = imx_clk_gate("sdma_ipg", "ipg", ccm(CCM_CGCR2), 6); |
205 | clk[sim1_ipg] = imx_clk_gate("sim1_ipg", "ipg", ccm(CCM_CGCR2), 7); | ||
206 | clk[sim2_ipg] = imx_clk_gate("sim2_ipg", "ipg", ccm(CCM_CGCR2), 8); | ||
207 | clk[slcdc_ipg] = imx_clk_gate("slcdc_ipg", "ipg", ccm(CCM_CGCR2), 9); | ||
208 | clk[spba_ipg] = imx_clk_gate("spba_ipg", "ipg", ccm(CCM_CGCR2), 10); | ||
160 | clk[ssi1_ipg] = imx_clk_gate("ssi1_ipg", "ipg", ccm(CCM_CGCR2), 11); | 209 | clk[ssi1_ipg] = imx_clk_gate("ssi1_ipg", "ipg", ccm(CCM_CGCR2), 11); |
161 | clk[ssi2_ipg] = imx_clk_gate("ssi2_ipg", "ipg", ccm(CCM_CGCR2), 12); | 210 | clk[ssi2_ipg] = imx_clk_gate("ssi2_ipg", "ipg", ccm(CCM_CGCR2), 12); |
162 | clk[tsc_ipg] = imx_clk_gate("tsc_ipg", "ipg", ccm(CCM_CGCR2), 13); | 211 | clk[tsc_ipg] = imx_clk_gate("tsc_ipg", "ipg", ccm(CCM_CGCR2), 13); |
@@ -165,6 +214,7 @@ int __init mx25_clocks_init(void) | |||
165 | clk[uart3_ipg] = imx_clk_gate("uart3_ipg", "ipg", ccm(CCM_CGCR2), 16); | 214 | clk[uart3_ipg] = imx_clk_gate("uart3_ipg", "ipg", ccm(CCM_CGCR2), 16); |
166 | clk[uart4_ipg] = imx_clk_gate("uart4_ipg", "ipg", ccm(CCM_CGCR2), 17); | 215 | clk[uart4_ipg] = imx_clk_gate("uart4_ipg", "ipg", ccm(CCM_CGCR2), 17); |
167 | clk[uart5_ipg] = imx_clk_gate("uart5_ipg", "ipg", ccm(CCM_CGCR2), 18); | 216 | clk[uart5_ipg] = imx_clk_gate("uart5_ipg", "ipg", ccm(CCM_CGCR2), 18); |
217 | /* CCM_CGCR2(19): reserved in datasheet, but used as wdt in FSL kernel */ | ||
168 | clk[wdt_ipg] = imx_clk_gate("wdt_ipg", "ipg", ccm(CCM_CGCR2), 19); | 218 | clk[wdt_ipg] = imx_clk_gate("wdt_ipg", "ipg", ccm(CCM_CGCR2), 19); |
169 | 219 | ||
170 | for (i = 0; i < ARRAY_SIZE(clk); i++) | 220 | for (i = 0; i < ARRAY_SIZE(clk); i++) |
@@ -172,6 +222,18 @@ int __init mx25_clocks_init(void) | |||
172 | pr_err("i.MX25 clk %d: register failed with %ld\n", | 222 | pr_err("i.MX25 clk %d: register failed with %ld\n", |
173 | i, PTR_ERR(clk[i])); | 223 | i, PTR_ERR(clk[i])); |
174 | 224 | ||
225 | clk_prepare_enable(clk[emi_ahb]); | ||
226 | |||
227 | clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0"); | ||
228 | clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); | ||
229 | |||
230 | return 0; | ||
231 | } | ||
232 | |||
233 | int __init mx25_clocks_init(void) | ||
234 | { | ||
235 | __mx25_clocks_init(24000000); | ||
236 | |||
175 | /* i.mx25 has the i.mx21 type uart */ | 237 | /* i.mx25 has the i.mx21 type uart */ |
176 | clk_register_clkdev(clk[uart1_ipg], "ipg", "imx21-uart.0"); | 238 | clk_register_clkdev(clk[uart1_ipg], "ipg", "imx21-uart.0"); |
177 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.0"); | 239 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.0"); |
@@ -183,8 +245,6 @@ int __init mx25_clocks_init(void) | |||
183 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.3"); | 245 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.3"); |
184 | clk_register_clkdev(clk[uart5_ipg], "ipg", "imx21-uart.4"); | 246 | clk_register_clkdev(clk[uart5_ipg], "ipg", "imx21-uart.4"); |
185 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.4"); | 247 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.4"); |
186 | clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0"); | ||
187 | clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); | ||
188 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); | 248 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); |
189 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.0"); | 249 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.0"); |
190 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0"); | 250 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0"); |
@@ -197,7 +257,7 @@ int __init mx25_clocks_init(void) | |||
197 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); | 257 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); |
198 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "fsl-usb2-udc"); | 258 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "fsl-usb2-udc"); |
199 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); | 259 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); |
200 | clk_register_clkdev(clk[nfc_ipg_per], NULL, "mxc_nand.0"); | 260 | clk_register_clkdev(clk[nfc_ipg_per], NULL, "imx25-nand.0"); |
201 | /* i.mx25 has the i.mx35 type cspi */ | 261 | /* i.mx25 has the i.mx35 type cspi */ |
202 | clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0"); | 262 | clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0"); |
203 | clk_register_clkdev(clk[cspi2_ipg], NULL, "imx35-cspi.1"); | 263 | clk_register_clkdev(clk[cspi2_ipg], NULL, "imx35-cspi.1"); |
@@ -212,15 +272,15 @@ int __init mx25_clocks_init(void) | |||
212 | clk_register_clkdev(clk[per10], "per", "mxc_pwm.3"); | 272 | clk_register_clkdev(clk[per10], "per", "mxc_pwm.3"); |
213 | clk_register_clkdev(clk[kpp_ipg], NULL, "imx-keypad"); | 273 | clk_register_clkdev(clk[kpp_ipg], NULL, "imx-keypad"); |
214 | clk_register_clkdev(clk[tsc_ipg], NULL, "mx25-adc"); | 274 | clk_register_clkdev(clk[tsc_ipg], NULL, "mx25-adc"); |
215 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx-i2c.0"); | 275 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.0"); |
216 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx-i2c.1"); | 276 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.1"); |
217 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx-i2c.2"); | 277 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.2"); |
218 | clk_register_clkdev(clk[fec_ipg], "ipg", "imx25-fec.0"); | 278 | clk_register_clkdev(clk[fec_ipg], "ipg", "imx25-fec.0"); |
219 | clk_register_clkdev(clk[fec_ahb], "ahb", "imx25-fec.0"); | 279 | clk_register_clkdev(clk[fec_ahb], "ahb", "imx25-fec.0"); |
220 | clk_register_clkdev(clk[dryice_ipg], NULL, "imxdi_rtc.0"); | 280 | clk_register_clkdev(clk[dryice_ipg], NULL, "imxdi_rtc.0"); |
221 | clk_register_clkdev(clk[lcdc_ipg_per], "per", "imx-fb.0"); | 281 | clk_register_clkdev(clk[lcdc_ipg_per], "per", "imx21-fb.0"); |
222 | clk_register_clkdev(clk[lcdc_ipg], "ipg", "imx-fb.0"); | 282 | clk_register_clkdev(clk[lcdc_ipg], "ipg", "imx21-fb.0"); |
223 | clk_register_clkdev(clk[lcdc_ahb], "ahb", "imx-fb.0"); | 283 | clk_register_clkdev(clk[lcdc_ahb], "ahb", "imx21-fb.0"); |
224 | clk_register_clkdev(clk[wdt_ipg], NULL, "imx2-wdt.0"); | 284 | clk_register_clkdev(clk[wdt_ipg], NULL, "imx2-wdt.0"); |
225 | clk_register_clkdev(clk[ssi1_ipg], NULL, "imx-ssi.0"); | 285 | clk_register_clkdev(clk[ssi1_ipg], NULL, "imx-ssi.0"); |
226 | clk_register_clkdev(clk[ssi2_ipg], NULL, "imx-ssi.1"); | 286 | clk_register_clkdev(clk[ssi2_ipg], NULL, "imx-ssi.1"); |
@@ -230,9 +290,9 @@ int __init mx25_clocks_init(void) | |||
230 | clk_register_clkdev(clk[esdhc2_ipg_per], "per", "sdhci-esdhc-imx25.1"); | 290 | clk_register_clkdev(clk[esdhc2_ipg_per], "per", "sdhci-esdhc-imx25.1"); |
231 | clk_register_clkdev(clk[esdhc2_ipg], "ipg", "sdhci-esdhc-imx25.1"); | 291 | clk_register_clkdev(clk[esdhc2_ipg], "ipg", "sdhci-esdhc-imx25.1"); |
232 | clk_register_clkdev(clk[esdhc2_ahb], "ahb", "sdhci-esdhc-imx25.1"); | 292 | clk_register_clkdev(clk[esdhc2_ahb], "ahb", "sdhci-esdhc-imx25.1"); |
233 | clk_register_clkdev(clk[csi_ipg_per], "per", "mx2-camera.0"); | 293 | clk_register_clkdev(clk[csi_ipg_per], "per", "imx25-camera.0"); |
234 | clk_register_clkdev(clk[csi_ipg], "ipg", "mx2-camera.0"); | 294 | clk_register_clkdev(clk[csi_ipg], "ipg", "imx25-camera.0"); |
235 | clk_register_clkdev(clk[csi_ahb], "ahb", "mx2-camera.0"); | 295 | clk_register_clkdev(clk[csi_ahb], "ahb", "imx25-camera.0"); |
236 | clk_register_clkdev(clk[dummy], "audmux", NULL); | 296 | clk_register_clkdev(clk[dummy], "audmux", NULL); |
237 | clk_register_clkdev(clk[can1_ipg], NULL, "flexcan.0"); | 297 | clk_register_clkdev(clk[can1_ipg], NULL, "flexcan.0"); |
238 | clk_register_clkdev(clk[can2_ipg], NULL, "flexcan.1"); | 298 | clk_register_clkdev(clk[can2_ipg], NULL, "flexcan.1"); |
@@ -242,5 +302,40 @@ int __init mx25_clocks_init(void) | |||
242 | clk_register_clkdev(clk[iim_ipg], "iim", NULL); | 302 | clk_register_clkdev(clk[iim_ipg], "iim", NULL); |
243 | 303 | ||
244 | mxc_timer_init(MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), MX25_INT_GPT1); | 304 | mxc_timer_init(MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), MX25_INT_GPT1); |
305 | |||
306 | return 0; | ||
307 | } | ||
308 | |||
309 | int __init mx25_clocks_init_dt(void) | ||
310 | { | ||
311 | struct device_node *np; | ||
312 | void __iomem *base; | ||
313 | int irq; | ||
314 | unsigned long osc_rate = 24000000; | ||
315 | |||
316 | /* retrieve the freqency of fixed clocks from device tree */ | ||
317 | for_each_compatible_node(np, NULL, "fixed-clock") { | ||
318 | u32 rate; | ||
319 | if (of_property_read_u32(np, "clock-frequency", &rate)) | ||
320 | continue; | ||
321 | |||
322 | if (of_device_is_compatible(np, "fsl,imx-osc")) | ||
323 | osc_rate = rate; | ||
324 | } | ||
325 | |||
326 | np = of_find_compatible_node(NULL, NULL, "fsl,imx25-ccm"); | ||
327 | clk_data.clks = clk; | ||
328 | clk_data.clk_num = ARRAY_SIZE(clk); | ||
329 | of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); | ||
330 | |||
331 | __mx25_clocks_init(osc_rate); | ||
332 | |||
333 | np = of_find_compatible_node(NULL, NULL, "fsl,imx25-gpt"); | ||
334 | base = of_iomap(np, 0); | ||
335 | WARN_ON(!base); | ||
336 | irq = irq_of_parse_and_map(np, 0); | ||
337 | |||
338 | mxc_timer_init(base, irq); | ||
339 | |||
245 | return 0; | 340 | return 0; |
246 | } | 341 | } |
diff --git a/arch/arm/mach-imx/clk-imx27.c b/arch/arm/mach-imx/clk-imx27.c index 366e5d59d886..585ab256c58f 100644 --- a/arch/arm/mach-imx/clk-imx27.c +++ b/arch/arm/mach-imx/clk-imx27.c | |||
@@ -6,9 +6,9 @@ | |||
6 | #include <linux/clk-provider.h> | 6 | #include <linux/clk-provider.h> |
7 | #include <linux/of.h> | 7 | #include <linux/of.h> |
8 | 8 | ||
9 | #include <mach/common.h> | ||
10 | #include <mach/hardware.h> | ||
11 | #include "clk.h" | 9 | #include "clk.h" |
10 | #include "common.h" | ||
11 | #include "hardware.h" | ||
12 | 12 | ||
13 | #define IO_ADDR_CCM(off) (MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR + (off))) | 13 | #define IO_ADDR_CCM(off) (MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR + (off))) |
14 | 14 | ||
@@ -211,19 +211,19 @@ int __init mx27_clocks_init(unsigned long fref) | |||
211 | clk_register_clkdev(clk[gpt6_ipg_gate], "ipg", "imx-gpt.5"); | 211 | clk_register_clkdev(clk[gpt6_ipg_gate], "ipg", "imx-gpt.5"); |
212 | clk_register_clkdev(clk[per1_gate], "per", "imx-gpt.5"); | 212 | clk_register_clkdev(clk[per1_gate], "per", "imx-gpt.5"); |
213 | clk_register_clkdev(clk[pwm_ipg_gate], NULL, "mxc_pwm.0"); | 213 | clk_register_clkdev(clk[pwm_ipg_gate], NULL, "mxc_pwm.0"); |
214 | clk_register_clkdev(clk[per2_gate], "per", "mxc-mmc.0"); | 214 | clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.0"); |
215 | clk_register_clkdev(clk[sdhc1_ipg_gate], "ipg", "mxc-mmc.0"); | 215 | clk_register_clkdev(clk[sdhc1_ipg_gate], "ipg", "imx21-mmc.0"); |
216 | clk_register_clkdev(clk[per2_gate], "per", "mxc-mmc.1"); | 216 | clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.1"); |
217 | clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "mxc-mmc.1"); | 217 | clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.1"); |
218 | clk_register_clkdev(clk[per2_gate], "per", "mxc-mmc.2"); | 218 | clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.2"); |
219 | clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "mxc-mmc.2"); | 219 | clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.2"); |
220 | clk_register_clkdev(clk[cspi1_ipg_gate], NULL, "imx27-cspi.0"); | 220 | clk_register_clkdev(clk[cspi1_ipg_gate], NULL, "imx27-cspi.0"); |
221 | clk_register_clkdev(clk[cspi2_ipg_gate], NULL, "imx27-cspi.1"); | 221 | clk_register_clkdev(clk[cspi2_ipg_gate], NULL, "imx27-cspi.1"); |
222 | clk_register_clkdev(clk[cspi3_ipg_gate], NULL, "imx27-cspi.2"); | 222 | clk_register_clkdev(clk[cspi3_ipg_gate], NULL, "imx27-cspi.2"); |
223 | clk_register_clkdev(clk[per3_gate], "per", "imx-fb.0"); | 223 | clk_register_clkdev(clk[per3_gate], "per", "imx21-fb.0"); |
224 | clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx-fb.0"); | 224 | clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx21-fb.0"); |
225 | clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx-fb.0"); | 225 | clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0"); |
226 | clk_register_clkdev(clk[csi_ahb_gate], "ahb", "mx2-camera.0"); | 226 | clk_register_clkdev(clk[csi_ahb_gate], "ahb", "imx27-camera.0"); |
227 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); | 227 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); |
228 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "fsl-usb2-udc"); | 228 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "fsl-usb2-udc"); |
229 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "fsl-usb2-udc"); | 229 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "fsl-usb2-udc"); |
@@ -238,27 +238,27 @@ int __init mx27_clocks_init(unsigned long fref) | |||
238 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.2"); | 238 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.2"); |
239 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); | 239 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); |
240 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); | 240 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); |
241 | clk_register_clkdev(clk[nfc_baud_gate], NULL, "mxc_nand.0"); | 241 | clk_register_clkdev(clk[nfc_baud_gate], NULL, "imx27-nand.0"); |
242 | clk_register_clkdev(clk[vpu_baud_gate], "per", "coda-imx27.0"); | 242 | clk_register_clkdev(clk[vpu_baud_gate], "per", "coda-imx27.0"); |
243 | clk_register_clkdev(clk[vpu_ahb_gate], "ahb", "coda-imx27.0"); | 243 | clk_register_clkdev(clk[vpu_ahb_gate], "ahb", "coda-imx27.0"); |
244 | clk_register_clkdev(clk[dma_ahb_gate], "ahb", "imx-dma"); | 244 | clk_register_clkdev(clk[dma_ahb_gate], "ahb", "imx27-dma"); |
245 | clk_register_clkdev(clk[dma_ipg_gate], "ipg", "imx-dma"); | 245 | clk_register_clkdev(clk[dma_ipg_gate], "ipg", "imx27-dma"); |
246 | clk_register_clkdev(clk[fec_ipg_gate], "ipg", "imx27-fec.0"); | 246 | clk_register_clkdev(clk[fec_ipg_gate], "ipg", "imx27-fec.0"); |
247 | clk_register_clkdev(clk[fec_ahb_gate], "ahb", "imx27-fec.0"); | 247 | clk_register_clkdev(clk[fec_ahb_gate], "ahb", "imx27-fec.0"); |
248 | clk_register_clkdev(clk[wdog_ipg_gate], NULL, "imx2-wdt.0"); | 248 | clk_register_clkdev(clk[wdog_ipg_gate], NULL, "imx2-wdt.0"); |
249 | clk_register_clkdev(clk[i2c1_ipg_gate], NULL, "imx-i2c.0"); | 249 | clk_register_clkdev(clk[i2c1_ipg_gate], NULL, "imx21-i2c.0"); |
250 | clk_register_clkdev(clk[i2c2_ipg_gate], NULL, "imx-i2c.1"); | 250 | clk_register_clkdev(clk[i2c2_ipg_gate], NULL, "imx21-i2c.1"); |
251 | clk_register_clkdev(clk[owire_ipg_gate], NULL, "mxc_w1.0"); | 251 | clk_register_clkdev(clk[owire_ipg_gate], NULL, "mxc_w1.0"); |
252 | clk_register_clkdev(clk[kpp_ipg_gate], NULL, "imx-keypad"); | 252 | clk_register_clkdev(clk[kpp_ipg_gate], NULL, "imx-keypad"); |
253 | clk_register_clkdev(clk[emma_ahb_gate], "emma-ahb", "mx2-camera.0"); | 253 | clk_register_clkdev(clk[emma_ahb_gate], "emma-ahb", "imx27-camera.0"); |
254 | clk_register_clkdev(clk[emma_ipg_gate], "emma-ipg", "mx2-camera.0"); | 254 | clk_register_clkdev(clk[emma_ipg_gate], "emma-ipg", "imx27-camera.0"); |
255 | clk_register_clkdev(clk[emma_ahb_gate], "ahb", "m2m-emmaprp.0"); | 255 | clk_register_clkdev(clk[emma_ahb_gate], "ahb", "m2m-emmaprp.0"); |
256 | clk_register_clkdev(clk[emma_ipg_gate], "ipg", "m2m-emmaprp.0"); | 256 | clk_register_clkdev(clk[emma_ipg_gate], "ipg", "m2m-emmaprp.0"); |
257 | clk_register_clkdev(clk[iim_ipg_gate], "iim", NULL); | 257 | clk_register_clkdev(clk[iim_ipg_gate], "iim", NULL); |
258 | clk_register_clkdev(clk[gpio_ipg_gate], "gpio", NULL); | 258 | clk_register_clkdev(clk[gpio_ipg_gate], "gpio", NULL); |
259 | clk_register_clkdev(clk[brom_ahb_gate], "brom", NULL); | 259 | clk_register_clkdev(clk[brom_ahb_gate], "brom", NULL); |
260 | clk_register_clkdev(clk[ata_ahb_gate], "ata", NULL); | 260 | clk_register_clkdev(clk[ata_ahb_gate], "ata", NULL); |
261 | clk_register_clkdev(clk[rtc_ipg_gate], NULL, "mxc_rtc"); | 261 | clk_register_clkdev(clk[rtc_ipg_gate], NULL, "imx21-rtc"); |
262 | clk_register_clkdev(clk[scc_ipg_gate], "scc", NULL); | 262 | clk_register_clkdev(clk[scc_ipg_gate], "scc", NULL); |
263 | clk_register_clkdev(clk[cpu_div], "cpu", NULL); | 263 | clk_register_clkdev(clk[cpu_div], "cpu", NULL); |
264 | clk_register_clkdev(clk[emi_ahb_gate], "emi_ahb" , NULL); | 264 | clk_register_clkdev(clk[emi_ahb_gate], "emi_ahb" , NULL); |
diff --git a/arch/arm/mach-imx/clk-imx31.c b/arch/arm/mach-imx/clk-imx31.c index 1253af2d9971..8be64e0a4ace 100644 --- a/arch/arm/mach-imx/clk-imx31.c +++ b/arch/arm/mach-imx/clk-imx31.c | |||
@@ -22,12 +22,11 @@ | |||
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | #include <linux/of.h> | 23 | #include <linux/of.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <mach/mx31.h> | ||
27 | #include <mach/common.h> | ||
28 | |||
29 | #include "clk.h" | 25 | #include "clk.h" |
26 | #include "common.h" | ||
30 | #include "crmregs-imx3.h" | 27 | #include "crmregs-imx3.h" |
28 | #include "hardware.h" | ||
29 | #include "mx31.h" | ||
31 | 30 | ||
32 | static const char *mcu_main_sel[] = { "spll", "mpll", }; | 31 | static const char *mcu_main_sel[] = { "spll", "mpll", }; |
33 | static const char *per_sel[] = { "per_div", "ipg", }; | 32 | static const char *per_sel[] = { "per_div", "ipg", }; |
@@ -124,10 +123,10 @@ int __init mx31_clocks_init(unsigned long fref) | |||
124 | clk_register_clkdev(clk[cspi3_gate], NULL, "imx31-cspi.2"); | 123 | clk_register_clkdev(clk[cspi3_gate], NULL, "imx31-cspi.2"); |
125 | clk_register_clkdev(clk[pwm_gate], "pwm", NULL); | 124 | clk_register_clkdev(clk[pwm_gate], "pwm", NULL); |
126 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); | 125 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); |
127 | clk_register_clkdev(clk[rtc_gate], NULL, "mxc_rtc"); | 126 | clk_register_clkdev(clk[rtc_gate], NULL, "imx21-rtc"); |
128 | clk_register_clkdev(clk[epit1_gate], "epit", NULL); | 127 | clk_register_clkdev(clk[epit1_gate], "epit", NULL); |
129 | clk_register_clkdev(clk[epit2_gate], "epit", NULL); | 128 | clk_register_clkdev(clk[epit2_gate], "epit", NULL); |
130 | clk_register_clkdev(clk[nfc], NULL, "mxc_nand.0"); | 129 | clk_register_clkdev(clk[nfc], NULL, "imx27-nand.0"); |
131 | clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); | 130 | clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); |
132 | clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); | 131 | clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); |
133 | clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); | 132 | clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); |
@@ -155,12 +154,12 @@ int __init mx31_clocks_init(unsigned long fref) | |||
155 | clk_register_clkdev(clk[ipg], "ipg", "imx21-uart.3"); | 154 | clk_register_clkdev(clk[ipg], "ipg", "imx21-uart.3"); |
156 | clk_register_clkdev(clk[uart5_gate], "per", "imx21-uart.4"); | 155 | clk_register_clkdev(clk[uart5_gate], "per", "imx21-uart.4"); |
157 | clk_register_clkdev(clk[ipg], "ipg", "imx21-uart.4"); | 156 | clk_register_clkdev(clk[ipg], "ipg", "imx21-uart.4"); |
158 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx-i2c.0"); | 157 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx21-i2c.0"); |
159 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx-i2c.1"); | 158 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx21-i2c.1"); |
160 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx-i2c.2"); | 159 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx21-i2c.2"); |
161 | clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1.0"); | 160 | clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1.0"); |
162 | clk_register_clkdev(clk[sdhc1_gate], NULL, "mxc-mmc.0"); | 161 | clk_register_clkdev(clk[sdhc1_gate], NULL, "imx31-mmc.0"); |
163 | clk_register_clkdev(clk[sdhc2_gate], NULL, "mxc-mmc.1"); | 162 | clk_register_clkdev(clk[sdhc2_gate], NULL, "imx31-mmc.1"); |
164 | clk_register_clkdev(clk[ssi1_gate], NULL, "imx-ssi.0"); | 163 | clk_register_clkdev(clk[ssi1_gate], NULL, "imx-ssi.0"); |
165 | clk_register_clkdev(clk[ssi2_gate], NULL, "imx-ssi.1"); | 164 | clk_register_clkdev(clk[ssi2_gate], NULL, "imx-ssi.1"); |
166 | clk_register_clkdev(clk[firi_gate], "firi", NULL); | 165 | clk_register_clkdev(clk[firi_gate], "firi", NULL); |
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index 177259b523cd..66f3d65ea275 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c | |||
@@ -14,11 +14,10 @@ | |||
14 | #include <linux/of.h> | 14 | #include <linux/of.h> |
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | 16 | ||
17 | #include <mach/hardware.h> | ||
18 | #include <mach/common.h> | ||
19 | |||
20 | #include "crmregs-imx3.h" | 17 | #include "crmregs-imx3.h" |
21 | #include "clk.h" | 18 | #include "clk.h" |
19 | #include "common.h" | ||
20 | #include "hardware.h" | ||
22 | 21 | ||
23 | struct arm_ahb_div { | 22 | struct arm_ahb_div { |
24 | unsigned char arm, ahb, sel; | 23 | unsigned char arm, ahb, sel; |
@@ -226,9 +225,9 @@ int __init mx35_clocks_init() | |||
226 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); | 225 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); |
227 | clk_register_clkdev(clk[gpt_gate], "per", "imx-gpt.0"); | 226 | clk_register_clkdev(clk[gpt_gate], "per", "imx-gpt.0"); |
228 | clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0"); | 227 | clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0"); |
229 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx-i2c.0"); | 228 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx21-i2c.0"); |
230 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx-i2c.1"); | 229 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx21-i2c.1"); |
231 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx-i2c.2"); | 230 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx21-i2c.2"); |
232 | clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); | 231 | clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); |
233 | clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); | 232 | clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); |
234 | clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); | 233 | clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); |
@@ -256,7 +255,7 @@ int __init mx35_clocks_init() | |||
256 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); | 255 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); |
257 | clk_register_clkdev(clk[usbotg_gate], "ahb", "fsl-usb2-udc"); | 256 | clk_register_clkdev(clk[usbotg_gate], "ahb", "fsl-usb2-udc"); |
258 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); | 257 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); |
259 | clk_register_clkdev(clk[nfc_div], NULL, "mxc_nand.0"); | 258 | clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); |
260 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); | 259 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); |
261 | 260 | ||
262 | clk_prepare_enable(clk[spba_gate]); | 261 | clk_prepare_enable(clk[spba_gate]); |
diff --git a/arch/arm/mach-imx/clk-imx51-imx53.c b/arch/arm/mach-imx/clk-imx51-imx53.c index a0bf84803eac..abb71f6b4d60 100644 --- a/arch/arm/mach-imx/clk-imx51-imx53.c +++ b/arch/arm/mach-imx/clk-imx51-imx53.c | |||
@@ -14,11 +14,10 @@ | |||
14 | #include <linux/of.h> | 14 | #include <linux/of.h> |
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | 16 | ||
17 | #include <mach/hardware.h> | ||
18 | #include <mach/common.h> | ||
19 | |||
20 | #include "crm-regs-imx5.h" | 17 | #include "crm-regs-imx5.h" |
21 | #include "clk.h" | 18 | #include "clk.h" |
19 | #include "common.h" | ||
20 | #include "hardware.h" | ||
22 | 21 | ||
23 | /* Low-power Audio Playback Mode clock */ | 22 | /* Low-power Audio Playback Mode clock */ |
24 | static const char *lp_apm_sel[] = { "osc", }; | 23 | static const char *lp_apm_sel[] = { "osc", }; |
@@ -258,8 +257,8 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
258 | clk_register_clkdev(clk[cspi_ipg_gate], NULL, "imx35-cspi.2"); | 257 | clk_register_clkdev(clk[cspi_ipg_gate], NULL, "imx35-cspi.2"); |
259 | clk_register_clkdev(clk[pwm1_ipg_gate], "pwm", "mxc_pwm.0"); | 258 | clk_register_clkdev(clk[pwm1_ipg_gate], "pwm", "mxc_pwm.0"); |
260 | clk_register_clkdev(clk[pwm2_ipg_gate], "pwm", "mxc_pwm.1"); | 259 | clk_register_clkdev(clk[pwm2_ipg_gate], "pwm", "mxc_pwm.1"); |
261 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx-i2c.0"); | 260 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx21-i2c.0"); |
262 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx-i2c.1"); | 261 | clk_register_clkdev(clk[i2c2_gate], NULL, "imx21-i2c.1"); |
263 | clk_register_clkdev(clk[usboh3_per_gate], "per", "mxc-ehci.0"); | 262 | clk_register_clkdev(clk[usboh3_per_gate], "per", "mxc-ehci.0"); |
264 | clk_register_clkdev(clk[usboh3_gate], "ipg", "mxc-ehci.0"); | 263 | clk_register_clkdev(clk[usboh3_gate], "ipg", "mxc-ehci.0"); |
265 | clk_register_clkdev(clk[usboh3_gate], "ahb", "mxc-ehci.0"); | 264 | clk_register_clkdev(clk[usboh3_gate], "ahb", "mxc-ehci.0"); |
@@ -272,7 +271,7 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
272 | clk_register_clkdev(clk[usboh3_per_gate], "per", "fsl-usb2-udc"); | 271 | clk_register_clkdev(clk[usboh3_per_gate], "per", "fsl-usb2-udc"); |
273 | clk_register_clkdev(clk[usboh3_gate], "ipg", "fsl-usb2-udc"); | 272 | clk_register_clkdev(clk[usboh3_gate], "ipg", "fsl-usb2-udc"); |
274 | clk_register_clkdev(clk[usboh3_gate], "ahb", "fsl-usb2-udc"); | 273 | clk_register_clkdev(clk[usboh3_gate], "ahb", "fsl-usb2-udc"); |
275 | clk_register_clkdev(clk[nfc_gate], NULL, "mxc_nand"); | 274 | clk_register_clkdev(clk[nfc_gate], NULL, "imx51-nand"); |
276 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); | 275 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); |
277 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); | 276 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); |
278 | clk_register_clkdev(clk[ssi3_ipg_gate], NULL, "imx-ssi.2"); | 277 | clk_register_clkdev(clk[ssi3_ipg_gate], NULL, "imx-ssi.2"); |
@@ -345,7 +344,7 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, | |||
345 | 344 | ||
346 | mx5_clocks_common_init(rate_ckil, rate_osc, rate_ckih1, rate_ckih2); | 345 | mx5_clocks_common_init(rate_ckil, rate_osc, rate_ckih1, rate_ckih2); |
347 | 346 | ||
348 | clk_register_clkdev(clk[hsi2c_gate], NULL, "imx-i2c.2"); | 347 | clk_register_clkdev(clk[hsi2c_gate], NULL, "imx21-i2c.2"); |
349 | clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL); | 348 | clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL); |
350 | clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0"); | 349 | clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0"); |
351 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); | 350 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); |
@@ -440,7 +439,7 @@ int __init mx53_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, | |||
440 | mx5_clocks_common_init(rate_ckil, rate_osc, rate_ckih1, rate_ckih2); | 439 | mx5_clocks_common_init(rate_ckil, rate_osc, rate_ckih1, rate_ckih2); |
441 | 440 | ||
442 | clk_register_clkdev(clk[vpu_gate], NULL, "imx53-vpu.0"); | 441 | clk_register_clkdev(clk[vpu_gate], NULL, "imx53-vpu.0"); |
443 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx-i2c.2"); | 442 | clk_register_clkdev(clk[i2c3_gate], NULL, "imx21-i2c.2"); |
444 | clk_register_clkdev(clk[fec_gate], NULL, "imx25-fec.0"); | 443 | clk_register_clkdev(clk[fec_gate], NULL, "imx25-fec.0"); |
445 | clk_register_clkdev(clk[ipu_gate], "bus", "imx53-ipu"); | 444 | clk_register_clkdev(clk[ipu_gate], "bus", "imx53-ipu"); |
446 | clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx53-ipu"); | 445 | clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx53-ipu"); |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 3ec242f3341e..5f9f5919dd74 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -19,8 +19,9 @@ | |||
19 | #include <linux/of.h> | 19 | #include <linux/of.h> |
20 | #include <linux/of_address.h> | 20 | #include <linux/of_address.h> |
21 | #include <linux/of_irq.h> | 21 | #include <linux/of_irq.h> |
22 | #include <mach/common.h> | 22 | |
23 | #include "clk.h" | 23 | #include "clk.h" |
24 | #include "common.h" | ||
24 | 25 | ||
25 | #define CCGR0 0x68 | 26 | #define CCGR0 0x68 |
26 | #define CCGR1 0x6c | 27 | #define CCGR1 0x6c |
@@ -405,6 +406,7 @@ int __init mx6q_clocks_init(void) | |||
405 | clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL); | 406 | clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL); |
406 | clk_register_clkdev(clk[ahb], "ahb", NULL); | 407 | clk_register_clkdev(clk[ahb], "ahb", NULL); |
407 | clk_register_clkdev(clk[cko1], "cko1", NULL); | 408 | clk_register_clkdev(clk[cko1], "cko1", NULL); |
409 | clk_register_clkdev(clk[arm], NULL, "cpu0"); | ||
408 | 410 | ||
409 | /* | 411 | /* |
410 | * The gpmi needs 100MHz frequency in the EDO/Sync mode, | 412 | * The gpmi needs 100MHz frequency in the EDO/Sync mode, |
diff --git a/arch/arm/mach-imx/clk-pllv1.c b/arch/arm/mach-imx/clk-pllv1.c index 02be73178912..abff350ba24c 100644 --- a/arch/arm/mach-imx/clk-pllv1.c +++ b/arch/arm/mach-imx/clk-pllv1.c | |||
@@ -4,10 +4,10 @@ | |||
4 | #include <linux/slab.h> | 4 | #include <linux/slab.h> |
5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
6 | #include <linux/err.h> | 6 | #include <linux/err.h> |
7 | #include <mach/common.h> | ||
8 | #include <mach/hardware.h> | ||
9 | 7 | ||
10 | #include "clk.h" | 8 | #include "clk.h" |
9 | #include "common.h" | ||
10 | #include "hardware.h" | ||
11 | 11 | ||
12 | /** | 12 | /** |
13 | * pll v1 | 13 | * pll v1 |
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/mach-imx/common.h index ead901814c0d..7191ab4434e5 100644 --- a/arch/arm/plat-mxc/include/mach/common.h +++ b/arch/arm/mach-imx/common.h | |||
@@ -66,6 +66,7 @@ extern int mx51_clocks_init(unsigned long ckil, unsigned long osc, | |||
66 | unsigned long ckih1, unsigned long ckih2); | 66 | unsigned long ckih1, unsigned long ckih2); |
67 | extern int mx53_clocks_init(unsigned long ckil, unsigned long osc, | 67 | extern int mx53_clocks_init(unsigned long ckil, unsigned long osc, |
68 | unsigned long ckih1, unsigned long ckih2); | 68 | unsigned long ckih1, unsigned long ckih2); |
69 | extern int mx25_clocks_init_dt(void); | ||
69 | extern int mx27_clocks_init_dt(void); | 70 | extern int mx27_clocks_init_dt(void); |
70 | extern int mx31_clocks_init_dt(void); | 71 | extern int mx31_clocks_init_dt(void); |
71 | extern int mx51_clocks_init_dt(void); | 72 | extern int mx51_clocks_init_dt(void); |
@@ -79,6 +80,7 @@ extern void mxc_arch_reset_init(void __iomem *); | |||
79 | extern int mx53_revision(void); | 80 | extern int mx53_revision(void); |
80 | extern int mx53_display_revision(void); | 81 | extern int mx53_display_revision(void); |
81 | extern void imx_set_aips(void __iomem *); | 82 | extern void imx_set_aips(void __iomem *); |
83 | extern int mxc_device_init(void); | ||
82 | 84 | ||
83 | enum mxc_cpu_pwr_mode { | 85 | enum mxc_cpu_pwr_mode { |
84 | WAIT_CLOCKED, /* wfi only */ | 86 | WAIT_CLOCKED, /* wfi only */ |
diff --git a/arch/arm/mach-imx/cpu-imx25.c b/arch/arm/mach-imx/cpu-imx25.c index 6914bcbf84e4..96ec64b5ff7d 100644 --- a/arch/arm/mach-imx/cpu-imx25.c +++ b/arch/arm/mach-imx/cpu-imx25.c | |||
@@ -11,8 +11,9 @@ | |||
11 | */ | 11 | */ |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <mach/hardware.h> | 14 | |
15 | #include <mach/iim.h> | 15 | #include "iim.h" |
16 | #include "hardware.h" | ||
16 | 17 | ||
17 | static int mx25_cpu_rev = -1; | 18 | static int mx25_cpu_rev = -1; |
18 | 19 | ||
diff --git a/arch/arm/mach-imx/cpu-imx27.c b/arch/arm/mach-imx/cpu-imx27.c index ff38e1505f67..fe8d36f7e30e 100644 --- a/arch/arm/mach-imx/cpu-imx27.c +++ b/arch/arm/mach-imx/cpu-imx27.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | 26 | ||
27 | #include <mach/hardware.h> | 27 | #include "hardware.h" |
28 | 28 | ||
29 | static int mx27_cpu_rev = -1; | 29 | static int mx27_cpu_rev = -1; |
30 | static int mx27_cpu_partnumber; | 30 | static int mx27_cpu_partnumber; |
diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c index 3f2345f0cdaf..fde1860a2521 100644 --- a/arch/arm/mach-imx/cpu-imx31.c +++ b/arch/arm/mach-imx/cpu-imx31.c | |||
@@ -11,9 +11,10 @@ | |||
11 | 11 | ||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <mach/hardware.h> | 14 | |
15 | #include <mach/iim.h> | 15 | #include "common.h" |
16 | #include <mach/common.h> | 16 | #include "hardware.h" |
17 | #include "iim.h" | ||
17 | 18 | ||
18 | static int mx31_cpu_rev = -1; | 19 | static int mx31_cpu_rev = -1; |
19 | 20 | ||
diff --git a/arch/arm/mach-imx/cpu-imx35.c b/arch/arm/mach-imx/cpu-imx35.c index 846e46eb8cbf..ec3aaa098c17 100644 --- a/arch/arm/mach-imx/cpu-imx35.c +++ b/arch/arm/mach-imx/cpu-imx35.c | |||
@@ -10,8 +10,9 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/io.h> | 12 | #include <linux/io.h> |
13 | #include <mach/hardware.h> | 13 | |
14 | #include <mach/iim.h> | 14 | #include "hardware.h" |
15 | #include "iim.h" | ||
15 | 16 | ||
16 | static int mx35_cpu_rev = -1; | 17 | static int mx35_cpu_rev = -1; |
17 | 18 | ||
diff --git a/arch/arm/mach-imx/cpu-imx5.c b/arch/arm/mach-imx/cpu-imx5.c index 8eb15a2fcaf9..d88760014ff9 100644 --- a/arch/arm/mach-imx/cpu-imx5.c +++ b/arch/arm/mach-imx/cpu-imx5.c | |||
@@ -15,9 +15,10 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <mach/hardware.h> | ||
19 | #include <linux/io.h> | 18 | #include <linux/io.h> |
20 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
21 | static int mx5_cpu_rev = -1; | 22 | static int mx5_cpu_rev = -1; |
22 | 23 | ||
23 | #define IIM_SREV 0x24 | 24 | #define IIM_SREV 0x24 |
diff --git a/arch/arm/plat-mxc/cpu.c b/arch/arm/mach-imx/cpu.c index 220dd6f93126..03fcbd082593 100644 --- a/arch/arm/plat-mxc/cpu.c +++ b/arch/arm/mach-imx/cpu.c | |||
@@ -1,7 +1,8 @@ | |||
1 | 1 | ||
2 | #include <linux/module.h> | 2 | #include <linux/module.h> |
3 | #include <linux/io.h> | 3 | #include <linux/io.h> |
4 | #include <mach/hardware.h> | 4 | |
5 | #include "hardware.h" | ||
5 | 6 | ||
6 | unsigned int __mxc_cpu_type; | 7 | unsigned int __mxc_cpu_type; |
7 | EXPORT_SYMBOL(__mxc_cpu_type); | 8 | EXPORT_SYMBOL(__mxc_cpu_type); |
diff --git a/arch/arm/mach-imx/cpu_op-mx51.c b/arch/arm/mach-imx/cpu_op-mx51.c index 7b92cd6da6d3..b9ef692b61a2 100644 --- a/arch/arm/mach-imx/cpu_op-mx51.c +++ b/arch/arm/mach-imx/cpu_op-mx51.c | |||
@@ -13,9 +13,10 @@ | |||
13 | 13 | ||
14 | #include <linux/bug.h> | 14 | #include <linux/bug.h> |
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <mach/hardware.h> | ||
17 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
18 | 17 | ||
18 | #include "hardware.h" | ||
19 | |||
19 | static struct cpu_op mx51_cpu_op[] = { | 20 | static struct cpu_op mx51_cpu_op[] = { |
20 | { | 21 | { |
21 | .cpu_rate = 160000000,}, | 22 | .cpu_rate = 160000000,}, |
diff --git a/arch/arm/plat-mxc/cpufreq.c b/arch/arm/mach-imx/cpufreq.c index b5b6f8083130..36e8b3994470 100644 --- a/arch/arm/plat-mxc/cpufreq.c +++ b/arch/arm/mach-imx/cpufreq.c | |||
@@ -22,7 +22,8 @@ | |||
22 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
23 | #include <linux/err.h> | 23 | #include <linux/err.h> |
24 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
25 | #include <mach/hardware.h> | 25 | |
26 | #include "hardware.h" | ||
26 | 27 | ||
27 | #define CLK32_FREQ 32768 | 28 | #define CLK32_FREQ 32768 |
28 | #define NANOSECOND (1000 * 1000 * 1000) | 29 | #define NANOSECOND (1000 * 1000 * 1000) |
diff --git a/arch/arm/plat-mxc/cpuidle.c b/arch/arm/mach-imx/cpuidle.c index d4cb511a44a8..d4cb511a44a8 100644 --- a/arch/arm/plat-mxc/cpuidle.c +++ b/arch/arm/mach-imx/cpuidle.c | |||
diff --git a/arch/arm/plat-mxc/include/mach/cpuidle.h b/arch/arm/mach-imx/cpuidle.h index bc932d1af372..bc932d1af372 100644 --- a/arch/arm/plat-mxc/include/mach/cpuidle.h +++ b/arch/arm/mach-imx/cpuidle.h | |||
diff --git a/arch/arm/mach-imx/devices-imx1.h b/arch/arm/mach-imx/devices-imx1.h index 3aad1e70de96..f9b5afc6bcd1 100644 --- a/arch/arm/mach-imx/devices-imx1.h +++ b/arch/arm/mach-imx/devices-imx1.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx1.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_imx_fb_data imx1_imx_fb_data; | 11 | extern const struct imx_imx_fb_data imx1_imx_fb_data; |
13 | #define imx1_add_imx_fb(pdata) \ | 12 | #define imx1_add_imx_fb(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx21.h b/arch/arm/mach-imx/devices-imx21.h index 93ece55f75df..bd9393280159 100644 --- a/arch/arm/mach-imx/devices-imx21.h +++ b/arch/arm/mach-imx/devices-imx21.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx21.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data; | 11 | extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data; |
13 | #define imx21_add_imx21_hcd(pdata) \ | 12 | #define imx21_add_imx21_hcd(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx25.h b/arch/arm/mach-imx/devices-imx25.h index f8e03dd1f116..0d2922bc575c 100644 --- a/arch/arm/mach-imx/devices-imx25.h +++ b/arch/arm/mach-imx/devices-imx25.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx25.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_fec_data imx25_fec_data; | 11 | extern const struct imx_fec_data imx25_fec_data; |
13 | #define imx25_add_fec(pdata) \ | 12 | #define imx25_add_fec(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx27.h b/arch/arm/mach-imx/devices-imx27.h index 04822932cdd1..8a1ad7972d4c 100644 --- a/arch/arm/mach-imx/devices-imx27.h +++ b/arch/arm/mach-imx/devices-imx27.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx27.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_fec_data imx27_fec_data; | 11 | extern const struct imx_fec_data imx27_fec_data; |
13 | #define imx27_add_fec(pdata) \ | 12 | #define imx27_add_fec(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx31.h b/arch/arm/mach-imx/devices-imx31.h index 8b2ceb45bb83..e8d1611bbc8e 100644 --- a/arch/arm/mach-imx/devices-imx31.h +++ b/arch/arm/mach-imx/devices-imx31.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx31.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data; | 11 | extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data; |
13 | #define imx31_add_fsl_usb2_udc(pdata) \ | 12 | #define imx31_add_fsl_usb2_udc(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx35.h b/arch/arm/mach-imx/devices-imx35.h index c3e9f206ac2b..e2675f1b141c 100644 --- a/arch/arm/mach-imx/devices-imx35.h +++ b/arch/arm/mach-imx/devices-imx35.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx35.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_fec_data imx35_fec_data; | 11 | extern const struct imx_fec_data imx35_fec_data; |
13 | #define imx35_add_fec(pdata) \ | 12 | #define imx35_add_fec(pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx50.h b/arch/arm/mach-imx/devices-imx50.h index 7216667eaafc..2c290391f298 100644 --- a/arch/arm/mach-imx/devices-imx50.h +++ b/arch/arm/mach-imx/devices-imx50.h | |||
@@ -18,8 +18,7 @@ | |||
18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <mach/mx50.h> | 21 | #include "devices/devices-common.h" |
22 | #include <mach/devices-common.h> | ||
23 | 22 | ||
24 | extern const struct imx_imx_uart_1irq_data imx50_imx_uart_data[]; | 23 | extern const struct imx_imx_uart_1irq_data imx50_imx_uart_data[]; |
25 | #define imx50_add_imx_uart(id, pdata) \ | 24 | #define imx50_add_imx_uart(id, pdata) \ |
diff --git a/arch/arm/mach-imx/devices-imx51.h b/arch/arm/mach-imx/devices-imx51.h index 9f1718725195..deee5baee88c 100644 --- a/arch/arm/mach-imx/devices-imx51.h +++ b/arch/arm/mach-imx/devices-imx51.h | |||
@@ -6,8 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/mx51.h> | 9 | #include "devices/devices-common.h" |
10 | #include <mach/devices-common.h> | ||
11 | 10 | ||
12 | extern const struct imx_fec_data imx51_fec_data; | 11 | extern const struct imx_fec_data imx51_fec_data; |
13 | #define imx51_add_fec(pdata) \ | 12 | #define imx51_add_fec(pdata) \ |
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig index a35d9841f494..a35d9841f494 100644 --- a/arch/arm/plat-mxc/devices/Kconfig +++ b/arch/arm/mach-imx/devices/Kconfig | |||
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/mach-imx/devices/Makefile index 76f3195475d0..2abe2a5144d0 100644 --- a/arch/arm/plat-mxc/devices/Makefile +++ b/arch/arm/mach-imx/devices/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | obj-y := devices.o | ||
2 | |||
1 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o | 3 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o |
2 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o | 4 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o |
3 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o | 5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o |
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h index eaf79d220c9a..e4b790b9e2aa 100644 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/mach-imx/devices/devices-common.h | |||
@@ -108,6 +108,7 @@ struct platform_device *__init imx_add_imxdi_rtc( | |||
108 | 108 | ||
109 | #include <linux/platform_data/video-imxfb.h> | 109 | #include <linux/platform_data/video-imxfb.h> |
110 | struct imx_imx_fb_data { | 110 | struct imx_imx_fb_data { |
111 | const char *devid; | ||
111 | resource_size_t iobase; | 112 | resource_size_t iobase; |
112 | resource_size_t iosize; | 113 | resource_size_t iosize; |
113 | resource_size_t irq; | 114 | resource_size_t irq; |
@@ -118,6 +119,7 @@ struct platform_device *__init imx_add_imx_fb( | |||
118 | 119 | ||
119 | #include <linux/platform_data/i2c-imx.h> | 120 | #include <linux/platform_data/i2c-imx.h> |
120 | struct imx_imx_i2c_data { | 121 | struct imx_imx_i2c_data { |
122 | const char *devid; | ||
121 | int id; | 123 | int id; |
122 | resource_size_t iobase; | 124 | resource_size_t iobase; |
123 | resource_size_t iosize; | 125 | resource_size_t iosize; |
@@ -219,6 +221,7 @@ struct platform_device *__init imx_add_mx1_camera( | |||
219 | 221 | ||
220 | #include <linux/platform_data/camera-mx2.h> | 222 | #include <linux/platform_data/camera-mx2.h> |
221 | struct imx_mx2_camera_data { | 223 | struct imx_mx2_camera_data { |
224 | const char *devid; | ||
222 | resource_size_t iobasecsi; | 225 | resource_size_t iobasecsi; |
223 | resource_size_t iosizecsi; | 226 | resource_size_t iosizecsi; |
224 | resource_size_t irqcsi; | 227 | resource_size_t irqcsi; |
@@ -244,6 +247,7 @@ struct platform_device *__init imx_add_mxc_ehci( | |||
244 | 247 | ||
245 | #include <linux/platform_data/mmc-mxcmmc.h> | 248 | #include <linux/platform_data/mmc-mxcmmc.h> |
246 | struct imx_mxc_mmc_data { | 249 | struct imx_mxc_mmc_data { |
250 | const char *devid; | ||
247 | int id; | 251 | int id; |
248 | resource_size_t iobase; | 252 | resource_size_t iobase; |
249 | resource_size_t iosize; | 253 | resource_size_t iosize; |
@@ -256,6 +260,7 @@ struct platform_device *__init imx_add_mxc_mmc( | |||
256 | 260 | ||
257 | #include <linux/platform_data/mtd-mxc_nand.h> | 261 | #include <linux/platform_data/mtd-mxc_nand.h> |
258 | struct imx_mxc_nand_data { | 262 | struct imx_mxc_nand_data { |
263 | const char *devid; | ||
259 | /* | 264 | /* |
260 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new | 265 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new |
261 | * machines but don't change existing devices as the nand device usually | 266 | * machines but don't change existing devices as the nand device usually |
@@ -290,6 +295,7 @@ struct platform_device *__init imx_add_mxc_pwm( | |||
290 | 295 | ||
291 | /* mxc_rtc */ | 296 | /* mxc_rtc */ |
292 | struct imx_mxc_rtc_data { | 297 | struct imx_mxc_rtc_data { |
298 | const char *devid; | ||
293 | resource_size_t iobase; | 299 | resource_size_t iobase; |
294 | resource_size_t irq; | 300 | resource_size_t irq; |
295 | }; | 301 | }; |
@@ -326,7 +332,8 @@ struct platform_device *__init imx_add_spi_imx( | |||
326 | const struct imx_spi_imx_data *data, | 332 | const struct imx_spi_imx_data *data, |
327 | const struct spi_imx_master *pdata); | 333 | const struct spi_imx_master *pdata); |
328 | 334 | ||
329 | struct platform_device *imx_add_imx_dma(void); | 335 | struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase, |
336 | int irq, int irq_err); | ||
330 | struct platform_device *imx_add_imx_sdma(char *name, | 337 | struct platform_device *imx_add_imx_sdma(char *name, |
331 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); | 338 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); |
332 | 339 | ||
diff --git a/arch/arm/plat-mxc/devices.c b/arch/arm/mach-imx/devices/devices.c index 4d55a7a26e98..1b37482407f9 100644 --- a/arch/arm/plat-mxc/devices.c +++ b/arch/arm/mach-imx/devices/devices.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | #include <mach/common.h> | ||
25 | 24 | ||
26 | struct device mxc_aips_bus = { | 25 | struct device mxc_aips_bus = { |
27 | .init_name = "mxc_aips", | 26 | .init_name = "mxc_aips", |
@@ -33,7 +32,7 @@ struct device mxc_ahb_bus = { | |||
33 | .parent = &platform_bus, | 32 | .parent = &platform_bus, |
34 | }; | 33 | }; |
35 | 34 | ||
36 | static int __init mxc_device_init(void) | 35 | int __init mxc_device_init(void) |
37 | { | 36 | { |
38 | int ret; | 37 | int ret; |
39 | 38 | ||
@@ -46,4 +45,3 @@ static int __init mxc_device_init(void) | |||
46 | done: | 45 | done: |
47 | return ret; | 46 | return ret; |
48 | } | 47 | } |
49 | core_initcall(mxc_device_init); | ||
diff --git a/arch/arm/plat-mxc/devices/platform-ahci-imx.c b/arch/arm/mach-imx/devices/platform-ahci-imx.c index ade4a1c4e2a3..3d87dd9c284a 100644 --- a/arch/arm/plat-mxc/devices/platform-ahci-imx.c +++ b/arch/arm/mach-imx/devices/platform-ahci-imx.c | |||
@@ -24,8 +24,9 @@ | |||
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | #include <linux/dma-mapping.h> | 25 | #include <linux/dma-mapping.h> |
26 | #include <asm/sizes.h> | 26 | #include <asm/sizes.h> |
27 | #include <mach/hardware.h> | 27 | |
28 | #include <mach/devices-common.h> | 28 | #include "../hardware.h" |
29 | #include "devices-common.h" | ||
29 | 30 | ||
30 | #define imx_ahci_imx_data_entry_single(soc, _devid) \ | 31 | #define imx_ahci_imx_data_entry_single(soc, _devid) \ |
31 | { \ | 32 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-fec.c b/arch/arm/mach-imx/devices/platform-fec.c index 0bae44e890db..2cb188ad9a0a 100644 --- a/arch/arm/plat-mxc/devices/platform-fec.c +++ b/arch/arm/mach-imx/devices/platform-fec.c | |||
@@ -8,8 +8,9 @@ | |||
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <asm/sizes.h> | 10 | #include <asm/sizes.h> |
11 | #include <mach/hardware.h> | 11 | |
12 | #include <mach/devices-common.h> | 12 | #include "../hardware.h" |
13 | #include "devices-common.h" | ||
13 | 14 | ||
14 | #define imx_fec_data_entry_single(soc, _devid) \ | 15 | #define imx_fec_data_entry_single(soc, _devid) \ |
15 | { \ | 16 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-flexcan.c b/arch/arm/mach-imx/devices/platform-flexcan.c index 4e8497af2eb1..1078bf0a94ef 100644 --- a/arch/arm/plat-mxc/devices/platform-flexcan.c +++ b/arch/arm/mach-imx/devices/platform-flexcan.c | |||
@@ -5,8 +5,8 @@ | |||
5 | * the terms of the GNU General Public License version 2 as published by the | 5 | * the terms of the GNU General Public License version 2 as published by the |
6 | * Free Software Foundation. | 6 | * Free Software Foundation. |
7 | */ | 7 | */ |
8 | #include <mach/hardware.h> | 8 | #include "../hardware.h" |
9 | #include <mach/devices-common.h> | 9 | #include "devices-common.h" |
10 | 10 | ||
11 | #define imx_flexcan_data_entry_single(soc, _id, _hwid, _size) \ | 11 | #define imx_flexcan_data_entry_single(soc, _id, _hwid, _size) \ |
12 | { \ | 12 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-fsl-usb2-udc.c b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c index 848038f301fd..37e44398197b 100644 --- a/arch/arm/plat-mxc/devices/platform-fsl-usb2-udc.c +++ b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c | |||
@@ -7,8 +7,9 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <mach/hardware.h> | 10 | |
11 | #include <mach/devices-common.h> | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
12 | 13 | ||
13 | #define imx_fsl_usb2_udc_data_entry_single(soc) \ | 14 | #define imx_fsl_usb2_udc_data_entry_single(soc) \ |
14 | { \ | 15 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-gpio-mxc.c b/arch/arm/mach-imx/devices/platform-gpio-mxc.c index a7919a241032..26483fa94b75 100644 --- a/arch/arm/plat-mxc/devices/platform-gpio-mxc.c +++ b/arch/arm/mach-imx/devices/platform-gpio-mxc.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/devices-common.h> | 9 | #include "devices-common.h" |
10 | 10 | ||
11 | struct platform_device *__init mxc_register_gpio(char *name, int id, | 11 | struct platform_device *__init mxc_register_gpio(char *name, int id, |
12 | resource_size_t iobase, resource_size_t iosize, int irq, int irq_high) | 12 | resource_size_t iobase, resource_size_t iosize, int irq, int irq_high) |
diff --git a/arch/arm/plat-mxc/devices/platform-gpio_keys.c b/arch/arm/mach-imx/devices/platform-gpio_keys.c index 1c53a532ea0e..486282539c76 100644 --- a/arch/arm/plat-mxc/devices/platform-gpio_keys.c +++ b/arch/arm/mach-imx/devices/platform-gpio_keys.c | |||
@@ -16,8 +16,9 @@ | |||
16 | * Boston, MA 02110-1301, USA. | 16 | * Boston, MA 02110-1301, USA. |
17 | */ | 17 | */ |
18 | #include <asm/sizes.h> | 18 | #include <asm/sizes.h> |
19 | #include <mach/hardware.h> | 19 | |
20 | #include <mach/devices-common.h> | 20 | #include "../hardware.h" |
21 | #include "devices-common.h" | ||
21 | 22 | ||
22 | struct platform_device *__init imx_add_gpio_keys( | 23 | struct platform_device *__init imx_add_gpio_keys( |
23 | const struct gpio_keys_platform_data *pdata) | 24 | const struct gpio_keys_platform_data *pdata) |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-dma.c b/arch/arm/mach-imx/devices/platform-imx-dma.c index 7fa7e9c92468..ccdb5dc4ddbd 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-dma.c +++ b/arch/arm/mach-imx/devices/platform-imx-dma.c | |||
@@ -6,12 +6,29 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/devices-common.h> | 9 | #include "devices-common.h" |
10 | 10 | ||
11 | struct platform_device __init __maybe_unused *imx_add_imx_dma(void) | 11 | struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name, |
12 | resource_size_t iobase, int irq, int irq_err) | ||
12 | { | 13 | { |
14 | struct resource res[] = { | ||
15 | { | ||
16 | .start = iobase, | ||
17 | .end = iobase + SZ_4K - 1, | ||
18 | .flags = IORESOURCE_MEM, | ||
19 | }, { | ||
20 | .start = irq, | ||
21 | .end = irq, | ||
22 | .flags = IORESOURCE_IRQ, | ||
23 | }, { | ||
24 | .start = irq_err, | ||
25 | .end = irq_err, | ||
26 | .flags = IORESOURCE_IRQ, | ||
27 | }, | ||
28 | }; | ||
29 | |||
13 | return platform_device_register_resndata(&mxc_ahb_bus, | 30 | return platform_device_register_resndata(&mxc_ahb_bus, |
14 | "imx-dma", -1, NULL, 0, NULL, 0); | 31 | name, -1, res, ARRAY_SIZE(res), NULL, 0); |
15 | } | 32 | } |
16 | 33 | ||
17 | struct platform_device __init __maybe_unused *imx_add_imx_sdma(char *name, | 34 | struct platform_device __init __maybe_unused *imx_add_imx_sdma(char *name, |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-fb.c b/arch/arm/mach-imx/devices/platform-imx-fb.c index 2b0b5e0aa998..10b0ed39f07f 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-fb.c +++ b/arch/arm/mach-imx/devices/platform-imx-fb.c | |||
@@ -7,11 +7,13 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <mach/hardware.h> | ||
11 | #include <mach/devices-common.h> | ||
12 | 10 | ||
13 | #define imx_imx_fb_data_entry_single(soc, _size) \ | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
13 | |||
14 | #define imx_imx_fb_data_entry_single(soc, _devid, _size) \ | ||
14 | { \ | 15 | { \ |
16 | .devid = _devid, \ | ||
15 | .iobase = soc ## _LCDC_BASE_ADDR, \ | 17 | .iobase = soc ## _LCDC_BASE_ADDR, \ |
16 | .iosize = _size, \ | 18 | .iosize = _size, \ |
17 | .irq = soc ## _INT_LCDC, \ | 19 | .irq = soc ## _INT_LCDC, \ |
@@ -19,22 +21,22 @@ | |||
19 | 21 | ||
20 | #ifdef CONFIG_SOC_IMX1 | 22 | #ifdef CONFIG_SOC_IMX1 |
21 | const struct imx_imx_fb_data imx1_imx_fb_data __initconst = | 23 | const struct imx_imx_fb_data imx1_imx_fb_data __initconst = |
22 | imx_imx_fb_data_entry_single(MX1, SZ_4K); | 24 | imx_imx_fb_data_entry_single(MX1, "imx1-fb", SZ_4K); |
23 | #endif /* ifdef CONFIG_SOC_IMX1 */ | 25 | #endif /* ifdef CONFIG_SOC_IMX1 */ |
24 | 26 | ||
25 | #ifdef CONFIG_SOC_IMX21 | 27 | #ifdef CONFIG_SOC_IMX21 |
26 | const struct imx_imx_fb_data imx21_imx_fb_data __initconst = | 28 | const struct imx_imx_fb_data imx21_imx_fb_data __initconst = |
27 | imx_imx_fb_data_entry_single(MX21, SZ_4K); | 29 | imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K); |
28 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 30 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
29 | 31 | ||
30 | #ifdef CONFIG_SOC_IMX25 | 32 | #ifdef CONFIG_SOC_IMX25 |
31 | const struct imx_imx_fb_data imx25_imx_fb_data __initconst = | 33 | const struct imx_imx_fb_data imx25_imx_fb_data __initconst = |
32 | imx_imx_fb_data_entry_single(MX25, SZ_16K); | 34 | imx_imx_fb_data_entry_single(MX25, "imx21-fb", SZ_16K); |
33 | #endif /* ifdef CONFIG_SOC_IMX25 */ | 35 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
34 | 36 | ||
35 | #ifdef CONFIG_SOC_IMX27 | 37 | #ifdef CONFIG_SOC_IMX27 |
36 | const struct imx_imx_fb_data imx27_imx_fb_data __initconst = | 38 | const struct imx_imx_fb_data imx27_imx_fb_data __initconst = |
37 | imx_imx_fb_data_entry_single(MX27, SZ_4K); | 39 | imx_imx_fb_data_entry_single(MX27, "imx21-fb", SZ_4K); |
38 | #endif /* ifdef CONFIG_SOC_IMX27 */ | 40 | #endif /* ifdef CONFIG_SOC_IMX27 */ |
39 | 41 | ||
40 | struct platform_device *__init imx_add_imx_fb( | 42 | struct platform_device *__init imx_add_imx_fb( |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-i2c.c b/arch/arm/mach-imx/devices/platform-imx-i2c.c index 19ad580c0be3..8e30e5703cd2 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-i2c.c +++ b/arch/arm/mach-imx/devices/platform-imx-i2c.c | |||
@@ -6,34 +6,35 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_i2c_data_entry_single(soc, _id, _hwid, _size) \ | 12 | #define imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size) \ |
13 | { \ | 13 | { \ |
14 | .devid = _devid, \ | ||
14 | .id = _id, \ | 15 | .id = _id, \ |
15 | .iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \ | 16 | .iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \ |
16 | .iosize = _size, \ | 17 | .iosize = _size, \ |
17 | .irq = soc ## _INT_I2C ## _hwid, \ | 18 | .irq = soc ## _INT_I2C ## _hwid, \ |
18 | } | 19 | } |
19 | 20 | ||
20 | #define imx_imx_i2c_data_entry(soc, _id, _hwid, _size) \ | 21 | #define imx_imx_i2c_data_entry(soc, _devid, _id, _hwid, _size) \ |
21 | [_id] = imx_imx_i2c_data_entry_single(soc, _id, _hwid, _size) | 22 | [_id] = imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size) |
22 | 23 | ||
23 | #ifdef CONFIG_SOC_IMX1 | 24 | #ifdef CONFIG_SOC_IMX1 |
24 | const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst = | 25 | const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst = |
25 | imx_imx_i2c_data_entry_single(MX1, 0, , SZ_4K); | 26 | imx_imx_i2c_data_entry_single(MX1, "imx1-i2c", 0, , SZ_4K); |
26 | #endif /* ifdef CONFIG_SOC_IMX1 */ | 27 | #endif /* ifdef CONFIG_SOC_IMX1 */ |
27 | 28 | ||
28 | #ifdef CONFIG_SOC_IMX21 | 29 | #ifdef CONFIG_SOC_IMX21 |
29 | const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst = | 30 | const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst = |
30 | imx_imx_i2c_data_entry_single(MX21, 0, , SZ_4K); | 31 | imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K); |
31 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 32 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
32 | 33 | ||
33 | #ifdef CONFIG_SOC_IMX25 | 34 | #ifdef CONFIG_SOC_IMX25 |
34 | const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { | 35 | const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { |
35 | #define imx25_imx_i2c_data_entry(_id, _hwid) \ | 36 | #define imx25_imx_i2c_data_entry(_id, _hwid) \ |
36 | imx_imx_i2c_data_entry(MX25, _id, _hwid, SZ_16K) | 37 | imx_imx_i2c_data_entry(MX25, "imx21-i2c", _id, _hwid, SZ_16K) |
37 | imx25_imx_i2c_data_entry(0, 1), | 38 | imx25_imx_i2c_data_entry(0, 1), |
38 | imx25_imx_i2c_data_entry(1, 2), | 39 | imx25_imx_i2c_data_entry(1, 2), |
39 | imx25_imx_i2c_data_entry(2, 3), | 40 | imx25_imx_i2c_data_entry(2, 3), |
@@ -43,7 +44,7 @@ const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { | |||
43 | #ifdef CONFIG_SOC_IMX27 | 44 | #ifdef CONFIG_SOC_IMX27 |
44 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { | 45 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { |
45 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ | 46 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ |
46 | imx_imx_i2c_data_entry(MX27, _id, _hwid, SZ_4K) | 47 | imx_imx_i2c_data_entry(MX27, "imx21-i2c", _id, _hwid, SZ_4K) |
47 | imx27_imx_i2c_data_entry(0, 1), | 48 | imx27_imx_i2c_data_entry(0, 1), |
48 | imx27_imx_i2c_data_entry(1, 2), | 49 | imx27_imx_i2c_data_entry(1, 2), |
49 | }; | 50 | }; |
@@ -52,7 +53,7 @@ const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { | |||
52 | #ifdef CONFIG_SOC_IMX31 | 53 | #ifdef CONFIG_SOC_IMX31 |
53 | const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { | 54 | const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { |
54 | #define imx31_imx_i2c_data_entry(_id, _hwid) \ | 55 | #define imx31_imx_i2c_data_entry(_id, _hwid) \ |
55 | imx_imx_i2c_data_entry(MX31, _id, _hwid, SZ_4K) | 56 | imx_imx_i2c_data_entry(MX31, "imx21-i2c", _id, _hwid, SZ_4K) |
56 | imx31_imx_i2c_data_entry(0, 1), | 57 | imx31_imx_i2c_data_entry(0, 1), |
57 | imx31_imx_i2c_data_entry(1, 2), | 58 | imx31_imx_i2c_data_entry(1, 2), |
58 | imx31_imx_i2c_data_entry(2, 3), | 59 | imx31_imx_i2c_data_entry(2, 3), |
@@ -62,7 +63,7 @@ const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { | |||
62 | #ifdef CONFIG_SOC_IMX35 | 63 | #ifdef CONFIG_SOC_IMX35 |
63 | const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { | 64 | const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { |
64 | #define imx35_imx_i2c_data_entry(_id, _hwid) \ | 65 | #define imx35_imx_i2c_data_entry(_id, _hwid) \ |
65 | imx_imx_i2c_data_entry(MX35, _id, _hwid, SZ_4K) | 66 | imx_imx_i2c_data_entry(MX35, "imx21-i2c", _id, _hwid, SZ_4K) |
66 | imx35_imx_i2c_data_entry(0, 1), | 67 | imx35_imx_i2c_data_entry(0, 1), |
67 | imx35_imx_i2c_data_entry(1, 2), | 68 | imx35_imx_i2c_data_entry(1, 2), |
68 | imx35_imx_i2c_data_entry(2, 3), | 69 | imx35_imx_i2c_data_entry(2, 3), |
@@ -72,7 +73,7 @@ const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { | |||
72 | #ifdef CONFIG_SOC_IMX50 | 73 | #ifdef CONFIG_SOC_IMX50 |
73 | const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { | 74 | const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { |
74 | #define imx50_imx_i2c_data_entry(_id, _hwid) \ | 75 | #define imx50_imx_i2c_data_entry(_id, _hwid) \ |
75 | imx_imx_i2c_data_entry(MX50, _id, _hwid, SZ_4K) | 76 | imx_imx_i2c_data_entry(MX50, "imx21-i2c", _id, _hwid, SZ_4K) |
76 | imx50_imx_i2c_data_entry(0, 1), | 77 | imx50_imx_i2c_data_entry(0, 1), |
77 | imx50_imx_i2c_data_entry(1, 2), | 78 | imx50_imx_i2c_data_entry(1, 2), |
78 | imx50_imx_i2c_data_entry(2, 3), | 79 | imx50_imx_i2c_data_entry(2, 3), |
@@ -82,10 +83,11 @@ const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { | |||
82 | #ifdef CONFIG_SOC_IMX51 | 83 | #ifdef CONFIG_SOC_IMX51 |
83 | const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { | 84 | const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { |
84 | #define imx51_imx_i2c_data_entry(_id, _hwid) \ | 85 | #define imx51_imx_i2c_data_entry(_id, _hwid) \ |
85 | imx_imx_i2c_data_entry(MX51, _id, _hwid, SZ_4K) | 86 | imx_imx_i2c_data_entry(MX51, "imx21-i2c", _id, _hwid, SZ_4K) |
86 | imx51_imx_i2c_data_entry(0, 1), | 87 | imx51_imx_i2c_data_entry(0, 1), |
87 | imx51_imx_i2c_data_entry(1, 2), | 88 | imx51_imx_i2c_data_entry(1, 2), |
88 | { | 89 | { |
90 | .devid = "imx21-i2c", | ||
89 | .id = 2, | 91 | .id = 2, |
90 | .iobase = MX51_HSI2C_DMA_BASE_ADDR, | 92 | .iobase = MX51_HSI2C_DMA_BASE_ADDR, |
91 | .iosize = SZ_16K, | 93 | .iosize = SZ_16K, |
@@ -97,7 +99,7 @@ const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { | |||
97 | #ifdef CONFIG_SOC_IMX53 | 99 | #ifdef CONFIG_SOC_IMX53 |
98 | const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = { | 100 | const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = { |
99 | #define imx53_imx_i2c_data_entry(_id, _hwid) \ | 101 | #define imx53_imx_i2c_data_entry(_id, _hwid) \ |
100 | imx_imx_i2c_data_entry(MX53, _id, _hwid, SZ_4K) | 102 | imx_imx_i2c_data_entry(MX53, "imx21-i2c", _id, _hwid, SZ_4K) |
101 | imx53_imx_i2c_data_entry(0, 1), | 103 | imx53_imx_i2c_data_entry(0, 1), |
102 | imx53_imx_i2c_data_entry(1, 2), | 104 | imx53_imx_i2c_data_entry(1, 2), |
103 | imx53_imx_i2c_data_entry(2, 3), | 105 | imx53_imx_i2c_data_entry(2, 3), |
@@ -120,7 +122,7 @@ struct platform_device *__init imx_add_imx_i2c( | |||
120 | }, | 122 | }, |
121 | }; | 123 | }; |
122 | 124 | ||
123 | return imx_add_platform_device("imx-i2c", data->id, | 125 | return imx_add_platform_device(data->devid, data->id, |
124 | res, ARRAY_SIZE(res), | 126 | res, ARRAY_SIZE(res), |
125 | pdata, sizeof(*pdata)); | 127 | pdata, sizeof(*pdata)); |
126 | } | 128 | } |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-keypad.c b/arch/arm/mach-imx/devices/platform-imx-keypad.c index 479c3e9f771f..8f22a4c98a4c 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-keypad.c +++ b/arch/arm/mach-imx/devices/platform-imx-keypad.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_keypad_data_entry_single(soc, _size) \ | 12 | #define imx_imx_keypad_data_entry_single(soc, _size) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-ssi.c b/arch/arm/mach-imx/devices/platform-imx-ssi.c index 21c6f30e1017..bfcb8f3dfa8d 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-ssi.c +++ b/arch/arm/mach-imx/devices/platform-imx-ssi.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_ssi_data_entry(soc, _id, _hwid, _size) \ | 12 | #define imx_imx_ssi_data_entry(soc, _id, _hwid, _size) \ |
13 | [_id] = { \ | 13 | [_id] = { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imx-uart.c b/arch/arm/mach-imx/devices/platform-imx-uart.c index d390f00bd294..67bf866a2cb6 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-uart.c +++ b/arch/arm/mach-imx/devices/platform-imx-uart.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_uart_3irq_data_entry(soc, _id, _hwid, _size) \ | 12 | #define imx_imx_uart_3irq_data_entry(soc, _id, _hwid, _size) \ |
13 | [_id] = { \ | 13 | [_id] = { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c b/arch/arm/mach-imx/devices/platform-imx2-wdt.c index 5e07ef2bf1c4..ec75d6413686 100644 --- a/arch/arm/plat-mxc/devices/platform-imx2-wdt.c +++ b/arch/arm/mach-imx/devices/platform-imx2-wdt.c | |||
@@ -7,8 +7,9 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <asm/sizes.h> | 9 | #include <asm/sizes.h> |
10 | #include <mach/hardware.h> | 10 | |
11 | #include <mach/devices-common.h> | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
12 | 13 | ||
13 | #define imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size) \ | 14 | #define imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size) \ |
14 | { \ | 15 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imx21-hcd.c b/arch/arm/mach-imx/devices/platform-imx21-hcd.c index 5770a42f33bf..30c81616a9a1 100644 --- a/arch/arm/plat-mxc/devices/platform-imx21-hcd.c +++ b/arch/arm/mach-imx/devices/platform-imx21-hcd.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx21_hcd_data_entry_single(soc) \ | 12 | #define imx_imx21_hcd_data_entry_single(soc) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imx27-coda.c b/arch/arm/mach-imx/devices/platform-imx27-coda.c index 8b12aacdf396..25bebc29e546 100644 --- a/arch/arm/plat-mxc/devices/platform-imx27-coda.c +++ b/arch/arm/mach-imx/devices/platform-imx27-coda.c | |||
@@ -7,8 +7,8 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <mach/hardware.h> | 10 | #include "../hardware.h" |
11 | #include <mach/devices-common.h> | 11 | #include "devices-common.h" |
12 | 12 | ||
13 | #ifdef CONFIG_SOC_IMX27 | 13 | #ifdef CONFIG_SOC_IMX27 |
14 | const struct imx_imx27_coda_data imx27_coda_data __initconst = { | 14 | const struct imx_imx27_coda_data imx27_coda_data __initconst = { |
diff --git a/arch/arm/plat-mxc/devices/platform-imx_udc.c b/arch/arm/mach-imx/devices/platform-imx_udc.c index 6fd675dfce14..5ced7e4e2c71 100644 --- a/arch/arm/plat-mxc/devices/platform-imx_udc.c +++ b/arch/arm/mach-imx/devices/platform-imx_udc.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_udc_data_entry_single(soc, _size) \ | 12 | #define imx_imx_udc_data_entry_single(soc, _size) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-imxdi_rtc.c b/arch/arm/mach-imx/devices/platform-imxdi_rtc.c index 805336fdc252..5bb490d556ea 100644 --- a/arch/arm/plat-mxc/devices/platform-imxdi_rtc.c +++ b/arch/arm/mach-imx/devices/platform-imxdi_rtc.c | |||
@@ -7,8 +7,9 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <asm/sizes.h> | 9 | #include <asm/sizes.h> |
10 | #include <mach/hardware.h> | 10 | |
11 | #include <mach/devices-common.h> | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
12 | 13 | ||
13 | #define imx_imxdi_rtc_data_entry_single(soc) \ | 14 | #define imx_imxdi_rtc_data_entry_single(soc) \ |
14 | { \ | 15 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-ipu-core.c b/arch/arm/mach-imx/devices/platform-ipu-core.c index d1e33cc6f12e..fc4dd7cedc11 100644 --- a/arch/arm/plat-mxc/devices/platform-ipu-core.c +++ b/arch/arm/mach-imx/devices/platform-ipu-core.c | |||
@@ -7,8 +7,9 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <mach/hardware.h> | 10 | |
11 | #include <mach/devices-common.h> | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
12 | 13 | ||
13 | #define imx_ipu_core_entry_single(soc) \ | 14 | #define imx_ipu_core_entry_single(soc) \ |
14 | { \ | 15 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-mx1-camera.c b/arch/arm/mach-imx/devices/platform-mx1-camera.c index edcc581a30a9..2c6788131080 100644 --- a/arch/arm/plat-mxc/devices/platform-mx1-camera.c +++ b/arch/arm/mach-imx/devices/platform-mx1-camera.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_mx1_camera_data_entry_single(soc, _size) \ | 12 | #define imx_mx1_camera_data_entry_single(soc, _size) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-mx2-camera.c b/arch/arm/mach-imx/devices/platform-mx2-camera.c index 11eace953a09..f4910160346b 100644 --- a/arch/arm/plat-mxc/devices/platform-mx2-camera.c +++ b/arch/arm/mach-imx/devices/platform-mx2-camera.c | |||
@@ -6,17 +6,19 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_mx2_camera_data_entry_single(soc) \ | 12 | #define imx_mx2_camera_data_entry_single(soc, _devid) \ |
13 | { \ | 13 | { \ |
14 | .devid = _devid, \ | ||
14 | .iobasecsi = soc ## _CSI_BASE_ADDR, \ | 15 | .iobasecsi = soc ## _CSI_BASE_ADDR, \ |
15 | .iosizecsi = SZ_4K, \ | 16 | .iosizecsi = SZ_4K, \ |
16 | .irqcsi = soc ## _INT_CSI, \ | 17 | .irqcsi = soc ## _INT_CSI, \ |
17 | } | 18 | } |
18 | #define imx_mx2_camera_data_entry_single_emma(soc) \ | 19 | #define imx_mx2_camera_data_entry_single_emma(soc, _devid) \ |
19 | { \ | 20 | { \ |
21 | .devid = _devid, \ | ||
20 | .iobasecsi = soc ## _CSI_BASE_ADDR, \ | 22 | .iobasecsi = soc ## _CSI_BASE_ADDR, \ |
21 | .iosizecsi = SZ_32, \ | 23 | .iosizecsi = SZ_32, \ |
22 | .irqcsi = soc ## _INT_CSI, \ | 24 | .irqcsi = soc ## _INT_CSI, \ |
@@ -27,12 +29,12 @@ | |||
27 | 29 | ||
28 | #ifdef CONFIG_SOC_IMX25 | 30 | #ifdef CONFIG_SOC_IMX25 |
29 | const struct imx_mx2_camera_data imx25_mx2_camera_data __initconst = | 31 | const struct imx_mx2_camera_data imx25_mx2_camera_data __initconst = |
30 | imx_mx2_camera_data_entry_single(MX25); | 32 | imx_mx2_camera_data_entry_single(MX25, "imx25-camera"); |
31 | #endif /* ifdef CONFIG_SOC_IMX25 */ | 33 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
32 | 34 | ||
33 | #ifdef CONFIG_SOC_IMX27 | 35 | #ifdef CONFIG_SOC_IMX27 |
34 | const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst = | 36 | const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst = |
35 | imx_mx2_camera_data_entry_single_emma(MX27); | 37 | imx_mx2_camera_data_entry_single_emma(MX27, "imx27-camera"); |
36 | #endif /* ifdef CONFIG_SOC_IMX27 */ | 38 | #endif /* ifdef CONFIG_SOC_IMX27 */ |
37 | 39 | ||
38 | struct platform_device *__init imx_add_mx2_camera( | 40 | struct platform_device *__init imx_add_mx2_camera( |
@@ -58,7 +60,7 @@ struct platform_device *__init imx_add_mx2_camera( | |||
58 | .flags = IORESOURCE_IRQ, | 60 | .flags = IORESOURCE_IRQ, |
59 | }, | 61 | }, |
60 | }; | 62 | }; |
61 | return imx_add_platform_device_dmamask("mx2-camera", 0, | 63 | return imx_add_platform_device_dmamask(data->devid, 0, |
62 | res, data->iobaseemmaprp ? 4 : 2, | 64 | res, data->iobaseemmaprp ? 4 : 2, |
63 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | 65 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); |
64 | } | 66 | } |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc-ehci.c b/arch/arm/mach-imx/devices/platform-mxc-ehci.c index 35851d889aca..5d4bbbfde641 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc-ehci.c +++ b/arch/arm/mach-imx/devices/platform-mxc-ehci.c | |||
@@ -7,8 +7,9 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <mach/hardware.h> | 10 | |
11 | #include <mach/devices-common.h> | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
12 | 13 | ||
13 | #define imx_mxc_ehci_data_entry_single(soc, _id, hs) \ | 14 | #define imx_mxc_ehci_data_entry_single(soc, _id, hs) \ |
14 | { \ | 15 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc-mmc.c b/arch/arm/mach-imx/devices/platform-mxc-mmc.c index e7b920b58675..b8203c760c8f 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc-mmc.c +++ b/arch/arm/mach-imx/devices/platform-mxc-mmc.c | |||
@@ -7,24 +7,26 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <mach/hardware.h> | ||
11 | #include <mach/devices-common.h> | ||
12 | 10 | ||
13 | #define imx_mxc_mmc_data_entry_single(soc, _id, _hwid, _size) \ | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
13 | |||
14 | #define imx_mxc_mmc_data_entry_single(soc, _devid, _id, _hwid, _size) \ | ||
14 | { \ | 15 | { \ |
16 | .devid = _devid, \ | ||
15 | .id = _id, \ | 17 | .id = _id, \ |
16 | .iobase = soc ## _SDHC ## _hwid ## _BASE_ADDR, \ | 18 | .iobase = soc ## _SDHC ## _hwid ## _BASE_ADDR, \ |
17 | .iosize = _size, \ | 19 | .iosize = _size, \ |
18 | .irq = soc ## _INT_SDHC ## _hwid, \ | 20 | .irq = soc ## _INT_SDHC ## _hwid, \ |
19 | .dmareq = soc ## _DMA_REQ_SDHC ## _hwid, \ | 21 | .dmareq = soc ## _DMA_REQ_SDHC ## _hwid, \ |
20 | } | 22 | } |
21 | #define imx_mxc_mmc_data_entry(soc, _id, _hwid, _size) \ | 23 | #define imx_mxc_mmc_data_entry(soc, _devid, _id, _hwid, _size) \ |
22 | [_id] = imx_mxc_mmc_data_entry_single(soc, _id, _hwid, _size) | 24 | [_id] = imx_mxc_mmc_data_entry_single(soc, _devid, _id, _hwid, _size) |
23 | 25 | ||
24 | #ifdef CONFIG_SOC_IMX21 | 26 | #ifdef CONFIG_SOC_IMX21 |
25 | const struct imx_mxc_mmc_data imx21_mxc_mmc_data[] __initconst = { | 27 | const struct imx_mxc_mmc_data imx21_mxc_mmc_data[] __initconst = { |
26 | #define imx21_mxc_mmc_data_entry(_id, _hwid) \ | 28 | #define imx21_mxc_mmc_data_entry(_id, _hwid) \ |
27 | imx_mxc_mmc_data_entry(MX21, _id, _hwid, SZ_4K) | 29 | imx_mxc_mmc_data_entry(MX21, "imx21-mmc", _id, _hwid, SZ_4K) |
28 | imx21_mxc_mmc_data_entry(0, 1), | 30 | imx21_mxc_mmc_data_entry(0, 1), |
29 | imx21_mxc_mmc_data_entry(1, 2), | 31 | imx21_mxc_mmc_data_entry(1, 2), |
30 | }; | 32 | }; |
@@ -33,7 +35,7 @@ const struct imx_mxc_mmc_data imx21_mxc_mmc_data[] __initconst = { | |||
33 | #ifdef CONFIG_SOC_IMX27 | 35 | #ifdef CONFIG_SOC_IMX27 |
34 | const struct imx_mxc_mmc_data imx27_mxc_mmc_data[] __initconst = { | 36 | const struct imx_mxc_mmc_data imx27_mxc_mmc_data[] __initconst = { |
35 | #define imx27_mxc_mmc_data_entry(_id, _hwid) \ | 37 | #define imx27_mxc_mmc_data_entry(_id, _hwid) \ |
36 | imx_mxc_mmc_data_entry(MX27, _id, _hwid, SZ_4K) | 38 | imx_mxc_mmc_data_entry(MX27, "imx21-mmc", _id, _hwid, SZ_4K) |
37 | imx27_mxc_mmc_data_entry(0, 1), | 39 | imx27_mxc_mmc_data_entry(0, 1), |
38 | imx27_mxc_mmc_data_entry(1, 2), | 40 | imx27_mxc_mmc_data_entry(1, 2), |
39 | }; | 41 | }; |
@@ -42,7 +44,7 @@ const struct imx_mxc_mmc_data imx27_mxc_mmc_data[] __initconst = { | |||
42 | #ifdef CONFIG_SOC_IMX31 | 44 | #ifdef CONFIG_SOC_IMX31 |
43 | const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst = { | 45 | const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst = { |
44 | #define imx31_mxc_mmc_data_entry(_id, _hwid) \ | 46 | #define imx31_mxc_mmc_data_entry(_id, _hwid) \ |
45 | imx_mxc_mmc_data_entry(MX31, _id, _hwid, SZ_16K) | 47 | imx_mxc_mmc_data_entry(MX31, "imx31-mmc", _id, _hwid, SZ_16K) |
46 | imx31_mxc_mmc_data_entry(0, 1), | 48 | imx31_mxc_mmc_data_entry(0, 1), |
47 | imx31_mxc_mmc_data_entry(1, 2), | 49 | imx31_mxc_mmc_data_entry(1, 2), |
48 | }; | 50 | }; |
@@ -67,7 +69,7 @@ struct platform_device *__init imx_add_mxc_mmc( | |||
67 | .flags = IORESOURCE_DMA, | 69 | .flags = IORESOURCE_DMA, |
68 | }, | 70 | }, |
69 | }; | 71 | }; |
70 | return imx_add_platform_device_dmamask("mxc-mmc", data->id, | 72 | return imx_add_platform_device_dmamask(data->devid, data->id, |
71 | res, ARRAY_SIZE(res), | 73 | res, ARRAY_SIZE(res), |
72 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | 74 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); |
73 | } | 75 | } |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_nand.c b/arch/arm/mach-imx/devices/platform-mxc_nand.c index 95b75cc70515..7af1c53e42b5 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_nand.c +++ b/arch/arm/mach-imx/devices/platform-mxc_nand.c | |||
@@ -7,18 +7,21 @@ | |||
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <asm/sizes.h> | 9 | #include <asm/sizes.h> |
10 | #include <mach/hardware.h> | ||
11 | #include <mach/devices-common.h> | ||
12 | 10 | ||
13 | #define imx_mxc_nand_data_entry_single(soc, _size) \ | 11 | #include "../hardware.h" |
12 | #include "devices-common.h" | ||
13 | |||
14 | #define imx_mxc_nand_data_entry_single(soc, _devid, _size) \ | ||
14 | { \ | 15 | { \ |
16 | .devid = _devid, \ | ||
15 | .iobase = soc ## _NFC_BASE_ADDR, \ | 17 | .iobase = soc ## _NFC_BASE_ADDR, \ |
16 | .iosize = _size, \ | 18 | .iosize = _size, \ |
17 | .irq = soc ## _INT_NFC \ | 19 | .irq = soc ## _INT_NFC \ |
18 | } | 20 | } |
19 | 21 | ||
20 | #define imx_mxc_nandv3_data_entry_single(soc, _size) \ | 22 | #define imx_mxc_nandv3_data_entry_single(soc, _devid, _size) \ |
21 | { \ | 23 | { \ |
24 | .devid = _devid, \ | ||
22 | .id = -1, \ | 25 | .id = -1, \ |
23 | .iobase = soc ## _NFC_BASE_ADDR, \ | 26 | .iobase = soc ## _NFC_BASE_ADDR, \ |
24 | .iosize = _size, \ | 27 | .iosize = _size, \ |
@@ -28,32 +31,32 @@ | |||
28 | 31 | ||
29 | #ifdef CONFIG_SOC_IMX21 | 32 | #ifdef CONFIG_SOC_IMX21 |
30 | const struct imx_mxc_nand_data imx21_mxc_nand_data __initconst = | 33 | const struct imx_mxc_nand_data imx21_mxc_nand_data __initconst = |
31 | imx_mxc_nand_data_entry_single(MX21, SZ_4K); | 34 | imx_mxc_nand_data_entry_single(MX21, "imx21-nand", SZ_4K); |
32 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 35 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
33 | 36 | ||
34 | #ifdef CONFIG_SOC_IMX25 | 37 | #ifdef CONFIG_SOC_IMX25 |
35 | const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst = | 38 | const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst = |
36 | imx_mxc_nand_data_entry_single(MX25, SZ_8K); | 39 | imx_mxc_nand_data_entry_single(MX25, "imx25-nand", SZ_8K); |
37 | #endif /* ifdef CONFIG_SOC_IMX25 */ | 40 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
38 | 41 | ||
39 | #ifdef CONFIG_SOC_IMX27 | 42 | #ifdef CONFIG_SOC_IMX27 |
40 | const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst = | 43 | const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst = |
41 | imx_mxc_nand_data_entry_single(MX27, SZ_4K); | 44 | imx_mxc_nand_data_entry_single(MX27, "imx27-nand", SZ_4K); |
42 | #endif /* ifdef CONFIG_SOC_IMX27 */ | 45 | #endif /* ifdef CONFIG_SOC_IMX27 */ |
43 | 46 | ||
44 | #ifdef CONFIG_SOC_IMX31 | 47 | #ifdef CONFIG_SOC_IMX31 |
45 | const struct imx_mxc_nand_data imx31_mxc_nand_data __initconst = | 48 | const struct imx_mxc_nand_data imx31_mxc_nand_data __initconst = |
46 | imx_mxc_nand_data_entry_single(MX31, SZ_4K); | 49 | imx_mxc_nand_data_entry_single(MX31, "imx27-nand", SZ_4K); |
47 | #endif | 50 | #endif |
48 | 51 | ||
49 | #ifdef CONFIG_SOC_IMX35 | 52 | #ifdef CONFIG_SOC_IMX35 |
50 | const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst = | 53 | const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst = |
51 | imx_mxc_nand_data_entry_single(MX35, SZ_8K); | 54 | imx_mxc_nand_data_entry_single(MX35, "imx25-nand", SZ_8K); |
52 | #endif | 55 | #endif |
53 | 56 | ||
54 | #ifdef CONFIG_SOC_IMX51 | 57 | #ifdef CONFIG_SOC_IMX51 |
55 | const struct imx_mxc_nand_data imx51_mxc_nand_data __initconst = | 58 | const struct imx_mxc_nand_data imx51_mxc_nand_data __initconst = |
56 | imx_mxc_nandv3_data_entry_single(MX51, SZ_16K); | 59 | imx_mxc_nandv3_data_entry_single(MX51, "imx51-nand", SZ_16K); |
57 | #endif | 60 | #endif |
58 | 61 | ||
59 | struct platform_device *__init imx_add_mxc_nand( | 62 | struct platform_device *__init imx_add_mxc_nand( |
@@ -76,7 +79,7 @@ struct platform_device *__init imx_add_mxc_nand( | |||
76 | .flags = IORESOURCE_MEM, | 79 | .flags = IORESOURCE_MEM, |
77 | }, | 80 | }, |
78 | }; | 81 | }; |
79 | return imx_add_platform_device("mxc_nand", data->id, | 82 | return imx_add_platform_device(data->devid, data->id, |
80 | res, ARRAY_SIZE(res) - !data->axibase, | 83 | res, ARRAY_SIZE(res) - !data->axibase, |
81 | pdata, sizeof(*pdata)); | 84 | pdata, sizeof(*pdata)); |
82 | } | 85 | } |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_pwm.c b/arch/arm/mach-imx/devices/platform-mxc_pwm.c index b0c4ae298111..dcd289777687 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_pwm.c +++ b/arch/arm/mach-imx/devices/platform-mxc_pwm.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_mxc_pwm_data_entry_single(soc, _id, _hwid, _size) \ | 12 | #define imx_mxc_pwm_data_entry_single(soc, _id, _hwid, _size) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_rnga.c b/arch/arm/mach-imx/devices/platform-mxc_rnga.c index b4b7612b6e17..c58404badb59 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_rnga.c +++ b/arch/arm/mach-imx/devices/platform-mxc_rnga.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | struct imx_mxc_rnga_data { | 12 | struct imx_mxc_rnga_data { |
13 | resource_size_t iobase; | 13 | resource_size_t iobase; |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_rtc.c b/arch/arm/mach-imx/devices/platform-mxc_rtc.c index a5c9ad5721c2..c7fffaadf847 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_rtc.c +++ b/arch/arm/mach-imx/devices/platform-mxc_rtc.c | |||
@@ -6,23 +6,24 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_mxc_rtc_data_entry_single(soc) \ | 12 | #define imx_mxc_rtc_data_entry_single(soc, _devid) \ |
13 | { \ | 13 | { \ |
14 | .devid = _devid, \ | ||
14 | .iobase = soc ## _RTC_BASE_ADDR, \ | 15 | .iobase = soc ## _RTC_BASE_ADDR, \ |
15 | .irq = soc ## _INT_RTC, \ | 16 | .irq = soc ## _INT_RTC, \ |
16 | } | 17 | } |
17 | 18 | ||
18 | #ifdef CONFIG_SOC_IMX31 | 19 | #ifdef CONFIG_SOC_IMX31 |
19 | const struct imx_mxc_rtc_data imx31_mxc_rtc_data __initconst = | 20 | const struct imx_mxc_rtc_data imx31_mxc_rtc_data __initconst = |
20 | imx_mxc_rtc_data_entry_single(MX31); | 21 | imx_mxc_rtc_data_entry_single(MX31, "imx21-rtc"); |
21 | #endif /* ifdef CONFIG_SOC_IMX31 */ | 22 | #endif /* ifdef CONFIG_SOC_IMX31 */ |
22 | 23 | ||
23 | #ifdef CONFIG_SOC_IMX35 | 24 | #ifdef CONFIG_SOC_IMX35 |
24 | const struct imx_mxc_rtc_data imx35_mxc_rtc_data __initconst = | 25 | const struct imx_mxc_rtc_data imx35_mxc_rtc_data __initconst = |
25 | imx_mxc_rtc_data_entry_single(MX35); | 26 | imx_mxc_rtc_data_entry_single(MX35, "imx21-rtc"); |
26 | #endif /* ifdef CONFIG_SOC_IMX35 */ | 27 | #endif /* ifdef CONFIG_SOC_IMX35 */ |
27 | 28 | ||
28 | struct platform_device *__init imx_add_mxc_rtc( | 29 | struct platform_device *__init imx_add_mxc_rtc( |
@@ -40,6 +41,6 @@ struct platform_device *__init imx_add_mxc_rtc( | |||
40 | }, | 41 | }, |
41 | }; | 42 | }; |
42 | 43 | ||
43 | return imx_add_platform_device("mxc_rtc", -1, | 44 | return imx_add_platform_device(data->devid, -1, |
44 | res, ARRAY_SIZE(res), NULL, 0); | 45 | res, ARRAY_SIZE(res), NULL, 0); |
45 | } | 46 | } |
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_w1.c b/arch/arm/mach-imx/devices/platform-mxc_w1.c index 96fa5ea91fe8..88c18b720d63 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_w1.c +++ b/arch/arm/mach-imx/devices/platform-mxc_w1.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_mxc_w1_data_entry_single(soc) \ | 12 | #define imx_mxc_w1_data_entry_single(soc) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-pata_imx.c b/arch/arm/mach-imx/devices/platform-pata_imx.c index 70e2f2a44714..e4ec11c8ce55 100644 --- a/arch/arm/plat-mxc/devices/platform-pata_imx.c +++ b/arch/arm/mach-imx/devices/platform-pata_imx.c | |||
@@ -3,8 +3,8 @@ | |||
3 | * the terms of the GNU General Public License version 2 as published by the | 3 | * the terms of the GNU General Public License version 2 as published by the |
4 | * Free Software Foundation. | 4 | * Free Software Foundation. |
5 | */ | 5 | */ |
6 | #include <mach/hardware.h> | 6 | #include "../hardware.h" |
7 | #include <mach/devices-common.h> | 7 | #include "devices-common.h" |
8 | 8 | ||
9 | #define imx_pata_imx_data_entry_single(soc, _size) \ | 9 | #define imx_pata_imx_data_entry_single(soc, _size) \ |
10 | { \ | 10 | { \ |
diff --git a/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c index 3793e475cd95..e66a4e316311 100644 --- a/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c +++ b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c | |||
@@ -6,10 +6,11 @@ | |||
6 | * Free Software Foundation. | 6 | * Free Software Foundation. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <mach/hardware.h> | ||
10 | #include <mach/devices-common.h> | ||
11 | #include <linux/platform_data/mmc-esdhc-imx.h> | 9 | #include <linux/platform_data/mmc-esdhc-imx.h> |
12 | 10 | ||
11 | #include "../hardware.h" | ||
12 | #include "devices-common.h" | ||
13 | |||
13 | #define imx_sdhci_esdhc_imx_data_entry_single(soc, _devid, _id, hwid) \ | 14 | #define imx_sdhci_esdhc_imx_data_entry_single(soc, _devid, _id, hwid) \ |
14 | { \ | 15 | { \ |
15 | .devid = _devid, \ | 16 | .devid = _devid, \ |
diff --git a/arch/arm/plat-mxc/devices/platform-spi_imx.c b/arch/arm/mach-imx/devices/platform-spi_imx.c index 9c50c14c8f92..8880bcb11e05 100644 --- a/arch/arm/plat-mxc/devices/platform-spi_imx.c +++ b/arch/arm/mach-imx/devices/platform-spi_imx.c | |||
@@ -6,8 +6,8 @@ | |||
6 | * the terms of the GNU General Public License version 2 as published by the | 6 | * the terms of the GNU General Public License version 2 as published by the |
7 | * Free Software Foundation. | 7 | * Free Software Foundation. |
8 | */ | 8 | */ |
9 | #include <mach/hardware.h> | 9 | #include "../hardware.h" |
10 | #include <mach/devices-common.h> | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_spi_imx_data_entry_single(soc, type, _devid, _id, hwid, _size) \ | 12 | #define imx_spi_imx_data_entry_single(soc, type, _devid, _id, hwid, _size) \ |
13 | { \ | 13 | { \ |
diff --git a/arch/arm/mach-imx/ehci-imx25.c b/arch/arm/mach-imx/ehci-imx25.c index 576af7446952..134c190e3003 100644 --- a/arch/arm/mach-imx/ehci-imx25.c +++ b/arch/arm/mach-imx/ehci-imx25.c | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
19 | #include <mach/hardware.h> | ||
20 | #include <linux/platform_data/usb-ehci-mxc.h> | 18 | #include <linux/platform_data/usb-ehci-mxc.h> |
21 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
22 | #define USBCTRL_OTGBASE_OFFSET 0x600 | 22 | #define USBCTRL_OTGBASE_OFFSET 0x600 |
23 | 23 | ||
24 | #define MX25_OTG_SIC_SHIFT 29 | 24 | #define MX25_OTG_SIC_SHIFT 29 |
diff --git a/arch/arm/mach-imx/ehci-imx27.c b/arch/arm/mach-imx/ehci-imx27.c index cd6e1f81508d..448d9115539d 100644 --- a/arch/arm/mach-imx/ehci-imx27.c +++ b/arch/arm/mach-imx/ehci-imx27.c | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
19 | #include <mach/hardware.h> | ||
20 | #include <linux/platform_data/usb-ehci-mxc.h> | 18 | #include <linux/platform_data/usb-ehci-mxc.h> |
21 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
22 | #define USBCTRL_OTGBASE_OFFSET 0x600 | 22 | #define USBCTRL_OTGBASE_OFFSET 0x600 |
23 | 23 | ||
24 | #define MX27_OTG_SIC_SHIFT 29 | 24 | #define MX27_OTG_SIC_SHIFT 29 |
diff --git a/arch/arm/mach-imx/ehci-imx31.c b/arch/arm/mach-imx/ehci-imx31.c index 9a880c78af34..05de4e1e39d7 100644 --- a/arch/arm/mach-imx/ehci-imx31.c +++ b/arch/arm/mach-imx/ehci-imx31.c | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
19 | #include <mach/hardware.h> | ||
20 | #include <linux/platform_data/usb-ehci-mxc.h> | 18 | #include <linux/platform_data/usb-ehci-mxc.h> |
21 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
22 | #define USBCTRL_OTGBASE_OFFSET 0x600 | 22 | #define USBCTRL_OTGBASE_OFFSET 0x600 |
23 | 23 | ||
24 | #define MX31_OTG_SIC_SHIFT 29 | 24 | #define MX31_OTG_SIC_SHIFT 29 |
diff --git a/arch/arm/mach-imx/ehci-imx35.c b/arch/arm/mach-imx/ehci-imx35.c index 293397852e4e..554e7cccff53 100644 --- a/arch/arm/mach-imx/ehci-imx35.c +++ b/arch/arm/mach-imx/ehci-imx35.c | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
19 | #include <mach/hardware.h> | ||
20 | #include <linux/platform_data/usb-ehci-mxc.h> | 18 | #include <linux/platform_data/usb-ehci-mxc.h> |
21 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
22 | #define USBCTRL_OTGBASE_OFFSET 0x600 | 22 | #define USBCTRL_OTGBASE_OFFSET 0x600 |
23 | 23 | ||
24 | #define MX35_OTG_SIC_SHIFT 29 | 24 | #define MX35_OTG_SIC_SHIFT 29 |
diff --git a/arch/arm/mach-imx/ehci-imx5.c b/arch/arm/mach-imx/ehci-imx5.c index cf8d00e5cce1..e49710b10c68 100644 --- a/arch/arm/mach-imx/ehci-imx5.c +++ b/arch/arm/mach-imx/ehci-imx5.c | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
19 | #include <mach/hardware.h> | ||
20 | #include <linux/platform_data/usb-ehci-mxc.h> | 18 | #include <linux/platform_data/usb-ehci-mxc.h> |
21 | 19 | ||
20 | #include "hardware.h" | ||
21 | |||
22 | #define MXC_OTG_OFFSET 0 | 22 | #define MXC_OTG_OFFSET 0 |
23 | #define MXC_H1_OFFSET 0x200 | 23 | #define MXC_H1_OFFSET 0x200 |
24 | #define MXC_H2_OFFSET 0x400 | 24 | #define MXC_H2_OFFSET 0x400 |
diff --git a/arch/arm/plat-mxc/epit.c b/arch/arm/mach-imx/epit.c index 88726f4dbbfa..04a5961beeac 100644 --- a/arch/arm/plat-mxc/epit.c +++ b/arch/arm/mach-imx/epit.c | |||
@@ -51,10 +51,10 @@ | |||
51 | #include <linux/clockchips.h> | 51 | #include <linux/clockchips.h> |
52 | #include <linux/clk.h> | 52 | #include <linux/clk.h> |
53 | #include <linux/err.h> | 53 | #include <linux/err.h> |
54 | |||
55 | #include <mach/hardware.h> | ||
56 | #include <asm/mach/time.h> | 54 | #include <asm/mach/time.h> |
57 | #include <mach/common.h> | 55 | |
56 | #include "common.h" | ||
57 | #include "hardware.h" | ||
58 | 58 | ||
59 | static struct clock_event_device clockevent_epit; | 59 | static struct clock_event_device clockevent_epit; |
60 | static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED; | 60 | static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED; |
diff --git a/arch/arm/plat-mxc/include/mach/eukrea-baseboards.h b/arch/arm/mach-imx/eukrea-baseboards.h index a21d3313f994..a21d3313f994 100644 --- a/arch/arm/plat-mxc/include/mach/eukrea-baseboards.h +++ b/arch/arm/mach-imx/eukrea-baseboards.h | |||
diff --git a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c index 98aef571b9f8..b4c70028d359 100644 --- a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c | |||
@@ -29,11 +29,10 @@ | |||
29 | 29 | ||
30 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
31 | 31 | ||
32 | #include <mach/common.h> | 32 | #include "common.h" |
33 | #include <mach/iomux-mx27.h> | ||
34 | #include <mach/hardware.h> | ||
35 | |||
36 | #include "devices-imx27.h" | 33 | #include "devices-imx27.h" |
34 | #include "hardware.h" | ||
35 | #include "iomux-mx27.h" | ||
37 | 36 | ||
38 | static const int eukrea_mbimx27_pins[] __initconst = { | 37 | static const int eukrea_mbimx27_pins[] __initconst = { |
39 | /* UART2 */ | 38 | /* UART2 */ |
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c index 0b84666792f0..e2b70f4c1a2c 100644 --- a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c | |||
@@ -26,14 +26,14 @@ | |||
26 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
27 | #include <video/platform_lcd.h> | 27 | #include <video/platform_lcd.h> |
28 | 28 | ||
29 | #include <mach/hardware.h> | ||
30 | #include <mach/iomux-mx25.h> | ||
31 | #include <mach/common.h> | ||
32 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
34 | #include <mach/mx25.h> | ||
35 | 31 | ||
32 | #include "common.h" | ||
36 | #include "devices-imx25.h" | 33 | #include "devices-imx25.h" |
34 | #include "hardware.h" | ||
35 | #include "iomux-mx25.h" | ||
36 | #include "mx25.h" | ||
37 | 37 | ||
38 | static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = { | 38 | static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = { |
39 | /* LCD */ | 39 | /* LCD */ |
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c index c6532a007d46..5a2d5ef12dd5 100644 --- a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c | |||
@@ -36,11 +36,10 @@ | |||
36 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
37 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
38 | 38 | ||
39 | #include <mach/hardware.h> | 39 | #include "common.h" |
40 | #include <mach/common.h> | ||
41 | #include <mach/iomux-mx35.h> | ||
42 | |||
43 | #include "devices-imx35.h" | 40 | #include "devices-imx35.h" |
41 | #include "hardware.h" | ||
42 | #include "iomux-mx35.h" | ||
44 | 43 | ||
45 | static const struct fb_videomode fb_modedb[] = { | 44 | static const struct fb_videomode fb_modedb[] = { |
46 | { | 45 | { |
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c index 8b0de30d7a3f..9be6c1e69d68 100644 --- a/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c | |||
@@ -36,11 +36,10 @@ | |||
36 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
37 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
38 | 38 | ||
39 | #include <mach/hardware.h> | 39 | #include "common.h" |
40 | #include <mach/common.h> | ||
41 | #include <mach/iomux-mx51.h> | ||
42 | |||
43 | #include "devices-imx51.h" | 40 | #include "devices-imx51.h" |
41 | #include "hardware.h" | ||
42 | #include "iomux-mx51.h" | ||
44 | 43 | ||
45 | static iomux_v3_cfg_t eukrea_mbimxsd51_pads[] = { | 44 | static iomux_v3_cfg_t eukrea_mbimxsd51_pads[] = { |
46 | /* LED */ | 45 | /* LED */ |
diff --git a/arch/arm/plat-mxc/include/mach/hardware.h b/arch/arm/mach-imx/hardware.h index ebf10654bb42..3ce7fa3bd43f 100644 --- a/arch/arm/plat-mxc/include/mach/hardware.h +++ b/arch/arm/mach-imx/hardware.h | |||
@@ -105,20 +105,20 @@ | |||
105 | 105 | ||
106 | #define IMX_IO_ADDRESS(x) IOMEM(IMX_IO_P2V(x)) | 106 | #define IMX_IO_ADDRESS(x) IOMEM(IMX_IO_P2V(x)) |
107 | 107 | ||
108 | #include <mach/mxc.h> | 108 | #include "mxc.h" |
109 | 109 | ||
110 | #include <mach/mx6q.h> | 110 | #include "mx6q.h" |
111 | #include <mach/mx50.h> | 111 | #include "mx50.h" |
112 | #include <mach/mx51.h> | 112 | #include "mx51.h" |
113 | #include <mach/mx53.h> | 113 | #include "mx53.h" |
114 | #include <mach/mx3x.h> | 114 | #include "mx3x.h" |
115 | #include <mach/mx31.h> | 115 | #include "mx31.h" |
116 | #include <mach/mx35.h> | 116 | #include "mx35.h" |
117 | #include <mach/mx2x.h> | 117 | #include "mx2x.h" |
118 | #include <mach/mx21.h> | 118 | #include "mx21.h" |
119 | #include <mach/mx27.h> | 119 | #include "mx27.h" |
120 | #include <mach/mx1.h> | 120 | #include "mx1.h" |
121 | #include <mach/mx25.h> | 121 | #include "mx25.h" |
122 | 122 | ||
123 | #define imx_map_entry(soc, name, _type) { \ | 123 | #define imx_map_entry(soc, name, _type) { \ |
124 | .virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \ | 124 | .virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \ |
diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c index b07b778dc9a8..3dec962b0770 100644 --- a/arch/arm/mach-imx/hotplug.c +++ b/arch/arm/mach-imx/hotplug.c | |||
@@ -13,7 +13,8 @@ | |||
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
15 | #include <asm/cp15.h> | 15 | #include <asm/cp15.h> |
16 | #include <mach/common.h> | 16 | |
17 | #include "common.h" | ||
17 | 18 | ||
18 | static inline void cpu_enter_lowpower(void) | 19 | static inline void cpu_enter_lowpower(void) |
19 | { | 20 | { |
diff --git a/arch/arm/plat-mxc/include/mach/iim.h b/arch/arm/mach-imx/iim.h index 315bffadafda..315bffadafda 100644 --- a/arch/arm/plat-mxc/include/mach/iim.h +++ b/arch/arm/mach-imx/iim.h | |||
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c new file mode 100644 index 000000000000..e17dfbc42192 --- /dev/null +++ b/arch/arm/mach-imx/imx25-dt.c | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Sascha Hauer, Pengutronix | ||
3 | * | ||
4 | * The code contained herein is licensed under the GNU General Public | ||
5 | * License. You may obtain a copy of the GNU General Public License | ||
6 | * Version 2 or later at the following locations: | ||
7 | * | ||
8 | * http://www.opensource.org/licenses/gpl-license.html | ||
9 | * http://www.gnu.org/copyleft/gpl.html | ||
10 | */ | ||
11 | |||
12 | #include <linux/irq.h> | ||
13 | #include <linux/of_irq.h> | ||
14 | #include <linux/of_platform.h> | ||
15 | #include <asm/mach/arch.h> | ||
16 | #include <asm/mach/time.h> | ||
17 | #include "common.h" | ||
18 | #include "mx25.h" | ||
19 | |||
20 | static void __init imx25_dt_init(void) | ||
21 | { | ||
22 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
23 | } | ||
24 | |||
25 | static void __init imx25_timer_init(void) | ||
26 | { | ||
27 | mx25_clocks_init_dt(); | ||
28 | } | ||
29 | |||
30 | static struct sys_timer imx25_timer = { | ||
31 | .init = imx25_timer_init, | ||
32 | }; | ||
33 | |||
34 | static const char * const imx25_dt_board_compat[] __initconst = { | ||
35 | "fsl,imx25", | ||
36 | NULL | ||
37 | }; | ||
38 | |||
39 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") | ||
40 | .map_io = mx25_map_io, | ||
41 | .init_early = imx25_init_early, | ||
42 | .init_irq = mx25_init_irq, | ||
43 | .handle_irq = imx25_handle_irq, | ||
44 | .timer = &imx25_timer, | ||
45 | .init_machine = imx25_dt_init, | ||
46 | .dt_compat = imx25_dt_board_compat, | ||
47 | .restart = mxc_restart, | ||
48 | MACHINE_END | ||
diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c index e80d5235dac0..ebfae96543c4 100644 --- a/arch/arm/mach-imx/imx27-dt.c +++ b/arch/arm/mach-imx/imx27-dt.c | |||
@@ -14,21 +14,22 @@ | |||
14 | #include <linux/of_platform.h> | 14 | #include <linux/of_platform.h> |
15 | #include <asm/mach/arch.h> | 15 | #include <asm/mach/arch.h> |
16 | #include <asm/mach/time.h> | 16 | #include <asm/mach/time.h> |
17 | #include <mach/common.h> | 17 | |
18 | #include <mach/mx27.h> | 18 | #include "common.h" |
19 | #include "mx27.h" | ||
19 | 20 | ||
20 | static const struct of_dev_auxdata imx27_auxdata_lookup[] __initconst = { | 21 | static const struct of_dev_auxdata imx27_auxdata_lookup[] __initconst = { |
21 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART1_BASE_ADDR, "imx21-uart.0", NULL), | 22 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART1_BASE_ADDR, "imx21-uart.0", NULL), |
22 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART2_BASE_ADDR, "imx21-uart.1", NULL), | 23 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART2_BASE_ADDR, "imx21-uart.1", NULL), |
23 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART3_BASE_ADDR, "imx21-uart.2", NULL), | 24 | OF_DEV_AUXDATA("fsl,imx27-uart", MX27_UART3_BASE_ADDR, "imx21-uart.2", NULL), |
24 | OF_DEV_AUXDATA("fsl,imx27-fec", MX27_FEC_BASE_ADDR, "imx27-fec.0", NULL), | 25 | OF_DEV_AUXDATA("fsl,imx27-fec", MX27_FEC_BASE_ADDR, "imx27-fec.0", NULL), |
25 | OF_DEV_AUXDATA("fsl,imx27-i2c", MX27_I2C1_BASE_ADDR, "imx-i2c.0", NULL), | 26 | OF_DEV_AUXDATA("fsl,imx27-i2c", MX27_I2C1_BASE_ADDR, "imx21-i2c.0", NULL), |
26 | OF_DEV_AUXDATA("fsl,imx27-i2c", MX27_I2C2_BASE_ADDR, "imx-i2c.1", NULL), | 27 | OF_DEV_AUXDATA("fsl,imx27-i2c", MX27_I2C2_BASE_ADDR, "imx21-i2c.1", NULL), |
27 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI1_BASE_ADDR, "imx27-cspi.0", NULL), | 28 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI1_BASE_ADDR, "imx27-cspi.0", NULL), |
28 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI2_BASE_ADDR, "imx27-cspi.1", NULL), | 29 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI2_BASE_ADDR, "imx27-cspi.1", NULL), |
29 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI3_BASE_ADDR, "imx27-cspi.2", NULL), | 30 | OF_DEV_AUXDATA("fsl,imx27-cspi", MX27_CSPI3_BASE_ADDR, "imx27-cspi.2", NULL), |
30 | OF_DEV_AUXDATA("fsl,imx27-wdt", MX27_WDOG_BASE_ADDR, "imx2-wdt.0", NULL), | 31 | OF_DEV_AUXDATA("fsl,imx27-wdt", MX27_WDOG_BASE_ADDR, "imx2-wdt.0", NULL), |
31 | OF_DEV_AUXDATA("fsl,imx27-nand", MX27_NFC_BASE_ADDR, "mxc_nand.0", NULL), | 32 | OF_DEV_AUXDATA("fsl,imx27-nand", MX27_NFC_BASE_ADDR, "imx27-nand.0", NULL), |
32 | { /* sentinel */ } | 33 | { /* sentinel */ } |
33 | }; | 34 | }; |
34 | 35 | ||
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c index a68ba207b2b7..af476de2570e 100644 --- a/arch/arm/mach-imx/imx31-dt.c +++ b/arch/arm/mach-imx/imx31-dt.c | |||
@@ -14,8 +14,9 @@ | |||
14 | #include <linux/of_platform.h> | 14 | #include <linux/of_platform.h> |
15 | #include <asm/mach/arch.h> | 15 | #include <asm/mach/arch.h> |
16 | #include <asm/mach/time.h> | 16 | #include <asm/mach/time.h> |
17 | #include <mach/common.h> | 17 | |
18 | #include <mach/mx31.h> | 18 | #include "common.h" |
19 | #include "mx31.h" | ||
19 | 20 | ||
20 | static const struct of_dev_auxdata imx31_auxdata_lookup[] __initconst = { | 21 | static const struct of_dev_auxdata imx31_auxdata_lookup[] __initconst = { |
21 | OF_DEV_AUXDATA("fsl,imx31-uart", MX31_UART1_BASE_ADDR, | 22 | OF_DEV_AUXDATA("fsl,imx31-uart", MX31_UART1_BASE_ADDR, |
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c index f233b4bb2342..50742990a136 100644 --- a/arch/arm/mach-imx/imx51-dt.c +++ b/arch/arm/mach-imx/imx51-dt.c | |||
@@ -15,8 +15,9 @@ | |||
15 | #include <linux/of_platform.h> | 15 | #include <linux/of_platform.h> |
16 | #include <asm/mach/arch.h> | 16 | #include <asm/mach/arch.h> |
17 | #include <asm/mach/time.h> | 17 | #include <asm/mach/time.h> |
18 | #include <mach/common.h> | 18 | |
19 | #include <mach/mx51.h> | 19 | #include "common.h" |
20 | #include "mx51.h" | ||
20 | 21 | ||
21 | /* | 22 | /* |
22 | * Lookup table for attaching a specific name and platform_data pointer to | 23 | * Lookup table for attaching a specific name and platform_data pointer to |
@@ -36,8 +37,8 @@ static const struct of_dev_auxdata imx51_auxdata_lookup[] __initconst = { | |||
36 | OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL), | 37 | OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL), |
37 | OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL), | 38 | OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL), |
38 | OF_DEV_AUXDATA("fsl,imx51-cspi", MX51_CSPI_BASE_ADDR, "imx35-cspi.0", NULL), | 39 | OF_DEV_AUXDATA("fsl,imx51-cspi", MX51_CSPI_BASE_ADDR, "imx35-cspi.0", NULL), |
39 | OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C1_BASE_ADDR, "imx-i2c.0", NULL), | 40 | OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C1_BASE_ADDR, "imx21-i2c.0", NULL), |
40 | OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C2_BASE_ADDR, "imx-i2c.1", NULL), | 41 | OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C2_BASE_ADDR, "imx21-i2c.1", NULL), |
41 | OF_DEV_AUXDATA("fsl,imx51-sdma", MX51_SDMA_BASE_ADDR, "imx35-sdma", NULL), | 42 | OF_DEV_AUXDATA("fsl,imx51-sdma", MX51_SDMA_BASE_ADDR, "imx35-sdma", NULL), |
42 | OF_DEV_AUXDATA("fsl,imx51-wdt", MX51_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL), | 43 | OF_DEV_AUXDATA("fsl,imx51-wdt", MX51_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL), |
43 | { /* sentinel */ } | 44 | { /* sentinel */ } |
diff --git a/arch/arm/mach-imx/include/mach/dma-mx1-mx2.h b/arch/arm/mach-imx/include/mach/dma-mx1-mx2.h deleted file mode 100644 index df5f522da6b3..000000000000 --- a/arch/arm/mach-imx/include/mach/dma-mx1-mx2.h +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | #ifndef __MACH_DMA_MX1_MX2_H__ | ||
2 | #define __MACH_DMA_MX1_MX2_H__ | ||
3 | /* | ||
4 | * Don't use this header in new code, it will go away when all users are | ||
5 | * converted to mach/dma-v1.h | ||
6 | */ | ||
7 | |||
8 | #include <mach/dma-v1.h> | ||
9 | |||
10 | #endif /* ifndef __MACH_DMA_MX1_MX2_H__ */ | ||
diff --git a/arch/arm/mach-imx/iomux-imx31.c b/arch/arm/mach-imx/iomux-imx31.c index 82bd4403b450..cabefbc5e7c1 100644 --- a/arch/arm/mach-imx/iomux-imx31.c +++ b/arch/arm/mach-imx/iomux-imx31.c | |||
@@ -22,8 +22,9 @@ | |||
22 | #include <linux/spinlock.h> | 22 | #include <linux/spinlock.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
25 | #include <mach/hardware.h> | 25 | |
26 | #include <mach/iomux-mx3.h> | 26 | #include "hardware.h" |
27 | #include "iomux-mx3.h" | ||
27 | 28 | ||
28 | /* | 29 | /* |
29 | * IOMUX register (base) addresses | 30 | * IOMUX register (base) addresses |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx1.h b/arch/arm/mach-imx/iomux-mx1.h index 6b1507cf378e..95f4681d85d7 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx1.h +++ b/arch/arm/mach-imx/iomux-mx1.h | |||
@@ -18,7 +18,7 @@ | |||
18 | #ifndef __MACH_IOMUX_MX1_H__ | 18 | #ifndef __MACH_IOMUX_MX1_H__ |
19 | #define __MACH_IOMUX_MX1_H__ | 19 | #define __MACH_IOMUX_MX1_H__ |
20 | 20 | ||
21 | #include <mach/iomux-v1.h> | 21 | #include "iomux-v1.h" |
22 | 22 | ||
23 | #define PA0_AIN_SPI2_CLK (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 0) | 23 | #define PA0_AIN_SPI2_CLK (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 0) |
24 | #define PA0_AF_ETMTRACESYNC (GPIO_PORTA | GPIO_AF | 0) | 24 | #define PA0_AF_ETMTRACESYNC (GPIO_PORTA | GPIO_AF | 0) |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx21.h b/arch/arm/mach-imx/iomux-mx21.h index 1495dfda7834..a70cffceb085 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx21.h +++ b/arch/arm/mach-imx/iomux-mx21.h | |||
@@ -18,8 +18,8 @@ | |||
18 | #ifndef __MACH_IOMUX_MX21_H__ | 18 | #ifndef __MACH_IOMUX_MX21_H__ |
19 | #define __MACH_IOMUX_MX21_H__ | 19 | #define __MACH_IOMUX_MX21_H__ |
20 | 20 | ||
21 | #include <mach/iomux-mx2x.h> | 21 | #include "iomux-mx2x.h" |
22 | #include <mach/iomux-v1.h> | 22 | #include "iomux-v1.h" |
23 | 23 | ||
24 | /* Primary GPIO pin functions */ | 24 | /* Primary GPIO pin functions */ |
25 | 25 | ||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx25.h b/arch/arm/mach-imx/iomux-mx25.h index c61ec0fc10d4..be51e838375c 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx25.h +++ b/arch/arm/mach-imx/iomux-mx25.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #ifndef __MACH_IOMUX_MX25_H__ | 19 | #ifndef __MACH_IOMUX_MX25_H__ |
20 | #define __MACH_IOMUX_MX25_H__ | 20 | #define __MACH_IOMUX_MX25_H__ |
21 | 21 | ||
22 | #include <mach/iomux-v3.h> | 22 | #include "iomux-v3.h" |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * IOMUX/PAD Bit field definitions | 25 | * IOMUX/PAD Bit field definitions |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx27.h b/arch/arm/mach-imx/iomux-mx27.h index d9f9a6e32d80..218e99e89e86 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx27.h +++ b/arch/arm/mach-imx/iomux-mx27.h | |||
@@ -19,8 +19,8 @@ | |||
19 | #ifndef __MACH_IOMUX_MX27_H__ | 19 | #ifndef __MACH_IOMUX_MX27_H__ |
20 | #define __MACH_IOMUX_MX27_H__ | 20 | #define __MACH_IOMUX_MX27_H__ |
21 | 21 | ||
22 | #include <mach/iomux-mx2x.h> | 22 | #include "iomux-mx2x.h" |
23 | #include <mach/iomux-v1.h> | 23 | #include "iomux-v1.h" |
24 | 24 | ||
25 | /* Primary GPIO pin functions */ | 25 | /* Primary GPIO pin functions */ |
26 | 26 | ||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx2x.h b/arch/arm/mach-imx/iomux-mx2x.h index 7a9b20abda09..7a9b20abda09 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx2x.h +++ b/arch/arm/mach-imx/iomux-mx2x.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx3.h b/arch/arm/mach-imx/iomux-mx3.h index f79f78a1c0ed..f79f78a1c0ed 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx3.h +++ b/arch/arm/mach-imx/iomux-mx3.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx35.h b/arch/arm/mach-imx/iomux-mx35.h index 3117c18bbbd9..90bfa6b5be6a 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx35.h +++ b/arch/arm/mach-imx/iomux-mx35.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #ifndef __MACH_IOMUX_MX35_H__ | 19 | #ifndef __MACH_IOMUX_MX35_H__ |
20 | #define __MACH_IOMUX_MX35_H__ | 20 | #define __MACH_IOMUX_MX35_H__ |
21 | 21 | ||
22 | #include <mach/iomux-v3.h> | 22 | #include "iomux-v3.h" |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * The naming convention for the pad modes is MX35_PAD_<padname>__<padmode> | 25 | * The naming convention for the pad modes is MX35_PAD_<padname>__<padmode> |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx50.h b/arch/arm/mach-imx/iomux-mx50.h index 98e7fd0b9083..00f56e0e8009 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx50.h +++ b/arch/arm/mach-imx/iomux-mx50.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #ifndef __MACH_IOMUX_MX50_H__ | 19 | #ifndef __MACH_IOMUX_MX50_H__ |
20 | #define __MACH_IOMUX_MX50_H__ | 20 | #define __MACH_IOMUX_MX50_H__ |
21 | 21 | ||
22 | #include <mach/iomux-v3.h> | 22 | #include "iomux-v3.h" |
23 | 23 | ||
24 | #define MX50_ELCDIF_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_DSE_HIGH) | 24 | #define MX50_ELCDIF_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_DSE_HIGH) |
25 | 25 | ||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx51.h b/arch/arm/mach-imx/iomux-mx51.h index 2623e7a2e190..75bbcc4aa2d2 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx51.h +++ b/arch/arm/mach-imx/iomux-mx51.h | |||
@@ -13,7 +13,7 @@ | |||
13 | #ifndef __MACH_IOMUX_MX51_H__ | 13 | #ifndef __MACH_IOMUX_MX51_H__ |
14 | #define __MACH_IOMUX_MX51_H__ | 14 | #define __MACH_IOMUX_MX51_H__ |
15 | 15 | ||
16 | #include <mach/iomux-v3.h> | 16 | #include "iomux-v3.h" |
17 | #define __NA_ 0x000 | 17 | #define __NA_ 0x000 |
18 | 18 | ||
19 | 19 | ||
diff --git a/arch/arm/plat-mxc/iomux-v1.c b/arch/arm/mach-imx/iomux-v1.c index 1f73963bc13e..2b156d1d9e21 100644 --- a/arch/arm/plat-mxc/iomux-v1.c +++ b/arch/arm/mach-imx/iomux-v1.c | |||
@@ -28,9 +28,10 @@ | |||
28 | #include <linux/string.h> | 28 | #include <linux/string.h> |
29 | #include <linux/gpio.h> | 29 | #include <linux/gpio.h> |
30 | 30 | ||
31 | #include <mach/hardware.h> | ||
32 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
33 | #include <mach/iomux-v1.h> | 32 | |
33 | #include "hardware.h" | ||
34 | #include "iomux-v1.h" | ||
34 | 35 | ||
35 | static void __iomem *imx_iomuxv1_baseaddr; | 36 | static void __iomem *imx_iomuxv1_baseaddr; |
36 | static unsigned imx_iomuxv1_numports; | 37 | static unsigned imx_iomuxv1_numports; |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-v1.h b/arch/arm/mach-imx/iomux-v1.h index 02651a40fe23..02651a40fe23 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-v1.h +++ b/arch/arm/mach-imx/iomux-v1.h | |||
diff --git a/arch/arm/plat-mxc/iomux-v3.c b/arch/arm/mach-imx/iomux-v3.c index 99a9cdb9d6be..9dae74bf47fc 100644 --- a/arch/arm/plat-mxc/iomux-v3.c +++ b/arch/arm/mach-imx/iomux-v3.c | |||
@@ -25,9 +25,10 @@ | |||
25 | #include <linux/string.h> | 25 | #include <linux/string.h> |
26 | #include <linux/gpio.h> | 26 | #include <linux/gpio.h> |
27 | 27 | ||
28 | #include <mach/hardware.h> | ||
29 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
30 | #include <mach/iomux-v3.h> | 29 | |
30 | #include "hardware.h" | ||
31 | #include "iomux-v3.h" | ||
31 | 32 | ||
32 | static void __iomem *base; | 33 | static void __iomem *base; |
33 | 34 | ||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-v3.h b/arch/arm/mach-imx/iomux-v3.h index 2fa3b5430102..2fa3b5430102 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-v3.h +++ b/arch/arm/mach-imx/iomux-v3.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/iram.h b/arch/arm/mach-imx/iram.h index 022690c33702..022690c33702 100644 --- a/arch/arm/plat-mxc/include/mach/iram.h +++ b/arch/arm/mach-imx/iram.h | |||
diff --git a/arch/arm/plat-mxc/iram_alloc.c b/arch/arm/mach-imx/iram_alloc.c index 074c3869626a..6c80424f678e 100644 --- a/arch/arm/plat-mxc/iram_alloc.c +++ b/arch/arm/mach-imx/iram_alloc.c | |||
@@ -22,7 +22,8 @@ | |||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/genalloc.h> | 24 | #include <linux/genalloc.h> |
25 | #include <mach/iram.h> | 25 | |
26 | #include "iram.h" | ||
26 | 27 | ||
27 | static unsigned long iram_phys_base; | 28 | static unsigned long iram_phys_base; |
28 | static void __iomem *iram_virt_base; | 29 | static void __iomem *iram_virt_base; |
diff --git a/arch/arm/plat-mxc/irq-common.c b/arch/arm/mach-imx/irq-common.c index b6e11458e5ae..b6e11458e5ae 100644 --- a/arch/arm/plat-mxc/irq-common.c +++ b/arch/arm/mach-imx/irq-common.c | |||
diff --git a/arch/arm/plat-mxc/irq-common.h b/arch/arm/mach-imx/irq-common.h index 6ccb3a14c693..5b2dabba330f 100644 --- a/arch/arm/plat-mxc/irq-common.h +++ b/arch/arm/mach-imx/irq-common.h | |||
@@ -19,6 +19,9 @@ | |||
19 | #ifndef __PLAT_MXC_IRQ_COMMON_H__ | 19 | #ifndef __PLAT_MXC_IRQ_COMMON_H__ |
20 | #define __PLAT_MXC_IRQ_COMMON_H__ | 20 | #define __PLAT_MXC_IRQ_COMMON_H__ |
21 | 21 | ||
22 | /* all normal IRQs can be FIQs */ | ||
23 | #define FIQ_START 0 | ||
24 | |||
22 | struct mxc_extra_irq | 25 | struct mxc_extra_irq |
23 | { | 26 | { |
24 | int (*set_priority)(unsigned char irq, unsigned char prio); | 27 | int (*set_priority)(unsigned char irq, unsigned char prio); |
diff --git a/arch/arm/mach-imx/lluart.c b/arch/arm/mach-imx/lluart.c index c40a34c00489..2fdc9bf2fb5e 100644 --- a/arch/arm/mach-imx/lluart.c +++ b/arch/arm/mach-imx/lluart.c | |||
@@ -14,19 +14,28 @@ | |||
14 | #include <asm/page.h> | 14 | #include <asm/page.h> |
15 | #include <asm/sizes.h> | 15 | #include <asm/sizes.h> |
16 | #include <asm/mach/map.h> | 16 | #include <asm/mach/map.h> |
17 | #include <mach/hardware.h> | 17 | |
18 | #include "hardware.h" | ||
19 | |||
20 | #define IMX6Q_UART1_BASE_ADDR 0x02020000 | ||
21 | #define IMX6Q_UART2_BASE_ADDR 0x021e8000 | ||
22 | #define IMX6Q_UART3_BASE_ADDR 0x021ec000 | ||
23 | #define IMX6Q_UART4_BASE_ADDR 0x021f0000 | ||
24 | #define IMX6Q_UART5_BASE_ADDR 0x021f4000 | ||
25 | |||
26 | /* | ||
27 | * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion | ||
28 | * of IMX6Q_UART##n##_BASE_ADDR. | ||
29 | */ | ||
30 | #define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR | ||
31 | #define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n) | ||
32 | #define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT) | ||
18 | 33 | ||
19 | static struct map_desc imx_lluart_desc = { | 34 | static struct map_desc imx_lluart_desc = { |
20 | #ifdef CONFIG_DEBUG_IMX6Q_UART2 | 35 | #ifdef CONFIG_DEBUG_IMX6Q_UART |
21 | .virtual = MX6Q_IO_P2V(MX6Q_UART2_BASE_ADDR), | 36 | .virtual = IMX_IO_P2V(IMX6Q_DEBUG_UART_BASE), |
22 | .pfn = __phys_to_pfn(MX6Q_UART2_BASE_ADDR), | 37 | .pfn = __phys_to_pfn(IMX6Q_DEBUG_UART_BASE), |
23 | .length = MX6Q_UART2_SIZE, | 38 | .length = 0x4000, |
24 | .type = MT_DEVICE, | ||
25 | #endif | ||
26 | #ifdef CONFIG_DEBUG_IMX6Q_UART4 | ||
27 | .virtual = MX6Q_IO_P2V(MX6Q_UART4_BASE_ADDR), | ||
28 | .pfn = __phys_to_pfn(MX6Q_UART4_BASE_ADDR), | ||
29 | .length = MX6Q_UART4_SIZE, | ||
30 | .type = MT_DEVICE, | 39 | .type = MT_DEVICE, |
31 | #endif | 40 | #endif |
32 | }; | 41 | }; |
diff --git a/arch/arm/mach-imx/mach-apf9328.c b/arch/arm/mach-imx/mach-apf9328.c index 7b99a79722b6..5c9bd2c66e6d 100644 --- a/arch/arm/mach-imx/mach-apf9328.c +++ b/arch/arm/mach-imx/mach-apf9328.c | |||
@@ -25,11 +25,10 @@ | |||
25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
27 | 27 | ||
28 | #include <mach/common.h> | 28 | #include "common.h" |
29 | #include <mach/hardware.h> | ||
30 | #include <mach/iomux-mx1.h> | ||
31 | |||
32 | #include "devices-imx1.h" | 29 | #include "devices-imx1.h" |
30 | #include "hardware.h" | ||
31 | #include "iomux-mx1.h" | ||
33 | 32 | ||
34 | static const int apf9328_pins[] __initconst = { | 33 | static const int apf9328_pins[] __initconst = { |
35 | /* UART1 */ | 34 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c index 5985ed1b8c98..59bd6b06a6b5 100644 --- a/arch/arm/mach-imx/mach-armadillo5x0.c +++ b/arch/arm/mach-imx/mach-armadillo5x0.c | |||
@@ -41,19 +41,18 @@ | |||
41 | #include <linux/regulator/machine.h> | 41 | #include <linux/regulator/machine.h> |
42 | #include <linux/regulator/fixed.h> | 42 | #include <linux/regulator/fixed.h> |
43 | 43 | ||
44 | #include <mach/hardware.h> | ||
45 | #include <asm/mach-types.h> | 44 | #include <asm/mach-types.h> |
46 | #include <asm/mach/arch.h> | 45 | #include <asm/mach/arch.h> |
47 | #include <asm/mach/time.h> | 46 | #include <asm/mach/time.h> |
48 | #include <asm/memory.h> | 47 | #include <asm/memory.h> |
49 | #include <asm/mach/map.h> | 48 | #include <asm/mach/map.h> |
50 | 49 | ||
51 | #include <mach/common.h> | 50 | #include "common.h" |
52 | #include <mach/iomux-mx3.h> | ||
53 | #include <mach/ulpi.h> | ||
54 | |||
55 | #include "devices-imx31.h" | 51 | #include "devices-imx31.h" |
56 | #include "crmregs-imx3.h" | 52 | #include "crmregs-imx3.h" |
53 | #include "hardware.h" | ||
54 | #include "iomux-mx3.h" | ||
55 | #include "ulpi.h" | ||
57 | 56 | ||
58 | static int armadillo5x0_pins[] = { | 57 | static int armadillo5x0_pins[] = { |
59 | /* UART1 */ | 58 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-bug.c b/arch/arm/mach-imx/mach-bug.c index 9a9897749dd6..3a39d5aec07a 100644 --- a/arch/arm/mach-imx/mach-bug.c +++ b/arch/arm/mach-imx/mach-bug.c | |||
@@ -19,15 +19,14 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | 21 | ||
22 | #include <mach/iomux-mx3.h> | ||
23 | #include <mach/hardware.h> | ||
24 | #include <mach/common.h> | ||
25 | |||
26 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
27 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
28 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
29 | 25 | ||
26 | #include "common.h" | ||
30 | #include "devices-imx31.h" | 27 | #include "devices-imx31.h" |
28 | #include "hardware.h" | ||
29 | #include "iomux-mx3.h" | ||
31 | 30 | ||
32 | static const struct imxuart_platform_data uart_pdata __initconst = { | 31 | static const struct imxuart_platform_data uart_pdata __initconst = { |
33 | .flags = IMXUART_HAVE_RTSCTS, | 32 | .flags = IMXUART_HAVE_RTSCTS, |
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c index 2bb9e18d9ee1..12a370646b45 100644 --- a/arch/arm/mach-imx/mach-cpuimx27.c +++ b/arch/arm/mach-imx/mach-cpuimx27.c | |||
@@ -34,13 +34,12 @@ | |||
34 | #include <asm/mach/time.h> | 34 | #include <asm/mach/time.h> |
35 | #include <asm/mach/map.h> | 35 | #include <asm/mach/map.h> |
36 | 36 | ||
37 | #include <mach/eukrea-baseboards.h> | 37 | #include "common.h" |
38 | #include <mach/common.h> | ||
39 | #include <mach/hardware.h> | ||
40 | #include <mach/iomux-mx27.h> | ||
41 | #include <mach/ulpi.h> | ||
42 | |||
43 | #include "devices-imx27.h" | 38 | #include "devices-imx27.h" |
39 | #include "eukrea-baseboards.h" | ||
40 | #include "hardware.h" | ||
41 | #include "iomux-mx27.h" | ||
42 | #include "ulpi.h" | ||
44 | 43 | ||
45 | static const int eukrea_cpuimx27_pins[] __initconst = { | 44 | static const int eukrea_cpuimx27_pins[] __initconst = { |
46 | /* UART1 */ | 45 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c index d49b0ec6bdec..5a31bf8c8f4c 100644 --- a/arch/arm/mach-imx/mach-cpuimx35.c +++ b/arch/arm/mach-imx/mach-cpuimx35.c | |||
@@ -37,12 +37,11 @@ | |||
37 | #include <asm/mach/time.h> | 37 | #include <asm/mach/time.h> |
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
39 | 39 | ||
40 | #include <mach/eukrea-baseboards.h> | 40 | #include "common.h" |
41 | #include <mach/hardware.h> | ||
42 | #include <mach/common.h> | ||
43 | #include <mach/iomux-mx35.h> | ||
44 | |||
45 | #include "devices-imx35.h" | 41 | #include "devices-imx35.h" |
42 | #include "eukrea-baseboards.h" | ||
43 | #include "hardware.h" | ||
44 | #include "iomux-mx35.h" | ||
46 | 45 | ||
47 | static const struct imxuart_platform_data uart_pdata __initconst = { | 46 | static const struct imxuart_platform_data uart_pdata __initconst = { |
48 | .flags = IMXUART_HAVE_RTSCTS, | 47 | .flags = IMXUART_HAVE_RTSCTS, |
diff --git a/arch/arm/mach-imx/mach-cpuimx51sd.c b/arch/arm/mach-imx/mach-cpuimx51sd.c index b87cc49ab1e8..b727de029c8f 100644 --- a/arch/arm/mach-imx/mach-cpuimx51sd.c +++ b/arch/arm/mach-imx/mach-cpuimx51sd.c | |||
@@ -26,18 +26,17 @@ | |||
26 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
27 | #include <linux/can/platform/mcp251x.h> | 27 | #include <linux/can/platform/mcp251x.h> |
28 | 28 | ||
29 | #include <mach/eukrea-baseboards.h> | ||
30 | #include <mach/common.h> | ||
31 | #include <mach/hardware.h> | ||
32 | #include <mach/iomux-mx51.h> | ||
33 | |||
34 | #include <asm/setup.h> | 29 | #include <asm/setup.h> |
35 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
36 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
37 | #include <asm/mach/time.h> | 32 | #include <asm/mach/time.h> |
38 | 33 | ||
34 | #include "common.h" | ||
39 | #include "devices-imx51.h" | 35 | #include "devices-imx51.h" |
40 | #include "cpu_op-mx51.h" | 36 | #include "cpu_op-mx51.h" |
37 | #include "eukrea-baseboards.h" | ||
38 | #include "hardware.h" | ||
39 | #include "iomux-mx51.h" | ||
41 | 40 | ||
42 | #define USBH1_RST IMX_GPIO_NR(2, 28) | 41 | #define USBH1_RST IMX_GPIO_NR(2, 28) |
43 | #define ETH_RST IMX_GPIO_NR(2, 31) | 42 | #define ETH_RST IMX_GPIO_NR(2, 31) |
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c index 017bbb70ea41..75027a5ad8b7 100644 --- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c | |||
@@ -27,18 +27,18 @@ | |||
27 | #include <linux/usb/otg.h> | 27 | #include <linux/usb/otg.h> |
28 | #include <linux/usb/ulpi.h> | 28 | #include <linux/usb/ulpi.h> |
29 | 29 | ||
30 | #include <mach/eukrea-baseboards.h> | ||
31 | #include <mach/hardware.h> | ||
32 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/time.h> | 32 | #include <asm/mach/time.h> |
35 | #include <asm/memory.h> | 33 | #include <asm/memory.h> |
36 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
37 | #include <mach/common.h> | ||
38 | #include <mach/mx25.h> | ||
39 | #include <mach/iomux-mx25.h> | ||
40 | 35 | ||
36 | #include "common.h" | ||
41 | #include "devices-imx25.h" | 37 | #include "devices-imx25.h" |
38 | #include "eukrea-baseboards.h" | ||
39 | #include "hardware.h" | ||
40 | #include "iomux-mx25.h" | ||
41 | #include "mx25.h" | ||
42 | 42 | ||
43 | static const struct imxuart_platform_data uart_pdata __initconst = { | 43 | static const struct imxuart_platform_data uart_pdata __initconst = { |
44 | .flags = IMXUART_HAVE_RTSCTS, | 44 | .flags = IMXUART_HAVE_RTSCTS, |
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c index 141756f00ae5..b74422679126 100644 --- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c +++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c | |||
@@ -40,11 +40,11 @@ | |||
40 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
41 | #include <asm/system_info.h> | 41 | #include <asm/system_info.h> |
42 | #include <asm/memblock.h> | 42 | #include <asm/memblock.h> |
43 | #include <mach/common.h> | ||
44 | #include <mach/hardware.h> | ||
45 | #include <mach/iomux-mx27.h> | ||
46 | 43 | ||
44 | #include "common.h" | ||
47 | #include "devices-imx27.h" | 45 | #include "devices-imx27.h" |
46 | #include "hardware.h" | ||
47 | #include "iomux-mx27.h" | ||
48 | 48 | ||
49 | #define TVP5150_RSTN (GPIO_PORTC + 18) | 49 | #define TVP5150_RSTN (GPIO_PORTC + 18) |
50 | #define TVP5150_PWDN (GPIO_PORTC + 19) | 50 | #define TVP5150_PWDN (GPIO_PORTC + 19) |
diff --git a/arch/arm/mach-imx/mach-imx27ipcam.c b/arch/arm/mach-imx/mach-imx27ipcam.c index 7381387a8905..53a860112938 100644 --- a/arch/arm/mach-imx/mach-imx27ipcam.c +++ b/arch/arm/mach-imx/mach-imx27ipcam.c | |||
@@ -17,11 +17,11 @@ | |||
17 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
18 | #include <asm/mach/arch.h> | 18 | #include <asm/mach/arch.h> |
19 | #include <asm/mach/time.h> | 19 | #include <asm/mach/time.h> |
20 | #include <mach/hardware.h> | ||
21 | #include <mach/common.h> | ||
22 | #include <mach/iomux-mx27.h> | ||
23 | 20 | ||
21 | #include "hardware.h" | ||
22 | #include "common.h" | ||
24 | #include "devices-imx27.h" | 23 | #include "devices-imx27.h" |
24 | #include "iomux-mx27.h" | ||
25 | 25 | ||
26 | static const int mx27ipcam_pins[] __initconst = { | 26 | static const int mx27ipcam_pins[] __initconst = { |
27 | /* UART1 */ | 27 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-imx27lite.c b/arch/arm/mach-imx/mach-imx27lite.c index 1f45b9189229..fc8dce931378 100644 --- a/arch/arm/mach-imx/mach-imx27lite.c +++ b/arch/arm/mach-imx/mach-imx27lite.c | |||
@@ -20,11 +20,11 @@ | |||
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/time.h> | 21 | #include <asm/mach/time.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <mach/hardware.h> | ||
24 | #include <mach/common.h> | ||
25 | #include <mach/iomux-mx27.h> | ||
26 | 23 | ||
24 | #include "common.h" | ||
27 | #include "devices-imx27.h" | 25 | #include "devices-imx27.h" |
26 | #include "hardware.h" | ||
27 | #include "iomux-mx27.h" | ||
28 | 28 | ||
29 | static const int mx27lite_pins[] __initconst = { | 29 | static const int mx27lite_pins[] __initconst = { |
30 | /* UART1 */ | 30 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c index 29711e95579f..e71e62610eba 100644 --- a/arch/arm/mach-imx/mach-imx53.c +++ b/arch/arm/mach-imx/mach-imx53.c | |||
@@ -19,8 +19,9 @@ | |||
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 <asm/mach/time.h> | 21 | #include <asm/mach/time.h> |
22 | #include <mach/common.h> | 22 | |
23 | #include <mach/mx53.h> | 23 | #include "common.h" |
24 | #include "mx53.h" | ||
24 | 25 | ||
25 | /* | 26 | /* |
26 | * Lookup table for attaching a specific name and platform_data pointer to | 27 | * Lookup table for attaching a specific name and platform_data pointer to |
@@ -42,9 +43,9 @@ static const struct of_dev_auxdata imx53_auxdata_lookup[] __initconst = { | |||
42 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL), | 43 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL), |
43 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL), | 44 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL), |
44 | OF_DEV_AUXDATA("fsl,imx53-cspi", MX53_CSPI_BASE_ADDR, "imx35-cspi.0", NULL), | 45 | OF_DEV_AUXDATA("fsl,imx53-cspi", MX53_CSPI_BASE_ADDR, "imx35-cspi.0", NULL), |
45 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C1_BASE_ADDR, "imx-i2c.0", NULL), | 46 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C1_BASE_ADDR, "imx21-i2c.0", NULL), |
46 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C2_BASE_ADDR, "imx-i2c.1", NULL), | 47 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C2_BASE_ADDR, "imx21-i2c.1", NULL), |
47 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C3_BASE_ADDR, "imx-i2c.2", NULL), | 48 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C3_BASE_ADDR, "imx21-i2c.2", NULL), |
48 | OF_DEV_AUXDATA("fsl,imx53-sdma", MX53_SDMA_BASE_ADDR, "imx35-sdma", NULL), | 49 | OF_DEV_AUXDATA("fsl,imx53-sdma", MX53_SDMA_BASE_ADDR, "imx35-sdma", NULL), |
49 | OF_DEV_AUXDATA("fsl,imx53-wdt", MX53_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL), | 50 | OF_DEV_AUXDATA("fsl,imx53-wdt", MX53_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL), |
50 | { /* sentinel */ } | 51 | { /* sentinel */ } |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 47c91f7185d2..9511142d436c 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
@@ -33,10 +33,44 @@ | |||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/time.h> | 34 | #include <asm/mach/time.h> |
35 | #include <asm/system_misc.h> | 35 | #include <asm/system_misc.h> |
36 | #include <mach/common.h> | ||
37 | #include <mach/cpuidle.h> | ||
38 | #include <mach/hardware.h> | ||
39 | 36 | ||
37 | #include "common.h" | ||
38 | #include "cpuidle.h" | ||
39 | #include "hardware.h" | ||
40 | |||
41 | #define IMX6Q_ANALOG_DIGPROG 0x260 | ||
42 | |||
43 | static int imx6q_revision(void) | ||
44 | { | ||
45 | struct device_node *np; | ||
46 | void __iomem *base; | ||
47 | static u32 rev; | ||
48 | |||
49 | if (!rev) { | ||
50 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop"); | ||
51 | if (!np) | ||
52 | return IMX_CHIP_REVISION_UNKNOWN; | ||
53 | base = of_iomap(np, 0); | ||
54 | if (!base) { | ||
55 | of_node_put(np); | ||
56 | return IMX_CHIP_REVISION_UNKNOWN; | ||
57 | } | ||
58 | rev = readl_relaxed(base + IMX6Q_ANALOG_DIGPROG); | ||
59 | iounmap(base); | ||
60 | of_node_put(np); | ||
61 | } | ||
62 | |||
63 | switch (rev & 0xff) { | ||
64 | case 0: | ||
65 | return IMX_CHIP_REVISION_1_0; | ||
66 | case 1: | ||
67 | return IMX_CHIP_REVISION_1_1; | ||
68 | case 2: | ||
69 | return IMX_CHIP_REVISION_1_2; | ||
70 | default: | ||
71 | return IMX_CHIP_REVISION_UNKNOWN; | ||
72 | } | ||
73 | } | ||
40 | 74 | ||
41 | void imx6q_restart(char mode, const char *cmd) | 75 | void imx6q_restart(char mode, const char *cmd) |
42 | { | 76 | { |
@@ -192,6 +226,7 @@ static void __init imx6q_timer_init(void) | |||
192 | { | 226 | { |
193 | mx6q_clocks_init(); | 227 | mx6q_clocks_init(); |
194 | twd_local_timer_of_register(); | 228 | twd_local_timer_of_register(); |
229 | imx_print_silicon_rev("i.MX6Q", imx6q_revision()); | ||
195 | } | 230 | } |
196 | 231 | ||
197 | static struct sys_timer imx6q_timer = { | 232 | static struct sys_timer imx6q_timer = { |
diff --git a/arch/arm/mach-imx/mach-kzm_arm11_01.c b/arch/arm/mach-imx/mach-kzm_arm11_01.c index 0330078ff788..2e536ea53444 100644 --- a/arch/arm/mach-imx/mach-kzm_arm11_01.c +++ b/arch/arm/mach-imx/mach-kzm_arm11_01.c | |||
@@ -36,11 +36,10 @@ | |||
36 | #include <asm/mach/map.h> | 36 | #include <asm/mach/map.h> |
37 | #include <asm/mach/time.h> | 37 | #include <asm/mach/time.h> |
38 | 38 | ||
39 | #include <mach/common.h> | 39 | #include "common.h" |
40 | #include <mach/hardware.h> | ||
41 | #include <mach/iomux-mx3.h> | ||
42 | |||
43 | #include "devices-imx31.h" | 40 | #include "devices-imx31.h" |
41 | #include "hardware.h" | ||
42 | #include "iomux-mx3.h" | ||
44 | 43 | ||
45 | #define KZM_ARM11_IO_ADDRESS(x) (IOMEM( \ | 44 | #define KZM_ARM11_IO_ADDRESS(x) (IOMEM( \ |
46 | IMX_IO_P2V_MODULE(x, MX31_CS4) ?: \ | 45 | IMX_IO_P2V_MODULE(x, MX31_CS4) ?: \ |
diff --git a/arch/arm/mach-imx/mach-mx1ads.c b/arch/arm/mach-imx/mach-mx1ads.c index 667f359a2e8b..06b483783e68 100644 --- a/arch/arm/mach-imx/mach-mx1ads.c +++ b/arch/arm/mach-imx/mach-mx1ads.c | |||
@@ -23,11 +23,10 @@ | |||
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/time.h> | 24 | #include <asm/mach/time.h> |
25 | 25 | ||
26 | #include <mach/common.h> | 26 | #include "common.h" |
27 | #include <mach/hardware.h> | ||
28 | #include <mach/iomux-mx1.h> | ||
29 | |||
30 | #include "devices-imx1.h" | 27 | #include "devices-imx1.h" |
28 | #include "hardware.h" | ||
29 | #include "iomux-mx1.h" | ||
31 | 30 | ||
32 | static const int mx1ads_pins[] __initconst = { | 31 | static const int mx1ads_pins[] __initconst = { |
33 | /* UART1 */ | 32 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c index ed22e3fe6ec8..6adb3136bb08 100644 --- a/arch/arm/mach-imx/mach-mx21ads.c +++ b/arch/arm/mach-imx/mach-mx21ads.c | |||
@@ -18,15 +18,15 @@ | |||
18 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
19 | #include <linux/mtd/physmap.h> | 19 | #include <linux/mtd/physmap.h> |
20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
21 | #include <mach/common.h> | ||
22 | #include <mach/hardware.h> | ||
23 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
24 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/time.h> | 23 | #include <asm/mach/time.h> |
26 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
27 | #include <mach/iomux-mx21.h> | ||
28 | 25 | ||
26 | #include "common.h" | ||
29 | #include "devices-imx21.h" | 27 | #include "devices-imx21.h" |
28 | #include "hardware.h" | ||
29 | #include "iomux-mx21.h" | ||
30 | 30 | ||
31 | /* | 31 | /* |
32 | * Memory-mapped I/O on MX21ADS base board | 32 | * Memory-mapped I/O on MX21ADS base board |
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c index ce247fd1269a..b1b03aa55bb8 100644 --- a/arch/arm/mach-imx/mach-mx25_3ds.c +++ b/arch/arm/mach-imx/mach-mx25_3ds.c | |||
@@ -31,17 +31,17 @@ | |||
31 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
32 | #include <linux/usb/otg.h> | 32 | #include <linux/usb/otg.h> |
33 | 33 | ||
34 | #include <mach/hardware.h> | ||
35 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
36 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
37 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
38 | #include <asm/memory.h> | 37 | #include <asm/memory.h> |
39 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
40 | #include <mach/common.h> | ||
41 | #include <mach/mx25.h> | ||
42 | #include <mach/iomux-mx25.h> | ||
43 | 39 | ||
40 | #include "common.h" | ||
44 | #include "devices-imx25.h" | 41 | #include "devices-imx25.h" |
42 | #include "hardware.h" | ||
43 | #include "iomux-mx25.h" | ||
44 | #include "mx25.h" | ||
45 | 45 | ||
46 | #define MX25PDK_CAN_PWDN IMX_GPIO_NR(4, 6) | 46 | #define MX25PDK_CAN_PWDN IMX_GPIO_NR(4, 6) |
47 | 47 | ||
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c index 05996f39005c..d0e547fa925f 100644 --- a/arch/arm/mach-imx/mach-mx27_3ds.c +++ b/arch/arm/mach-imx/mach-mx27_3ds.c | |||
@@ -36,13 +36,13 @@ | |||
36 | #include <asm/mach-types.h> | 36 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
38 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
39 | #include <mach/hardware.h> | ||
40 | #include <mach/common.h> | ||
41 | #include <mach/iomux-mx27.h> | ||
42 | #include <mach/ulpi.h> | ||
43 | #include <mach/3ds_debugboard.h> | ||
44 | 39 | ||
40 | #include "3ds_debugboard.h" | ||
41 | #include "common.h" | ||
45 | #include "devices-imx27.h" | 42 | #include "devices-imx27.h" |
43 | #include "hardware.h" | ||
44 | #include "iomux-mx27.h" | ||
45 | #include "ulpi.h" | ||
46 | 46 | ||
47 | #define SD1_EN_GPIO IMX_GPIO_NR(2, 25) | 47 | #define SD1_EN_GPIO IMX_GPIO_NR(2, 25) |
48 | #define OTG_PHY_RESET_GPIO IMX_GPIO_NR(2, 23) | 48 | #define OTG_PHY_RESET_GPIO IMX_GPIO_NR(2, 23) |
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c index 7dc59bac0e55..3d036f57f0e6 100644 --- a/arch/arm/mach-imx/mach-mx27ads.c +++ b/arch/arm/mach-imx/mach-mx27ads.c | |||
@@ -21,15 +21,15 @@ | |||
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/i2c.h> | 22 | #include <linux/i2c.h> |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <mach/common.h> | ||
25 | #include <mach/hardware.h> | ||
26 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
27 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
29 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
30 | #include <mach/iomux-mx27.h> | ||
31 | 28 | ||
29 | #include "common.h" | ||
32 | #include "devices-imx27.h" | 30 | #include "devices-imx27.h" |
31 | #include "hardware.h" | ||
32 | #include "iomux-mx27.h" | ||
33 | 33 | ||
34 | /* | 34 | /* |
35 | * Base address of PBC controller, CS4 | 35 | * Base address of PBC controller, CS4 |
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c index 8915f937b7d5..bc301befdd06 100644 --- a/arch/arm/mach-imx/mach-mx31_3ds.c +++ b/arch/arm/mach-imx/mach-mx31_3ds.c | |||
@@ -30,19 +30,19 @@ | |||
30 | 30 | ||
31 | #include <media/soc_camera.h> | 31 | #include <media/soc_camera.h> |
32 | 32 | ||
33 | #include <mach/hardware.h> | ||
34 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
35 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
36 | #include <asm/mach/time.h> | 35 | #include <asm/mach/time.h> |
37 | #include <asm/memory.h> | 36 | #include <asm/memory.h> |
38 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
39 | #include <asm/memblock.h> | 38 | #include <asm/memblock.h> |
40 | #include <mach/common.h> | ||
41 | #include <mach/iomux-mx3.h> | ||
42 | #include <mach/3ds_debugboard.h> | ||
43 | #include <mach/ulpi.h> | ||
44 | 39 | ||
40 | #include "3ds_debugboard.h" | ||
41 | #include "common.h" | ||
45 | #include "devices-imx31.h" | 42 | #include "devices-imx31.h" |
43 | #include "hardware.h" | ||
44 | #include "iomux-mx3.h" | ||
45 | #include "ulpi.h" | ||
46 | 46 | ||
47 | static int mx31_3ds_pins[] = { | 47 | static int mx31_3ds_pins[] = { |
48 | /* UART1 */ | 48 | /* UART1 */ |
@@ -393,7 +393,7 @@ static struct regulator_init_data gpo_init = { | |||
393 | }; | 393 | }; |
394 | 394 | ||
395 | static struct regulator_consumer_supply vmmc2_consumers[] = { | 395 | static struct regulator_consumer_supply vmmc2_consumers[] = { |
396 | REGULATOR_SUPPLY("vmmc", "mxc-mmc.0"), | 396 | REGULATOR_SUPPLY("vmmc", "imx31-mmc.0"), |
397 | }; | 397 | }; |
398 | 398 | ||
399 | static struct regulator_init_data vmmc2_init = { | 399 | static struct regulator_init_data vmmc2_init = { |
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c index e774b07f48d3..8b56f8883f32 100644 --- a/arch/arm/mach-imx/mach-mx31ads.c +++ b/arch/arm/mach-imx/mach-mx31ads.c | |||
@@ -28,8 +28,6 @@ | |||
28 | #include <asm/mach/time.h> | 28 | #include <asm/mach/time.h> |
29 | #include <asm/memory.h> | 29 | #include <asm/memory.h> |
30 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
31 | #include <mach/common.h> | ||
32 | #include <mach/iomux-mx3.h> | ||
33 | 31 | ||
34 | #ifdef CONFIG_MACH_MX31ADS_WM1133_EV1 | 32 | #ifdef CONFIG_MACH_MX31ADS_WM1133_EV1 |
35 | #include <linux/mfd/wm8350/audio.h> | 33 | #include <linux/mfd/wm8350/audio.h> |
@@ -37,7 +35,10 @@ | |||
37 | #include <linux/mfd/wm8350/pmic.h> | 35 | #include <linux/mfd/wm8350/pmic.h> |
38 | #endif | 36 | #endif |
39 | 37 | ||
38 | #include "common.h" | ||
40 | #include "devices-imx31.h" | 39 | #include "devices-imx31.h" |
40 | #include "hardware.h" | ||
41 | #include "iomux-mx3.h" | ||
41 | 42 | ||
42 | /* Base address of PBC controller */ | 43 | /* Base address of PBC controller */ |
43 | #define PBC_BASE_ADDRESS MX31_CS4_BASE_ADDR_VIRT | 44 | #define PBC_BASE_ADDRESS MX31_CS4_BASE_ADDR_VIRT |
diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c index 34b9bf075daf..08b9965c8b36 100644 --- a/arch/arm/mach-imx/mach-mx31lilly.c +++ b/arch/arm/mach-imx/mach-mx31lilly.c | |||
@@ -42,13 +42,12 @@ | |||
42 | #include <asm/mach/time.h> | 42 | #include <asm/mach/time.h> |
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | 44 | ||
45 | #include <mach/hardware.h> | 45 | #include "board-mx31lilly.h" |
46 | #include <mach/common.h> | 46 | #include "common.h" |
47 | #include <mach/iomux-mx3.h> | ||
48 | #include <mach/board-mx31lilly.h> | ||
49 | #include <mach/ulpi.h> | ||
50 | |||
51 | #include "devices-imx31.h" | 47 | #include "devices-imx31.h" |
48 | #include "hardware.h" | ||
49 | #include "iomux-mx3.h" | ||
50 | #include "ulpi.h" | ||
52 | 51 | ||
53 | /* | 52 | /* |
54 | * This file contains module-specific initialization routines for LILLY-1131. | 53 | * This file contains module-specific initialization routines for LILLY-1131. |
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c index ef57cff5abfb..bdcd92e59518 100644 --- a/arch/arm/mach-imx/mach-mx31lite.c +++ b/arch/arm/mach-imx/mach-mx31lite.c | |||
@@ -39,13 +39,12 @@ | |||
39 | #include <asm/page.h> | 39 | #include <asm/page.h> |
40 | #include <asm/setup.h> | 40 | #include <asm/setup.h> |
41 | 41 | ||
42 | #include <mach/hardware.h> | 42 | #include "board-mx31lite.h" |
43 | #include <mach/common.h> | 43 | #include "common.h" |
44 | #include <mach/board-mx31lite.h> | ||
45 | #include <mach/iomux-mx3.h> | ||
46 | #include <mach/ulpi.h> | ||
47 | |||
48 | #include "devices-imx31.h" | 44 | #include "devices-imx31.h" |
45 | #include "hardware.h" | ||
46 | #include "iomux-mx3.h" | ||
47 | #include "ulpi.h" | ||
49 | 48 | ||
50 | /* | 49 | /* |
51 | * This file contains the module-specific initialization routines. | 50 | * This file contains the module-specific initialization routines. |
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c index 459e754ef8c9..2517cfa9f26b 100644 --- a/arch/arm/mach-imx/mach-mx31moboard.c +++ b/arch/arm/mach-imx/mach-mx31moboard.c | |||
@@ -42,14 +42,14 @@ | |||
42 | #include <asm/mach/time.h> | 42 | #include <asm/mach/time.h> |
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | #include <asm/memblock.h> | 44 | #include <asm/memblock.h> |
45 | #include <mach/board-mx31moboard.h> | ||
46 | #include <mach/common.h> | ||
47 | #include <mach/hardware.h> | ||
48 | #include <mach/iomux-mx3.h> | ||
49 | #include <mach/ulpi.h> | ||
50 | #include <linux/platform_data/asoc-imx-ssi.h> | 45 | #include <linux/platform_data/asoc-imx-ssi.h> |
51 | 46 | ||
47 | #include "board-mx31moboard.h" | ||
48 | #include "common.h" | ||
52 | #include "devices-imx31.h" | 49 | #include "devices-imx31.h" |
50 | #include "hardware.h" | ||
51 | #include "iomux-mx3.h" | ||
52 | #include "ulpi.h" | ||
53 | 53 | ||
54 | static unsigned int moboard_pins[] = { | 54 | static unsigned int moboard_pins[] = { |
55 | /* UART0 */ | 55 | /* UART0 */ |
@@ -175,11 +175,11 @@ static const struct spi_imx_master moboard_spi1_pdata __initconst = { | |||
175 | 175 | ||
176 | static struct regulator_consumer_supply sdhc_consumers[] = { | 176 | static struct regulator_consumer_supply sdhc_consumers[] = { |
177 | { | 177 | { |
178 | .dev_name = "mxc-mmc.0", | 178 | .dev_name = "imx31-mmc.0", |
179 | .supply = "sdhc0_vcc", | 179 | .supply = "sdhc0_vcc", |
180 | }, | 180 | }, |
181 | { | 181 | { |
182 | .dev_name = "mxc-mmc.1", | 182 | .dev_name = "imx31-mmc.1", |
183 | .supply = "sdhc1_vcc", | 183 | .supply = "sdhc1_vcc", |
184 | }, | 184 | }, |
185 | }; | 185 | }; |
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c index 504983c68aa8..5277da45d60c 100644 --- a/arch/arm/mach-imx/mach-mx35_3ds.c +++ b/arch/arm/mach-imx/mach-mx35_3ds.c | |||
@@ -43,15 +43,15 @@ | |||
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | #include <asm/memblock.h> | 44 | #include <asm/memblock.h> |
45 | 45 | ||
46 | #include <mach/hardware.h> | ||
47 | #include <mach/common.h> | ||
48 | #include <mach/iomux-mx35.h> | ||
49 | #include <mach/3ds_debugboard.h> | ||
50 | #include <video/platform_lcd.h> | 46 | #include <video/platform_lcd.h> |
51 | 47 | ||
52 | #include <media/soc_camera.h> | 48 | #include <media/soc_camera.h> |
53 | 49 | ||
50 | #include "3ds_debugboard.h" | ||
51 | #include "common.h" | ||
54 | #include "devices-imx35.h" | 52 | #include "devices-imx35.h" |
53 | #include "hardware.h" | ||
54 | #include "iomux-mx35.h" | ||
55 | 55 | ||
56 | #define GPIO_MC9S08DZ60_GPS_ENABLE 0 | 56 | #define GPIO_MC9S08DZ60_GPS_ENABLE 0 |
57 | #define GPIO_MC9S08DZ60_HDD_ENABLE 4 | 57 | #define GPIO_MC9S08DZ60_HDD_ENABLE 4 |
diff --git a/arch/arm/mach-imx/mach-mx50_rdp.c b/arch/arm/mach-imx/mach-mx50_rdp.c index 42b66e8d9615..0c1f88a80bdc 100644 --- a/arch/arm/mach-imx/mach-mx50_rdp.c +++ b/arch/arm/mach-imx/mach-mx50_rdp.c | |||
@@ -24,17 +24,16 @@ | |||
24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | 26 | ||
27 | #include <mach/common.h> | ||
28 | #include <mach/hardware.h> | ||
29 | #include <mach/iomux-mx50.h> | ||
30 | |||
31 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
32 | #include <asm/setup.h> | 28 | #include <asm/setup.h> |
33 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
34 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
35 | #include <asm/mach/time.h> | 31 | #include <asm/mach/time.h> |
36 | 32 | ||
33 | #include "common.h" | ||
37 | #include "devices-imx50.h" | 34 | #include "devices-imx50.h" |
35 | #include "hardware.h" | ||
36 | #include "iomux-mx50.h" | ||
38 | 37 | ||
39 | #define FEC_EN IMX_GPIO_NR(6, 23) | 38 | #define FEC_EN IMX_GPIO_NR(6, 23) |
40 | #define FEC_RESET_B IMX_GPIO_NR(4, 12) | 39 | #define FEC_RESET_B IMX_GPIO_NR(4, 12) |
diff --git a/arch/arm/mach-imx/mach-mx51_3ds.c b/arch/arm/mach-imx/mach-mx51_3ds.c index 9ee84a4af639..abc25bd1107b 100644 --- a/arch/arm/mach-imx/mach-mx51_3ds.c +++ b/arch/arm/mach-imx/mach-mx51_3ds.c | |||
@@ -19,12 +19,11 @@ | |||
19 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
20 | #include <asm/mach/time.h> | 20 | #include <asm/mach/time.h> |
21 | 21 | ||
22 | #include <mach/hardware.h> | 22 | #include "3ds_debugboard.h" |
23 | #include <mach/common.h> | 23 | #include "common.h" |
24 | #include <mach/iomux-mx51.h> | ||
25 | #include <mach/3ds_debugboard.h> | ||
26 | |||
27 | #include "devices-imx51.h" | 24 | #include "devices-imx51.h" |
25 | #include "hardware.h" | ||
26 | #include "iomux-mx51.h" | ||
28 | 27 | ||
29 | #define MX51_3DS_ECSPI2_CS (GPIO_PORTC + 28) | 28 | #define MX51_3DS_ECSPI2_CS (GPIO_PORTC + 28) |
30 | 29 | ||
diff --git a/arch/arm/mach-imx/mach-mx51_babbage.c b/arch/arm/mach-imx/mach-mx51_babbage.c index 7b31cbde8775..d9a84ca2199a 100644 --- a/arch/arm/mach-imx/mach-mx51_babbage.c +++ b/arch/arm/mach-imx/mach-mx51_babbage.c | |||
@@ -20,17 +20,16 @@ | |||
20 | #include <linux/spi/flash.h> | 20 | #include <linux/spi/flash.h> |
21 | #include <linux/spi/spi.h> | 21 | #include <linux/spi/spi.h> |
22 | 22 | ||
23 | #include <mach/common.h> | ||
24 | #include <mach/hardware.h> | ||
25 | #include <mach/iomux-mx51.h> | ||
26 | |||
27 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
28 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
31 | 27 | ||
28 | #include "common.h" | ||
32 | #include "devices-imx51.h" | 29 | #include "devices-imx51.h" |
33 | #include "cpu_op-mx51.h" | 30 | #include "cpu_op-mx51.h" |
31 | #include "hardware.h" | ||
32 | #include "iomux-mx51.h" | ||
34 | 33 | ||
35 | #define BABBAGE_USB_HUB_RESET IMX_GPIO_NR(1, 7) | 34 | #define BABBAGE_USB_HUB_RESET IMX_GPIO_NR(1, 7) |
36 | #define BABBAGE_USBH1_STP IMX_GPIO_NR(1, 27) | 35 | #define BABBAGE_USBH1_STP IMX_GPIO_NR(1, 27) |
diff --git a/arch/arm/mach-imx/mach-mxt_td60.c b/arch/arm/mach-imx/mach-mxt_td60.c index 0bf6d30aa32d..f4a8c7e108e1 100644 --- a/arch/arm/mach-imx/mach-mxt_td60.c +++ b/arch/arm/mach-imx/mach-mxt_td60.c | |||
@@ -21,17 +21,17 @@ | |||
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/i2c.h> | 22 | #include <linux/i2c.h> |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <mach/common.h> | ||
25 | #include <mach/hardware.h> | ||
26 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
27 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
29 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
30 | #include <linux/gpio.h> | 28 | #include <linux/gpio.h> |
31 | #include <mach/iomux-mx27.h> | ||
32 | #include <linux/i2c/pca953x.h> | 29 | #include <linux/i2c/pca953x.h> |
33 | 30 | ||
31 | #include "common.h" | ||
34 | #include "devices-imx27.h" | 32 | #include "devices-imx27.h" |
33 | #include "hardware.h" | ||
34 | #include "iomux-mx27.h" | ||
35 | 35 | ||
36 | static const int mxt_td60_pins[] __initconst = { | 36 | static const int mxt_td60_pins[] __initconst = { |
37 | /* UART0 */ | 37 | /* UART0 */ |
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c index de8516b7d69f..eee369fa94a2 100644 --- a/arch/arm/mach-imx/mach-pca100.c +++ b/arch/arm/mach-imx/mach-pca100.c | |||
@@ -32,13 +32,13 @@ | |||
32 | 32 | ||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
35 | #include <mach/common.h> | ||
36 | #include <mach/hardware.h> | ||
37 | #include <mach/iomux-mx27.h> | ||
38 | #include <asm/mach/time.h> | 35 | #include <asm/mach/time.h> |
39 | #include <mach/ulpi.h> | ||
40 | 36 | ||
37 | #include "common.h" | ||
41 | #include "devices-imx27.h" | 38 | #include "devices-imx27.h" |
39 | #include "hardware.h" | ||
40 | #include "iomux-mx27.h" | ||
41 | #include "ulpi.h" | ||
42 | 42 | ||
43 | #define OTG_PHY_CS_GPIO (GPIO_PORTB + 23) | 43 | #define OTG_PHY_CS_GPIO (GPIO_PORTB + 23) |
44 | #define USBH2_PHY_CS_GPIO (GPIO_PORTB + 24) | 44 | #define USBH2_PHY_CS_GPIO (GPIO_PORTB + 24) |
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c index e3c45130fb3c..547fef133f65 100644 --- a/arch/arm/mach-imx/mach-pcm037.c +++ b/arch/arm/mach-imx/mach-pcm037.c | |||
@@ -42,13 +42,13 @@ | |||
42 | #include <asm/mach/time.h> | 42 | #include <asm/mach/time.h> |
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | #include <asm/memblock.h> | 44 | #include <asm/memblock.h> |
45 | #include <mach/common.h> | ||
46 | #include <mach/hardware.h> | ||
47 | #include <mach/iomux-mx3.h> | ||
48 | #include <mach/ulpi.h> | ||
49 | 45 | ||
46 | #include "common.h" | ||
50 | #include "devices-imx31.h" | 47 | #include "devices-imx31.h" |
48 | #include "hardware.h" | ||
49 | #include "iomux-mx3.h" | ||
51 | #include "pcm037.h" | 50 | #include "pcm037.h" |
51 | #include "ulpi.h" | ||
52 | 52 | ||
53 | static enum pcm037_board_variant pcm037_instance = PCM037_PCM970; | 53 | static enum pcm037_board_variant pcm037_instance = PCM037_PCM970; |
54 | 54 | ||
diff --git a/arch/arm/mach-imx/mach-pcm037_eet.c b/arch/arm/mach-imx/mach-pcm037_eet.c index 11ffa81ad17d..8fd8255068ee 100644 --- a/arch/arm/mach-imx/mach-pcm037_eet.c +++ b/arch/arm/mach-imx/mach-pcm037_eet.c | |||
@@ -11,13 +11,12 @@ | |||
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/spi/spi.h> | 12 | #include <linux/spi/spi.h> |
13 | 13 | ||
14 | #include <mach/common.h> | ||
15 | #include <mach/iomux-mx3.h> | ||
16 | |||
17 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
18 | 15 | ||
19 | #include "pcm037.h" | 16 | #include "pcm037.h" |
17 | #include "common.h" | ||
20 | #include "devices-imx31.h" | 18 | #include "devices-imx31.h" |
19 | #include "iomux-mx3.h" | ||
21 | 20 | ||
22 | static unsigned int pcm037_eet_pins[] = { | 21 | static unsigned int pcm037_eet_pins[] = { |
23 | /* Reserve and hardwire GPIO 57 high - S6E63D6 chipselect */ | 22 | /* Reserve and hardwire GPIO 57 high - S6E63D6 chipselect */ |
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c index 95f49d936fd3..4aa0d0798605 100644 --- a/arch/arm/mach-imx/mach-pcm038.c +++ b/arch/arm/mach-imx/mach-pcm038.c | |||
@@ -33,13 +33,12 @@ | |||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/time.h> | 34 | #include <asm/mach/time.h> |
35 | 35 | ||
36 | #include <mach/board-pcm038.h> | 36 | #include "board-pcm038.h" |
37 | #include <mach/common.h> | 37 | #include "common.h" |
38 | #include <mach/hardware.h> | ||
39 | #include <mach/iomux-mx27.h> | ||
40 | #include <mach/ulpi.h> | ||
41 | |||
42 | #include "devices-imx27.h" | 38 | #include "devices-imx27.h" |
39 | #include "hardware.h" | ||
40 | #include "iomux-mx27.h" | ||
41 | #include "ulpi.h" | ||
43 | 42 | ||
44 | static const int pcm038_pins[] __initconst = { | 43 | static const int pcm038_pins[] __initconst = { |
45 | /* UART1 */ | 44 | /* UART1 */ |
@@ -212,7 +211,7 @@ static const struct spi_imx_master pcm038_spi0_data __initconst = { | |||
212 | 211 | ||
213 | static struct regulator_consumer_supply sdhc1_consumers[] = { | 212 | static struct regulator_consumer_supply sdhc1_consumers[] = { |
214 | { | 213 | { |
215 | .dev_name = "mxc-mmc.1", | 214 | .dev_name = "imx21-mmc.1", |
216 | .supply = "sdhc_vcc", | 215 | .supply = "sdhc_vcc", |
217 | }, | 216 | }, |
218 | }; | 217 | }; |
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c index e4bd4387e344..92445440221e 100644 --- a/arch/arm/mach-imx/mach-pcm043.c +++ b/arch/arm/mach-imx/mach-pcm043.c | |||
@@ -33,12 +33,11 @@ | |||
33 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
34 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
35 | 35 | ||
36 | #include <mach/hardware.h> | 36 | #include "common.h" |
37 | #include <mach/common.h> | ||
38 | #include <mach/iomux-mx35.h> | ||
39 | #include <mach/ulpi.h> | ||
40 | |||
41 | #include "devices-imx35.h" | 37 | #include "devices-imx35.h" |
38 | #include "hardware.h" | ||
39 | #include "iomux-mx35.h" | ||
40 | #include "ulpi.h" | ||
42 | 41 | ||
43 | static const struct fb_videomode fb_modedb[] = { | 42 | static const struct fb_videomode fb_modedb[] = { |
44 | { | 43 | { |
diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c index fb25fbd31226..96d9a91f8a3b 100644 --- a/arch/arm/mach-imx/mach-qong.c +++ b/arch/arm/mach-imx/mach-qong.c | |||
@@ -21,17 +21,17 @@ | |||
21 | #include <linux/mtd/nand.h> | 21 | #include <linux/mtd/nand.h> |
22 | #include <linux/gpio.h> | 22 | #include <linux/gpio.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | ||
25 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
26 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
28 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
29 | #include <mach/common.h> | ||
30 | #include <asm/page.h> | 28 | #include <asm/page.h> |
31 | #include <asm/setup.h> | 29 | #include <asm/setup.h> |
32 | #include <mach/iomux-mx3.h> | ||
33 | 30 | ||
31 | #include "common.h" | ||
34 | #include "devices-imx31.h" | 32 | #include "devices-imx31.h" |
33 | #include "hardware.h" | ||
34 | #include "iomux-mx3.h" | ||
35 | 35 | ||
36 | /* FPGA defines */ | 36 | /* FPGA defines */ |
37 | #define QONG_FPGA_VERSION(major, minor, rev) \ | 37 | #define QONG_FPGA_VERSION(major, minor, rev) \ |
diff --git a/arch/arm/mach-imx/mach-scb9328.c b/arch/arm/mach-imx/mach-scb9328.c index 67ff38e9a3ca..fc970409dbaf 100644 --- a/arch/arm/mach-imx/mach-scb9328.c +++ b/arch/arm/mach-imx/mach-scb9328.c | |||
@@ -20,11 +20,10 @@ | |||
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/time.h> | 21 | #include <asm/mach/time.h> |
22 | 22 | ||
23 | #include <mach/common.h> | 23 | #include "common.h" |
24 | #include <mach/hardware.h> | ||
25 | #include <mach/iomux-mx1.h> | ||
26 | |||
27 | #include "devices-imx1.h" | 24 | #include "devices-imx1.h" |
25 | #include "hardware.h" | ||
26 | #include "iomux-mx1.h" | ||
28 | 27 | ||
29 | /* | 28 | /* |
30 | * This scb9328 has a 32MiB flash | 29 | * This scb9328 has a 32MiB flash |
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c index 39eb7960e2a4..3aecf91e4289 100644 --- a/arch/arm/mach-imx/mach-vpr200.c +++ b/arch/arm/mach-imx/mach-vpr200.c | |||
@@ -28,15 +28,14 @@ | |||
28 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
29 | #include <asm/mach/time.h> | 29 | #include <asm/mach/time.h> |
30 | 30 | ||
31 | #include <mach/hardware.h> | ||
32 | #include <mach/common.h> | ||
33 | #include <mach/iomux-mx35.h> | ||
34 | |||
35 | #include <linux/i2c.h> | 31 | #include <linux/i2c.h> |
36 | #include <linux/i2c/at24.h> | 32 | #include <linux/i2c/at24.h> |
37 | #include <linux/mfd/mc13xxx.h> | 33 | #include <linux/mfd/mc13xxx.h> |
38 | 34 | ||
35 | #include "common.h" | ||
39 | #include "devices-imx35.h" | 36 | #include "devices-imx35.h" |
37 | #include "hardware.h" | ||
38 | #include "iomux-mx35.h" | ||
40 | 39 | ||
41 | #define GPIO_LCDPWR IMX_GPIO_NR(1, 2) | 40 | #define GPIO_LCDPWR IMX_GPIO_NR(1, 2) |
42 | #define GPIO_PMIC_INT IMX_GPIO_NR(2, 0) | 41 | #define GPIO_PMIC_INT IMX_GPIO_NR(2, 0) |
diff --git a/arch/arm/mach-imx/mm-imx1.c b/arch/arm/mach-imx/mm-imx1.c index 6d60d51868bc..7a146671e65a 100644 --- a/arch/arm/mach-imx/mm-imx1.c +++ b/arch/arm/mach-imx/mm-imx1.c | |||
@@ -22,9 +22,10 @@ | |||
22 | 22 | ||
23 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
24 | 24 | ||
25 | #include <mach/common.h> | 25 | #include "common.h" |
26 | #include <mach/hardware.h> | 26 | #include "devices/devices-common.h" |
27 | #include <mach/iomux-v1.h> | 27 | #include "hardware.h" |
28 | #include "iomux-v1.h" | ||
28 | 29 | ||
29 | static struct map_desc imx_io_desc[] __initdata = { | 30 | static struct map_desc imx_io_desc[] __initdata = { |
30 | imx_map_entry(MX1, IO, MT_DEVICE), | 31 | imx_map_entry(MX1, IO, MT_DEVICE), |
@@ -58,5 +59,7 @@ void __init imx1_soc_init(void) | |||
58 | MX1_GPIO_INT_PORTC, 0); | 59 | MX1_GPIO_INT_PORTC, 0); |
59 | mxc_register_gpio("imx1-gpio", 3, MX1_GPIO4_BASE_ADDR, SZ_256, | 60 | mxc_register_gpio("imx1-gpio", 3, MX1_GPIO4_BASE_ADDR, SZ_256, |
60 | MX1_GPIO_INT_PORTD, 0); | 61 | MX1_GPIO_INT_PORTD, 0); |
62 | imx_add_imx_dma("imx1-dma", MX1_DMA_BASE_ADDR, | ||
63 | MX1_DMA_INT, MX1_DMA_ERR); | ||
61 | pinctrl_provide_dummies(); | 64 | pinctrl_provide_dummies(); |
62 | } | 65 | } |
diff --git a/arch/arm/mach-imx/mm-imx21.c b/arch/arm/mach-imx/mm-imx21.c index d056dad0940d..d8ccd3a8ec53 100644 --- a/arch/arm/mach-imx/mm-imx21.c +++ b/arch/arm/mach-imx/mm-imx21.c | |||
@@ -21,12 +21,13 @@ | |||
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/pinctrl/machine.h> | 23 | #include <linux/pinctrl/machine.h> |
24 | #include <mach/hardware.h> | ||
25 | #include <mach/common.h> | ||
26 | #include <mach/devices-common.h> | ||
27 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
28 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
29 | #include <mach/iomux-v1.h> | 26 | |
27 | #include "common.h" | ||
28 | #include "devices/devices-common.h" | ||
29 | #include "hardware.h" | ||
30 | #include "iomux-v1.h" | ||
30 | 31 | ||
31 | /* MX21 memory map definition */ | 32 | /* MX21 memory map definition */ |
32 | static struct map_desc imx21_io_desc[] __initdata = { | 33 | static struct map_desc imx21_io_desc[] __initdata = { |
@@ -81,6 +82,8 @@ static const struct resource imx21_audmux_res[] __initconst = { | |||
81 | 82 | ||
82 | void __init imx21_soc_init(void) | 83 | void __init imx21_soc_init(void) |
83 | { | 84 | { |
85 | mxc_device_init(); | ||
86 | |||
84 | mxc_register_gpio("imx21-gpio", 0, MX21_GPIO1_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); | 87 | mxc_register_gpio("imx21-gpio", 0, MX21_GPIO1_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); |
85 | mxc_register_gpio("imx21-gpio", 1, MX21_GPIO2_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); | 88 | mxc_register_gpio("imx21-gpio", 1, MX21_GPIO2_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); |
86 | mxc_register_gpio("imx21-gpio", 2, MX21_GPIO3_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); | 89 | mxc_register_gpio("imx21-gpio", 2, MX21_GPIO3_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); |
@@ -89,7 +92,8 @@ void __init imx21_soc_init(void) | |||
89 | mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); | 92 | mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); |
90 | 93 | ||
91 | pinctrl_provide_dummies(); | 94 | pinctrl_provide_dummies(); |
92 | imx_add_imx_dma(); | 95 | imx_add_imx_dma("imx21-dma", MX21_DMA_BASE_ADDR, |
96 | MX21_INT_DMACH0, 0); /* No ERR irq */ | ||
93 | platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res, | 97 | platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res, |
94 | ARRAY_SIZE(imx21_audmux_res)); | 98 | ARRAY_SIZE(imx21_audmux_res)); |
95 | } | 99 | } |
diff --git a/arch/arm/mach-imx/mm-imx25.c b/arch/arm/mach-imx/mm-imx25.c index f3f5c6542ab4..9357707bb7af 100644 --- a/arch/arm/mach-imx/mm-imx25.c +++ b/arch/arm/mach-imx/mm-imx25.c | |||
@@ -24,11 +24,11 @@ | |||
24 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
25 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
26 | 26 | ||
27 | #include <mach/common.h> | 27 | #include "common.h" |
28 | #include <mach/devices-common.h> | 28 | #include "devices/devices-common.h" |
29 | #include <mach/hardware.h> | 29 | #include "hardware.h" |
30 | #include <mach/mx25.h> | 30 | #include "iomux-v3.h" |
31 | #include <mach/iomux-v3.h> | 31 | #include "mx25.h" |
32 | 32 | ||
33 | /* | 33 | /* |
34 | * This table defines static virtual address mappings for I/O regions. | 34 | * This table defines static virtual address mappings for I/O regions. |
@@ -89,6 +89,8 @@ static const struct resource imx25_audmux_res[] __initconst = { | |||
89 | 89 | ||
90 | void __init imx25_soc_init(void) | 90 | void __init imx25_soc_init(void) |
91 | { | 91 | { |
92 | mxc_device_init(); | ||
93 | |||
92 | /* i.mx25 has the i.mx35 type gpio */ | 94 | /* i.mx25 has the i.mx35 type gpio */ |
93 | mxc_register_gpio("imx35-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0); | 95 | mxc_register_gpio("imx35-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0); |
94 | mxc_register_gpio("imx35-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0); | 96 | mxc_register_gpio("imx35-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0); |
diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c index e7e24afc45ed..4f1be65a7b5f 100644 --- a/arch/arm/mach-imx/mm-imx27.c +++ b/arch/arm/mach-imx/mm-imx27.c | |||
@@ -21,12 +21,13 @@ | |||
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/pinctrl/machine.h> | 23 | #include <linux/pinctrl/machine.h> |
24 | #include <mach/hardware.h> | ||
25 | #include <mach/common.h> | ||
26 | #include <mach/devices-common.h> | ||
27 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
28 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
29 | #include <mach/iomux-v1.h> | 26 | |
27 | #include "common.h" | ||
28 | #include "devices/devices-common.h" | ||
29 | #include "hardware.h" | ||
30 | #include "iomux-v1.h" | ||
30 | 31 | ||
31 | /* MX27 memory map definition */ | 32 | /* MX27 memory map definition */ |
32 | static struct map_desc imx27_io_desc[] __initdata = { | 33 | static struct map_desc imx27_io_desc[] __initdata = { |
@@ -81,6 +82,8 @@ static const struct resource imx27_audmux_res[] __initconst = { | |||
81 | 82 | ||
82 | void __init imx27_soc_init(void) | 83 | void __init imx27_soc_init(void) |
83 | { | 84 | { |
85 | mxc_device_init(); | ||
86 | |||
84 | /* i.mx27 has the i.mx21 type gpio */ | 87 | /* i.mx27 has the i.mx21 type gpio */ |
85 | mxc_register_gpio("imx21-gpio", 0, MX27_GPIO1_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); | 88 | mxc_register_gpio("imx21-gpio", 0, MX27_GPIO1_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); |
86 | mxc_register_gpio("imx21-gpio", 1, MX27_GPIO2_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); | 89 | mxc_register_gpio("imx21-gpio", 1, MX27_GPIO2_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); |
@@ -90,7 +93,8 @@ void __init imx27_soc_init(void) | |||
90 | mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); | 93 | mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); |
91 | 94 | ||
92 | pinctrl_provide_dummies(); | 95 | pinctrl_provide_dummies(); |
93 | imx_add_imx_dma(); | 96 | imx_add_imx_dma("imx27-dma", MX27_DMA_BASE_ADDR, |
97 | MX27_INT_DMACH0, 0); /* No ERR irq */ | ||
94 | /* imx27 has the imx21 type audmux */ | 98 | /* imx27 has the imx21 type audmux */ |
95 | platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res, | 99 | platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res, |
96 | ARRAY_SIZE(imx27_audmux_res)); | 100 | ARRAY_SIZE(imx27_audmux_res)); |
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c index b5deb0554552..cefa047c4053 100644 --- a/arch/arm/mach-imx/mm-imx3.c +++ b/arch/arm/mach-imx/mm-imx3.c | |||
@@ -26,12 +26,11 @@ | |||
26 | #include <asm/hardware/cache-l2x0.h> | 26 | #include <asm/hardware/cache-l2x0.h> |
27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
28 | 28 | ||
29 | #include <mach/common.h> | 29 | #include "common.h" |
30 | #include <mach/devices-common.h> | ||
31 | #include <mach/hardware.h> | ||
32 | #include <mach/iomux-v3.h> | ||
33 | |||
34 | #include "crmregs-imx3.h" | 30 | #include "crmregs-imx3.h" |
31 | #include "devices/devices-common.h" | ||
32 | #include "hardware.h" | ||
33 | #include "iomux-v3.h" | ||
35 | 34 | ||
36 | void __iomem *mx3_ccm_base; | 35 | void __iomem *mx3_ccm_base; |
37 | 36 | ||
@@ -175,6 +174,8 @@ void __init imx31_soc_init(void) | |||
175 | 174 | ||
176 | imx3_init_l2x0(); | 175 | imx3_init_l2x0(); |
177 | 176 | ||
177 | mxc_device_init(); | ||
178 | |||
178 | mxc_register_gpio("imx31-gpio", 0, MX31_GPIO1_BASE_ADDR, SZ_16K, MX31_INT_GPIO1, 0); | 179 | mxc_register_gpio("imx31-gpio", 0, MX31_GPIO1_BASE_ADDR, SZ_16K, MX31_INT_GPIO1, 0); |
179 | mxc_register_gpio("imx31-gpio", 1, MX31_GPIO2_BASE_ADDR, SZ_16K, MX31_INT_GPIO2, 0); | 180 | mxc_register_gpio("imx31-gpio", 1, MX31_GPIO2_BASE_ADDR, SZ_16K, MX31_INT_GPIO2, 0); |
180 | mxc_register_gpio("imx31-gpio", 2, MX31_GPIO3_BASE_ADDR, SZ_16K, MX31_INT_GPIO3, 0); | 181 | mxc_register_gpio("imx31-gpio", 2, MX31_GPIO3_BASE_ADDR, SZ_16K, MX31_INT_GPIO3, 0); |
@@ -271,6 +272,8 @@ void __init imx35_soc_init(void) | |||
271 | 272 | ||
272 | imx3_init_l2x0(); | 273 | imx3_init_l2x0(); |
273 | 274 | ||
275 | mxc_device_init(); | ||
276 | |||
274 | mxc_register_gpio("imx35-gpio", 0, MX35_GPIO1_BASE_ADDR, SZ_16K, MX35_INT_GPIO1, 0); | 277 | mxc_register_gpio("imx35-gpio", 0, MX35_GPIO1_BASE_ADDR, SZ_16K, MX35_INT_GPIO1, 0); |
275 | mxc_register_gpio("imx35-gpio", 1, MX35_GPIO2_BASE_ADDR, SZ_16K, MX35_INT_GPIO2, 0); | 278 | mxc_register_gpio("imx35-gpio", 1, MX35_GPIO2_BASE_ADDR, SZ_16K, MX35_INT_GPIO2, 0); |
276 | mxc_register_gpio("imx35-gpio", 2, MX35_GPIO3_BASE_ADDR, SZ_16K, MX35_INT_GPIO3, 0); | 279 | mxc_register_gpio("imx35-gpio", 2, MX35_GPIO3_BASE_ADDR, SZ_16K, MX35_INT_GPIO3, 0); |
diff --git a/arch/arm/mach-imx/mm-imx5.c b/arch/arm/mach-imx/mm-imx5.c index acb0aadb4255..f92caf1b30ba 100644 --- a/arch/arm/mach-imx/mm-imx5.c +++ b/arch/arm/mach-imx/mm-imx5.c | |||
@@ -18,10 +18,10 @@ | |||
18 | 18 | ||
19 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
20 | 20 | ||
21 | #include <mach/hardware.h> | 21 | #include "common.h" |
22 | #include <mach/common.h> | 22 | #include "devices/devices-common.h" |
23 | #include <mach/devices-common.h> | 23 | #include "hardware.h" |
24 | #include <mach/iomux-v3.h> | 24 | #include "iomux-v3.h" |
25 | 25 | ||
26 | /* | 26 | /* |
27 | * Define the MX50 memory map. | 27 | * Define the MX50 memory map. |
@@ -138,6 +138,8 @@ static const struct resource imx51_audmux_res[] __initconst = { | |||
138 | 138 | ||
139 | void __init imx50_soc_init(void) | 139 | void __init imx50_soc_init(void) |
140 | { | 140 | { |
141 | mxc_device_init(); | ||
142 | |||
141 | /* i.mx50 has the i.mx35 type gpio */ | 143 | /* i.mx50 has the i.mx35 type gpio */ |
142 | mxc_register_gpio("imx35-gpio", 0, MX50_GPIO1_BASE_ADDR, SZ_16K, MX50_INT_GPIO1_LOW, MX50_INT_GPIO1_HIGH); | 144 | mxc_register_gpio("imx35-gpio", 0, MX50_GPIO1_BASE_ADDR, SZ_16K, MX50_INT_GPIO1_LOW, MX50_INT_GPIO1_HIGH); |
143 | mxc_register_gpio("imx35-gpio", 1, MX50_GPIO2_BASE_ADDR, SZ_16K, MX50_INT_GPIO2_LOW, MX50_INT_GPIO2_HIGH); | 145 | mxc_register_gpio("imx35-gpio", 1, MX50_GPIO2_BASE_ADDR, SZ_16K, MX50_INT_GPIO2_LOW, MX50_INT_GPIO2_HIGH); |
@@ -153,6 +155,8 @@ void __init imx50_soc_init(void) | |||
153 | 155 | ||
154 | void __init imx51_soc_init(void) | 156 | void __init imx51_soc_init(void) |
155 | { | 157 | { |
158 | mxc_device_init(); | ||
159 | |||
156 | /* i.mx51 has the i.mx35 type gpio */ | 160 | /* i.mx51 has the i.mx35 type gpio */ |
157 | mxc_register_gpio("imx35-gpio", 0, MX51_GPIO1_BASE_ADDR, SZ_16K, MX51_INT_GPIO1_LOW, MX51_INT_GPIO1_HIGH); | 161 | mxc_register_gpio("imx35-gpio", 0, MX51_GPIO1_BASE_ADDR, SZ_16K, MX51_INT_GPIO1_LOW, MX51_INT_GPIO1_HIGH); |
158 | mxc_register_gpio("imx35-gpio", 1, MX51_GPIO2_BASE_ADDR, SZ_16K, MX51_INT_GPIO2_LOW, MX51_INT_GPIO2_HIGH); | 162 | mxc_register_gpio("imx35-gpio", 1, MX51_GPIO2_BASE_ADDR, SZ_16K, MX51_INT_GPIO2_LOW, MX51_INT_GPIO2_HIGH); |
diff --git a/arch/arm/plat-mxc/include/mach/mx1.h b/arch/arm/mach-imx/mx1.h index 45bd31cc34d6..45bd31cc34d6 100644 --- a/arch/arm/plat-mxc/include/mach/mx1.h +++ b/arch/arm/mach-imx/mx1.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx21.h b/arch/arm/mach-imx/mx21.h index 468738aa997f..468738aa997f 100644 --- a/arch/arm/plat-mxc/include/mach/mx21.h +++ b/arch/arm/mach-imx/mx21.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx25.h b/arch/arm/mach-imx/mx25.h index ec466400a200..ec466400a200 100644 --- a/arch/arm/plat-mxc/include/mach/mx25.h +++ b/arch/arm/mach-imx/mx25.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx27.h b/arch/arm/mach-imx/mx27.h index e074616d54ca..e074616d54ca 100644 --- a/arch/arm/plat-mxc/include/mach/mx27.h +++ b/arch/arm/mach-imx/mx27.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx2x.h b/arch/arm/mach-imx/mx2x.h index 11642f5b224c..11642f5b224c 100644 --- a/arch/arm/plat-mxc/include/mach/mx2x.h +++ b/arch/arm/mach-imx/mx2x.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx31.h b/arch/arm/mach-imx/mx31.h index ee9b1f9215df..ee9b1f9215df 100644 --- a/arch/arm/plat-mxc/include/mach/mx31.h +++ b/arch/arm/mach-imx/mx31.h | |||
diff --git a/arch/arm/mach-imx/mx31lilly-db.c b/arch/arm/mach-imx/mx31lilly-db.c index 29e890f92055..d4361b80c5fb 100644 --- a/arch/arm/mach-imx/mx31lilly-db.c +++ b/arch/arm/mach-imx/mx31lilly-db.c | |||
@@ -30,12 +30,11 @@ | |||
30 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
32 | 32 | ||
33 | #include <mach/hardware.h> | 33 | #include "board-mx31lilly.h" |
34 | #include <mach/common.h> | 34 | #include "common.h" |
35 | #include <mach/iomux-mx3.h> | ||
36 | #include <mach/board-mx31lilly.h> | ||
37 | |||
38 | #include "devices-imx31.h" | 35 | #include "devices-imx31.h" |
36 | #include "hardware.h" | ||
37 | #include "iomux-mx3.h" | ||
39 | 38 | ||
40 | /* | 39 | /* |
41 | * This file contains board-specific initialization routines for the | 40 | * This file contains board-specific initialization routines for the |
diff --git a/arch/arm/mach-imx/mx31lite-db.c b/arch/arm/mach-imx/mx31lite-db.c index 83d17d9e0bc8..5a160b7e4fce 100644 --- a/arch/arm/mach-imx/mx31lite-db.c +++ b/arch/arm/mach-imx/mx31lite-db.c | |||
@@ -31,12 +31,11 @@ | |||
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 | 33 | ||
34 | #include <mach/hardware.h> | 34 | #include "board-mx31lite.h" |
35 | #include <mach/common.h> | 35 | #include "common.h" |
36 | #include <mach/iomux-mx3.h> | ||
37 | #include <mach/board-mx31lite.h> | ||
38 | |||
39 | #include "devices-imx31.h" | 36 | #include "devices-imx31.h" |
37 | #include "hardware.h" | ||
38 | #include "iomux-mx3.h" | ||
40 | 39 | ||
41 | /* | 40 | /* |
42 | * This file contains board-specific initialization routines for the | 41 | * This file contains board-specific initialization routines for the |
diff --git a/arch/arm/mach-imx/mx31moboard-devboard.c b/arch/arm/mach-imx/mx31moboard-devboard.c index cc285e507286..52d5b1574721 100644 --- a/arch/arm/mach-imx/mx31moboard-devboard.c +++ b/arch/arm/mach-imx/mx31moboard-devboard.c | |||
@@ -22,12 +22,11 @@ | |||
22 | 22 | ||
23 | #include <linux/usb/otg.h> | 23 | #include <linux/usb/otg.h> |
24 | 24 | ||
25 | #include <mach/common.h> | 25 | #include "common.h" |
26 | #include <mach/iomux-mx3.h> | ||
27 | #include <mach/hardware.h> | ||
28 | #include <mach/ulpi.h> | ||
29 | |||
30 | #include "devices-imx31.h" | 26 | #include "devices-imx31.h" |
27 | #include "hardware.h" | ||
28 | #include "iomux-mx3.h" | ||
29 | #include "ulpi.h" | ||
31 | 30 | ||
32 | static unsigned int devboard_pins[] = { | 31 | static unsigned int devboard_pins[] = { |
33 | /* UART1 */ | 32 | /* UART1 */ |
diff --git a/arch/arm/mach-imx/mx31moboard-marxbot.c b/arch/arm/mach-imx/mx31moboard-marxbot.c index 135c90e3a45f..a4f43e90f3c1 100644 --- a/arch/arm/mach-imx/mx31moboard-marxbot.c +++ b/arch/arm/mach-imx/mx31moboard-marxbot.c | |||
@@ -24,14 +24,13 @@ | |||
24 | 24 | ||
25 | #include <linux/usb/otg.h> | 25 | #include <linux/usb/otg.h> |
26 | 26 | ||
27 | #include <mach/common.h> | ||
28 | #include <mach/hardware.h> | ||
29 | #include <mach/iomux-mx3.h> | ||
30 | #include <mach/ulpi.h> | ||
31 | |||
32 | #include <media/soc_camera.h> | 27 | #include <media/soc_camera.h> |
33 | 28 | ||
29 | #include "common.h" | ||
34 | #include "devices-imx31.h" | 30 | #include "devices-imx31.h" |
31 | #include "hardware.h" | ||
32 | #include "iomux-mx3.h" | ||
33 | #include "ulpi.h" | ||
35 | 34 | ||
36 | static unsigned int marxbot_pins[] = { | 35 | static unsigned int marxbot_pins[] = { |
37 | /* SDHC2 */ | 36 | /* SDHC2 */ |
diff --git a/arch/arm/mach-imx/mx31moboard-smartbot.c b/arch/arm/mach-imx/mx31moboard-smartbot.c index fabb801e7994..04ae45dbfaa7 100644 --- a/arch/arm/mach-imx/mx31moboard-smartbot.c +++ b/arch/arm/mach-imx/mx31moboard-smartbot.c | |||
@@ -23,15 +23,14 @@ | |||
23 | #include <linux/usb/otg.h> | 23 | #include <linux/usb/otg.h> |
24 | #include <linux/usb/ulpi.h> | 24 | #include <linux/usb/ulpi.h> |
25 | 25 | ||
26 | #include <mach/common.h> | ||
27 | #include <mach/hardware.h> | ||
28 | #include <mach/iomux-mx3.h> | ||
29 | #include <mach/board-mx31moboard.h> | ||
30 | #include <mach/ulpi.h> | ||
31 | |||
32 | #include <media/soc_camera.h> | 26 | #include <media/soc_camera.h> |
33 | 27 | ||
28 | #include "board-mx31moboard.h" | ||
29 | #include "common.h" | ||
34 | #include "devices-imx31.h" | 30 | #include "devices-imx31.h" |
31 | #include "hardware.h" | ||
32 | #include "iomux-mx3.h" | ||
33 | #include "ulpi.h" | ||
35 | 34 | ||
36 | static unsigned int smartbot_pins[] = { | 35 | static unsigned int smartbot_pins[] = { |
37 | /* UART1 */ | 36 | /* UART1 */ |
diff --git a/arch/arm/plat-mxc/include/mach/mx35.h b/arch/arm/mach-imx/mx35.h index 2af5d3a699c7..2af5d3a699c7 100644 --- a/arch/arm/plat-mxc/include/mach/mx35.h +++ b/arch/arm/mach-imx/mx35.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx3x.h b/arch/arm/mach-imx/mx3x.h index 96fb4fbc8ad7..96fb4fbc8ad7 100644 --- a/arch/arm/plat-mxc/include/mach/mx3x.h +++ b/arch/arm/mach-imx/mx3x.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx50.h b/arch/arm/mach-imx/mx50.h index 09ac19c1570c..09ac19c1570c 100644 --- a/arch/arm/plat-mxc/include/mach/mx50.h +++ b/arch/arm/mach-imx/mx50.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx51.h b/arch/arm/mach-imx/mx51.h index af844f76261a..af844f76261a 100644 --- a/arch/arm/plat-mxc/include/mach/mx51.h +++ b/arch/arm/mach-imx/mx51.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx53.h b/arch/arm/mach-imx/mx53.h index f829d1c22501..f829d1c22501 100644 --- a/arch/arm/plat-mxc/include/mach/mx53.h +++ b/arch/arm/mach-imx/mx53.h | |||
diff --git a/arch/arm/plat-mxc/include/mach/mx6q.h b/arch/arm/mach-imx/mx6q.h index f7e7dbac8f4b..19d3f54db5af 100644 --- a/arch/arm/plat-mxc/include/mach/mx6q.h +++ b/arch/arm/mach-imx/mx6q.h | |||
@@ -27,9 +27,5 @@ | |||
27 | #define MX6Q_CCM_SIZE 0x4000 | 27 | #define MX6Q_CCM_SIZE 0x4000 |
28 | #define MX6Q_ANATOP_BASE_ADDR 0x020c8000 | 28 | #define MX6Q_ANATOP_BASE_ADDR 0x020c8000 |
29 | #define MX6Q_ANATOP_SIZE 0x1000 | 29 | #define MX6Q_ANATOP_SIZE 0x1000 |
30 | #define MX6Q_UART2_BASE_ADDR 0x021e8000 | ||
31 | #define MX6Q_UART2_SIZE 0x4000 | ||
32 | #define MX6Q_UART4_BASE_ADDR 0x021f0000 | ||
33 | #define MX6Q_UART4_SIZE 0x4000 | ||
34 | 30 | ||
35 | #endif /* __MACH_MX6Q_H__ */ | 31 | #endif /* __MACH_MX6Q_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/mach-imx/mxc.h index d78298366a91..d78298366a91 100644 --- a/arch/arm/plat-mxc/include/mach/mxc.h +++ b/arch/arm/mach-imx/mxc.h | |||
diff --git a/arch/arm/mach-imx/pcm970-baseboard.c b/arch/arm/mach-imx/pcm970-baseboard.c index 9917e2ff51da..51c608234089 100644 --- a/arch/arm/mach-imx/pcm970-baseboard.c +++ b/arch/arm/mach-imx/pcm970-baseboard.c | |||
@@ -23,11 +23,10 @@ | |||
23 | 23 | ||
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | 25 | ||
26 | #include <mach/common.h> | 26 | #include "common.h" |
27 | #include <mach/iomux-mx27.h> | ||
28 | #include <mach/hardware.h> | ||
29 | |||
30 | #include "devices-imx27.h" | 27 | #include "devices-imx27.h" |
28 | #include "hardware.h" | ||
29 | #include "iomux-mx27.h" | ||
31 | 30 | ||
32 | static const int pcm970_pins[] __initconst = { | 31 | static const int pcm970_pins[] __initconst = { |
33 | /* SDHC */ | 32 | /* SDHC */ |
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 2ac43e1a2dfd..3777b805b76b 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c | |||
@@ -16,8 +16,9 @@ | |||
16 | #include <asm/smp_scu.h> | 16 | #include <asm/smp_scu.h> |
17 | #include <asm/hardware/gic.h> | 17 | #include <asm/hardware/gic.h> |
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <mach/common.h> | 19 | |
20 | #include <mach/hardware.h> | 20 | #include "common.h" |
21 | #include "hardware.h" | ||
21 | 22 | ||
22 | static void __iomem *scu_base; | 23 | static void __iomem *scu_base; |
23 | 24 | ||
diff --git a/arch/arm/mach-imx/pm-imx27.c b/arch/arm/mach-imx/pm-imx27.c index 6fcffa7db978..56d02d064fbf 100644 --- a/arch/arm/mach-imx/pm-imx27.c +++ b/arch/arm/mach-imx/pm-imx27.c | |||
@@ -10,7 +10,8 @@ | |||
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/suspend.h> | 11 | #include <linux/suspend.h> |
12 | #include <linux/io.h> | 12 | #include <linux/io.h> |
13 | #include <mach/hardware.h> | 13 | |
14 | #include "hardware.h" | ||
14 | 15 | ||
15 | static int mx27_suspend_enter(suspend_state_t state) | 16 | static int mx27_suspend_enter(suspend_state_t state) |
16 | { | 17 | { |
diff --git a/arch/arm/mach-imx/pm-imx3.c b/arch/arm/mach-imx/pm-imx3.c index 822103bdb709..6a07006ff0f4 100644 --- a/arch/arm/mach-imx/pm-imx3.c +++ b/arch/arm/mach-imx/pm-imx3.c | |||
@@ -9,10 +9,11 @@ | |||
9 | * http://www.gnu.org/copyleft/gpl.html | 9 | * http://www.gnu.org/copyleft/gpl.html |
10 | */ | 10 | */ |
11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
12 | #include <mach/common.h> | 12 | |
13 | #include <mach/hardware.h> | 13 | #include "common.h" |
14 | #include <mach/devices-common.h> | ||
15 | #include "crmregs-imx3.h" | 14 | #include "crmregs-imx3.h" |
15 | #include "devices/devices-common.h" | ||
16 | #include "hardware.h" | ||
16 | 17 | ||
17 | /* | 18 | /* |
18 | * Set cpu low power mode before WFI instruction. This function is called | 19 | * Set cpu low power mode before WFI instruction. This function is called |
diff --git a/arch/arm/mach-imx/pm-imx5.c b/arch/arm/mach-imx/pm-imx5.c index 19621ed1ffa5..2e063c2deb9e 100644 --- a/arch/arm/mach-imx/pm-imx5.c +++ b/arch/arm/mach-imx/pm-imx5.c | |||
@@ -16,10 +16,11 @@ | |||
16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
17 | #include <asm/system_misc.h> | 17 | #include <asm/system_misc.h> |
18 | #include <asm/tlbflush.h> | 18 | #include <asm/tlbflush.h> |
19 | #include <mach/common.h> | 19 | |
20 | #include <mach/cpuidle.h> | 20 | #include "common.h" |
21 | #include <mach/hardware.h> | 21 | #include "cpuidle.h" |
22 | #include "crm-regs-imx5.h" | 22 | #include "crm-regs-imx5.h" |
23 | #include "hardware.h" | ||
23 | 24 | ||
24 | /* | 25 | /* |
25 | * The WAIT_UNCLOCKED_POWER_OFF state only requires <= 500ns to exit. | 26 | * The WAIT_UNCLOCKED_POWER_OFF state only requires <= 500ns to exit. |
diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c index f7b0c2b1b905..a17543da602d 100644 --- a/arch/arm/mach-imx/pm-imx6q.c +++ b/arch/arm/mach-imx/pm-imx6q.c | |||
@@ -18,8 +18,9 @@ | |||
18 | #include <asm/proc-fns.h> | 18 | #include <asm/proc-fns.h> |
19 | #include <asm/suspend.h> | 19 | #include <asm/suspend.h> |
20 | #include <asm/hardware/cache-l2x0.h> | 20 | #include <asm/hardware/cache-l2x0.h> |
21 | #include <mach/common.h> | 21 | |
22 | #include <mach/hardware.h> | 22 | #include "common.h" |
23 | #include "hardware.h" | ||
23 | 24 | ||
24 | extern unsigned long phys_l2x0_saved_regs; | 25 | extern unsigned long phys_l2x0_saved_regs; |
25 | 26 | ||
diff --git a/arch/arm/plat-mxc/ssi-fiq-ksym.c b/arch/arm/mach-imx/ssi-fiq-ksym.c index 792090f9a032..792090f9a032 100644 --- a/arch/arm/plat-mxc/ssi-fiq-ksym.c +++ b/arch/arm/mach-imx/ssi-fiq-ksym.c | |||
diff --git a/arch/arm/plat-mxc/ssi-fiq.S b/arch/arm/mach-imx/ssi-fiq.S index a8b93c5f29b5..a8b93c5f29b5 100644 --- a/arch/arm/plat-mxc/ssi-fiq.S +++ b/arch/arm/mach-imx/ssi-fiq.S | |||
diff --git a/arch/arm/plat-mxc/system.c b/arch/arm/mach-imx/system.c index 3da78cfc5a94..695e0d73bf85 100644 --- a/arch/arm/plat-mxc/system.c +++ b/arch/arm/mach-imx/system.c | |||
@@ -22,12 +22,13 @@ | |||
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <mach/common.h> | ||
27 | #include <asm/system_misc.h> | 25 | #include <asm/system_misc.h> |
28 | #include <asm/proc-fns.h> | 26 | #include <asm/proc-fns.h> |
29 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
30 | 28 | ||
29 | #include "common.h" | ||
30 | #include "hardware.h" | ||
31 | |||
31 | static void __iomem *wdog_base; | 32 | static void __iomem *wdog_base; |
32 | 33 | ||
33 | /* | 34 | /* |
diff --git a/arch/arm/plat-mxc/time.c b/arch/arm/mach-imx/time.c index a17abcf98325..f017302f6d09 100644 --- a/arch/arm/plat-mxc/time.c +++ b/arch/arm/mach-imx/time.c | |||
@@ -27,10 +27,11 @@ | |||
27 | #include <linux/clk.h> | 27 | #include <linux/clk.h> |
28 | #include <linux/err.h> | 28 | #include <linux/err.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | ||
31 | #include <asm/sched_clock.h> | 30 | #include <asm/sched_clock.h> |
32 | #include <asm/mach/time.h> | 31 | #include <asm/mach/time.h> |
33 | #include <mach/common.h> | 32 | |
33 | #include "common.h" | ||
34 | #include "hardware.h" | ||
34 | 35 | ||
35 | /* | 36 | /* |
36 | * There are 2 versions of the timer hardware on Freescale MXC hardware. | 37 | * There are 2 versions of the timer hardware on Freescale MXC hardware. |
diff --git a/arch/arm/plat-mxc/tzic.c b/arch/arm/mach-imx/tzic.c index 3ed1adbc09f8..9721161f208f 100644 --- a/arch/arm/plat-mxc/tzic.c +++ b/arch/arm/mach-imx/tzic.c | |||
@@ -21,10 +21,8 @@ | |||
21 | #include <asm/mach/irq.h> | 21 | #include <asm/mach/irq.h> |
22 | #include <asm/exception.h> | 22 | #include <asm/exception.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | 24 | #include "common.h" |
25 | #include <mach/common.h> | 25 | #include "hardware.h" |
26 | #include <mach/irqs.h> | ||
27 | |||
28 | #include "irq-common.h" | 26 | #include "irq-common.h" |
29 | 27 | ||
30 | /* | 28 | /* |
diff --git a/arch/arm/plat-mxc/ulpi.c b/arch/arm/mach-imx/ulpi.c index d2963427184f..0f051957d10c 100644 --- a/arch/arm/plat-mxc/ulpi.c +++ b/arch/arm/mach-imx/ulpi.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <linux/usb/otg.h> | 24 | #include <linux/usb/otg.h> |
25 | #include <linux/usb/ulpi.h> | 25 | #include <linux/usb/ulpi.h> |
26 | 26 | ||
27 | #include <mach/ulpi.h> | 27 | #include "ulpi.h" |
28 | 28 | ||
29 | /* ULPIVIEW register bits */ | 29 | /* ULPIVIEW register bits */ |
30 | #define ULPIVW_WU (1 << 31) /* Wakeup */ | 30 | #define ULPIVW_WU (1 << 31) /* Wakeup */ |
diff --git a/arch/arm/plat-mxc/include/mach/ulpi.h b/arch/arm/mach-imx/ulpi.h index 42bdaca6d7d9..42bdaca6d7d9 100644 --- a/arch/arm/plat-mxc/include/mach/ulpi.h +++ b/arch/arm/mach-imx/ulpi.h | |||
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig index 350e26636a06..abeff25532ab 100644 --- a/arch/arm/mach-integrator/Kconfig +++ b/arch/arm/mach-integrator/Kconfig | |||
@@ -8,6 +8,7 @@ config ARCH_INTEGRATOR_AP | |||
8 | select MIGHT_HAVE_PCI | 8 | select MIGHT_HAVE_PCI |
9 | select SERIAL_AMBA_PL010 | 9 | select SERIAL_AMBA_PL010 |
10 | select SERIAL_AMBA_PL010_CONSOLE | 10 | select SERIAL_AMBA_PL010_CONSOLE |
11 | select SOC_BUS | ||
11 | help | 12 | help |
12 | Include support for the ARM(R) Integrator/AP and | 13 | Include support for the ARM(R) Integrator/AP and |
13 | Integrator/PP2 platforms. | 14 | Integrator/PP2 platforms. |
@@ -19,6 +20,7 @@ config ARCH_INTEGRATOR_CP | |||
19 | select PLAT_VERSATILE_CLCD | 20 | select PLAT_VERSATILE_CLCD |
20 | select SERIAL_AMBA_PL011 | 21 | select SERIAL_AMBA_PL011 |
21 | select SERIAL_AMBA_PL011_CONSOLE | 22 | select SERIAL_AMBA_PL011_CONSOLE |
23 | select SOC_BUS | ||
22 | help | 24 | help |
23 | Include support for the ARM(R) Integrator CP platform. | 25 | Include support for the ARM(R) Integrator CP platform. |
24 | 26 | ||
diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h index c3ff21b5ea24..79197d8b34aa 100644 --- a/arch/arm/mach-integrator/common.h +++ b/arch/arm/mach-integrator/common.h | |||
@@ -1,6 +1,12 @@ | |||
1 | #include <linux/amba/serial.h> | 1 | #include <linux/amba/serial.h> |
2 | extern struct amba_pl010_data integrator_uart_data; | 2 | #ifdef CONFIG_ARCH_INTEGRATOR_AP |
3 | extern struct amba_pl010_data ap_uart_data; | ||
4 | #else | ||
5 | /* Not used without Integrator/AP support anyway */ | ||
6 | struct amba_pl010_data ap_uart_data {}; | ||
7 | #endif | ||
3 | void integrator_init_early(void); | 8 | void integrator_init_early(void); |
4 | int integrator_init(bool is_cp); | 9 | int integrator_init(bool is_cp); |
5 | void integrator_reserve(void); | 10 | void integrator_reserve(void); |
6 | void integrator_restart(char, const char *); | 11 | void integrator_restart(char, const char *); |
12 | void integrator_init_sysfs(struct device *parent, u32 id); | ||
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index ea22a17246d7..39c060f75e47 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c | |||
@@ -18,10 +18,10 @@ | |||
18 | #include <linux/memblock.h> | 18 | #include <linux/memblock.h> |
19 | #include <linux/sched.h> | 19 | #include <linux/sched.h> |
20 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
21 | #include <linux/termios.h> | ||
22 | #include <linux/amba/bus.h> | 21 | #include <linux/amba/bus.h> |
23 | #include <linux/amba/serial.h> | 22 | #include <linux/amba/serial.h> |
24 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/stat.h> | ||
25 | 25 | ||
26 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
27 | #include <mach/platform.h> | 27 | #include <mach/platform.h> |
@@ -46,10 +46,10 @@ static AMBA_APB_DEVICE(rtc, "rtc", 0, | |||
46 | INTEGRATOR_RTC_BASE, INTEGRATOR_RTC_IRQ, NULL); | 46 | INTEGRATOR_RTC_BASE, INTEGRATOR_RTC_IRQ, NULL); |
47 | 47 | ||
48 | static AMBA_APB_DEVICE(uart0, "uart0", 0, | 48 | static AMBA_APB_DEVICE(uart0, "uart0", 0, |
49 | INTEGRATOR_UART0_BASE, INTEGRATOR_UART0_IRQ, &integrator_uart_data); | 49 | INTEGRATOR_UART0_BASE, INTEGRATOR_UART0_IRQ, NULL); |
50 | 50 | ||
51 | static AMBA_APB_DEVICE(uart1, "uart1", 0, | 51 | static AMBA_APB_DEVICE(uart1, "uart1", 0, |
52 | INTEGRATOR_UART1_BASE, INTEGRATOR_UART1_IRQ, &integrator_uart_data); | 52 | INTEGRATOR_UART1_BASE, INTEGRATOR_UART1_IRQ, NULL); |
53 | 53 | ||
54 | static AMBA_APB_DEVICE(kmi0, "kmi0", 0, KMI0_BASE, KMI0_IRQ, NULL); | 54 | static AMBA_APB_DEVICE(kmi0, "kmi0", 0, KMI0_BASE, KMI0_IRQ, NULL); |
55 | static AMBA_APB_DEVICE(kmi1, "kmi1", 0, KMI1_BASE, KMI1_IRQ, NULL); | 55 | static AMBA_APB_DEVICE(kmi1, "kmi1", 0, KMI1_BASE, KMI1_IRQ, NULL); |
@@ -77,6 +77,8 @@ int __init integrator_init(bool is_cp) | |||
77 | uart1_device.periphid = 0x00041010; | 77 | uart1_device.periphid = 0x00041010; |
78 | kmi0_device.periphid = 0x00041050; | 78 | kmi0_device.periphid = 0x00041050; |
79 | kmi1_device.periphid = 0x00041050; | 79 | kmi1_device.periphid = 0x00041050; |
80 | uart0_device.dev.platform_data = &ap_uart_data; | ||
81 | uart1_device.dev.platform_data = &ap_uart_data; | ||
80 | } | 82 | } |
81 | 83 | ||
82 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 84 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
@@ -89,49 +91,6 @@ int __init integrator_init(bool is_cp) | |||
89 | 91 | ||
90 | #endif | 92 | #endif |
91 | 93 | ||
92 | /* | ||
93 | * On the Integrator platform, the port RTS and DTR are provided by | ||
94 | * bits in the following SC_CTRLS register bits: | ||
95 | * RTS DTR | ||
96 | * UART0 7 6 | ||
97 | * UART1 5 4 | ||
98 | */ | ||
99 | #define SC_CTRLC __io_address(INTEGRATOR_SC_CTRLC) | ||
100 | #define SC_CTRLS __io_address(INTEGRATOR_SC_CTRLS) | ||
101 | |||
102 | static void integrator_uart_set_mctrl(struct amba_device *dev, void __iomem *base, unsigned int mctrl) | ||
103 | { | ||
104 | unsigned int ctrls = 0, ctrlc = 0, rts_mask, dtr_mask; | ||
105 | u32 phybase = dev->res.start; | ||
106 | |||
107 | if (phybase == INTEGRATOR_UART0_BASE) { | ||
108 | /* UART0 */ | ||
109 | rts_mask = 1 << 4; | ||
110 | dtr_mask = 1 << 5; | ||
111 | } else { | ||
112 | /* UART1 */ | ||
113 | rts_mask = 1 << 6; | ||
114 | dtr_mask = 1 << 7; | ||
115 | } | ||
116 | |||
117 | if (mctrl & TIOCM_RTS) | ||
118 | ctrlc |= rts_mask; | ||
119 | else | ||
120 | ctrls |= rts_mask; | ||
121 | |||
122 | if (mctrl & TIOCM_DTR) | ||
123 | ctrlc |= dtr_mask; | ||
124 | else | ||
125 | ctrls |= dtr_mask; | ||
126 | |||
127 | __raw_writel(ctrls, SC_CTRLS); | ||
128 | __raw_writel(ctrlc, SC_CTRLC); | ||
129 | } | ||
130 | |||
131 | struct amba_pl010_data integrator_uart_data = { | ||
132 | .set_mctrl = integrator_uart_set_mctrl, | ||
133 | }; | ||
134 | |||
135 | static DEFINE_RAW_SPINLOCK(cm_lock); | 94 | static DEFINE_RAW_SPINLOCK(cm_lock); |
136 | 95 | ||
137 | /** | 96 | /** |
@@ -169,3 +128,93 @@ void integrator_restart(char mode, const char *cmd) | |||
169 | { | 128 | { |
170 | cm_control(CM_CTRL_RESET, CM_CTRL_RESET); | 129 | cm_control(CM_CTRL_RESET, CM_CTRL_RESET); |
171 | } | 130 | } |
131 | |||
132 | static u32 integrator_id; | ||
133 | |||
134 | static ssize_t intcp_get_manf(struct device *dev, | ||
135 | struct device_attribute *attr, | ||
136 | char *buf) | ||
137 | { | ||
138 | return sprintf(buf, "%02x\n", integrator_id >> 24); | ||
139 | } | ||
140 | |||
141 | static struct device_attribute intcp_manf_attr = | ||
142 | __ATTR(manufacturer, S_IRUGO, intcp_get_manf, NULL); | ||
143 | |||
144 | static ssize_t intcp_get_arch(struct device *dev, | ||
145 | struct device_attribute *attr, | ||
146 | char *buf) | ||
147 | { | ||
148 | const char *arch; | ||
149 | |||
150 | switch ((integrator_id >> 16) & 0xff) { | ||
151 | case 0x00: | ||
152 | arch = "ASB little-endian"; | ||
153 | break; | ||
154 | case 0x01: | ||
155 | arch = "AHB little-endian"; | ||
156 | break; | ||
157 | case 0x03: | ||
158 | arch = "AHB-Lite system bus, bi-endian"; | ||
159 | break; | ||
160 | case 0x04: | ||
161 | arch = "AHB"; | ||
162 | break; | ||
163 | default: | ||
164 | arch = "Unknown"; | ||
165 | break; | ||
166 | } | ||
167 | |||
168 | return sprintf(buf, "%s\n", arch); | ||
169 | } | ||
170 | |||
171 | static struct device_attribute intcp_arch_attr = | ||
172 | __ATTR(architecture, S_IRUGO, intcp_get_arch, NULL); | ||
173 | |||
174 | static ssize_t intcp_get_fpga(struct device *dev, | ||
175 | struct device_attribute *attr, | ||
176 | char *buf) | ||
177 | { | ||
178 | const char *fpga; | ||
179 | |||
180 | switch ((integrator_id >> 12) & 0xf) { | ||
181 | case 0x01: | ||
182 | fpga = "XC4062"; | ||
183 | break; | ||
184 | case 0x02: | ||
185 | fpga = "XC4085"; | ||
186 | break; | ||
187 | case 0x04: | ||
188 | fpga = "EPM7256AE (Altera PLD)"; | ||
189 | break; | ||
190 | default: | ||
191 | fpga = "Unknown"; | ||
192 | break; | ||
193 | } | ||
194 | |||
195 | return sprintf(buf, "%s\n", fpga); | ||
196 | } | ||
197 | |||
198 | static struct device_attribute intcp_fpga_attr = | ||
199 | __ATTR(fpga, S_IRUGO, intcp_get_fpga, NULL); | ||
200 | |||
201 | static ssize_t intcp_get_build(struct device *dev, | ||
202 | struct device_attribute *attr, | ||
203 | char *buf) | ||
204 | { | ||
205 | return sprintf(buf, "%02x\n", (integrator_id >> 4) & 0xFF); | ||
206 | } | ||
207 | |||
208 | static struct device_attribute intcp_build_attr = | ||
209 | __ATTR(build, S_IRUGO, intcp_get_build, NULL); | ||
210 | |||
211 | |||
212 | |||
213 | void integrator_init_sysfs(struct device *parent, u32 id) | ||
214 | { | ||
215 | integrator_id = id; | ||
216 | device_create_file(parent, &intcp_manf_attr); | ||
217 | device_create_file(parent, &intcp_arch_attr); | ||
218 | device_create_file(parent, &intcp_fpga_attr); | ||
219 | device_create_file(parent, &intcp_build_attr); | ||
220 | } | ||
diff --git a/arch/arm/mach-integrator/include/mach/platform.h b/arch/arm/mach-integrator/include/mach/platform.h index efeac5d0bc9e..be5859efe10e 100644 --- a/arch/arm/mach-integrator/include/mach/platform.h +++ b/arch/arm/mach-integrator/include/mach/platform.h | |||
@@ -190,7 +190,6 @@ | |||
190 | #define INTEGRATOR_SC_CTRLC_OFFSET 0x0C | 190 | #define INTEGRATOR_SC_CTRLC_OFFSET 0x0C |
191 | #define INTEGRATOR_SC_DEC_OFFSET 0x10 | 191 | #define INTEGRATOR_SC_DEC_OFFSET 0x10 |
192 | #define INTEGRATOR_SC_ARB_OFFSET 0x14 | 192 | #define INTEGRATOR_SC_ARB_OFFSET 0x14 |
193 | #define INTEGRATOR_SC_PCIENABLE_OFFSET 0x18 | ||
194 | #define INTEGRATOR_SC_LOCK_OFFSET 0x1C | 193 | #define INTEGRATOR_SC_LOCK_OFFSET 0x1C |
195 | 194 | ||
196 | #define INTEGRATOR_SC_BASE 0x11000000 | 195 | #define INTEGRATOR_SC_BASE 0x11000000 |
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index e6617c134faf..a0a7cbbb7a70 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c | |||
@@ -37,6 +37,9 @@ | |||
37 | #include <linux/of_irq.h> | 37 | #include <linux/of_irq.h> |
38 | #include <linux/of_address.h> | 38 | #include <linux/of_address.h> |
39 | #include <linux/of_platform.h> | 39 | #include <linux/of_platform.h> |
40 | #include <linux/stat.h> | ||
41 | #include <linux/sys_soc.h> | ||
42 | #include <linux/termios.h> | ||
40 | #include <video/vga.h> | 43 | #include <video/vga.h> |
41 | 44 | ||
42 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
@@ -60,7 +63,10 @@ | |||
60 | 63 | ||
61 | #include "common.h" | 64 | #include "common.h" |
62 | 65 | ||
63 | /* | 66 | /* Base address to the AP system controller */ |
67 | void __iomem *ap_syscon_base; | ||
68 | |||
69 | /* | ||
64 | * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx | 70 | * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx |
65 | * is the (PA >> 12). | 71 | * is the (PA >> 12). |
66 | * | 72 | * |
@@ -68,7 +74,6 @@ | |||
68 | * just for now). | 74 | * just for now). |
69 | */ | 75 | */ |
70 | #define VA_IC_BASE __io_address(INTEGRATOR_IC_BASE) | 76 | #define VA_IC_BASE __io_address(INTEGRATOR_IC_BASE) |
71 | #define VA_SC_BASE __io_address(INTEGRATOR_SC_BASE) | ||
72 | #define VA_EBI_BASE __io_address(INTEGRATOR_EBI_BASE) | 77 | #define VA_EBI_BASE __io_address(INTEGRATOR_EBI_BASE) |
73 | #define VA_CMIC_BASE __io_address(INTEGRATOR_HDR_IC) | 78 | #define VA_CMIC_BASE __io_address(INTEGRATOR_HDR_IC) |
74 | 79 | ||
@@ -97,11 +102,6 @@ static struct map_desc ap_io_desc[] __initdata = { | |||
97 | .length = SZ_4K, | 102 | .length = SZ_4K, |
98 | .type = MT_DEVICE | 103 | .type = MT_DEVICE |
99 | }, { | 104 | }, { |
100 | .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE), | ||
101 | .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE), | ||
102 | .length = SZ_4K, | ||
103 | .type = MT_DEVICE | ||
104 | }, { | ||
105 | .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE), | 105 | .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE), |
106 | .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE), | 106 | .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE), |
107 | .length = SZ_4K, | 107 | .length = SZ_4K, |
@@ -122,11 +122,6 @@ static struct map_desc ap_io_desc[] __initdata = { | |||
122 | .length = SZ_4K, | 122 | .length = SZ_4K, |
123 | .type = MT_DEVICE | 123 | .type = MT_DEVICE |
124 | }, { | 124 | }, { |
125 | .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE), | ||
126 | .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE), | ||
127 | .length = SZ_4K, | ||
128 | .type = MT_DEVICE | ||
129 | }, { | ||
130 | .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE), | 125 | .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE), |
131 | .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE), | 126 | .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE), |
132 | .length = SZ_4K, | 127 | .length = SZ_4K, |
@@ -201,8 +196,6 @@ device_initcall(irq_syscore_init); | |||
201 | /* | 196 | /* |
202 | * Flash handling. | 197 | * Flash handling. |
203 | */ | 198 | */ |
204 | #define SC_CTRLC (VA_SC_BASE + INTEGRATOR_SC_CTRLC_OFFSET) | ||
205 | #define SC_CTRLS (VA_SC_BASE + INTEGRATOR_SC_CTRLS_OFFSET) | ||
206 | #define EBI_CSR1 (VA_EBI_BASE + INTEGRATOR_EBI_CSR1_OFFSET) | 199 | #define EBI_CSR1 (VA_EBI_BASE + INTEGRATOR_EBI_CSR1_OFFSET) |
207 | #define EBI_LOCK (VA_EBI_BASE + INTEGRATOR_EBI_LOCK_OFFSET) | 200 | #define EBI_LOCK (VA_EBI_BASE + INTEGRATOR_EBI_LOCK_OFFSET) |
208 | 201 | ||
@@ -210,7 +203,8 @@ static int ap_flash_init(struct platform_device *dev) | |||
210 | { | 203 | { |
211 | u32 tmp; | 204 | u32 tmp; |
212 | 205 | ||
213 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, SC_CTRLC); | 206 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, |
207 | ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); | ||
214 | 208 | ||
215 | tmp = readl(EBI_CSR1) | INTEGRATOR_EBI_WRITE_ENABLE; | 209 | tmp = readl(EBI_CSR1) | INTEGRATOR_EBI_WRITE_ENABLE; |
216 | writel(tmp, EBI_CSR1); | 210 | writel(tmp, EBI_CSR1); |
@@ -227,7 +221,8 @@ static void ap_flash_exit(struct platform_device *dev) | |||
227 | { | 221 | { |
228 | u32 tmp; | 222 | u32 tmp; |
229 | 223 | ||
230 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, SC_CTRLC); | 224 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, |
225 | ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); | ||
231 | 226 | ||
232 | tmp = readl(EBI_CSR1) & ~INTEGRATOR_EBI_WRITE_ENABLE; | 227 | tmp = readl(EBI_CSR1) & ~INTEGRATOR_EBI_WRITE_ENABLE; |
233 | writel(tmp, EBI_CSR1); | 228 | writel(tmp, EBI_CSR1); |
@@ -241,9 +236,12 @@ static void ap_flash_exit(struct platform_device *dev) | |||
241 | 236 | ||
242 | static void ap_flash_set_vpp(struct platform_device *pdev, int on) | 237 | static void ap_flash_set_vpp(struct platform_device *pdev, int on) |
243 | { | 238 | { |
244 | void __iomem *reg = on ? SC_CTRLS : SC_CTRLC; | 239 | if (on) |
245 | 240 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN, | |
246 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN, reg); | 241 | ap_syscon_base + INTEGRATOR_SC_CTRLS_OFFSET); |
242 | else | ||
243 | writel(INTEGRATOR_SC_CTRL_nFLVPPEN, | ||
244 | ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); | ||
247 | } | 245 | } |
248 | 246 | ||
249 | static struct physmap_flash_data ap_flash_data = { | 247 | static struct physmap_flash_data ap_flash_data = { |
@@ -254,6 +252,45 @@ static struct physmap_flash_data ap_flash_data = { | |||
254 | }; | 252 | }; |
255 | 253 | ||
256 | /* | 254 | /* |
255 | * For the PL010 found in the Integrator/AP some of the UART control is | ||
256 | * implemented in the system controller and accessed using a callback | ||
257 | * from the driver. | ||
258 | */ | ||
259 | static void integrator_uart_set_mctrl(struct amba_device *dev, | ||
260 | void __iomem *base, unsigned int mctrl) | ||
261 | { | ||
262 | unsigned int ctrls = 0, ctrlc = 0, rts_mask, dtr_mask; | ||
263 | u32 phybase = dev->res.start; | ||
264 | |||
265 | if (phybase == INTEGRATOR_UART0_BASE) { | ||
266 | /* UART0 */ | ||
267 | rts_mask = 1 << 4; | ||
268 | dtr_mask = 1 << 5; | ||
269 | } else { | ||
270 | /* UART1 */ | ||
271 | rts_mask = 1 << 6; | ||
272 | dtr_mask = 1 << 7; | ||
273 | } | ||
274 | |||
275 | if (mctrl & TIOCM_RTS) | ||
276 | ctrlc |= rts_mask; | ||
277 | else | ||
278 | ctrls |= rts_mask; | ||
279 | |||
280 | if (mctrl & TIOCM_DTR) | ||
281 | ctrlc |= dtr_mask; | ||
282 | else | ||
283 | ctrls |= dtr_mask; | ||
284 | |||
285 | __raw_writel(ctrls, ap_syscon_base + INTEGRATOR_SC_CTRLS_OFFSET); | ||
286 | __raw_writel(ctrlc, ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); | ||
287 | } | ||
288 | |||
289 | struct amba_pl010_data ap_uart_data = { | ||
290 | .set_mctrl = integrator_uart_set_mctrl, | ||
291 | }; | ||
292 | |||
293 | /* | ||
257 | * Where is the timer (VA)? | 294 | * Where is the timer (VA)? |
258 | */ | 295 | */ |
259 | #define TIMER0_VA_BASE __io_address(INTEGRATOR_TIMER0_BASE) | 296 | #define TIMER0_VA_BASE __io_address(INTEGRATOR_TIMER0_BASE) |
@@ -450,9 +487,9 @@ static struct of_dev_auxdata ap_auxdata_lookup[] __initdata = { | |||
450 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_RTC_BASE, | 487 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_RTC_BASE, |
451 | "rtc", NULL), | 488 | "rtc", NULL), |
452 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART0_BASE, | 489 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART0_BASE, |
453 | "uart0", &integrator_uart_data), | 490 | "uart0", &ap_uart_data), |
454 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART1_BASE, | 491 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART1_BASE, |
455 | "uart1", &integrator_uart_data), | 492 | "uart1", &ap_uart_data), |
456 | OF_DEV_AUXDATA("arm,primecell", KMI0_BASE, | 493 | OF_DEV_AUXDATA("arm,primecell", KMI0_BASE, |
457 | "kmi0", NULL), | 494 | "kmi0", NULL), |
458 | OF_DEV_AUXDATA("arm,primecell", KMI1_BASE, | 495 | OF_DEV_AUXDATA("arm,primecell", KMI1_BASE, |
@@ -465,12 +502,60 @@ static struct of_dev_auxdata ap_auxdata_lookup[] __initdata = { | |||
465 | static void __init ap_init_of(void) | 502 | static void __init ap_init_of(void) |
466 | { | 503 | { |
467 | unsigned long sc_dec; | 504 | unsigned long sc_dec; |
505 | struct device_node *root; | ||
506 | struct device_node *syscon; | ||
507 | struct device *parent; | ||
508 | struct soc_device *soc_dev; | ||
509 | struct soc_device_attribute *soc_dev_attr; | ||
510 | u32 ap_sc_id; | ||
511 | int err; | ||
468 | int i; | 512 | int i; |
469 | 513 | ||
470 | of_platform_populate(NULL, of_default_bus_match_table, | 514 | /* Here we create an SoC device for the root node */ |
471 | ap_auxdata_lookup, NULL); | 515 | root = of_find_node_by_path("/"); |
516 | if (!root) | ||
517 | return; | ||
518 | syscon = of_find_node_by_path("/syscon"); | ||
519 | if (!syscon) | ||
520 | return; | ||
521 | |||
522 | ap_syscon_base = of_iomap(syscon, 0); | ||
523 | if (!ap_syscon_base) | ||
524 | return; | ||
472 | 525 | ||
473 | sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET); | 526 | ap_sc_id = readl(ap_syscon_base); |
527 | |||
528 | soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); | ||
529 | if (!soc_dev_attr) | ||
530 | return; | ||
531 | |||
532 | err = of_property_read_string(root, "compatible", | ||
533 | &soc_dev_attr->soc_id); | ||
534 | if (err) | ||
535 | return; | ||
536 | err = of_property_read_string(root, "model", &soc_dev_attr->machine); | ||
537 | if (err) | ||
538 | return; | ||
539 | soc_dev_attr->family = "Integrator"; | ||
540 | soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%c", | ||
541 | 'A' + (ap_sc_id & 0x0f)); | ||
542 | |||
543 | soc_dev = soc_device_register(soc_dev_attr); | ||
544 | if (IS_ERR_OR_NULL(soc_dev)) { | ||
545 | kfree(soc_dev_attr->revision); | ||
546 | kfree(soc_dev_attr); | ||
547 | return; | ||
548 | } | ||
549 | |||
550 | parent = soc_device_to_device(soc_dev); | ||
551 | |||
552 | if (!IS_ERR_OR_NULL(parent)) | ||
553 | integrator_init_sysfs(parent, ap_sc_id); | ||
554 | |||
555 | of_platform_populate(root, of_default_bus_match_table, | ||
556 | ap_auxdata_lookup, parent); | ||
557 | |||
558 | sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET); | ||
474 | for (i = 0; i < 4; i++) { | 559 | for (i = 0; i < 4; i++) { |
475 | struct lm_device *lmdev; | 560 | struct lm_device *lmdev; |
476 | 561 | ||
@@ -514,6 +599,27 @@ MACHINE_END | |||
514 | #ifdef CONFIG_ATAGS | 599 | #ifdef CONFIG_ATAGS |
515 | 600 | ||
516 | /* | 601 | /* |
602 | * For the ATAG boot some static mappings are needed. This will | ||
603 | * go away with the ATAG support down the road. | ||
604 | */ | ||
605 | |||
606 | static struct map_desc ap_io_desc_atag[] __initdata = { | ||
607 | { | ||
608 | .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE), | ||
609 | .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE), | ||
610 | .length = SZ_4K, | ||
611 | .type = MT_DEVICE | ||
612 | }, | ||
613 | }; | ||
614 | |||
615 | static void __init ap_map_io_atag(void) | ||
616 | { | ||
617 | iotable_init(ap_io_desc_atag, ARRAY_SIZE(ap_io_desc_atag)); | ||
618 | ap_syscon_base = __io_address(INTEGRATOR_SC_BASE); | ||
619 | ap_map_io(); | ||
620 | } | ||
621 | |||
622 | /* | ||
517 | * This is where non-devicetree initialization code is collected and stashed | 623 | * This is where non-devicetree initialization code is collected and stashed |
518 | * for eventual deletion. | 624 | * for eventual deletion. |
519 | */ | 625 | */ |
@@ -581,7 +687,7 @@ static void __init ap_init(void) | |||
581 | 687 | ||
582 | platform_device_register(&cfi_flash_device); | 688 | platform_device_register(&cfi_flash_device); |
583 | 689 | ||
584 | sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET); | 690 | sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET); |
585 | for (i = 0; i < 4; i++) { | 691 | for (i = 0; i < 4; i++) { |
586 | struct lm_device *lmdev; | 692 | struct lm_device *lmdev; |
587 | 693 | ||
@@ -608,7 +714,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator") | |||
608 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 714 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
609 | .atag_offset = 0x100, | 715 | .atag_offset = 0x100, |
610 | .reserve = integrator_reserve, | 716 | .reserve = integrator_reserve, |
611 | .map_io = ap_map_io, | 717 | .map_io = ap_map_io_atag, |
612 | .nr_irqs = NR_IRQS_INTEGRATOR_AP, | 718 | .nr_irqs = NR_IRQS_INTEGRATOR_AP, |
613 | .init_early = ap_init_early, | 719 | .init_early = ap_init_early, |
614 | .init_irq = ap_init_irq, | 720 | .init_irq = ap_init_irq, |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 5b08e8e4cc83..29df06b35d0d 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/of_irq.h> | 26 | #include <linux/of_irq.h> |
27 | #include <linux/of_address.h> | 27 | #include <linux/of_address.h> |
28 | #include <linux/of_platform.h> | 28 | #include <linux/of_platform.h> |
29 | #include <linux/sys_soc.h> | ||
29 | 30 | ||
30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
31 | #include <mach/platform.h> | 32 | #include <mach/platform.h> |
@@ -51,11 +52,13 @@ | |||
51 | 52 | ||
52 | #include "common.h" | 53 | #include "common.h" |
53 | 54 | ||
55 | /* Base address to the CP controller */ | ||
56 | static void __iomem *intcp_con_base; | ||
57 | |||
54 | #define INTCP_PA_FLASH_BASE 0x24000000 | 58 | #define INTCP_PA_FLASH_BASE 0x24000000 |
55 | 59 | ||
56 | #define INTCP_PA_CLCD_BASE 0xc0000000 | 60 | #define INTCP_PA_CLCD_BASE 0xc0000000 |
57 | 61 | ||
58 | #define INTCP_VA_CTRL_BASE __io_address(INTEGRATOR_CP_CTL_BASE) | ||
59 | #define INTCP_FLASHPROG 0x04 | 62 | #define INTCP_FLASHPROG 0x04 |
60 | #define CINTEGRATOR_FLASHPROG_FLVPPEN (1 << 0) | 63 | #define CINTEGRATOR_FLASHPROG_FLVPPEN (1 << 0) |
61 | #define CINTEGRATOR_FLASHPROG_FLWREN (1 << 1) | 64 | #define CINTEGRATOR_FLASHPROG_FLWREN (1 << 1) |
@@ -82,11 +85,6 @@ static struct map_desc intcp_io_desc[] __initdata = { | |||
82 | .length = SZ_4K, | 85 | .length = SZ_4K, |
83 | .type = MT_DEVICE | 86 | .type = MT_DEVICE |
84 | }, { | 87 | }, { |
85 | .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE), | ||
86 | .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE), | ||
87 | .length = SZ_4K, | ||
88 | .type = MT_DEVICE | ||
89 | }, { | ||
90 | .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE), | 88 | .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE), |
91 | .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE), | 89 | .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE), |
92 | .length = SZ_4K, | 90 | .length = SZ_4K, |
@@ -107,11 +105,6 @@ static struct map_desc intcp_io_desc[] __initdata = { | |||
107 | .length = SZ_4K, | 105 | .length = SZ_4K, |
108 | .type = MT_DEVICE | 106 | .type = MT_DEVICE |
109 | }, { | 107 | }, { |
110 | .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE), | ||
111 | .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE), | ||
112 | .length = SZ_4K, | ||
113 | .type = MT_DEVICE | ||
114 | }, { | ||
115 | .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE), | 108 | .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE), |
116 | .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE), | 109 | .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE), |
117 | .length = SZ_4K, | 110 | .length = SZ_4K, |
@@ -126,11 +119,6 @@ static struct map_desc intcp_io_desc[] __initdata = { | |||
126 | .pfn = __phys_to_pfn(INTEGRATOR_CP_SIC_BASE), | 119 | .pfn = __phys_to_pfn(INTEGRATOR_CP_SIC_BASE), |
127 | .length = SZ_4K, | 120 | .length = SZ_4K, |
128 | .type = MT_DEVICE | 121 | .type = MT_DEVICE |
129 | }, { | ||
130 | .virtual = IO_ADDRESS(INTEGRATOR_CP_CTL_BASE), | ||
131 | .pfn = __phys_to_pfn(INTEGRATOR_CP_CTL_BASE), | ||
132 | .length = SZ_4K, | ||
133 | .type = MT_DEVICE | ||
134 | } | 122 | } |
135 | }; | 123 | }; |
136 | 124 | ||
@@ -146,9 +134,9 @@ static int intcp_flash_init(struct platform_device *dev) | |||
146 | { | 134 | { |
147 | u32 val; | 135 | u32 val; |
148 | 136 | ||
149 | val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 137 | val = readl(intcp_con_base + INTCP_FLASHPROG); |
150 | val |= CINTEGRATOR_FLASHPROG_FLWREN; | 138 | val |= CINTEGRATOR_FLASHPROG_FLWREN; |
151 | writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 139 | writel(val, intcp_con_base + INTCP_FLASHPROG); |
152 | 140 | ||
153 | return 0; | 141 | return 0; |
154 | } | 142 | } |
@@ -157,21 +145,21 @@ static void intcp_flash_exit(struct platform_device *dev) | |||
157 | { | 145 | { |
158 | u32 val; | 146 | u32 val; |
159 | 147 | ||
160 | val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 148 | val = readl(intcp_con_base + INTCP_FLASHPROG); |
161 | val &= ~(CINTEGRATOR_FLASHPROG_FLVPPEN|CINTEGRATOR_FLASHPROG_FLWREN); | 149 | val &= ~(CINTEGRATOR_FLASHPROG_FLVPPEN|CINTEGRATOR_FLASHPROG_FLWREN); |
162 | writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 150 | writel(val, intcp_con_base + INTCP_FLASHPROG); |
163 | } | 151 | } |
164 | 152 | ||
165 | static void intcp_flash_set_vpp(struct platform_device *pdev, int on) | 153 | static void intcp_flash_set_vpp(struct platform_device *pdev, int on) |
166 | { | 154 | { |
167 | u32 val; | 155 | u32 val; |
168 | 156 | ||
169 | val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 157 | val = readl(intcp_con_base + INTCP_FLASHPROG); |
170 | if (on) | 158 | if (on) |
171 | val |= CINTEGRATOR_FLASHPROG_FLVPPEN; | 159 | val |= CINTEGRATOR_FLASHPROG_FLVPPEN; |
172 | else | 160 | else |
173 | val &= ~CINTEGRATOR_FLASHPROG_FLVPPEN; | 161 | val &= ~CINTEGRATOR_FLASHPROG_FLVPPEN; |
174 | writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG); | 162 | writel(val, intcp_con_base + INTCP_FLASHPROG); |
175 | } | 163 | } |
176 | 164 | ||
177 | static struct physmap_flash_data intcp_flash_data = { | 165 | static struct physmap_flash_data intcp_flash_data = { |
@@ -190,7 +178,7 @@ static struct physmap_flash_data intcp_flash_data = { | |||
190 | static unsigned int mmc_status(struct device *dev) | 178 | static unsigned int mmc_status(struct device *dev) |
191 | { | 179 | { |
192 | unsigned int status = readl(__io_address(0xca000000 + 4)); | 180 | unsigned int status = readl(__io_address(0xca000000 + 4)); |
193 | writel(8, __io_address(INTEGRATOR_CP_CTL_BASE + 8)); | 181 | writel(8, intcp_con_base + 8); |
194 | 182 | ||
195 | return status & 8; | 183 | return status & 8; |
196 | } | 184 | } |
@@ -318,9 +306,9 @@ static struct of_dev_auxdata intcp_auxdata_lookup[] __initdata = { | |||
318 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_RTC_BASE, | 306 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_RTC_BASE, |
319 | "rtc", NULL), | 307 | "rtc", NULL), |
320 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART0_BASE, | 308 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART0_BASE, |
321 | "uart0", &integrator_uart_data), | 309 | "uart0", NULL), |
322 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART1_BASE, | 310 | OF_DEV_AUXDATA("arm,primecell", INTEGRATOR_UART1_BASE, |
323 | "uart1", &integrator_uart_data), | 311 | "uart1", NULL), |
324 | OF_DEV_AUXDATA("arm,primecell", KMI0_BASE, | 312 | OF_DEV_AUXDATA("arm,primecell", KMI0_BASE, |
325 | "kmi0", NULL), | 313 | "kmi0", NULL), |
326 | OF_DEV_AUXDATA("arm,primecell", KMI1_BASE, | 314 | OF_DEV_AUXDATA("arm,primecell", KMI1_BASE, |
@@ -338,8 +326,57 @@ static struct of_dev_auxdata intcp_auxdata_lookup[] __initdata = { | |||
338 | 326 | ||
339 | static void __init intcp_init_of(void) | 327 | static void __init intcp_init_of(void) |
340 | { | 328 | { |
341 | of_platform_populate(NULL, of_default_bus_match_table, | 329 | struct device_node *root; |
342 | intcp_auxdata_lookup, NULL); | 330 | struct device_node *cpcon; |
331 | struct device *parent; | ||
332 | struct soc_device *soc_dev; | ||
333 | struct soc_device_attribute *soc_dev_attr; | ||
334 | u32 intcp_sc_id; | ||
335 | int err; | ||
336 | |||
337 | /* Here we create an SoC device for the root node */ | ||
338 | root = of_find_node_by_path("/"); | ||
339 | if (!root) | ||
340 | return; | ||
341 | cpcon = of_find_node_by_path("/cpcon"); | ||
342 | if (!cpcon) | ||
343 | return; | ||
344 | |||
345 | intcp_con_base = of_iomap(cpcon, 0); | ||
346 | if (!intcp_con_base) | ||
347 | return; | ||
348 | |||
349 | intcp_sc_id = readl(intcp_con_base); | ||
350 | |||
351 | soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); | ||
352 | if (!soc_dev_attr) | ||
353 | return; | ||
354 | |||
355 | err = of_property_read_string(root, "compatible", | ||
356 | &soc_dev_attr->soc_id); | ||
357 | if (err) | ||
358 | return; | ||
359 | err = of_property_read_string(root, "model", &soc_dev_attr->machine); | ||
360 | if (err) | ||
361 | return; | ||
362 | soc_dev_attr->family = "Integrator"; | ||
363 | soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%c", | ||
364 | 'A' + (intcp_sc_id & 0x0f)); | ||
365 | |||
366 | soc_dev = soc_device_register(soc_dev_attr); | ||
367 | if (IS_ERR_OR_NULL(soc_dev)) { | ||
368 | kfree(soc_dev_attr->revision); | ||
369 | kfree(soc_dev_attr); | ||
370 | return; | ||
371 | } | ||
372 | |||
373 | parent = soc_device_to_device(soc_dev); | ||
374 | |||
375 | if (!IS_ERR_OR_NULL(parent)) | ||
376 | integrator_init_sysfs(parent, intcp_sc_id); | ||
377 | |||
378 | of_platform_populate(root, of_default_bus_match_table, | ||
379 | intcp_auxdata_lookup, parent); | ||
343 | } | 380 | } |
344 | 381 | ||
345 | static const char * intcp_dt_board_compat[] = { | 382 | static const char * intcp_dt_board_compat[] = { |
@@ -365,6 +402,28 @@ MACHINE_END | |||
365 | #ifdef CONFIG_ATAGS | 402 | #ifdef CONFIG_ATAGS |
366 | 403 | ||
367 | /* | 404 | /* |
405 | * For the ATAG boot some static mappings are needed. This will | ||
406 | * go away with the ATAG support down the road. | ||
407 | */ | ||
408 | |||
409 | static struct map_desc intcp_io_desc_atag[] __initdata = { | ||
410 | { | ||
411 | .virtual = IO_ADDRESS(INTEGRATOR_CP_CTL_BASE), | ||
412 | .pfn = __phys_to_pfn(INTEGRATOR_CP_CTL_BASE), | ||
413 | .length = SZ_4K, | ||
414 | .type = MT_DEVICE | ||
415 | }, | ||
416 | }; | ||
417 | |||
418 | static void __init intcp_map_io_atag(void) | ||
419 | { | ||
420 | iotable_init(intcp_io_desc_atag, ARRAY_SIZE(intcp_io_desc_atag)); | ||
421 | intcp_con_base = __io_address(INTEGRATOR_CP_CTL_BASE); | ||
422 | intcp_map_io(); | ||
423 | } | ||
424 | |||
425 | |||
426 | /* | ||
368 | * This is where non-devicetree initialization code is collected and stashed | 427 | * This is where non-devicetree initialization code is collected and stashed |
369 | * for eventual deletion. | 428 | * for eventual deletion. |
370 | */ | 429 | */ |
@@ -503,7 +562,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP") | |||
503 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 562 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
504 | .atag_offset = 0x100, | 563 | .atag_offset = 0x100, |
505 | .reserve = integrator_reserve, | 564 | .reserve = integrator_reserve, |
506 | .map_io = intcp_map_io, | 565 | .map_io = intcp_map_io_atag, |
507 | .nr_irqs = NR_IRQS_INTEGRATOR_CP, | 566 | .nr_irqs = NR_IRQS_INTEGRATOR_CP, |
508 | .init_early = intcp_init_early, | 567 | .init_early = intcp_init_early, |
509 | .init_irq = intcp_init_irq, | 568 | .init_irq = intcp_init_irq, |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index bbeca59df66b..be50e795536d 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
@@ -191,12 +191,9 @@ static void __iomem *v3_open_config_window(struct pci_bus *bus, | |||
191 | /* | 191 | /* |
192 | * Trap out illegal values | 192 | * Trap out illegal values |
193 | */ | 193 | */ |
194 | if (offset > 255) | 194 | BUG_ON(offset > 255); |
195 | BUG(); | 195 | BUG_ON(busnr > 255); |
196 | if (busnr > 255) | 196 | BUG_ON(devfn > 255); |
197 | BUG(); | ||
198 | if (devfn > 255) | ||
199 | BUG(); | ||
200 | 197 | ||
201 | if (busnr == 0) { | 198 | if (busnr == 0) { |
202 | int slot = PCI_SLOT(devfn); | 199 | int slot = PCI_SLOT(devfn); |
@@ -388,9 +385,10 @@ static int __init pci_v3_setup_resources(struct pci_sys_data *sys) | |||
388 | * means I can't get additional information on the reason for the pm2fb | 385 | * means I can't get additional information on the reason for the pm2fb |
389 | * problems. I suppose I'll just have to mind-meld with the machine. ;) | 386 | * problems. I suppose I'll just have to mind-meld with the machine. ;) |
390 | */ | 387 | */ |
391 | #define SC_PCI __io_address(INTEGRATOR_SC_PCIENABLE) | 388 | static void __iomem *ap_syscon_base; |
392 | #define SC_LBFADDR __io_address(INTEGRATOR_SC_BASE + 0x20) | 389 | #define INTEGRATOR_SC_PCIENABLE_OFFSET 0x18 |
393 | #define SC_LBFCODE __io_address(INTEGRATOR_SC_BASE + 0x24) | 390 | #define INTEGRATOR_SC_LBFADDR_OFFSET 0x20 |
391 | #define INTEGRATOR_SC_LBFCODE_OFFSET 0x24 | ||
394 | 392 | ||
395 | static int | 393 | static int |
396 | v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | 394 | v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) |
@@ -401,13 +399,13 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
401 | char buf[128]; | 399 | char buf[128]; |
402 | 400 | ||
403 | sprintf(buf, "V3 fault: addr 0x%08lx, FSR 0x%03x, PC 0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x ISTAT=%02x\n", | 401 | sprintf(buf, "V3 fault: addr 0x%08lx, FSR 0x%03x, PC 0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x ISTAT=%02x\n", |
404 | addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255, | 402 | addr, fsr, pc, instr, __raw_readl(ap_syscon_base + INTEGRATOR_SC_LBFADDR_OFFSET), __raw_readl(ap_syscon_base + INTEGRATOR_SC_LBFCODE_OFFSET) & 255, |
405 | v3_readb(V3_LB_ISTAT)); | 403 | v3_readb(V3_LB_ISTAT)); |
406 | printk(KERN_DEBUG "%s", buf); | 404 | printk(KERN_DEBUG "%s", buf); |
407 | #endif | 405 | #endif |
408 | 406 | ||
409 | v3_writeb(V3_LB_ISTAT, 0); | 407 | v3_writeb(V3_LB_ISTAT, 0); |
410 | __raw_writel(3, SC_PCI); | 408 | __raw_writel(3, ap_syscon_base + INTEGRATOR_SC_PCIENABLE_OFFSET); |
411 | 409 | ||
412 | /* | 410 | /* |
413 | * If the instruction being executed was a read, | 411 | * If the instruction being executed was a read, |
@@ -449,15 +447,15 @@ static irqreturn_t v3_irq(int dummy, void *devid) | |||
449 | 447 | ||
450 | sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x " | 448 | sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x " |
451 | "ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr, | 449 | "ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr, |
452 | __raw_readl(SC_LBFADDR), | 450 | __raw_readl(ap_syscon_base + INTEGRATOR_SC_LBFADDR_OFFSET), |
453 | __raw_readl(SC_LBFCODE) & 255, | 451 | __raw_readl(ap_syscon_base + INTEGRATOR_SC_LBFCODE_OFFSET) & 255, |
454 | v3_readb(V3_LB_ISTAT)); | 452 | v3_readb(V3_LB_ISTAT)); |
455 | printascii(buf); | 453 | printascii(buf); |
456 | #endif | 454 | #endif |
457 | 455 | ||
458 | v3_writew(V3_PCI_STAT, 0xf000); | 456 | v3_writew(V3_PCI_STAT, 0xf000); |
459 | v3_writeb(V3_LB_ISTAT, 0); | 457 | v3_writeb(V3_LB_ISTAT, 0); |
460 | __raw_writel(3, SC_PCI); | 458 | __raw_writel(3, ap_syscon_base + INTEGRATOR_SC_PCIENABLE_OFFSET); |
461 | 459 | ||
462 | #ifdef CONFIG_DEBUG_LL | 460 | #ifdef CONFIG_DEBUG_LL |
463 | /* | 461 | /* |
@@ -480,6 +478,10 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys) | |||
480 | if (nr == 0) { | 478 | if (nr == 0) { |
481 | sys->mem_offset = PHYS_PCI_MEM_BASE; | 479 | sys->mem_offset = PHYS_PCI_MEM_BASE; |
482 | ret = pci_v3_setup_resources(sys); | 480 | ret = pci_v3_setup_resources(sys); |
481 | /* Remap the Integrator system controller */ | ||
482 | ap_syscon_base = ioremap(INTEGRATOR_SC_BASE, 0x100); | ||
483 | if (!ap_syscon_base) | ||
484 | return -EINVAL; | ||
483 | } | 485 | } |
484 | 486 | ||
485 | return ret; | 487 | return ret; |
@@ -568,7 +570,7 @@ void __init pci_v3_preinit(void) | |||
568 | v3_writeb(V3_LB_ISTAT, 0); | 570 | v3_writeb(V3_LB_ISTAT, 0); |
569 | v3_writew(V3_LB_CFG, v3_readw(V3_LB_CFG) | (1 << 10)); | 571 | v3_writew(V3_LB_CFG, v3_readw(V3_LB_CFG) | (1 << 10)); |
570 | v3_writeb(V3_LB_IMASK, 0x28); | 572 | v3_writeb(V3_LB_IMASK, 0x28); |
571 | __raw_writel(3, SC_PCI); | 573 | __raw_writel(3, ap_syscon_base + INTEGRATOR_SC_PCIENABLE_OFFSET); |
572 | 574 | ||
573 | /* | 575 | /* |
574 | * Grab the PCI error interrupt. | 576 | * Grab the PCI error interrupt. |
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig index 50bca5032b7e..503d7dd944ff 100644 --- a/arch/arm/mach-kirkwood/Kconfig +++ b/arch/arm/mach-kirkwood/Kconfig | |||
@@ -46,6 +46,11 @@ config MACH_GURUPLUG | |||
46 | 46 | ||
47 | config ARCH_KIRKWOOD_DT | 47 | config ARCH_KIRKWOOD_DT |
48 | bool "Marvell Kirkwood Flattened Device Tree" | 48 | bool "Marvell Kirkwood Flattened Device Tree" |
49 | select POWER_SUPPLY | ||
50 | select POWER_RESET | ||
51 | select POWER_RESET_GPIO | ||
52 | select REGULATOR | ||
53 | select REGULATOR_FIXED_VOLTAGE | ||
49 | select USE_OF | 54 | select USE_OF |
50 | help | 55 | help |
51 | Say 'Y' here if you want your kernel to support the | 56 | Say 'Y' here if you want your kernel to support the |
@@ -130,6 +135,63 @@ config MACH_KM_KIRKWOOD_DT | |||
130 | Say 'Y' here if you want your kernel to support the | 135 | Say 'Y' here if you want your kernel to support the |
131 | Keymile Kirkwood Reference Desgin, using Flattened Device Tree. | 136 | Keymile Kirkwood Reference Desgin, using Flattened Device Tree. |
132 | 137 | ||
138 | config MACH_INETSPACE_V2_DT | ||
139 | bool "LaCie Internet Space v2 NAS (Flattened Device Tree)" | ||
140 | select ARCH_KIRKWOOD_DT | ||
141 | help | ||
142 | Say 'Y' here if you want your kernel to support the LaCie | ||
143 | Internet Space v2 NAS, using Flattened Device Tree. | ||
144 | |||
145 | config MACH_MPLCEC4_DT | ||
146 | bool "MPL CEC4 (Flattened Device Tree)" | ||
147 | select ARCH_KIRKWOOD_DT | ||
148 | help | ||
149 | Say 'Y' here if you want your kernel to support the | ||
150 | MPL CEC4 (Flattened Device Tree). | ||
151 | |||
152 | config MACH_NETSPACE_V2_DT | ||
153 | bool "LaCie Network Space v2 NAS (Flattened Device Tree)" | ||
154 | select ARCH_KIRKWOOD_DT | ||
155 | help | ||
156 | Say 'Y' here if you want your kernel to support the LaCie | ||
157 | Network Space v2 NAS, using Flattened Device Tree. | ||
158 | |||
159 | config MACH_NETSPACE_MAX_V2_DT | ||
160 | bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)" | ||
161 | select ARCH_KIRKWOOD_DT | ||
162 | help | ||
163 | Say 'Y' here if you want your kernel to support the LaCie | ||
164 | Network Space Max v2 NAS, using Flattened Device Tree. | ||
165 | |||
166 | config MACH_NETSPACE_LITE_V2_DT | ||
167 | bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)" | ||
168 | select ARCH_KIRKWOOD_DT | ||
169 | help | ||
170 | Say 'Y' here if you want your kernel to support the LaCie | ||
171 | Network Space Lite v2 NAS, using Flattened Device Tree. | ||
172 | |||
173 | config MACH_NETSPACE_MINI_V2_DT | ||
174 | bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)" | ||
175 | select ARCH_KIRKWOOD_DT | ||
176 | help | ||
177 | Say 'Y' here if you want your kernel to support the LaCie | ||
178 | Network Space Mini v2 NAS (aka SafeBox), using Flattened | ||
179 | Device Tree. | ||
180 | |||
181 | config MACH_OPENBLOCKS_A6_DT | ||
182 | bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)" | ||
183 | select ARCH_KIRKWOOD_DT | ||
184 | help | ||
185 | Say 'Y' here if you want your kernel to support the | ||
186 | Plat'Home OpenBlocks A6 (Flattened Device Tree). | ||
187 | |||
188 | config MACH_TOPKICK_DT | ||
189 | bool "USI Topkick (Flattened Device Tree)" | ||
190 | select ARCH_KIRKWOOD_DT | ||
191 | help | ||
192 | Say 'Y' here if you want your kernel to support the | ||
193 | USI Topkick, using Flattened Device Tree | ||
194 | |||
133 | config MACH_TS219 | 195 | config MACH_TS219 |
134 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" | 196 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" |
135 | help | 197 | help |
@@ -216,6 +278,14 @@ config MACH_T5325 | |||
216 | Say 'Y' here if you want your kernel to support the | 278 | Say 'Y' here if you want your kernel to support the |
217 | HP t5325 Thin Client. | 279 | HP t5325 Thin Client. |
218 | 280 | ||
281 | config MACH_NSA310_DT | ||
282 | bool "ZyXEL NSA-310 (Flattened Device Tree)" | ||
283 | select ARCH_KIRKWOOD_DT | ||
284 | select ARM_ATAG_DTB_COMPAT | ||
285 | help | ||
286 | Say 'Y' here if you want your kernel to support the | ||
287 | ZyXEL NSA-310 board (Flattened Device Tree). | ||
288 | |||
219 | endmenu | 289 | endmenu |
220 | 290 | ||
221 | endif | 291 | endif |
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile index 294779f892d9..8d2e5a96247c 100644 --- a/arch/arm/mach-kirkwood/Makefile +++ b/arch/arm/mach-kirkwood/Makefile | |||
@@ -31,3 +31,12 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o | |||
31 | obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o | 31 | obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o |
32 | obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o | 32 | obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o |
33 | obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o | 33 | obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o |
34 | obj-$(CONFIG_MACH_INETSPACE_V2_DT) += board-ns2.o | ||
35 | obj-$(CONFIG_MACH_MPLCEC4_DT) += board-mplcec4.o | ||
36 | obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o | ||
37 | obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o | ||
38 | obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o | ||
39 | obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o | ||
40 | obj-$(CONFIG_MACH_NSA310_DT) += board-nsa310.o | ||
41 | obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o | ||
42 | obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o | ||
diff --git a/arch/arm/mach-kirkwood/board-dnskw.c b/arch/arm/mach-kirkwood/board-dnskw.c index 43d16d6714b8..a1aa87f09180 100644 --- a/arch/arm/mach-kirkwood/board-dnskw.c +++ b/arch/arm/mach-kirkwood/board-dnskw.c | |||
@@ -17,51 +17,11 @@ | |||
17 | #include <linux/mv643xx_eth.h> | 17 | #include <linux/mv643xx_eth.h> |
18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
19 | #include "common.h" | 19 | #include "common.h" |
20 | #include "mpp.h" | ||
21 | 20 | ||
22 | static struct mv643xx_eth_platform_data dnskw_ge00_data = { | 21 | static struct mv643xx_eth_platform_data dnskw_ge00_data = { |
23 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
24 | }; | 23 | }; |
25 | 24 | ||
26 | static unsigned int dnskw_mpp_config[] __initdata = { | ||
27 | MPP13_UART1_TXD, /* Custom ... */ | ||
28 | MPP14_UART1_RXD, /* ... Controller (DNS-320 only) */ | ||
29 | MPP20_SATA1_ACTn, /* LED: White Right HDD */ | ||
30 | MPP21_SATA0_ACTn, /* LED: White Left HDD */ | ||
31 | MPP24_GPIO, | ||
32 | MPP25_GPIO, | ||
33 | MPP26_GPIO, /* LED: Power */ | ||
34 | MPP27_GPIO, /* LED: Red Right HDD */ | ||
35 | MPP28_GPIO, /* LED: Red Left HDD */ | ||
36 | MPP29_GPIO, /* LED: Red USB (DNS-325 only) */ | ||
37 | MPP30_GPIO, | ||
38 | MPP31_GPIO, | ||
39 | MPP32_GPIO, | ||
40 | MPP33_GPO, | ||
41 | MPP34_GPIO, /* Button: Front power */ | ||
42 | MPP35_GPIO, /* LED: Red USB (DNS-320 only) */ | ||
43 | MPP36_GPIO, /* Power: Turn off board */ | ||
44 | MPP37_GPIO, /* Power: Turn back on after power failure */ | ||
45 | MPP38_GPIO, | ||
46 | MPP39_GPIO, /* Power: SATA0 */ | ||
47 | MPP40_GPIO, /* Power: SATA1 */ | ||
48 | MPP41_GPIO, /* SATA0 present */ | ||
49 | MPP42_GPIO, /* SATA1 present */ | ||
50 | MPP43_GPIO, /* LED: White USB */ | ||
51 | MPP44_GPIO, /* Fan: Tachometer Pin */ | ||
52 | MPP45_GPIO, /* Fan: high speed */ | ||
53 | MPP46_GPIO, /* Fan: low speed */ | ||
54 | MPP47_GPIO, /* Button: Back unmount */ | ||
55 | MPP48_GPIO, /* Button: Back reset */ | ||
56 | MPP49_GPIO, /* Temp Alarm (DNS-325) Pin of U5 (DNS-320) */ | ||
57 | 0 | ||
58 | }; | ||
59 | |||
60 | static void dnskw_power_off(void) | ||
61 | { | ||
62 | gpio_set_value(36, 1); | ||
63 | } | ||
64 | |||
65 | /* Register any GPIO for output and set the value */ | 25 | /* Register any GPIO for output and set the value */ |
66 | static void __init dnskw_gpio_register(unsigned gpio, char *name, int def) | 26 | static void __init dnskw_gpio_register(unsigned gpio, char *name, int def) |
67 | { | 27 | { |
@@ -76,22 +36,8 @@ static void __init dnskw_gpio_register(unsigned gpio, char *name, int def) | |||
76 | 36 | ||
77 | void __init dnskw_init(void) | 37 | void __init dnskw_init(void) |
78 | { | 38 | { |
79 | kirkwood_mpp_conf(dnskw_mpp_config); | ||
80 | |||
81 | kirkwood_ehci_init(); | ||
82 | kirkwood_ge00_init(&dnskw_ge00_data); | 39 | kirkwood_ge00_init(&dnskw_ge00_data); |
83 | 40 | ||
84 | /* Register power-off GPIO. */ | ||
85 | if (gpio_request(36, "dnskw:power:off") == 0 | ||
86 | && gpio_direction_output(36, 0) == 0) | ||
87 | pm_power_off = dnskw_power_off; | ||
88 | else | ||
89 | pr_err("dnskw: failed to configure power-off GPIO\n"); | ||
90 | |||
91 | /* Ensure power is supplied to both HDDs */ | ||
92 | dnskw_gpio_register(39, "dnskw:power:sata0", 1); | ||
93 | dnskw_gpio_register(40, "dnskw:power:sata1", 1); | ||
94 | |||
95 | /* Set NAS to turn back on after a power failure */ | 41 | /* Set NAS to turn back on after a power failure */ |
96 | dnskw_gpio_register(37, "dnskw:power:recover", 1); | 42 | dnskw_gpio_register(37, "dnskw:power:recover", 1); |
97 | } | 43 | } |
diff --git a/arch/arm/mach-kirkwood/board-dockstar.c b/arch/arm/mach-kirkwood/board-dockstar.c index f2fbb023e679..d7196db33984 100644 --- a/arch/arm/mach-kirkwood/board-dockstar.c +++ b/arch/arm/mach-kirkwood/board-dockstar.c | |||
@@ -16,46 +16,17 @@ | |||
16 | 16 | ||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/platform_device.h> | ||
20 | #include <linux/ata_platform.h> | ||
21 | #include <linux/mv643xx_eth.h> | 19 | #include <linux/mv643xx_eth.h> |
22 | #include <linux/of.h> | ||
23 | #include <linux/of_address.h> | ||
24 | #include <linux/of_fdt.h> | ||
25 | #include <linux/of_irq.h> | ||
26 | #include <linux/of_platform.h> | ||
27 | #include <linux/gpio.h> | ||
28 | #include <asm/mach-types.h> | ||
29 | #include <asm/mach/arch.h> | ||
30 | #include <asm/mach/map.h> | ||
31 | #include <mach/kirkwood.h> | ||
32 | #include <mach/bridge-regs.h> | ||
33 | #include <linux/platform_data/mmc-mvsdio.h> | ||
34 | #include "common.h" | 20 | #include "common.h" |
35 | #include "mpp.h" | ||
36 | 21 | ||
37 | static struct mv643xx_eth_platform_data dockstar_ge00_data = { | 22 | static struct mv643xx_eth_platform_data dockstar_ge00_data = { |
38 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), |
39 | }; | 24 | }; |
40 | 25 | ||
41 | static unsigned int dockstar_mpp_config[] __initdata = { | ||
42 | MPP29_GPIO, /* USB Power Enable */ | ||
43 | MPP46_GPIO, /* LED green */ | ||
44 | MPP47_GPIO, /* LED orange */ | ||
45 | 0 | ||
46 | }; | ||
47 | |||
48 | void __init dockstar_dt_init(void) | 26 | void __init dockstar_dt_init(void) |
49 | { | 27 | { |
50 | /* | 28 | /* |
51 | * Basic setup. Needs to be called early. | 29 | * Basic setup. Needs to be called early. |
52 | */ | 30 | */ |
53 | kirkwood_mpp_conf(dockstar_mpp_config); | ||
54 | |||
55 | if (gpio_request(29, "USB Power Enable") != 0 || | ||
56 | gpio_direction_output(29, 1) != 0) | ||
57 | pr_err("can't setup GPIO 29 (USB Power Enable)\n"); | ||
58 | kirkwood_ehci_init(); | ||
59 | |||
60 | kirkwood_ge00_init(&dockstar_ge00_data); | 31 | kirkwood_ge00_init(&dockstar_ge00_data); |
61 | } | 32 | } |
diff --git a/arch/arm/mach-kirkwood/board-dreamplug.c b/arch/arm/mach-kirkwood/board-dreamplug.c index 20af53a56c0e..08248e24ffcd 100644 --- a/arch/arm/mach-kirkwood/board-dreamplug.c +++ b/arch/arm/mach-kirkwood/board-dreamplug.c | |||
@@ -13,26 +13,10 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/ata_platform.h> | ||
18 | #include <linux/mv643xx_eth.h> | 16 | #include <linux/mv643xx_eth.h> |
19 | #include <linux/of.h> | ||
20 | #include <linux/of_address.h> | ||
21 | #include <linux/of_fdt.h> | ||
22 | #include <linux/of_irq.h> | ||
23 | #include <linux/of_platform.h> | ||
24 | #include <linux/gpio.h> | 17 | #include <linux/gpio.h> |
25 | #include <linux/mtd/physmap.h> | ||
26 | #include <linux/spi/flash.h> | ||
27 | #include <linux/spi/spi.h> | ||
28 | #include <asm/mach-types.h> | ||
29 | #include <asm/mach/arch.h> | ||
30 | #include <asm/mach/map.h> | ||
31 | #include <mach/kirkwood.h> | ||
32 | #include <mach/bridge-regs.h> | ||
33 | #include <linux/platform_data/mmc-mvsdio.h> | 18 | #include <linux/platform_data/mmc-mvsdio.h> |
34 | #include "common.h" | 19 | #include "common.h" |
35 | #include "mpp.h" | ||
36 | 20 | ||
37 | static struct mv643xx_eth_platform_data dreamplug_ge00_data = { | 21 | static struct mv643xx_eth_platform_data dreamplug_ge00_data = { |
38 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), |
@@ -46,25 +30,11 @@ static struct mvsdio_platform_data dreamplug_mvsdio_data = { | |||
46 | /* unfortunately the CD signal has not been connected */ | 30 | /* unfortunately the CD signal has not been connected */ |
47 | }; | 31 | }; |
48 | 32 | ||
49 | static unsigned int dreamplug_mpp_config[] __initdata = { | ||
50 | MPP0_SPI_SCn, | ||
51 | MPP1_SPI_MOSI, | ||
52 | MPP2_SPI_SCK, | ||
53 | MPP3_SPI_MISO, | ||
54 | MPP47_GPIO, /* Bluetooth LED */ | ||
55 | MPP48_GPIO, /* Wifi LED */ | ||
56 | MPP49_GPIO, /* Wifi AP LED */ | ||
57 | 0 | ||
58 | }; | ||
59 | |||
60 | void __init dreamplug_init(void) | 33 | void __init dreamplug_init(void) |
61 | { | 34 | { |
62 | /* | 35 | /* |
63 | * Basic setup. Needs to be called early. | 36 | * Basic setup. Needs to be called early. |
64 | */ | 37 | */ |
65 | kirkwood_mpp_conf(dreamplug_mpp_config); | ||
66 | |||
67 | kirkwood_ehci_init(); | ||
68 | kirkwood_ge00_init(&dreamplug_ge00_data); | 38 | kirkwood_ge00_init(&dreamplug_ge00_data); |
69 | kirkwood_ge01_init(&dreamplug_ge01_data); | 39 | kirkwood_ge01_init(&dreamplug_ge01_data); |
70 | kirkwood_sdio_init(&dreamplug_mvsdio_data); | 40 | kirkwood_sdio_init(&dreamplug_mvsdio_data); |
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c index d94872fed8c0..375f7d88551c 100644 --- a/arch/arm/mach-kirkwood/board-dt.c +++ b/arch/arm/mach-kirkwood/board-dt.c | |||
@@ -26,10 +26,12 @@ static struct of_device_id kirkwood_dt_match_table[] __initdata = { | |||
26 | { } | 26 | { } |
27 | }; | 27 | }; |
28 | 28 | ||
29 | struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = { | 29 | static struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = { |
30 | OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), | 30 | OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), |
31 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", | 31 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", |
32 | NULL), | 32 | NULL), |
33 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011100, "mv64xxx_i2c.1", | ||
34 | NULL), | ||
33 | OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), | 35 | OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), |
34 | OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), | 36 | OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), |
35 | OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL), | 37 | OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL), |
@@ -94,11 +96,30 @@ static void __init kirkwood_dt_init(void) | |||
94 | if (of_machine_is_compatible("keymile,km_kirkwood")) | 96 | if (of_machine_is_compatible("keymile,km_kirkwood")) |
95 | km_kirkwood_init(); | 97 | km_kirkwood_init(); |
96 | 98 | ||
99 | if (of_machine_is_compatible("lacie,inetspace_v2") || | ||
100 | of_machine_is_compatible("lacie,netspace_v2") || | ||
101 | of_machine_is_compatible("lacie,netspace_max_v2") || | ||
102 | of_machine_is_compatible("lacie,netspace_lite_v2") || | ||
103 | of_machine_is_compatible("lacie,netspace_mini_v2")) | ||
104 | ns2_init(); | ||
105 | |||
106 | if (of_machine_is_compatible("mpl,cec4")) | ||
107 | mplcec4_init(); | ||
108 | |||
109 | if (of_machine_is_compatible("plathome,openblocks-a6")) | ||
110 | openblocks_a6_init(); | ||
111 | |||
112 | if (of_machine_is_compatible("usi,topkick")) | ||
113 | usi_topkick_init(); | ||
114 | |||
115 | if (of_machine_is_compatible("zyxel,nsa310")) | ||
116 | nsa310_init(); | ||
117 | |||
97 | of_platform_populate(NULL, kirkwood_dt_match_table, | 118 | of_platform_populate(NULL, kirkwood_dt_match_table, |
98 | kirkwood_auxdata_lookup, NULL); | 119 | kirkwood_auxdata_lookup, NULL); |
99 | } | 120 | } |
100 | 121 | ||
101 | static const char *kirkwood_dt_board_compat[] = { | 122 | static const char * const kirkwood_dt_board_compat[] = { |
102 | "globalscale,dreamplug", | 123 | "globalscale,dreamplug", |
103 | "dlink,dns-320", | 124 | "dlink,dns-320", |
104 | "dlink,dns-325", | 125 | "dlink,dns-325", |
@@ -110,6 +131,15 @@ static const char *kirkwood_dt_board_compat[] = { | |||
110 | "buffalo,lsxl", | 131 | "buffalo,lsxl", |
111 | "iom,ix2-200", | 132 | "iom,ix2-200", |
112 | "keymile,km_kirkwood", | 133 | "keymile,km_kirkwood", |
134 | "lacie,inetspace_v2", | ||
135 | "lacie,netspace_max_v2", | ||
136 | "lacie,netspace_v2", | ||
137 | "lacie,netspace_lite_v2", | ||
138 | "lacie,netspace_mini_v2", | ||
139 | "mpl,cec4", | ||
140 | "plathome,openblocks-a6", | ||
141 | "usi,topkick", | ||
142 | "zyxel,nsa310", | ||
113 | NULL | 143 | NULL |
114 | }; | 144 | }; |
115 | 145 | ||
diff --git a/arch/arm/mach-kirkwood/board-goflexnet.c b/arch/arm/mach-kirkwood/board-goflexnet.c index 001ca8c96980..9db979aec82e 100644 --- a/arch/arm/mach-kirkwood/board-goflexnet.c +++ b/arch/arm/mach-kirkwood/board-goflexnet.c | |||
@@ -18,54 +18,17 @@ | |||
18 | 18 | ||
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/platform_device.h> | ||
22 | #include <linux/ata_platform.h> | ||
23 | #include <linux/mv643xx_eth.h> | 21 | #include <linux/mv643xx_eth.h> |
24 | #include <linux/of.h> | ||
25 | #include <linux/of_address.h> | ||
26 | #include <linux/of_fdt.h> | ||
27 | #include <linux/of_irq.h> | ||
28 | #include <linux/of_platform.h> | ||
29 | #include <linux/gpio.h> | ||
30 | #include <asm/mach-types.h> | ||
31 | #include <asm/mach/arch.h> | ||
32 | #include <asm/mach/map.h> | ||
33 | #include <mach/kirkwood.h> | ||
34 | #include <mach/bridge-regs.h> | ||
35 | #include <linux/platform_data/mmc-mvsdio.h> | ||
36 | #include "common.h" | 22 | #include "common.h" |
37 | #include "mpp.h" | ||
38 | 23 | ||
39 | static struct mv643xx_eth_platform_data goflexnet_ge00_data = { | 24 | static struct mv643xx_eth_platform_data goflexnet_ge00_data = { |
40 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | 25 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), |
41 | }; | 26 | }; |
42 | 27 | ||
43 | static unsigned int goflexnet_mpp_config[] __initdata = { | ||
44 | MPP29_GPIO, /* USB Power Enable */ | ||
45 | MPP47_GPIO, /* LED Orange */ | ||
46 | MPP46_GPIO, /* LED Green */ | ||
47 | MPP45_GPIO, /* LED Left Capacity 3 */ | ||
48 | MPP44_GPIO, /* LED Left Capacity 2 */ | ||
49 | MPP43_GPIO, /* LED Left Capacity 1 */ | ||
50 | MPP42_GPIO, /* LED Left Capacity 0 */ | ||
51 | MPP41_GPIO, /* LED Right Capacity 3 */ | ||
52 | MPP40_GPIO, /* LED Right Capacity 2 */ | ||
53 | MPP39_GPIO, /* LED Right Capacity 1 */ | ||
54 | MPP38_GPIO, /* LED Right Capacity 0 */ | ||
55 | 0 | ||
56 | }; | ||
57 | |||
58 | void __init goflexnet_init(void) | 28 | void __init goflexnet_init(void) |
59 | { | 29 | { |
60 | /* | 30 | /* |
61 | * Basic setup. Needs to be called early. | 31 | * Basic setup. Needs to be called early. |
62 | */ | 32 | */ |
63 | kirkwood_mpp_conf(goflexnet_mpp_config); | ||
64 | |||
65 | if (gpio_request(29, "USB Power Enable") != 0 || | ||
66 | gpio_direction_output(29, 1) != 0) | ||
67 | pr_err("can't setup GPIO 29 (USB Power Enable)\n"); | ||
68 | kirkwood_ehci_init(); | ||
69 | |||
70 | kirkwood_ge00_init(&goflexnet_ge00_data); | 33 | kirkwood_ge00_init(&goflexnet_ge00_data); |
71 | } | 34 | } |
diff --git a/arch/arm/mach-kirkwood/board-ib62x0.c b/arch/arm/mach-kirkwood/board-ib62x0.c index cfc47f80e734..9f6f496380d8 100644 --- a/arch/arm/mach-kirkwood/board-ib62x0.c +++ b/arch/arm/mach-kirkwood/board-ib62x0.c | |||
@@ -13,59 +13,18 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/mtd/partitions.h> | ||
18 | #include <linux/ata_platform.h> | ||
19 | #include <linux/mv643xx_eth.h> | 16 | #include <linux/mv643xx_eth.h> |
20 | #include <linux/gpio.h> | ||
21 | #include <linux/input.h> | 17 | #include <linux/input.h> |
22 | #include <asm/mach-types.h> | ||
23 | #include <asm/mach/arch.h> | ||
24 | #include <mach/kirkwood.h> | ||
25 | #include "common.h" | 18 | #include "common.h" |
26 | #include "mpp.h" | ||
27 | |||
28 | #define IB62X0_GPIO_POWER_OFF 24 | ||
29 | 19 | ||
30 | static struct mv643xx_eth_platform_data ib62x0_ge00_data = { | 20 | static struct mv643xx_eth_platform_data ib62x0_ge00_data = { |
31 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 21 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
32 | }; | 22 | }; |
33 | 23 | ||
34 | static unsigned int ib62x0_mpp_config[] __initdata = { | ||
35 | MPP0_NF_IO2, | ||
36 | MPP1_NF_IO3, | ||
37 | MPP2_NF_IO4, | ||
38 | MPP3_NF_IO5, | ||
39 | MPP4_NF_IO6, | ||
40 | MPP5_NF_IO7, | ||
41 | MPP18_NF_IO0, | ||
42 | MPP19_NF_IO1, | ||
43 | MPP22_GPIO, /* OS LED red */ | ||
44 | MPP24_GPIO, /* Power off device */ | ||
45 | MPP25_GPIO, /* OS LED green */ | ||
46 | MPP27_GPIO, /* USB transfer LED */ | ||
47 | MPP28_GPIO, /* Reset button */ | ||
48 | MPP29_GPIO, /* USB Copy button */ | ||
49 | 0 | ||
50 | }; | ||
51 | |||
52 | static void ib62x0_power_off(void) | ||
53 | { | ||
54 | gpio_set_value(IB62X0_GPIO_POWER_OFF, 1); | ||
55 | } | ||
56 | |||
57 | void __init ib62x0_init(void) | 24 | void __init ib62x0_init(void) |
58 | { | 25 | { |
59 | /* | 26 | /* |
60 | * Basic setup. Needs to be called early. | 27 | * Basic setup. Needs to be called early. |
61 | */ | 28 | */ |
62 | kirkwood_mpp_conf(ib62x0_mpp_config); | ||
63 | |||
64 | kirkwood_ehci_init(); | ||
65 | kirkwood_ge00_init(&ib62x0_ge00_data); | 29 | kirkwood_ge00_init(&ib62x0_ge00_data); |
66 | if (gpio_request(IB62X0_GPIO_POWER_OFF, "ib62x0:power:off") == 0 && | ||
67 | gpio_direction_output(IB62X0_GPIO_POWER_OFF, 0) == 0) | ||
68 | pm_power_off = ib62x0_power_off; | ||
69 | else | ||
70 | pr_err("board-ib62x0: failed to configure power-off GPIO\n"); | ||
71 | } | 30 | } |
diff --git a/arch/arm/mach-kirkwood/board-iconnect.c b/arch/arm/mach-kirkwood/board-iconnect.c index d084b1e2943a..c8ebde4919e2 100644 --- a/arch/arm/mach-kirkwood/board-iconnect.c +++ b/arch/arm/mach-kirkwood/board-iconnect.c | |||
@@ -10,42 +10,16 @@ | |||
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/of.h> | 13 | #include <linux/of.h> |
15 | #include <linux/of_address.h> | ||
16 | #include <linux/of_fdt.h> | ||
17 | #include <linux/of_irq.h> | ||
18 | #include <linux/of_platform.h> | ||
19 | #include <linux/mv643xx_eth.h> | 14 | #include <linux/mv643xx_eth.h> |
20 | #include <linux/gpio.h> | ||
21 | #include <asm/mach/arch.h> | ||
22 | #include <mach/kirkwood.h> | ||
23 | #include "common.h" | 15 | #include "common.h" |
24 | #include "mpp.h" | ||
25 | 16 | ||
26 | static struct mv643xx_eth_platform_data iconnect_ge00_data = { | 17 | static struct mv643xx_eth_platform_data iconnect_ge00_data = { |
27 | .phy_addr = MV643XX_ETH_PHY_ADDR(11), | 18 | .phy_addr = MV643XX_ETH_PHY_ADDR(11), |
28 | }; | 19 | }; |
29 | 20 | ||
30 | static unsigned int iconnect_mpp_config[] __initdata = { | ||
31 | MPP12_GPIO, | ||
32 | MPP35_GPIO, | ||
33 | MPP41_GPIO, | ||
34 | MPP42_GPIO, | ||
35 | MPP43_GPIO, | ||
36 | MPP44_GPIO, | ||
37 | MPP45_GPIO, | ||
38 | MPP46_GPIO, | ||
39 | MPP47_GPIO, | ||
40 | MPP48_GPIO, | ||
41 | 0 | ||
42 | }; | ||
43 | |||
44 | void __init iconnect_init(void) | 21 | void __init iconnect_init(void) |
45 | { | 22 | { |
46 | kirkwood_mpp_conf(iconnect_mpp_config); | ||
47 | |||
48 | kirkwood_ehci_init(); | ||
49 | kirkwood_ge00_init(&iconnect_ge00_data); | 23 | kirkwood_ge00_init(&iconnect_ge00_data); |
50 | } | 24 | } |
51 | 25 | ||
diff --git a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c index 158fb97d0397..f655b2637b0e 100644 --- a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c +++ b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c | |||
@@ -10,12 +10,9 @@ | |||
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/mv643xx_eth.h> | 13 | #include <linux/mv643xx_eth.h> |
15 | #include <linux/ethtool.h> | 14 | #include <linux/ethtool.h> |
16 | #include <mach/kirkwood.h> | ||
17 | #include "common.h" | 15 | #include "common.h" |
18 | #include "mpp.h" | ||
19 | 16 | ||
20 | static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = { | 17 | static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = { |
21 | .phy_addr = MV643XX_ETH_PHY_NONE, | 18 | .phy_addr = MV643XX_ETH_PHY_NONE, |
@@ -23,35 +20,10 @@ static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = { | |||
23 | .duplex = DUPLEX_FULL, | 20 | .duplex = DUPLEX_FULL, |
24 | }; | 21 | }; |
25 | 22 | ||
26 | static unsigned int iomega_ix2_200_mpp_config[] __initdata = { | ||
27 | MPP12_GPIO, /* Reset Button */ | ||
28 | MPP14_GPIO, /* Power Button */ | ||
29 | MPP15_GPIO, /* Backup LED (blue) */ | ||
30 | MPP16_GPIO, /* Power LED (white) */ | ||
31 | MPP35_GPIO, /* OTB Button */ | ||
32 | MPP36_GPIO, /* Rebuild LED (white) */ | ||
33 | MPP37_GPIO, /* Health LED (red) */ | ||
34 | MPP38_GPIO, /* SATA LED brightness control 1 */ | ||
35 | MPP39_GPIO, /* SATA LED brightness control 2 */ | ||
36 | MPP40_GPIO, /* Backup LED brightness control 1 */ | ||
37 | MPP41_GPIO, /* Backup LED brightness control 2 */ | ||
38 | MPP42_GPIO, /* Power LED brightness control 1 */ | ||
39 | MPP43_GPIO, /* Power LED brightness control 2 */ | ||
40 | MPP44_GPIO, /* Health LED brightness control 1 */ | ||
41 | MPP45_GPIO, /* Health LED brightness control 2 */ | ||
42 | MPP46_GPIO, /* Rebuild LED brightness control 1 */ | ||
43 | MPP47_GPIO, /* Rebuild LED brightness control 2 */ | ||
44 | 0 | ||
45 | }; | ||
46 | |||
47 | void __init iomega_ix2_200_init(void) | 23 | void __init iomega_ix2_200_init(void) |
48 | { | 24 | { |
49 | /* | 25 | /* |
50 | * Basic setup. Needs to be called early. | 26 | * Basic setup. Needs to be called early. |
51 | */ | 27 | */ |
52 | kirkwood_mpp_conf(iomega_ix2_200_mpp_config); | ||
53 | |||
54 | kirkwood_ehci_init(); | ||
55 | |||
56 | kirkwood_ge01_init(&iomega_ix2_200_ge00_data); | 28 | kirkwood_ge01_init(&iomega_ix2_200_ge00_data); |
57 | } | 29 | } |
diff --git a/arch/arm/mach-kirkwood/board-km_kirkwood.c b/arch/arm/mach-kirkwood/board-km_kirkwood.c index f7d32834b757..44e4605ba0bf 100644 --- a/arch/arm/mach-kirkwood/board-km_kirkwood.c +++ b/arch/arm/mach-kirkwood/board-km_kirkwood.c | |||
@@ -18,27 +18,15 @@ | |||
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | #include <linux/clk-private.h> | 19 | #include <linux/clk-private.h> |
20 | #include "common.h" | 20 | #include "common.h" |
21 | #include "mpp.h" | ||
22 | 21 | ||
23 | static struct mv643xx_eth_platform_data km_kirkwood_ge00_data = { | 22 | static struct mv643xx_eth_platform_data km_kirkwood_ge00_data = { |
24 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), |
25 | }; | 24 | }; |
26 | 25 | ||
27 | static unsigned int km_kirkwood_mpp_config[] __initdata = { | ||
28 | MPP8_GPIO, /* I2C SDA */ | ||
29 | MPP9_GPIO, /* I2C SCL */ | ||
30 | 0 | ||
31 | }; | ||
32 | |||
33 | void __init km_kirkwood_init(void) | 26 | void __init km_kirkwood_init(void) |
34 | { | 27 | { |
35 | struct clk *sata_clk; | 28 | struct clk *sata_clk; |
36 | /* | 29 | /* |
37 | * Basic setup. Needs to be called early. | ||
38 | */ | ||
39 | kirkwood_mpp_conf(km_kirkwood_mpp_config); | ||
40 | |||
41 | /* | ||
42 | * Our variant of kirkwood (integrated in the Bobcat) hangs on accessing | 30 | * Our variant of kirkwood (integrated in the Bobcat) hangs on accessing |
43 | * SATA bits (14-15) of the Clock Gating Control Register. Since these | 31 | * SATA bits (14-15) of the Clock Gating Control Register. Since these |
44 | * devices are also not present in this variant, their clocks get | 32 | * devices are also not present in this variant, their clocks get |
@@ -52,6 +40,5 @@ void __init km_kirkwood_init(void) | |||
52 | if (!IS_ERR(sata_clk)) | 40 | if (!IS_ERR(sata_clk)) |
53 | sata_clk->flags |= CLK_IGNORE_UNUSED; | 41 | sata_clk->flags |= CLK_IGNORE_UNUSED; |
54 | 42 | ||
55 | kirkwood_ehci_init(); | ||
56 | kirkwood_ge00_init(&km_kirkwood_ge00_data); | 43 | kirkwood_ge00_init(&km_kirkwood_ge00_data); |
57 | } | 44 | } |
diff --git a/arch/arm/mach-kirkwood/board-lsxl.c b/arch/arm/mach-kirkwood/board-lsxl.c index 83d8975592f8..4ec8b7ae784a 100644 --- a/arch/arm/mach-kirkwood/board-lsxl.c +++ b/arch/arm/mach-kirkwood/board-lsxl.c | |||
@@ -14,19 +14,8 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/mtd/partitions.h> | ||
18 | #include <linux/ata_platform.h> | ||
19 | #include <linux/spi/flash.h> | ||
20 | #include <linux/spi/spi.h> | ||
21 | #include <linux/mv643xx_eth.h> | 17 | #include <linux/mv643xx_eth.h> |
22 | #include <linux/gpio.h> | ||
23 | #include <linux/gpio-fan.h> | ||
24 | #include <linux/input.h> | ||
25 | #include <asm/mach-types.h> | ||
26 | #include <asm/mach/arch.h> | ||
27 | #include <mach/kirkwood.h> | ||
28 | #include "common.h" | 18 | #include "common.h" |
29 | #include "mpp.h" | ||
30 | 19 | ||
31 | static struct mv643xx_eth_platform_data lsxl_ge00_data = { | 20 | static struct mv643xx_eth_platform_data lsxl_ge00_data = { |
32 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | 21 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), |
@@ -36,68 +25,6 @@ static struct mv643xx_eth_platform_data lsxl_ge01_data = { | |||
36 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 25 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
37 | }; | 26 | }; |
38 | 27 | ||
39 | static unsigned int lsxl_mpp_config[] __initdata = { | ||
40 | MPP10_GPO, /* HDD Power Enable */ | ||
41 | MPP11_GPIO, /* USB Vbus Enable */ | ||
42 | MPP18_GPO, /* FAN High Enable# */ | ||
43 | MPP19_GPO, /* FAN Low Enable# */ | ||
44 | MPP36_GPIO, /* Function Blue LED */ | ||
45 | MPP37_GPIO, /* Alarm LED */ | ||
46 | MPP38_GPIO, /* Info LED */ | ||
47 | MPP39_GPIO, /* Power LED */ | ||
48 | MPP40_GPIO, /* Fan Lock */ | ||
49 | MPP41_GPIO, /* Function Button */ | ||
50 | MPP42_GPIO, /* Power Switch */ | ||
51 | MPP43_GPIO, /* Power Auto Switch */ | ||
52 | MPP48_GPIO, /* Function Red LED */ | ||
53 | 0 | ||
54 | }; | ||
55 | |||
56 | #define LSXL_GPIO_FAN_HIGH 18 | ||
57 | #define LSXL_GPIO_FAN_LOW 19 | ||
58 | #define LSXL_GPIO_FAN_LOCK 40 | ||
59 | |||
60 | static struct gpio_fan_alarm lsxl_alarm = { | ||
61 | .gpio = LSXL_GPIO_FAN_LOCK, | ||
62 | }; | ||
63 | |||
64 | static struct gpio_fan_speed lsxl_speeds[] = { | ||
65 | { | ||
66 | .rpm = 0, | ||
67 | .ctrl_val = 3, | ||
68 | }, { | ||
69 | .rpm = 1500, | ||
70 | .ctrl_val = 1, | ||
71 | }, { | ||
72 | .rpm = 3250, | ||
73 | .ctrl_val = 2, | ||
74 | }, { | ||
75 | .rpm = 5000, | ||
76 | .ctrl_val = 0, | ||
77 | } | ||
78 | }; | ||
79 | |||
80 | static int lsxl_gpio_list[] = { | ||
81 | LSXL_GPIO_FAN_HIGH, LSXL_GPIO_FAN_LOW, | ||
82 | }; | ||
83 | |||
84 | static struct gpio_fan_platform_data lsxl_fan_data = { | ||
85 | .num_ctrl = ARRAY_SIZE(lsxl_gpio_list), | ||
86 | .ctrl = lsxl_gpio_list, | ||
87 | .alarm = &lsxl_alarm, | ||
88 | .num_speed = ARRAY_SIZE(lsxl_speeds), | ||
89 | .speed = lsxl_speeds, | ||
90 | }; | ||
91 | |||
92 | static struct platform_device lsxl_fan_device = { | ||
93 | .name = "gpio-fan", | ||
94 | .id = -1, | ||
95 | .num_resources = 0, | ||
96 | .dev = { | ||
97 | .platform_data = &lsxl_fan_data, | ||
98 | }, | ||
99 | }; | ||
100 | |||
101 | /* | 28 | /* |
102 | * On the LS-XHL/LS-CHLv2, the shutdown process is following: | 29 | * On the LS-XHL/LS-CHLv2, the shutdown process is following: |
103 | * - Userland monitors key events until the power switch goes to off position | 30 | * - Userland monitors key events until the power switch goes to off position |
@@ -111,24 +38,14 @@ static void lsxl_power_off(void) | |||
111 | kirkwood_restart('h', NULL); | 38 | kirkwood_restart('h', NULL); |
112 | } | 39 | } |
113 | 40 | ||
114 | #define LSXL_GPIO_HDD_POWER 10 | ||
115 | #define LSXL_GPIO_USB_POWER 11 | ||
116 | |||
117 | void __init lsxl_init(void) | 41 | void __init lsxl_init(void) |
118 | { | 42 | { |
119 | /* | 43 | /* |
120 | * Basic setup. Needs to be called early. | 44 | * Basic setup. Needs to be called early. |
121 | */ | 45 | */ |
122 | kirkwood_mpp_conf(lsxl_mpp_config); | ||
123 | |||
124 | /* usb and sata power on */ | ||
125 | gpio_set_value(LSXL_GPIO_USB_POWER, 1); | ||
126 | gpio_set_value(LSXL_GPIO_HDD_POWER, 1); | ||
127 | 46 | ||
128 | kirkwood_ehci_init(); | ||
129 | kirkwood_ge00_init(&lsxl_ge00_data); | 47 | kirkwood_ge00_init(&lsxl_ge00_data); |
130 | kirkwood_ge01_init(&lsxl_ge01_data); | 48 | kirkwood_ge01_init(&lsxl_ge01_data); |
131 | platform_device_register(&lsxl_fan_device); | ||
132 | 49 | ||
133 | /* register power-off method */ | 50 | /* register power-off method */ |
134 | pm_power_off = lsxl_power_off; | 51 | pm_power_off = lsxl_power_off; |
diff --git a/arch/arm/mach-kirkwood/board-mplcec4.c b/arch/arm/mach-kirkwood/board-mplcec4.c new file mode 100644 index 000000000000..56bfe5a1605a --- /dev/null +++ b/arch/arm/mach-kirkwood/board-mplcec4.c | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 MPL AG, Switzerland | ||
3 | * Stefan Peter <s.peter@mpl.ch> | ||
4 | * | ||
5 | * arch/arm/mach-kirkwood/board-mplcec4.c | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public | ||
8 | * License version 2. This program is licensed "as is" without any | ||
9 | * warranty of any kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | #include <linux/kernel.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/mv643xx_eth.h> | ||
15 | #include <linux/platform_data/mmc-mvsdio.h> | ||
16 | #include "common.h" | ||
17 | #include "mpp.h" | ||
18 | |||
19 | static struct mv643xx_eth_platform_data mplcec4_ge00_data = { | ||
20 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
21 | }; | ||
22 | |||
23 | static struct mv643xx_eth_platform_data mplcec4_ge01_data = { | ||
24 | .phy_addr = MV643XX_ETH_PHY_ADDR(2), | ||
25 | }; | ||
26 | |||
27 | static struct mvsdio_platform_data mplcec4_mvsdio_data = { | ||
28 | .gpio_card_detect = 47, /* MPP47 used as SD card detect */ | ||
29 | }; | ||
30 | |||
31 | |||
32 | void __init mplcec4_init(void) | ||
33 | { | ||
34 | /* | ||
35 | * Basic setup. Needs to be called early. | ||
36 | */ | ||
37 | kirkwood_ge00_init(&mplcec4_ge00_data); | ||
38 | kirkwood_ge01_init(&mplcec4_ge01_data); | ||
39 | kirkwood_sdio_init(&mplcec4_mvsdio_data); | ||
40 | kirkwood_pcie_init(KW_PCIE0); | ||
41 | } | ||
42 | |||
43 | |||
44 | |||
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c new file mode 100644 index 000000000000..8821720ab5a4 --- /dev/null +++ b/arch/arm/mach-kirkwood/board-ns2.c | |||
@@ -0,0 +1,86 @@ | |||
1 | /* | ||
2 | * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org> | ||
3 | * | ||
4 | * arch/arm/mach-kirkwood/board-ns2.c | ||
5 | * | ||
6 | * LaCie Network Space v2 board (and parents) initialization for drivers | ||
7 | * not converted to flattened device tree yet. | ||
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 <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/mv643xx_eth.h> | ||
18 | #include <linux/gpio.h> | ||
19 | #include <linux/of.h> | ||
20 | #include "common.h" | ||
21 | #include "mpp.h" | ||
22 | |||
23 | static struct mv643xx_eth_platform_data ns2_ge00_data = { | ||
24 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
25 | }; | ||
26 | |||
27 | static unsigned int ns2_mpp_config[] __initdata = { | ||
28 | MPP0_SPI_SCn, | ||
29 | MPP1_SPI_MOSI, | ||
30 | MPP2_SPI_SCK, | ||
31 | MPP3_SPI_MISO, | ||
32 | MPP4_NF_IO6, | ||
33 | MPP5_NF_IO7, | ||
34 | MPP6_SYSRST_OUTn, | ||
35 | MPP7_GPO, /* Fan speed (bit 1) */ | ||
36 | MPP8_TW0_SDA, | ||
37 | MPP9_TW0_SCK, | ||
38 | MPP10_UART0_TXD, | ||
39 | MPP11_UART0_RXD, | ||
40 | MPP12_GPO, /* Red led */ | ||
41 | MPP14_GPIO, /* USB fuse */ | ||
42 | MPP16_GPIO, /* SATA 0 power */ | ||
43 | MPP17_GPIO, /* SATA 1 power */ | ||
44 | MPP18_NF_IO0, | ||
45 | MPP19_NF_IO1, | ||
46 | MPP20_SATA1_ACTn, | ||
47 | MPP21_SATA0_ACTn, | ||
48 | MPP22_GPIO, /* Fan speed (bit 0) */ | ||
49 | MPP23_GPIO, /* Fan power */ | ||
50 | MPP24_GPIO, /* USB mode select */ | ||
51 | MPP25_GPIO, /* Fan rotation fail */ | ||
52 | MPP26_GPIO, /* USB device vbus */ | ||
53 | MPP28_GPIO, /* USB enable host vbus */ | ||
54 | MPP29_GPIO, /* Blue led (slow register) */ | ||
55 | MPP30_GPIO, /* Blue led (command register) */ | ||
56 | MPP31_GPIO, /* Board power off */ | ||
57 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ | ||
58 | MPP33_GPO, /* Fan speed (bit 2) */ | ||
59 | 0 | ||
60 | }; | ||
61 | |||
62 | #define NS2_GPIO_POWER_OFF 31 | ||
63 | |||
64 | static void ns2_power_off(void) | ||
65 | { | ||
66 | gpio_set_value(NS2_GPIO_POWER_OFF, 1); | ||
67 | } | ||
68 | |||
69 | void __init ns2_init(void) | ||
70 | { | ||
71 | /* | ||
72 | * Basic setup. Needs to be called early. | ||
73 | */ | ||
74 | kirkwood_mpp_conf(ns2_mpp_config); | ||
75 | |||
76 | if (of_machine_is_compatible("lacie,netspace_lite_v2") || | ||
77 | of_machine_is_compatible("lacie,netspace_mini_v2")) | ||
78 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | ||
79 | kirkwood_ge00_init(&ns2_ge00_data); | ||
80 | |||
81 | if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 && | ||
82 | gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0) | ||
83 | pm_power_off = ns2_power_off; | ||
84 | else | ||
85 | pr_err("ns2: failed to configure power-off GPIO\n"); | ||
86 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-nsa310.c b/arch/arm/mach-kirkwood/board-nsa310.c new file mode 100644 index 000000000000..f58d2e1a4042 --- /dev/null +++ b/arch/arm/mach-kirkwood/board-nsa310.c | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-kirkwood/nsa-310-setup.c | ||
3 | * | ||
4 | * ZyXEL NSA-310 Setup | ||
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 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/i2c.h> | ||
14 | #include <linux/gpio.h> | ||
15 | |||
16 | #include <asm/mach-types.h> | ||
17 | #include <asm/mach/arch.h> | ||
18 | #include <mach/kirkwood.h> | ||
19 | #include "common.h" | ||
20 | #include "mpp.h" | ||
21 | |||
22 | #define NSA310_GPIO_USB_POWER_OFF 21 | ||
23 | #define NSA310_GPIO_POWER_OFF 48 | ||
24 | |||
25 | static unsigned int nsa310_mpp_config[] __initdata = { | ||
26 | MPP12_GPIO, /* led esata green */ | ||
27 | MPP13_GPIO, /* led esata red */ | ||
28 | MPP15_GPIO, /* led usb green */ | ||
29 | MPP16_GPIO, /* led usb red */ | ||
30 | MPP21_GPIO, /* control usb power off */ | ||
31 | MPP28_GPIO, /* led sys green */ | ||
32 | MPP29_GPIO, /* led sys red */ | ||
33 | MPP36_GPIO, /* key reset */ | ||
34 | MPP37_GPIO, /* key copy */ | ||
35 | MPP39_GPIO, /* led copy green */ | ||
36 | MPP40_GPIO, /* led copy red */ | ||
37 | MPP41_GPIO, /* led hdd green */ | ||
38 | MPP42_GPIO, /* led hdd red */ | ||
39 | MPP44_GPIO, /* ?? */ | ||
40 | MPP46_GPIO, /* key power */ | ||
41 | MPP48_GPIO, /* control power off */ | ||
42 | 0 | ||
43 | }; | ||
44 | |||
45 | static struct i2c_board_info __initdata nsa310_i2c_info[] = { | ||
46 | { I2C_BOARD_INFO("adt7476", 0x2e) }, | ||
47 | }; | ||
48 | |||
49 | static void nsa310_power_off(void) | ||
50 | { | ||
51 | gpio_set_value(NSA310_GPIO_POWER_OFF, 1); | ||
52 | } | ||
53 | |||
54 | static int __init nsa310_gpio_request(unsigned int gpio, unsigned long flags, | ||
55 | const char *label) | ||
56 | { | ||
57 | int err; | ||
58 | |||
59 | err = gpio_request_one(gpio, flags, label); | ||
60 | if (err) | ||
61 | pr_err("NSA-310: can't setup GPIO%u (%s), err=%d\n", | ||
62 | gpio, label, err); | ||
63 | |||
64 | return err; | ||
65 | } | ||
66 | |||
67 | static void __init nsa310_gpio_init(void) | ||
68 | { | ||
69 | int err; | ||
70 | |||
71 | err = nsa310_gpio_request(NSA310_GPIO_POWER_OFF, GPIOF_OUT_INIT_LOW, | ||
72 | "Power Off"); | ||
73 | if (!err) | ||
74 | pm_power_off = nsa310_power_off; | ||
75 | |||
76 | nsa310_gpio_request(NSA310_GPIO_USB_POWER_OFF, GPIOF_OUT_INIT_LOW, | ||
77 | "USB Power Off"); | ||
78 | } | ||
79 | |||
80 | void __init nsa310_init(void) | ||
81 | { | ||
82 | u32 dev, rev; | ||
83 | |||
84 | kirkwood_mpp_conf(nsa310_mpp_config); | ||
85 | |||
86 | nsa310_gpio_init(); | ||
87 | |||
88 | kirkwood_pcie_id(&dev, &rev); | ||
89 | |||
90 | i2c_register_board_info(0, ARRAY_AND_SIZE(nsa310_i2c_info)); | ||
91 | } | ||
92 | |||
93 | static int __init nsa310_pci_init(void) | ||
94 | { | ||
95 | if (of_machine_is_compatible("zyxel,nsa310")) | ||
96 | kirkwood_pcie_init(KW_PCIE0); | ||
97 | |||
98 | return 0; | ||
99 | } | ||
100 | |||
101 | subsys_initcall(nsa310_pci_init); | ||
diff --git a/arch/arm/mach-kirkwood/board-openblocks_a6.c b/arch/arm/mach-kirkwood/board-openblocks_a6.c new file mode 100644 index 000000000000..815fc6451d52 --- /dev/null +++ b/arch/arm/mach-kirkwood/board-openblocks_a6.c | |||
@@ -0,0 +1,70 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Nobuhiro Iwamatsu <iwamatsu@nigauri.org> | ||
3 | * | ||
4 | * arch/arm/mach-kirkwood/board-openblocks_a6.c | ||
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 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/mv643xx_eth.h> | ||
14 | #include <linux/clk.h> | ||
15 | #include <linux/clk-private.h> | ||
16 | #include "common.h" | ||
17 | #include "mpp.h" | ||
18 | |||
19 | static struct mv643xx_eth_platform_data openblocks_ge00_data = { | ||
20 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
21 | }; | ||
22 | |||
23 | static unsigned int openblocks_a6_mpp_config[] __initdata = { | ||
24 | MPP0_NF_IO2, | ||
25 | MPP1_NF_IO3, | ||
26 | MPP2_NF_IO4, | ||
27 | MPP3_NF_IO5, | ||
28 | MPP4_NF_IO6, | ||
29 | MPP5_NF_IO7, | ||
30 | MPP6_SYSRST_OUTn, | ||
31 | MPP8_UART1_RTS, | ||
32 | MPP9_UART1_CTS, | ||
33 | MPP10_UART0_TXD, | ||
34 | MPP11_UART0_RXD, | ||
35 | MPP13_UART1_TXD, | ||
36 | MPP14_UART1_RXD, | ||
37 | MPP15_UART0_RTS, | ||
38 | MPP16_UART0_CTS, | ||
39 | MPP18_NF_IO0, | ||
40 | MPP19_NF_IO1, | ||
41 | MPP20_GPIO, /* DIP SW0 */ | ||
42 | MPP21_GPIO, /* DIP SW1 */ | ||
43 | MPP22_GPIO, /* DIP SW2 */ | ||
44 | MPP23_GPIO, /* DIP SW3 */ | ||
45 | MPP24_GPIO, /* GPIO 0 */ | ||
46 | MPP25_GPIO, /* GPIO 1 */ | ||
47 | MPP26_GPIO, /* GPIO 2 */ | ||
48 | MPP27_GPIO, /* GPIO 3 */ | ||
49 | MPP28_GPIO, /* GPIO 4 */ | ||
50 | MPP29_GPIO, /* GPIO 5 */ | ||
51 | MPP30_GPIO, /* GPIO 6 */ | ||
52 | MPP31_GPIO, /* GPIO 7 */ | ||
53 | MPP36_TW1_SDA, | ||
54 | MPP37_TW1_SCK, | ||
55 | MPP38_GPIO, /* INIT */ | ||
56 | MPP39_GPIO, /* USB OC */ | ||
57 | MPP41_GPIO, /* LED: Red */ | ||
58 | MPP42_GPIO, /* LED: Green */ | ||
59 | MPP43_GPIO, /* LED: Yellow */ | ||
60 | 0, | ||
61 | }; | ||
62 | |||
63 | void __init openblocks_a6_init(void) | ||
64 | { | ||
65 | /* | ||
66 | * Basic setup. Needs to be called early. | ||
67 | */ | ||
68 | kirkwood_mpp_conf(openblocks_a6_mpp_config); | ||
69 | kirkwood_ge00_init(&openblocks_ge00_data); | ||
70 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c index 1750e68506c1..acb0187c7ee1 100644 --- a/arch/arm/mach-kirkwood/board-ts219.c +++ b/arch/arm/mach-kirkwood/board-ts219.c | |||
@@ -19,54 +19,25 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/mv643xx_eth.h> | 21 | #include <linux/mv643xx_eth.h> |
22 | #include <linux/ata_platform.h> | ||
23 | #include <linux/gpio_keys.h> | ||
24 | #include <linux/input.h> | ||
25 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
26 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
27 | #include <mach/kirkwood.h> | 24 | #include <mach/kirkwood.h> |
28 | #include "common.h" | 25 | #include "common.h" |
29 | #include "mpp.h" | ||
30 | #include "tsx1x-common.h" | 26 | #include "tsx1x-common.h" |
31 | 27 | ||
32 | static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { | 28 | static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { |
33 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 29 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
34 | }; | 30 | }; |
35 | 31 | ||
36 | static unsigned int qnap_ts219_mpp_config[] __initdata = { | ||
37 | MPP0_SPI_SCn, | ||
38 | MPP1_SPI_MOSI, | ||
39 | MPP2_SPI_SCK, | ||
40 | MPP3_SPI_MISO, | ||
41 | MPP4_SATA1_ACTn, | ||
42 | MPP5_SATA0_ACTn, | ||
43 | MPP8_TW0_SDA, | ||
44 | MPP9_TW0_SCK, | ||
45 | MPP10_UART0_TXD, | ||
46 | MPP11_UART0_RXD, | ||
47 | MPP13_UART1_TXD, /* PIC controller */ | ||
48 | MPP14_UART1_RXD, /* PIC controller */ | ||
49 | MPP15_GPIO, /* USB Copy button (on devices with 88F6281) */ | ||
50 | MPP16_GPIO, /* Reset button (on devices with 88F6281) */ | ||
51 | MPP36_GPIO, /* RAM: 0: 256 MB, 1: 512 MB */ | ||
52 | MPP37_GPIO, /* Reset button (on devices with 88F6282) */ | ||
53 | MPP43_GPIO, /* USB Copy button (on devices with 88F6282) */ | ||
54 | MPP44_GPIO, /* Board ID: 0: TS-11x, 1: TS-21x */ | ||
55 | 0 | ||
56 | }; | ||
57 | |||
58 | void __init qnap_dt_ts219_init(void) | 32 | void __init qnap_dt_ts219_init(void) |
59 | { | 33 | { |
60 | u32 dev, rev; | 34 | u32 dev, rev; |
61 | 35 | ||
62 | kirkwood_mpp_conf(qnap_ts219_mpp_config); | ||
63 | |||
64 | kirkwood_pcie_id(&dev, &rev); | 36 | kirkwood_pcie_id(&dev, &rev); |
65 | if (dev == MV88F6282_DEV_ID) | 37 | if (dev == MV88F6282_DEV_ID) |
66 | qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | 38 | qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); |
67 | 39 | ||
68 | kirkwood_ge00_init(&qnap_ts219_ge00_data); | 40 | kirkwood_ge00_init(&qnap_ts219_ge00_data); |
69 | kirkwood_ehci_init(); | ||
70 | 41 | ||
71 | pm_power_off = qnap_tsx1x_power_off; | 42 | pm_power_off = qnap_tsx1x_power_off; |
72 | } | 43 | } |
diff --git a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c new file mode 100644 index 000000000000..15e69fcde9f4 --- /dev/null +++ b/arch/arm/mach-kirkwood/board-usi_topkick.c | |||
@@ -0,0 +1,81 @@ | |||
1 | /* | ||
2 | * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> | ||
3 | * | ||
4 | * arch/arm/mach-kirkwood/board-usi_topkick.c | ||
5 | * | ||
6 | * USI Topkick Init for drivers not converted to flattened device tree yet. | ||
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 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/mv643xx_eth.h> | ||
16 | #include <linux/gpio.h> | ||
17 | #include <linux/platform_data/mmc-mvsdio.h> | ||
18 | #include "common.h" | ||
19 | #include "mpp.h" | ||
20 | |||
21 | static struct mv643xx_eth_platform_data topkick_ge00_data = { | ||
22 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
23 | }; | ||
24 | |||
25 | static struct mvsdio_platform_data topkick_mvsdio_data = { | ||
26 | /* unfortunately the CD signal has not been connected */ | ||
27 | }; | ||
28 | |||
29 | /* | ||
30 | * GPIO LED layout | ||
31 | * | ||
32 | * /-SYS_LED(2) | ||
33 | * | | ||
34 | * | /-DISK_LED | ||
35 | * | | | ||
36 | * | | /-WLAN_LED(2) | ||
37 | * | | | | ||
38 | * [SW] [*] [*] [*] | ||
39 | */ | ||
40 | |||
41 | /* | ||
42 | * Switch positions | ||
43 | * | ||
44 | * /-SW_LEFT | ||
45 | * | | ||
46 | * | /-SW_IDLE | ||
47 | * | | | ||
48 | * | | /-SW_RIGHT | ||
49 | * | | | | ||
50 | * PS [L] [I] [R] LEDS | ||
51 | */ | ||
52 | |||
53 | static unsigned int topkick_mpp_config[] __initdata = { | ||
54 | MPP21_GPIO, /* DISK_LED (low active) - yellow */ | ||
55 | MPP36_GPIO, /* SATA0 power enable (high active) */ | ||
56 | MPP37_GPIO, /* SYS_LED2 (low active) - red */ | ||
57 | MPP38_GPIO, /* SYS_LED (low active) - blue */ | ||
58 | MPP39_GPIO, /* WLAN_LED (low active) - green */ | ||
59 | MPP43_GPIO, /* SW_LEFT (low active) */ | ||
60 | MPP44_GPIO, /* SW_RIGHT (low active) */ | ||
61 | MPP45_GPIO, /* SW_IDLE (low active) */ | ||
62 | MPP46_GPIO, /* SW_LEFT (low active) */ | ||
63 | MPP48_GPIO, /* WLAN_LED2 (low active) - yellow */ | ||
64 | 0 | ||
65 | }; | ||
66 | |||
67 | #define TOPKICK_SATA0_PWR_ENABLE 36 | ||
68 | |||
69 | void __init usi_topkick_init(void) | ||
70 | { | ||
71 | /* | ||
72 | * Basic setup. Needs to be called early. | ||
73 | */ | ||
74 | kirkwood_mpp_conf(topkick_mpp_config); | ||
75 | |||
76 | /* SATA0 power enable */ | ||
77 | gpio_set_value(TOPKICK_SATA0_PWR_ENABLE, 1); | ||
78 | |||
79 | kirkwood_ge00_init(&topkick_ge00_data); | ||
80 | kirkwood_sdio_init(&topkick_mvsdio_data); | ||
81 | } | ||
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index 2c6c218fb79e..5303be62b311 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -18,10 +18,10 @@ | |||
18 | #include <linux/clk-provider.h> | 18 | #include <linux/clk-provider.h> |
19 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
20 | #include <linux/mv643xx_i2c.h> | 20 | #include <linux/mv643xx_i2c.h> |
21 | #include <linux/timex.h> | ||
22 | #include <linux/kexec.h> | ||
21 | #include <net/dsa.h> | 23 | #include <net/dsa.h> |
22 | #include <asm/page.h> | 24 | #include <asm/page.h> |
23 | #include <asm/timex.h> | ||
24 | #include <asm/kexec.h> | ||
25 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
26 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
27 | #include <mach/kirkwood.h> | 27 | #include <mach/kirkwood.h> |
@@ -266,6 +266,7 @@ void __init kirkwood_clk_init(void) | |||
266 | orion_clkdev_add("1", "pcie", pex1); | 266 | orion_clkdev_add("1", "pcie", pex1); |
267 | orion_clkdev_add(NULL, "kirkwood-i2s", audio); | 267 | orion_clkdev_add(NULL, "kirkwood-i2s", audio); |
268 | orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", runit); | 268 | orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", runit); |
269 | orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".1", runit); | ||
269 | 270 | ||
270 | /* Marvell says runit is used by SPI, UART, NAND, TWSI, ..., | 271 | /* Marvell says runit is used by SPI, UART, NAND, TWSI, ..., |
271 | * so should never be gated. | 272 | * so should never be gated. |
@@ -425,7 +426,7 @@ void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data) | |||
425 | /***************************************************************************** | 426 | /***************************************************************************** |
426 | * SPI | 427 | * SPI |
427 | ****************************************************************************/ | 428 | ****************************************************************************/ |
428 | void __init kirkwood_spi_init() | 429 | void __init kirkwood_spi_init(void) |
429 | { | 430 | { |
430 | orion_spi_init(SPI_PHYS_BASE); | 431 | orion_spi_init(SPI_PHYS_BASE); |
431 | } | 432 | } |
@@ -646,8 +647,7 @@ void __init kirkwood_l2_init(void) | |||
646 | 647 | ||
647 | void __init kirkwood_init(void) | 648 | void __init kirkwood_init(void) |
648 | { | 649 | { |
649 | printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n", | 650 | pr_info("Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), kirkwood_tclk); |
650 | kirkwood_id(), kirkwood_tclk); | ||
651 | 651 | ||
652 | /* | 652 | /* |
653 | * Disable propagation of mbus errors to the CPU local bus, | 653 | * Disable propagation of mbus errors to the CPU local bus, |
@@ -671,7 +671,7 @@ void __init kirkwood_init(void) | |||
671 | kirkwood_xor1_init(); | 671 | kirkwood_xor1_init(); |
672 | kirkwood_crypto_init(); | 672 | kirkwood_crypto_init(); |
673 | 673 | ||
674 | #ifdef CONFIG_KEXEC | 674 | #ifdef CONFIG_KEXEC |
675 | kexec_reinit = kirkwood_enable_pcie; | 675 | kexec_reinit = kirkwood_enable_pcie; |
676 | #endif | 676 | #endif |
677 | } | 677 | } |
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index bcffd7ca1ca2..5ffa57f08c80 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h | |||
@@ -47,7 +47,8 @@ void kirkwood_i2c_init(void); | |||
47 | void kirkwood_uart0_init(void); | 47 | void kirkwood_uart0_init(void); |
48 | void kirkwood_uart1_init(void); | 48 | void kirkwood_uart1_init(void); |
49 | void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); | 49 | void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); |
50 | void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *)); | 50 | void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, |
51 | int (*dev_ready)(struct mtd_info *)); | ||
51 | void kirkwood_audio_init(void); | 52 | void kirkwood_audio_init(void); |
52 | void kirkwood_restart(char, const char *); | 53 | void kirkwood_restart(char, const char *); |
53 | void kirkwood_clk_init(void); | 54 | void kirkwood_clk_init(void); |
@@ -112,6 +113,40 @@ void km_kirkwood_init(void); | |||
112 | static inline void km_kirkwood_init(void) {}; | 113 | static inline void km_kirkwood_init(void) {}; |
113 | #endif | 114 | #endif |
114 | 115 | ||
116 | #ifdef CONFIG_MACH_MPLCEC4_DT | ||
117 | void mplcec4_init(void); | ||
118 | #else | ||
119 | static inline void mplcec4_init(void) {}; | ||
120 | #endif | ||
121 | |||
122 | #if defined(CONFIG_MACH_INETSPACE_V2_DT) || \ | ||
123 | defined(CONFIG_MACH_NETSPACE_V2_DT) || \ | ||
124 | defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \ | ||
125 | defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \ | ||
126 | defined(CONFIG_MACH_NETSPACE_MINI_V2_DT) | ||
127 | void ns2_init(void); | ||
128 | #else | ||
129 | static inline void ns2_init(void) {}; | ||
130 | #endif | ||
131 | |||
132 | #ifdef CONFIG_MACH_NSA310_DT | ||
133 | void nsa310_init(void); | ||
134 | #else | ||
135 | static inline void nsa310_init(void) {}; | ||
136 | #endif | ||
137 | |||
138 | #ifdef CONFIG_MACH_OPENBLOCKS_A6_DT | ||
139 | void openblocks_a6_init(void); | ||
140 | #else | ||
141 | static inline void openblocks_a6_init(void) {}; | ||
142 | #endif | ||
143 | |||
144 | #ifdef CONFIG_MACH_TOPKICK_DT | ||
145 | void usi_topkick_init(void); | ||
146 | #else | ||
147 | static inline void usi_topkick_init(void) {}; | ||
148 | #endif | ||
149 | |||
115 | /* early init functions not converted to fdt yet */ | 150 | /* early init functions not converted to fdt yet */ |
116 | char *kirkwood_id(void); | 151 | char *kirkwood_id(void); |
117 | void kirkwood_l2_init(void); | 152 | void kirkwood_l2_init(void); |
diff --git a/arch/arm/mach-kirkwood/cpuidle.c b/arch/arm/mach-kirkwood/cpuidle.c index 0f1710941878..f7304670f2f8 100644 --- a/arch/arm/mach-kirkwood/cpuidle.c +++ b/arch/arm/mach-kirkwood/cpuidle.c | |||
@@ -64,7 +64,7 @@ static int kirkwood_init_cpuidle(void) | |||
64 | 64 | ||
65 | cpuidle_register_driver(&kirkwood_idle_driver); | 65 | cpuidle_register_driver(&kirkwood_idle_driver); |
66 | if (cpuidle_register_device(device)) { | 66 | if (cpuidle_register_device(device)) { |
67 | printk(KERN_ERR "kirkwood_init_cpuidle: Failed registering\n"); | 67 | pr_err("kirkwood_init_cpuidle: Failed registering\n"); |
68 | return -EIO; | 68 | return -EIO; |
69 | } | 69 | } |
70 | return 0; | 70 | return 0; |
diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c index 23dcb19cc2a7..791a98fafa29 100644 --- a/arch/arm/mach-kirkwood/dockstar-setup.c +++ b/arch/arm/mach-kirkwood/dockstar-setup.c | |||
@@ -93,7 +93,7 @@ static void __init dockstar_init(void) | |||
93 | 93 | ||
94 | if (gpio_request(29, "USB Power Enable") != 0 || | 94 | if (gpio_request(29, "USB Power Enable") != 0 || |
95 | gpio_direction_output(29, 1) != 0) | 95 | gpio_direction_output(29, 1) != 0) |
96 | printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); | 96 | pr_err("can't set up GPIO 29 (USB Power Enable)\n"); |
97 | kirkwood_ehci_init(); | 97 | kirkwood_ehci_init(); |
98 | 98 | ||
99 | kirkwood_ge00_init(&dockstar_ge00_data); | 99 | kirkwood_ge00_init(&dockstar_ge00_data); |
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c index 884703535a0a..2a97a2e4163c 100644 --- a/arch/arm/mach-kirkwood/irq.c +++ b/arch/arm/mach-kirkwood/irq.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <mach/bridge-regs.h> | 14 | #include <mach/bridge-regs.h> |
15 | #include <plat/orion-gpio.h> | 15 | #include <plat/orion-gpio.h> |
16 | #include <plat/irq.h> | 16 | #include <plat/irq.h> |
17 | #include "common.h" | ||
17 | 18 | ||
18 | static int __initdata gpio0_irqs[4] = { | 19 | static int __initdata gpio0_irqs[4] = { |
19 | IRQ_KIRKWOOD_GPIO_LOW_0_7, | 20 | IRQ_KIRKWOOD_GPIO_LOW_0_7, |
diff --git a/arch/arm/mach-kirkwood/lacie_v2-common.c b/arch/arm/mach-kirkwood/lacie_v2-common.c index 285edab776e9..489495976fcd 100644 --- a/arch/arm/mach-kirkwood/lacie_v2-common.c +++ b/arch/arm/mach-kirkwood/lacie_v2-common.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <mach/irqs.h> | 19 | #include <mach/irqs.h> |
20 | #include <plat/time.h> | 20 | #include <plat/time.h> |
21 | #include "common.h" | 21 | #include "common.h" |
22 | #include "lacie_v2-common.h" | ||
22 | 23 | ||
23 | /***************************************************************************** | 24 | /***************************************************************************** |
24 | * 512KB SPI Flash on Boot Device (MACRONIX MX25L4005) | 25 | * 512KB SPI Flash on Boot Device (MACRONIX MX25L4005) |
diff --git a/arch/arm/mach-kirkwood/mpp.c b/arch/arm/mach-kirkwood/mpp.c index 0c6ad63f10c7..827cde42414f 100644 --- a/arch/arm/mach-kirkwood/mpp.c +++ b/arch/arm/mach-kirkwood/mpp.c | |||
@@ -30,8 +30,8 @@ static unsigned int __init kirkwood_variant(void) | |||
30 | if (dev == MV88F6180_DEV_ID) | 30 | if (dev == MV88F6180_DEV_ID) |
31 | return MPP_F6180_MASK; | 31 | return MPP_F6180_MASK; |
32 | 32 | ||
33 | printk(KERN_ERR "MPP setup: unknown kirkwood variant " | 33 | pr_err("MPP setup: unknown kirkwood variant (dev %#x rev %#x)\n", |
34 | "(dev %#x rev %#x)\n", dev, rev); | 34 | dev, rev); |
35 | return 0; | 35 | return 0; |
36 | } | 36 | } |
37 | 37 | ||
diff --git a/arch/arm/mach-kirkwood/netspace_v2-setup.c b/arch/arm/mach-kirkwood/netspace_v2-setup.c index 88b0788bacae..728e86d33f0c 100644 --- a/arch/arm/mach-kirkwood/netspace_v2-setup.c +++ b/arch/arm/mach-kirkwood/netspace_v2-setup.c | |||
@@ -79,7 +79,7 @@ static struct platform_device netspace_v2_gpio_buttons = { | |||
79 | .name = "gpio-keys", | 79 | .name = "gpio-keys", |
80 | .id = -1, | 80 | .id = -1, |
81 | .dev = { | 81 | .dev = { |
82 | .platform_data = &netspace_v2_button_data, | 82 | .platform_data = &netspace_v2_button_data, |
83 | }, | 83 | }, |
84 | }; | 84 | }; |
85 | 85 | ||
@@ -211,7 +211,7 @@ static unsigned int netspace_v2_mpp_config[] __initdata = { | |||
211 | MPP29_GPIO, /* Blue led (slow register) */ | 211 | MPP29_GPIO, /* Blue led (slow register) */ |
212 | MPP30_GPIO, /* Blue led (command register) */ | 212 | MPP30_GPIO, /* Blue led (command register) */ |
213 | MPP31_GPIO, /* Board power off */ | 213 | MPP31_GPIO, /* Board power off */ |
214 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ | 214 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ |
215 | MPP33_GPO, /* Fan speed (bit 2) */ | 215 | MPP33_GPO, /* Fan speed (bit 2) */ |
216 | 0 | 216 | 0 |
217 | }; | 217 | }; |
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c index 134ef50d58fc..7e81e9b586bf 100644 --- a/arch/arm/mach-kirkwood/openrd-setup.c +++ b/arch/arm/mach-kirkwood/openrd-setup.c | |||
@@ -121,14 +121,12 @@ static int __init uart1_mpp_config(void) | |||
121 | kirkwood_mpp_conf(openrd_uart1_mpp_config); | 121 | kirkwood_mpp_conf(openrd_uart1_mpp_config); |
122 | 122 | ||
123 | if (gpio_request(34, "SD_UART1_SEL")) { | 123 | if (gpio_request(34, "SD_UART1_SEL")) { |
124 | printk(KERN_ERR "GPIO request failed for SD/UART1 selection" | 124 | pr_err("GPIO request 34 failed for SD/UART1 selection\n"); |
125 | ", gpio: 34\n"); | ||
126 | return -EIO; | 125 | return -EIO; |
127 | } | 126 | } |
128 | 127 | ||
129 | if (gpio_request(28, "RS232_RS485_SEL")) { | 128 | if (gpio_request(28, "RS232_RS485_SEL")) { |
130 | printk(KERN_ERR "GPIO request failed for RS232/RS485 selection" | 129 | pr_err("GPIO request 28 failed for RS232/RS485 selection\n"); |
131 | ", gpio# 28\n"); | ||
132 | gpio_free(34); | 130 | gpio_free(34); |
133 | return -EIO; | 131 | return -EIO; |
134 | } | 132 | } |
@@ -185,15 +183,13 @@ static void __init openrd_init(void) | |||
185 | 183 | ||
186 | if (uart1 <= 0) { | 184 | if (uart1 <= 0) { |
187 | if (uart1 < 0) | 185 | if (uart1 < 0) |
188 | printk(KERN_ERR "Invalid kernel parameter to select " | 186 | pr_err("Invalid kernel parameter to select UART1. Defaulting to SD. ERROR CODE: %d\n", |
189 | "UART1. Defaulting to SD. ERROR CODE: %d\n", | 187 | uart1); |
190 | uart1); | ||
191 | 188 | ||
192 | /* Select SD | 189 | /* Select SD |
193 | * Pin # 34: 0 => UART1, 1 => SD */ | 190 | * Pin # 34: 0 => UART1, 1 => SD */ |
194 | if (gpio_request(34, "SD_UART1_SEL")) { | 191 | if (gpio_request(34, "SD_UART1_SEL")) { |
195 | printk(KERN_ERR "GPIO request failed for SD/UART1 " | 192 | pr_err("GPIO request 34 failed for SD/UART1 selection\n"); |
196 | "selection, gpio: 34\n"); | ||
197 | } else { | 193 | } else { |
198 | 194 | ||
199 | gpio_direction_output(34, 1); | 195 | gpio_direction_output(34, 1); |
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c index ec544918b12c..1e9f90ee0f5c 100644 --- a/arch/arm/mach-kirkwood/pcie.c +++ b/arch/arm/mach-kirkwood/pcie.c | |||
@@ -26,7 +26,7 @@ static void kirkwood_enable_pcie_clk(const char *port) | |||
26 | 26 | ||
27 | clk = clk_get_sys("pcie", port); | 27 | clk = clk_get_sys("pcie", port); |
28 | if (IS_ERR(clk)) { | 28 | if (IS_ERR(clk)) { |
29 | printk(KERN_ERR "PCIE clock %s missing\n", port); | 29 | pr_err("PCIE clock %s missing\n", port); |
30 | return; | 30 | return; |
31 | } | 31 | } |
32 | clk_prepare_enable(clk); | 32 | clk_prepare_enable(clk); |
@@ -168,7 +168,7 @@ static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) | |||
168 | return 0; | 168 | return 0; |
169 | 169 | ||
170 | index = pcie_port_map[nr]; | 170 | index = pcie_port_map[nr]; |
171 | printk(KERN_INFO "PCI: bus%d uses PCIe port %d\n", sys->busnr, index); | 171 | pr_info("PCI: bus%d uses PCIe port %d\n", sys->busnr, index); |
172 | 172 | ||
173 | pp = kzalloc(sizeof(*pp), GFP_KERNEL); | 173 | pp = kzalloc(sizeof(*pp), GFP_KERNEL); |
174 | if (!pp) | 174 | if (!pp) |
@@ -186,7 +186,8 @@ static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) | |||
186 | case 1: | 186 | case 1: |
187 | kirkwood_enable_pcie_clk("1"); | 187 | kirkwood_enable_pcie_clk("1"); |
188 | pcie1_ioresources_init(pp); | 188 | pcie1_ioresources_init(pp); |
189 | pci_ioremap_io(SZ_64K * sys->busnr, KIRKWOOD_PCIE1_IO_PHYS_BASE); | 189 | pci_ioremap_io(SZ_64K * sys->busnr, |
190 | KIRKWOOD_PCIE1_IO_PHYS_BASE); | ||
190 | break; | 191 | break; |
191 | default: | 192 | default: |
192 | panic("PCIe setup: invalid controller %d", index); | 193 | panic("PCIe setup: invalid controller %d", index); |
@@ -224,22 +225,6 @@ static void __devinit rc_pci_fixup(struct pci_dev *dev) | |||
224 | } | 225 | } |
225 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup); | 226 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup); |
226 | 227 | ||
227 | static struct pci_bus __init * | ||
228 | kirkwood_pcie_scan_bus(int nr, struct pci_sys_data *sys) | ||
229 | { | ||
230 | struct pci_bus *bus; | ||
231 | |||
232 | if (nr < num_pcie_ports) { | ||
233 | bus = pci_scan_root_bus(NULL, sys->busnr, &pcie_ops, sys, | ||
234 | &sys->resources); | ||
235 | } else { | ||
236 | bus = NULL; | ||
237 | BUG(); | ||
238 | } | ||
239 | |||
240 | return bus; | ||
241 | } | ||
242 | |||
243 | static int __init kirkwood_pcie_map_irq(const struct pci_dev *dev, u8 slot, | 228 | static int __init kirkwood_pcie_map_irq(const struct pci_dev *dev, u8 slot, |
244 | u8 pin) | 229 | u8 pin) |
245 | { | 230 | { |
@@ -251,19 +236,19 @@ static int __init kirkwood_pcie_map_irq(const struct pci_dev *dev, u8 slot, | |||
251 | 236 | ||
252 | static struct hw_pci kirkwood_pci __initdata = { | 237 | static struct hw_pci kirkwood_pci __initdata = { |
253 | .setup = kirkwood_pcie_setup, | 238 | .setup = kirkwood_pcie_setup, |
254 | .scan = kirkwood_pcie_scan_bus, | ||
255 | .map_irq = kirkwood_pcie_map_irq, | 239 | .map_irq = kirkwood_pcie_map_irq, |
240 | .ops = &pcie_ops, | ||
256 | }; | 241 | }; |
257 | 242 | ||
258 | static void __init add_pcie_port(int index, void __iomem *base) | 243 | static void __init add_pcie_port(int index, void __iomem *base) |
259 | { | 244 | { |
260 | printk(KERN_INFO "Kirkwood PCIe port %d: ", index); | 245 | pr_info("Kirkwood PCIe port %d: ", index); |
261 | 246 | ||
262 | if (orion_pcie_link_up(base)) { | 247 | if (orion_pcie_link_up(base)) { |
263 | printk(KERN_INFO "link up\n"); | 248 | pr_info("link up\n"); |
264 | pcie_port_map[num_pcie_ports++] = index; | 249 | pcie_port_map[num_pcie_ports++] = index; |
265 | } else | 250 | } else |
266 | printk(KERN_INFO "link down, ignoring\n"); | 251 | pr_info("link down, ignoring\n"); |
267 | } | 252 | } |
268 | 253 | ||
269 | void __init kirkwood_pcie_init(unsigned int portmask) | 254 | void __init kirkwood_pcie_init(unsigned int portmask) |
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c index 28d0abaf4bd9..8a175948b28d 100644 --- a/arch/arm/mach-kirkwood/sheevaplug-setup.c +++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c | |||
@@ -117,7 +117,7 @@ static void __init sheevaplug_init(void) | |||
117 | 117 | ||
118 | if (gpio_request(29, "USB Power Enable") != 0 || | 118 | if (gpio_request(29, "USB Power Enable") != 0 || |
119 | gpio_direction_output(29, 1) != 0) | 119 | gpio_direction_output(29, 1) != 0) |
120 | printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); | 120 | pr_err("can't set up GPIO 29 (USB Power Enable)\n"); |
121 | kirkwood_ehci_init(); | 121 | kirkwood_ehci_init(); |
122 | 122 | ||
123 | kirkwood_ge00_init(&sheevaplug_ge00_data); | 123 | kirkwood_ge00_init(&sheevaplug_ge00_data); |
diff --git a/arch/arm/mach-kirkwood/t5325-setup.c b/arch/arm/mach-kirkwood/t5325-setup.c index bad738e44044..f2daf711e72e 100644 --- a/arch/arm/mach-kirkwood/t5325-setup.c +++ b/arch/arm/mach-kirkwood/t5325-setup.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #include "common.h" | 29 | #include "common.h" |
30 | #include "mpp.h" | 30 | #include "mpp.h" |
31 | 31 | ||
32 | struct mtd_partition hp_t5325_partitions[] = { | 32 | static struct mtd_partition hp_t5325_partitions[] = { |
33 | { | 33 | { |
34 | .name = "u-boot env", | 34 | .name = "u-boot env", |
35 | .size = SZ_64K, | 35 | .size = SZ_64K, |
@@ -59,14 +59,14 @@ struct mtd_partition hp_t5325_partitions[] = { | |||
59 | }, | 59 | }, |
60 | }; | 60 | }; |
61 | 61 | ||
62 | const struct flash_platform_data hp_t5325_flash = { | 62 | static const struct flash_platform_data hp_t5325_flash = { |
63 | .type = "mx25l8005", | 63 | .type = "mx25l8005", |
64 | .name = "spi_flash", | 64 | .name = "spi_flash", |
65 | .parts = hp_t5325_partitions, | 65 | .parts = hp_t5325_partitions, |
66 | .nr_parts = ARRAY_SIZE(hp_t5325_partitions), | 66 | .nr_parts = ARRAY_SIZE(hp_t5325_partitions), |
67 | }; | 67 | }; |
68 | 68 | ||
69 | struct spi_board_info __initdata hp_t5325_spi_slave_info[] = { | 69 | static struct spi_board_info __initdata hp_t5325_spi_slave_info[] = { |
70 | { | 70 | { |
71 | .modalias = "m25p80", | 71 | .modalias = "m25p80", |
72 | .platform_data = &hp_t5325_flash, | 72 | .platform_data = &hp_t5325_flash, |
diff --git a/arch/arm/mach-kirkwood/ts41x-setup.c b/arch/arm/mach-kirkwood/ts41x-setup.c index 367a9400f532..e4c61279ea86 100644 --- a/arch/arm/mach-kirkwood/ts41x-setup.c +++ b/arch/arm/mach-kirkwood/ts41x-setup.c | |||
@@ -170,8 +170,7 @@ static int __init ts41x_pci_init(void) | |||
170 | else | 170 | else |
171 | kirkwood_pcie_init(KW_PCIE0); | 171 | kirkwood_pcie_init(KW_PCIE0); |
172 | } | 172 | } |
173 | 173 | return 0; | |
174 | return 0; | ||
175 | } | 174 | } |
176 | subsys_initcall(ts41x_pci_init); | 175 | subsys_initcall(ts41x_pci_init); |
177 | 176 | ||
diff --git a/arch/arm/mach-kirkwood/tsx1x-common.c b/arch/arm/mach-kirkwood/tsx1x-common.c index 8943ede29b44..cec87cef76ca 100644 --- a/arch/arm/mach-kirkwood/tsx1x-common.c +++ b/arch/arm/mach-kirkwood/tsx1x-common.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/serial_reg.h> | 7 | #include <linux/serial_reg.h> |
8 | #include <mach/kirkwood.h> | 8 | #include <mach/kirkwood.h> |
9 | #include "common.h" | 9 | #include "common.h" |
10 | #include "tsx1x-common.h" | ||
10 | 11 | ||
11 | /* | 12 | /* |
12 | * QNAP TS-x1x Boards flash | 13 | * QNAP TS-x1x Boards flash |
@@ -29,7 +30,7 @@ | |||
29 | * | 30 | * |
30 | ***************************************************************************/ | 31 | ***************************************************************************/ |
31 | 32 | ||
32 | struct mtd_partition qnap_tsx1x_partitions[] = { | 33 | static struct mtd_partition qnap_tsx1x_partitions[] = { |
33 | { | 34 | { |
34 | .name = "U-Boot", | 35 | .name = "U-Boot", |
35 | .size = 0x00080000, | 36 | .size = 0x00080000, |
@@ -58,14 +59,14 @@ struct mtd_partition qnap_tsx1x_partitions[] = { | |||
58 | }, | 59 | }, |
59 | }; | 60 | }; |
60 | 61 | ||
61 | const struct flash_platform_data qnap_tsx1x_flash = { | 62 | static const struct flash_platform_data qnap_tsx1x_flash = { |
62 | .type = "m25p128", | 63 | .type = "m25p128", |
63 | .name = "spi_flash", | 64 | .name = "spi_flash", |
64 | .parts = qnap_tsx1x_partitions, | 65 | .parts = qnap_tsx1x_partitions, |
65 | .nr_parts = ARRAY_SIZE(qnap_tsx1x_partitions), | 66 | .nr_parts = ARRAY_SIZE(qnap_tsx1x_partitions), |
66 | }; | 67 | }; |
67 | 68 | ||
68 | struct spi_board_info __initdata qnap_tsx1x_spi_slave_info[] = { | 69 | static struct spi_board_info __initdata qnap_tsx1x_spi_slave_info[] = { |
69 | { | 70 | { |
70 | .modalias = "m25p80", | 71 | .modalias = "m25p80", |
71 | .platform_data = &qnap_tsx1x_flash, | 72 | .platform_data = &qnap_tsx1x_flash, |
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 4748ec551a68..98070370d602 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c | |||
@@ -100,6 +100,25 @@ static struct fb_videomode apx4devkit_video_modes[] = { | |||
100 | }, | 100 | }, |
101 | }; | 101 | }; |
102 | 102 | ||
103 | static struct fb_videomode apf28dev_video_modes[] = { | ||
104 | { | ||
105 | .name = "LW700", | ||
106 | .refresh = 60, | ||
107 | .xres = 800, | ||
108 | .yres = 480, | ||
109 | .pixclock = 30303, /* picosecond */ | ||
110 | .left_margin = 96, | ||
111 | .right_margin = 96, /* at least 3 & 1 */ | ||
112 | .upper_margin = 0x14, | ||
113 | .lower_margin = 0x15, | ||
114 | .hsync_len = 64, | ||
115 | .vsync_len = 4, | ||
116 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT | | ||
117 | FB_SYNC_DATA_ENABLE_HIGH_ACT | | ||
118 | FB_SYNC_DOTCLK_FAILING_ACT, | ||
119 | }, | ||
120 | }; | ||
121 | |||
103 | static struct mxsfb_platform_data mxsfb_pdata __initdata; | 122 | static struct mxsfb_platform_data mxsfb_pdata __initdata; |
104 | 123 | ||
105 | /* | 124 | /* |
@@ -160,6 +179,7 @@ static struct sys_timer imx28_timer = { | |||
160 | enum mac_oui { | 179 | enum mac_oui { |
161 | OUI_FSL, | 180 | OUI_FSL, |
162 | OUI_DENX, | 181 | OUI_DENX, |
182 | OUI_CRYSTALFONTZ, | ||
163 | }; | 183 | }; |
164 | 184 | ||
165 | static void __init update_fec_mac_prop(enum mac_oui oui) | 185 | static void __init update_fec_mac_prop(enum mac_oui oui) |
@@ -175,8 +195,12 @@ static void __init update_fec_mac_prop(enum mac_oui oui) | |||
175 | np = of_find_compatible_node(from, NULL, "fsl,imx28-fec"); | 195 | np = of_find_compatible_node(from, NULL, "fsl,imx28-fec"); |
176 | if (!np) | 196 | if (!np) |
177 | return; | 197 | return; |
198 | |||
178 | from = np; | 199 | from = np; |
179 | 200 | ||
201 | if (of_get_property(np, "local-mac-address", NULL)) | ||
202 | continue; | ||
203 | |||
180 | newmac = kzalloc(sizeof(*newmac) + 6, GFP_KERNEL); | 204 | newmac = kzalloc(sizeof(*newmac) + 6, GFP_KERNEL); |
181 | if (!newmac) | 205 | if (!newmac) |
182 | return; | 206 | return; |
@@ -205,6 +229,11 @@ static void __init update_fec_mac_prop(enum mac_oui oui) | |||
205 | macaddr[1] = 0xe5; | 229 | macaddr[1] = 0xe5; |
206 | macaddr[2] = 0x4e; | 230 | macaddr[2] = 0x4e; |
207 | break; | 231 | break; |
232 | case OUI_CRYSTALFONTZ: | ||
233 | macaddr[0] = 0x58; | ||
234 | macaddr[1] = 0xb9; | ||
235 | macaddr[2] = 0xe1; | ||
236 | break; | ||
208 | } | 237 | } |
209 | val = ocotp[i]; | 238 | val = ocotp[i]; |
210 | macaddr[3] = (val >> 16) & 0xff; | 239 | macaddr[3] = (val >> 16) & 0xff; |
@@ -261,6 +290,11 @@ static void __init m28evk_init(void) | |||
261 | mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT; | 290 | mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT; |
262 | } | 291 | } |
263 | 292 | ||
293 | static void __init sc_sps1_init(void) | ||
294 | { | ||
295 | enable_clk_enet_out(); | ||
296 | } | ||
297 | |||
264 | static int apx4devkit_phy_fixup(struct phy_device *phy) | 298 | static int apx4devkit_phy_fixup(struct phy_device *phy) |
265 | { | 299 | { |
266 | phy->dev_flags |= MICREL_PHY_50MHZ_CLK; | 300 | phy->dev_flags |= MICREL_PHY_50MHZ_CLK; |
@@ -355,6 +389,22 @@ static void __init tx28_post_init(void) | |||
355 | pinctrl_put(pctl); | 389 | pinctrl_put(pctl); |
356 | } | 390 | } |
357 | 391 | ||
392 | static void __init cfa10049_init(void) | ||
393 | { | ||
394 | enable_clk_enet_out(); | ||
395 | update_fec_mac_prop(OUI_CRYSTALFONTZ); | ||
396 | } | ||
397 | |||
398 | static void __init apf28_init(void) | ||
399 | { | ||
400 | enable_clk_enet_out(); | ||
401 | |||
402 | mxsfb_pdata.mode_list = apf28dev_video_modes; | ||
403 | mxsfb_pdata.mode_count = ARRAY_SIZE(apf28dev_video_modes); | ||
404 | mxsfb_pdata.default_bpp = 16; | ||
405 | mxsfb_pdata.ld_intf_width = STMLCDIF_16BIT; | ||
406 | } | ||
407 | |||
358 | static void __init mxs_machine_init(void) | 408 | static void __init mxs_machine_init(void) |
359 | { | 409 | { |
360 | if (of_machine_is_compatible("fsl,imx28-evk")) | 410 | if (of_machine_is_compatible("fsl,imx28-evk")) |
@@ -365,6 +415,12 @@ static void __init mxs_machine_init(void) | |||
365 | m28evk_init(); | 415 | m28evk_init(); |
366 | else if (of_machine_is_compatible("bluegiga,apx4devkit")) | 416 | else if (of_machine_is_compatible("bluegiga,apx4devkit")) |
367 | apx4devkit_init(); | 417 | apx4devkit_init(); |
418 | else if (of_machine_is_compatible("crystalfontz,cfa10049")) | ||
419 | cfa10049_init(); | ||
420 | else if (of_machine_is_compatible("armadeus,imx28-apf28")) | ||
421 | apf28_init(); | ||
422 | else if (of_machine_is_compatible("schulercontrol,imx28-sps1")) | ||
423 | sc_sps1_init(); | ||
368 | 424 | ||
369 | of_platform_populate(NULL, of_default_bus_match_table, | 425 | of_platform_populate(NULL, of_default_bus_match_table, |
370 | mxs_auxdata_lookup, NULL); | 426 | mxs_auxdata_lookup, NULL); |
diff --git a/arch/arm/mach-mxs/timer.c b/arch/arm/mach-mxs/timer.c index 7c3792613392..856f4c796061 100644 --- a/arch/arm/mach-mxs/timer.c +++ b/arch/arm/mach-mxs/timer.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/of_irq.h> | 29 | #include <linux/of_irq.h> |
30 | 30 | ||
31 | #include <asm/mach/time.h> | 31 | #include <asm/mach/time.h> |
32 | #include <asm/sched_clock.h> | ||
32 | #include <mach/mxs.h> | 33 | #include <mach/mxs.h> |
33 | #include <mach/common.h> | 34 | #include <mach/common.h> |
34 | 35 | ||
@@ -233,15 +234,22 @@ static struct clocksource clocksource_mxs = { | |||
233 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 234 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
234 | }; | 235 | }; |
235 | 236 | ||
237 | static u32 notrace mxs_read_sched_clock_v2(void) | ||
238 | { | ||
239 | return ~readl_relaxed(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1)); | ||
240 | } | ||
241 | |||
236 | static int __init mxs_clocksource_init(struct clk *timer_clk) | 242 | static int __init mxs_clocksource_init(struct clk *timer_clk) |
237 | { | 243 | { |
238 | unsigned int c = clk_get_rate(timer_clk); | 244 | unsigned int c = clk_get_rate(timer_clk); |
239 | 245 | ||
240 | if (timrot_is_v1()) | 246 | if (timrot_is_v1()) |
241 | clocksource_register_hz(&clocksource_mxs, c); | 247 | clocksource_register_hz(&clocksource_mxs, c); |
242 | else | 248 | else { |
243 | clocksource_mmio_init(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1), | 249 | clocksource_mmio_init(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1), |
244 | "mxs_timer", c, 200, 32, clocksource_mmio_readl_down); | 250 | "mxs_timer", c, 200, 32, clocksource_mmio_readl_down); |
251 | setup_sched_clock(mxs_read_sched_clock_v2, 32, c); | ||
252 | } | ||
245 | 253 | ||
246 | return 0; | 254 | return 0; |
247 | } | 255 | } |
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile index cd169c386161..f0e69cbc5baa 100644 --- a/arch/arm/mach-omap1/Makefile +++ b/arch/arm/mach-omap1/Makefile | |||
@@ -3,7 +3,8 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | # Common support | 5 | # Common support |
6 | obj-y := io.o id.o sram.o time.o irq.o mux.o flash.o serial.o devices.o dma.o | 6 | obj-y := io.o id.o sram-init.o sram.o time.o irq.o mux.o flash.o \ |
7 | serial.o devices.o dma.o | ||
7 | obj-y += clock.o clock_data.o opp_data.o reset.o pm_bus.o timer.o | 8 | obj-y += clock.o clock_data.o opp_data.o reset.o pm_bus.o timer.o |
8 | 9 | ||
9 | ifneq ($(CONFIG_SND_OMAP_SOC_MCBSP),) | 10 | ifneq ($(CONFIG_SND_OMAP_SOC_MCBSP),) |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 8b5800acf726..e067f221f0f9 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -30,13 +30,13 @@ | |||
30 | #include <mach/tc.h> | 30 | #include <mach/tc.h> |
31 | #include <mach/mux.h> | 31 | #include <mach/mux.h> |
32 | #include <mach/flash.h> | 32 | #include <mach/flash.h> |
33 | #include <../plat-omap/fpga.h> | ||
34 | #include <linux/platform_data/keypad-omap.h> | 33 | #include <linux/platform_data/keypad-omap.h> |
35 | 34 | ||
36 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
37 | 36 | ||
38 | #include "iomap.h" | 37 | #include "iomap.h" |
39 | #include "common.h" | 38 | #include "common.h" |
39 | #include "fpga.h" | ||
40 | 40 | ||
41 | /* fsample is pretty close to p2-sample */ | 41 | /* fsample is pretty close to p2-sample */ |
42 | 42 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 9134b646f01b..dcf364d1a8b1 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <asm/mach/map.h> | 39 | #include <asm/mach/map.h> |
40 | 40 | ||
41 | #include <mach/mux.h> | 41 | #include <mach/mux.h> |
42 | #include <plat-omap/dma-omap.h> | 42 | #include <linux/omap-dma.h> |
43 | #include <mach/tc.h> | 43 | #include <mach/tc.h> |
44 | #include <mach/irda.h> | 44 | #include <mach/irda.h> |
45 | #include <linux/platform_data/keypad-omap.h> | 45 | #include <linux/platform_data/keypad-omap.h> |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index bf213d1d8075..b3fcdedb44ca 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <mach/mux.h> | 43 | #include <mach/mux.h> |
44 | #include <mach/tc.h> | 44 | #include <mach/tc.h> |
45 | #include <linux/platform_data/keypad-omap.h> | 45 | #include <linux/platform_data/keypad-omap.h> |
46 | #include <plat-omap/dma-omap.h> | 46 | #include <linux/omap-dma.h> |
47 | #include <mach/flash.h> | 47 | #include <mach/flash.h> |
48 | 48 | ||
49 | #include <mach/hardware.h> | 49 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index c66334f22471..f8033fab0f82 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -33,7 +33,6 @@ | |||
33 | 33 | ||
34 | #include <mach/mux.h> | 34 | #include <mach/mux.h> |
35 | #include <mach/flash.h> | 35 | #include <mach/flash.h> |
36 | #include <../plat-omap/fpga.h> | ||
37 | #include <mach/tc.h> | 36 | #include <mach/tc.h> |
38 | #include <linux/platform_data/keypad-omap.h> | 37 | #include <linux/platform_data/keypad-omap.h> |
39 | 38 | ||
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 584b6fab894b..c33dceb46607 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -37,7 +37,7 @@ | |||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <mach/tc.h> | 39 | #include <mach/tc.h> |
40 | #include <plat-omap/dma-omap.h> | 40 | #include <linux/omap-dma.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <linux/platform_data/keypad-omap.h> | 42 | #include <linux/platform_data/keypad-omap.h> |
43 | 43 | ||
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index fbc986bfe69e..2948b0ee4be8 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <plat-omap/dma-omap.h> | 39 | #include <linux/omap-dma.h> |
40 | #include <mach/tc.h> | 40 | #include <mach/tc.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <linux/platform_data/keypad-omap.h> | 42 | #include <linux/platform_data/keypad-omap.h> |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 60d917a93763..7a05895c0be3 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | #include <mach/flash.h> | 39 | #include <mach/flash.h> |
40 | #include <mach/mux.h> | 40 | #include <mach/mux.h> |
41 | #include <plat-omap/dma-omap.h> | 41 | #include <linux/omap-dma.h> |
42 | #include <mach/tc.h> | 42 | #include <mach/tc.h> |
43 | #include <mach/irda.h> | 43 | #include <mach/irda.h> |
44 | #include <linux/platform_data/keypad-omap.h> | 44 | #include <linux/platform_data/keypad-omap.h> |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 030bd48727be..9a7e483ed6fd 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -30,13 +30,13 @@ | |||
30 | 30 | ||
31 | #include <mach/tc.h> | 31 | #include <mach/tc.h> |
32 | #include <mach/mux.h> | 32 | #include <mach/mux.h> |
33 | #include <../plat-omap/fpga.h> | ||
34 | #include <mach/flash.h> | 33 | #include <mach/flash.h> |
35 | 34 | ||
36 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
37 | 36 | ||
38 | #include "iomap.h" | 37 | #include "iomap.h" |
39 | #include "common.h" | 38 | #include "common.h" |
39 | #include "fpga.h" | ||
40 | 40 | ||
41 | static const unsigned int p2_keymap[] = { | 41 | static const unsigned int p2_keymap[] = { |
42 | KEY(0, 0, KEY_UP), | 42 | KEY(0, 0, KEY_UP), |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 1ebc7e08d6e5..20ed52ae1714 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <plat-omap/dma-omap.h> | 39 | #include <linux/omap-dma.h> |
40 | #include <mach/irda.h> | 40 | #include <mach/irda.h> |
41 | #include <mach/tc.h> | 41 | #include <mach/tc.h> |
42 | #include <mach/board-sx1.h> | 42 | #include <mach/board-sx1.h> |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 931f3f6d396b..4f5fd4a084c0 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c | |||
@@ -24,12 +24,11 @@ | |||
24 | 24 | ||
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | 26 | ||
27 | #include "../plat-omap/sram.h" | ||
28 | |||
29 | #include "soc.h" | 27 | #include "soc.h" |
30 | #include "iomap.h" | 28 | #include "iomap.h" |
31 | #include "clock.h" | 29 | #include "clock.h" |
32 | #include "opp.h" | 30 | #include "opp.h" |
31 | #include "sram.h" | ||
33 | 32 | ||
34 | __u32 arm_idlect1_mask; | 33 | __u32 arm_idlect1_mask; |
35 | struct clk *api_ck_p, *ck_dpll1_p, *ck_ref_p; | 34 | struct clk *api_ck_p, *ck_dpll1_p, *ck_ref_p; |
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c index 28aea55a412e..cb7c6ae2e3fc 100644 --- a/arch/arm/mach-omap1/clock_data.c +++ b/arch/arm/mach-omap1/clock_data.c | |||
@@ -27,10 +27,9 @@ | |||
27 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
28 | #include <mach/usb.h> /* for OTG_BASE */ | 28 | #include <mach/usb.h> /* for OTG_BASE */ |
29 | 29 | ||
30 | #include "../plat-omap/sram.h" | ||
31 | |||
32 | #include "iomap.h" | 30 | #include "iomap.h" |
33 | #include "clock.h" | 31 | #include "clock.h" |
32 | #include "sram.h" | ||
34 | 33 | ||
35 | /* Some ARM_IDLECT1 bit shifts - used in struct arm_idlect1_clk */ | 34 | /* Some ARM_IDLECT1 bit shifts - used in struct arm_idlect1_clk */ |
36 | #define IDL_CLKOUT_ARM_SHIFT 12 | 35 | #define IDL_CLKOUT_ARM_SHIFT 12 |
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index ecd0bb664dad..b53e0854422f 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -26,11 +26,10 @@ | |||
26 | #ifndef __ARCH_ARM_MACH_OMAP1_COMMON_H | 26 | #ifndef __ARCH_ARM_MACH_OMAP1_COMMON_H |
27 | #define __ARCH_ARM_MACH_OMAP1_COMMON_H | 27 | #define __ARCH_ARM_MACH_OMAP1_COMMON_H |
28 | 28 | ||
29 | #include "../plat-omap/common.h" | ||
30 | #include <linux/mtd/mtd.h> | 29 | #include <linux/mtd/mtd.h> |
31 | #include <linux/i2c-omap.h> | 30 | #include <linux/i2c-omap.h> |
32 | 31 | ||
33 | #include "../plat-omap/i2c.h" | 32 | #include <plat/i2c.h> |
34 | 33 | ||
35 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) | 34 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) |
36 | void omap7xx_map_io(void); | 35 | void omap7xx_map_io(void); |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 745031870ce4..0af635205e8a 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -28,12 +28,11 @@ | |||
28 | #include <mach/camera.h> | 28 | #include <mach/camera.h> |
29 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
30 | 30 | ||
31 | #include "../plat-omap/sram.h" | ||
32 | |||
33 | #include "common.h" | 31 | #include "common.h" |
34 | #include "clock.h" | 32 | #include "clock.h" |
35 | #include "dma.h" | 33 | #include "dma.h" |
36 | #include "mmc.h" | 34 | #include "mmc.h" |
35 | #include "sram.h" | ||
37 | 36 | ||
38 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | 37 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) |
39 | 38 | ||
diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index 71305c15fbd5..e190611e4b46 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <linux/device.h> | 25 | #include <linux/device.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | 27 | ||
28 | #include <plat-omap/dma-omap.h> | 28 | #include <linux/omap-dma.h> |
29 | #include <mach/tc.h> | 29 | #include <mach/tc.h> |
30 | 30 | ||
31 | #include <mach/irqs.h> | 31 | #include <mach/irqs.h> |
@@ -321,6 +321,9 @@ static int __init omap1_system_dma_init(void) | |||
321 | d->dev_caps = ENABLE_1510_MODE; | 321 | d->dev_caps = ENABLE_1510_MODE; |
322 | enable_1510_mode = d->dev_caps & ENABLE_1510_MODE; | 322 | enable_1510_mode = d->dev_caps & ENABLE_1510_MODE; |
323 | 323 | ||
324 | if (cpu_is_omap16xx()) | ||
325 | d->dev_caps = ENABLE_16XX_MODE; | ||
326 | |||
324 | d->dev_caps |= SRC_PORT; | 327 | d->dev_caps |= SRC_PORT; |
325 | d->dev_caps |= DST_PORT; | 328 | d->dev_caps |= DST_PORT; |
326 | d->dev_caps |= SRC_INDEX; | 329 | d->dev_caps |= SRC_INDEX; |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index d940fac9a9ed..8bd71b2d0967 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -27,12 +27,11 @@ | |||
27 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
28 | #include <asm/mach/irq.h> | 28 | #include <asm/mach/irq.h> |
29 | 29 | ||
30 | #include <../plat-omap/fpga.h> | ||
31 | |||
32 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
33 | 31 | ||
34 | #include "iomap.h" | 32 | #include "iomap.h" |
35 | #include "common.h" | 33 | #include "common.h" |
34 | #include "fpga.h" | ||
36 | 35 | ||
37 | static void fpga_mask_irq(struct irq_data *d) | 36 | static void fpga_mask_irq(struct irq_data *d) |
38 | { | 37 | { |
diff --git a/arch/arm/plat-omap/fpga.h b/arch/arm/mach-omap1/fpga.h index 54faaa93e6f4..4b4307a80e48 100644 --- a/arch/arm/plat-omap/fpga.h +++ b/arch/arm/mach-omap1/fpga.h | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/plat-omap/include/mach/fpga.h | ||
3 | * | ||
4 | * Interrupt handler for OMAP-1510 FPGA | 2 | * Interrupt handler for OMAP-1510 FPGA |
5 | * | 3 | * |
6 | * Copyright (C) 2001 RidgeRun, Inc. | 4 | * Copyright (C) 2001 RidgeRun, Inc. |
@@ -38,26 +36,6 @@ | |||
38 | #define H2P2_DBG_FPGA_LAN_STATUS IOMEM(H2P2_DBG_FPGA_BASE + 0x1A) /* LAN Status line */ | 36 | #define H2P2_DBG_FPGA_LAN_STATUS IOMEM(H2P2_DBG_FPGA_BASE + 0x1A) /* LAN Status line */ |
39 | #define H2P2_DBG_FPGA_LAN_RESET IOMEM(H2P2_DBG_FPGA_BASE + 0x1C) /* LAN Reset line */ | 37 | #define H2P2_DBG_FPGA_LAN_RESET IOMEM(H2P2_DBG_FPGA_BASE + 0x1C) /* LAN Reset line */ |
40 | 38 | ||
41 | /* NOTE: most boards don't have a static mapping for the FPGA ... */ | ||
42 | struct h2p2_dbg_fpga { | ||
43 | /* offset 0x00 */ | ||
44 | u16 smc91x[8]; | ||
45 | /* offset 0x10 */ | ||
46 | u16 fpga_rev; | ||
47 | u16 board_rev; | ||
48 | u16 gpio_outputs; | ||
49 | u16 leds; | ||
50 | /* offset 0x18 */ | ||
51 | u16 misc_inputs; | ||
52 | u16 lan_status; | ||
53 | u16 lan_reset; | ||
54 | u16 reserved0; | ||
55 | /* offset 0x20 */ | ||
56 | u16 ps2_data; | ||
57 | u16 ps2_ctrl; | ||
58 | /* plus also 4 rs232 ports ... */ | ||
59 | }; | ||
60 | |||
61 | /* LEDs definition on debug board (16 LEDs, all physically green) */ | 39 | /* LEDs definition on debug board (16 LEDs, all physically green) */ |
62 | #define H2P2_DBG_FPGA_LED_GREEN (1 << 15) | 40 | #define H2P2_DBG_FPGA_LED_GREEN (1 << 15) |
63 | #define H2P2_DBG_FPGA_LED_AMBER (1 << 14) | 41 | #define H2P2_DBG_FPGA_LED_AMBER (1 << 14) |
diff --git a/arch/arm/mach-omap1/gpio15xx.c b/arch/arm/mach-omap1/gpio15xx.c index 98e6f39224a4..02b3eb2e201c 100644 --- a/arch/arm/mach-omap1/gpio15xx.c +++ b/arch/arm/mach-omap1/gpio15xx.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/platform_data/gpio-omap.h> | 20 | #include <linux/platform_data/gpio-omap.h> |
21 | 21 | ||
22 | #include <mach/irqs.h> | ||
23 | |||
22 | #define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE | 24 | #define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE |
23 | #define OMAP1510_GPIO_BASE 0xFFFCE000 | 25 | #define OMAP1510_GPIO_BASE 0xFFFCE000 |
24 | 26 | ||
diff --git a/arch/arm/mach-omap1/gpio16xx.c b/arch/arm/mach-omap1/gpio16xx.c index 33f419236b17..b9952a258d82 100644 --- a/arch/arm/mach-omap1/gpio16xx.c +++ b/arch/arm/mach-omap1/gpio16xx.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/platform_data/gpio-omap.h> | 20 | #include <linux/platform_data/gpio-omap.h> |
21 | 21 | ||
22 | #include <mach/irqs.h> | ||
23 | |||
22 | #define OMAP1610_GPIO1_BASE 0xfffbe400 | 24 | #define OMAP1610_GPIO1_BASE 0xfffbe400 |
23 | #define OMAP1610_GPIO2_BASE 0xfffbec00 | 25 | #define OMAP1610_GPIO2_BASE 0xfffbec00 |
24 | #define OMAP1610_GPIO3_BASE 0xfffbb400 | 26 | #define OMAP1610_GPIO3_BASE 0xfffbb400 |
diff --git a/arch/arm/mach-omap1/gpio7xx.c b/arch/arm/mach-omap1/gpio7xx.c index 958ce9acee95..f5819b2b7cbe 100644 --- a/arch/arm/mach-omap1/gpio7xx.c +++ b/arch/arm/mach-omap1/gpio7xx.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/platform_data/gpio-omap.h> | 20 | #include <linux/platform_data/gpio-omap.h> |
21 | 21 | ||
22 | #include <mach/irqs.h> | ||
23 | |||
22 | #define OMAP7XX_GPIO1_BASE 0xfffbc000 | 24 | #define OMAP7XX_GPIO1_BASE 0xfffbc000 |
23 | #define OMAP7XX_GPIO2_BASE 0xfffbc800 | 25 | #define OMAP7XX_GPIO2_BASE 0xfffbc800 |
24 | #define OMAP7XX_GPIO3_BASE 0xfffbd000 | 26 | #define OMAP7XX_GPIO3_BASE 0xfffbd000 |
diff --git a/arch/arm/mach-omap1/i2c.c b/arch/arm/mach-omap1/i2c.c index 32bcbb8d6c73..faca808cb3d9 100644 --- a/arch/arm/mach-omap1/i2c.c +++ b/arch/arm/mach-omap1/i2c.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
24 | #include "soc.h" | 24 | #include "soc.h" |
25 | 25 | ||
26 | #include "../plat-omap/i2c.h" | 26 | #include <plat/i2c.h> |
27 | 27 | ||
28 | #define OMAP_I2C_SIZE 0x3f | 28 | #define OMAP_I2C_SIZE 0x3f |
29 | #define OMAP1_I2C_BASE 0xfffb3800 | 29 | #define OMAP1_I2C_BASE 0xfffb3800 |
@@ -54,6 +54,9 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *pdata, | |||
54 | struct platform_device *pdev; | 54 | struct platform_device *pdev; |
55 | struct resource *res; | 55 | struct resource *res; |
56 | 56 | ||
57 | if (bus_id > 1) | ||
58 | return -EINVAL; | ||
59 | |||
57 | omap1_i2c_mux_pins(bus_id); | 60 | omap1_i2c_mux_pins(bus_id); |
58 | 61 | ||
59 | pdev = &omap_i2c_devices[bus_id - 1]; | 62 | pdev = &omap_i2c_devices[bus_id - 1]; |
diff --git a/arch/arm/mach-omap1/include/mach/entry-macro.S b/arch/arm/mach-omap1/include/mach/entry-macro.S index 88f08cab1717..78a8c6c24764 100644 --- a/arch/arm/mach-omap1/include/mach/entry-macro.S +++ b/arch/arm/mach-omap1/include/mach/entry-macro.S | |||
@@ -13,8 +13,6 @@ | |||
13 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
14 | #include <mach/irqs.h> | 14 | #include <mach/irqs.h> |
15 | 15 | ||
16 | #include "../../iomap.h" | ||
17 | |||
18 | .macro get_irqnr_preamble, base, tmp | 16 | .macro get_irqnr_preamble, base, tmp |
19 | .endm | 17 | .endm |
20 | 18 | ||
diff --git a/arch/arm/mach-omap1/include/mach/gpio.h b/arch/arm/mach-omap1/include/mach/gpio.h deleted file mode 100644 index ebf86c0f4f46..000000000000 --- a/arch/arm/mach-omap1/include/mach/gpio.h +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap1/include/mach/gpio.h | ||
3 | */ | ||
diff --git a/arch/arm/mach-omap1/include/mach/hardware.h b/arch/arm/mach-omap1/include/mach/hardware.h index dc3237bd72d2..5875a5098d35 100644 --- a/arch/arm/mach-omap1/include/mach/hardware.h +++ b/arch/arm/mach-omap1/include/mach/hardware.h | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <asm/sizes.h> | 39 | #include <asm/sizes.h> |
40 | #ifndef __ASSEMBLER__ | 40 | #ifndef __ASSEMBLER__ |
41 | #include <asm/types.h> | 41 | #include <asm/types.h> |
42 | #include "../../mach-omap1/soc.h" | 42 | #include <mach/soc.h> |
43 | 43 | ||
44 | /* | 44 | /* |
45 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | 45 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these |
@@ -72,6 +72,9 @@ static inline u32 omap_cs3_phys(void) | |||
72 | 72 | ||
73 | #endif /* ifndef __ASSEMBLER__ */ | 73 | #endif /* ifndef __ASSEMBLER__ */ |
74 | 74 | ||
75 | #define OMAP1_IO_OFFSET 0x01000000 /* Virtual IO = 0xfefb0000 */ | ||
76 | #define OMAP1_IO_ADDRESS(pa) IOMEM((pa) - OMAP1_IO_OFFSET) | ||
77 | |||
75 | #include <mach/serial.h> | 78 | #include <mach/serial.h> |
76 | 79 | ||
77 | /* | 80 | /* |
diff --git a/arch/arm/mach-omap1/include/mach/memory.h b/arch/arm/mach-omap1/include/mach/memory.h index 351ae4f2c514..3c2530523111 100644 --- a/arch/arm/mach-omap1/include/mach/memory.h +++ b/arch/arm/mach-omap1/include/mach/memory.h | |||
@@ -19,7 +19,7 @@ | |||
19 | * because of the strncmp(). | 19 | * because of the strncmp(). |
20 | */ | 20 | */ |
21 | #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) | 21 | #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) |
22 | #include "../../mach-omap1/soc.h" | 22 | #include <mach/soc.h> |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * OMAP-1510 Local Bus address offset | 25 | * OMAP-1510 Local Bus address offset |
diff --git a/arch/arm/mach-omap1/include/mach/soc.h b/arch/arm/mach-omap1/include/mach/soc.h new file mode 100644 index 000000000000..6cf9c1cc2bef --- /dev/null +++ b/arch/arm/mach-omap1/include/mach/soc.h | |||
@@ -0,0 +1,229 @@ | |||
1 | /* | ||
2 | * OMAP cpu type detection | ||
3 | * | ||
4 | * Copyright (C) 2004, 2008 Nokia Corporation | ||
5 | * | ||
6 | * Copyright (C) 2009-11 Texas Instruments. | ||
7 | * | ||
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | ||
9 | * | ||
10 | * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License as published by | ||
14 | * the Free Software Foundation; either version 2 of the License, or | ||
15 | * (at your option) any later version. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU General Public License | ||
23 | * along with this program; if not, write to the Free Software | ||
24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
25 | * | ||
26 | */ | ||
27 | |||
28 | #ifndef __ASM_ARCH_OMAP_CPU_H | ||
29 | #define __ASM_ARCH_OMAP_CPU_H | ||
30 | |||
31 | #ifndef __ASSEMBLY__ | ||
32 | |||
33 | #include <linux/bitops.h> | ||
34 | |||
35 | /* | ||
36 | * Test if multicore OMAP support is needed | ||
37 | */ | ||
38 | #undef MULTI_OMAP1 | ||
39 | #undef OMAP_NAME | ||
40 | |||
41 | #ifdef CONFIG_ARCH_OMAP730 | ||
42 | # ifdef OMAP_NAME | ||
43 | # undef MULTI_OMAP1 | ||
44 | # define MULTI_OMAP1 | ||
45 | # else | ||
46 | # define OMAP_NAME omap730 | ||
47 | # endif | ||
48 | #endif | ||
49 | #ifdef CONFIG_ARCH_OMAP850 | ||
50 | # ifdef OMAP_NAME | ||
51 | # undef MULTI_OMAP1 | ||
52 | # define MULTI_OMAP1 | ||
53 | # else | ||
54 | # define OMAP_NAME omap850 | ||
55 | # endif | ||
56 | #endif | ||
57 | #ifdef CONFIG_ARCH_OMAP15XX | ||
58 | # ifdef OMAP_NAME | ||
59 | # undef MULTI_OMAP1 | ||
60 | # define MULTI_OMAP1 | ||
61 | # else | ||
62 | # define OMAP_NAME omap1510 | ||
63 | # endif | ||
64 | #endif | ||
65 | #ifdef CONFIG_ARCH_OMAP16XX | ||
66 | # ifdef OMAP_NAME | ||
67 | # undef MULTI_OMAP1 | ||
68 | # define MULTI_OMAP1 | ||
69 | # else | ||
70 | # define OMAP_NAME omap16xx | ||
71 | # endif | ||
72 | #endif | ||
73 | |||
74 | /* | ||
75 | * omap_rev bits: | ||
76 | * CPU id bits (0730, 1510, 1710, 2422...) [31:16] | ||
77 | * CPU revision (See _REV_ defined in cpu.h) [15:08] | ||
78 | * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] | ||
79 | */ | ||
80 | unsigned int omap_rev(void); | ||
81 | |||
82 | /* | ||
83 | * Get the CPU revision for OMAP devices | ||
84 | */ | ||
85 | #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) | ||
86 | |||
87 | /* | ||
88 | * Macros to group OMAP into cpu classes. | ||
89 | * These can be used in most places. | ||
90 | * cpu_is_omap7xx(): True for OMAP730, OMAP850 | ||
91 | * cpu_is_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310 | ||
92 | * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 | ||
93 | */ | ||
94 | #define GET_OMAP_CLASS (omap_rev() & 0xff) | ||
95 | |||
96 | #define IS_OMAP_CLASS(class, id) \ | ||
97 | static inline int is_omap ##class (void) \ | ||
98 | { \ | ||
99 | return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ | ||
100 | } | ||
101 | |||
102 | #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) | ||
103 | |||
104 | #define IS_OMAP_SUBCLASS(subclass, id) \ | ||
105 | static inline int is_omap ##subclass (void) \ | ||
106 | { \ | ||
107 | return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ | ||
108 | } | ||
109 | |||
110 | IS_OMAP_CLASS(7xx, 0x07) | ||
111 | IS_OMAP_CLASS(15xx, 0x15) | ||
112 | IS_OMAP_CLASS(16xx, 0x16) | ||
113 | |||
114 | #define cpu_is_omap7xx() 0 | ||
115 | #define cpu_is_omap15xx() 0 | ||
116 | #define cpu_is_omap16xx() 0 | ||
117 | |||
118 | #if defined(MULTI_OMAP1) | ||
119 | # if defined(CONFIG_ARCH_OMAP730) | ||
120 | # undef cpu_is_omap7xx | ||
121 | # define cpu_is_omap7xx() is_omap7xx() | ||
122 | # endif | ||
123 | # if defined(CONFIG_ARCH_OMAP850) | ||
124 | # undef cpu_is_omap7xx | ||
125 | # define cpu_is_omap7xx() is_omap7xx() | ||
126 | # endif | ||
127 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
128 | # undef cpu_is_omap15xx | ||
129 | # define cpu_is_omap15xx() is_omap15xx() | ||
130 | # endif | ||
131 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
132 | # undef cpu_is_omap16xx | ||
133 | # define cpu_is_omap16xx() is_omap16xx() | ||
134 | # endif | ||
135 | #else | ||
136 | # if defined(CONFIG_ARCH_OMAP730) | ||
137 | # undef cpu_is_omap7xx | ||
138 | # define cpu_is_omap7xx() 1 | ||
139 | # endif | ||
140 | # if defined(CONFIG_ARCH_OMAP850) | ||
141 | # undef cpu_is_omap7xx | ||
142 | # define cpu_is_omap7xx() 1 | ||
143 | # endif | ||
144 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
145 | # undef cpu_is_omap15xx | ||
146 | # define cpu_is_omap15xx() 1 | ||
147 | # endif | ||
148 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
149 | # undef cpu_is_omap16xx | ||
150 | # define cpu_is_omap16xx() 1 | ||
151 | # endif | ||
152 | #endif | ||
153 | |||
154 | /* | ||
155 | * Macros to detect individual cpu types. | ||
156 | * These are only rarely needed. | ||
157 | * cpu_is_omap310(): True for OMAP310 | ||
158 | * cpu_is_omap1510(): True for OMAP1510 | ||
159 | * cpu_is_omap1610(): True for OMAP1610 | ||
160 | * cpu_is_omap1611(): True for OMAP1611 | ||
161 | * cpu_is_omap5912(): True for OMAP5912 | ||
162 | * cpu_is_omap1621(): True for OMAP1621 | ||
163 | * cpu_is_omap1710(): True for OMAP1710 | ||
164 | */ | ||
165 | #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) | ||
166 | |||
167 | #define IS_OMAP_TYPE(type, id) \ | ||
168 | static inline int is_omap ##type (void) \ | ||
169 | { \ | ||
170 | return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ | ||
171 | } | ||
172 | |||
173 | IS_OMAP_TYPE(310, 0x0310) | ||
174 | IS_OMAP_TYPE(1510, 0x1510) | ||
175 | IS_OMAP_TYPE(1610, 0x1610) | ||
176 | IS_OMAP_TYPE(1611, 0x1611) | ||
177 | IS_OMAP_TYPE(5912, 0x1611) | ||
178 | IS_OMAP_TYPE(1621, 0x1621) | ||
179 | IS_OMAP_TYPE(1710, 0x1710) | ||
180 | |||
181 | #define cpu_is_omap310() 0 | ||
182 | #define cpu_is_omap1510() 0 | ||
183 | #define cpu_is_omap1610() 0 | ||
184 | #define cpu_is_omap5912() 0 | ||
185 | #define cpu_is_omap1611() 0 | ||
186 | #define cpu_is_omap1621() 0 | ||
187 | #define cpu_is_omap1710() 0 | ||
188 | |||
189 | /* These are needed to compile common code */ | ||
190 | #ifdef CONFIG_ARCH_OMAP1 | ||
191 | #define cpu_is_omap242x() 0 | ||
192 | #define cpu_is_omap2430() 0 | ||
193 | #define cpu_is_omap243x() 0 | ||
194 | #define cpu_is_omap24xx() 0 | ||
195 | #define cpu_is_omap34xx() 0 | ||
196 | #define cpu_is_omap44xx() 0 | ||
197 | #define soc_is_omap54xx() 0 | ||
198 | #define soc_is_am33xx() 0 | ||
199 | #define cpu_class_is_omap1() 1 | ||
200 | #define cpu_class_is_omap2() 0 | ||
201 | #endif | ||
202 | |||
203 | /* | ||
204 | * Whether we have MULTI_OMAP1 or not, we still need to distinguish | ||
205 | * between 310 vs. 1510 and 1611B/5912 vs. 1710. | ||
206 | */ | ||
207 | |||
208 | #if defined(CONFIG_ARCH_OMAP15XX) | ||
209 | # undef cpu_is_omap310 | ||
210 | # undef cpu_is_omap1510 | ||
211 | # define cpu_is_omap310() is_omap310() | ||
212 | # define cpu_is_omap1510() is_omap1510() | ||
213 | #endif | ||
214 | |||
215 | #if defined(CONFIG_ARCH_OMAP16XX) | ||
216 | # undef cpu_is_omap1610 | ||
217 | # undef cpu_is_omap1611 | ||
218 | # undef cpu_is_omap5912 | ||
219 | # undef cpu_is_omap1621 | ||
220 | # undef cpu_is_omap1710 | ||
221 | # define cpu_is_omap1610() is_omap1610() | ||
222 | # define cpu_is_omap1611() is_omap1611() | ||
223 | # define cpu_is_omap5912() is_omap5912() | ||
224 | # define cpu_is_omap1621() is_omap1621() | ||
225 | # define cpu_is_omap1710() is_omap1710() | ||
226 | #endif | ||
227 | |||
228 | #endif /* __ASSEMBLY__ */ | ||
229 | #endif | ||
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 44389d7cd255..499b8accb83d 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #include <mach/mux.h> | 19 | #include <mach/mux.h> |
20 | #include <mach/tc.h> | 20 | #include <mach/tc.h> |
21 | #include <plat-omap/dma-omap.h> | 21 | #include <linux/omap-dma.h> |
22 | 22 | ||
23 | #include "iomap.h" | 23 | #include "iomap.h" |
24 | #include "common.h" | 24 | #include "common.h" |
@@ -134,7 +134,6 @@ void __init omap1_init_early(void) | |||
134 | */ | 134 | */ |
135 | omap1_clk_init(); | 135 | omap1_clk_init(); |
136 | omap1_mux_init(); | 136 | omap1_mux_init(); |
137 | omap_init_consistent_dma_size(); | ||
138 | } | 137 | } |
139 | 138 | ||
140 | void __init omap1_init_late(void) | 139 | void __init omap1_init_late(void) |
diff --git a/arch/arm/mach-omap1/iomap.h b/arch/arm/mach-omap1/iomap.h index 330c4716b028..f4e2d7a21365 100644 --- a/arch/arm/mach-omap1/iomap.h +++ b/arch/arm/mach-omap1/iomap.h | |||
@@ -22,9 +22,6 @@ | |||
22 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 22 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #define OMAP1_IO_OFFSET 0x01000000 /* Virtual IO = 0xfefb0000 */ | ||
26 | #define OMAP1_IO_ADDRESS(pa) IOMEM((pa) - OMAP1_IO_OFFSET) | ||
27 | |||
28 | /* | 25 | /* |
29 | * ---------------------------------------------------------------------------- | 26 | * ---------------------------------------------------------------------------- |
30 | * Omap1 specific IO mapping | 27 | * Omap1 specific IO mapping |
diff --git a/arch/arm/mach-omap1/lcd_dma.c b/arch/arm/mach-omap1/lcd_dma.c index 7ed8c1857d56..77924be37d41 100644 --- a/arch/arm/mach-omap1/lcd_dma.c +++ b/arch/arm/mach-omap1/lcd_dma.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | 29 | ||
30 | #include <plat-omap/dma-omap.h> | 30 | #include <linux/omap-dma.h> |
31 | 31 | ||
32 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | #include <mach/lcdc.h> | 33 | #include <mach/lcdc.h> |
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index c6d8fdf92e9c..b0d4723c9a90 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
21 | 21 | ||
22 | #include <plat-omap/dma-omap.h> | 22 | #include <linux/omap-dma.h> |
23 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
24 | #include "soc.h" | 24 | #include "soc.h" |
25 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 25 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index b2c2328d7c18..7a7690ab6cb8 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <linux/io.h> | 44 | #include <linux/io.h> |
45 | #include <linux/atomic.h> | 45 | #include <linux/atomic.h> |
46 | 46 | ||
47 | #include <asm/fncpy.h> | ||
47 | #include <asm/system_misc.h> | 48 | #include <asm/system_misc.h> |
48 | #include <asm/irq.h> | 49 | #include <asm/irq.h> |
49 | #include <asm/mach/time.h> | 50 | #include <asm/mach/time.h> |
@@ -51,16 +52,15 @@ | |||
51 | 52 | ||
52 | #include <mach/tc.h> | 53 | #include <mach/tc.h> |
53 | #include <mach/mux.h> | 54 | #include <mach/mux.h> |
54 | #include <plat-omap/dma-omap.h> | 55 | #include <linux/omap-dma.h> |
55 | #include <plat/dmtimer.h> | 56 | #include <plat/dmtimer.h> |
56 | 57 | ||
57 | #include <mach/irqs.h> | 58 | #include <mach/irqs.h> |
58 | 59 | ||
59 | #include "../plat-omap/sram.h" | ||
60 | |||
61 | #include "iomap.h" | 60 | #include "iomap.h" |
62 | #include "clock.h" | 61 | #include "clock.h" |
63 | #include "pm.h" | 62 | #include "pm.h" |
63 | #include "sram.h" | ||
64 | 64 | ||
65 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; | 65 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; |
66 | static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE]; | 66 | static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE]; |
diff --git a/arch/arm/mach-omap1/sleep.S b/arch/arm/mach-omap1/sleep.S index 0e628743bd03..a908c51839a4 100644 --- a/arch/arm/mach-omap1/sleep.S +++ b/arch/arm/mach-omap1/sleep.S | |||
@@ -36,6 +36,8 @@ | |||
36 | 36 | ||
37 | #include <asm/assembler.h> | 37 | #include <asm/assembler.h> |
38 | 38 | ||
39 | #include <mach/hardware.h> | ||
40 | |||
39 | #include "iomap.h" | 41 | #include "iomap.h" |
40 | #include "pm.h" | 42 | #include "pm.h" |
41 | 43 | ||
diff --git a/arch/arm/mach-omap1/soc.h b/arch/arm/mach-omap1/soc.h index 6cf9c1cc2bef..69daf0187b1d 100644 --- a/arch/arm/mach-omap1/soc.h +++ b/arch/arm/mach-omap1/soc.h | |||
@@ -1,229 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * OMAP cpu type detection | 2 | * We can move mach/soc.h here once the drivers are fixed |
3 | * | ||
4 | * Copyright (C) 2004, 2008 Nokia Corporation | ||
5 | * | ||
6 | * Copyright (C) 2009-11 Texas Instruments. | ||
7 | * | ||
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | ||
9 | * | ||
10 | * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License as published by | ||
14 | * the Free Software Foundation; either version 2 of the License, or | ||
15 | * (at your option) any later version. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU General Public License | ||
23 | * along with this program; if not, write to the Free Software | ||
24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
25 | * | ||
26 | */ | 3 | */ |
27 | 4 | #include <mach/soc.h> | |
28 | #ifndef __ASM_ARCH_OMAP_CPU_H | ||
29 | #define __ASM_ARCH_OMAP_CPU_H | ||
30 | |||
31 | #ifndef __ASSEMBLY__ | ||
32 | |||
33 | #include <linux/bitops.h> | ||
34 | |||
35 | /* | ||
36 | * Test if multicore OMAP support is needed | ||
37 | */ | ||
38 | #undef MULTI_OMAP1 | ||
39 | #undef OMAP_NAME | ||
40 | |||
41 | #ifdef CONFIG_ARCH_OMAP730 | ||
42 | # ifdef OMAP_NAME | ||
43 | # undef MULTI_OMAP1 | ||
44 | # define MULTI_OMAP1 | ||
45 | # else | ||
46 | # define OMAP_NAME omap730 | ||
47 | # endif | ||
48 | #endif | ||
49 | #ifdef CONFIG_ARCH_OMAP850 | ||
50 | # ifdef OMAP_NAME | ||
51 | # undef MULTI_OMAP1 | ||
52 | # define MULTI_OMAP1 | ||
53 | # else | ||
54 | # define OMAP_NAME omap850 | ||
55 | # endif | ||
56 | #endif | ||
57 | #ifdef CONFIG_ARCH_OMAP15XX | ||
58 | # ifdef OMAP_NAME | ||
59 | # undef MULTI_OMAP1 | ||
60 | # define MULTI_OMAP1 | ||
61 | # else | ||
62 | # define OMAP_NAME omap1510 | ||
63 | # endif | ||
64 | #endif | ||
65 | #ifdef CONFIG_ARCH_OMAP16XX | ||
66 | # ifdef OMAP_NAME | ||
67 | # undef MULTI_OMAP1 | ||
68 | # define MULTI_OMAP1 | ||
69 | # else | ||
70 | # define OMAP_NAME omap16xx | ||
71 | # endif | ||
72 | #endif | ||
73 | |||
74 | /* | ||
75 | * omap_rev bits: | ||
76 | * CPU id bits (0730, 1510, 1710, 2422...) [31:16] | ||
77 | * CPU revision (See _REV_ defined in cpu.h) [15:08] | ||
78 | * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] | ||
79 | */ | ||
80 | unsigned int omap_rev(void); | ||
81 | |||
82 | /* | ||
83 | * Get the CPU revision for OMAP devices | ||
84 | */ | ||
85 | #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) | ||
86 | |||
87 | /* | ||
88 | * Macros to group OMAP into cpu classes. | ||
89 | * These can be used in most places. | ||
90 | * cpu_is_omap7xx(): True for OMAP730, OMAP850 | ||
91 | * cpu_is_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310 | ||
92 | * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 | ||
93 | */ | ||
94 | #define GET_OMAP_CLASS (omap_rev() & 0xff) | ||
95 | |||
96 | #define IS_OMAP_CLASS(class, id) \ | ||
97 | static inline int is_omap ##class (void) \ | ||
98 | { \ | ||
99 | return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ | ||
100 | } | ||
101 | |||
102 | #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) | ||
103 | |||
104 | #define IS_OMAP_SUBCLASS(subclass, id) \ | ||
105 | static inline int is_omap ##subclass (void) \ | ||
106 | { \ | ||
107 | return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ | ||
108 | } | ||
109 | |||
110 | IS_OMAP_CLASS(7xx, 0x07) | ||
111 | IS_OMAP_CLASS(15xx, 0x15) | ||
112 | IS_OMAP_CLASS(16xx, 0x16) | ||
113 | |||
114 | #define cpu_is_omap7xx() 0 | ||
115 | #define cpu_is_omap15xx() 0 | ||
116 | #define cpu_is_omap16xx() 0 | ||
117 | |||
118 | #if defined(MULTI_OMAP1) | ||
119 | # if defined(CONFIG_ARCH_OMAP730) | ||
120 | # undef cpu_is_omap7xx | ||
121 | # define cpu_is_omap7xx() is_omap7xx() | ||
122 | # endif | ||
123 | # if defined(CONFIG_ARCH_OMAP850) | ||
124 | # undef cpu_is_omap7xx | ||
125 | # define cpu_is_omap7xx() is_omap7xx() | ||
126 | # endif | ||
127 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
128 | # undef cpu_is_omap15xx | ||
129 | # define cpu_is_omap15xx() is_omap15xx() | ||
130 | # endif | ||
131 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
132 | # undef cpu_is_omap16xx | ||
133 | # define cpu_is_omap16xx() is_omap16xx() | ||
134 | # endif | ||
135 | #else | ||
136 | # if defined(CONFIG_ARCH_OMAP730) | ||
137 | # undef cpu_is_omap7xx | ||
138 | # define cpu_is_omap7xx() 1 | ||
139 | # endif | ||
140 | # if defined(CONFIG_ARCH_OMAP850) | ||
141 | # undef cpu_is_omap7xx | ||
142 | # define cpu_is_omap7xx() 1 | ||
143 | # endif | ||
144 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
145 | # undef cpu_is_omap15xx | ||
146 | # define cpu_is_omap15xx() 1 | ||
147 | # endif | ||
148 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
149 | # undef cpu_is_omap16xx | ||
150 | # define cpu_is_omap16xx() 1 | ||
151 | # endif | ||
152 | #endif | ||
153 | |||
154 | /* | ||
155 | * Macros to detect individual cpu types. | ||
156 | * These are only rarely needed. | ||
157 | * cpu_is_omap310(): True for OMAP310 | ||
158 | * cpu_is_omap1510(): True for OMAP1510 | ||
159 | * cpu_is_omap1610(): True for OMAP1610 | ||
160 | * cpu_is_omap1611(): True for OMAP1611 | ||
161 | * cpu_is_omap5912(): True for OMAP5912 | ||
162 | * cpu_is_omap1621(): True for OMAP1621 | ||
163 | * cpu_is_omap1710(): True for OMAP1710 | ||
164 | */ | ||
165 | #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) | ||
166 | |||
167 | #define IS_OMAP_TYPE(type, id) \ | ||
168 | static inline int is_omap ##type (void) \ | ||
169 | { \ | ||
170 | return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ | ||
171 | } | ||
172 | |||
173 | IS_OMAP_TYPE(310, 0x0310) | ||
174 | IS_OMAP_TYPE(1510, 0x1510) | ||
175 | IS_OMAP_TYPE(1610, 0x1610) | ||
176 | IS_OMAP_TYPE(1611, 0x1611) | ||
177 | IS_OMAP_TYPE(5912, 0x1611) | ||
178 | IS_OMAP_TYPE(1621, 0x1621) | ||
179 | IS_OMAP_TYPE(1710, 0x1710) | ||
180 | |||
181 | #define cpu_is_omap310() 0 | ||
182 | #define cpu_is_omap1510() 0 | ||
183 | #define cpu_is_omap1610() 0 | ||
184 | #define cpu_is_omap5912() 0 | ||
185 | #define cpu_is_omap1611() 0 | ||
186 | #define cpu_is_omap1621() 0 | ||
187 | #define cpu_is_omap1710() 0 | ||
188 | |||
189 | /* These are needed to compile common code */ | ||
190 | #ifdef CONFIG_ARCH_OMAP1 | ||
191 | #define cpu_is_omap242x() 0 | ||
192 | #define cpu_is_omap2430() 0 | ||
193 | #define cpu_is_omap243x() 0 | ||
194 | #define cpu_is_omap24xx() 0 | ||
195 | #define cpu_is_omap34xx() 0 | ||
196 | #define cpu_is_omap44xx() 0 | ||
197 | #define soc_is_omap54xx() 0 | ||
198 | #define soc_is_am33xx() 0 | ||
199 | #define cpu_class_is_omap1() 1 | ||
200 | #define cpu_class_is_omap2() 0 | ||
201 | #endif | ||
202 | |||
203 | /* | ||
204 | * Whether we have MULTI_OMAP1 or not, we still need to distinguish | ||
205 | * between 310 vs. 1510 and 1611B/5912 vs. 1710. | ||
206 | */ | ||
207 | |||
208 | #if defined(CONFIG_ARCH_OMAP15XX) | ||
209 | # undef cpu_is_omap310 | ||
210 | # undef cpu_is_omap1510 | ||
211 | # define cpu_is_omap310() is_omap310() | ||
212 | # define cpu_is_omap1510() is_omap1510() | ||
213 | #endif | ||
214 | |||
215 | #if defined(CONFIG_ARCH_OMAP16XX) | ||
216 | # undef cpu_is_omap1610 | ||
217 | # undef cpu_is_omap1611 | ||
218 | # undef cpu_is_omap5912 | ||
219 | # undef cpu_is_omap1621 | ||
220 | # undef cpu_is_omap1710 | ||
221 | # define cpu_is_omap1610() is_omap1610() | ||
222 | # define cpu_is_omap1611() is_omap1611() | ||
223 | # define cpu_is_omap5912() is_omap5912() | ||
224 | # define cpu_is_omap1621() is_omap1621() | ||
225 | # define cpu_is_omap1710() is_omap1710() | ||
226 | #endif | ||
227 | |||
228 | #endif /* __ASSEMBLY__ */ | ||
229 | #endif | ||
diff --git a/arch/arm/mach-omap1/sram-init.c b/arch/arm/mach-omap1/sram-init.c new file mode 100644 index 000000000000..6431b0f862ce --- /dev/null +++ b/arch/arm/mach-omap1/sram-init.c | |||
@@ -0,0 +1,76 @@ | |||
1 | /* | ||
2 | * OMAP SRAM detection and management | ||
3 | * | ||
4 | * Copyright (C) 2005 Nokia Corporation | ||
5 | * Written by Tony Lindgren <tony@atomide.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/module.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/io.h> | ||
16 | |||
17 | #include <asm/fncpy.h> | ||
18 | #include <asm/tlb.h> | ||
19 | #include <asm/cacheflush.h> | ||
20 | |||
21 | #include <asm/mach/map.h> | ||
22 | |||
23 | #include "soc.h" | ||
24 | #include "sram.h" | ||
25 | |||
26 | #define OMAP1_SRAM_PA 0x20000000 | ||
27 | #define SRAM_BOOTLOADER_SZ 0x80 | ||
28 | |||
29 | /* | ||
30 | * The amount of SRAM depends on the core type. | ||
31 | * Note that we cannot try to test for SRAM here because writes | ||
32 | * to secure SRAM will hang the system. Also the SRAM is not | ||
33 | * yet mapped at this point. | ||
34 | */ | ||
35 | static void __init omap_detect_and_map_sram(void) | ||
36 | { | ||
37 | unsigned long omap_sram_skip = SRAM_BOOTLOADER_SZ; | ||
38 | unsigned long omap_sram_start = OMAP1_SRAM_PA; | ||
39 | unsigned long omap_sram_size; | ||
40 | |||
41 | if (cpu_is_omap7xx()) | ||
42 | omap_sram_size = 0x32000; /* 200K */ | ||
43 | else if (cpu_is_omap15xx()) | ||
44 | omap_sram_size = 0x30000; /* 192K */ | ||
45 | else if (cpu_is_omap1610() || cpu_is_omap1611() || | ||
46 | cpu_is_omap1621() || cpu_is_omap1710()) | ||
47 | omap_sram_size = 0x4000; /* 16K */ | ||
48 | else { | ||
49 | pr_err("Could not detect SRAM size\n"); | ||
50 | omap_sram_size = 0x4000; | ||
51 | } | ||
52 | |||
53 | omap_map_sram(omap_sram_start, omap_sram_size, | ||
54 | omap_sram_skip, 1); | ||
55 | } | ||
56 | |||
57 | static void (*_omap_sram_reprogram_clock)(u32 dpllctl, u32 ckctl); | ||
58 | |||
59 | void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl) | ||
60 | { | ||
61 | BUG_ON(!_omap_sram_reprogram_clock); | ||
62 | /* On 730, bit 13 must always be 1 */ | ||
63 | if (cpu_is_omap7xx()) | ||
64 | ckctl |= 0x2000; | ||
65 | _omap_sram_reprogram_clock(dpllctl, ckctl); | ||
66 | } | ||
67 | |||
68 | int __init omap_sram_init(void) | ||
69 | { | ||
70 | omap_detect_and_map_sram(); | ||
71 | _omap_sram_reprogram_clock = | ||
72 | omap_sram_push(omap1_sram_reprogram_clock, | ||
73 | omap1_sram_reprogram_clock_sz); | ||
74 | |||
75 | return 0; | ||
76 | } | ||
diff --git a/arch/arm/mach-omap1/sram.h b/arch/arm/mach-omap1/sram.h new file mode 100644 index 000000000000..d5a6c8362301 --- /dev/null +++ b/arch/arm/mach-omap1/sram.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #include <plat/sram.h> | ||
2 | |||
3 | extern void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl); | ||
4 | |||
5 | /* Do not use these */ | ||
6 | extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); | ||
7 | extern unsigned long omap1_sram_reprogram_clock_sz; | ||
diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c index cdeb9d3ef640..bde7a35e5000 100644 --- a/arch/arm/mach-omap1/timer.c +++ b/arch/arm/mach-omap1/timer.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/err.h> | 25 | #include <linux/err.h> |
26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
27 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
28 | #include <linux/platform_data/dmtimer-omap.h> | ||
28 | 29 | ||
29 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
30 | 31 | ||
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 74529549130c..41152fadd4c0 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -50,7 +50,7 @@ | |||
50 | #include <asm/mach/irq.h> | 50 | #include <asm/mach/irq.h> |
51 | #include <asm/mach/time.h> | 51 | #include <asm/mach/time.h> |
52 | 52 | ||
53 | #include <plat/dmtimer.h> | 53 | #include <plat/counter-32k.h> |
54 | 54 | ||
55 | #include <mach/hardware.h> | 55 | #include <mach/hardware.h> |
56 | 56 | ||
diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c index 84267edd9421..104fed366b8f 100644 --- a/arch/arm/mach-omap1/usb.c +++ b/arch/arm/mach-omap1/usb.c | |||
@@ -301,7 +301,7 @@ static inline void otg_device_init(struct omap_usb_config *pdata) | |||
301 | 301 | ||
302 | #endif | 302 | #endif |
303 | 303 | ||
304 | u32 __init omap1_usb0_init(unsigned nwires, unsigned is_device) | 304 | static u32 __init omap1_usb0_init(unsigned nwires, unsigned is_device) |
305 | { | 305 | { |
306 | u32 syscon1 = 0; | 306 | u32 syscon1 = 0; |
307 | 307 | ||
@@ -409,7 +409,7 @@ u32 __init omap1_usb0_init(unsigned nwires, unsigned is_device) | |||
409 | return syscon1 << 16; | 409 | return syscon1 << 16; |
410 | } | 410 | } |
411 | 411 | ||
412 | u32 __init omap1_usb1_init(unsigned nwires) | 412 | static u32 __init omap1_usb1_init(unsigned nwires) |
413 | { | 413 | { |
414 | u32 syscon1 = 0; | 414 | u32 syscon1 = 0; |
415 | 415 | ||
@@ -475,7 +475,7 @@ bad: | |||
475 | return syscon1 << 20; | 475 | return syscon1 << 20; |
476 | } | 476 | } |
477 | 477 | ||
478 | u32 __init omap1_usb2_init(unsigned nwires, unsigned alt_pingroup) | 478 | static u32 __init omap1_usb2_init(unsigned nwires, unsigned alt_pingroup) |
479 | { | 479 | { |
480 | u32 syscon1 = 0; | 480 | u32 syscon1 = 0; |
481 | 481 | ||
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 798f35b8ea59..745401020c2b 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -5,7 +5,7 @@ | |||
5 | # Common support | 5 | # Common support |
6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer.o pm.o \ | 6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer.o pm.o \ |
7 | common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ | 7 | common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ |
8 | omap_device.o | 8 | omap_device.o sram.o |
9 | 9 | ||
10 | omap-2-3-common = irq.o | 10 | omap-2-3-common = irq.o |
11 | hwmod-common = omap_hwmod.o \ | 11 | hwmod-common = omap_hwmod.o \ |
@@ -73,6 +73,8 @@ obj-$(CONFIG_ARCH_OMAP4) += opp4xxx_data.o | |||
73 | endif | 73 | endif |
74 | 74 | ||
75 | # Power Management | 75 | # Power Management |
76 | obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o | ||
77 | |||
76 | ifeq ($(CONFIG_PM),y) | 78 | ifeq ($(CONFIG_PM),y) |
77 | obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o | 79 | obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o |
78 | obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o | 80 | obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o |
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index acb0a524ff7b..4815ea6f8f5d 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <linux/gpio.h> | 29 | #include <linux/gpio.h> |
30 | 30 | ||
31 | #include <mach/hardware.h> | ||
32 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 6601754f9512..7b201546834d 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -31,7 +31,7 @@ | |||
31 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
32 | 32 | ||
33 | #include "common.h" | 33 | #include "common.h" |
34 | #include <plat-omap/dma-omap.h> | 34 | #include <linux/omap-dma.h> |
35 | #include <video/omapdss.h> | 35 | #include <video/omapdss.h> |
36 | #include <video/omap-panel-tfp410.h> | 36 | #include <video/omap-panel-tfp410.h> |
37 | 37 | ||
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index 488f86fd0e72..c8e37dc00892 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -44,8 +44,6 @@ | |||
44 | #include <video/omap-panel-tfp410.h> | 44 | #include <video/omap-panel-tfp410.h> |
45 | #include <linux/platform_data/spi-omap2-mcspi.h> | 45 | #include <linux/platform_data/spi-omap2-mcspi.h> |
46 | 46 | ||
47 | #include <mach/hardware.h> | ||
48 | |||
49 | #include "common.h" | 47 | #include "common.h" |
50 | #include "mux.h" | 48 | #include "mux.h" |
51 | #include "sdram-micron-mt46h32m32lf-6.h" | 49 | #include "sdram-micron-mt46h32m32lf-6.h" |
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index 699caec8f9e2..ebbc2adb499e 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c | |||
@@ -297,6 +297,6 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517") | |||
297 | .handle_irq = omap3_intc_handle_irq, | 297 | .handle_irq = omap3_intc_handle_irq, |
298 | .init_machine = cm_t3517_init, | 298 | .init_machine = cm_t3517_init, |
299 | .init_late = am35xx_init_late, | 299 | .init_late = am35xx_init_late, |
300 | .timer = &omap3_timer, | 300 | .timer = &omap3_gp_timer, |
301 | .restart = omap3xxx_restart, | 301 | .restart = omap3xxx_restart, |
302 | MACHINE_END | 302 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 475e14f07216..f0715a369c44 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -97,6 +97,23 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | |||
97 | .dt_compat = omap3_boards_compat, | 97 | .dt_compat = omap3_boards_compat, |
98 | .restart = omap3xxx_restart, | 98 | .restart = omap3xxx_restart, |
99 | MACHINE_END | 99 | MACHINE_END |
100 | |||
101 | static const char *omap3_gp_boards_compat[] __initdata = { | ||
102 | "ti,omap3-beagle", | ||
103 | NULL, | ||
104 | }; | ||
105 | |||
106 | DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") | ||
107 | .reserve = omap_reserve, | ||
108 | .map_io = omap3_map_io, | ||
109 | .init_early = omap3430_init_early, | ||
110 | .init_irq = omap_intc_of_init, | ||
111 | .handle_irq = omap3_intc_handle_irq, | ||
112 | .init_machine = omap_generic_init, | ||
113 | .timer = &omap3_secure_timer, | ||
114 | .dt_compat = omap3_gp_boards_compat, | ||
115 | .restart = omap3xxx_restart, | ||
116 | MACHINE_END | ||
100 | #endif | 117 | #endif |
101 | 118 | ||
102 | #ifdef CONFIG_SOC_AM33XX | 119 | #ifdef CONFIG_SOC_AM33XX |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 3c1e458f68a1..9a3878ec2256 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -32,8 +32,8 @@ | |||
32 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
34 | 34 | ||
35 | #include <plat-omap/dma-omap.h> | 35 | #include <linux/omap-dma.h> |
36 | #include "debug-devices.h" | 36 | #include <plat/debug-devices.h> |
37 | 37 | ||
38 | #include <video/omapdss.h> | 38 | #include <video/omapdss.h> |
39 | #include <video/omap-panel-generic-dpi.h> | 39 | #include <video/omap-panel-generic-dpi.h> |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index cea5d5292628..0f24cb84ba5a 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -579,6 +579,11 @@ static void __init igep_wlan_bt_init(void) | |||
579 | } else | 579 | } else |
580 | return; | 580 | return; |
581 | 581 | ||
582 | /* Make sure that the GPIO pins are muxed correctly */ | ||
583 | omap_mux_init_gpio(igep_wlan_bt_gpios[0].gpio, OMAP_PIN_OUTPUT); | ||
584 | omap_mux_init_gpio(igep_wlan_bt_gpios[1].gpio, OMAP_PIN_OUTPUT); | ||
585 | omap_mux_init_gpio(igep_wlan_bt_gpios[2].gpio, OMAP_PIN_OUTPUT); | ||
586 | |||
582 | err = gpio_request_array(igep_wlan_bt_gpios, | 587 | err = gpio_request_array(igep_wlan_bt_gpios, |
583 | ARRAY_SIZE(igep_wlan_bt_gpios)); | 588 | ARRAY_SIZE(igep_wlan_bt_gpios)); |
584 | if (err) { | 589 | if (err) { |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 140b73094aff..c8fde3e56441 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <asm/mach/flash.h> | 45 | #include <asm/mach/flash.h> |
46 | #include <asm/mach/map.h> | 46 | #include <asm/mach/map.h> |
47 | 47 | ||
48 | #include "common.h" | ||
49 | #include <video/omapdss.h> | 48 | #include <video/omapdss.h> |
50 | #include <video/omap-panel-generic-dpi.h> | 49 | #include <video/omap-panel-generic-dpi.h> |
51 | #include <video/omap-panel-tfp410.h> | 50 | #include <video/omap-panel-tfp410.h> |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 07005fe40a2a..60529e0b3d67 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -31,7 +31,7 @@ | |||
31 | #include <asm/system_info.h> | 31 | #include <asm/system_info.h> |
32 | 32 | ||
33 | #include "common.h" | 33 | #include "common.h" |
34 | #include <plat-omap/dma-omap.h> | 34 | #include <linux/omap-dma.h> |
35 | #include "gpmc-smc91x.h" | 35 | #include "gpmc-smc91x.h" |
36 | 36 | ||
37 | #include "board-rx51.h" | 37 | #include "board-rx51.h" |
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index bf8f74b0ce3e..ee1045c0ad67 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
26 | 26 | ||
27 | #include <plat-omap/dma-omap.h> | 27 | #include <linux/omap-dma.h> |
28 | 28 | ||
29 | #include "common.h" | 29 | #include "common.h" |
30 | #include "mux.h" | 30 | #include "mux.h" |
diff --git a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c index a0ae3c09f97a..d8620105c42a 100644 --- a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c +++ b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c | |||
@@ -25,14 +25,13 @@ | |||
25 | #include <linux/clk.h> | 25 | #include <linux/clk.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | 27 | ||
28 | #include "../plat-omap/sram.h" | ||
29 | |||
30 | #include "clock.h" | 28 | #include "clock.h" |
31 | #include "clock2xxx.h" | 29 | #include "clock2xxx.h" |
32 | #include "opp2xxx.h" | 30 | #include "opp2xxx.h" |
33 | #include "cm2xxx.h" | 31 | #include "cm2xxx.h" |
34 | #include "cm-regbits-24xx.h" | 32 | #include "cm-regbits-24xx.h" |
35 | #include "sdrc.h" | 33 | #include "sdrc.h" |
34 | #include "sram.h" | ||
36 | 35 | ||
37 | /* #define DOWN_VARIABLE_DPLL 1 */ /* Experimental */ | 36 | /* #define DOWN_VARIABLE_DPLL 1 */ /* Experimental */ |
38 | 37 | ||
diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c index 7af224208a25..ae2b35e76dc8 100644 --- a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c +++ b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c | |||
@@ -33,8 +33,6 @@ | |||
33 | #include <linux/cpufreq.h> | 33 | #include <linux/cpufreq.h> |
34 | #include <linux/slab.h> | 34 | #include <linux/slab.h> |
35 | 35 | ||
36 | #include "../plat-omap/sram.h" | ||
37 | |||
38 | #include "soc.h" | 36 | #include "soc.h" |
39 | #include "clock.h" | 37 | #include "clock.h" |
40 | #include "clock2xxx.h" | 38 | #include "clock2xxx.h" |
@@ -42,6 +40,7 @@ | |||
42 | #include "cm2xxx.h" | 40 | #include "cm2xxx.h" |
43 | #include "cm-regbits-24xx.h" | 41 | #include "cm-regbits-24xx.h" |
44 | #include "sdrc.h" | 42 | #include "sdrc.h" |
43 | #include "sram.h" | ||
45 | 44 | ||
46 | const struct prcm_config *curr_prcm_set; | 45 | const struct prcm_config *curr_prcm_set; |
47 | const struct prcm_config *rate_table; | 46 | const struct prcm_config *rate_table; |
diff --git a/arch/arm/mach-omap2/clkt34xx_dpll3m2.c b/arch/arm/mach-omap2/clkt34xx_dpll3m2.c index 8e48c6d602e7..eb69acf21014 100644 --- a/arch/arm/mach-omap2/clkt34xx_dpll3m2.c +++ b/arch/arm/mach-omap2/clkt34xx_dpll3m2.c | |||
@@ -21,12 +21,11 @@ | |||
21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | 23 | ||
24 | #include "../plat-omap/sram.h" | ||
25 | |||
26 | #include "clock.h" | 24 | #include "clock.h" |
27 | #include "clock3xxx.h" | 25 | #include "clock3xxx.h" |
28 | #include "clock34xx.h" | 26 | #include "clock34xx.h" |
29 | #include "sdrc.h" | 27 | #include "sdrc.h" |
28 | #include "sram.h" | ||
30 | 29 | ||
31 | #define CYCLES_PER_MHZ 1000000 | 30 | #define CYCLES_PER_MHZ 1000000 |
32 | 31 | ||
diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c index b2dfcd777194..058ce3c0873e 100644 --- a/arch/arm/mach-omap2/cm33xx.c +++ b/arch/arm/mach-omap2/cm33xx.c | |||
@@ -22,8 +22,6 @@ | |||
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include "../plat-omap/common.h" | ||
26 | |||
27 | #include "clockdomain.h" | 25 | #include "clockdomain.h" |
28 | #include "cm.h" | 26 | #include "cm.h" |
29 | #include "cm33xx.h" | 27 | #include "cm33xx.h" |
diff --git a/arch/arm/mach-omap2/cm_common.c b/arch/arm/mach-omap2/cm_common.c index 0bab493ec133..40b3b5a84458 100644 --- a/arch/arm/mach-omap2/cm_common.c +++ b/arch/arm/mach-omap2/cm_common.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/errno.h> | ||
16 | 17 | ||
17 | #include "cm2xxx.h" | 18 | #include "cm2xxx.h" |
18 | #include "cm3xxx.h" | 19 | #include "cm3xxx.h" |
diff --git a/arch/arm/mach-omap2/common-board-devices.c b/arch/arm/mach-omap2/common-board-devices.c index ad856092c06a..d246efd9f734 100644 --- a/arch/arm/mach-omap2/common-board-devices.c +++ b/arch/arm/mach-omap2/common-board-devices.c | |||
@@ -63,30 +63,36 @@ void __init omap_ads7846_init(int bus_num, int gpio_pendown, int gpio_debounce, | |||
63 | struct spi_board_info *spi_bi = &ads7846_spi_board_info; | 63 | struct spi_board_info *spi_bi = &ads7846_spi_board_info; |
64 | int err; | 64 | int err; |
65 | 65 | ||
66 | err = gpio_request_one(gpio_pendown, GPIOF_IN, "TSPenDown"); | 66 | /* |
67 | if (err) { | 67 | * If a board defines get_pendown_state() function, request the pendown |
68 | pr_err("Couldn't obtain gpio for TSPenDown: %d\n", err); | 68 | * GPIO and set the GPIO debounce time. |
69 | return; | 69 | * If a board does not define the get_pendown_state() function, then |
70 | } | 70 | * the ads7846 driver will setup the pendown GPIO itself. |
71 | */ | ||
72 | if (board_pdata && board_pdata->get_pendown_state) { | ||
73 | err = gpio_request_one(gpio_pendown, GPIOF_IN, "TSPenDown"); | ||
74 | if (err) { | ||
75 | pr_err("Couldn't obtain gpio for TSPenDown: %d\n", err); | ||
76 | return; | ||
77 | } | ||
78 | |||
79 | if (gpio_debounce) | ||
80 | gpio_set_debounce(gpio_pendown, gpio_debounce); | ||
71 | 81 | ||
72 | if (gpio_debounce) | 82 | gpio_export(gpio_pendown, 0); |
73 | gpio_set_debounce(gpio_pendown, gpio_debounce); | 83 | } |
74 | 84 | ||
75 | spi_bi->bus_num = bus_num; | 85 | spi_bi->bus_num = bus_num; |
76 | spi_bi->irq = gpio_to_irq(gpio_pendown); | 86 | spi_bi->irq = gpio_to_irq(gpio_pendown); |
77 | 87 | ||
88 | ads7846_config.gpio_pendown = gpio_pendown; | ||
89 | |||
78 | if (board_pdata) { | 90 | if (board_pdata) { |
79 | board_pdata->gpio_pendown = gpio_pendown; | 91 | board_pdata->gpio_pendown = gpio_pendown; |
92 | board_pdata->gpio_pendown_debounce = gpio_debounce; | ||
80 | spi_bi->platform_data = board_pdata; | 93 | spi_bi->platform_data = board_pdata; |
81 | if (board_pdata->get_pendown_state) | ||
82 | gpio_export(gpio_pendown, 0); | ||
83 | } else { | ||
84 | ads7846_config.gpio_pendown = gpio_pendown; | ||
85 | } | 94 | } |
86 | 95 | ||
87 | if (!board_pdata || (board_pdata && !board_pdata->get_pendown_state)) | ||
88 | gpio_free(gpio_pendown); | ||
89 | |||
90 | spi_register_board_info(&ads7846_spi_board_info, 1); | 96 | spi_register_board_info(&ads7846_spi_board_info, 1); |
91 | } | 97 | } |
92 | #else | 98 | #else |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index c57eeeac7d11..3bbcde87dead 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -34,8 +34,6 @@ | |||
34 | 34 | ||
35 | #include <asm/proc-fns.h> | 35 | #include <asm/proc-fns.h> |
36 | 36 | ||
37 | #include "../plat-omap/common.h" | ||
38 | |||
39 | #include "i2c.h" | 37 | #include "i2c.h" |
40 | #include "serial.h" | 38 | #include "serial.h" |
41 | 39 | ||
@@ -84,6 +82,7 @@ extern void omap2_init_common_infrastructure(void); | |||
84 | extern struct sys_timer omap2_timer; | 82 | extern struct sys_timer omap2_timer; |
85 | extern struct sys_timer omap3_timer; | 83 | extern struct sys_timer omap3_timer; |
86 | extern struct sys_timer omap3_secure_timer; | 84 | extern struct sys_timer omap3_secure_timer; |
85 | extern struct sys_timer omap3_gp_timer; | ||
87 | extern struct sys_timer omap3_am33xx_timer; | 86 | extern struct sys_timer omap3_am33xx_timer; |
88 | extern struct sys_timer omap4_timer; | 87 | extern struct sys_timer omap4_timer; |
89 | extern struct sys_timer omap5_timer; | 88 | extern struct sys_timer omap5_timer; |
@@ -280,5 +279,8 @@ struct omap2_hsmmc_info; | |||
280 | extern int omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers); | 279 | extern int omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers); |
281 | extern void omap_reserve(void); | 280 | extern void omap_reserve(void); |
282 | 281 | ||
282 | struct omap_hwmod; | ||
283 | extern int omap_dss_reset(struct omap_hwmod *); | ||
284 | |||
283 | #endif /* __ASSEMBLER__ */ | 285 | #endif /* __ASSEMBLER__ */ |
284 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ | 286 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index d2215e9873a5..cafe04660a4b 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
26 | 26 | ||
27 | #include <plat-omap/dma-omap.h> | 27 | #include <linux/omap-dma.h> |
28 | 28 | ||
29 | #include "iomap.h" | 29 | #include "iomap.h" |
30 | #include "omap_hwmod.h" | 30 | #include "omap_hwmod.h" |
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index b1926cd70468..612b98249873 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/device.h> | 29 | #include <linux/device.h> |
30 | 30 | ||
31 | #include <plat-omap/dma-omap.h> | 31 | #include <linux/omap-dma.h> |
32 | 32 | ||
33 | #include "soc.h" | 33 | #include "soc.h" |
34 | #include "omap_hwmod.h" | 34 | #include "omap_hwmod.h" |
@@ -276,6 +276,9 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
276 | return -ENOMEM; | 276 | return -ENOMEM; |
277 | } | 277 | } |
278 | 278 | ||
279 | if (cpu_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) | ||
280 | d->dev_caps |= HS_CHANNELS_RESERVED; | ||
281 | |||
279 | /* Check the capabilities register for descriptor loading feature */ | 282 | /* Check the capabilities register for descriptor loading feature */ |
280 | if (dma_read(CAPS_0, 0) & DMA_HAS_DESCRIPTOR_CAPS) | 283 | if (dma_read(CAPS_0, 0) & DMA_HAS_DESCRIPTOR_CAPS) |
281 | dma_common_ch_end = CCDN; | 284 | dma_common_ch_end = CCDN; |
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index e3406dce59be..4a964338992a 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/string.h> | 14 | #include <linux/string.h> |
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
17 | #include <mach/hardware.h> | ||
18 | #include <linux/platform_data/gpio-omap.h> | 17 | #include <linux/platform_data/gpio-omap.h> |
19 | 18 | ||
20 | #include "soc.h" | 19 | #include "soc.h" |
diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c index be092e8e5d85..fbb9b152cd5e 100644 --- a/arch/arm/mach-omap2/i2c.c +++ b/arch/arm/mach-omap2/i2c.c | |||
@@ -107,6 +107,19 @@ int omap_i2c_reset(struct omap_hwmod *oh) | |||
107 | return 0; | 107 | return 0; |
108 | } | 108 | } |
109 | 109 | ||
110 | static int __init omap_i2c_nr_ports(void) | ||
111 | { | ||
112 | int ports = 0; | ||
113 | |||
114 | if (cpu_is_omap24xx()) | ||
115 | ports = 2; | ||
116 | else if (cpu_is_omap34xx()) | ||
117 | ports = 3; | ||
118 | else if (cpu_is_omap44xx()) | ||
119 | ports = 4; | ||
120 | return ports; | ||
121 | } | ||
122 | |||
110 | static const char name[] = "omap_i2c"; | 123 | static const char name[] = "omap_i2c"; |
111 | 124 | ||
112 | int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata, | 125 | int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata, |
@@ -119,6 +132,9 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata, | |||
119 | struct omap_i2c_bus_platform_data *pdata; | 132 | struct omap_i2c_bus_platform_data *pdata; |
120 | struct omap_i2c_dev_attr *dev_attr; | 133 | struct omap_i2c_dev_attr *dev_attr; |
121 | 134 | ||
135 | if (bus_id > omap_i2c_nr_ports()) | ||
136 | return -EINVAL; | ||
137 | |||
122 | omap2_i2c_mux_pins(bus_id); | 138 | omap2_i2c_mux_pins(bus_id); |
123 | 139 | ||
124 | l = snprintf(oh_name, MAX_OMAP_I2C_HWMOD_NAME_LEN, "i2c%d", bus_id); | 140 | l = snprintf(oh_name, MAX_OMAP_I2C_HWMOD_NAME_LEN, "i2c%d", bus_id); |
diff --git a/arch/arm/mach-omap2/i2c.h b/arch/arm/mach-omap2/i2c.h index 81dbb992a6bc..42b6f2e7d190 100644 --- a/arch/arm/mach-omap2/i2c.h +++ b/arch/arm/mach-omap2/i2c.h | |||
@@ -19,7 +19,7 @@ | |||
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include "../plat-omap/i2c.h" | 22 | #include <plat/i2c.h> |
23 | 23 | ||
24 | #ifndef __MACH_OMAP2_I2C_H | 24 | #ifndef __MACH_OMAP2_I2C_H |
25 | #define __MACH_OMAP2_I2C_H | 25 | #define __MACH_OMAP2_I2C_H |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index f1e121502789..45cc7ed4dd58 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -28,6 +28,9 @@ | |||
28 | #include "soc.h" | 28 | #include "soc.h" |
29 | #include "control.h" | 29 | #include "control.h" |
30 | 30 | ||
31 | #define OMAP4_SILICON_TYPE_STANDARD 0x01 | ||
32 | #define OMAP4_SILICON_TYPE_PERFORMANCE 0x02 | ||
33 | |||
31 | static unsigned int omap_revision; | 34 | static unsigned int omap_revision; |
32 | static const char *cpu_rev; | 35 | static const char *cpu_rev; |
33 | u32 omap_features; | 36 | u32 omap_features; |
@@ -273,25 +276,11 @@ void __init omap4xxx_check_features(void) | |||
273 | { | 276 | { |
274 | u32 si_type; | 277 | u32 si_type; |
275 | 278 | ||
276 | if (cpu_is_omap443x()) | 279 | si_type = |
277 | omap_features |= OMAP4_HAS_MPU_1GHZ; | 280 | (read_tap_reg(OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1) >> 16) & 0x03; |
278 | |||
279 | 281 | ||
280 | if (cpu_is_omap446x()) { | 282 | if (si_type == OMAP4_SILICON_TYPE_PERFORMANCE) |
281 | si_type = | 283 | omap_features = OMAP4_HAS_PERF_SILICON; |
282 | read_tap_reg(OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1); | ||
283 | switch ((si_type & (3 << 16)) >> 16) { | ||
284 | case 2: | ||
285 | /* High performance device */ | ||
286 | omap_features |= OMAP4_HAS_MPU_1_5GHZ; | ||
287 | break; | ||
288 | case 1: | ||
289 | default: | ||
290 | /* Standard device */ | ||
291 | omap_features |= OMAP4_HAS_MPU_1_2GHZ; | ||
292 | break; | ||
293 | } | ||
294 | } | ||
295 | } | 284 | } |
296 | 285 | ||
297 | void __init ti81xx_check_features(void) | 286 | void __init ti81xx_check_features(void) |
diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S b/arch/arm/mach-omap2/include/mach/debug-macro.S index 4b5cbdfac028..cfaed13d0040 100644 --- a/arch/arm/mach-omap2/include/mach/debug-macro.S +++ b/arch/arm/mach-omap2/include/mach/debug-macro.S | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/serial_reg.h> | 14 | #include <linux/serial_reg.h> |
15 | 15 | ||
16 | #include <../mach-omap2/serial.h> | 16 | #include <mach/serial.h> |
17 | 17 | ||
18 | #define UART_OFFSET(addr) ((addr) & 0x00ffffff) | 18 | #define UART_OFFSET(addr) ((addr) & 0x00ffffff) |
19 | 19 | ||
diff --git a/arch/arm/mach-omap2/include/mach/gpio.h b/arch/arm/mach-omap2/include/mach/gpio.h deleted file mode 100644 index 5621cc59c9f4..000000000000 --- a/arch/arm/mach-omap2/include/mach/gpio.h +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap2/include/mach/gpio.h | ||
3 | */ | ||
diff --git a/arch/arm/mach-omap2/include/mach/serial.h b/arch/arm/mach-omap2/include/mach/serial.h new file mode 100644 index 000000000000..70eda00db7a4 --- /dev/null +++ b/arch/arm/mach-omap2/include/mach/serial.h | |||
@@ -0,0 +1,103 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Texas Instruments | ||
3 | * Added OMAP4 support- Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
4 | * | ||
5 | * This program is distributed in the hope that it will be useful, | ||
6 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
7 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
8 | * GNU General Public License for more details. | ||
9 | */ | ||
10 | |||
11 | /* | ||
12 | * Memory entry used for the DEBUG_LL UART configuration, relative to | ||
13 | * start of RAM. See also uncompress.h and debug-macro.S. | ||
14 | * | ||
15 | * Note that using a memory location for storing the UART configuration | ||
16 | * has at least two limitations: | ||
17 | * | ||
18 | * 1. Kernel uncompress code cannot overlap OMAP_UART_INFO as the | ||
19 | * uncompress code could then partially overwrite itself | ||
20 | * 2. We assume printascii is called at least once before paging_init, | ||
21 | * and addruart has a chance to read OMAP_UART_INFO | ||
22 | */ | ||
23 | #define OMAP_UART_INFO_OFS 0x3ffc | ||
24 | |||
25 | /* OMAP2 serial ports */ | ||
26 | #define OMAP2_UART1_BASE 0x4806a000 | ||
27 | #define OMAP2_UART2_BASE 0x4806c000 | ||
28 | #define OMAP2_UART3_BASE 0x4806e000 | ||
29 | |||
30 | /* OMAP3 serial ports */ | ||
31 | #define OMAP3_UART1_BASE OMAP2_UART1_BASE | ||
32 | #define OMAP3_UART2_BASE OMAP2_UART2_BASE | ||
33 | #define OMAP3_UART3_BASE 0x49020000 | ||
34 | #define OMAP3_UART4_BASE 0x49042000 /* Only on 36xx */ | ||
35 | #define OMAP3_UART4_AM35XX_BASE 0x4809E000 /* Only on AM35xx */ | ||
36 | |||
37 | /* OMAP4 serial ports */ | ||
38 | #define OMAP4_UART1_BASE OMAP2_UART1_BASE | ||
39 | #define OMAP4_UART2_BASE OMAP2_UART2_BASE | ||
40 | #define OMAP4_UART3_BASE 0x48020000 | ||
41 | #define OMAP4_UART4_BASE 0x4806e000 | ||
42 | |||
43 | /* TI81XX serial ports */ | ||
44 | #define TI81XX_UART1_BASE 0x48020000 | ||
45 | #define TI81XX_UART2_BASE 0x48022000 | ||
46 | #define TI81XX_UART3_BASE 0x48024000 | ||
47 | |||
48 | /* AM3505/3517 UART4 */ | ||
49 | #define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */ | ||
50 | |||
51 | /* AM33XX serial port */ | ||
52 | #define AM33XX_UART1_BASE 0x44E09000 | ||
53 | |||
54 | /* OMAP5 serial ports */ | ||
55 | #define OMAP5_UART1_BASE OMAP2_UART1_BASE | ||
56 | #define OMAP5_UART2_BASE OMAP2_UART2_BASE | ||
57 | #define OMAP5_UART3_BASE OMAP4_UART3_BASE | ||
58 | #define OMAP5_UART4_BASE OMAP4_UART4_BASE | ||
59 | #define OMAP5_UART5_BASE 0x48066000 | ||
60 | #define OMAP5_UART6_BASE 0x48068000 | ||
61 | |||
62 | /* External port on Zoom2/3 */ | ||
63 | #define ZOOM_UART_BASE 0x10000000 | ||
64 | #define ZOOM_UART_VIRT 0xfa400000 | ||
65 | |||
66 | #define OMAP_PORT_SHIFT 2 | ||
67 | #define ZOOM_PORT_SHIFT 1 | ||
68 | |||
69 | #define OMAP24XX_BASE_BAUD (48000000/16) | ||
70 | |||
71 | /* | ||
72 | * DEBUG_LL port encoding stored into the UART1 scratchpad register by | ||
73 | * decomp_setup in uncompress.h | ||
74 | */ | ||
75 | #define OMAP2UART1 21 | ||
76 | #define OMAP2UART2 22 | ||
77 | #define OMAP2UART3 23 | ||
78 | #define OMAP3UART1 OMAP2UART1 | ||
79 | #define OMAP3UART2 OMAP2UART2 | ||
80 | #define OMAP3UART3 33 | ||
81 | #define OMAP3UART4 34 /* Only on 36xx */ | ||
82 | #define OMAP4UART1 OMAP2UART1 | ||
83 | #define OMAP4UART2 OMAP2UART2 | ||
84 | #define OMAP4UART3 43 | ||
85 | #define OMAP4UART4 44 | ||
86 | #define TI81XXUART1 81 | ||
87 | #define TI81XXUART2 82 | ||
88 | #define TI81XXUART3 83 | ||
89 | #define AM33XXUART1 84 | ||
90 | #define OMAP5UART3 OMAP4UART3 | ||
91 | #define OMAP5UART4 OMAP4UART4 | ||
92 | #define ZOOM_UART 95 /* Only on zoom2/3 */ | ||
93 | |||
94 | #ifndef __ASSEMBLER__ | ||
95 | |||
96 | struct omap_board_data; | ||
97 | struct omap_uart_port_info; | ||
98 | |||
99 | extern void omap_serial_init(void); | ||
100 | extern void omap_serial_board_init(struct omap_uart_port_info *platform_data); | ||
101 | extern void omap_serial_init_port(struct omap_board_data *bdata, | ||
102 | struct omap_uart_port_info *platform_data); | ||
103 | #endif | ||
diff --git a/arch/arm/mach-omap2/include/mach/uncompress.h b/arch/arm/mach-omap2/include/mach/uncompress.h index 28d1ec0e869a..8e3546d3e041 100644 --- a/arch/arm/mach-omap2/include/mach/uncompress.h +++ b/arch/arm/mach-omap2/include/mach/uncompress.h | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <asm/memory.h> | 23 | #include <asm/memory.h> |
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | 25 | ||
26 | #include <../mach-omap2/serial.h> | 26 | #include <mach/serial.h> |
27 | 27 | ||
28 | #define MDR1_MODE_MASK 0x07 | 28 | #define MDR1_MODE_MASK 0x07 |
29 | 29 | ||
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 924bf24693cd..2c3fdd65387b 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -25,9 +25,7 @@ | |||
25 | #include <asm/tlb.h> | 25 | #include <asm/tlb.h> |
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | 27 | ||
28 | #include <plat-omap/dma-omap.h> | 28 | #include <linux/omap-dma.h> |
29 | |||
30 | #include "../plat-omap/sram.h" | ||
31 | 29 | ||
32 | #include "omap_hwmod.h" | 30 | #include "omap_hwmod.h" |
33 | #include "soc.h" | 31 | #include "soc.h" |
@@ -44,6 +42,7 @@ | |||
44 | #include "sdrc.h" | 42 | #include "sdrc.h" |
45 | #include "control.h" | 43 | #include "control.h" |
46 | #include "serial.h" | 44 | #include "serial.h" |
45 | #include "sram.h" | ||
47 | #include "cm2xxx.h" | 46 | #include "cm2xxx.h" |
48 | #include "cm3xxx.h" | 47 | #include "cm3xxx.h" |
49 | #include "prm.h" | 48 | #include "prm.h" |
@@ -51,6 +50,10 @@ | |||
51 | #include "prcm_mpu44xx.h" | 50 | #include "prcm_mpu44xx.h" |
52 | #include "prminst44xx.h" | 51 | #include "prminst44xx.h" |
53 | #include "cminst44xx.h" | 52 | #include "cminst44xx.h" |
53 | #include "prm2xxx.h" | ||
54 | #include "prm3xxx.h" | ||
55 | #include "prm44xx.h" | ||
56 | |||
54 | /* | 57 | /* |
55 | * The machine specific code may provide the extra mapping besides the | 58 | * The machine specific code may provide the extra mapping besides the |
56 | * default mapping provided here. | 59 | * default mapping provided here. |
@@ -361,11 +364,6 @@ static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data) | |||
361 | return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); | 364 | return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); |
362 | } | 365 | } |
363 | 366 | ||
364 | static void __init omap_common_init_early(void) | ||
365 | { | ||
366 | omap_init_consistent_dma_size(); | ||
367 | } | ||
368 | |||
369 | static void __init omap_hwmod_init_postsetup(void) | 367 | static void __init omap_hwmod_init_postsetup(void) |
370 | { | 368 | { |
371 | u8 postsetup_state; | 369 | u8 postsetup_state; |
@@ -392,8 +390,8 @@ void __init omap2420_init_early(void) | |||
392 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE)); | 390 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE)); |
393 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE), NULL); | 391 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE), NULL); |
394 | omap2xxx_check_revision(); | 392 | omap2xxx_check_revision(); |
393 | omap2xxx_prm_init(); | ||
395 | omap2xxx_cm_init(); | 394 | omap2xxx_cm_init(); |
396 | omap_common_init_early(); | ||
397 | omap2xxx_voltagedomains_init(); | 395 | omap2xxx_voltagedomains_init(); |
398 | omap242x_powerdomains_init(); | 396 | omap242x_powerdomains_init(); |
399 | omap242x_clockdomains_init(); | 397 | omap242x_clockdomains_init(); |
@@ -422,8 +420,8 @@ void __init omap2430_init_early(void) | |||
422 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE)); | 420 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE)); |
423 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE), NULL); | 421 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE), NULL); |
424 | omap2xxx_check_revision(); | 422 | omap2xxx_check_revision(); |
423 | omap2xxx_prm_init(); | ||
425 | omap2xxx_cm_init(); | 424 | omap2xxx_cm_init(); |
426 | omap_common_init_early(); | ||
427 | omap2xxx_voltagedomains_init(); | 425 | omap2xxx_voltagedomains_init(); |
428 | omap243x_powerdomains_init(); | 426 | omap243x_powerdomains_init(); |
429 | omap243x_clockdomains_init(); | 427 | omap243x_clockdomains_init(); |
@@ -457,8 +455,8 @@ void __init omap3_init_early(void) | |||
457 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE), NULL); | 455 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE), NULL); |
458 | omap3xxx_check_revision(); | 456 | omap3xxx_check_revision(); |
459 | omap3xxx_check_features(); | 457 | omap3xxx_check_features(); |
458 | omap3xxx_prm_init(); | ||
460 | omap3xxx_cm_init(); | 459 | omap3xxx_cm_init(); |
461 | omap_common_init_early(); | ||
462 | omap3xxx_voltagedomains_init(); | 460 | omap3xxx_voltagedomains_init(); |
463 | omap3xxx_powerdomains_init(); | 461 | omap3xxx_powerdomains_init(); |
464 | omap3xxx_clockdomains_init(); | 462 | omap3xxx_clockdomains_init(); |
@@ -497,7 +495,6 @@ void __init ti81xx_init_early(void) | |||
497 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE), NULL); | 495 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE), NULL); |
498 | omap3xxx_check_revision(); | 496 | omap3xxx_check_revision(); |
499 | ti81xx_check_features(); | 497 | ti81xx_check_features(); |
500 | omap_common_init_early(); | ||
501 | omap3xxx_voltagedomains_init(); | 498 | omap3xxx_voltagedomains_init(); |
502 | omap3xxx_powerdomains_init(); | 499 | omap3xxx_powerdomains_init(); |
503 | omap3xxx_clockdomains_init(); | 500 | omap3xxx_clockdomains_init(); |
@@ -566,7 +563,6 @@ void __init am33xx_init_early(void) | |||
566 | omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), NULL); | 563 | omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), NULL); |
567 | omap3xxx_check_revision(); | 564 | omap3xxx_check_revision(); |
568 | ti81xx_check_features(); | 565 | ti81xx_check_features(); |
569 | omap_common_init_early(); | ||
570 | am33xx_voltagedomains_init(); | 566 | am33xx_voltagedomains_init(); |
571 | am33xx_powerdomains_init(); | 567 | am33xx_powerdomains_init(); |
572 | am33xx_clockdomains_init(); | 568 | am33xx_clockdomains_init(); |
@@ -591,7 +587,7 @@ void __init omap4430_init_early(void) | |||
591 | omap_cm_base_init(); | 587 | omap_cm_base_init(); |
592 | omap4xxx_check_revision(); | 588 | omap4xxx_check_revision(); |
593 | omap4xxx_check_features(); | 589 | omap4xxx_check_features(); |
594 | omap_common_init_early(); | 590 | omap44xx_prm_init(); |
595 | omap44xx_voltagedomains_init(); | 591 | omap44xx_voltagedomains_init(); |
596 | omap44xx_powerdomains_init(); | 592 | omap44xx_powerdomains_init(); |
597 | omap44xx_clockdomains_init(); | 593 | omap44xx_clockdomains_init(); |
@@ -623,7 +619,6 @@ void __init omap5_init_early(void) | |||
623 | omap_prm_base_init(); | 619 | omap_prm_base_init(); |
624 | omap_cm_base_init(); | 620 | omap_cm_base_init(); |
625 | omap5xxx_check_revision(); | 621 | omap5xxx_check_revision(); |
626 | omap_common_init_early(); | ||
627 | } | 622 | } |
628 | #endif | 623 | #endif |
629 | 624 | ||
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index bf496510eb5e..df49f2a49461 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 21 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
22 | #include <linux/pm_runtime.h> | 22 | #include <linux/pm_runtime.h> |
23 | 23 | ||
24 | #include <plat-omap/dma-omap.h> | 24 | #include <linux/omap-dma.h> |
25 | 25 | ||
26 | #include "omap_device.h" | 26 | #include "omap_device.h" |
27 | 27 | ||
diff --git a/arch/arm/plat-omap/omap-pm-noop.c b/arch/arm/mach-omap2/omap-pm-noop.c index 198685b894b0..6a3be2bebddb 100644 --- a/arch/arm/plat-omap/omap-pm-noop.c +++ b/arch/arm/mach-omap2/omap-pm-noop.c | |||
@@ -22,8 +22,8 @@ | |||
22 | #include <linux/device.h> | 22 | #include <linux/device.h> |
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | 24 | ||
25 | #include "../mach-omap2/omap_device.h" | 25 | #include "omap_device.h" |
26 | #include "../mach-omap2/omap-pm.h" | 26 | #include "omap-pm.h" |
27 | 27 | ||
28 | static bool off_mode_enabled; | 28 | static bool off_mode_enabled; |
29 | static int dummy_context_loss_counter; | 29 | static int dummy_context_loss_counter; |
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index 64fce07a3ccd..5695885ea340 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c | |||
@@ -25,8 +25,6 @@ | |||
25 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
26 | #include <asm/memblock.h> | 26 | #include <asm/memblock.h> |
27 | 27 | ||
28 | #include "../plat-omap/sram.h" | ||
29 | |||
30 | #include "omap-wakeupgen.h" | 28 | #include "omap-wakeupgen.h" |
31 | #include "soc.h" | 29 | #include "soc.h" |
32 | #include "iomap.h" | 30 | #include "iomap.h" |
@@ -37,6 +35,7 @@ | |||
37 | #include "prcm_mpu44xx.h" | 35 | #include "prcm_mpu44xx.h" |
38 | #include "omap4-sar-layout.h" | 36 | #include "omap4-sar-layout.h" |
39 | #include "omap-secure.h" | 37 | #include "omap-secure.h" |
38 | #include "sram.h" | ||
40 | 39 | ||
41 | #ifdef CONFIG_CACHE_L2X0 | 40 | #ifdef CONFIG_CACHE_L2X0 |
42 | static void __iomem *l2cache_base; | 41 | static void __iomem *l2cache_base; |
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index 0ef934fec364..e065daa537c0 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c | |||
@@ -441,19 +441,21 @@ int omap_device_get_context_loss_count(struct platform_device *pdev) | |||
441 | /** | 441 | /** |
442 | * omap_device_count_resources - count number of struct resource entries needed | 442 | * omap_device_count_resources - count number of struct resource entries needed |
443 | * @od: struct omap_device * | 443 | * @od: struct omap_device * |
444 | * @flags: Type of resources to include when counting (IRQ/DMA/MEM) | ||
444 | * | 445 | * |
445 | * Count the number of struct resource entries needed for this | 446 | * Count the number of struct resource entries needed for this |
446 | * omap_device @od. Used by omap_device_build_ss() to determine how | 447 | * omap_device @od. Used by omap_device_build_ss() to determine how |
447 | * much memory to allocate before calling | 448 | * much memory to allocate before calling |
448 | * omap_device_fill_resources(). Returns the count. | 449 | * omap_device_fill_resources(). Returns the count. |
449 | */ | 450 | */ |
450 | static int omap_device_count_resources(struct omap_device *od) | 451 | static int omap_device_count_resources(struct omap_device *od, |
452 | unsigned long flags) | ||
451 | { | 453 | { |
452 | int c = 0; | 454 | int c = 0; |
453 | int i; | 455 | int i; |
454 | 456 | ||
455 | for (i = 0; i < od->hwmods_cnt; i++) | 457 | for (i = 0; i < od->hwmods_cnt; i++) |
456 | c += omap_hwmod_count_resources(od->hwmods[i]); | 458 | c += omap_hwmod_count_resources(od->hwmods[i], flags); |
457 | 459 | ||
458 | pr_debug("omap_device: %s: counted %d total resources across %d hwmods\n", | 460 | pr_debug("omap_device: %s: counted %d total resources across %d hwmods\n", |
459 | od->pdev->name, c, od->hwmods_cnt); | 461 | od->pdev->name, c, od->hwmods_cnt); |
@@ -557,52 +559,73 @@ struct omap_device *omap_device_alloc(struct platform_device *pdev, | |||
557 | od->hwmods = hwmods; | 559 | od->hwmods = hwmods; |
558 | od->pdev = pdev; | 560 | od->pdev = pdev; |
559 | 561 | ||
560 | res_count = omap_device_count_resources(od); | ||
561 | /* | 562 | /* |
563 | * Non-DT Boot: | ||
564 | * Here, pdev->num_resources = 0, and we should get all the | ||
565 | * resources from hwmod. | ||
566 | * | ||
562 | * DT Boot: | 567 | * DT Boot: |
563 | * OF framework will construct the resource structure (currently | 568 | * OF framework will construct the resource structure (currently |
564 | * does for MEM & IRQ resource) and we should respect/use these | 569 | * does for MEM & IRQ resource) and we should respect/use these |
565 | * resources, killing hwmod dependency. | 570 | * resources, killing hwmod dependency. |
566 | * If pdev->num_resources > 0, we assume that MEM & IRQ resources | 571 | * If pdev->num_resources > 0, we assume that MEM & IRQ resources |
567 | * have been allocated by OF layer already (through DTB). | 572 | * have been allocated by OF layer already (through DTB). |
568 | * | 573 | * As preparation for the future we examine the OF provided resources |
569 | * Non-DT Boot: | 574 | * to see if we have DMA resources provided already. In this case |
570 | * Here, pdev->num_resources = 0, and we should get all the | 575 | * there is no need to update the resources for the device, we use the |
571 | * resources from hwmod. | 576 | * OF provided ones. |
572 | * | 577 | * |
573 | * TODO: Once DMA resource is available from OF layer, we should | 578 | * TODO: Once DMA resource is available from OF layer, we should |
574 | * kill filling any resources from hwmod. | 579 | * kill filling any resources from hwmod. |
575 | */ | 580 | */ |
576 | if (res_count > pdev->num_resources) { | 581 | if (!pdev->num_resources) { |
577 | /* Allocate resources memory to account for new resources */ | 582 | /* Count all resources for the device */ |
578 | res = kzalloc(sizeof(struct resource) * res_count, GFP_KERNEL); | 583 | res_count = omap_device_count_resources(od, IORESOURCE_IRQ | |
579 | if (!res) | 584 | IORESOURCE_DMA | |
580 | goto oda_exit3; | 585 | IORESOURCE_MEM); |
581 | 586 | } else { | |
582 | /* | 587 | /* Take a look if we already have DMA resource via DT */ |
583 | * If pdev->num_resources > 0, then assume that, | 588 | for (i = 0; i < pdev->num_resources; i++) { |
584 | * MEM and IRQ resources will only come from DT and only | 589 | struct resource *r = &pdev->resource[i]; |
585 | * fill DMA resource from hwmod layer. | 590 | |
586 | */ | 591 | /* We have it, no need to touch the resources */ |
587 | if (pdev->num_resources && pdev->resource) { | 592 | if (r->flags == IORESOURCE_DMA) |
588 | dev_dbg(&pdev->dev, "%s(): resources already allocated %d\n", | 593 | goto have_everything; |
589 | __func__, res_count); | ||
590 | memcpy(res, pdev->resource, | ||
591 | sizeof(struct resource) * pdev->num_resources); | ||
592 | _od_fill_dma_resources(od, &res[pdev->num_resources]); | ||
593 | } else { | ||
594 | dev_dbg(&pdev->dev, "%s(): using resources from hwmod %d\n", | ||
595 | __func__, res_count); | ||
596 | omap_device_fill_resources(od, res); | ||
597 | } | 594 | } |
595 | /* Count only DMA resources for the device */ | ||
596 | res_count = omap_device_count_resources(od, IORESOURCE_DMA); | ||
597 | /* The device has no DMA resource, no need for update */ | ||
598 | if (!res_count) | ||
599 | goto have_everything; | ||
598 | 600 | ||
599 | ret = platform_device_add_resources(pdev, res, res_count); | 601 | res_count += pdev->num_resources; |
600 | kfree(res); | 602 | } |
601 | 603 | ||
602 | if (ret) | 604 | /* Allocate resources memory to account for new resources */ |
603 | goto oda_exit3; | 605 | res = kzalloc(sizeof(struct resource) * res_count, GFP_KERNEL); |
606 | if (!res) | ||
607 | goto oda_exit3; | ||
608 | |||
609 | if (!pdev->num_resources) { | ||
610 | dev_dbg(&pdev->dev, "%s: using %d resources from hwmod\n", | ||
611 | __func__, res_count); | ||
612 | omap_device_fill_resources(od, res); | ||
613 | } else { | ||
614 | dev_dbg(&pdev->dev, | ||
615 | "%s: appending %d DMA resources from hwmod\n", | ||
616 | __func__, res_count - pdev->num_resources); | ||
617 | memcpy(res, pdev->resource, | ||
618 | sizeof(struct resource) * pdev->num_resources); | ||
619 | _od_fill_dma_resources(od, &res[pdev->num_resources]); | ||
604 | } | 620 | } |
605 | 621 | ||
622 | ret = platform_device_add_resources(pdev, res, res_count); | ||
623 | kfree(res); | ||
624 | |||
625 | if (ret) | ||
626 | goto oda_exit3; | ||
627 | |||
628 | have_everything: | ||
606 | if (!pm_lats) { | 629 | if (!pm_lats) { |
607 | pm_lats = omap_default_latency; | 630 | pm_lats = omap_default_latency; |
608 | pm_lats_cnt = ARRAY_SIZE(omap_default_latency); | 631 | pm_lats_cnt = ARRAY_SIZE(omap_default_latency); |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 3f3bf323e201..4653efb87a27 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -187,6 +187,8 @@ struct omap_hwmod_soc_ops { | |||
187 | int (*is_hardreset_asserted)(struct omap_hwmod *oh, | 187 | int (*is_hardreset_asserted)(struct omap_hwmod *oh, |
188 | struct omap_hwmod_rst_info *ohri); | 188 | struct omap_hwmod_rst_info *ohri); |
189 | int (*init_clkdm)(struct omap_hwmod *oh); | 189 | int (*init_clkdm)(struct omap_hwmod *oh); |
190 | void (*update_context_lost)(struct omap_hwmod *oh); | ||
191 | int (*get_context_lost)(struct omap_hwmod *oh); | ||
190 | }; | 192 | }; |
191 | 193 | ||
192 | /* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */ | 194 | /* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */ |
@@ -2015,6 +2017,42 @@ static void _reconfigure_io_chain(void) | |||
2015 | } | 2017 | } |
2016 | 2018 | ||
2017 | /** | 2019 | /** |
2020 | * _omap4_update_context_lost - increment hwmod context loss counter if | ||
2021 | * hwmod context was lost, and clear hardware context loss reg | ||
2022 | * @oh: hwmod to check for context loss | ||
2023 | * | ||
2024 | * If the PRCM indicates that the hwmod @oh lost context, increment | ||
2025 | * our in-memory context loss counter, and clear the RM_*_CONTEXT | ||
2026 | * bits. No return value. | ||
2027 | */ | ||
2028 | static void _omap4_update_context_lost(struct omap_hwmod *oh) | ||
2029 | { | ||
2030 | if (oh->prcm.omap4.flags & HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT) | ||
2031 | return; | ||
2032 | |||
2033 | if (!prm_was_any_context_lost_old(oh->clkdm->pwrdm.ptr->prcm_partition, | ||
2034 | oh->clkdm->pwrdm.ptr->prcm_offs, | ||
2035 | oh->prcm.omap4.context_offs)) | ||
2036 | return; | ||
2037 | |||
2038 | oh->prcm.omap4.context_lost_counter++; | ||
2039 | prm_clear_context_loss_flags_old(oh->clkdm->pwrdm.ptr->prcm_partition, | ||
2040 | oh->clkdm->pwrdm.ptr->prcm_offs, | ||
2041 | oh->prcm.omap4.context_offs); | ||
2042 | } | ||
2043 | |||
2044 | /** | ||
2045 | * _omap4_get_context_lost - get context loss counter for a hwmod | ||
2046 | * @oh: hwmod to get context loss counter for | ||
2047 | * | ||
2048 | * Returns the in-memory context loss counter for a hwmod. | ||
2049 | */ | ||
2050 | static int _omap4_get_context_lost(struct omap_hwmod *oh) | ||
2051 | { | ||
2052 | return oh->prcm.omap4.context_lost_counter; | ||
2053 | } | ||
2054 | |||
2055 | /** | ||
2018 | * _enable - enable an omap_hwmod | 2056 | * _enable - enable an omap_hwmod |
2019 | * @oh: struct omap_hwmod * | 2057 | * @oh: struct omap_hwmod * |
2020 | * | 2058 | * |
@@ -2097,6 +2135,9 @@ static int _enable(struct omap_hwmod *oh) | |||
2097 | if (soc_ops.enable_module) | 2135 | if (soc_ops.enable_module) |
2098 | soc_ops.enable_module(oh); | 2136 | soc_ops.enable_module(oh); |
2099 | 2137 | ||
2138 | if (soc_ops.update_context_lost) | ||
2139 | soc_ops.update_context_lost(oh); | ||
2140 | |||
2100 | r = (soc_ops.wait_target_ready) ? soc_ops.wait_target_ready(oh) : | 2141 | r = (soc_ops.wait_target_ready) ? soc_ops.wait_target_ready(oh) : |
2101 | -EINVAL; | 2142 | -EINVAL; |
2102 | if (!r) { | 2143 | if (!r) { |
@@ -3421,7 +3462,7 @@ int omap_hwmod_reset(struct omap_hwmod *oh) | |||
3421 | /** | 3462 | /** |
3422 | * omap_hwmod_count_resources - count number of struct resources needed by hwmod | 3463 | * omap_hwmod_count_resources - count number of struct resources needed by hwmod |
3423 | * @oh: struct omap_hwmod * | 3464 | * @oh: struct omap_hwmod * |
3424 | * @res: pointer to the first element of an array of struct resource to fill | 3465 | * @flags: Type of resources to include when counting (IRQ/DMA/MEM) |
3425 | * | 3466 | * |
3426 | * Count the number of struct resource array elements necessary to | 3467 | * Count the number of struct resource array elements necessary to |
3427 | * contain omap_hwmod @oh resources. Intended to be called by code | 3468 | * contain omap_hwmod @oh resources. Intended to be called by code |
@@ -3434,20 +3475,25 @@ int omap_hwmod_reset(struct omap_hwmod *oh) | |||
3434 | * resource IDs. | 3475 | * resource IDs. |
3435 | * | 3476 | * |
3436 | */ | 3477 | */ |
3437 | int omap_hwmod_count_resources(struct omap_hwmod *oh) | 3478 | int omap_hwmod_count_resources(struct omap_hwmod *oh, unsigned long flags) |
3438 | { | 3479 | { |
3439 | struct omap_hwmod_ocp_if *os; | 3480 | int ret = 0; |
3440 | struct list_head *p; | ||
3441 | int ret; | ||
3442 | int i = 0; | ||
3443 | 3481 | ||
3444 | ret = _count_mpu_irqs(oh) + _count_sdma_reqs(oh); | 3482 | if (flags & IORESOURCE_IRQ) |
3483 | ret += _count_mpu_irqs(oh); | ||
3445 | 3484 | ||
3446 | p = oh->slave_ports.next; | 3485 | if (flags & IORESOURCE_DMA) |
3486 | ret += _count_sdma_reqs(oh); | ||
3447 | 3487 | ||
3448 | while (i < oh->slaves_cnt) { | 3488 | if (flags & IORESOURCE_MEM) { |
3449 | os = _fetch_next_ocp_if(&p, &i); | 3489 | int i = 0; |
3450 | ret += _count_ocp_if_addr_spaces(os); | 3490 | struct omap_hwmod_ocp_if *os; |
3491 | struct list_head *p = oh->slave_ports.next; | ||
3492 | |||
3493 | while (i < oh->slaves_cnt) { | ||
3494 | os = _fetch_next_ocp_if(&p, &i); | ||
3495 | ret += _count_ocp_if_addr_spaces(os); | ||
3496 | } | ||
3451 | } | 3497 | } |
3452 | 3498 | ||
3453 | return ret; | 3499 | return ret; |
@@ -3942,17 +3988,21 @@ ohsps_unlock: | |||
3942 | * omap_hwmod_get_context_loss_count - get lost context count | 3988 | * omap_hwmod_get_context_loss_count - get lost context count |
3943 | * @oh: struct omap_hwmod * | 3989 | * @oh: struct omap_hwmod * |
3944 | * | 3990 | * |
3945 | * Query the powerdomain of of @oh to get the context loss | 3991 | * Returns the context loss count of associated @oh |
3946 | * count for this device. | 3992 | * upon success, or zero if no context loss data is available. |
3947 | * | 3993 | * |
3948 | * Returns the context loss count of the powerdomain assocated with @oh | 3994 | * On OMAP4, this queries the per-hwmod context loss register, |
3949 | * upon success, or zero if no powerdomain exists for @oh. | 3995 | * assuming one exists. If not, or on OMAP2/3, this queries the |
3996 | * enclosing powerdomain context loss count. | ||
3950 | */ | 3997 | */ |
3951 | int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh) | 3998 | int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh) |
3952 | { | 3999 | { |
3953 | struct powerdomain *pwrdm; | 4000 | struct powerdomain *pwrdm; |
3954 | int ret = 0; | 4001 | int ret = 0; |
3955 | 4002 | ||
4003 | if (soc_ops.get_context_lost) | ||
4004 | return soc_ops.get_context_lost(oh); | ||
4005 | |||
3956 | pwrdm = omap_hwmod_get_pwrdm(oh); | 4006 | pwrdm = omap_hwmod_get_pwrdm(oh); |
3957 | if (pwrdm) | 4007 | if (pwrdm) |
3958 | ret = pwrdm_get_context_loss_count(pwrdm); | 4008 | ret = pwrdm_get_context_loss_count(pwrdm); |
@@ -4067,6 +4117,8 @@ void __init omap_hwmod_init(void) | |||
4067 | soc_ops.deassert_hardreset = _omap4_deassert_hardreset; | 4117 | soc_ops.deassert_hardreset = _omap4_deassert_hardreset; |
4068 | soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; | 4118 | soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; |
4069 | soc_ops.init_clkdm = _init_clkdm; | 4119 | soc_ops.init_clkdm = _init_clkdm; |
4120 | soc_ops.update_context_lost = _omap4_update_context_lost; | ||
4121 | soc_ops.get_context_lost = _omap4_get_context_lost; | ||
4070 | } else if (soc_is_am33xx()) { | 4122 | } else if (soc_is_am33xx()) { |
4071 | soc_ops.enable_module = _am33xx_enable_module; | 4123 | soc_ops.enable_module = _am33xx_enable_module; |
4072 | soc_ops.disable_module = _am33xx_disable_module; | 4124 | soc_ops.disable_module = _am33xx_disable_module; |
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h index 87a3c5b7aa74..3ae852a522f9 100644 --- a/arch/arm/mach-omap2/omap_hwmod.h +++ b/arch/arm/mach-omap2/omap_hwmod.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * omap_hwmod macros, structures | 2 | * omap_hwmod macros, structures |
3 | * | 3 | * |
4 | * Copyright (C) 2009-2011 Nokia Corporation | 4 | * Copyright (C) 2009-2011 Nokia Corporation |
5 | * Copyright (C) 2012 Texas Instruments, Inc. | 5 | * Copyright (C) 2011-2012 Texas Instruments, Inc. |
6 | * Paul Walmsley | 6 | * Paul Walmsley |
7 | * | 7 | * |
8 | * Created in collaboration with (alphabetical order): Benoît Cousson, | 8 | * Created in collaboration with (alphabetical order): Benoît Cousson, |
@@ -394,12 +394,15 @@ struct omap_hwmod_omap2_prcm { | |||
394 | 394 | ||
395 | /** | 395 | /** |
396 | * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data | 396 | * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data |
397 | * @clkctrl_reg: PRCM address of the clock control register | 397 | * @clkctrl_offs: offset of the PRCM clock control register |
398 | * @rstctrl_reg: address of the XXX_RSTCTRL register located in the PRM | 398 | * @rstctrl_offs: offset of the XXX_RSTCTRL register located in the PRM |
399 | * @context_offs: offset of the RM_*_CONTEXT register | ||
399 | * @lostcontext_mask: bitmask for selecting bits from RM_*_CONTEXT register | 400 | * @lostcontext_mask: bitmask for selecting bits from RM_*_CONTEXT register |
400 | * @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM | 401 | * @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM |
401 | * @submodule_wkdep_bit: bit shift of the WKDEP range | 402 | * @submodule_wkdep_bit: bit shift of the WKDEP range |
402 | * @flags: PRCM register capabilities for this IP block | 403 | * @flags: PRCM register capabilities for this IP block |
404 | * @modulemode: allowable modulemodes | ||
405 | * @context_lost_counter: Count of module level context lost | ||
403 | * | 406 | * |
404 | * If @lostcontext_mask is not defined, context loss check code uses | 407 | * If @lostcontext_mask is not defined, context loss check code uses |
405 | * whole register without masking. @lostcontext_mask should only be | 408 | * whole register without masking. @lostcontext_mask should only be |
@@ -415,6 +418,7 @@ struct omap_hwmod_omap4_prcm { | |||
415 | u8 submodule_wkdep_bit; | 418 | u8 submodule_wkdep_bit; |
416 | u8 modulemode; | 419 | u8 modulemode; |
417 | u8 flags; | 420 | u8 flags; |
421 | int context_lost_counter; | ||
418 | }; | 422 | }; |
419 | 423 | ||
420 | 424 | ||
@@ -633,7 +637,7 @@ void omap_hwmod_write(u32 v, struct omap_hwmod *oh, u16 reg_offs); | |||
633 | u32 omap_hwmod_read(struct omap_hwmod *oh, u16 reg_offs); | 637 | u32 omap_hwmod_read(struct omap_hwmod *oh, u16 reg_offs); |
634 | int omap_hwmod_softreset(struct omap_hwmod *oh); | 638 | int omap_hwmod_softreset(struct omap_hwmod *oh); |
635 | 639 | ||
636 | int omap_hwmod_count_resources(struct omap_hwmod *oh); | 640 | int omap_hwmod_count_resources(struct omap_hwmod *oh, unsigned long flags); |
637 | int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res); | 641 | int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res); |
638 | int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res); | 642 | int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res); |
639 | int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type, | 643 | int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index a8b3368dca3d..b5efe58c0be0 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
@@ -15,8 +15,7 @@ | |||
15 | 15 | ||
16 | #include <linux/i2c-omap.h> | 16 | #include <linux/i2c-omap.h> |
17 | #include <linux/platform_data/spi-omap2-mcspi.h> | 17 | #include <linux/platform_data/spi-omap2-mcspi.h> |
18 | 18 | #include <linux/omap-dma.h> | |
19 | #include <plat-omap/dma-omap.h> | ||
20 | #include <plat/dmtimer.h> | 19 | #include <plat/dmtimer.h> |
21 | 20 | ||
22 | #include "omap_hwmod.h" | 21 | #include "omap_hwmod.h" |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index dc768c50e523..6c8fa70ddadd 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
@@ -16,8 +16,7 @@ | |||
16 | #include <linux/i2c-omap.h> | 16 | #include <linux/i2c-omap.h> |
17 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 17 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
18 | #include <linux/platform_data/spi-omap2-mcspi.h> | 18 | #include <linux/platform_data/spi-omap2-mcspi.h> |
19 | 19 | #include <linux/omap-dma.h> | |
20 | #include <plat-omap/dma-omap.h> | ||
21 | #include <plat/dmtimer.h> | 20 | #include <plat/dmtimer.h> |
22 | 21 | ||
23 | #include "omap_hwmod.h" | 22 | #include "omap_hwmod.h" |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c index 05c6a5906550..534974e08add 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c | |||
@@ -10,9 +10,8 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <plat-omap/dma-omap.h> | 13 | #include <linux/dmaengine.h> |
14 | 14 | #include <linux/omap-dma.h> | |
15 | #include "../plat-omap/common.h" | ||
16 | 15 | ||
17 | #include "omap_hwmod.h" | 16 | #include "omap_hwmod.h" |
18 | #include "hdq1w.h" | 17 | #include "hdq1w.h" |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c index a0116d08cf45..e596117004d4 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | |||
@@ -10,7 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/platform_data/gpio-omap.h> | 12 | #include <linux/platform_data/gpio-omap.h> |
13 | #include <plat-omap/dma-omap.h> | 13 | #include <linux/omap-dma.h> |
14 | #include <plat/dmtimer.h> | 14 | #include <plat/dmtimer.h> |
15 | #include <linux/platform_data/spi-omap2-mcspi.h> | 15 | #include <linux/platform_data/spi-omap2-mcspi.h> |
16 | 16 | ||
@@ -58,8 +58,9 @@ static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = { | |||
58 | .syss_offs = 0x0014, | 58 | .syss_offs = 0x0014, |
59 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | | 59 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | |
60 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | | 60 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | |
61 | SYSC_HAS_AUTOIDLE), | 61 | SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), |
62 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | 62 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), |
63 | .clockact = CLOCKACT_TEST_ICLK, | ||
63 | .sysc_fields = &omap_hwmod_sysc_type1, | 64 | .sysc_fields = &omap_hwmod_sysc_type1, |
64 | }; | 65 | }; |
65 | 66 | ||
@@ -268,6 +269,7 @@ struct omap_hwmod omap2xxx_timer1_hwmod = { | |||
268 | }, | 269 | }, |
269 | .dev_attr = &capability_alwon_dev_attr, | 270 | .dev_attr = &capability_alwon_dev_attr, |
270 | .class = &omap2xxx_timer_hwmod_class, | 271 | .class = &omap2xxx_timer_hwmod_class, |
272 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
271 | }; | 273 | }; |
272 | 274 | ||
273 | /* timer2 */ | 275 | /* timer2 */ |
@@ -286,6 +288,7 @@ struct omap_hwmod omap2xxx_timer2_hwmod = { | |||
286 | }, | 288 | }, |
287 | }, | 289 | }, |
288 | .class = &omap2xxx_timer_hwmod_class, | 290 | .class = &omap2xxx_timer_hwmod_class, |
291 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
289 | }; | 292 | }; |
290 | 293 | ||
291 | /* timer3 */ | 294 | /* timer3 */ |
@@ -304,6 +307,7 @@ struct omap_hwmod omap2xxx_timer3_hwmod = { | |||
304 | }, | 307 | }, |
305 | }, | 308 | }, |
306 | .class = &omap2xxx_timer_hwmod_class, | 309 | .class = &omap2xxx_timer_hwmod_class, |
310 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
307 | }; | 311 | }; |
308 | 312 | ||
309 | /* timer4 */ | 313 | /* timer4 */ |
@@ -322,6 +326,7 @@ struct omap_hwmod omap2xxx_timer4_hwmod = { | |||
322 | }, | 326 | }, |
323 | }, | 327 | }, |
324 | .class = &omap2xxx_timer_hwmod_class, | 328 | .class = &omap2xxx_timer_hwmod_class, |
329 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
325 | }; | 330 | }; |
326 | 331 | ||
327 | /* timer5 */ | 332 | /* timer5 */ |
@@ -341,6 +346,7 @@ struct omap_hwmod omap2xxx_timer5_hwmod = { | |||
341 | }, | 346 | }, |
342 | .dev_attr = &capability_dsp_dev_attr, | 347 | .dev_attr = &capability_dsp_dev_attr, |
343 | .class = &omap2xxx_timer_hwmod_class, | 348 | .class = &omap2xxx_timer_hwmod_class, |
349 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
344 | }; | 350 | }; |
345 | 351 | ||
346 | /* timer6 */ | 352 | /* timer6 */ |
@@ -360,6 +366,7 @@ struct omap_hwmod omap2xxx_timer6_hwmod = { | |||
360 | }, | 366 | }, |
361 | .dev_attr = &capability_dsp_dev_attr, | 367 | .dev_attr = &capability_dsp_dev_attr, |
362 | .class = &omap2xxx_timer_hwmod_class, | 368 | .class = &omap2xxx_timer_hwmod_class, |
369 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
363 | }; | 370 | }; |
364 | 371 | ||
365 | /* timer7 */ | 372 | /* timer7 */ |
@@ -379,6 +386,7 @@ struct omap_hwmod omap2xxx_timer7_hwmod = { | |||
379 | }, | 386 | }, |
380 | .dev_attr = &capability_dsp_dev_attr, | 387 | .dev_attr = &capability_dsp_dev_attr, |
381 | .class = &omap2xxx_timer_hwmod_class, | 388 | .class = &omap2xxx_timer_hwmod_class, |
389 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
382 | }; | 390 | }; |
383 | 391 | ||
384 | /* timer8 */ | 392 | /* timer8 */ |
@@ -398,6 +406,7 @@ struct omap_hwmod omap2xxx_timer8_hwmod = { | |||
398 | }, | 406 | }, |
399 | .dev_attr = &capability_dsp_dev_attr, | 407 | .dev_attr = &capability_dsp_dev_attr, |
400 | .class = &omap2xxx_timer_hwmod_class, | 408 | .class = &omap2xxx_timer_hwmod_class, |
409 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
401 | }; | 410 | }; |
402 | 411 | ||
403 | /* timer9 */ | 412 | /* timer9 */ |
@@ -417,6 +426,7 @@ struct omap_hwmod omap2xxx_timer9_hwmod = { | |||
417 | }, | 426 | }, |
418 | .dev_attr = &capability_pwm_dev_attr, | 427 | .dev_attr = &capability_pwm_dev_attr, |
419 | .class = &omap2xxx_timer_hwmod_class, | 428 | .class = &omap2xxx_timer_hwmod_class, |
429 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
420 | }; | 430 | }; |
421 | 431 | ||
422 | /* timer10 */ | 432 | /* timer10 */ |
@@ -436,6 +446,7 @@ struct omap_hwmod omap2xxx_timer10_hwmod = { | |||
436 | }, | 446 | }, |
437 | .dev_attr = &capability_pwm_dev_attr, | 447 | .dev_attr = &capability_pwm_dev_attr, |
438 | .class = &omap2xxx_timer_hwmod_class, | 448 | .class = &omap2xxx_timer_hwmod_class, |
449 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
439 | }; | 450 | }; |
440 | 451 | ||
441 | /* timer11 */ | 452 | /* timer11 */ |
@@ -455,6 +466,7 @@ struct omap_hwmod omap2xxx_timer11_hwmod = { | |||
455 | }, | 466 | }, |
456 | .dev_attr = &capability_pwm_dev_attr, | 467 | .dev_attr = &capability_pwm_dev_attr, |
457 | .class = &omap2xxx_timer_hwmod_class, | 468 | .class = &omap2xxx_timer_hwmod_class, |
469 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
458 | }; | 470 | }; |
459 | 471 | ||
460 | /* timer12 */ | 472 | /* timer12 */ |
@@ -474,6 +486,7 @@ struct omap_hwmod omap2xxx_timer12_hwmod = { | |||
474 | }, | 486 | }, |
475 | .dev_attr = &capability_pwm_dev_attr, | 487 | .dev_attr = &capability_pwm_dev_attr, |
476 | .class = &omap2xxx_timer_hwmod_class, | 488 | .class = &omap2xxx_timer_hwmod_class, |
489 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
477 | }; | 490 | }; |
478 | 491 | ||
479 | /* wd_timer2 */ | 492 | /* wd_timer2 */ |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index abe66ced903f..0f10919f227f 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/power/smartreflex.h> | 19 | #include <linux/power/smartreflex.h> |
20 | #include <linux/platform_data/gpio-omap.h> | 20 | #include <linux/platform_data/gpio-omap.h> |
21 | 21 | ||
22 | #include <plat-omap/dma-omap.h> | 22 | #include <linux/omap-dma.h> |
23 | #include "l3_3xxx.h" | 23 | #include "l3_3xxx.h" |
24 | #include "l4_3xxx.h" | 24 | #include "l4_3xxx.h" |
25 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 25 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
@@ -153,29 +153,16 @@ static struct omap_hwmod omap3xxx_debugss_hwmod = { | |||
153 | }; | 153 | }; |
154 | 154 | ||
155 | /* timer class */ | 155 | /* timer class */ |
156 | static struct omap_hwmod_class_sysconfig omap3xxx_timer_1ms_sysc = { | ||
157 | .rev_offs = 0x0000, | ||
158 | .sysc_offs = 0x0010, | ||
159 | .syss_offs = 0x0014, | ||
160 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | | ||
161 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | | ||
162 | SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE), | ||
163 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
164 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
165 | }; | ||
166 | |||
167 | static struct omap_hwmod_class omap3xxx_timer_1ms_hwmod_class = { | ||
168 | .name = "timer", | ||
169 | .sysc = &omap3xxx_timer_1ms_sysc, | ||
170 | }; | ||
171 | |||
172 | static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = { | 156 | static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = { |
173 | .rev_offs = 0x0000, | 157 | .rev_offs = 0x0000, |
174 | .sysc_offs = 0x0010, | 158 | .sysc_offs = 0x0010, |
175 | .syss_offs = 0x0014, | 159 | .syss_offs = 0x0014, |
176 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP | | 160 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | |
177 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | 161 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | |
162 | SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE | | ||
163 | SYSS_HAS_RESET_STATUS), | ||
178 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | 164 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), |
165 | .clockact = CLOCKACT_TEST_ICLK, | ||
179 | .sysc_fields = &omap_hwmod_sysc_type1, | 166 | .sysc_fields = &omap_hwmod_sysc_type1, |
180 | }; | 167 | }; |
181 | 168 | ||
@@ -224,7 +211,8 @@ static struct omap_hwmod omap3xxx_timer1_hwmod = { | |||
224 | }, | 211 | }, |
225 | }, | 212 | }, |
226 | .dev_attr = &capability_alwon_dev_attr, | 213 | .dev_attr = &capability_alwon_dev_attr, |
227 | .class = &omap3xxx_timer_1ms_hwmod_class, | 214 | .class = &omap3xxx_timer_hwmod_class, |
215 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
228 | }; | 216 | }; |
229 | 217 | ||
230 | /* timer2 */ | 218 | /* timer2 */ |
@@ -241,7 +229,8 @@ static struct omap_hwmod omap3xxx_timer2_hwmod = { | |||
241 | .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT, | 229 | .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT, |
242 | }, | 230 | }, |
243 | }, | 231 | }, |
244 | .class = &omap3xxx_timer_1ms_hwmod_class, | 232 | .class = &omap3xxx_timer_hwmod_class, |
233 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
245 | }; | 234 | }; |
246 | 235 | ||
247 | /* timer3 */ | 236 | /* timer3 */ |
@@ -259,6 +248,7 @@ static struct omap_hwmod omap3xxx_timer3_hwmod = { | |||
259 | }, | 248 | }, |
260 | }, | 249 | }, |
261 | .class = &omap3xxx_timer_hwmod_class, | 250 | .class = &omap3xxx_timer_hwmod_class, |
251 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
262 | }; | 252 | }; |
263 | 253 | ||
264 | /* timer4 */ | 254 | /* timer4 */ |
@@ -276,6 +266,7 @@ static struct omap_hwmod omap3xxx_timer4_hwmod = { | |||
276 | }, | 266 | }, |
277 | }, | 267 | }, |
278 | .class = &omap3xxx_timer_hwmod_class, | 268 | .class = &omap3xxx_timer_hwmod_class, |
269 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
279 | }; | 270 | }; |
280 | 271 | ||
281 | /* timer5 */ | 272 | /* timer5 */ |
@@ -294,6 +285,7 @@ static struct omap_hwmod omap3xxx_timer5_hwmod = { | |||
294 | }, | 285 | }, |
295 | .dev_attr = &capability_dsp_dev_attr, | 286 | .dev_attr = &capability_dsp_dev_attr, |
296 | .class = &omap3xxx_timer_hwmod_class, | 287 | .class = &omap3xxx_timer_hwmod_class, |
288 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
297 | }; | 289 | }; |
298 | 290 | ||
299 | /* timer6 */ | 291 | /* timer6 */ |
@@ -312,6 +304,7 @@ static struct omap_hwmod omap3xxx_timer6_hwmod = { | |||
312 | }, | 304 | }, |
313 | .dev_attr = &capability_dsp_dev_attr, | 305 | .dev_attr = &capability_dsp_dev_attr, |
314 | .class = &omap3xxx_timer_hwmod_class, | 306 | .class = &omap3xxx_timer_hwmod_class, |
307 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
315 | }; | 308 | }; |
316 | 309 | ||
317 | /* timer7 */ | 310 | /* timer7 */ |
@@ -330,6 +323,7 @@ static struct omap_hwmod omap3xxx_timer7_hwmod = { | |||
330 | }, | 323 | }, |
331 | .dev_attr = &capability_dsp_dev_attr, | 324 | .dev_attr = &capability_dsp_dev_attr, |
332 | .class = &omap3xxx_timer_hwmod_class, | 325 | .class = &omap3xxx_timer_hwmod_class, |
326 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
333 | }; | 327 | }; |
334 | 328 | ||
335 | /* timer8 */ | 329 | /* timer8 */ |
@@ -348,6 +342,7 @@ static struct omap_hwmod omap3xxx_timer8_hwmod = { | |||
348 | }, | 342 | }, |
349 | .dev_attr = &capability_dsp_pwm_dev_attr, | 343 | .dev_attr = &capability_dsp_pwm_dev_attr, |
350 | .class = &omap3xxx_timer_hwmod_class, | 344 | .class = &omap3xxx_timer_hwmod_class, |
345 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
351 | }; | 346 | }; |
352 | 347 | ||
353 | /* timer9 */ | 348 | /* timer9 */ |
@@ -366,6 +361,7 @@ static struct omap_hwmod omap3xxx_timer9_hwmod = { | |||
366 | }, | 361 | }, |
367 | .dev_attr = &capability_pwm_dev_attr, | 362 | .dev_attr = &capability_pwm_dev_attr, |
368 | .class = &omap3xxx_timer_hwmod_class, | 363 | .class = &omap3xxx_timer_hwmod_class, |
364 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
369 | }; | 365 | }; |
370 | 366 | ||
371 | /* timer10 */ | 367 | /* timer10 */ |
@@ -383,7 +379,8 @@ static struct omap_hwmod omap3xxx_timer10_hwmod = { | |||
383 | }, | 379 | }, |
384 | }, | 380 | }, |
385 | .dev_attr = &capability_pwm_dev_attr, | 381 | .dev_attr = &capability_pwm_dev_attr, |
386 | .class = &omap3xxx_timer_1ms_hwmod_class, | 382 | .class = &omap3xxx_timer_hwmod_class, |
383 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
387 | }; | 384 | }; |
388 | 385 | ||
389 | /* timer11 */ | 386 | /* timer11 */ |
@@ -402,6 +399,7 @@ static struct omap_hwmod omap3xxx_timer11_hwmod = { | |||
402 | }, | 399 | }, |
403 | .dev_attr = &capability_pwm_dev_attr, | 400 | .dev_attr = &capability_pwm_dev_attr, |
404 | .class = &omap3xxx_timer_hwmod_class, | 401 | .class = &omap3xxx_timer_hwmod_class, |
402 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
405 | }; | 403 | }; |
406 | 404 | ||
407 | /* timer12 */ | 405 | /* timer12 */ |
@@ -425,6 +423,7 @@ static struct omap_hwmod omap3xxx_timer12_hwmod = { | |||
425 | }, | 423 | }, |
426 | .dev_attr = &capability_secure_dev_attr, | 424 | .dev_attr = &capability_secure_dev_attr, |
427 | .class = &omap3xxx_timer_hwmod_class, | 425 | .class = &omap3xxx_timer_hwmod_class, |
426 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
428 | }; | 427 | }; |
429 | 428 | ||
430 | /* | 429 | /* |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index d6700d3ddd04..ce1661d18e56 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -24,15 +24,14 @@ | |||
24 | #include <linux/platform_data/omap_ocp2scp.h> | 24 | #include <linux/platform_data/omap_ocp2scp.h> |
25 | #include <linux/i2c-omap.h> | 25 | #include <linux/i2c-omap.h> |
26 | 26 | ||
27 | #include <plat-omap/dma-omap.h> | 27 | #include <linux/omap-dma.h> |
28 | 28 | ||
29 | #include <linux/platform_data/omap_ocp2scp.h> | ||
29 | #include <linux/platform_data/spi-omap2-mcspi.h> | 30 | #include <linux/platform_data/spi-omap2-mcspi.h> |
30 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 31 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
31 | #include <plat/dmtimer.h> | 32 | #include <plat/dmtimer.h> |
32 | #include <plat/iommu.h> | 33 | #include <plat/iommu.h> |
33 | 34 | ||
34 | #include "../plat-omap/common.h" | ||
35 | |||
36 | #include "omap_hwmod.h" | 35 | #include "omap_hwmod.h" |
37 | #include "omap_hwmod_common_data.h" | 36 | #include "omap_hwmod_common_data.h" |
38 | #include "cm1_44xx.h" | 37 | #include "cm1_44xx.h" |
@@ -3105,6 +3104,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = { | |||
3105 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | 3104 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | |
3106 | SYSS_HAS_RESET_STATUS), | 3105 | SYSS_HAS_RESET_STATUS), |
3107 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | 3106 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), |
3107 | .clockact = CLOCKACT_TEST_ICLK, | ||
3108 | .sysc_fields = &omap_hwmod_sysc_type1, | 3108 | .sysc_fields = &omap_hwmod_sysc_type1, |
3109 | }; | 3109 | }; |
3110 | 3110 | ||
@@ -3158,6 +3158,7 @@ static struct omap_hwmod omap44xx_timer1_hwmod = { | |||
3158 | .name = "timer1", | 3158 | .name = "timer1", |
3159 | .class = &omap44xx_timer_1ms_hwmod_class, | 3159 | .class = &omap44xx_timer_1ms_hwmod_class, |
3160 | .clkdm_name = "l4_wkup_clkdm", | 3160 | .clkdm_name = "l4_wkup_clkdm", |
3161 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
3161 | .mpu_irqs = omap44xx_timer1_irqs, | 3162 | .mpu_irqs = omap44xx_timer1_irqs, |
3162 | .main_clk = "timer1_fck", | 3163 | .main_clk = "timer1_fck", |
3163 | .prcm = { | 3164 | .prcm = { |
@@ -3180,6 +3181,7 @@ static struct omap_hwmod omap44xx_timer2_hwmod = { | |||
3180 | .name = "timer2", | 3181 | .name = "timer2", |
3181 | .class = &omap44xx_timer_1ms_hwmod_class, | 3182 | .class = &omap44xx_timer_1ms_hwmod_class, |
3182 | .clkdm_name = "l4_per_clkdm", | 3183 | .clkdm_name = "l4_per_clkdm", |
3184 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
3183 | .mpu_irqs = omap44xx_timer2_irqs, | 3185 | .mpu_irqs = omap44xx_timer2_irqs, |
3184 | .main_clk = "timer2_fck", | 3186 | .main_clk = "timer2_fck", |
3185 | .prcm = { | 3187 | .prcm = { |
@@ -3354,6 +3356,7 @@ static struct omap_hwmod omap44xx_timer10_hwmod = { | |||
3354 | .name = "timer10", | 3356 | .name = "timer10", |
3355 | .class = &omap44xx_timer_1ms_hwmod_class, | 3357 | .class = &omap44xx_timer_1ms_hwmod_class, |
3356 | .clkdm_name = "l4_per_clkdm", | 3358 | .clkdm_name = "l4_per_clkdm", |
3359 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | ||
3357 | .mpu_irqs = omap44xx_timer10_irqs, | 3360 | .mpu_irqs = omap44xx_timer10_irqs, |
3358 | .main_clk = "timer10_fck", | 3361 | .main_clk = "timer10_fck", |
3359 | .prcm = { | 3362 | .prcm = { |
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 3cf4fdfd7ab0..e2c291f52f92 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include "clock.h" | 30 | #include "clock.h" |
31 | #include "powerdomain.h" | 31 | #include "powerdomain.h" |
32 | #include "clockdomain.h" | 32 | #include "clockdomain.h" |
33 | #include <plat/dmtimer.h> | ||
34 | #include "omap-pm.h" | 33 | #include "omap-pm.h" |
35 | 34 | ||
36 | #include "soc.h" | 35 | #include "soc.h" |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index 3d35bd64487c..c333fa6dffa8 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -31,14 +31,14 @@ | |||
31 | #include <linux/gpio.h> | 31 | #include <linux/gpio.h> |
32 | #include <linux/platform_data/gpio-omap.h> | 32 | #include <linux/platform_data/gpio-omap.h> |
33 | 33 | ||
34 | #include <asm/fncpy.h> | ||
35 | |||
34 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
35 | #include <asm/mach/irq.h> | 37 | #include <asm/mach/irq.h> |
36 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
37 | #include <asm/system_misc.h> | 39 | #include <asm/system_misc.h> |
38 | 40 | ||
39 | #include <plat-omap/dma-omap.h> | 41 | #include <linux/omap-dma.h> |
40 | |||
41 | #include "../plat-omap/sram.h" | ||
42 | 42 | ||
43 | #include "soc.h" | 43 | #include "soc.h" |
44 | #include "common.h" | 44 | #include "common.h" |
@@ -48,6 +48,7 @@ | |||
48 | #include "cm2xxx.h" | 48 | #include "cm2xxx.h" |
49 | #include "cm-regbits-24xx.h" | 49 | #include "cm-regbits-24xx.h" |
50 | #include "sdrc.h" | 50 | #include "sdrc.h" |
51 | #include "sram.h" | ||
51 | #include "pm.h" | 52 | #include "pm.h" |
52 | #include "control.h" | 53 | #include "control.h" |
53 | #include "powerdomain.h" | 54 | #include "powerdomain.h" |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index a9b8da1629bf..7be3622cfc85 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -28,19 +28,17 @@ | |||
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
30 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
31 | #include <linux/omap-dma.h> | ||
31 | #include <linux/platform_data/gpio-omap.h> | 32 | #include <linux/platform_data/gpio-omap.h> |
32 | 33 | ||
33 | #include <trace/events/power.h> | 34 | #include <trace/events/power.h> |
34 | 35 | ||
36 | #include <asm/fncpy.h> | ||
35 | #include <asm/suspend.h> | 37 | #include <asm/suspend.h> |
36 | #include <asm/system_misc.h> | 38 | #include <asm/system_misc.h> |
37 | 39 | ||
38 | #include "clockdomain.h" | 40 | #include "clockdomain.h" |
39 | #include "powerdomain.h" | 41 | #include "powerdomain.h" |
40 | #include <plat-omap/dma-omap.h> | ||
41 | |||
42 | #include "../plat-omap/sram.h" | ||
43 | |||
44 | #include "soc.h" | 42 | #include "soc.h" |
45 | #include "common.h" | 43 | #include "common.h" |
46 | #include "cm3xxx.h" | 44 | #include "cm3xxx.h" |
@@ -50,6 +48,7 @@ | |||
50 | #include "prm3xxx.h" | 48 | #include "prm3xxx.h" |
51 | #include "pm.h" | 49 | #include "pm.h" |
52 | #include "sdrc.h" | 50 | #include "sdrc.h" |
51 | #include "sram.h" | ||
53 | #include "control.h" | 52 | #include "control.h" |
54 | 53 | ||
55 | /* pm34xx errata defined in pm.h */ | 54 | /* pm34xx errata defined in pm.h */ |
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h index a1a266ce90da..ac25ae6667cf 100644 --- a/arch/arm/mach-omap2/prm.h +++ b/arch/arm/mach-omap2/prm.h | |||
@@ -114,16 +114,25 @@ struct prm_reset_src_map { | |||
114 | 114 | ||
115 | /** | 115 | /** |
116 | * struct prm_ll_data - fn ptrs to per-SoC PRM function implementations | 116 | * struct prm_ll_data - fn ptrs to per-SoC PRM function implementations |
117 | * @read_reset_sources: ptr to the Soc PRM-specific get_reset_source impl | 117 | * @read_reset_sources: ptr to the SoC PRM-specific get_reset_source impl |
118 | * @was_any_context_lost_old: ptr to the SoC PRM context loss test fn | ||
119 | * @clear_context_loss_flags_old: ptr to the SoC PRM context loss flag clear fn | ||
120 | * | ||
121 | * XXX @was_any_context_lost_old and @clear_context_loss_flags_old are | ||
122 | * deprecated. | ||
118 | */ | 123 | */ |
119 | struct prm_ll_data { | 124 | struct prm_ll_data { |
120 | u32 (*read_reset_sources)(void); | 125 | u32 (*read_reset_sources)(void); |
126 | bool (*was_any_context_lost_old)(u8 part, s16 inst, u16 idx); | ||
127 | void (*clear_context_loss_flags_old)(u8 part, s16 inst, u16 idx); | ||
121 | }; | 128 | }; |
122 | 129 | ||
123 | extern int prm_register(struct prm_ll_data *pld); | 130 | extern int prm_register(struct prm_ll_data *pld); |
124 | extern int prm_unregister(struct prm_ll_data *pld); | 131 | extern int prm_unregister(struct prm_ll_data *pld); |
125 | 132 | ||
126 | extern u32 prm_read_reset_sources(void); | 133 | extern u32 prm_read_reset_sources(void); |
134 | extern bool prm_was_any_context_lost_old(u8 part, s16 inst, u16 idx); | ||
135 | extern void prm_clear_context_loss_flags_old(u8 part, s16 inst, u16 idx); | ||
127 | 136 | ||
128 | #endif | 137 | #endif |
129 | 138 | ||
diff --git a/arch/arm/mach-omap2/prm2xxx.c b/arch/arm/mach-omap2/prm2xxx.c index bf24fc47603b..faeab18696df 100644 --- a/arch/arm/mach-omap2/prm2xxx.c +++ b/arch/arm/mach-omap2/prm2xxx.c | |||
@@ -118,14 +118,13 @@ static struct prm_ll_data omap2xxx_prm_ll_data = { | |||
118 | .read_reset_sources = &omap2xxx_prm_read_reset_sources, | 118 | .read_reset_sources = &omap2xxx_prm_read_reset_sources, |
119 | }; | 119 | }; |
120 | 120 | ||
121 | static int __init omap2xxx_prm_init(void) | 121 | int __init omap2xxx_prm_init(void) |
122 | { | 122 | { |
123 | if (!cpu_is_omap24xx()) | 123 | if (!cpu_is_omap24xx()) |
124 | return 0; | 124 | return 0; |
125 | 125 | ||
126 | return prm_register(&omap2xxx_prm_ll_data); | 126 | return prm_register(&omap2xxx_prm_ll_data); |
127 | } | 127 | } |
128 | subsys_initcall(omap2xxx_prm_init); | ||
129 | 128 | ||
130 | static void __exit omap2xxx_prm_exit(void) | 129 | static void __exit omap2xxx_prm_exit(void) |
131 | { | 130 | { |
diff --git a/arch/arm/mach-omap2/prm2xxx.h b/arch/arm/mach-omap2/prm2xxx.h index fe8a14f190ab..3194dd87e0e4 100644 --- a/arch/arm/mach-omap2/prm2xxx.h +++ b/arch/arm/mach-omap2/prm2xxx.h | |||
@@ -126,8 +126,7 @@ extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm); | |||
126 | 126 | ||
127 | extern void omap2xxx_prm_dpll_reset(void); | 127 | extern void omap2xxx_prm_dpll_reset(void); |
128 | 128 | ||
129 | extern int __init prm2xxx_init(void); | 129 | extern int __init omap2xxx_prm_init(void); |
130 | extern int __exit prm2xxx_exit(void); | ||
131 | 130 | ||
132 | #endif | 131 | #endif |
133 | 132 | ||
diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c index 53ec9cbaa3d3..1ac73883f891 100644 --- a/arch/arm/mach-omap2/prm33xx.c +++ b/arch/arm/mach-omap2/prm33xx.c | |||
@@ -19,8 +19,6 @@ | |||
19 | #include <linux/err.h> | 19 | #include <linux/err.h> |
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | 21 | ||
22 | #include "../plat-omap/common.h" | ||
23 | |||
24 | #include "common.h" | 22 | #include "common.h" |
25 | #include "powerdomain.h" | 23 | #include "powerdomain.h" |
26 | #include "prm33xx.h" | 24 | #include "prm33xx.h" |
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c index b86116cf0db9..db198d058584 100644 --- a/arch/arm/mach-omap2/prm3xxx.c +++ b/arch/arm/mach-omap2/prm3xxx.c | |||
@@ -383,27 +383,30 @@ static struct prm_ll_data omap3xxx_prm_ll_data = { | |||
383 | .read_reset_sources = &omap3xxx_prm_read_reset_sources, | 383 | .read_reset_sources = &omap3xxx_prm_read_reset_sources, |
384 | }; | 384 | }; |
385 | 385 | ||
386 | static int __init omap3xxx_prm_init(void) | 386 | int __init omap3xxx_prm_init(void) |
387 | { | ||
388 | if (!cpu_is_omap34xx()) | ||
389 | return 0; | ||
390 | |||
391 | return prm_register(&omap3xxx_prm_ll_data); | ||
392 | } | ||
393 | |||
394 | static int __init omap3xxx_prm_late_init(void) | ||
387 | { | 395 | { |
388 | int ret; | 396 | int ret; |
389 | 397 | ||
390 | if (!cpu_is_omap34xx()) | 398 | if (!cpu_is_omap34xx()) |
391 | return 0; | 399 | return 0; |
392 | 400 | ||
393 | ret = prm_register(&omap3xxx_prm_ll_data); | ||
394 | if (ret) | ||
395 | return ret; | ||
396 | |||
397 | omap3xxx_prm_enable_io_wakeup(); | 401 | omap3xxx_prm_enable_io_wakeup(); |
398 | ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup); | 402 | ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup); |
399 | if (!ret) | 403 | if (!ret) |
400 | irq_set_status_flags(omap_prcm_event_to_irq("io"), | 404 | irq_set_status_flags(omap_prcm_event_to_irq("io"), |
401 | IRQ_NOAUTOEN); | 405 | IRQ_NOAUTOEN); |
402 | 406 | ||
403 | |||
404 | return ret; | 407 | return ret; |
405 | } | 408 | } |
406 | subsys_initcall(omap3xxx_prm_init); | 409 | subsys_initcall(omap3xxx_prm_late_init); |
407 | 410 | ||
408 | static void __exit omap3xxx_prm_exit(void) | 411 | static void __exit omap3xxx_prm_exit(void) |
409 | { | 412 | { |
diff --git a/arch/arm/mach-omap2/prm3xxx.h b/arch/arm/mach-omap2/prm3xxx.h index 10cd41a8129e..277f71794e61 100644 --- a/arch/arm/mach-omap2/prm3xxx.h +++ b/arch/arm/mach-omap2/prm3xxx.h | |||
@@ -154,6 +154,7 @@ extern void omap3xxx_prm_restore_irqen(u32 *saved_mask); | |||
154 | 154 | ||
155 | extern void omap3xxx_prm_dpll3_reset(void); | 155 | extern void omap3xxx_prm_dpll3_reset(void); |
156 | 156 | ||
157 | extern int __init omap3xxx_prm_init(void); | ||
157 | extern u32 omap3xxx_prm_get_reset_sources(void); | 158 | extern u32 omap3xxx_prm_get_reset_sources(void); |
158 | 159 | ||
159 | #endif /* __ASSEMBLER */ | 160 | #endif /* __ASSEMBLER */ |
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c index 6d3467af205d..7498bc77fe8b 100644 --- a/arch/arm/mach-omap2/prm44xx.c +++ b/arch/arm/mach-omap2/prm44xx.c | |||
@@ -346,6 +346,37 @@ static u32 omap44xx_prm_read_reset_sources(void) | |||
346 | return r; | 346 | return r; |
347 | } | 347 | } |
348 | 348 | ||
349 | /** | ||
350 | * omap44xx_prm_was_any_context_lost_old - was module hardware context lost? | ||
351 | * @part: PRM partition ID (e.g., OMAP4430_PRM_PARTITION) | ||
352 | * @inst: PRM instance offset (e.g., OMAP4430_PRM_MPU_INST) | ||
353 | * @idx: CONTEXT register offset | ||
354 | * | ||
355 | * Return 1 if any bits were set in the *_CONTEXT_* register | ||
356 | * identified by (@part, @inst, @idx), which means that some context | ||
357 | * was lost for that module; otherwise, return 0. | ||
358 | */ | ||
359 | static bool omap44xx_prm_was_any_context_lost_old(u8 part, s16 inst, u16 idx) | ||
360 | { | ||
361 | return (omap4_prminst_read_inst_reg(part, inst, idx)) ? 1 : 0; | ||
362 | } | ||
363 | |||
364 | /** | ||
365 | * omap44xx_prm_clear_context_lost_flags_old - clear context loss flags | ||
366 | * @part: PRM partition ID (e.g., OMAP4430_PRM_PARTITION) | ||
367 | * @inst: PRM instance offset (e.g., OMAP4430_PRM_MPU_INST) | ||
368 | * @idx: CONTEXT register offset | ||
369 | * | ||
370 | * Clear hardware context loss bits for the module identified by | ||
371 | * (@part, @inst, @idx). No return value. XXX Writes to reserved bits; | ||
372 | * is there a way to avoid this? | ||
373 | */ | ||
374 | static void omap44xx_prm_clear_context_loss_flags_old(u8 part, s16 inst, | ||
375 | u16 idx) | ||
376 | { | ||
377 | omap4_prminst_write_inst_reg(0xffffffff, part, inst, idx); | ||
378 | } | ||
379 | |||
349 | /* Powerdomain low-level functions */ | 380 | /* Powerdomain low-level functions */ |
350 | 381 | ||
351 | static int omap4_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | 382 | static int omap4_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) |
@@ -613,24 +644,28 @@ struct pwrdm_ops omap4_pwrdm_operations = { | |||
613 | */ | 644 | */ |
614 | static struct prm_ll_data omap44xx_prm_ll_data = { | 645 | static struct prm_ll_data omap44xx_prm_ll_data = { |
615 | .read_reset_sources = &omap44xx_prm_read_reset_sources, | 646 | .read_reset_sources = &omap44xx_prm_read_reset_sources, |
647 | .was_any_context_lost_old = &omap44xx_prm_was_any_context_lost_old, | ||
648 | .clear_context_loss_flags_old = &omap44xx_prm_clear_context_loss_flags_old, | ||
616 | }; | 649 | }; |
617 | 650 | ||
618 | static int __init omap44xx_prm_init(void) | 651 | int __init omap44xx_prm_init(void) |
619 | { | 652 | { |
620 | int ret; | ||
621 | |||
622 | if (!cpu_is_omap44xx()) | 653 | if (!cpu_is_omap44xx()) |
623 | return 0; | 654 | return 0; |
624 | 655 | ||
625 | ret = prm_register(&omap44xx_prm_ll_data); | 656 | return prm_register(&omap44xx_prm_ll_data); |
626 | if (ret) | 657 | } |
627 | return ret; | 658 | |
659 | static int __init omap44xx_prm_late_init(void) | ||
660 | { | ||
661 | if (!cpu_is_omap44xx()) | ||
662 | return 0; | ||
628 | 663 | ||
629 | omap44xx_prm_enable_io_wakeup(); | 664 | omap44xx_prm_enable_io_wakeup(); |
630 | 665 | ||
631 | return omap_prcm_register_chain_handler(&omap4_prcm_irq_setup); | 666 | return omap_prcm_register_chain_handler(&omap4_prcm_irq_setup); |
632 | } | 667 | } |
633 | subsys_initcall(omap44xx_prm_init); | 668 | subsys_initcall(omap44xx_prm_late_init); |
634 | 669 | ||
635 | static void __exit omap44xx_prm_exit(void) | 670 | static void __exit omap44xx_prm_exit(void) |
636 | { | 671 | { |
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h index c8e1accdc90e..22b0979206ca 100644 --- a/arch/arm/mach-omap2/prm44xx.h +++ b/arch/arm/mach-omap2/prm44xx.h | |||
@@ -771,6 +771,7 @@ extern void omap44xx_prm_ocp_barrier(void); | |||
771 | extern void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask); | 771 | extern void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask); |
772 | extern void omap44xx_prm_restore_irqen(u32 *saved_mask); | 772 | extern void omap44xx_prm_restore_irqen(u32 *saved_mask); |
773 | 773 | ||
774 | extern int __init omap44xx_prm_init(void); | ||
774 | extern u32 omap44xx_prm_get_reset_sources(void); | 775 | extern u32 omap44xx_prm_get_reset_sources(void); |
775 | 776 | ||
776 | # endif | 777 | # endif |
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c index d2e0798a4c82..228b850e632f 100644 --- a/arch/arm/mach-omap2/prm_common.c +++ b/arch/arm/mach-omap2/prm_common.c | |||
@@ -24,8 +24,6 @@ | |||
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | 26 | ||
27 | #include "../plat-omap/common.h" | ||
28 | |||
29 | #include "prm2xxx_3xxx.h" | 27 | #include "prm2xxx_3xxx.h" |
30 | #include "prm2xxx.h" | 28 | #include "prm2xxx.h" |
31 | #include "prm3xxx.h" | 29 | #include "prm3xxx.h" |
@@ -367,6 +365,51 @@ u32 prm_read_reset_sources(void) | |||
367 | } | 365 | } |
368 | 366 | ||
369 | /** | 367 | /** |
368 | * prm_was_any_context_lost_old - was device context lost? (old API) | ||
369 | * @part: PRM partition ID (e.g., OMAP4430_PRM_PARTITION) | ||
370 | * @inst: PRM instance offset (e.g., OMAP4430_PRM_MPU_INST) | ||
371 | * @idx: CONTEXT register offset | ||
372 | * | ||
373 | * Return 1 if any bits were set in the *_CONTEXT_* register | ||
374 | * identified by (@part, @inst, @idx), which means that some context | ||
375 | * was lost for that module; otherwise, return 0. XXX Deprecated; | ||
376 | * callers need to use a less-SoC-dependent way to identify hardware | ||
377 | * IP blocks. | ||
378 | */ | ||
379 | bool prm_was_any_context_lost_old(u8 part, s16 inst, u16 idx) | ||
380 | { | ||
381 | bool ret = true; | ||
382 | |||
383 | if (prm_ll_data->was_any_context_lost_old) | ||
384 | ret = prm_ll_data->was_any_context_lost_old(part, inst, idx); | ||
385 | else | ||
386 | WARN_ONCE(1, "prm: %s: no mapping function defined\n", | ||
387 | __func__); | ||
388 | |||
389 | return ret; | ||
390 | } | ||
391 | |||
392 | /** | ||
393 | * prm_clear_context_lost_flags_old - clear context loss flags (old API) | ||
394 | * @part: PRM partition ID (e.g., OMAP4430_PRM_PARTITION) | ||
395 | * @inst: PRM instance offset (e.g., OMAP4430_PRM_MPU_INST) | ||
396 | * @idx: CONTEXT register offset | ||
397 | * | ||
398 | * Clear hardware context loss bits for the module identified by | ||
399 | * (@part, @inst, @idx). No return value. XXX Deprecated; callers | ||
400 | * need to use a less-SoC-dependent way to identify hardware IP | ||
401 | * blocks. | ||
402 | */ | ||
403 | void prm_clear_context_loss_flags_old(u8 part, s16 inst, u16 idx) | ||
404 | { | ||
405 | if (prm_ll_data->clear_context_loss_flags_old) | ||
406 | prm_ll_data->clear_context_loss_flags_old(part, inst, idx); | ||
407 | else | ||
408 | WARN_ONCE(1, "prm: %s: no mapping function defined\n", | ||
409 | __func__); | ||
410 | } | ||
411 | |||
412 | /** | ||
370 | * prm_register - register per-SoC low-level data with the PRM | 413 | * prm_register - register per-SoC low-level data with the PRM |
371 | * @pld: low-level per-SoC OMAP PRM data & function pointers to register | 414 | * @pld: low-level per-SoC OMAP PRM data & function pointers to register |
372 | * | 415 | * |
diff --git a/arch/arm/mach-omap2/sdrc.c b/arch/arm/mach-omap2/sdrc.c index 3ed0d62333c5..dae7e4804a48 100644 --- a/arch/arm/mach-omap2/sdrc.c +++ b/arch/arm/mach-omap2/sdrc.c | |||
@@ -23,8 +23,6 @@ | |||
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | 25 | ||
26 | #include "../plat-omap/sram.h" | ||
27 | |||
28 | #include "common.h" | 26 | #include "common.h" |
29 | #include "clock.h" | 27 | #include "clock.h" |
30 | #include "sdrc.h" | 28 | #include "sdrc.h" |
diff --git a/arch/arm/mach-omap2/sdrc2xxx.c b/arch/arm/mach-omap2/sdrc2xxx.c index 26c1728e09ca..907291714643 100644 --- a/arch/arm/mach-omap2/sdrc2xxx.c +++ b/arch/arm/mach-omap2/sdrc2xxx.c | |||
@@ -24,14 +24,13 @@ | |||
24 | #include <linux/clk.h> | 24 | #include <linux/clk.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | 26 | ||
27 | #include "../plat-omap/sram.h" | ||
28 | |||
29 | #include "soc.h" | 27 | #include "soc.h" |
30 | #include "iomap.h" | 28 | #include "iomap.h" |
31 | #include "common.h" | 29 | #include "common.h" |
32 | #include "prm2xxx.h" | 30 | #include "prm2xxx.h" |
33 | #include "clock.h" | 31 | #include "clock.h" |
34 | #include "sdrc.h" | 32 | #include "sdrc.h" |
33 | #include "sram.h" | ||
35 | 34 | ||
36 | /* Memory timing, DLL mode flags */ | 35 | /* Memory timing, DLL mode flags */ |
37 | #define M_DDR 1 | 36 | #define M_DDR 1 |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index aa30a3c20883..93d102535c85 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -26,9 +26,9 @@ | |||
26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
27 | #include <linux/pm_runtime.h> | 27 | #include <linux/pm_runtime.h> |
28 | #include <linux/console.h> | 28 | #include <linux/console.h> |
29 | #include <linux/omap-dma.h> | ||
29 | 30 | ||
30 | #include <plat/omap-serial.h> | 31 | #include <plat/omap-serial.h> |
31 | #include <plat-omap/dma-omap.h> | ||
32 | 32 | ||
33 | #include "common.h" | 33 | #include "common.h" |
34 | #include "omap_hwmod.h" | 34 | #include "omap_hwmod.h" |
diff --git a/arch/arm/mach-omap2/serial.h b/arch/arm/mach-omap2/serial.h index 6a6806271fcf..c4014f013df0 100644 --- a/arch/arm/mach-omap2/serial.h +++ b/arch/arm/mach-omap2/serial.h | |||
@@ -1,112 +1 @@ | |||
1 | /* | #include <mach/serial.h> | |
2 | * arch/arm/plat-omap/include/mach/serial.h | ||
3 | * | ||
4 | * Copyright (C) 2009 Texas Instruments | ||
5 | * Added OMAP4 support- Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_SERIAL_H | ||
14 | #define __ASM_ARCH_SERIAL_H | ||
15 | |||
16 | #include <linux/init.h> | ||
17 | |||
18 | /* | ||
19 | * Memory entry used for the DEBUG_LL UART configuration, relative to | ||
20 | * start of RAM. See also uncompress.h and debug-macro.S. | ||
21 | * | ||
22 | * Note that using a memory location for storing the UART configuration | ||
23 | * has at least two limitations: | ||
24 | * | ||
25 | * 1. Kernel uncompress code cannot overlap OMAP_UART_INFO as the | ||
26 | * uncompress code could then partially overwrite itself | ||
27 | * 2. We assume printascii is called at least once before paging_init, | ||
28 | * and addruart has a chance to read OMAP_UART_INFO | ||
29 | */ | ||
30 | #define OMAP_UART_INFO_OFS 0x3ffc | ||
31 | |||
32 | /* OMAP2 serial ports */ | ||
33 | #define OMAP2_UART1_BASE 0x4806a000 | ||
34 | #define OMAP2_UART2_BASE 0x4806c000 | ||
35 | #define OMAP2_UART3_BASE 0x4806e000 | ||
36 | |||
37 | /* OMAP3 serial ports */ | ||
38 | #define OMAP3_UART1_BASE OMAP2_UART1_BASE | ||
39 | #define OMAP3_UART2_BASE OMAP2_UART2_BASE | ||
40 | #define OMAP3_UART3_BASE 0x49020000 | ||
41 | #define OMAP3_UART4_BASE 0x49042000 /* Only on 36xx */ | ||
42 | #define OMAP3_UART4_AM35XX_BASE 0x4809E000 /* Only on AM35xx */ | ||
43 | |||
44 | /* OMAP4 serial ports */ | ||
45 | #define OMAP4_UART1_BASE OMAP2_UART1_BASE | ||
46 | #define OMAP4_UART2_BASE OMAP2_UART2_BASE | ||
47 | #define OMAP4_UART3_BASE 0x48020000 | ||
48 | #define OMAP4_UART4_BASE 0x4806e000 | ||
49 | |||
50 | /* TI81XX serial ports */ | ||
51 | #define TI81XX_UART1_BASE 0x48020000 | ||
52 | #define TI81XX_UART2_BASE 0x48022000 | ||
53 | #define TI81XX_UART3_BASE 0x48024000 | ||
54 | |||
55 | /* AM3505/3517 UART4 */ | ||
56 | #define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */ | ||
57 | |||
58 | /* AM33XX serial port */ | ||
59 | #define AM33XX_UART1_BASE 0x44E09000 | ||
60 | |||
61 | /* OMAP5 serial ports */ | ||
62 | #define OMAP5_UART1_BASE OMAP2_UART1_BASE | ||
63 | #define OMAP5_UART2_BASE OMAP2_UART2_BASE | ||
64 | #define OMAP5_UART3_BASE OMAP4_UART3_BASE | ||
65 | #define OMAP5_UART4_BASE OMAP4_UART4_BASE | ||
66 | #define OMAP5_UART5_BASE 0x48066000 | ||
67 | #define OMAP5_UART6_BASE 0x48068000 | ||
68 | |||
69 | /* External port on Zoom2/3 */ | ||
70 | #define ZOOM_UART_BASE 0x10000000 | ||
71 | #define ZOOM_UART_VIRT 0xfa400000 | ||
72 | |||
73 | #define OMAP_PORT_SHIFT 2 | ||
74 | #define ZOOM_PORT_SHIFT 1 | ||
75 | |||
76 | #define OMAP24XX_BASE_BAUD (48000000/16) | ||
77 | |||
78 | /* | ||
79 | * DEBUG_LL port encoding stored into the UART1 scratchpad register by | ||
80 | * decomp_setup in uncompress.h | ||
81 | */ | ||
82 | #define OMAP2UART1 21 | ||
83 | #define OMAP2UART2 22 | ||
84 | #define OMAP2UART3 23 | ||
85 | #define OMAP3UART1 OMAP2UART1 | ||
86 | #define OMAP3UART2 OMAP2UART2 | ||
87 | #define OMAP3UART3 33 | ||
88 | #define OMAP3UART4 34 /* Only on 36xx */ | ||
89 | #define OMAP4UART1 OMAP2UART1 | ||
90 | #define OMAP4UART2 OMAP2UART2 | ||
91 | #define OMAP4UART3 43 | ||
92 | #define OMAP4UART4 44 | ||
93 | #define TI81XXUART1 81 | ||
94 | #define TI81XXUART2 82 | ||
95 | #define TI81XXUART3 83 | ||
96 | #define AM33XXUART1 84 | ||
97 | #define OMAP5UART3 OMAP4UART3 | ||
98 | #define OMAP5UART4 OMAP4UART4 | ||
99 | #define ZOOM_UART 95 /* Only on zoom2/3 */ | ||
100 | |||
101 | #ifndef __ASSEMBLER__ | ||
102 | |||
103 | struct omap_board_data; | ||
104 | struct omap_uart_port_info; | ||
105 | |||
106 | extern void omap_serial_init(void); | ||
107 | extern void omap_serial_board_init(struct omap_uart_port_info *platform_data); | ||
108 | extern void omap_serial_init_port(struct omap_board_data *bdata, | ||
109 | struct omap_uart_port_info *platform_data); | ||
110 | #endif | ||
111 | |||
112 | #endif | ||
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S index 474dba7263e3..d1dedc8195ed 100644 --- a/arch/arm/mach-omap2/sleep34xx.S +++ b/arch/arm/mach-omap2/sleep34xx.S | |||
@@ -26,13 +26,12 @@ | |||
26 | 26 | ||
27 | #include <asm/assembler.h> | 27 | #include <asm/assembler.h> |
28 | 28 | ||
29 | #include "../plat-omap/sram.h" | ||
30 | |||
31 | #include "omap34xx.h" | 29 | #include "omap34xx.h" |
32 | #include "iomap.h" | 30 | #include "iomap.h" |
33 | #include "cm3xxx.h" | 31 | #include "cm3xxx.h" |
34 | #include "prm3xxx.h" | 32 | #include "prm3xxx.h" |
35 | #include "sdrc.h" | 33 | #include "sdrc.h" |
34 | #include "sram.h" | ||
36 | #include "control.h" | 35 | #include "control.h" |
37 | 36 | ||
38 | /* | 37 | /* |
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h index 070096496e20..f31d90774de0 100644 --- a/arch/arm/mach-omap2/soc.h +++ b/arch/arm/mach-omap2/soc.h | |||
@@ -435,9 +435,7 @@ extern u32 omap_features; | |||
435 | #define OMAP3_HAS_IO_WAKEUP BIT(6) | 435 | #define OMAP3_HAS_IO_WAKEUP BIT(6) |
436 | #define OMAP3_HAS_SDRC BIT(7) | 436 | #define OMAP3_HAS_SDRC BIT(7) |
437 | #define OMAP3_HAS_IO_CHAIN_CTRL BIT(8) | 437 | #define OMAP3_HAS_IO_CHAIN_CTRL BIT(8) |
438 | #define OMAP4_HAS_MPU_1GHZ BIT(9) | 438 | #define OMAP4_HAS_PERF_SILICON BIT(9) |
439 | #define OMAP4_HAS_MPU_1_2GHZ BIT(10) | ||
440 | #define OMAP4_HAS_MPU_1_5GHZ BIT(11) | ||
441 | 439 | ||
442 | 440 | ||
443 | #define OMAP3_HAS_FEATURE(feat,flag) \ | 441 | #define OMAP3_HAS_FEATURE(feat,flag) \ |
@@ -465,9 +463,7 @@ static inline unsigned int omap4_has_ ##feat(void) \ | |||
465 | return omap_features & OMAP4_HAS_ ##flag; \ | 463 | return omap_features & OMAP4_HAS_ ##flag; \ |
466 | } \ | 464 | } \ |
467 | 465 | ||
468 | OMAP4_HAS_FEATURE(mpu_1ghz, MPU_1GHZ) | 466 | OMAP4_HAS_FEATURE(perf_silicon, PERF_SILICON) |
469 | OMAP4_HAS_FEATURE(mpu_1_2ghz, MPU_1_2GHZ) | ||
470 | OMAP4_HAS_FEATURE(mpu_1_5ghz, MPU_1_5GHZ) | ||
471 | 467 | ||
472 | #endif /* __ASSEMBLY__ */ | 468 | #endif /* __ASSEMBLY__ */ |
473 | 469 | ||
diff --git a/arch/arm/mach-omap2/sram.c b/arch/arm/mach-omap2/sram.c new file mode 100644 index 000000000000..0ff0f068bea8 --- /dev/null +++ b/arch/arm/mach-omap2/sram.c | |||
@@ -0,0 +1,305 @@ | |||
1 | /* | ||
2 | * | ||
3 | * OMAP SRAM detection and management | ||
4 | * | ||
5 | * Copyright (C) 2005 Nokia Corporation | ||
6 | * Written by Tony Lindgren <tony@atomide.com> | ||
7 | * | ||
8 | * Copyright (C) 2009-2012 Texas Instruments | ||
9 | * Added OMAP4/5 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License version 2 as | ||
13 | * published by the Free Software Foundation. | ||
14 | */ | ||
15 | |||
16 | #include <linux/module.h> | ||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/io.h> | ||
20 | |||
21 | #include <asm/fncpy.h> | ||
22 | #include <asm/tlb.h> | ||
23 | #include <asm/cacheflush.h> | ||
24 | |||
25 | #include <asm/mach/map.h> | ||
26 | |||
27 | #include "soc.h" | ||
28 | #include "iomap.h" | ||
29 | #include "prm2xxx_3xxx.h" | ||
30 | #include "sdrc.h" | ||
31 | #include "sram.h" | ||
32 | |||
33 | #define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800) | ||
34 | #define OMAP3_SRAM_PUB_PA (OMAP3_SRAM_PA + 0x8000) | ||
35 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
36 | #define OMAP4_SRAM_PUB_PA OMAP4_SRAM_PA | ||
37 | #else | ||
38 | #define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000) | ||
39 | #endif | ||
40 | #define OMAP5_SRAM_PA 0x40300000 | ||
41 | |||
42 | #define SRAM_BOOTLOADER_SZ 0x00 | ||
43 | |||
44 | #define OMAP24XX_VA_REQINFOPERM0 OMAP2_L3_IO_ADDRESS(0x68005048) | ||
45 | #define OMAP24XX_VA_READPERM0 OMAP2_L3_IO_ADDRESS(0x68005050) | ||
46 | #define OMAP24XX_VA_WRITEPERM0 OMAP2_L3_IO_ADDRESS(0x68005058) | ||
47 | |||
48 | #define OMAP34XX_VA_REQINFOPERM0 OMAP2_L3_IO_ADDRESS(0x68012848) | ||
49 | #define OMAP34XX_VA_READPERM0 OMAP2_L3_IO_ADDRESS(0x68012850) | ||
50 | #define OMAP34XX_VA_WRITEPERM0 OMAP2_L3_IO_ADDRESS(0x68012858) | ||
51 | #define OMAP34XX_VA_ADDR_MATCH2 OMAP2_L3_IO_ADDRESS(0x68012880) | ||
52 | #define OMAP34XX_VA_SMS_RG_ATT0 OMAP2_L3_IO_ADDRESS(0x6C000048) | ||
53 | |||
54 | #define GP_DEVICE 0x300 | ||
55 | |||
56 | #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) | ||
57 | |||
58 | static unsigned long omap_sram_start; | ||
59 | static unsigned long omap_sram_skip; | ||
60 | static unsigned long omap_sram_size; | ||
61 | |||
62 | /* | ||
63 | * Depending on the target RAMFS firewall setup, the public usable amount of | ||
64 | * SRAM varies. The default accessible size for all device types is 2k. A GP | ||
65 | * device allows ARM11 but not other initiators for full size. This | ||
66 | * functionality seems ok until some nice security API happens. | ||
67 | */ | ||
68 | static int is_sram_locked(void) | ||
69 | { | ||
70 | if (OMAP2_DEVICE_TYPE_GP == omap_type()) { | ||
71 | /* RAMFW: R/W access to all initiators for all qualifier sets */ | ||
72 | if (cpu_is_omap242x()) { | ||
73 | __raw_writel(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */ | ||
74 | __raw_writel(0xCFDE, OMAP24XX_VA_READPERM0); /* all i-read */ | ||
75 | __raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */ | ||
76 | } | ||
77 | if (cpu_is_omap34xx()) { | ||
78 | __raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */ | ||
79 | __raw_writel(0xFFFF, OMAP34XX_VA_READPERM0); /* all i-read */ | ||
80 | __raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */ | ||
81 | __raw_writel(0x0, OMAP34XX_VA_ADDR_MATCH2); | ||
82 | __raw_writel(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0); | ||
83 | } | ||
84 | return 0; | ||
85 | } else | ||
86 | return 1; /* assume locked with no PPA or security driver */ | ||
87 | } | ||
88 | |||
89 | /* | ||
90 | * The amount of SRAM depends on the core type. | ||
91 | * Note that we cannot try to test for SRAM here because writes | ||
92 | * to secure SRAM will hang the system. Also the SRAM is not | ||
93 | * yet mapped at this point. | ||
94 | */ | ||
95 | static void __init omap_detect_sram(void) | ||
96 | { | ||
97 | omap_sram_skip = SRAM_BOOTLOADER_SZ; | ||
98 | if (is_sram_locked()) { | ||
99 | if (cpu_is_omap34xx()) { | ||
100 | omap_sram_start = OMAP3_SRAM_PUB_PA; | ||
101 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || | ||
102 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { | ||
103 | omap_sram_size = 0x7000; /* 28K */ | ||
104 | omap_sram_skip += SZ_16K; | ||
105 | } else { | ||
106 | omap_sram_size = 0x8000; /* 32K */ | ||
107 | } | ||
108 | } else if (cpu_is_omap44xx()) { | ||
109 | omap_sram_start = OMAP4_SRAM_PUB_PA; | ||
110 | omap_sram_size = 0xa000; /* 40K */ | ||
111 | } else if (soc_is_omap54xx()) { | ||
112 | omap_sram_start = OMAP5_SRAM_PA; | ||
113 | omap_sram_size = SZ_128K; /* 128KB */ | ||
114 | } else { | ||
115 | omap_sram_start = OMAP2_SRAM_PUB_PA; | ||
116 | omap_sram_size = 0x800; /* 2K */ | ||
117 | } | ||
118 | } else { | ||
119 | if (soc_is_am33xx()) { | ||
120 | omap_sram_start = AM33XX_SRAM_PA; | ||
121 | omap_sram_size = 0x10000; /* 64K */ | ||
122 | } else if (cpu_is_omap34xx()) { | ||
123 | omap_sram_start = OMAP3_SRAM_PA; | ||
124 | omap_sram_size = 0x10000; /* 64K */ | ||
125 | } else if (cpu_is_omap44xx()) { | ||
126 | omap_sram_start = OMAP4_SRAM_PA; | ||
127 | omap_sram_size = 0xe000; /* 56K */ | ||
128 | } else if (soc_is_omap54xx()) { | ||
129 | omap_sram_start = OMAP5_SRAM_PA; | ||
130 | omap_sram_size = SZ_128K; /* 128KB */ | ||
131 | } else { | ||
132 | omap_sram_start = OMAP2_SRAM_PA; | ||
133 | if (cpu_is_omap242x()) | ||
134 | omap_sram_size = 0xa0000; /* 640K */ | ||
135 | else if (cpu_is_omap243x()) | ||
136 | omap_sram_size = 0x10000; /* 64K */ | ||
137 | } | ||
138 | } | ||
139 | } | ||
140 | |||
141 | /* | ||
142 | * Note that we cannot use ioremap for SRAM, as clock init needs SRAM early. | ||
143 | */ | ||
144 | static void __init omap2_map_sram(void) | ||
145 | { | ||
146 | int cached = 1; | ||
147 | |||
148 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
149 | if (cpu_is_omap44xx()) { | ||
150 | omap_sram_start += PAGE_SIZE; | ||
151 | omap_sram_size -= SZ_16K; | ||
152 | } | ||
153 | #endif | ||
154 | if (cpu_is_omap34xx()) { | ||
155 | /* | ||
156 | * SRAM must be marked as non-cached on OMAP3 since the | ||
157 | * CORE DPLL M2 divider change code (in SRAM) runs with the | ||
158 | * SDRAM controller disabled, and if it is marked cached, | ||
159 | * the ARM may attempt to write cache lines back to SDRAM | ||
160 | * which will cause the system to hang. | ||
161 | */ | ||
162 | cached = 0; | ||
163 | } | ||
164 | |||
165 | omap_map_sram(omap_sram_start, omap_sram_size, | ||
166 | omap_sram_skip, cached); | ||
167 | } | ||
168 | |||
169 | static void (*_omap2_sram_ddr_init)(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, | ||
170 | u32 base_cs, u32 force_unlock); | ||
171 | |||
172 | void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, | ||
173 | u32 base_cs, u32 force_unlock) | ||
174 | { | ||
175 | BUG_ON(!_omap2_sram_ddr_init); | ||
176 | _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl, | ||
177 | base_cs, force_unlock); | ||
178 | } | ||
179 | |||
180 | static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val, | ||
181 | u32 mem_type); | ||
182 | |||
183 | void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type) | ||
184 | { | ||
185 | BUG_ON(!_omap2_sram_reprogram_sdrc); | ||
186 | _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type); | ||
187 | } | ||
188 | |||
189 | static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); | ||
190 | |||
191 | u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass) | ||
192 | { | ||
193 | BUG_ON(!_omap2_set_prcm); | ||
194 | return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass); | ||
195 | } | ||
196 | |||
197 | #ifdef CONFIG_SOC_OMAP2420 | ||
198 | static int __init omap242x_sram_init(void) | ||
199 | { | ||
200 | _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init, | ||
201 | omap242x_sram_ddr_init_sz); | ||
202 | |||
203 | _omap2_sram_reprogram_sdrc = omap_sram_push(omap242x_sram_reprogram_sdrc, | ||
204 | omap242x_sram_reprogram_sdrc_sz); | ||
205 | |||
206 | _omap2_set_prcm = omap_sram_push(omap242x_sram_set_prcm, | ||
207 | omap242x_sram_set_prcm_sz); | ||
208 | |||
209 | return 0; | ||
210 | } | ||
211 | #else | ||
212 | static inline int omap242x_sram_init(void) | ||
213 | { | ||
214 | return 0; | ||
215 | } | ||
216 | #endif | ||
217 | |||
218 | #ifdef CONFIG_SOC_OMAP2430 | ||
219 | static int __init omap243x_sram_init(void) | ||
220 | { | ||
221 | _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init, | ||
222 | omap243x_sram_ddr_init_sz); | ||
223 | |||
224 | _omap2_sram_reprogram_sdrc = omap_sram_push(omap243x_sram_reprogram_sdrc, | ||
225 | omap243x_sram_reprogram_sdrc_sz); | ||
226 | |||
227 | _omap2_set_prcm = omap_sram_push(omap243x_sram_set_prcm, | ||
228 | omap243x_sram_set_prcm_sz); | ||
229 | |||
230 | return 0; | ||
231 | } | ||
232 | #else | ||
233 | static inline int omap243x_sram_init(void) | ||
234 | { | ||
235 | return 0; | ||
236 | } | ||
237 | #endif | ||
238 | |||
239 | #ifdef CONFIG_ARCH_OMAP3 | ||
240 | |||
241 | static u32 (*_omap3_sram_configure_core_dpll)( | ||
242 | u32 m2, u32 unlock_dll, u32 f, u32 inc, | ||
243 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, | ||
244 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, | ||
245 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
246 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1); | ||
247 | |||
248 | u32 omap3_configure_core_dpll(u32 m2, u32 unlock_dll, u32 f, u32 inc, | ||
249 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, | ||
250 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, | ||
251 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
252 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1) | ||
253 | { | ||
254 | BUG_ON(!_omap3_sram_configure_core_dpll); | ||
255 | return _omap3_sram_configure_core_dpll( | ||
256 | m2, unlock_dll, f, inc, | ||
257 | sdrc_rfr_ctrl_0, sdrc_actim_ctrl_a_0, | ||
258 | sdrc_actim_ctrl_b_0, sdrc_mr_0, | ||
259 | sdrc_rfr_ctrl_1, sdrc_actim_ctrl_a_1, | ||
260 | sdrc_actim_ctrl_b_1, sdrc_mr_1); | ||
261 | } | ||
262 | |||
263 | void omap3_sram_restore_context(void) | ||
264 | { | ||
265 | omap_sram_reset(); | ||
266 | |||
267 | _omap3_sram_configure_core_dpll = | ||
268 | omap_sram_push(omap3_sram_configure_core_dpll, | ||
269 | omap3_sram_configure_core_dpll_sz); | ||
270 | omap_push_sram_idle(); | ||
271 | } | ||
272 | |||
273 | static inline int omap34xx_sram_init(void) | ||
274 | { | ||
275 | omap3_sram_restore_context(); | ||
276 | return 0; | ||
277 | } | ||
278 | #else | ||
279 | static inline int omap34xx_sram_init(void) | ||
280 | { | ||
281 | return 0; | ||
282 | } | ||
283 | #endif /* CONFIG_ARCH_OMAP3 */ | ||
284 | |||
285 | static inline int am33xx_sram_init(void) | ||
286 | { | ||
287 | return 0; | ||
288 | } | ||
289 | |||
290 | int __init omap_sram_init(void) | ||
291 | { | ||
292 | omap_detect_sram(); | ||
293 | omap2_map_sram(); | ||
294 | |||
295 | if (cpu_is_omap242x()) | ||
296 | omap242x_sram_init(); | ||
297 | else if (cpu_is_omap2430()) | ||
298 | omap243x_sram_init(); | ||
299 | else if (soc_is_am33xx()) | ||
300 | am33xx_sram_init(); | ||
301 | else if (cpu_is_omap34xx()) | ||
302 | omap34xx_sram_init(); | ||
303 | |||
304 | return 0; | ||
305 | } | ||
diff --git a/arch/arm/plat-omap/sram.h b/arch/arm/mach-omap2/sram.h index cefda2e09869..ca7277c2a9ee 100644 --- a/arch/arm/plat-omap/sram.h +++ b/arch/arm/mach-omap2/sram.h | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/plat-omap/include/mach/sram.h | ||
3 | * | ||
4 | * Interface for functions that need to be run in internal SRAM | 2 | * Interface for functions that need to be run in internal SRAM |
5 | * | 3 | * |
6 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
@@ -8,26 +6,8 @@ | |||
8 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
9 | */ | 7 | */ |
10 | 8 | ||
11 | #ifndef __ARCH_ARM_OMAP_SRAM_H | ||
12 | #define __ARCH_ARM_OMAP_SRAM_H | ||
13 | |||
14 | #ifndef __ASSEMBLY__ | 9 | #ifndef __ASSEMBLY__ |
15 | #include <asm/fncpy.h> | 10 | #include <plat/sram.h> |
16 | |||
17 | int __init omap_sram_init(void); | ||
18 | |||
19 | extern void *omap_sram_push_address(unsigned long size); | ||
20 | |||
21 | /* Macro to push a function to the internal SRAM, using the fncpy API */ | ||
22 | #define omap_sram_push(funcp, size) ({ \ | ||
23 | typeof(&(funcp)) _res = NULL; \ | ||
24 | void *_sram_address = omap_sram_push_address(size); \ | ||
25 | if (_sram_address) \ | ||
26 | _res = fncpy(_sram_address, &(funcp), size); \ | ||
27 | _res; \ | ||
28 | }) | ||
29 | |||
30 | extern void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl); | ||
31 | 11 | ||
32 | extern void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, | 12 | extern void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, |
33 | u32 base_cs, u32 force_unlock); | 13 | u32 base_cs, u32 force_unlock); |
@@ -44,9 +24,6 @@ extern u32 omap3_configure_core_dpll( | |||
44 | extern void omap3_sram_restore_context(void); | 24 | extern void omap3_sram_restore_context(void); |
45 | 25 | ||
46 | /* Do not use these */ | 26 | /* Do not use these */ |
47 | extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); | ||
48 | extern unsigned long omap1_sram_reprogram_clock_sz; | ||
49 | |||
50 | extern void omap24xx_sram_reprogram_clock(u32 ckctl, u32 dpllctl); | 27 | extern void omap24xx_sram_reprogram_clock(u32 ckctl, u32 dpllctl); |
51 | extern unsigned long omap24xx_sram_reprogram_clock_sz; | 28 | extern unsigned long omap24xx_sram_reprogram_clock_sz; |
52 | 29 | ||
@@ -104,4 +81,3 @@ static inline void omap_push_sram_idle(void) {} | |||
104 | #define OMAP4_SRAM_PA 0x40300000 | 81 | #define OMAP4_SRAM_PA 0x40300000 |
105 | #endif | 82 | #endif |
106 | #define AM33XX_SRAM_PA 0x40300000 | 83 | #define AM33XX_SRAM_PA 0x40300000 |
107 | #endif | ||
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 565e5755c9bc..b9cff72ceaec 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
@@ -37,6 +37,10 @@ | |||
37 | #include <linux/clockchips.h> | 37 | #include <linux/clockchips.h> |
38 | #include <linux/slab.h> | 38 | #include <linux/slab.h> |
39 | #include <linux/of.h> | 39 | #include <linux/of.h> |
40 | #include <linux/of_address.h> | ||
41 | #include <linux/of_irq.h> | ||
42 | #include <linux/platform_device.h> | ||
43 | #include <linux/platform_data/dmtimer-omap.h> | ||
40 | 44 | ||
41 | #include <asm/mach/time.h> | 45 | #include <asm/mach/time.h> |
42 | #include <asm/smp_twd.h> | 46 | #include <asm/smp_twd.h> |
@@ -45,6 +49,7 @@ | |||
45 | #include <asm/arch_timer.h> | 49 | #include <asm/arch_timer.h> |
46 | #include "omap_hwmod.h" | 50 | #include "omap_hwmod.h" |
47 | #include "omap_device.h" | 51 | #include "omap_device.h" |
52 | #include <plat/counter-32k.h> | ||
48 | #include <plat/dmtimer.h> | 53 | #include <plat/dmtimer.h> |
49 | #include "omap-pm.h" | 54 | #include "omap-pm.h" |
50 | 55 | ||
@@ -61,18 +66,6 @@ | |||
61 | #define OMAP3_32K_SOURCE "omap_32k_fck" | 66 | #define OMAP3_32K_SOURCE "omap_32k_fck" |
62 | #define OMAP4_32K_SOURCE "sys_32k_ck" | 67 | #define OMAP4_32K_SOURCE "sys_32k_ck" |
63 | 68 | ||
64 | #ifdef CONFIG_OMAP_32K_TIMER | ||
65 | #define OMAP2_CLKEV_SOURCE OMAP2_32K_SOURCE | ||
66 | #define OMAP3_CLKEV_SOURCE OMAP3_32K_SOURCE | ||
67 | #define OMAP4_CLKEV_SOURCE OMAP4_32K_SOURCE | ||
68 | #define OMAP3_SECURE_TIMER 12 | ||
69 | #else | ||
70 | #define OMAP2_CLKEV_SOURCE OMAP2_MPU_SOURCE | ||
71 | #define OMAP3_CLKEV_SOURCE OMAP3_MPU_SOURCE | ||
72 | #define OMAP4_CLKEV_SOURCE OMAP4_MPU_SOURCE | ||
73 | #define OMAP3_SECURE_TIMER 1 | ||
74 | #endif | ||
75 | |||
76 | #define REALTIME_COUNTER_BASE 0x48243200 | 69 | #define REALTIME_COUNTER_BASE 0x48243200 |
77 | #define INCREMENTER_NUMERATOR_OFFSET 0x10 | 70 | #define INCREMENTER_NUMERATOR_OFFSET 0x10 |
78 | #define INCREMENTER_DENUMERATOR_RELOAD_OFFSET 0x14 | 71 | #define INCREMENTER_DENUMERATOR_RELOAD_OFFSET 0x14 |
@@ -103,7 +96,7 @@ static int omap2_gp_timer_set_next_event(unsigned long cycles, | |||
103 | struct clock_event_device *evt) | 96 | struct clock_event_device *evt) |
104 | { | 97 | { |
105 | __omap_dm_timer_load_start(&clkev, OMAP_TIMER_CTRL_ST, | 98 | __omap_dm_timer_load_start(&clkev, OMAP_TIMER_CTRL_ST, |
106 | 0xffffffff - cycles, 1); | 99 | 0xffffffff - cycles, OMAP_TIMER_POSTED); |
107 | 100 | ||
108 | return 0; | 101 | return 0; |
109 | } | 102 | } |
@@ -113,7 +106,7 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode, | |||
113 | { | 106 | { |
114 | u32 period; | 107 | u32 period; |
115 | 108 | ||
116 | __omap_dm_timer_stop(&clkev, 1, clkev.rate); | 109 | __omap_dm_timer_stop(&clkev, OMAP_TIMER_POSTED, clkev.rate); |
117 | 110 | ||
118 | switch (mode) { | 111 | switch (mode) { |
119 | case CLOCK_EVT_MODE_PERIODIC: | 112 | case CLOCK_EVT_MODE_PERIODIC: |
@@ -121,10 +114,10 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode, | |||
121 | period -= 1; | 114 | period -= 1; |
122 | /* Looks like we need to first set the load value separately */ | 115 | /* Looks like we need to first set the load value separately */ |
123 | __omap_dm_timer_write(&clkev, OMAP_TIMER_LOAD_REG, | 116 | __omap_dm_timer_write(&clkev, OMAP_TIMER_LOAD_REG, |
124 | 0xffffffff - period, 1); | 117 | 0xffffffff - period, OMAP_TIMER_POSTED); |
125 | __omap_dm_timer_load_start(&clkev, | 118 | __omap_dm_timer_load_start(&clkev, |
126 | OMAP_TIMER_CTRL_AR | OMAP_TIMER_CTRL_ST, | 119 | OMAP_TIMER_CTRL_AR | OMAP_TIMER_CTRL_ST, |
127 | 0xffffffff - period, 1); | 120 | 0xffffffff - period, OMAP_TIMER_POSTED); |
128 | break; | 121 | break; |
129 | case CLOCK_EVT_MODE_ONESHOT: | 122 | case CLOCK_EVT_MODE_ONESHOT: |
130 | break; | 123 | break; |
@@ -144,36 +137,144 @@ static struct clock_event_device clockevent_gpt = { | |||
144 | .set_mode = omap2_gp_timer_set_mode, | 137 | .set_mode = omap2_gp_timer_set_mode, |
145 | }; | 138 | }; |
146 | 139 | ||
140 | static struct property device_disabled = { | ||
141 | .name = "status", | ||
142 | .length = sizeof("disabled"), | ||
143 | .value = "disabled", | ||
144 | }; | ||
145 | |||
146 | static struct of_device_id omap_timer_match[] __initdata = { | ||
147 | { .compatible = "ti,omap2-timer", }, | ||
148 | { } | ||
149 | }; | ||
150 | |||
151 | /** | ||
152 | * omap_get_timer_dt - get a timer using device-tree | ||
153 | * @match - device-tree match structure for matching a device type | ||
154 | * @property - optional timer property to match | ||
155 | * | ||
156 | * Helper function to get a timer during early boot using device-tree for use | ||
157 | * as kernel system timer. Optionally, the property argument can be used to | ||
158 | * select a timer with a specific property. Once a timer is found then mark | ||
159 | * the timer node in device-tree as disabled, to prevent the kernel from | ||
160 | * registering this timer as a platform device and so no one else can use it. | ||
161 | */ | ||
162 | static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, | ||
163 | const char *property) | ||
164 | { | ||
165 | struct device_node *np; | ||
166 | |||
167 | for_each_matching_node(np, match) { | ||
168 | if (!of_device_is_available(np)) { | ||
169 | of_node_put(np); | ||
170 | continue; | ||
171 | } | ||
172 | |||
173 | if (property && !of_get_property(np, property, NULL)) { | ||
174 | of_node_put(np); | ||
175 | continue; | ||
176 | } | ||
177 | |||
178 | prom_add_property(np, &device_disabled); | ||
179 | return np; | ||
180 | } | ||
181 | |||
182 | return NULL; | ||
183 | } | ||
184 | |||
185 | /** | ||
186 | * omap_dmtimer_init - initialisation function when device tree is used | ||
187 | * | ||
188 | * For secure OMAP3 devices, timers with device type "timer-secure" cannot | ||
189 | * be used by the kernel as they are reserved. Therefore, to prevent the | ||
190 | * kernel registering these devices remove them dynamically from the device | ||
191 | * tree on boot. | ||
192 | */ | ||
193 | void __init omap_dmtimer_init(void) | ||
194 | { | ||
195 | struct device_node *np; | ||
196 | |||
197 | if (!cpu_is_omap34xx()) | ||
198 | return; | ||
199 | |||
200 | /* If we are a secure device, remove any secure timer nodes */ | ||
201 | if ((omap_type() != OMAP2_DEVICE_TYPE_GP)) { | ||
202 | np = omap_get_timer_dt(omap_timer_match, "ti,timer-secure"); | ||
203 | if (np) | ||
204 | of_node_put(np); | ||
205 | } | ||
206 | } | ||
207 | |||
208 | /** | ||
209 | * omap_dm_timer_get_errata - get errata flags for a timer | ||
210 | * | ||
211 | * Get the timer errata flags that are specific to the OMAP device being used. | ||
212 | */ | ||
213 | u32 __init omap_dm_timer_get_errata(void) | ||
214 | { | ||
215 | if (cpu_is_omap24xx()) | ||
216 | return 0; | ||
217 | |||
218 | return OMAP_TIMER_ERRATA_I103_I767; | ||
219 | } | ||
220 | |||
147 | static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | 221 | static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, |
148 | int gptimer_id, | 222 | int gptimer_id, |
149 | const char *fck_source) | 223 | const char *fck_source, |
224 | const char *property, | ||
225 | int posted) | ||
150 | { | 226 | { |
151 | char name[10]; /* 10 = sizeof("gptXX_Xck0") */ | 227 | char name[10]; /* 10 = sizeof("gptXX_Xck0") */ |
228 | const char *oh_name; | ||
229 | struct device_node *np; | ||
152 | struct omap_hwmod *oh; | 230 | struct omap_hwmod *oh; |
153 | struct resource irq_rsrc, mem_rsrc; | 231 | struct resource irq, mem; |
154 | size_t size; | 232 | int r = 0; |
155 | int res = 0; | 233 | |
156 | int r; | 234 | if (of_have_populated_dt()) { |
157 | 235 | np = omap_get_timer_dt(omap_timer_match, NULL); | |
158 | sprintf(name, "timer%d", gptimer_id); | 236 | if (!np) |
159 | omap_hwmod_setup_one(name); | 237 | return -ENODEV; |
160 | oh = omap_hwmod_lookup(name); | 238 | |
239 | of_property_read_string_index(np, "ti,hwmods", 0, &oh_name); | ||
240 | if (!oh_name) | ||
241 | return -ENODEV; | ||
242 | |||
243 | timer->irq = irq_of_parse_and_map(np, 0); | ||
244 | if (!timer->irq) | ||
245 | return -ENXIO; | ||
246 | |||
247 | timer->io_base = of_iomap(np, 0); | ||
248 | |||
249 | of_node_put(np); | ||
250 | } else { | ||
251 | if (omap_dm_timer_reserve_systimer(gptimer_id)) | ||
252 | return -ENODEV; | ||
253 | |||
254 | sprintf(name, "timer%d", gptimer_id); | ||
255 | oh_name = name; | ||
256 | } | ||
257 | |||
258 | oh = omap_hwmod_lookup(oh_name); | ||
161 | if (!oh) | 259 | if (!oh) |
162 | return -ENODEV; | 260 | return -ENODEV; |
163 | 261 | ||
164 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, &irq_rsrc); | 262 | if (!of_have_populated_dt()) { |
165 | if (r) | 263 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, |
166 | return -ENXIO; | 264 | &irq); |
167 | timer->irq = irq_rsrc.start; | 265 | if (r) |
266 | return -ENXIO; | ||
267 | timer->irq = irq.start; | ||
168 | 268 | ||
169 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, &mem_rsrc); | 269 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, |
170 | if (r) | 270 | &mem); |
171 | return -ENXIO; | 271 | if (r) |
172 | timer->phys_base = mem_rsrc.start; | 272 | return -ENXIO; |
173 | size = mem_rsrc.end - mem_rsrc.start; | 273 | |
274 | /* Static mapping, never released */ | ||
275 | timer->io_base = ioremap(mem.start, mem.end - mem.start); | ||
276 | } | ||
174 | 277 | ||
175 | /* Static mapping, never released */ | ||
176 | timer->io_base = ioremap(timer->phys_base, size); | ||
177 | if (!timer->io_base) | 278 | if (!timer->io_base) |
178 | return -ENXIO; | 279 | return -ENXIO; |
179 | 280 | ||
@@ -182,42 +283,56 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
182 | if (IS_ERR(timer->fclk)) | 283 | if (IS_ERR(timer->fclk)) |
183 | return -ENODEV; | 284 | return -ENODEV; |
184 | 285 | ||
185 | omap_hwmod_enable(oh); | 286 | /* FIXME: Need to remove hard-coded test on timer ID */ |
186 | |||
187 | if (omap_dm_timer_reserve_systimer(gptimer_id)) | ||
188 | return -ENODEV; | ||
189 | |||
190 | if (gptimer_id != 12) { | 287 | if (gptimer_id != 12) { |
191 | struct clk *src; | 288 | struct clk *src; |
192 | 289 | ||
193 | src = clk_get(NULL, fck_source); | 290 | src = clk_get(NULL, fck_source); |
194 | if (IS_ERR(src)) { | 291 | if (IS_ERR(src)) { |
195 | res = -EINVAL; | 292 | r = -EINVAL; |
196 | } else { | 293 | } else { |
197 | res = __omap_dm_timer_set_source(timer->fclk, src); | 294 | r = clk_set_parent(timer->fclk, src); |
198 | if (IS_ERR_VALUE(res)) | 295 | if (IS_ERR_VALUE(r)) |
199 | pr_warning("%s: timer%i cannot set source\n", | 296 | pr_warn("%s: %s cannot set source\n", |
200 | __func__, gptimer_id); | 297 | __func__, oh->name); |
201 | clk_put(src); | 298 | clk_put(src); |
202 | } | 299 | } |
203 | } | 300 | } |
301 | |||
302 | omap_hwmod_setup_one(oh_name); | ||
303 | omap_hwmod_enable(oh); | ||
204 | __omap_dm_timer_init_regs(timer); | 304 | __omap_dm_timer_init_regs(timer); |
205 | __omap_dm_timer_reset(timer, 1, 1); | ||
206 | timer->posted = 1; | ||
207 | 305 | ||
208 | timer->rate = clk_get_rate(timer->fclk); | 306 | if (posted) |
307 | __omap_dm_timer_enable_posted(timer); | ||
308 | |||
309 | /* Check that the intended posted configuration matches the actual */ | ||
310 | if (posted != timer->posted) | ||
311 | return -EINVAL; | ||
209 | 312 | ||
313 | timer->rate = clk_get_rate(timer->fclk); | ||
210 | timer->reserved = 1; | 314 | timer->reserved = 1; |
211 | 315 | ||
212 | return res; | 316 | return r; |
213 | } | 317 | } |
214 | 318 | ||
215 | static void __init omap2_gp_clockevent_init(int gptimer_id, | 319 | static void __init omap2_gp_clockevent_init(int gptimer_id, |
216 | const char *fck_source) | 320 | const char *fck_source, |
321 | const char *property) | ||
217 | { | 322 | { |
218 | int res; | 323 | int res; |
219 | 324 | ||
220 | res = omap_dm_timer_init_one(&clkev, gptimer_id, fck_source); | 325 | clkev.errata = omap_dm_timer_get_errata(); |
326 | |||
327 | /* | ||
328 | * For clock-event timers we never read the timer counter and | ||
329 | * so we are not impacted by errata i103 and i767. Therefore, | ||
330 | * we can safely ignore this errata for clock-event timers. | ||
331 | */ | ||
332 | __omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767); | ||
333 | |||
334 | res = omap_dm_timer_init_one(&clkev, gptimer_id, fck_source, property, | ||
335 | OMAP_TIMER_POSTED); | ||
221 | BUG_ON(res); | 336 | BUG_ON(res); |
222 | 337 | ||
223 | omap2_gp_timer_irq.dev_id = &clkev; | 338 | omap2_gp_timer_irq.dev_id = &clkev; |
@@ -250,7 +365,8 @@ static bool use_gptimer_clksrc; | |||
250 | */ | 365 | */ |
251 | static cycle_t clocksource_read_cycles(struct clocksource *cs) | 366 | static cycle_t clocksource_read_cycles(struct clocksource *cs) |
252 | { | 367 | { |
253 | return (cycle_t)__omap_dm_timer_read_counter(&clksrc, 1); | 368 | return (cycle_t)__omap_dm_timer_read_counter(&clksrc, |
369 | OMAP_TIMER_NONPOSTED); | ||
254 | } | 370 | } |
255 | 371 | ||
256 | static struct clocksource clocksource_gpt = { | 372 | static struct clocksource clocksource_gpt = { |
@@ -264,21 +380,41 @@ static struct clocksource clocksource_gpt = { | |||
264 | static u32 notrace dmtimer_read_sched_clock(void) | 380 | static u32 notrace dmtimer_read_sched_clock(void) |
265 | { | 381 | { |
266 | if (clksrc.reserved) | 382 | if (clksrc.reserved) |
267 | return __omap_dm_timer_read_counter(&clksrc, 1); | 383 | return __omap_dm_timer_read_counter(&clksrc, |
384 | OMAP_TIMER_NONPOSTED); | ||
268 | 385 | ||
269 | return 0; | 386 | return 0; |
270 | } | 387 | } |
271 | 388 | ||
272 | #ifdef CONFIG_OMAP_32K_TIMER | 389 | static struct of_device_id omap_counter_match[] __initdata = { |
390 | { .compatible = "ti,omap-counter32k", }, | ||
391 | { } | ||
392 | }; | ||
393 | |||
273 | /* Setup free-running counter for clocksource */ | 394 | /* Setup free-running counter for clocksource */ |
274 | static int __init omap2_sync32k_clocksource_init(void) | 395 | static int __init omap2_sync32k_clocksource_init(void) |
275 | { | 396 | { |
276 | int ret; | 397 | int ret; |
398 | struct device_node *np = NULL; | ||
277 | struct omap_hwmod *oh; | 399 | struct omap_hwmod *oh; |
278 | void __iomem *vbase; | 400 | void __iomem *vbase; |
279 | const char *oh_name = "counter_32k"; | 401 | const char *oh_name = "counter_32k"; |
280 | 402 | ||
281 | /* | 403 | /* |
404 | * If device-tree is present, then search the DT blob | ||
405 | * to see if the 32kHz counter is supported. | ||
406 | */ | ||
407 | if (of_have_populated_dt()) { | ||
408 | np = omap_get_timer_dt(omap_counter_match, NULL); | ||
409 | if (!np) | ||
410 | return -ENODEV; | ||
411 | |||
412 | of_property_read_string_index(np, "ti,hwmods", 0, &oh_name); | ||
413 | if (!oh_name) | ||
414 | return -ENODEV; | ||
415 | } | ||
416 | |||
417 | /* | ||
282 | * First check hwmod data is available for sync32k counter | 418 | * First check hwmod data is available for sync32k counter |
283 | */ | 419 | */ |
284 | oh = omap_hwmod_lookup(oh_name); | 420 | oh = omap_hwmod_lookup(oh_name); |
@@ -287,7 +423,13 @@ static int __init omap2_sync32k_clocksource_init(void) | |||
287 | 423 | ||
288 | omap_hwmod_setup_one(oh_name); | 424 | omap_hwmod_setup_one(oh_name); |
289 | 425 | ||
290 | vbase = omap_hwmod_get_mpu_rt_va(oh); | 426 | if (np) { |
427 | vbase = of_iomap(np, 0); | ||
428 | of_node_put(np); | ||
429 | } else { | ||
430 | vbase = omap_hwmod_get_mpu_rt_va(oh); | ||
431 | } | ||
432 | |||
291 | if (!vbase) { | 433 | if (!vbase) { |
292 | pr_warn("%s: failed to get counter_32k resource\n", __func__); | 434 | pr_warn("%s: failed to get counter_32k resource\n", __func__); |
293 | return -ENXIO; | 435 | return -ENXIO; |
@@ -309,23 +451,21 @@ static int __init omap2_sync32k_clocksource_init(void) | |||
309 | 451 | ||
310 | return ret; | 452 | return ret; |
311 | } | 453 | } |
312 | #else | ||
313 | static inline int omap2_sync32k_clocksource_init(void) | ||
314 | { | ||
315 | return -ENODEV; | ||
316 | } | ||
317 | #endif | ||
318 | 454 | ||
319 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, | 455 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, |
320 | const char *fck_source) | 456 | const char *fck_source) |
321 | { | 457 | { |
322 | int res; | 458 | int res; |
323 | 459 | ||
324 | res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source); | 460 | clksrc.errata = omap_dm_timer_get_errata(); |
461 | |||
462 | res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source, NULL, | ||
463 | OMAP_TIMER_NONPOSTED); | ||
325 | BUG_ON(res); | 464 | BUG_ON(res); |
326 | 465 | ||
327 | __omap_dm_timer_load_start(&clksrc, | 466 | __omap_dm_timer_load_start(&clksrc, |
328 | OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1); | 467 | OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, |
468 | OMAP_TIMER_NONPOSTED); | ||
329 | setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); | 469 | setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); |
330 | 470 | ||
331 | if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) | 471 | if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) |
@@ -336,25 +476,6 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id, | |||
336 | gptimer_id, clksrc.rate); | 476 | gptimer_id, clksrc.rate); |
337 | } | 477 | } |
338 | 478 | ||
339 | static void __init omap2_clocksource_init(int gptimer_id, | ||
340 | const char *fck_source) | ||
341 | { | ||
342 | /* | ||
343 | * First give preference to kernel parameter configuration | ||
344 | * by user (clocksource="gp_timer"). | ||
345 | * | ||
346 | * In case of missing kernel parameter for clocksource, | ||
347 | * first check for availability for 32k-sync timer, in case | ||
348 | * of failure in finding 32k_counter module or registering | ||
349 | * it as clocksource, execution will fallback to gp-timer. | ||
350 | */ | ||
351 | if (use_gptimer_clksrc == true) | ||
352 | omap2_gptimer_clocksource_init(gptimer_id, fck_source); | ||
353 | else if (omap2_sync32k_clocksource_init()) | ||
354 | /* Fall back to gp-timer code */ | ||
355 | omap2_gptimer_clocksource_init(gptimer_id, fck_source); | ||
356 | } | ||
357 | |||
358 | #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER | 479 | #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER |
359 | /* | 480 | /* |
360 | * The realtime counter also called master counter, is a free-running | 481 | * The realtime counter also called master counter, is a free-running |
@@ -433,48 +554,65 @@ static inline void __init realtime_counter_init(void) | |||
433 | {} | 554 | {} |
434 | #endif | 555 | #endif |
435 | 556 | ||
436 | #define OMAP_SYS_TIMER_INIT(name, clkev_nr, clkev_src, \ | 557 | #define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ |
558 | clksrc_nr, clksrc_src) \ | ||
559 | static void __init omap##name##_gptimer_timer_init(void) \ | ||
560 | { \ | ||
561 | omap_dmtimer_init(); \ | ||
562 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ | ||
563 | omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src); \ | ||
564 | } | ||
565 | |||
566 | #define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ | ||
437 | clksrc_nr, clksrc_src) \ | 567 | clksrc_nr, clksrc_src) \ |
438 | static void __init omap##name##_timer_init(void) \ | 568 | static void __init omap##name##_sync32k_timer_init(void) \ |
439 | { \ | 569 | { \ |
440 | omap2_gp_clockevent_init((clkev_nr), clkev_src); \ | 570 | omap_dmtimer_init(); \ |
441 | omap2_clocksource_init((clksrc_nr), clksrc_src); \ | 571 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ |
572 | /* Enable the use of clocksource="gp_timer" kernel parameter */ \ | ||
573 | if (use_gptimer_clksrc) \ | ||
574 | omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src);\ | ||
575 | else \ | ||
576 | omap2_sync32k_clocksource_init(); \ | ||
442 | } | 577 | } |
443 | 578 | ||
444 | #define OMAP_SYS_TIMER(name) \ | 579 | #define OMAP_SYS_TIMER(name, clksrc) \ |
445 | struct sys_timer omap##name##_timer = { \ | 580 | struct sys_timer omap##name##_timer = { \ |
446 | .init = omap##name##_timer_init, \ | 581 | .init = omap##name##_##clksrc##_timer_init, \ |
447 | }; | 582 | }; |
448 | 583 | ||
449 | #ifdef CONFIG_ARCH_OMAP2 | 584 | #ifdef CONFIG_ARCH_OMAP2 |
450 | OMAP_SYS_TIMER_INIT(2, 1, OMAP2_CLKEV_SOURCE, 2, OMAP2_MPU_SOURCE) | 585 | OMAP_SYS_32K_TIMER_INIT(2, 1, OMAP2_32K_SOURCE, "ti,timer-alwon", |
451 | OMAP_SYS_TIMER(2) | 586 | 2, OMAP2_MPU_SOURCE); |
452 | #endif | 587 | OMAP_SYS_TIMER(2, sync32k); |
588 | #endif /* CONFIG_ARCH_OMAP2 */ | ||
453 | 589 | ||
454 | #ifdef CONFIG_ARCH_OMAP3 | 590 | #ifdef CONFIG_ARCH_OMAP3 |
455 | OMAP_SYS_TIMER_INIT(3, 1, OMAP3_CLKEV_SOURCE, 2, OMAP3_MPU_SOURCE) | 591 | OMAP_SYS_32K_TIMER_INIT(3, 1, OMAP3_32K_SOURCE, "ti,timer-alwon", |
456 | OMAP_SYS_TIMER(3) | 592 | 2, OMAP3_MPU_SOURCE); |
457 | OMAP_SYS_TIMER_INIT(3_secure, OMAP3_SECURE_TIMER, OMAP3_CLKEV_SOURCE, | 593 | OMAP_SYS_TIMER(3, sync32k); |
458 | 2, OMAP3_MPU_SOURCE) | 594 | OMAP_SYS_32K_TIMER_INIT(3_secure, 12, OMAP3_32K_SOURCE, "ti,timer-secure", |
459 | OMAP_SYS_TIMER(3_secure) | 595 | 2, OMAP3_MPU_SOURCE); |
460 | #endif | 596 | OMAP_SYS_TIMER(3_secure, sync32k); |
597 | OMAP_SYS_GP_TIMER_INIT(3_gp, 1, OMAP3_MPU_SOURCE, "ti,timer-alwon", | ||
598 | 2, OMAP3_MPU_SOURCE); | ||
599 | OMAP_SYS_TIMER(3_gp, gptimer); | ||
600 | #endif /* CONFIG_ARCH_OMAP3 */ | ||
461 | 601 | ||
462 | #ifdef CONFIG_SOC_AM33XX | 602 | #ifdef CONFIG_SOC_AM33XX |
463 | OMAP_SYS_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, 2, OMAP4_MPU_SOURCE) | 603 | OMAP_SYS_GP_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, "ti,timer-alwon", |
464 | OMAP_SYS_TIMER(3_am33xx) | 604 | 2, OMAP4_MPU_SOURCE); |
465 | #endif | 605 | OMAP_SYS_TIMER(3_am33xx, gptimer); |
606 | #endif /* CONFIG_SOC_AM33XX */ | ||
466 | 607 | ||
467 | #ifdef CONFIG_ARCH_OMAP4 | 608 | #ifdef CONFIG_ARCH_OMAP4 |
609 | OMAP_SYS_32K_TIMER_INIT(4, 1, OMAP4_32K_SOURCE, "ti,timer-alwon", | ||
610 | 2, OMAP4_MPU_SOURCE); | ||
468 | #ifdef CONFIG_LOCAL_TIMERS | 611 | #ifdef CONFIG_LOCAL_TIMERS |
469 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, | 612 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29); |
470 | OMAP44XX_LOCAL_TWD_BASE, 29); | 613 | static void __init omap4_local_timer_init(void) |
471 | #endif | ||
472 | |||
473 | static void __init omap4_timer_init(void) | ||
474 | { | 614 | { |
475 | omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE); | 615 | omap4_sync32k_timer_init(); |
476 | omap2_clocksource_init(2, OMAP4_MPU_SOURCE); | ||
477 | #ifdef CONFIG_LOCAL_TIMERS | ||
478 | /* Local timers are not supprted on OMAP4430 ES1.0 */ | 616 | /* Local timers are not supprted on OMAP4430 ES1.0 */ |
479 | if (omap_rev() != OMAP4430_REV_ES1_0) { | 617 | if (omap_rev() != OMAP4430_REV_ES1_0) { |
480 | int err; | 618 | int err; |
@@ -488,26 +626,32 @@ static void __init omap4_timer_init(void) | |||
488 | if (err) | 626 | if (err) |
489 | pr_err("twd_local_timer_register failed %d\n", err); | 627 | pr_err("twd_local_timer_register failed %d\n", err); |
490 | } | 628 | } |
491 | #endif | ||
492 | } | 629 | } |
493 | OMAP_SYS_TIMER(4) | 630 | #else /* CONFIG_LOCAL_TIMERS */ |
494 | #endif | 631 | static inline void omap4_local_timer_init(void) |
632 | { | ||
633 | omap4_sync32_timer_init(); | ||
634 | } | ||
635 | #endif /* CONFIG_LOCAL_TIMERS */ | ||
636 | OMAP_SYS_TIMER(4, local); | ||
637 | #endif /* CONFIG_ARCH_OMAP4 */ | ||
495 | 638 | ||
496 | #ifdef CONFIG_SOC_OMAP5 | 639 | #ifdef CONFIG_SOC_OMAP5 |
497 | static void __init omap5_timer_init(void) | 640 | OMAP_SYS_32K_TIMER_INIT(5, 1, OMAP4_32K_SOURCE, "ti,timer-alwon", |
641 | 2, OMAP4_MPU_SOURCE); | ||
642 | static void __init omap5_realtime_timer_init(void) | ||
498 | { | 643 | { |
499 | int err; | 644 | int err; |
500 | 645 | ||
501 | omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE); | 646 | omap5_sync32k_timer_init(); |
502 | omap2_clocksource_init(2, OMAP4_MPU_SOURCE); | ||
503 | realtime_counter_init(); | 647 | realtime_counter_init(); |
504 | 648 | ||
505 | err = arch_timer_of_register(); | 649 | err = arch_timer_of_register(); |
506 | if (err) | 650 | if (err) |
507 | pr_err("%s: arch_timer_register failed %d\n", __func__, err); | 651 | pr_err("%s: arch_timer_register failed %d\n", __func__, err); |
508 | } | 652 | } |
509 | OMAP_SYS_TIMER(5) | 653 | OMAP_SYS_TIMER(5, realtime); |
510 | #endif | 654 | #endif /* CONFIG_SOC_OMAP5 */ |
511 | 655 | ||
512 | /** | 656 | /** |
513 | * omap_timer_init - build and register timer device with an | 657 | * omap_timer_init - build and register timer device with an |
@@ -559,6 +703,9 @@ static int __init omap_timer_init(struct omap_hwmod *oh, void *unused) | |||
559 | if (timer_dev_attr) | 703 | if (timer_dev_attr) |
560 | pdata->timer_capability = timer_dev_attr->timer_capability; | 704 | pdata->timer_capability = timer_dev_attr->timer_capability; |
561 | 705 | ||
706 | pdata->timer_errata = omap_dm_timer_get_errata(); | ||
707 | pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count; | ||
708 | |||
562 | pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata), | 709 | pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata), |
563 | NULL, 0, 0); | 710 | NULL, 0, 0); |
564 | 711 | ||
@@ -583,6 +730,10 @@ static int __init omap2_dm_timer_init(void) | |||
583 | { | 730 | { |
584 | int ret; | 731 | int ret; |
585 | 732 | ||
733 | /* If dtb is there, the devices will be created dynamically */ | ||
734 | if (of_have_populated_dt()) | ||
735 | return -ENODEV; | ||
736 | |||
586 | ret = omap_hwmod_for_each_by_class("timer", omap_timer_init, NULL); | 737 | ret = omap_hwmod_for_each_by_class("timer", omap_timer_init, NULL); |
587 | if (unlikely(ret)) { | 738 | if (unlikely(ret)) { |
588 | pr_err("%s: device registration failed.\n", __func__); | 739 | pr_err("%s: device registration failed.\n", __func__); |
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 3fa2bdb44106..e49b40b4c90a 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c | |||
@@ -70,6 +70,7 @@ void __init omap4_pmic_init(const char *pmic_type, | |||
70 | { | 70 | { |
71 | /* PMIC part*/ | 71 | /* PMIC part*/ |
72 | omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE); | 72 | omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE); |
73 | omap_mux_init_signal("fref_clk0_out.sys_drm_msecure", OMAP_PIN_OUTPUT); | ||
73 | omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data); | 74 | omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data); |
74 | 75 | ||
75 | /* Register additional devices on i2c1 bus if needed */ | 76 | /* Register additional devices on i2c1 bus if needed */ |
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig index 0673f0c10432..2cb2f06c20f5 100644 --- a/arch/arm/mach-orion5x/Kconfig +++ b/arch/arm/mach-orion5x/Kconfig | |||
@@ -2,6 +2,13 @@ if ARCH_ORION5X | |||
2 | 2 | ||
3 | menu "Orion Implementations" | 3 | menu "Orion Implementations" |
4 | 4 | ||
5 | config ARCH_ORION5X_DT | ||
6 | bool "Marvell Orion5x Flattened Device Tree" | ||
7 | select USE_OF | ||
8 | help | ||
9 | Say 'Y' here if you want your kernel to support the | ||
10 | Marvell Orion5x using flattened device tree. | ||
11 | |||
5 | config MACH_DB88F5281 | 12 | config MACH_DB88F5281 |
6 | bool "Marvell Orion-2 Development Board" | 13 | bool "Marvell Orion-2 Development Board" |
7 | select I2C_BOARDINFO | 14 | select I2C_BOARDINFO |
@@ -96,12 +103,13 @@ config MACH_MV2120 | |||
96 | Say 'Y' here if you want your kernel to support the | 103 | Say 'Y' here if you want your kernel to support the |
97 | HP Media Vault mv2120 or mv5100. | 104 | HP Media Vault mv2120 or mv5100. |
98 | 105 | ||
99 | config MACH_EDMINI_V2 | 106 | config MACH_EDMINI_V2_DT |
100 | bool "LaCie Ethernet Disk mini V2" | 107 | bool "LaCie Ethernet Disk mini V2 (Flattened Device Tree)" |
101 | select I2C_BOARDINFO | 108 | select I2C_BOARDINFO |
109 | select ARCH_ORION5X_DT | ||
102 | help | 110 | help |
103 | Say 'Y' here if you want your kernel to support the | 111 | Say 'Y' here if you want your kernel to support the |
104 | LaCie Ethernet Disk mini V2. | 112 | LaCie Ethernet Disk mini V2 (Flattened Device Tree). |
105 | 113 | ||
106 | config MACH_D2NET | 114 | config MACH_D2NET |
107 | bool "LaCie d2 Network" | 115 | bool "LaCie d2 Network" |
diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile index 7f18cdacd487..9e809a7c05c0 100644 --- a/arch/arm/mach-orion5x/Makefile +++ b/arch/arm/mach-orion5x/Makefile | |||
@@ -12,7 +12,6 @@ obj-$(CONFIG_MACH_TS409) += ts409-setup.o tsx09-common.o | |||
12 | obj-$(CONFIG_MACH_WRT350N_V2) += wrt350n-v2-setup.o | 12 | obj-$(CONFIG_MACH_WRT350N_V2) += wrt350n-v2-setup.o |
13 | obj-$(CONFIG_MACH_TS78XX) += ts78xx-setup.o | 13 | obj-$(CONFIG_MACH_TS78XX) += ts78xx-setup.o |
14 | obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o | 14 | obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o |
15 | obj-$(CONFIG_MACH_EDMINI_V2) += edmini_v2-setup.o | ||
16 | obj-$(CONFIG_MACH_D2NET) += d2net-setup.o | 15 | obj-$(CONFIG_MACH_D2NET) += d2net-setup.o |
17 | obj-$(CONFIG_MACH_BIGDISK) += d2net-setup.o | 16 | obj-$(CONFIG_MACH_BIGDISK) += d2net-setup.o |
18 | obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o | 17 | obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o |
@@ -22,3 +21,6 @@ obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o | |||
22 | obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o | 21 | obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o |
23 | obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o | 22 | obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o |
24 | obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o | 23 | obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o |
24 | |||
25 | obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o | ||
26 | obj-$(CONFIG_MACH_EDMINI_V2_DT) += edmini_v2-setup.o | ||
diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c new file mode 100644 index 000000000000..32e5c211a89b --- /dev/null +++ b/arch/arm/mach-orion5x/board-dt.c | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * Copyright 2012 (C), Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | ||
3 | * | ||
4 | * arch/arm/mach-orion5x/board-dt.c | ||
5 | * | ||
6 | * Flattened Device Tree board initialization | ||
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 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/of.h> | ||
16 | #include <linux/of_platform.h> | ||
17 | #include <asm/system_misc.h> | ||
18 | #include <asm/mach/arch.h> | ||
19 | #include <mach/orion5x.h> | ||
20 | #include <plat/irq.h> | ||
21 | #include "common.h" | ||
22 | |||
23 | struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = { | ||
24 | OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), | ||
25 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", | ||
26 | NULL), | ||
27 | OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), | ||
28 | OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), | ||
29 | OF_DEV_AUXDATA("marvell,orion-crypto", 0xf1090000, "mv_crypto", NULL), | ||
30 | {}, | ||
31 | }; | ||
32 | |||
33 | static void __init orion5x_dt_init(void) | ||
34 | { | ||
35 | char *dev_name; | ||
36 | u32 dev, rev; | ||
37 | |||
38 | orion5x_id(&dev, &rev, &dev_name); | ||
39 | printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk); | ||
40 | |||
41 | /* | ||
42 | * Setup Orion address map | ||
43 | */ | ||
44 | orion5x_setup_cpu_mbus_bridge(); | ||
45 | |||
46 | /* Setup root of clk tree */ | ||
47 | clk_init(); | ||
48 | |||
49 | /* | ||
50 | * Don't issue "Wait for Interrupt" instruction if we are | ||
51 | * running on D0 5281 silicon. | ||
52 | */ | ||
53 | if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) { | ||
54 | printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n"); | ||
55 | disable_hlt(); | ||
56 | } | ||
57 | |||
58 | if (of_machine_is_compatible("lacie,ethernet-disk-mini-v2")) | ||
59 | edmini_v2_init(); | ||
60 | |||
61 | of_platform_populate(NULL, of_default_bus_match_table, | ||
62 | orion5x_auxdata_lookup, NULL); | ||
63 | } | ||
64 | |||
65 | static const char *orion5x_dt_compat[] = { | ||
66 | "marvell,orion5x", | ||
67 | NULL, | ||
68 | }; | ||
69 | |||
70 | DT_MACHINE_START(ORION5X_DT, "Marvell Orion5x (Flattened Device Tree)") | ||
71 | /* Maintainer: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> */ | ||
72 | .map_io = orion5x_map_io, | ||
73 | .init_early = orion5x_init_early, | ||
74 | .init_irq = orion_dt_init_irq, | ||
75 | .timer = &orion5x_timer, | ||
76 | .init_machine = orion5x_dt_init, | ||
77 | .restart = orion5x_restart, | ||
78 | .dt_compat = orion5x_dt_compat, | ||
79 | MACHINE_END | ||
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index b3eb3da01160..550f92320afb 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
@@ -65,7 +65,7 @@ void __init orion5x_map_io(void) | |||
65 | ****************************************************************************/ | 65 | ****************************************************************************/ |
66 | static struct clk *tclk; | 66 | static struct clk *tclk; |
67 | 67 | ||
68 | static void __init clk_init(void) | 68 | void __init clk_init(void) |
69 | { | 69 | { |
70 | tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, | 70 | tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, |
71 | orion5x_tclk); | 71 | orion5x_tclk); |
@@ -236,7 +236,7 @@ struct sys_timer orion5x_timer = { | |||
236 | /* | 236 | /* |
237 | * Identify device ID and rev from PCIe configuration header space '0'. | 237 | * Identify device ID and rev from PCIe configuration header space '0'. |
238 | */ | 238 | */ |
239 | static void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name) | 239 | void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name) |
240 | { | 240 | { |
241 | orion5x_pcie_id(dev, rev); | 241 | orion5x_pcie_id(dev, rev); |
242 | 242 | ||
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h index 31bab92ce038..7db5cdd9c4b7 100644 --- a/arch/arm/mach-orion5x/common.h +++ b/arch/arm/mach-orion5x/common.h | |||
@@ -12,6 +12,8 @@ void orion5x_map_io(void); | |||
12 | void orion5x_init_early(void); | 12 | void orion5x_init_early(void); |
13 | void orion5x_init_irq(void); | 13 | void orion5x_init_irq(void); |
14 | void orion5x_init(void); | 14 | void orion5x_init(void); |
15 | void orion5x_id(u32 *dev, u32 *rev, char **dev_name); | ||
16 | void clk_init(void); | ||
15 | extern int orion5x_tclk; | 17 | extern int orion5x_tclk; |
16 | extern struct sys_timer orion5x_timer; | 18 | extern struct sys_timer orion5x_timer; |
17 | 19 | ||
@@ -54,6 +56,13 @@ int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys); | |||
54 | struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys); | 56 | struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys); |
55 | int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); | 57 | int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); |
56 | 58 | ||
59 | /* board init functions for boards not fully converted to fdt */ | ||
60 | #ifdef CONFIG_MACH_EDMINI_V2_DT | ||
61 | void edmini_v2_init(void); | ||
62 | #else | ||
63 | static inline void edmini_v2_init(void) {}; | ||
64 | #endif | ||
65 | |||
57 | struct meminfo; | 66 | struct meminfo; |
58 | struct tag; | 67 | struct tag; |
59 | extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *); | 68 | extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *); |
diff --git a/arch/arm/mach-orion5x/edmini_v2-setup.c b/arch/arm/mach-orion5x/edmini_v2-setup.c index 355e962137c7..d675e727803d 100644 --- a/arch/arm/mach-orion5x/edmini_v2-setup.c +++ b/arch/arm/mach-orion5x/edmini_v2-setup.c | |||
@@ -115,69 +115,6 @@ static struct i2c_board_info __initdata edmini_v2_i2c_rtc = { | |||
115 | }; | 115 | }; |
116 | 116 | ||
117 | /***************************************************************************** | 117 | /***************************************************************************** |
118 | * Sata | ||
119 | ****************************************************************************/ | ||
120 | |||
121 | static struct mv_sata_platform_data edmini_v2_sata_data = { | ||
122 | .n_ports = 2, | ||
123 | }; | ||
124 | |||
125 | /***************************************************************************** | ||
126 | * GPIO LED (simple - doesn't use hardware blinking support) | ||
127 | ****************************************************************************/ | ||
128 | |||
129 | #define EDMINI_V2_GPIO_LED_POWER 16 | ||
130 | |||
131 | static struct gpio_led edmini_v2_leds[] = { | ||
132 | { | ||
133 | .name = "power:blue", | ||
134 | .gpio = EDMINI_V2_GPIO_LED_POWER, | ||
135 | .active_low = 1, | ||
136 | }, | ||
137 | }; | ||
138 | |||
139 | static struct gpio_led_platform_data edmini_v2_led_data = { | ||
140 | .num_leds = ARRAY_SIZE(edmini_v2_leds), | ||
141 | .leds = edmini_v2_leds, | ||
142 | }; | ||
143 | |||
144 | static struct platform_device edmini_v2_gpio_leds = { | ||
145 | .name = "leds-gpio", | ||
146 | .id = -1, | ||
147 | .dev = { | ||
148 | .platform_data = &edmini_v2_led_data, | ||
149 | }, | ||
150 | }; | ||
151 | |||
152 | /**************************************************************************** | ||
153 | * GPIO key | ||
154 | ****************************************************************************/ | ||
155 | |||
156 | #define EDMINI_V2_GPIO_KEY_POWER 18 | ||
157 | |||
158 | static struct gpio_keys_button edmini_v2_buttons[] = { | ||
159 | { | ||
160 | .code = KEY_POWER, | ||
161 | .gpio = EDMINI_V2_GPIO_KEY_POWER, | ||
162 | .desc = "Power Button", | ||
163 | .active_low = 0, | ||
164 | }, | ||
165 | }; | ||
166 | |||
167 | static struct gpio_keys_platform_data edmini_v2_button_data = { | ||
168 | .buttons = edmini_v2_buttons, | ||
169 | .nbuttons = ARRAY_SIZE(edmini_v2_buttons), | ||
170 | }; | ||
171 | |||
172 | static struct platform_device edmini_v2_gpio_buttons = { | ||
173 | .name = "gpio-keys", | ||
174 | .id = -1, | ||
175 | .dev = { | ||
176 | .platform_data = &edmini_v2_button_data, | ||
177 | }, | ||
178 | }; | ||
179 | |||
180 | /***************************************************************************** | ||
181 | * General Setup | 118 | * General Setup |
182 | ****************************************************************************/ | 119 | ****************************************************************************/ |
183 | static unsigned int edminiv2_mpp_modes[] __initdata = { | 120 | static unsigned int edminiv2_mpp_modes[] __initdata = { |
@@ -207,13 +144,8 @@ static unsigned int edminiv2_mpp_modes[] __initdata = { | |||
207 | 0, | 144 | 0, |
208 | }; | 145 | }; |
209 | 146 | ||
210 | static void __init edmini_v2_init(void) | 147 | void __init edmini_v2_init(void) |
211 | { | 148 | { |
212 | /* | ||
213 | * Setup basic Orion functions. Need to be called early. | ||
214 | */ | ||
215 | orion5x_init(); | ||
216 | |||
217 | orion5x_mpp_conf(edminiv2_mpp_modes); | 149 | orion5x_mpp_conf(edminiv2_mpp_modes); |
218 | 150 | ||
219 | /* | 151 | /* |
@@ -221,15 +153,10 @@ static void __init edmini_v2_init(void) | |||
221 | */ | 153 | */ |
222 | orion5x_ehci0_init(); | 154 | orion5x_ehci0_init(); |
223 | orion5x_eth_init(&edmini_v2_eth_data); | 155 | orion5x_eth_init(&edmini_v2_eth_data); |
224 | orion5x_i2c_init(); | ||
225 | orion5x_sata_init(&edmini_v2_sata_data); | ||
226 | orion5x_uart0_init(); | ||
227 | 156 | ||
228 | orion5x_setup_dev_boot_win(EDMINI_V2_NOR_BOOT_BASE, | 157 | orion5x_setup_dev_boot_win(EDMINI_V2_NOR_BOOT_BASE, |
229 | EDMINI_V2_NOR_BOOT_SIZE); | 158 | EDMINI_V2_NOR_BOOT_SIZE); |
230 | platform_device_register(&edmini_v2_nor_flash); | 159 | platform_device_register(&edmini_v2_nor_flash); |
231 | platform_device_register(&edmini_v2_gpio_leds); | ||
232 | platform_device_register(&edmini_v2_gpio_buttons); | ||
233 | 160 | ||
234 | pr_notice("edmini_v2: USB device port, flash write and power-off " | 161 | pr_notice("edmini_v2: USB device port, flash write and power-off " |
235 | "are not yet supported.\n"); | 162 | "are not yet supported.\n"); |
@@ -247,16 +174,3 @@ static void __init edmini_v2_init(void) | |||
247 | 174 | ||
248 | i2c_register_board_info(0, &edmini_v2_i2c_rtc, 1); | 175 | i2c_register_board_info(0, &edmini_v2_i2c_rtc, 1); |
249 | } | 176 | } |
250 | |||
251 | /* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */ | ||
252 | MACHINE_START(EDMINI_V2, "LaCie Ethernet Disk mini V2") | ||
253 | /* Maintainer: Christopher Moore <moore@free.fr> */ | ||
254 | .atag_offset = 0x100, | ||
255 | .init_machine = edmini_v2_init, | ||
256 | .map_io = orion5x_map_io, | ||
257 | .init_early = orion5x_init_early, | ||
258 | .init_irq = orion5x_init_irq, | ||
259 | .timer = &orion5x_timer, | ||
260 | .fixup = tag_fixup_mem32, | ||
261 | .restart = orion5x_restart, | ||
262 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index 11aa7399dc09..86eec4159cbc 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -2,27 +2,6 @@ if ARCH_PXA | |||
2 | 2 | ||
3 | menu "Intel PXA2xx/PXA3xx Implementations" | 3 | menu "Intel PXA2xx/PXA3xx Implementations" |
4 | 4 | ||
5 | config ARCH_PXA_V7 | ||
6 | bool "ARMv7 (PXA95x) based systems" | ||
7 | |||
8 | if ARCH_PXA_V7 | ||
9 | comment "Marvell Dev Platforms (sorted by hardware release time)" | ||
10 | config MACH_TAVOREVB3 | ||
11 | bool "PXA95x Development Platform (aka TavorEVB III)" | ||
12 | select CPU_PXA955 | ||
13 | |||
14 | config MACH_SAARB | ||
15 | bool "PXA955 Handheld Platform (aka SAARB)" | ||
16 | select CPU_PXA955 | ||
17 | endif | ||
18 | |||
19 | config PXA_V7_MACH_AUTO | ||
20 | def_bool y | ||
21 | depends on ARCH_PXA_V7 | ||
22 | depends on !MACH_SAARB | ||
23 | select MACH_TAVOREVB3 | ||
24 | |||
25 | if !ARCH_PXA_V7 | ||
26 | comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" | 5 | comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" |
27 | 6 | ||
28 | config MACH_PXA3XX_DT | 7 | config MACH_PXA3XX_DT |
@@ -630,7 +609,6 @@ config MACH_ZIPIT2 | |||
630 | bool "Zipit Z2 Handheld" | 609 | bool "Zipit Z2 Handheld" |
631 | select HAVE_PWM | 610 | select HAVE_PWM |
632 | select PXA27x | 611 | select PXA27x |
633 | endif | ||
634 | endmenu | 612 | endmenu |
635 | 613 | ||
636 | config PXA25x | 614 | config PXA25x |
@@ -688,18 +666,6 @@ config CPU_PXA935 | |||
688 | help | 666 | help |
689 | PXA935 (codename Tavor-P65) | 667 | PXA935 (codename Tavor-P65) |
690 | 668 | ||
691 | config PXA95x | ||
692 | bool | ||
693 | select CPU_PJ4 | ||
694 | help | ||
695 | Select code specific to PXA95x variants | ||
696 | |||
697 | config CPU_PXA955 | ||
698 | bool | ||
699 | select PXA95x | ||
700 | help | ||
701 | PXA950 (codename MG1) | ||
702 | |||
703 | config PXA_SHARP_C7xx | 669 | config PXA_SHARP_C7xx |
704 | bool | 670 | bool |
705 | select SHARPSL_PM | 671 | select SHARPSL_PM |
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index ee88d6eae648..12c500558387 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -19,7 +19,6 @@ endif | |||
19 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa25x.o | 19 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa25x.o |
20 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa27x.o | 20 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa27x.o |
21 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o smemc.o pxa3xx-ulpi.o | 21 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o smemc.o pxa3xx-ulpi.o |
22 | obj-$(CONFIG_PXA95x) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o pxa95x.o smemc.o | ||
23 | obj-$(CONFIG_CPU_PXA300) += pxa300.o | 22 | obj-$(CONFIG_CPU_PXA300) += pxa300.o |
24 | obj-$(CONFIG_CPU_PXA320) += pxa320.o | 23 | obj-$(CONFIG_CPU_PXA320) += pxa320.o |
25 | obj-$(CONFIG_CPU_PXA930) += pxa930.o | 24 | obj-$(CONFIG_CPU_PXA930) += pxa930.o |
@@ -36,9 +35,7 @@ obj-$(CONFIG_MACH_ZYLONITE300) += zylonite.o zylonite_pxa300.o | |||
36 | obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o | 35 | obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o |
37 | obj-$(CONFIG_MACH_LITTLETON) += littleton.o | 36 | obj-$(CONFIG_MACH_LITTLETON) += littleton.o |
38 | obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o | 37 | obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o |
39 | obj-$(CONFIG_MACH_TAVOREVB3) += tavorevb3.o | ||
40 | obj-$(CONFIG_MACH_SAAR) += saar.o | 38 | obj-$(CONFIG_MACH_SAAR) += saar.o |
41 | obj-$(CONFIG_MACH_SAARB) += saarb.o | ||
42 | 39 | ||
43 | # 3rd Party Dev Platforms | 40 | # 3rd Party Dev Platforms |
44 | obj-$(CONFIG_ARCH_PXA_IDP) += idp.o | 41 | obj-$(CONFIG_ARCH_PXA_IDP) += idp.o |
diff --git a/arch/arm/mach-pxa/clock.h b/arch/arm/mach-pxa/clock.h index 3a258b1bf1aa..1f65d32c8d5e 100644 --- a/arch/arm/mach-pxa/clock.h +++ b/arch/arm/mach-pxa/clock.h | |||
@@ -57,7 +57,7 @@ void clk_pxa2xx_cken_disable(struct clk *clk); | |||
57 | 57 | ||
58 | extern struct syscore_ops pxa2xx_clock_syscore_ops; | 58 | extern struct syscore_ops pxa2xx_clock_syscore_ops; |
59 | 59 | ||
60 | #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) | 60 | #if defined(CONFIG_PXA3xx) |
61 | #define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \ | 61 | #define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \ |
62 | struct clk clk_##_name = { \ | 62 | struct clk clk_##_name = { \ |
63 | .ops = &clk_pxa3xx_cken_ops, \ | 63 | .ops = &clk_pxa3xx_cken_ops, \ |
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c index ddaa04de8e22..daa86d39ed9e 100644 --- a/arch/arm/mach-pxa/devices.c +++ b/arch/arm/mach-pxa/devices.c | |||
@@ -703,7 +703,7 @@ void __init pxa_set_ohci_info(struct pxaohci_platform_data *info) | |||
703 | } | 703 | } |
704 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ | 704 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ |
705 | 705 | ||
706 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) | 706 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) |
707 | static struct resource pxa27x_resource_keypad[] = { | 707 | static struct resource pxa27x_resource_keypad[] = { |
708 | [0] = { | 708 | [0] = { |
709 | .start = 0x41500000, | 709 | .start = 0x41500000, |
@@ -872,7 +872,7 @@ struct platform_device pxa27x_device_pwm1 = { | |||
872 | .resource = pxa27x_resource_pwm1, | 872 | .resource = pxa27x_resource_pwm1, |
873 | .num_resources = ARRAY_SIZE(pxa27x_resource_pwm1), | 873 | .num_resources = ARRAY_SIZE(pxa27x_resource_pwm1), |
874 | }; | 874 | }; |
875 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx || CONFIG_PXA95x*/ | 875 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ |
876 | 876 | ||
877 | #ifdef CONFIG_PXA3xx | 877 | #ifdef CONFIG_PXA3xx |
878 | static struct resource pxa3xx_resources_mci2[] = { | 878 | static struct resource pxa3xx_resources_mci2[] = { |
@@ -981,7 +981,7 @@ struct platform_device pxa3xx_device_gcu = { | |||
981 | 981 | ||
982 | #endif /* CONFIG_PXA3xx */ | 982 | #endif /* CONFIG_PXA3xx */ |
983 | 983 | ||
984 | #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) | 984 | #if defined(CONFIG_PXA3xx) |
985 | static struct resource pxa3xx_resources_i2c_power[] = { | 985 | static struct resource pxa3xx_resources_i2c_power[] = { |
986 | { | 986 | { |
987 | .start = 0x40f500c0, | 987 | .start = 0x40f500c0, |
@@ -1082,7 +1082,7 @@ struct platform_device pxa3xx_device_ssp4 = { | |||
1082 | .resource = pxa3xx_resource_ssp4, | 1082 | .resource = pxa3xx_resource_ssp4, |
1083 | .num_resources = ARRAY_SIZE(pxa3xx_resource_ssp4), | 1083 | .num_resources = ARRAY_SIZE(pxa3xx_resource_ssp4), |
1084 | }; | 1084 | }; |
1085 | #endif /* CONFIG_PXA3xx || CONFIG_PXA95x */ | 1085 | #endif /* CONFIG_PXA3xx */ |
1086 | 1086 | ||
1087 | struct resource pxa_resource_gpio[] = { | 1087 | struct resource pxa_resource_gpio[] = { |
1088 | { | 1088 | { |
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h index 56d92e5cad85..ccb06e485520 100644 --- a/arch/arm/mach-pxa/include/mach/hardware.h +++ b/arch/arm/mach-pxa/include/mach/hardware.h | |||
@@ -194,17 +194,6 @@ | |||
194 | #define __cpu_is_pxa935(id) (0) | 194 | #define __cpu_is_pxa935(id) (0) |
195 | #endif | 195 | #endif |
196 | 196 | ||
197 | #ifdef CONFIG_CPU_PXA955 | ||
198 | #define __cpu_is_pxa955(id) \ | ||
199 | ({ \ | ||
200 | unsigned int _id = (id) >> 4 & 0xfff; \ | ||
201 | _id == 0x581 || _id == 0xc08 \ | ||
202 | || _id == 0xb76; \ | ||
203 | }) | ||
204 | #else | ||
205 | #define __cpu_is_pxa955(id) (0) | ||
206 | #endif | ||
207 | |||
208 | #define cpu_is_pxa210() \ | 197 | #define cpu_is_pxa210() \ |
209 | ({ \ | 198 | ({ \ |
210 | __cpu_is_pxa210(read_cpuid_id()); \ | 199 | __cpu_is_pxa210(read_cpuid_id()); \ |
@@ -255,10 +244,6 @@ | |||
255 | __cpu_is_pxa935(read_cpuid_id()); \ | 244 | __cpu_is_pxa935(read_cpuid_id()); \ |
256 | }) | 245 | }) |
257 | 246 | ||
258 | #define cpu_is_pxa955() \ | ||
259 | ({ \ | ||
260 | __cpu_is_pxa955(read_cpuid_id()); \ | ||
261 | }) | ||
262 | 247 | ||
263 | 248 | ||
264 | /* | 249 | /* |
@@ -297,15 +282,6 @@ | |||
297 | #define __cpu_is_pxa93x(id) (0) | 282 | #define __cpu_is_pxa93x(id) (0) |
298 | #endif | 283 | #endif |
299 | 284 | ||
300 | #ifdef CONFIG_PXA95x | ||
301 | #define __cpu_is_pxa95x(id) \ | ||
302 | ({ \ | ||
303 | __cpu_is_pxa955(id); \ | ||
304 | }) | ||
305 | #else | ||
306 | #define __cpu_is_pxa95x(id) (0) | ||
307 | #endif | ||
308 | |||
309 | #define cpu_is_pxa2xx() \ | 285 | #define cpu_is_pxa2xx() \ |
310 | ({ \ | 286 | ({ \ |
311 | __cpu_is_pxa2xx(read_cpuid_id()); \ | 287 | __cpu_is_pxa2xx(read_cpuid_id()); \ |
@@ -321,10 +297,6 @@ | |||
321 | __cpu_is_pxa93x(read_cpuid_id()); \ | 297 | __cpu_is_pxa93x(read_cpuid_id()); \ |
322 | }) | 298 | }) |
323 | 299 | ||
324 | #define cpu_is_pxa95x() \ | ||
325 | ({ \ | ||
326 | __cpu_is_pxa95x(read_cpuid_id()); \ | ||
327 | }) | ||
328 | 300 | ||
329 | /* | 301 | /* |
330 | * return current memory and LCD clock frequency in units of 10kHz | 302 | * return current memory and LCD clock frequency in units of 10kHz |
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h index 8765782dd955..48c2fd851686 100644 --- a/arch/arm/mach-pxa/include/mach/irqs.h +++ b/arch/arm/mach-pxa/include/mach/irqs.h | |||
@@ -84,7 +84,6 @@ | |||
84 | #define IRQ_PXA935_MMC0 PXA_IRQ(72) /* MMC0 Controller (PXA935) */ | 84 | #define IRQ_PXA935_MMC0 PXA_IRQ(72) /* MMC0 Controller (PXA935) */ |
85 | #define IRQ_PXA935_MMC1 PXA_IRQ(73) /* MMC1 Controller (PXA935) */ | 85 | #define IRQ_PXA935_MMC1 PXA_IRQ(73) /* MMC1 Controller (PXA935) */ |
86 | #define IRQ_PXA935_MMC2 PXA_IRQ(74) /* MMC2 Controller (PXA935) */ | 86 | #define IRQ_PXA935_MMC2 PXA_IRQ(74) /* MMC2 Controller (PXA935) */ |
87 | #define IRQ_PXA955_MMC3 PXA_IRQ(75) /* MMC3 Controller (PXA955) */ | ||
88 | #define IRQ_U2P PXA_IRQ(93) /* USB PHY D+/D- Lines (PXA935) */ | 87 | #define IRQ_U2P PXA_IRQ(93) /* USB PHY D+/D- Lines (PXA935) */ |
89 | 88 | ||
90 | #define PXA_GPIO_IRQ_BASE PXA_IRQ(96) | 89 | #define PXA_GPIO_IRQ_BASE PXA_IRQ(96) |
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx.h b/arch/arm/mach-pxa/include/mach/pxa3xx.h index cd3e57f42688..6dd7fa163e29 100644 --- a/arch/arm/mach-pxa/include/mach/pxa3xx.h +++ b/arch/arm/mach-pxa/include/mach/pxa3xx.h | |||
@@ -7,7 +7,6 @@ | |||
7 | 7 | ||
8 | extern void __init pxa3xx_map_io(void); | 8 | extern void __init pxa3xx_map_io(void); |
9 | extern void __init pxa3xx_init_irq(void); | 9 | extern void __init pxa3xx_init_irq(void); |
10 | extern void __init pxa95x_init_irq(void); | ||
11 | 10 | ||
12 | #define pxa3xx_handle_irq ichp_handle_irq | 11 | #define pxa3xx_handle_irq ichp_handle_irq |
13 | 12 | ||
diff --git a/arch/arm/mach-pxa/include/mach/pxa95x.h b/arch/arm/mach-pxa/include/mach/pxa95x.h deleted file mode 100644 index cbb097c4cb1f..000000000000 --- a/arch/arm/mach-pxa/include/mach/pxa95x.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __MACH_PXA95X_H | ||
2 | #define __MACH_PXA95X_H | ||
3 | |||
4 | #include <mach/pxa3xx.h> | ||
5 | #include <mach/mfp-pxa930.h> | ||
6 | |||
7 | #endif /* __MACH_PXA95X_H */ | ||
diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c index 7dbe3ccf1993..e329ccefd364 100644 --- a/arch/arm/mach-pxa/pxa3xx-ulpi.c +++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c | |||
@@ -384,18 +384,7 @@ static struct platform_driver pxa3xx_u2d_ulpi_driver = { | |||
384 | .probe = pxa3xx_u2d_probe, | 384 | .probe = pxa3xx_u2d_probe, |
385 | .remove = pxa3xx_u2d_remove, | 385 | .remove = pxa3xx_u2d_remove, |
386 | }; | 386 | }; |
387 | 387 | module_platform_driver(pxa3xx_u2d_ulpi_driver); | |
388 | static int pxa3xx_u2d_ulpi_init(void) | ||
389 | { | ||
390 | return platform_driver_register(&pxa3xx_u2d_ulpi_driver); | ||
391 | } | ||
392 | module_init(pxa3xx_u2d_ulpi_init); | ||
393 | |||
394 | static void __exit pxa3xx_u2d_ulpi_exit(void) | ||
395 | { | ||
396 | platform_driver_unregister(&pxa3xx_u2d_ulpi_driver); | ||
397 | } | ||
398 | module_exit(pxa3xx_u2d_ulpi_exit); | ||
399 | 388 | ||
400 | MODULE_DESCRIPTION("PXA3xx U2D ULPI driver"); | 389 | MODULE_DESCRIPTION("PXA3xx U2D ULPI driver"); |
401 | MODULE_AUTHOR("Igor Grinberg"); | 390 | MODULE_AUTHOR("Igor Grinberg"); |
diff --git a/arch/arm/mach-pxa/pxa95x.c b/arch/arm/mach-pxa/pxa95x.c deleted file mode 100644 index 47601f80e6e7..000000000000 --- a/arch/arm/mach-pxa/pxa95x.c +++ /dev/null | |||
@@ -1,295 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/pxa95x.c | ||
3 | * | ||
4 | * code specific to PXA95x aka MGx | ||
5 | * | ||
6 | * Copyright (C) 2009-2010 Marvell International Ltd. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | #include <linux/module.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/pm.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/i2c/pxa-i2c.h> | ||
18 | #include <linux/irq.h> | ||
19 | #include <linux/io.h> | ||
20 | #include <linux/syscore_ops.h> | ||
21 | |||
22 | #include <mach/hardware.h> | ||
23 | #include <mach/pxa3xx-regs.h> | ||
24 | #include <mach/pxa930.h> | ||
25 | #include <mach/reset.h> | ||
26 | #include <mach/pm.h> | ||
27 | #include <mach/dma.h> | ||
28 | |||
29 | #include "generic.h" | ||
30 | #include "devices.h" | ||
31 | #include "clock.h" | ||
32 | |||
33 | static struct mfp_addr_map pxa95x_mfp_addr_map[] __initdata = { | ||
34 | |||
35 | MFP_ADDR(GPIO0, 0x02e0), | ||
36 | MFP_ADDR(GPIO1, 0x02dc), | ||
37 | MFP_ADDR(GPIO2, 0x02e8), | ||
38 | MFP_ADDR(GPIO3, 0x02d8), | ||
39 | MFP_ADDR(GPIO4, 0x02e4), | ||
40 | MFP_ADDR(GPIO5, 0x02ec), | ||
41 | MFP_ADDR(GPIO6, 0x02f8), | ||
42 | MFP_ADDR(GPIO7, 0x02fc), | ||
43 | MFP_ADDR(GPIO8, 0x0300), | ||
44 | MFP_ADDR(GPIO9, 0x02d4), | ||
45 | MFP_ADDR(GPIO10, 0x02f4), | ||
46 | MFP_ADDR(GPIO11, 0x02f0), | ||
47 | MFP_ADDR(GPIO12, 0x0304), | ||
48 | MFP_ADDR(GPIO13, 0x0310), | ||
49 | MFP_ADDR(GPIO14, 0x0308), | ||
50 | MFP_ADDR(GPIO15, 0x030c), | ||
51 | MFP_ADDR(GPIO16, 0x04e8), | ||
52 | MFP_ADDR(GPIO17, 0x04f4), | ||
53 | MFP_ADDR(GPIO18, 0x04f8), | ||
54 | MFP_ADDR(GPIO19, 0x04fc), | ||
55 | MFP_ADDR(GPIO20, 0x0518), | ||
56 | MFP_ADDR(GPIO21, 0x051c), | ||
57 | MFP_ADDR(GPIO22, 0x04ec), | ||
58 | MFP_ADDR(GPIO23, 0x0500), | ||
59 | MFP_ADDR(GPIO24, 0x04f0), | ||
60 | MFP_ADDR(GPIO25, 0x0504), | ||
61 | MFP_ADDR(GPIO26, 0x0510), | ||
62 | MFP_ADDR(GPIO27, 0x0514), | ||
63 | MFP_ADDR(GPIO28, 0x0520), | ||
64 | MFP_ADDR(GPIO29, 0x0600), | ||
65 | MFP_ADDR(GPIO30, 0x0618), | ||
66 | MFP_ADDR(GPIO31, 0x0610), | ||
67 | MFP_ADDR(GPIO32, 0x060c), | ||
68 | MFP_ADDR(GPIO33, 0x061c), | ||
69 | MFP_ADDR(GPIO34, 0x0620), | ||
70 | MFP_ADDR(GPIO35, 0x0628), | ||
71 | MFP_ADDR(GPIO36, 0x062c), | ||
72 | MFP_ADDR(GPIO37, 0x0630), | ||
73 | MFP_ADDR(GPIO38, 0x0634), | ||
74 | MFP_ADDR(GPIO39, 0x0638), | ||
75 | MFP_ADDR(GPIO40, 0x063c), | ||
76 | MFP_ADDR(GPIO41, 0x0614), | ||
77 | MFP_ADDR(GPIO42, 0x0624), | ||
78 | MFP_ADDR(GPIO43, 0x0608), | ||
79 | MFP_ADDR(GPIO44, 0x0604), | ||
80 | MFP_ADDR(GPIO45, 0x050c), | ||
81 | MFP_ADDR(GPIO46, 0x0508), | ||
82 | MFP_ADDR(GPIO47, 0x02bc), | ||
83 | MFP_ADDR(GPIO48, 0x02b4), | ||
84 | MFP_ADDR(GPIO49, 0x02b8), | ||
85 | MFP_ADDR(GPIO50, 0x02c8), | ||
86 | MFP_ADDR(GPIO51, 0x02c0), | ||
87 | MFP_ADDR(GPIO52, 0x02c4), | ||
88 | MFP_ADDR(GPIO53, 0x02d0), | ||
89 | MFP_ADDR(GPIO54, 0x02cc), | ||
90 | MFP_ADDR(GPIO55, 0x029c), | ||
91 | MFP_ADDR(GPIO56, 0x02a0), | ||
92 | MFP_ADDR(GPIO57, 0x0294), | ||
93 | MFP_ADDR(GPIO58, 0x0298), | ||
94 | MFP_ADDR(GPIO59, 0x02a4), | ||
95 | MFP_ADDR(GPIO60, 0x02a8), | ||
96 | MFP_ADDR(GPIO61, 0x02b0), | ||
97 | MFP_ADDR(GPIO62, 0x02ac), | ||
98 | MFP_ADDR(GPIO63, 0x0640), | ||
99 | MFP_ADDR(GPIO64, 0x065c), | ||
100 | MFP_ADDR(GPIO65, 0x0648), | ||
101 | MFP_ADDR(GPIO66, 0x0644), | ||
102 | MFP_ADDR(GPIO67, 0x0674), | ||
103 | MFP_ADDR(GPIO68, 0x0658), | ||
104 | MFP_ADDR(GPIO69, 0x0654), | ||
105 | MFP_ADDR(GPIO70, 0x0660), | ||
106 | MFP_ADDR(GPIO71, 0x0668), | ||
107 | MFP_ADDR(GPIO72, 0x0664), | ||
108 | MFP_ADDR(GPIO73, 0x0650), | ||
109 | MFP_ADDR(GPIO74, 0x066c), | ||
110 | MFP_ADDR(GPIO75, 0x064c), | ||
111 | MFP_ADDR(GPIO76, 0x0670), | ||
112 | MFP_ADDR(GPIO77, 0x0678), | ||
113 | MFP_ADDR(GPIO78, 0x067c), | ||
114 | MFP_ADDR(GPIO79, 0x0694), | ||
115 | MFP_ADDR(GPIO80, 0x069c), | ||
116 | MFP_ADDR(GPIO81, 0x06a0), | ||
117 | MFP_ADDR(GPIO82, 0x06a4), | ||
118 | MFP_ADDR(GPIO83, 0x0698), | ||
119 | MFP_ADDR(GPIO84, 0x06bc), | ||
120 | MFP_ADDR(GPIO85, 0x06b4), | ||
121 | MFP_ADDR(GPIO86, 0x06b0), | ||
122 | MFP_ADDR(GPIO87, 0x06c0), | ||
123 | MFP_ADDR(GPIO88, 0x06c4), | ||
124 | MFP_ADDR(GPIO89, 0x06ac), | ||
125 | MFP_ADDR(GPIO90, 0x0680), | ||
126 | MFP_ADDR(GPIO91, 0x0684), | ||
127 | MFP_ADDR(GPIO92, 0x0688), | ||
128 | MFP_ADDR(GPIO93, 0x0690), | ||
129 | MFP_ADDR(GPIO94, 0x068c), | ||
130 | MFP_ADDR(GPIO95, 0x06a8), | ||
131 | MFP_ADDR(GPIO96, 0x06b8), | ||
132 | MFP_ADDR(GPIO97, 0x0410), | ||
133 | MFP_ADDR(GPIO98, 0x0418), | ||
134 | MFP_ADDR(GPIO99, 0x041c), | ||
135 | MFP_ADDR(GPIO100, 0x0414), | ||
136 | MFP_ADDR(GPIO101, 0x0408), | ||
137 | MFP_ADDR(GPIO102, 0x0324), | ||
138 | MFP_ADDR(GPIO103, 0x040c), | ||
139 | MFP_ADDR(GPIO104, 0x0400), | ||
140 | MFP_ADDR(GPIO105, 0x0328), | ||
141 | MFP_ADDR(GPIO106, 0x0404), | ||
142 | |||
143 | MFP_ADDR(GPIO159, 0x0524), | ||
144 | MFP_ADDR(GPIO163, 0x0534), | ||
145 | MFP_ADDR(GPIO167, 0x0544), | ||
146 | MFP_ADDR(GPIO168, 0x0548), | ||
147 | MFP_ADDR(GPIO169, 0x054c), | ||
148 | MFP_ADDR(GPIO170, 0x0550), | ||
149 | MFP_ADDR(GPIO171, 0x0554), | ||
150 | MFP_ADDR(GPIO172, 0x0558), | ||
151 | MFP_ADDR(GPIO173, 0x055c), | ||
152 | |||
153 | MFP_ADDR(nXCVREN, 0x0204), | ||
154 | MFP_ADDR(DF_CLE_nOE, 0x020c), | ||
155 | MFP_ADDR(DF_nADV1_ALE, 0x0218), | ||
156 | MFP_ADDR(DF_SCLK_E, 0x0214), | ||
157 | MFP_ADDR(DF_SCLK_S, 0x0210), | ||
158 | MFP_ADDR(nBE0, 0x021c), | ||
159 | MFP_ADDR(nBE1, 0x0220), | ||
160 | MFP_ADDR(DF_nADV2_ALE, 0x0224), | ||
161 | MFP_ADDR(DF_INT_RnB, 0x0228), | ||
162 | MFP_ADDR(DF_nCS0, 0x022c), | ||
163 | MFP_ADDR(DF_nCS1, 0x0230), | ||
164 | MFP_ADDR(nLUA, 0x0254), | ||
165 | MFP_ADDR(nLLA, 0x0258), | ||
166 | MFP_ADDR(DF_nWE, 0x0234), | ||
167 | MFP_ADDR(DF_nRE_nOE, 0x0238), | ||
168 | MFP_ADDR(DF_ADDR0, 0x024c), | ||
169 | MFP_ADDR(DF_ADDR1, 0x0250), | ||
170 | MFP_ADDR(DF_ADDR2, 0x025c), | ||
171 | MFP_ADDR(DF_ADDR3, 0x0260), | ||
172 | MFP_ADDR(DF_IO0, 0x023c), | ||
173 | MFP_ADDR(DF_IO1, 0x0240), | ||
174 | MFP_ADDR(DF_IO2, 0x0244), | ||
175 | MFP_ADDR(DF_IO3, 0x0248), | ||
176 | MFP_ADDR(DF_IO4, 0x0264), | ||
177 | MFP_ADDR(DF_IO5, 0x0268), | ||
178 | MFP_ADDR(DF_IO6, 0x026c), | ||
179 | MFP_ADDR(DF_IO7, 0x0270), | ||
180 | MFP_ADDR(DF_IO8, 0x0274), | ||
181 | MFP_ADDR(DF_IO9, 0x0278), | ||
182 | MFP_ADDR(DF_IO10, 0x027c), | ||
183 | MFP_ADDR(DF_IO11, 0x0280), | ||
184 | MFP_ADDR(DF_IO12, 0x0284), | ||
185 | MFP_ADDR(DF_IO13, 0x0288), | ||
186 | MFP_ADDR(DF_IO14, 0x028c), | ||
187 | MFP_ADDR(DF_IO15, 0x0290), | ||
188 | |||
189 | MFP_ADDR(GSIM_UIO, 0x0314), | ||
190 | MFP_ADDR(GSIM_UCLK, 0x0318), | ||
191 | MFP_ADDR(GSIM_UDET, 0x031c), | ||
192 | MFP_ADDR(GSIM_nURST, 0x0320), | ||
193 | |||
194 | MFP_ADDR(PMIC_INT, 0x06c8), | ||
195 | |||
196 | MFP_ADDR(RDY, 0x0200), | ||
197 | |||
198 | MFP_ADDR_END, | ||
199 | }; | ||
200 | |||
201 | static DEFINE_CK(pxa95x_lcd, LCD, &clk_pxa3xx_hsio_ops); | ||
202 | static DEFINE_CLK(pxa95x_pout, &clk_pxa3xx_pout_ops, 13000000, 70); | ||
203 | static DEFINE_PXA3_CKEN(pxa95x_ffuart, FFUART, 14857000, 1); | ||
204 | static DEFINE_PXA3_CKEN(pxa95x_btuart, BTUART, 14857000, 1); | ||
205 | static DEFINE_PXA3_CKEN(pxa95x_stuart, STUART, 14857000, 1); | ||
206 | static DEFINE_PXA3_CKEN(pxa95x_i2c, I2C, 32842000, 0); | ||
207 | static DEFINE_PXA3_CKEN(pxa95x_keypad, KEYPAD, 32768, 0); | ||
208 | static DEFINE_PXA3_CKEN(pxa95x_ssp1, SSP1, 13000000, 0); | ||
209 | static DEFINE_PXA3_CKEN(pxa95x_ssp2, SSP2, 13000000, 0); | ||
210 | static DEFINE_PXA3_CKEN(pxa95x_ssp3, SSP3, 13000000, 0); | ||
211 | static DEFINE_PXA3_CKEN(pxa95x_ssp4, SSP4, 13000000, 0); | ||
212 | static DEFINE_PXA3_CKEN(pxa95x_pwm0, PWM0, 13000000, 0); | ||
213 | static DEFINE_PXA3_CKEN(pxa95x_pwm1, PWM1, 13000000, 0); | ||
214 | static DEFINE_PXA3_CKEN(pxa95x_gpio, GPIO, 13000000, 0); | ||
215 | |||
216 | static struct clk_lookup pxa95x_clkregs[] = { | ||
217 | INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"), | ||
218 | /* Power I2C clock is always on */ | ||
219 | INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), | ||
220 | INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL), | ||
221 | INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL), | ||
222 | INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL), | ||
223 | INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-uart.2", NULL), | ||
224 | INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-ir", "UARTCLK"), | ||
225 | INIT_CLKREG(&clk_pxa95x_i2c, "pxa2xx-i2c.0", NULL), | ||
226 | INIT_CLKREG(&clk_pxa95x_keypad, "pxa27x-keypad", NULL), | ||
227 | INIT_CLKREG(&clk_pxa95x_ssp1, "pxa27x-ssp.0", NULL), | ||
228 | INIT_CLKREG(&clk_pxa95x_ssp2, "pxa27x-ssp.1", NULL), | ||
229 | INIT_CLKREG(&clk_pxa95x_ssp3, "pxa27x-ssp.2", NULL), | ||
230 | INIT_CLKREG(&clk_pxa95x_ssp4, "pxa27x-ssp.3", NULL), | ||
231 | INIT_CLKREG(&clk_pxa95x_pwm0, "pxa27x-pwm.0", NULL), | ||
232 | INIT_CLKREG(&clk_pxa95x_pwm1, "pxa27x-pwm.1", NULL), | ||
233 | INIT_CLKREG(&clk_pxa95x_gpio, "pxa-gpio", NULL), | ||
234 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), | ||
235 | }; | ||
236 | |||
237 | void __init pxa95x_init_irq(void) | ||
238 | { | ||
239 | pxa_init_irq(96, NULL); | ||
240 | } | ||
241 | |||
242 | /* | ||
243 | * device registration specific to PXA93x. | ||
244 | */ | ||
245 | |||
246 | void __init pxa95x_set_i2c_power_info(struct i2c_pxa_platform_data *info) | ||
247 | { | ||
248 | pxa_register_device(&pxa3xx_device_i2c_power, info); | ||
249 | } | ||
250 | |||
251 | static struct platform_device *devices[] __initdata = { | ||
252 | &pxa_device_gpio, | ||
253 | &sa1100_device_rtc, | ||
254 | &pxa_device_rtc, | ||
255 | &pxa27x_device_ssp1, | ||
256 | &pxa27x_device_ssp2, | ||
257 | &pxa27x_device_ssp3, | ||
258 | &pxa3xx_device_ssp4, | ||
259 | &pxa27x_device_pwm0, | ||
260 | &pxa27x_device_pwm1, | ||
261 | }; | ||
262 | |||
263 | static int __init pxa95x_init(void) | ||
264 | { | ||
265 | int ret = 0, i; | ||
266 | |||
267 | if (cpu_is_pxa95x()) { | ||
268 | mfp_init_base(io_p2v(MFPR_BASE)); | ||
269 | mfp_init_addr(pxa95x_mfp_addr_map); | ||
270 | |||
271 | reset_status = ARSR; | ||
272 | |||
273 | /* | ||
274 | * clear RDH bit every time after reset | ||
275 | * | ||
276 | * Note: the last 3 bits DxS are write-1-to-clear so carefully | ||
277 | * preserve them here in case they will be referenced later | ||
278 | */ | ||
279 | ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); | ||
280 | |||
281 | clkdev_add_table(pxa95x_clkregs, ARRAY_SIZE(pxa95x_clkregs)); | ||
282 | |||
283 | if ((ret = pxa_init_dma(IRQ_DMA, 32))) | ||
284 | return ret; | ||
285 | |||
286 | register_syscore_ops(&pxa_irq_syscore_ops); | ||
287 | register_syscore_ops(&pxa3xx_clock_syscore_ops); | ||
288 | |||
289 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
290 | } | ||
291 | |||
292 | return ret; | ||
293 | } | ||
294 | |||
295 | postcore_initcall(pxa95x_init); | ||
diff --git a/arch/arm/mach-pxa/saarb.c b/arch/arm/mach-pxa/saarb.c deleted file mode 100644 index 5aded5e6148f..000000000000 --- a/arch/arm/mach-pxa/saarb.c +++ /dev/null | |||
@@ -1,115 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/saarb.c | ||
3 | * | ||
4 | * Support for the Marvell Handheld Platform (aka SAARB) | ||
5 | * | ||
6 | * Copyright (C) 2007-2010 Marvell International Ltd. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * publishhed by the Free Software Foundation. | ||
11 | */ | ||
12 | #include <linux/gpio.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/i2c.h> | ||
16 | #include <linux/i2c/pxa-i2c.h> | ||
17 | #include <linux/mfd/88pm860x.h> | ||
18 | |||
19 | #include <asm/mach-types.h> | ||
20 | #include <asm/mach/arch.h> | ||
21 | |||
22 | #include <mach/irqs.h> | ||
23 | #include <mach/hardware.h> | ||
24 | #include <mach/mfp.h> | ||
25 | #include <mach/mfp-pxa930.h> | ||
26 | #include <mach/pxa95x.h> | ||
27 | |||
28 | #include "generic.h" | ||
29 | |||
30 | #define SAARB_NR_IRQS (IRQ_BOARD_START + 40) | ||
31 | |||
32 | static struct pm860x_touch_pdata saarb_touch = { | ||
33 | .gpadc_prebias = 1, | ||
34 | .slot_cycle = 1, | ||
35 | .tsi_prebias = 6, | ||
36 | .pen_prebias = 16, | ||
37 | .pen_prechg = 2, | ||
38 | .res_x = 300, | ||
39 | }; | ||
40 | |||
41 | static struct pm860x_backlight_pdata saarb_backlight[] = { | ||
42 | { | ||
43 | .id = PM8606_ID_BACKLIGHT, | ||
44 | .iset = PM8606_WLED_CURRENT(24), | ||
45 | .flags = PM8606_BACKLIGHT1, | ||
46 | }, | ||
47 | {}, | ||
48 | }; | ||
49 | |||
50 | static struct pm860x_led_pdata saarb_led[] = { | ||
51 | { | ||
52 | .id = PM8606_ID_LED, | ||
53 | .iset = PM8606_LED_CURRENT(12), | ||
54 | .flags = PM8606_LED1_RED, | ||
55 | }, { | ||
56 | .id = PM8606_ID_LED, | ||
57 | .iset = PM8606_LED_CURRENT(12), | ||
58 | .flags = PM8606_LED1_GREEN, | ||
59 | }, { | ||
60 | .id = PM8606_ID_LED, | ||
61 | .iset = PM8606_LED_CURRENT(12), | ||
62 | .flags = PM8606_LED1_BLUE, | ||
63 | }, { | ||
64 | .id = PM8606_ID_LED, | ||
65 | .iset = PM8606_LED_CURRENT(12), | ||
66 | .flags = PM8606_LED2_RED, | ||
67 | }, { | ||
68 | .id = PM8606_ID_LED, | ||
69 | .iset = PM8606_LED_CURRENT(12), | ||
70 | .flags = PM8606_LED2_GREEN, | ||
71 | }, { | ||
72 | .id = PM8606_ID_LED, | ||
73 | .iset = PM8606_LED_CURRENT(12), | ||
74 | .flags = PM8606_LED2_BLUE, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct pm860x_platform_data saarb_pm8607_info = { | ||
79 | .touch = &saarb_touch, | ||
80 | .backlight = &saarb_backlight[0], | ||
81 | .led = &saarb_led[0], | ||
82 | .companion_addr = 0x10, | ||
83 | .irq_mode = 0, | ||
84 | .irq_base = IRQ_BOARD_START, | ||
85 | |||
86 | .i2c_port = GI2C_PORT, | ||
87 | }; | ||
88 | |||
89 | static struct i2c_board_info saarb_i2c_info[] = { | ||
90 | { | ||
91 | .type = "88PM860x", | ||
92 | .addr = 0x34, | ||
93 | .platform_data = &saarb_pm8607_info, | ||
94 | .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), | ||
95 | }, | ||
96 | }; | ||
97 | |||
98 | static void __init saarb_init(void) | ||
99 | { | ||
100 | pxa_set_ffuart_info(NULL); | ||
101 | pxa_set_i2c_info(NULL); | ||
102 | i2c_register_board_info(0, ARRAY_AND_SIZE(saarb_i2c_info)); | ||
103 | } | ||
104 | |||
105 | MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)") | ||
106 | .atag_offset = 0x100, | ||
107 | .map_io = pxa3xx_map_io, | ||
108 | .nr_irqs = SAARB_NR_IRQS, | ||
109 | .init_irq = pxa95x_init_irq, | ||
110 | .handle_irq = pxa3xx_handle_irq, | ||
111 | .timer = &pxa_timer, | ||
112 | .init_machine = saarb_init, | ||
113 | .restart = pxa_restart, | ||
114 | MACHINE_END | ||
115 | |||
diff --git a/arch/arm/mach-pxa/tavorevb3.c b/arch/arm/mach-pxa/tavorevb3.c deleted file mode 100644 index f7d9305cfd77..000000000000 --- a/arch/arm/mach-pxa/tavorevb3.c +++ /dev/null | |||
@@ -1,136 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/tavorevb3.c | ||
3 | * | ||
4 | * Support for the Marvell EVB3 Development Platform. | ||
5 | * | ||
6 | * Copyright: (C) Copyright 2008-2010 Marvell International Ltd. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * publishhed by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/platform_device.h> | ||
16 | #include <linux/interrupt.h> | ||
17 | #include <linux/i2c.h> | ||
18 | #include <linux/i2c/pxa-i2c.h> | ||
19 | #include <linux/gpio.h> | ||
20 | #include <linux/mfd/88pm860x.h> | ||
21 | |||
22 | #include <asm/mach-types.h> | ||
23 | #include <asm/mach/arch.h> | ||
24 | |||
25 | #include <mach/pxa930.h> | ||
26 | |||
27 | #include "devices.h" | ||
28 | #include "generic.h" | ||
29 | |||
30 | #define TAVOREVB3_NR_IRQS (IRQ_BOARD_START + 24) | ||
31 | |||
32 | static mfp_cfg_t evb3_mfp_cfg[] __initdata = { | ||
33 | /* UART */ | ||
34 | GPIO53_UART1_TXD, | ||
35 | GPIO54_UART1_RXD, | ||
36 | |||
37 | /* PMIC */ | ||
38 | PMIC_INT_GPIO83, | ||
39 | }; | ||
40 | |||
41 | #if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) | ||
42 | static struct pm860x_touch_pdata evb3_touch = { | ||
43 | .gpadc_prebias = 1, | ||
44 | .slot_cycle = 1, | ||
45 | .tsi_prebias = 6, | ||
46 | .pen_prebias = 16, | ||
47 | .pen_prechg = 2, | ||
48 | .res_x = 300, | ||
49 | }; | ||
50 | |||
51 | static struct pm860x_backlight_pdata evb3_backlight[] = { | ||
52 | { | ||
53 | .id = PM8606_ID_BACKLIGHT, | ||
54 | .iset = PM8606_WLED_CURRENT(24), | ||
55 | .flags = PM8606_BACKLIGHT1, | ||
56 | }, | ||
57 | {}, | ||
58 | }; | ||
59 | |||
60 | static struct pm860x_led_pdata evb3_led[] = { | ||
61 | { | ||
62 | .id = PM8606_ID_LED, | ||
63 | .iset = PM8606_LED_CURRENT(12), | ||
64 | .flags = PM8606_LED1_RED, | ||
65 | }, { | ||
66 | .id = PM8606_ID_LED, | ||
67 | .iset = PM8606_LED_CURRENT(12), | ||
68 | .flags = PM8606_LED1_GREEN, | ||
69 | }, { | ||
70 | .id = PM8606_ID_LED, | ||
71 | .iset = PM8606_LED_CURRENT(12), | ||
72 | .flags = PM8606_LED1_BLUE, | ||
73 | }, { | ||
74 | .id = PM8606_ID_LED, | ||
75 | .iset = PM8606_LED_CURRENT(12), | ||
76 | .flags = PM8606_LED2_RED, | ||
77 | }, { | ||
78 | .id = PM8606_ID_LED, | ||
79 | .iset = PM8606_LED_CURRENT(12), | ||
80 | .flags = PM8606_LED2_GREEN, | ||
81 | }, { | ||
82 | .id = PM8606_ID_LED, | ||
83 | .iset = PM8606_LED_CURRENT(12), | ||
84 | .flags = PM8606_LED2_BLUE, | ||
85 | }, | ||
86 | }; | ||
87 | |||
88 | static struct pm860x_platform_data evb3_pm8607_info = { | ||
89 | .touch = &evb3_touch, | ||
90 | .backlight = &evb3_backlight[0], | ||
91 | .led = &evb3_led[0], | ||
92 | .companion_addr = 0x10, | ||
93 | .irq_mode = 0, | ||
94 | .irq_base = IRQ_BOARD_START, | ||
95 | |||
96 | .i2c_port = GI2C_PORT, | ||
97 | }; | ||
98 | |||
99 | static struct i2c_board_info evb3_i2c_info[] = { | ||
100 | { | ||
101 | .type = "88PM860x", | ||
102 | .addr = 0x34, | ||
103 | .platform_data = &evb3_pm8607_info, | ||
104 | .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), | ||
105 | }, | ||
106 | }; | ||
107 | |||
108 | static void __init evb3_init_i2c(void) | ||
109 | { | ||
110 | pxa_set_i2c_info(NULL); | ||
111 | i2c_register_board_info(0, ARRAY_AND_SIZE(evb3_i2c_info)); | ||
112 | } | ||
113 | #else | ||
114 | static inline void evb3_init_i2c(void) {} | ||
115 | #endif | ||
116 | |||
117 | static void __init evb3_init(void) | ||
118 | { | ||
119 | /* initialize MFP configurations */ | ||
120 | pxa3xx_mfp_config(ARRAY_AND_SIZE(evb3_mfp_cfg)); | ||
121 | |||
122 | pxa_set_ffuart_info(NULL); | ||
123 | |||
124 | evb3_init_i2c(); | ||
125 | } | ||
126 | |||
127 | MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)") | ||
128 | .atag_offset = 0x100, | ||
129 | .map_io = pxa3xx_map_io, | ||
130 | .nr_irqs = TAVOREVB3_NR_IRQS, | ||
131 | .init_irq = pxa3xx_init_irq, | ||
132 | .handle_irq = pxa3xx_handle_irq, | ||
133 | .timer = &pxa_timer, | ||
134 | .init_machine = evb3_init, | ||
135 | .restart = pxa_restart, | ||
136 | MACHINE_END | ||
diff --git a/arch/arm/mach-s3c24xx/clock-s3c2443.c b/arch/arm/mach-s3c24xx/clock-s3c2443.c index 7f689ce1be61..bdaba59b42dc 100644 --- a/arch/arm/mach-s3c24xx/clock-s3c2443.c +++ b/arch/arm/mach-s3c24xx/clock-s3c2443.c | |||
@@ -158,12 +158,6 @@ static struct clk init_clocks_off[] = { | |||
158 | .devname = "s3c2410-spi.0", | 158 | .devname = "s3c2410-spi.0", |
159 | .parent = &clk_p, | 159 | .parent = &clk_p, |
160 | .enable = s3c2443_clkcon_enable_p, | 160 | .enable = s3c2443_clkcon_enable_p, |
161 | .ctrlbit = S3C2443_PCLKCON_SPI0, | ||
162 | }, { | ||
163 | .name = "spi", | ||
164 | .devname = "s3c2410-spi.1", | ||
165 | .parent = &clk_p, | ||
166 | .enable = s3c2443_clkcon_enable_p, | ||
167 | .ctrlbit = S3C2443_PCLKCON_SPI1, | 161 | .ctrlbit = S3C2443_PCLKCON_SPI1, |
168 | } | 162 | } |
169 | }; | 163 | }; |
diff --git a/arch/arm/mach-s3c64xx/clock.c b/arch/arm/mach-s3c64xx/clock.c index 28041e83dc82..1a6f85777449 100644 --- a/arch/arm/mach-s3c64xx/clock.c +++ b/arch/arm/mach-s3c64xx/clock.c | |||
@@ -138,11 +138,7 @@ static struct clk init_clocks_off[] = { | |||
138 | .ctrlbit = S3C_CLKCON_PCLK_TSADC, | 138 | .ctrlbit = S3C_CLKCON_PCLK_TSADC, |
139 | }, { | 139 | }, { |
140 | .name = "i2c", | 140 | .name = "i2c", |
141 | #ifdef CONFIG_S3C_DEV_I2C1 | ||
142 | .devname = "s3c2440-i2c.0", | 141 | .devname = "s3c2440-i2c.0", |
143 | #else | ||
144 | .devname = "s3c2440-i2c", | ||
145 | #endif | ||
146 | .parent = &clk_p, | 142 | .parent = &clk_p, |
147 | .enable = s3c64xx_pclk_ctrl, | 143 | .enable = s3c64xx_pclk_ctrl, |
148 | .ctrlbit = S3C_CLKCON_PCLK_IIC, | 144 | .ctrlbit = S3C_CLKCON_PCLK_IIC, |
@@ -319,10 +315,6 @@ static struct clk init_clocks_off[] = { | |||
319 | .enable = s3c64xx_sclk_ctrl, | 315 | .enable = s3c64xx_sclk_ctrl, |
320 | .ctrlbit = S3C_CLKCON_SCLK_MFC, | 316 | .ctrlbit = S3C_CLKCON_SCLK_MFC, |
321 | }, { | 317 | }, { |
322 | .name = "cam", | ||
323 | .enable = s3c64xx_sclk_ctrl, | ||
324 | .ctrlbit = S3C_CLKCON_SCLK_CAM, | ||
325 | }, { | ||
326 | .name = "sclk_jpeg", | 318 | .name = "sclk_jpeg", |
327 | .enable = s3c64xx_sclk_ctrl, | 319 | .enable = s3c64xx_sclk_ctrl, |
328 | .ctrlbit = S3C_CLKCON_SCLK_JPEG, | 320 | .ctrlbit = S3C_CLKCON_SCLK_JPEG, |
@@ -681,15 +673,6 @@ static struct clksrc_sources clkset_audio2 = { | |||
681 | .nr_sources = ARRAY_SIZE(clkset_audio2_list), | 673 | .nr_sources = ARRAY_SIZE(clkset_audio2_list), |
682 | }; | 674 | }; |
683 | 675 | ||
684 | static struct clk *clkset_camif_list[] = { | ||
685 | &clk_h2, | ||
686 | }; | ||
687 | |||
688 | static struct clksrc_sources clkset_camif = { | ||
689 | .sources = clkset_camif_list, | ||
690 | .nr_sources = ARRAY_SIZE(clkset_camif_list), | ||
691 | }; | ||
692 | |||
693 | static struct clksrc_clk clksrcs[] = { | 676 | static struct clksrc_clk clksrcs[] = { |
694 | { | 677 | { |
695 | .clk = { | 678 | .clk = { |
@@ -744,10 +727,9 @@ static struct clksrc_clk clksrcs[] = { | |||
744 | .name = "camera", | 727 | .name = "camera", |
745 | .ctrlbit = S3C_CLKCON_SCLK_CAM, | 728 | .ctrlbit = S3C_CLKCON_SCLK_CAM, |
746 | .enable = s3c64xx_sclk_ctrl, | 729 | .enable = s3c64xx_sclk_ctrl, |
730 | .parent = &clk_h2, | ||
747 | }, | 731 | }, |
748 | .reg_div = { .reg = S3C_CLK_DIV0, .shift = 20, .size = 4 }, | 732 | .reg_div = { .reg = S3C_CLK_DIV0, .shift = 20, .size = 4 }, |
749 | .reg_src = { .reg = NULL, .shift = 0, .size = 0 }, | ||
750 | .sources = &clkset_camif, | ||
751 | }, | 733 | }, |
752 | }; | 734 | }; |
753 | 735 | ||
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c index be746e33e86c..aef303b8997e 100644 --- a/arch/arm/mach-s3c64xx/common.c +++ b/arch/arm/mach-s3c64xx/common.c | |||
@@ -155,7 +155,6 @@ void __init s3c64xx_init_io(struct map_desc *mach_desc, int size) | |||
155 | /* initialise the io descriptors we need for initialisation */ | 155 | /* initialise the io descriptors we need for initialisation */ |
156 | iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc)); | 156 | iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc)); |
157 | iotable_init(mach_desc, size); | 157 | iotable_init(mach_desc, size); |
158 | init_consistent_dma_size(SZ_8M); | ||
159 | 158 | ||
160 | /* detect cpu id */ | 159 | /* detect cpu id */ |
161 | s3c64xx_init_cpu(); | 160 | s3c64xx_init_cpu(); |
diff --git a/arch/arm/mach-s5p64x0/common.c b/arch/arm/mach-s5p64x0/common.c index 111e404a81fd..8ae5800e807f 100644 --- a/arch/arm/mach-s5p64x0/common.c +++ b/arch/arm/mach-s5p64x0/common.c | |||
@@ -187,7 +187,6 @@ void __init s5p6440_map_io(void) | |||
187 | s5p6440_default_sdhci2(); | 187 | s5p6440_default_sdhci2(); |
188 | 188 | ||
189 | iotable_init(s5p6440_iodesc, ARRAY_SIZE(s5p6440_iodesc)); | 189 | iotable_init(s5p6440_iodesc, ARRAY_SIZE(s5p6440_iodesc)); |
190 | init_consistent_dma_size(SZ_8M); | ||
191 | } | 190 | } |
192 | 191 | ||
193 | void __init s5p6450_map_io(void) | 192 | void __init s5p6450_map_io(void) |
@@ -202,7 +201,6 @@ void __init s5p6450_map_io(void) | |||
202 | s5p6450_default_sdhci2(); | 201 | s5p6450_default_sdhci2(); |
203 | 202 | ||
204 | iotable_init(s5p6450_iodesc, ARRAY_SIZE(s5p6450_iodesc)); | 203 | iotable_init(s5p6450_iodesc, ARRAY_SIZE(s5p6450_iodesc)); |
205 | init_consistent_dma_size(SZ_8M); | ||
206 | } | 204 | } |
207 | 205 | ||
208 | /* | 206 | /* |
diff --git a/arch/arm/mach-s5pv210/common.c b/arch/arm/mach-s5pv210/common.c index a0c50efe8145..9dfe93e2624d 100644 --- a/arch/arm/mach-s5pv210/common.c +++ b/arch/arm/mach-s5pv210/common.c | |||
@@ -169,8 +169,6 @@ void __init s5pv210_init_io(struct map_desc *mach_desc, int size) | |||
169 | 169 | ||
170 | void __init s5pv210_map_io(void) | 170 | void __init s5pv210_map_io(void) |
171 | { | 171 | { |
172 | init_consistent_dma_size(14 << 20); | ||
173 | |||
174 | /* initialise device information early */ | 172 | /* initialise device information early */ |
175 | s5pv210_default_sdhci0(); | 173 | s5pv210_default_sdhci0(); |
176 | s5pv210_default_sdhci1(); | 174 | s5pv210_default_sdhci1(); |
diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c index 55e1dba4ffde..c72b31078c99 100644 --- a/arch/arm/mach-s5pv210/mach-goni.c +++ b/arch/arm/mach-s5pv210/mach-goni.c | |||
@@ -774,7 +774,6 @@ static void __init goni_pmic_init(void) | |||
774 | /* MoviNAND */ | 774 | /* MoviNAND */ |
775 | static struct s3c_sdhci_platdata goni_hsmmc0_data __initdata = { | 775 | static struct s3c_sdhci_platdata goni_hsmmc0_data __initdata = { |
776 | .max_width = 4, | 776 | .max_width = 4, |
777 | .host_caps2 = MMC_CAP2_BROKEN_VOLTAGE, | ||
778 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 777 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
779 | }; | 778 | }; |
780 | 779 | ||
diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c index 11bb1d984197..96f11394c7c0 100644 --- a/arch/arm/mach-shmobile/setup-r8a7740.c +++ b/arch/arm/mach-shmobile/setup-r8a7740.c | |||
@@ -66,12 +66,6 @@ static struct map_desc r8a7740_io_desc[] __initdata = { | |||
66 | void __init r8a7740_map_io(void) | 66 | void __init r8a7740_map_io(void) |
67 | { | 67 | { |
68 | iotable_init(r8a7740_io_desc, ARRAY_SIZE(r8a7740_io_desc)); | 68 | iotable_init(r8a7740_io_desc, ARRAY_SIZE(r8a7740_io_desc)); |
69 | |||
70 | /* | ||
71 | * DMA memory at 0xff200000 - 0xffdfffff. The default 2MB size isn't | ||
72 | * enough to allocate the frame buffer memory. | ||
73 | */ | ||
74 | init_consistent_dma_size(12 << 20); | ||
75 | } | 69 | } |
76 | 70 | ||
77 | /* SCIFA0 */ | 71 | /* SCIFA0 */ |
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index a07954fbcd22..be6f746c97fa 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c | |||
@@ -58,12 +58,6 @@ static struct map_desc sh7372_io_desc[] __initdata = { | |||
58 | void __init sh7372_map_io(void) | 58 | void __init sh7372_map_io(void) |
59 | { | 59 | { |
60 | iotable_init(sh7372_io_desc, ARRAY_SIZE(sh7372_io_desc)); | 60 | iotable_init(sh7372_io_desc, ARRAY_SIZE(sh7372_io_desc)); |
61 | |||
62 | /* | ||
63 | * DMA memory at 0xff200000 - 0xffdfffff. The default 2MB size isn't | ||
64 | * enough to allocate the frame buffer memory. | ||
65 | */ | ||
66 | init_consistent_dma_size(12 << 20); | ||
67 | } | 61 | } |
68 | 62 | ||
69 | /* SCIFA0 */ | 63 | /* SCIFA0 */ |
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index 9aa653b3eb32..6cc23cc83509 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile | |||
@@ -12,10 +12,12 @@ obj-$(CONFIG_CPU_IDLE) += cpuidle.o | |||
12 | obj-$(CONFIG_CPU_IDLE) += sleep.o | 12 | obj-$(CONFIG_CPU_IDLE) += sleep.o |
13 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20_clocks.o | 13 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20_clocks.o |
14 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20_clocks_data.o | 14 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20_clocks_data.o |
15 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20_speedo.o | ||
15 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra2_emc.o | 16 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra2_emc.o |
16 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += sleep-t20.o | 17 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += sleep-t20.o |
17 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30_clocks.o | 18 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30_clocks.o |
18 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30_clocks_data.o | 19 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30_clocks_data.o |
20 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30_speedo.o | ||
19 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += sleep-t30.o | 21 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += sleep-t30.o |
20 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 22 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
21 | obj-$(CONFIG_SMP) += reset.o | 23 | obj-$(CONFIG_SMP) += reset.o |
diff --git a/arch/arm/mach-tegra/apbio.c b/arch/arm/mach-tegra/apbio.c index b5015d0f1912..d091675ba376 100644 --- a/arch/arm/mach-tegra/apbio.c +++ b/arch/arm/mach-tegra/apbio.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <mach/iomap.h> | ||
19 | #include <linux/of.h> | 18 | #include <linux/of.h> |
20 | #include <linux/dmaengine.h> | 19 | #include <linux/dmaengine.h> |
21 | #include <linux/dma-mapping.h> | 20 | #include <linux/dma-mapping.h> |
@@ -24,9 +23,8 @@ | |||
24 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
25 | #include <linux/mutex.h> | 24 | #include <linux/mutex.h> |
26 | 25 | ||
27 | #include <mach/dma.h> | ||
28 | |||
29 | #include "apbio.h" | 26 | #include "apbio.h" |
27 | #include "iomap.h" | ||
30 | 28 | ||
31 | #if defined(CONFIG_TEGRA20_APB_DMA) | 29 | #if defined(CONFIG_TEGRA20_APB_DMA) |
32 | static DEFINE_MUTEX(tegra_apb_dma_lock); | 30 | static DEFINE_MUTEX(tegra_apb_dma_lock); |
@@ -71,7 +69,6 @@ bool tegra_apb_dma_init(void) | |||
71 | 69 | ||
72 | dma_sconfig.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; | 70 | dma_sconfig.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; |
73 | dma_sconfig.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; | 71 | dma_sconfig.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; |
74 | dma_sconfig.slave_id = TEGRA_DMA_REQ_SEL_CNTR; | ||
75 | dma_sconfig.src_maxburst = 1; | 72 | dma_sconfig.src_maxburst = 1; |
76 | dma_sconfig.dst_maxburst = 1; | 73 | dma_sconfig.dst_maxburst = 1; |
77 | 74 | ||
diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index aa5325cd1c42..734d9cc87f2e 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c | |||
@@ -40,12 +40,10 @@ | |||
40 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
41 | #include <asm/setup.h> | 41 | #include <asm/setup.h> |
42 | 42 | ||
43 | #include <mach/iomap.h> | ||
44 | #include <mach/irqs.h> | ||
45 | |||
46 | #include "board.h" | 43 | #include "board.h" |
47 | #include "clock.h" | 44 | #include "clock.h" |
48 | #include "common.h" | 45 | #include "common.h" |
46 | #include "iomap.h" | ||
49 | 47 | ||
50 | struct tegra_ehci_platform_data tegra_ehci1_pdata = { | 48 | struct tegra_ehci_platform_data tegra_ehci1_pdata = { |
51 | .operating_mode = TEGRA_USB_OTG, | 49 | .operating_mode = TEGRA_USB_OTG, |
@@ -91,6 +89,17 @@ struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = { | |||
91 | &tegra_ehci3_pdata), | 89 | &tegra_ehci3_pdata), |
92 | OF_DEV_AUXDATA("nvidia,tegra20-apbdma", TEGRA_APB_DMA_BASE, "tegra-apbdma", NULL), | 90 | OF_DEV_AUXDATA("nvidia,tegra20-apbdma", TEGRA_APB_DMA_BASE, "tegra-apbdma", NULL), |
93 | OF_DEV_AUXDATA("nvidia,tegra20-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL), | 91 | OF_DEV_AUXDATA("nvidia,tegra20-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL), |
92 | OF_DEV_AUXDATA("nvidia,tegra20-sflash", 0x7000c380, "spi", NULL), | ||
93 | OF_DEV_AUXDATA("nvidia,tegra20-slink", 0x7000D400, "spi_tegra.0", NULL), | ||
94 | OF_DEV_AUXDATA("nvidia,tegra20-slink", 0x7000D600, "spi_tegra.1", NULL), | ||
95 | OF_DEV_AUXDATA("nvidia,tegra20-slink", 0x7000D800, "spi_tegra.2", NULL), | ||
96 | OF_DEV_AUXDATA("nvidia,tegra20-slink", 0x7000DA00, "spi_tegra.3", NULL), | ||
97 | OF_DEV_AUXDATA("nvidia,tegra20-host1x", 0x50000000, "host1x", NULL), | ||
98 | OF_DEV_AUXDATA("nvidia,tegra20-dc", 0x54200000, "tegradc.0", NULL), | ||
99 | OF_DEV_AUXDATA("nvidia,tegra20-dc", 0x54240000, "tegradc.1", NULL), | ||
100 | OF_DEV_AUXDATA("nvidia,tegra20-hdmi", 0x54280000, "hdmi", NULL), | ||
101 | OF_DEV_AUXDATA("nvidia,tegra20-dsi", 0x54300000, "dsi", NULL), | ||
102 | OF_DEV_AUXDATA("nvidia,tegra20-tvo", 0x542c0000, "tvo", NULL), | ||
94 | {} | 103 | {} |
95 | }; | 104 | }; |
96 | 105 | ||
@@ -104,8 +113,20 @@ static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { | |||
104 | { "pll_a", "pll_p_out1", 56448000, true }, | 113 | { "pll_a", "pll_p_out1", 56448000, true }, |
105 | { "pll_a_out0", "pll_a", 11289600, true }, | 114 | { "pll_a_out0", "pll_a", 11289600, true }, |
106 | { "cdev1", NULL, 0, true }, | 115 | { "cdev1", NULL, 0, true }, |
116 | { "blink", "clk_32k", 32768, true }, | ||
107 | { "i2s1", "pll_a_out0", 11289600, false}, | 117 | { "i2s1", "pll_a_out0", 11289600, false}, |
108 | { "i2s2", "pll_a_out0", 11289600, false}, | 118 | { "i2s2", "pll_a_out0", 11289600, false}, |
119 | { "sdmmc1", "pll_p", 48000000, false}, | ||
120 | { "sdmmc3", "pll_p", 48000000, false}, | ||
121 | { "sdmmc4", "pll_p", 48000000, false}, | ||
122 | { "spi", "pll_p", 20000000, false }, | ||
123 | { "sbc1", "pll_p", 100000000, false }, | ||
124 | { "sbc2", "pll_p", 100000000, false }, | ||
125 | { "sbc3", "pll_p", 100000000, false }, | ||
126 | { "sbc4", "pll_p", 100000000, false }, | ||
127 | { "host1x", "pll_c", 150000000, false }, | ||
128 | { "disp1", "pll_p", 600000000, false }, | ||
129 | { "disp2", "pll_p", 600000000, false }, | ||
109 | { NULL, NULL, 0, 0}, | 130 | { NULL, NULL, 0, 0}, |
110 | }; | 131 | }; |
111 | 132 | ||
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 5e92a81f9a2e..6497d1236b08 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c | |||
@@ -33,11 +33,10 @@ | |||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/hardware/gic.h> | 34 | #include <asm/hardware/gic.h> |
35 | 35 | ||
36 | #include <mach/iomap.h> | ||
37 | |||
38 | #include "board.h" | 36 | #include "board.h" |
39 | #include "clock.h" | 37 | #include "clock.h" |
40 | #include "common.h" | 38 | #include "common.h" |
39 | #include "iomap.h" | ||
41 | 40 | ||
42 | struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = { | 41 | struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = { |
43 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000000, "sdhci-tegra.0", NULL), | 42 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000000, "sdhci-tegra.0", NULL), |
@@ -52,6 +51,18 @@ struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = { | |||
52 | OF_DEV_AUXDATA("nvidia,tegra30-ahub", 0x70080000, "tegra30-ahub", NULL), | 51 | OF_DEV_AUXDATA("nvidia,tegra30-ahub", 0x70080000, "tegra30-ahub", NULL), |
53 | OF_DEV_AUXDATA("nvidia,tegra30-apbdma", 0x6000a000, "tegra-apbdma", NULL), | 52 | OF_DEV_AUXDATA("nvidia,tegra30-apbdma", 0x6000a000, "tegra-apbdma", NULL), |
54 | OF_DEV_AUXDATA("nvidia,tegra30-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL), | 53 | OF_DEV_AUXDATA("nvidia,tegra30-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL), |
54 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000D400, "spi_tegra.0", NULL), | ||
55 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000D600, "spi_tegra.1", NULL), | ||
56 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000D800, "spi_tegra.2", NULL), | ||
57 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000DA00, "spi_tegra.3", NULL), | ||
58 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000DC00, "spi_tegra.4", NULL), | ||
59 | OF_DEV_AUXDATA("nvidia,tegra30-slink", 0x7000DE00, "spi_tegra.5", NULL), | ||
60 | OF_DEV_AUXDATA("nvidia,tegra30-host1x", 0x50000000, "host1x", NULL), | ||
61 | OF_DEV_AUXDATA("nvidia,tegra30-dc", 0x54200000, "tegradc.0", NULL), | ||
62 | OF_DEV_AUXDATA("nvidia,tegra30-dc", 0x54240000, "tegradc.1", NULL), | ||
63 | OF_DEV_AUXDATA("nvidia,tegra30-hdmi", 0x54280000, "hdmi", NULL), | ||
64 | OF_DEV_AUXDATA("nvidia,tegra30-dsi", 0x54300000, "dsi", NULL), | ||
65 | OF_DEV_AUXDATA("nvidia,tegra30-tvo", 0x542c0000, "tvo", NULL), | ||
55 | {} | 66 | {} |
56 | }; | 67 | }; |
57 | 68 | ||
@@ -62,11 +73,24 @@ static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { | |||
62 | { "pll_a_out0", "pll_a", 11289600, true }, | 73 | { "pll_a_out0", "pll_a", 11289600, true }, |
63 | { "extern1", "pll_a_out0", 0, true }, | 74 | { "extern1", "pll_a_out0", 0, true }, |
64 | { "clk_out_1", "extern1", 0, true }, | 75 | { "clk_out_1", "extern1", 0, true }, |
76 | { "blink", "clk_32k", 32768, true }, | ||
65 | { "i2s0", "pll_a_out0", 11289600, false}, | 77 | { "i2s0", "pll_a_out0", 11289600, false}, |
66 | { "i2s1", "pll_a_out0", 11289600, false}, | 78 | { "i2s1", "pll_a_out0", 11289600, false}, |
67 | { "i2s2", "pll_a_out0", 11289600, false}, | 79 | { "i2s2", "pll_a_out0", 11289600, false}, |
68 | { "i2s3", "pll_a_out0", 11289600, false}, | 80 | { "i2s3", "pll_a_out0", 11289600, false}, |
69 | { "i2s4", "pll_a_out0", 11289600, false}, | 81 | { "i2s4", "pll_a_out0", 11289600, false}, |
82 | { "sdmmc1", "pll_p", 48000000, false}, | ||
83 | { "sdmmc3", "pll_p", 48000000, false}, | ||
84 | { "sdmmc4", "pll_p", 48000000, false}, | ||
85 | { "sbc1", "pll_p", 100000000, false}, | ||
86 | { "sbc2", "pll_p", 100000000, false}, | ||
87 | { "sbc3", "pll_p", 100000000, false}, | ||
88 | { "sbc4", "pll_p", 100000000, false}, | ||
89 | { "sbc5", "pll_p", 100000000, false}, | ||
90 | { "sbc6", "pll_p", 100000000, false}, | ||
91 | { "host1x", "pll_c", 150000000, false}, | ||
92 | { "disp1", "pll_p", 600000000, false}, | ||
93 | { "disp2", "pll_p", 600000000, false}, | ||
70 | { NULL, NULL, 0, 0}, | 94 | { NULL, NULL, 0, 0}, |
71 | }; | 95 | }; |
72 | 96 | ||
diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c index fd82085eca5d..867bf8bf5561 100644 --- a/arch/arm/mach-tegra/clock.c +++ b/arch/arm/mach-tegra/clock.c | |||
@@ -27,8 +27,6 @@ | |||
27 | #include <linux/seq_file.h> | 27 | #include <linux/seq_file.h> |
28 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
29 | 29 | ||
30 | #include <mach/clk.h> | ||
31 | |||
32 | #include "board.h" | 30 | #include "board.h" |
33 | #include "clock.h" | 31 | #include "clock.h" |
34 | #include "tegra_cpu_car.h" | 32 | #include "tegra_cpu_car.h" |
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index 0b0a5f556d34..3e03e5f15c14 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c | |||
@@ -26,13 +26,13 @@ | |||
26 | #include <asm/hardware/cache-l2x0.h> | 26 | #include <asm/hardware/cache-l2x0.h> |
27 | #include <asm/hardware/gic.h> | 27 | #include <asm/hardware/gic.h> |
28 | 28 | ||
29 | #include <mach/iomap.h> | ||
30 | #include <mach/powergate.h> | 29 | #include <mach/powergate.h> |
31 | 30 | ||
32 | #include "board.h" | 31 | #include "board.h" |
33 | #include "clock.h" | 32 | #include "clock.h" |
34 | #include "common.h" | 33 | #include "common.h" |
35 | #include "fuse.h" | 34 | #include "fuse.h" |
35 | #include "iomap.h" | ||
36 | #include "pmc.h" | 36 | #include "pmc.h" |
37 | #include "apbio.h" | 37 | #include "apbio.h" |
38 | #include "sleep.h" | 38 | #include "sleep.h" |
@@ -104,25 +104,26 @@ static __initdata struct tegra_clk_init_table tegra30_clk_init_table[] = { | |||
104 | { "clk_m", NULL, 0, true }, | 104 | { "clk_m", NULL, 0, true }, |
105 | { "pll_p", "clk_m", 408000000, true }, | 105 | { "pll_p", "clk_m", 408000000, true }, |
106 | { "pll_p_out1", "pll_p", 9600000, true }, | 106 | { "pll_p_out1", "pll_p", 9600000, true }, |
107 | { "pll_p_out4", "pll_p", 102000000, true }, | ||
108 | { "sclk", "pll_p_out4", 102000000, true }, | ||
109 | { "hclk", "sclk", 102000000, true }, | ||
110 | { "pclk", "hclk", 51000000, true }, | ||
107 | { NULL, NULL, 0, 0}, | 111 | { NULL, NULL, 0, 0}, |
108 | }; | 112 | }; |
109 | #endif | 113 | #endif |
110 | 114 | ||
111 | 115 | ||
112 | static void __init tegra_init_cache(u32 tag_latency, u32 data_latency) | 116 | static void __init tegra_init_cache(void) |
113 | { | 117 | { |
114 | #ifdef CONFIG_CACHE_L2X0 | 118 | #ifdef CONFIG_CACHE_L2X0 |
115 | void __iomem *p = IO_ADDRESS(TEGRA_ARM_PERIF_BASE) + 0x3000; | 119 | void __iomem *p = IO_ADDRESS(TEGRA_ARM_PERIF_BASE) + 0x3000; |
116 | u32 aux_ctrl, cache_type; | 120 | u32 aux_ctrl, cache_type; |
117 | 121 | ||
118 | writel_relaxed(tag_latency, p + L2X0_TAG_LATENCY_CTRL); | ||
119 | writel_relaxed(data_latency, p + L2X0_DATA_LATENCY_CTRL); | ||
120 | |||
121 | cache_type = readl(p + L2X0_CACHE_TYPE); | 122 | cache_type = readl(p + L2X0_CACHE_TYPE); |
122 | aux_ctrl = (cache_type & 0x700) << (17-8); | 123 | aux_ctrl = (cache_type & 0x700) << (17-8); |
123 | aux_ctrl |= 0x6C000001; | 124 | aux_ctrl |= 0x7C400001; |
124 | 125 | ||
125 | l2x0_init(p, aux_ctrl, 0x8200c3fe); | 126 | l2x0_of_init(aux_ctrl, 0x8200c3fe); |
126 | #endif | 127 | #endif |
127 | 128 | ||
128 | } | 129 | } |
@@ -134,7 +135,7 @@ void __init tegra20_init_early(void) | |||
134 | tegra_init_fuse(); | 135 | tegra_init_fuse(); |
135 | tegra2_init_clocks(); | 136 | tegra2_init_clocks(); |
136 | tegra_clk_init_from_table(tegra20_clk_init_table); | 137 | tegra_clk_init_from_table(tegra20_clk_init_table); |
137 | tegra_init_cache(0x331, 0x441); | 138 | tegra_init_cache(); |
138 | tegra_pmc_init(); | 139 | tegra_pmc_init(); |
139 | tegra_powergate_init(); | 140 | tegra_powergate_init(); |
140 | tegra20_hotplug_init(); | 141 | tegra20_hotplug_init(); |
@@ -147,7 +148,7 @@ void __init tegra30_init_early(void) | |||
147 | tegra_init_fuse(); | 148 | tegra_init_fuse(); |
148 | tegra30_init_clocks(); | 149 | tegra30_init_clocks(); |
149 | tegra_clk_init_from_table(tegra30_clk_init_table); | 150 | tegra_clk_init_from_table(tegra30_clk_init_table); |
150 | tegra_init_cache(0x441, 0x551); | 151 | tegra_init_cache(); |
151 | tegra_pmc_init(); | 152 | tegra_pmc_init(); |
152 | tegra_powergate_init(); | 153 | tegra_powergate_init(); |
153 | tegra30_hotplug_init(); | 154 | tegra30_hotplug_init(); |
diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c index 627bf0f4262e..a74d3c7d2e26 100644 --- a/arch/arm/mach-tegra/cpu-tegra.c +++ b/arch/arm/mach-tegra/cpu-tegra.c | |||
@@ -30,9 +30,6 @@ | |||
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/suspend.h> | 31 | #include <linux/suspend.h> |
32 | 32 | ||
33 | |||
34 | #include <mach/clk.h> | ||
35 | |||
36 | /* Frequency table index must be sequential starting at 0 */ | 33 | /* Frequency table index must be sequential starting at 0 */ |
37 | static struct cpufreq_frequency_table freq_table[] = { | 34 | static struct cpufreq_frequency_table freq_table[] = { |
38 | { 0, 216000 }, | 35 | { 0, 216000 }, |
diff --git a/arch/arm/mach-tegra/cpuidle.c b/arch/arm/mach-tegra/cpuidle.c index 566e2f88899b..9a6f051b382e 100644 --- a/arch/arm/mach-tegra/cpuidle.c +++ b/arch/arm/mach-tegra/cpuidle.c | |||
@@ -29,8 +29,6 @@ | |||
29 | 29 | ||
30 | #include <asm/proc-fns.h> | 30 | #include <asm/proc-fns.h> |
31 | 31 | ||
32 | #include <mach/iomap.h> | ||
33 | |||
34 | static int tegra_idle_enter_lp3(struct cpuidle_device *dev, | 32 | static int tegra_idle_enter_lp3(struct cpuidle_device *dev, |
35 | struct cpuidle_driver *drv, int index); | 33 | struct cpuidle_driver *drv, int index); |
36 | 34 | ||
diff --git a/arch/arm/mach-tegra/flowctrl.c b/arch/arm/mach-tegra/flowctrl.c index f07488e0bd32..ffaa286a71e1 100644 --- a/arch/arm/mach-tegra/flowctrl.c +++ b/arch/arm/mach-tegra/flowctrl.c | |||
@@ -22,9 +22,8 @@ | |||
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <mach/iomap.h> | ||
26 | |||
27 | #include "flowctrl.h" | 25 | #include "flowctrl.h" |
26 | #include "iomap.h" | ||
28 | 27 | ||
29 | u8 flowctrl_offset_halt_cpu[] = { | 28 | u8 flowctrl_offset_halt_cpu[] = { |
30 | FLOW_CTRL_HALT_CPU0_EVENTS, | 29 | FLOW_CTRL_HALT_CPU0_EVENTS, |
diff --git a/arch/arm/mach-tegra/fuse.c b/arch/arm/mach-tegra/fuse.c index 0b7db174a5de..8121742711fe 100644 --- a/arch/arm/mach-tegra/fuse.c +++ b/arch/arm/mach-tegra/fuse.c | |||
@@ -21,22 +21,28 @@ | |||
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | #include <linux/export.h> | 22 | #include <linux/export.h> |
23 | 23 | ||
24 | #include <mach/iomap.h> | ||
25 | |||
26 | #include "fuse.h" | 24 | #include "fuse.h" |
25 | #include "iomap.h" | ||
27 | #include "apbio.h" | 26 | #include "apbio.h" |
28 | 27 | ||
29 | #define FUSE_UID_LOW 0x108 | 28 | #define FUSE_UID_LOW 0x108 |
30 | #define FUSE_UID_HIGH 0x10c | 29 | #define FUSE_UID_HIGH 0x10c |
31 | #define FUSE_SKU_INFO 0x110 | 30 | #define FUSE_SKU_INFO 0x110 |
32 | #define FUSE_SPARE_BIT 0x200 | 31 | |
32 | #define TEGRA20_FUSE_SPARE_BIT 0x200 | ||
33 | #define TEGRA30_FUSE_SPARE_BIT 0x244 | ||
33 | 34 | ||
34 | int tegra_sku_id; | 35 | int tegra_sku_id; |
35 | int tegra_cpu_process_id; | 36 | int tegra_cpu_process_id; |
36 | int tegra_core_process_id; | 37 | int tegra_core_process_id; |
37 | int tegra_chip_id; | 38 | int tegra_chip_id; |
39 | int tegra_cpu_speedo_id; /* only exist in Tegra30 and later */ | ||
40 | int tegra_soc_speedo_id; | ||
38 | enum tegra_revision tegra_revision; | 41 | enum tegra_revision tegra_revision; |
39 | 42 | ||
43 | static int tegra_fuse_spare_bit; | ||
44 | static void (*tegra_init_speedo_data)(void); | ||
45 | |||
40 | /* The BCT to use at boot is specified by board straps that can be read | 46 | /* The BCT to use at boot is specified by board straps that can be read |
41 | * through a APB misc register and decoded. 2 bits, i.e. 4 possible BCTs. | 47 | * through a APB misc register and decoded. 2 bits, i.e. 4 possible BCTs. |
42 | */ | 48 | */ |
@@ -57,14 +63,14 @@ static const char *tegra_revision_name[TEGRA_REVISION_MAX] = { | |||
57 | [TEGRA_REVISION_A04] = "A04", | 63 | [TEGRA_REVISION_A04] = "A04", |
58 | }; | 64 | }; |
59 | 65 | ||
60 | static inline u32 tegra_fuse_readl(unsigned long offset) | 66 | u32 tegra_fuse_readl(unsigned long offset) |
61 | { | 67 | { |
62 | return tegra_apb_readl(TEGRA_FUSE_BASE + offset); | 68 | return tegra_apb_readl(TEGRA_FUSE_BASE + offset); |
63 | } | 69 | } |
64 | 70 | ||
65 | static inline bool get_spare_fuse(int bit) | 71 | bool tegra_spare_fuse(int bit) |
66 | { | 72 | { |
67 | return tegra_fuse_readl(FUSE_SPARE_BIT + bit * 4); | 73 | return tegra_fuse_readl(tegra_fuse_spare_bit + bit * 4); |
68 | } | 74 | } |
69 | 75 | ||
70 | static enum tegra_revision tegra_get_revision(u32 id) | 76 | static enum tegra_revision tegra_get_revision(u32 id) |
@@ -78,7 +84,7 @@ static enum tegra_revision tegra_get_revision(u32 id) | |||
78 | return TEGRA_REVISION_A02; | 84 | return TEGRA_REVISION_A02; |
79 | case 3: | 85 | case 3: |
80 | if (tegra_chip_id == TEGRA20 && | 86 | if (tegra_chip_id == TEGRA20 && |
81 | (get_spare_fuse(18) || get_spare_fuse(19))) | 87 | (tegra_spare_fuse(18) || tegra_spare_fuse(19))) |
82 | return TEGRA_REVISION_A03p; | 88 | return TEGRA_REVISION_A03p; |
83 | else | 89 | else |
84 | return TEGRA_REVISION_A03; | 90 | return TEGRA_REVISION_A03; |
@@ -89,6 +95,16 @@ static enum tegra_revision tegra_get_revision(u32 id) | |||
89 | } | 95 | } |
90 | } | 96 | } |
91 | 97 | ||
98 | static void tegra_get_process_id(void) | ||
99 | { | ||
100 | u32 reg; | ||
101 | |||
102 | reg = tegra_fuse_readl(tegra_fuse_spare_bit); | ||
103 | tegra_cpu_process_id = (reg >> 6) & 3; | ||
104 | reg = tegra_fuse_readl(tegra_fuse_spare_bit); | ||
105 | tegra_core_process_id = (reg >> 12) & 3; | ||
106 | } | ||
107 | |||
92 | void tegra_init_fuse(void) | 108 | void tegra_init_fuse(void) |
93 | { | 109 | { |
94 | u32 id; | 110 | u32 id; |
@@ -100,19 +116,29 @@ void tegra_init_fuse(void) | |||
100 | reg = tegra_fuse_readl(FUSE_SKU_INFO); | 116 | reg = tegra_fuse_readl(FUSE_SKU_INFO); |
101 | tegra_sku_id = reg & 0xFF; | 117 | tegra_sku_id = reg & 0xFF; |
102 | 118 | ||
103 | reg = tegra_fuse_readl(FUSE_SPARE_BIT); | ||
104 | tegra_cpu_process_id = (reg >> 6) & 3; | ||
105 | |||
106 | reg = tegra_fuse_readl(FUSE_SPARE_BIT); | ||
107 | tegra_core_process_id = (reg >> 12) & 3; | ||
108 | |||
109 | reg = tegra_apb_readl(TEGRA_APB_MISC_BASE + STRAP_OPT); | 119 | reg = tegra_apb_readl(TEGRA_APB_MISC_BASE + STRAP_OPT); |
110 | tegra_bct_strapping = (reg & RAM_ID_MASK) >> RAM_CODE_SHIFT; | 120 | tegra_bct_strapping = (reg & RAM_ID_MASK) >> RAM_CODE_SHIFT; |
111 | 121 | ||
112 | id = readl_relaxed(IO_ADDRESS(TEGRA_APB_MISC_BASE) + 0x804); | 122 | id = readl_relaxed(IO_ADDRESS(TEGRA_APB_MISC_BASE) + 0x804); |
113 | tegra_chip_id = (id >> 8) & 0xff; | 123 | tegra_chip_id = (id >> 8) & 0xff; |
114 | 124 | ||
125 | switch (tegra_chip_id) { | ||
126 | case TEGRA20: | ||
127 | tegra_fuse_spare_bit = TEGRA20_FUSE_SPARE_BIT; | ||
128 | tegra_init_speedo_data = &tegra20_init_speedo_data; | ||
129 | break; | ||
130 | case TEGRA30: | ||
131 | tegra_fuse_spare_bit = TEGRA30_FUSE_SPARE_BIT; | ||
132 | tegra_init_speedo_data = &tegra30_init_speedo_data; | ||
133 | break; | ||
134 | default: | ||
135 | pr_warn("Tegra: unknown chip id %d\n", tegra_chip_id); | ||
136 | tegra_fuse_spare_bit = TEGRA20_FUSE_SPARE_BIT; | ||
137 | tegra_init_speedo_data = &tegra_get_process_id; | ||
138 | } | ||
139 | |||
115 | tegra_revision = tegra_get_revision(id); | 140 | tegra_revision = tegra_get_revision(id); |
141 | tegra_init_speedo_data(); | ||
116 | 142 | ||
117 | pr_info("Tegra Revision: %s SKU: %d CPU Process: %d Core Process: %d\n", | 143 | pr_info("Tegra Revision: %s SKU: %d CPU Process: %d Core Process: %d\n", |
118 | tegra_revision_name[tegra_revision], | 144 | tegra_revision_name[tegra_revision], |
diff --git a/arch/arm/mach-tegra/fuse.h b/arch/arm/mach-tegra/fuse.h index d2107b2cb85a..ff1383dd61a7 100644 --- a/arch/arm/mach-tegra/fuse.h +++ b/arch/arm/mach-tegra/fuse.h | |||
@@ -42,11 +42,27 @@ extern int tegra_sku_id; | |||
42 | extern int tegra_cpu_process_id; | 42 | extern int tegra_cpu_process_id; |
43 | extern int tegra_core_process_id; | 43 | extern int tegra_core_process_id; |
44 | extern int tegra_chip_id; | 44 | extern int tegra_chip_id; |
45 | extern int tegra_cpu_speedo_id; /* only exist in Tegra30 and later */ | ||
46 | extern int tegra_soc_speedo_id; | ||
45 | extern enum tegra_revision tegra_revision; | 47 | extern enum tegra_revision tegra_revision; |
46 | 48 | ||
47 | extern int tegra_bct_strapping; | 49 | extern int tegra_bct_strapping; |
48 | 50 | ||
49 | unsigned long long tegra_chip_uid(void); | 51 | unsigned long long tegra_chip_uid(void); |
50 | void tegra_init_fuse(void); | 52 | void tegra_init_fuse(void); |
53 | bool tegra_spare_fuse(int bit); | ||
54 | u32 tegra_fuse_readl(unsigned long offset); | ||
55 | |||
56 | #ifdef CONFIG_ARCH_TEGRA_2x_SOC | ||
57 | void tegra20_init_speedo_data(void); | ||
58 | #else | ||
59 | static inline void tegra20_init_speedo_data(void) {} | ||
60 | #endif | ||
61 | |||
62 | #ifdef CONFIG_ARCH_TEGRA_3x_SOC | ||
63 | void tegra30_init_speedo_data(void); | ||
64 | #else | ||
65 | static inline void tegra30_init_speedo_data(void) {} | ||
66 | #endif | ||
51 | 67 | ||
52 | #endif | 68 | #endif |
diff --git a/arch/arm/mach-tegra/headsmp.S b/arch/arm/mach-tegra/headsmp.S index 6addc78cb6b2..93f0370cc95b 100644 --- a/arch/arm/mach-tegra/headsmp.S +++ b/arch/arm/mach-tegra/headsmp.S | |||
@@ -3,9 +3,8 @@ | |||
3 | 3 | ||
4 | #include <asm/cache.h> | 4 | #include <asm/cache.h> |
5 | 5 | ||
6 | #include <mach/iomap.h> | ||
7 | |||
8 | #include "flowctrl.h" | 6 | #include "flowctrl.h" |
7 | #include "iomap.h" | ||
9 | #include "reset.h" | 8 | #include "reset.h" |
10 | #include "sleep.h" | 9 | #include "sleep.h" |
11 | 10 | ||
diff --git a/arch/arm/mach-tegra/include/mach/debug-macro.S b/arch/arm/mach-tegra/include/mach/debug-macro.S index 8ce0661b8a3d..44ca7b1d8b8a 100644 --- a/arch/arm/mach-tegra/include/mach/debug-macro.S +++ b/arch/arm/mach-tegra/include/mach/debug-macro.S | |||
@@ -26,8 +26,8 @@ | |||
26 | 26 | ||
27 | #include <linux/serial_reg.h> | 27 | #include <linux/serial_reg.h> |
28 | 28 | ||
29 | #include <mach/iomap.h> | 29 | #include "../../iomap.h" |
30 | #include <mach/irammap.h> | 30 | #include "../../irammap.h" |
31 | 31 | ||
32 | .macro addruart, rp, rv, tmp | 32 | .macro addruart, rp, rv, tmp |
33 | adr \rp, 99f @ actual addr of 99f | 33 | adr \rp, 99f @ actual addr of 99f |
diff --git a/arch/arm/mach-tegra/include/mach/dma.h b/arch/arm/mach-tegra/include/mach/dma.h deleted file mode 100644 index 3081cc6dda3b..000000000000 --- a/arch/arm/mach-tegra/include/mach/dma.h +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/include/mach/dma.h | ||
3 | * | ||
4 | * Copyright (c) 2008-2009, NVIDIA Corporation. | ||
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, but WITHOUT | ||
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
14 | * more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License along | ||
17 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MACH_TEGRA_DMA_H | ||
22 | #define __MACH_TEGRA_DMA_H | ||
23 | |||
24 | #include <linux/list.h> | ||
25 | |||
26 | #define TEGRA_DMA_REQ_SEL_CNTR 0 | ||
27 | #define TEGRA_DMA_REQ_SEL_I2S_2 1 | ||
28 | #define TEGRA_DMA_REQ_SEL_I2S_1 2 | ||
29 | #define TEGRA_DMA_REQ_SEL_SPD_I 3 | ||
30 | #define TEGRA_DMA_REQ_SEL_UI_I 4 | ||
31 | #define TEGRA_DMA_REQ_SEL_MIPI 5 | ||
32 | #define TEGRA_DMA_REQ_SEL_I2S2_2 6 | ||
33 | #define TEGRA_DMA_REQ_SEL_I2S2_1 7 | ||
34 | #define TEGRA_DMA_REQ_SEL_UARTA 8 | ||
35 | #define TEGRA_DMA_REQ_SEL_UARTB 9 | ||
36 | #define TEGRA_DMA_REQ_SEL_UARTC 10 | ||
37 | #define TEGRA_DMA_REQ_SEL_SPI 11 | ||
38 | #define TEGRA_DMA_REQ_SEL_AC97 12 | ||
39 | #define TEGRA_DMA_REQ_SEL_ACMODEM 13 | ||
40 | #define TEGRA_DMA_REQ_SEL_SL4B 14 | ||
41 | #define TEGRA_DMA_REQ_SEL_SL2B1 15 | ||
42 | #define TEGRA_DMA_REQ_SEL_SL2B2 16 | ||
43 | #define TEGRA_DMA_REQ_SEL_SL2B3 17 | ||
44 | #define TEGRA_DMA_REQ_SEL_SL2B4 18 | ||
45 | #define TEGRA_DMA_REQ_SEL_UARTD 19 | ||
46 | #define TEGRA_DMA_REQ_SEL_UARTE 20 | ||
47 | #define TEGRA_DMA_REQ_SEL_I2C 21 | ||
48 | #define TEGRA_DMA_REQ_SEL_I2C2 22 | ||
49 | #define TEGRA_DMA_REQ_SEL_I2C3 23 | ||
50 | #define TEGRA_DMA_REQ_SEL_DVC_I2C 24 | ||
51 | #define TEGRA_DMA_REQ_SEL_OWR 25 | ||
52 | #define TEGRA_DMA_REQ_SEL_INVALID 31 | ||
53 | |||
54 | #endif | ||
diff --git a/arch/arm/mach-tegra/include/mach/powergate.h b/arch/arm/mach-tegra/include/mach/powergate.h index 4752b1a68f35..06763fe7529d 100644 --- a/arch/arm/mach-tegra/include/mach/powergate.h +++ b/arch/arm/mach-tegra/include/mach/powergate.h | |||
@@ -20,6 +20,8 @@ | |||
20 | #ifndef _MACH_TEGRA_POWERGATE_H_ | 20 | #ifndef _MACH_TEGRA_POWERGATE_H_ |
21 | #define _MACH_TEGRA_POWERGATE_H_ | 21 | #define _MACH_TEGRA_POWERGATE_H_ |
22 | 22 | ||
23 | struct clk; | ||
24 | |||
23 | #define TEGRA_POWERGATE_CPU 0 | 25 | #define TEGRA_POWERGATE_CPU 0 |
24 | #define TEGRA_POWERGATE_3D 1 | 26 | #define TEGRA_POWERGATE_3D 1 |
25 | #define TEGRA_POWERGATE_VENC 2 | 27 | #define TEGRA_POWERGATE_VENC 2 |
diff --git a/arch/arm/mach-tegra/include/mach/tegra-ahb.h b/arch/arm/mach-tegra/include/mach/tegra-ahb.h deleted file mode 100644 index e0f8c84b1d8c..000000000000 --- a/arch/arm/mach-tegra/include/mach/tegra-ahb.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TEGRA_AHB_H__ | ||
15 | #define __MACH_TEGRA_AHB_H__ | ||
16 | |||
17 | extern int tegra_ahb_enable_smmu(struct device_node *ahb); | ||
18 | |||
19 | #endif /* __MACH_TEGRA_AHB_H__ */ | ||
diff --git a/arch/arm/mach-tegra/include/mach/uncompress.h b/arch/arm/mach-tegra/include/mach/uncompress.h index 937c4c50219e..27725750ca3e 100644 --- a/arch/arm/mach-tegra/include/mach/uncompress.h +++ b/arch/arm/mach-tegra/include/mach/uncompress.h | |||
@@ -28,8 +28,8 @@ | |||
28 | #include <linux/types.h> | 28 | #include <linux/types.h> |
29 | #include <linux/serial_reg.h> | 29 | #include <linux/serial_reg.h> |
30 | 30 | ||
31 | #include <mach/iomap.h> | 31 | #include "../../iomap.h" |
32 | #include <mach/irammap.h> | 32 | #include "../../irammap.h" |
33 | 33 | ||
34 | #define BIT(x) (1 << (x)) | 34 | #define BIT(x) (1 << (x)) |
35 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) | 35 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) |
diff --git a/arch/arm/mach-tegra/io.c b/arch/arm/mach-tegra/io.c index 58b4baf9c483..7d09f301b3a1 100644 --- a/arch/arm/mach-tegra/io.c +++ b/arch/arm/mach-tegra/io.c | |||
@@ -26,9 +26,9 @@ | |||
26 | 26 | ||
27 | #include <asm/page.h> | 27 | #include <asm/page.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <mach/iomap.h> | ||
30 | 29 | ||
31 | #include "board.h" | 30 | #include "board.h" |
31 | #include "iomap.h" | ||
32 | 32 | ||
33 | static struct map_desc tegra_io_desc[] __initdata = { | 33 | static struct map_desc tegra_io_desc[] __initdata = { |
34 | { | 34 | { |
diff --git a/arch/arm/mach-tegra/include/mach/iomap.h b/arch/arm/mach-tegra/iomap.h index fee3a94c4549..53151030a07d 100644 --- a/arch/arm/mach-tegra/include/mach/iomap.h +++ b/arch/arm/mach-tegra/iomap.h | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-tegra/include/mach/iomap.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | 2 | * Copyright (C) 2010 Google, Inc. |
5 | * | 3 | * |
6 | * Author: | 4 | * Author: |
diff --git a/arch/arm/mach-tegra/include/mach/irammap.h b/arch/arm/mach-tegra/irammap.h index 0cbe63261854..0cbe63261854 100644 --- a/arch/arm/mach-tegra/include/mach/irammap.h +++ b/arch/arm/mach-tegra/irammap.h | |||
diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c index 2f5bd2db8e1f..b7886f183511 100644 --- a/arch/arm/mach-tegra/irq.c +++ b/arch/arm/mach-tegra/irq.c | |||
@@ -25,9 +25,8 @@ | |||
25 | 25 | ||
26 | #include <asm/hardware/gic.h> | 26 | #include <asm/hardware/gic.h> |
27 | 27 | ||
28 | #include <mach/iomap.h> | ||
29 | |||
30 | #include "board.h" | 28 | #include "board.h" |
29 | #include "iomap.h" | ||
31 | 30 | ||
32 | #define ICTLR_CPU_IEP_VFIQ 0x08 | 31 | #define ICTLR_CPU_IEP_VFIQ 0x08 |
33 | #define ICTLR_CPU_IEP_FIR 0x14 | 32 | #define ICTLR_CPU_IEP_FIR 0x14 |
diff --git a/arch/arm/mach-tegra/pcie.c b/arch/arm/mach-tegra/pcie.c index a8dba6489c9b..f18fc3ab4e58 100644 --- a/arch/arm/mach-tegra/pcie.c +++ b/arch/arm/mach-tegra/pcie.c | |||
@@ -37,11 +37,11 @@ | |||
37 | #include <asm/sizes.h> | 37 | #include <asm/sizes.h> |
38 | #include <asm/mach/pci.h> | 38 | #include <asm/mach/pci.h> |
39 | 39 | ||
40 | #include <mach/iomap.h> | ||
41 | #include <mach/clk.h> | 40 | #include <mach/clk.h> |
42 | #include <mach/powergate.h> | 41 | #include <mach/powergate.h> |
43 | 42 | ||
44 | #include "board.h" | 43 | #include "board.h" |
44 | #include "iomap.h" | ||
45 | 45 | ||
46 | /* register definitions */ | 46 | /* register definitions */ |
47 | #define AFI_OFFSET 0x3800 | 47 | #define AFI_OFFSET 0x3800 |
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c index 81cb26591acf..1b926df99c4b 100644 --- a/arch/arm/mach-tegra/platsmp.c +++ b/arch/arm/mach-tegra/platsmp.c | |||
@@ -24,8 +24,6 @@ | |||
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/smp_scu.h> | 25 | #include <asm/smp_scu.h> |
26 | 26 | ||
27 | #include <mach/clk.h> | ||
28 | #include <mach/iomap.h> | ||
29 | #include <mach/powergate.h> | 27 | #include <mach/powergate.h> |
30 | 28 | ||
31 | #include "fuse.h" | 29 | #include "fuse.h" |
@@ -34,6 +32,7 @@ | |||
34 | #include "tegra_cpu_car.h" | 32 | #include "tegra_cpu_car.h" |
35 | 33 | ||
36 | #include "common.h" | 34 | #include "common.h" |
35 | #include "iomap.h" | ||
37 | 36 | ||
38 | extern void tegra_secondary_startup(void); | 37 | extern void tegra_secondary_startup(void); |
39 | 38 | ||
diff --git a/arch/arm/mach-tegra/pmc.c b/arch/arm/mach-tegra/pmc.c index 7af6a54404be..d4fdb5fcec20 100644 --- a/arch/arm/mach-tegra/pmc.c +++ b/arch/arm/mach-tegra/pmc.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/of.h> | 20 | #include <linux/of.h> |
21 | 21 | ||
22 | #include <mach/iomap.h> | 22 | #include "iomap.h" |
23 | 23 | ||
24 | #define PMC_CTRL 0x0 | 24 | #define PMC_CTRL 0x0 |
25 | #define PMC_CTRL_INTR_LOW (1 << 17) | 25 | #define PMC_CTRL_INTR_LOW (1 << 17) |
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index de0662de28a0..2cc1185d902e 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c | |||
@@ -28,10 +28,10 @@ | |||
28 | #include <linux/spinlock.h> | 28 | #include <linux/spinlock.h> |
29 | 29 | ||
30 | #include <mach/clk.h> | 30 | #include <mach/clk.h> |
31 | #include <mach/iomap.h> | ||
32 | #include <mach/powergate.h> | 31 | #include <mach/powergate.h> |
33 | 32 | ||
34 | #include "fuse.h" | 33 | #include "fuse.h" |
34 | #include "iomap.h" | ||
35 | 35 | ||
36 | #define PWRGATE_TOGGLE 0x30 | 36 | #define PWRGATE_TOGGLE 0x30 |
37 | #define PWRGATE_TOGGLE_START (1 << 8) | 37 | #define PWRGATE_TOGGLE_START (1 << 8) |
diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.c index 5beb7ebe2948..e05da7d10c3b 100644 --- a/arch/arm/mach-tegra/reset.c +++ b/arch/arm/mach-tegra/reset.c | |||
@@ -22,9 +22,8 @@ | |||
22 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
23 | #include <asm/hardware/cache-l2x0.h> | 23 | #include <asm/hardware/cache-l2x0.h> |
24 | 24 | ||
25 | #include <mach/iomap.h> | 25 | #include "iomap.h" |
26 | #include <mach/irammap.h> | 26 | #include "irammap.h" |
27 | |||
28 | #include "reset.h" | 27 | #include "reset.h" |
29 | #include "fuse.h" | 28 | #include "fuse.h" |
30 | 29 | ||
diff --git a/arch/arm/mach-tegra/sleep-t20.S b/arch/arm/mach-tegra/sleep-t20.S index a36ae413e2b8..72ce709799da 100644 --- a/arch/arm/mach-tegra/sleep-t20.S +++ b/arch/arm/mach-tegra/sleep-t20.S | |||
@@ -22,8 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/assembler.h> | 23 | #include <asm/assembler.h> |
24 | 24 | ||
25 | #include <mach/iomap.h> | ||
26 | |||
27 | #include "sleep.h" | 25 | #include "sleep.h" |
28 | #include "flowctrl.h" | 26 | #include "flowctrl.h" |
29 | 27 | ||
diff --git a/arch/arm/mach-tegra/sleep-t30.S b/arch/arm/mach-tegra/sleep-t30.S index 777d9cee8b90..be7614b7c5cb 100644 --- a/arch/arm/mach-tegra/sleep-t30.S +++ b/arch/arm/mach-tegra/sleep-t30.S | |||
@@ -18,8 +18,6 @@ | |||
18 | 18 | ||
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | 20 | ||
21 | #include <mach/iomap.h> | ||
22 | |||
23 | #include "sleep.h" | 21 | #include "sleep.h" |
24 | #include "flowctrl.h" | 22 | #include "flowctrl.h" |
25 | 23 | ||
diff --git a/arch/arm/mach-tegra/sleep.S b/arch/arm/mach-tegra/sleep.S index ea81554c4833..08e9481c049e 100644 --- a/arch/arm/mach-tegra/sleep.S +++ b/arch/arm/mach-tegra/sleep.S | |||
@@ -26,7 +26,7 @@ | |||
26 | 26 | ||
27 | #include <asm/assembler.h> | 27 | #include <asm/assembler.h> |
28 | 28 | ||
29 | #include <mach/iomap.h> | 29 | #include "iomap.h" |
30 | 30 | ||
31 | #include "flowctrl.h" | 31 | #include "flowctrl.h" |
32 | #include "sleep.h" | 32 | #include "sleep.h" |
diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h index e25a7cd703d9..4889b281c5f9 100644 --- a/arch/arm/mach-tegra/sleep.h +++ b/arch/arm/mach-tegra/sleep.h | |||
@@ -17,7 +17,7 @@ | |||
17 | #ifndef __MACH_TEGRA_SLEEP_H | 17 | #ifndef __MACH_TEGRA_SLEEP_H |
18 | #define __MACH_TEGRA_SLEEP_H | 18 | #define __MACH_TEGRA_SLEEP_H |
19 | 19 | ||
20 | #include <mach/iomap.h> | 20 | #include "iomap.h" |
21 | 21 | ||
22 | #define TEGRA_ARM_PERIF_VIRT (TEGRA_ARM_PERIF_BASE - IO_CPU_PHYS \ | 22 | #define TEGRA_ARM_PERIF_VIRT (TEGRA_ARM_PERIF_BASE - IO_CPU_PHYS \ |
23 | + IO_CPU_VIRT) | 23 | + IO_CPU_VIRT) |
diff --git a/arch/arm/mach-tegra/tegra20_clocks.c b/arch/arm/mach-tegra/tegra20_clocks.c index deb873fb12b6..4eb6bc81a87b 100644 --- a/arch/arm/mach-tegra/tegra20_clocks.c +++ b/arch/arm/mach-tegra/tegra20_clocks.c | |||
@@ -27,10 +27,9 @@ | |||
27 | #include <linux/clkdev.h> | 27 | #include <linux/clkdev.h> |
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | 29 | ||
30 | #include <mach/iomap.h> | ||
31 | |||
32 | #include "clock.h" | 30 | #include "clock.h" |
33 | #include "fuse.h" | 31 | #include "fuse.h" |
32 | #include "iomap.h" | ||
34 | #include "tegra2_emc.h" | 33 | #include "tegra2_emc.h" |
35 | #include "tegra_cpu_car.h" | 34 | #include "tegra_cpu_car.h" |
36 | 35 | ||
diff --git a/arch/arm/mach-tegra/tegra20_clocks_data.c b/arch/arm/mach-tegra/tegra20_clocks_data.c index 8d398a33adf7..a23a0734e352 100644 --- a/arch/arm/mach-tegra/tegra20_clocks_data.c +++ b/arch/arm/mach-tegra/tegra20_clocks_data.c | |||
@@ -27,8 +27,6 @@ | |||
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | 29 | ||
30 | #include <mach/iomap.h> | ||
31 | |||
32 | #include "clock.h" | 30 | #include "clock.h" |
33 | #include "fuse.h" | 31 | #include "fuse.h" |
34 | #include "tegra2_emc.h" | 32 | #include "tegra2_emc.h" |
@@ -248,11 +246,16 @@ static struct clk_pll_freq_table tegra_pll_d_freq_table[] = { | |||
248 | { 19200000, 216000000, 135, 12, 1, 3}, | 246 | { 19200000, 216000000, 135, 12, 1, 3}, |
249 | { 26000000, 216000000, 216, 26, 1, 4}, | 247 | { 26000000, 216000000, 216, 26, 1, 4}, |
250 | 248 | ||
249 | { 12000000, 297000000, 99, 4, 1, 4 }, | ||
250 | { 12000000, 339000000, 113, 4, 1, 4 }, | ||
251 | |||
251 | { 12000000, 594000000, 594, 12, 1, 8}, | 252 | { 12000000, 594000000, 594, 12, 1, 8}, |
252 | { 13000000, 594000000, 594, 13, 1, 8}, | 253 | { 13000000, 594000000, 594, 13, 1, 8}, |
253 | { 19200000, 594000000, 495, 16, 1, 8}, | 254 | { 19200000, 594000000, 495, 16, 1, 8}, |
254 | { 26000000, 594000000, 594, 26, 1, 8}, | 255 | { 26000000, 594000000, 594, 26, 1, 8}, |
255 | 256 | ||
257 | { 12000000, 616000000, 616, 12, 1, 8}, | ||
258 | |||
256 | { 12000000, 1000000000, 1000, 12, 1, 12}, | 259 | { 12000000, 1000000000, 1000, 12, 1, 12}, |
257 | { 13000000, 1000000000, 1000, 13, 1, 12}, | 260 | { 13000000, 1000000000, 1000, 13, 1, 12}, |
258 | { 19200000, 1000000000, 625, 12, 1, 8}, | 261 | { 19200000, 1000000000, 625, 12, 1, 8}, |
@@ -1038,9 +1041,6 @@ static struct clk_duplicate tegra_clk_duplicates[] = { | |||
1038 | CLK_DUPLICATE("usbd", "utmip-pad", NULL), | 1041 | CLK_DUPLICATE("usbd", "utmip-pad", NULL), |
1039 | CLK_DUPLICATE("usbd", "tegra-ehci.0", NULL), | 1042 | CLK_DUPLICATE("usbd", "tegra-ehci.0", NULL), |
1040 | CLK_DUPLICATE("usbd", "tegra-otg", NULL), | 1043 | CLK_DUPLICATE("usbd", "tegra-otg", NULL), |
1041 | CLK_DUPLICATE("hdmi", "tegradc.0", "hdmi"), | ||
1042 | CLK_DUPLICATE("hdmi", "tegradc.1", "hdmi"), | ||
1043 | CLK_DUPLICATE("host1x", "tegra_grhost", "host1x"), | ||
1044 | CLK_DUPLICATE("2d", "tegra_grhost", "gr2d"), | 1044 | CLK_DUPLICATE("2d", "tegra_grhost", "gr2d"), |
1045 | CLK_DUPLICATE("3d", "tegra_grhost", "gr3d"), | 1045 | CLK_DUPLICATE("3d", "tegra_grhost", "gr3d"), |
1046 | CLK_DUPLICATE("epp", "tegra_grhost", "epp"), | 1046 | CLK_DUPLICATE("epp", "tegra_grhost", "epp"), |
@@ -1053,6 +1053,9 @@ static struct clk_duplicate tegra_clk_duplicates[] = { | |||
1053 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.1", "fast-clk"), | 1053 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.1", "fast-clk"), |
1054 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.2", "fast-clk"), | 1054 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.2", "fast-clk"), |
1055 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.3", "fast-clk"), | 1055 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.3", "fast-clk"), |
1056 | CLK_DUPLICATE("pll_p", "tegradc.0", "parent"), | ||
1057 | CLK_DUPLICATE("pll_p", "tegradc.1", "parent"), | ||
1058 | CLK_DUPLICATE("pll_d_out0", "hdmi", "parent"), | ||
1056 | }; | 1059 | }; |
1057 | 1060 | ||
1058 | #define CLK(dev, con, ck) \ | 1061 | #define CLK(dev, con, ck) \ |
diff --git a/arch/arm/mach-tegra/tegra20_speedo.c b/arch/arm/mach-tegra/tegra20_speedo.c new file mode 100644 index 000000000000..fa6eb570623f --- /dev/null +++ b/arch/arm/mach-tegra/tegra20_speedo.c | |||
@@ -0,0 +1,109 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/bug.h> | ||
19 | |||
20 | #include "fuse.h" | ||
21 | |||
22 | #define CPU_SPEEDO_LSBIT 20 | ||
23 | #define CPU_SPEEDO_MSBIT 29 | ||
24 | #define CPU_SPEEDO_REDUND_LSBIT 30 | ||
25 | #define CPU_SPEEDO_REDUND_MSBIT 39 | ||
26 | #define CPU_SPEEDO_REDUND_OFFS (CPU_SPEEDO_REDUND_MSBIT - CPU_SPEEDO_MSBIT) | ||
27 | |||
28 | #define CORE_SPEEDO_LSBIT 40 | ||
29 | #define CORE_SPEEDO_MSBIT 47 | ||
30 | #define CORE_SPEEDO_REDUND_LSBIT 48 | ||
31 | #define CORE_SPEEDO_REDUND_MSBIT 55 | ||
32 | #define CORE_SPEEDO_REDUND_OFFS (CORE_SPEEDO_REDUND_MSBIT - CORE_SPEEDO_MSBIT) | ||
33 | |||
34 | #define SPEEDO_MULT 4 | ||
35 | |||
36 | #define PROCESS_CORNERS_NUM 4 | ||
37 | |||
38 | #define SPEEDO_ID_SELECT_0(rev) ((rev) <= 2) | ||
39 | #define SPEEDO_ID_SELECT_1(sku) \ | ||
40 | (((sku) != 20) && ((sku) != 23) && ((sku) != 24) && \ | ||
41 | ((sku) != 27) && ((sku) != 28)) | ||
42 | |||
43 | enum { | ||
44 | SPEEDO_ID_0, | ||
45 | SPEEDO_ID_1, | ||
46 | SPEEDO_ID_2, | ||
47 | SPEEDO_ID_COUNT, | ||
48 | }; | ||
49 | |||
50 | static const u32 cpu_process_speedos[][PROCESS_CORNERS_NUM] = { | ||
51 | {315, 366, 420, UINT_MAX}, | ||
52 | {303, 368, 419, UINT_MAX}, | ||
53 | {316, 331, 383, UINT_MAX}, | ||
54 | }; | ||
55 | |||
56 | static const u32 core_process_speedos[][PROCESS_CORNERS_NUM] = { | ||
57 | {165, 195, 224, UINT_MAX}, | ||
58 | {165, 195, 224, UINT_MAX}, | ||
59 | {165, 195, 224, UINT_MAX}, | ||
60 | }; | ||
61 | |||
62 | void tegra20_init_speedo_data(void) | ||
63 | { | ||
64 | u32 reg; | ||
65 | u32 val; | ||
66 | int i; | ||
67 | |||
68 | BUILD_BUG_ON(ARRAY_SIZE(cpu_process_speedos) != SPEEDO_ID_COUNT); | ||
69 | BUILD_BUG_ON(ARRAY_SIZE(core_process_speedos) != SPEEDO_ID_COUNT); | ||
70 | |||
71 | if (SPEEDO_ID_SELECT_0(tegra_revision)) | ||
72 | tegra_soc_speedo_id = SPEEDO_ID_0; | ||
73 | else if (SPEEDO_ID_SELECT_1(tegra_sku_id)) | ||
74 | tegra_soc_speedo_id = SPEEDO_ID_1; | ||
75 | else | ||
76 | tegra_soc_speedo_id = SPEEDO_ID_2; | ||
77 | |||
78 | val = 0; | ||
79 | for (i = CPU_SPEEDO_MSBIT; i >= CPU_SPEEDO_LSBIT; i--) { | ||
80 | reg = tegra_spare_fuse(i) | | ||
81 | tegra_spare_fuse(i + CPU_SPEEDO_REDUND_OFFS); | ||
82 | val = (val << 1) | (reg & 0x1); | ||
83 | } | ||
84 | val = val * SPEEDO_MULT; | ||
85 | pr_debug("%s CPU speedo value %u\n", __func__, val); | ||
86 | |||
87 | for (i = 0; i < (PROCESS_CORNERS_NUM - 1); i++) { | ||
88 | if (val <= cpu_process_speedos[tegra_soc_speedo_id][i]) | ||
89 | break; | ||
90 | } | ||
91 | tegra_cpu_process_id = i; | ||
92 | |||
93 | val = 0; | ||
94 | for (i = CORE_SPEEDO_MSBIT; i >= CORE_SPEEDO_LSBIT; i--) { | ||
95 | reg = tegra_spare_fuse(i) | | ||
96 | tegra_spare_fuse(i + CORE_SPEEDO_REDUND_OFFS); | ||
97 | val = (val << 1) | (reg & 0x1); | ||
98 | } | ||
99 | val = val * SPEEDO_MULT; | ||
100 | pr_debug("%s Core speedo value %u\n", __func__, val); | ||
101 | |||
102 | for (i = 0; i < (PROCESS_CORNERS_NUM - 1); i++) { | ||
103 | if (val <= core_process_speedos[tegra_soc_speedo_id][i]) | ||
104 | break; | ||
105 | } | ||
106 | tegra_core_process_id = i; | ||
107 | |||
108 | pr_info("Tegra20 Soc Speedo ID %d", tegra_soc_speedo_id); | ||
109 | } | ||
diff --git a/arch/arm/mach-tegra/tegra2_emc.c b/arch/arm/mach-tegra/tegra2_emc.c index 5070d833bdd1..837c7b9ea63b 100644 --- a/arch/arm/mach-tegra/tegra2_emc.c +++ b/arch/arm/mach-tegra/tegra2_emc.c | |||
@@ -25,8 +25,6 @@ | |||
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/platform_data/tegra_emc.h> | 26 | #include <linux/platform_data/tegra_emc.h> |
27 | 27 | ||
28 | #include <mach/iomap.h> | ||
29 | |||
30 | #include "tegra2_emc.h" | 28 | #include "tegra2_emc.h" |
31 | #include "fuse.h" | 29 | #include "fuse.h" |
32 | 30 | ||
diff --git a/arch/arm/mach-tegra/tegra30_clocks.c b/arch/arm/mach-tegra/tegra30_clocks.c index e9de5dfd94ec..f5b453f4bf4d 100644 --- a/arch/arm/mach-tegra/tegra30_clocks.c +++ b/arch/arm/mach-tegra/tegra30_clocks.c | |||
@@ -31,10 +31,9 @@ | |||
31 | 31 | ||
32 | #include <asm/clkdev.h> | 32 | #include <asm/clkdev.h> |
33 | 33 | ||
34 | #include <mach/iomap.h> | ||
35 | |||
36 | #include "clock.h" | 34 | #include "clock.h" |
37 | #include "fuse.h" | 35 | #include "fuse.h" |
36 | #include "iomap.h" | ||
38 | #include "tegra_cpu_car.h" | 37 | #include "tegra_cpu_car.h" |
39 | 38 | ||
40 | #define USE_PLL_LOCK_BITS 0 | 39 | #define USE_PLL_LOCK_BITS 0 |
@@ -792,6 +791,112 @@ struct clk_ops tegra30_twd_ops = { | |||
792 | .recalc_rate = tegra30_twd_clk_recalc_rate, | 791 | .recalc_rate = tegra30_twd_clk_recalc_rate, |
793 | }; | 792 | }; |
794 | 793 | ||
794 | /* bus clock functions */ | ||
795 | static int tegra30_bus_clk_is_enabled(struct clk_hw *hw) | ||
796 | { | ||
797 | struct clk_tegra *c = to_clk_tegra(hw); | ||
798 | u32 val = clk_readl(c->reg); | ||
799 | |||
800 | c->state = ((val >> c->reg_shift) & BUS_CLK_DISABLE) ? OFF : ON; | ||
801 | return c->state; | ||
802 | } | ||
803 | |||
804 | static int tegra30_bus_clk_enable(struct clk_hw *hw) | ||
805 | { | ||
806 | struct clk_tegra *c = to_clk_tegra(hw); | ||
807 | u32 val; | ||
808 | |||
809 | val = clk_readl(c->reg); | ||
810 | val &= ~(BUS_CLK_DISABLE << c->reg_shift); | ||
811 | clk_writel(val, c->reg); | ||
812 | |||
813 | return 0; | ||
814 | } | ||
815 | |||
816 | static void tegra30_bus_clk_disable(struct clk_hw *hw) | ||
817 | { | ||
818 | struct clk_tegra *c = to_clk_tegra(hw); | ||
819 | u32 val; | ||
820 | |||
821 | val = clk_readl(c->reg); | ||
822 | val |= BUS_CLK_DISABLE << c->reg_shift; | ||
823 | clk_writel(val, c->reg); | ||
824 | } | ||
825 | |||
826 | static unsigned long tegra30_bus_clk_recalc_rate(struct clk_hw *hw, | ||
827 | unsigned long prate) | ||
828 | { | ||
829 | struct clk_tegra *c = to_clk_tegra(hw); | ||
830 | u32 val = clk_readl(c->reg); | ||
831 | u64 rate = prate; | ||
832 | |||
833 | c->div = ((val >> c->reg_shift) & BUS_CLK_DIV_MASK) + 1; | ||
834 | c->mul = 1; | ||
835 | |||
836 | if (c->mul != 0 && c->div != 0) { | ||
837 | rate *= c->mul; | ||
838 | rate += c->div - 1; /* round up */ | ||
839 | do_div(rate, c->div); | ||
840 | } | ||
841 | return rate; | ||
842 | } | ||
843 | |||
844 | static int tegra30_bus_clk_set_rate(struct clk_hw *hw, unsigned long rate, | ||
845 | unsigned long parent_rate) | ||
846 | { | ||
847 | struct clk_tegra *c = to_clk_tegra(hw); | ||
848 | int ret = -EINVAL; | ||
849 | u32 val; | ||
850 | int i; | ||
851 | |||
852 | val = clk_readl(c->reg); | ||
853 | for (i = 1; i <= 4; i++) { | ||
854 | if (rate == parent_rate / i) { | ||
855 | val &= ~(BUS_CLK_DIV_MASK << c->reg_shift); | ||
856 | val |= (i - 1) << c->reg_shift; | ||
857 | clk_writel(val, c->reg); | ||
858 | c->div = i; | ||
859 | c->mul = 1; | ||
860 | ret = 0; | ||
861 | break; | ||
862 | } | ||
863 | } | ||
864 | |||
865 | return ret; | ||
866 | } | ||
867 | |||
868 | static long tegra30_bus_clk_round_rate(struct clk_hw *hw, unsigned long rate, | ||
869 | unsigned long *prate) | ||
870 | { | ||
871 | unsigned long parent_rate = *prate; | ||
872 | s64 divider; | ||
873 | |||
874 | if (rate >= parent_rate) | ||
875 | return parent_rate; | ||
876 | |||
877 | divider = parent_rate; | ||
878 | divider += rate - 1; | ||
879 | do_div(divider, rate); | ||
880 | |||
881 | if (divider < 0) | ||
882 | return divider; | ||
883 | |||
884 | if (divider > 4) | ||
885 | divider = 4; | ||
886 | do_div(parent_rate, divider); | ||
887 | |||
888 | return parent_rate; | ||
889 | } | ||
890 | |||
891 | struct clk_ops tegra30_bus_ops = { | ||
892 | .is_enabled = tegra30_bus_clk_is_enabled, | ||
893 | .enable = tegra30_bus_clk_enable, | ||
894 | .disable = tegra30_bus_clk_disable, | ||
895 | .set_rate = tegra30_bus_clk_set_rate, | ||
896 | .round_rate = tegra30_bus_clk_round_rate, | ||
897 | .recalc_rate = tegra30_bus_clk_recalc_rate, | ||
898 | }; | ||
899 | |||
795 | /* Blink output functions */ | 900 | /* Blink output functions */ |
796 | static int tegra30_blink_clk_is_enabled(struct clk_hw *hw) | 901 | static int tegra30_blink_clk_is_enabled(struct clk_hw *hw) |
797 | { | 902 | { |
diff --git a/arch/arm/mach-tegra/tegra30_clocks.h b/arch/arm/mach-tegra/tegra30_clocks.h index f2f88fef6b8b..7a34adb2f72d 100644 --- a/arch/arm/mach-tegra/tegra30_clocks.h +++ b/arch/arm/mach-tegra/tegra30_clocks.h | |||
@@ -34,6 +34,7 @@ extern struct clk_ops tegra_clk_out_ops; | |||
34 | extern struct clk_ops tegra30_super_ops; | 34 | extern struct clk_ops tegra30_super_ops; |
35 | extern struct clk_ops tegra30_blink_clk_ops; | 35 | extern struct clk_ops tegra30_blink_clk_ops; |
36 | extern struct clk_ops tegra30_twd_ops; | 36 | extern struct clk_ops tegra30_twd_ops; |
37 | extern struct clk_ops tegra30_bus_ops; | ||
37 | extern struct clk_ops tegra30_periph_clk_ops; | 38 | extern struct clk_ops tegra30_periph_clk_ops; |
38 | extern struct clk_ops tegra30_dsib_clk_ops; | 39 | extern struct clk_ops tegra30_dsib_clk_ops; |
39 | extern struct clk_ops tegra_nand_clk_ops; | 40 | extern struct clk_ops tegra_nand_clk_ops; |
diff --git a/arch/arm/mach-tegra/tegra30_clocks_data.c b/arch/arm/mach-tegra/tegra30_clocks_data.c index 3d2e5532a9ea..6942c7add3bb 100644 --- a/arch/arm/mach-tegra/tegra30_clocks_data.c +++ b/arch/arm/mach-tegra/tegra30_clocks_data.c | |||
@@ -711,6 +711,50 @@ static struct clk tegra_clk_sclk = { | |||
711 | .num_parents = ARRAY_SIZE(mux_sclk), | 711 | .num_parents = ARRAY_SIZE(mux_sclk), |
712 | }; | 712 | }; |
713 | 713 | ||
714 | static const char *tegra_hclk_parent_names[] = { | ||
715 | "tegra_sclk", | ||
716 | }; | ||
717 | |||
718 | static struct clk *tegra_hclk_parents[] = { | ||
719 | &tegra_clk_sclk, | ||
720 | }; | ||
721 | |||
722 | static struct clk tegra_hclk; | ||
723 | static struct clk_tegra tegra_hclk_hw = { | ||
724 | .hw = { | ||
725 | .clk = &tegra_hclk, | ||
726 | }, | ||
727 | .flags = DIV_BUS, | ||
728 | .reg = 0x30, | ||
729 | .reg_shift = 4, | ||
730 | .max_rate = 378000000, | ||
731 | .min_rate = 12000000, | ||
732 | }; | ||
733 | DEFINE_CLK_TEGRA(hclk, 0, &tegra30_bus_ops, 0, tegra_hclk_parent_names, | ||
734 | tegra_hclk_parents, &tegra_clk_sclk); | ||
735 | |||
736 | static const char *tegra_pclk_parent_names[] = { | ||
737 | "tegra_hclk", | ||
738 | }; | ||
739 | |||
740 | static struct clk *tegra_pclk_parents[] = { | ||
741 | &tegra_hclk, | ||
742 | }; | ||
743 | |||
744 | static struct clk tegra_pclk; | ||
745 | static struct clk_tegra tegra_pclk_hw = { | ||
746 | .hw = { | ||
747 | .clk = &tegra_pclk, | ||
748 | }, | ||
749 | .flags = DIV_BUS, | ||
750 | .reg = 0x30, | ||
751 | .reg_shift = 0, | ||
752 | .max_rate = 167000000, | ||
753 | .min_rate = 12000000, | ||
754 | }; | ||
755 | DEFINE_CLK_TEGRA(pclk, 0, &tegra30_bus_ops, 0, tegra_pclk_parent_names, | ||
756 | tegra_pclk_parents, &tegra_hclk); | ||
757 | |||
714 | static const char *mux_blink[] = { | 758 | static const char *mux_blink[] = { |
715 | "clk_32k", | 759 | "clk_32k", |
716 | }; | 760 | }; |
@@ -1254,8 +1298,6 @@ struct clk_duplicate tegra_clk_duplicates[] = { | |||
1254 | CLK_DUPLICATE("usbd", "utmip-pad", NULL), | 1298 | CLK_DUPLICATE("usbd", "utmip-pad", NULL), |
1255 | CLK_DUPLICATE("usbd", "tegra-ehci.0", NULL), | 1299 | CLK_DUPLICATE("usbd", "tegra-ehci.0", NULL), |
1256 | CLK_DUPLICATE("usbd", "tegra-otg", NULL), | 1300 | CLK_DUPLICATE("usbd", "tegra-otg", NULL), |
1257 | CLK_DUPLICATE("hdmi", "tegradc.0", "hdmi"), | ||
1258 | CLK_DUPLICATE("hdmi", "tegradc.1", "hdmi"), | ||
1259 | CLK_DUPLICATE("dsib", "tegradc.0", "dsib"), | 1301 | CLK_DUPLICATE("dsib", "tegradc.0", "dsib"), |
1260 | CLK_DUPLICATE("dsia", "tegradc.1", "dsia"), | 1302 | CLK_DUPLICATE("dsia", "tegradc.1", "dsia"), |
1261 | CLK_DUPLICATE("bsev", "tegra-avp", "bsev"), | 1303 | CLK_DUPLICATE("bsev", "tegra-avp", "bsev"), |
@@ -1293,6 +1335,9 @@ struct clk_duplicate tegra_clk_duplicates[] = { | |||
1293 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.2", "fast-clk"), | 1335 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.2", "fast-clk"), |
1294 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.3", "fast-clk"), | 1336 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.3", "fast-clk"), |
1295 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.4", "fast-clk"), | 1337 | CLK_DUPLICATE("pll_p_out3", "tegra-i2c.4", "fast-clk"), |
1338 | CLK_DUPLICATE("pll_p", "tegradc.0", "parent"), | ||
1339 | CLK_DUPLICATE("pll_p", "tegradc.1", "parent"), | ||
1340 | CLK_DUPLICATE("pll_d2_out0", "hdmi", "parent"), | ||
1296 | }; | 1341 | }; |
1297 | 1342 | ||
1298 | struct clk *tegra_ptr_clks[] = { | 1343 | struct clk *tegra_ptr_clks[] = { |
@@ -1325,6 +1370,8 @@ struct clk *tegra_ptr_clks[] = { | |||
1325 | &tegra_cml1, | 1370 | &tegra_cml1, |
1326 | &tegra_pciex, | 1371 | &tegra_pciex, |
1327 | &tegra_clk_sclk, | 1372 | &tegra_clk_sclk, |
1373 | &tegra_hclk, | ||
1374 | &tegra_pclk, | ||
1328 | &tegra_clk_blink, | 1375 | &tegra_clk_blink, |
1329 | &tegra30_clk_twd, | 1376 | &tegra30_clk_twd, |
1330 | }; | 1377 | }; |
diff --git a/arch/arm/mach-tegra/tegra30_speedo.c b/arch/arm/mach-tegra/tegra30_speedo.c new file mode 100644 index 000000000000..125cb16424a6 --- /dev/null +++ b/arch/arm/mach-tegra/tegra30_speedo.c | |||
@@ -0,0 +1,292 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/bug.h> | ||
19 | |||
20 | #include "fuse.h" | ||
21 | |||
22 | #define CORE_PROCESS_CORNERS_NUM 1 | ||
23 | #define CPU_PROCESS_CORNERS_NUM 6 | ||
24 | |||
25 | #define FUSE_SPEEDO_CALIB_0 0x114 | ||
26 | #define FUSE_PACKAGE_INFO 0X1FC | ||
27 | #define FUSE_TEST_PROG_VER 0X128 | ||
28 | |||
29 | #define G_SPEEDO_BIT_MINUS1 58 | ||
30 | #define G_SPEEDO_BIT_MINUS1_R 59 | ||
31 | #define G_SPEEDO_BIT_MINUS2 60 | ||
32 | #define G_SPEEDO_BIT_MINUS2_R 61 | ||
33 | #define LP_SPEEDO_BIT_MINUS1 62 | ||
34 | #define LP_SPEEDO_BIT_MINUS1_R 63 | ||
35 | #define LP_SPEEDO_BIT_MINUS2 64 | ||
36 | #define LP_SPEEDO_BIT_MINUS2_R 65 | ||
37 | |||
38 | enum { | ||
39 | THRESHOLD_INDEX_0, | ||
40 | THRESHOLD_INDEX_1, | ||
41 | THRESHOLD_INDEX_2, | ||
42 | THRESHOLD_INDEX_3, | ||
43 | THRESHOLD_INDEX_4, | ||
44 | THRESHOLD_INDEX_5, | ||
45 | THRESHOLD_INDEX_6, | ||
46 | THRESHOLD_INDEX_7, | ||
47 | THRESHOLD_INDEX_8, | ||
48 | THRESHOLD_INDEX_9, | ||
49 | THRESHOLD_INDEX_10, | ||
50 | THRESHOLD_INDEX_11, | ||
51 | THRESHOLD_INDEX_COUNT, | ||
52 | }; | ||
53 | |||
54 | static const u32 core_process_speedos[][CORE_PROCESS_CORNERS_NUM] = { | ||
55 | {180}, | ||
56 | {170}, | ||
57 | {195}, | ||
58 | {180}, | ||
59 | {168}, | ||
60 | {192}, | ||
61 | {180}, | ||
62 | {170}, | ||
63 | {195}, | ||
64 | {180}, | ||
65 | {180}, | ||
66 | {180}, | ||
67 | }; | ||
68 | |||
69 | static const u32 cpu_process_speedos[][CPU_PROCESS_CORNERS_NUM] = { | ||
70 | {306, 338, 360, 376, UINT_MAX}, | ||
71 | {295, 336, 358, 375, UINT_MAX}, | ||
72 | {325, 325, 358, 375, UINT_MAX}, | ||
73 | {325, 325, 358, 375, UINT_MAX}, | ||
74 | {292, 324, 348, 364, UINT_MAX}, | ||
75 | {324, 324, 348, 364, UINT_MAX}, | ||
76 | {324, 324, 348, 364, UINT_MAX}, | ||
77 | {295, 336, 358, 375, UINT_MAX}, | ||
78 | {358, 358, 358, 358, 397, UINT_MAX}, | ||
79 | {364, 364, 364, 364, 397, UINT_MAX}, | ||
80 | {295, 336, 358, 375, 391, UINT_MAX}, | ||
81 | {295, 336, 358, 375, 391, UINT_MAX}, | ||
82 | }; | ||
83 | |||
84 | static int threshold_index; | ||
85 | static int package_id; | ||
86 | |||
87 | static void fuse_speedo_calib(u32 *speedo_g, u32 *speedo_lp) | ||
88 | { | ||
89 | u32 reg; | ||
90 | int ate_ver; | ||
91 | int bit_minus1; | ||
92 | int bit_minus2; | ||
93 | |||
94 | reg = tegra_fuse_readl(FUSE_SPEEDO_CALIB_0); | ||
95 | |||
96 | *speedo_lp = (reg & 0xFFFF) * 4; | ||
97 | *speedo_g = ((reg >> 16) & 0xFFFF) * 4; | ||
98 | |||
99 | ate_ver = tegra_fuse_readl(FUSE_TEST_PROG_VER); | ||
100 | pr_info("%s: ATE prog ver %d.%d\n", __func__, ate_ver/10, ate_ver%10); | ||
101 | |||
102 | if (ate_ver >= 26) { | ||
103 | bit_minus1 = tegra_spare_fuse(LP_SPEEDO_BIT_MINUS1); | ||
104 | bit_minus1 |= tegra_spare_fuse(LP_SPEEDO_BIT_MINUS1_R); | ||
105 | bit_minus2 = tegra_spare_fuse(LP_SPEEDO_BIT_MINUS2); | ||
106 | bit_minus2 |= tegra_spare_fuse(LP_SPEEDO_BIT_MINUS2_R); | ||
107 | *speedo_lp |= (bit_minus1 << 1) | bit_minus2; | ||
108 | |||
109 | bit_minus1 = tegra_spare_fuse(G_SPEEDO_BIT_MINUS1); | ||
110 | bit_minus1 |= tegra_spare_fuse(G_SPEEDO_BIT_MINUS1_R); | ||
111 | bit_minus2 = tegra_spare_fuse(G_SPEEDO_BIT_MINUS2); | ||
112 | bit_minus2 |= tegra_spare_fuse(G_SPEEDO_BIT_MINUS2_R); | ||
113 | *speedo_g |= (bit_minus1 << 1) | bit_minus2; | ||
114 | } else { | ||
115 | *speedo_lp |= 0x3; | ||
116 | *speedo_g |= 0x3; | ||
117 | } | ||
118 | } | ||
119 | |||
120 | static void rev_sku_to_speedo_ids(int rev, int sku) | ||
121 | { | ||
122 | switch (rev) { | ||
123 | case TEGRA_REVISION_A01: | ||
124 | tegra_cpu_speedo_id = 0; | ||
125 | tegra_soc_speedo_id = 0; | ||
126 | threshold_index = THRESHOLD_INDEX_0; | ||
127 | break; | ||
128 | case TEGRA_REVISION_A02: | ||
129 | case TEGRA_REVISION_A03: | ||
130 | switch (sku) { | ||
131 | case 0x87: | ||
132 | case 0x82: | ||
133 | tegra_cpu_speedo_id = 1; | ||
134 | tegra_soc_speedo_id = 1; | ||
135 | threshold_index = THRESHOLD_INDEX_1; | ||
136 | break; | ||
137 | case 0x81: | ||
138 | switch (package_id) { | ||
139 | case 1: | ||
140 | tegra_cpu_speedo_id = 2; | ||
141 | tegra_soc_speedo_id = 2; | ||
142 | threshold_index = THRESHOLD_INDEX_2; | ||
143 | break; | ||
144 | case 2: | ||
145 | tegra_cpu_speedo_id = 4; | ||
146 | tegra_soc_speedo_id = 1; | ||
147 | threshold_index = THRESHOLD_INDEX_7; | ||
148 | break; | ||
149 | default: | ||
150 | pr_err("Tegra30: Unknown pkg %d\n", package_id); | ||
151 | BUG(); | ||
152 | break; | ||
153 | } | ||
154 | break; | ||
155 | case 0x80: | ||
156 | switch (package_id) { | ||
157 | case 1: | ||
158 | tegra_cpu_speedo_id = 5; | ||
159 | tegra_soc_speedo_id = 2; | ||
160 | threshold_index = THRESHOLD_INDEX_8; | ||
161 | break; | ||
162 | case 2: | ||
163 | tegra_cpu_speedo_id = 6; | ||
164 | tegra_soc_speedo_id = 2; | ||
165 | threshold_index = THRESHOLD_INDEX_9; | ||
166 | break; | ||
167 | default: | ||
168 | pr_err("Tegra30: Unknown pkg %d\n", package_id); | ||
169 | BUG(); | ||
170 | break; | ||
171 | } | ||
172 | break; | ||
173 | case 0x83: | ||
174 | switch (package_id) { | ||
175 | case 1: | ||
176 | tegra_cpu_speedo_id = 7; | ||
177 | tegra_soc_speedo_id = 1; | ||
178 | threshold_index = THRESHOLD_INDEX_10; | ||
179 | break; | ||
180 | case 2: | ||
181 | tegra_cpu_speedo_id = 3; | ||
182 | tegra_soc_speedo_id = 2; | ||
183 | threshold_index = THRESHOLD_INDEX_3; | ||
184 | break; | ||
185 | default: | ||
186 | pr_err("Tegra30: Unknown pkg %d\n", package_id); | ||
187 | BUG(); | ||
188 | break; | ||
189 | } | ||
190 | break; | ||
191 | case 0x8F: | ||
192 | tegra_cpu_speedo_id = 8; | ||
193 | tegra_soc_speedo_id = 1; | ||
194 | threshold_index = THRESHOLD_INDEX_11; | ||
195 | break; | ||
196 | case 0x08: | ||
197 | tegra_cpu_speedo_id = 1; | ||
198 | tegra_soc_speedo_id = 1; | ||
199 | threshold_index = THRESHOLD_INDEX_4; | ||
200 | break; | ||
201 | case 0x02: | ||
202 | tegra_cpu_speedo_id = 2; | ||
203 | tegra_soc_speedo_id = 2; | ||
204 | threshold_index = THRESHOLD_INDEX_5; | ||
205 | break; | ||
206 | case 0x04: | ||
207 | tegra_cpu_speedo_id = 3; | ||
208 | tegra_soc_speedo_id = 2; | ||
209 | threshold_index = THRESHOLD_INDEX_6; | ||
210 | break; | ||
211 | case 0: | ||
212 | switch (package_id) { | ||
213 | case 1: | ||
214 | tegra_cpu_speedo_id = 2; | ||
215 | tegra_soc_speedo_id = 2; | ||
216 | threshold_index = THRESHOLD_INDEX_2; | ||
217 | break; | ||
218 | case 2: | ||
219 | tegra_cpu_speedo_id = 3; | ||
220 | tegra_soc_speedo_id = 2; | ||
221 | threshold_index = THRESHOLD_INDEX_3; | ||
222 | break; | ||
223 | default: | ||
224 | pr_err("Tegra30: Unknown pkg %d\n", package_id); | ||
225 | BUG(); | ||
226 | break; | ||
227 | } | ||
228 | break; | ||
229 | default: | ||
230 | pr_warn("Tegra30: Unknown SKU %d\n", sku); | ||
231 | tegra_cpu_speedo_id = 0; | ||
232 | tegra_soc_speedo_id = 0; | ||
233 | threshold_index = THRESHOLD_INDEX_0; | ||
234 | break; | ||
235 | } | ||
236 | break; | ||
237 | default: | ||
238 | pr_warn("Tegra30: Unknown chip rev %d\n", rev); | ||
239 | tegra_cpu_speedo_id = 0; | ||
240 | tegra_soc_speedo_id = 0; | ||
241 | threshold_index = THRESHOLD_INDEX_0; | ||
242 | break; | ||
243 | } | ||
244 | } | ||
245 | |||
246 | void tegra30_init_speedo_data(void) | ||
247 | { | ||
248 | u32 cpu_speedo_val; | ||
249 | u32 core_speedo_val; | ||
250 | int i; | ||
251 | |||
252 | BUILD_BUG_ON(ARRAY_SIZE(cpu_process_speedos) != | ||
253 | THRESHOLD_INDEX_COUNT); | ||
254 | BUILD_BUG_ON(ARRAY_SIZE(core_process_speedos) != | ||
255 | THRESHOLD_INDEX_COUNT); | ||
256 | |||
257 | package_id = tegra_fuse_readl(FUSE_PACKAGE_INFO) & 0x0F; | ||
258 | |||
259 | rev_sku_to_speedo_ids(tegra_revision, tegra_sku_id); | ||
260 | fuse_speedo_calib(&cpu_speedo_val, &core_speedo_val); | ||
261 | pr_debug("%s CPU speedo value %u\n", __func__, cpu_speedo_val); | ||
262 | pr_debug("%s Core speedo value %u\n", __func__, core_speedo_val); | ||
263 | |||
264 | for (i = 0; i < CPU_PROCESS_CORNERS_NUM; i++) { | ||
265 | if (cpu_speedo_val < cpu_process_speedos[threshold_index][i]) | ||
266 | break; | ||
267 | } | ||
268 | tegra_cpu_process_id = i - 1; | ||
269 | |||
270 | if (tegra_cpu_process_id == -1) { | ||
271 | pr_warn("Tegra30: CPU speedo value %3d out of range", | ||
272 | cpu_speedo_val); | ||
273 | tegra_cpu_process_id = 0; | ||
274 | tegra_cpu_speedo_id = 1; | ||
275 | } | ||
276 | |||
277 | for (i = 0; i < CORE_PROCESS_CORNERS_NUM; i++) { | ||
278 | if (core_speedo_val < core_process_speedos[threshold_index][i]) | ||
279 | break; | ||
280 | } | ||
281 | tegra_core_process_id = i - 1; | ||
282 | |||
283 | if (tegra_core_process_id == -1) { | ||
284 | pr_warn("Tegra30: CORE speedo value %3d out of range", | ||
285 | core_speedo_val); | ||
286 | tegra_core_process_id = 0; | ||
287 | tegra_soc_speedo_id = 1; | ||
288 | } | ||
289 | |||
290 | pr_info("Tegra30: CPU Speedo ID %d, Soc Speedo ID %d", | ||
291 | tegra_cpu_speedo_id, tegra_soc_speedo_id); | ||
292 | } | ||
diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c index d3b8c8e7368f..6ff503536512 100644 --- a/arch/arm/mach-tegra/timer.c +++ b/arch/arm/mach-tegra/timer.c | |||
@@ -31,11 +31,11 @@ | |||
31 | #include <asm/smp_twd.h> | 31 | #include <asm/smp_twd.h> |
32 | #include <asm/sched_clock.h> | 32 | #include <asm/sched_clock.h> |
33 | 33 | ||
34 | #include <mach/iomap.h> | ||
35 | #include <mach/irqs.h> | 34 | #include <mach/irqs.h> |
36 | 35 | ||
37 | #include "board.h" | 36 | #include "board.h" |
38 | #include "clock.h" | 37 | #include "clock.h" |
38 | #include "iomap.h" | ||
39 | 39 | ||
40 | #define RTC_SECONDS 0x08 | 40 | #define RTC_SECONDS 0x08 |
41 | #define RTC_SHADOW_SECONDS 0x0c | 41 | #define RTC_SHADOW_SECONDS 0x0c |
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index b8efac4daed8..d8632ebb1eaf 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c | |||
@@ -82,8 +82,6 @@ static struct map_desc u300_io_desc[] __initdata = { | |||
82 | static void __init u300_map_io(void) | 82 | static void __init u300_map_io(void) |
83 | { | 83 | { |
84 | iotable_init(u300_io_desc, ARRAY_SIZE(u300_io_desc)); | 84 | iotable_init(u300_io_desc, ARRAY_SIZE(u300_io_desc)); |
85 | /* We enable a real big DMA buffer if need be. */ | ||
86 | init_consistent_dma_size(SZ_4M); | ||
87 | } | 85 | } |
88 | 86 | ||
89 | /* | 87 | /* |
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c index 070629a95625..7adbed5df8a1 100644 --- a/arch/arm/mach-ux500/board-mop500-audio.c +++ b/arch/arm/mach-ux500/board-mop500-audio.c | |||
@@ -150,15 +150,6 @@ static struct platform_device snd_soc_mop500 = { | |||
150 | }, | 150 | }, |
151 | }; | 151 | }; |
152 | 152 | ||
153 | /* Platform device for Ux500-PCM */ | ||
154 | static struct platform_device ux500_pcm = { | ||
155 | .name = "ux500-pcm", | ||
156 | .id = 0, | ||
157 | .dev = { | ||
158 | .platform_data = NULL, | ||
159 | }, | ||
160 | }; | ||
161 | |||
162 | struct msp_i2s_platform_data msp2_platform_data = { | 153 | struct msp_i2s_platform_data msp2_platform_data = { |
163 | .id = MSP_I2S_2, | 154 | .id = MSP_I2S_2, |
164 | .msp_i2s_dma_rx = &msp2_dma_rx, | 155 | .msp_i2s_dma_rx = &msp2_dma_rx, |
@@ -186,10 +177,3 @@ void mop500_audio_init(struct device *parent) | |||
186 | db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1, | 177 | db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1, |
187 | &msp3_platform_data); | 178 | &msp3_platform_data); |
188 | } | 179 | } |
189 | |||
190 | /* Due for removal once the MSP driver has been fully DT:ed. */ | ||
191 | void mop500_of_audio_init(struct device *parent) | ||
192 | { | ||
193 | pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__); | ||
194 | platform_device_register(&ux500_pcm); | ||
195 | } | ||
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c index 8c979770d872..564f57d5d8a7 100644 --- a/arch/arm/mach-ux500/board-mop500-stuib.c +++ b/arch/arm/mach-ux500/board-mop500-stuib.c | |||
@@ -162,18 +162,6 @@ static struct bu21013_platform_device tsc_plat_device = { | |||
162 | .y_flip = true, | 162 | .y_flip = true, |
163 | }; | 163 | }; |
164 | 164 | ||
165 | static struct bu21013_platform_device tsc_plat2_device = { | ||
166 | .cs_en = bu21013_gpio_board_init, | ||
167 | .cs_dis = bu21013_gpio_board_exit, | ||
168 | .irq_read_val = bu21013_read_pin_val, | ||
169 | .irq = NOMADIK_GPIO_TO_IRQ(TOUCH_GPIO_PIN), | ||
170 | .touch_x_max = TOUCH_XMAX, | ||
171 | .touch_y_max = TOUCH_YMAX, | ||
172 | .ext_clk = false, | ||
173 | .x_flip = false, | ||
174 | .y_flip = true, | ||
175 | }; | ||
176 | |||
177 | static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { | 165 | static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { |
178 | { | 166 | { |
179 | I2C_BOARD_INFO("bu21013_tp", 0x5C), | 167 | I2C_BOARD_INFO("bu21013_tp", 0x5C), |
@@ -181,21 +169,17 @@ static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { | |||
181 | }, | 169 | }, |
182 | { | 170 | { |
183 | I2C_BOARD_INFO("bu21013_tp", 0x5D), | 171 | I2C_BOARD_INFO("bu21013_tp", 0x5D), |
184 | .platform_data = &tsc_plat2_device, | 172 | .platform_data = &tsc_plat_device, |
185 | }, | 173 | }, |
186 | 174 | ||
187 | }; | 175 | }; |
188 | 176 | ||
189 | void __init mop500_stuib_init(void) | 177 | void __init mop500_stuib_init(void) |
190 | { | 178 | { |
191 | if (machine_is_hrefv60()) { | 179 | if (machine_is_hrefv60()) |
192 | tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; | 180 | tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; |
193 | tsc_plat2_device.cs_pin = HREFV60_TOUCH_RST_GPIO; | 181 | else |
194 | } else { | ||
195 | tsc_plat_device.cs_pin = GPIO_BU21013_CS; | 182 | tsc_plat_device.cs_pin = GPIO_BU21013_CS; |
196 | tsc_plat2_device.cs_pin = GPIO_BU21013_CS; | ||
197 | |||
198 | } | ||
199 | 183 | ||
200 | mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, | 184 | mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, |
201 | ARRAY_SIZE(mop500_i2c0_devices_stuib)); | 185 | ARRAY_SIZE(mop500_i2c0_devices_stuib)); |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 416d436111f2..daa4237ac0dc 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -33,8 +33,6 @@ | |||
33 | #include <linux/smsc911x.h> | 33 | #include <linux/smsc911x.h> |
34 | #include <linux/gpio_keys.h> | 34 | #include <linux/gpio_keys.h> |
35 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
36 | #include <linux/of.h> | ||
37 | #include <linux/of_platform.h> | ||
38 | #include <linux/leds.h> | 36 | #include <linux/leds.h> |
39 | #include <linux/pinctrl/consumer.h> | 37 | #include <linux/pinctrl/consumer.h> |
40 | 38 | ||
@@ -464,7 +462,7 @@ static struct stedma40_chan_cfg ssp0_dma_cfg_tx = { | |||
464 | }; | 462 | }; |
465 | #endif | 463 | #endif |
466 | 464 | ||
467 | static struct pl022_ssp_controller ssp0_plat = { | 465 | struct pl022_ssp_controller ssp0_plat = { |
468 | .bus_id = 0, | 466 | .bus_id = 0, |
469 | #ifdef CONFIG_STE_DMA40 | 467 | #ifdef CONFIG_STE_DMA40 |
470 | .enable_dma = 1, | 468 | .enable_dma = 1, |
@@ -541,7 +539,7 @@ static struct stedma40_chan_cfg uart2_dma_cfg_tx = { | |||
541 | }; | 539 | }; |
542 | #endif | 540 | #endif |
543 | 541 | ||
544 | static struct amba_pl011_data uart0_plat = { | 542 | struct amba_pl011_data uart0_plat = { |
545 | #ifdef CONFIG_STE_DMA40 | 543 | #ifdef CONFIG_STE_DMA40 |
546 | .dma_filter = stedma40_filter, | 544 | .dma_filter = stedma40_filter, |
547 | .dma_rx_param = &uart0_dma_cfg_rx, | 545 | .dma_rx_param = &uart0_dma_cfg_rx, |
@@ -549,7 +547,7 @@ static struct amba_pl011_data uart0_plat = { | |||
549 | #endif | 547 | #endif |
550 | }; | 548 | }; |
551 | 549 | ||
552 | static struct amba_pl011_data uart1_plat = { | 550 | struct amba_pl011_data uart1_plat = { |
553 | #ifdef CONFIG_STE_DMA40 | 551 | #ifdef CONFIG_STE_DMA40 |
554 | .dma_filter = stedma40_filter, | 552 | .dma_filter = stedma40_filter, |
555 | .dma_rx_param = &uart1_dma_cfg_rx, | 553 | .dma_rx_param = &uart1_dma_cfg_rx, |
@@ -557,7 +555,7 @@ static struct amba_pl011_data uart1_plat = { | |||
557 | #endif | 555 | #endif |
558 | }; | 556 | }; |
559 | 557 | ||
560 | static struct amba_pl011_data uart2_plat = { | 558 | struct amba_pl011_data uart2_plat = { |
561 | #ifdef CONFIG_STE_DMA40 | 559 | #ifdef CONFIG_STE_DMA40 |
562 | .dma_filter = stedma40_filter, | 560 | .dma_filter = stedma40_filter, |
563 | .dma_rx_param = &uart2_dma_cfg_rx, | 561 | .dma_rx_param = &uart2_dma_cfg_rx, |
@@ -618,8 +616,6 @@ static void __init mop500_init_machine(void) | |||
618 | 616 | ||
619 | /* This board has full regulator constraints */ | 617 | /* This board has full regulator constraints */ |
620 | regulator_has_full_constraints(); | 618 | regulator_has_full_constraints(); |
621 | |||
622 | mop500_uib_init(); | ||
623 | } | 619 | } |
624 | 620 | ||
625 | static void __init snowball_init_machine(void) | 621 | static void __init snowball_init_machine(void) |
@@ -684,8 +680,6 @@ static void __init hrefv60_init_machine(void) | |||
684 | 680 | ||
685 | /* This board has full regulator constraints */ | 681 | /* This board has full regulator constraints */ |
686 | regulator_has_full_constraints(); | 682 | regulator_has_full_constraints(); |
687 | |||
688 | mop500_uib_init(); | ||
689 | } | 683 | } |
690 | 684 | ||
691 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | 685 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") |
@@ -721,135 +715,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | |||
721 | .timer = &ux500_timer, | 715 | .timer = &ux500_timer, |
722 | .handle_irq = gic_handle_irq, | 716 | .handle_irq = gic_handle_irq, |
723 | .init_machine = snowball_init_machine, | 717 | .init_machine = snowball_init_machine, |
724 | .init_late = ux500_init_late, | 718 | .init_late = NULL, |
725 | MACHINE_END | ||
726 | |||
727 | #ifdef CONFIG_MACH_UX500_DT | ||
728 | |||
729 | struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | ||
730 | /* Requires call-back bindings. */ | ||
731 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), | ||
732 | /* Requires DMA and call-back bindings. */ | ||
733 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat), | ||
734 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat), | ||
735 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat), | ||
736 | /* Requires DMA bindings. */ | ||
737 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), | ||
738 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), | ||
739 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), | ||
740 | OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data), | ||
741 | OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data), | ||
742 | /* Requires clock name bindings. */ | ||
743 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL), | ||
744 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL), | ||
745 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL), | ||
746 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL), | ||
747 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL), | ||
748 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL), | ||
749 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL), | ||
750 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL), | ||
751 | OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL), | ||
752 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL), | ||
753 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL), | ||
754 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL), | ||
755 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), | ||
756 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | ||
757 | /* Requires device name bindings. */ | ||
758 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL), | ||
759 | /* Requires clock name and DMA bindings. */ | ||
760 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, | ||
761 | "ux500-msp-i2s.0", &msp0_platform_data), | ||
762 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000, | ||
763 | "ux500-msp-i2s.1", &msp1_platform_data), | ||
764 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000, | ||
765 | "ux500-msp-i2s.2", &msp2_platform_data), | ||
766 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, | ||
767 | "ux500-msp-i2s.3", &msp3_platform_data), | ||
768 | {}, | ||
769 | }; | ||
770 | |||
771 | static const struct of_device_id u8500_local_bus_nodes[] = { | ||
772 | /* only create devices below soc node */ | ||
773 | { .compatible = "stericsson,db8500", }, | ||
774 | { .compatible = "stericsson,db8500-prcmu", }, | ||
775 | { .compatible = "simple-bus"}, | ||
776 | { }, | ||
777 | }; | ||
778 | |||
779 | static void __init u8500_init_machine(void) | ||
780 | { | ||
781 | struct device *parent = NULL; | ||
782 | int i2c0_devs; | ||
783 | int i; | ||
784 | |||
785 | /* Pinmaps must be in place before devices register */ | ||
786 | if (of_machine_is_compatible("st-ericsson,mop500")) | ||
787 | mop500_pinmaps_init(); | ||
788 | else if (of_machine_is_compatible("calaosystems,snowball-a9500")) | ||
789 | snowball_pinmaps_init(); | ||
790 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) | ||
791 | hrefv60_pinmaps_init(); | ||
792 | |||
793 | parent = u8500_of_init_devices(); | ||
794 | |||
795 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | ||
796 | mop500_platform_devs[i]->dev.parent = parent; | ||
797 | |||
798 | /* automatically probe child nodes of db8500 device */ | ||
799 | of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent); | ||
800 | |||
801 | if (of_machine_is_compatible("st-ericsson,mop500")) { | ||
802 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | ||
803 | |||
804 | platform_add_devices(mop500_platform_devs, | ||
805 | ARRAY_SIZE(mop500_platform_devs)); | ||
806 | |||
807 | mop500_sdi_init(parent); | ||
808 | mop500_audio_init(parent); | ||
809 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | ||
810 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | ||
811 | i2c_register_board_info(2, mop500_i2c2_devices, | ||
812 | ARRAY_SIZE(mop500_i2c2_devices)); | ||
813 | |||
814 | mop500_uib_init(); | ||
815 | |||
816 | } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) { | ||
817 | mop500_of_audio_init(parent); | ||
818 | } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) { | ||
819 | /* | ||
820 | * The HREFv60 board removed a GPIO expander and routed | ||
821 | * all these GPIO pins to the internal GPIO controller | ||
822 | * instead. | ||
823 | */ | ||
824 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; | ||
825 | platform_add_devices(mop500_platform_devs, | ||
826 | ARRAY_SIZE(mop500_platform_devs)); | ||
827 | |||
828 | mop500_uib_init(); | ||
829 | } | ||
830 | |||
831 | /* This board has full regulator constraints */ | ||
832 | regulator_has_full_constraints(); | ||
833 | } | ||
834 | |||
835 | static const char * u8500_dt_board_compat[] = { | ||
836 | "calaosystems,snowball-a9500", | ||
837 | "st-ericsson,hrefv60+", | ||
838 | "st-ericsson,u8500", | ||
839 | "st-ericsson,mop500", | ||
840 | NULL, | ||
841 | }; | ||
842 | |||
843 | |||
844 | DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)") | ||
845 | .smp = smp_ops(ux500_smp_ops), | ||
846 | .map_io = u8500_map_io, | ||
847 | .init_irq = ux500_init_irq, | ||
848 | /* we re-use nomadik timer here */ | ||
849 | .timer = &ux500_timer, | ||
850 | .handle_irq = gic_handle_irq, | ||
851 | .init_machine = u8500_init_machine, | ||
852 | .init_late = ux500_init_late, | ||
853 | .dt_compat = u8500_dt_board_compat, | ||
854 | MACHINE_END | 719 | MACHINE_END |
855 | #endif | ||
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index aca39a68712a..eaa605f5d90d 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -89,6 +89,10 @@ extern struct msp_i2s_platform_data msp1_platform_data; | |||
89 | extern struct msp_i2s_platform_data msp2_platform_data; | 89 | extern struct msp_i2s_platform_data msp2_platform_data; |
90 | extern struct msp_i2s_platform_data msp3_platform_data; | 90 | extern struct msp_i2s_platform_data msp3_platform_data; |
91 | extern struct arm_pmu_platdata db8500_pmu_platdata; | 91 | extern struct arm_pmu_platdata db8500_pmu_platdata; |
92 | extern struct amba_pl011_data uart0_plat; | ||
93 | extern struct amba_pl011_data uart1_plat; | ||
94 | extern struct amba_pl011_data uart2_plat; | ||
95 | extern struct pl022_ssp_controller ssp0_plat; | ||
92 | 96 | ||
93 | extern void mop500_sdi_init(struct device *parent); | 97 | extern void mop500_sdi_init(struct device *parent); |
94 | extern void snowball_sdi_init(struct device *parent); | 98 | extern void snowball_sdi_init(struct device *parent); |
@@ -100,14 +104,8 @@ void __init mop500_pinmaps_init(void); | |||
100 | void __init snowball_pinmaps_init(void); | 104 | void __init snowball_pinmaps_init(void); |
101 | void __init hrefv60_pinmaps_init(void); | 105 | void __init hrefv60_pinmaps_init(void); |
102 | void mop500_audio_init(struct device *parent); | 106 | void mop500_audio_init(struct device *parent); |
103 | /* Due for removal once the MSP driver has been fully DT:ed. */ | ||
104 | void mop500_of_audio_init(struct device *parent); | ||
105 | 107 | ||
106 | int __init mop500_uib_init(void); | 108 | int __init mop500_uib_init(void); |
107 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, | 109 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, |
108 | unsigned n); | 110 | unsigned n); |
109 | |||
110 | /* TODO: Once all pieces are DT:ed, remove completely. */ | ||
111 | struct device * __init u8500_of_init_devices(void); | ||
112 | |||
113 | #endif | 111 | #endif |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index bcdfe6b1d453..4c6ce012daef 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -17,9 +17,15 @@ | |||
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/mfd/abx500/ab8500.h> | 19 | #include <linux/mfd/abx500/ab8500.h> |
20 | #include <linux/mfd/dbx500-prcmu.h> | ||
21 | #include <linux/of.h> | ||
22 | #include <linux/of_platform.h> | ||
23 | #include <linux/regulator/machine.h> | ||
20 | 24 | ||
21 | #include <asm/pmu.h> | 25 | #include <asm/pmu.h> |
22 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | #include <asm/mach/arch.h> | ||
28 | #include <asm/hardware/gic.h> | ||
23 | #include <plat/gpio-nomadik.h> | 29 | #include <plat/gpio-nomadik.h> |
24 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
25 | #include <mach/setup.h> | 31 | #include <mach/setup.h> |
@@ -29,6 +35,7 @@ | |||
29 | 35 | ||
30 | #include "devices-db8500.h" | 36 | #include "devices-db8500.h" |
31 | #include "ste-dma40-db8500.h" | 37 | #include "ste-dma40-db8500.h" |
38 | #include "board-mop500.h" | ||
32 | 39 | ||
33 | /* minimum static i/o mapping required to boot U8500 platforms */ | 40 | /* minimum static i/o mapping required to boot U8500 platforms */ |
34 | static struct map_desc u8500_uart_io_desc[] __initdata = { | 41 | static struct map_desc u8500_uart_io_desc[] __initdata = { |
@@ -215,7 +222,7 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | |||
215 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 222 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); |
216 | 223 | ||
217 | platform_device_register_data(parent, | 224 | platform_device_register_data(parent, |
218 | "cpufreq-u8500", -1, NULL, 0); | 225 | "cpufreq-ux500", -1, NULL, 0); |
219 | 226 | ||
220 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 227 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
221 | platform_devs[i]->dev.parent = parent; | 228 | platform_devs[i]->dev.parent = parent; |
@@ -227,17 +234,17 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | |||
227 | return parent; | 234 | return parent; |
228 | } | 235 | } |
229 | 236 | ||
237 | #ifdef CONFIG_MACH_UX500_DT | ||
238 | |||
230 | /* TODO: Once all pieces are DT:ed, remove completely. */ | 239 | /* TODO: Once all pieces are DT:ed, remove completely. */ |
231 | struct device * __init u8500_of_init_devices(void) | 240 | static struct device * __init u8500_of_init_devices(void) |
232 | { | 241 | { |
233 | struct device *parent; | 242 | struct device *parent = db8500_soc_device_init(); |
234 | |||
235 | parent = db8500_soc_device_init(); | ||
236 | 243 | ||
237 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 244 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); |
238 | 245 | ||
239 | platform_device_register_data(parent, | 246 | platform_device_register_data(parent, |
240 | "cpufreq-u8500", -1, NULL, 0); | 247 | "cpufreq-ux500", -1, NULL, 0); |
241 | 248 | ||
242 | u8500_dma40_device.dev.parent = parent; | 249 | u8500_dma40_device.dev.parent = parent; |
243 | 250 | ||
@@ -251,3 +258,95 @@ struct device * __init u8500_of_init_devices(void) | |||
251 | 258 | ||
252 | return parent; | 259 | return parent; |
253 | } | 260 | } |
261 | |||
262 | static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | ||
263 | /* Requires call-back bindings. */ | ||
264 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), | ||
265 | /* Requires DMA bindings. */ | ||
266 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat), | ||
267 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat), | ||
268 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat), | ||
269 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), | ||
270 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), | ||
271 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), | ||
272 | OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data), | ||
273 | OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data), | ||
274 | /* Requires clock name bindings. */ | ||
275 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL), | ||
276 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL), | ||
277 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL), | ||
278 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL), | ||
279 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL), | ||
280 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL), | ||
281 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL), | ||
282 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL), | ||
283 | OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL), | ||
284 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL), | ||
285 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL), | ||
286 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL), | ||
287 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), | ||
288 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | ||
289 | /* Requires device name bindings. */ | ||
290 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL), | ||
291 | /* Requires clock name and DMA bindings. */ | ||
292 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, | ||
293 | "ux500-msp-i2s.0", &msp0_platform_data), | ||
294 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000, | ||
295 | "ux500-msp-i2s.1", &msp1_platform_data), | ||
296 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000, | ||
297 | "ux500-msp-i2s.2", &msp2_platform_data), | ||
298 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, | ||
299 | "ux500-msp-i2s.3", &msp3_platform_data), | ||
300 | {}, | ||
301 | }; | ||
302 | |||
303 | static const struct of_device_id u8500_local_bus_nodes[] = { | ||
304 | /* only create devices below soc node */ | ||
305 | { .compatible = "stericsson,db8500", }, | ||
306 | { .compatible = "stericsson,db8500-prcmu", }, | ||
307 | { .compatible = "simple-bus"}, | ||
308 | { }, | ||
309 | }; | ||
310 | |||
311 | static void __init u8500_init_machine(void) | ||
312 | { | ||
313 | struct device *parent = NULL; | ||
314 | |||
315 | /* Pinmaps must be in place before devices register */ | ||
316 | if (of_machine_is_compatible("st-ericsson,mop500")) | ||
317 | mop500_pinmaps_init(); | ||
318 | else if (of_machine_is_compatible("calaosystems,snowball-a9500")) | ||
319 | snowball_pinmaps_init(); | ||
320 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) | ||
321 | hrefv60_pinmaps_init(); | ||
322 | else if (of_machine_is_compatible("st-ericsson,ccu9540")) {} | ||
323 | /* TODO: Add pinmaps for ccu9540 board. */ | ||
324 | |||
325 | /* TODO: Export SoC, USB, cpu-freq and DMA40 */ | ||
326 | parent = u8500_of_init_devices(); | ||
327 | |||
328 | /* automatically probe child nodes of db8500 device */ | ||
329 | of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent); | ||
330 | } | ||
331 | |||
332 | static const char * stericsson_dt_platform_compat[] = { | ||
333 | "st-ericsson,u8500", | ||
334 | "st-ericsson,u8540", | ||
335 | "st-ericsson,u9500", | ||
336 | "st-ericsson,u9540", | ||
337 | NULL, | ||
338 | }; | ||
339 | |||
340 | DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") | ||
341 | .smp = smp_ops(ux500_smp_ops), | ||
342 | .map_io = u8500_map_io, | ||
343 | .init_irq = ux500_init_irq, | ||
344 | /* we re-use nomadik timer here */ | ||
345 | .timer = &ux500_timer, | ||
346 | .handle_irq = gic_handle_irq, | ||
347 | .init_machine = u8500_init_machine, | ||
348 | .init_late = NULL, | ||
349 | .dt_compat = stericsson_dt_platform_compat, | ||
350 | MACHINE_END | ||
351 | |||
352 | #endif | ||
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 1f3fbc2bb776..721e7b4275f3 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <mach/setup.h> | 26 | #include <mach/setup.h> |
27 | #include <mach/devices.h> | 27 | #include <mach/devices.h> |
28 | 28 | ||
29 | #include "board-mop500.h" | ||
30 | |||
29 | void __iomem *_PRCMU_BASE; | 31 | void __iomem *_PRCMU_BASE; |
30 | 32 | ||
31 | /* | 33 | /* |
@@ -82,6 +84,7 @@ void __init ux500_init_irq(void) | |||
82 | 84 | ||
83 | void __init ux500_init_late(void) | 85 | void __init ux500_init_late(void) |
84 | { | 86 | { |
87 | mop500_uib_init(); | ||
85 | } | 88 | } |
86 | 89 | ||
87 | static const char * __init ux500_get_machine(void) | 90 | static const char * __init ux500_get_machine(void) |
diff --git a/arch/arm/mach-vt8500/include/mach/hardware.h b/arch/arm/mach-vt8500/include/mach/hardware.h deleted file mode 100644 index db4163f72c39..000000000000 --- a/arch/arm/mach-vt8500/include/mach/hardware.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | /* arch/arm/mach-vt8500/include/mach/hardware.h | ||
2 | * | ||
3 | * This software is licensed under the terms of the GNU General Public | ||
4 | * License version 2, as published by the Free Software Foundation, and | ||
5 | * may be copied, distributed, and modified under those terms. | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | * | ||
12 | */ | ||
diff --git a/arch/arm/mach-vt8500/include/mach/i8042.h b/arch/arm/mach-vt8500/include/mach/i8042.h deleted file mode 100644 index cd7143cad6f3..000000000000 --- a/arch/arm/mach-vt8500/include/mach/i8042.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* arch/arm/mach-vt8500/include/mach/i8042.h | ||
2 | * | ||
3 | * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com> | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
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 | */ | ||
15 | |||
16 | extern unsigned long wmt_i8042_base __initdata; | ||
17 | extern int wmt_i8042_kbd_irq; | ||
18 | extern int wmt_i8042_aux_irq; | ||
diff --git a/arch/arm/mach-vt8500/include/mach/restart.h b/arch/arm/mach-vt8500/include/mach/restart.h deleted file mode 100644 index 738979518acb..000000000000 --- a/arch/arm/mach-vt8500/include/mach/restart.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* linux/arch/arm/mach-vt8500/restart.h | ||
2 | * | ||
3 | * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz> | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
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 | */ | ||
15 | |||
16 | void vt8500_setup_restart(void); | ||
17 | void vt8500_restart(char mode, const char *cmd); | ||
diff --git a/arch/arm/mach-vt8500/timer.c b/arch/arm/mach-vt8500/timer.c index 050e1833f2d0..3dd21a47881f 100644 --- a/arch/arm/mach-vt8500/timer.c +++ b/arch/arm/mach-vt8500/timer.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-vt8500/timer_dt.c | 2 | * arch/arm/mach-vt8500/timer.c |
3 | * | 3 | * |
4 | * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz> | 4 | * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz> |
5 | * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com> | 5 | * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com> |
diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c index 8d3871f110a5..a5bd28692b06 100644 --- a/arch/arm/mach-vt8500/vt8500.c +++ b/arch/arm/mach-vt8500/vt8500.c | |||
@@ -31,8 +31,6 @@ | |||
31 | #include <linux/of_irq.h> | 31 | #include <linux/of_irq.h> |
32 | #include <linux/of_platform.h> | 32 | #include <linux/of_platform.h> |
33 | 33 | ||
34 | #include <mach/restart.h> | ||
35 | |||
36 | #include "common.h" | 34 | #include "common.h" |
37 | 35 | ||
38 | #define LEGACY_GPIO_BASE 0xD8110000 | 36 | #define LEGACY_GPIO_BASE 0xD8110000 |
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c index ab5cfddc0d7b..79bf5fb4dad3 100644 --- a/arch/arm/mach-zynq/common.c +++ b/arch/arm/mach-zynq/common.c | |||
@@ -19,19 +19,21 @@ | |||
19 | #include <linux/cpumask.h> | 19 | #include <linux/cpumask.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
22 | #include <linux/clk/zynq.h> | ||
23 | #include <linux/of_address.h> | ||
22 | #include <linux/of_irq.h> | 24 | #include <linux/of_irq.h> |
23 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
24 | #include <linux/of.h> | 26 | #include <linux/of.h> |
25 | 27 | ||
26 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/map.h> | 29 | #include <asm/mach/map.h> |
30 | #include <asm/mach/time.h> | ||
28 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
29 | #include <asm/page.h> | 32 | #include <asm/page.h> |
30 | #include <asm/hardware/gic.h> | 33 | #include <asm/hardware/gic.h> |
31 | #include <asm/hardware/cache-l2x0.h> | 34 | #include <asm/hardware/cache-l2x0.h> |
32 | 35 | ||
33 | #include <mach/zynq_soc.h> | 36 | #include <mach/zynq_soc.h> |
34 | #include <mach/clkdev.h> | ||
35 | #include "common.h" | 37 | #include "common.h" |
36 | 38 | ||
37 | static struct of_device_id zynq_of_bus_ids[] __initdata = { | 39 | static struct of_device_id zynq_of_bus_ids[] __initdata = { |
@@ -45,22 +47,25 @@ static struct of_device_id zynq_of_bus_ids[] __initdata = { | |||
45 | */ | 47 | */ |
46 | static void __init xilinx_init_machine(void) | 48 | static void __init xilinx_init_machine(void) |
47 | { | 49 | { |
48 | #ifdef CONFIG_CACHE_L2X0 | ||
49 | /* | 50 | /* |
50 | * 64KB way size, 8-way associativity, parity disabled | 51 | * 64KB way size, 8-way associativity, parity disabled |
51 | */ | 52 | */ |
52 | l2x0_init(PL310_L2CC_BASE, 0x02060000, 0xF0F0FFFF); | 53 | l2x0_of_init(0x02060000, 0xF0F0FFFF); |
53 | #endif | ||
54 | 54 | ||
55 | of_platform_bus_probe(NULL, zynq_of_bus_ids, NULL); | 55 | of_platform_bus_probe(NULL, zynq_of_bus_ids, NULL); |
56 | } | 56 | } |
57 | 57 | ||
58 | static struct of_device_id irq_match[] __initdata = { | ||
59 | { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, | ||
60 | { } | ||
61 | }; | ||
62 | |||
58 | /** | 63 | /** |
59 | * xilinx_irq_init() - Interrupt controller initialization for the GIC. | 64 | * xilinx_irq_init() - Interrupt controller initialization for the GIC. |
60 | */ | 65 | */ |
61 | static void __init xilinx_irq_init(void) | 66 | static void __init xilinx_irq_init(void) |
62 | { | 67 | { |
63 | gic_init(0, 29, SCU_GIC_DIST_BASE, SCU_GIC_CPU_BASE); | 68 | of_irq_init(irq_match); |
64 | } | 69 | } |
65 | 70 | ||
66 | /* The minimum devices needed to be mapped before the VM system is up and | 71 | /* The minimum devices needed to be mapped before the VM system is up and |
@@ -71,31 +76,47 @@ static struct map_desc io_desc[] __initdata = { | |||
71 | { | 76 | { |
72 | .virtual = TTC0_VIRT, | 77 | .virtual = TTC0_VIRT, |
73 | .pfn = __phys_to_pfn(TTC0_PHYS), | 78 | .pfn = __phys_to_pfn(TTC0_PHYS), |
74 | .length = SZ_4K, | 79 | .length = TTC0_SIZE, |
75 | .type = MT_DEVICE, | 80 | .type = MT_DEVICE, |
76 | }, { | 81 | }, { |
77 | .virtual = SCU_PERIPH_VIRT, | 82 | .virtual = SCU_PERIPH_VIRT, |
78 | .pfn = __phys_to_pfn(SCU_PERIPH_PHYS), | 83 | .pfn = __phys_to_pfn(SCU_PERIPH_PHYS), |
79 | .length = SZ_8K, | 84 | .length = SCU_PERIPH_SIZE, |
80 | .type = MT_DEVICE, | ||
81 | }, { | ||
82 | .virtual = PL310_L2CC_VIRT, | ||
83 | .pfn = __phys_to_pfn(PL310_L2CC_PHYS), | ||
84 | .length = SZ_4K, | ||
85 | .type = MT_DEVICE, | 85 | .type = MT_DEVICE, |
86 | }, | 86 | }, |
87 | 87 | ||
88 | #ifdef CONFIG_DEBUG_LL | 88 | #ifdef CONFIG_DEBUG_LL |
89 | { | 89 | { |
90 | .virtual = UART0_VIRT, | 90 | .virtual = LL_UART_VADDR, |
91 | .pfn = __phys_to_pfn(UART0_PHYS), | 91 | .pfn = __phys_to_pfn(LL_UART_PADDR), |
92 | .length = SZ_4K, | 92 | .length = UART_SIZE, |
93 | .type = MT_DEVICE, | 93 | .type = MT_DEVICE, |
94 | }, | 94 | }, |
95 | #endif | 95 | #endif |
96 | 96 | ||
97 | }; | 97 | }; |
98 | 98 | ||
99 | static void __init xilinx_zynq_timer_init(void) | ||
100 | { | ||
101 | struct device_node *np; | ||
102 | void __iomem *slcr; | ||
103 | |||
104 | np = of_find_compatible_node(NULL, NULL, "xlnx,zynq-slcr"); | ||
105 | slcr = of_iomap(np, 0); | ||
106 | WARN_ON(!slcr); | ||
107 | |||
108 | xilinx_zynq_clocks_init(slcr); | ||
109 | |||
110 | xttcpss_timer_init(); | ||
111 | } | ||
112 | |||
113 | /* | ||
114 | * Instantiate and initialize the system timer structure | ||
115 | */ | ||
116 | static struct sys_timer xttcpss_sys_timer = { | ||
117 | .init = xilinx_zynq_timer_init, | ||
118 | }; | ||
119 | |||
99 | /** | 120 | /** |
100 | * xilinx_map_io() - Create memory mappings needed for early I/O. | 121 | * xilinx_map_io() - Create memory mappings needed for early I/O. |
101 | */ | 122 | */ |
@@ -105,7 +126,8 @@ static void __init xilinx_map_io(void) | |||
105 | } | 126 | } |
106 | 127 | ||
107 | static const char *xilinx_dt_match[] = { | 128 | static const char *xilinx_dt_match[] = { |
108 | "xlnx,zynq-ep107", | 129 | "xlnx,zynq-zc702", |
130 | "xlnx,zynq-7000", | ||
109 | NULL | 131 | NULL |
110 | }; | 132 | }; |
111 | 133 | ||
diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h index a009644a1555..954b91c13c91 100644 --- a/arch/arm/mach-zynq/common.h +++ b/arch/arm/mach-zynq/common.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #ifndef __MACH_ZYNQ_COMMON_H__ | 17 | #ifndef __MACH_ZYNQ_COMMON_H__ |
18 | #define __MACH_ZYNQ_COMMON_H__ | 18 | #define __MACH_ZYNQ_COMMON_H__ |
19 | 19 | ||
20 | #include <asm/mach/time.h> | 20 | void __init xttcpss_timer_init(void); |
21 | |||
22 | extern struct sys_timer xttcpss_sys_timer; | ||
23 | 21 | ||
24 | #endif | 22 | #endif |
diff --git a/arch/arm/mach-zynq/include/mach/clkdev.h b/arch/arm/mach-zynq/include/mach/clkdev.h deleted file mode 100644 index c6e73d81a459..000000000000 --- a/arch/arm/mach-zynq/include/mach/clkdev.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-zynq/include/mach/clkdev.h | ||
3 | * | ||
4 | * Copyright (C) 2011 Xilinx, Inc. | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
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 | |||
17 | #ifndef __MACH_CLKDEV_H__ | ||
18 | #define __MACH_CLKDEV_H__ | ||
19 | |||
20 | #include <plat/clock.h> | ||
21 | |||
22 | struct clk { | ||
23 | unsigned long rate; | ||
24 | const struct clk_ops *ops; | ||
25 | const struct icst_params *params; | ||
26 | void __iomem *vcoreg; | ||
27 | }; | ||
28 | |||
29 | #define __clk_get(clk) ({ 1; }) | ||
30 | #define __clk_put(clk) do { } while (0) | ||
31 | |||
32 | #endif | ||
diff --git a/arch/arm/mach-zynq/include/mach/zynq_soc.h b/arch/arm/mach-zynq/include/mach/zynq_soc.h index d0d3f8fb06dd..5ebbd8e6eeee 100644 --- a/arch/arm/mach-zynq/include/mach/zynq_soc.h +++ b/arch/arm/mach-zynq/include/mach/zynq_soc.h | |||
@@ -15,34 +15,39 @@ | |||
15 | #ifndef __MACH_XILINX_SOC_H__ | 15 | #ifndef __MACH_XILINX_SOC_H__ |
16 | #define __MACH_XILINX_SOC_H__ | 16 | #define __MACH_XILINX_SOC_H__ |
17 | 17 | ||
18 | #include <asm/pgtable.h> | ||
19 | |||
18 | #define PERIPHERAL_CLOCK_RATE 2500000 | 20 | #define PERIPHERAL_CLOCK_RATE 2500000 |
19 | 21 | ||
20 | /* For now, all mappings are flat (physical = virtual) | 22 | /* Static peripheral mappings are mapped at the top of the vmalloc region. The |
23 | * early uart mapping causes intermediate problems/failure at certain | ||
24 | * addresses, including the very top of the vmalloc region. Map it at an | ||
25 | * address that is known to work. | ||
21 | */ | 26 | */ |
22 | #define UART0_PHYS 0xE0000000 | 27 | #define UART0_PHYS 0xE0000000 |
23 | #define UART0_VIRT UART0_PHYS | 28 | #define UART1_PHYS 0xE0001000 |
24 | 29 | #define UART_SIZE SZ_4K | |
25 | #define TTC0_PHYS 0xF8001000 | 30 | #define UART_VIRT 0xF0001000 |
26 | #define TTC0_VIRT TTC0_PHYS | 31 | |
27 | 32 | #define TTC0_PHYS 0xF8001000 | |
28 | #define PL310_L2CC_PHYS 0xF8F02000 | 33 | #define TTC0_SIZE SZ_4K |
29 | #define PL310_L2CC_VIRT PL310_L2CC_PHYS | 34 | #define TTC0_VIRT (VMALLOC_END - TTC0_SIZE) |
35 | |||
36 | #define SCU_PERIPH_PHYS 0xF8F00000 | ||
37 | #define SCU_PERIPH_SIZE SZ_8K | ||
38 | #define SCU_PERIPH_VIRT (TTC0_VIRT - SCU_PERIPH_SIZE) | ||
39 | |||
40 | #if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1) | ||
41 | # define LL_UART_PADDR UART1_PHYS | ||
42 | #else | ||
43 | # define LL_UART_PADDR UART0_PHYS | ||
44 | #endif | ||
30 | 45 | ||
31 | #define SCU_PERIPH_PHYS 0xF8F00000 | 46 | #define LL_UART_VADDR UART_VIRT |
32 | #define SCU_PERIPH_VIRT SCU_PERIPH_PHYS | ||
33 | 47 | ||
34 | /* The following are intended for the devices that are mapped early */ | 48 | /* The following are intended for the devices that are mapped early */ |
35 | 49 | ||
36 | #define TTC0_BASE IOMEM(TTC0_VIRT) | 50 | #define TTC0_BASE IOMEM(TTC0_VIRT) |
37 | #define SCU_PERIPH_BASE IOMEM(SCU_PERIPH_VIRT) | 51 | #define SCU_PERIPH_BASE IOMEM(SCU_PERIPH_VIRT) |
38 | #define SCU_GIC_CPU_BASE (SCU_PERIPH_BASE + 0x100) | ||
39 | #define SCU_GIC_DIST_BASE (SCU_PERIPH_BASE + 0x1000) | ||
40 | #define PL310_L2CC_BASE IOMEM(PL310_L2CC_VIRT) | ||
41 | |||
42 | /* | ||
43 | * Mandatory for CONFIG_LL_DEBUG, UART is mapped virtual = physical | ||
44 | */ | ||
45 | #define LL_UART_PADDR UART0_PHYS | ||
46 | #define LL_UART_VADDR UART0_VIRT | ||
47 | 52 | ||
48 | #endif | 53 | #endif |
diff --git a/arch/arm/mach-zynq/timer.c b/arch/arm/mach-zynq/timer.c index c2c96cc7d6e7..9662306aa12f 100644 --- a/arch/arm/mach-zynq/timer.c +++ b/arch/arm/mach-zynq/timer.c | |||
@@ -23,32 +23,15 @@ | |||
23 | #include <linux/clocksource.h> | 23 | #include <linux/clocksource.h> |
24 | #include <linux/clockchips.h> | 24 | #include <linux/clockchips.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/of.h> | ||
27 | #include <linux/of_address.h> | ||
28 | #include <linux/of_irq.h> | ||
29 | #include <linux/slab.h> | ||
30 | #include <linux/clk-provider.h> | ||
26 | 31 | ||
27 | #include <asm/mach/time.h> | ||
28 | #include <mach/zynq_soc.h> | 32 | #include <mach/zynq_soc.h> |
29 | #include "common.h" | 33 | #include "common.h" |
30 | 34 | ||
31 | #define IRQ_TIMERCOUNTER0 42 | ||
32 | |||
33 | /* | ||
34 | * This driver configures the 2 16-bit count-up timers as follows: | ||
35 | * | ||
36 | * T1: Timer 1, clocksource for generic timekeeping | ||
37 | * T2: Timer 2, clockevent source for hrtimers | ||
38 | * T3: Timer 3, <unused> | ||
39 | * | ||
40 | * The input frequency to the timer module for emulation is 2.5MHz which is | ||
41 | * common to all the timer channels (T1, T2, and T3). With a pre-scaler of 32, | ||
42 | * the timers are clocked at 78.125KHz (12.8 us resolution). | ||
43 | * | ||
44 | * The input frequency to the timer module in silicon will be 200MHz. With the | ||
45 | * pre-scaler of 32, the timers are clocked at 6.25MHz (160ns resolution). | ||
46 | */ | ||
47 | #define XTTCPSS_CLOCKSOURCE 0 /* Timer 1 as a generic timekeeping */ | ||
48 | #define XTTCPSS_CLOCKEVENT 1 /* Timer 2 as a clock event */ | ||
49 | |||
50 | #define XTTCPSS_TIMER_BASE TTC0_BASE | ||
51 | #define XTTCPCC_EVENT_TIMER_IRQ (IRQ_TIMERCOUNTER0 + 1) | ||
52 | /* | 35 | /* |
53 | * Timer Register Offset Definitions of Timer 1, Increment base address by 4 | 36 | * Timer Register Offset Definitions of Timer 1, Increment base address by 4 |
54 | * and use same offsets for Timer 2 | 37 | * and use same offsets for Timer 2 |
@@ -65,9 +48,14 @@ | |||
65 | 48 | ||
66 | #define XTTCPSS_CNT_CNTRL_DISABLE_MASK 0x1 | 49 | #define XTTCPSS_CNT_CNTRL_DISABLE_MASK 0x1 |
67 | 50 | ||
68 | /* Setup the timers to use pre-scaling */ | 51 | /* Setup the timers to use pre-scaling, using a fixed value for now that will |
69 | 52 | * work across most input frequency, but it may need to be more dynamic | |
70 | #define TIMER_RATE (PERIPHERAL_CLOCK_RATE / 32) | 53 | */ |
54 | #define PRESCALE_EXPONENT 11 /* 2 ^ PRESCALE_EXPONENT = PRESCALE */ | ||
55 | #define PRESCALE 2048 /* The exponent must match this */ | ||
56 | #define CLK_CNTRL_PRESCALE ((PRESCALE_EXPONENT - 1) << 1) | ||
57 | #define CLK_CNTRL_PRESCALE_EN 1 | ||
58 | #define CNT_CNTRL_RESET (1<<4) | ||
71 | 59 | ||
72 | /** | 60 | /** |
73 | * struct xttcpss_timer - This definition defines local timer structure | 61 | * struct xttcpss_timer - This definition defines local timer structure |
@@ -75,11 +63,25 @@ | |||
75 | * @base_addr: Base address of timer | 63 | * @base_addr: Base address of timer |
76 | **/ | 64 | **/ |
77 | struct xttcpss_timer { | 65 | struct xttcpss_timer { |
78 | void __iomem *base_addr; | 66 | void __iomem *base_addr; |
79 | }; | 67 | }; |
80 | 68 | ||
81 | static struct xttcpss_timer timers[2]; | 69 | struct xttcpss_timer_clocksource { |
82 | static struct clock_event_device xttcpss_clockevent; | 70 | struct xttcpss_timer xttc; |
71 | struct clocksource cs; | ||
72 | }; | ||
73 | |||
74 | #define to_xttcpss_timer_clksrc(x) \ | ||
75 | container_of(x, struct xttcpss_timer_clocksource, cs) | ||
76 | |||
77 | struct xttcpss_timer_clockevent { | ||
78 | struct xttcpss_timer xttc; | ||
79 | struct clock_event_device ce; | ||
80 | struct clk *clk; | ||
81 | }; | ||
82 | |||
83 | #define to_xttcpss_timer_clkevent(x) \ | ||
84 | container_of(x, struct xttcpss_timer_clockevent, ce) | ||
83 | 85 | ||
84 | /** | 86 | /** |
85 | * xttcpss_set_interval - Set the timer interval value | 87 | * xttcpss_set_interval - Set the timer interval value |
@@ -101,7 +103,7 @@ static void xttcpss_set_interval(struct xttcpss_timer *timer, | |||
101 | 103 | ||
102 | /* Reset the counter (0x10) so that it starts from 0, one-shot | 104 | /* Reset the counter (0x10) so that it starts from 0, one-shot |
103 | mode makes this needed for timing to be right. */ | 105 | mode makes this needed for timing to be right. */ |
104 | ctrl_reg |= 0x10; | 106 | ctrl_reg |= CNT_CNTRL_RESET; |
105 | ctrl_reg &= ~XTTCPSS_CNT_CNTRL_DISABLE_MASK; | 107 | ctrl_reg &= ~XTTCPSS_CNT_CNTRL_DISABLE_MASK; |
106 | __raw_writel(ctrl_reg, timer->base_addr + XTTCPSS_CNT_CNTRL_OFFSET); | 108 | __raw_writel(ctrl_reg, timer->base_addr + XTTCPSS_CNT_CNTRL_OFFSET); |
107 | } | 109 | } |
@@ -116,90 +118,31 @@ static void xttcpss_set_interval(struct xttcpss_timer *timer, | |||
116 | **/ | 118 | **/ |
117 | static irqreturn_t xttcpss_clock_event_interrupt(int irq, void *dev_id) | 119 | static irqreturn_t xttcpss_clock_event_interrupt(int irq, void *dev_id) |
118 | { | 120 | { |
119 | struct clock_event_device *evt = &xttcpss_clockevent; | 121 | struct xttcpss_timer_clockevent *xttce = dev_id; |
120 | struct xttcpss_timer *timer = dev_id; | 122 | struct xttcpss_timer *timer = &xttce->xttc; |
121 | 123 | ||
122 | /* Acknowledge the interrupt and call event handler */ | 124 | /* Acknowledge the interrupt and call event handler */ |
123 | __raw_writel(__raw_readl(timer->base_addr + XTTCPSS_ISR_OFFSET), | 125 | __raw_writel(__raw_readl(timer->base_addr + XTTCPSS_ISR_OFFSET), |
124 | timer->base_addr + XTTCPSS_ISR_OFFSET); | 126 | timer->base_addr + XTTCPSS_ISR_OFFSET); |
125 | 127 | ||
126 | evt->event_handler(evt); | 128 | xttce->ce.event_handler(&xttce->ce); |
127 | 129 | ||
128 | return IRQ_HANDLED; | 130 | return IRQ_HANDLED; |
129 | } | 131 | } |
130 | 132 | ||
131 | static struct irqaction event_timer_irq = { | ||
132 | .name = "xttcpss clockevent", | ||
133 | .flags = IRQF_DISABLED | IRQF_TIMER, | ||
134 | .handler = xttcpss_clock_event_interrupt, | ||
135 | }; | ||
136 | |||
137 | /** | 133 | /** |
138 | * xttcpss_timer_hardware_init - Initialize the timer hardware | 134 | * __xttc_clocksource_read - Reads the timer counter register |
139 | * | ||
140 | * Initialize the hardware to start the clock source, get the clock | ||
141 | * event timer ready to use, and hook up the interrupt. | ||
142 | **/ | ||
143 | static void __init xttcpss_timer_hardware_init(void) | ||
144 | { | ||
145 | /* Setup the clock source counter to be an incrementing counter | ||
146 | * with no interrupt and it rolls over at 0xFFFF. Pre-scale | ||
147 | it by 32 also. Let it start running now. | ||
148 | */ | ||
149 | timers[XTTCPSS_CLOCKSOURCE].base_addr = XTTCPSS_TIMER_BASE; | ||
150 | |||
151 | __raw_writel(0x0, timers[XTTCPSS_CLOCKSOURCE].base_addr + | ||
152 | XTTCPSS_IER_OFFSET); | ||
153 | __raw_writel(0x9, timers[XTTCPSS_CLOCKSOURCE].base_addr + | ||
154 | XTTCPSS_CLK_CNTRL_OFFSET); | ||
155 | __raw_writel(0x10, timers[XTTCPSS_CLOCKSOURCE].base_addr + | ||
156 | XTTCPSS_CNT_CNTRL_OFFSET); | ||
157 | |||
158 | /* Setup the clock event timer to be an interval timer which | ||
159 | * is prescaled by 32 using the interval interrupt. Leave it | ||
160 | * disabled for now. | ||
161 | */ | ||
162 | |||
163 | timers[XTTCPSS_CLOCKEVENT].base_addr = XTTCPSS_TIMER_BASE + 4; | ||
164 | |||
165 | __raw_writel(0x23, timers[XTTCPSS_CLOCKEVENT].base_addr + | ||
166 | XTTCPSS_CNT_CNTRL_OFFSET); | ||
167 | __raw_writel(0x9, timers[XTTCPSS_CLOCKEVENT].base_addr + | ||
168 | XTTCPSS_CLK_CNTRL_OFFSET); | ||
169 | __raw_writel(0x1, timers[XTTCPSS_CLOCKEVENT].base_addr + | ||
170 | XTTCPSS_IER_OFFSET); | ||
171 | |||
172 | /* Setup IRQ the clock event timer */ | ||
173 | event_timer_irq.dev_id = &timers[XTTCPSS_CLOCKEVENT]; | ||
174 | setup_irq(XTTCPCC_EVENT_TIMER_IRQ, &event_timer_irq); | ||
175 | } | ||
176 | |||
177 | /** | ||
178 | * __raw_readl_cycles - Reads the timer counter register | ||
179 | * | 135 | * |
180 | * returns: Current timer counter register value | 136 | * returns: Current timer counter register value |
181 | **/ | 137 | **/ |
182 | static cycle_t __raw_readl_cycles(struct clocksource *cs) | 138 | static cycle_t __xttc_clocksource_read(struct clocksource *cs) |
183 | { | 139 | { |
184 | struct xttcpss_timer *timer = &timers[XTTCPSS_CLOCKSOURCE]; | 140 | struct xttcpss_timer *timer = &to_xttcpss_timer_clksrc(cs)->xttc; |
185 | 141 | ||
186 | return (cycle_t)__raw_readl(timer->base_addr + | 142 | return (cycle_t)__raw_readl(timer->base_addr + |
187 | XTTCPSS_COUNT_VAL_OFFSET); | 143 | XTTCPSS_COUNT_VAL_OFFSET); |
188 | } | 144 | } |
189 | 145 | ||
190 | |||
191 | /* | ||
192 | * Instantiate and initialize the clock source structure | ||
193 | */ | ||
194 | static struct clocksource clocksource_xttcpss = { | ||
195 | .name = "xttcpss_timer1", | ||
196 | .rating = 200, /* Reasonable clock source */ | ||
197 | .read = __raw_readl_cycles, | ||
198 | .mask = CLOCKSOURCE_MASK(16), | ||
199 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
200 | }; | ||
201 | |||
202 | |||
203 | /** | 146 | /** |
204 | * xttcpss_set_next_event - Sets the time interval for next event | 147 | * xttcpss_set_next_event - Sets the time interval for next event |
205 | * | 148 | * |
@@ -211,7 +154,8 @@ static struct clocksource clocksource_xttcpss = { | |||
211 | static int xttcpss_set_next_event(unsigned long cycles, | 154 | static int xttcpss_set_next_event(unsigned long cycles, |
212 | struct clock_event_device *evt) | 155 | struct clock_event_device *evt) |
213 | { | 156 | { |
214 | struct xttcpss_timer *timer = &timers[XTTCPSS_CLOCKEVENT]; | 157 | struct xttcpss_timer_clockevent *xttce = to_xttcpss_timer_clkevent(evt); |
158 | struct xttcpss_timer *timer = &xttce->xttc; | ||
215 | 159 | ||
216 | xttcpss_set_interval(timer, cycles); | 160 | xttcpss_set_interval(timer, cycles); |
217 | return 0; | 161 | return 0; |
@@ -226,12 +170,15 @@ static int xttcpss_set_next_event(unsigned long cycles, | |||
226 | static void xttcpss_set_mode(enum clock_event_mode mode, | 170 | static void xttcpss_set_mode(enum clock_event_mode mode, |
227 | struct clock_event_device *evt) | 171 | struct clock_event_device *evt) |
228 | { | 172 | { |
229 | struct xttcpss_timer *timer = &timers[XTTCPSS_CLOCKEVENT]; | 173 | struct xttcpss_timer_clockevent *xttce = to_xttcpss_timer_clkevent(evt); |
174 | struct xttcpss_timer *timer = &xttce->xttc; | ||
230 | u32 ctrl_reg; | 175 | u32 ctrl_reg; |
231 | 176 | ||
232 | switch (mode) { | 177 | switch (mode) { |
233 | case CLOCK_EVT_MODE_PERIODIC: | 178 | case CLOCK_EVT_MODE_PERIODIC: |
234 | xttcpss_set_interval(timer, TIMER_RATE / HZ); | 179 | xttcpss_set_interval(timer, |
180 | DIV_ROUND_CLOSEST(clk_get_rate(xttce->clk), | ||
181 | PRESCALE * HZ)); | ||
235 | break; | 182 | break; |
236 | case CLOCK_EVT_MODE_ONESHOT: | 183 | case CLOCK_EVT_MODE_ONESHOT: |
237 | case CLOCK_EVT_MODE_UNUSED: | 184 | case CLOCK_EVT_MODE_UNUSED: |
@@ -252,15 +199,106 @@ static void xttcpss_set_mode(enum clock_event_mode mode, | |||
252 | } | 199 | } |
253 | } | 200 | } |
254 | 201 | ||
255 | /* | 202 | static void __init zynq_ttc_setup_clocksource(struct device_node *np, |
256 | * Instantiate and initialize the clock event structure | 203 | void __iomem *base) |
257 | */ | 204 | { |
258 | static struct clock_event_device xttcpss_clockevent = { | 205 | struct xttcpss_timer_clocksource *ttccs; |
259 | .name = "xttcpss_timer2", | 206 | struct clk *clk; |
260 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | 207 | int err; |
261 | .set_next_event = xttcpss_set_next_event, | 208 | u32 reg; |
262 | .set_mode = xttcpss_set_mode, | 209 | |
263 | .rating = 200, | 210 | ttccs = kzalloc(sizeof(*ttccs), GFP_KERNEL); |
211 | if (WARN_ON(!ttccs)) | ||
212 | return; | ||
213 | |||
214 | err = of_property_read_u32(np, "reg", ®); | ||
215 | if (WARN_ON(err)) | ||
216 | return; | ||
217 | |||
218 | clk = of_clk_get_by_name(np, "cpu_1x"); | ||
219 | if (WARN_ON(IS_ERR(clk))) | ||
220 | return; | ||
221 | |||
222 | err = clk_prepare_enable(clk); | ||
223 | if (WARN_ON(err)) | ||
224 | return; | ||
225 | |||
226 | ttccs->xttc.base_addr = base + reg * 4; | ||
227 | |||
228 | ttccs->cs.name = np->name; | ||
229 | ttccs->cs.rating = 200; | ||
230 | ttccs->cs.read = __xttc_clocksource_read; | ||
231 | ttccs->cs.mask = CLOCKSOURCE_MASK(16); | ||
232 | ttccs->cs.flags = CLOCK_SOURCE_IS_CONTINUOUS; | ||
233 | |||
234 | __raw_writel(0x0, ttccs->xttc.base_addr + XTTCPSS_IER_OFFSET); | ||
235 | __raw_writel(CLK_CNTRL_PRESCALE | CLK_CNTRL_PRESCALE_EN, | ||
236 | ttccs->xttc.base_addr + XTTCPSS_CLK_CNTRL_OFFSET); | ||
237 | __raw_writel(CNT_CNTRL_RESET, | ||
238 | ttccs->xttc.base_addr + XTTCPSS_CNT_CNTRL_OFFSET); | ||
239 | |||
240 | err = clocksource_register_hz(&ttccs->cs, clk_get_rate(clk) / PRESCALE); | ||
241 | if (WARN_ON(err)) | ||
242 | return; | ||
243 | } | ||
244 | |||
245 | static void __init zynq_ttc_setup_clockevent(struct device_node *np, | ||
246 | void __iomem *base) | ||
247 | { | ||
248 | struct xttcpss_timer_clockevent *ttcce; | ||
249 | int err, irq; | ||
250 | u32 reg; | ||
251 | |||
252 | ttcce = kzalloc(sizeof(*ttcce), GFP_KERNEL); | ||
253 | if (WARN_ON(!ttcce)) | ||
254 | return; | ||
255 | |||
256 | err = of_property_read_u32(np, "reg", ®); | ||
257 | if (WARN_ON(err)) | ||
258 | return; | ||
259 | |||
260 | ttcce->xttc.base_addr = base + reg * 4; | ||
261 | |||
262 | ttcce->clk = of_clk_get_by_name(np, "cpu_1x"); | ||
263 | if (WARN_ON(IS_ERR(ttcce->clk))) | ||
264 | return; | ||
265 | |||
266 | err = clk_prepare_enable(ttcce->clk); | ||
267 | if (WARN_ON(err)) | ||
268 | return; | ||
269 | |||
270 | irq = irq_of_parse_and_map(np, 0); | ||
271 | if (WARN_ON(!irq)) | ||
272 | return; | ||
273 | |||
274 | ttcce->ce.name = np->name; | ||
275 | ttcce->ce.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; | ||
276 | ttcce->ce.set_next_event = xttcpss_set_next_event; | ||
277 | ttcce->ce.set_mode = xttcpss_set_mode; | ||
278 | ttcce->ce.rating = 200; | ||
279 | ttcce->ce.irq = irq; | ||
280 | |||
281 | __raw_writel(0x23, ttcce->xttc.base_addr + XTTCPSS_CNT_CNTRL_OFFSET); | ||
282 | __raw_writel(CLK_CNTRL_PRESCALE | CLK_CNTRL_PRESCALE_EN, | ||
283 | ttcce->xttc.base_addr + XTTCPSS_CLK_CNTRL_OFFSET); | ||
284 | __raw_writel(0x1, ttcce->xttc.base_addr + XTTCPSS_IER_OFFSET); | ||
285 | |||
286 | err = request_irq(irq, xttcpss_clock_event_interrupt, IRQF_TIMER, | ||
287 | np->name, ttcce); | ||
288 | if (WARN_ON(err)) | ||
289 | return; | ||
290 | |||
291 | clockevents_config_and_register(&ttcce->ce, | ||
292 | clk_get_rate(ttcce->clk) / PRESCALE, | ||
293 | 1, 0xfffe); | ||
294 | } | ||
295 | |||
296 | static const __initconst struct of_device_id zynq_ttc_match[] = { | ||
297 | { .compatible = "xlnx,ttc-counter-clocksource", | ||
298 | .data = zynq_ttc_setup_clocksource, }, | ||
299 | { .compatible = "xlnx,ttc-counter-clockevent", | ||
300 | .data = zynq_ttc_setup_clockevent, }, | ||
301 | {} | ||
264 | }; | 302 | }; |
265 | 303 | ||
266 | /** | 304 | /** |
@@ -269,30 +307,27 @@ static struct clock_event_device xttcpss_clockevent = { | |||
269 | * Initializes the timer hardware and register the clock source and clock event | 307 | * Initializes the timer hardware and register the clock source and clock event |
270 | * timers with Linux kernal timer framework | 308 | * timers with Linux kernal timer framework |
271 | **/ | 309 | **/ |
272 | static void __init xttcpss_timer_init(void) | 310 | void __init xttcpss_timer_init(void) |
273 | { | 311 | { |
274 | xttcpss_timer_hardware_init(); | 312 | struct device_node *np; |
275 | clocksource_register_hz(&clocksource_xttcpss, TIMER_RATE); | 313 | |
276 | 314 | for_each_compatible_node(np, NULL, "xlnx,ttc") { | |
277 | /* Calculate the parameters to allow the clockevent to operate using | 315 | struct device_node *np_chld; |
278 | integer math | 316 | void __iomem *base; |
279 | */ | 317 | |
280 | clockevents_calc_mult_shift(&xttcpss_clockevent, TIMER_RATE, 4); | 318 | base = of_iomap(np, 0); |
281 | 319 | if (WARN_ON(!base)) | |
282 | xttcpss_clockevent.max_delta_ns = | 320 | return; |
283 | clockevent_delta2ns(0xfffe, &xttcpss_clockevent); | 321 | |
284 | xttcpss_clockevent.min_delta_ns = | 322 | for_each_available_child_of_node(np, np_chld) { |
285 | clockevent_delta2ns(1, &xttcpss_clockevent); | 323 | int (*cb)(struct device_node *np, void __iomem *base); |
286 | 324 | const struct of_device_id *match; | |
287 | /* Indicate that clock event is on 1st CPU as SMP boot needs it */ | 325 | |
288 | 326 | match = of_match_node(zynq_ttc_match, np_chld); | |
289 | xttcpss_clockevent.cpumask = cpumask_of(0); | 327 | if (match) { |
290 | clockevents_register_device(&xttcpss_clockevent); | 328 | cb = match->data; |
329 | cb(np_chld, base); | ||
330 | } | ||
331 | } | ||
332 | } | ||
291 | } | 333 | } |
292 | |||
293 | /* | ||
294 | * Instantiate and initialize the system timer structure | ||
295 | */ | ||
296 | struct sys_timer xttcpss_sys_timer = { | ||
297 | .init = xttcpss_timer_init, | ||
298 | }; | ||
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig deleted file mode 100644 index 88e1e2e7a20d..000000000000 --- a/arch/arm/plat-mxc/Kconfig +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | if ARCH_MXC | ||
2 | |||
3 | source "arch/arm/plat-mxc/devices/Kconfig" | ||
4 | |||
5 | menu "Freescale MXC Implementations" | ||
6 | |||
7 | choice | ||
8 | prompt "Freescale CPU family:" | ||
9 | default ARCH_IMX_V6_V7 | ||
10 | |||
11 | config ARCH_IMX_V4_V5 | ||
12 | bool "i.MX1, i.MX21, i.MX25, i.MX27" | ||
13 | select ARM_PATCH_PHYS_VIRT | ||
14 | select AUTO_ZRELADDR if !ZBOOT_ROM | ||
15 | help | ||
16 | This enables support for systems based on the Freescale i.MX ARMv4 | ||
17 | and ARMv5 SoCs | ||
18 | |||
19 | config ARCH_IMX_V6_V7 | ||
20 | bool "i.MX3, i.MX5, i.MX6" | ||
21 | select ARM_PATCH_PHYS_VIRT | ||
22 | select AUTO_ZRELADDR if !ZBOOT_ROM | ||
23 | select MIGHT_HAVE_CACHE_L2X0 | ||
24 | help | ||
25 | This enables support for systems based on the Freescale i.MX3, i.MX5 | ||
26 | and i.MX6 family. | ||
27 | |||
28 | endchoice | ||
29 | |||
30 | source "arch/arm/mach-imx/Kconfig" | ||
31 | |||
32 | endmenu | ||
33 | |||
34 | config MXC_IRQ_PRIOR | ||
35 | bool "Use IRQ priority" | ||
36 | help | ||
37 | Select this if you want to use prioritized IRQ handling. | ||
38 | This feature prevents higher priority ISR to be interrupted | ||
39 | by lower priority IRQ even IRQF_DISABLED flag is not set. | ||
40 | This may be useful in embedded applications, where are strong | ||
41 | requirements for timing. | ||
42 | Say N here, unless you have a specialized requirement. | ||
43 | |||
44 | config MXC_TZIC | ||
45 | bool | ||
46 | |||
47 | config MXC_AVIC | ||
48 | bool | ||
49 | |||
50 | config MXC_DEBUG_BOARD | ||
51 | bool "Enable MXC debug board(for 3-stack)" | ||
52 | help | ||
53 | The debug board is an integral part of the MXC 3-stack(PDK) | ||
54 | platforms, it can be attached or removed from the peripheral | ||
55 | board. On debug board, several debug devices(ethernet, UART, | ||
56 | buttons, LEDs and JTAG) are implemented. Between the MCU and | ||
57 | these devices, a CPLD is added as a bridge which performs | ||
58 | data/address de-multiplexing and decode, signal level shift, | ||
59 | interrupt control and various board functions. | ||
60 | |||
61 | config HAVE_EPIT | ||
62 | bool | ||
63 | |||
64 | config MXC_USE_EPIT | ||
65 | bool "Use EPIT instead of GPT" | ||
66 | depends on HAVE_EPIT | ||
67 | help | ||
68 | Use EPIT as the system timer on systems that have it. Normally you | ||
69 | don't have a reason to do so as the EPIT has the same features and | ||
70 | uses the same clocks as the GPT. Anyway, on some systems the GPT | ||
71 | may be in use for other purposes. | ||
72 | |||
73 | config MXC_ULPI | ||
74 | bool | ||
75 | |||
76 | config ARCH_HAS_RNGA | ||
77 | bool | ||
78 | |||
79 | config IMX_HAVE_IOMUX_V1 | ||
80 | bool | ||
81 | |||
82 | config ARCH_MXC_IOMUX_V3 | ||
83 | bool | ||
84 | |||
85 | config IRAM_ALLOC | ||
86 | bool | ||
87 | select GENERIC_ALLOCATOR | ||
88 | |||
89 | endif | ||
diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile deleted file mode 100644 index 149237e24850..000000000000 --- a/arch/arm/plat-mxc/Makefile +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for the linux kernel. | ||
3 | # | ||
4 | |||
5 | # Common support | ||
6 | obj-y := time.o devices.o cpu.o system.o irq-common.o | ||
7 | |||
8 | obj-$(CONFIG_MXC_TZIC) += tzic.o | ||
9 | obj-$(CONFIG_MXC_AVIC) += avic.o | ||
10 | |||
11 | obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o | ||
12 | obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o | ||
13 | obj-$(CONFIG_IRAM_ALLOC) += iram_alloc.o | ||
14 | obj-$(CONFIG_MXC_ULPI) += ulpi.o | ||
15 | obj-$(CONFIG_MXC_USE_EPIT) += epit.o | ||
16 | obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o | ||
17 | obj-$(CONFIG_CPU_FREQ_IMX) += cpufreq.o | ||
18 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | ||
19 | ifdef CONFIG_SND_IMX_SOC | ||
20 | obj-y += ssi-fiq.o | ||
21 | obj-y += ssi-fiq-ksym.o | ||
22 | endif | ||
23 | |||
24 | obj-y += devices/ | ||
diff --git a/arch/arm/plat-mxc/include/mach/debug-macro.S b/arch/arm/plat-mxc/include/mach/debug-macro.S deleted file mode 100644 index 761e45f9456f..000000000000 --- a/arch/arm/plat-mxc/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | /* arch/arm/mach-imx/include/mach/debug-macro.S | ||
2 | * | ||
3 | * Debugging macro include header | ||
4 | * | ||
5 | * Copyright (C) 1994-1999 Russell King | ||
6 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | */ | ||
13 | #include <mach/hardware.h> | ||
14 | |||
15 | #ifdef CONFIG_DEBUG_IMX1_UART | ||
16 | #define UART_PADDR MX1_UART1_BASE_ADDR | ||
17 | #elif defined (CONFIG_DEBUG_IMX25_UART) | ||
18 | #define UART_PADDR MX25_UART1_BASE_ADDR | ||
19 | #elif defined (CONFIG_DEBUG_IMX21_IMX27_UART) | ||
20 | #define UART_PADDR MX2x_UART1_BASE_ADDR | ||
21 | #elif defined (CONFIG_DEBUG_IMX31_IMX35_UART) | ||
22 | #define UART_PADDR MX3x_UART1_BASE_ADDR | ||
23 | #elif defined (CONFIG_DEBUG_IMX51_UART) | ||
24 | #define UART_PADDR MX51_UART1_BASE_ADDR | ||
25 | #elif defined (CONFIG_DEBUG_IMX50_IMX53_UART) | ||
26 | #define UART_PADDR MX53_UART1_BASE_ADDR | ||
27 | #elif defined (CONFIG_DEBUG_IMX6Q_UART2) | ||
28 | #define UART_PADDR MX6Q_UART2_BASE_ADDR | ||
29 | #elif defined (CONFIG_DEBUG_IMX6Q_UART4) | ||
30 | #define UART_PADDR MX6Q_UART4_BASE_ADDR | ||
31 | #endif | ||
32 | |||
33 | #define UART_VADDR IMX_IO_ADDRESS(UART_PADDR) | ||
34 | |||
35 | .macro addruart, rp, rv, tmp | ||
36 | ldr \rp, =UART_PADDR @ physical | ||
37 | ldr \rv, =UART_VADDR @ virtual | ||
38 | .endm | ||
39 | |||
40 | .macro senduart,rd,rx | ||
41 | str \rd, [\rx, #0x40] @ TXDATA | ||
42 | .endm | ||
43 | |||
44 | .macro waituart,rd,rx | ||
45 | .endm | ||
46 | |||
47 | .macro busyuart,rd,rx | ||
48 | 1002: ldr \rd, [\rx, #0x98] @ SR2 | ||
49 | tst \rd, #1 << 3 @ TXDC | ||
50 | beq 1002b @ wait until transmit done | ||
51 | .endm | ||
diff --git a/arch/arm/plat-mxc/include/mach/ipu.h b/arch/arm/plat-mxc/include/mach/ipu.h deleted file mode 100644 index 539e559d18b2..000000000000 --- a/arch/arm/plat-mxc/include/mach/ipu.h +++ /dev/null | |||
@@ -1,177 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. | ||
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 version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef _IPU_H_ | ||
13 | #define _IPU_H_ | ||
14 | |||
15 | #include <linux/types.h> | ||
16 | #include <linux/dmaengine.h> | ||
17 | |||
18 | /* IPU DMA Controller channel definitions. */ | ||
19 | enum ipu_channel { | ||
20 | IDMAC_IC_0 = 0, /* IC (encoding task) to memory */ | ||
21 | IDMAC_IC_1 = 1, /* IC (viewfinder task) to memory */ | ||
22 | IDMAC_ADC_0 = 1, | ||
23 | IDMAC_IC_2 = 2, | ||
24 | IDMAC_ADC_1 = 2, | ||
25 | IDMAC_IC_3 = 3, | ||
26 | IDMAC_IC_4 = 4, | ||
27 | IDMAC_IC_5 = 5, | ||
28 | IDMAC_IC_6 = 6, | ||
29 | IDMAC_IC_7 = 7, /* IC (sensor data) to memory */ | ||
30 | IDMAC_IC_8 = 8, | ||
31 | IDMAC_IC_9 = 9, | ||
32 | IDMAC_IC_10 = 10, | ||
33 | IDMAC_IC_11 = 11, | ||
34 | IDMAC_IC_12 = 12, | ||
35 | IDMAC_IC_13 = 13, | ||
36 | IDMAC_SDC_0 = 14, /* Background synchronous display data */ | ||
37 | IDMAC_SDC_1 = 15, /* Foreground data (overlay) */ | ||
38 | IDMAC_SDC_2 = 16, | ||
39 | IDMAC_SDC_3 = 17, | ||
40 | IDMAC_ADC_2 = 18, | ||
41 | IDMAC_ADC_3 = 19, | ||
42 | IDMAC_ADC_4 = 20, | ||
43 | IDMAC_ADC_5 = 21, | ||
44 | IDMAC_ADC_6 = 22, | ||
45 | IDMAC_ADC_7 = 23, | ||
46 | IDMAC_PF_0 = 24, | ||
47 | IDMAC_PF_1 = 25, | ||
48 | IDMAC_PF_2 = 26, | ||
49 | IDMAC_PF_3 = 27, | ||
50 | IDMAC_PF_4 = 28, | ||
51 | IDMAC_PF_5 = 29, | ||
52 | IDMAC_PF_6 = 30, | ||
53 | IDMAC_PF_7 = 31, | ||
54 | }; | ||
55 | |||
56 | /* Order significant! */ | ||
57 | enum ipu_channel_status { | ||
58 | IPU_CHANNEL_FREE, | ||
59 | IPU_CHANNEL_INITIALIZED, | ||
60 | IPU_CHANNEL_READY, | ||
61 | IPU_CHANNEL_ENABLED, | ||
62 | }; | ||
63 | |||
64 | #define IPU_CHANNELS_NUM 32 | ||
65 | |||
66 | enum pixel_fmt { | ||
67 | /* 1 byte */ | ||
68 | IPU_PIX_FMT_GENERIC, | ||
69 | IPU_PIX_FMT_RGB332, | ||
70 | IPU_PIX_FMT_YUV420P, | ||
71 | IPU_PIX_FMT_YUV422P, | ||
72 | IPU_PIX_FMT_YUV420P2, | ||
73 | IPU_PIX_FMT_YVU422P, | ||
74 | /* 2 bytes */ | ||
75 | IPU_PIX_FMT_RGB565, | ||
76 | IPU_PIX_FMT_RGB666, | ||
77 | IPU_PIX_FMT_BGR666, | ||
78 | IPU_PIX_FMT_YUYV, | ||
79 | IPU_PIX_FMT_UYVY, | ||
80 | /* 3 bytes */ | ||
81 | IPU_PIX_FMT_RGB24, | ||
82 | IPU_PIX_FMT_BGR24, | ||
83 | /* 4 bytes */ | ||
84 | IPU_PIX_FMT_GENERIC_32, | ||
85 | IPU_PIX_FMT_RGB32, | ||
86 | IPU_PIX_FMT_BGR32, | ||
87 | IPU_PIX_FMT_ABGR32, | ||
88 | IPU_PIX_FMT_BGRA32, | ||
89 | IPU_PIX_FMT_RGBA32, | ||
90 | }; | ||
91 | |||
92 | enum ipu_color_space { | ||
93 | IPU_COLORSPACE_RGB, | ||
94 | IPU_COLORSPACE_YCBCR, | ||
95 | IPU_COLORSPACE_YUV | ||
96 | }; | ||
97 | |||
98 | /* | ||
99 | * Enumeration of IPU rotation modes | ||
100 | */ | ||
101 | enum ipu_rotate_mode { | ||
102 | /* Note the enum values correspond to BAM value */ | ||
103 | IPU_ROTATE_NONE = 0, | ||
104 | IPU_ROTATE_VERT_FLIP = 1, | ||
105 | IPU_ROTATE_HORIZ_FLIP = 2, | ||
106 | IPU_ROTATE_180 = 3, | ||
107 | IPU_ROTATE_90_RIGHT = 4, | ||
108 | IPU_ROTATE_90_RIGHT_VFLIP = 5, | ||
109 | IPU_ROTATE_90_RIGHT_HFLIP = 6, | ||
110 | IPU_ROTATE_90_LEFT = 7, | ||
111 | }; | ||
112 | |||
113 | /* | ||
114 | * Enumeration of DI ports for ADC. | ||
115 | */ | ||
116 | enum display_port { | ||
117 | DISP0, | ||
118 | DISP1, | ||
119 | DISP2, | ||
120 | DISP3 | ||
121 | }; | ||
122 | |||
123 | struct idmac_video_param { | ||
124 | unsigned short in_width; | ||
125 | unsigned short in_height; | ||
126 | uint32_t in_pixel_fmt; | ||
127 | unsigned short out_width; | ||
128 | unsigned short out_height; | ||
129 | uint32_t out_pixel_fmt; | ||
130 | unsigned short out_stride; | ||
131 | bool graphics_combine_en; | ||
132 | bool global_alpha_en; | ||
133 | bool key_color_en; | ||
134 | enum display_port disp; | ||
135 | unsigned short out_left; | ||
136 | unsigned short out_top; | ||
137 | }; | ||
138 | |||
139 | /* | ||
140 | * Union of initialization parameters for a logical channel. So far only video | ||
141 | * parameters are used. | ||
142 | */ | ||
143 | union ipu_channel_param { | ||
144 | struct idmac_video_param video; | ||
145 | }; | ||
146 | |||
147 | struct idmac_tx_desc { | ||
148 | struct dma_async_tx_descriptor txd; | ||
149 | struct scatterlist *sg; /* scatterlist for this */ | ||
150 | unsigned int sg_len; /* tx-descriptor. */ | ||
151 | struct list_head list; | ||
152 | }; | ||
153 | |||
154 | struct idmac_channel { | ||
155 | struct dma_chan dma_chan; | ||
156 | dma_cookie_t completed; /* last completed cookie */ | ||
157 | union ipu_channel_param params; | ||
158 | enum ipu_channel link; /* input channel, linked to the output */ | ||
159 | enum ipu_channel_status status; | ||
160 | void *client; /* Only one client per channel */ | ||
161 | unsigned int n_tx_desc; | ||
162 | struct idmac_tx_desc *desc; /* allocated tx-descriptors */ | ||
163 | struct scatterlist *sg[2]; /* scatterlist elements in buffer-0 and -1 */ | ||
164 | struct list_head free_list; /* free tx-descriptors */ | ||
165 | struct list_head queue; /* queued tx-descriptors */ | ||
166 | spinlock_t lock; /* protects sg[0,1], queue */ | ||
167 | struct mutex chan_mutex; /* protects status, cookie, free_list */ | ||
168 | bool sec_chan_en; | ||
169 | int active_buffer; | ||
170 | unsigned int eof_irq; | ||
171 | char eof_name[16]; /* EOF IRQ name for request_irq() */ | ||
172 | }; | ||
173 | |||
174 | #define to_tx_desc(tx) container_of(tx, struct idmac_tx_desc, txd) | ||
175 | #define to_idmac_chan(c) container_of(c, struct idmac_channel, dma_chan) | ||
176 | |||
177 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h deleted file mode 100644 index d73f5e8ea9cb..000000000000 --- a/arch/arm/plat-mxc/include/mach/irqs.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
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 | #ifndef __ASM_ARCH_MXC_IRQS_H__ | ||
12 | #define __ASM_ARCH_MXC_IRQS_H__ | ||
13 | |||
14 | extern int imx_irq_set_priority(unsigned char irq, unsigned char prio); | ||
15 | |||
16 | /* all normal IRQs can be FIQs */ | ||
17 | #define FIQ_START 0 | ||
18 | /* switch between IRQ and FIQ */ | ||
19 | extern int mxc_set_irq_fiq(unsigned int irq, unsigned int type); | ||
20 | |||
21 | #endif /* __ASM_ARCH_MXC_IRQS_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/timex.h b/arch/arm/plat-mxc/include/mach/timex.h deleted file mode 100644 index 10343d1f87e1..000000000000 --- a/arch/arm/plat-mxc/include/mach/timex.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 ARM Limited | ||
3 | * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MXC_TIMEX_H__ | ||
17 | #define __ASM_ARCH_MXC_TIMEX_H__ | ||
18 | |||
19 | /* Bogus value */ | ||
20 | #define CLOCK_TICK_RATE 12345678 | ||
21 | |||
22 | #endif /* __ASM_ARCH_MXC_TIMEX_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h deleted file mode 100644 index 477971b00930..000000000000 --- a/arch/arm/plat-mxc/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,132 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-mxc/include/mach/uncompress.h | ||
3 | * | ||
4 | * Copyright (C) 1999 ARM Limited | ||
5 | * Copyright (C) Shane Nay (shane@minirl.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | */ | ||
17 | #ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__ | ||
18 | #define __ASM_ARCH_MXC_UNCOMPRESS_H__ | ||
19 | |||
20 | #define __MXC_BOOT_UNCOMPRESS | ||
21 | |||
22 | #include <asm/mach-types.h> | ||
23 | |||
24 | unsigned long uart_base; | ||
25 | |||
26 | #define UART(x) (*(volatile unsigned long *)(uart_base + (x))) | ||
27 | |||
28 | #define USR2 0x98 | ||
29 | #define USR2_TXFE (1<<14) | ||
30 | #define TXR 0x40 | ||
31 | #define UCR1 0x80 | ||
32 | #define UCR1_UARTEN 1 | ||
33 | |||
34 | /* | ||
35 | * The following code assumes the serial port has already been | ||
36 | * initialized by the bootloader. We search for the first enabled | ||
37 | * port in the most probable order. If you didn't setup a port in | ||
38 | * your bootloader then nothing will appear (which might be desired). | ||
39 | * | ||
40 | * This does not append a newline | ||
41 | */ | ||
42 | |||
43 | static void putc(int ch) | ||
44 | { | ||
45 | if (!uart_base) | ||
46 | return; | ||
47 | if (!(UART(UCR1) & UCR1_UARTEN)) | ||
48 | return; | ||
49 | |||
50 | while (!(UART(USR2) & USR2_TXFE)) | ||
51 | barrier(); | ||
52 | |||
53 | UART(TXR) = ch; | ||
54 | } | ||
55 | |||
56 | static inline void flush(void) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | #define MX1_UART1_BASE_ADDR 0x00206000 | ||
61 | #define MX25_UART1_BASE_ADDR 0x43f90000 | ||
62 | #define MX2X_UART1_BASE_ADDR 0x1000a000 | ||
63 | #define MX3X_UART1_BASE_ADDR 0x43F90000 | ||
64 | #define MX3X_UART2_BASE_ADDR 0x43F94000 | ||
65 | #define MX3X_UART5_BASE_ADDR 0x43FB4000 | ||
66 | #define MX51_UART1_BASE_ADDR 0x73fbc000 | ||
67 | #define MX50_UART1_BASE_ADDR 0x53fbc000 | ||
68 | #define MX53_UART1_BASE_ADDR 0x53fbc000 | ||
69 | |||
70 | static __inline__ void __arch_decomp_setup(unsigned long arch_id) | ||
71 | { | ||
72 | switch (arch_id) { | ||
73 | case MACH_TYPE_MX1ADS: | ||
74 | case MACH_TYPE_SCB9328: | ||
75 | uart_base = MX1_UART1_BASE_ADDR; | ||
76 | break; | ||
77 | case MACH_TYPE_MX25_3DS: | ||
78 | uart_base = MX25_UART1_BASE_ADDR; | ||
79 | break; | ||
80 | case MACH_TYPE_IMX27LITE: | ||
81 | case MACH_TYPE_MX27_3DS: | ||
82 | case MACH_TYPE_MX27ADS: | ||
83 | case MACH_TYPE_PCM038: | ||
84 | case MACH_TYPE_MX21ADS: | ||
85 | case MACH_TYPE_PCA100: | ||
86 | case MACH_TYPE_MXT_TD60: | ||
87 | case MACH_TYPE_IMX27IPCAM: | ||
88 | uart_base = MX2X_UART1_BASE_ADDR; | ||
89 | break; | ||
90 | case MACH_TYPE_MX31LITE: | ||
91 | case MACH_TYPE_ARMADILLO5X0: | ||
92 | case MACH_TYPE_MX31MOBOARD: | ||
93 | case MACH_TYPE_QONG: | ||
94 | case MACH_TYPE_MX31_3DS: | ||
95 | case MACH_TYPE_PCM037: | ||
96 | case MACH_TYPE_MX31ADS: | ||
97 | case MACH_TYPE_MX35_3DS: | ||
98 | case MACH_TYPE_PCM043: | ||
99 | case MACH_TYPE_LILLY1131: | ||
100 | case MACH_TYPE_VPR200: | ||
101 | case MACH_TYPE_EUKREA_CPUIMX35SD: | ||
102 | uart_base = MX3X_UART1_BASE_ADDR; | ||
103 | break; | ||
104 | case MACH_TYPE_MAGX_ZN5: | ||
105 | uart_base = MX3X_UART2_BASE_ADDR; | ||
106 | break; | ||
107 | case MACH_TYPE_BUG: | ||
108 | uart_base = MX3X_UART5_BASE_ADDR; | ||
109 | break; | ||
110 | case MACH_TYPE_MX51_BABBAGE: | ||
111 | case MACH_TYPE_EUKREA_CPUIMX51SD: | ||
112 | case MACH_TYPE_MX51_3DS: | ||
113 | uart_base = MX51_UART1_BASE_ADDR; | ||
114 | break; | ||
115 | case MACH_TYPE_MX50_RDP: | ||
116 | uart_base = MX50_UART1_BASE_ADDR; | ||
117 | break; | ||
118 | case MACH_TYPE_MX53_EVK: | ||
119 | case MACH_TYPE_MX53_LOCO: | ||
120 | case MACH_TYPE_MX53_SMD: | ||
121 | case MACH_TYPE_MX53_ARD: | ||
122 | uart_base = MX53_UART1_BASE_ADDR; | ||
123 | break; | ||
124 | default: | ||
125 | break; | ||
126 | } | ||
127 | } | ||
128 | |||
129 | #define arch_decomp_setup() __arch_decomp_setup(arch_id) | ||
130 | #define arch_decomp_wdog() | ||
131 | |||
132 | #endif /* __ASM_ARCH_MXC_UNCOMPRESS_H__ */ | ||
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig index 82fcb206b5b2..665870dce3c8 100644 --- a/arch/arm/plat-omap/Kconfig +++ b/arch/arm/plat-omap/Kconfig | |||
@@ -154,6 +154,12 @@ config OMAP_32K_TIMER | |||
154 | intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is | 154 | intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is |
155 | currently only available for OMAP16XX, 24XX, 34XX and OMAP4/5. | 155 | currently only available for OMAP16XX, 24XX, 34XX and OMAP4/5. |
156 | 156 | ||
157 | On OMAP2PLUS this value is only used for CONFIG_HZ and | ||
158 | CLOCK_TICK_RATE compile time calculation. | ||
159 | The actual timer selection is done in the board file | ||
160 | through the (DT_)MACHINE_START structure. | ||
161 | |||
162 | |||
157 | config OMAP3_L2_AUX_SECURE_SAVE_RESTORE | 163 | config OMAP3_L2_AUX_SECURE_SAVE_RESTORE |
158 | bool "OMAP3 HS/EMU save and restore for L2 AUX control register" | 164 | bool "OMAP3 HS/EMU save and restore for L2 AUX control register" |
159 | depends on ARCH_OMAP3 && PM | 165 | depends on ARCH_OMAP3 && PM |
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index 4bd0ace20e98..8d885848600a 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | # Common support | 5 | # Common support |
6 | obj-y := common.o sram.o dma.o fb.o counter_32k.o | 6 | obj-y := sram.o dma.o fb.o counter_32k.o |
7 | obj-m := | 7 | obj-m := |
8 | obj-n := | 8 | obj-n := |
9 | obj- := | 9 | obj- := |
@@ -19,4 +19,3 @@ obj-y += $(i2c-omap-m) $(i2c-omap-y) | |||
19 | # OMAP mailbox framework | 19 | # OMAP mailbox framework |
20 | obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o | 20 | obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o |
21 | 21 | ||
22 | obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o | ||
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c deleted file mode 100644 index a1555e028123..000000000000 --- a/arch/arm/plat-omap/common.c +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/plat-omap/common.c | ||
3 | * | ||
4 | * Code common to all OMAP machines. | ||
5 | * The file is created by Tony Lindgren <tony@atomide.com> | ||
6 | * | ||
7 | * Copyright (C) 2009 Texas Instruments | ||
8 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/io.h> | ||
17 | #include <linux/dma-mapping.h> | ||
18 | |||
19 | #include "common.h" | ||
20 | #include <plat-omap/dma-omap.h> | ||
21 | |||
22 | void __init omap_init_consistent_dma_size(void) | ||
23 | { | ||
24 | #ifdef CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE | ||
25 | init_consistent_dma_size(CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE << 20); | ||
26 | #endif | ||
27 | } | ||
diff --git a/arch/arm/plat-omap/common.h b/arch/arm/plat-omap/common.h deleted file mode 100644 index 8ae0542a37d9..000000000000 --- a/arch/arm/plat-omap/common.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* | ||
2 | * Header for shared OMAP code in plat-omap. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms of the GNU General Public License as published by the | ||
6 | * Free Software Foundation; either version 2 of the License, or (at your | ||
7 | * option) any later version. | ||
8 | * | ||
9 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
10 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
11 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
12 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
13 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
14 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
15 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
16 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
17 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
18 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License along | ||
21 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
22 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
23 | */ | ||
24 | |||
25 | #ifndef __ARCH_ARM_MACH_OMAP_COMMON_H | ||
26 | #define __ARCH_ARM_MACH_OMAP_COMMON_H | ||
27 | |||
28 | extern int __init omap_init_clocksource_32k(void __iomem *vbase); | ||
29 | |||
30 | extern void __init omap_check_revision(void); | ||
31 | |||
32 | extern void omap_reserve(void); | ||
33 | struct omap_hwmod; | ||
34 | extern int omap_dss_reset(struct omap_hwmod *); | ||
35 | |||
36 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ | ||
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c index 66bf3f9324fe..f3771cdb9838 100644 --- a/arch/arm/plat-omap/counter_32k.c +++ b/arch/arm/plat-omap/counter_32k.c | |||
@@ -22,8 +22,6 @@ | |||
22 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
23 | #include <asm/sched_clock.h> | 23 | #include <asm/sched_clock.h> |
24 | 24 | ||
25 | #include "common.h" | ||
26 | |||
27 | /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ | 25 | /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ |
28 | #define OMAP2_32KSYNCNT_REV_OFF 0x0 | 26 | #define OMAP2_32KSYNCNT_REV_OFF 0x0 |
29 | #define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30) | 27 | #define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30) |
diff --git a/arch/arm/plat-omap/debug-devices.c b/arch/arm/plat-omap/debug-devices.c index 5a4678edd65a..a609e2161817 100644 --- a/arch/arm/plat-omap/debug-devices.c +++ b/arch/arm/plat-omap/debug-devices.c | |||
@@ -15,8 +15,7 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/smc91x.h> | 16 | #include <linux/smc91x.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <plat/debug-devices.h> |
19 | #include "../mach-omap2/debug-devices.h" | ||
20 | 19 | ||
21 | /* Many OMAP development platforms reuse the same "debug board"; these | 20 | /* Many OMAP development platforms reuse the same "debug board"; these |
22 | * platforms include H2, H3, H4, and Perseus2. | 21 | * platforms include H2, H3, H4, and Perseus2. |
diff --git a/arch/arm/plat-omap/debug-leds.c b/arch/arm/plat-omap/debug-leds.c index feca128bc8ed..aa7ebc6bcd65 100644 --- a/arch/arm/plat-omap/debug-leds.c +++ b/arch/arm/plat-omap/debug-leds.c | |||
@@ -17,16 +17,33 @@ | |||
17 | #include <linux/platform_data/gpio-omap.h> | 17 | #include <linux/platform_data/gpio-omap.h> |
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | 19 | ||
20 | #include <mach/hardware.h> | ||
21 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
22 | 21 | ||
23 | #include "fpga.h" | ||
24 | |||
25 | /* Many OMAP development platforms reuse the same "debug board"; these | 22 | /* Many OMAP development platforms reuse the same "debug board"; these |
26 | * platforms include H2, H3, H4, and Perseus2. There are 16 LEDs on the | 23 | * platforms include H2, H3, H4, and Perseus2. There are 16 LEDs on the |
27 | * debug board (all green), accessed through FPGA registers. | 24 | * debug board (all green), accessed through FPGA registers. |
28 | */ | 25 | */ |
29 | 26 | ||
27 | /* NOTE: most boards don't have a static mapping for the FPGA ... */ | ||
28 | struct h2p2_dbg_fpga { | ||
29 | /* offset 0x00 */ | ||
30 | u16 smc91x[8]; | ||
31 | /* offset 0x10 */ | ||
32 | u16 fpga_rev; | ||
33 | u16 board_rev; | ||
34 | u16 gpio_outputs; | ||
35 | u16 leds; | ||
36 | /* offset 0x18 */ | ||
37 | u16 misc_inputs; | ||
38 | u16 lan_status; | ||
39 | u16 lan_reset; | ||
40 | u16 reserved0; | ||
41 | /* offset 0x20 */ | ||
42 | u16 ps2_data; | ||
43 | u16 ps2_ctrl; | ||
44 | /* plus also 4 rs232 ports ... */ | ||
45 | }; | ||
46 | |||
30 | static struct h2p2_dbg_fpga __iomem *fpga; | 47 | static struct h2p2_dbg_fpga __iomem *fpga; |
31 | 48 | ||
32 | static u16 fpga_led_state; | 49 | static u16 fpga_led_state; |
@@ -94,7 +111,7 @@ static int fpga_probe(struct platform_device *pdev) | |||
94 | if (!iomem) | 111 | if (!iomem) |
95 | return -ENODEV; | 112 | return -ENODEV; |
96 | 113 | ||
97 | fpga = ioremap(iomem->start, H2P2_DBG_FPGA_SIZE); | 114 | fpga = ioremap(iomem->start, resource_size(iomem)); |
98 | __raw_writew(0xff, &fpga->leds); | 115 | __raw_writew(0xff, &fpga->leds); |
99 | 116 | ||
100 | for (i = 0; i < ARRAY_SIZE(dbg_leds); i++) { | 117 | for (i = 0; i < ARRAY_SIZE(dbg_leds); i++) { |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 49803cc18787..37a488aaa2ba 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -36,10 +36,7 @@ | |||
36 | #include <linux/slab.h> | 36 | #include <linux/slab.h> |
37 | #include <linux/delay.h> | 37 | #include <linux/delay.h> |
38 | 38 | ||
39 | #include <plat-omap/dma-omap.h> | 39 | #include <linux/omap-dma.h> |
40 | |||
41 | #include "../mach-omap1/soc.h" | ||
42 | #include "../mach-omap2/soc.h" | ||
43 | 40 | ||
44 | /* | 41 | /* |
45 | * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA | 42 | * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA |
@@ -182,7 +179,7 @@ void omap_set_dma_priority(int lch, int dst_port, int priority) | |||
182 | unsigned long reg; | 179 | unsigned long reg; |
183 | u32 l; | 180 | u32 l; |
184 | 181 | ||
185 | if (cpu_class_is_omap1()) { | 182 | if (dma_omap1()) { |
186 | switch (dst_port) { | 183 | switch (dst_port) { |
187 | case OMAP_DMA_PORT_OCP_T1: /* FFFECC00 */ | 184 | case OMAP_DMA_PORT_OCP_T1: /* FFFECC00 */ |
188 | reg = OMAP_TC_OCPT1_PRIOR; | 185 | reg = OMAP_TC_OCPT1_PRIOR; |
@@ -234,7 +231,7 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, | |||
234 | l |= data_type; | 231 | l |= data_type; |
235 | p->dma_write(l, CSDP, lch); | 232 | p->dma_write(l, CSDP, lch); |
236 | 233 | ||
237 | if (cpu_class_is_omap1()) { | 234 | if (dma_omap1()) { |
238 | u16 ccr; | 235 | u16 ccr; |
239 | 236 | ||
240 | ccr = p->dma_read(CCR, lch); | 237 | ccr = p->dma_read(CCR, lch); |
@@ -250,7 +247,7 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, | |||
250 | p->dma_write(ccr, CCR2, lch); | 247 | p->dma_write(ccr, CCR2, lch); |
251 | } | 248 | } |
252 | 249 | ||
253 | if (cpu_class_is_omap2() && dma_trigger) { | 250 | if (dma_omap2plus() && dma_trigger) { |
254 | u32 val; | 251 | u32 val; |
255 | 252 | ||
256 | val = p->dma_read(CCR, lch); | 253 | val = p->dma_read(CCR, lch); |
@@ -290,7 +287,7 @@ void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color) | |||
290 | { | 287 | { |
291 | BUG_ON(omap_dma_in_1510_mode()); | 288 | BUG_ON(omap_dma_in_1510_mode()); |
292 | 289 | ||
293 | if (cpu_class_is_omap1()) { | 290 | if (dma_omap1()) { |
294 | u16 w; | 291 | u16 w; |
295 | 292 | ||
296 | w = p->dma_read(CCR2, lch); | 293 | w = p->dma_read(CCR2, lch); |
@@ -320,7 +317,7 @@ void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color) | |||
320 | p->dma_write(w, LCH_CTRL, lch); | 317 | p->dma_write(w, LCH_CTRL, lch); |
321 | } | 318 | } |
322 | 319 | ||
323 | if (cpu_class_is_omap2()) { | 320 | if (dma_omap2plus()) { |
324 | u32 val; | 321 | u32 val; |
325 | 322 | ||
326 | val = p->dma_read(CCR, lch); | 323 | val = p->dma_read(CCR, lch); |
@@ -348,7 +345,7 @@ EXPORT_SYMBOL(omap_set_dma_color_mode); | |||
348 | 345 | ||
349 | void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode) | 346 | void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode) |
350 | { | 347 | { |
351 | if (cpu_class_is_omap2()) { | 348 | if (dma_omap2plus()) { |
352 | u32 csdp; | 349 | u32 csdp; |
353 | 350 | ||
354 | csdp = p->dma_read(CSDP, lch); | 351 | csdp = p->dma_read(CSDP, lch); |
@@ -361,7 +358,7 @@ EXPORT_SYMBOL(omap_set_dma_write_mode); | |||
361 | 358 | ||
362 | void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode) | 359 | void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode) |
363 | { | 360 | { |
364 | if (cpu_class_is_omap1() && !cpu_is_omap15xx()) { | 361 | if (dma_omap1() && !dma_omap15xx()) { |
365 | u32 l; | 362 | u32 l; |
366 | 363 | ||
367 | l = p->dma_read(LCH_CTRL, lch); | 364 | l = p->dma_read(LCH_CTRL, lch); |
@@ -379,7 +376,7 @@ void omap_set_dma_src_params(int lch, int src_port, int src_amode, | |||
379 | { | 376 | { |
380 | u32 l; | 377 | u32 l; |
381 | 378 | ||
382 | if (cpu_class_is_omap1()) { | 379 | if (dma_omap1()) { |
383 | u16 w; | 380 | u16 w; |
384 | 381 | ||
385 | w = p->dma_read(CSDP, lch); | 382 | w = p->dma_read(CSDP, lch); |
@@ -421,7 +418,7 @@ EXPORT_SYMBOL(omap_set_dma_params); | |||
421 | 418 | ||
422 | void omap_set_dma_src_index(int lch, int eidx, int fidx) | 419 | void omap_set_dma_src_index(int lch, int eidx, int fidx) |
423 | { | 420 | { |
424 | if (cpu_class_is_omap2()) | 421 | if (dma_omap2plus()) |
425 | return; | 422 | return; |
426 | 423 | ||
427 | p->dma_write(eidx, CSEI, lch); | 424 | p->dma_write(eidx, CSEI, lch); |
@@ -453,13 +450,13 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode) | |||
453 | case OMAP_DMA_DATA_BURST_DIS: | 450 | case OMAP_DMA_DATA_BURST_DIS: |
454 | break; | 451 | break; |
455 | case OMAP_DMA_DATA_BURST_4: | 452 | case OMAP_DMA_DATA_BURST_4: |
456 | if (cpu_class_is_omap2()) | 453 | if (dma_omap2plus()) |
457 | burst = 0x1; | 454 | burst = 0x1; |
458 | else | 455 | else |
459 | burst = 0x2; | 456 | burst = 0x2; |
460 | break; | 457 | break; |
461 | case OMAP_DMA_DATA_BURST_8: | 458 | case OMAP_DMA_DATA_BURST_8: |
462 | if (cpu_class_is_omap2()) { | 459 | if (dma_omap2plus()) { |
463 | burst = 0x2; | 460 | burst = 0x2; |
464 | break; | 461 | break; |
465 | } | 462 | } |
@@ -469,7 +466,7 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode) | |||
469 | * fall through | 466 | * fall through |
470 | */ | 467 | */ |
471 | case OMAP_DMA_DATA_BURST_16: | 468 | case OMAP_DMA_DATA_BURST_16: |
472 | if (cpu_class_is_omap2()) { | 469 | if (dma_omap2plus()) { |
473 | burst = 0x3; | 470 | burst = 0x3; |
474 | break; | 471 | break; |
475 | } | 472 | } |
@@ -493,7 +490,7 @@ void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, | |||
493 | { | 490 | { |
494 | u32 l; | 491 | u32 l; |
495 | 492 | ||
496 | if (cpu_class_is_omap1()) { | 493 | if (dma_omap1()) { |
497 | l = p->dma_read(CSDP, lch); | 494 | l = p->dma_read(CSDP, lch); |
498 | l &= ~(0x1f << 9); | 495 | l &= ~(0x1f << 9); |
499 | l |= dest_port << 9; | 496 | l |= dest_port << 9; |
@@ -514,7 +511,7 @@ EXPORT_SYMBOL(omap_set_dma_dest_params); | |||
514 | 511 | ||
515 | void omap_set_dma_dest_index(int lch, int eidx, int fidx) | 512 | void omap_set_dma_dest_index(int lch, int eidx, int fidx) |
516 | { | 513 | { |
517 | if (cpu_class_is_omap2()) | 514 | if (dma_omap2plus()) |
518 | return; | 515 | return; |
519 | 516 | ||
520 | p->dma_write(eidx, CDEI, lch); | 517 | p->dma_write(eidx, CDEI, lch); |
@@ -546,19 +543,19 @@ void omap_set_dma_dest_burst_mode(int lch, enum omap_dma_burst_mode burst_mode) | |||
546 | case OMAP_DMA_DATA_BURST_DIS: | 543 | case OMAP_DMA_DATA_BURST_DIS: |
547 | break; | 544 | break; |
548 | case OMAP_DMA_DATA_BURST_4: | 545 | case OMAP_DMA_DATA_BURST_4: |
549 | if (cpu_class_is_omap2()) | 546 | if (dma_omap2plus()) |
550 | burst = 0x1; | 547 | burst = 0x1; |
551 | else | 548 | else |
552 | burst = 0x2; | 549 | burst = 0x2; |
553 | break; | 550 | break; |
554 | case OMAP_DMA_DATA_BURST_8: | 551 | case OMAP_DMA_DATA_BURST_8: |
555 | if (cpu_class_is_omap2()) | 552 | if (dma_omap2plus()) |
556 | burst = 0x2; | 553 | burst = 0x2; |
557 | else | 554 | else |
558 | burst = 0x3; | 555 | burst = 0x3; |
559 | break; | 556 | break; |
560 | case OMAP_DMA_DATA_BURST_16: | 557 | case OMAP_DMA_DATA_BURST_16: |
561 | if (cpu_class_is_omap2()) { | 558 | if (dma_omap2plus()) { |
562 | burst = 0x3; | 559 | burst = 0x3; |
563 | break; | 560 | break; |
564 | } | 561 | } |
@@ -579,7 +576,7 @@ EXPORT_SYMBOL(omap_set_dma_dest_burst_mode); | |||
579 | static inline void omap_enable_channel_irq(int lch) | 576 | static inline void omap_enable_channel_irq(int lch) |
580 | { | 577 | { |
581 | /* Clear CSR */ | 578 | /* Clear CSR */ |
582 | if (cpu_class_is_omap1()) | 579 | if (dma_omap1()) |
583 | p->dma_read(CSR, lch); | 580 | p->dma_read(CSR, lch); |
584 | else | 581 | else |
585 | p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); | 582 | p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); |
@@ -593,7 +590,7 @@ static inline void omap_disable_channel_irq(int lch) | |||
593 | /* disable channel interrupts */ | 590 | /* disable channel interrupts */ |
594 | p->dma_write(0, CICR, lch); | 591 | p->dma_write(0, CICR, lch); |
595 | /* Clear CSR */ | 592 | /* Clear CSR */ |
596 | if (cpu_class_is_omap1()) | 593 | if (dma_omap1()) |
597 | p->dma_read(CSR, lch); | 594 | p->dma_read(CSR, lch); |
598 | else | 595 | else |
599 | p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); | 596 | p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); |
@@ -617,7 +614,7 @@ static inline void enable_lnk(int lch) | |||
617 | 614 | ||
618 | l = p->dma_read(CLNK_CTRL, lch); | 615 | l = p->dma_read(CLNK_CTRL, lch); |
619 | 616 | ||
620 | if (cpu_class_is_omap1()) | 617 | if (dma_omap1()) |
621 | l &= ~(1 << 14); | 618 | l &= ~(1 << 14); |
622 | 619 | ||
623 | /* Set the ENABLE_LNK bits */ | 620 | /* Set the ENABLE_LNK bits */ |
@@ -625,7 +622,7 @@ static inline void enable_lnk(int lch) | |||
625 | l = dma_chan[lch].next_lch | (1 << 15); | 622 | l = dma_chan[lch].next_lch | (1 << 15); |
626 | 623 | ||
627 | #ifndef CONFIG_ARCH_OMAP1 | 624 | #ifndef CONFIG_ARCH_OMAP1 |
628 | if (cpu_class_is_omap2()) | 625 | if (dma_omap2plus()) |
629 | if (dma_chan[lch].next_linked_ch != -1) | 626 | if (dma_chan[lch].next_linked_ch != -1) |
630 | l = dma_chan[lch].next_linked_ch | (1 << 15); | 627 | l = dma_chan[lch].next_linked_ch | (1 << 15); |
631 | #endif | 628 | #endif |
@@ -642,12 +639,12 @@ static inline void disable_lnk(int lch) | |||
642 | /* Disable interrupts */ | 639 | /* Disable interrupts */ |
643 | omap_disable_channel_irq(lch); | 640 | omap_disable_channel_irq(lch); |
644 | 641 | ||
645 | if (cpu_class_is_omap1()) { | 642 | if (dma_omap1()) { |
646 | /* Set the STOP_LNK bit */ | 643 | /* Set the STOP_LNK bit */ |
647 | l |= 1 << 14; | 644 | l |= 1 << 14; |
648 | } | 645 | } |
649 | 646 | ||
650 | if (cpu_class_is_omap2()) { | 647 | if (dma_omap2plus()) { |
651 | /* Clear the ENABLE_LNK bit */ | 648 | /* Clear the ENABLE_LNK bit */ |
652 | l &= ~(1 << 15); | 649 | l &= ~(1 << 15); |
653 | } | 650 | } |
@@ -661,7 +658,7 @@ static inline void omap2_enable_irq_lch(int lch) | |||
661 | u32 val; | 658 | u32 val; |
662 | unsigned long flags; | 659 | unsigned long flags; |
663 | 660 | ||
664 | if (!cpu_class_is_omap2()) | 661 | if (dma_omap1()) |
665 | return; | 662 | return; |
666 | 663 | ||
667 | spin_lock_irqsave(&dma_chan_lock, flags); | 664 | spin_lock_irqsave(&dma_chan_lock, flags); |
@@ -679,7 +676,7 @@ static inline void omap2_disable_irq_lch(int lch) | |||
679 | u32 val; | 676 | u32 val; |
680 | unsigned long flags; | 677 | unsigned long flags; |
681 | 678 | ||
682 | if (!cpu_class_is_omap2()) | 679 | if (dma_omap1()) |
683 | return; | 680 | return; |
684 | 681 | ||
685 | spin_lock_irqsave(&dma_chan_lock, flags); | 682 | spin_lock_irqsave(&dma_chan_lock, flags); |
@@ -718,7 +715,7 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
718 | if (p->clear_lch_regs) | 715 | if (p->clear_lch_regs) |
719 | p->clear_lch_regs(free_ch); | 716 | p->clear_lch_regs(free_ch); |
720 | 717 | ||
721 | if (cpu_class_is_omap2()) | 718 | if (dma_omap2plus()) |
722 | omap_clear_dma(free_ch); | 719 | omap_clear_dma(free_ch); |
723 | 720 | ||
724 | spin_unlock_irqrestore(&dma_chan_lock, flags); | 721 | spin_unlock_irqrestore(&dma_chan_lock, flags); |
@@ -729,7 +726,7 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
729 | chan->flags = 0; | 726 | chan->flags = 0; |
730 | 727 | ||
731 | #ifndef CONFIG_ARCH_OMAP1 | 728 | #ifndef CONFIG_ARCH_OMAP1 |
732 | if (cpu_class_is_omap2()) { | 729 | if (dma_omap2plus()) { |
733 | chan->chain_id = -1; | 730 | chan->chain_id = -1; |
734 | chan->next_linked_ch = -1; | 731 | chan->next_linked_ch = -1; |
735 | } | 732 | } |
@@ -737,13 +734,13 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
737 | 734 | ||
738 | chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; | 735 | chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; |
739 | 736 | ||
740 | if (cpu_class_is_omap1()) | 737 | if (dma_omap1()) |
741 | chan->enabled_irqs |= OMAP1_DMA_TOUT_IRQ; | 738 | chan->enabled_irqs |= OMAP1_DMA_TOUT_IRQ; |
742 | else if (cpu_class_is_omap2()) | 739 | else if (dma_omap2plus()) |
743 | chan->enabled_irqs |= OMAP2_DMA_MISALIGNED_ERR_IRQ | | 740 | chan->enabled_irqs |= OMAP2_DMA_MISALIGNED_ERR_IRQ | |
744 | OMAP2_DMA_TRANS_ERR_IRQ; | 741 | OMAP2_DMA_TRANS_ERR_IRQ; |
745 | 742 | ||
746 | if (cpu_is_omap16xx()) { | 743 | if (dma_omap16xx()) { |
747 | /* If the sync device is set, configure it dynamically. */ | 744 | /* If the sync device is set, configure it dynamically. */ |
748 | if (dev_id != 0) { | 745 | if (dev_id != 0) { |
749 | set_gdma_dev(free_ch + 1, dev_id); | 746 | set_gdma_dev(free_ch + 1, dev_id); |
@@ -754,11 +751,11 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
754 | * id. | 751 | * id. |
755 | */ | 752 | */ |
756 | p->dma_write(dev_id | (1 << 10), CCR, free_ch); | 753 | p->dma_write(dev_id | (1 << 10), CCR, free_ch); |
757 | } else if (cpu_is_omap7xx() || cpu_is_omap15xx()) { | 754 | } else if (dma_omap1()) { |
758 | p->dma_write(dev_id, CCR, free_ch); | 755 | p->dma_write(dev_id, CCR, free_ch); |
759 | } | 756 | } |
760 | 757 | ||
761 | if (cpu_class_is_omap2()) { | 758 | if (dma_omap2plus()) { |
762 | omap_enable_channel_irq(free_ch); | 759 | omap_enable_channel_irq(free_ch); |
763 | omap2_enable_irq_lch(free_ch); | 760 | omap2_enable_irq_lch(free_ch); |
764 | } | 761 | } |
@@ -780,7 +777,7 @@ void omap_free_dma(int lch) | |||
780 | } | 777 | } |
781 | 778 | ||
782 | /* Disable interrupt for logical channel */ | 779 | /* Disable interrupt for logical channel */ |
783 | if (cpu_class_is_omap2()) | 780 | if (dma_omap2plus()) |
784 | omap2_disable_irq_lch(lch); | 781 | omap2_disable_irq_lch(lch); |
785 | 782 | ||
786 | /* Disable all DMA interrupts for the channel. */ | 783 | /* Disable all DMA interrupts for the channel. */ |
@@ -790,7 +787,7 @@ void omap_free_dma(int lch) | |||
790 | p->dma_write(0, CCR, lch); | 787 | p->dma_write(0, CCR, lch); |
791 | 788 | ||
792 | /* Clear registers */ | 789 | /* Clear registers */ |
793 | if (cpu_class_is_omap2()) | 790 | if (dma_omap2plus()) |
794 | omap_clear_dma(lch); | 791 | omap_clear_dma(lch); |
795 | 792 | ||
796 | spin_lock_irqsave(&dma_chan_lock, flags); | 793 | spin_lock_irqsave(&dma_chan_lock, flags); |
@@ -816,7 +813,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) | |||
816 | { | 813 | { |
817 | u32 reg; | 814 | u32 reg; |
818 | 815 | ||
819 | if (!cpu_class_is_omap2()) { | 816 | if (dma_omap1()) { |
820 | printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__); | 817 | printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__); |
821 | return; | 818 | return; |
822 | } | 819 | } |
@@ -855,7 +852,7 @@ omap_dma_set_prio_lch(int lch, unsigned char read_prio, | |||
855 | } | 852 | } |
856 | l = p->dma_read(CCR, lch); | 853 | l = p->dma_read(CCR, lch); |
857 | l &= ~((1 << 6) | (1 << 26)); | 854 | l &= ~((1 << 6) | (1 << 26)); |
858 | if (cpu_class_is_omap2() && !cpu_is_omap242x()) | 855 | if (d->dev_caps & IS_RW_PRIORITY) |
859 | l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); | 856 | l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); |
860 | else | 857 | else |
861 | l |= ((read_prio & 0x1) << 6); | 858 | l |= ((read_prio & 0x1) << 6); |
@@ -888,7 +885,7 @@ void omap_start_dma(int lch) | |||
888 | * The CPC/CDAC register needs to be initialized to zero | 885 | * The CPC/CDAC register needs to be initialized to zero |
889 | * before starting dma transfer. | 886 | * before starting dma transfer. |
890 | */ | 887 | */ |
891 | if (cpu_is_omap15xx()) | 888 | if (dma_omap15xx()) |
892 | p->dma_write(0, CPC, lch); | 889 | p->dma_write(0, CPC, lch); |
893 | else | 890 | else |
894 | p->dma_write(0, CDAC, lch); | 891 | p->dma_write(0, CDAC, lch); |
@@ -1051,7 +1048,7 @@ dma_addr_t omap_get_dma_src_pos(int lch) | |||
1051 | { | 1048 | { |
1052 | dma_addr_t offset = 0; | 1049 | dma_addr_t offset = 0; |
1053 | 1050 | ||
1054 | if (cpu_is_omap15xx()) | 1051 | if (dma_omap15xx()) |
1055 | offset = p->dma_read(CPC, lch); | 1052 | offset = p->dma_read(CPC, lch); |
1056 | else | 1053 | else |
1057 | offset = p->dma_read(CSAC, lch); | 1054 | offset = p->dma_read(CSAC, lch); |
@@ -1059,7 +1056,7 @@ dma_addr_t omap_get_dma_src_pos(int lch) | |||
1059 | if (IS_DMA_ERRATA(DMA_ERRATA_3_3) && offset == 0) | 1056 | if (IS_DMA_ERRATA(DMA_ERRATA_3_3) && offset == 0) |
1060 | offset = p->dma_read(CSAC, lch); | 1057 | offset = p->dma_read(CSAC, lch); |
1061 | 1058 | ||
1062 | if (!cpu_is_omap15xx()) { | 1059 | if (!dma_omap15xx()) { |
1063 | /* | 1060 | /* |
1064 | * CDAC == 0 indicates that the DMA transfer on the channel has | 1061 | * CDAC == 0 indicates that the DMA transfer on the channel has |
1065 | * not been started (no data has been transferred so far). | 1062 | * not been started (no data has been transferred so far). |
@@ -1071,7 +1068,7 @@ dma_addr_t omap_get_dma_src_pos(int lch) | |||
1071 | offset = p->dma_read(CSSA, lch); | 1068 | offset = p->dma_read(CSSA, lch); |
1072 | } | 1069 | } |
1073 | 1070 | ||
1074 | if (cpu_class_is_omap1()) | 1071 | if (dma_omap1()) |
1075 | offset |= (p->dma_read(CSSA, lch) & 0xFFFF0000); | 1072 | offset |= (p->dma_read(CSSA, lch) & 0xFFFF0000); |
1076 | 1073 | ||
1077 | return offset; | 1074 | return offset; |
@@ -1090,7 +1087,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch) | |||
1090 | { | 1087 | { |
1091 | dma_addr_t offset = 0; | 1088 | dma_addr_t offset = 0; |
1092 | 1089 | ||
1093 | if (cpu_is_omap15xx()) | 1090 | if (dma_omap15xx()) |
1094 | offset = p->dma_read(CPC, lch); | 1091 | offset = p->dma_read(CPC, lch); |
1095 | else | 1092 | else |
1096 | offset = p->dma_read(CDAC, lch); | 1093 | offset = p->dma_read(CDAC, lch); |
@@ -1099,7 +1096,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch) | |||
1099 | * omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is | 1096 | * omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is |
1100 | * read before the DMA controller finished disabling the channel. | 1097 | * read before the DMA controller finished disabling the channel. |
1101 | */ | 1098 | */ |
1102 | if (!cpu_is_omap15xx() && offset == 0) { | 1099 | if (!dma_omap15xx() && offset == 0) { |
1103 | offset = p->dma_read(CDAC, lch); | 1100 | offset = p->dma_read(CDAC, lch); |
1104 | /* | 1101 | /* |
1105 | * CDAC == 0 indicates that the DMA transfer on the channel has | 1102 | * CDAC == 0 indicates that the DMA transfer on the channel has |
@@ -1110,7 +1107,7 @@ dma_addr_t omap_get_dma_dst_pos(int lch) | |||
1110 | offset = p->dma_read(CDSA, lch); | 1107 | offset = p->dma_read(CDSA, lch); |
1111 | } | 1108 | } |
1112 | 1109 | ||
1113 | if (cpu_class_is_omap1()) | 1110 | if (dma_omap1()) |
1114 | offset |= (p->dma_read(CDSA, lch) & 0xFFFF0000); | 1111 | offset |= (p->dma_read(CDSA, lch) & 0xFFFF0000); |
1115 | 1112 | ||
1116 | return offset; | 1113 | return offset; |
@@ -1127,7 +1124,7 @@ int omap_dma_running(void) | |||
1127 | { | 1124 | { |
1128 | int lch; | 1125 | int lch; |
1129 | 1126 | ||
1130 | if (cpu_class_is_omap1()) | 1127 | if (dma_omap1()) |
1131 | if (omap_lcd_dma_running()) | 1128 | if (omap_lcd_dma_running()) |
1132 | return 1; | 1129 | return 1; |
1133 | 1130 | ||
@@ -2030,7 +2027,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2030 | dma_chan = d->chan; | 2027 | dma_chan = d->chan; |
2031 | enable_1510_mode = d->dev_caps & ENABLE_1510_MODE; | 2028 | enable_1510_mode = d->dev_caps & ENABLE_1510_MODE; |
2032 | 2029 | ||
2033 | if (cpu_class_is_omap2()) { | 2030 | if (dma_omap2plus()) { |
2034 | dma_linked_lch = kzalloc(sizeof(struct dma_link_info) * | 2031 | dma_linked_lch = kzalloc(sizeof(struct dma_link_info) * |
2035 | dma_lch_count, GFP_KERNEL); | 2032 | dma_lch_count, GFP_KERNEL); |
2036 | if (!dma_linked_lch) { | 2033 | if (!dma_linked_lch) { |
@@ -2042,7 +2039,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2042 | spin_lock_init(&dma_chan_lock); | 2039 | spin_lock_init(&dma_chan_lock); |
2043 | for (ch = 0; ch < dma_chan_count; ch++) { | 2040 | for (ch = 0; ch < dma_chan_count; ch++) { |
2044 | omap_clear_dma(ch); | 2041 | omap_clear_dma(ch); |
2045 | if (cpu_class_is_omap2()) | 2042 | if (dma_omap2plus()) |
2046 | omap2_disable_irq_lch(ch); | 2043 | omap2_disable_irq_lch(ch); |
2047 | 2044 | ||
2048 | dma_chan[ch].dev_id = -1; | 2045 | dma_chan[ch].dev_id = -1; |
@@ -2051,7 +2048,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2051 | if (ch >= 6 && enable_1510_mode) | 2048 | if (ch >= 6 && enable_1510_mode) |
2052 | continue; | 2049 | continue; |
2053 | 2050 | ||
2054 | if (cpu_class_is_omap1()) { | 2051 | if (dma_omap1()) { |
2055 | /* | 2052 | /* |
2056 | * request_irq() doesn't like dev_id (ie. ch) being | 2053 | * request_irq() doesn't like dev_id (ie. ch) being |
2057 | * zero, so we have to kludge around this. | 2054 | * zero, so we have to kludge around this. |
@@ -2076,11 +2073,11 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2076 | } | 2073 | } |
2077 | } | 2074 | } |
2078 | 2075 | ||
2079 | if (cpu_class_is_omap2() && !cpu_is_omap242x()) | 2076 | if (d->dev_caps & IS_RW_PRIORITY) |
2080 | omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, | 2077 | omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, |
2081 | DMA_DEFAULT_FIFO_DEPTH, 0); | 2078 | DMA_DEFAULT_FIFO_DEPTH, 0); |
2082 | 2079 | ||
2083 | if (cpu_class_is_omap2()) { | 2080 | if (dma_omap2plus()) { |
2084 | strcpy(irq_name, "0"); | 2081 | strcpy(irq_name, "0"); |
2085 | dma_irq = platform_get_irq_byname(pdev, irq_name); | 2082 | dma_irq = platform_get_irq_byname(pdev, irq_name); |
2086 | if (dma_irq < 0) { | 2083 | if (dma_irq < 0) { |
@@ -2095,9 +2092,8 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) | |||
2095 | } | 2092 | } |
2096 | } | 2093 | } |
2097 | 2094 | ||
2098 | /* reserve dma channels 0 and 1 in high security devices */ | 2095 | /* reserve dma channels 0 and 1 in high security devices on 34xx */ |
2099 | if (cpu_is_omap34xx() && | 2096 | if (d->dev_caps & HS_CHANNELS_RESERVED) { |
2100 | (omap_type() != OMAP2_DEVICE_TYPE_GP)) { | ||
2101 | pr_info("Reserving DMA channels 0 and 1 for HS ROM code\n"); | 2097 | pr_info("Reserving DMA channels 0 and 1 for HS ROM code\n"); |
2102 | dma_chan[0].dev_id = 0; | 2098 | dma_chan[0].dev_id = 0; |
2103 | dma_chan[1].dev_id = 1; | 2099 | dma_chan[1].dev_id = 1; |
@@ -2124,7 +2120,7 @@ static int __devexit omap_system_dma_remove(struct platform_device *pdev) | |||
2124 | { | 2120 | { |
2125 | int dma_irq; | 2121 | int dma_irq; |
2126 | 2122 | ||
2127 | if (cpu_class_is_omap2()) { | 2123 | if (dma_omap2plus()) { |
2128 | char irq_name[4]; | 2124 | char irq_name[4]; |
2129 | strcpy(irq_name, "0"); | 2125 | strcpy(irq_name, "0"); |
2130 | dma_irq = platform_get_irq_byname(pdev, irq_name); | 2126 | dma_irq = platform_get_irq_byname(pdev, irq_name); |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index 4a0b30a4ebda..89585c293554 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -35,18 +35,19 @@ | |||
35 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 35 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include <linux/clk.h> | ||
38 | #include <linux/module.h> | 39 | #include <linux/module.h> |
39 | #include <linux/io.h> | 40 | #include <linux/io.h> |
40 | #include <linux/device.h> | 41 | #include <linux/device.h> |
41 | #include <linux/err.h> | 42 | #include <linux/err.h> |
42 | #include <linux/pm_runtime.h> | 43 | #include <linux/pm_runtime.h> |
44 | #include <linux/of.h> | ||
45 | #include <linux/of_device.h> | ||
46 | #include <linux/platform_device.h> | ||
47 | #include <linux/platform_data/dmtimer-omap.h> | ||
43 | 48 | ||
44 | #include <plat/dmtimer.h> | 49 | #include <plat/dmtimer.h> |
45 | 50 | ||
46 | #include <mach/hardware.h> | ||
47 | |||
48 | #include "../mach-omap2/omap-pm.h" | ||
49 | |||
50 | static u32 omap_reserved_systimers; | 51 | static u32 omap_reserved_systimers; |
51 | static LIST_HEAD(omap_timer_list); | 52 | static LIST_HEAD(omap_timer_list); |
52 | static DEFINE_SPINLOCK(dm_timer_lock); | 53 | static DEFINE_SPINLOCK(dm_timer_lock); |
@@ -85,10 +86,6 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg, | |||
85 | 86 | ||
86 | static void omap_timer_restore_context(struct omap_dm_timer *timer) | 87 | static void omap_timer_restore_context(struct omap_dm_timer *timer) |
87 | { | 88 | { |
88 | if (timer->revision == 1) | ||
89 | __raw_writel(timer->context.tistat, timer->sys_stat); | ||
90 | |||
91 | __raw_writel(timer->context.tisr, timer->irq_stat); | ||
92 | omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, | 89 | omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, |
93 | timer->context.twer); | 90 | timer->context.twer); |
94 | omap_dm_timer_write_reg(timer, OMAP_TIMER_COUNTER_REG, | 91 | omap_dm_timer_write_reg(timer, OMAP_TIMER_COUNTER_REG, |
@@ -104,39 +101,38 @@ static void omap_timer_restore_context(struct omap_dm_timer *timer) | |||
104 | timer->context.tclr); | 101 | timer->context.tclr); |
105 | } | 102 | } |
106 | 103 | ||
107 | static void omap_dm_timer_wait_for_reset(struct omap_dm_timer *timer) | 104 | static int omap_dm_timer_reset(struct omap_dm_timer *timer) |
108 | { | 105 | { |
109 | int c; | 106 | u32 l, timeout = 100000; |
110 | 107 | ||
111 | if (!timer->sys_stat) | 108 | if (timer->revision != 1) |
112 | return; | 109 | return -EINVAL; |
113 | 110 | ||
114 | c = 0; | 111 | omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG, 0x06); |
115 | while (!(__raw_readl(timer->sys_stat) & 1)) { | ||
116 | c++; | ||
117 | if (c > 100000) { | ||
118 | printk(KERN_ERR "Timer failed to reset\n"); | ||
119 | return; | ||
120 | } | ||
121 | } | ||
122 | } | ||
123 | 112 | ||
124 | static void omap_dm_timer_reset(struct omap_dm_timer *timer) | 113 | do { |
125 | { | 114 | l = __omap_dm_timer_read(timer, |
126 | omap_dm_timer_enable(timer); | 115 | OMAP_TIMER_V1_SYS_STAT_OFFSET, 0); |
127 | if (timer->pdev->id != 1) { | 116 | } while (!l && timeout--); |
128 | omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG, 0x06); | 117 | |
129 | omap_dm_timer_wait_for_reset(timer); | 118 | if (!timeout) { |
119 | dev_err(&timer->pdev->dev, "Timer failed to reset\n"); | ||
120 | return -ETIMEDOUT; | ||
130 | } | 121 | } |
131 | 122 | ||
132 | __omap_dm_timer_reset(timer, 0, 0); | 123 | /* Configure timer for smart-idle mode */ |
133 | omap_dm_timer_disable(timer); | 124 | l = __omap_dm_timer_read(timer, OMAP_TIMER_OCP_CFG_OFFSET, 0); |
134 | timer->posted = 1; | 125 | l |= 0x2 << 0x3; |
126 | __omap_dm_timer_write(timer, OMAP_TIMER_OCP_CFG_OFFSET, l, 0); | ||
127 | |||
128 | timer->posted = 0; | ||
129 | |||
130 | return 0; | ||
135 | } | 131 | } |
136 | 132 | ||
137 | int omap_dm_timer_prepare(struct omap_dm_timer *timer) | 133 | static int omap_dm_timer_prepare(struct omap_dm_timer *timer) |
138 | { | 134 | { |
139 | int ret; | 135 | int rc; |
140 | 136 | ||
141 | /* | 137 | /* |
142 | * FIXME: OMAP1 devices do not use the clock framework for dmtimers so | 138 | * FIXME: OMAP1 devices do not use the clock framework for dmtimers so |
@@ -151,13 +147,20 @@ int omap_dm_timer_prepare(struct omap_dm_timer *timer) | |||
151 | } | 147 | } |
152 | } | 148 | } |
153 | 149 | ||
154 | if (timer->capability & OMAP_TIMER_NEEDS_RESET) | 150 | omap_dm_timer_enable(timer); |
155 | omap_dm_timer_reset(timer); | ||
156 | 151 | ||
157 | ret = omap_dm_timer_set_source(timer, OMAP_TIMER_SRC_32_KHZ); | 152 | if (timer->capability & OMAP_TIMER_NEEDS_RESET) { |
153 | rc = omap_dm_timer_reset(timer); | ||
154 | if (rc) { | ||
155 | omap_dm_timer_disable(timer); | ||
156 | return rc; | ||
157 | } | ||
158 | } | ||
158 | 159 | ||
159 | timer->posted = 1; | 160 | __omap_dm_timer_enable_posted(timer); |
160 | return ret; | 161 | omap_dm_timer_disable(timer); |
162 | |||
163 | return omap_dm_timer_set_source(timer, OMAP_TIMER_SRC_32_KHZ); | ||
161 | } | 164 | } |
162 | 165 | ||
163 | static inline u32 omap_dm_timer_reserved_systimer(int id) | 166 | static inline u32 omap_dm_timer_reserved_systimer(int id) |
@@ -213,6 +216,13 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id) | |||
213 | unsigned long flags; | 216 | unsigned long flags; |
214 | int ret = 0; | 217 | int ret = 0; |
215 | 218 | ||
219 | /* Requesting timer by ID is not supported when device tree is used */ | ||
220 | if (of_have_populated_dt()) { | ||
221 | pr_warn("%s: Please use omap_dm_timer_request_by_cap()\n", | ||
222 | __func__); | ||
223 | return NULL; | ||
224 | } | ||
225 | |||
216 | spin_lock_irqsave(&dm_timer_lock, flags); | 226 | spin_lock_irqsave(&dm_timer_lock, flags); |
217 | list_for_each_entry(t, &omap_timer_list, node) { | 227 | list_for_each_entry(t, &omap_timer_list, node) { |
218 | if (t->pdev->id == id && !t->reserved) { | 228 | if (t->pdev->id == id && !t->reserved) { |
@@ -238,6 +248,58 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id) | |||
238 | } | 248 | } |
239 | EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific); | 249 | EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific); |
240 | 250 | ||
251 | /** | ||
252 | * omap_dm_timer_request_by_cap - Request a timer by capability | ||
253 | * @cap: Bit mask of capabilities to match | ||
254 | * | ||
255 | * Find a timer based upon capabilities bit mask. Callers of this function | ||
256 | * should use the definitions found in the plat/dmtimer.h file under the | ||
257 | * comment "timer capabilities used in hwmod database". Returns pointer to | ||
258 | * timer handle on success and a NULL pointer on failure. | ||
259 | */ | ||
260 | struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap) | ||
261 | { | ||
262 | struct omap_dm_timer *timer = NULL, *t; | ||
263 | unsigned long flags; | ||
264 | |||
265 | if (!cap) | ||
266 | return NULL; | ||
267 | |||
268 | spin_lock_irqsave(&dm_timer_lock, flags); | ||
269 | list_for_each_entry(t, &omap_timer_list, node) { | ||
270 | if ((!t->reserved) && ((t->capability & cap) == cap)) { | ||
271 | /* | ||
272 | * If timer is not NULL, we have already found one timer | ||
273 | * but it was not an exact match because it had more | ||
274 | * capabilites that what was required. Therefore, | ||
275 | * unreserve the last timer found and see if this one | ||
276 | * is a better match. | ||
277 | */ | ||
278 | if (timer) | ||
279 | timer->reserved = 0; | ||
280 | |||
281 | timer = t; | ||
282 | timer->reserved = 1; | ||
283 | |||
284 | /* Exit loop early if we find an exact match */ | ||
285 | if (t->capability == cap) | ||
286 | break; | ||
287 | } | ||
288 | } | ||
289 | spin_unlock_irqrestore(&dm_timer_lock, flags); | ||
290 | |||
291 | if (timer && omap_dm_timer_prepare(timer)) { | ||
292 | timer->reserved = 0; | ||
293 | timer = NULL; | ||
294 | } | ||
295 | |||
296 | if (!timer) | ||
297 | pr_debug("%s: timer request failed!\n", __func__); | ||
298 | |||
299 | return timer; | ||
300 | } | ||
301 | EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap); | ||
302 | |||
241 | int omap_dm_timer_free(struct omap_dm_timer *timer) | 303 | int omap_dm_timer_free(struct omap_dm_timer *timer) |
242 | { | 304 | { |
243 | if (unlikely(!timer)) | 305 | if (unlikely(!timer)) |
@@ -272,7 +334,7 @@ int omap_dm_timer_get_irq(struct omap_dm_timer *timer) | |||
272 | EXPORT_SYMBOL_GPL(omap_dm_timer_get_irq); | 334 | EXPORT_SYMBOL_GPL(omap_dm_timer_get_irq); |
273 | 335 | ||
274 | #if defined(CONFIG_ARCH_OMAP1) | 336 | #if defined(CONFIG_ARCH_OMAP1) |
275 | 337 | #include <mach/hardware.h> | |
276 | /** | 338 | /** |
277 | * omap_dm_timer_modify_idlect_mask - Check if any running timers use ARMXOR | 339 | * omap_dm_timer_modify_idlect_mask - Check if any running timers use ARMXOR |
278 | * @inputmask: current value of idlect mask | 340 | * @inputmask: current value of idlect mask |
@@ -349,7 +411,8 @@ int omap_dm_timer_start(struct omap_dm_timer *timer) | |||
349 | omap_dm_timer_enable(timer); | 411 | omap_dm_timer_enable(timer); |
350 | 412 | ||
351 | if (!(timer->capability & OMAP_TIMER_ALWON)) { | 413 | if (!(timer->capability & OMAP_TIMER_ALWON)) { |
352 | if (omap_pm_get_dev_context_loss_count(&timer->pdev->dev) != | 414 | if (timer->get_context_loss_count && |
415 | timer->get_context_loss_count(&timer->pdev->dev) != | ||
353 | timer->ctx_loss_count) | 416 | timer->ctx_loss_count) |
354 | omap_timer_restore_context(timer); | 417 | omap_timer_restore_context(timer); |
355 | } | 418 | } |
@@ -378,9 +441,11 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer) | |||
378 | 441 | ||
379 | __omap_dm_timer_stop(timer, timer->posted, rate); | 442 | __omap_dm_timer_stop(timer, timer->posted, rate); |
380 | 443 | ||
381 | if (!(timer->capability & OMAP_TIMER_ALWON)) | 444 | if (!(timer->capability & OMAP_TIMER_ALWON)) { |
382 | timer->ctx_loss_count = | 445 | if (timer->get_context_loss_count) |
383 | omap_pm_get_dev_context_loss_count(&timer->pdev->dev); | 446 | timer->ctx_loss_count = |
447 | timer->get_context_loss_count(&timer->pdev->dev); | ||
448 | } | ||
384 | 449 | ||
385 | /* | 450 | /* |
386 | * Since the register values are computed and written within | 451 | * Since the register values are computed and written within |
@@ -389,7 +454,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer) | |||
389 | */ | 454 | */ |
390 | timer->context.tclr = | 455 | timer->context.tclr = |
391 | omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); | 456 | omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); |
392 | timer->context.tisr = __raw_readl(timer->irq_stat); | ||
393 | omap_dm_timer_disable(timer); | 457 | omap_dm_timer_disable(timer); |
394 | return 0; | 458 | return 0; |
395 | } | 459 | } |
@@ -399,7 +463,7 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source) | |||
399 | { | 463 | { |
400 | int ret; | 464 | int ret; |
401 | char *parent_name = NULL; | 465 | char *parent_name = NULL; |
402 | struct clk *fclk, *parent; | 466 | struct clk *parent; |
403 | struct dmtimer_platform_data *pdata; | 467 | struct dmtimer_platform_data *pdata; |
404 | 468 | ||
405 | if (unlikely(!timer)) | 469 | if (unlikely(!timer)) |
@@ -415,14 +479,11 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source) | |||
415 | * use the clock framework to set the parent clock. To be removed | 479 | * use the clock framework to set the parent clock. To be removed |
416 | * once OMAP1 migrated to using clock framework for dmtimers | 480 | * once OMAP1 migrated to using clock framework for dmtimers |
417 | */ | 481 | */ |
418 | if (pdata->set_timer_src) | 482 | if (pdata && pdata->set_timer_src) |
419 | return pdata->set_timer_src(timer->pdev, source); | 483 | return pdata->set_timer_src(timer->pdev, source); |
420 | 484 | ||
421 | fclk = clk_get(&timer->pdev->dev, "fck"); | 485 | if (!timer->fclk) |
422 | if (IS_ERR_OR_NULL(fclk)) { | ||
423 | pr_err("%s: fck not found\n", __func__); | ||
424 | return -EINVAL; | 486 | return -EINVAL; |
425 | } | ||
426 | 487 | ||
427 | switch (source) { | 488 | switch (source) { |
428 | case OMAP_TIMER_SRC_SYS_CLK: | 489 | case OMAP_TIMER_SRC_SYS_CLK: |
@@ -441,18 +502,15 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source) | |||
441 | parent = clk_get(&timer->pdev->dev, parent_name); | 502 | parent = clk_get(&timer->pdev->dev, parent_name); |
442 | if (IS_ERR_OR_NULL(parent)) { | 503 | if (IS_ERR_OR_NULL(parent)) { |
443 | pr_err("%s: %s not found\n", __func__, parent_name); | 504 | pr_err("%s: %s not found\n", __func__, parent_name); |
444 | ret = -EINVAL; | 505 | return -EINVAL; |
445 | goto out; | ||
446 | } | 506 | } |
447 | 507 | ||
448 | ret = clk_set_parent(fclk, parent); | 508 | ret = clk_set_parent(timer->fclk, parent); |
449 | if (IS_ERR_VALUE(ret)) | 509 | if (IS_ERR_VALUE(ret)) |
450 | pr_err("%s: failed to set %s as parent\n", __func__, | 510 | pr_err("%s: failed to set %s as parent\n", __func__, |
451 | parent_name); | 511 | parent_name); |
452 | 512 | ||
453 | clk_put(parent); | 513 | clk_put(parent); |
454 | out: | ||
455 | clk_put(fclk); | ||
456 | 514 | ||
457 | return ret; | 515 | return ret; |
458 | } | 516 | } |
@@ -496,7 +554,8 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload, | |||
496 | omap_dm_timer_enable(timer); | 554 | omap_dm_timer_enable(timer); |
497 | 555 | ||
498 | if (!(timer->capability & OMAP_TIMER_ALWON)) { | 556 | if (!(timer->capability & OMAP_TIMER_ALWON)) { |
499 | if (omap_pm_get_dev_context_loss_count(&timer->pdev->dev) != | 557 | if (timer->get_context_loss_count && |
558 | timer->get_context_loss_count(&timer->pdev->dev) != | ||
500 | timer->ctx_loss_count) | 559 | timer->ctx_loss_count) |
501 | omap_timer_restore_context(timer); | 560 | omap_timer_restore_context(timer); |
502 | } | 561 | } |
@@ -534,8 +593,8 @@ int omap_dm_timer_set_match(struct omap_dm_timer *timer, int enable, | |||
534 | l |= OMAP_TIMER_CTRL_CE; | 593 | l |= OMAP_TIMER_CTRL_CE; |
535 | else | 594 | else |
536 | l &= ~OMAP_TIMER_CTRL_CE; | 595 | l &= ~OMAP_TIMER_CTRL_CE; |
537 | omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l); | ||
538 | omap_dm_timer_write_reg(timer, OMAP_TIMER_MATCH_REG, match); | 596 | omap_dm_timer_write_reg(timer, OMAP_TIMER_MATCH_REG, match); |
597 | omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l); | ||
539 | 598 | ||
540 | /* Save the context */ | 599 | /* Save the context */ |
541 | timer->context.tclr = l; | 600 | timer->context.tclr = l; |
@@ -611,6 +670,37 @@ int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer, | |||
611 | } | 670 | } |
612 | EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_enable); | 671 | EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_enable); |
613 | 672 | ||
673 | /** | ||
674 | * omap_dm_timer_set_int_disable - disable timer interrupts | ||
675 | * @timer: pointer to timer handle | ||
676 | * @mask: bit mask of interrupts to be disabled | ||
677 | * | ||
678 | * Disables the specified timer interrupts for a timer. | ||
679 | */ | ||
680 | int omap_dm_timer_set_int_disable(struct omap_dm_timer *timer, u32 mask) | ||
681 | { | ||
682 | u32 l = mask; | ||
683 | |||
684 | if (unlikely(!timer)) | ||
685 | return -EINVAL; | ||
686 | |||
687 | omap_dm_timer_enable(timer); | ||
688 | |||
689 | if (timer->revision == 1) | ||
690 | l = __raw_readl(timer->irq_ena) & ~mask; | ||
691 | |||
692 | __raw_writel(l, timer->irq_dis); | ||
693 | l = omap_dm_timer_read_reg(timer, OMAP_TIMER_WAKEUP_EN_REG) & ~mask; | ||
694 | omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, l); | ||
695 | |||
696 | /* Save the context */ | ||
697 | timer->context.tier &= ~mask; | ||
698 | timer->context.twer &= ~mask; | ||
699 | omap_dm_timer_disable(timer); | ||
700 | return 0; | ||
701 | } | ||
702 | EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_disable); | ||
703 | |||
614 | unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer) | 704 | unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer) |
615 | { | 705 | { |
616 | unsigned int l; | 706 | unsigned int l; |
@@ -632,8 +722,7 @@ int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value) | |||
632 | return -EINVAL; | 722 | return -EINVAL; |
633 | 723 | ||
634 | __omap_dm_timer_write_status(timer, value); | 724 | __omap_dm_timer_write_status(timer, value); |
635 | /* Save the context */ | 725 | |
636 | timer->context.tisr = value; | ||
637 | return 0; | 726 | return 0; |
638 | } | 727 | } |
639 | EXPORT_SYMBOL_GPL(omap_dm_timer_write_status); | 728 | EXPORT_SYMBOL_GPL(omap_dm_timer_write_status); |
@@ -696,7 +785,7 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev) | |||
696 | struct device *dev = &pdev->dev; | 785 | struct device *dev = &pdev->dev; |
697 | struct dmtimer_platform_data *pdata = pdev->dev.platform_data; | 786 | struct dmtimer_platform_data *pdata = pdev->dev.platform_data; |
698 | 787 | ||
699 | if (!pdata) { | 788 | if (!pdata && !dev->of_node) { |
700 | dev_err(dev, "%s: no platform data.\n", __func__); | 789 | dev_err(dev, "%s: no platform data.\n", __func__); |
701 | return -ENODEV; | 790 | return -ENODEV; |
702 | } | 791 | } |
@@ -725,11 +814,25 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev) | |||
725 | return -ENOMEM; | 814 | return -ENOMEM; |
726 | } | 815 | } |
727 | 816 | ||
728 | timer->id = pdev->id; | 817 | if (dev->of_node) { |
818 | if (of_find_property(dev->of_node, "ti,timer-alwon", NULL)) | ||
819 | timer->capability |= OMAP_TIMER_ALWON; | ||
820 | if (of_find_property(dev->of_node, "ti,timer-dsp", NULL)) | ||
821 | timer->capability |= OMAP_TIMER_HAS_DSP_IRQ; | ||
822 | if (of_find_property(dev->of_node, "ti,timer-pwm", NULL)) | ||
823 | timer->capability |= OMAP_TIMER_HAS_PWM; | ||
824 | if (of_find_property(dev->of_node, "ti,timer-secure", NULL)) | ||
825 | timer->capability |= OMAP_TIMER_SECURE; | ||
826 | } else { | ||
827 | timer->id = pdev->id; | ||
828 | timer->errata = pdata->timer_errata; | ||
829 | timer->capability = pdata->timer_capability; | ||
830 | timer->reserved = omap_dm_timer_reserved_systimer(timer->id); | ||
831 | timer->get_context_loss_count = pdata->get_context_loss_count; | ||
832 | } | ||
833 | |||
729 | timer->irq = irq->start; | 834 | timer->irq = irq->start; |
730 | timer->reserved = omap_dm_timer_reserved_systimer(timer->id); | ||
731 | timer->pdev = pdev; | 835 | timer->pdev = pdev; |
732 | timer->capability = pdata->timer_capability; | ||
733 | 836 | ||
734 | /* Skip pm_runtime_enable for OMAP1 */ | 837 | /* Skip pm_runtime_enable for OMAP1 */ |
735 | if (!(timer->capability & OMAP_TIMER_NEEDS_RESET)) { | 838 | if (!(timer->capability & OMAP_TIMER_NEEDS_RESET)) { |
@@ -769,7 +872,8 @@ static int __devexit omap_dm_timer_remove(struct platform_device *pdev) | |||
769 | 872 | ||
770 | spin_lock_irqsave(&dm_timer_lock, flags); | 873 | spin_lock_irqsave(&dm_timer_lock, flags); |
771 | list_for_each_entry(timer, &omap_timer_list, node) | 874 | list_for_each_entry(timer, &omap_timer_list, node) |
772 | if (timer->pdev->id == pdev->id) { | 875 | if (!strcmp(dev_name(&timer->pdev->dev), |
876 | dev_name(&pdev->dev))) { | ||
773 | list_del(&timer->node); | 877 | list_del(&timer->node); |
774 | ret = 0; | 878 | ret = 0; |
775 | break; | 879 | break; |
@@ -779,11 +883,18 @@ static int __devexit omap_dm_timer_remove(struct platform_device *pdev) | |||
779 | return ret; | 883 | return ret; |
780 | } | 884 | } |
781 | 885 | ||
886 | static const struct of_device_id omap_timer_match[] = { | ||
887 | { .compatible = "ti,omap2-timer", }, | ||
888 | {}, | ||
889 | }; | ||
890 | MODULE_DEVICE_TABLE(of, omap_timer_match); | ||
891 | |||
782 | static struct platform_driver omap_dm_timer_driver = { | 892 | static struct platform_driver omap_dm_timer_driver = { |
783 | .probe = omap_dm_timer_probe, | 893 | .probe = omap_dm_timer_probe, |
784 | .remove = __devexit_p(omap_dm_timer_remove), | 894 | .remove = __devexit_p(omap_dm_timer_remove), |
785 | .driver = { | 895 | .driver = { |
786 | .name = "omap_timer", | 896 | .name = "omap_timer", |
897 | .of_match_table = of_match_ptr(omap_timer_match), | ||
787 | }, | 898 | }, |
788 | }; | 899 | }; |
789 | 900 | ||
diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c index f868caeedfd6..3a77b30f53d4 100644 --- a/arch/arm/plat-omap/fb.c +++ b/arch/arm/plat-omap/fb.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/omapfb.h> | 31 | #include <linux/omapfb.h> |
32 | 32 | ||
33 | #include <mach/hardware.h> | ||
34 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
35 | 34 | ||
36 | #include <plat/cpu.h> | 35 | #include <plat/cpu.h> |
diff --git a/arch/arm/plat-omap/i2c.c b/arch/arm/plat-omap/i2c.c index be6deb7c12ec..f9df624d108c 100644 --- a/arch/arm/plat-omap/i2c.c +++ b/arch/arm/plat-omap/i2c.c | |||
@@ -31,34 +31,13 @@ | |||
31 | #include <linux/err.h> | 31 | #include <linux/err.h> |
32 | #include <linux/clk.h> | 32 | #include <linux/clk.h> |
33 | 33 | ||
34 | #include <mach/irqs.h> | 34 | #include <plat/i2c.h> |
35 | |||
36 | #include "../mach-omap1/soc.h" | ||
37 | #include "../mach-omap2/soc.h" | ||
38 | |||
39 | #include "i2c.h" | ||
40 | 35 | ||
41 | #define OMAP_I2C_MAX_CONTROLLERS 4 | 36 | #define OMAP_I2C_MAX_CONTROLLERS 4 |
42 | static struct omap_i2c_bus_platform_data i2c_pdata[OMAP_I2C_MAX_CONTROLLERS]; | 37 | static struct omap_i2c_bus_platform_data i2c_pdata[OMAP_I2C_MAX_CONTROLLERS]; |
43 | 38 | ||
44 | #define OMAP_I2C_CMDLINE_SETUP (BIT(31)) | 39 | #define OMAP_I2C_CMDLINE_SETUP (BIT(31)) |
45 | 40 | ||
46 | static int __init omap_i2c_nr_ports(void) | ||
47 | { | ||
48 | int ports = 0; | ||
49 | |||
50 | if (cpu_class_is_omap1()) | ||
51 | ports = 1; | ||
52 | else if (cpu_is_omap24xx()) | ||
53 | ports = 2; | ||
54 | else if (cpu_is_omap34xx()) | ||
55 | ports = 3; | ||
56 | else if (cpu_is_omap44xx()) | ||
57 | ports = 4; | ||
58 | |||
59 | return ports; | ||
60 | } | ||
61 | |||
62 | /** | 41 | /** |
63 | * omap_i2c_bus_setup - Process command line options for the I2C bus speed | 42 | * omap_i2c_bus_setup - Process command line options for the I2C bus speed |
64 | * @str: String of options | 43 | * @str: String of options |
@@ -72,12 +51,11 @@ static int __init omap_i2c_nr_ports(void) | |||
72 | */ | 51 | */ |
73 | static int __init omap_i2c_bus_setup(char *str) | 52 | static int __init omap_i2c_bus_setup(char *str) |
74 | { | 53 | { |
75 | int ports; | ||
76 | int ints[3]; | 54 | int ints[3]; |
77 | 55 | ||
78 | ports = omap_i2c_nr_ports(); | ||
79 | get_options(str, 3, ints); | 56 | get_options(str, 3, ints); |
80 | if (ints[0] < 2 || ints[1] < 1 || ints[1] > ports) | 57 | if (ints[0] < 2 || ints[1] < 1 || |
58 | ints[1] > OMAP_I2C_MAX_CONTROLLERS) | ||
81 | return 0; | 59 | return 0; |
82 | i2c_pdata[ints[1] - 1].clkrate = ints[2]; | 60 | i2c_pdata[ints[1] - 1].clkrate = ints[2]; |
83 | i2c_pdata[ints[1] - 1].clkrate |= OMAP_I2C_CMDLINE_SETUP; | 61 | i2c_pdata[ints[1] - 1].clkrate |= OMAP_I2C_CMDLINE_SETUP; |
@@ -122,7 +100,7 @@ int __init omap_register_i2c_bus(int bus_id, u32 clkrate, | |||
122 | { | 100 | { |
123 | int err; | 101 | int err; |
124 | 102 | ||
125 | BUG_ON(bus_id < 1 || bus_id > omap_i2c_nr_ports()); | 103 | BUG_ON(bus_id < 1 || bus_id > OMAP_I2C_MAX_CONTROLLERS); |
126 | 104 | ||
127 | if (info) { | 105 | if (info) { |
128 | err = i2c_register_board_info(bus_id, info, len); | 106 | err = i2c_register_board_info(bus_id, info, len); |
diff --git a/arch/arm/plat-omap/include/plat-omap/dma-omap.h b/arch/arm/plat-omap/include/plat-omap/dma-omap.h deleted file mode 100644 index 222be7e934e5..000000000000 --- a/arch/arm/plat-omap/include/plat-omap/dma-omap.h +++ /dev/null | |||
@@ -1,367 +0,0 @@ | |||
1 | /* | ||
2 | * OMAP DMA handling defines and function | ||
3 | * | ||
4 | * Copyright (C) 2003 Nokia Corporation | ||
5 | * Author: Juha Yrjölä <juha.yrjola@nokia.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #ifndef __ASM_ARCH_DMA_H | ||
22 | #define __ASM_ARCH_DMA_H | ||
23 | |||
24 | #include <linux/platform_device.h> | ||
25 | |||
26 | #define INT_DMA_LCD 25 | ||
27 | |||
28 | #define OMAP1_DMA_TOUT_IRQ (1 << 0) | ||
29 | #define OMAP_DMA_DROP_IRQ (1 << 1) | ||
30 | #define OMAP_DMA_HALF_IRQ (1 << 2) | ||
31 | #define OMAP_DMA_FRAME_IRQ (1 << 3) | ||
32 | #define OMAP_DMA_LAST_IRQ (1 << 4) | ||
33 | #define OMAP_DMA_BLOCK_IRQ (1 << 5) | ||
34 | #define OMAP1_DMA_SYNC_IRQ (1 << 6) | ||
35 | #define OMAP2_DMA_PKT_IRQ (1 << 7) | ||
36 | #define OMAP2_DMA_TRANS_ERR_IRQ (1 << 8) | ||
37 | #define OMAP2_DMA_SECURE_ERR_IRQ (1 << 9) | ||
38 | #define OMAP2_DMA_SUPERVISOR_ERR_IRQ (1 << 10) | ||
39 | #define OMAP2_DMA_MISALIGNED_ERR_IRQ (1 << 11) | ||
40 | |||
41 | #define OMAP_DMA_CCR_EN (1 << 7) | ||
42 | #define OMAP_DMA_CCR_RD_ACTIVE (1 << 9) | ||
43 | #define OMAP_DMA_CCR_WR_ACTIVE (1 << 10) | ||
44 | #define OMAP_DMA_CCR_SEL_SRC_DST_SYNC (1 << 24) | ||
45 | #define OMAP_DMA_CCR_BUFFERING_DISABLE (1 << 25) | ||
46 | |||
47 | #define OMAP_DMA_DATA_TYPE_S8 0x00 | ||
48 | #define OMAP_DMA_DATA_TYPE_S16 0x01 | ||
49 | #define OMAP_DMA_DATA_TYPE_S32 0x02 | ||
50 | |||
51 | #define OMAP_DMA_SYNC_ELEMENT 0x00 | ||
52 | #define OMAP_DMA_SYNC_FRAME 0x01 | ||
53 | #define OMAP_DMA_SYNC_BLOCK 0x02 | ||
54 | #define OMAP_DMA_SYNC_PACKET 0x03 | ||
55 | |||
56 | #define OMAP_DMA_DST_SYNC_PREFETCH 0x02 | ||
57 | #define OMAP_DMA_SRC_SYNC 0x01 | ||
58 | #define OMAP_DMA_DST_SYNC 0x00 | ||
59 | |||
60 | #define OMAP_DMA_PORT_EMIFF 0x00 | ||
61 | #define OMAP_DMA_PORT_EMIFS 0x01 | ||
62 | #define OMAP_DMA_PORT_OCP_T1 0x02 | ||
63 | #define OMAP_DMA_PORT_TIPB 0x03 | ||
64 | #define OMAP_DMA_PORT_OCP_T2 0x04 | ||
65 | #define OMAP_DMA_PORT_MPUI 0x05 | ||
66 | |||
67 | #define OMAP_DMA_AMODE_CONSTANT 0x00 | ||
68 | #define OMAP_DMA_AMODE_POST_INC 0x01 | ||
69 | #define OMAP_DMA_AMODE_SINGLE_IDX 0x02 | ||
70 | #define OMAP_DMA_AMODE_DOUBLE_IDX 0x03 | ||
71 | |||
72 | #define DMA_DEFAULT_FIFO_DEPTH 0x10 | ||
73 | #define DMA_DEFAULT_ARB_RATE 0x01 | ||
74 | /* Pass THREAD_RESERVE ORed with THREAD_FIFO for tparams */ | ||
75 | #define DMA_THREAD_RESERVE_NORM (0x00 << 12) /* Def */ | ||
76 | #define DMA_THREAD_RESERVE_ONET (0x01 << 12) | ||
77 | #define DMA_THREAD_RESERVE_TWOT (0x02 << 12) | ||
78 | #define DMA_THREAD_RESERVE_THREET (0x03 << 12) | ||
79 | #define DMA_THREAD_FIFO_NONE (0x00 << 14) /* Def */ | ||
80 | #define DMA_THREAD_FIFO_75 (0x01 << 14) | ||
81 | #define DMA_THREAD_FIFO_25 (0x02 << 14) | ||
82 | #define DMA_THREAD_FIFO_50 (0x03 << 14) | ||
83 | |||
84 | /* DMA4_OCP_SYSCONFIG bits */ | ||
85 | #define DMA_SYSCONFIG_MIDLEMODE_MASK (3 << 12) | ||
86 | #define DMA_SYSCONFIG_CLOCKACTIVITY_MASK (3 << 8) | ||
87 | #define DMA_SYSCONFIG_EMUFREE (1 << 5) | ||
88 | #define DMA_SYSCONFIG_SIDLEMODE_MASK (3 << 3) | ||
89 | #define DMA_SYSCONFIG_SOFTRESET (1 << 2) | ||
90 | #define DMA_SYSCONFIG_AUTOIDLE (1 << 0) | ||
91 | |||
92 | #define DMA_SYSCONFIG_MIDLEMODE(n) ((n) << 12) | ||
93 | #define DMA_SYSCONFIG_SIDLEMODE(n) ((n) << 3) | ||
94 | |||
95 | #define DMA_IDLEMODE_SMARTIDLE 0x2 | ||
96 | #define DMA_IDLEMODE_NO_IDLE 0x1 | ||
97 | #define DMA_IDLEMODE_FORCE_IDLE 0x0 | ||
98 | |||
99 | /* Chaining modes*/ | ||
100 | #ifndef CONFIG_ARCH_OMAP1 | ||
101 | #define OMAP_DMA_STATIC_CHAIN 0x1 | ||
102 | #define OMAP_DMA_DYNAMIC_CHAIN 0x2 | ||
103 | #define OMAP_DMA_CHAIN_ACTIVE 0x1 | ||
104 | #define OMAP_DMA_CHAIN_INACTIVE 0x0 | ||
105 | #endif | ||
106 | |||
107 | #define DMA_CH_PRIO_HIGH 0x1 | ||
108 | #define DMA_CH_PRIO_LOW 0x0 /* Def */ | ||
109 | |||
110 | /* Errata handling */ | ||
111 | #define IS_DMA_ERRATA(id) (errata & (id)) | ||
112 | #define SET_DMA_ERRATA(id) (errata |= (id)) | ||
113 | |||
114 | #define DMA_ERRATA_IFRAME_BUFFERING BIT(0x0) | ||
115 | #define DMA_ERRATA_PARALLEL_CHANNELS BIT(0x1) | ||
116 | #define DMA_ERRATA_i378 BIT(0x2) | ||
117 | #define DMA_ERRATA_i541 BIT(0x3) | ||
118 | #define DMA_ERRATA_i88 BIT(0x4) | ||
119 | #define DMA_ERRATA_3_3 BIT(0x5) | ||
120 | #define DMA_ROMCODE_BUG BIT(0x6) | ||
121 | |||
122 | /* Attributes for OMAP DMA Contrller */ | ||
123 | #define DMA_LINKED_LCH BIT(0x0) | ||
124 | #define GLOBAL_PRIORITY BIT(0x1) | ||
125 | #define RESERVE_CHANNEL BIT(0x2) | ||
126 | #define IS_CSSA_32 BIT(0x3) | ||
127 | #define IS_CDSA_32 BIT(0x4) | ||
128 | #define IS_RW_PRIORITY BIT(0x5) | ||
129 | #define ENABLE_1510_MODE BIT(0x6) | ||
130 | #define SRC_PORT BIT(0x7) | ||
131 | #define DST_PORT BIT(0x8) | ||
132 | #define SRC_INDEX BIT(0x9) | ||
133 | #define DST_INDEX BIT(0xA) | ||
134 | #define IS_BURST_ONLY4 BIT(0xB) | ||
135 | #define CLEAR_CSR_ON_READ BIT(0xC) | ||
136 | #define IS_WORD_16 BIT(0xD) | ||
137 | |||
138 | /* Defines for DMA Capabilities */ | ||
139 | #define DMA_HAS_TRANSPARENT_CAPS (0x1 << 18) | ||
140 | #define DMA_HAS_CONSTANT_FILL_CAPS (0x1 << 19) | ||
141 | #define DMA_HAS_DESCRIPTOR_CAPS (0x3 << 20) | ||
142 | |||
143 | enum omap_reg_offsets { | ||
144 | |||
145 | GCR, GSCR, GRST1, HW_ID, | ||
146 | PCH2_ID, PCH0_ID, PCH1_ID, PCHG_ID, | ||
147 | PCHD_ID, CAPS_0, CAPS_1, CAPS_2, | ||
148 | CAPS_3, CAPS_4, PCH2_SR, PCH0_SR, | ||
149 | PCH1_SR, PCHD_SR, REVISION, IRQSTATUS_L0, | ||
150 | IRQSTATUS_L1, IRQSTATUS_L2, IRQSTATUS_L3, IRQENABLE_L0, | ||
151 | IRQENABLE_L1, IRQENABLE_L2, IRQENABLE_L3, SYSSTATUS, | ||
152 | OCP_SYSCONFIG, | ||
153 | |||
154 | /* omap1+ specific */ | ||
155 | CPC, CCR2, LCH_CTRL, | ||
156 | |||
157 | /* Common registers for all omap's */ | ||
158 | CSDP, CCR, CICR, CSR, | ||
159 | CEN, CFN, CSFI, CSEI, | ||
160 | CSAC, CDAC, CDEI, | ||
161 | CDFI, CLNK_CTRL, | ||
162 | |||
163 | /* Channel specific registers */ | ||
164 | CSSA, CDSA, COLOR, | ||
165 | CCEN, CCFN, | ||
166 | |||
167 | /* omap3630 and omap4 specific */ | ||
168 | CDP, CNDP, CCDN, | ||
169 | |||
170 | }; | ||
171 | |||
172 | enum omap_dma_burst_mode { | ||
173 | OMAP_DMA_DATA_BURST_DIS = 0, | ||
174 | OMAP_DMA_DATA_BURST_4, | ||
175 | OMAP_DMA_DATA_BURST_8, | ||
176 | OMAP_DMA_DATA_BURST_16, | ||
177 | }; | ||
178 | |||
179 | enum end_type { | ||
180 | OMAP_DMA_LITTLE_ENDIAN = 0, | ||
181 | OMAP_DMA_BIG_ENDIAN | ||
182 | }; | ||
183 | |||
184 | enum omap_dma_color_mode { | ||
185 | OMAP_DMA_COLOR_DIS = 0, | ||
186 | OMAP_DMA_CONSTANT_FILL, | ||
187 | OMAP_DMA_TRANSPARENT_COPY | ||
188 | }; | ||
189 | |||
190 | enum omap_dma_write_mode { | ||
191 | OMAP_DMA_WRITE_NON_POSTED = 0, | ||
192 | OMAP_DMA_WRITE_POSTED, | ||
193 | OMAP_DMA_WRITE_LAST_NON_POSTED | ||
194 | }; | ||
195 | |||
196 | enum omap_dma_channel_mode { | ||
197 | OMAP_DMA_LCH_2D = 0, | ||
198 | OMAP_DMA_LCH_G, | ||
199 | OMAP_DMA_LCH_P, | ||
200 | OMAP_DMA_LCH_PD | ||
201 | }; | ||
202 | |||
203 | struct omap_dma_channel_params { | ||
204 | int data_type; /* data type 8,16,32 */ | ||
205 | int elem_count; /* number of elements in a frame */ | ||
206 | int frame_count; /* number of frames in a element */ | ||
207 | |||
208 | int src_port; /* Only on OMAP1 REVISIT: Is this needed? */ | ||
209 | int src_amode; /* constant, post increment, indexed, | ||
210 | double indexed */ | ||
211 | unsigned long src_start; /* source address : physical */ | ||
212 | int src_ei; /* source element index */ | ||
213 | int src_fi; /* source frame index */ | ||
214 | |||
215 | int dst_port; /* Only on OMAP1 REVISIT: Is this needed? */ | ||
216 | int dst_amode; /* constant, post increment, indexed, | ||
217 | double indexed */ | ||
218 | unsigned long dst_start; /* source address : physical */ | ||
219 | int dst_ei; /* source element index */ | ||
220 | int dst_fi; /* source frame index */ | ||
221 | |||
222 | int trigger; /* trigger attached if the channel is | ||
223 | synchronized */ | ||
224 | int sync_mode; /* sycn on element, frame , block or packet */ | ||
225 | int src_or_dst_synch; /* source synch(1) or destination synch(0) */ | ||
226 | |||
227 | int ie; /* interrupt enabled */ | ||
228 | |||
229 | unsigned char read_prio;/* read priority */ | ||
230 | unsigned char write_prio;/* write priority */ | ||
231 | |||
232 | #ifndef CONFIG_ARCH_OMAP1 | ||
233 | enum omap_dma_burst_mode burst_mode; /* Burst mode 4/8/16 words */ | ||
234 | #endif | ||
235 | }; | ||
236 | |||
237 | struct omap_dma_lch { | ||
238 | int next_lch; | ||
239 | int dev_id; | ||
240 | u16 saved_csr; | ||
241 | u16 enabled_irqs; | ||
242 | const char *dev_name; | ||
243 | void (*callback)(int lch, u16 ch_status, void *data); | ||
244 | void *data; | ||
245 | long flags; | ||
246 | /* required for Dynamic chaining */ | ||
247 | int prev_linked_ch; | ||
248 | int next_linked_ch; | ||
249 | int state; | ||
250 | int chain_id; | ||
251 | int status; | ||
252 | }; | ||
253 | |||
254 | struct omap_dma_dev_attr { | ||
255 | u32 dev_caps; | ||
256 | u16 lch_count; | ||
257 | u16 chan_count; | ||
258 | struct omap_dma_lch *chan; | ||
259 | }; | ||
260 | |||
261 | /* System DMA platform data structure */ | ||
262 | struct omap_system_dma_plat_info { | ||
263 | struct omap_dma_dev_attr *dma_attr; | ||
264 | u32 errata; | ||
265 | void (*disable_irq_lch)(int lch); | ||
266 | void (*show_dma_caps)(void); | ||
267 | void (*clear_lch_regs)(int lch); | ||
268 | void (*clear_dma)(int lch); | ||
269 | void (*dma_write)(u32 val, int reg, int lch); | ||
270 | u32 (*dma_read)(int reg, int lch); | ||
271 | }; | ||
272 | |||
273 | extern void __init omap_init_consistent_dma_size(void); | ||
274 | extern void omap_set_dma_priority(int lch, int dst_port, int priority); | ||
275 | extern int omap_request_dma(int dev_id, const char *dev_name, | ||
276 | void (*callback)(int lch, u16 ch_status, void *data), | ||
277 | void *data, int *dma_ch); | ||
278 | extern void omap_enable_dma_irq(int ch, u16 irq_bits); | ||
279 | extern void omap_disable_dma_irq(int ch, u16 irq_bits); | ||
280 | extern void omap_free_dma(int ch); | ||
281 | extern void omap_start_dma(int lch); | ||
282 | extern void omap_stop_dma(int lch); | ||
283 | extern void omap_set_dma_transfer_params(int lch, int data_type, | ||
284 | int elem_count, int frame_count, | ||
285 | int sync_mode, | ||
286 | int dma_trigger, int src_or_dst_synch); | ||
287 | extern void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, | ||
288 | u32 color); | ||
289 | extern void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode); | ||
290 | extern void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode); | ||
291 | |||
292 | extern void omap_set_dma_src_params(int lch, int src_port, int src_amode, | ||
293 | unsigned long src_start, | ||
294 | int src_ei, int src_fi); | ||
295 | extern void omap_set_dma_src_index(int lch, int eidx, int fidx); | ||
296 | extern void omap_set_dma_src_data_pack(int lch, int enable); | ||
297 | extern void omap_set_dma_src_burst_mode(int lch, | ||
298 | enum omap_dma_burst_mode burst_mode); | ||
299 | |||
300 | extern void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, | ||
301 | unsigned long dest_start, | ||
302 | int dst_ei, int dst_fi); | ||
303 | extern void omap_set_dma_dest_index(int lch, int eidx, int fidx); | ||
304 | extern void omap_set_dma_dest_data_pack(int lch, int enable); | ||
305 | extern void omap_set_dma_dest_burst_mode(int lch, | ||
306 | enum omap_dma_burst_mode burst_mode); | ||
307 | |||
308 | extern void omap_set_dma_params(int lch, | ||
309 | struct omap_dma_channel_params *params); | ||
310 | |||
311 | extern void omap_dma_link_lch(int lch_head, int lch_queue); | ||
312 | extern void omap_dma_unlink_lch(int lch_head, int lch_queue); | ||
313 | |||
314 | extern int omap_set_dma_callback(int lch, | ||
315 | void (*callback)(int lch, u16 ch_status, void *data), | ||
316 | void *data); | ||
317 | extern dma_addr_t omap_get_dma_src_pos(int lch); | ||
318 | extern dma_addr_t omap_get_dma_dst_pos(int lch); | ||
319 | extern void omap_clear_dma(int lch); | ||
320 | extern int omap_get_dma_active_status(int lch); | ||
321 | extern int omap_dma_running(void); | ||
322 | extern void omap_dma_set_global_params(int arb_rate, int max_fifo_depth, | ||
323 | int tparams); | ||
324 | extern int omap_dma_set_prio_lch(int lch, unsigned char read_prio, | ||
325 | unsigned char write_prio); | ||
326 | extern void omap_set_dma_dst_endian_type(int lch, enum end_type etype); | ||
327 | extern void omap_set_dma_src_endian_type(int lch, enum end_type etype); | ||
328 | extern int omap_get_dma_index(int lch, int *ei, int *fi); | ||
329 | |||
330 | void omap_dma_global_context_save(void); | ||
331 | void omap_dma_global_context_restore(void); | ||
332 | |||
333 | extern void omap_dma_disable_irq(int lch); | ||
334 | |||
335 | /* Chaining APIs */ | ||
336 | #ifndef CONFIG_ARCH_OMAP1 | ||
337 | extern int omap_request_dma_chain(int dev_id, const char *dev_name, | ||
338 | void (*callback) (int lch, u16 ch_status, | ||
339 | void *data), | ||
340 | int *chain_id, int no_of_chans, | ||
341 | int chain_mode, | ||
342 | struct omap_dma_channel_params params); | ||
343 | extern int omap_free_dma_chain(int chain_id); | ||
344 | extern int omap_dma_chain_a_transfer(int chain_id, int src_start, | ||
345 | int dest_start, int elem_count, | ||
346 | int frame_count, void *callbk_data); | ||
347 | extern int omap_start_dma_chain_transfers(int chain_id); | ||
348 | extern int omap_stop_dma_chain_transfers(int chain_id); | ||
349 | extern int omap_get_dma_chain_index(int chain_id, int *ei, int *fi); | ||
350 | extern int omap_get_dma_chain_dst_pos(int chain_id); | ||
351 | extern int omap_get_dma_chain_src_pos(int chain_id); | ||
352 | |||
353 | extern int omap_modify_dma_chain_params(int chain_id, | ||
354 | struct omap_dma_channel_params params); | ||
355 | extern int omap_dma_chain_status(int chain_id); | ||
356 | #endif | ||
357 | |||
358 | #if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_FB_OMAP) | ||
359 | #include <mach/lcd_dma.h> | ||
360 | #else | ||
361 | static inline int omap_lcd_dma_running(void) | ||
362 | { | ||
363 | return 0; | ||
364 | } | ||
365 | #endif | ||
366 | |||
367 | #endif /* __ASM_ARCH_DMA_H */ | ||
diff --git a/arch/arm/plat-omap/include/plat/counter-32k.h b/arch/arm/plat-omap/include/plat/counter-32k.h new file mode 100644 index 000000000000..da000d482ff2 --- /dev/null +++ b/arch/arm/plat-omap/include/plat/counter-32k.h | |||
@@ -0,0 +1 @@ | |||
int omap_init_clocksource_32k(void __iomem *vbase); | |||
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h index ba542ec8d513..b4516aba67ed 100644 --- a/arch/arm/plat-omap/include/plat/cpu.h +++ b/arch/arm/plat-omap/include/plat/cpu.h | |||
@@ -29,7 +29,7 @@ | |||
29 | #define __ASM_ARCH_OMAP_CPU_H | 29 | #define __ASM_ARCH_OMAP_CPU_H |
30 | 30 | ||
31 | #ifdef CONFIG_ARCH_OMAP1 | 31 | #ifdef CONFIG_ARCH_OMAP1 |
32 | #include "../../mach-omap1/soc.h" | 32 | #include <mach/soc.h> |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | #ifdef CONFIG_ARCH_OMAP2PLUS | 35 | #ifdef CONFIG_ARCH_OMAP2PLUS |
diff --git a/arch/arm/mach-omap2/debug-devices.h b/arch/arm/plat-omap/include/plat/debug-devices.h index a4edbd2f7484..8fc4287222dd 100644 --- a/arch/arm/mach-omap2/debug-devices.h +++ b/arch/arm/plat-omap/include/plat/debug-devices.h | |||
@@ -1,9 +1,2 @@ | |||
1 | #ifndef _OMAP_DEBUG_DEVICES_H | ||
2 | #define _OMAP_DEBUG_DEVICES_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | /* for TI reference platforms sharing the same debug card */ | 1 | /* for TI reference platforms sharing the same debug card */ |
7 | extern int debug_card_init(u32 addr, unsigned gpio); | 2 | extern int debug_card_init(u32 addr, unsigned gpio); |
8 | |||
9 | #endif | ||
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h index 85868e98c11c..a3fbc48c332e 100644 --- a/arch/arm/plat-omap/include/plat/dmtimer.h +++ b/arch/arm/plat-omap/include/plat/dmtimer.h | |||
@@ -32,7 +32,6 @@ | |||
32 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 32 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include <linux/clk.h> | ||
36 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
37 | #include <linux/io.h> | 36 | #include <linux/io.h> |
38 | #include <linux/platform_device.h> | 37 | #include <linux/platform_device.h> |
@@ -55,6 +54,10 @@ | |||
55 | #define OMAP_TIMER_TRIGGER_OVERFLOW 0x01 | 54 | #define OMAP_TIMER_TRIGGER_OVERFLOW 0x01 |
56 | #define OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02 | 55 | #define OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02 |
57 | 56 | ||
57 | /* posted mode types */ | ||
58 | #define OMAP_TIMER_NONPOSTED 0x00 | ||
59 | #define OMAP_TIMER_POSTED 0x01 | ||
60 | |||
58 | /* timer capabilities used in hwmod database */ | 61 | /* timer capabilities used in hwmod database */ |
59 | #define OMAP_TIMER_SECURE 0x80000000 | 62 | #define OMAP_TIMER_SECURE 0x80000000 |
60 | #define OMAP_TIMER_ALWON 0x40000000 | 63 | #define OMAP_TIMER_ALWON 0x40000000 |
@@ -62,16 +65,22 @@ | |||
62 | #define OMAP_TIMER_NEEDS_RESET 0x10000000 | 65 | #define OMAP_TIMER_NEEDS_RESET 0x10000000 |
63 | #define OMAP_TIMER_HAS_DSP_IRQ 0x08000000 | 66 | #define OMAP_TIMER_HAS_DSP_IRQ 0x08000000 |
64 | 67 | ||
68 | /* | ||
69 | * timer errata flags | ||
70 | * | ||
71 | * Errata i103/i767 impacts all OMAP3/4/5 devices including AM33xx. This | ||
72 | * errata prevents us from using posted mode on these devices, unless the | ||
73 | * timer counter register is never read. For more details please refer to | ||
74 | * the OMAP3/4/5 errata documents. | ||
75 | */ | ||
76 | #define OMAP_TIMER_ERRATA_I103_I767 0x80000000 | ||
77 | |||
65 | struct omap_timer_capability_dev_attr { | 78 | struct omap_timer_capability_dev_attr { |
66 | u32 timer_capability; | 79 | u32 timer_capability; |
67 | }; | 80 | }; |
68 | 81 | ||
69 | struct omap_dm_timer; | ||
70 | |||
71 | struct timer_regs { | 82 | struct timer_regs { |
72 | u32 tidr; | 83 | u32 tidr; |
73 | u32 tistat; | ||
74 | u32 tisr; | ||
75 | u32 tier; | 84 | u32 tier; |
76 | u32 twer; | 85 | u32 twer; |
77 | u32 tclr; | 86 | u32 tclr; |
@@ -90,15 +99,35 @@ struct timer_regs { | |||
90 | u32 towr; | 99 | u32 towr; |
91 | }; | 100 | }; |
92 | 101 | ||
93 | struct dmtimer_platform_data { | 102 | struct omap_dm_timer { |
94 | /* set_timer_src - Only used for OMAP1 devices */ | 103 | int id; |
95 | int (*set_timer_src)(struct platform_device *pdev, int source); | 104 | int irq; |
96 | u32 timer_capability; | 105 | struct clk *fclk; |
106 | |||
107 | void __iomem *io_base; | ||
108 | void __iomem *irq_stat; /* TISR/IRQSTATUS interrupt status */ | ||
109 | void __iomem *irq_ena; /* irq enable */ | ||
110 | void __iomem *irq_dis; /* irq disable, only on v2 ip */ | ||
111 | void __iomem *pend; /* write pending */ | ||
112 | void __iomem *func_base; /* function register base */ | ||
113 | |||
114 | unsigned long rate; | ||
115 | unsigned reserved:1; | ||
116 | unsigned posted:1; | ||
117 | struct timer_regs context; | ||
118 | int (*get_context_loss_count)(struct device *); | ||
119 | int ctx_loss_count; | ||
120 | int revision; | ||
121 | u32 capability; | ||
122 | u32 errata; | ||
123 | struct platform_device *pdev; | ||
124 | struct list_head node; | ||
97 | }; | 125 | }; |
98 | 126 | ||
99 | int omap_dm_timer_reserve_systimer(int id); | 127 | int omap_dm_timer_reserve_systimer(int id); |
100 | struct omap_dm_timer *omap_dm_timer_request(void); | 128 | struct omap_dm_timer *omap_dm_timer_request(void); |
101 | struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id); | 129 | struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id); |
130 | struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap); | ||
102 | int omap_dm_timer_free(struct omap_dm_timer *timer); | 131 | int omap_dm_timer_free(struct omap_dm_timer *timer); |
103 | void omap_dm_timer_enable(struct omap_dm_timer *timer); | 132 | void omap_dm_timer_enable(struct omap_dm_timer *timer); |
104 | void omap_dm_timer_disable(struct omap_dm_timer *timer); | 133 | void omap_dm_timer_disable(struct omap_dm_timer *timer); |
@@ -120,6 +149,7 @@ int omap_dm_timer_set_pwm(struct omap_dm_timer *timer, int def_on, int toggle, i | |||
120 | int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler); | 149 | int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler); |
121 | 150 | ||
122 | int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer, unsigned int value); | 151 | int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer, unsigned int value); |
152 | int omap_dm_timer_set_int_disable(struct omap_dm_timer *timer, u32 mask); | ||
123 | 153 | ||
124 | unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer); | 154 | unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer); |
125 | int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value); | 155 | int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value); |
@@ -245,33 +275,6 @@ int omap_dm_timers_active(void); | |||
245 | #define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \ | 275 | #define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \ |
246 | (_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT)) | 276 | (_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT)) |
247 | 277 | ||
248 | struct omap_dm_timer { | ||
249 | unsigned long phys_base; | ||
250 | int id; | ||
251 | int irq; | ||
252 | struct clk *fclk; | ||
253 | |||
254 | void __iomem *io_base; | ||
255 | void __iomem *sys_stat; /* TISTAT timer status */ | ||
256 | void __iomem *irq_stat; /* TISR/IRQSTATUS interrupt status */ | ||
257 | void __iomem *irq_ena; /* irq enable */ | ||
258 | void __iomem *irq_dis; /* irq disable, only on v2 ip */ | ||
259 | void __iomem *pend; /* write pending */ | ||
260 | void __iomem *func_base; /* function register base */ | ||
261 | |||
262 | unsigned long rate; | ||
263 | unsigned reserved:1; | ||
264 | unsigned posted:1; | ||
265 | struct timer_regs context; | ||
266 | int ctx_loss_count; | ||
267 | int revision; | ||
268 | u32 capability; | ||
269 | struct platform_device *pdev; | ||
270 | struct list_head node; | ||
271 | }; | ||
272 | |||
273 | int omap_dm_timer_prepare(struct omap_dm_timer *timer); | ||
274 | |||
275 | static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, | 278 | static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, |
276 | int posted) | 279 | int posted) |
277 | { | 280 | { |
@@ -300,16 +303,13 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) | |||
300 | tidr = __raw_readl(timer->io_base); | 303 | tidr = __raw_readl(timer->io_base); |
301 | if (!(tidr >> 16)) { | 304 | if (!(tidr >> 16)) { |
302 | timer->revision = 1; | 305 | timer->revision = 1; |
303 | timer->sys_stat = timer->io_base + | ||
304 | OMAP_TIMER_V1_SYS_STAT_OFFSET; | ||
305 | timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET; | 306 | timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET; |
306 | timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; | 307 | timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; |
307 | timer->irq_dis = NULL; | 308 | timer->irq_dis = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; |
308 | timer->pend = timer->io_base + _OMAP_TIMER_WRITE_PEND_OFFSET; | 309 | timer->pend = timer->io_base + _OMAP_TIMER_WRITE_PEND_OFFSET; |
309 | timer->func_base = timer->io_base; | 310 | timer->func_base = timer->io_base; |
310 | } else { | 311 | } else { |
311 | timer->revision = 2; | 312 | timer->revision = 2; |
312 | timer->sys_stat = NULL; | ||
313 | timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS; | 313 | timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS; |
314 | timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET; | 314 | timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET; |
315 | timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR; | 315 | timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR; |
@@ -320,45 +320,44 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) | |||
320 | } | 320 | } |
321 | } | 321 | } |
322 | 322 | ||
323 | /* Assumes the source clock has been set by caller */ | 323 | /* |
324 | static inline void __omap_dm_timer_reset(struct omap_dm_timer *timer, | 324 | * __omap_dm_timer_enable_posted - enables write posted mode |
325 | int autoidle, int wakeup) | 325 | * @timer: pointer to timer instance handle |
326 | * | ||
327 | * Enables the write posted mode for the timer. When posted mode is enabled | ||
328 | * writes to certain timer registers are immediately acknowledged by the | ||
329 | * internal bus and hence prevents stalling the CPU waiting for the write to | ||
330 | * complete. Enabling this feature can improve performance for writing to the | ||
331 | * timer registers. | ||
332 | */ | ||
333 | static inline void __omap_dm_timer_enable_posted(struct omap_dm_timer *timer) | ||
326 | { | 334 | { |
327 | u32 l; | 335 | if (timer->posted) |
336 | return; | ||
328 | 337 | ||
329 | l = __raw_readl(timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); | 338 | if (timer->errata & OMAP_TIMER_ERRATA_I103_I767) |
330 | l |= 0x02 << 3; /* Set to smart-idle mode */ | 339 | return; |
331 | l |= 0x2 << 8; /* Set clock activity to perserve f-clock on idle */ | ||
332 | 340 | ||
333 | if (autoidle) | ||
334 | l |= 0x1 << 0; | ||
335 | |||
336 | if (wakeup) | ||
337 | l |= 1 << 2; | ||
338 | |||
339 | __raw_writel(l, timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); | ||
340 | |||
341 | /* Match hardware reset default of posted mode */ | ||
342 | __omap_dm_timer_write(timer, OMAP_TIMER_IF_CTRL_REG, | 341 | __omap_dm_timer_write(timer, OMAP_TIMER_IF_CTRL_REG, |
343 | OMAP_TIMER_CTRL_POSTED, 0); | 342 | OMAP_TIMER_CTRL_POSTED, 0); |
343 | timer->context.tsicr = OMAP_TIMER_CTRL_POSTED; | ||
344 | timer->posted = OMAP_TIMER_POSTED; | ||
344 | } | 345 | } |
345 | 346 | ||
346 | static inline int __omap_dm_timer_set_source(struct clk *timer_fck, | 347 | /** |
347 | struct clk *parent) | 348 | * __omap_dm_timer_override_errata - override errata flags for a timer |
349 | * @timer: pointer to timer handle | ||
350 | * @errata: errata flags to be ignored | ||
351 | * | ||
352 | * For a given timer, override a timer errata by clearing the flags | ||
353 | * specified by the errata argument. A specific erratum should only be | ||
354 | * overridden for a timer if the timer is used in such a way the erratum | ||
355 | * has no impact. | ||
356 | */ | ||
357 | static inline void __omap_dm_timer_override_errata(struct omap_dm_timer *timer, | ||
358 | u32 errata) | ||
348 | { | 359 | { |
349 | int ret; | 360 | timer->errata &= ~errata; |
350 | |||
351 | clk_disable(timer_fck); | ||
352 | ret = clk_set_parent(timer_fck, parent); | ||
353 | clk_enable(timer_fck); | ||
354 | |||
355 | /* | ||
356 | * When the functional clock disappears, too quick writes seem | ||
357 | * to cause an abort. XXX Is this still necessary? | ||
358 | */ | ||
359 | __delay(300000); | ||
360 | |||
361 | return ret; | ||
362 | } | 361 | } |
363 | 362 | ||
364 | static inline void __omap_dm_timer_stop(struct omap_dm_timer *timer, | 363 | static inline void __omap_dm_timer_stop(struct omap_dm_timer *timer, |
diff --git a/arch/arm/plat-omap/i2c.h b/arch/arm/plat-omap/include/plat/i2c.h index 7a9028cb5a75..7a9028cb5a75 100644 --- a/arch/arm/plat-omap/i2c.h +++ b/arch/arm/plat-omap/include/plat/i2c.h | |||
diff --git a/arch/arm/plat-omap/include/plat/sram.h b/arch/arm/plat-omap/include/plat/sram.h new file mode 100644 index 000000000000..ba4525059a99 --- /dev/null +++ b/arch/arm/plat-omap/include/plat/sram.h | |||
@@ -0,0 +1,16 @@ | |||
1 | int omap_sram_init(void); | ||
2 | |||
3 | void omap_map_sram(unsigned long start, unsigned long size, | ||
4 | unsigned long skip, int cached); | ||
5 | void omap_sram_reset(void); | ||
6 | |||
7 | extern void *omap_sram_push_address(unsigned long size); | ||
8 | |||
9 | /* Macro to push a function to the internal SRAM, using the fncpy API */ | ||
10 | #define omap_sram_push(funcp, size) ({ \ | ||
11 | typeof(&(funcp)) _res = NULL; \ | ||
12 | void *_sram_address = omap_sram_push_address(size); \ | ||
13 | if (_sram_address) \ | ||
14 | _res = fncpy(_sram_address, &(funcp), size); \ | ||
15 | _res; \ | ||
16 | }) | ||
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 70dcc225157f..743fc2836f7a 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -20,198 +20,20 @@ | |||
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | 22 | ||
23 | #include <asm/fncpy.h> | ||
23 | #include <asm/tlb.h> | 24 | #include <asm/tlb.h> |
24 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
25 | 26 | ||
26 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
27 | 28 | ||
28 | #include "../mach-omap1/soc.h" | ||
29 | #include "../mach-omap2/soc.h" | ||
30 | |||
31 | #include "sram.h" | ||
32 | |||
33 | /* XXX These "sideways" includes will disappear when sram.c becomes a driver */ | ||
34 | #include "../mach-omap2/iomap.h" | ||
35 | #include "../mach-omap2/prm2xxx_3xxx.h" | ||
36 | #include "../mach-omap2/sdrc.h" | ||
37 | |||
38 | #define OMAP1_SRAM_PA 0x20000000 | ||
39 | #define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800) | ||
40 | #define OMAP3_SRAM_PUB_PA (OMAP3_SRAM_PA + 0x8000) | ||
41 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
42 | #define OMAP4_SRAM_PUB_PA OMAP4_SRAM_PA | ||
43 | #else | ||
44 | #define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000) | ||
45 | #endif | ||
46 | #define OMAP5_SRAM_PA 0x40300000 | ||
47 | |||
48 | #if defined(CONFIG_ARCH_OMAP2PLUS) | ||
49 | #define SRAM_BOOTLOADER_SZ 0x00 | ||
50 | #else | ||
51 | #define SRAM_BOOTLOADER_SZ 0x80 | ||
52 | #endif | ||
53 | |||
54 | #define OMAP24XX_VA_REQINFOPERM0 OMAP2_L3_IO_ADDRESS(0x68005048) | ||
55 | #define OMAP24XX_VA_READPERM0 OMAP2_L3_IO_ADDRESS(0x68005050) | ||
56 | #define OMAP24XX_VA_WRITEPERM0 OMAP2_L3_IO_ADDRESS(0x68005058) | ||
57 | |||
58 | #define OMAP34XX_VA_REQINFOPERM0 OMAP2_L3_IO_ADDRESS(0x68012848) | ||
59 | #define OMAP34XX_VA_READPERM0 OMAP2_L3_IO_ADDRESS(0x68012850) | ||
60 | #define OMAP34XX_VA_WRITEPERM0 OMAP2_L3_IO_ADDRESS(0x68012858) | ||
61 | #define OMAP34XX_VA_ADDR_MATCH2 OMAP2_L3_IO_ADDRESS(0x68012880) | ||
62 | #define OMAP34XX_VA_SMS_RG_ATT0 OMAP2_L3_IO_ADDRESS(0x6C000048) | ||
63 | |||
64 | #define GP_DEVICE 0x300 | ||
65 | |||
66 | #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) | 29 | #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) |
67 | 30 | ||
68 | static unsigned long omap_sram_start; | ||
69 | static void __iomem *omap_sram_base; | 31 | static void __iomem *omap_sram_base; |
70 | static unsigned long omap_sram_skip; | 32 | static unsigned long omap_sram_skip; |
71 | static unsigned long omap_sram_size; | 33 | static unsigned long omap_sram_size; |
72 | static void __iomem *omap_sram_ceil; | 34 | static void __iomem *omap_sram_ceil; |
73 | 35 | ||
74 | /* | 36 | /* |
75 | * Depending on the target RAMFS firewall setup, the public usable amount of | ||
76 | * SRAM varies. The default accessible size for all device types is 2k. A GP | ||
77 | * device allows ARM11 but not other initiators for full size. This | ||
78 | * functionality seems ok until some nice security API happens. | ||
79 | */ | ||
80 | static int is_sram_locked(void) | ||
81 | { | ||
82 | if (OMAP2_DEVICE_TYPE_GP == omap_type()) { | ||
83 | /* RAMFW: R/W access to all initiators for all qualifier sets */ | ||
84 | if (cpu_is_omap242x()) { | ||
85 | __raw_writel(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */ | ||
86 | __raw_writel(0xCFDE, OMAP24XX_VA_READPERM0); /* all i-read */ | ||
87 | __raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */ | ||
88 | } | ||
89 | if (cpu_is_omap34xx()) { | ||
90 | __raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */ | ||
91 | __raw_writel(0xFFFF, OMAP34XX_VA_READPERM0); /* all i-read */ | ||
92 | __raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */ | ||
93 | __raw_writel(0x0, OMAP34XX_VA_ADDR_MATCH2); | ||
94 | __raw_writel(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0); | ||
95 | } | ||
96 | return 0; | ||
97 | } else | ||
98 | return 1; /* assume locked with no PPA or security driver */ | ||
99 | } | ||
100 | |||
101 | /* | ||
102 | * The amount of SRAM depends on the core type. | ||
103 | * Note that we cannot try to test for SRAM here because writes | ||
104 | * to secure SRAM will hang the system. Also the SRAM is not | ||
105 | * yet mapped at this point. | ||
106 | */ | ||
107 | static void __init omap_detect_sram(void) | ||
108 | { | ||
109 | omap_sram_skip = SRAM_BOOTLOADER_SZ; | ||
110 | if (cpu_class_is_omap2()) { | ||
111 | if (is_sram_locked()) { | ||
112 | if (cpu_is_omap34xx()) { | ||
113 | omap_sram_start = OMAP3_SRAM_PUB_PA; | ||
114 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || | ||
115 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { | ||
116 | omap_sram_size = 0x7000; /* 28K */ | ||
117 | omap_sram_skip += SZ_16K; | ||
118 | } else { | ||
119 | omap_sram_size = 0x8000; /* 32K */ | ||
120 | } | ||
121 | } else if (cpu_is_omap44xx()) { | ||
122 | omap_sram_start = OMAP4_SRAM_PUB_PA; | ||
123 | omap_sram_size = 0xa000; /* 40K */ | ||
124 | } else if (soc_is_omap54xx()) { | ||
125 | omap_sram_start = OMAP5_SRAM_PA; | ||
126 | omap_sram_size = SZ_128K; /* 128KB */ | ||
127 | } else { | ||
128 | omap_sram_start = OMAP2_SRAM_PUB_PA; | ||
129 | omap_sram_size = 0x800; /* 2K */ | ||
130 | } | ||
131 | } else { | ||
132 | if (soc_is_am33xx()) { | ||
133 | omap_sram_start = AM33XX_SRAM_PA; | ||
134 | omap_sram_size = 0x10000; /* 64K */ | ||
135 | } else if (cpu_is_omap34xx()) { | ||
136 | omap_sram_start = OMAP3_SRAM_PA; | ||
137 | omap_sram_size = 0x10000; /* 64K */ | ||
138 | } else if (cpu_is_omap44xx()) { | ||
139 | omap_sram_start = OMAP4_SRAM_PA; | ||
140 | omap_sram_size = 0xe000; /* 56K */ | ||
141 | } else if (soc_is_omap54xx()) { | ||
142 | omap_sram_start = OMAP5_SRAM_PA; | ||
143 | omap_sram_size = SZ_128K; /* 128KB */ | ||
144 | } else { | ||
145 | omap_sram_start = OMAP2_SRAM_PA; | ||
146 | if (cpu_is_omap242x()) | ||
147 | omap_sram_size = 0xa0000; /* 640K */ | ||
148 | else if (cpu_is_omap243x()) | ||
149 | omap_sram_size = 0x10000; /* 64K */ | ||
150 | } | ||
151 | } | ||
152 | } else { | ||
153 | omap_sram_start = OMAP1_SRAM_PA; | ||
154 | |||
155 | if (cpu_is_omap7xx()) | ||
156 | omap_sram_size = 0x32000; /* 200K */ | ||
157 | else if (cpu_is_omap15xx()) | ||
158 | omap_sram_size = 0x30000; /* 192K */ | ||
159 | else if (cpu_is_omap1610() || cpu_is_omap1611() || | ||
160 | cpu_is_omap1621() || cpu_is_omap1710()) | ||
161 | omap_sram_size = 0x4000; /* 16K */ | ||
162 | else { | ||
163 | pr_err("Could not detect SRAM size\n"); | ||
164 | omap_sram_size = 0x4000; | ||
165 | } | ||
166 | } | ||
167 | } | ||
168 | |||
169 | /* | ||
170 | * Note that we cannot use ioremap for SRAM, as clock init needs SRAM early. | ||
171 | */ | ||
172 | static void __init omap_map_sram(void) | ||
173 | { | ||
174 | int cached = 1; | ||
175 | |||
176 | if (omap_sram_size == 0) | ||
177 | return; | ||
178 | |||
179 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
180 | if (cpu_is_omap44xx()) { | ||
181 | omap_sram_start += PAGE_SIZE; | ||
182 | omap_sram_size -= SZ_16K; | ||
183 | } | ||
184 | #endif | ||
185 | if (cpu_is_omap34xx()) { | ||
186 | /* | ||
187 | * SRAM must be marked as non-cached on OMAP3 since the | ||
188 | * CORE DPLL M2 divider change code (in SRAM) runs with the | ||
189 | * SDRAM controller disabled, and if it is marked cached, | ||
190 | * the ARM may attempt to write cache lines back to SDRAM | ||
191 | * which will cause the system to hang. | ||
192 | */ | ||
193 | cached = 0; | ||
194 | } | ||
195 | |||
196 | omap_sram_start = ROUND_DOWN(omap_sram_start, PAGE_SIZE); | ||
197 | omap_sram_base = __arm_ioremap_exec(omap_sram_start, omap_sram_size, | ||
198 | cached); | ||
199 | if (!omap_sram_base) { | ||
200 | pr_err("SRAM: Could not map\n"); | ||
201 | return; | ||
202 | } | ||
203 | |||
204 | omap_sram_ceil = omap_sram_base + omap_sram_size; | ||
205 | |||
206 | /* | ||
207 | * Looks like we need to preserve some bootloader code at the | ||
208 | * beginning of SRAM for jumping to flash for reboot to work... | ||
209 | */ | ||
210 | memset_io(omap_sram_base + omap_sram_skip, 0, | ||
211 | omap_sram_size - omap_sram_skip); | ||
212 | } | ||
213 | |||
214 | /* | ||
215 | * Memory allocator for SRAM: calculates the new ceiling address | 37 | * Memory allocator for SRAM: calculates the new ceiling address |
216 | * for pushing a function using the fncpy API. | 38 | * for pushing a function using the fncpy API. |
217 | * | 39 | * |
@@ -236,171 +58,39 @@ void *omap_sram_push_address(unsigned long size) | |||
236 | return (void *)omap_sram_ceil; | 58 | return (void *)omap_sram_ceil; |
237 | } | 59 | } |
238 | 60 | ||
239 | #ifdef CONFIG_ARCH_OMAP1 | 61 | /* |
240 | 62 | * The SRAM context is lost during off-idle and stack | |
241 | static void (*_omap_sram_reprogram_clock)(u32 dpllctl, u32 ckctl); | 63 | * needs to be reset. |
242 | 64 | */ | |
243 | void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl) | 65 | void omap_sram_reset(void) |
244 | { | ||
245 | BUG_ON(!_omap_sram_reprogram_clock); | ||
246 | /* On 730, bit 13 must always be 1 */ | ||
247 | if (cpu_is_omap7xx()) | ||
248 | ckctl |= 0x2000; | ||
249 | _omap_sram_reprogram_clock(dpllctl, ckctl); | ||
250 | } | ||
251 | |||
252 | static int __init omap1_sram_init(void) | ||
253 | { | ||
254 | _omap_sram_reprogram_clock = | ||
255 | omap_sram_push(omap1_sram_reprogram_clock, | ||
256 | omap1_sram_reprogram_clock_sz); | ||
257 | |||
258 | return 0; | ||
259 | } | ||
260 | |||
261 | #else | ||
262 | #define omap1_sram_init() do {} while (0) | ||
263 | #endif | ||
264 | |||
265 | #if defined(CONFIG_ARCH_OMAP2) | ||
266 | |||
267 | static void (*_omap2_sram_ddr_init)(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, | ||
268 | u32 base_cs, u32 force_unlock); | ||
269 | |||
270 | void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, | ||
271 | u32 base_cs, u32 force_unlock) | ||
272 | { | ||
273 | BUG_ON(!_omap2_sram_ddr_init); | ||
274 | _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl, | ||
275 | base_cs, force_unlock); | ||
276 | } | ||
277 | |||
278 | static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val, | ||
279 | u32 mem_type); | ||
280 | |||
281 | void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type) | ||
282 | { | ||
283 | BUG_ON(!_omap2_sram_reprogram_sdrc); | ||
284 | _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type); | ||
285 | } | ||
286 | |||
287 | static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); | ||
288 | |||
289 | u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass) | ||
290 | { | ||
291 | BUG_ON(!_omap2_set_prcm); | ||
292 | return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass); | ||
293 | } | ||
294 | #endif | ||
295 | |||
296 | #ifdef CONFIG_SOC_OMAP2420 | ||
297 | static int __init omap242x_sram_init(void) | ||
298 | { | ||
299 | _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init, | ||
300 | omap242x_sram_ddr_init_sz); | ||
301 | |||
302 | _omap2_sram_reprogram_sdrc = omap_sram_push(omap242x_sram_reprogram_sdrc, | ||
303 | omap242x_sram_reprogram_sdrc_sz); | ||
304 | |||
305 | _omap2_set_prcm = omap_sram_push(omap242x_sram_set_prcm, | ||
306 | omap242x_sram_set_prcm_sz); | ||
307 | |||
308 | return 0; | ||
309 | } | ||
310 | #else | ||
311 | static inline int omap242x_sram_init(void) | ||
312 | { | ||
313 | return 0; | ||
314 | } | ||
315 | #endif | ||
316 | |||
317 | #ifdef CONFIG_SOC_OMAP2430 | ||
318 | static int __init omap243x_sram_init(void) | ||
319 | { | ||
320 | _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init, | ||
321 | omap243x_sram_ddr_init_sz); | ||
322 | |||
323 | _omap2_sram_reprogram_sdrc = omap_sram_push(omap243x_sram_reprogram_sdrc, | ||
324 | omap243x_sram_reprogram_sdrc_sz); | ||
325 | |||
326 | _omap2_set_prcm = omap_sram_push(omap243x_sram_set_prcm, | ||
327 | omap243x_sram_set_prcm_sz); | ||
328 | |||
329 | return 0; | ||
330 | } | ||
331 | #else | ||
332 | static inline int omap243x_sram_init(void) | ||
333 | { | ||
334 | return 0; | ||
335 | } | ||
336 | #endif | ||
337 | |||
338 | #ifdef CONFIG_ARCH_OMAP3 | ||
339 | |||
340 | static u32 (*_omap3_sram_configure_core_dpll)( | ||
341 | u32 m2, u32 unlock_dll, u32 f, u32 inc, | ||
342 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, | ||
343 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, | ||
344 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
345 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1); | ||
346 | |||
347 | u32 omap3_configure_core_dpll(u32 m2, u32 unlock_dll, u32 f, u32 inc, | ||
348 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, | ||
349 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, | ||
350 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
351 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1) | ||
352 | { | ||
353 | BUG_ON(!_omap3_sram_configure_core_dpll); | ||
354 | return _omap3_sram_configure_core_dpll( | ||
355 | m2, unlock_dll, f, inc, | ||
356 | sdrc_rfr_ctrl_0, sdrc_actim_ctrl_a_0, | ||
357 | sdrc_actim_ctrl_b_0, sdrc_mr_0, | ||
358 | sdrc_rfr_ctrl_1, sdrc_actim_ctrl_a_1, | ||
359 | sdrc_actim_ctrl_b_1, sdrc_mr_1); | ||
360 | } | ||
361 | |||
362 | void omap3_sram_restore_context(void) | ||
363 | { | 66 | { |
364 | omap_sram_ceil = omap_sram_base + omap_sram_size; | 67 | omap_sram_ceil = omap_sram_base + omap_sram_size; |
365 | |||
366 | _omap3_sram_configure_core_dpll = | ||
367 | omap_sram_push(omap3_sram_configure_core_dpll, | ||
368 | omap3_sram_configure_core_dpll_sz); | ||
369 | omap_push_sram_idle(); | ||
370 | } | 68 | } |
371 | 69 | ||
372 | static inline int omap34xx_sram_init(void) | 70 | /* |
373 | { | 71 | * Note that we cannot use ioremap for SRAM, as clock init needs SRAM early. |
374 | omap3_sram_restore_context(); | 72 | */ |
375 | return 0; | 73 | void __init omap_map_sram(unsigned long start, unsigned long size, |
376 | } | 74 | unsigned long skip, int cached) |
377 | #else | ||
378 | static inline int omap34xx_sram_init(void) | ||
379 | { | ||
380 | return 0; | ||
381 | } | ||
382 | #endif /* CONFIG_ARCH_OMAP3 */ | ||
383 | |||
384 | static inline int am33xx_sram_init(void) | ||
385 | { | 75 | { |
386 | return 0; | 76 | if (size == 0) |
387 | } | 77 | return; |
388 | 78 | ||
389 | int __init omap_sram_init(void) | 79 | start = ROUND_DOWN(start, PAGE_SIZE); |
390 | { | 80 | omap_sram_size = size; |
391 | omap_detect_sram(); | 81 | omap_sram_skip = skip; |
392 | omap_map_sram(); | 82 | omap_sram_base = __arm_ioremap_exec(start, size, cached); |
83 | if (!omap_sram_base) { | ||
84 | pr_err("SRAM: Could not map\n"); | ||
85 | return; | ||
86 | } | ||
393 | 87 | ||
394 | if (!(cpu_class_is_omap2())) | 88 | omap_sram_reset(); |
395 | omap1_sram_init(); | ||
396 | else if (cpu_is_omap242x()) | ||
397 | omap242x_sram_init(); | ||
398 | else if (cpu_is_omap2430()) | ||
399 | omap243x_sram_init(); | ||
400 | else if (soc_is_am33xx()) | ||
401 | am33xx_sram_init(); | ||
402 | else if (cpu_is_omap34xx()) | ||
403 | omap34xx_sram_init(); | ||
404 | 89 | ||
405 | return 0; | 90 | /* |
91 | * Looks like we need to preserve some bootloader code at the | ||
92 | * beginning of SRAM for jumping to flash for reboot to work... | ||
93 | */ | ||
94 | memset_io(omap_sram_base + omap_sram_skip, 0, | ||
95 | omap_sram_size - omap_sram_skip); | ||
406 | } | 96 | } |
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c index 1867944415ca..8db0b981ca64 100644 --- a/arch/arm/plat-orion/irq.c +++ b/arch/arm/plat-orion/irq.c | |||
@@ -41,7 +41,7 @@ void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr) | |||
41 | static int __init orion_add_irq_domain(struct device_node *np, | 41 | static int __init orion_add_irq_domain(struct device_node *np, |
42 | struct device_node *interrupt_parent) | 42 | struct device_node *interrupt_parent) |
43 | { | 43 | { |
44 | int i = 0, irq_gpio; | 44 | int i = 0; |
45 | void __iomem *base; | 45 | void __iomem *base; |
46 | 46 | ||
47 | do { | 47 | do { |
@@ -54,10 +54,6 @@ static int __init orion_add_irq_domain(struct device_node *np, | |||
54 | 54 | ||
55 | irq_domain_add_legacy(np, i * 32, 0, 0, | 55 | irq_domain_add_legacy(np, i * 32, 0, 0, |
56 | &irq_domain_simple_ops, NULL); | 56 | &irq_domain_simple_ops, NULL); |
57 | |||
58 | irq_gpio = i * 32; | ||
59 | orion_gpio_of_init(irq_gpio); | ||
60 | |||
61 | return 0; | 57 | return 0; |
62 | } | 58 | } |
63 | 59 | ||
diff --git a/arch/arm/plat-pxa/Makefile b/arch/arm/plat-pxa/Makefile index af8e484001e5..1fc941944912 100644 --- a/arch/arm/plat-pxa/Makefile +++ b/arch/arm/plat-pxa/Makefile | |||
@@ -5,7 +5,6 @@ | |||
5 | obj-y := dma.o | 5 | obj-y := dma.o |
6 | 6 | ||
7 | obj-$(CONFIG_PXA3xx) += mfp.o | 7 | obj-$(CONFIG_PXA3xx) += mfp.o |
8 | obj-$(CONFIG_PXA95x) += mfp.o | ||
9 | obj-$(CONFIG_ARCH_MMP) += mfp.o | 8 | obj-$(CONFIG_ARCH_MMP) += mfp.o |
10 | 9 | ||
11 | obj-$(CONFIG_PXA_SSP) += ssp.o | 10 | obj-$(CONFIG_PXA_SSP) += ssp.o |
diff --git a/arch/arm/plat-pxa/include/plat/mfp.h b/arch/arm/plat-pxa/include/plat/mfp.h index 5c79c29f2833..10bc4f3757d1 100644 --- a/arch/arm/plat-pxa/include/plat/mfp.h +++ b/arch/arm/plat-pxa/include/plat/mfp.h | |||
@@ -423,7 +423,7 @@ typedef unsigned long mfp_cfg_t; | |||
423 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\ | 423 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\ |
424 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm)) | 424 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm)) |
425 | 425 | ||
426 | #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) || defined(CONFIG_ARCH_MMP) | 426 | #if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP) |
427 | /* | 427 | /* |
428 | * each MFP pin will have a MFPR register, since the offset of the | 428 | * each MFP pin will have a MFPR register, since the offset of the |
429 | * register varies between processors, the processor specific code | 429 | * register varies between processors, the processor specific code |
@@ -470,6 +470,6 @@ void mfp_write(int mfp, unsigned long mfpr_val); | |||
470 | void mfp_config(unsigned long *mfp_cfgs, int num); | 470 | void mfp_config(unsigned long *mfp_cfgs, int num); |
471 | void mfp_config_run(void); | 471 | void mfp_config_run(void); |
472 | void mfp_config_lpm(void); | 472 | void mfp_config_lpm(void); |
473 | #endif /* CONFIG_PXA3xx || CONFIG_PXA95x || CONFIG_ARCH_MMP */ | 473 | #endif /* CONFIG_PXA3xx || CONFIG_ARCH_MMP */ |
474 | 474 | ||
475 | #endif /* __ASM_PLAT_MFP_H */ | 475 | #endif /* __ASM_PLAT_MFP_H */ |
diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c index b1e05ccff3ac..37542c2689a2 100644 --- a/arch/arm/plat-samsung/adc.c +++ b/arch/arm/plat-samsung/adc.c | |||
@@ -344,7 +344,7 @@ static int s3c_adc_probe(struct platform_device *pdev) | |||
344 | int ret; | 344 | int ret; |
345 | unsigned tmp; | 345 | unsigned tmp; |
346 | 346 | ||
347 | adc = kzalloc(sizeof(struct adc_device), GFP_KERNEL); | 347 | adc = devm_kzalloc(dev, sizeof(struct adc_device), GFP_KERNEL); |
348 | if (adc == NULL) { | 348 | if (adc == NULL) { |
349 | dev_err(dev, "failed to allocate adc_device\n"); | 349 | dev_err(dev, "failed to allocate adc_device\n"); |
350 | return -ENOMEM; | 350 | return -ENOMEM; |
@@ -355,50 +355,46 @@ static int s3c_adc_probe(struct platform_device *pdev) | |||
355 | adc->pdev = pdev; | 355 | adc->pdev = pdev; |
356 | adc->prescale = S3C2410_ADCCON_PRSCVL(49); | 356 | adc->prescale = S3C2410_ADCCON_PRSCVL(49); |
357 | 357 | ||
358 | adc->vdd = regulator_get(dev, "vdd"); | 358 | adc->vdd = devm_regulator_get(dev, "vdd"); |
359 | if (IS_ERR(adc->vdd)) { | 359 | if (IS_ERR(adc->vdd)) { |
360 | dev_err(dev, "operating without regulator \"vdd\" .\n"); | 360 | dev_err(dev, "operating without regulator \"vdd\" .\n"); |
361 | ret = PTR_ERR(adc->vdd); | 361 | return PTR_ERR(adc->vdd); |
362 | goto err_alloc; | ||
363 | } | 362 | } |
364 | 363 | ||
365 | adc->irq = platform_get_irq(pdev, 1); | 364 | adc->irq = platform_get_irq(pdev, 1); |
366 | if (adc->irq <= 0) { | 365 | if (adc->irq <= 0) { |
367 | dev_err(dev, "failed to get adc irq\n"); | 366 | dev_err(dev, "failed to get adc irq\n"); |
368 | ret = -ENOENT; | 367 | return -ENOENT; |
369 | goto err_reg; | ||
370 | } | 368 | } |
371 | 369 | ||
372 | ret = request_irq(adc->irq, s3c_adc_irq, 0, dev_name(dev), adc); | 370 | ret = devm_request_irq(dev, adc->irq, s3c_adc_irq, 0, dev_name(dev), |
371 | adc); | ||
373 | if (ret < 0) { | 372 | if (ret < 0) { |
374 | dev_err(dev, "failed to attach adc irq\n"); | 373 | dev_err(dev, "failed to attach adc irq\n"); |
375 | goto err_reg; | 374 | return ret; |
376 | } | 375 | } |
377 | 376 | ||
378 | adc->clk = clk_get(dev, "adc"); | 377 | adc->clk = devm_clk_get(dev, "adc"); |
379 | if (IS_ERR(adc->clk)) { | 378 | if (IS_ERR(adc->clk)) { |
380 | dev_err(dev, "failed to get adc clock\n"); | 379 | dev_err(dev, "failed to get adc clock\n"); |
381 | ret = PTR_ERR(adc->clk); | 380 | return PTR_ERR(adc->clk); |
382 | goto err_irq; | ||
383 | } | 381 | } |
384 | 382 | ||
385 | regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 383 | regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
386 | if (!regs) { | 384 | if (!regs) { |
387 | dev_err(dev, "failed to find registers\n"); | 385 | dev_err(dev, "failed to find registers\n"); |
388 | ret = -ENXIO; | 386 | return -ENXIO; |
389 | goto err_clk; | ||
390 | } | 387 | } |
391 | 388 | ||
392 | adc->regs = ioremap(regs->start, resource_size(regs)); | 389 | adc->regs = devm_request_and_ioremap(dev, regs); |
393 | if (!adc->regs) { | 390 | if (!adc->regs) { |
394 | dev_err(dev, "failed to map registers\n"); | 391 | dev_err(dev, "failed to map registers\n"); |
395 | ret = -ENXIO; | 392 | return -ENXIO; |
396 | goto err_clk; | ||
397 | } | 393 | } |
398 | 394 | ||
399 | ret = regulator_enable(adc->vdd); | 395 | ret = regulator_enable(adc->vdd); |
400 | if (ret) | 396 | if (ret) |
401 | goto err_ioremap; | 397 | return ret; |
402 | 398 | ||
403 | clk_enable(adc->clk); | 399 | clk_enable(adc->clk); |
404 | 400 | ||
@@ -418,32 +414,14 @@ static int s3c_adc_probe(struct platform_device *pdev) | |||
418 | adc_dev = adc; | 414 | adc_dev = adc; |
419 | 415 | ||
420 | return 0; | 416 | return 0; |
421 | |||
422 | err_ioremap: | ||
423 | iounmap(adc->regs); | ||
424 | err_clk: | ||
425 | clk_put(adc->clk); | ||
426 | |||
427 | err_irq: | ||
428 | free_irq(adc->irq, adc); | ||
429 | err_reg: | ||
430 | regulator_put(adc->vdd); | ||
431 | err_alloc: | ||
432 | kfree(adc); | ||
433 | return ret; | ||
434 | } | 417 | } |
435 | 418 | ||
436 | static int __devexit s3c_adc_remove(struct platform_device *pdev) | 419 | static int __devexit s3c_adc_remove(struct platform_device *pdev) |
437 | { | 420 | { |
438 | struct adc_device *adc = platform_get_drvdata(pdev); | 421 | struct adc_device *adc = platform_get_drvdata(pdev); |
439 | 422 | ||
440 | iounmap(adc->regs); | ||
441 | free_irq(adc->irq, adc); | ||
442 | clk_disable(adc->clk); | 423 | clk_disable(adc->clk); |
443 | regulator_disable(adc->vdd); | 424 | regulator_disable(adc->vdd); |
444 | regulator_put(adc->vdd); | ||
445 | clk_put(adc->clk); | ||
446 | kfree(adc); | ||
447 | 425 | ||
448 | return 0; | 426 | return 0; |
449 | } | 427 | } |
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c index 03f654d55eff..bc50b20a8ffc 100644 --- a/arch/arm/plat-samsung/devs.c +++ b/arch/arm/plat-samsung/devs.c | |||
@@ -486,11 +486,7 @@ static struct resource s3c_i2c0_resource[] = { | |||
486 | 486 | ||
487 | struct platform_device s3c_device_i2c0 = { | 487 | struct platform_device s3c_device_i2c0 = { |
488 | .name = "s3c2410-i2c", | 488 | .name = "s3c2410-i2c", |
489 | #ifdef CONFIG_S3C_DEV_I2C1 | ||
490 | .id = 0, | 489 | .id = 0, |
491 | #else | ||
492 | .id = -1, | ||
493 | #endif | ||
494 | .num_resources = ARRAY_SIZE(s3c_i2c0_resource), | 490 | .num_resources = ARRAY_SIZE(s3c_i2c0_resource), |
495 | .resource = s3c_i2c0_resource, | 491 | .resource = s3c_i2c0_resource, |
496 | }; | 492 | }; |
@@ -933,6 +929,7 @@ struct platform_device s5p_device_mfc_r = { | |||
933 | .coherent_dma_mask = DMA_BIT_MASK(32), | 929 | .coherent_dma_mask = DMA_BIT_MASK(32), |
934 | }, | 930 | }, |
935 | }; | 931 | }; |
932 | |||
936 | #endif /* CONFIG_S5P_DEV_MFC */ | 933 | #endif /* CONFIG_S5P_DEV_MFC */ |
937 | 934 | ||
938 | /* MIPI CSIS */ | 935 | /* MIPI CSIS */ |
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h index 5da4b4f38f40..133e3e4170fb 100644 --- a/arch/arm/plat-samsung/include/plat/devs.h +++ b/arch/arm/plat-samsung/include/plat/devs.h | |||
@@ -133,8 +133,6 @@ extern struct platform_device exynos4_device_pcm1; | |||
133 | extern struct platform_device exynos4_device_pcm2; | 133 | extern struct platform_device exynos4_device_pcm2; |
134 | extern struct platform_device exynos4_device_spdif; | 134 | extern struct platform_device exynos4_device_spdif; |
135 | 135 | ||
136 | extern struct platform_device exynos_device_drm; | ||
137 | |||
138 | extern struct platform_device samsung_asoc_dma; | 136 | extern struct platform_device samsung_asoc_dma; |
139 | extern struct platform_device samsung_asoc_idma; | 137 | extern struct platform_device samsung_asoc_idma; |
140 | extern struct platform_device samsung_device_keypad; | 138 | extern struct platform_device samsung_device_keypad; |
diff --git a/arch/arm/plat-samsung/include/plat/mfc.h b/arch/arm/plat-samsung/include/plat/mfc.h index ac13227272f0..e6d7c42d68b6 100644 --- a/arch/arm/plat-samsung/include/plat/mfc.h +++ b/arch/arm/plat-samsung/include/plat/mfc.h | |||
@@ -10,6 +10,14 @@ | |||
10 | #ifndef __PLAT_SAMSUNG_MFC_H | 10 | #ifndef __PLAT_SAMSUNG_MFC_H |
11 | #define __PLAT_SAMSUNG_MFC_H __FILE__ | 11 | #define __PLAT_SAMSUNG_MFC_H __FILE__ |
12 | 12 | ||
13 | struct s5p_mfc_dt_meminfo { | ||
14 | unsigned long loff; | ||
15 | unsigned long lsize; | ||
16 | unsigned long roff; | ||
17 | unsigned long rsize; | ||
18 | char *compatible; | ||
19 | }; | ||
20 | |||
13 | /** | 21 | /** |
14 | * s5p_mfc_reserve_mem - function to early reserve memory for MFC driver | 22 | * s5p_mfc_reserve_mem - function to early reserve memory for MFC driver |
15 | * @rbase: base address for MFC 'right' memory interface | 23 | * @rbase: base address for MFC 'right' memory interface |
@@ -24,4 +32,7 @@ | |||
24 | void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize, | 32 | void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize, |
25 | phys_addr_t lbase, unsigned int lsize); | 33 | phys_addr_t lbase, unsigned int lsize); |
26 | 34 | ||
35 | int __init s5p_fdt_find_mfc_mem(unsigned long node, const char *uname, | ||
36 | int depth, void *data); | ||
37 | |||
27 | #endif /* __PLAT_SAMSUNG_MFC_H */ | 38 | #endif /* __PLAT_SAMSUNG_MFC_H */ |
diff --git a/arch/arm/plat-samsung/s5p-dev-mfc.c b/arch/arm/plat-samsung/s5p-dev-mfc.c index ad6089465e2a..5ec104b5408b 100644 --- a/arch/arm/plat-samsung/s5p-dev-mfc.c +++ b/arch/arm/plat-samsung/s5p-dev-mfc.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include <linux/dma-mapping.h> | 14 | #include <linux/dma-mapping.h> |
15 | #include <linux/memblock.h> | 15 | #include <linux/memblock.h> |
16 | #include <linux/ioport.h> | 16 | #include <linux/ioport.h> |
17 | #include <linux/of_fdt.h> | ||
18 | #include <linux/of.h> | ||
17 | 19 | ||
18 | #include <mach/map.h> | 20 | #include <mach/map.h> |
19 | #include <plat/devs.h> | 21 | #include <plat/devs.h> |
@@ -69,3 +71,35 @@ static int __init s5p_mfc_memory_init(void) | |||
69 | return 0; | 71 | return 0; |
70 | } | 72 | } |
71 | device_initcall(s5p_mfc_memory_init); | 73 | device_initcall(s5p_mfc_memory_init); |
74 | |||
75 | #ifdef CONFIG_OF | ||
76 | int __init s5p_fdt_find_mfc_mem(unsigned long node, const char *uname, | ||
77 | int depth, void *data) | ||
78 | { | ||
79 | __be32 *prop; | ||
80 | unsigned long len; | ||
81 | struct s5p_mfc_dt_meminfo *mfc_mem = data; | ||
82 | |||
83 | if (!data) | ||
84 | return 0; | ||
85 | |||
86 | if (!of_flat_dt_is_compatible(node, mfc_mem->compatible)) | ||
87 | return 0; | ||
88 | |||
89 | prop = of_get_flat_dt_prop(node, "samsung,mfc-l", &len); | ||
90 | if (!prop || (len != 2 * sizeof(unsigned long))) | ||
91 | return 0; | ||
92 | |||
93 | mfc_mem->loff = be32_to_cpu(prop[0]); | ||
94 | mfc_mem->lsize = be32_to_cpu(prop[1]); | ||
95 | |||
96 | prop = of_get_flat_dt_prop(node, "samsung,mfc-r", &len); | ||
97 | if (!prop || (len != 2 * sizeof(unsigned long))) | ||
98 | return 0; | ||
99 | |||
100 | mfc_mem->roff = be32_to_cpu(prop[0]); | ||
101 | mfc_mem->rsize = be32_to_cpu(prop[1]); | ||
102 | |||
103 | return 1; | ||
104 | } | ||
105 | #endif | ||
diff --git a/arch/m68k/include/asm/signal.h b/arch/m68k/include/asm/signal.h index 67e489d8d1bd..2df26b57c26a 100644 --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h | |||
@@ -41,7 +41,7 @@ struct k_sigaction { | |||
41 | static inline void sigaddset(sigset_t *set, int _sig) | 41 | static inline void sigaddset(sigset_t *set, int _sig) |
42 | { | 42 | { |
43 | asm ("bfset %0{%1,#1}" | 43 | asm ("bfset %0{%1,#1}" |
44 | : "+od" (*set) | 44 | : "+o" (*set) |
45 | : "id" ((_sig - 1) ^ 31) | 45 | : "id" ((_sig - 1) ^ 31) |
46 | : "cc"); | 46 | : "cc"); |
47 | } | 47 | } |
@@ -49,7 +49,7 @@ static inline void sigaddset(sigset_t *set, int _sig) | |||
49 | static inline void sigdelset(sigset_t *set, int _sig) | 49 | static inline void sigdelset(sigset_t *set, int _sig) |
50 | { | 50 | { |
51 | asm ("bfclr %0{%1,#1}" | 51 | asm ("bfclr %0{%1,#1}" |
52 | : "+od" (*set) | 52 | : "+o" (*set) |
53 | : "id" ((_sig - 1) ^ 31) | 53 | : "id" ((_sig - 1) ^ 31) |
54 | : "cc"); | 54 | : "cc"); |
55 | } | 55 | } |
@@ -65,7 +65,7 @@ static inline int __gen_sigismember(sigset_t *set, int _sig) | |||
65 | int ret; | 65 | int ret; |
66 | asm ("bfextu %1{%2,#1},%0" | 66 | asm ("bfextu %1{%2,#1},%0" |
67 | : "=d" (ret) | 67 | : "=d" (ret) |
68 | : "od" (*set), "id" ((_sig-1) ^ 31) | 68 | : "o" (*set), "id" ((_sig-1) ^ 31) |
69 | : "cc"); | 69 | : "cc"); |
70 | return ret; | 70 | return ret; |
71 | } | 71 | } |
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index a53f8ec37aac..290dc6a1d7a3 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -79,7 +79,7 @@ static struct resource data_resource = { .name = "Kernel data", }; | |||
79 | void __init add_memory_region(phys_t start, phys_t size, long type) | 79 | void __init add_memory_region(phys_t start, phys_t size, long type) |
80 | { | 80 | { |
81 | int x = boot_mem_map.nr_map; | 81 | int x = boot_mem_map.nr_map; |
82 | struct boot_mem_map_entry *prev = boot_mem_map.map + x - 1; | 82 | int i; |
83 | 83 | ||
84 | /* Sanity check */ | 84 | /* Sanity check */ |
85 | if (start + size < start) { | 85 | if (start + size < start) { |
@@ -88,15 +88,29 @@ void __init add_memory_region(phys_t start, phys_t size, long type) | |||
88 | } | 88 | } |
89 | 89 | ||
90 | /* | 90 | /* |
91 | * Try to merge with previous entry if any. This is far less than | 91 | * Try to merge with existing entry, if any. |
92 | * perfect but is sufficient for most real world cases. | ||
93 | */ | 92 | */ |
94 | if (x && prev->addr + prev->size == start && prev->type == type) { | 93 | for (i = 0; i < boot_mem_map.nr_map; i++) { |
95 | prev->size += size; | 94 | struct boot_mem_map_entry *entry = boot_mem_map.map + i; |
95 | unsigned long top; | ||
96 | |||
97 | if (entry->type != type) | ||
98 | continue; | ||
99 | |||
100 | if (start + size < entry->addr) | ||
101 | continue; /* no overlap */ | ||
102 | |||
103 | if (entry->addr + entry->size < start) | ||
104 | continue; /* no overlap */ | ||
105 | |||
106 | top = max(entry->addr + entry->size, start + size); | ||
107 | entry->addr = min(entry->addr, start); | ||
108 | entry->size = top - entry->addr; | ||
109 | |||
96 | return; | 110 | return; |
97 | } | 111 | } |
98 | 112 | ||
99 | if (x == BOOT_MEM_MAP_MAX) { | 113 | if (boot_mem_map.nr_map == BOOT_MEM_MAP_MAX) { |
100 | pr_err("Ooops! Too many entries in the memory map!\n"); | 114 | pr_err("Ooops! Too many entries in the memory map!\n"); |
101 | return; | 115 | return; |
102 | } | 116 | } |
diff --git a/arch/mips/lib/mips-atomic.c b/arch/mips/lib/mips-atomic.c index e091430dbeb1..cd160be3ce4d 100644 --- a/arch/mips/lib/mips-atomic.c +++ b/arch/mips/lib/mips-atomic.c | |||
@@ -56,7 +56,7 @@ __asm__( | |||
56 | " .set pop \n" | 56 | " .set pop \n" |
57 | " .endm \n"); | 57 | " .endm \n"); |
58 | 58 | ||
59 | void arch_local_irq_disable(void) | 59 | notrace void arch_local_irq_disable(void) |
60 | { | 60 | { |
61 | preempt_disable(); | 61 | preempt_disable(); |
62 | __asm__ __volatile__( | 62 | __asm__ __volatile__( |
@@ -93,7 +93,7 @@ __asm__( | |||
93 | " .set pop \n" | 93 | " .set pop \n" |
94 | " .endm \n"); | 94 | " .endm \n"); |
95 | 95 | ||
96 | unsigned long arch_local_irq_save(void) | 96 | notrace unsigned long arch_local_irq_save(void) |
97 | { | 97 | { |
98 | unsigned long flags; | 98 | unsigned long flags; |
99 | preempt_disable(); | 99 | preempt_disable(); |
@@ -135,7 +135,7 @@ __asm__( | |||
135 | " .set pop \n" | 135 | " .set pop \n" |
136 | " .endm \n"); | 136 | " .endm \n"); |
137 | 137 | ||
138 | void arch_local_irq_restore(unsigned long flags) | 138 | notrace void arch_local_irq_restore(unsigned long flags) |
139 | { | 139 | { |
140 | unsigned long __tmp1; | 140 | unsigned long __tmp1; |
141 | 141 | ||
@@ -159,7 +159,7 @@ void arch_local_irq_restore(unsigned long flags) | |||
159 | EXPORT_SYMBOL(arch_local_irq_restore); | 159 | EXPORT_SYMBOL(arch_local_irq_restore); |
160 | 160 | ||
161 | 161 | ||
162 | void __arch_local_irq_restore(unsigned long flags) | 162 | notrace void __arch_local_irq_restore(unsigned long flags) |
163 | { | 163 | { |
164 | unsigned long __tmp1; | 164 | unsigned long __tmp1; |
165 | 165 | ||
diff --git a/arch/parisc/kernel/signal32.c b/arch/parisc/kernel/signal32.c index fd49aeda9eb8..5dede04f2f3e 100644 --- a/arch/parisc/kernel/signal32.c +++ b/arch/parisc/kernel/signal32.c | |||
@@ -65,7 +65,8 @@ put_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz) | |||
65 | { | 65 | { |
66 | compat_sigset_t s; | 66 | compat_sigset_t s; |
67 | 67 | ||
68 | if (sz != sizeof *set) panic("put_sigset32()"); | 68 | if (sz != sizeof *set) |
69 | return -EINVAL; | ||
69 | sigset_64to32(&s, set); | 70 | sigset_64to32(&s, set); |
70 | 71 | ||
71 | return copy_to_user(up, &s, sizeof s); | 72 | return copy_to_user(up, &s, sizeof s); |
@@ -77,7 +78,8 @@ get_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz) | |||
77 | compat_sigset_t s; | 78 | compat_sigset_t s; |
78 | int r; | 79 | int r; |
79 | 80 | ||
80 | if (sz != sizeof *set) panic("put_sigset32()"); | 81 | if (sz != sizeof *set) |
82 | return -EINVAL; | ||
81 | 83 | ||
82 | if ((r = copy_from_user(&s, up, sz)) == 0) { | 84 | if ((r = copy_from_user(&s, up, sz)) == 0) { |
83 | sigset_32to64(set, &s); | 85 | sigset_32to64(set, &s); |
diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c index 7426e40699bd..f76c10863c62 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c | |||
@@ -73,6 +73,8 @@ static unsigned long get_shared_area(struct address_space *mapping, | |||
73 | struct vm_area_struct *vma; | 73 | struct vm_area_struct *vma; |
74 | int offset = mapping ? get_offset(mapping) : 0; | 74 | int offset = mapping ? get_offset(mapping) : 0; |
75 | 75 | ||
76 | offset = (offset + (pgoff << PAGE_SHIFT)) & 0x3FF000; | ||
77 | |||
76 | addr = DCACHE_ALIGN(addr - offset) + offset; | 78 | addr = DCACHE_ALIGN(addr - offset) + offset; |
77 | 79 | ||
78 | for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { | 80 | for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { |
diff --git a/arch/powerpc/boot/dts/mpc5200b.dtsi b/arch/powerpc/boot/dts/mpc5200b.dtsi index 7ab286ab5300..39ed65a44c5f 100644 --- a/arch/powerpc/boot/dts/mpc5200b.dtsi +++ b/arch/powerpc/boot/dts/mpc5200b.dtsi | |||
@@ -231,6 +231,12 @@ | |||
231 | interrupts = <2 7 0>; | 231 | interrupts = <2 7 0>; |
232 | }; | 232 | }; |
233 | 233 | ||
234 | sclpc@3c00 { | ||
235 | compatible = "fsl,mpc5200-lpbfifo"; | ||
236 | reg = <0x3c00 0x60>; | ||
237 | interrupts = <2 23 0>; | ||
238 | }; | ||
239 | |||
234 | i2c@3d00 { | 240 | i2c@3d00 { |
235 | #address-cells = <1>; | 241 | #address-cells = <1>; |
236 | #size-cells = <0>; | 242 | #size-cells = <0>; |
diff --git a/arch/powerpc/boot/dts/o2d.dtsi b/arch/powerpc/boot/dts/o2d.dtsi index 3444eb8f0ade..24f668039295 100644 --- a/arch/powerpc/boot/dts/o2d.dtsi +++ b/arch/powerpc/boot/dts/o2d.dtsi | |||
@@ -86,12 +86,6 @@ | |||
86 | reg = <0>; | 86 | reg = <0>; |
87 | }; | 87 | }; |
88 | }; | 88 | }; |
89 | |||
90 | sclpc@3c00 { | ||
91 | compatible = "fsl,mpc5200-lpbfifo"; | ||
92 | reg = <0x3c00 0x60>; | ||
93 | interrupts = <3 23 0>; | ||
94 | }; | ||
95 | }; | 89 | }; |
96 | 90 | ||
97 | localbus { | 91 | localbus { |
diff --git a/arch/powerpc/boot/dts/pcm030.dts b/arch/powerpc/boot/dts/pcm030.dts index 9e354997eb7e..96512c058033 100644 --- a/arch/powerpc/boot/dts/pcm030.dts +++ b/arch/powerpc/boot/dts/pcm030.dts | |||
@@ -59,7 +59,7 @@ | |||
59 | #gpio-cells = <2>; | 59 | #gpio-cells = <2>; |
60 | }; | 60 | }; |
61 | 61 | ||
62 | psc@2000 { /* PSC1 in ac97 mode */ | 62 | audioplatform: psc@2000 { /* PSC1 in ac97 mode */ |
63 | compatible = "mpc5200b-psc-ac97","fsl,mpc5200b-psc-ac97"; | 63 | compatible = "mpc5200b-psc-ac97","fsl,mpc5200b-psc-ac97"; |
64 | cell-index = <0>; | 64 | cell-index = <0>; |
65 | }; | 65 | }; |
@@ -134,4 +134,9 @@ | |||
134 | localbus { | 134 | localbus { |
135 | status = "disabled"; | 135 | status = "disabled"; |
136 | }; | 136 | }; |
137 | |||
138 | sound { | ||
139 | compatible = "phytec,pcm030-audio-fabric"; | ||
140 | asoc-platform = <&audioplatform>; | ||
141 | }; | ||
137 | }; | 142 | }; |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c index 8520b58a5e9a..b89ef65392dc 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c | |||
@@ -372,10 +372,11 @@ static int mpc52xx_irqhost_map(struct irq_domain *h, unsigned int virq, | |||
372 | case MPC52xx_IRQ_L1_MAIN: irqchip = &mpc52xx_main_irqchip; break; | 372 | case MPC52xx_IRQ_L1_MAIN: irqchip = &mpc52xx_main_irqchip; break; |
373 | case MPC52xx_IRQ_L1_PERP: irqchip = &mpc52xx_periph_irqchip; break; | 373 | case MPC52xx_IRQ_L1_PERP: irqchip = &mpc52xx_periph_irqchip; break; |
374 | case MPC52xx_IRQ_L1_SDMA: irqchip = &mpc52xx_sdma_irqchip; break; | 374 | case MPC52xx_IRQ_L1_SDMA: irqchip = &mpc52xx_sdma_irqchip; break; |
375 | default: | 375 | case MPC52xx_IRQ_L1_CRIT: |
376 | pr_err("%s: invalid irq: virq=%i, l1=%i, l2=%i\n", | 376 | pr_warn("%s: Critical IRQ #%d is unsupported! Nopping it.\n", |
377 | __func__, virq, l1irq, l2irq); | 377 | __func__, l2irq); |
378 | return -EINVAL; | 378 | irq_set_chip(virq, &no_irq_chip); |
379 | return 0; | ||
379 | } | 380 | } |
380 | 381 | ||
381 | irq_set_chip_and_handler(virq, irqchip, handle_level_irq); | 382 | irq_set_chip_and_handler(virq, irqchip, handle_level_irq); |
diff --git a/arch/powerpc/platforms/pseries/eeh_pe.c b/arch/powerpc/platforms/pseries/eeh_pe.c index 797cd181dc3f..d16c8ded1084 100644 --- a/arch/powerpc/platforms/pseries/eeh_pe.c +++ b/arch/powerpc/platforms/pseries/eeh_pe.c | |||
@@ -449,7 +449,7 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev, int purge_pe) | |||
449 | if (list_empty(&pe->edevs)) { | 449 | if (list_empty(&pe->edevs)) { |
450 | cnt = 0; | 450 | cnt = 0; |
451 | list_for_each_entry(child, &pe->child_list, child) { | 451 | list_for_each_entry(child, &pe->child_list, child) { |
452 | if (!(pe->type & EEH_PE_INVALID)) { | 452 | if (!(child->type & EEH_PE_INVALID)) { |
453 | cnt++; | 453 | cnt++; |
454 | break; | 454 | break; |
455 | } | 455 | } |
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c index d19f4977c834..e5b084723131 100644 --- a/arch/powerpc/platforms/pseries/msi.c +++ b/arch/powerpc/platforms/pseries/msi.c | |||
@@ -220,7 +220,8 @@ static struct device_node *find_pe_dn(struct pci_dev *dev, int *total) | |||
220 | 220 | ||
221 | /* Get the top level device in the PE */ | 221 | /* Get the top level device in the PE */ |
222 | edev = of_node_to_eeh_dev(dn); | 222 | edev = of_node_to_eeh_dev(dn); |
223 | edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list); | 223 | if (edev->pe) |
224 | edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list); | ||
224 | dn = eeh_dev_to_of_node(edev); | 225 | dn = eeh_dev_to_of_node(edev); |
225 | if (!dn) | 226 | if (!dn) |
226 | return NULL; | 227 | return NULL; |
diff --git a/arch/sparc/include/asm/prom.h b/arch/sparc/include/asm/prom.h index f93003123bce..67c62578d170 100644 --- a/arch/sparc/include/asm/prom.h +++ b/arch/sparc/include/asm/prom.h | |||
@@ -63,10 +63,13 @@ extern char *of_console_options; | |||
63 | extern void irq_trans_init(struct device_node *dp); | 63 | extern void irq_trans_init(struct device_node *dp); |
64 | extern char *build_path_component(struct device_node *dp); | 64 | extern char *build_path_component(struct device_node *dp); |
65 | 65 | ||
66 | /* SPARC has a local implementation */ | 66 | /* SPARC has local implementations */ |
67 | extern int of_address_to_resource(struct device_node *dev, int index, | 67 | extern int of_address_to_resource(struct device_node *dev, int index, |
68 | struct resource *r); | 68 | struct resource *r); |
69 | #define of_address_to_resource of_address_to_resource | 69 | #define of_address_to_resource of_address_to_resource |
70 | 70 | ||
71 | void __iomem *of_iomap(struct device_node *node, int index); | ||
72 | #define of_iomap of_iomap | ||
73 | |||
71 | #endif /* __KERNEL__ */ | 74 | #endif /* __KERNEL__ */ |
72 | #endif /* _SPARC_PROM_H */ | 75 | #endif /* _SPARC_PROM_H */ |
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index 867de2f8189c..689e1ba62809 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c | |||
@@ -295,9 +295,7 @@ void do_rt_sigreturn(struct pt_regs *regs) | |||
295 | err |= restore_fpu_state(regs, fpu_save); | 295 | err |= restore_fpu_state(regs, fpu_save); |
296 | 296 | ||
297 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); | 297 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); |
298 | err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf); | 298 | if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT) |
299 | |||
300 | if (err) | ||
301 | goto segv; | 299 | goto segv; |
302 | 300 | ||
303 | err |= __get_user(rwin_save, &sf->rwin_save); | 301 | err |= __get_user(rwin_save, &sf->rwin_save); |
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index c760e073963e..e87b0cac14b5 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c | |||
@@ -12,6 +12,8 @@ | |||
12 | #include <asm/setup.h> | 12 | #include <asm/setup.h> |
13 | #include <asm/desc.h> | 13 | #include <asm/desc.h> |
14 | 14 | ||
15 | #undef memcpy /* Use memcpy from misc.c */ | ||
16 | |||
15 | #include "eboot.h" | 17 | #include "eboot.h" |
16 | 18 | ||
17 | static efi_system_table_t *sys_table; | 19 | static efi_system_table_t *sys_table; |
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 2a017441b8b2..8c132a625b94 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S | |||
@@ -476,6 +476,3 @@ die: | |||
476 | setup_corrupt: | 476 | setup_corrupt: |
477 | .byte 7 | 477 | .byte 7 |
478 | .string "No setup signature found...\n" | 478 | .string "No setup signature found...\n" |
479 | |||
480 | .data | ||
481 | dummy: .long 0 | ||
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h index dcfde52979c3..19f16ebaf4fa 100644 --- a/arch/x86/include/asm/ptrace.h +++ b/arch/x86/include/asm/ptrace.h | |||
@@ -205,21 +205,14 @@ static inline bool user_64bit_mode(struct pt_regs *regs) | |||
205 | } | 205 | } |
206 | #endif | 206 | #endif |
207 | 207 | ||
208 | /* | ||
209 | * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode | ||
210 | * when it traps. The previous stack will be directly underneath the saved | ||
211 | * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. | ||
212 | * | ||
213 | * This is valid only for kernel mode traps. | ||
214 | */ | ||
215 | static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) | ||
216 | { | ||
217 | #ifdef CONFIG_X86_32 | 208 | #ifdef CONFIG_X86_32 |
218 | return (unsigned long)(®s->sp); | 209 | extern unsigned long kernel_stack_pointer(struct pt_regs *regs); |
219 | #else | 210 | #else |
211 | static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) | ||
212 | { | ||
220 | return regs->sp; | 213 | return regs->sp; |
221 | #endif | ||
222 | } | 214 | } |
215 | #endif | ||
223 | 216 | ||
224 | #define GET_IP(regs) ((regs)->ip) | 217 | #define GET_IP(regs) ((regs)->ip) |
225 | #define GET_FP(regs) ((regs)->bp) | 218 | #define GET_FP(regs) ((regs)->bp) |
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index f7e98a2c0d12..1b7d1656a042 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -631,6 +631,20 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) | |||
631 | } | 631 | } |
632 | } | 632 | } |
633 | 633 | ||
634 | /* | ||
635 | * The way access filter has a performance penalty on some workloads. | ||
636 | * Disable it on the affected CPUs. | ||
637 | */ | ||
638 | if ((c->x86 == 0x15) && | ||
639 | (c->x86_model >= 0x02) && (c->x86_model < 0x20)) { | ||
640 | u64 val; | ||
641 | |||
642 | if (!rdmsrl_safe(0xc0011021, &val) && !(val & 0x1E)) { | ||
643 | val |= 0x1E; | ||
644 | wrmsrl_safe(0xc0011021, val); | ||
645 | } | ||
646 | } | ||
647 | |||
634 | cpu_detect_cache_sizes(c); | 648 | cpu_detect_cache_sizes(c); |
635 | 649 | ||
636 | /* Multi core CPU? */ | 650 | /* Multi core CPU? */ |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index 698b6ec12e0f..1ac581f38dfa 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * | 6 | * |
7 | * Written by Jacob Shin - AMD, Inc. | 7 | * Written by Jacob Shin - AMD, Inc. |
8 | * | 8 | * |
9 | * Support: borislav.petkov@amd.com | 9 | * Maintained by: Borislav Petkov <bp@alien8.de> |
10 | * | 10 | * |
11 | * April 2006 | 11 | * April 2006 |
12 | * - added support for AMD Family 0x10 processors | 12 | * - added support for AMD Family 0x10 processors |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c index 5f88abf07e9c..4f9a3cbfc4a3 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_intel.c +++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c | |||
@@ -285,34 +285,39 @@ void cmci_clear(void) | |||
285 | raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); | 285 | raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); |
286 | } | 286 | } |
287 | 287 | ||
288 | static long cmci_rediscover_work_func(void *arg) | ||
289 | { | ||
290 | int banks; | ||
291 | |||
292 | /* Recheck banks in case CPUs don't all have the same */ | ||
293 | if (cmci_supported(&banks)) | ||
294 | cmci_discover(banks); | ||
295 | |||
296 | return 0; | ||
297 | } | ||
298 | |||
288 | /* | 299 | /* |
289 | * After a CPU went down cycle through all the others and rediscover | 300 | * After a CPU went down cycle through all the others and rediscover |
290 | * Must run in process context. | 301 | * Must run in process context. |
291 | */ | 302 | */ |
292 | void cmci_rediscover(int dying) | 303 | void cmci_rediscover(int dying) |
293 | { | 304 | { |
294 | int banks; | 305 | int cpu, banks; |
295 | int cpu; | ||
296 | cpumask_var_t old; | ||
297 | 306 | ||
298 | if (!cmci_supported(&banks)) | 307 | if (!cmci_supported(&banks)) |
299 | return; | 308 | return; |
300 | if (!alloc_cpumask_var(&old, GFP_KERNEL)) | ||
301 | return; | ||
302 | cpumask_copy(old, ¤t->cpus_allowed); | ||
303 | 309 | ||
304 | for_each_online_cpu(cpu) { | 310 | for_each_online_cpu(cpu) { |
305 | if (cpu == dying) | 311 | if (cpu == dying) |
306 | continue; | 312 | continue; |
307 | if (set_cpus_allowed_ptr(current, cpumask_of(cpu))) | 313 | |
314 | if (cpu == smp_processor_id()) { | ||
315 | cmci_rediscover_work_func(NULL); | ||
308 | continue; | 316 | continue; |
309 | /* Recheck banks in case CPUs don't all have the same */ | 317 | } |
310 | if (cmci_supported(&banks)) | ||
311 | cmci_discover(banks); | ||
312 | } | ||
313 | 318 | ||
314 | set_cpus_allowed_ptr(current, old); | 319 | work_on_cpu(cpu, cmci_rediscover_work_func, NULL); |
315 | free_cpumask_var(old); | 320 | } |
316 | } | 321 | } |
317 | 322 | ||
318 | /* | 323 | /* |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index b51b2c7ee51f..1328fe49a3f1 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -995,8 +995,8 @@ END(interrupt) | |||
995 | */ | 995 | */ |
996 | .p2align CONFIG_X86_L1_CACHE_SHIFT | 996 | .p2align CONFIG_X86_L1_CACHE_SHIFT |
997 | common_interrupt: | 997 | common_interrupt: |
998 | ASM_CLAC | ||
999 | XCPT_FRAME | 998 | XCPT_FRAME |
999 | ASM_CLAC | ||
1000 | addq $-0x80,(%rsp) /* Adjust vector to [-256,-1] range */ | 1000 | addq $-0x80,(%rsp) /* Adjust vector to [-256,-1] range */ |
1001 | interrupt do_IRQ | 1001 | interrupt do_IRQ |
1002 | /* 0(%rsp): old_rsp-ARGOFFSET */ | 1002 | /* 0(%rsp): old_rsp-ARGOFFSET */ |
@@ -1135,8 +1135,8 @@ END(common_interrupt) | |||
1135 | */ | 1135 | */ |
1136 | .macro apicinterrupt num sym do_sym | 1136 | .macro apicinterrupt num sym do_sym |
1137 | ENTRY(\sym) | 1137 | ENTRY(\sym) |
1138 | ASM_CLAC | ||
1139 | INTR_FRAME | 1138 | INTR_FRAME |
1139 | ASM_CLAC | ||
1140 | pushq_cfi $~(\num) | 1140 | pushq_cfi $~(\num) |
1141 | .Lcommon_\sym: | 1141 | .Lcommon_\sym: |
1142 | interrupt \do_sym | 1142 | interrupt \do_sym |
@@ -1190,8 +1190,8 @@ apicinterrupt IRQ_WORK_VECTOR \ | |||
1190 | */ | 1190 | */ |
1191 | .macro zeroentry sym do_sym | 1191 | .macro zeroentry sym do_sym |
1192 | ENTRY(\sym) | 1192 | ENTRY(\sym) |
1193 | ASM_CLAC | ||
1194 | INTR_FRAME | 1193 | INTR_FRAME |
1194 | ASM_CLAC | ||
1195 | PARAVIRT_ADJUST_EXCEPTION_FRAME | 1195 | PARAVIRT_ADJUST_EXCEPTION_FRAME |
1196 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ | 1196 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ |
1197 | subq $ORIG_RAX-R15, %rsp | 1197 | subq $ORIG_RAX-R15, %rsp |
@@ -1208,8 +1208,8 @@ END(\sym) | |||
1208 | 1208 | ||
1209 | .macro paranoidzeroentry sym do_sym | 1209 | .macro paranoidzeroentry sym do_sym |
1210 | ENTRY(\sym) | 1210 | ENTRY(\sym) |
1211 | ASM_CLAC | ||
1212 | INTR_FRAME | 1211 | INTR_FRAME |
1212 | ASM_CLAC | ||
1213 | PARAVIRT_ADJUST_EXCEPTION_FRAME | 1213 | PARAVIRT_ADJUST_EXCEPTION_FRAME |
1214 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ | 1214 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ |
1215 | subq $ORIG_RAX-R15, %rsp | 1215 | subq $ORIG_RAX-R15, %rsp |
@@ -1227,8 +1227,8 @@ END(\sym) | |||
1227 | #define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8) | 1227 | #define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8) |
1228 | .macro paranoidzeroentry_ist sym do_sym ist | 1228 | .macro paranoidzeroentry_ist sym do_sym ist |
1229 | ENTRY(\sym) | 1229 | ENTRY(\sym) |
1230 | ASM_CLAC | ||
1231 | INTR_FRAME | 1230 | INTR_FRAME |
1231 | ASM_CLAC | ||
1232 | PARAVIRT_ADJUST_EXCEPTION_FRAME | 1232 | PARAVIRT_ADJUST_EXCEPTION_FRAME |
1233 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ | 1233 | pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ |
1234 | subq $ORIG_RAX-R15, %rsp | 1234 | subq $ORIG_RAX-R15, %rsp |
@@ -1247,8 +1247,8 @@ END(\sym) | |||
1247 | 1247 | ||
1248 | .macro errorentry sym do_sym | 1248 | .macro errorentry sym do_sym |
1249 | ENTRY(\sym) | 1249 | ENTRY(\sym) |
1250 | ASM_CLAC | ||
1251 | XCPT_FRAME | 1250 | XCPT_FRAME |
1251 | ASM_CLAC | ||
1252 | PARAVIRT_ADJUST_EXCEPTION_FRAME | 1252 | PARAVIRT_ADJUST_EXCEPTION_FRAME |
1253 | subq $ORIG_RAX-R15, %rsp | 1253 | subq $ORIG_RAX-R15, %rsp |
1254 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 1254 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
@@ -1266,8 +1266,8 @@ END(\sym) | |||
1266 | /* error code is on the stack already */ | 1266 | /* error code is on the stack already */ |
1267 | .macro paranoiderrorentry sym do_sym | 1267 | .macro paranoiderrorentry sym do_sym |
1268 | ENTRY(\sym) | 1268 | ENTRY(\sym) |
1269 | ASM_CLAC | ||
1270 | XCPT_FRAME | 1269 | XCPT_FRAME |
1270 | ASM_CLAC | ||
1271 | PARAVIRT_ADJUST_EXCEPTION_FRAME | 1271 | PARAVIRT_ADJUST_EXCEPTION_FRAME |
1272 | subq $ORIG_RAX-R15, %rsp | 1272 | subq $ORIG_RAX-R15, %rsp |
1273 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 | 1273 | CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 |
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c index 7720ff5a9ee2..efdec7cd8e01 100644 --- a/arch/x86/kernel/microcode_amd.c +++ b/arch/x86/kernel/microcode_amd.c | |||
@@ -8,8 +8,8 @@ | |||
8 | * Tigran Aivazian <tigran@aivazian.fsnet.co.uk> | 8 | * Tigran Aivazian <tigran@aivazian.fsnet.co.uk> |
9 | * | 9 | * |
10 | * Maintainers: | 10 | * Maintainers: |
11 | * Andreas Herrmann <andreas.herrmann3@amd.com> | 11 | * Andreas Herrmann <herrmann.der.user@googlemail.com> |
12 | * Borislav Petkov <borislav.petkov@amd.com> | 12 | * Borislav Petkov <bp@alien8.de> |
13 | * | 13 | * |
14 | * This driver allows to upgrade microcode on F10h AMD | 14 | * This driver allows to upgrade microcode on F10h AMD |
15 | * CPUs and later. | 15 | * CPUs and later. |
@@ -190,6 +190,7 @@ static unsigned int verify_patch_size(int cpu, u32 patch_size, | |||
190 | #define F1XH_MPB_MAX_SIZE 2048 | 190 | #define F1XH_MPB_MAX_SIZE 2048 |
191 | #define F14H_MPB_MAX_SIZE 1824 | 191 | #define F14H_MPB_MAX_SIZE 1824 |
192 | #define F15H_MPB_MAX_SIZE 4096 | 192 | #define F15H_MPB_MAX_SIZE 4096 |
193 | #define F16H_MPB_MAX_SIZE 3458 | ||
193 | 194 | ||
194 | switch (c->x86) { | 195 | switch (c->x86) { |
195 | case 0x14: | 196 | case 0x14: |
@@ -198,6 +199,9 @@ static unsigned int verify_patch_size(int cpu, u32 patch_size, | |||
198 | case 0x15: | 199 | case 0x15: |
199 | max_size = F15H_MPB_MAX_SIZE; | 200 | max_size = F15H_MPB_MAX_SIZE; |
200 | break; | 201 | break; |
202 | case 0x16: | ||
203 | max_size = F16H_MPB_MAX_SIZE; | ||
204 | break; | ||
201 | default: | 205 | default: |
202 | max_size = F1XH_MPB_MAX_SIZE; | 206 | max_size = F1XH_MPB_MAX_SIZE; |
203 | break; | 207 | break; |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index b00b33a18390..5e0596b0632e 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/perf_event.h> | 22 | #include <linux/perf_event.h> |
23 | #include <linux/hw_breakpoint.h> | 23 | #include <linux/hw_breakpoint.h> |
24 | #include <linux/rcupdate.h> | 24 | #include <linux/rcupdate.h> |
25 | #include <linux/module.h> | ||
25 | 26 | ||
26 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
27 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
@@ -166,6 +167,35 @@ static inline bool invalid_selector(u16 value) | |||
166 | 167 | ||
167 | #define FLAG_MASK FLAG_MASK_32 | 168 | #define FLAG_MASK FLAG_MASK_32 |
168 | 169 | ||
170 | /* | ||
171 | * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode | ||
172 | * when it traps. The previous stack will be directly underneath the saved | ||
173 | * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. | ||
174 | * | ||
175 | * Now, if the stack is empty, '®s->sp' is out of range. In this | ||
176 | * case we try to take the previous stack. To always return a non-null | ||
177 | * stack pointer we fall back to regs as stack if no previous stack | ||
178 | * exists. | ||
179 | * | ||
180 | * This is valid only for kernel mode traps. | ||
181 | */ | ||
182 | unsigned long kernel_stack_pointer(struct pt_regs *regs) | ||
183 | { | ||
184 | unsigned long context = (unsigned long)regs & ~(THREAD_SIZE - 1); | ||
185 | unsigned long sp = (unsigned long)®s->sp; | ||
186 | struct thread_info *tinfo; | ||
187 | |||
188 | if (context == (sp & ~(THREAD_SIZE - 1))) | ||
189 | return sp; | ||
190 | |||
191 | tinfo = (struct thread_info *)context; | ||
192 | if (tinfo->previous_esp) | ||
193 | return tinfo->previous_esp; | ||
194 | |||
195 | return (unsigned long)regs; | ||
196 | } | ||
197 | EXPORT_SYMBOL_GPL(kernel_stack_pointer); | ||
198 | |||
169 | static unsigned long *pt_regs_access(struct pt_regs *regs, unsigned long regno) | 199 | static unsigned long *pt_regs_access(struct pt_regs *regs, unsigned long regno) |
170 | { | 200 | { |
171 | BUILD_BUG_ON(offsetof(struct pt_regs, bx) != 0); | 201 | BUILD_BUG_ON(offsetof(struct pt_regs, bx) != 0); |
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 0777f042e400..60f926cd8b0e 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c | |||
@@ -197,7 +197,7 @@ void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start, | |||
197 | } | 197 | } |
198 | 198 | ||
199 | if (end == TLB_FLUSH_ALL || tlb_flushall_shift == -1 | 199 | if (end == TLB_FLUSH_ALL || tlb_flushall_shift == -1 |
200 | || vmflag == VM_HUGETLB) { | 200 | || vmflag & VM_HUGETLB) { |
201 | local_flush_tlb(); | 201 | local_flush_tlb(); |
202 | goto flush_all; | 202 | goto flush_all; |
203 | } | 203 | } |
diff --git a/arch/x86/pci/ce4100.c b/arch/x86/pci/ce4100.c index 41bd2a2d2c50..b914e20b5a00 100644 --- a/arch/x86/pci/ce4100.c +++ b/arch/x86/pci/ce4100.c | |||
@@ -115,6 +115,16 @@ static void sata_revid_read(struct sim_dev_reg *reg, u32 *value) | |||
115 | reg_read(reg, value); | 115 | reg_read(reg, value); |
116 | } | 116 | } |
117 | 117 | ||
118 | static void reg_noirq_read(struct sim_dev_reg *reg, u32 *value) | ||
119 | { | ||
120 | unsigned long flags; | ||
121 | |||
122 | raw_spin_lock_irqsave(&pci_config_lock, flags); | ||
123 | /* force interrupt pin value to 0 */ | ||
124 | *value = reg->sim_reg.value & 0xfff00ff; | ||
125 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); | ||
126 | } | ||
127 | |||
118 | static struct sim_dev_reg bus1_fixups[] = { | 128 | static struct sim_dev_reg bus1_fixups[] = { |
119 | DEFINE_REG(2, 0, 0x10, (16*MB), reg_init, reg_read, reg_write) | 129 | DEFINE_REG(2, 0, 0x10, (16*MB), reg_init, reg_read, reg_write) |
120 | DEFINE_REG(2, 0, 0x14, (256), reg_init, reg_read, reg_write) | 130 | DEFINE_REG(2, 0, 0x14, (256), reg_init, reg_read, reg_write) |
@@ -144,6 +154,7 @@ static struct sim_dev_reg bus1_fixups[] = { | |||
144 | DEFINE_REG(11, 5, 0x10, (64*KB), reg_init, reg_read, reg_write) | 154 | DEFINE_REG(11, 5, 0x10, (64*KB), reg_init, reg_read, reg_write) |
145 | DEFINE_REG(11, 6, 0x10, (256), reg_init, reg_read, reg_write) | 155 | DEFINE_REG(11, 6, 0x10, (256), reg_init, reg_read, reg_write) |
146 | DEFINE_REG(11, 7, 0x10, (64*KB), reg_init, reg_read, reg_write) | 156 | DEFINE_REG(11, 7, 0x10, (64*KB), reg_init, reg_read, reg_write) |
157 | DEFINE_REG(11, 7, 0x3c, 256, reg_init, reg_noirq_read, reg_write) | ||
147 | DEFINE_REG(12, 0, 0x10, (128*KB), reg_init, reg_read, reg_write) | 158 | DEFINE_REG(12, 0, 0x10, (128*KB), reg_init, reg_read, reg_write) |
148 | DEFINE_REG(12, 0, 0x14, (256), reg_init, reg_read, reg_write) | 159 | DEFINE_REG(12, 0, 0x14, (256), reg_init, reg_read, reg_write) |
149 | DEFINE_REG(12, 1, 0x10, (1024), reg_init, reg_read, reg_write) | 160 | DEFINE_REG(12, 1, 0x10, (1024), reg_init, reg_read, reg_write) |
@@ -161,8 +172,10 @@ static struct sim_dev_reg bus1_fixups[] = { | |||
161 | DEFINE_REG(16, 0, 0x10, (64*KB), reg_init, reg_read, reg_write) | 172 | DEFINE_REG(16, 0, 0x10, (64*KB), reg_init, reg_read, reg_write) |
162 | DEFINE_REG(16, 0, 0x14, (64*MB), reg_init, reg_read, reg_write) | 173 | DEFINE_REG(16, 0, 0x14, (64*MB), reg_init, reg_read, reg_write) |
163 | DEFINE_REG(16, 0, 0x18, (64*MB), reg_init, reg_read, reg_write) | 174 | DEFINE_REG(16, 0, 0x18, (64*MB), reg_init, reg_read, reg_write) |
175 | DEFINE_REG(16, 0, 0x3c, 256, reg_init, reg_noirq_read, reg_write) | ||
164 | DEFINE_REG(17, 0, 0x10, (128*KB), reg_init, reg_read, reg_write) | 176 | DEFINE_REG(17, 0, 0x10, (128*KB), reg_init, reg_read, reg_write) |
165 | DEFINE_REG(18, 0, 0x10, (1*KB), reg_init, reg_read, reg_write) | 177 | DEFINE_REG(18, 0, 0x10, (1*KB), reg_init, reg_read, reg_write) |
178 | DEFINE_REG(18, 0, 0x3c, 256, reg_init, reg_noirq_read, reg_write) | ||
166 | }; | 179 | }; |
167 | 180 | ||
168 | static void __init init_sim_regs(void) | 181 | static void __init init_sim_regs(void) |
diff --git a/arch/x86/platform/ce4100/ce4100.c b/arch/x86/platform/ce4100/ce4100.c index 4c61b52191eb..92525cb8e54c 100644 --- a/arch/x86/platform/ce4100/ce4100.c +++ b/arch/x86/platform/ce4100/ce4100.c | |||
@@ -21,12 +21,25 @@ | |||
21 | #include <asm/i8259.h> | 21 | #include <asm/i8259.h> |
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/io_apic.h> | 23 | #include <asm/io_apic.h> |
24 | #include <asm/emergency-restart.h> | ||
24 | 25 | ||
25 | static int ce4100_i8042_detect(void) | 26 | static int ce4100_i8042_detect(void) |
26 | { | 27 | { |
27 | return 0; | 28 | return 0; |
28 | } | 29 | } |
29 | 30 | ||
31 | /* | ||
32 | * The CE4100 platform has an internal 8051 Microcontroller which is | ||
33 | * responsible for signaling to the external Power Management Unit the | ||
34 | * intention to reset, reboot or power off the system. This 8051 device has | ||
35 | * its command register mapped at I/O port 0xcf9 and the value 0x4 is used | ||
36 | * to power off the system. | ||
37 | */ | ||
38 | static void ce4100_power_off(void) | ||
39 | { | ||
40 | outb(0x4, 0xcf9); | ||
41 | } | ||
42 | |||
30 | #ifdef CONFIG_SERIAL_8250 | 43 | #ifdef CONFIG_SERIAL_8250 |
31 | 44 | ||
32 | static unsigned int mem_serial_in(struct uart_port *p, int offset) | 45 | static unsigned int mem_serial_in(struct uart_port *p, int offset) |
@@ -139,8 +152,19 @@ void __init x86_ce4100_early_setup(void) | |||
139 | x86_init.mpparse.find_smp_config = x86_init_noop; | 152 | x86_init.mpparse.find_smp_config = x86_init_noop; |
140 | x86_init.pci.init = ce4100_pci_init; | 153 | x86_init.pci.init = ce4100_pci_init; |
141 | 154 | ||
155 | /* | ||
156 | * By default, the reboot method is ACPI which is supported by the | ||
157 | * CE4100 bootloader CEFDK using FADT.ResetReg Address and ResetValue | ||
158 | * the bootloader will however issue a system power off instead of | ||
159 | * reboot. By using BOOT_KBD we ensure proper system reboot as | ||
160 | * expected. | ||
161 | */ | ||
162 | reboot_type = BOOT_KBD; | ||
163 | |||
142 | #ifdef CONFIG_X86_IO_APIC | 164 | #ifdef CONFIG_X86_IO_APIC |
143 | x86_init.pci.init_irq = sdv_pci_init; | 165 | x86_init.pci.init_irq = sdv_pci_init; |
144 | x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc_nocheck; | 166 | x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc_nocheck; |
145 | #endif | 167 | #endif |
168 | |||
169 | pm_power_off = ce4100_power_off; | ||
146 | } | 170 | } |