diff options
317 files changed, 2685 insertions, 4883 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index a0ffac029a0d..1bea46a54b1c 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -510,17 +510,3 @@ Why: The pci_scan_bus_parented() interface creates a new root bus. The | |||
510 | convert to using pci_scan_root_bus() so they can supply a list of | 510 | convert to using pci_scan_root_bus() so they can supply a list of |
511 | bus resources when the bus is created. | 511 | bus resources when the bus is created. |
512 | Who: Bjorn Helgaas <bhelgaas@google.com> | 512 | Who: Bjorn Helgaas <bhelgaas@google.com> |
513 | |||
514 | ---------------------------- | ||
515 | |||
516 | What: The CAP9 SoC family will be removed | ||
517 | When: 3.4 | ||
518 | Files: arch/arm/mach-at91/at91cap9.c | ||
519 | arch/arm/mach-at91/at91cap9_devices.c | ||
520 | arch/arm/mach-at91/include/mach/at91cap9.h | ||
521 | arch/arm/mach-at91/include/mach/at91cap9_matrix.h | ||
522 | arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h | ||
523 | arch/arm/mach-at91/board-cap9adk.c | ||
524 | Why: The code is not actively maintained and platforms are now hard to find. | ||
525 | Who: Nicolas Ferre <nicolas.ferre@atmel.com> | ||
526 | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 7d809b7e0504..31a2ddc2e480 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -217,6 +217,13 @@ config ARM_PATCH_PHYS_VIRT | |||
217 | this feature (eg, building a kernel for a single machine) and | 217 | this feature (eg, building a kernel for a single machine) and |
218 | you need to shrink the kernel to the minimal size. | 218 | you need to shrink the kernel to the minimal size. |
219 | 219 | ||
220 | config NEED_MACH_IO_H | ||
221 | bool | ||
222 | help | ||
223 | Select this when mach/io.h is required to provide special | ||
224 | definitions for this platform. The need for mach/io.h should | ||
225 | be avoided when possible. | ||
226 | |||
220 | config NEED_MACH_MEMORY_H | 227 | config NEED_MACH_MEMORY_H |
221 | bool | 228 | bool |
222 | help | 229 | help |
@@ -268,6 +275,7 @@ config ARCH_INTEGRATOR | |||
268 | select GENERIC_CLOCKEVENTS | 275 | select GENERIC_CLOCKEVENTS |
269 | select PLAT_VERSATILE | 276 | select PLAT_VERSATILE |
270 | select PLAT_VERSATILE_FPGA_IRQ | 277 | select PLAT_VERSATILE_FPGA_IRQ |
278 | select NEED_MACH_IO_H | ||
271 | select NEED_MACH_MEMORY_H | 279 | select NEED_MACH_MEMORY_H |
272 | help | 280 | help |
273 | Support for ARM's Integrator platform. | 281 | Support for ARM's Integrator platform. |
@@ -327,7 +335,7 @@ config ARCH_AT91 | |||
327 | select CLKDEV_LOOKUP | 335 | select CLKDEV_LOOKUP |
328 | help | 336 | help |
329 | This enables support for systems based on the Atmel AT91RM9200, | 337 | This enables support for systems based on the Atmel AT91RM9200, |
330 | AT91SAM9 and AT91CAP9 processors. | 338 | AT91SAM9 processors. |
331 | 339 | ||
332 | config ARCH_BCMRING | 340 | config ARCH_BCMRING |
333 | bool "Broadcom BCMRING" | 341 | bool "Broadcom BCMRING" |
@@ -403,6 +411,7 @@ config ARCH_EBSA110 | |||
403 | select ISA | 411 | select ISA |
404 | select NO_IOPORT | 412 | select NO_IOPORT |
405 | select ARCH_USES_GETTIMEOFFSET | 413 | select ARCH_USES_GETTIMEOFFSET |
414 | select NEED_MACH_IO_H | ||
406 | select NEED_MACH_MEMORY_H | 415 | select NEED_MACH_MEMORY_H |
407 | help | 416 | help |
408 | This is an evaluation board for the StrongARM processor available | 417 | This is an evaluation board for the StrongARM processor available |
@@ -429,6 +438,7 @@ config ARCH_FOOTBRIDGE | |||
429 | select FOOTBRIDGE | 438 | select FOOTBRIDGE |
430 | select GENERIC_CLOCKEVENTS | 439 | select GENERIC_CLOCKEVENTS |
431 | select HAVE_IDE | 440 | select HAVE_IDE |
441 | select NEED_MACH_IO_H | ||
432 | select NEED_MACH_MEMORY_H | 442 | select NEED_MACH_MEMORY_H |
433 | help | 443 | help |
434 | Support for systems based on the DC21285 companion chip | 444 | Support for systems based on the DC21285 companion chip |
@@ -481,6 +491,7 @@ config ARCH_IOP13XX | |||
481 | select PCI | 491 | select PCI |
482 | select ARCH_SUPPORTS_MSI | 492 | select ARCH_SUPPORTS_MSI |
483 | select VMSPLIT_1G | 493 | select VMSPLIT_1G |
494 | select NEED_MACH_IO_H | ||
484 | select NEED_MACH_MEMORY_H | 495 | select NEED_MACH_MEMORY_H |
485 | select NEED_RET_TO_USER | 496 | select NEED_RET_TO_USER |
486 | help | 497 | help |
@@ -490,6 +501,7 @@ config ARCH_IOP32X | |||
490 | bool "IOP32x-based" | 501 | bool "IOP32x-based" |
491 | depends on MMU | 502 | depends on MMU |
492 | select CPU_XSCALE | 503 | select CPU_XSCALE |
504 | select NEED_MACH_IO_H | ||
493 | select NEED_RET_TO_USER | 505 | select NEED_RET_TO_USER |
494 | select PLAT_IOP | 506 | select PLAT_IOP |
495 | select PCI | 507 | select PCI |
@@ -502,6 +514,7 @@ config ARCH_IOP33X | |||
502 | bool "IOP33x-based" | 514 | bool "IOP33x-based" |
503 | depends on MMU | 515 | depends on MMU |
504 | select CPU_XSCALE | 516 | select CPU_XSCALE |
517 | select NEED_MACH_IO_H | ||
505 | select NEED_RET_TO_USER | 518 | select NEED_RET_TO_USER |
506 | select PLAT_IOP | 519 | select PLAT_IOP |
507 | select PCI | 520 | select PCI |
@@ -515,6 +528,7 @@ config ARCH_IXP23XX | |||
515 | select CPU_XSC3 | 528 | select CPU_XSC3 |
516 | select PCI | 529 | select PCI |
517 | select ARCH_USES_GETTIMEOFFSET | 530 | select ARCH_USES_GETTIMEOFFSET |
531 | select NEED_MACH_IO_H | ||
518 | select NEED_MACH_MEMORY_H | 532 | select NEED_MACH_MEMORY_H |
519 | help | 533 | help |
520 | Support for Intel's IXP23xx (XScale) family of processors. | 534 | Support for Intel's IXP23xx (XScale) family of processors. |
@@ -525,6 +539,7 @@ config ARCH_IXP2000 | |||
525 | select CPU_XSCALE | 539 | select CPU_XSCALE |
526 | select PCI | 540 | select PCI |
527 | select ARCH_USES_GETTIMEOFFSET | 541 | select ARCH_USES_GETTIMEOFFSET |
542 | select NEED_MACH_IO_H | ||
528 | select NEED_MACH_MEMORY_H | 543 | select NEED_MACH_MEMORY_H |
529 | help | 544 | help |
530 | Support for Intel's IXP2400/2800 (XScale) family of processors. | 545 | Support for Intel's IXP2400/2800 (XScale) family of processors. |
@@ -538,6 +553,7 @@ config ARCH_IXP4XX | |||
538 | select GENERIC_CLOCKEVENTS | 553 | select GENERIC_CLOCKEVENTS |
539 | select HAVE_SCHED_CLOCK | 554 | select HAVE_SCHED_CLOCK |
540 | select MIGHT_HAVE_PCI | 555 | select MIGHT_HAVE_PCI |
556 | select NEED_MACH_IO_H | ||
541 | select DMABOUNCE if PCI | 557 | select DMABOUNCE if PCI |
542 | help | 558 | help |
543 | Support for Intel's IXP4XX (XScale) family of processors. | 559 | Support for Intel's IXP4XX (XScale) family of processors. |
@@ -548,6 +564,7 @@ config ARCH_DOVE | |||
548 | select PCI | 564 | select PCI |
549 | select ARCH_REQUIRE_GPIOLIB | 565 | select ARCH_REQUIRE_GPIOLIB |
550 | select GENERIC_CLOCKEVENTS | 566 | select GENERIC_CLOCKEVENTS |
567 | select NEED_MACH_IO_H | ||
551 | select PLAT_ORION | 568 | select PLAT_ORION |
552 | help | 569 | help |
553 | Support for the Marvell Dove SoC 88AP510 | 570 | Support for the Marvell Dove SoC 88AP510 |
@@ -558,6 +575,7 @@ config ARCH_KIRKWOOD | |||
558 | select PCI | 575 | select PCI |
559 | select ARCH_REQUIRE_GPIOLIB | 576 | select ARCH_REQUIRE_GPIOLIB |
560 | select GENERIC_CLOCKEVENTS | 577 | select GENERIC_CLOCKEVENTS |
578 | select NEED_MACH_IO_H | ||
561 | select PLAT_ORION | 579 | select PLAT_ORION |
562 | help | 580 | help |
563 | Support for the following Marvell Kirkwood series SoCs: | 581 | Support for the following Marvell Kirkwood series SoCs: |
@@ -582,6 +600,7 @@ config ARCH_MV78XX0 | |||
582 | select PCI | 600 | select PCI |
583 | select ARCH_REQUIRE_GPIOLIB | 601 | select ARCH_REQUIRE_GPIOLIB |
584 | select GENERIC_CLOCKEVENTS | 602 | select GENERIC_CLOCKEVENTS |
603 | select NEED_MACH_IO_H | ||
585 | select PLAT_ORION | 604 | select PLAT_ORION |
586 | help | 605 | help |
587 | Support for the following Marvell MV78xx0 series SoCs: | 606 | Support for the following Marvell MV78xx0 series SoCs: |
@@ -651,6 +670,7 @@ config ARCH_TEGRA | |||
651 | select HAVE_SCHED_CLOCK | 670 | select HAVE_SCHED_CLOCK |
652 | select HAVE_SMP | 671 | select HAVE_SMP |
653 | select MIGHT_HAVE_CACHE_L2X0 | 672 | select MIGHT_HAVE_CACHE_L2X0 |
673 | select NEED_MACH_IO_H if PCI | ||
654 | select ARCH_HAS_CPUFREQ | 674 | select ARCH_HAS_CPUFREQ |
655 | help | 675 | help |
656 | This enables support for NVIDIA Tegra based systems (Tegra APX, | 676 | This enables support for NVIDIA Tegra based systems (Tegra APX, |
@@ -745,6 +765,7 @@ config ARCH_RPC | |||
745 | select ARCH_SPARSEMEM_ENABLE | 765 | select ARCH_SPARSEMEM_ENABLE |
746 | select ARCH_USES_GETTIMEOFFSET | 766 | select ARCH_USES_GETTIMEOFFSET |
747 | select HAVE_IDE | 767 | select HAVE_IDE |
768 | select NEED_MACH_IO_H | ||
748 | select NEED_MACH_MEMORY_H | 769 | select NEED_MACH_MEMORY_H |
749 | help | 770 | help |
750 | On the Acorn Risc-PC, Linux can support the internal IDE disk and | 771 | On the Acorn Risc-PC, Linux can support the internal IDE disk and |
@@ -777,6 +798,7 @@ config ARCH_S3C2410 | |||
777 | select CLKDEV_LOOKUP | 798 | select CLKDEV_LOOKUP |
778 | select ARCH_USES_GETTIMEOFFSET | 799 | select ARCH_USES_GETTIMEOFFSET |
779 | select HAVE_S3C2410_I2C if I2C | 800 | select HAVE_S3C2410_I2C if I2C |
801 | select NEED_MACH_IO_H | ||
780 | help | 802 | help |
781 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics | 803 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics |
782 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or | 804 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or |
@@ -883,6 +905,7 @@ config ARCH_SHARK | |||
883 | select PCI | 905 | select PCI |
884 | select ARCH_USES_GETTIMEOFFSET | 906 | select ARCH_USES_GETTIMEOFFSET |
885 | select NEED_MACH_MEMORY_H | 907 | select NEED_MACH_MEMORY_H |
908 | select NEED_MACH_IO_H | ||
886 | help | 909 | help |
887 | Support for the StrongARM based Digital DNARD machine, also known | 910 | Support for the StrongARM based Digital DNARD machine, also known |
888 | as "Shark" (<http://www.shark-linux.de/shark.html>). | 911 | as "Shark" (<http://www.shark-linux.de/shark.html>). |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 03646c4c13d1..b895a2a92da8 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -86,7 +86,7 @@ choice | |||
86 | depends on HAVE_AT91_DBGU0 | 86 | depends on HAVE_AT91_DBGU0 |
87 | 87 | ||
88 | config AT91_DEBUG_LL_DBGU1 | 88 | config AT91_DEBUG_LL_DBGU1 |
89 | bool "Kernel low-level debugging on 9263, 9g45 and cap9" | 89 | bool "Kernel low-level debugging on 9263 and 9g45" |
90 | depends on HAVE_AT91_DBGU1 | 90 | depends on HAVE_AT91_DBGU1 |
91 | 91 | ||
92 | config DEBUG_CLPS711X_UART1 | 92 | config DEBUG_CLPS711X_UART1 |
diff --git a/arch/arm/boot/dts/at91sam9g25ek.dts b/arch/arm/boot/dts/at91sam9g25ek.dts new file mode 100644 index 000000000000..e64eb932083b --- /dev/null +++ b/arch/arm/boot/dts/at91sam9g25ek.dts | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * at91sam9g25ek.dts - Device Tree file for AT91SAM9G25-EK board | ||
3 | * | ||
4 | * Copyright (C) 2012 Atmel, | ||
5 | * 2012 Nicolas Ferre <nicolas.ferre@atmel.com> | ||
6 | * | ||
7 | * Licensed under GPLv2 or later. | ||
8 | */ | ||
9 | /dts-v1/; | ||
10 | /include/ "at91sam9x5.dtsi" | ||
11 | /include/ "at91sam9x5cm.dtsi" | ||
12 | |||
13 | / { | ||
14 | model = "Atmel AT91SAM9G25-EK"; | ||
15 | compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; | ||
16 | |||
17 | chosen { | ||
18 | bootargs = "128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs"; | ||
19 | }; | ||
20 | |||
21 | ahb { | ||
22 | apb { | ||
23 | dbgu: serial@fffff200 { | ||
24 | status = "okay"; | ||
25 | }; | ||
26 | |||
27 | usart0: serial@f801c000 { | ||
28 | status = "okay"; | ||
29 | }; | ||
30 | |||
31 | macb0: ethernet@f802c000 { | ||
32 | phy-mode = "rmii"; | ||
33 | status = "okay"; | ||
34 | }; | ||
35 | }; | ||
36 | }; | ||
37 | }; | ||
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi new file mode 100644 index 000000000000..e91391f50730 --- /dev/null +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
@@ -0,0 +1,172 @@ | |||
1 | /* | ||
2 | * at91sam9x5.dtsi - Device Tree Include file for AT91SAM9x5 family SoC | ||
3 | * applies to AT91SAM9G15, AT91SAM9G25, AT91SAM9G35, | ||
4 | * AT91SAM9X25, AT91SAM9X35 SoC | ||
5 | * | ||
6 | * Copyright (C) 2012 Atmel, | ||
7 | * 2012 Nicolas Ferre <nicolas.ferre@atmel.com> | ||
8 | * | ||
9 | * Licensed under GPLv2 or later. | ||
10 | */ | ||
11 | |||
12 | /include/ "skeleton.dtsi" | ||
13 | |||
14 | / { | ||
15 | model = "Atmel AT91SAM9x5 family SoC"; | ||
16 | compatible = "atmel,at91sam9x5"; | ||
17 | interrupt-parent = <&aic>; | ||
18 | |||
19 | aliases { | ||
20 | serial0 = &dbgu; | ||
21 | serial1 = &usart0; | ||
22 | serial2 = &usart1; | ||
23 | serial3 = &usart2; | ||
24 | gpio0 = &pioA; | ||
25 | gpio1 = &pioB; | ||
26 | gpio2 = &pioC; | ||
27 | gpio3 = &pioD; | ||
28 | tcb0 = &tcb0; | ||
29 | tcb1 = &tcb1; | ||
30 | }; | ||
31 | cpus { | ||
32 | cpu@0 { | ||
33 | compatible = "arm,arm926ejs"; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | memory@20000000 { | ||
38 | reg = <0x20000000 0x10000000>; | ||
39 | }; | ||
40 | |||
41 | ahb { | ||
42 | compatible = "simple-bus"; | ||
43 | #address-cells = <1>; | ||
44 | #size-cells = <1>; | ||
45 | ranges; | ||
46 | |||
47 | apb { | ||
48 | compatible = "simple-bus"; | ||
49 | #address-cells = <1>; | ||
50 | #size-cells = <1>; | ||
51 | ranges; | ||
52 | |||
53 | aic: interrupt-controller@fffff000 { | ||
54 | #interrupt-cells = <2>; | ||
55 | compatible = "atmel,at91rm9200-aic"; | ||
56 | interrupt-controller; | ||
57 | interrupt-parent; | ||
58 | reg = <0xfffff000 0x200>; | ||
59 | }; | ||
60 | |||
61 | pit: timer@fffffe30 { | ||
62 | compatible = "atmel,at91sam9260-pit"; | ||
63 | reg = <0xfffffe30 0xf>; | ||
64 | interrupts = <1 4>; | ||
65 | }; | ||
66 | |||
67 | tcb0: timer@f8008000 { | ||
68 | compatible = "atmel,at91sam9x5-tcb"; | ||
69 | reg = <0xf8008000 0x100>; | ||
70 | interrupts = <17 4>; | ||
71 | }; | ||
72 | |||
73 | tcb1: timer@f800c000 { | ||
74 | compatible = "atmel,at91sam9x5-tcb"; | ||
75 | reg = <0xf800c000 0x100>; | ||
76 | interrupts = <17 4>; | ||
77 | }; | ||
78 | |||
79 | dma0: dma-controller@ffffec00 { | ||
80 | compatible = "atmel,at91sam9g45-dma"; | ||
81 | reg = <0xffffec00 0x200>; | ||
82 | interrupts = <20 4>; | ||
83 | }; | ||
84 | |||
85 | dma1: dma-controller@ffffee00 { | ||
86 | compatible = "atmel,at91sam9g45-dma"; | ||
87 | reg = <0xffffee00 0x200>; | ||
88 | interrupts = <21 4>; | ||
89 | }; | ||
90 | |||
91 | pioA: gpio@fffff400 { | ||
92 | compatible = "atmel,at91rm9200-gpio"; | ||
93 | reg = <0xfffff400 0x100>; | ||
94 | interrupts = <2 4>; | ||
95 | #gpio-cells = <2>; | ||
96 | gpio-controller; | ||
97 | }; | ||
98 | |||
99 | pioB: gpio@fffff600 { | ||
100 | compatible = "atmel,at91rm9200-gpio"; | ||
101 | reg = <0xfffff600 0x100>; | ||
102 | interrupts = <2 4>; | ||
103 | #gpio-cells = <2>; | ||
104 | gpio-controller; | ||
105 | }; | ||
106 | |||
107 | pioC: gpio@fffff800 { | ||
108 | compatible = "atmel,at91rm9200-gpio"; | ||
109 | reg = <0xfffff800 0x100>; | ||
110 | interrupts = <3 4>; | ||
111 | #gpio-cells = <2>; | ||
112 | gpio-controller; | ||
113 | }; | ||
114 | |||
115 | pioD: gpio@fffffa00 { | ||
116 | compatible = "atmel,at91rm9200-gpio"; | ||
117 | reg = <0xfffffa00 0x100>; | ||
118 | interrupts = <3 4>; | ||
119 | #gpio-cells = <2>; | ||
120 | gpio-controller; | ||
121 | }; | ||
122 | |||
123 | dbgu: serial@fffff200 { | ||
124 | compatible = "atmel,at91sam9260-usart"; | ||
125 | reg = <0xfffff200 0x200>; | ||
126 | interrupts = <1 4>; | ||
127 | status = "disabled"; | ||
128 | }; | ||
129 | |||
130 | usart0: serial@f801c000 { | ||
131 | compatible = "atmel,at91sam9260-usart"; | ||
132 | reg = <0xf801c000 0x200>; | ||
133 | interrupts = <5 4>; | ||
134 | atmel,use-dma-rx; | ||
135 | atmel,use-dma-tx; | ||
136 | status = "disabled"; | ||
137 | }; | ||
138 | |||
139 | usart1: serial@f8020000 { | ||
140 | compatible = "atmel,at91sam9260-usart"; | ||
141 | reg = <0xf8020000 0x200>; | ||
142 | interrupts = <6 4>; | ||
143 | atmel,use-dma-rx; | ||
144 | atmel,use-dma-tx; | ||
145 | status = "disabled"; | ||
146 | }; | ||
147 | |||
148 | usart2: serial@f8024000 { | ||
149 | compatible = "atmel,at91sam9260-usart"; | ||
150 | reg = <0xf8024000 0x200>; | ||
151 | interrupts = <7 4>; | ||
152 | atmel,use-dma-rx; | ||
153 | atmel,use-dma-tx; | ||
154 | status = "disabled"; | ||
155 | }; | ||
156 | |||
157 | macb0: ethernet@f802c000 { | ||
158 | compatible = "cdns,at32ap7000-macb", "cdns,macb"; | ||
159 | reg = <0xf802c000 0x100>; | ||
160 | interrupts = <24 4>; | ||
161 | status = "disabled"; | ||
162 | }; | ||
163 | |||
164 | macb1: ethernet@f8030000 { | ||
165 | compatible = "cdns,at32ap7000-macb", "cdns,macb"; | ||
166 | reg = <0xf8030000 0x100>; | ||
167 | interrupts = <27 4>; | ||
168 | status = "disabled"; | ||
169 | }; | ||
170 | }; | ||
171 | }; | ||
172 | }; | ||
diff --git a/arch/arm/boot/dts/at91sam9x5cm.dtsi b/arch/arm/boot/dts/at91sam9x5cm.dtsi new file mode 100644 index 000000000000..4ab5a77f4afc --- /dev/null +++ b/arch/arm/boot/dts/at91sam9x5cm.dtsi | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * at91sam9x5cm.dtsi - Device Tree Include file for AT91SAM9x5 CPU Module | ||
3 | * | ||
4 | * Copyright (C) 2012 Atmel, | ||
5 | * 2012 Nicolas Ferre <nicolas.ferre@atmel.com> | ||
6 | * | ||
7 | * Licensed under GPLv2 or later. | ||
8 | */ | ||
9 | |||
10 | / { | ||
11 | memory@20000000 { | ||
12 | reg = <0x20000000 0x8000000>; | ||
13 | }; | ||
14 | }; | ||
diff --git a/arch/arm/configs/at91cap9_defconfig b/arch/arm/configs/at91cap9_defconfig deleted file mode 100644 index 8826eb218e73..000000000000 --- a/arch/arm/configs/at91cap9_defconfig +++ /dev/null | |||
@@ -1,108 +0,0 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | # CONFIG_LOCALVERSION_AUTO is not set | ||
3 | # CONFIG_SWAP is not set | ||
4 | CONFIG_SYSVIPC=y | ||
5 | CONFIG_LOG_BUF_SHIFT=14 | ||
6 | CONFIG_BLK_DEV_INITRD=y | ||
7 | CONFIG_SLAB=y | ||
8 | CONFIG_MODULES=y | ||
9 | CONFIG_MODULE_UNLOAD=y | ||
10 | # CONFIG_BLK_DEV_BSG is not set | ||
11 | # CONFIG_IOSCHED_DEADLINE is not set | ||
12 | # CONFIG_IOSCHED_CFQ is not set | ||
13 | CONFIG_ARCH_AT91=y | ||
14 | CONFIG_ARCH_AT91CAP9=y | ||
15 | CONFIG_MACH_AT91CAP9ADK=y | ||
16 | CONFIG_MTD_AT91_DATAFLASH_CARD=y | ||
17 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
18 | # CONFIG_ARM_THUMB is not set | ||
19 | CONFIG_AEABI=y | ||
20 | CONFIG_LEDS=y | ||
21 | CONFIG_LEDS_CPU=y | ||
22 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
23 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
24 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 rw" | ||
25 | CONFIG_FPE_NWFPE=y | ||
26 | CONFIG_NET=y | ||
27 | CONFIG_PACKET=y | ||
28 | CONFIG_UNIX=y | ||
29 | CONFIG_INET=y | ||
30 | CONFIG_IP_PNP=y | ||
31 | CONFIG_IP_PNP_BOOTP=y | ||
32 | CONFIG_IP_PNP_RARP=y | ||
33 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
34 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
35 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
36 | # CONFIG_INET_LRO is not set | ||
37 | # CONFIG_INET_DIAG is not set | ||
38 | # CONFIG_IPV6 is not set | ||
39 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
40 | CONFIG_MTD=y | ||
41 | CONFIG_MTD_CMDLINE_PARTS=y | ||
42 | CONFIG_MTD_CHAR=y | ||
43 | CONFIG_MTD_BLOCK=y | ||
44 | CONFIG_MTD_CFI=y | ||
45 | CONFIG_MTD_JEDECPROBE=y | ||
46 | CONFIG_MTD_CFI_AMDSTD=y | ||
47 | CONFIG_MTD_PHYSMAP=y | ||
48 | CONFIG_MTD_DATAFLASH=y | ||
49 | CONFIG_MTD_NAND=y | ||
50 | CONFIG_MTD_NAND_ATMEL=y | ||
51 | CONFIG_BLK_DEV_LOOP=y | ||
52 | CONFIG_BLK_DEV_RAM=y | ||
53 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
54 | CONFIG_SCSI=y | ||
55 | CONFIG_BLK_DEV_SD=y | ||
56 | CONFIG_SCSI_MULTI_LUN=y | ||
57 | CONFIG_NETDEVICES=y | ||
58 | CONFIG_MII=y | ||
59 | CONFIG_MACB=y | ||
60 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
61 | CONFIG_INPUT_EVDEV=y | ||
62 | # CONFIG_INPUT_KEYBOARD is not set | ||
63 | # CONFIG_INPUT_MOUSE is not set | ||
64 | CONFIG_INPUT_TOUCHSCREEN=y | ||
65 | CONFIG_TOUCHSCREEN_ADS7846=y | ||
66 | # CONFIG_SERIO is not set | ||
67 | CONFIG_SERIAL_ATMEL=y | ||
68 | CONFIG_SERIAL_ATMEL_CONSOLE=y | ||
69 | CONFIG_HW_RANDOM=y | ||
70 | CONFIG_I2C=y | ||
71 | CONFIG_I2C_CHARDEV=y | ||
72 | CONFIG_SPI=y | ||
73 | CONFIG_SPI_ATMEL=y | ||
74 | # CONFIG_HWMON is not set | ||
75 | CONFIG_WATCHDOG=y | ||
76 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
77 | CONFIG_FB=y | ||
78 | CONFIG_FB_ATMEL=y | ||
79 | CONFIG_LOGO=y | ||
80 | # CONFIG_LOGO_LINUX_MONO is not set | ||
81 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
82 | # CONFIG_USB_HID is not set | ||
83 | CONFIG_USB=y | ||
84 | CONFIG_USB_DEVICEFS=y | ||
85 | CONFIG_USB_MON=y | ||
86 | CONFIG_USB_OHCI_HCD=y | ||
87 | CONFIG_USB_STORAGE=y | ||
88 | CONFIG_USB_GADGET=y | ||
89 | CONFIG_USB_ETH=m | ||
90 | CONFIG_USB_FILE_STORAGE=m | ||
91 | CONFIG_MMC=y | ||
92 | CONFIG_MMC_AT91=m | ||
93 | CONFIG_RTC_CLASS=y | ||
94 | CONFIG_RTC_DRV_AT91SAM9=y | ||
95 | CONFIG_EXT2_FS=y | ||
96 | CONFIG_VFAT_FS=y | ||
97 | CONFIG_TMPFS=y | ||
98 | CONFIG_JFFS2_FS=y | ||
99 | CONFIG_CRAMFS=y | ||
100 | CONFIG_NFS_FS=y | ||
101 | CONFIG_ROOT_NFS=y | ||
102 | CONFIG_NLS_CODEPAGE_437=y | ||
103 | CONFIG_NLS_CODEPAGE_850=y | ||
104 | CONFIG_NLS_ISO8859_1=y | ||
105 | CONFIG_DEBUG_FS=y | ||
106 | CONFIG_DEBUG_KERNEL=y | ||
107 | CONFIG_DEBUG_INFO=y | ||
108 | CONFIG_DEBUG_USER=y | ||
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 62f8095d46de..88374dd30fb9 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
@@ -23,6 +23,8 @@ | |||
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/domain.h> | 24 | #include <asm/domain.h> |
25 | 25 | ||
26 | #define IOMEM(x) (x) | ||
27 | |||
26 | /* | 28 | /* |
27 | * Endian independent macros for shifting bytes within registers. | 29 | * Endian independent macros for shifting bytes within registers. |
28 | */ | 30 | */ |
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 9275828feb3d..35d91406af65 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h | |||
@@ -83,6 +83,11 @@ extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, uns | |||
83 | extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int); | 83 | extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int); |
84 | extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached); | 84 | extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached); |
85 | extern void __iounmap(volatile void __iomem *addr); | 85 | extern void __iounmap(volatile void __iomem *addr); |
86 | extern void __arm_iounmap(volatile void __iomem *addr); | ||
87 | |||
88 | extern void __iomem * (*arch_ioremap_caller)(unsigned long, size_t, | ||
89 | unsigned int, void *); | ||
90 | extern void (*arch_iounmap)(volatile void __iomem *); | ||
86 | 91 | ||
87 | /* | 92 | /* |
88 | * Bad read/write accesses... | 93 | * Bad read/write accesses... |
@@ -97,6 +102,8 @@ static inline void __iomem *__typesafe_io(unsigned long addr) | |||
97 | return (void __iomem *)addr; | 102 | return (void __iomem *)addr; |
98 | } | 103 | } |
99 | 104 | ||
105 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
106 | |||
100 | /* IO barriers */ | 107 | /* IO barriers */ |
101 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE | 108 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE |
102 | #define __iormb() rmb() | 109 | #define __iormb() rmb() |
@@ -109,7 +116,11 @@ static inline void __iomem *__typesafe_io(unsigned long addr) | |||
109 | /* | 116 | /* |
110 | * Now, pick up the machine-defined IO definitions | 117 | * Now, pick up the machine-defined IO definitions |
111 | */ | 118 | */ |
119 | #ifdef CONFIG_NEED_MACH_IO_H | ||
112 | #include <mach/io.h> | 120 | #include <mach/io.h> |
121 | #else | ||
122 | #define __io(a) ({ (void)(a); __typesafe_io(0); }) | ||
123 | #endif | ||
113 | 124 | ||
114 | /* | 125 | /* |
115 | * This is the limit of PC card/PCI/ISA IO space, which is by default | 126 | * This is the limit of PC card/PCI/ISA IO space, which is by default |
@@ -211,18 +222,18 @@ extern void _memset_io(volatile void __iomem *, int, size_t); | |||
211 | * Again, this are defined to perform little endian accesses. See the | 222 | * Again, this are defined to perform little endian accesses. See the |
212 | * IO port primitives for more information. | 223 | * IO port primitives for more information. |
213 | */ | 224 | */ |
214 | #ifdef __mem_pci | 225 | #ifndef readl |
215 | #define readb_relaxed(c) ({ u8 __r = __raw_readb(__mem_pci(c)); __r; }) | 226 | #define readb_relaxed(c) ({ u8 __r = __raw_readb(c); __r; }) |
216 | #define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \ | 227 | #define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \ |
217 | __raw_readw(__mem_pci(c))); __r; }) | 228 | __raw_readw(c)); __r; }) |
218 | #define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \ | 229 | #define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \ |
219 | __raw_readl(__mem_pci(c))); __r; }) | 230 | __raw_readl(c)); __r; }) |
220 | 231 | ||
221 | #define writeb_relaxed(v,c) ((void)__raw_writeb(v,__mem_pci(c))) | 232 | #define writeb_relaxed(v,c) ((void)__raw_writeb(v,c)) |
222 | #define writew_relaxed(v,c) ((void)__raw_writew((__force u16) \ | 233 | #define writew_relaxed(v,c) ((void)__raw_writew((__force u16) \ |
223 | cpu_to_le16(v),__mem_pci(c))) | 234 | cpu_to_le16(v),c)) |
224 | #define writel_relaxed(v,c) ((void)__raw_writel((__force u32) \ | 235 | #define writel_relaxed(v,c) ((void)__raw_writel((__force u32) \ |
225 | cpu_to_le32(v),__mem_pci(c))) | 236 | cpu_to_le32(v),c)) |
226 | 237 | ||
227 | #define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; }) | 238 | #define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; }) |
228 | #define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; }) | 239 | #define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; }) |
@@ -232,30 +243,19 @@ extern void _memset_io(volatile void __iomem *, int, size_t); | |||
232 | #define writew(v,c) ({ __iowmb(); writew_relaxed(v,c); }) | 243 | #define writew(v,c) ({ __iowmb(); writew_relaxed(v,c); }) |
233 | #define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); }) | 244 | #define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); }) |
234 | 245 | ||
235 | #define readsb(p,d,l) __raw_readsb(__mem_pci(p),d,l) | 246 | #define readsb(p,d,l) __raw_readsb(p,d,l) |
236 | #define readsw(p,d,l) __raw_readsw(__mem_pci(p),d,l) | 247 | #define readsw(p,d,l) __raw_readsw(p,d,l) |
237 | #define readsl(p,d,l) __raw_readsl(__mem_pci(p),d,l) | 248 | #define readsl(p,d,l) __raw_readsl(p,d,l) |
238 | |||
239 | #define writesb(p,d,l) __raw_writesb(__mem_pci(p),d,l) | ||
240 | #define writesw(p,d,l) __raw_writesw(__mem_pci(p),d,l) | ||
241 | #define writesl(p,d,l) __raw_writesl(__mem_pci(p),d,l) | ||
242 | 249 | ||
243 | #define memset_io(c,v,l) _memset_io(__mem_pci(c),(v),(l)) | 250 | #define writesb(p,d,l) __raw_writesb(p,d,l) |
244 | #define memcpy_fromio(a,c,l) _memcpy_fromio((a),__mem_pci(c),(l)) | 251 | #define writesw(p,d,l) __raw_writesw(p,d,l) |
245 | #define memcpy_toio(c,a,l) _memcpy_toio(__mem_pci(c),(a),(l)) | 252 | #define writesl(p,d,l) __raw_writesl(p,d,l) |
246 | 253 | ||
247 | #elif !defined(readb) | 254 | #define memset_io(c,v,l) _memset_io(c,(v),(l)) |
255 | #define memcpy_fromio(a,c,l) _memcpy_fromio((a),c,(l)) | ||
256 | #define memcpy_toio(c,a,l) _memcpy_toio(c,(a),(l)) | ||
248 | 257 | ||
249 | #define readb(c) (__readwrite_bug("readb"),0) | 258 | #endif /* readl */ |
250 | #define readw(c) (__readwrite_bug("readw"),0) | ||
251 | #define readl(c) (__readwrite_bug("readl"),0) | ||
252 | #define writeb(v,c) __readwrite_bug("writeb") | ||
253 | #define writew(v,c) __readwrite_bug("writew") | ||
254 | #define writel(v,c) __readwrite_bug("writel") | ||
255 | |||
256 | #define check_signature(io,sig,len) (0) | ||
257 | |||
258 | #endif /* __mem_pci */ | ||
259 | 259 | ||
260 | /* | 260 | /* |
261 | * ioremap and friends. | 261 | * ioremap and friends. |
@@ -264,16 +264,11 @@ extern void _memset_io(volatile void __iomem *, int, size_t); | |||
264 | * Documentation/io-mapping.txt. | 264 | * Documentation/io-mapping.txt. |
265 | * | 265 | * |
266 | */ | 266 | */ |
267 | #ifndef __arch_ioremap | 267 | #define ioremap(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE) |
268 | #define __arch_ioremap __arm_ioremap | 268 | #define ioremap_nocache(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE) |
269 | #define __arch_iounmap __iounmap | 269 | #define ioremap_cached(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE_CACHED) |
270 | #endif | 270 | #define ioremap_wc(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE_WC) |
271 | 271 | #define iounmap __arm_iounmap | |
272 | #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | ||
273 | #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | ||
274 | #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) | ||
275 | #define ioremap_wc(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_WC) | ||
276 | #define iounmap __arch_iounmap | ||
277 | 272 | ||
278 | /* | 273 | /* |
279 | * io{read,write}{8,16,32} macros | 274 | * io{read,write}{8,16,32} macros |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index 204e2160cfcc..501cdbfc902c 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
@@ -10,6 +10,7 @@ | |||
10 | * 32-bit debugging code | 10 | * 32-bit debugging code |
11 | */ | 11 | */ |
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <asm/assembler.h> | ||
13 | 14 | ||
14 | .text | 15 | .text |
15 | 16 | ||
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 22f0ed324f37..395f6271dfc2 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -15,6 +15,7 @@ | |||
15 | * that causes it to save wrong values... Be aware! | 15 | * that causes it to save wrong values... Be aware! |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include <asm/assembler.h> | ||
18 | #include <asm/memory.h> | 19 | #include <asm/memory.h> |
19 | #include <asm/glue-df.h> | 20 | #include <asm/glue-df.h> |
20 | #include <asm/glue-pf.h> | 21 | #include <asm/glue-pf.h> |
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 71feb00a1e99..e55cdcbd81fb 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
@@ -102,13 +102,13 @@ config ARCH_AT91SAM9G45 | |||
102 | select HAVE_AT91_DBGU1 | 102 | select HAVE_AT91_DBGU1 |
103 | select AT91_SAM9G45_RESET | 103 | select AT91_SAM9G45_RESET |
104 | 104 | ||
105 | config ARCH_AT91CAP9 | 105 | config ARCH_AT91SAM9X5 |
106 | bool "AT91CAP9" | 106 | bool "AT91SAM9x5 family" |
107 | select CPU_ARM926T | 107 | select CPU_ARM926T |
108 | select GENERIC_CLOCKEVENTS | 108 | select GENERIC_CLOCKEVENTS |
109 | select HAVE_FB_ATMEL | 109 | select HAVE_FB_ATMEL |
110 | select HAVE_NET_MACB | 110 | select HAVE_NET_MACB |
111 | select HAVE_AT91_DBGU1 | 111 | select HAVE_AT91_DBGU0 |
112 | select AT91_SAM9G45_RESET | 112 | select AT91_SAM9G45_RESET |
113 | 113 | ||
114 | config ARCH_AT91X40 | 114 | config ARCH_AT91X40 |
@@ -447,21 +447,6 @@ endif | |||
447 | 447 | ||
448 | # ---------------------------------------------------------- | 448 | # ---------------------------------------------------------- |
449 | 449 | ||
450 | if ARCH_AT91CAP9 | ||
451 | |||
452 | comment "AT91CAP9 Board Type" | ||
453 | |||
454 | config MACH_AT91CAP9ADK | ||
455 | bool "Atmel AT91CAP9A-DK Evaluation Kit" | ||
456 | select HAVE_AT91_DATAFLASH_CARD | ||
457 | help | ||
458 | Select this if you are using Atmel's AT91CAP9A-DK Evaluation Kit. | ||
459 | <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4138> | ||
460 | |||
461 | endif | ||
462 | |||
463 | # ---------------------------------------------------------- | ||
464 | |||
465 | if ARCH_AT91X40 | 450 | if ARCH_AT91X40 |
466 | 451 | ||
467 | comment "AT91X40 Board Type" | 452 | comment "AT91X40 Board Type" |
@@ -544,7 +529,7 @@ config AT91_EARLY_DBGU0 | |||
544 | depends on HAVE_AT91_DBGU0 | 529 | depends on HAVE_AT91_DBGU0 |
545 | 530 | ||
546 | config AT91_EARLY_DBGU1 | 531 | config AT91_EARLY_DBGU1 |
547 | bool "DBGU on 9263, 9g45 and cap9" | 532 | bool "DBGU on 9263 and 9g45" |
548 | depends on HAVE_AT91_DBGU1 | 533 | depends on HAVE_AT91_DBGU1 |
549 | 534 | ||
550 | config AT91_EARLY_USART0 | 535 | config AT91_EARLY_USART0 |
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index 705e1fbded39..1b6518518d99 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
@@ -20,7 +20,7 @@ obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_d | |||
20 | obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o | 20 | obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o |
21 | obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o | 21 | obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o |
22 | obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o | 22 | obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o |
23 | obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o | 23 | obj-$(CONFIG_ARCH_AT91SAM9X5) += at91sam9x5.o at91sam926x_time.o |
24 | obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o | 24 | obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o |
25 | 25 | ||
26 | # AT91RM9200 board-specific support | 26 | # AT91RM9200 board-specific support |
@@ -81,9 +81,6 @@ obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o | |||
81 | # AT91SAM board with device-tree | 81 | # AT91SAM board with device-tree |
82 | obj-$(CONFIG_MACH_AT91SAM_DT) += board-dt.o | 82 | obj-$(CONFIG_MACH_AT91SAM_DT) += board-dt.o |
83 | 83 | ||
84 | # AT91CAP9 board-specific support | ||
85 | obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o | ||
86 | |||
87 | # AT91X40 board-specific support | 84 | # AT91X40 board-specific support |
88 | obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o | 85 | obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o |
89 | 86 | ||
diff --git a/arch/arm/mach-at91/Makefile.boot b/arch/arm/mach-at91/Makefile.boot index 8ddafadfdc7d..0da66ca4a4f8 100644 --- a/arch/arm/mach-at91/Makefile.boot +++ b/arch/arm/mach-at91/Makefile.boot | |||
@@ -3,11 +3,7 @@ | |||
3 | # PARAMS_PHYS must be within 4MB of ZRELADDR | 3 | # PARAMS_PHYS must be within 4MB of ZRELADDR |
4 | # INITRD_PHYS must be in RAM | 4 | # INITRD_PHYS must be in RAM |
5 | 5 | ||
6 | ifeq ($(CONFIG_ARCH_AT91CAP9),y) | 6 | ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) |
7 | zreladdr-y += 0x70008000 | ||
8 | params_phys-y := 0x70000100 | ||
9 | initrd_phys-y := 0x70410000 | ||
10 | else ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) | ||
11 | zreladdr-y += 0x70008000 | 7 | zreladdr-y += 0x70008000 |
12 | params_phys-y := 0x70000100 | 8 | params_phys-y := 0x70000100 |
13 | initrd_phys-y := 0x70410000 | 9 | initrd_phys-y := 0x70410000 |
@@ -17,4 +13,10 @@ params_phys-y := 0x20000100 | |||
17 | initrd_phys-y := 0x20410000 | 13 | initrd_phys-y := 0x20410000 |
18 | endif | 14 | endif |
19 | 15 | ||
20 | dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb usb_a9g20.dtb | 16 | # Keep dtb files sorted alphabetically for each SoC |
17 | # sam9g20 | ||
18 | dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9g20.dtb | ||
19 | # sam9g45 | ||
20 | dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb | ||
21 | # sam9x5 | ||
22 | dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9g25ek.dtb | ||
diff --git a/arch/arm/mach-at91/at91cap9.c b/arch/arm/mach-at91/at91cap9.c deleted file mode 100644 index 8967d75c2ea3..000000000000 --- a/arch/arm/mach-at91/at91cap9.c +++ /dev/null | |||
@@ -1,404 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/at91cap9.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2007 Atmel Corporation. | ||
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 as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #include <linux/module.h> | ||
16 | |||
17 | #include <asm/proc-fns.h> | ||
18 | #include <asm/irq.h> | ||
19 | #include <asm/mach/arch.h> | ||
20 | #include <asm/mach/map.h> | ||
21 | |||
22 | #include <mach/cpu.h> | ||
23 | #include <mach/at91cap9.h> | ||
24 | #include <mach/at91_pmc.h> | ||
25 | |||
26 | #include "soc.h" | ||
27 | #include "generic.h" | ||
28 | #include "clock.h" | ||
29 | #include "sam9_smc.h" | ||
30 | |||
31 | /* -------------------------------------------------------------------- | ||
32 | * Clocks | ||
33 | * -------------------------------------------------------------------- */ | ||
34 | |||
35 | /* | ||
36 | * The peripheral clocks. | ||
37 | */ | ||
38 | static struct clk pioABCD_clk = { | ||
39 | .name = "pioABCD_clk", | ||
40 | .pmc_mask = 1 << AT91CAP9_ID_PIOABCD, | ||
41 | .type = CLK_TYPE_PERIPHERAL, | ||
42 | }; | ||
43 | static struct clk mpb0_clk = { | ||
44 | .name = "mpb0_clk", | ||
45 | .pmc_mask = 1 << AT91CAP9_ID_MPB0, | ||
46 | .type = CLK_TYPE_PERIPHERAL, | ||
47 | }; | ||
48 | static struct clk mpb1_clk = { | ||
49 | .name = "mpb1_clk", | ||
50 | .pmc_mask = 1 << AT91CAP9_ID_MPB1, | ||
51 | .type = CLK_TYPE_PERIPHERAL, | ||
52 | }; | ||
53 | static struct clk mpb2_clk = { | ||
54 | .name = "mpb2_clk", | ||
55 | .pmc_mask = 1 << AT91CAP9_ID_MPB2, | ||
56 | .type = CLK_TYPE_PERIPHERAL, | ||
57 | }; | ||
58 | static struct clk mpb3_clk = { | ||
59 | .name = "mpb3_clk", | ||
60 | .pmc_mask = 1 << AT91CAP9_ID_MPB3, | ||
61 | .type = CLK_TYPE_PERIPHERAL, | ||
62 | }; | ||
63 | static struct clk mpb4_clk = { | ||
64 | .name = "mpb4_clk", | ||
65 | .pmc_mask = 1 << AT91CAP9_ID_MPB4, | ||
66 | .type = CLK_TYPE_PERIPHERAL, | ||
67 | }; | ||
68 | static struct clk usart0_clk = { | ||
69 | .name = "usart0_clk", | ||
70 | .pmc_mask = 1 << AT91CAP9_ID_US0, | ||
71 | .type = CLK_TYPE_PERIPHERAL, | ||
72 | }; | ||
73 | static struct clk usart1_clk = { | ||
74 | .name = "usart1_clk", | ||
75 | .pmc_mask = 1 << AT91CAP9_ID_US1, | ||
76 | .type = CLK_TYPE_PERIPHERAL, | ||
77 | }; | ||
78 | static struct clk usart2_clk = { | ||
79 | .name = "usart2_clk", | ||
80 | .pmc_mask = 1 << AT91CAP9_ID_US2, | ||
81 | .type = CLK_TYPE_PERIPHERAL, | ||
82 | }; | ||
83 | static struct clk mmc0_clk = { | ||
84 | .name = "mci0_clk", | ||
85 | .pmc_mask = 1 << AT91CAP9_ID_MCI0, | ||
86 | .type = CLK_TYPE_PERIPHERAL, | ||
87 | }; | ||
88 | static struct clk mmc1_clk = { | ||
89 | .name = "mci1_clk", | ||
90 | .pmc_mask = 1 << AT91CAP9_ID_MCI1, | ||
91 | .type = CLK_TYPE_PERIPHERAL, | ||
92 | }; | ||
93 | static struct clk can_clk = { | ||
94 | .name = "can_clk", | ||
95 | .pmc_mask = 1 << AT91CAP9_ID_CAN, | ||
96 | .type = CLK_TYPE_PERIPHERAL, | ||
97 | }; | ||
98 | static struct clk twi_clk = { | ||
99 | .name = "twi_clk", | ||
100 | .pmc_mask = 1 << AT91CAP9_ID_TWI, | ||
101 | .type = CLK_TYPE_PERIPHERAL, | ||
102 | }; | ||
103 | static struct clk spi0_clk = { | ||
104 | .name = "spi0_clk", | ||
105 | .pmc_mask = 1 << AT91CAP9_ID_SPI0, | ||
106 | .type = CLK_TYPE_PERIPHERAL, | ||
107 | }; | ||
108 | static struct clk spi1_clk = { | ||
109 | .name = "spi1_clk", | ||
110 | .pmc_mask = 1 << AT91CAP9_ID_SPI1, | ||
111 | .type = CLK_TYPE_PERIPHERAL, | ||
112 | }; | ||
113 | static struct clk ssc0_clk = { | ||
114 | .name = "ssc0_clk", | ||
115 | .pmc_mask = 1 << AT91CAP9_ID_SSC0, | ||
116 | .type = CLK_TYPE_PERIPHERAL, | ||
117 | }; | ||
118 | static struct clk ssc1_clk = { | ||
119 | .name = "ssc1_clk", | ||
120 | .pmc_mask = 1 << AT91CAP9_ID_SSC1, | ||
121 | .type = CLK_TYPE_PERIPHERAL, | ||
122 | }; | ||
123 | static struct clk ac97_clk = { | ||
124 | .name = "ac97_clk", | ||
125 | .pmc_mask = 1 << AT91CAP9_ID_AC97C, | ||
126 | .type = CLK_TYPE_PERIPHERAL, | ||
127 | }; | ||
128 | static struct clk tcb_clk = { | ||
129 | .name = "tcb_clk", | ||
130 | .pmc_mask = 1 << AT91CAP9_ID_TCB, | ||
131 | .type = CLK_TYPE_PERIPHERAL, | ||
132 | }; | ||
133 | static struct clk pwm_clk = { | ||
134 | .name = "pwm_clk", | ||
135 | .pmc_mask = 1 << AT91CAP9_ID_PWMC, | ||
136 | .type = CLK_TYPE_PERIPHERAL, | ||
137 | }; | ||
138 | static struct clk macb_clk = { | ||
139 | .name = "pclk", | ||
140 | .pmc_mask = 1 << AT91CAP9_ID_EMAC, | ||
141 | .type = CLK_TYPE_PERIPHERAL, | ||
142 | }; | ||
143 | static struct clk aestdes_clk = { | ||
144 | .name = "aestdes_clk", | ||
145 | .pmc_mask = 1 << AT91CAP9_ID_AESTDES, | ||
146 | .type = CLK_TYPE_PERIPHERAL, | ||
147 | }; | ||
148 | static struct clk adc_clk = { | ||
149 | .name = "adc_clk", | ||
150 | .pmc_mask = 1 << AT91CAP9_ID_ADC, | ||
151 | .type = CLK_TYPE_PERIPHERAL, | ||
152 | }; | ||
153 | static struct clk isi_clk = { | ||
154 | .name = "isi_clk", | ||
155 | .pmc_mask = 1 << AT91CAP9_ID_ISI, | ||
156 | .type = CLK_TYPE_PERIPHERAL, | ||
157 | }; | ||
158 | static struct clk lcdc_clk = { | ||
159 | .name = "lcdc_clk", | ||
160 | .pmc_mask = 1 << AT91CAP9_ID_LCDC, | ||
161 | .type = CLK_TYPE_PERIPHERAL, | ||
162 | }; | ||
163 | static struct clk dma_clk = { | ||
164 | .name = "dma_clk", | ||
165 | .pmc_mask = 1 << AT91CAP9_ID_DMA, | ||
166 | .type = CLK_TYPE_PERIPHERAL, | ||
167 | }; | ||
168 | static struct clk udphs_clk = { | ||
169 | .name = "udphs_clk", | ||
170 | .pmc_mask = 1 << AT91CAP9_ID_UDPHS, | ||
171 | .type = CLK_TYPE_PERIPHERAL, | ||
172 | }; | ||
173 | static struct clk ohci_clk = { | ||
174 | .name = "ohci_clk", | ||
175 | .pmc_mask = 1 << AT91CAP9_ID_UHP, | ||
176 | .type = CLK_TYPE_PERIPHERAL, | ||
177 | }; | ||
178 | |||
179 | static struct clk *periph_clocks[] __initdata = { | ||
180 | &pioABCD_clk, | ||
181 | &mpb0_clk, | ||
182 | &mpb1_clk, | ||
183 | &mpb2_clk, | ||
184 | &mpb3_clk, | ||
185 | &mpb4_clk, | ||
186 | &usart0_clk, | ||
187 | &usart1_clk, | ||
188 | &usart2_clk, | ||
189 | &mmc0_clk, | ||
190 | &mmc1_clk, | ||
191 | &can_clk, | ||
192 | &twi_clk, | ||
193 | &spi0_clk, | ||
194 | &spi1_clk, | ||
195 | &ssc0_clk, | ||
196 | &ssc1_clk, | ||
197 | &ac97_clk, | ||
198 | &tcb_clk, | ||
199 | &pwm_clk, | ||
200 | &macb_clk, | ||
201 | &aestdes_clk, | ||
202 | &adc_clk, | ||
203 | &isi_clk, | ||
204 | &lcdc_clk, | ||
205 | &dma_clk, | ||
206 | &udphs_clk, | ||
207 | &ohci_clk, | ||
208 | // irq0 .. irq1 | ||
209 | }; | ||
210 | |||
211 | static struct clk_lookup periph_clocks_lookups[] = { | ||
212 | /* One additional fake clock for macb_hclk */ | ||
213 | CLKDEV_CON_ID("hclk", &macb_clk), | ||
214 | CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk), | ||
215 | CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), | ||
216 | CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), | ||
217 | CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.1", &mmc1_clk), | ||
218 | CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), | ||
219 | CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), | ||
220 | CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk), | ||
221 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), | ||
222 | CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), | ||
223 | /* fake hclk clock */ | ||
224 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), | ||
225 | CLKDEV_CON_ID("pioA", &pioABCD_clk), | ||
226 | CLKDEV_CON_ID("pioB", &pioABCD_clk), | ||
227 | CLKDEV_CON_ID("pioC", &pioABCD_clk), | ||
228 | CLKDEV_CON_ID("pioD", &pioABCD_clk), | ||
229 | }; | ||
230 | |||
231 | static struct clk_lookup usart_clocks_lookups[] = { | ||
232 | CLKDEV_CON_DEV_ID("usart", "atmel_usart.0", &mck), | ||
233 | CLKDEV_CON_DEV_ID("usart", "atmel_usart.1", &usart0_clk), | ||
234 | CLKDEV_CON_DEV_ID("usart", "atmel_usart.2", &usart1_clk), | ||
235 | CLKDEV_CON_DEV_ID("usart", "atmel_usart.3", &usart2_clk), | ||
236 | }; | ||
237 | |||
238 | /* | ||
239 | * The four programmable clocks. | ||
240 | * You must configure pin multiplexing to bring these signals out. | ||
241 | */ | ||
242 | static struct clk pck0 = { | ||
243 | .name = "pck0", | ||
244 | .pmc_mask = AT91_PMC_PCK0, | ||
245 | .type = CLK_TYPE_PROGRAMMABLE, | ||
246 | .id = 0, | ||
247 | }; | ||
248 | static struct clk pck1 = { | ||
249 | .name = "pck1", | ||
250 | .pmc_mask = AT91_PMC_PCK1, | ||
251 | .type = CLK_TYPE_PROGRAMMABLE, | ||
252 | .id = 1, | ||
253 | }; | ||
254 | static struct clk pck2 = { | ||
255 | .name = "pck2", | ||
256 | .pmc_mask = AT91_PMC_PCK2, | ||
257 | .type = CLK_TYPE_PROGRAMMABLE, | ||
258 | .id = 2, | ||
259 | }; | ||
260 | static struct clk pck3 = { | ||
261 | .name = "pck3", | ||
262 | .pmc_mask = AT91_PMC_PCK3, | ||
263 | .type = CLK_TYPE_PROGRAMMABLE, | ||
264 | .id = 3, | ||
265 | }; | ||
266 | |||
267 | static void __init at91cap9_register_clocks(void) | ||
268 | { | ||
269 | int i; | ||
270 | |||
271 | for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) | ||
272 | clk_register(periph_clocks[i]); | ||
273 | |||
274 | clkdev_add_table(periph_clocks_lookups, | ||
275 | ARRAY_SIZE(periph_clocks_lookups)); | ||
276 | clkdev_add_table(usart_clocks_lookups, | ||
277 | ARRAY_SIZE(usart_clocks_lookups)); | ||
278 | |||
279 | clk_register(&pck0); | ||
280 | clk_register(&pck1); | ||
281 | clk_register(&pck2); | ||
282 | clk_register(&pck3); | ||
283 | } | ||
284 | |||
285 | static struct clk_lookup console_clock_lookup; | ||
286 | |||
287 | void __init at91cap9_set_console_clock(int id) | ||
288 | { | ||
289 | if (id >= ARRAY_SIZE(usart_clocks_lookups)) | ||
290 | return; | ||
291 | |||
292 | console_clock_lookup.con_id = "usart"; | ||
293 | console_clock_lookup.clk = usart_clocks_lookups[id].clk; | ||
294 | clkdev_add(&console_clock_lookup); | ||
295 | } | ||
296 | |||
297 | /* -------------------------------------------------------------------- | ||
298 | * GPIO | ||
299 | * -------------------------------------------------------------------- */ | ||
300 | |||
301 | static struct at91_gpio_bank at91cap9_gpio[] __initdata = { | ||
302 | { | ||
303 | .id = AT91CAP9_ID_PIOABCD, | ||
304 | .regbase = AT91CAP9_BASE_PIOA, | ||
305 | }, { | ||
306 | .id = AT91CAP9_ID_PIOABCD, | ||
307 | .regbase = AT91CAP9_BASE_PIOB, | ||
308 | }, { | ||
309 | .id = AT91CAP9_ID_PIOABCD, | ||
310 | .regbase = AT91CAP9_BASE_PIOC, | ||
311 | }, { | ||
312 | .id = AT91CAP9_ID_PIOABCD, | ||
313 | .regbase = AT91CAP9_BASE_PIOD, | ||
314 | } | ||
315 | }; | ||
316 | |||
317 | static void at91cap9_idle(void) | ||
318 | { | ||
319 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
320 | cpu_do_idle(); | ||
321 | } | ||
322 | |||
323 | /* -------------------------------------------------------------------- | ||
324 | * AT91CAP9 processor initialization | ||
325 | * -------------------------------------------------------------------- */ | ||
326 | |||
327 | static void __init at91cap9_map_io(void) | ||
328 | { | ||
329 | at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE); | ||
330 | } | ||
331 | |||
332 | static void __init at91cap9_ioremap_registers(void) | ||
333 | { | ||
334 | at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC); | ||
335 | at91_ioremap_rstc(AT91CAP9_BASE_RSTC); | ||
336 | at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT); | ||
337 | at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC); | ||
338 | } | ||
339 | |||
340 | static void __init at91cap9_initialize(void) | ||
341 | { | ||
342 | arm_pm_idle = at91cap9_idle; | ||
343 | arm_pm_restart = at91sam9g45_restart; | ||
344 | at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); | ||
345 | |||
346 | /* Register GPIO subsystem */ | ||
347 | at91_gpio_init(at91cap9_gpio, 4); | ||
348 | |||
349 | /* Remember the silicon revision */ | ||
350 | if (cpu_is_at91cap9_revB()) | ||
351 | system_rev = 0xB; | ||
352 | else if (cpu_is_at91cap9_revC()) | ||
353 | system_rev = 0xC; | ||
354 | } | ||
355 | |||
356 | /* -------------------------------------------------------------------- | ||
357 | * Interrupt initialization | ||
358 | * -------------------------------------------------------------------- */ | ||
359 | |||
360 | /* | ||
361 | * The default interrupt priority levels (0 = lowest, 7 = highest). | ||
362 | */ | ||
363 | static unsigned int at91cap9_default_irq_priority[NR_AIC_IRQS] __initdata = { | ||
364 | 7, /* Advanced Interrupt Controller (FIQ) */ | ||
365 | 7, /* System Peripherals */ | ||
366 | 1, /* Parallel IO Controller A, B, C and D */ | ||
367 | 0, /* MP Block Peripheral 0 */ | ||
368 | 0, /* MP Block Peripheral 1 */ | ||
369 | 0, /* MP Block Peripheral 2 */ | ||
370 | 0, /* MP Block Peripheral 3 */ | ||
371 | 0, /* MP Block Peripheral 4 */ | ||
372 | 5, /* USART 0 */ | ||
373 | 5, /* USART 1 */ | ||
374 | 5, /* USART 2 */ | ||
375 | 0, /* Multimedia Card Interface 0 */ | ||
376 | 0, /* Multimedia Card Interface 1 */ | ||
377 | 3, /* CAN */ | ||
378 | 6, /* Two-Wire Interface */ | ||
379 | 5, /* Serial Peripheral Interface 0 */ | ||
380 | 5, /* Serial Peripheral Interface 1 */ | ||
381 | 4, /* Serial Synchronous Controller 0 */ | ||
382 | 4, /* Serial Synchronous Controller 1 */ | ||
383 | 5, /* AC97 Controller */ | ||
384 | 0, /* Timer Counter 0, 1 and 2 */ | ||
385 | 0, /* Pulse Width Modulation Controller */ | ||
386 | 3, /* Ethernet */ | ||
387 | 0, /* Advanced Encryption Standard, Triple DES*/ | ||
388 | 0, /* Analog-to-Digital Converter */ | ||
389 | 0, /* Image Sensor Interface */ | ||
390 | 3, /* LCD Controller */ | ||
391 | 0, /* DMA Controller */ | ||
392 | 2, /* USB Device Port */ | ||
393 | 2, /* USB Host port */ | ||
394 | 0, /* Advanced Interrupt Controller (IRQ0) */ | ||
395 | 0, /* Advanced Interrupt Controller (IRQ1) */ | ||
396 | }; | ||
397 | |||
398 | struct at91_init_soc __initdata at91cap9_soc = { | ||
399 | .map_io = at91cap9_map_io, | ||
400 | .default_irq_priority = at91cap9_default_irq_priority, | ||
401 | .ioremap_registers = at91cap9_ioremap_registers, | ||
402 | .register_clocks = at91cap9_register_clocks, | ||
403 | .init = at91cap9_initialize, | ||
404 | }; | ||
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c deleted file mode 100644 index d298fb7cb210..000000000000 --- a/arch/arm/mach-at91/at91cap9_devices.c +++ /dev/null | |||
@@ -1,1273 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/at91cap9_devices.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2007 Atmel Corporation. | ||
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 as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | */ | ||
14 | #include <asm/mach/arch.h> | ||
15 | #include <asm/mach/map.h> | ||
16 | #include <asm/mach/irq.h> | ||
17 | |||
18 | #include <linux/dma-mapping.h> | ||
19 | #include <linux/gpio.h> | ||
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/i2c-gpio.h> | ||
22 | |||
23 | #include <video/atmel_lcdc.h> | ||
24 | |||
25 | #include <mach/board.h> | ||
26 | #include <mach/cpu.h> | ||
27 | #include <mach/at91cap9.h> | ||
28 | #include <mach/at91cap9_matrix.h> | ||
29 | #include <mach/at91sam9_smc.h> | ||
30 | |||
31 | #include "generic.h" | ||
32 | |||
33 | |||
34 | /* -------------------------------------------------------------------- | ||
35 | * USB Host | ||
36 | * -------------------------------------------------------------------- */ | ||
37 | |||
38 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | ||
39 | static u64 ohci_dmamask = DMA_BIT_MASK(32); | ||
40 | static struct at91_usbh_data usbh_data; | ||
41 | |||
42 | static struct resource usbh_resources[] = { | ||
43 | [0] = { | ||
44 | .start = AT91CAP9_UHP_BASE, | ||
45 | .end = AT91CAP9_UHP_BASE + SZ_1M - 1, | ||
46 | .flags = IORESOURCE_MEM, | ||
47 | }, | ||
48 | [1] = { | ||
49 | .start = AT91CAP9_ID_UHP, | ||
50 | .end = AT91CAP9_ID_UHP, | ||
51 | .flags = IORESOURCE_IRQ, | ||
52 | }, | ||
53 | }; | ||
54 | |||
55 | static struct platform_device at91_usbh_device = { | ||
56 | .name = "at91_ohci", | ||
57 | .id = -1, | ||
58 | .dev = { | ||
59 | .dma_mask = &ohci_dmamask, | ||
60 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
61 | .platform_data = &usbh_data, | ||
62 | }, | ||
63 | .resource = usbh_resources, | ||
64 | .num_resources = ARRAY_SIZE(usbh_resources), | ||
65 | }; | ||
66 | |||
67 | void __init at91_add_device_usbh(struct at91_usbh_data *data) | ||
68 | { | ||
69 | int i; | ||
70 | |||
71 | if (!data) | ||
72 | return; | ||
73 | |||
74 | if (cpu_is_at91cap9_revB()) | ||
75 | irq_set_irq_type(AT91CAP9_ID_UHP, IRQ_TYPE_LEVEL_HIGH); | ||
76 | |||
77 | /* Enable VBus control for UHP ports */ | ||
78 | for (i = 0; i < data->ports; i++) { | ||
79 | if (gpio_is_valid(data->vbus_pin[i])) | ||
80 | at91_set_gpio_output(data->vbus_pin[i], 0); | ||
81 | } | ||
82 | |||
83 | /* Enable overcurrent notification */ | ||
84 | for (i = 0; i < data->ports; i++) { | ||
85 | if (data->overcurrent_pin[i]) | ||
86 | at91_set_gpio_input(data->overcurrent_pin[i], 1); | ||
87 | } | ||
88 | |||
89 | usbh_data = *data; | ||
90 | platform_device_register(&at91_usbh_device); | ||
91 | } | ||
92 | #else | ||
93 | void __init at91_add_device_usbh(struct at91_usbh_data *data) {} | ||
94 | #endif | ||
95 | |||
96 | |||
97 | /* -------------------------------------------------------------------- | ||
98 | * USB HS Device (Gadget) | ||
99 | * -------------------------------------------------------------------- */ | ||
100 | |||
101 | #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) | ||
102 | |||
103 | static struct resource usba_udc_resources[] = { | ||
104 | [0] = { | ||
105 | .start = AT91CAP9_UDPHS_FIFO, | ||
106 | .end = AT91CAP9_UDPHS_FIFO + SZ_512K - 1, | ||
107 | .flags = IORESOURCE_MEM, | ||
108 | }, | ||
109 | [1] = { | ||
110 | .start = AT91CAP9_BASE_UDPHS, | ||
111 | .end = AT91CAP9_BASE_UDPHS + SZ_1K - 1, | ||
112 | .flags = IORESOURCE_MEM, | ||
113 | }, | ||
114 | [2] = { | ||
115 | .start = AT91CAP9_ID_UDPHS, | ||
116 | .end = AT91CAP9_ID_UDPHS, | ||
117 | .flags = IORESOURCE_IRQ, | ||
118 | }, | ||
119 | }; | ||
120 | |||
121 | #define EP(nam, idx, maxpkt, maxbk, dma, isoc) \ | ||
122 | [idx] = { \ | ||
123 | .name = nam, \ | ||
124 | .index = idx, \ | ||
125 | .fifo_size = maxpkt, \ | ||
126 | .nr_banks = maxbk, \ | ||
127 | .can_dma = dma, \ | ||
128 | .can_isoc = isoc, \ | ||
129 | } | ||
130 | |||
131 | static struct usba_ep_data usba_udc_ep[] = { | ||
132 | EP("ep0", 0, 64, 1, 0, 0), | ||
133 | EP("ep1", 1, 1024, 3, 1, 1), | ||
134 | EP("ep2", 2, 1024, 3, 1, 1), | ||
135 | EP("ep3", 3, 1024, 2, 1, 1), | ||
136 | EP("ep4", 4, 1024, 2, 1, 1), | ||
137 | EP("ep5", 5, 1024, 2, 1, 0), | ||
138 | EP("ep6", 6, 1024, 2, 1, 0), | ||
139 | EP("ep7", 7, 1024, 2, 0, 0), | ||
140 | }; | ||
141 | |||
142 | #undef EP | ||
143 | |||
144 | /* | ||
145 | * pdata doesn't have room for any endpoints, so we need to | ||
146 | * append room for the ones we need right after it. | ||
147 | */ | ||
148 | static struct { | ||
149 | struct usba_platform_data pdata; | ||
150 | struct usba_ep_data ep[8]; | ||
151 | } usba_udc_data; | ||
152 | |||
153 | static struct platform_device at91_usba_udc_device = { | ||
154 | .name = "atmel_usba_udc", | ||
155 | .id = -1, | ||
156 | .dev = { | ||
157 | .platform_data = &usba_udc_data.pdata, | ||
158 | }, | ||
159 | .resource = usba_udc_resources, | ||
160 | .num_resources = ARRAY_SIZE(usba_udc_resources), | ||
161 | }; | ||
162 | |||
163 | void __init at91_add_device_usba(struct usba_platform_data *data) | ||
164 | { | ||
165 | if (cpu_is_at91cap9_revB()) { | ||
166 | irq_set_irq_type(AT91CAP9_ID_UDPHS, IRQ_TYPE_LEVEL_HIGH); | ||
167 | at91_sys_write(AT91_MATRIX_UDPHS, AT91_MATRIX_SELECT_UDPHS | | ||
168 | AT91_MATRIX_UDPHS_BYPASS_LOCK); | ||
169 | } | ||
170 | else | ||
171 | at91_sys_write(AT91_MATRIX_UDPHS, AT91_MATRIX_SELECT_UDPHS); | ||
172 | |||
173 | /* | ||
174 | * Invalid pins are 0 on AT91, but the usba driver is shared | ||
175 | * with AVR32, which use negative values instead. Once/if | ||
176 | * gpio_is_valid() is ported to AT91, revisit this code. | ||
177 | */ | ||
178 | usba_udc_data.pdata.vbus_pin = -EINVAL; | ||
179 | usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); | ||
180 | memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); | ||
181 | |||
182 | if (data && gpio_is_valid(data->vbus_pin)) { | ||
183 | at91_set_gpio_input(data->vbus_pin, 0); | ||
184 | at91_set_deglitch(data->vbus_pin, 1); | ||
185 | usba_udc_data.pdata.vbus_pin = data->vbus_pin; | ||
186 | } | ||
187 | |||
188 | /* Pullup pin is handled internally by USB device peripheral */ | ||
189 | |||
190 | platform_device_register(&at91_usba_udc_device); | ||
191 | } | ||
192 | #else | ||
193 | void __init at91_add_device_usba(struct usba_platform_data *data) {} | ||
194 | #endif | ||
195 | |||
196 | |||
197 | /* -------------------------------------------------------------------- | ||
198 | * Ethernet | ||
199 | * -------------------------------------------------------------------- */ | ||
200 | |||
201 | #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) | ||
202 | static u64 eth_dmamask = DMA_BIT_MASK(32); | ||
203 | static struct macb_platform_data eth_data; | ||
204 | |||
205 | static struct resource eth_resources[] = { | ||
206 | [0] = { | ||
207 | .start = AT91CAP9_BASE_EMAC, | ||
208 | .end = AT91CAP9_BASE_EMAC + SZ_16K - 1, | ||
209 | .flags = IORESOURCE_MEM, | ||
210 | }, | ||
211 | [1] = { | ||
212 | .start = AT91CAP9_ID_EMAC, | ||
213 | .end = AT91CAP9_ID_EMAC, | ||
214 | .flags = IORESOURCE_IRQ, | ||
215 | }, | ||
216 | }; | ||
217 | |||
218 | static struct platform_device at91cap9_eth_device = { | ||
219 | .name = "macb", | ||
220 | .id = -1, | ||
221 | .dev = { | ||
222 | .dma_mask = ð_dmamask, | ||
223 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
224 | .platform_data = ð_data, | ||
225 | }, | ||
226 | .resource = eth_resources, | ||
227 | .num_resources = ARRAY_SIZE(eth_resources), | ||
228 | }; | ||
229 | |||
230 | void __init at91_add_device_eth(struct macb_platform_data *data) | ||
231 | { | ||
232 | if (!data) | ||
233 | return; | ||
234 | |||
235 | if (gpio_is_valid(data->phy_irq_pin)) { | ||
236 | at91_set_gpio_input(data->phy_irq_pin, 0); | ||
237 | at91_set_deglitch(data->phy_irq_pin, 1); | ||
238 | } | ||
239 | |||
240 | /* Pins used for MII and RMII */ | ||
241 | at91_set_A_periph(AT91_PIN_PB21, 0); /* ETXCK_EREFCK */ | ||
242 | at91_set_A_periph(AT91_PIN_PB22, 0); /* ERXDV */ | ||
243 | at91_set_A_periph(AT91_PIN_PB25, 0); /* ERX0 */ | ||
244 | at91_set_A_periph(AT91_PIN_PB26, 0); /* ERX1 */ | ||
245 | at91_set_A_periph(AT91_PIN_PB27, 0); /* ERXER */ | ||
246 | at91_set_A_periph(AT91_PIN_PB28, 0); /* ETXEN */ | ||
247 | at91_set_A_periph(AT91_PIN_PB23, 0); /* ETX0 */ | ||
248 | at91_set_A_periph(AT91_PIN_PB24, 0); /* ETX1 */ | ||
249 | at91_set_A_periph(AT91_PIN_PB30, 0); /* EMDIO */ | ||
250 | at91_set_A_periph(AT91_PIN_PB29, 0); /* EMDC */ | ||
251 | |||
252 | if (!data->is_rmii) { | ||
253 | at91_set_B_periph(AT91_PIN_PC25, 0); /* ECRS */ | ||
254 | at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ | ||
255 | at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ | ||
256 | at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ | ||
257 | at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ | ||
258 | at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ | ||
259 | at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ | ||
260 | at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ | ||
261 | } | ||
262 | |||
263 | eth_data = *data; | ||
264 | platform_device_register(&at91cap9_eth_device); | ||
265 | } | ||
266 | #else | ||
267 | void __init at91_add_device_eth(struct macb_platform_data *data) {} | ||
268 | #endif | ||
269 | |||
270 | |||
271 | /* -------------------------------------------------------------------- | ||
272 | * MMC / SD | ||
273 | * -------------------------------------------------------------------- */ | ||
274 | |||
275 | #if defined(CONFIG_MMC_AT91) || defined(CONFIG_MMC_AT91_MODULE) | ||
276 | static u64 mmc_dmamask = DMA_BIT_MASK(32); | ||
277 | static struct at91_mmc_data mmc0_data, mmc1_data; | ||
278 | |||
279 | static struct resource mmc0_resources[] = { | ||
280 | [0] = { | ||
281 | .start = AT91CAP9_BASE_MCI0, | ||
282 | .end = AT91CAP9_BASE_MCI0 + SZ_16K - 1, | ||
283 | .flags = IORESOURCE_MEM, | ||
284 | }, | ||
285 | [1] = { | ||
286 | .start = AT91CAP9_ID_MCI0, | ||
287 | .end = AT91CAP9_ID_MCI0, | ||
288 | .flags = IORESOURCE_IRQ, | ||
289 | }, | ||
290 | }; | ||
291 | |||
292 | static struct platform_device at91cap9_mmc0_device = { | ||
293 | .name = "at91_mci", | ||
294 | .id = 0, | ||
295 | .dev = { | ||
296 | .dma_mask = &mmc_dmamask, | ||
297 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
298 | .platform_data = &mmc0_data, | ||
299 | }, | ||
300 | .resource = mmc0_resources, | ||
301 | .num_resources = ARRAY_SIZE(mmc0_resources), | ||
302 | }; | ||
303 | |||
304 | static struct resource mmc1_resources[] = { | ||
305 | [0] = { | ||
306 | .start = AT91CAP9_BASE_MCI1, | ||
307 | .end = AT91CAP9_BASE_MCI1 + SZ_16K - 1, | ||
308 | .flags = IORESOURCE_MEM, | ||
309 | }, | ||
310 | [1] = { | ||
311 | .start = AT91CAP9_ID_MCI1, | ||
312 | .end = AT91CAP9_ID_MCI1, | ||
313 | .flags = IORESOURCE_IRQ, | ||
314 | }, | ||
315 | }; | ||
316 | |||
317 | static struct platform_device at91cap9_mmc1_device = { | ||
318 | .name = "at91_mci", | ||
319 | .id = 1, | ||
320 | .dev = { | ||
321 | .dma_mask = &mmc_dmamask, | ||
322 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
323 | .platform_data = &mmc1_data, | ||
324 | }, | ||
325 | .resource = mmc1_resources, | ||
326 | .num_resources = ARRAY_SIZE(mmc1_resources), | ||
327 | }; | ||
328 | |||
329 | void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) | ||
330 | { | ||
331 | if (!data) | ||
332 | return; | ||
333 | |||
334 | /* input/irq */ | ||
335 | if (gpio_is_valid(data->det_pin)) { | ||
336 | at91_set_gpio_input(data->det_pin, 1); | ||
337 | at91_set_deglitch(data->det_pin, 1); | ||
338 | } | ||
339 | if (gpio_is_valid(data->wp_pin)) | ||
340 | at91_set_gpio_input(data->wp_pin, 1); | ||
341 | if (gpio_is_valid(data->vcc_pin)) | ||
342 | at91_set_gpio_output(data->vcc_pin, 0); | ||
343 | |||
344 | if (mmc_id == 0) { /* MCI0 */ | ||
345 | /* CLK */ | ||
346 | at91_set_A_periph(AT91_PIN_PA2, 0); | ||
347 | |||
348 | /* CMD */ | ||
349 | at91_set_A_periph(AT91_PIN_PA1, 1); | ||
350 | |||
351 | /* DAT0, maybe DAT1..DAT3 */ | ||
352 | at91_set_A_periph(AT91_PIN_PA0, 1); | ||
353 | if (data->wire4) { | ||
354 | at91_set_A_periph(AT91_PIN_PA3, 1); | ||
355 | at91_set_A_periph(AT91_PIN_PA4, 1); | ||
356 | at91_set_A_periph(AT91_PIN_PA5, 1); | ||
357 | } | ||
358 | |||
359 | mmc0_data = *data; | ||
360 | platform_device_register(&at91cap9_mmc0_device); | ||
361 | } else { /* MCI1 */ | ||
362 | /* CLK */ | ||
363 | at91_set_A_periph(AT91_PIN_PA16, 0); | ||
364 | |||
365 | /* CMD */ | ||
366 | at91_set_A_periph(AT91_PIN_PA17, 1); | ||
367 | |||
368 | /* DAT0, maybe DAT1..DAT3 */ | ||
369 | at91_set_A_periph(AT91_PIN_PA18, 1); | ||
370 | if (data->wire4) { | ||
371 | at91_set_A_periph(AT91_PIN_PA19, 1); | ||
372 | at91_set_A_periph(AT91_PIN_PA20, 1); | ||
373 | at91_set_A_periph(AT91_PIN_PA21, 1); | ||
374 | } | ||
375 | |||
376 | mmc1_data = *data; | ||
377 | platform_device_register(&at91cap9_mmc1_device); | ||
378 | } | ||
379 | } | ||
380 | #else | ||
381 | void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {} | ||
382 | #endif | ||
383 | |||
384 | |||
385 | /* -------------------------------------------------------------------- | ||
386 | * NAND / SmartMedia | ||
387 | * -------------------------------------------------------------------- */ | ||
388 | |||
389 | #if defined(CONFIG_MTD_NAND_ATMEL) || defined(CONFIG_MTD_NAND_ATMEL_MODULE) | ||
390 | static struct atmel_nand_data nand_data; | ||
391 | |||
392 | #define NAND_BASE AT91_CHIPSELECT_3 | ||
393 | |||
394 | static struct resource nand_resources[] = { | ||
395 | [0] = { | ||
396 | .start = NAND_BASE, | ||
397 | .end = NAND_BASE + SZ_256M - 1, | ||
398 | .flags = IORESOURCE_MEM, | ||
399 | }, | ||
400 | [1] = { | ||
401 | .start = AT91CAP9_BASE_ECC, | ||
402 | .end = AT91CAP9_BASE_ECC + SZ_512 - 1, | ||
403 | .flags = IORESOURCE_MEM, | ||
404 | } | ||
405 | }; | ||
406 | |||
407 | static struct platform_device at91cap9_nand_device = { | ||
408 | .name = "atmel_nand", | ||
409 | .id = -1, | ||
410 | .dev = { | ||
411 | .platform_data = &nand_data, | ||
412 | }, | ||
413 | .resource = nand_resources, | ||
414 | .num_resources = ARRAY_SIZE(nand_resources), | ||
415 | }; | ||
416 | |||
417 | void __init at91_add_device_nand(struct atmel_nand_data *data) | ||
418 | { | ||
419 | unsigned long csa; | ||
420 | |||
421 | if (!data) | ||
422 | return; | ||
423 | |||
424 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||
425 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); | ||
426 | |||
427 | /* enable pin */ | ||
428 | if (gpio_is_valid(data->enable_pin)) | ||
429 | at91_set_gpio_output(data->enable_pin, 1); | ||
430 | |||
431 | /* ready/busy pin */ | ||
432 | if (gpio_is_valid(data->rdy_pin)) | ||
433 | at91_set_gpio_input(data->rdy_pin, 1); | ||
434 | |||
435 | /* card detect pin */ | ||
436 | if (gpio_is_valid(data->det_pin)) | ||
437 | at91_set_gpio_input(data->det_pin, 1); | ||
438 | |||
439 | nand_data = *data; | ||
440 | platform_device_register(&at91cap9_nand_device); | ||
441 | } | ||
442 | #else | ||
443 | void __init at91_add_device_nand(struct atmel_nand_data *data) {} | ||
444 | #endif | ||
445 | |||
446 | |||
447 | /* -------------------------------------------------------------------- | ||
448 | * TWI (i2c) | ||
449 | * -------------------------------------------------------------------- */ | ||
450 | |||
451 | /* | ||
452 | * Prefer the GPIO code since the TWI controller isn't robust | ||
453 | * (gets overruns and underruns under load) and can only issue | ||
454 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
455 | */ | ||
456 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
457 | |||
458 | static struct i2c_gpio_platform_data pdata = { | ||
459 | .sda_pin = AT91_PIN_PB4, | ||
460 | .sda_is_open_drain = 1, | ||
461 | .scl_pin = AT91_PIN_PB5, | ||
462 | .scl_is_open_drain = 1, | ||
463 | .udelay = 2, /* ~100 kHz */ | ||
464 | }; | ||
465 | |||
466 | static struct platform_device at91cap9_twi_device = { | ||
467 | .name = "i2c-gpio", | ||
468 | .id = -1, | ||
469 | .dev.platform_data = &pdata, | ||
470 | }; | ||
471 | |||
472 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
473 | { | ||
474 | at91_set_GPIO_periph(AT91_PIN_PB4, 1); /* TWD (SDA) */ | ||
475 | at91_set_multi_drive(AT91_PIN_PB4, 1); | ||
476 | |||
477 | at91_set_GPIO_periph(AT91_PIN_PB5, 1); /* TWCK (SCL) */ | ||
478 | at91_set_multi_drive(AT91_PIN_PB5, 1); | ||
479 | |||
480 | i2c_register_board_info(0, devices, nr_devices); | ||
481 | platform_device_register(&at91cap9_twi_device); | ||
482 | } | ||
483 | |||
484 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
485 | |||
486 | static struct resource twi_resources[] = { | ||
487 | [0] = { | ||
488 | .start = AT91CAP9_BASE_TWI, | ||
489 | .end = AT91CAP9_BASE_TWI + SZ_16K - 1, | ||
490 | .flags = IORESOURCE_MEM, | ||
491 | }, | ||
492 | [1] = { | ||
493 | .start = AT91CAP9_ID_TWI, | ||
494 | .end = AT91CAP9_ID_TWI, | ||
495 | .flags = IORESOURCE_IRQ, | ||
496 | }, | ||
497 | }; | ||
498 | |||
499 | static struct platform_device at91cap9_twi_device = { | ||
500 | .name = "at91_i2c", | ||
501 | .id = -1, | ||
502 | .resource = twi_resources, | ||
503 | .num_resources = ARRAY_SIZE(twi_resources), | ||
504 | }; | ||
505 | |||
506 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
507 | { | ||
508 | /* pins used for TWI interface */ | ||
509 | at91_set_B_periph(AT91_PIN_PB4, 0); /* TWD */ | ||
510 | at91_set_multi_drive(AT91_PIN_PB4, 1); | ||
511 | |||
512 | at91_set_B_periph(AT91_PIN_PB5, 0); /* TWCK */ | ||
513 | at91_set_multi_drive(AT91_PIN_PB5, 1); | ||
514 | |||
515 | i2c_register_board_info(0, devices, nr_devices); | ||
516 | platform_device_register(&at91cap9_twi_device); | ||
517 | } | ||
518 | #else | ||
519 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} | ||
520 | #endif | ||
521 | |||
522 | /* -------------------------------------------------------------------- | ||
523 | * SPI | ||
524 | * -------------------------------------------------------------------- */ | ||
525 | |||
526 | #if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE) | ||
527 | static u64 spi_dmamask = DMA_BIT_MASK(32); | ||
528 | |||
529 | static struct resource spi0_resources[] = { | ||
530 | [0] = { | ||
531 | .start = AT91CAP9_BASE_SPI0, | ||
532 | .end = AT91CAP9_BASE_SPI0 + SZ_16K - 1, | ||
533 | .flags = IORESOURCE_MEM, | ||
534 | }, | ||
535 | [1] = { | ||
536 | .start = AT91CAP9_ID_SPI0, | ||
537 | .end = AT91CAP9_ID_SPI0, | ||
538 | .flags = IORESOURCE_IRQ, | ||
539 | }, | ||
540 | }; | ||
541 | |||
542 | static struct platform_device at91cap9_spi0_device = { | ||
543 | .name = "atmel_spi", | ||
544 | .id = 0, | ||
545 | .dev = { | ||
546 | .dma_mask = &spi_dmamask, | ||
547 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
548 | }, | ||
549 | .resource = spi0_resources, | ||
550 | .num_resources = ARRAY_SIZE(spi0_resources), | ||
551 | }; | ||
552 | |||
553 | static const unsigned spi0_standard_cs[4] = { AT91_PIN_PA5, AT91_PIN_PA3, AT91_PIN_PD0, AT91_PIN_PD1 }; | ||
554 | |||
555 | static struct resource spi1_resources[] = { | ||
556 | [0] = { | ||
557 | .start = AT91CAP9_BASE_SPI1, | ||
558 | .end = AT91CAP9_BASE_SPI1 + SZ_16K - 1, | ||
559 | .flags = IORESOURCE_MEM, | ||
560 | }, | ||
561 | [1] = { | ||
562 | .start = AT91CAP9_ID_SPI1, | ||
563 | .end = AT91CAP9_ID_SPI1, | ||
564 | .flags = IORESOURCE_IRQ, | ||
565 | }, | ||
566 | }; | ||
567 | |||
568 | static struct platform_device at91cap9_spi1_device = { | ||
569 | .name = "atmel_spi", | ||
570 | .id = 1, | ||
571 | .dev = { | ||
572 | .dma_mask = &spi_dmamask, | ||
573 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
574 | }, | ||
575 | .resource = spi1_resources, | ||
576 | .num_resources = ARRAY_SIZE(spi1_resources), | ||
577 | }; | ||
578 | |||
579 | static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB15, AT91_PIN_PB16, AT91_PIN_PB17, AT91_PIN_PB18 }; | ||
580 | |||
581 | void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | ||
582 | { | ||
583 | int i; | ||
584 | unsigned long cs_pin; | ||
585 | short enable_spi0 = 0; | ||
586 | short enable_spi1 = 0; | ||
587 | |||
588 | /* Choose SPI chip-selects */ | ||
589 | for (i = 0; i < nr_devices; i++) { | ||
590 | if (devices[i].controller_data) | ||
591 | cs_pin = (unsigned long) devices[i].controller_data; | ||
592 | else if (devices[i].bus_num == 0) | ||
593 | cs_pin = spi0_standard_cs[devices[i].chip_select]; | ||
594 | else | ||
595 | cs_pin = spi1_standard_cs[devices[i].chip_select]; | ||
596 | |||
597 | if (devices[i].bus_num == 0) | ||
598 | enable_spi0 = 1; | ||
599 | else | ||
600 | enable_spi1 = 1; | ||
601 | |||
602 | /* enable chip-select pin */ | ||
603 | at91_set_gpio_output(cs_pin, 1); | ||
604 | |||
605 | /* pass chip-select pin to driver */ | ||
606 | devices[i].controller_data = (void *) cs_pin; | ||
607 | } | ||
608 | |||
609 | spi_register_board_info(devices, nr_devices); | ||
610 | |||
611 | /* Configure SPI bus(es) */ | ||
612 | if (enable_spi0) { | ||
613 | at91_set_B_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ | ||
614 | at91_set_B_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ | ||
615 | at91_set_B_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ | ||
616 | |||
617 | platform_device_register(&at91cap9_spi0_device); | ||
618 | } | ||
619 | if (enable_spi1) { | ||
620 | at91_set_A_periph(AT91_PIN_PB12, 0); /* SPI1_MISO */ | ||
621 | at91_set_A_periph(AT91_PIN_PB13, 0); /* SPI1_MOSI */ | ||
622 | at91_set_A_periph(AT91_PIN_PB14, 0); /* SPI1_SPCK */ | ||
623 | |||
624 | platform_device_register(&at91cap9_spi1_device); | ||
625 | } | ||
626 | } | ||
627 | #else | ||
628 | void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {} | ||
629 | #endif | ||
630 | |||
631 | |||
632 | /* -------------------------------------------------------------------- | ||
633 | * Timer/Counter block | ||
634 | * -------------------------------------------------------------------- */ | ||
635 | |||
636 | #ifdef CONFIG_ATMEL_TCLIB | ||
637 | |||
638 | static struct resource tcb_resources[] = { | ||
639 | [0] = { | ||
640 | .start = AT91CAP9_BASE_TCB0, | ||
641 | .end = AT91CAP9_BASE_TCB0 + SZ_16K - 1, | ||
642 | .flags = IORESOURCE_MEM, | ||
643 | }, | ||
644 | [1] = { | ||
645 | .start = AT91CAP9_ID_TCB, | ||
646 | .end = AT91CAP9_ID_TCB, | ||
647 | .flags = IORESOURCE_IRQ, | ||
648 | }, | ||
649 | }; | ||
650 | |||
651 | static struct platform_device at91cap9_tcb_device = { | ||
652 | .name = "atmel_tcb", | ||
653 | .id = 0, | ||
654 | .resource = tcb_resources, | ||
655 | .num_resources = ARRAY_SIZE(tcb_resources), | ||
656 | }; | ||
657 | |||
658 | static void __init at91_add_device_tc(void) | ||
659 | { | ||
660 | platform_device_register(&at91cap9_tcb_device); | ||
661 | } | ||
662 | #else | ||
663 | static void __init at91_add_device_tc(void) { } | ||
664 | #endif | ||
665 | |||
666 | |||
667 | /* -------------------------------------------------------------------- | ||
668 | * RTT | ||
669 | * -------------------------------------------------------------------- */ | ||
670 | |||
671 | static struct resource rtt_resources[] = { | ||
672 | { | ||
673 | .start = AT91CAP9_BASE_RTT, | ||
674 | .end = AT91CAP9_BASE_RTT + SZ_16 - 1, | ||
675 | .flags = IORESOURCE_MEM, | ||
676 | } | ||
677 | }; | ||
678 | |||
679 | static struct platform_device at91cap9_rtt_device = { | ||
680 | .name = "at91_rtt", | ||
681 | .id = 0, | ||
682 | .resource = rtt_resources, | ||
683 | .num_resources = ARRAY_SIZE(rtt_resources), | ||
684 | }; | ||
685 | |||
686 | static void __init at91_add_device_rtt(void) | ||
687 | { | ||
688 | platform_device_register(&at91cap9_rtt_device); | ||
689 | } | ||
690 | |||
691 | |||
692 | /* -------------------------------------------------------------------- | ||
693 | * Watchdog | ||
694 | * -------------------------------------------------------------------- */ | ||
695 | |||
696 | #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) | ||
697 | static struct resource wdt_resources[] = { | ||
698 | { | ||
699 | .start = AT91CAP9_BASE_WDT, | ||
700 | .end = AT91CAP9_BASE_WDT + SZ_16 - 1, | ||
701 | .flags = IORESOURCE_MEM, | ||
702 | } | ||
703 | }; | ||
704 | |||
705 | static struct platform_device at91cap9_wdt_device = { | ||
706 | .name = "at91_wdt", | ||
707 | .id = -1, | ||
708 | .resource = wdt_resources, | ||
709 | .num_resources = ARRAY_SIZE(wdt_resources), | ||
710 | }; | ||
711 | |||
712 | static void __init at91_add_device_watchdog(void) | ||
713 | { | ||
714 | platform_device_register(&at91cap9_wdt_device); | ||
715 | } | ||
716 | #else | ||
717 | static void __init at91_add_device_watchdog(void) {} | ||
718 | #endif | ||
719 | |||
720 | |||
721 | /* -------------------------------------------------------------------- | ||
722 | * PWM | ||
723 | * --------------------------------------------------------------------*/ | ||
724 | |||
725 | #if defined(CONFIG_ATMEL_PWM) | ||
726 | static u32 pwm_mask; | ||
727 | |||
728 | static struct resource pwm_resources[] = { | ||
729 | [0] = { | ||
730 | .start = AT91CAP9_BASE_PWMC, | ||
731 | .end = AT91CAP9_BASE_PWMC + SZ_16K - 1, | ||
732 | .flags = IORESOURCE_MEM, | ||
733 | }, | ||
734 | [1] = { | ||
735 | .start = AT91CAP9_ID_PWMC, | ||
736 | .end = AT91CAP9_ID_PWMC, | ||
737 | .flags = IORESOURCE_IRQ, | ||
738 | }, | ||
739 | }; | ||
740 | |||
741 | static struct platform_device at91cap9_pwm0_device = { | ||
742 | .name = "atmel_pwm", | ||
743 | .id = -1, | ||
744 | .dev = { | ||
745 | .platform_data = &pwm_mask, | ||
746 | }, | ||
747 | .resource = pwm_resources, | ||
748 | .num_resources = ARRAY_SIZE(pwm_resources), | ||
749 | }; | ||
750 | |||
751 | void __init at91_add_device_pwm(u32 mask) | ||
752 | { | ||
753 | if (mask & (1 << AT91_PWM0)) | ||
754 | at91_set_A_periph(AT91_PIN_PB19, 1); /* enable PWM0 */ | ||
755 | |||
756 | if (mask & (1 << AT91_PWM1)) | ||
757 | at91_set_B_periph(AT91_PIN_PB8, 1); /* enable PWM1 */ | ||
758 | |||
759 | if (mask & (1 << AT91_PWM2)) | ||
760 | at91_set_B_periph(AT91_PIN_PC29, 1); /* enable PWM2 */ | ||
761 | |||
762 | if (mask & (1 << AT91_PWM3)) | ||
763 | at91_set_B_periph(AT91_PIN_PA11, 1); /* enable PWM3 */ | ||
764 | |||
765 | pwm_mask = mask; | ||
766 | |||
767 | platform_device_register(&at91cap9_pwm0_device); | ||
768 | } | ||
769 | #else | ||
770 | void __init at91_add_device_pwm(u32 mask) {} | ||
771 | #endif | ||
772 | |||
773 | |||
774 | |||
775 | /* -------------------------------------------------------------------- | ||
776 | * AC97 | ||
777 | * -------------------------------------------------------------------- */ | ||
778 | |||
779 | #if defined(CONFIG_SND_ATMEL_AC97C) || defined(CONFIG_SND_ATMEL_AC97C_MODULE) | ||
780 | static u64 ac97_dmamask = DMA_BIT_MASK(32); | ||
781 | static struct ac97c_platform_data ac97_data; | ||
782 | |||
783 | static struct resource ac97_resources[] = { | ||
784 | [0] = { | ||
785 | .start = AT91CAP9_BASE_AC97C, | ||
786 | .end = AT91CAP9_BASE_AC97C + SZ_16K - 1, | ||
787 | .flags = IORESOURCE_MEM, | ||
788 | }, | ||
789 | [1] = { | ||
790 | .start = AT91CAP9_ID_AC97C, | ||
791 | .end = AT91CAP9_ID_AC97C, | ||
792 | .flags = IORESOURCE_IRQ, | ||
793 | }, | ||
794 | }; | ||
795 | |||
796 | static struct platform_device at91cap9_ac97_device = { | ||
797 | .name = "atmel_ac97c", | ||
798 | .id = 1, | ||
799 | .dev = { | ||
800 | .dma_mask = &ac97_dmamask, | ||
801 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
802 | .platform_data = &ac97_data, | ||
803 | }, | ||
804 | .resource = ac97_resources, | ||
805 | .num_resources = ARRAY_SIZE(ac97_resources), | ||
806 | }; | ||
807 | |||
808 | void __init at91_add_device_ac97(struct ac97c_platform_data *data) | ||
809 | { | ||
810 | if (!data) | ||
811 | return; | ||
812 | |||
813 | at91_set_A_periph(AT91_PIN_PA6, 0); /* AC97FS */ | ||
814 | at91_set_A_periph(AT91_PIN_PA7, 0); /* AC97CK */ | ||
815 | at91_set_A_periph(AT91_PIN_PA8, 0); /* AC97TX */ | ||
816 | at91_set_A_periph(AT91_PIN_PA9, 0); /* AC97RX */ | ||
817 | |||
818 | /* reset */ | ||
819 | if (gpio_is_valid(data->reset_pin)) | ||
820 | at91_set_gpio_output(data->reset_pin, 0); | ||
821 | |||
822 | ac97_data = *data; | ||
823 | platform_device_register(&at91cap9_ac97_device); | ||
824 | } | ||
825 | #else | ||
826 | void __init at91_add_device_ac97(struct ac97c_platform_data *data) {} | ||
827 | #endif | ||
828 | |||
829 | |||
830 | /* -------------------------------------------------------------------- | ||
831 | * LCD Controller | ||
832 | * -------------------------------------------------------------------- */ | ||
833 | |||
834 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
835 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); | ||
836 | static struct atmel_lcdfb_info lcdc_data; | ||
837 | |||
838 | static struct resource lcdc_resources[] = { | ||
839 | [0] = { | ||
840 | .start = AT91CAP9_LCDC_BASE, | ||
841 | .end = AT91CAP9_LCDC_BASE + SZ_4K - 1, | ||
842 | .flags = IORESOURCE_MEM, | ||
843 | }, | ||
844 | [1] = { | ||
845 | .start = AT91CAP9_ID_LCDC, | ||
846 | .end = AT91CAP9_ID_LCDC, | ||
847 | .flags = IORESOURCE_IRQ, | ||
848 | }, | ||
849 | }; | ||
850 | |||
851 | static struct platform_device at91_lcdc_device = { | ||
852 | .name = "atmel_lcdfb", | ||
853 | .id = 0, | ||
854 | .dev = { | ||
855 | .dma_mask = &lcdc_dmamask, | ||
856 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
857 | .platform_data = &lcdc_data, | ||
858 | }, | ||
859 | .resource = lcdc_resources, | ||
860 | .num_resources = ARRAY_SIZE(lcdc_resources), | ||
861 | }; | ||
862 | |||
863 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | ||
864 | { | ||
865 | if (!data) | ||
866 | return; | ||
867 | |||
868 | if (cpu_is_at91cap9_revB()) | ||
869 | irq_set_irq_type(AT91CAP9_ID_LCDC, IRQ_TYPE_LEVEL_HIGH); | ||
870 | |||
871 | at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDHSYNC */ | ||
872 | at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDDOTCK */ | ||
873 | at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDDEN */ | ||
874 | at91_set_B_periph(AT91_PIN_PB9, 0); /* LCDCC */ | ||
875 | at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDD2 */ | ||
876 | at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDD3 */ | ||
877 | at91_set_A_periph(AT91_PIN_PC8, 0); /* LCDD4 */ | ||
878 | at91_set_A_periph(AT91_PIN_PC9, 0); /* LCDD5 */ | ||
879 | at91_set_A_periph(AT91_PIN_PC10, 0); /* LCDD6 */ | ||
880 | at91_set_A_periph(AT91_PIN_PC11, 0); /* LCDD7 */ | ||
881 | at91_set_A_periph(AT91_PIN_PC14, 0); /* LCDD10 */ | ||
882 | at91_set_A_periph(AT91_PIN_PC15, 0); /* LCDD11 */ | ||
883 | at91_set_A_periph(AT91_PIN_PC16, 0); /* LCDD12 */ | ||
884 | at91_set_A_periph(AT91_PIN_PC17, 0); /* LCDD13 */ | ||
885 | at91_set_A_periph(AT91_PIN_PC18, 0); /* LCDD14 */ | ||
886 | at91_set_A_periph(AT91_PIN_PC19, 0); /* LCDD15 */ | ||
887 | at91_set_A_periph(AT91_PIN_PC22, 0); /* LCDD18 */ | ||
888 | at91_set_A_periph(AT91_PIN_PC23, 0); /* LCDD19 */ | ||
889 | at91_set_A_periph(AT91_PIN_PC24, 0); /* LCDD20 */ | ||
890 | at91_set_A_periph(AT91_PIN_PC25, 0); /* LCDD21 */ | ||
891 | at91_set_A_periph(AT91_PIN_PC26, 0); /* LCDD22 */ | ||
892 | at91_set_A_periph(AT91_PIN_PC27, 0); /* LCDD23 */ | ||
893 | |||
894 | lcdc_data = *data; | ||
895 | platform_device_register(&at91_lcdc_device); | ||
896 | } | ||
897 | #else | ||
898 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | ||
899 | #endif | ||
900 | |||
901 | |||
902 | /* -------------------------------------------------------------------- | ||
903 | * SSC -- Synchronous Serial Controller | ||
904 | * -------------------------------------------------------------------- */ | ||
905 | |||
906 | #if defined(CONFIG_ATMEL_SSC) || defined(CONFIG_ATMEL_SSC_MODULE) | ||
907 | static u64 ssc0_dmamask = DMA_BIT_MASK(32); | ||
908 | |||
909 | static struct resource ssc0_resources[] = { | ||
910 | [0] = { | ||
911 | .start = AT91CAP9_BASE_SSC0, | ||
912 | .end = AT91CAP9_BASE_SSC0 + SZ_16K - 1, | ||
913 | .flags = IORESOURCE_MEM, | ||
914 | }, | ||
915 | [1] = { | ||
916 | .start = AT91CAP9_ID_SSC0, | ||
917 | .end = AT91CAP9_ID_SSC0, | ||
918 | .flags = IORESOURCE_IRQ, | ||
919 | }, | ||
920 | }; | ||
921 | |||
922 | static struct platform_device at91cap9_ssc0_device = { | ||
923 | .name = "ssc", | ||
924 | .id = 0, | ||
925 | .dev = { | ||
926 | .dma_mask = &ssc0_dmamask, | ||
927 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
928 | }, | ||
929 | .resource = ssc0_resources, | ||
930 | .num_resources = ARRAY_SIZE(ssc0_resources), | ||
931 | }; | ||
932 | |||
933 | static inline void configure_ssc0_pins(unsigned pins) | ||
934 | { | ||
935 | if (pins & ATMEL_SSC_TF) | ||
936 | at91_set_A_periph(AT91_PIN_PB0, 1); | ||
937 | if (pins & ATMEL_SSC_TK) | ||
938 | at91_set_A_periph(AT91_PIN_PB1, 1); | ||
939 | if (pins & ATMEL_SSC_TD) | ||
940 | at91_set_A_periph(AT91_PIN_PB2, 1); | ||
941 | if (pins & ATMEL_SSC_RD) | ||
942 | at91_set_A_periph(AT91_PIN_PB3, 1); | ||
943 | if (pins & ATMEL_SSC_RK) | ||
944 | at91_set_A_periph(AT91_PIN_PB4, 1); | ||
945 | if (pins & ATMEL_SSC_RF) | ||
946 | at91_set_A_periph(AT91_PIN_PB5, 1); | ||
947 | } | ||
948 | |||
949 | static u64 ssc1_dmamask = DMA_BIT_MASK(32); | ||
950 | |||
951 | static struct resource ssc1_resources[] = { | ||
952 | [0] = { | ||
953 | .start = AT91CAP9_BASE_SSC1, | ||
954 | .end = AT91CAP9_BASE_SSC1 + SZ_16K - 1, | ||
955 | .flags = IORESOURCE_MEM, | ||
956 | }, | ||
957 | [1] = { | ||
958 | .start = AT91CAP9_ID_SSC1, | ||
959 | .end = AT91CAP9_ID_SSC1, | ||
960 | .flags = IORESOURCE_IRQ, | ||
961 | }, | ||
962 | }; | ||
963 | |||
964 | static struct platform_device at91cap9_ssc1_device = { | ||
965 | .name = "ssc", | ||
966 | .id = 1, | ||
967 | .dev = { | ||
968 | .dma_mask = &ssc1_dmamask, | ||
969 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
970 | }, | ||
971 | .resource = ssc1_resources, | ||
972 | .num_resources = ARRAY_SIZE(ssc1_resources), | ||
973 | }; | ||
974 | |||
975 | static inline void configure_ssc1_pins(unsigned pins) | ||
976 | { | ||
977 | if (pins & ATMEL_SSC_TF) | ||
978 | at91_set_A_periph(AT91_PIN_PB6, 1); | ||
979 | if (pins & ATMEL_SSC_TK) | ||
980 | at91_set_A_periph(AT91_PIN_PB7, 1); | ||
981 | if (pins & ATMEL_SSC_TD) | ||
982 | at91_set_A_periph(AT91_PIN_PB8, 1); | ||
983 | if (pins & ATMEL_SSC_RD) | ||
984 | at91_set_A_periph(AT91_PIN_PB9, 1); | ||
985 | if (pins & ATMEL_SSC_RK) | ||
986 | at91_set_A_periph(AT91_PIN_PB10, 1); | ||
987 | if (pins & ATMEL_SSC_RF) | ||
988 | at91_set_A_periph(AT91_PIN_PB11, 1); | ||
989 | } | ||
990 | |||
991 | /* | ||
992 | * SSC controllers are accessed through library code, instead of any | ||
993 | * kind of all-singing/all-dancing driver. For example one could be | ||
994 | * used by a particular I2S audio codec's driver, while another one | ||
995 | * on the same system might be used by a custom data capture driver. | ||
996 | */ | ||
997 | void __init at91_add_device_ssc(unsigned id, unsigned pins) | ||
998 | { | ||
999 | struct platform_device *pdev; | ||
1000 | |||
1001 | /* | ||
1002 | * NOTE: caller is responsible for passing information matching | ||
1003 | * "pins" to whatever will be using each particular controller. | ||
1004 | */ | ||
1005 | switch (id) { | ||
1006 | case AT91CAP9_ID_SSC0: | ||
1007 | pdev = &at91cap9_ssc0_device; | ||
1008 | configure_ssc0_pins(pins); | ||
1009 | break; | ||
1010 | case AT91CAP9_ID_SSC1: | ||
1011 | pdev = &at91cap9_ssc1_device; | ||
1012 | configure_ssc1_pins(pins); | ||
1013 | break; | ||
1014 | default: | ||
1015 | return; | ||
1016 | } | ||
1017 | |||
1018 | platform_device_register(pdev); | ||
1019 | } | ||
1020 | |||
1021 | #else | ||
1022 | void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | ||
1023 | #endif | ||
1024 | |||
1025 | |||
1026 | /* -------------------------------------------------------------------- | ||
1027 | * UART | ||
1028 | * -------------------------------------------------------------------- */ | ||
1029 | |||
1030 | #if defined(CONFIG_SERIAL_ATMEL) | ||
1031 | static struct resource dbgu_resources[] = { | ||
1032 | [0] = { | ||
1033 | .start = AT91CAP9_BASE_DBGU, | ||
1034 | .end = AT91CAP9_BASE_DBGU + SZ_512 - 1, | ||
1035 | .flags = IORESOURCE_MEM, | ||
1036 | }, | ||
1037 | [1] = { | ||
1038 | .start = AT91_ID_SYS, | ||
1039 | .end = AT91_ID_SYS, | ||
1040 | .flags = IORESOURCE_IRQ, | ||
1041 | }, | ||
1042 | }; | ||
1043 | |||
1044 | static struct atmel_uart_data dbgu_data = { | ||
1045 | .use_dma_tx = 0, | ||
1046 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | ||
1047 | }; | ||
1048 | |||
1049 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | ||
1050 | |||
1051 | static struct platform_device at91cap9_dbgu_device = { | ||
1052 | .name = "atmel_usart", | ||
1053 | .id = 0, | ||
1054 | .dev = { | ||
1055 | .dma_mask = &dbgu_dmamask, | ||
1056 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1057 | .platform_data = &dbgu_data, | ||
1058 | }, | ||
1059 | .resource = dbgu_resources, | ||
1060 | .num_resources = ARRAY_SIZE(dbgu_resources), | ||
1061 | }; | ||
1062 | |||
1063 | static inline void configure_dbgu_pins(void) | ||
1064 | { | ||
1065 | at91_set_A_periph(AT91_PIN_PC30, 0); /* DRXD */ | ||
1066 | at91_set_A_periph(AT91_PIN_PC31, 1); /* DTXD */ | ||
1067 | } | ||
1068 | |||
1069 | static struct resource uart0_resources[] = { | ||
1070 | [0] = { | ||
1071 | .start = AT91CAP9_BASE_US0, | ||
1072 | .end = AT91CAP9_BASE_US0 + SZ_16K - 1, | ||
1073 | .flags = IORESOURCE_MEM, | ||
1074 | }, | ||
1075 | [1] = { | ||
1076 | .start = AT91CAP9_ID_US0, | ||
1077 | .end = AT91CAP9_ID_US0, | ||
1078 | .flags = IORESOURCE_IRQ, | ||
1079 | }, | ||
1080 | }; | ||
1081 | |||
1082 | static struct atmel_uart_data uart0_data = { | ||
1083 | .use_dma_tx = 1, | ||
1084 | .use_dma_rx = 1, | ||
1085 | }; | ||
1086 | |||
1087 | static u64 uart0_dmamask = DMA_BIT_MASK(32); | ||
1088 | |||
1089 | static struct platform_device at91cap9_uart0_device = { | ||
1090 | .name = "atmel_usart", | ||
1091 | .id = 1, | ||
1092 | .dev = { | ||
1093 | .dma_mask = &uart0_dmamask, | ||
1094 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1095 | .platform_data = &uart0_data, | ||
1096 | }, | ||
1097 | .resource = uart0_resources, | ||
1098 | .num_resources = ARRAY_SIZE(uart0_resources), | ||
1099 | }; | ||
1100 | |||
1101 | static inline void configure_usart0_pins(unsigned pins) | ||
1102 | { | ||
1103 | at91_set_A_periph(AT91_PIN_PA22, 1); /* TXD0 */ | ||
1104 | at91_set_A_periph(AT91_PIN_PA23, 0); /* RXD0 */ | ||
1105 | |||
1106 | if (pins & ATMEL_UART_RTS) | ||
1107 | at91_set_A_periph(AT91_PIN_PA24, 0); /* RTS0 */ | ||
1108 | if (pins & ATMEL_UART_CTS) | ||
1109 | at91_set_A_periph(AT91_PIN_PA25, 0); /* CTS0 */ | ||
1110 | } | ||
1111 | |||
1112 | static struct resource uart1_resources[] = { | ||
1113 | [0] = { | ||
1114 | .start = AT91CAP9_BASE_US1, | ||
1115 | .end = AT91CAP9_BASE_US1 + SZ_16K - 1, | ||
1116 | .flags = IORESOURCE_MEM, | ||
1117 | }, | ||
1118 | [1] = { | ||
1119 | .start = AT91CAP9_ID_US1, | ||
1120 | .end = AT91CAP9_ID_US1, | ||
1121 | .flags = IORESOURCE_IRQ, | ||
1122 | }, | ||
1123 | }; | ||
1124 | |||
1125 | static struct atmel_uart_data uart1_data = { | ||
1126 | .use_dma_tx = 1, | ||
1127 | .use_dma_rx = 1, | ||
1128 | }; | ||
1129 | |||
1130 | static u64 uart1_dmamask = DMA_BIT_MASK(32); | ||
1131 | |||
1132 | static struct platform_device at91cap9_uart1_device = { | ||
1133 | .name = "atmel_usart", | ||
1134 | .id = 2, | ||
1135 | .dev = { | ||
1136 | .dma_mask = &uart1_dmamask, | ||
1137 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1138 | .platform_data = &uart1_data, | ||
1139 | }, | ||
1140 | .resource = uart1_resources, | ||
1141 | .num_resources = ARRAY_SIZE(uart1_resources), | ||
1142 | }; | ||
1143 | |||
1144 | static inline void configure_usart1_pins(unsigned pins) | ||
1145 | { | ||
1146 | at91_set_A_periph(AT91_PIN_PD0, 1); /* TXD1 */ | ||
1147 | at91_set_A_periph(AT91_PIN_PD1, 0); /* RXD1 */ | ||
1148 | |||
1149 | if (pins & ATMEL_UART_RTS) | ||
1150 | at91_set_B_periph(AT91_PIN_PD7, 0); /* RTS1 */ | ||
1151 | if (pins & ATMEL_UART_CTS) | ||
1152 | at91_set_B_periph(AT91_PIN_PD8, 0); /* CTS1 */ | ||
1153 | } | ||
1154 | |||
1155 | static struct resource uart2_resources[] = { | ||
1156 | [0] = { | ||
1157 | .start = AT91CAP9_BASE_US2, | ||
1158 | .end = AT91CAP9_BASE_US2 + SZ_16K - 1, | ||
1159 | .flags = IORESOURCE_MEM, | ||
1160 | }, | ||
1161 | [1] = { | ||
1162 | .start = AT91CAP9_ID_US2, | ||
1163 | .end = AT91CAP9_ID_US2, | ||
1164 | .flags = IORESOURCE_IRQ, | ||
1165 | }, | ||
1166 | }; | ||
1167 | |||
1168 | static struct atmel_uart_data uart2_data = { | ||
1169 | .use_dma_tx = 1, | ||
1170 | .use_dma_rx = 1, | ||
1171 | }; | ||
1172 | |||
1173 | static u64 uart2_dmamask = DMA_BIT_MASK(32); | ||
1174 | |||
1175 | static struct platform_device at91cap9_uart2_device = { | ||
1176 | .name = "atmel_usart", | ||
1177 | .id = 3, | ||
1178 | .dev = { | ||
1179 | .dma_mask = &uart2_dmamask, | ||
1180 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1181 | .platform_data = &uart2_data, | ||
1182 | }, | ||
1183 | .resource = uart2_resources, | ||
1184 | .num_resources = ARRAY_SIZE(uart2_resources), | ||
1185 | }; | ||
1186 | |||
1187 | static inline void configure_usart2_pins(unsigned pins) | ||
1188 | { | ||
1189 | at91_set_A_periph(AT91_PIN_PD2, 1); /* TXD2 */ | ||
1190 | at91_set_A_periph(AT91_PIN_PD3, 0); /* RXD2 */ | ||
1191 | |||
1192 | if (pins & ATMEL_UART_RTS) | ||
1193 | at91_set_B_periph(AT91_PIN_PD5, 0); /* RTS2 */ | ||
1194 | if (pins & ATMEL_UART_CTS) | ||
1195 | at91_set_B_periph(AT91_PIN_PD6, 0); /* CTS2 */ | ||
1196 | } | ||
1197 | |||
1198 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | ||
1199 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1200 | |||
1201 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | ||
1202 | { | ||
1203 | struct platform_device *pdev; | ||
1204 | struct atmel_uart_data *pdata; | ||
1205 | |||
1206 | switch (id) { | ||
1207 | case 0: /* DBGU */ | ||
1208 | pdev = &at91cap9_dbgu_device; | ||
1209 | configure_dbgu_pins(); | ||
1210 | break; | ||
1211 | case AT91CAP9_ID_US0: | ||
1212 | pdev = &at91cap9_uart0_device; | ||
1213 | configure_usart0_pins(pins); | ||
1214 | break; | ||
1215 | case AT91CAP9_ID_US1: | ||
1216 | pdev = &at91cap9_uart1_device; | ||
1217 | configure_usart1_pins(pins); | ||
1218 | break; | ||
1219 | case AT91CAP9_ID_US2: | ||
1220 | pdev = &at91cap9_uart2_device; | ||
1221 | configure_usart2_pins(pins); | ||
1222 | break; | ||
1223 | default: | ||
1224 | return; | ||
1225 | } | ||
1226 | pdata = pdev->dev.platform_data; | ||
1227 | pdata->num = portnr; /* update to mapped ID */ | ||
1228 | |||
1229 | if (portnr < ATMEL_MAX_UART) | ||
1230 | at91_uarts[portnr] = pdev; | ||
1231 | } | ||
1232 | |||
1233 | void __init at91_set_serial_console(unsigned portnr) | ||
1234 | { | ||
1235 | if (portnr < ATMEL_MAX_UART) { | ||
1236 | atmel_default_console_device = at91_uarts[portnr]; | ||
1237 | at91cap9_set_console_clock(at91_uarts[portnr]->id); | ||
1238 | } | ||
1239 | } | ||
1240 | |||
1241 | void __init at91_add_device_serial(void) | ||
1242 | { | ||
1243 | int i; | ||
1244 | |||
1245 | for (i = 0; i < ATMEL_MAX_UART; i++) { | ||
1246 | if (at91_uarts[i]) | ||
1247 | platform_device_register(at91_uarts[i]); | ||
1248 | } | ||
1249 | |||
1250 | if (!atmel_default_console_device) | ||
1251 | printk(KERN_INFO "AT91: No default serial console defined.\n"); | ||
1252 | } | ||
1253 | #else | ||
1254 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} | ||
1255 | void __init at91_set_serial_console(unsigned portnr) {} | ||
1256 | void __init at91_add_device_serial(void) {} | ||
1257 | #endif | ||
1258 | |||
1259 | |||
1260 | /* -------------------------------------------------------------------- */ | ||
1261 | /* | ||
1262 | * These devices are always present and don't need any board-specific | ||
1263 | * setup. | ||
1264 | */ | ||
1265 | static int __init at91_add_standard_devices(void) | ||
1266 | { | ||
1267 | at91_add_device_rtt(); | ||
1268 | at91_add_device_watchdog(); | ||
1269 | at91_add_device_tc(); | ||
1270 | return 0; | ||
1271 | } | ||
1272 | |||
1273 | arch_initcall(at91_add_standard_devices); | ||
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index dd6e2de13420..0df1045311e4 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -295,7 +295,7 @@ static void at91rm9200_idle(void) | |||
295 | * Disable the processor clock. The processor will be automatically | 295 | * Disable the processor clock. The processor will be automatically |
296 | * re-enabled by an interrupt or by a reset. | 296 | * re-enabled by an interrupt or by a reset. |
297 | */ | 297 | */ |
298 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | 298 | at91_pmc_write(AT91_PMC_SCDR, AT91_PMC_PCK); |
299 | } | 299 | } |
300 | 300 | ||
301 | static void at91rm9200_restart(char mode, const char *cmd) | 301 | static void at91rm9200_restart(char mode, const char *cmd) |
@@ -303,8 +303,8 @@ static void at91rm9200_restart(char mode, const char *cmd) | |||
303 | /* | 303 | /* |
304 | * Perform a hardware reset with the use of the Watchdog timer. | 304 | * Perform a hardware reset with the use of the Watchdog timer. |
305 | */ | 305 | */ |
306 | at91_sys_write(AT91_ST_WDMR, AT91_ST_RSTEN | AT91_ST_EXTEN | 1); | 306 | at91_st_write(AT91_ST_WDMR, AT91_ST_RSTEN | AT91_ST_EXTEN | 1); |
307 | at91_sys_write(AT91_ST_CR, AT91_ST_WDRST); | 307 | at91_st_write(AT91_ST_CR, AT91_ST_WDRST); |
308 | } | 308 | } |
309 | 309 | ||
310 | /* -------------------------------------------------------------------- | 310 | /* -------------------------------------------------------------------- |
@@ -319,6 +319,8 @@ static void __init at91rm9200_map_io(void) | |||
319 | 319 | ||
320 | static void __init at91rm9200_ioremap_registers(void) | 320 | static void __init at91rm9200_ioremap_registers(void) |
321 | { | 321 | { |
322 | at91rm9200_ioremap_st(AT91RM9200_BASE_ST); | ||
323 | at91_ioremap_ramc(0, AT91RM9200_BASE_MC, 256); | ||
322 | } | 324 | } |
323 | 325 | ||
324 | static void __init at91rm9200_initialize(void) | 326 | static void __init at91rm9200_initialize(void) |
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 18bacec2b094..640520c04c46 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <mach/board.h> | 21 | #include <mach/board.h> |
22 | #include <mach/at91rm9200.h> | 22 | #include <mach/at91rm9200.h> |
23 | #include <mach/at91rm9200_mc.h> | 23 | #include <mach/at91rm9200_mc.h> |
24 | #include <mach/at91_ramc.h> | ||
24 | 25 | ||
25 | #include "generic.h" | 26 | #include "generic.h" |
26 | 27 | ||
@@ -241,15 +242,15 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
241 | data->chipselect = 4; /* can only use EBI ChipSelect 4 */ | 242 | data->chipselect = 4; /* can only use EBI ChipSelect 4 */ |
242 | 243 | ||
243 | /* CF takes over CS4, CS5, CS6 */ | 244 | /* CF takes over CS4, CS5, CS6 */ |
244 | csa = at91_sys_read(AT91_EBI_CSA); | 245 | csa = at91_ramc_read(0, AT91_EBI_CSA); |
245 | at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH); | 246 | at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH); |
246 | 247 | ||
247 | /* | 248 | /* |
248 | * Static memory controller timing adjustments. | 249 | * Static memory controller timing adjustments. |
249 | * REVISIT: these timings are in terms of MCK cycles, so | 250 | * REVISIT: these timings are in terms of MCK cycles, so |
250 | * when MCK changes (cpufreq etc) so must these values... | 251 | * when MCK changes (cpufreq etc) so must these values... |
251 | */ | 252 | */ |
252 | at91_sys_write(AT91_SMC_CSR(4), | 253 | at91_ramc_write(0, AT91_SMC_CSR(4), |
253 | AT91_SMC_ACSS_STD | 254 | AT91_SMC_ACSS_STD |
254 | | AT91_SMC_DBW_16 | 255 | | AT91_SMC_DBW_16 |
255 | | AT91_SMC_BAT | 256 | | AT91_SMC_BAT |
@@ -407,11 +408,11 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
407 | return; | 408 | return; |
408 | 409 | ||
409 | /* enable the address range of CS3 */ | 410 | /* enable the address range of CS3 */ |
410 | csa = at91_sys_read(AT91_EBI_CSA); | 411 | csa = at91_ramc_read(0, AT91_EBI_CSA); |
411 | at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA); | 412 | at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA); |
412 | 413 | ||
413 | /* set the bus interface characteristics */ | 414 | /* set the bus interface characteristics */ |
414 | at91_sys_write(AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN | 415 | at91_ramc_write(0, AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN |
415 | | AT91_SMC_NWS_(5) | 416 | | AT91_SMC_NWS_(5) |
416 | | AT91_SMC_TDF_(1) | 417 | | AT91_SMC_TDF_(1) |
417 | | AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */ | 418 | | AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */ |
@@ -1114,7 +1115,6 @@ static inline void configure_usart3_pins(unsigned pins) | |||
1114 | } | 1115 | } |
1115 | 1116 | ||
1116 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1117 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1117 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1118 | 1118 | ||
1119 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1119 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
1120 | { | 1120 | { |
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c index a028cdf8f974..dd7f782b0b91 100644 --- a/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c | |||
@@ -43,9 +43,9 @@ static inline unsigned long read_CRTR(void) | |||
43 | { | 43 | { |
44 | unsigned long x1, x2; | 44 | unsigned long x1, x2; |
45 | 45 | ||
46 | x1 = at91_sys_read(AT91_ST_CRTR); | 46 | x1 = at91_st_read(AT91_ST_CRTR); |
47 | do { | 47 | do { |
48 | x2 = at91_sys_read(AT91_ST_CRTR); | 48 | x2 = at91_st_read(AT91_ST_CRTR); |
49 | if (x1 == x2) | 49 | if (x1 == x2) |
50 | break; | 50 | break; |
51 | x1 = x2; | 51 | x1 = x2; |
@@ -58,7 +58,7 @@ static inline unsigned long read_CRTR(void) | |||
58 | */ | 58 | */ |
59 | static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id) | 59 | static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id) |
60 | { | 60 | { |
61 | u32 sr = at91_sys_read(AT91_ST_SR) & irqmask; | 61 | u32 sr = at91_st_read(AT91_ST_SR) & irqmask; |
62 | 62 | ||
63 | /* | 63 | /* |
64 | * irqs should be disabled here, but as the irq is shared they are only | 64 | * irqs should be disabled here, but as the irq is shared they are only |
@@ -110,22 +110,22 @@ static void | |||
110 | clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) | 110 | clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) |
111 | { | 111 | { |
112 | /* Disable and flush pending timer interrupts */ | 112 | /* Disable and flush pending timer interrupts */ |
113 | at91_sys_write(AT91_ST_IDR, AT91_ST_PITS | AT91_ST_ALMS); | 113 | at91_st_write(AT91_ST_IDR, AT91_ST_PITS | AT91_ST_ALMS); |
114 | (void) at91_sys_read(AT91_ST_SR); | 114 | at91_st_read(AT91_ST_SR); |
115 | 115 | ||
116 | last_crtr = read_CRTR(); | 116 | last_crtr = read_CRTR(); |
117 | switch (mode) { | 117 | switch (mode) { |
118 | case CLOCK_EVT_MODE_PERIODIC: | 118 | case CLOCK_EVT_MODE_PERIODIC: |
119 | /* PIT for periodic irqs; fixed rate of 1/HZ */ | 119 | /* PIT for periodic irqs; fixed rate of 1/HZ */ |
120 | irqmask = AT91_ST_PITS; | 120 | irqmask = AT91_ST_PITS; |
121 | at91_sys_write(AT91_ST_PIMR, RM9200_TIMER_LATCH); | 121 | at91_st_write(AT91_ST_PIMR, RM9200_TIMER_LATCH); |
122 | break; | 122 | break; |
123 | case CLOCK_EVT_MODE_ONESHOT: | 123 | case CLOCK_EVT_MODE_ONESHOT: |
124 | /* ALM for oneshot irqs, set by next_event() | 124 | /* ALM for oneshot irqs, set by next_event() |
125 | * before 32 seconds have passed | 125 | * before 32 seconds have passed |
126 | */ | 126 | */ |
127 | irqmask = AT91_ST_ALMS; | 127 | irqmask = AT91_ST_ALMS; |
128 | at91_sys_write(AT91_ST_RTAR, last_crtr); | 128 | at91_st_write(AT91_ST_RTAR, last_crtr); |
129 | break; | 129 | break; |
130 | case CLOCK_EVT_MODE_SHUTDOWN: | 130 | case CLOCK_EVT_MODE_SHUTDOWN: |
131 | case CLOCK_EVT_MODE_UNUSED: | 131 | case CLOCK_EVT_MODE_UNUSED: |
@@ -133,7 +133,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) | |||
133 | irqmask = 0; | 133 | irqmask = 0; |
134 | break; | 134 | break; |
135 | } | 135 | } |
136 | at91_sys_write(AT91_ST_IER, irqmask); | 136 | at91_st_write(AT91_ST_IER, irqmask); |
137 | } | 137 | } |
138 | 138 | ||
139 | static int | 139 | static int |
@@ -156,12 +156,12 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) | |||
156 | alm = read_CRTR(); | 156 | alm = read_CRTR(); |
157 | 157 | ||
158 | /* Cancel any pending alarm; flush any pending IRQ */ | 158 | /* Cancel any pending alarm; flush any pending IRQ */ |
159 | at91_sys_write(AT91_ST_RTAR, alm); | 159 | at91_st_write(AT91_ST_RTAR, alm); |
160 | (void) at91_sys_read(AT91_ST_SR); | 160 | at91_st_read(AT91_ST_SR); |
161 | 161 | ||
162 | /* Schedule alarm by writing RTAR. */ | 162 | /* Schedule alarm by writing RTAR. */ |
163 | alm += delta; | 163 | alm += delta; |
164 | at91_sys_write(AT91_ST_RTAR, alm); | 164 | at91_st_write(AT91_ST_RTAR, alm); |
165 | 165 | ||
166 | return status; | 166 | return status; |
167 | } | 167 | } |
@@ -175,15 +175,24 @@ static struct clock_event_device clkevt = { | |||
175 | .set_mode = clkevt32k_mode, | 175 | .set_mode = clkevt32k_mode, |
176 | }; | 176 | }; |
177 | 177 | ||
178 | void __iomem *at91_st_base; | ||
179 | |||
180 | void __init at91rm9200_ioremap_st(u32 addr) | ||
181 | { | ||
182 | at91_st_base = ioremap(addr, 256); | ||
183 | if (!at91_st_base) | ||
184 | panic("Impossible to ioremap ST\n"); | ||
185 | } | ||
186 | |||
178 | /* | 187 | /* |
179 | * ST (system timer) module supports both clockevents and clocksource. | 188 | * ST (system timer) module supports both clockevents and clocksource. |
180 | */ | 189 | */ |
181 | void __init at91rm9200_timer_init(void) | 190 | void __init at91rm9200_timer_init(void) |
182 | { | 191 | { |
183 | /* Disable all timer interrupts, and clear any pending ones */ | 192 | /* Disable all timer interrupts, and clear any pending ones */ |
184 | at91_sys_write(AT91_ST_IDR, | 193 | at91_st_write(AT91_ST_IDR, |
185 | AT91_ST_PITS | AT91_ST_WDOVF | AT91_ST_RTTINC | AT91_ST_ALMS); | 194 | AT91_ST_PITS | AT91_ST_WDOVF | AT91_ST_RTTINC | AT91_ST_ALMS); |
186 | (void) at91_sys_read(AT91_ST_SR); | 195 | at91_st_read(AT91_ST_SR); |
187 | 196 | ||
188 | /* Make IRQs happen for the system timer */ | 197 | /* Make IRQs happen for the system timer */ |
189 | setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq); | 198 | setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq); |
@@ -192,7 +201,7 @@ void __init at91rm9200_timer_init(void) | |||
192 | * directly for the clocksource and all clockevents, after adjusting | 201 | * directly for the clocksource and all clockevents, after adjusting |
193 | * its prescaler from the 1 Hz default. | 202 | * its prescaler from the 1 Hz default. |
194 | */ | 203 | */ |
195 | at91_sys_write(AT91_ST_RTMR, 1); | 204 | at91_st_write(AT91_ST_RTMR, 1); |
196 | 205 | ||
197 | /* Setup timer clockevent, with minimum of two ticks (important!!) */ | 206 | /* Setup timer clockevent, with minimum of two ticks (important!!) */ |
198 | clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); | 207 | clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); |
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 9ac8c6fe3363..4ade265be805 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -310,34 +310,27 @@ static void __init at91sam9xe_map_io(void) | |||
310 | 310 | ||
311 | static void __init at91sam9260_map_io(void) | 311 | static void __init at91sam9260_map_io(void) |
312 | { | 312 | { |
313 | if (cpu_is_at91sam9xe()) { | 313 | if (cpu_is_at91sam9xe()) |
314 | at91sam9xe_map_io(); | 314 | at91sam9xe_map_io(); |
315 | } else if (cpu_is_at91sam9g20()) { | 315 | else if (cpu_is_at91sam9g20()) |
316 | at91_init_sram(0, AT91SAM9G20_SRAM0_BASE, AT91SAM9G20_SRAM0_SIZE); | 316 | at91_init_sram(0, AT91SAM9G20_SRAM_BASE, AT91SAM9G20_SRAM_SIZE); |
317 | at91_init_sram(1, AT91SAM9G20_SRAM1_BASE, AT91SAM9G20_SRAM1_SIZE); | 317 | else |
318 | } else { | 318 | at91_init_sram(0, AT91SAM9260_SRAM_BASE, AT91SAM9260_SRAM_SIZE); |
319 | at91_init_sram(0, AT91SAM9260_SRAM0_BASE, AT91SAM9260_SRAM0_SIZE); | ||
320 | at91_init_sram(1, AT91SAM9260_SRAM1_BASE, AT91SAM9260_SRAM1_SIZE); | ||
321 | } | ||
322 | } | 319 | } |
323 | 320 | ||
324 | static void __init at91sam9260_ioremap_registers(void) | 321 | static void __init at91sam9260_ioremap_registers(void) |
325 | { | 322 | { |
326 | at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); | 323 | at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); |
327 | at91_ioremap_rstc(AT91SAM9260_BASE_RSTC); | 324 | at91_ioremap_rstc(AT91SAM9260_BASE_RSTC); |
325 | at91_ioremap_ramc(0, AT91SAM9260_BASE_SDRAMC, 512); | ||
328 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); | 326 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); |
329 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); | 327 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); |
330 | } | 328 | at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX); |
331 | |||
332 | static void at91sam9260_idle(void) | ||
333 | { | ||
334 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
335 | cpu_do_idle(); | ||
336 | } | 329 | } |
337 | 330 | ||
338 | static void __init at91sam9260_initialize(void) | 331 | static void __init at91sam9260_initialize(void) |
339 | { | 332 | { |
340 | arm_pm_idle = at91sam9260_idle; | 333 | arm_pm_idle = at91sam9_idle; |
341 | arm_pm_restart = at91sam9_alt_restart; | 334 | arm_pm_restart = at91sam9_alt_restart; |
342 | at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) | 335 | at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) |
343 | | (1 << AT91SAM9260_ID_IRQ2); | 336 | | (1 << AT91SAM9260_ID_IRQ2); |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 642ccb6d26b2..df487ce83c5e 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <mach/cpu.h> | 21 | #include <mach/cpu.h> |
22 | #include <mach/at91sam9260.h> | 22 | #include <mach/at91sam9260.h> |
23 | #include <mach/at91sam9260_matrix.h> | 23 | #include <mach/at91sam9260_matrix.h> |
24 | #include <mach/at91_matrix.h> | ||
24 | #include <mach/at91sam9_smc.h> | 25 | #include <mach/at91sam9_smc.h> |
25 | 26 | ||
26 | #include "generic.h" | 27 | #include "generic.h" |
@@ -422,8 +423,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
422 | if (!data) | 423 | if (!data) |
423 | return; | 424 | return; |
424 | 425 | ||
425 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 426 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
426 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); | 427 | at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); |
427 | 428 | ||
428 | /* enable pin */ | 429 | /* enable pin */ |
429 | if (gpio_is_valid(data->enable_pin)) | 430 | if (gpio_is_valid(data->enable_pin)) |
@@ -717,18 +718,42 @@ static struct resource rtt_resources[] = { | |||
717 | .start = AT91SAM9260_BASE_RTT, | 718 | .start = AT91SAM9260_BASE_RTT, |
718 | .end = AT91SAM9260_BASE_RTT + SZ_16 - 1, | 719 | .end = AT91SAM9260_BASE_RTT + SZ_16 - 1, |
719 | .flags = IORESOURCE_MEM, | 720 | .flags = IORESOURCE_MEM, |
720 | } | 721 | }, { |
722 | .flags = IORESOURCE_MEM, | ||
723 | }, | ||
721 | }; | 724 | }; |
722 | 725 | ||
723 | static struct platform_device at91sam9260_rtt_device = { | 726 | static struct platform_device at91sam9260_rtt_device = { |
724 | .name = "at91_rtt", | 727 | .name = "at91_rtt", |
725 | .id = 0, | 728 | .id = 0, |
726 | .resource = rtt_resources, | 729 | .resource = rtt_resources, |
727 | .num_resources = ARRAY_SIZE(rtt_resources), | ||
728 | }; | 730 | }; |
729 | 731 | ||
732 | |||
733 | #if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) | ||
734 | static void __init at91_add_device_rtt_rtc(void) | ||
735 | { | ||
736 | at91sam9260_rtt_device.name = "rtc-at91sam9"; | ||
737 | /* | ||
738 | * The second resource is needed: | ||
739 | * GPBR will serve as the storage for RTC time offset | ||
740 | */ | ||
741 | at91sam9260_rtt_device.num_resources = 2; | ||
742 | rtt_resources[1].start = AT91SAM9260_BASE_GPBR + | ||
743 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | ||
744 | rtt_resources[1].end = rtt_resources[1].start + 3; | ||
745 | } | ||
746 | #else | ||
747 | static void __init at91_add_device_rtt_rtc(void) | ||
748 | { | ||
749 | /* Only one resource is needed: RTT not used as RTC */ | ||
750 | at91sam9260_rtt_device.num_resources = 1; | ||
751 | } | ||
752 | #endif | ||
753 | |||
730 | static void __init at91_add_device_rtt(void) | 754 | static void __init at91_add_device_rtt(void) |
731 | { | 755 | { |
756 | at91_add_device_rtt_rtc(); | ||
732 | platform_device_register(&at91sam9260_rtt_device); | 757 | platform_device_register(&at91sam9260_rtt_device); |
733 | } | 758 | } |
734 | 759 | ||
@@ -1139,7 +1164,6 @@ static inline void configure_usart5_pins(void) | |||
1139 | } | 1164 | } |
1140 | 1165 | ||
1141 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1166 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1142 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1143 | 1167 | ||
1144 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1168 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
1145 | { | 1169 | { |
@@ -1265,7 +1289,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
1265 | if (!data) | 1289 | if (!data) |
1266 | return; | 1290 | return; |
1267 | 1291 | ||
1268 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 1292 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
1269 | 1293 | ||
1270 | switch (data->chipselect) { | 1294 | switch (data->chipselect) { |
1271 | case 4: | 1295 | case 4: |
@@ -1288,7 +1312,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
1288 | return; | 1312 | return; |
1289 | } | 1313 | } |
1290 | 1314 | ||
1291 | at91_sys_write(AT91_MATRIX_EBICSA, csa); | 1315 | at91_matrix_write(AT91_MATRIX_EBICSA, csa); |
1292 | 1316 | ||
1293 | if (gpio_is_valid(data->rst_pin)) { | 1317 | if (gpio_is_valid(data->rst_pin)) { |
1294 | at91_set_multi_drive(data->rst_pin, 0); | 1318 | at91_set_multi_drive(data->rst_pin, 0); |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index ab76868f01f5..684c5dfd92ac 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
@@ -283,19 +283,15 @@ static void __init at91sam9261_ioremap_registers(void) | |||
283 | { | 283 | { |
284 | at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); | 284 | at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); |
285 | at91_ioremap_rstc(AT91SAM9261_BASE_RSTC); | 285 | at91_ioremap_rstc(AT91SAM9261_BASE_RSTC); |
286 | at91_ioremap_ramc(0, AT91SAM9261_BASE_SDRAMC, 512); | ||
286 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); | 287 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); |
287 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); | 288 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); |
288 | } | 289 | at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX); |
289 | |||
290 | static void at91sam9261_idle(void) | ||
291 | { | ||
292 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
293 | cpu_do_idle(); | ||
294 | } | 290 | } |
295 | 291 | ||
296 | static void __init at91sam9261_initialize(void) | 292 | static void __init at91sam9261_initialize(void) |
297 | { | 293 | { |
298 | arm_pm_idle = at91sam9261_idle; | 294 | arm_pm_idle = at91sam9_idle; |
299 | arm_pm_restart = at91sam9_alt_restart; | 295 | arm_pm_restart = at91sam9_alt_restart; |
300 | at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1) | 296 | at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1) |
301 | | (1 << AT91SAM9261_ID_IRQ2); | 297 | | (1 << AT91SAM9261_ID_IRQ2); |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index fc59cbdb0e3c..3bd10ce4854e 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <mach/board.h> | 24 | #include <mach/board.h> |
25 | #include <mach/at91sam9261.h> | 25 | #include <mach/at91sam9261.h> |
26 | #include <mach/at91sam9261_matrix.h> | 26 | #include <mach/at91sam9261_matrix.h> |
27 | #include <mach/at91_matrix.h> | ||
27 | #include <mach/at91sam9_smc.h> | 28 | #include <mach/at91sam9_smc.h> |
28 | 29 | ||
29 | #include "generic.h" | 30 | #include "generic.h" |
@@ -236,8 +237,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
236 | if (!data) | 237 | if (!data) |
237 | return; | 238 | return; |
238 | 239 | ||
239 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 240 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
240 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); | 241 | at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); |
241 | 242 | ||
242 | /* enable pin */ | 243 | /* enable pin */ |
243 | if (gpio_is_valid(data->enable_pin)) | 244 | if (gpio_is_valid(data->enable_pin)) |
@@ -603,6 +604,8 @@ static struct resource rtt_resources[] = { | |||
603 | .start = AT91SAM9261_BASE_RTT, | 604 | .start = AT91SAM9261_BASE_RTT, |
604 | .end = AT91SAM9261_BASE_RTT + SZ_16 - 1, | 605 | .end = AT91SAM9261_BASE_RTT + SZ_16 - 1, |
605 | .flags = IORESOURCE_MEM, | 606 | .flags = IORESOURCE_MEM, |
607 | }, { | ||
608 | .flags = IORESOURCE_MEM, | ||
606 | } | 609 | } |
607 | }; | 610 | }; |
608 | 611 | ||
@@ -610,11 +613,32 @@ static struct platform_device at91sam9261_rtt_device = { | |||
610 | .name = "at91_rtt", | 613 | .name = "at91_rtt", |
611 | .id = 0, | 614 | .id = 0, |
612 | .resource = rtt_resources, | 615 | .resource = rtt_resources, |
613 | .num_resources = ARRAY_SIZE(rtt_resources), | ||
614 | }; | 616 | }; |
615 | 617 | ||
618 | #if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) | ||
619 | static void __init at91_add_device_rtt_rtc(void) | ||
620 | { | ||
621 | at91sam9261_rtt_device.name = "rtc-at91sam9"; | ||
622 | /* | ||
623 | * The second resource is needed: | ||
624 | * GPBR will serve as the storage for RTC time offset | ||
625 | */ | ||
626 | at91sam9261_rtt_device.num_resources = 2; | ||
627 | rtt_resources[1].start = AT91SAM9261_BASE_GPBR + | ||
628 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | ||
629 | rtt_resources[1].end = rtt_resources[1].start + 3; | ||
630 | } | ||
631 | #else | ||
632 | static void __init at91_add_device_rtt_rtc(void) | ||
633 | { | ||
634 | /* Only one resource is needed: RTT not used as RTC */ | ||
635 | at91sam9261_rtt_device.num_resources = 1; | ||
636 | } | ||
637 | #endif | ||
638 | |||
616 | static void __init at91_add_device_rtt(void) | 639 | static void __init at91_add_device_rtt(void) |
617 | { | 640 | { |
641 | at91_add_device_rtt_rtc(); | ||
618 | platform_device_register(&at91sam9261_rtt_device); | 642 | platform_device_register(&at91sam9261_rtt_device); |
619 | } | 643 | } |
620 | 644 | ||
@@ -991,7 +1015,6 @@ static inline void configure_usart2_pins(unsigned pins) | |||
991 | } | 1015 | } |
992 | 1016 | ||
993 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1017 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
994 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
995 | 1018 | ||
996 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1019 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
997 | { | 1020 | { |
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 247ab633abcc..0b4fa5a7f685 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -303,20 +303,17 @@ static void __init at91sam9263_ioremap_registers(void) | |||
303 | { | 303 | { |
304 | at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); | 304 | at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); |
305 | at91_ioremap_rstc(AT91SAM9263_BASE_RSTC); | 305 | at91_ioremap_rstc(AT91SAM9263_BASE_RSTC); |
306 | at91_ioremap_ramc(0, AT91SAM9263_BASE_SDRAMC0, 512); | ||
307 | at91_ioremap_ramc(1, AT91SAM9263_BASE_SDRAMC1, 512); | ||
306 | at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); | 308 | at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); |
307 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); | 309 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); |
308 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); | 310 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); |
309 | } | 311 | at91_ioremap_matrix(AT91SAM9263_BASE_MATRIX); |
310 | |||
311 | static void at91sam9263_idle(void) | ||
312 | { | ||
313 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
314 | cpu_do_idle(); | ||
315 | } | 312 | } |
316 | 313 | ||
317 | static void __init at91sam9263_initialize(void) | 314 | static void __init at91sam9263_initialize(void) |
318 | { | 315 | { |
319 | arm_pm_idle = at91sam9263_idle; | 316 | arm_pm_idle = at91sam9_idle; |
320 | arm_pm_restart = at91sam9_alt_restart; | 317 | arm_pm_restart = at91sam9_alt_restart; |
321 | at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1); | 318 | at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1); |
322 | 319 | ||
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 7b46b2787022..7792de5b83d4 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <mach/board.h> | 23 | #include <mach/board.h> |
24 | #include <mach/at91sam9263.h> | 24 | #include <mach/at91sam9263.h> |
25 | #include <mach/at91sam9263_matrix.h> | 25 | #include <mach/at91sam9263_matrix.h> |
26 | #include <mach/at91_matrix.h> | ||
26 | #include <mach/at91sam9_smc.h> | 27 | #include <mach/at91sam9_smc.h> |
27 | 28 | ||
28 | #include "generic.h" | 29 | #include "generic.h" |
@@ -409,7 +410,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
409 | * we assume SMC timings are configured by board code, | 410 | * we assume SMC timings are configured by board code, |
410 | * except True IDE where timings are controlled by driver | 411 | * except True IDE where timings are controlled by driver |
411 | */ | 412 | */ |
412 | ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA); | 413 | ebi0_csa = at91_matrix_read(AT91_MATRIX_EBI0CSA); |
413 | switch (data->chipselect) { | 414 | switch (data->chipselect) { |
414 | case 4: | 415 | case 4: |
415 | at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */ | 416 | at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */ |
@@ -428,7 +429,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
428 | data->chipselect); | 429 | data->chipselect); |
429 | return; | 430 | return; |
430 | } | 431 | } |
431 | at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa); | 432 | at91_matrix_write(AT91_MATRIX_EBI0CSA, ebi0_csa); |
432 | 433 | ||
433 | if (gpio_is_valid(data->det_pin)) { | 434 | if (gpio_is_valid(data->det_pin)) { |
434 | at91_set_gpio_input(data->det_pin, 1); | 435 | at91_set_gpio_input(data->det_pin, 1); |
@@ -496,8 +497,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
496 | if (!data) | 497 | if (!data) |
497 | return; | 498 | return; |
498 | 499 | ||
499 | csa = at91_sys_read(AT91_MATRIX_EBI0CSA); | 500 | csa = at91_matrix_read(AT91_MATRIX_EBI0CSA); |
500 | at91_sys_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA); | 501 | at91_matrix_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA); |
501 | 502 | ||
502 | /* enable pin */ | 503 | /* enable pin */ |
503 | if (gpio_is_valid(data->enable_pin)) | 504 | if (gpio_is_valid(data->enable_pin)) |
@@ -891,7 +892,8 @@ static struct platform_device at91sam9263_isi_device = { | |||
891 | .num_resources = ARRAY_SIZE(isi_resources), | 892 | .num_resources = ARRAY_SIZE(isi_resources), |
892 | }; | 893 | }; |
893 | 894 | ||
894 | void __init at91_add_device_isi(void) | 895 | void __init at91_add_device_isi(struct isi_platform_data *data, |
896 | bool use_pck_as_mck) | ||
895 | { | 897 | { |
896 | at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */ | 898 | at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */ |
897 | at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */ | 899 | at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */ |
@@ -904,14 +906,20 @@ void __init at91_add_device_isi(void) | |||
904 | at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */ | 906 | at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */ |
905 | at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */ | 907 | at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */ |
906 | at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */ | 908 | at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */ |
907 | at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */ | ||
908 | at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */ | 909 | at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */ |
909 | at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */ | 910 | at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */ |
910 | at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */ | 911 | at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */ |
911 | at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */ | 912 | at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */ |
913 | |||
914 | if (use_pck_as_mck) { | ||
915 | at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */ | ||
916 | |||
917 | /* TODO: register the PCK for ISI_MCK and set its parent */ | ||
918 | } | ||
912 | } | 919 | } |
913 | #else | 920 | #else |
914 | void __init at91_add_device_isi(void) {} | 921 | void __init at91_add_device_isi(struct isi_platform_data *data, |
922 | bool use_pck_as_mck) {} | ||
915 | #endif | 923 | #endif |
916 | 924 | ||
917 | 925 | ||
@@ -959,6 +967,8 @@ static struct resource rtt0_resources[] = { | |||
959 | .start = AT91SAM9263_BASE_RTT0, | 967 | .start = AT91SAM9263_BASE_RTT0, |
960 | .end = AT91SAM9263_BASE_RTT0 + SZ_16 - 1, | 968 | .end = AT91SAM9263_BASE_RTT0 + SZ_16 - 1, |
961 | .flags = IORESOURCE_MEM, | 969 | .flags = IORESOURCE_MEM, |
970 | }, { | ||
971 | .flags = IORESOURCE_MEM, | ||
962 | } | 972 | } |
963 | }; | 973 | }; |
964 | 974 | ||
@@ -966,7 +976,6 @@ static struct platform_device at91sam9263_rtt0_device = { | |||
966 | .name = "at91_rtt", | 976 | .name = "at91_rtt", |
967 | .id = 0, | 977 | .id = 0, |
968 | .resource = rtt0_resources, | 978 | .resource = rtt0_resources, |
969 | .num_resources = ARRAY_SIZE(rtt0_resources), | ||
970 | }; | 979 | }; |
971 | 980 | ||
972 | static struct resource rtt1_resources[] = { | 981 | static struct resource rtt1_resources[] = { |
@@ -974,6 +983,8 @@ static struct resource rtt1_resources[] = { | |||
974 | .start = AT91SAM9263_BASE_RTT1, | 983 | .start = AT91SAM9263_BASE_RTT1, |
975 | .end = AT91SAM9263_BASE_RTT1 + SZ_16 - 1, | 984 | .end = AT91SAM9263_BASE_RTT1 + SZ_16 - 1, |
976 | .flags = IORESOURCE_MEM, | 985 | .flags = IORESOURCE_MEM, |
986 | }, { | ||
987 | .flags = IORESOURCE_MEM, | ||
977 | } | 988 | } |
978 | }; | 989 | }; |
979 | 990 | ||
@@ -981,11 +992,53 @@ static struct platform_device at91sam9263_rtt1_device = { | |||
981 | .name = "at91_rtt", | 992 | .name = "at91_rtt", |
982 | .id = 1, | 993 | .id = 1, |
983 | .resource = rtt1_resources, | 994 | .resource = rtt1_resources, |
984 | .num_resources = ARRAY_SIZE(rtt1_resources), | ||
985 | }; | 995 | }; |
986 | 996 | ||
997 | #if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) | ||
998 | static void __init at91_add_device_rtt_rtc(void) | ||
999 | { | ||
1000 | struct platform_device *pdev; | ||
1001 | struct resource *r; | ||
1002 | |||
1003 | switch (CONFIG_RTC_DRV_AT91SAM9_RTT) { | ||
1004 | case 0: | ||
1005 | /* | ||
1006 | * The second resource is needed only for the chosen RTT: | ||
1007 | * GPBR will serve as the storage for RTC time offset | ||
1008 | */ | ||
1009 | at91sam9263_rtt0_device.num_resources = 2; | ||
1010 | at91sam9263_rtt1_device.num_resources = 1; | ||
1011 | pdev = &at91sam9263_rtt0_device; | ||
1012 | r = rtt0_resources; | ||
1013 | break; | ||
1014 | case 1: | ||
1015 | at91sam9263_rtt0_device.num_resources = 1; | ||
1016 | at91sam9263_rtt1_device.num_resources = 2; | ||
1017 | pdev = &at91sam9263_rtt1_device; | ||
1018 | r = rtt1_resources; | ||
1019 | break; | ||
1020 | default: | ||
1021 | pr_err("at91sam9263: only supports 2 RTT (%d)\n", | ||
1022 | CONFIG_RTC_DRV_AT91SAM9_RTT); | ||
1023 | return; | ||
1024 | } | ||
1025 | |||
1026 | pdev->name = "rtc-at91sam9"; | ||
1027 | r[1].start = AT91SAM9263_BASE_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | ||
1028 | r[1].end = r[1].start + 3; | ||
1029 | } | ||
1030 | #else | ||
1031 | static void __init at91_add_device_rtt_rtc(void) | ||
1032 | { | ||
1033 | /* Only one resource is needed: RTT not used as RTC */ | ||
1034 | at91sam9263_rtt0_device.num_resources = 1; | ||
1035 | at91sam9263_rtt1_device.num_resources = 1; | ||
1036 | } | ||
1037 | #endif | ||
1038 | |||
987 | static void __init at91_add_device_rtt(void) | 1039 | static void __init at91_add_device_rtt(void) |
988 | { | 1040 | { |
1041 | at91_add_device_rtt_rtc(); | ||
989 | platform_device_register(&at91sam9263_rtt0_device); | 1042 | platform_device_register(&at91sam9263_rtt0_device); |
990 | platform_device_register(&at91sam9263_rtt1_device); | 1043 | platform_device_register(&at91sam9263_rtt1_device); |
991 | } | 1044 | } |
@@ -1371,7 +1424,6 @@ static inline void configure_usart2_pins(unsigned pins) | |||
1371 | } | 1424 | } |
1372 | 1425 | ||
1373 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1426 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1374 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1375 | 1427 | ||
1376 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1428 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
1377 | { | 1429 | { |
diff --git a/arch/arm/mach-at91/at91sam9_alt_reset.S b/arch/arm/mach-at91/at91sam9_alt_reset.S index 518e42377171..7af2e108b8a0 100644 --- a/arch/arm/mach-at91/at91sam9_alt_reset.S +++ b/arch/arm/mach-at91/at91sam9_alt_reset.S | |||
@@ -15,16 +15,17 @@ | |||
15 | 15 | ||
16 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | #include <mach/at91sam9_sdramc.h> | 18 | #include <mach/at91_ramc.h> |
19 | #include <mach/at91_rstc.h> | 19 | #include <mach/at91_rstc.h> |
20 | 20 | ||
21 | .arm | 21 | .arm |
22 | 22 | ||
23 | .globl at91sam9_alt_restart | 23 | .globl at91sam9_alt_restart |
24 | 24 | ||
25 | at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants | 25 | at91sam9_alt_restart: ldr r0, =at91_ramc_base @ preload constants |
26 | ldr r1, =at91_rstc_base | 26 | ldr r0, [r0] |
27 | ldr r1, [r1] | 27 | ldr r4, =at91_rstc_base |
28 | ldr r1, [r4] | ||
28 | 29 | ||
29 | mov r2, #1 | 30 | mov r2, #1 |
30 | mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN | 31 | mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN |
@@ -37,6 +38,3 @@ at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants | |||
37 | str r4, [r1, #AT91_RSTC_CR] @ reset processor | 38 | str r4, [r1, #AT91_RSTC_CR] @ reset processor |
38 | 39 | ||
39 | b . | 40 | b . |
40 | |||
41 | .at91_va_base_sdramc: | ||
42 | .word AT91_VA_BASE_SYS + AT91_SDRAMC0 | ||
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 5b12192e52ec..a41622ea61b8 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -317,12 +317,6 @@ static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { | |||
317 | } | 317 | } |
318 | }; | 318 | }; |
319 | 319 | ||
320 | static void at91sam9g45_idle(void) | ||
321 | { | ||
322 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
323 | cpu_do_idle(); | ||
324 | } | ||
325 | |||
326 | /* -------------------------------------------------------------------- | 320 | /* -------------------------------------------------------------------- |
327 | * AT91SAM9G45 processor initialization | 321 | * AT91SAM9G45 processor initialization |
328 | * -------------------------------------------------------------------- */ | 322 | * -------------------------------------------------------------------- */ |
@@ -337,13 +331,16 @@ static void __init at91sam9g45_ioremap_registers(void) | |||
337 | { | 331 | { |
338 | at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); | 332 | at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); |
339 | at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC); | 333 | at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC); |
334 | at91_ioremap_ramc(0, AT91SAM9G45_BASE_DDRSDRC1, 512); | ||
335 | at91_ioremap_ramc(1, AT91SAM9G45_BASE_DDRSDRC0, 512); | ||
340 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); | 336 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); |
341 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); | 337 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); |
338 | at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX); | ||
342 | } | 339 | } |
343 | 340 | ||
344 | static void __init at91sam9g45_initialize(void) | 341 | static void __init at91sam9g45_initialize(void) |
345 | { | 342 | { |
346 | arm_pm_idle = at91sam9g45_idle; | 343 | arm_pm_idle = at91sam9_idle; |
347 | arm_pm_restart = at91sam9g45_restart; | 344 | arm_pm_restart = at91sam9g45_restart; |
348 | at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0); | 345 | at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0); |
349 | 346 | ||
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index b7582dd10dc3..410829532aab 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
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/clk.h> | ||
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
18 | #include <linux/i2c-gpio.h> | 19 | #include <linux/i2c-gpio.h> |
19 | #include <linux/atmel-mci.h> | 20 | #include <linux/atmel-mci.h> |
@@ -24,11 +25,15 @@ | |||
24 | #include <mach/board.h> | 25 | #include <mach/board.h> |
25 | #include <mach/at91sam9g45.h> | 26 | #include <mach/at91sam9g45.h> |
26 | #include <mach/at91sam9g45_matrix.h> | 27 | #include <mach/at91sam9g45_matrix.h> |
28 | #include <mach/at91_matrix.h> | ||
27 | #include <mach/at91sam9_smc.h> | 29 | #include <mach/at91sam9_smc.h> |
28 | #include <mach/at_hdmac.h> | 30 | #include <mach/at_hdmac.h> |
29 | #include <mach/atmel-mci.h> | 31 | #include <mach/atmel-mci.h> |
30 | 32 | ||
33 | #include <media/atmel-isi.h> | ||
34 | |||
31 | #include "generic.h" | 35 | #include "generic.h" |
36 | #include "clock.h" | ||
32 | 37 | ||
33 | 38 | ||
34 | /* -------------------------------------------------------------------- | 39 | /* -------------------------------------------------------------------- |
@@ -38,10 +43,6 @@ | |||
38 | #if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE) | 43 | #if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE) |
39 | static u64 hdmac_dmamask = DMA_BIT_MASK(32); | 44 | static u64 hdmac_dmamask = DMA_BIT_MASK(32); |
40 | 45 | ||
41 | static struct at_dma_platform_data atdma_pdata = { | ||
42 | .nr_channels = 8, | ||
43 | }; | ||
44 | |||
45 | static struct resource hdmac_resources[] = { | 46 | static struct resource hdmac_resources[] = { |
46 | [0] = { | 47 | [0] = { |
47 | .start = AT91SAM9G45_BASE_DMA, | 48 | .start = AT91SAM9G45_BASE_DMA, |
@@ -56,12 +57,11 @@ static struct resource hdmac_resources[] = { | |||
56 | }; | 57 | }; |
57 | 58 | ||
58 | static struct platform_device at_hdmac_device = { | 59 | static struct platform_device at_hdmac_device = { |
59 | .name = "at_hdmac", | 60 | .name = "at91sam9g45_dma", |
60 | .id = -1, | 61 | .id = -1, |
61 | .dev = { | 62 | .dev = { |
62 | .dma_mask = &hdmac_dmamask, | 63 | .dma_mask = &hdmac_dmamask, |
63 | .coherent_dma_mask = DMA_BIT_MASK(32), | 64 | .coherent_dma_mask = DMA_BIT_MASK(32), |
64 | .platform_data = &atdma_pdata, | ||
65 | }, | 65 | }, |
66 | .resource = hdmac_resources, | 66 | .resource = hdmac_resources, |
67 | .num_resources = ARRAY_SIZE(hdmac_resources), | 67 | .num_resources = ARRAY_SIZE(hdmac_resources), |
@@ -69,9 +69,15 @@ static struct platform_device at_hdmac_device = { | |||
69 | 69 | ||
70 | void __init at91_add_device_hdmac(void) | 70 | void __init at91_add_device_hdmac(void) |
71 | { | 71 | { |
72 | dma_cap_set(DMA_MEMCPY, atdma_pdata.cap_mask); | 72 | #if defined(CONFIG_OF) |
73 | dma_cap_set(DMA_SLAVE, atdma_pdata.cap_mask); | 73 | struct device_node *of_node = |
74 | platform_device_register(&at_hdmac_device); | 74 | of_find_node_by_name(NULL, "dma-controller"); |
75 | |||
76 | if (of_node) | ||
77 | of_node_put(of_node); | ||
78 | else | ||
79 | #endif | ||
80 | platform_device_register(&at_hdmac_device); | ||
75 | } | 81 | } |
76 | #else | 82 | #else |
77 | void __init at91_add_device_hdmac(void) {} | 83 | void __init at91_add_device_hdmac(void) {} |
@@ -552,8 +558,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
552 | if (!data) | 558 | if (!data) |
553 | return; | 559 | return; |
554 | 560 | ||
555 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 561 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
556 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); | 562 | at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); |
557 | 563 | ||
558 | /* enable pin */ | 564 | /* enable pin */ |
559 | if (gpio_is_valid(data->enable_pin)) | 565 | if (gpio_is_valid(data->enable_pin)) |
@@ -869,6 +875,96 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) | |||
869 | void __init at91_add_device_ac97(struct ac97c_platform_data *data) {} | 875 | void __init at91_add_device_ac97(struct ac97c_platform_data *data) {} |
870 | #endif | 876 | #endif |
871 | 877 | ||
878 | /* -------------------------------------------------------------------- | ||
879 | * Image Sensor Interface | ||
880 | * -------------------------------------------------------------------- */ | ||
881 | #if defined(CONFIG_VIDEO_ATMEL_ISI) || defined(CONFIG_VIDEO_ATMEL_ISI_MODULE) | ||
882 | static u64 isi_dmamask = DMA_BIT_MASK(32); | ||
883 | static struct isi_platform_data isi_data; | ||
884 | |||
885 | struct resource isi_resources[] = { | ||
886 | [0] = { | ||
887 | .start = AT91SAM9G45_BASE_ISI, | ||
888 | .end = AT91SAM9G45_BASE_ISI + SZ_16K - 1, | ||
889 | .flags = IORESOURCE_MEM, | ||
890 | }, | ||
891 | [1] = { | ||
892 | .start = AT91SAM9G45_ID_ISI, | ||
893 | .end = AT91SAM9G45_ID_ISI, | ||
894 | .flags = IORESOURCE_IRQ, | ||
895 | }, | ||
896 | }; | ||
897 | |||
898 | static struct platform_device at91sam9g45_isi_device = { | ||
899 | .name = "atmel_isi", | ||
900 | .id = 0, | ||
901 | .dev = { | ||
902 | .dma_mask = &isi_dmamask, | ||
903 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
904 | .platform_data = &isi_data, | ||
905 | }, | ||
906 | .resource = isi_resources, | ||
907 | .num_resources = ARRAY_SIZE(isi_resources), | ||
908 | }; | ||
909 | |||
910 | static struct clk_lookup isi_mck_lookups[] = { | ||
911 | CLKDEV_CON_DEV_ID("isi_mck", "atmel_isi.0", NULL), | ||
912 | }; | ||
913 | |||
914 | void __init at91_add_device_isi(struct isi_platform_data *data, | ||
915 | bool use_pck_as_mck) | ||
916 | { | ||
917 | struct clk *pck; | ||
918 | struct clk *parent; | ||
919 | |||
920 | if (!data) | ||
921 | return; | ||
922 | isi_data = *data; | ||
923 | |||
924 | at91_set_A_periph(AT91_PIN_PB20, 0); /* ISI_D0 */ | ||
925 | at91_set_A_periph(AT91_PIN_PB21, 0); /* ISI_D1 */ | ||
926 | at91_set_A_periph(AT91_PIN_PB22, 0); /* ISI_D2 */ | ||
927 | at91_set_A_periph(AT91_PIN_PB23, 0); /* ISI_D3 */ | ||
928 | at91_set_A_periph(AT91_PIN_PB24, 0); /* ISI_D4 */ | ||
929 | at91_set_A_periph(AT91_PIN_PB25, 0); /* ISI_D5 */ | ||
930 | at91_set_A_periph(AT91_PIN_PB26, 0); /* ISI_D6 */ | ||
931 | at91_set_A_periph(AT91_PIN_PB27, 0); /* ISI_D7 */ | ||
932 | at91_set_A_periph(AT91_PIN_PB28, 0); /* ISI_PCK */ | ||
933 | at91_set_A_periph(AT91_PIN_PB30, 0); /* ISI_HSYNC */ | ||
934 | at91_set_A_periph(AT91_PIN_PB29, 0); /* ISI_VSYNC */ | ||
935 | at91_set_B_periph(AT91_PIN_PB8, 0); /* ISI_PD8 */ | ||
936 | at91_set_B_periph(AT91_PIN_PB9, 0); /* ISI_PD9 */ | ||
937 | at91_set_B_periph(AT91_PIN_PB10, 0); /* ISI_PD10 */ | ||
938 | at91_set_B_periph(AT91_PIN_PB11, 0); /* ISI_PD11 */ | ||
939 | |||
940 | platform_device_register(&at91sam9g45_isi_device); | ||
941 | |||
942 | if (use_pck_as_mck) { | ||
943 | at91_set_B_periph(AT91_PIN_PB31, 0); /* ISI_MCK (PCK1) */ | ||
944 | |||
945 | pck = clk_get(NULL, "pck1"); | ||
946 | parent = clk_get(NULL, "plla"); | ||
947 | |||
948 | BUG_ON(IS_ERR(pck) || IS_ERR(parent)); | ||
949 | |||
950 | if (clk_set_parent(pck, parent)) { | ||
951 | pr_err("Failed to set PCK's parent\n"); | ||
952 | } else { | ||
953 | /* Register PCK as ISI_MCK */ | ||
954 | isi_mck_lookups[0].clk = pck; | ||
955 | clkdev_add_table(isi_mck_lookups, | ||
956 | ARRAY_SIZE(isi_mck_lookups)); | ||
957 | } | ||
958 | |||
959 | clk_put(pck); | ||
960 | clk_put(parent); | ||
961 | } | ||
962 | } | ||
963 | #else | ||
964 | void __init at91_add_device_isi(struct isi_platform_data *data, | ||
965 | bool use_pck_as_mck) {} | ||
966 | #endif | ||
967 | |||
872 | 968 | ||
873 | /* -------------------------------------------------------------------- | 969 | /* -------------------------------------------------------------------- |
874 | * LCD Controller | 970 | * LCD Controller |
@@ -1098,6 +1194,8 @@ static struct resource rtt_resources[] = { | |||
1098 | .start = AT91SAM9G45_BASE_RTT, | 1194 | .start = AT91SAM9G45_BASE_RTT, |
1099 | .end = AT91SAM9G45_BASE_RTT + SZ_16 - 1, | 1195 | .end = AT91SAM9G45_BASE_RTT + SZ_16 - 1, |
1100 | .flags = IORESOURCE_MEM, | 1196 | .flags = IORESOURCE_MEM, |
1197 | }, { | ||
1198 | .flags = IORESOURCE_MEM, | ||
1101 | } | 1199 | } |
1102 | }; | 1200 | }; |
1103 | 1201 | ||
@@ -1105,11 +1203,32 @@ static struct platform_device at91sam9g45_rtt_device = { | |||
1105 | .name = "at91_rtt", | 1203 | .name = "at91_rtt", |
1106 | .id = 0, | 1204 | .id = 0, |
1107 | .resource = rtt_resources, | 1205 | .resource = rtt_resources, |
1108 | .num_resources = ARRAY_SIZE(rtt_resources), | ||
1109 | }; | 1206 | }; |
1110 | 1207 | ||
1208 | #if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) | ||
1209 | static void __init at91_add_device_rtt_rtc(void) | ||
1210 | { | ||
1211 | at91sam9g45_rtt_device.name = "rtc-at91sam9"; | ||
1212 | /* | ||
1213 | * The second resource is needed: | ||
1214 | * GPBR will serve as the storage for RTC time offset | ||
1215 | */ | ||
1216 | at91sam9g45_rtt_device.num_resources = 2; | ||
1217 | rtt_resources[1].start = AT91SAM9G45_BASE_GPBR + | ||
1218 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | ||
1219 | rtt_resources[1].end = rtt_resources[1].start + 3; | ||
1220 | } | ||
1221 | #else | ||
1222 | static void __init at91_add_device_rtt_rtc(void) | ||
1223 | { | ||
1224 | /* Only one resource is needed: RTT not used as RTC */ | ||
1225 | at91sam9g45_rtt_device.num_resources = 1; | ||
1226 | } | ||
1227 | #endif | ||
1228 | |||
1111 | static void __init at91_add_device_rtt(void) | 1229 | static void __init at91_add_device_rtt(void) |
1112 | { | 1230 | { |
1231 | at91_add_device_rtt_rtc(); | ||
1113 | platform_device_register(&at91sam9g45_rtt_device); | 1232 | platform_device_register(&at91sam9g45_rtt_device); |
1114 | } | 1233 | } |
1115 | 1234 | ||
@@ -1564,7 +1683,6 @@ static inline void configure_usart3_pins(unsigned pins) | |||
1564 | } | 1683 | } |
1565 | 1684 | ||
1566 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1685 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1567 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1568 | 1686 | ||
1569 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1687 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
1570 | { | 1688 | { |
diff --git a/arch/arm/mach-at91/at91sam9g45_reset.S b/arch/arm/mach-at91/at91sam9g45_reset.S index 0468be10980b..9d457182c86c 100644 --- a/arch/arm/mach-at91/at91sam9g45_reset.S +++ b/arch/arm/mach-at91/at91sam9g45_reset.S | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <mach/at91sam9_ddrsdr.h> | 15 | #include <mach/at91_ramc.h> |
16 | #include <mach/at91_rstc.h> | 16 | #include <mach/at91_rstc.h> |
17 | 17 | ||
18 | .arm | 18 | .arm |
@@ -20,9 +20,10 @@ | |||
20 | .globl at91sam9g45_restart | 20 | .globl at91sam9g45_restart |
21 | 21 | ||
22 | at91sam9g45_restart: | 22 | at91sam9g45_restart: |
23 | ldr r0, .at91_va_base_sdramc0 @ preload constants | 23 | ldr r5, =at91_ramc_base @ preload constants |
24 | ldr r1, =at91_rstc_base | 24 | ldr r0, [r5] |
25 | ldr r1, [r1] | 25 | ldr r4, =at91_rstc_base |
26 | ldr r1, [r4] | ||
26 | 27 | ||
27 | mov r2, #1 | 28 | mov r2, #1 |
28 | mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN | 29 | mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN |
@@ -35,6 +36,3 @@ at91sam9g45_restart: | |||
35 | str r4, [r1, #AT91_RSTC_CR] @ reset processor | 36 | str r4, [r1, #AT91_RSTC_CR] @ reset processor |
36 | 37 | ||
37 | b . | 38 | b . |
38 | |||
39 | .at91_va_base_sdramc0: | ||
40 | .word AT91_VA_BASE_SYS + AT91_DDRSDRC0 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index fd60e226a987..63d9372eb18e 100644 --- a/arch/arm/mach-at91/at91sam9rl.c +++ b/arch/arm/mach-at91/at91sam9rl.c | |||
@@ -288,19 +288,15 @@ static void __init at91sam9rl_ioremap_registers(void) | |||
288 | { | 288 | { |
289 | at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); | 289 | at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); |
290 | at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC); | 290 | at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC); |
291 | at91_ioremap_ramc(0, AT91SAM9RL_BASE_SDRAMC, 512); | ||
291 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); | 292 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); |
292 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); | 293 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); |
293 | } | 294 | at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX); |
294 | |||
295 | static void at91sam9rl_idle(void) | ||
296 | { | ||
297 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
298 | cpu_do_idle(); | ||
299 | } | 295 | } |
300 | 296 | ||
301 | static void __init at91sam9rl_initialize(void) | 297 | static void __init at91sam9rl_initialize(void) |
302 | { | 298 | { |
303 | arm_pm_idle = at91sam9rl_idle; | 299 | arm_pm_idle = at91sam9_idle; |
304 | arm_pm_restart = at91sam9_alt_restart; | 300 | arm_pm_restart = at91sam9_alt_restart; |
305 | at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0); | 301 | at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0); |
306 | 302 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index 61908dce9784..eda72e83037d 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <mach/board.h> | 20 | #include <mach/board.h> |
21 | #include <mach/at91sam9rl.h> | 21 | #include <mach/at91sam9rl.h> |
22 | #include <mach/at91sam9rl_matrix.h> | 22 | #include <mach/at91sam9rl_matrix.h> |
23 | #include <mach/at91_matrix.h> | ||
23 | #include <mach/at91sam9_smc.h> | 24 | #include <mach/at91sam9_smc.h> |
24 | #include <mach/at_hdmac.h> | 25 | #include <mach/at_hdmac.h> |
25 | 26 | ||
@@ -33,10 +34,6 @@ | |||
33 | #if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE) | 34 | #if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE) |
34 | static u64 hdmac_dmamask = DMA_BIT_MASK(32); | 35 | static u64 hdmac_dmamask = DMA_BIT_MASK(32); |
35 | 36 | ||
36 | static struct at_dma_platform_data atdma_pdata = { | ||
37 | .nr_channels = 2, | ||
38 | }; | ||
39 | |||
40 | static struct resource hdmac_resources[] = { | 37 | static struct resource hdmac_resources[] = { |
41 | [0] = { | 38 | [0] = { |
42 | .start = AT91SAM9RL_BASE_DMA, | 39 | .start = AT91SAM9RL_BASE_DMA, |
@@ -51,12 +48,11 @@ static struct resource hdmac_resources[] = { | |||
51 | }; | 48 | }; |
52 | 49 | ||
53 | static struct platform_device at_hdmac_device = { | 50 | static struct platform_device at_hdmac_device = { |
54 | .name = "at_hdmac", | 51 | .name = "at91sam9rl_dma", |
55 | .id = -1, | 52 | .id = -1, |
56 | .dev = { | 53 | .dev = { |
57 | .dma_mask = &hdmac_dmamask, | 54 | .dma_mask = &hdmac_dmamask, |
58 | .coherent_dma_mask = DMA_BIT_MASK(32), | 55 | .coherent_dma_mask = DMA_BIT_MASK(32), |
59 | .platform_data = &atdma_pdata, | ||
60 | }, | 56 | }, |
61 | .resource = hdmac_resources, | 57 | .resource = hdmac_resources, |
62 | .num_resources = ARRAY_SIZE(hdmac_resources), | 58 | .num_resources = ARRAY_SIZE(hdmac_resources), |
@@ -64,7 +60,6 @@ static struct platform_device at_hdmac_device = { | |||
64 | 60 | ||
65 | void __init at91_add_device_hdmac(void) | 61 | void __init at91_add_device_hdmac(void) |
66 | { | 62 | { |
67 | dma_cap_set(DMA_MEMCPY, atdma_pdata.cap_mask); | ||
68 | platform_device_register(&at_hdmac_device); | 63 | platform_device_register(&at_hdmac_device); |
69 | } | 64 | } |
70 | #else | 65 | #else |
@@ -271,8 +266,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
271 | if (!data) | 266 | if (!data) |
272 | return; | 267 | return; |
273 | 268 | ||
274 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 269 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
275 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); | 270 | at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); |
276 | 271 | ||
277 | /* enable pin */ | 272 | /* enable pin */ |
278 | if (gpio_is_valid(data->enable_pin)) | 273 | if (gpio_is_valid(data->enable_pin)) |
@@ -688,6 +683,8 @@ static struct resource rtt_resources[] = { | |||
688 | .start = AT91SAM9RL_BASE_RTT, | 683 | .start = AT91SAM9RL_BASE_RTT, |
689 | .end = AT91SAM9RL_BASE_RTT + SZ_16 - 1, | 684 | .end = AT91SAM9RL_BASE_RTT + SZ_16 - 1, |
690 | .flags = IORESOURCE_MEM, | 685 | .flags = IORESOURCE_MEM, |
686 | }, { | ||
687 | .flags = IORESOURCE_MEM, | ||
691 | } | 688 | } |
692 | }; | 689 | }; |
693 | 690 | ||
@@ -695,11 +692,32 @@ static struct platform_device at91sam9rl_rtt_device = { | |||
695 | .name = "at91_rtt", | 692 | .name = "at91_rtt", |
696 | .id = 0, | 693 | .id = 0, |
697 | .resource = rtt_resources, | 694 | .resource = rtt_resources, |
698 | .num_resources = ARRAY_SIZE(rtt_resources), | ||
699 | }; | 695 | }; |
700 | 696 | ||
697 | #if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) | ||
698 | static void __init at91_add_device_rtt_rtc(void) | ||
699 | { | ||
700 | at91sam9rl_rtt_device.name = "rtc-at91sam9"; | ||
701 | /* | ||
702 | * The second resource is needed: | ||
703 | * GPBR will serve as the storage for RTC time offset | ||
704 | */ | ||
705 | at91sam9rl_rtt_device.num_resources = 2; | ||
706 | rtt_resources[1].start = AT91SAM9RL_BASE_GPBR + | ||
707 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | ||
708 | rtt_resources[1].end = rtt_resources[1].start + 3; | ||
709 | } | ||
710 | #else | ||
711 | static void __init at91_add_device_rtt_rtc(void) | ||
712 | { | ||
713 | /* Only one resource is needed: RTT not used as RTC */ | ||
714 | at91sam9rl_rtt_device.num_resources = 1; | ||
715 | } | ||
716 | #endif | ||
717 | |||
701 | static void __init at91_add_device_rtt(void) | 718 | static void __init at91_add_device_rtt(void) |
702 | { | 719 | { |
720 | at91_add_device_rtt_rtc(); | ||
703 | platform_device_register(&at91sam9rl_rtt_device); | 721 | platform_device_register(&at91sam9rl_rtt_device); |
704 | } | 722 | } |
705 | 723 | ||
@@ -1134,7 +1152,6 @@ static inline void configure_usart3_pins(unsigned pins) | |||
1134 | } | 1152 | } |
1135 | 1153 | ||
1136 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1154 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1137 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1138 | 1155 | ||
1139 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) | 1156 | void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) |
1140 | { | 1157 | { |
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c new file mode 100644 index 000000000000..d17d4262665b --- /dev/null +++ b/arch/arm/mach-at91/at91sam9x5.c | |||
@@ -0,0 +1,370 @@ | |||
1 | /* | ||
2 | * Chip-specific setup code for the AT91SAM9x5 family | ||
3 | * | ||
4 | * Copyright (C) 2010-2012 Atmel Corporation. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/module.h> | ||
10 | #include <linux/dma-mapping.h> | ||
11 | |||
12 | #include <asm/irq.h> | ||
13 | #include <asm/mach/arch.h> | ||
14 | #include <asm/mach/map.h> | ||
15 | #include <mach/at91sam9x5.h> | ||
16 | #include <mach/at91_pmc.h> | ||
17 | #include <mach/cpu.h> | ||
18 | #include <mach/board.h> | ||
19 | |||
20 | #include "soc.h" | ||
21 | #include "generic.h" | ||
22 | #include "clock.h" | ||
23 | #include "sam9_smc.h" | ||
24 | |||
25 | /* -------------------------------------------------------------------- | ||
26 | * Clocks | ||
27 | * -------------------------------------------------------------------- */ | ||
28 | |||
29 | /* | ||
30 | * The peripheral clocks. | ||
31 | */ | ||
32 | static struct clk pioAB_clk = { | ||
33 | .name = "pioAB_clk", | ||
34 | .pmc_mask = 1 << AT91SAM9X5_ID_PIOAB, | ||
35 | .type = CLK_TYPE_PERIPHERAL, | ||
36 | }; | ||
37 | static struct clk pioCD_clk = { | ||
38 | .name = "pioCD_clk", | ||
39 | .pmc_mask = 1 << AT91SAM9X5_ID_PIOCD, | ||
40 | .type = CLK_TYPE_PERIPHERAL, | ||
41 | }; | ||
42 | static struct clk smd_clk = { | ||
43 | .name = "smd_clk", | ||
44 | .pmc_mask = 1 << AT91SAM9X5_ID_SMD, | ||
45 | .type = CLK_TYPE_PERIPHERAL, | ||
46 | }; | ||
47 | static struct clk usart0_clk = { | ||
48 | .name = "usart0_clk", | ||
49 | .pmc_mask = 1 << AT91SAM9X5_ID_USART0, | ||
50 | .type = CLK_TYPE_PERIPHERAL, | ||
51 | }; | ||
52 | static struct clk usart1_clk = { | ||
53 | .name = "usart1_clk", | ||
54 | .pmc_mask = 1 << AT91SAM9X5_ID_USART1, | ||
55 | .type = CLK_TYPE_PERIPHERAL, | ||
56 | }; | ||
57 | static struct clk usart2_clk = { | ||
58 | .name = "usart2_clk", | ||
59 | .pmc_mask = 1 << AT91SAM9X5_ID_USART2, | ||
60 | .type = CLK_TYPE_PERIPHERAL, | ||
61 | }; | ||
62 | /* USART3 clock - Only for sam9g25/sam9x25 */ | ||
63 | static struct clk usart3_clk = { | ||
64 | .name = "usart3_clk", | ||
65 | .pmc_mask = 1 << AT91SAM9X5_ID_USART3, | ||
66 | .type = CLK_TYPE_PERIPHERAL, | ||
67 | }; | ||
68 | static struct clk twi0_clk = { | ||
69 | .name = "twi0_clk", | ||
70 | .pmc_mask = 1 << AT91SAM9X5_ID_TWI0, | ||
71 | .type = CLK_TYPE_PERIPHERAL, | ||
72 | }; | ||
73 | static struct clk twi1_clk = { | ||
74 | .name = "twi1_clk", | ||
75 | .pmc_mask = 1 << AT91SAM9X5_ID_TWI1, | ||
76 | .type = CLK_TYPE_PERIPHERAL, | ||
77 | }; | ||
78 | static struct clk twi2_clk = { | ||
79 | .name = "twi2_clk", | ||
80 | .pmc_mask = 1 << AT91SAM9X5_ID_TWI2, | ||
81 | .type = CLK_TYPE_PERIPHERAL, | ||
82 | }; | ||
83 | static struct clk mmc0_clk = { | ||
84 | .name = "mci0_clk", | ||
85 | .pmc_mask = 1 << AT91SAM9X5_ID_MCI0, | ||
86 | .type = CLK_TYPE_PERIPHERAL, | ||
87 | }; | ||
88 | static struct clk spi0_clk = { | ||
89 | .name = "spi0_clk", | ||
90 | .pmc_mask = 1 << AT91SAM9X5_ID_SPI0, | ||
91 | .type = CLK_TYPE_PERIPHERAL, | ||
92 | }; | ||
93 | static struct clk spi1_clk = { | ||
94 | .name = "spi1_clk", | ||
95 | .pmc_mask = 1 << AT91SAM9X5_ID_SPI1, | ||
96 | .type = CLK_TYPE_PERIPHERAL, | ||
97 | }; | ||
98 | static struct clk uart0_clk = { | ||
99 | .name = "uart0_clk", | ||
100 | .pmc_mask = 1 << AT91SAM9X5_ID_UART0, | ||
101 | .type = CLK_TYPE_PERIPHERAL, | ||
102 | }; | ||
103 | static struct clk uart1_clk = { | ||
104 | .name = "uart1_clk", | ||
105 | .pmc_mask = 1 << AT91SAM9X5_ID_UART1, | ||
106 | .type = CLK_TYPE_PERIPHERAL, | ||
107 | }; | ||
108 | static struct clk tcb0_clk = { | ||
109 | .name = "tcb0_clk", | ||
110 | .pmc_mask = 1 << AT91SAM9X5_ID_TCB, | ||
111 | .type = CLK_TYPE_PERIPHERAL, | ||
112 | }; | ||
113 | static struct clk pwm_clk = { | ||
114 | .name = "pwm_clk", | ||
115 | .pmc_mask = 1 << AT91SAM9X5_ID_PWM, | ||
116 | .type = CLK_TYPE_PERIPHERAL, | ||
117 | }; | ||
118 | static struct clk adc_clk = { | ||
119 | .name = "adc_clk", | ||
120 | .pmc_mask = 1 << AT91SAM9X5_ID_ADC, | ||
121 | .type = CLK_TYPE_PERIPHERAL, | ||
122 | }; | ||
123 | static struct clk dma0_clk = { | ||
124 | .name = "dma0_clk", | ||
125 | .pmc_mask = 1 << AT91SAM9X5_ID_DMA0, | ||
126 | .type = CLK_TYPE_PERIPHERAL, | ||
127 | }; | ||
128 | static struct clk dma1_clk = { | ||
129 | .name = "dma1_clk", | ||
130 | .pmc_mask = 1 << AT91SAM9X5_ID_DMA1, | ||
131 | .type = CLK_TYPE_PERIPHERAL, | ||
132 | }; | ||
133 | static struct clk uhphs_clk = { | ||
134 | .name = "uhphs_clk", | ||
135 | .pmc_mask = 1 << AT91SAM9X5_ID_UHPHS, | ||
136 | .type = CLK_TYPE_PERIPHERAL, | ||
137 | }; | ||
138 | static struct clk udphs_clk = { | ||
139 | .name = "udphs_clk", | ||
140 | .pmc_mask = 1 << AT91SAM9X5_ID_UDPHS, | ||
141 | .type = CLK_TYPE_PERIPHERAL, | ||
142 | }; | ||
143 | /* emac0 clock - Only for sam9g25/sam9x25/sam9g35/sam9x35 */ | ||
144 | static struct clk macb0_clk = { | ||
145 | .name = "pclk", | ||
146 | .pmc_mask = 1 << AT91SAM9X5_ID_EMAC0, | ||
147 | .type = CLK_TYPE_PERIPHERAL, | ||
148 | }; | ||
149 | /* lcd clock - Only for sam9g15/sam9g35/sam9x35 */ | ||
150 | static struct clk lcdc_clk = { | ||
151 | .name = "lcdc_clk", | ||
152 | .pmc_mask = 1 << AT91SAM9X5_ID_LCDC, | ||
153 | .type = CLK_TYPE_PERIPHERAL, | ||
154 | }; | ||
155 | /* isi clock - Only for sam9g25 */ | ||
156 | static struct clk isi_clk = { | ||
157 | .name = "isi_clk", | ||
158 | .pmc_mask = 1 << AT91SAM9X5_ID_ISI, | ||
159 | .type = CLK_TYPE_PERIPHERAL, | ||
160 | }; | ||
161 | static struct clk mmc1_clk = { | ||
162 | .name = "mci1_clk", | ||
163 | .pmc_mask = 1 << AT91SAM9X5_ID_MCI1, | ||
164 | .type = CLK_TYPE_PERIPHERAL, | ||
165 | }; | ||
166 | /* emac1 clock - Only for sam9x25 */ | ||
167 | static struct clk macb1_clk = { | ||
168 | .name = "pclk", | ||
169 | .pmc_mask = 1 << AT91SAM9X5_ID_EMAC1, | ||
170 | .type = CLK_TYPE_PERIPHERAL, | ||
171 | }; | ||
172 | static struct clk ssc_clk = { | ||
173 | .name = "ssc_clk", | ||
174 | .pmc_mask = 1 << AT91SAM9X5_ID_SSC, | ||
175 | .type = CLK_TYPE_PERIPHERAL, | ||
176 | }; | ||
177 | /* can0 clock - Only for sam9x35 */ | ||
178 | static struct clk can0_clk = { | ||
179 | .name = "can0_clk", | ||
180 | .pmc_mask = 1 << AT91SAM9X5_ID_CAN0, | ||
181 | .type = CLK_TYPE_PERIPHERAL, | ||
182 | }; | ||
183 | /* can1 clock - Only for sam9x35 */ | ||
184 | static struct clk can1_clk = { | ||
185 | .name = "can1_clk", | ||
186 | .pmc_mask = 1 << AT91SAM9X5_ID_CAN1, | ||
187 | .type = CLK_TYPE_PERIPHERAL, | ||
188 | }; | ||
189 | |||
190 | static struct clk *periph_clocks[] __initdata = { | ||
191 | &pioAB_clk, | ||
192 | &pioCD_clk, | ||
193 | &smd_clk, | ||
194 | &usart0_clk, | ||
195 | &usart1_clk, | ||
196 | &usart2_clk, | ||
197 | &twi0_clk, | ||
198 | &twi1_clk, | ||
199 | &twi2_clk, | ||
200 | &mmc0_clk, | ||
201 | &spi0_clk, | ||
202 | &spi1_clk, | ||
203 | &uart0_clk, | ||
204 | &uart1_clk, | ||
205 | &tcb0_clk, | ||
206 | &pwm_clk, | ||
207 | &adc_clk, | ||
208 | &dma0_clk, | ||
209 | &dma1_clk, | ||
210 | &uhphs_clk, | ||
211 | &udphs_clk, | ||
212 | &mmc1_clk, | ||
213 | &ssc_clk, | ||
214 | // irq0 | ||
215 | }; | ||
216 | |||
217 | static struct clk_lookup periph_clocks_lookups[] = { | ||
218 | /* lookup table for DT entries */ | ||
219 | CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck), | ||
220 | CLKDEV_CON_DEV_ID("usart", "f801c000.serial", &usart0_clk), | ||
221 | CLKDEV_CON_DEV_ID("usart", "f8020000.serial", &usart1_clk), | ||
222 | CLKDEV_CON_DEV_ID("usart", "f8024000.serial", &usart2_clk), | ||
223 | CLKDEV_CON_DEV_ID("usart", "f8028000.serial", &usart3_clk), | ||
224 | CLKDEV_CON_DEV_ID("t0_clk", "f8008000.timer", &tcb0_clk), | ||
225 | CLKDEV_CON_DEV_ID("t0_clk", "f800c000.timer", &tcb0_clk), | ||
226 | CLKDEV_CON_ID("pioA", &pioAB_clk), | ||
227 | CLKDEV_CON_ID("pioB", &pioAB_clk), | ||
228 | CLKDEV_CON_ID("pioC", &pioCD_clk), | ||
229 | CLKDEV_CON_ID("pioD", &pioCD_clk), | ||
230 | /* additional fake clock for macb_hclk */ | ||
231 | CLKDEV_CON_DEV_ID("hclk", "f802c000.ethernet", &macb0_clk), | ||
232 | CLKDEV_CON_DEV_ID("hclk", "f8030000.ethernet", &macb1_clk), | ||
233 | }; | ||
234 | |||
235 | /* | ||
236 | * The two programmable clocks. | ||
237 | * You must configure pin multiplexing to bring these signals out. | ||
238 | */ | ||
239 | static struct clk pck0 = { | ||
240 | .name = "pck0", | ||
241 | .pmc_mask = AT91_PMC_PCK0, | ||
242 | .type = CLK_TYPE_PROGRAMMABLE, | ||
243 | .id = 0, | ||
244 | }; | ||
245 | static struct clk pck1 = { | ||
246 | .name = "pck1", | ||
247 | .pmc_mask = AT91_PMC_PCK1, | ||
248 | .type = CLK_TYPE_PROGRAMMABLE, | ||
249 | .id = 1, | ||
250 | }; | ||
251 | |||
252 | static void __init at91sam9x5_register_clocks(void) | ||
253 | { | ||
254 | int i; | ||
255 | |||
256 | for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) | ||
257 | clk_register(periph_clocks[i]); | ||
258 | |||
259 | clkdev_add_table(periph_clocks_lookups, | ||
260 | ARRAY_SIZE(periph_clocks_lookups)); | ||
261 | |||
262 | if (cpu_is_at91sam9g25() | ||
263 | || cpu_is_at91sam9x25()) | ||
264 | clk_register(&usart3_clk); | ||
265 | |||
266 | if (cpu_is_at91sam9g25() | ||
267 | || cpu_is_at91sam9x25() | ||
268 | || cpu_is_at91sam9g35() | ||
269 | || cpu_is_at91sam9x35()) | ||
270 | clk_register(&macb0_clk); | ||
271 | |||
272 | if (cpu_is_at91sam9g15() | ||
273 | || cpu_is_at91sam9g35() | ||
274 | || cpu_is_at91sam9x35()) | ||
275 | clk_register(&lcdc_clk); | ||
276 | |||
277 | if (cpu_is_at91sam9g25()) | ||
278 | clk_register(&isi_clk); | ||
279 | |||
280 | if (cpu_is_at91sam9x25()) | ||
281 | clk_register(&macb1_clk); | ||
282 | |||
283 | if (cpu_is_at91sam9x25() | ||
284 | || cpu_is_at91sam9x35()) { | ||
285 | clk_register(&can0_clk); | ||
286 | clk_register(&can1_clk); | ||
287 | } | ||
288 | |||
289 | clk_register(&pck0); | ||
290 | clk_register(&pck1); | ||
291 | } | ||
292 | |||
293 | /* -------------------------------------------------------------------- | ||
294 | * AT91SAM9x5 processor initialization | ||
295 | * -------------------------------------------------------------------- */ | ||
296 | |||
297 | static void __init at91sam9x5_map_io(void) | ||
298 | { | ||
299 | at91_init_sram(0, AT91SAM9X5_SRAM_BASE, AT91SAM9X5_SRAM_SIZE); | ||
300 | } | ||
301 | |||
302 | static void __init at91sam9x5_ioremap_registers(void) | ||
303 | { | ||
304 | if (of_at91sam926x_pit_init() < 0) | ||
305 | panic("Impossible to find PIT\n"); | ||
306 | at91_ioremap_ramc(0, AT91SAM9X5_BASE_DDRSDRC0, 512); | ||
307 | } | ||
308 | |||
309 | void __init at91sam9x5_initialize(void) | ||
310 | { | ||
311 | arm_pm_restart = at91sam9g45_restart; | ||
312 | at91_extern_irq = (1 << AT91SAM9X5_ID_IRQ0); | ||
313 | |||
314 | /* Register GPIO subsystem (using DT) */ | ||
315 | at91_gpio_init(NULL, 0); | ||
316 | } | ||
317 | |||
318 | /* -------------------------------------------------------------------- | ||
319 | * AT91SAM9x5 devices (temporary before modification of code) | ||
320 | * -------------------------------------------------------------------- */ | ||
321 | void __init at91_add_device_nand(struct atmel_nand_data *data) {} | ||
322 | |||
323 | /* -------------------------------------------------------------------- | ||
324 | * Interrupt initialization | ||
325 | * -------------------------------------------------------------------- */ | ||
326 | /* | ||
327 | * The default interrupt priority levels (0 = lowest, 7 = highest). | ||
328 | */ | ||
329 | static unsigned int at91sam9x5_default_irq_priority[NR_AIC_IRQS] __initdata = { | ||
330 | 7, /* Advanced Interrupt Controller (FIQ) */ | ||
331 | 7, /* System Peripherals */ | ||
332 | 1, /* Parallel IO Controller A and B */ | ||
333 | 1, /* Parallel IO Controller C and D */ | ||
334 | 4, /* Soft Modem */ | ||
335 | 5, /* USART 0 */ | ||
336 | 5, /* USART 1 */ | ||
337 | 5, /* USART 2 */ | ||
338 | 5, /* USART 3 */ | ||
339 | 6, /* Two-Wire Interface 0 */ | ||
340 | 6, /* Two-Wire Interface 1 */ | ||
341 | 6, /* Two-Wire Interface 2 */ | ||
342 | 0, /* Multimedia Card Interface 0 */ | ||
343 | 5, /* Serial Peripheral Interface 0 */ | ||
344 | 5, /* Serial Peripheral Interface 1 */ | ||
345 | 5, /* UART 0 */ | ||
346 | 5, /* UART 1 */ | ||
347 | 0, /* Timer Counter 0, 1, 2, 3, 4 and 5 */ | ||
348 | 0, /* Pulse Width Modulation Controller */ | ||
349 | 0, /* ADC Controller */ | ||
350 | 0, /* DMA Controller 0 */ | ||
351 | 0, /* DMA Controller 1 */ | ||
352 | 2, /* USB Host High Speed port */ | ||
353 | 2, /* USB Device High speed port */ | ||
354 | 3, /* Ethernet MAC 0 */ | ||
355 | 3, /* LDC Controller or Image Sensor Interface */ | ||
356 | 0, /* Multimedia Card Interface 1 */ | ||
357 | 3, /* Ethernet MAC 1 */ | ||
358 | 4, /* Synchronous Serial Interface */ | ||
359 | 4, /* CAN Controller 0 */ | ||
360 | 4, /* CAN Controller 1 */ | ||
361 | 0, /* Advanced Interrupt Controller (IRQ0) */ | ||
362 | }; | ||
363 | |||
364 | struct at91_init_soc __initdata at91sam9x5_soc = { | ||
365 | .map_io = at91sam9x5_map_io, | ||
366 | .default_irq_priority = at91sam9x5_default_irq_priority, | ||
367 | .ioremap_registers = at91sam9x5_ioremap_registers, | ||
368 | .register_clocks = at91sam9x5_register_clocks, | ||
369 | .init = at91sam9x5_initialize, | ||
370 | }; | ||
diff --git a/arch/arm/mach-at91/at91x40.c b/arch/arm/mach-at91/at91x40.c index 0154b7f44ff1..5400a1d65035 100644 --- a/arch/arm/mach-at91/at91x40.c +++ b/arch/arm/mach-at91/at91x40.c | |||
@@ -44,7 +44,7 @@ static void at91x40_idle(void) | |||
44 | * Disable the processor clock. The processor will be automatically | 44 | * Disable the processor clock. The processor will be automatically |
45 | * re-enabled by an interrupt or by a reset. | 45 | * re-enabled by an interrupt or by a reset. |
46 | */ | 46 | */ |
47 | at91_sys_write(AT91_PS_CR, AT91_PS_CR_CPU); | 47 | __raw_writel(AT91_PS_CR_CPU, AT91_PS_CR); |
48 | cpu_do_idle(); | 48 | cpu_do_idle(); |
49 | } | 49 | } |
50 | 50 | ||
diff --git a/arch/arm/mach-at91/at91x40_time.c b/arch/arm/mach-at91/at91x40_time.c index dfff2895f4b2..6ca680a1d5d1 100644 --- a/arch/arm/mach-at91/at91x40_time.c +++ b/arch/arm/mach-at91/at91x40_time.c | |||
@@ -28,6 +28,12 @@ | |||
28 | #include <asm/mach/time.h> | 28 | #include <asm/mach/time.h> |
29 | #include <mach/at91_tc.h> | 29 | #include <mach/at91_tc.h> |
30 | 30 | ||
31 | #define at91_tc_read(field) \ | ||
32 | __raw_readl(AT91_TC + field) | ||
33 | |||
34 | #define at91_tc_write(field, value) \ | ||
35 | __raw_writel(value, AT91_TC + field); | ||
36 | |||
31 | /* | 37 | /* |
32 | * 3 counter/timer units present. | 38 | * 3 counter/timer units present. |
33 | */ | 39 | */ |
@@ -37,12 +43,12 @@ | |||
37 | 43 | ||
38 | static unsigned long at91x40_gettimeoffset(void) | 44 | static unsigned long at91x40_gettimeoffset(void) |
39 | { | 45 | { |
40 | return (at91_sys_read(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); | 46 | return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); |
41 | } | 47 | } |
42 | 48 | ||
43 | static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) | 49 | static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) |
44 | { | 50 | { |
45 | at91_sys_read(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_SR); | 51 | at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_SR); |
46 | timer_tick(); | 52 | timer_tick(); |
47 | return IRQ_HANDLED; | 53 | return IRQ_HANDLED; |
48 | } | 54 | } |
@@ -57,20 +63,20 @@ void __init at91x40_timer_init(void) | |||
57 | { | 63 | { |
58 | unsigned int v; | 64 | unsigned int v; |
59 | 65 | ||
60 | at91_sys_write(AT91_TC + AT91_TC_BCR, 0); | 66 | at91_tc_write(AT91_TC_BCR, 0); |
61 | v = at91_sys_read(AT91_TC + AT91_TC_BMR); | 67 | v = at91_tc_read(AT91_TC_BMR); |
62 | v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; | 68 | v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; |
63 | at91_sys_write(AT91_TC + AT91_TC_BMR, v); | 69 | at91_tc_write(AT91_TC_BMR, v); |
64 | 70 | ||
65 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_CCR, AT91_TC_CLKDIS); | 71 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, AT91_TC_CLKDIS); |
66 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_CMR, (AT91_TC_TIMER_CLOCK4 | AT91_TC_CPCTRG)); | 72 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CMR, (AT91_TC_TIMER_CLOCK4 | AT91_TC_CPCTRG)); |
67 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_IDR, 0xffffffff); | 73 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_IDR, 0xffffffff); |
68 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_RC, (AT91X40_MASTER_CLOCK / 128) / HZ - 1); | 74 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_RC, (AT91X40_MASTER_CLOCK / 128) / HZ - 1); |
69 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_IER, (1<<4)); | 75 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_IER, (1<<4)); |
70 | 76 | ||
71 | setup_irq(AT91X40_ID_TC1, &at91x40_timer_irq); | 77 | setup_irq(AT91X40_ID_TC1, &at91x40_timer_irq); |
72 | 78 | ||
73 | at91_sys_write(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN)); | 79 | at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN)); |
74 | } | 80 | } |
75 | 81 | ||
76 | struct sys_timer at91x40_timer = { | 82 | struct sys_timer at91x40_timer = { |
diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c deleted file mode 100644 index ac3de4f7c31d..000000000000 --- a/arch/arm/mach-at91/board-cap9adk.c +++ /dev/null | |||
@@ -1,396 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91/board-cap9adk.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2005 SAN People | ||
7 | * Copyright (C) 2007 Atmel Corporation. | ||
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 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
22 | */ | ||
23 | |||
24 | #include <linux/types.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/mm.h> | ||
28 | #include <linux/module.h> | ||
29 | #include <linux/platform_device.h> | ||
30 | #include <linux/spi/spi.h> | ||
31 | #include <linux/spi/ads7846.h> | ||
32 | #include <linux/fb.h> | ||
33 | #include <linux/mtd/physmap.h> | ||
34 | |||
35 | #include <video/atmel_lcdc.h> | ||
36 | |||
37 | #include <mach/hardware.h> | ||
38 | #include <asm/setup.h> | ||
39 | #include <asm/mach-types.h> | ||
40 | |||
41 | #include <asm/mach/arch.h> | ||
42 | #include <asm/mach/map.h> | ||
43 | |||
44 | #include <mach/board.h> | ||
45 | #include <mach/at91cap9_matrix.h> | ||
46 | #include <mach/at91sam9_smc.h> | ||
47 | #include <mach/system_rev.h> | ||
48 | |||
49 | #include "sam9_smc.h" | ||
50 | #include "generic.h" | ||
51 | |||
52 | |||
53 | static void __init cap9adk_init_early(void) | ||
54 | { | ||
55 | /* Initialize processor: 12 MHz crystal */ | ||
56 | at91_initialize(12000000); | ||
57 | |||
58 | /* Setup the LEDs: USER1 and USER2 LED for cpu/timer... */ | ||
59 | at91_init_leds(AT91_PIN_PA10, AT91_PIN_PA11); | ||
60 | /* ... POWER LED always on */ | ||
61 | at91_set_gpio_output(AT91_PIN_PC29, 1); | ||
62 | |||
63 | /* Setup the serial ports and console */ | ||
64 | at91_register_uart(0, 0, 0); /* DBGU = ttyS0 */ | ||
65 | at91_set_serial_console(0); | ||
66 | } | ||
67 | |||
68 | /* | ||
69 | * USB Host port | ||
70 | */ | ||
71 | static struct at91_usbh_data __initdata cap9adk_usbh_data = { | ||
72 | .ports = 2, | ||
73 | .vbus_pin = {-EINVAL, -EINVAL}, | ||
74 | .overcurrent_pin= {-EINVAL, -EINVAL}, | ||
75 | }; | ||
76 | |||
77 | /* | ||
78 | * USB HS Device port | ||
79 | */ | ||
80 | static struct usba_platform_data __initdata cap9adk_usba_udc_data = { | ||
81 | .vbus_pin = AT91_PIN_PB31, | ||
82 | }; | ||
83 | |||
84 | /* | ||
85 | * ADS7846 Touchscreen | ||
86 | */ | ||
87 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
88 | static int ads7843_pendown_state(void) | ||
89 | { | ||
90 | return !at91_get_gpio_value(AT91_PIN_PC4); /* Touchscreen PENIRQ */ | ||
91 | } | ||
92 | |||
93 | static struct ads7846_platform_data ads_info = { | ||
94 | .model = 7843, | ||
95 | .x_min = 150, | ||
96 | .x_max = 3830, | ||
97 | .y_min = 190, | ||
98 | .y_max = 3830, | ||
99 | .vref_delay_usecs = 100, | ||
100 | .x_plate_ohms = 450, | ||
101 | .y_plate_ohms = 250, | ||
102 | .pressure_max = 15000, | ||
103 | .debounce_max = 1, | ||
104 | .debounce_rep = 0, | ||
105 | .debounce_tol = (~0), | ||
106 | .get_pendown_state = ads7843_pendown_state, | ||
107 | }; | ||
108 | |||
109 | static void __init cap9adk_add_device_ts(void) | ||
110 | { | ||
111 | at91_set_gpio_input(AT91_PIN_PC4, 1); /* Touchscreen PENIRQ */ | ||
112 | at91_set_gpio_input(AT91_PIN_PC5, 1); /* Touchscreen BUSY */ | ||
113 | } | ||
114 | #else | ||
115 | static void __init cap9adk_add_device_ts(void) {} | ||
116 | #endif | ||
117 | |||
118 | |||
119 | /* | ||
120 | * SPI devices. | ||
121 | */ | ||
122 | static struct spi_board_info cap9adk_spi_devices[] = { | ||
123 | #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD) | ||
124 | { /* DataFlash card */ | ||
125 | .modalias = "mtd_dataflash", | ||
126 | .chip_select = 0, | ||
127 | .max_speed_hz = 15 * 1000 * 1000, | ||
128 | .bus_num = 0, | ||
129 | }, | ||
130 | #endif | ||
131 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
132 | { | ||
133 | .modalias = "ads7846", | ||
134 | .chip_select = 3, /* can be 2 or 3, depending on J2 jumper */ | ||
135 | .max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */ | ||
136 | .bus_num = 0, | ||
137 | .platform_data = &ads_info, | ||
138 | .irq = AT91_PIN_PC4, | ||
139 | }, | ||
140 | #endif | ||
141 | }; | ||
142 | |||
143 | |||
144 | /* | ||
145 | * MCI (SD/MMC) | ||
146 | */ | ||
147 | static struct at91_mmc_data __initdata cap9adk_mmc_data = { | ||
148 | .wire4 = 1, | ||
149 | .det_pin = -EINVAL, | ||
150 | .wp_pin = -EINVAL, | ||
151 | .vcc_pin = -EINVAL, | ||
152 | }; | ||
153 | |||
154 | |||
155 | /* | ||
156 | * MACB Ethernet device | ||
157 | */ | ||
158 | static struct macb_platform_data __initdata cap9adk_macb_data = { | ||
159 | .phy_irq_pin = -EINVAL, | ||
160 | .is_rmii = 1, | ||
161 | }; | ||
162 | |||
163 | |||
164 | /* | ||
165 | * NAND flash | ||
166 | */ | ||
167 | static struct mtd_partition __initdata cap9adk_nand_partitions[] = { | ||
168 | { | ||
169 | .name = "NAND partition", | ||
170 | .offset = 0, | ||
171 | .size = MTDPART_SIZ_FULL, | ||
172 | }, | ||
173 | }; | ||
174 | |||
175 | static struct atmel_nand_data __initdata cap9adk_nand_data = { | ||
176 | .ale = 21, | ||
177 | .cle = 22, | ||
178 | .det_pin = -EINVAL, | ||
179 | .rdy_pin = -EINVAL, | ||
180 | .enable_pin = AT91_PIN_PD15, | ||
181 | .parts = cap9adk_nand_partitions, | ||
182 | .num_parts = ARRAY_SIZE(cap9adk_nand_partitions), | ||
183 | }; | ||
184 | |||
185 | static struct sam9_smc_config __initdata cap9adk_nand_smc_config = { | ||
186 | .ncs_read_setup = 1, | ||
187 | .nrd_setup = 2, | ||
188 | .ncs_write_setup = 1, | ||
189 | .nwe_setup = 2, | ||
190 | |||
191 | .ncs_read_pulse = 6, | ||
192 | .nrd_pulse = 4, | ||
193 | .ncs_write_pulse = 6, | ||
194 | .nwe_pulse = 4, | ||
195 | |||
196 | .read_cycle = 8, | ||
197 | .write_cycle = 8, | ||
198 | |||
199 | .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE, | ||
200 | .tdf_cycles = 1, | ||
201 | }; | ||
202 | |||
203 | static void __init cap9adk_add_device_nand(void) | ||
204 | { | ||
205 | unsigned long csa; | ||
206 | |||
207 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||
208 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); | ||
209 | |||
210 | cap9adk_nand_data.bus_width_16 = board_have_nand_16bit(); | ||
211 | /* setup bus-width (8 or 16) */ | ||
212 | if (cap9adk_nand_data.bus_width_16) | ||
213 | cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_16; | ||
214 | else | ||
215 | cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_8; | ||
216 | |||
217 | /* configure chip-select 3 (NAND) */ | ||
218 | sam9_smc_configure(0, 3, &cap9adk_nand_smc_config); | ||
219 | |||
220 | at91_add_device_nand(&cap9adk_nand_data); | ||
221 | } | ||
222 | |||
223 | |||
224 | /* | ||
225 | * NOR flash | ||
226 | */ | ||
227 | static struct mtd_partition cap9adk_nor_partitions[] = { | ||
228 | { | ||
229 | .name = "NOR partition", | ||
230 | .offset = 0, | ||
231 | .size = MTDPART_SIZ_FULL, | ||
232 | }, | ||
233 | }; | ||
234 | |||
235 | static struct physmap_flash_data cap9adk_nor_data = { | ||
236 | .width = 2, | ||
237 | .parts = cap9adk_nor_partitions, | ||
238 | .nr_parts = ARRAY_SIZE(cap9adk_nor_partitions), | ||
239 | }; | ||
240 | |||
241 | #define NOR_BASE AT91_CHIPSELECT_0 | ||
242 | #define NOR_SIZE SZ_8M | ||
243 | |||
244 | static struct resource nor_flash_resources[] = { | ||
245 | { | ||
246 | .start = NOR_BASE, | ||
247 | .end = NOR_BASE + NOR_SIZE - 1, | ||
248 | .flags = IORESOURCE_MEM, | ||
249 | } | ||
250 | }; | ||
251 | |||
252 | static struct platform_device cap9adk_nor_flash = { | ||
253 | .name = "physmap-flash", | ||
254 | .id = 0, | ||
255 | .dev = { | ||
256 | .platform_data = &cap9adk_nor_data, | ||
257 | }, | ||
258 | .resource = nor_flash_resources, | ||
259 | .num_resources = ARRAY_SIZE(nor_flash_resources), | ||
260 | }; | ||
261 | |||
262 | static struct sam9_smc_config __initdata cap9adk_nor_smc_config = { | ||
263 | .ncs_read_setup = 2, | ||
264 | .nrd_setup = 4, | ||
265 | .ncs_write_setup = 2, | ||
266 | .nwe_setup = 4, | ||
267 | |||
268 | .ncs_read_pulse = 10, | ||
269 | .nrd_pulse = 8, | ||
270 | .ncs_write_pulse = 10, | ||
271 | .nwe_pulse = 8, | ||
272 | |||
273 | .read_cycle = 16, | ||
274 | .write_cycle = 16, | ||
275 | |||
276 | .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_BAT_WRITE | AT91_SMC_DBW_16, | ||
277 | .tdf_cycles = 1, | ||
278 | }; | ||
279 | |||
280 | static __init void cap9adk_add_device_nor(void) | ||
281 | { | ||
282 | unsigned long csa; | ||
283 | |||
284 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||
285 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); | ||
286 | |||
287 | /* configure chip-select 0 (NOR) */ | ||
288 | sam9_smc_configure(0, 0, &cap9adk_nor_smc_config); | ||
289 | |||
290 | platform_device_register(&cap9adk_nor_flash); | ||
291 | } | ||
292 | |||
293 | |||
294 | /* | ||
295 | * LCD Controller | ||
296 | */ | ||
297 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
298 | static struct fb_videomode at91_tft_vga_modes[] = { | ||
299 | { | ||
300 | .name = "TX09D50VM1CCA @ 60", | ||
301 | .refresh = 60, | ||
302 | .xres = 240, .yres = 320, | ||
303 | .pixclock = KHZ2PICOS(4965), | ||
304 | |||
305 | .left_margin = 1, .right_margin = 33, | ||
306 | .upper_margin = 1, .lower_margin = 0, | ||
307 | .hsync_len = 5, .vsync_len = 1, | ||
308 | |||
309 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
310 | .vmode = FB_VMODE_NONINTERLACED, | ||
311 | }, | ||
312 | }; | ||
313 | |||
314 | static struct fb_monspecs at91fb_default_monspecs = { | ||
315 | .manufacturer = "HIT", | ||
316 | .monitor = "TX09D70VM1CCA", | ||
317 | |||
318 | .modedb = at91_tft_vga_modes, | ||
319 | .modedb_len = ARRAY_SIZE(at91_tft_vga_modes), | ||
320 | .hfmin = 15000, | ||
321 | .hfmax = 64000, | ||
322 | .vfmin = 50, | ||
323 | .vfmax = 150, | ||
324 | }; | ||
325 | |||
326 | #define AT91CAP9_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \ | ||
327 | | ATMEL_LCDC_DISTYPE_TFT \ | ||
328 | | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | ||
329 | |||
330 | static void at91_lcdc_power_control(int on) | ||
331 | { | ||
332 | if (on) | ||
333 | at91_set_gpio_value(AT91_PIN_PC0, 0); /* power up */ | ||
334 | else | ||
335 | at91_set_gpio_value(AT91_PIN_PC0, 1); /* power down */ | ||
336 | } | ||
337 | |||
338 | /* Driver datas */ | ||
339 | static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data = { | ||
340 | .default_bpp = 16, | ||
341 | .default_dmacon = ATMEL_LCDC_DMAEN, | ||
342 | .default_lcdcon2 = AT91CAP9_DEFAULT_LCDCON2, | ||
343 | .default_monspecs = &at91fb_default_monspecs, | ||
344 | .atmel_lcdfb_power_control = at91_lcdc_power_control, | ||
345 | .guard_time = 1, | ||
346 | }; | ||
347 | |||
348 | #else | ||
349 | static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data; | ||
350 | #endif | ||
351 | |||
352 | |||
353 | /* | ||
354 | * AC97 | ||
355 | */ | ||
356 | static struct ac97c_platform_data cap9adk_ac97_data = { | ||
357 | .reset_pin = -EINVAL, | ||
358 | }; | ||
359 | |||
360 | |||
361 | static void __init cap9adk_board_init(void) | ||
362 | { | ||
363 | /* Serial */ | ||
364 | at91_add_device_serial(); | ||
365 | /* USB Host */ | ||
366 | at91_add_device_usbh(&cap9adk_usbh_data); | ||
367 | /* USB HS */ | ||
368 | at91_add_device_usba(&cap9adk_usba_udc_data); | ||
369 | /* SPI */ | ||
370 | at91_add_device_spi(cap9adk_spi_devices, ARRAY_SIZE(cap9adk_spi_devices)); | ||
371 | /* Touchscreen */ | ||
372 | cap9adk_add_device_ts(); | ||
373 | /* MMC */ | ||
374 | at91_add_device_mmc(1, &cap9adk_mmc_data); | ||
375 | /* Ethernet */ | ||
376 | at91_add_device_eth(&cap9adk_macb_data); | ||
377 | /* NAND */ | ||
378 | cap9adk_add_device_nand(); | ||
379 | /* NOR Flash */ | ||
380 | cap9adk_add_device_nor(); | ||
381 | /* I2C */ | ||
382 | at91_add_device_i2c(NULL, 0); | ||
383 | /* LCD Controller */ | ||
384 | at91_add_device_lcdc(&cap9adk_lcdc_data); | ||
385 | /* AC97 */ | ||
386 | at91_add_device_ac97(&cap9adk_ac97_data); | ||
387 | } | ||
388 | |||
389 | MACHINE_START(AT91CAP9ADK, "Atmel AT91CAP9A-DK") | ||
390 | /* Maintainer: Stelian Pop <stelian.pop@leadtechdesign.com> */ | ||
391 | .timer = &at91sam926x_timer, | ||
392 | .map_io = at91_map_io, | ||
393 | .init_early = cap9adk_init_early, | ||
394 | .init_irq = at91_init_irq_default, | ||
395 | .init_machine = cap9adk_board_init, | ||
396 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c index 9ab3d1ea326d..989e1c5a9ca0 100644 --- a/arch/arm/mach-at91/board-cpu9krea.c +++ b/arch/arm/mach-at91/board-cpu9krea.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <mach/board.h> | 43 | #include <mach/board.h> |
44 | #include <mach/at91sam9_smc.h> | 44 | #include <mach/at91sam9_smc.h> |
45 | #include <mach/at91sam9260_matrix.h> | 45 | #include <mach/at91sam9260_matrix.h> |
46 | #include <mach/at91_matrix.h> | ||
46 | 47 | ||
47 | #include "sam9_smc.h" | 48 | #include "sam9_smc.h" |
48 | #include "generic.h" | 49 | #include "generic.h" |
@@ -238,8 +239,8 @@ static __init void cpu9krea_add_device_nor(void) | |||
238 | { | 239 | { |
239 | unsigned long csa; | 240 | unsigned long csa; |
240 | 241 | ||
241 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | 242 | csa = at91_matrix_read(AT91_MATRIX_EBICSA); |
242 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_VDDIOMSEL_3_3V); | 243 | at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_VDDIOMSEL_3_3V); |
243 | 244 | ||
244 | /* configure chip-select 0 (NOR) */ | 245 | /* configure chip-select 0 (NOR) */ |
245 | sam9_smc_configure(0, 0, &cpu9krea_nor_smc_config); | 246 | sam9_smc_configure(0, 0, &cpu9krea_nor_smc_config); |
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c index 368e1427ad99..e094cc81fe25 100644 --- a/arch/arm/mach-at91/board-cpuat91.c +++ b/arch/arm/mach-at91/board-cpuat91.c | |||
@@ -38,6 +38,7 @@ | |||
38 | 38 | ||
39 | #include <mach/board.h> | 39 | #include <mach/board.h> |
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | #include <mach/at91_ramc.h> | ||
41 | #include <mach/cpu.h> | 42 | #include <mach/cpu.h> |
42 | 43 | ||
43 | #include "generic.h" | 44 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c index bb6b434ec0c1..08c8ad8609b7 100644 --- a/arch/arm/mach-at91/board-dt.c +++ b/arch/arm/mach-at91/board-dt.c | |||
@@ -38,12 +38,6 @@ static void __init ek_init_early(void) | |||
38 | { | 38 | { |
39 | /* Initialize processor: 12.000 MHz crystal */ | 39 | /* Initialize processor: 12.000 MHz crystal */ |
40 | at91_initialize(12000000); | 40 | at91_initialize(12000000); |
41 | |||
42 | /* DGBU on ttyS0. (Rx & Tx only) */ | ||
43 | at91_register_uart(0, 0, 0); | ||
44 | |||
45 | /* set serial console to ttyS0 (ie, DBGU) */ | ||
46 | at91_set_serial_console(0); | ||
47 | } | 41 | } |
48 | 42 | ||
49 | /* det_pin is not connected */ | 43 | /* det_pin is not connected */ |
@@ -109,6 +103,7 @@ static void __init at91_dt_device_init(void) | |||
109 | 103 | ||
110 | static const char *at91_dt_board_compat[] __initdata = { | 104 | static const char *at91_dt_board_compat[] __initdata = { |
111 | "atmel,at91sam9m10g45ek", | 105 | "atmel,at91sam9m10g45ek", |
106 | "atmel,at91sam9x5ek", | ||
112 | "calao,usb-a9g20", | 107 | "calao,usb-a9g20", |
113 | NULL | 108 | NULL |
114 | }; | 109 | }; |
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c index 07ef35b0ec2c..f23aabef8551 100644 --- a/arch/arm/mach-at91/board-eco920.c +++ b/arch/arm/mach-at91/board-eco920.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <mach/board.h> | 27 | #include <mach/board.h> |
28 | #include <mach/at91rm9200_mc.h> | 28 | #include <mach/at91rm9200_mc.h> |
29 | #include <mach/at91_ramc.h> | ||
29 | #include <mach/cpu.h> | 30 | #include <mach/cpu.h> |
30 | 31 | ||
31 | #include "generic.h" | 32 | #include "generic.h" |
@@ -110,7 +111,7 @@ static void __init eco920_board_init(void) | |||
110 | at91_add_device_mmc(0, &eco920_mmc_data); | 111 | at91_add_device_mmc(0, &eco920_mmc_data); |
111 | platform_device_register(&eco920_flash); | 112 | platform_device_register(&eco920_flash); |
112 | 113 | ||
113 | at91_sys_write(AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1) | 114 | at91_ramc_write(0, AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1) |
114 | | AT91_SMC_RWSETUP_(1) | 115 | | AT91_SMC_RWSETUP_(1) |
115 | | AT91_SMC_DBW_8 | 116 | | AT91_SMC_DBW_8 |
116 | | AT91_SMC_WSEN | 117 | | AT91_SMC_WSEN |
@@ -122,7 +123,7 @@ static void __init eco920_board_init(void) | |||
122 | at91_set_deglitch(AT91_PIN_PA23, 1); | 123 | at91_set_deglitch(AT91_PIN_PA23, 1); |
123 | 124 | ||
124 | /* Initialization of the Static Memory Controller for Chip Select 3 */ | 125 | /* Initialization of the Static Memory Controller for Chip Select 3 */ |
125 | at91_sys_write(AT91_SMC_CSR(3), | 126 | at91_ramc_write(0, AT91_SMC_CSR(3), |
126 | AT91_SMC_DBW_16 | /* 16 bit */ | 127 | AT91_SMC_DBW_16 | /* 16 bit */ |
127 | AT91_SMC_WSEN | | 128 | AT91_SMC_WSEN | |
128 | AT91_SMC_NWS_(5) | /* wait states */ | 129 | AT91_SMC_NWS_(5) | /* wait states */ |
diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c index eec02cd57ced..1815152001f7 100644 --- a/arch/arm/mach-at91/board-flexibity.c +++ b/arch/arm/mach-at91/board-flexibity.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-at91/board-flexibity.c | 2 | * linux/arch/arm/mach-at91/board-flexibity.c |
3 | * | 3 | * |
4 | * Copyright (C) 2010 Flexibity | 4 | * Copyright (C) 2010-2011 Flexibity |
5 | * Copyright (C) 2005 SAN People | 5 | * Copyright (C) 2005 SAN People |
6 | * Copyright (C) 2006 Atmel | 6 | * Copyright (C) 2006 Atmel |
7 | * | 7 | * |
@@ -62,6 +62,13 @@ static struct at91_udc_data __initdata flexibity_udc_data = { | |||
62 | .pullup_pin = -EINVAL, /* pull-up driven by UDC */ | 62 | .pullup_pin = -EINVAL, /* pull-up driven by UDC */ |
63 | }; | 63 | }; |
64 | 64 | ||
65 | /* I2C devices */ | ||
66 | static struct i2c_board_info __initdata flexibity_i2c_devices[] = { | ||
67 | { | ||
68 | I2C_BOARD_INFO("ds1307", 0x68), | ||
69 | }, | ||
70 | }; | ||
71 | |||
65 | /* SPI devices */ | 72 | /* SPI devices */ |
66 | static struct spi_board_info flexibity_spi_devices[] = { | 73 | static struct spi_board_info flexibity_spi_devices[] = { |
67 | { /* DataFlash chip */ | 74 | { /* DataFlash chip */ |
@@ -141,6 +148,9 @@ static void __init flexibity_board_init(void) | |||
141 | at91_add_device_usbh(&flexibity_usbh_data); | 148 | at91_add_device_usbh(&flexibity_usbh_data); |
142 | /* USB Device */ | 149 | /* USB Device */ |
143 | at91_add_device_udc(&flexibity_udc_data); | 150 | at91_add_device_udc(&flexibity_udc_data); |
151 | /* I2C */ | ||
152 | at91_add_device_i2c(flexibity_i2c_devices, | ||
153 | ARRAY_SIZE(flexibity_i2c_devices)); | ||
144 | /* SPI */ | 154 | /* SPI */ |
145 | at91_add_device_spi(flexibity_spi_devices, | 155 | at91_add_device_spi(flexibity_spi_devices, |
146 | ARRAY_SIZE(flexibity_spi_devices)); | 156 | ARRAY_SIZE(flexibity_spi_devices)); |
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index d75a4a2ad9c2..bb9914582013 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <mach/board.h> | 38 | #include <mach/board.h> |
39 | #include <mach/cpu.h> | 39 | #include <mach/cpu.h> |
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | #include <mach/at91_ramc.h> | ||
41 | 42 | ||
42 | #include "generic.h" | 43 | #include "generic.h" |
43 | 44 | ||
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index ab024fa11d5c..59e35dd14863 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | #include <mach/board.h> | 40 | #include <mach/board.h> |
41 | #include <mach/at91rm9200_mc.h> | 41 | #include <mach/at91rm9200_mc.h> |
42 | #include <mach/at91_ramc.h> | ||
42 | 43 | ||
43 | #include "generic.h" | 44 | #include "generic.h" |
44 | 45 | ||
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c index 782f37946af5..9083df04e7ed 100644 --- a/arch/arm/mach-at91/board-rm9200dk.c +++ b/arch/arm/mach-at91/board-rm9200dk.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 42 | #include <mach/board.h> |
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | #include <mach/at91_ramc.h> | ||
44 | 45 | ||
45 | #include "generic.h" | 46 | #include "generic.h" |
46 | 47 | ||
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c index ef7c12a92246..11cbaa8946fe 100644 --- a/arch/arm/mach-at91/board-rm9200ek.c +++ b/arch/arm/mach-at91/board-rm9200ek.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 42 | #include <mach/board.h> |
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | #include <mach/at91_ramc.h> | ||
44 | 45 | ||
45 | #include "generic.h" | 46 | #include "generic.h" |
46 | 47 | ||
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index ea0d1b9c2b7b..57497e2b8878 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c | |||
@@ -24,11 +24,13 @@ | |||
24 | #include <linux/gpio_keys.h> | 24 | #include <linux/gpio_keys.h> |
25 | #include <linux/input.h> | 25 | #include <linux/input.h> |
26 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
27 | #include <linux/clk.h> | ||
28 | #include <linux/atmel-mci.h> | 27 | #include <linux/atmel-mci.h> |
28 | #include <linux/delay.h> | ||
29 | 29 | ||
30 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
31 | #include <video/atmel_lcdc.h> | 31 | #include <video/atmel_lcdc.h> |
32 | #include <media/soc_camera.h> | ||
33 | #include <media/atmel-isi.h> | ||
32 | 34 | ||
33 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
34 | #include <asm/mach-types.h> | 36 | #include <asm/mach-types.h> |
@@ -185,6 +187,71 @@ static void __init ek_add_device_nand(void) | |||
185 | 187 | ||
186 | 188 | ||
187 | /* | 189 | /* |
190 | * ISI | ||
191 | */ | ||
192 | static struct isi_platform_data __initdata isi_data = { | ||
193 | .frate = ISI_CFG1_FRATE_CAPTURE_ALL, | ||
194 | /* to use codec and preview path simultaneously */ | ||
195 | .full_mode = 1, | ||
196 | .data_width_flags = ISI_DATAWIDTH_8 | ISI_DATAWIDTH_10, | ||
197 | /* ISI_MCK is provided by programmable clock or external clock */ | ||
198 | .mck_hz = 25000000, | ||
199 | }; | ||
200 | |||
201 | |||
202 | /* | ||
203 | * soc-camera OV2640 | ||
204 | */ | ||
205 | #if defined(CONFIG_SOC_CAMERA_OV2640) || \ | ||
206 | defined(CONFIG_SOC_CAMERA_OV2640_MODULE) | ||
207 | static unsigned long isi_camera_query_bus_param(struct soc_camera_link *link) | ||
208 | { | ||
209 | /* ISI board for ek using default 8-bits connection */ | ||
210 | return SOCAM_DATAWIDTH_8; | ||
211 | } | ||
212 | |||
213 | static int i2c_camera_power(struct device *dev, int on) | ||
214 | { | ||
215 | /* enable or disable the camera */ | ||
216 | pr_debug("%s: %s the camera\n", __func__, on ? "ENABLE" : "DISABLE"); | ||
217 | at91_set_gpio_output(AT91_PIN_PD13, !on); | ||
218 | |||
219 | if (!on) | ||
220 | goto out; | ||
221 | |||
222 | /* If enabled, give a reset impulse */ | ||
223 | at91_set_gpio_output(AT91_PIN_PD12, 0); | ||
224 | msleep(20); | ||
225 | at91_set_gpio_output(AT91_PIN_PD12, 1); | ||
226 | msleep(100); | ||
227 | |||
228 | out: | ||
229 | return 0; | ||
230 | } | ||
231 | |||
232 | static struct i2c_board_info i2c_camera = { | ||
233 | I2C_BOARD_INFO("ov2640", 0x30), | ||
234 | }; | ||
235 | |||
236 | static struct soc_camera_link iclink_ov2640 = { | ||
237 | .bus_id = 0, | ||
238 | .board_info = &i2c_camera, | ||
239 | .i2c_adapter_id = 0, | ||
240 | .power = i2c_camera_power, | ||
241 | .query_bus_param = isi_camera_query_bus_param, | ||
242 | }; | ||
243 | |||
244 | static struct platform_device isi_ov2640 = { | ||
245 | .name = "soc-camera-pdrv", | ||
246 | .id = 0, | ||
247 | .dev = { | ||
248 | .platform_data = &iclink_ov2640, | ||
249 | }, | ||
250 | }; | ||
251 | #endif | ||
252 | |||
253 | |||
254 | /* | ||
188 | * LCD Controller | 255 | * LCD Controller |
189 | */ | 256 | */ |
190 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | 257 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
@@ -377,7 +444,12 @@ static struct gpio_led ek_pwm_led[] = { | |||
377 | #endif | 444 | #endif |
378 | }; | 445 | }; |
379 | 446 | ||
380 | 447 | static struct platform_device *devices[] __initdata = { | |
448 | #if defined(CONFIG_SOC_CAMERA_OV2640) || \ | ||
449 | defined(CONFIG_SOC_CAMERA_OV2640_MODULE) | ||
450 | &isi_ov2640, | ||
451 | #endif | ||
452 | }; | ||
381 | 453 | ||
382 | static void __init ek_board_init(void) | 454 | static void __init ek_board_init(void) |
383 | { | 455 | { |
@@ -399,6 +471,8 @@ static void __init ek_board_init(void) | |||
399 | ek_add_device_nand(); | 471 | ek_add_device_nand(); |
400 | /* I2C */ | 472 | /* I2C */ |
401 | at91_add_device_i2c(0, NULL, 0); | 473 | at91_add_device_i2c(0, NULL, 0); |
474 | /* ISI, using programmable clock as ISI_MCK */ | ||
475 | at91_add_device_isi(&isi_data, true); | ||
402 | /* LCD Controller */ | 476 | /* LCD Controller */ |
403 | at91_add_device_lcdc(&ek_lcdc_data); | 477 | at91_add_device_lcdc(&ek_lcdc_data); |
404 | /* Touch Screen */ | 478 | /* Touch Screen */ |
@@ -410,6 +484,8 @@ static void __init ek_board_init(void) | |||
410 | /* LEDs */ | 484 | /* LEDs */ |
411 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); | 485 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); |
412 | at91_pwm_leds(ek_pwm_led, ARRAY_SIZE(ek_pwm_led)); | 486 | at91_pwm_leds(ek_pwm_led, ARRAY_SIZE(ek_pwm_led)); |
487 | /* Other platform devices */ | ||
488 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
413 | } | 489 | } |
414 | 490 | ||
415 | MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") | 491 | MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") |
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index bbd553e1cd93..52f460768f71 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
46 | #include <mach/board.h> | 46 | #include <mach/board.h> |
47 | #include <mach/at91rm9200_mc.h> | 47 | #include <mach/at91rm9200_mc.h> |
48 | #include <mach/at91_ramc.h> | ||
48 | #include <mach/cpu.h> | 49 | #include <mach/cpu.h> |
49 | 50 | ||
50 | #include "generic.h" | 51 | #include "generic.h" |
@@ -393,7 +394,7 @@ static void yl9200_init_video(void) | |||
393 | at91_set_A_periph(AT91_PIN_PC6, 0); | 394 | at91_set_A_periph(AT91_PIN_PC6, 0); |
394 | 395 | ||
395 | /* Initialization of the Static Memory Controller for Chip Select 2 */ | 396 | /* Initialization of the Static Memory Controller for Chip Select 2 */ |
396 | at91_sys_write(AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */ | 397 | at91_ramc_write(0, AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */ |
397 | | AT91_SMC_WSEN | AT91_SMC_NWS_(0x4) /* wait states */ | 398 | | AT91_SMC_WSEN | AT91_SMC_NWS_(0x4) /* wait states */ |
398 | | AT91_SMC_TDF_(0x100) /* float time */ | 399 | | AT91_SMC_TDF_(0x100) /* float time */ |
399 | ); | 400 | ); |
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c index 61873f3aa92d..be51ca7f694d 100644 --- a/arch/arm/mach-at91/clock.c +++ b/arch/arm/mach-at91/clock.c | |||
@@ -28,9 +28,12 @@ | |||
28 | #include <mach/at91_pmc.h> | 28 | #include <mach/at91_pmc.h> |
29 | #include <mach/cpu.h> | 29 | #include <mach/cpu.h> |
30 | 30 | ||
31 | #include <asm/proc-fns.h> | ||
32 | |||
31 | #include "clock.h" | 33 | #include "clock.h" |
32 | #include "generic.h" | 34 | #include "generic.h" |
33 | 35 | ||
36 | void __iomem *at91_pmc_base; | ||
34 | 37 | ||
35 | /* | 38 | /* |
36 | * There's a lot more which can be done with clocks, including cpufreq | 39 | * There's a lot more which can be done with clocks, including cpufreq |
@@ -47,26 +50,38 @@ | |||
47 | /* | 50 | /* |
48 | * Chips have some kind of clocks : group them by functionality | 51 | * Chips have some kind of clocks : group them by functionality |
49 | */ | 52 | */ |
50 | #define cpu_has_utmi() ( cpu_is_at91cap9() \ | 53 | #define cpu_has_utmi() ( cpu_is_at91sam9rl() \ |
51 | || cpu_is_at91sam9rl() \ | 54 | || cpu_is_at91sam9g45() \ |
52 | || cpu_is_at91sam9g45()) | 55 | || cpu_is_at91sam9x5()) |
53 | 56 | ||
54 | #define cpu_has_800M_plla() ( cpu_is_at91sam9g20() \ | 57 | #define cpu_has_800M_plla() ( cpu_is_at91sam9g20() \ |
55 | || cpu_is_at91sam9g45()) | 58 | || cpu_is_at91sam9g45() \ |
59 | || cpu_is_at91sam9x5()) | ||
56 | 60 | ||
57 | #define cpu_has_300M_plla() (cpu_is_at91sam9g10()) | 61 | #define cpu_has_300M_plla() (cpu_is_at91sam9g10()) |
58 | 62 | ||
59 | #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \ | 63 | #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \ |
60 | || cpu_is_at91sam9g45())) | 64 | || cpu_is_at91sam9g45() \ |
65 | || cpu_is_at91sam9x5())) | ||
61 | 66 | ||
62 | #define cpu_has_upll() (cpu_is_at91sam9g45()) | 67 | #define cpu_has_upll() (cpu_is_at91sam9g45() \ |
68 | || cpu_is_at91sam9x5()) | ||
63 | 69 | ||
64 | /* USB host HS & FS */ | 70 | /* USB host HS & FS */ |
65 | #define cpu_has_uhp() (!cpu_is_at91sam9rl()) | 71 | #define cpu_has_uhp() (!cpu_is_at91sam9rl()) |
66 | 72 | ||
67 | /* USB device FS only */ | 73 | /* USB device FS only */ |
68 | #define cpu_has_udpfs() (!(cpu_is_at91sam9rl() \ | 74 | #define cpu_has_udpfs() (!(cpu_is_at91sam9rl() \ |
69 | || cpu_is_at91sam9g45())) | 75 | || cpu_is_at91sam9g45() \ |
76 | || cpu_is_at91sam9x5())) | ||
77 | |||
78 | #define cpu_has_plladiv2() (cpu_is_at91sam9g45() \ | ||
79 | || cpu_is_at91sam9x5()) | ||
80 | |||
81 | #define cpu_has_mdiv3() (cpu_is_at91sam9g45() \ | ||
82 | || cpu_is_at91sam9x5()) | ||
83 | |||
84 | #define cpu_has_alt_prescaler() (cpu_is_at91sam9x5()) | ||
70 | 85 | ||
71 | static LIST_HEAD(clocks); | 86 | static LIST_HEAD(clocks); |
72 | static DEFINE_SPINLOCK(clk_lock); | 87 | static DEFINE_SPINLOCK(clk_lock); |
@@ -111,11 +126,11 @@ static void pllb_mode(struct clk *clk, int is_on) | |||
111 | value = 0; | 126 | value = 0; |
112 | 127 | ||
113 | // REVISIT: Add work-around for AT91RM9200 Errata #26 ? | 128 | // REVISIT: Add work-around for AT91RM9200 Errata #26 ? |
114 | at91_sys_write(AT91_CKGR_PLLBR, value); | 129 | at91_pmc_write(AT91_CKGR_PLLBR, value); |
115 | 130 | ||
116 | do { | 131 | do { |
117 | cpu_relax(); | 132 | cpu_relax(); |
118 | } while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != is_on); | 133 | } while ((at91_pmc_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != is_on); |
119 | } | 134 | } |
120 | 135 | ||
121 | static struct clk pllb = { | 136 | static struct clk pllb = { |
@@ -130,31 +145,24 @@ static struct clk pllb = { | |||
130 | static void pmc_sys_mode(struct clk *clk, int is_on) | 145 | static void pmc_sys_mode(struct clk *clk, int is_on) |
131 | { | 146 | { |
132 | if (is_on) | 147 | if (is_on) |
133 | at91_sys_write(AT91_PMC_SCER, clk->pmc_mask); | 148 | at91_pmc_write(AT91_PMC_SCER, clk->pmc_mask); |
134 | else | 149 | else |
135 | at91_sys_write(AT91_PMC_SCDR, clk->pmc_mask); | 150 | at91_pmc_write(AT91_PMC_SCDR, clk->pmc_mask); |
136 | } | 151 | } |
137 | 152 | ||
138 | static void pmc_uckr_mode(struct clk *clk, int is_on) | 153 | static void pmc_uckr_mode(struct clk *clk, int is_on) |
139 | { | 154 | { |
140 | unsigned int uckr = at91_sys_read(AT91_CKGR_UCKR); | 155 | unsigned int uckr = at91_pmc_read(AT91_CKGR_UCKR); |
141 | |||
142 | if (cpu_is_at91sam9g45()) { | ||
143 | if (is_on) | ||
144 | uckr |= AT91_PMC_BIASEN; | ||
145 | else | ||
146 | uckr &= ~AT91_PMC_BIASEN; | ||
147 | } | ||
148 | 156 | ||
149 | if (is_on) { | 157 | if (is_on) { |
150 | is_on = AT91_PMC_LOCKU; | 158 | is_on = AT91_PMC_LOCKU; |
151 | at91_sys_write(AT91_CKGR_UCKR, uckr | clk->pmc_mask); | 159 | at91_pmc_write(AT91_CKGR_UCKR, uckr | clk->pmc_mask); |
152 | } else | 160 | } else |
153 | at91_sys_write(AT91_CKGR_UCKR, uckr & ~(clk->pmc_mask)); | 161 | at91_pmc_write(AT91_CKGR_UCKR, uckr & ~(clk->pmc_mask)); |
154 | 162 | ||
155 | do { | 163 | do { |
156 | cpu_relax(); | 164 | cpu_relax(); |
157 | } while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKU) != is_on); | 165 | } while ((at91_pmc_read(AT91_PMC_SR) & AT91_PMC_LOCKU) != is_on); |
158 | } | 166 | } |
159 | 167 | ||
160 | /* USB function clocks (PLLB must be 48 MHz) */ | 168 | /* USB function clocks (PLLB must be 48 MHz) */ |
@@ -190,9 +198,9 @@ struct clk mck = { | |||
190 | static void pmc_periph_mode(struct clk *clk, int is_on) | 198 | static void pmc_periph_mode(struct clk *clk, int is_on) |
191 | { | 199 | { |
192 | if (is_on) | 200 | if (is_on) |
193 | at91_sys_write(AT91_PMC_PCER, clk->pmc_mask); | 201 | at91_pmc_write(AT91_PMC_PCER, clk->pmc_mask); |
194 | else | 202 | else |
195 | at91_sys_write(AT91_PMC_PCDR, clk->pmc_mask); | 203 | at91_pmc_write(AT91_PMC_PCDR, clk->pmc_mask); |
196 | } | 204 | } |
197 | 205 | ||
198 | static struct clk __init *at91_css_to_clk(unsigned long css) | 206 | static struct clk __init *at91_css_to_clk(unsigned long css) |
@@ -210,11 +218,24 @@ static struct clk __init *at91_css_to_clk(unsigned long css) | |||
210 | return &utmi_clk; | 218 | return &utmi_clk; |
211 | else if (cpu_has_pllb()) | 219 | else if (cpu_has_pllb()) |
212 | return &pllb; | 220 | return &pllb; |
221 | break; | ||
222 | /* alternate PMC: can use master clock */ | ||
223 | case AT91_PMC_CSS_MASTER: | ||
224 | return &mck; | ||
213 | } | 225 | } |
214 | 226 | ||
215 | return NULL; | 227 | return NULL; |
216 | } | 228 | } |
217 | 229 | ||
230 | static int pmc_prescaler_divider(u32 reg) | ||
231 | { | ||
232 | if (cpu_has_alt_prescaler()) { | ||
233 | return 1 << ((reg & AT91_PMC_ALT_PRES) >> PMC_ALT_PRES_OFFSET); | ||
234 | } else { | ||
235 | return 1 << ((reg & AT91_PMC_PRES) >> PMC_PRES_OFFSET); | ||
236 | } | ||
237 | } | ||
238 | |||
218 | static void __clk_enable(struct clk *clk) | 239 | static void __clk_enable(struct clk *clk) |
219 | { | 240 | { |
220 | if (clk->parent) | 241 | if (clk->parent) |
@@ -316,12 +337,22 @@ int clk_set_rate(struct clk *clk, unsigned long rate) | |||
316 | { | 337 | { |
317 | unsigned long flags; | 338 | unsigned long flags; |
318 | unsigned prescale; | 339 | unsigned prescale; |
340 | unsigned long prescale_offset, css_mask; | ||
319 | unsigned long actual; | 341 | unsigned long actual; |
320 | 342 | ||
321 | if (!clk_is_programmable(clk)) | 343 | if (!clk_is_programmable(clk)) |
322 | return -EINVAL; | 344 | return -EINVAL; |
323 | if (clk->users) | 345 | if (clk->users) |
324 | return -EBUSY; | 346 | return -EBUSY; |
347 | |||
348 | if (cpu_has_alt_prescaler()) { | ||
349 | prescale_offset = PMC_ALT_PRES_OFFSET; | ||
350 | css_mask = AT91_PMC_ALT_PCKR_CSS; | ||
351 | } else { | ||
352 | prescale_offset = PMC_PRES_OFFSET; | ||
353 | css_mask = AT91_PMC_CSS; | ||
354 | } | ||
355 | |||
325 | spin_lock_irqsave(&clk_lock, flags); | 356 | spin_lock_irqsave(&clk_lock, flags); |
326 | 357 | ||
327 | actual = clk->parent->rate_hz; | 358 | actual = clk->parent->rate_hz; |
@@ -329,10 +360,10 @@ int clk_set_rate(struct clk *clk, unsigned long rate) | |||
329 | if (actual && actual <= rate) { | 360 | if (actual && actual <= rate) { |
330 | u32 pckr; | 361 | u32 pckr; |
331 | 362 | ||
332 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); | 363 | pckr = at91_pmc_read(AT91_PMC_PCKR(clk->id)); |
333 | pckr &= AT91_PMC_CSS; /* clock selection */ | 364 | pckr &= css_mask; /* keep clock selection */ |
334 | pckr |= prescale << 2; | 365 | pckr |= prescale << prescale_offset; |
335 | at91_sys_write(AT91_PMC_PCKR(clk->id), pckr); | 366 | at91_pmc_write(AT91_PMC_PCKR(clk->id), pckr); |
336 | clk->rate_hz = actual; | 367 | clk->rate_hz = actual; |
337 | break; | 368 | break; |
338 | } | 369 | } |
@@ -366,7 +397,7 @@ int clk_set_parent(struct clk *clk, struct clk *parent) | |||
366 | 397 | ||
367 | clk->rate_hz = parent->rate_hz; | 398 | clk->rate_hz = parent->rate_hz; |
368 | clk->parent = parent; | 399 | clk->parent = parent; |
369 | at91_sys_write(AT91_PMC_PCKR(clk->id), parent->id); | 400 | at91_pmc_write(AT91_PMC_PCKR(clk->id), parent->id); |
370 | 401 | ||
371 | spin_unlock_irqrestore(&clk_lock, flags); | 402 | spin_unlock_irqrestore(&clk_lock, flags); |
372 | return 0; | 403 | return 0; |
@@ -378,11 +409,17 @@ static void __init init_programmable_clock(struct clk *clk) | |||
378 | { | 409 | { |
379 | struct clk *parent; | 410 | struct clk *parent; |
380 | u32 pckr; | 411 | u32 pckr; |
412 | unsigned int css_mask; | ||
413 | |||
414 | if (cpu_has_alt_prescaler()) | ||
415 | css_mask = AT91_PMC_ALT_PCKR_CSS; | ||
416 | else | ||
417 | css_mask = AT91_PMC_CSS; | ||
381 | 418 | ||
382 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); | 419 | pckr = at91_pmc_read(AT91_PMC_PCKR(clk->id)); |
383 | parent = at91_css_to_clk(pckr & AT91_PMC_CSS); | 420 | parent = at91_css_to_clk(pckr & css_mask); |
384 | clk->parent = parent; | 421 | clk->parent = parent; |
385 | clk->rate_hz = parent->rate_hz / (1 << ((pckr & AT91_PMC_PRES) >> 2)); | 422 | clk->rate_hz = parent->rate_hz / pmc_prescaler_divider(pckr); |
386 | } | 423 | } |
387 | 424 | ||
388 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | 425 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ |
@@ -396,19 +433,24 @@ static int at91_clk_show(struct seq_file *s, void *unused) | |||
396 | u32 scsr, pcsr, uckr = 0, sr; | 433 | u32 scsr, pcsr, uckr = 0, sr; |
397 | struct clk *clk; | 434 | struct clk *clk; |
398 | 435 | ||
399 | seq_printf(s, "SCSR = %8x\n", scsr = at91_sys_read(AT91_PMC_SCSR)); | 436 | scsr = at91_pmc_read(AT91_PMC_SCSR); |
400 | seq_printf(s, "PCSR = %8x\n", pcsr = at91_sys_read(AT91_PMC_PCSR)); | 437 | pcsr = at91_pmc_read(AT91_PMC_PCSR); |
401 | seq_printf(s, "MOR = %8x\n", at91_sys_read(AT91_CKGR_MOR)); | 438 | sr = at91_pmc_read(AT91_PMC_SR); |
402 | seq_printf(s, "MCFR = %8x\n", at91_sys_read(AT91_CKGR_MCFR)); | 439 | seq_printf(s, "SCSR = %8x\n", scsr); |
403 | seq_printf(s, "PLLA = %8x\n", at91_sys_read(AT91_CKGR_PLLAR)); | 440 | seq_printf(s, "PCSR = %8x\n", pcsr); |
441 | seq_printf(s, "MOR = %8x\n", at91_pmc_read(AT91_CKGR_MOR)); | ||
442 | seq_printf(s, "MCFR = %8x\n", at91_pmc_read(AT91_CKGR_MCFR)); | ||
443 | seq_printf(s, "PLLA = %8x\n", at91_pmc_read(AT91_CKGR_PLLAR)); | ||
404 | if (cpu_has_pllb()) | 444 | if (cpu_has_pllb()) |
405 | seq_printf(s, "PLLB = %8x\n", at91_sys_read(AT91_CKGR_PLLBR)); | 445 | seq_printf(s, "PLLB = %8x\n", at91_pmc_read(AT91_CKGR_PLLBR)); |
406 | if (cpu_has_utmi()) | 446 | if (cpu_has_utmi()) { |
407 | seq_printf(s, "UCKR = %8x\n", uckr = at91_sys_read(AT91_CKGR_UCKR)); | 447 | uckr = at91_pmc_read(AT91_CKGR_UCKR); |
408 | seq_printf(s, "MCKR = %8x\n", at91_sys_read(AT91_PMC_MCKR)); | 448 | seq_printf(s, "UCKR = %8x\n", uckr); |
449 | } | ||
450 | seq_printf(s, "MCKR = %8x\n", at91_pmc_read(AT91_PMC_MCKR)); | ||
409 | if (cpu_has_upll()) | 451 | if (cpu_has_upll()) |
410 | seq_printf(s, "USB = %8x\n", at91_sys_read(AT91_PMC_USB)); | 452 | seq_printf(s, "USB = %8x\n", at91_pmc_read(AT91_PMC_USB)); |
411 | seq_printf(s, "SR = %8x\n", sr = at91_sys_read(AT91_PMC_SR)); | 453 | seq_printf(s, "SR = %8x\n", sr); |
412 | 454 | ||
413 | seq_printf(s, "\n"); | 455 | seq_printf(s, "\n"); |
414 | 456 | ||
@@ -596,16 +638,14 @@ static void __init at91_pllb_usbfs_clock_init(unsigned long main_clock) | |||
596 | if (cpu_is_at91rm9200()) { | 638 | if (cpu_is_at91rm9200()) { |
597 | uhpck.pmc_mask = AT91RM9200_PMC_UHP; | 639 | uhpck.pmc_mask = AT91RM9200_PMC_UHP; |
598 | udpck.pmc_mask = AT91RM9200_PMC_UDP; | 640 | udpck.pmc_mask = AT91RM9200_PMC_UDP; |
599 | at91_sys_write(AT91_PMC_SCER, AT91RM9200_PMC_MCKUDP); | 641 | at91_pmc_write(AT91_PMC_SCER, AT91RM9200_PMC_MCKUDP); |
600 | } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || | 642 | } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || |
601 | cpu_is_at91sam9263() || cpu_is_at91sam9g20() || | 643 | cpu_is_at91sam9263() || cpu_is_at91sam9g20() || |
602 | cpu_is_at91sam9g10()) { | 644 | cpu_is_at91sam9g10()) { |
603 | uhpck.pmc_mask = AT91SAM926x_PMC_UHP; | 645 | uhpck.pmc_mask = AT91SAM926x_PMC_UHP; |
604 | udpck.pmc_mask = AT91SAM926x_PMC_UDP; | 646 | udpck.pmc_mask = AT91SAM926x_PMC_UDP; |
605 | } else if (cpu_is_at91cap9()) { | ||
606 | uhpck.pmc_mask = AT91CAP9_PMC_UHP; | ||
607 | } | 647 | } |
608 | at91_sys_write(AT91_CKGR_PLLBR, 0); | 648 | at91_pmc_write(AT91_CKGR_PLLBR, 0); |
609 | 649 | ||
610 | udpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init); | 650 | udpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init); |
611 | uhpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init); | 651 | uhpck.rate_hz = at91_usb_rate(&pllb, pllb.rate_hz, at91_pllb_usb_init); |
@@ -622,13 +662,13 @@ static void __init at91_upll_usbfs_clock_init(unsigned long main_clock) | |||
622 | /* Setup divider by 10 to reach 48 MHz */ | 662 | /* Setup divider by 10 to reach 48 MHz */ |
623 | usbr |= ((10 - 1) << 8) & AT91_PMC_OHCIUSBDIV; | 663 | usbr |= ((10 - 1) << 8) & AT91_PMC_OHCIUSBDIV; |
624 | 664 | ||
625 | at91_sys_write(AT91_PMC_USB, usbr); | 665 | at91_pmc_write(AT91_PMC_USB, usbr); |
626 | 666 | ||
627 | /* Now set uhpck values */ | 667 | /* Now set uhpck values */ |
628 | uhpck.parent = &utmi_clk; | 668 | uhpck.parent = &utmi_clk; |
629 | uhpck.pmc_mask = AT91SAM926x_PMC_UHP; | 669 | uhpck.pmc_mask = AT91SAM926x_PMC_UHP; |
630 | uhpck.rate_hz = utmi_clk.rate_hz; | 670 | uhpck.rate_hz = utmi_clk.rate_hz; |
631 | uhpck.rate_hz /= 1 + ((at91_sys_read(AT91_PMC_USB) & AT91_PMC_OHCIUSBDIV) >> 8); | 671 | uhpck.rate_hz /= 1 + ((at91_pmc_read(AT91_PMC_USB) & AT91_PMC_OHCIUSBDIV) >> 8); |
632 | } | 672 | } |
633 | 673 | ||
634 | int __init at91_clock_init(unsigned long main_clock) | 674 | int __init at91_clock_init(unsigned long main_clock) |
@@ -637,6 +677,10 @@ int __init at91_clock_init(unsigned long main_clock) | |||
637 | int i; | 677 | int i; |
638 | int pll_overclock = false; | 678 | int pll_overclock = false; |
639 | 679 | ||
680 | at91_pmc_base = ioremap(AT91_PMC, 256); | ||
681 | if (!at91_pmc_base) | ||
682 | panic("Impossible to ioremap AT91_PMC 0x%x\n", AT91_PMC); | ||
683 | |||
640 | /* | 684 | /* |
641 | * When the bootloader initialized the main oscillator correctly, | 685 | * When the bootloader initialized the main oscillator correctly, |
642 | * there's no problem using the cycle counter. But if it didn't, | 686 | * there's no problem using the cycle counter. But if it didn't, |
@@ -645,14 +689,14 @@ int __init at91_clock_init(unsigned long main_clock) | |||
645 | */ | 689 | */ |
646 | if (!main_clock) { | 690 | if (!main_clock) { |
647 | do { | 691 | do { |
648 | tmp = at91_sys_read(AT91_CKGR_MCFR); | 692 | tmp = at91_pmc_read(AT91_CKGR_MCFR); |
649 | } while (!(tmp & AT91_PMC_MAINRDY)); | 693 | } while (!(tmp & AT91_PMC_MAINRDY)); |
650 | main_clock = (tmp & AT91_PMC_MAINF) * (AT91_SLOW_CLOCK / 16); | 694 | main_clock = (tmp & AT91_PMC_MAINF) * (AT91_SLOW_CLOCK / 16); |
651 | } | 695 | } |
652 | main_clk.rate_hz = main_clock; | 696 | main_clk.rate_hz = main_clock; |
653 | 697 | ||
654 | /* report if PLLA is more than mildly overclocked */ | 698 | /* report if PLLA is more than mildly overclocked */ |
655 | plla.rate_hz = at91_pll_rate(&plla, main_clock, at91_sys_read(AT91_CKGR_PLLAR)); | 699 | plla.rate_hz = at91_pll_rate(&plla, main_clock, at91_pmc_read(AT91_CKGR_PLLAR)); |
656 | if (cpu_has_300M_plla()) { | 700 | if (cpu_has_300M_plla()) { |
657 | if (plla.rate_hz > 300000000) | 701 | if (plla.rate_hz > 300000000) |
658 | pll_overclock = true; | 702 | pll_overclock = true; |
@@ -666,8 +710,8 @@ int __init at91_clock_init(unsigned long main_clock) | |||
666 | if (pll_overclock) | 710 | if (pll_overclock) |
667 | pr_info("Clocks: PLLA overclocked, %ld MHz\n", plla.rate_hz / 1000000); | 711 | pr_info("Clocks: PLLA overclocked, %ld MHz\n", plla.rate_hz / 1000000); |
668 | 712 | ||
669 | if (cpu_is_at91sam9g45()) { | 713 | if (cpu_has_plladiv2()) { |
670 | mckr = at91_sys_read(AT91_PMC_MCKR); | 714 | mckr = at91_pmc_read(AT91_PMC_MCKR); |
671 | plla.rate_hz /= (1 << ((mckr & AT91_PMC_PLLADIV2) >> 12)); /* plla divisor by 2 */ | 715 | plla.rate_hz /= (1 << ((mckr & AT91_PMC_PLLADIV2) >> 12)); /* plla divisor by 2 */ |
672 | } | 716 | } |
673 | 717 | ||
@@ -688,6 +732,10 @@ int __init at91_clock_init(unsigned long main_clock) | |||
688 | * (obtain the USB High Speed 480 MHz when input is 12 MHz) | 732 | * (obtain the USB High Speed 480 MHz when input is 12 MHz) |
689 | */ | 733 | */ |
690 | utmi_clk.rate_hz = 40 * utmi_clk.parent->rate_hz; | 734 | utmi_clk.rate_hz = 40 * utmi_clk.parent->rate_hz; |
735 | |||
736 | /* UTMI bias and PLL are managed at the same time */ | ||
737 | if (cpu_has_upll()) | ||
738 | utmi_clk.pmc_mask |= AT91_PMC_BIASEN; | ||
691 | } | 739 | } |
692 | 740 | ||
693 | /* | 741 | /* |
@@ -703,10 +751,10 @@ int __init at91_clock_init(unsigned long main_clock) | |||
703 | * MCK and CPU derive from one of those primary clocks. | 751 | * MCK and CPU derive from one of those primary clocks. |
704 | * For now, assume this parentage won't change. | 752 | * For now, assume this parentage won't change. |
705 | */ | 753 | */ |
706 | mckr = at91_sys_read(AT91_PMC_MCKR); | 754 | mckr = at91_pmc_read(AT91_PMC_MCKR); |
707 | mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); | 755 | mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); |
708 | freq = mck.parent->rate_hz; | 756 | freq = mck.parent->rate_hz; |
709 | freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */ | 757 | freq /= pmc_prescaler_divider(mckr); /* prescale */ |
710 | if (cpu_is_at91rm9200()) { | 758 | if (cpu_is_at91rm9200()) { |
711 | mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ | 759 | mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ |
712 | } else if (cpu_is_at91sam9g20()) { | 760 | } else if (cpu_is_at91sam9g20()) { |
@@ -714,13 +762,19 @@ int __init at91_clock_init(unsigned long main_clock) | |||
714 | freq / ((mckr & AT91_PMC_MDIV) >> 7) : freq; /* mdiv ; (x >> 7) = ((x >> 8) * 2) */ | 762 | freq / ((mckr & AT91_PMC_MDIV) >> 7) : freq; /* mdiv ; (x >> 7) = ((x >> 8) * 2) */ |
715 | if (mckr & AT91_PMC_PDIV) | 763 | if (mckr & AT91_PMC_PDIV) |
716 | freq /= 2; /* processor clock division */ | 764 | freq /= 2; /* processor clock division */ |
717 | } else if (cpu_is_at91sam9g45()) { | 765 | } else if (cpu_has_mdiv3()) { |
718 | mck.rate_hz = (mckr & AT91_PMC_MDIV) == AT91SAM9_PMC_MDIV_3 ? | 766 | mck.rate_hz = (mckr & AT91_PMC_MDIV) == AT91SAM9_PMC_MDIV_3 ? |
719 | freq / 3 : freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ | 767 | freq / 3 : freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ |
720 | } else { | 768 | } else { |
721 | mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ | 769 | mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ |
722 | } | 770 | } |
723 | 771 | ||
772 | if (cpu_has_alt_prescaler()) { | ||
773 | /* Programmable clocks can use MCK */ | ||
774 | mck.type |= CLK_TYPE_PRIMARY; | ||
775 | mck.id = 4; | ||
776 | } | ||
777 | |||
724 | /* Register the PMC's standard clocks */ | 778 | /* Register the PMC's standard clocks */ |
725 | for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) | 779 | for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) |
726 | at91_clk_add(standard_pmc_clocks[i]); | 780 | at91_clk_add(standard_pmc_clocks[i]); |
@@ -770,9 +824,15 @@ static int __init at91_clock_reset(void) | |||
770 | pr_debug("Clocks: disable unused %s\n", clk->name); | 824 | pr_debug("Clocks: disable unused %s\n", clk->name); |
771 | } | 825 | } |
772 | 826 | ||
773 | at91_sys_write(AT91_PMC_PCDR, pcdr); | 827 | at91_pmc_write(AT91_PMC_PCDR, pcdr); |
774 | at91_sys_write(AT91_PMC_SCDR, scdr); | 828 | at91_pmc_write(AT91_PMC_SCDR, scdr); |
775 | 829 | ||
776 | return 0; | 830 | return 0; |
777 | } | 831 | } |
778 | late_initcall(at91_clock_reset); | 832 | late_initcall(at91_clock_reset); |
833 | |||
834 | void at91sam9_idle(void) | ||
835 | { | ||
836 | at91_pmc_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||
837 | cpu_do_idle(); | ||
838 | } | ||
diff --git a/arch/arm/mach-at91/cpuidle.c b/arch/arm/mach-at91/cpuidle.c index a851e6c98421..555d956b3a57 100644 --- a/arch/arm/mach-at91/cpuidle.c +++ b/arch/arm/mach-at91/cpuidle.c | |||
@@ -39,20 +39,15 @@ static int at91_enter_idle(struct cpuidle_device *dev, | |||
39 | { | 39 | { |
40 | struct timeval before, after; | 40 | struct timeval before, after; |
41 | int idle_time; | 41 | int idle_time; |
42 | u32 saved_lpr; | ||
43 | 42 | ||
44 | local_irq_disable(); | 43 | local_irq_disable(); |
45 | do_gettimeofday(&before); | 44 | do_gettimeofday(&before); |
46 | if (index == 0) | 45 | if (index == 0) |
47 | /* Wait for interrupt state */ | 46 | /* Wait for interrupt state */ |
48 | cpu_do_idle(); | 47 | cpu_do_idle(); |
49 | else if (index == 1) { | 48 | else if (index == 1) |
50 | asm("b 1f; .align 5; 1:"); | 49 | at91_standby(); |
51 | asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */ | 50 | |
52 | saved_lpr = sdram_selfrefresh_enable(); | ||
53 | cpu_do_idle(); | ||
54 | sdram_selfrefresh_disable(saved_lpr); | ||
55 | } | ||
56 | do_gettimeofday(&after); | 51 | do_gettimeofday(&after); |
57 | local_irq_enable(); | 52 | local_irq_enable(); |
58 | idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC + | 53 | idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC + |
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index 594133451c0c..4cad85e57470 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h | |||
@@ -28,6 +28,7 @@ extern void __init at91_aic_init(unsigned int priority[]); | |||
28 | 28 | ||
29 | /* Timer */ | 29 | /* Timer */ |
30 | struct sys_timer; | 30 | struct sys_timer; |
31 | extern void at91rm9200_ioremap_st(u32 addr); | ||
31 | extern struct sys_timer at91rm9200_timer; | 32 | extern struct sys_timer at91rm9200_timer; |
32 | extern void at91sam926x_ioremap_pit(u32 addr); | 33 | extern void at91sam926x_ioremap_pit(u32 addr); |
33 | extern struct sys_timer at91sam926x_timer; | 34 | extern struct sys_timer at91sam926x_timer; |
@@ -45,7 +46,6 @@ extern void __init at91sam9261_set_console_clock(int id); | |||
45 | extern void __init at91sam9263_set_console_clock(int id); | 46 | extern void __init at91sam9263_set_console_clock(int id); |
46 | extern void __init at91sam9rl_set_console_clock(int id); | 47 | extern void __init at91sam9rl_set_console_clock(int id); |
47 | extern void __init at91sam9g45_set_console_clock(int id); | 48 | extern void __init at91sam9g45_set_console_clock(int id); |
48 | extern void __init at91cap9_set_console_clock(int id); | ||
49 | #ifdef CONFIG_AT91_PMC_UNIT | 49 | #ifdef CONFIG_AT91_PMC_UNIT |
50 | extern int __init at91_clock_init(unsigned long main_clock); | 50 | extern int __init at91_clock_init(unsigned long main_clock); |
51 | #else | 51 | #else |
@@ -57,6 +57,9 @@ struct device; | |||
57 | extern void at91_irq_suspend(void); | 57 | extern void at91_irq_suspend(void); |
58 | extern void at91_irq_resume(void); | 58 | extern void at91_irq_resume(void); |
59 | 59 | ||
60 | /* idle */ | ||
61 | extern void at91sam9_idle(void); | ||
62 | |||
60 | /* reset */ | 63 | /* reset */ |
61 | extern void at91_ioremap_rstc(u32 base_addr); | 64 | extern void at91_ioremap_rstc(u32 base_addr); |
62 | extern void at91sam9_alt_restart(char, const char *); | 65 | extern void at91sam9_alt_restart(char, const char *); |
@@ -65,6 +68,12 @@ extern void at91sam9g45_restart(char, const char *); | |||
65 | /* shutdown */ | 68 | /* shutdown */ |
66 | extern void at91_ioremap_shdwc(u32 base_addr); | 69 | extern void at91_ioremap_shdwc(u32 base_addr); |
67 | 70 | ||
71 | /* Matrix */ | ||
72 | extern void at91_ioremap_matrix(u32 base_addr); | ||
73 | |||
74 | /* Ram Controler */ | ||
75 | extern void at91_ioremap_ramc(int id, u32 addr, u32 size); | ||
76 | |||
68 | /* GPIO */ | 77 | /* GPIO */ |
69 | #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */ | 78 | #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */ |
70 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ | 79 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ |
diff --git a/arch/arm/mach-at91/include/mach/at91_matrix.h b/arch/arm/mach-at91/include/mach/at91_matrix.h new file mode 100644 index 000000000000..02fae9de746b --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91_matrix.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
3 | * | ||
4 | * Under GPLv2 | ||
5 | */ | ||
6 | |||
7 | #ifndef __MACH_AT91_MATRIX_H__ | ||
8 | #define __MACH_AT91_MATRIX_H__ | ||
9 | |||
10 | #ifndef __ASSEMBLY__ | ||
11 | extern void __iomem *at91_matrix_base; | ||
12 | |||
13 | #define at91_matrix_read(field) \ | ||
14 | __raw_readl(at91_matrix_base + field) | ||
15 | |||
16 | #define at91_matrix_write(field, value) \ | ||
17 | __raw_writel(value, at91_matrix_base + field); | ||
18 | |||
19 | #else | ||
20 | .extern at91_matrix_base | ||
21 | #endif | ||
22 | |||
23 | #endif /* __MACH_AT91_MATRIX_H__ */ | ||
diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h index e46f93e34aab..36604782a78f 100644 --- a/arch/arm/mach-at91/include/mach/at91_pmc.h +++ b/arch/arm/mach-at91/include/mach/at91_pmc.h | |||
@@ -16,17 +16,27 @@ | |||
16 | #ifndef AT91_PMC_H | 16 | #ifndef AT91_PMC_H |
17 | #define AT91_PMC_H | 17 | #define AT91_PMC_H |
18 | 18 | ||
19 | #define AT91_PMC_SCER (AT91_PMC + 0x00) /* System Clock Enable Register */ | 19 | #ifndef __ASSEMBLY__ |
20 | #define AT91_PMC_SCDR (AT91_PMC + 0x04) /* System Clock Disable Register */ | 20 | extern void __iomem *at91_pmc_base; |
21 | 21 | ||
22 | #define AT91_PMC_SCSR (AT91_PMC + 0x08) /* System Clock Status Register */ | 22 | #define at91_pmc_read(field) \ |
23 | __raw_readl(at91_pmc_base + field) | ||
24 | |||
25 | #define at91_pmc_write(field, value) \ | ||
26 | __raw_writel(value, at91_pmc_base + field) | ||
27 | #else | ||
28 | .extern at91_aic_base | ||
29 | #endif | ||
30 | |||
31 | #define AT91_PMC_SCER 0x00 /* System Clock Enable Register */ | ||
32 | #define AT91_PMC_SCDR 0x04 /* System Clock Disable Register */ | ||
33 | |||
34 | #define AT91_PMC_SCSR 0x08 /* System Clock Status Register */ | ||
23 | #define AT91_PMC_PCK (1 << 0) /* Processor Clock */ | 35 | #define AT91_PMC_PCK (1 << 0) /* Processor Clock */ |
24 | #define AT91RM9200_PMC_UDP (1 << 1) /* USB Devcice Port Clock [AT91RM9200 only] */ | 36 | #define AT91RM9200_PMC_UDP (1 << 1) /* USB Devcice Port Clock [AT91RM9200 only] */ |
25 | #define AT91RM9200_PMC_MCKUDP (1 << 2) /* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */ | 37 | #define AT91RM9200_PMC_MCKUDP (1 << 2) /* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */ |
26 | #define AT91CAP9_PMC_DDR (1 << 2) /* DDR Clock [CAP9 revC & some SAM9 only] */ | ||
27 | #define AT91RM9200_PMC_UHP (1 << 4) /* USB Host Port Clock [AT91RM9200 only] */ | 38 | #define AT91RM9200_PMC_UHP (1 << 4) /* USB Host Port Clock [AT91RM9200 only] */ |
28 | #define AT91SAM926x_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91SAM926x only] */ | 39 | #define AT91SAM926x_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91SAM926x only] */ |
29 | #define AT91CAP9_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91CAP9 only] */ | ||
30 | #define AT91SAM926x_PMC_UDP (1 << 7) /* USB Devcice Port Clock [AT91SAM926x only] */ | 40 | #define AT91SAM926x_PMC_UDP (1 << 7) /* USB Devcice Port Clock [AT91SAM926x only] */ |
31 | #define AT91_PMC_PCK0 (1 << 8) /* Programmable Clock 0 */ | 41 | #define AT91_PMC_PCK0 (1 << 8) /* Programmable Clock 0 */ |
32 | #define AT91_PMC_PCK1 (1 << 9) /* Programmable Clock 1 */ | 42 | #define AT91_PMC_PCK1 (1 << 9) /* Programmable Clock 1 */ |
@@ -36,27 +46,31 @@ | |||
36 | #define AT91_PMC_HCK0 (1 << 16) /* AHB Clock (USB host) [AT91SAM9261 only] */ | 46 | #define AT91_PMC_HCK0 (1 << 16) /* AHB Clock (USB host) [AT91SAM9261 only] */ |
37 | #define AT91_PMC_HCK1 (1 << 17) /* AHB Clock (LCD) [AT91SAM9261 only] */ | 47 | #define AT91_PMC_HCK1 (1 << 17) /* AHB Clock (LCD) [AT91SAM9261 only] */ |
38 | 48 | ||
39 | #define AT91_PMC_PCER (AT91_PMC + 0x10) /* Peripheral Clock Enable Register */ | 49 | #define AT91_PMC_PCER 0x10 /* Peripheral Clock Enable Register */ |
40 | #define AT91_PMC_PCDR (AT91_PMC + 0x14) /* Peripheral Clock Disable Register */ | 50 | #define AT91_PMC_PCDR 0x14 /* Peripheral Clock Disable Register */ |
41 | #define AT91_PMC_PCSR (AT91_PMC + 0x18) /* Peripheral Clock Status Register */ | 51 | #define AT91_PMC_PCSR 0x18 /* Peripheral Clock Status Register */ |
42 | 52 | ||
43 | #define AT91_CKGR_UCKR (AT91_PMC + 0x1C) /* UTMI Clock Register [some SAM9, CAP9] */ | 53 | #define AT91_CKGR_UCKR 0x1C /* UTMI Clock Register [some SAM9] */ |
44 | #define AT91_PMC_UPLLEN (1 << 16) /* UTMI PLL Enable */ | 54 | #define AT91_PMC_UPLLEN (1 << 16) /* UTMI PLL Enable */ |
45 | #define AT91_PMC_UPLLCOUNT (0xf << 20) /* UTMI PLL Start-up Time */ | 55 | #define AT91_PMC_UPLLCOUNT (0xf << 20) /* UTMI PLL Start-up Time */ |
46 | #define AT91_PMC_BIASEN (1 << 24) /* UTMI BIAS Enable */ | 56 | #define AT91_PMC_BIASEN (1 << 24) /* UTMI BIAS Enable */ |
47 | #define AT91_PMC_BIASCOUNT (0xf << 28) /* UTMI BIAS Start-up Time */ | 57 | #define AT91_PMC_BIASCOUNT (0xf << 28) /* UTMI BIAS Start-up Time */ |
48 | 58 | ||
49 | #define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register [not on SAM9RL] */ | 59 | #define AT91_CKGR_MOR 0x20 /* Main Oscillator Register [not on SAM9RL] */ |
50 | #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ | 60 | #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ |
51 | #define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [SAM9x, CAP9] */ | 61 | #define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass */ |
52 | #define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ | 62 | #define AT91_PMC_MOSCRCEN (1 << 3) /* Main On-Chip RC Oscillator Enable [some SAM9] */ |
63 | #define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ | ||
64 | #define AT91_PMC_KEY (0x37 << 16) /* MOR Writing Key */ | ||
65 | #define AT91_PMC_MOSCSEL (1 << 24) /* Main Oscillator Selection [some SAM9] */ | ||
66 | #define AT91_PMC_CFDEN (1 << 25) /* Clock Failure Detector Enable [some SAM9] */ | ||
53 | 67 | ||
54 | #define AT91_CKGR_MCFR (AT91_PMC + 0x24) /* Main Clock Frequency Register */ | 68 | #define AT91_CKGR_MCFR 0x24 /* Main Clock Frequency Register */ |
55 | #define AT91_PMC_MAINF (0xffff << 0) /* Main Clock Frequency */ | 69 | #define AT91_PMC_MAINF (0xffff << 0) /* Main Clock Frequency */ |
56 | #define AT91_PMC_MAINRDY (1 << 16) /* Main Clock Ready */ | 70 | #define AT91_PMC_MAINRDY (1 << 16) /* Main Clock Ready */ |
57 | 71 | ||
58 | #define AT91_CKGR_PLLAR (AT91_PMC + 0x28) /* PLL A Register */ | 72 | #define AT91_CKGR_PLLAR 0x28 /* PLL A Register */ |
59 | #define AT91_CKGR_PLLBR (AT91_PMC + 0x2c) /* PLL B Register */ | 73 | #define AT91_CKGR_PLLBR 0x2c /* PLL B Register */ |
60 | #define AT91_PMC_DIV (0xff << 0) /* Divider */ | 74 | #define AT91_PMC_DIV (0xff << 0) /* Divider */ |
61 | #define AT91_PMC_PLLCOUNT (0x3f << 8) /* PLL Counter */ | 75 | #define AT91_PMC_PLLCOUNT (0x3f << 8) /* PLL Counter */ |
62 | #define AT91_PMC_OUT (3 << 14) /* PLL Clock Frequency Range */ | 76 | #define AT91_PMC_OUT (3 << 14) /* PLL Clock Frequency Range */ |
@@ -67,27 +81,37 @@ | |||
67 | #define AT91_PMC_USBDIV_4 (2 << 28) | 81 | #define AT91_PMC_USBDIV_4 (2 << 28) |
68 | #define AT91_PMC_USB96M (1 << 28) /* Divider by 2 Enable (PLLB only) */ | 82 | #define AT91_PMC_USB96M (1 << 28) /* Divider by 2 Enable (PLLB only) */ |
69 | 83 | ||
70 | #define AT91_PMC_MCKR (AT91_PMC + 0x30) /* Master Clock Register */ | 84 | #define AT91_PMC_MCKR 0x30 /* Master Clock Register */ |
71 | #define AT91_PMC_CSS (3 << 0) /* Master Clock Selection */ | 85 | #define AT91_PMC_CSS (3 << 0) /* Master Clock Selection */ |
72 | #define AT91_PMC_CSS_SLOW (0 << 0) | 86 | #define AT91_PMC_CSS_SLOW (0 << 0) |
73 | #define AT91_PMC_CSS_MAIN (1 << 0) | 87 | #define AT91_PMC_CSS_MAIN (1 << 0) |
74 | #define AT91_PMC_CSS_PLLA (2 << 0) | 88 | #define AT91_PMC_CSS_PLLA (2 << 0) |
75 | #define AT91_PMC_CSS_PLLB (3 << 0) | 89 | #define AT91_PMC_CSS_PLLB (3 << 0) |
76 | #define AT91_PMC_CSS_UPLL (3 << 0) /* [some SAM9 only] */ | 90 | #define AT91_PMC_CSS_UPLL (3 << 0) /* [some SAM9 only] */ |
77 | #define AT91_PMC_PRES (7 << 2) /* Master Clock Prescaler */ | 91 | #define PMC_PRES_OFFSET 2 |
78 | #define AT91_PMC_PRES_1 (0 << 2) | 92 | #define AT91_PMC_PRES (7 << PMC_PRES_OFFSET) /* Master Clock Prescaler */ |
79 | #define AT91_PMC_PRES_2 (1 << 2) | 93 | #define AT91_PMC_PRES_1 (0 << PMC_PRES_OFFSET) |
80 | #define AT91_PMC_PRES_4 (2 << 2) | 94 | #define AT91_PMC_PRES_2 (1 << PMC_PRES_OFFSET) |
81 | #define AT91_PMC_PRES_8 (3 << 2) | 95 | #define AT91_PMC_PRES_4 (2 << PMC_PRES_OFFSET) |
82 | #define AT91_PMC_PRES_16 (4 << 2) | 96 | #define AT91_PMC_PRES_8 (3 << PMC_PRES_OFFSET) |
83 | #define AT91_PMC_PRES_32 (5 << 2) | 97 | #define AT91_PMC_PRES_16 (4 << PMC_PRES_OFFSET) |
84 | #define AT91_PMC_PRES_64 (6 << 2) | 98 | #define AT91_PMC_PRES_32 (5 << PMC_PRES_OFFSET) |
99 | #define AT91_PMC_PRES_64 (6 << PMC_PRES_OFFSET) | ||
100 | #define PMC_ALT_PRES_OFFSET 4 | ||
101 | #define AT91_PMC_ALT_PRES (7 << PMC_ALT_PRES_OFFSET) /* Master Clock Prescaler [alternate location] */ | ||
102 | #define AT91_PMC_ALT_PRES_1 (0 << PMC_ALT_PRES_OFFSET) | ||
103 | #define AT91_PMC_ALT_PRES_2 (1 << PMC_ALT_PRES_OFFSET) | ||
104 | #define AT91_PMC_ALT_PRES_4 (2 << PMC_ALT_PRES_OFFSET) | ||
105 | #define AT91_PMC_ALT_PRES_8 (3 << PMC_ALT_PRES_OFFSET) | ||
106 | #define AT91_PMC_ALT_PRES_16 (4 << PMC_ALT_PRES_OFFSET) | ||
107 | #define AT91_PMC_ALT_PRES_32 (5 << PMC_ALT_PRES_OFFSET) | ||
108 | #define AT91_PMC_ALT_PRES_64 (6 << PMC_ALT_PRES_OFFSET) | ||
85 | #define AT91_PMC_MDIV (3 << 8) /* Master Clock Division */ | 109 | #define AT91_PMC_MDIV (3 << 8) /* Master Clock Division */ |
86 | #define AT91RM9200_PMC_MDIV_1 (0 << 8) /* [AT91RM9200 only] */ | 110 | #define AT91RM9200_PMC_MDIV_1 (0 << 8) /* [AT91RM9200 only] */ |
87 | #define AT91RM9200_PMC_MDIV_2 (1 << 8) | 111 | #define AT91RM9200_PMC_MDIV_2 (1 << 8) |
88 | #define AT91RM9200_PMC_MDIV_3 (2 << 8) | 112 | #define AT91RM9200_PMC_MDIV_3 (2 << 8) |
89 | #define AT91RM9200_PMC_MDIV_4 (3 << 8) | 113 | #define AT91RM9200_PMC_MDIV_4 (3 << 8) |
90 | #define AT91SAM9_PMC_MDIV_1 (0 << 8) /* [SAM9,CAP9 only] */ | 114 | #define AT91SAM9_PMC_MDIV_1 (0 << 8) /* [SAM9 only] */ |
91 | #define AT91SAM9_PMC_MDIV_2 (1 << 8) | 115 | #define AT91SAM9_PMC_MDIV_2 (1 << 8) |
92 | #define AT91SAM9_PMC_MDIV_4 (2 << 8) | 116 | #define AT91SAM9_PMC_MDIV_4 (2 << 8) |
93 | #define AT91SAM9_PMC_MDIV_6 (3 << 8) /* [some SAM9 only] */ | 117 | #define AT91SAM9_PMC_MDIV_6 (3 << 8) /* [some SAM9 only] */ |
@@ -99,35 +123,55 @@ | |||
99 | #define AT91_PMC_PLLADIV2_OFF (0 << 12) | 123 | #define AT91_PMC_PLLADIV2_OFF (0 << 12) |
100 | #define AT91_PMC_PLLADIV2_ON (1 << 12) | 124 | #define AT91_PMC_PLLADIV2_ON (1 << 12) |
101 | 125 | ||
102 | #define AT91_PMC_USB (AT91_PMC + 0x38) /* USB Clock Register [some SAM9 only] */ | 126 | #define AT91_PMC_USB 0x38 /* USB Clock Register [some SAM9 only] */ |
103 | #define AT91_PMC_USBS (0x1 << 0) /* USB OHCI Input clock selection */ | 127 | #define AT91_PMC_USBS (0x1 << 0) /* USB OHCI Input clock selection */ |
104 | #define AT91_PMC_USBS_PLLA (0 << 0) | 128 | #define AT91_PMC_USBS_PLLA (0 << 0) |
105 | #define AT91_PMC_USBS_UPLL (1 << 0) | 129 | #define AT91_PMC_USBS_UPLL (1 << 0) |
106 | #define AT91_PMC_OHCIUSBDIV (0xF << 8) /* Divider for USB OHCI Clock */ | 130 | #define AT91_PMC_OHCIUSBDIV (0xF << 8) /* Divider for USB OHCI Clock */ |
107 | 131 | ||
108 | #define AT91_PMC_PCKR(n) (AT91_PMC + 0x40 + ((n) * 4)) /* Programmable Clock 0-N Registers */ | 132 | #define AT91_PMC_SMD 0x3c /* Soft Modem Clock Register [some SAM9 only] */ |
133 | #define AT91_PMC_SMDS (0x1 << 0) /* SMD input clock selection */ | ||
134 | #define AT91_PMC_SMD_DIV (0x1f << 8) /* SMD input clock divider */ | ||
135 | #define AT91_PMC_SMDDIV(n) (((n) << 8) & AT91_PMC_SMD_DIV) | ||
136 | |||
137 | #define AT91_PMC_PCKR(n) (0x40 + ((n) * 4)) /* Programmable Clock 0-N Registers */ | ||
138 | #define AT91_PMC_ALT_PCKR_CSS (0x7 << 0) /* Programmable Clock Source Selection [alternate length] */ | ||
139 | #define AT91_PMC_CSS_MASTER (4 << 0) /* [some SAM9 only] */ | ||
109 | #define AT91_PMC_CSSMCK (0x1 << 8) /* CSS or Master Clock Selection */ | 140 | #define AT91_PMC_CSSMCK (0x1 << 8) /* CSS or Master Clock Selection */ |
110 | #define AT91_PMC_CSSMCK_CSS (0 << 8) | 141 | #define AT91_PMC_CSSMCK_CSS (0 << 8) |
111 | #define AT91_PMC_CSSMCK_MCK (1 << 8) | 142 | #define AT91_PMC_CSSMCK_MCK (1 << 8) |
112 | 143 | ||
113 | #define AT91_PMC_IER (AT91_PMC + 0x60) /* Interrupt Enable Register */ | 144 | #define AT91_PMC_IER 0x60 /* Interrupt Enable Register */ |
114 | #define AT91_PMC_IDR (AT91_PMC + 0x64) /* Interrupt Disable Register */ | 145 | #define AT91_PMC_IDR 0x64 /* Interrupt Disable Register */ |
115 | #define AT91_PMC_SR (AT91_PMC + 0x68) /* Status Register */ | 146 | #define AT91_PMC_SR 0x68 /* Status Register */ |
116 | #define AT91_PMC_MOSCS (1 << 0) /* MOSCS Flag */ | 147 | #define AT91_PMC_MOSCS (1 << 0) /* MOSCS Flag */ |
117 | #define AT91_PMC_LOCKA (1 << 1) /* PLLA Lock */ | 148 | #define AT91_PMC_LOCKA (1 << 1) /* PLLA Lock */ |
118 | #define AT91_PMC_LOCKB (1 << 2) /* PLLB Lock */ | 149 | #define AT91_PMC_LOCKB (1 << 2) /* PLLB Lock */ |
119 | #define AT91_PMC_MCKRDY (1 << 3) /* Master Clock */ | 150 | #define AT91_PMC_MCKRDY (1 << 3) /* Master Clock */ |
120 | #define AT91_PMC_LOCKU (1 << 6) /* UPLL Lock [some SAM9, AT91CAP9 only] */ | 151 | #define AT91_PMC_LOCKU (1 << 6) /* UPLL Lock [some SAM9] */ |
121 | #define AT91_PMC_OSCSEL (1 << 7) /* Slow Clock Oscillator [AT91CAP9 revC only] */ | ||
122 | #define AT91_PMC_PCK0RDY (1 << 8) /* Programmable Clock 0 */ | 152 | #define AT91_PMC_PCK0RDY (1 << 8) /* Programmable Clock 0 */ |
123 | #define AT91_PMC_PCK1RDY (1 << 9) /* Programmable Clock 1 */ | 153 | #define AT91_PMC_PCK1RDY (1 << 9) /* Programmable Clock 1 */ |
124 | #define AT91_PMC_PCK2RDY (1 << 10) /* Programmable Clock 2 */ | 154 | #define AT91_PMC_PCK2RDY (1 << 10) /* Programmable Clock 2 */ |
125 | #define AT91_PMC_PCK3RDY (1 << 11) /* Programmable Clock 3 */ | 155 | #define AT91_PMC_PCK3RDY (1 << 11) /* Programmable Clock 3 */ |
126 | #define AT91_PMC_IMR (AT91_PMC + 0x6c) /* Interrupt Mask Register */ | 156 | #define AT91_PMC_MOSCSELS (1 << 16) /* Main Oscillator Selection [some SAM9] */ |
157 | #define AT91_PMC_MOSCRCS (1 << 17) /* Main On-Chip RC [some SAM9] */ | ||
158 | #define AT91_PMC_CFDEV (1 << 18) /* Clock Failure Detector Event [some SAM9] */ | ||
159 | #define AT91_PMC_IMR 0x6c /* Interrupt Mask Register */ | ||
160 | |||
161 | #define AT91_PMC_PROT 0xe4 /* Write Protect Mode Register [some SAM9] */ | ||
162 | #define AT91_PMC_WPEN (0x1 << 0) /* Write Protect Enable */ | ||
163 | #define AT91_PMC_WPKEY (0xffffff << 8) /* Write Protect Key */ | ||
164 | #define AT91_PMC_PROTKEY (0x504d43 << 8) /* Activation Code */ | ||
127 | 165 | ||
128 | #define AT91_PMC_PROT (AT91_PMC + 0xe4) /* Protect Register [AT91CAP9 revC only] */ | 166 | #define AT91_PMC_WPSR 0xe8 /* Write Protect Status Register [some SAM9] */ |
129 | #define AT91_PMC_PROTKEY 0x504d4301 /* Activation Code */ | 167 | #define AT91_PMC_WPVS (0x1 << 0) /* Write Protect Violation Status */ |
168 | #define AT91_PMC_WPVSRC (0xffff << 8) /* Write Protect Violation Source */ | ||
130 | 169 | ||
131 | #define AT91_PMC_VER (AT91_PMC + 0xfc) /* PMC Module Version [AT91CAP9 only] */ | 170 | #define AT91_PMC_PCR 0x10c /* Peripheral Control Register [some SAM9] */ |
171 | #define AT91_PMC_PCR_PID (0x3f << 0) /* Peripheral ID */ | ||
172 | #define AT91_PMC_PCR_CMD (0x1 << 12) /* Command */ | ||
173 | #define AT91_PMC_PCR_DIV (0x3 << 16) /* Divisor Value */ | ||
174 | #define AT91_PMC_PCRDIV(n) (((n) << 16) & AT91_PMC_PCR_DIV) | ||
175 | #define AT91_PMC_PCR_EN (0x1 << 28) /* Enable */ | ||
132 | 176 | ||
133 | #endif | 177 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91_ramc.h b/arch/arm/mach-at91/include/mach/at91_ramc.h new file mode 100644 index 000000000000..d8aeb278614e --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91_ramc.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * Header file for the Atmel RAM Controller | ||
3 | * | ||
4 | * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
5 | * | ||
6 | * Under GPLv2 only | ||
7 | */ | ||
8 | |||
9 | #ifndef __AT91_RAMC_H__ | ||
10 | #define __AT91_RAMC_H__ | ||
11 | |||
12 | #ifndef __ASSEMBLY__ | ||
13 | extern void __iomem *at91_ramc_base[]; | ||
14 | |||
15 | #define at91_ramc_read(id, field) \ | ||
16 | __raw_readl(at91_ramc_base[id] + field) | ||
17 | |||
18 | #define at91_ramc_write(id, field, value) \ | ||
19 | __raw_writel(value, at91_ramc_base[id] + field) | ||
20 | #else | ||
21 | .extern at91_ramc_base | ||
22 | #endif | ||
23 | |||
24 | #define AT91_MEMCTRL_MC 0 | ||
25 | #define AT91_MEMCTRL_SDRAMC 1 | ||
26 | #define AT91_MEMCTRL_DDRSDR 2 | ||
27 | |||
28 | #include <mach/at91rm9200_sdramc.h> | ||
29 | #include <mach/at91sam9_ddrsdr.h> | ||
30 | #include <mach/at91sam9_sdramc.h> | ||
31 | |||
32 | #endif /* __AT91_RAMC_H__ */ | ||
diff --git a/arch/arm/mach-at91/include/mach/at91_st.h b/arch/arm/mach-at91/include/mach/at91_st.h index 8847173e4101..969aac27109f 100644 --- a/arch/arm/mach-at91/include/mach/at91_st.h +++ b/arch/arm/mach-at91/include/mach/at91_st.h | |||
@@ -16,34 +16,46 @@ | |||
16 | #ifndef AT91_ST_H | 16 | #ifndef AT91_ST_H |
17 | #define AT91_ST_H | 17 | #define AT91_ST_H |
18 | 18 | ||
19 | #define AT91_ST_CR (AT91_ST + 0x00) /* Control Register */ | 19 | #ifndef __ASSEMBLY__ |
20 | extern void __iomem *at91_st_base; | ||
21 | |||
22 | #define at91_st_read(field) \ | ||
23 | __raw_readl(at91_st_base + field) | ||
24 | |||
25 | #define at91_st_write(field, value) \ | ||
26 | __raw_writel(value, at91_st_base + field); | ||
27 | #else | ||
28 | .extern at91_st_base | ||
29 | #endif | ||
30 | |||
31 | #define AT91_ST_CR 0x00 /* Control Register */ | ||
20 | #define AT91_ST_WDRST (1 << 0) /* Watchdog Timer Restart */ | 32 | #define AT91_ST_WDRST (1 << 0) /* Watchdog Timer Restart */ |
21 | 33 | ||
22 | #define AT91_ST_PIMR (AT91_ST + 0x04) /* Period Interval Mode Register */ | 34 | #define AT91_ST_PIMR 0x04 /* Period Interval Mode Register */ |
23 | #define AT91_ST_PIV (0xffff << 0) /* Period Interval Value */ | 35 | #define AT91_ST_PIV (0xffff << 0) /* Period Interval Value */ |
24 | 36 | ||
25 | #define AT91_ST_WDMR (AT91_ST + 0x08) /* Watchdog Mode Register */ | 37 | #define AT91_ST_WDMR 0x08 /* Watchdog Mode Register */ |
26 | #define AT91_ST_WDV (0xffff << 0) /* Watchdog Counter Value */ | 38 | #define AT91_ST_WDV (0xffff << 0) /* Watchdog Counter Value */ |
27 | #define AT91_ST_RSTEN (1 << 16) /* Reset Enable */ | 39 | #define AT91_ST_RSTEN (1 << 16) /* Reset Enable */ |
28 | #define AT91_ST_EXTEN (1 << 17) /* External Signal Assertion Enable */ | 40 | #define AT91_ST_EXTEN (1 << 17) /* External Signal Assertion Enable */ |
29 | 41 | ||
30 | #define AT91_ST_RTMR (AT91_ST + 0x0c) /* Real-time Mode Register */ | 42 | #define AT91_ST_RTMR 0x0c /* Real-time Mode Register */ |
31 | #define AT91_ST_RTPRES (0xffff << 0) /* Real-time Prescalar Value */ | 43 | #define AT91_ST_RTPRES (0xffff << 0) /* Real-time Prescalar Value */ |
32 | 44 | ||
33 | #define AT91_ST_SR (AT91_ST + 0x10) /* Status Register */ | 45 | #define AT91_ST_SR 0x10 /* Status Register */ |
34 | #define AT91_ST_PITS (1 << 0) /* Period Interval Timer Status */ | 46 | #define AT91_ST_PITS (1 << 0) /* Period Interval Timer Status */ |
35 | #define AT91_ST_WDOVF (1 << 1) /* Watchdog Overflow */ | 47 | #define AT91_ST_WDOVF (1 << 1) /* Watchdog Overflow */ |
36 | #define AT91_ST_RTTINC (1 << 2) /* Real-time Timer Increment */ | 48 | #define AT91_ST_RTTINC (1 << 2) /* Real-time Timer Increment */ |
37 | #define AT91_ST_ALMS (1 << 3) /* Alarm Status */ | 49 | #define AT91_ST_ALMS (1 << 3) /* Alarm Status */ |
38 | 50 | ||
39 | #define AT91_ST_IER (AT91_ST + 0x14) /* Interrupt Enable Register */ | 51 | #define AT91_ST_IER 0x14 /* Interrupt Enable Register */ |
40 | #define AT91_ST_IDR (AT91_ST + 0x18) /* Interrupt Disable Register */ | 52 | #define AT91_ST_IDR 0x18 /* Interrupt Disable Register */ |
41 | #define AT91_ST_IMR (AT91_ST + 0x1c) /* Interrupt Mask Register */ | 53 | #define AT91_ST_IMR 0x1c /* Interrupt Mask Register */ |
42 | 54 | ||
43 | #define AT91_ST_RTAR (AT91_ST + 0x20) /* Real-time Alarm Register */ | 55 | #define AT91_ST_RTAR 0x20 /* Real-time Alarm Register */ |
44 | #define AT91_ST_ALMV (0xfffff << 0) /* Alarm Value */ | 56 | #define AT91_ST_ALMV (0xfffff << 0) /* Alarm Value */ |
45 | 57 | ||
46 | #define AT91_ST_CRTR (AT91_ST + 0x24) /* Current Real-time Register */ | 58 | #define AT91_ST_CRTR 0x24 /* Current Real-time Register */ |
47 | #define AT91_ST_CRTV (0xfffff << 0) /* Current Real-Time Value */ | 59 | #define AT91_ST_CRTV (0xfffff << 0) /* Current Real-Time Value */ |
48 | 60 | ||
49 | #endif | 61 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91cap9.h b/arch/arm/mach-at91/include/mach/at91cap9.h deleted file mode 100644 index 61d952902f2b..000000000000 --- a/arch/arm/mach-at91/include/mach/at91cap9.h +++ /dev/null | |||
@@ -1,122 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/include/mach/at91cap9.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2007 Atmel Corporation. | ||
7 | * | ||
8 | * Common definitions. | ||
9 | * Based on AT91CAP9 datasheet revision B (Preliminary). | ||
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 as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | */ | ||
16 | |||
17 | #ifndef AT91CAP9_H | ||
18 | #define AT91CAP9_H | ||
19 | |||
20 | /* | ||
21 | * Peripheral identifiers/interrupts. | ||
22 | */ | ||
23 | #define AT91CAP9_ID_PIOABCD 2 /* Parallel IO Controller A, B, C and D */ | ||
24 | #define AT91CAP9_ID_MPB0 3 /* MP Block Peripheral 0 */ | ||
25 | #define AT91CAP9_ID_MPB1 4 /* MP Block Peripheral 1 */ | ||
26 | #define AT91CAP9_ID_MPB2 5 /* MP Block Peripheral 2 */ | ||
27 | #define AT91CAP9_ID_MPB3 6 /* MP Block Peripheral 3 */ | ||
28 | #define AT91CAP9_ID_MPB4 7 /* MP Block Peripheral 4 */ | ||
29 | #define AT91CAP9_ID_US0 8 /* USART 0 */ | ||
30 | #define AT91CAP9_ID_US1 9 /* USART 1 */ | ||
31 | #define AT91CAP9_ID_US2 10 /* USART 2 */ | ||
32 | #define AT91CAP9_ID_MCI0 11 /* Multimedia Card Interface 0 */ | ||
33 | #define AT91CAP9_ID_MCI1 12 /* Multimedia Card Interface 1 */ | ||
34 | #define AT91CAP9_ID_CAN 13 /* CAN */ | ||
35 | #define AT91CAP9_ID_TWI 14 /* Two-Wire Interface */ | ||
36 | #define AT91CAP9_ID_SPI0 15 /* Serial Peripheral Interface 0 */ | ||
37 | #define AT91CAP9_ID_SPI1 16 /* Serial Peripheral Interface 0 */ | ||
38 | #define AT91CAP9_ID_SSC0 17 /* Serial Synchronous Controller 0 */ | ||
39 | #define AT91CAP9_ID_SSC1 18 /* Serial Synchronous Controller 1 */ | ||
40 | #define AT91CAP9_ID_AC97C 19 /* AC97 Controller */ | ||
41 | #define AT91CAP9_ID_TCB 20 /* Timer Counter 0, 1 and 2 */ | ||
42 | #define AT91CAP9_ID_PWMC 21 /* Pulse Width Modulation Controller */ | ||
43 | #define AT91CAP9_ID_EMAC 22 /* Ethernet */ | ||
44 | #define AT91CAP9_ID_AESTDES 23 /* Advanced Encryption Standard, Triple DES */ | ||
45 | #define AT91CAP9_ID_ADC 24 /* Analog-to-Digital Converter */ | ||
46 | #define AT91CAP9_ID_ISI 25 /* Image Sensor Interface */ | ||
47 | #define AT91CAP9_ID_LCDC 26 /* LCD Controller */ | ||
48 | #define AT91CAP9_ID_DMA 27 /* DMA Controller */ | ||
49 | #define AT91CAP9_ID_UDPHS 28 /* USB High Speed Device Port */ | ||
50 | #define AT91CAP9_ID_UHP 29 /* USB Host Port */ | ||
51 | #define AT91CAP9_ID_IRQ0 30 /* Advanced Interrupt Controller (IRQ0) */ | ||
52 | #define AT91CAP9_ID_IRQ1 31 /* Advanced Interrupt Controller (IRQ1) */ | ||
53 | |||
54 | /* | ||
55 | * User Peripheral physical base addresses. | ||
56 | */ | ||
57 | #define AT91CAP9_BASE_UDPHS 0xfff78000 | ||
58 | #define AT91CAP9_BASE_TCB0 0xfff7c000 | ||
59 | #define AT91CAP9_BASE_TC0 0xfff7c000 | ||
60 | #define AT91CAP9_BASE_TC1 0xfff7c040 | ||
61 | #define AT91CAP9_BASE_TC2 0xfff7c080 | ||
62 | #define AT91CAP9_BASE_MCI0 0xfff80000 | ||
63 | #define AT91CAP9_BASE_MCI1 0xfff84000 | ||
64 | #define AT91CAP9_BASE_TWI 0xfff88000 | ||
65 | #define AT91CAP9_BASE_US0 0xfff8c000 | ||
66 | #define AT91CAP9_BASE_US1 0xfff90000 | ||
67 | #define AT91CAP9_BASE_US2 0xfff94000 | ||
68 | #define AT91CAP9_BASE_SSC0 0xfff98000 | ||
69 | #define AT91CAP9_BASE_SSC1 0xfff9c000 | ||
70 | #define AT91CAP9_BASE_AC97C 0xfffa0000 | ||
71 | #define AT91CAP9_BASE_SPI0 0xfffa4000 | ||
72 | #define AT91CAP9_BASE_SPI1 0xfffa8000 | ||
73 | #define AT91CAP9_BASE_CAN 0xfffac000 | ||
74 | #define AT91CAP9_BASE_PWMC 0xfffb8000 | ||
75 | #define AT91CAP9_BASE_EMAC 0xfffbc000 | ||
76 | #define AT91CAP9_BASE_ADC 0xfffc0000 | ||
77 | #define AT91CAP9_BASE_ISI 0xfffc4000 | ||
78 | |||
79 | /* | ||
80 | * System Peripherals (offset from AT91_BASE_SYS) | ||
81 | */ | ||
82 | #define AT91_BCRAMC (0xffffe400 - AT91_BASE_SYS) | ||
83 | #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) | ||
84 | #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) | ||
85 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
86 | #define AT91_GPBR (cpu_is_at91cap9_revB() ? \ | ||
87 | (0xfffffd50 - AT91_BASE_SYS) : \ | ||
88 | (0xfffffd60 - AT91_BASE_SYS)) | ||
89 | |||
90 | #define AT91CAP9_BASE_ECC 0xffffe200 | ||
91 | #define AT91CAP9_BASE_DMA 0xffffec00 | ||
92 | #define AT91CAP9_BASE_SMC 0xffffe800 | ||
93 | #define AT91CAP9_BASE_DBGU AT91_BASE_DBGU1 | ||
94 | #define AT91CAP9_BASE_PIOA 0xfffff200 | ||
95 | #define AT91CAP9_BASE_PIOB 0xfffff400 | ||
96 | #define AT91CAP9_BASE_PIOC 0xfffff600 | ||
97 | #define AT91CAP9_BASE_PIOD 0xfffff800 | ||
98 | #define AT91CAP9_BASE_RSTC 0xfffffd00 | ||
99 | #define AT91CAP9_BASE_SHDWC 0xfffffd10 | ||
100 | #define AT91CAP9_BASE_RTT 0xfffffd20 | ||
101 | #define AT91CAP9_BASE_PIT 0xfffffd30 | ||
102 | #define AT91CAP9_BASE_WDT 0xfffffd40 | ||
103 | |||
104 | #define AT91_USART0 AT91CAP9_BASE_US0 | ||
105 | #define AT91_USART1 AT91CAP9_BASE_US1 | ||
106 | #define AT91_USART2 AT91CAP9_BASE_US2 | ||
107 | |||
108 | |||
109 | /* | ||
110 | * Internal Memory. | ||
111 | */ | ||
112 | #define AT91CAP9_SRAM_BASE 0x00100000 /* Internal SRAM base address */ | ||
113 | #define AT91CAP9_SRAM_SIZE (32 * SZ_1K) /* Internal SRAM size (32Kb) */ | ||
114 | |||
115 | #define AT91CAP9_ROM_BASE 0x00400000 /* Internal ROM base address */ | ||
116 | #define AT91CAP9_ROM_SIZE (32 * SZ_1K) /* Internal ROM size (32Kb) */ | ||
117 | |||
118 | #define AT91CAP9_LCDC_BASE 0x00500000 /* LCD Controller */ | ||
119 | #define AT91CAP9_UDPHS_FIFO 0x00600000 /* USB High Speed Device Port */ | ||
120 | #define AT91CAP9_UHP_BASE 0x00700000 /* USB Host controller */ | ||
121 | |||
122 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/at91cap9_matrix.h b/arch/arm/mach-at91/include/mach/at91cap9_matrix.h deleted file mode 100644 index 4b9d4aff4b4f..000000000000 --- a/arch/arm/mach-at91/include/mach/at91cap9_matrix.h +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/include/mach/at91cap9_matrix.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2006 Atmel Corporation. | ||
7 | * | ||
8 | * Memory Controllers (MATRIX, EBI) - System peripherals registers. | ||
9 | * Based on AT91CAP9 datasheet revision B (Preliminary). | ||
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 as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | */ | ||
16 | |||
17 | #ifndef AT91CAP9_MATRIX_H | ||
18 | #define AT91CAP9_MATRIX_H | ||
19 | |||
20 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | ||
21 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | ||
22 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | ||
23 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | ||
24 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | ||
25 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | ||
26 | #define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ | ||
27 | #define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ | ||
28 | #define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ | ||
29 | #define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */ | ||
30 | #define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */ | ||
31 | #define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */ | ||
32 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | ||
33 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | ||
34 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | ||
35 | #define AT91_MATRIX_ULBT_FOUR (2 << 0) | ||
36 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | ||
37 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | ||
38 | |||
39 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | ||
40 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | ||
41 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | ||
42 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | ||
43 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | ||
44 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | ||
45 | #define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ | ||
46 | #define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ | ||
47 | #define AT91_MATRIX_SCFG8 (AT91_MATRIX + 0x60) /* Slave Configuration Register 8 */ | ||
48 | #define AT91_MATRIX_SCFG9 (AT91_MATRIX + 0x64) /* Slave Configuration Register 9 */ | ||
49 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | ||
50 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | ||
51 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | ||
52 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) | ||
53 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | ||
54 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ | ||
55 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ | ||
56 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | ||
57 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | ||
58 | |||
59 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | ||
60 | #define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ | ||
61 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | ||
62 | #define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ | ||
63 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | ||
64 | #define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ | ||
65 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | ||
66 | #define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ | ||
67 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | ||
68 | #define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ | ||
69 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | ||
70 | #define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ | ||
71 | #define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ | ||
72 | #define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ | ||
73 | #define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ | ||
74 | #define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ | ||
75 | #define AT91_MATRIX_PRAS8 (AT91_MATRIX + 0xC0) /* Priority Register A for Slave 8 */ | ||
76 | #define AT91_MATRIX_PRBS8 (AT91_MATRIX + 0xC4) /* Priority Register B for Slave 8 */ | ||
77 | #define AT91_MATRIX_PRAS9 (AT91_MATRIX + 0xC8) /* Priority Register A for Slave 9 */ | ||
78 | #define AT91_MATRIX_PRBS9 (AT91_MATRIX + 0xCC) /* Priority Register B for Slave 9 */ | ||
79 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | ||
80 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | ||
81 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | ||
82 | #define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */ | ||
83 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ | ||
84 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ | ||
85 | #define AT91_MATRIX_M6PR (3 << 24) /* Master 6 Priority */ | ||
86 | #define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ | ||
87 | #define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ | ||
88 | #define AT91_MATRIX_M9PR (3 << 4) /* Master 9 Priority (in Register B) */ | ||
89 | #define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ | ||
90 | #define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ | ||
91 | |||
92 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | ||
93 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | ||
94 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | ||
95 | #define AT91_MATRIX_RCB2 (1 << 2) | ||
96 | #define AT91_MATRIX_RCB3 (1 << 3) | ||
97 | #define AT91_MATRIX_RCB4 (1 << 4) | ||
98 | #define AT91_MATRIX_RCB5 (1 << 5) | ||
99 | #define AT91_MATRIX_RCB6 (1 << 6) | ||
100 | #define AT91_MATRIX_RCB7 (1 << 7) | ||
101 | #define AT91_MATRIX_RCB8 (1 << 8) | ||
102 | #define AT91_MATRIX_RCB9 (1 << 9) | ||
103 | #define AT91_MATRIX_RCB10 (1 << 10) | ||
104 | #define AT91_MATRIX_RCB11 (1 << 11) | ||
105 | |||
106 | #define AT91_MPBS0_SFR (AT91_MATRIX + 0x114) /* MPBlock Slave 0 Special Function Register */ | ||
107 | #define AT91_MPBS1_SFR (AT91_MATRIX + 0x11C) /* MPBlock Slave 1 Special Function Register */ | ||
108 | |||
109 | #define AT91_MATRIX_UDPHS (AT91_MATRIX + 0x118) /* USBHS Special Function Register [AT91CAP9 only] */ | ||
110 | #define AT91_MATRIX_SELECT_UDPHS (0 << 31) /* select High Speed UDP */ | ||
111 | #define AT91_MATRIX_SELECT_UDP (1 << 31) /* select standard UDP */ | ||
112 | #define AT91_MATRIX_UDPHS_BYPASS_LOCK (1 << 30) /* bypass lock bit */ | ||
113 | |||
114 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI Chip Select Assignment Register */ | ||
115 | #define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ | ||
116 | #define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) | ||
117 | #define AT91_MATRIX_EBI_CS1A_BCRAMC (1 << 1) | ||
118 | #define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */ | ||
119 | #define AT91_MATRIX_EBI_CS3A_SMC (0 << 3) | ||
120 | #define AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA (1 << 3) | ||
121 | #define AT91_MATRIX_EBI_CS4A (1 << 4) /* Chip Select 4 Assignment */ | ||
122 | #define AT91_MATRIX_EBI_CS4A_SMC (0 << 4) | ||
123 | #define AT91_MATRIX_EBI_CS4A_SMC_CF1 (1 << 4) | ||
124 | #define AT91_MATRIX_EBI_CS5A (1 << 5) /* Chip Select 5 Assignment */ | ||
125 | #define AT91_MATRIX_EBI_CS5A_SMC (0 << 5) | ||
126 | #define AT91_MATRIX_EBI_CS5A_SMC_CF2 (1 << 5) | ||
127 | #define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | ||
128 | #define AT91_MATRIX_EBI_DQSPDC (1 << 9) /* Data Qualifier Strobe Pull-Down Configuration */ | ||
129 | #define AT91_MATRIX_EBI_VDDIOMSEL (1 << 16) /* Memory voltage selection */ | ||
130 | #define AT91_MATRIX_EBI_VDDIOMSEL_1_8V (0 << 16) | ||
131 | #define AT91_MATRIX_EBI_VDDIOMSEL_3_3V (1 << 16) | ||
132 | |||
133 | #define AT91_MPBS2_SFR (AT91_MATRIX + 0x12C) /* MPBlock Slave 2 Special Function Register */ | ||
134 | #define AT91_MPBS3_SFR (AT91_MATRIX + 0x130) /* MPBlock Slave 3 Special Function Register */ | ||
135 | #define AT91_APB_SFR (AT91_MATRIX + 0x134) /* APB Bridge Special Function Register */ | ||
136 | |||
137 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h index bacb51141819..603e6aac2a4f 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h | |||
@@ -77,26 +77,22 @@ | |||
77 | 77 | ||
78 | 78 | ||
79 | /* | 79 | /* |
80 | * System Peripherals (offset from AT91_BASE_SYS) | 80 | * System Peripherals |
81 | */ | 81 | */ |
82 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */ | ||
83 | #define AT91_ST (0xfffffd00 - AT91_BASE_SYS) /* System Timer */ | ||
84 | #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ | ||
85 | |||
86 | #define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */ | 82 | #define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */ |
87 | #define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */ | 83 | #define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */ |
88 | #define AT91RM9200_BASE_PIOB 0xfffff600 /* PIO Controller B */ | 84 | #define AT91RM9200_BASE_PIOB 0xfffff600 /* PIO Controller B */ |
89 | #define AT91RM9200_BASE_PIOC 0xfffff800 /* PIO Controller C */ | 85 | #define AT91RM9200_BASE_PIOC 0xfffff800 /* PIO Controller C */ |
90 | #define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */ | 86 | #define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */ |
87 | #define AT91RM9200_BASE_ST 0xfffffd00 /* System Timer */ | ||
91 | #define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ | 88 | #define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ |
89 | #define AT91RM9200_BASE_MC 0xffffff00 /* Memory Controllers */ | ||
92 | 90 | ||
93 | #define AT91_USART0 AT91RM9200_BASE_US0 | 91 | #define AT91_USART0 AT91RM9200_BASE_US0 |
94 | #define AT91_USART1 AT91RM9200_BASE_US1 | 92 | #define AT91_USART1 AT91RM9200_BASE_US1 |
95 | #define AT91_USART2 AT91RM9200_BASE_US2 | 93 | #define AT91_USART2 AT91RM9200_BASE_US2 |
96 | #define AT91_USART3 AT91RM9200_BASE_US3 | 94 | #define AT91_USART3 AT91RM9200_BASE_US3 |
97 | 95 | ||
98 | #define AT91_MATRIX 0 /* not supported */ | ||
99 | |||
100 | /* | 96 | /* |
101 | * Internal Memory. | 97 | * Internal Memory. |
102 | */ | 98 | */ |
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200_mc.h b/arch/arm/mach-at91/include/mach/at91rm9200_mc.h index d34e4ed89349..aeaadfb452af 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200_mc.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200_mc.h | |||
@@ -17,10 +17,10 @@ | |||
17 | #define AT91RM9200_MC_H | 17 | #define AT91RM9200_MC_H |
18 | 18 | ||
19 | /* Memory Controller */ | 19 | /* Memory Controller */ |
20 | #define AT91_MC_RCR (AT91_MC + 0x00) /* MC Remap Control Register */ | 20 | #define AT91_MC_RCR 0x00 /* MC Remap Control Register */ |
21 | #define AT91_MC_RCB (1 << 0) /* Remap Command Bit */ | 21 | #define AT91_MC_RCB (1 << 0) /* Remap Command Bit */ |
22 | 22 | ||
23 | #define AT91_MC_ASR (AT91_MC + 0x04) /* MC Abort Status Register */ | 23 | #define AT91_MC_ASR 0x04 /* MC Abort Status Register */ |
24 | #define AT91_MC_UNADD (1 << 0) /* Undefined Address Abort Status */ | 24 | #define AT91_MC_UNADD (1 << 0) /* Undefined Address Abort Status */ |
25 | #define AT91_MC_MISADD (1 << 1) /* Misaligned Address Abort Status */ | 25 | #define AT91_MC_MISADD (1 << 1) /* Misaligned Address Abort Status */ |
26 | #define AT91_MC_ABTSZ (3 << 8) /* Abort Size Status */ | 26 | #define AT91_MC_ABTSZ (3 << 8) /* Abort Size Status */ |
@@ -40,16 +40,16 @@ | |||
40 | #define AT91_MC_SVMST2 (1 << 26) /* Saved UHP Abort Source */ | 40 | #define AT91_MC_SVMST2 (1 << 26) /* Saved UHP Abort Source */ |
41 | #define AT91_MC_SVMST3 (1 << 27) /* Saved EMAC Abort Source */ | 41 | #define AT91_MC_SVMST3 (1 << 27) /* Saved EMAC Abort Source */ |
42 | 42 | ||
43 | #define AT91_MC_AASR (AT91_MC + 0x08) /* MC Abort Address Status Register */ | 43 | #define AT91_MC_AASR 0x08 /* MC Abort Address Status Register */ |
44 | 44 | ||
45 | #define AT91_MC_MPR (AT91_MC + 0x0c) /* MC Master Priority Register */ | 45 | #define AT91_MC_MPR 0x0c /* MC Master Priority Register */ |
46 | #define AT91_MPR_MSTP0 (7 << 0) /* ARM920T Priority */ | 46 | #define AT91_MPR_MSTP0 (7 << 0) /* ARM920T Priority */ |
47 | #define AT91_MPR_MSTP1 (7 << 4) /* PDC Priority */ | 47 | #define AT91_MPR_MSTP1 (7 << 4) /* PDC Priority */ |
48 | #define AT91_MPR_MSTP2 (7 << 8) /* UHP Priority */ | 48 | #define AT91_MPR_MSTP2 (7 << 8) /* UHP Priority */ |
49 | #define AT91_MPR_MSTP3 (7 << 12) /* EMAC Priority */ | 49 | #define AT91_MPR_MSTP3 (7 << 12) /* EMAC Priority */ |
50 | 50 | ||
51 | /* External Bus Interface (EBI) registers */ | 51 | /* External Bus Interface (EBI) registers */ |
52 | #define AT91_EBI_CSA (AT91_MC + 0x60) /* Chip Select Assignment Register */ | 52 | #define AT91_EBI_CSA 0x60 /* Chip Select Assignment Register */ |
53 | #define AT91_EBI_CS0A (1 << 0) /* Chip Select 0 Assignment */ | 53 | #define AT91_EBI_CS0A (1 << 0) /* Chip Select 0 Assignment */ |
54 | #define AT91_EBI_CS0A_SMC (0 << 0) | 54 | #define AT91_EBI_CS0A_SMC (0 << 0) |
55 | #define AT91_EBI_CS0A_BFC (1 << 0) | 55 | #define AT91_EBI_CS0A_BFC (1 << 0) |
@@ -66,7 +66,7 @@ | |||
66 | #define AT91_EBI_DBPUC (1 << 0) /* Data Bus Pull-Up Configuration */ | 66 | #define AT91_EBI_DBPUC (1 << 0) /* Data Bus Pull-Up Configuration */ |
67 | 67 | ||
68 | /* Static Memory Controller (SMC) registers */ | 68 | /* Static Memory Controller (SMC) registers */ |
69 | #define AT91_SMC_CSR(n) (AT91_MC + 0x70 + ((n) * 4))/* SMC Chip Select Register */ | 69 | #define AT91_SMC_CSR(n) (0x70 + ((n) * 4)) /* SMC Chip Select Register */ |
70 | #define AT91_SMC_NWS (0x7f << 0) /* Number of Wait States */ | 70 | #define AT91_SMC_NWS (0x7f << 0) /* Number of Wait States */ |
71 | #define AT91_SMC_NWS_(x) ((x) << 0) | 71 | #define AT91_SMC_NWS_(x) ((x) << 0) |
72 | #define AT91_SMC_WSEN (1 << 7) /* Wait State Enable */ | 72 | #define AT91_SMC_WSEN (1 << 7) /* Wait State Enable */ |
@@ -87,52 +87,8 @@ | |||
87 | #define AT91_SMC_RWHOLD (7 << 28) /* Read & Write Signal Hold Time */ | 87 | #define AT91_SMC_RWHOLD (7 << 28) /* Read & Write Signal Hold Time */ |
88 | #define AT91_SMC_RWHOLD_(x) ((x) << 28) | 88 | #define AT91_SMC_RWHOLD_(x) ((x) << 28) |
89 | 89 | ||
90 | /* SDRAM Controller registers */ | ||
91 | #define AT91_SDRAMC_MR (AT91_MC + 0x90) /* Mode Register */ | ||
92 | #define AT91_SDRAMC_MODE (0xf << 0) /* Command Mode */ | ||
93 | #define AT91_SDRAMC_MODE_NORMAL (0 << 0) | ||
94 | #define AT91_SDRAMC_MODE_NOP (1 << 0) | ||
95 | #define AT91_SDRAMC_MODE_PRECHARGE (2 << 0) | ||
96 | #define AT91_SDRAMC_MODE_LMR (3 << 0) | ||
97 | #define AT91_SDRAMC_MODE_REFRESH (4 << 0) | ||
98 | #define AT91_SDRAMC_DBW (1 << 4) /* Data Bus Width */ | ||
99 | #define AT91_SDRAMC_DBW_32 (0 << 4) | ||
100 | #define AT91_SDRAMC_DBW_16 (1 << 4) | ||
101 | |||
102 | #define AT91_SDRAMC_TR (AT91_MC + 0x94) /* Refresh Timer Register */ | ||
103 | #define AT91_SDRAMC_COUNT (0xfff << 0) /* Refresh Timer Count */ | ||
104 | |||
105 | #define AT91_SDRAMC_CR (AT91_MC + 0x98) /* Configuration Register */ | ||
106 | #define AT91_SDRAMC_NC (3 << 0) /* Number of Column Bits */ | ||
107 | #define AT91_SDRAMC_NC_8 (0 << 0) | ||
108 | #define AT91_SDRAMC_NC_9 (1 << 0) | ||
109 | #define AT91_SDRAMC_NC_10 (2 << 0) | ||
110 | #define AT91_SDRAMC_NC_11 (3 << 0) | ||
111 | #define AT91_SDRAMC_NR (3 << 2) /* Number of Row Bits */ | ||
112 | #define AT91_SDRAMC_NR_11 (0 << 2) | ||
113 | #define AT91_SDRAMC_NR_12 (1 << 2) | ||
114 | #define AT91_SDRAMC_NR_13 (2 << 2) | ||
115 | #define AT91_SDRAMC_NB (1 << 4) /* Number of Banks */ | ||
116 | #define AT91_SDRAMC_NB_2 (0 << 4) | ||
117 | #define AT91_SDRAMC_NB_4 (1 << 4) | ||
118 | #define AT91_SDRAMC_CAS (3 << 5) /* CAS Latency */ | ||
119 | #define AT91_SDRAMC_CAS_2 (2 << 5) | ||
120 | #define AT91_SDRAMC_TWR (0xf << 7) /* Write Recovery Delay */ | ||
121 | #define AT91_SDRAMC_TRC (0xf << 11) /* Row Cycle Delay */ | ||
122 | #define AT91_SDRAMC_TRP (0xf << 15) /* Row Precharge Delay */ | ||
123 | #define AT91_SDRAMC_TRCD (0xf << 19) /* Row to Column Delay */ | ||
124 | #define AT91_SDRAMC_TRAS (0xf << 23) /* Active to Precharge Delay */ | ||
125 | #define AT91_SDRAMC_TXSR (0xf << 27) /* Exit Self Refresh to Active Delay */ | ||
126 | |||
127 | #define AT91_SDRAMC_SRR (AT91_MC + 0x9c) /* Self Refresh Register */ | ||
128 | #define AT91_SDRAMC_LPR (AT91_MC + 0xa0) /* Low Power Register */ | ||
129 | #define AT91_SDRAMC_IER (AT91_MC + 0xa4) /* Interrupt Enable Register */ | ||
130 | #define AT91_SDRAMC_IDR (AT91_MC + 0xa8) /* Interrupt Disable Register */ | ||
131 | #define AT91_SDRAMC_IMR (AT91_MC + 0xac) /* Interrupt Mask Register */ | ||
132 | #define AT91_SDRAMC_ISR (AT91_MC + 0xb0) /* Interrupt Status Register */ | ||
133 | |||
134 | /* Burst Flash Controller register */ | 90 | /* Burst Flash Controller register */ |
135 | #define AT91_BFC_MR (AT91_MC + 0xc0) /* Mode Register */ | 91 | #define AT91_BFC_MR 0xc0 /* Mode Register */ |
136 | #define AT91_BFC_BFCOM (3 << 0) /* Burst Flash Controller Operating Mode */ | 92 | #define AT91_BFC_BFCOM (3 << 0) /* Burst Flash Controller Operating Mode */ |
137 | #define AT91_BFC_BFCOM_DISABLED (0 << 0) | 93 | #define AT91_BFC_BFCOM_DISABLED (0 << 0) |
138 | #define AT91_BFC_BFCOM_ASYNC (1 << 0) | 94 | #define AT91_BFC_BFCOM_ASYNC (1 << 0) |
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h b/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h new file mode 100644 index 000000000000..aa047f458f1b --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h | ||
3 | * | ||
4 | * Copyright (C) 2005 Ivan Kokshaysky | ||
5 | * Copyright (C) SAN People | ||
6 | * | ||
7 | * Memory Controllers (SDRAMC only) - System peripherals registers. | ||
8 | * Based on AT91RM9200 datasheet revision E. | ||
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 as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | */ | ||
15 | |||
16 | #ifndef AT91RM9200_SDRAMC_H | ||
17 | #define AT91RM9200_SDRAMC_H | ||
18 | |||
19 | /* SDRAM Controller registers */ | ||
20 | #define AT91RM9200_SDRAMC_MR 0x90 /* Mode Register */ | ||
21 | #define AT91RM9200_SDRAMC_MODE (0xf << 0) /* Command Mode */ | ||
22 | #define AT91RM9200_SDRAMC_MODE_NORMAL (0 << 0) | ||
23 | #define AT91RM9200_SDRAMC_MODE_NOP (1 << 0) | ||
24 | #define AT91RM9200_SDRAMC_MODE_PRECHARGE (2 << 0) | ||
25 | #define AT91RM9200_SDRAMC_MODE_LMR (3 << 0) | ||
26 | #define AT91RM9200_SDRAMC_MODE_REFRESH (4 << 0) | ||
27 | #define AT91RM9200_SDRAMC_DBW (1 << 4) /* Data Bus Width */ | ||
28 | #define AT91RM9200_SDRAMC_DBW_32 (0 << 4) | ||
29 | #define AT91RM9200_SDRAMC_DBW_16 (1 << 4) | ||
30 | |||
31 | #define AT91RM9200_SDRAMC_TR 0x94 /* Refresh Timer Register */ | ||
32 | #define AT91RM9200_SDRAMC_COUNT (0xfff << 0) /* Refresh Timer Count */ | ||
33 | |||
34 | #define AT91RM9200_SDRAMC_CR 0x98 /* Configuration Register */ | ||
35 | #define AT91RM9200_SDRAMC_NC (3 << 0) /* Number of Column Bits */ | ||
36 | #define AT91RM9200_SDRAMC_NC_8 (0 << 0) | ||
37 | #define AT91RM9200_SDRAMC_NC_9 (1 << 0) | ||
38 | #define AT91RM9200_SDRAMC_NC_10 (2 << 0) | ||
39 | #define AT91RM9200_SDRAMC_NC_11 (3 << 0) | ||
40 | #define AT91RM9200_SDRAMC_NR (3 << 2) /* Number of Row Bits */ | ||
41 | #define AT91RM9200_SDRAMC_NR_11 (0 << 2) | ||
42 | #define AT91RM9200_SDRAMC_NR_12 (1 << 2) | ||
43 | #define AT91RM9200_SDRAMC_NR_13 (2 << 2) | ||
44 | #define AT91RM9200_SDRAMC_NB (1 << 4) /* Number of Banks */ | ||
45 | #define AT91RM9200_SDRAMC_NB_2 (0 << 4) | ||
46 | #define AT91RM9200_SDRAMC_NB_4 (1 << 4) | ||
47 | #define AT91RM9200_SDRAMC_CAS (3 << 5) /* CAS Latency */ | ||
48 | #define AT91RM9200_SDRAMC_CAS_2 (2 << 5) | ||
49 | #define AT91RM9200_SDRAMC_TWR (0xf << 7) /* Write Recovery Delay */ | ||
50 | #define AT91RM9200_SDRAMC_TRC (0xf << 11) /* Row Cycle Delay */ | ||
51 | #define AT91RM9200_SDRAMC_TRP (0xf << 15) /* Row Precharge Delay */ | ||
52 | #define AT91RM9200_SDRAMC_TRCD (0xf << 19) /* Row to Column Delay */ | ||
53 | #define AT91RM9200_SDRAMC_TRAS (0xf << 23) /* Active to Precharge Delay */ | ||
54 | #define AT91RM9200_SDRAMC_TXSR (0xf << 27) /* Exit Self Refresh to Active Delay */ | ||
55 | |||
56 | #define AT91RM9200_SDRAMC_SRR 0x9c /* Self Refresh Register */ | ||
57 | #define AT91RM9200_SDRAMC_LPR 0xa0 /* Low Power Register */ | ||
58 | #define AT91RM9200_SDRAMC_IER 0xa4 /* Interrupt Enable Register */ | ||
59 | #define AT91RM9200_SDRAMC_IDR 0xa8 /* Interrupt Disable Register */ | ||
60 | #define AT91RM9200_SDRAMC_IMR 0xac /* Interrupt Mask Register */ | ||
61 | #define AT91RM9200_SDRAMC_ISR 0xb0 /* Interrupt Status Register */ | ||
62 | |||
63 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h index fa5ca278adeb..08ae9afd00fe 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260.h | |||
@@ -78,15 +78,12 @@ | |||
78 | #define AT91SAM9260_BASE_ADC 0xfffe0000 | 78 | #define AT91SAM9260_BASE_ADC 0xfffe0000 |
79 | 79 | ||
80 | /* | 80 | /* |
81 | * System Peripherals (offset from AT91_BASE_SYS) | 81 | * System Peripherals |
82 | */ | 82 | */ |
83 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
84 | #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) | ||
85 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
86 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | ||
87 | |||
88 | #define AT91SAM9260_BASE_ECC 0xffffe800 | 83 | #define AT91SAM9260_BASE_ECC 0xffffe800 |
84 | #define AT91SAM9260_BASE_SDRAMC 0xffffea00 | ||
89 | #define AT91SAM9260_BASE_SMC 0xffffec00 | 85 | #define AT91SAM9260_BASE_SMC 0xffffec00 |
86 | #define AT91SAM9260_BASE_MATRIX 0xffffee00 | ||
90 | #define AT91SAM9260_BASE_DBGU AT91_BASE_DBGU0 | 87 | #define AT91SAM9260_BASE_DBGU AT91_BASE_DBGU0 |
91 | #define AT91SAM9260_BASE_PIOA 0xfffff400 | 88 | #define AT91SAM9260_BASE_PIOA 0xfffff400 |
92 | #define AT91SAM9260_BASE_PIOB 0xfffff600 | 89 | #define AT91SAM9260_BASE_PIOB 0xfffff600 |
@@ -96,6 +93,7 @@ | |||
96 | #define AT91SAM9260_BASE_RTT 0xfffffd20 | 93 | #define AT91SAM9260_BASE_RTT 0xfffffd20 |
97 | #define AT91SAM9260_BASE_PIT 0xfffffd30 | 94 | #define AT91SAM9260_BASE_PIT 0xfffffd30 |
98 | #define AT91SAM9260_BASE_WDT 0xfffffd40 | 95 | #define AT91SAM9260_BASE_WDT 0xfffffd40 |
96 | #define AT91SAM9260_BASE_GPBR 0xfffffd50 | ||
99 | 97 | ||
100 | #define AT91_USART0 AT91SAM9260_BASE_US0 | 98 | #define AT91_USART0 AT91SAM9260_BASE_US0 |
101 | #define AT91_USART1 AT91SAM9260_BASE_US1 | 99 | #define AT91_USART1 AT91SAM9260_BASE_US1 |
@@ -115,6 +113,8 @@ | |||
115 | #define AT91SAM9260_SRAM0_SIZE SZ_4K /* Internal SRAM 0 size (4Kb) */ | 113 | #define AT91SAM9260_SRAM0_SIZE SZ_4K /* Internal SRAM 0 size (4Kb) */ |
116 | #define AT91SAM9260_SRAM1_BASE 0x00300000 /* Internal SRAM 1 base address */ | 114 | #define AT91SAM9260_SRAM1_BASE 0x00300000 /* Internal SRAM 1 base address */ |
117 | #define AT91SAM9260_SRAM1_SIZE SZ_4K /* Internal SRAM 1 size (4Kb) */ | 115 | #define AT91SAM9260_SRAM1_SIZE SZ_4K /* Internal SRAM 1 size (4Kb) */ |
116 | #define AT91SAM9260_SRAM_BASE 0x002FF000 /* Internal SRAM base address */ | ||
117 | #define AT91SAM9260_SRAM_SIZE SZ_8K /* Internal SRAM size (8Kb) */ | ||
118 | 118 | ||
119 | #define AT91SAM9260_UHP_BASE 0x00500000 /* USB Host controller */ | 119 | #define AT91SAM9260_UHP_BASE 0x00500000 /* USB Host controller */ |
120 | 120 | ||
@@ -128,6 +128,8 @@ | |||
128 | #define AT91SAM9G20_SRAM0_SIZE SZ_16K /* Internal SRAM 0 size (16Kb) */ | 128 | #define AT91SAM9G20_SRAM0_SIZE SZ_16K /* Internal SRAM 0 size (16Kb) */ |
129 | #define AT91SAM9G20_SRAM1_BASE 0x00300000 /* Internal SRAM 1 base address */ | 129 | #define AT91SAM9G20_SRAM1_BASE 0x00300000 /* Internal SRAM 1 base address */ |
130 | #define AT91SAM9G20_SRAM1_SIZE SZ_16K /* Internal SRAM 1 size (16Kb) */ | 130 | #define AT91SAM9G20_SRAM1_SIZE SZ_16K /* Internal SRAM 1 size (16Kb) */ |
131 | #define AT91SAM9G20_SRAM_BASE 0x002FC000 /* Internal SRAM base address */ | ||
132 | #define AT91SAM9G20_SRAM_SIZE SZ_32K /* Internal SRAM size (32Kb) */ | ||
131 | 133 | ||
132 | #define AT91SAM9G20_UHP_BASE 0x00500000 /* USB Host controller */ | 134 | #define AT91SAM9G20_UHP_BASE 0x00500000 /* USB Host controller */ |
133 | 135 | ||
diff --git a/arch/arm/mach-at91/include/mach/at91sam9260_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9260_matrix.h index 020f02ed921a..f459df420629 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260_matrix.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260_matrix.h | |||
@@ -15,12 +15,12 @@ | |||
15 | #ifndef AT91SAM9260_MATRIX_H | 15 | #ifndef AT91SAM9260_MATRIX_H |
16 | #define AT91SAM9260_MATRIX_H | 16 | #define AT91SAM9260_MATRIX_H |
17 | 17 | ||
18 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | 18 | #define AT91_MATRIX_MCFG0 0x00 /* Master Configuration Register 0 */ |
19 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | 19 | #define AT91_MATRIX_MCFG1 0x04 /* Master Configuration Register 1 */ |
20 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | 20 | #define AT91_MATRIX_MCFG2 0x08 /* Master Configuration Register 2 */ |
21 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | 21 | #define AT91_MATRIX_MCFG3 0x0C /* Master Configuration Register 3 */ |
22 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | 22 | #define AT91_MATRIX_MCFG4 0x10 /* Master Configuration Register 4 */ |
23 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | 23 | #define AT91_MATRIX_MCFG5 0x14 /* Master Configuration Register 5 */ |
24 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | 24 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ |
25 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | 25 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) |
26 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | 26 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) |
@@ -28,11 +28,11 @@ | |||
28 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | 28 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) |
29 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | 29 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) |
30 | 30 | ||
31 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | 31 | #define AT91_MATRIX_SCFG0 0x40 /* Slave Configuration Register 0 */ |
32 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | 32 | #define AT91_MATRIX_SCFG1 0x44 /* Slave Configuration Register 1 */ |
33 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | 33 | #define AT91_MATRIX_SCFG2 0x48 /* Slave Configuration Register 2 */ |
34 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | 34 | #define AT91_MATRIX_SCFG3 0x4C /* Slave Configuration Register 3 */ |
35 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | 35 | #define AT91_MATRIX_SCFG4 0x50 /* Slave Configuration Register 4 */ |
36 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | 36 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ |
37 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | 37 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ |
38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
@@ -43,11 +43,11 @@ | |||
43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | 43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) |
44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | 44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) |
45 | 45 | ||
46 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | 46 | #define AT91_MATRIX_PRAS0 0x80 /* Priority Register A for Slave 0 */ |
47 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | 47 | #define AT91_MATRIX_PRAS1 0x88 /* Priority Register A for Slave 1 */ |
48 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | 48 | #define AT91_MATRIX_PRAS2 0x90 /* Priority Register A for Slave 2 */ |
49 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | 49 | #define AT91_MATRIX_PRAS3 0x98 /* Priority Register A for Slave 3 */ |
50 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | 50 | #define AT91_MATRIX_PRAS4 0xA0 /* Priority Register A for Slave 4 */ |
51 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | 51 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ |
52 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | 52 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ |
53 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | 53 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ |
@@ -55,11 +55,11 @@ | |||
55 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ | 55 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ |
56 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ | 56 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ |
57 | 57 | ||
58 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | 58 | #define AT91_MATRIX_MRCR 0x100 /* Master Remap Control Register */ |
59 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | 59 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ |
60 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | 60 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ |
61 | 61 | ||
62 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x11C) /* EBI Chip Select Assignment Register */ | 62 | #define AT91_MATRIX_EBICSA 0x11C /* EBI Chip Select Assignment Register */ |
63 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 63 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
64 | #define AT91_MATRIX_CS1A_SMC (0 << 1) | 64 | #define AT91_MATRIX_CS1A_SMC (0 << 1) |
65 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) | 65 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h index 7cde2d36570e..44fbdc12ee62 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261.h | |||
@@ -63,14 +63,11 @@ | |||
63 | 63 | ||
64 | 64 | ||
65 | /* | 65 | /* |
66 | * System Peripherals (offset from AT91_BASE_SYS) | 66 | * System Peripherals |
67 | */ | 67 | */ |
68 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
69 | #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) | ||
70 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
71 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | ||
72 | |||
73 | #define AT91SAM9261_BASE_SMC 0xffffec00 | 68 | #define AT91SAM9261_BASE_SMC 0xffffec00 |
69 | #define AT91SAM9261_BASE_MATRIX 0xffffee00 | ||
70 | #define AT91SAM9261_BASE_SDRAMC 0xffffea00 | ||
74 | #define AT91SAM9261_BASE_DBGU AT91_BASE_DBGU0 | 71 | #define AT91SAM9261_BASE_DBGU AT91_BASE_DBGU0 |
75 | #define AT91SAM9261_BASE_PIOA 0xfffff400 | 72 | #define AT91SAM9261_BASE_PIOA 0xfffff400 |
76 | #define AT91SAM9261_BASE_PIOB 0xfffff600 | 73 | #define AT91SAM9261_BASE_PIOB 0xfffff600 |
@@ -80,6 +77,7 @@ | |||
80 | #define AT91SAM9261_BASE_RTT 0xfffffd20 | 77 | #define AT91SAM9261_BASE_RTT 0xfffffd20 |
81 | #define AT91SAM9261_BASE_PIT 0xfffffd30 | 78 | #define AT91SAM9261_BASE_PIT 0xfffffd30 |
82 | #define AT91SAM9261_BASE_WDT 0xfffffd40 | 79 | #define AT91SAM9261_BASE_WDT 0xfffffd40 |
80 | #define AT91SAM9261_BASE_GPBR 0xfffffd50 | ||
83 | 81 | ||
84 | #define AT91_USART0 AT91SAM9261_BASE_US0 | 82 | #define AT91_USART0 AT91SAM9261_BASE_US0 |
85 | #define AT91_USART1 AT91SAM9261_BASE_US1 | 83 | #define AT91_USART1 AT91SAM9261_BASE_US1 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9261_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9261_matrix.h index 69c6501915d9..a50cdf8b8ca4 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261_matrix.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261_matrix.h | |||
@@ -15,15 +15,15 @@ | |||
15 | #ifndef AT91SAM9261_MATRIX_H | 15 | #ifndef AT91SAM9261_MATRIX_H |
16 | #define AT91SAM9261_MATRIX_H | 16 | #define AT91SAM9261_MATRIX_H |
17 | 17 | ||
18 | #define AT91_MATRIX_MCFG (AT91_MATRIX + 0x00) /* Master Configuration Register */ | 18 | #define AT91_MATRIX_MCFG 0x00 /* Master Configuration Register */ |
19 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | 19 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ |
20 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | 20 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ |
21 | 21 | ||
22 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x04) /* Slave Configuration Register 0 */ | 22 | #define AT91_MATRIX_SCFG0 0x04 /* Slave Configuration Register 0 */ |
23 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x08) /* Slave Configuration Register 1 */ | 23 | #define AT91_MATRIX_SCFG1 0x08 /* Slave Configuration Register 1 */ |
24 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x0C) /* Slave Configuration Register 2 */ | 24 | #define AT91_MATRIX_SCFG2 0x0C /* Slave Configuration Register 2 */ |
25 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x10) /* Slave Configuration Register 3 */ | 25 | #define AT91_MATRIX_SCFG3 0x10 /* Slave Configuration Register 3 */ |
26 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x14) /* Slave Configuration Register 4 */ | 26 | #define AT91_MATRIX_SCFG4 0x14 /* Slave Configuration Register 4 */ |
27 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | 27 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ |
28 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | 28 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ |
29 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 29 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
@@ -31,7 +31,7 @@ | |||
31 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | 31 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) |
32 | #define AT91_MATRIX_FIXED_DEFMSTR (7 << 18) /* Fixed Index of Default Master */ | 32 | #define AT91_MATRIX_FIXED_DEFMSTR (7 << 18) /* Fixed Index of Default Master */ |
33 | 33 | ||
34 | #define AT91_MATRIX_TCR (AT91_MATRIX + 0x24) /* TCM Configuration Register */ | 34 | #define AT91_MATRIX_TCR 0x24 /* TCM Configuration Register */ |
35 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ | 35 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ |
36 | #define AT91_MATRIX_ITCM_0 (0 << 0) | 36 | #define AT91_MATRIX_ITCM_0 (0 << 0) |
37 | #define AT91_MATRIX_ITCM_16 (5 << 0) | 37 | #define AT91_MATRIX_ITCM_16 (5 << 0) |
@@ -43,7 +43,7 @@ | |||
43 | #define AT91_MATRIX_DTCM_32 (6 << 4) | 43 | #define AT91_MATRIX_DTCM_32 (6 << 4) |
44 | #define AT91_MATRIX_DTCM_64 (7 << 4) | 44 | #define AT91_MATRIX_DTCM_64 (7 << 4) |
45 | 45 | ||
46 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x30) /* EBI Chip Select Assignment Register */ | 46 | #define AT91_MATRIX_EBICSA 0x30 /* EBI Chip Select Assignment Register */ |
47 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 47 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
48 | #define AT91_MATRIX_CS1A_SMC (0 << 1) | 48 | #define AT91_MATRIX_CS1A_SMC (0 << 1) |
49 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) | 49 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) |
@@ -58,7 +58,7 @@ | |||
58 | #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5) | 58 | #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5) |
59 | #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | 59 | #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ |
60 | 60 | ||
61 | #define AT91_MATRIX_USBPUCR (AT91_MATRIX + 0x34) /* USB Pad Pull-Up Control Register */ | 61 | #define AT91_MATRIX_USBPUCR 0x34 /* USB Pad Pull-Up Control Register */ |
62 | #define AT91_MATRIX_USBPUCR_PUON (1 << 30) /* USB Device PAD Pull-up Enable */ | 62 | #define AT91_MATRIX_USBPUCR_PUON (1 << 30) /* USB Device PAD Pull-up Enable */ |
63 | 63 | ||
64 | #endif | 64 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h index 5949abda962b..d96cbb2e03c4 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263.h | |||
@@ -72,18 +72,15 @@ | |||
72 | #define AT91SAM9263_BASE_2DGE 0xfffc8000 | 72 | #define AT91SAM9263_BASE_2DGE 0xfffc8000 |
73 | 73 | ||
74 | /* | 74 | /* |
75 | * System Peripherals (offset from AT91_BASE_SYS) | 75 | * System Peripherals |
76 | */ | 76 | */ |
77 | #define AT91_SDRAMC0 (0xffffe200 - AT91_BASE_SYS) | ||
78 | #define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS) | ||
79 | #define AT91_MATRIX (0xffffec00 - AT91_BASE_SYS) | ||
80 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
81 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | ||
82 | |||
83 | #define AT91SAM9263_BASE_ECC0 0xffffe000 | 77 | #define AT91SAM9263_BASE_ECC0 0xffffe000 |
78 | #define AT91SAM9263_BASE_SDRAMC0 0xffffe200 | ||
84 | #define AT91SAM9263_BASE_SMC0 0xffffe400 | 79 | #define AT91SAM9263_BASE_SMC0 0xffffe400 |
85 | #define AT91SAM9263_BASE_ECC1 0xffffe600 | 80 | #define AT91SAM9263_BASE_ECC1 0xffffe600 |
81 | #define AT91SAM9263_BASE_SDRAMC1 0xffffe800 | ||
86 | #define AT91SAM9263_BASE_SMC1 0xffffea00 | 82 | #define AT91SAM9263_BASE_SMC1 0xffffea00 |
83 | #define AT91SAM9263_BASE_MATRIX 0xffffec00 | ||
87 | #define AT91SAM9263_BASE_DBGU AT91_BASE_DBGU1 | 84 | #define AT91SAM9263_BASE_DBGU AT91_BASE_DBGU1 |
88 | #define AT91SAM9263_BASE_PIOA 0xfffff200 | 85 | #define AT91SAM9263_BASE_PIOA 0xfffff200 |
89 | #define AT91SAM9263_BASE_PIOB 0xfffff400 | 86 | #define AT91SAM9263_BASE_PIOB 0xfffff400 |
@@ -96,6 +93,7 @@ | |||
96 | #define AT91SAM9263_BASE_PIT 0xfffffd30 | 93 | #define AT91SAM9263_BASE_PIT 0xfffffd30 |
97 | #define AT91SAM9263_BASE_WDT 0xfffffd40 | 94 | #define AT91SAM9263_BASE_WDT 0xfffffd40 |
98 | #define AT91SAM9263_BASE_RTT1 0xfffffd50 | 95 | #define AT91SAM9263_BASE_RTT1 0xfffffd50 |
96 | #define AT91SAM9263_BASE_GPBR 0xfffffd60 | ||
99 | 97 | ||
100 | #define AT91_USART0 AT91SAM9263_BASE_US0 | 98 | #define AT91_USART0 AT91SAM9263_BASE_US0 |
101 | #define AT91_USART1 AT91SAM9263_BASE_US1 | 99 | #define AT91_USART1 AT91SAM9263_BASE_US1 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9263_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9263_matrix.h index 9b3efd3eb2f3..ebb5fdb565e0 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263_matrix.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263_matrix.h | |||
@@ -15,15 +15,15 @@ | |||
15 | #ifndef AT91SAM9263_MATRIX_H | 15 | #ifndef AT91SAM9263_MATRIX_H |
16 | #define AT91SAM9263_MATRIX_H | 16 | #define AT91SAM9263_MATRIX_H |
17 | 17 | ||
18 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | 18 | #define AT91_MATRIX_MCFG0 0x00 /* Master Configuration Register 0 */ |
19 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | 19 | #define AT91_MATRIX_MCFG1 0x04 /* Master Configuration Register 1 */ |
20 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | 20 | #define AT91_MATRIX_MCFG2 0x08 /* Master Configuration Register 2 */ |
21 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | 21 | #define AT91_MATRIX_MCFG3 0x0C /* Master Configuration Register 3 */ |
22 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | 22 | #define AT91_MATRIX_MCFG4 0x10 /* Master Configuration Register 4 */ |
23 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | 23 | #define AT91_MATRIX_MCFG5 0x14 /* Master Configuration Register 5 */ |
24 | #define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ | 24 | #define AT91_MATRIX_MCFG6 0x18 /* Master Configuration Register 6 */ |
25 | #define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ | 25 | #define AT91_MATRIX_MCFG7 0x1C /* Master Configuration Register 7 */ |
26 | #define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ | 26 | #define AT91_MATRIX_MCFG8 0x20 /* Master Configuration Register 8 */ |
27 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | 27 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ |
28 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | 28 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) |
29 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | 29 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) |
@@ -31,14 +31,14 @@ | |||
31 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | 31 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) |
32 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | 32 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) |
33 | 33 | ||
34 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | 34 | #define AT91_MATRIX_SCFG0 0x40 /* Slave Configuration Register 0 */ |
35 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | 35 | #define AT91_MATRIX_SCFG1 0x44 /* Slave Configuration Register 1 */ |
36 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | 36 | #define AT91_MATRIX_SCFG2 0x48 /* Slave Configuration Register 2 */ |
37 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | 37 | #define AT91_MATRIX_SCFG3 0x4C /* Slave Configuration Register 3 */ |
38 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | 38 | #define AT91_MATRIX_SCFG4 0x50 /* Slave Configuration Register 4 */ |
39 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | 39 | #define AT91_MATRIX_SCFG5 0x54 /* Slave Configuration Register 5 */ |
40 | #define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ | 40 | #define AT91_MATRIX_SCFG6 0x58 /* Slave Configuration Register 6 */ |
41 | #define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ | 41 | #define AT91_MATRIX_SCFG7 0x5C /* Slave Configuration Register 7 */ |
42 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | 42 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ |
43 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | 43 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ |
44 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 44 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
@@ -49,22 +49,22 @@ | |||
49 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | 49 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) |
50 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | 50 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) |
51 | 51 | ||
52 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | 52 | #define AT91_MATRIX_PRAS0 0x80 /* Priority Register A for Slave 0 */ |
53 | #define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ | 53 | #define AT91_MATRIX_PRBS0 0x84 /* Priority Register B for Slave 0 */ |
54 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | 54 | #define AT91_MATRIX_PRAS1 0x88 /* Priority Register A for Slave 1 */ |
55 | #define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ | 55 | #define AT91_MATRIX_PRBS1 0x8C /* Priority Register B for Slave 1 */ |
56 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | 56 | #define AT91_MATRIX_PRAS2 0x90 /* Priority Register A for Slave 2 */ |
57 | #define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ | 57 | #define AT91_MATRIX_PRBS2 0x94 /* Priority Register B for Slave 2 */ |
58 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | 58 | #define AT91_MATRIX_PRAS3 0x98 /* Priority Register A for Slave 3 */ |
59 | #define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ | 59 | #define AT91_MATRIX_PRBS3 0x9C /* Priority Register B for Slave 3 */ |
60 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | 60 | #define AT91_MATRIX_PRAS4 0xA0 /* Priority Register A for Slave 4 */ |
61 | #define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ | 61 | #define AT91_MATRIX_PRBS4 0xA4 /* Priority Register B for Slave 4 */ |
62 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | 62 | #define AT91_MATRIX_PRAS5 0xA8 /* Priority Register A for Slave 5 */ |
63 | #define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ | 63 | #define AT91_MATRIX_PRBS5 0xAC /* Priority Register B for Slave 5 */ |
64 | #define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ | 64 | #define AT91_MATRIX_PRAS6 0xB0 /* Priority Register A for Slave 6 */ |
65 | #define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ | 65 | #define AT91_MATRIX_PRBS6 0xB4 /* Priority Register B for Slave 6 */ |
66 | #define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ | 66 | #define AT91_MATRIX_PRAS7 0xB8 /* Priority Register A for Slave 7 */ |
67 | #define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ | 67 | #define AT91_MATRIX_PRBS7 0xBC /* Priority Register B for Slave 7 */ |
68 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | 68 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ |
69 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | 69 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ |
70 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | 70 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ |
@@ -75,7 +75,7 @@ | |||
75 | #define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ | 75 | #define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ |
76 | #define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ | 76 | #define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ |
77 | 77 | ||
78 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | 78 | #define AT91_MATRIX_MRCR 0x100 /* Master Remap Control Register */ |
79 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | 79 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ |
80 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | 80 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ |
81 | #define AT91_MATRIX_RCB2 (1 << 2) | 81 | #define AT91_MATRIX_RCB2 (1 << 2) |
@@ -86,7 +86,7 @@ | |||
86 | #define AT91_MATRIX_RCB7 (1 << 7) | 86 | #define AT91_MATRIX_RCB7 (1 << 7) |
87 | #define AT91_MATRIX_RCB8 (1 << 8) | 87 | #define AT91_MATRIX_RCB8 (1 << 8) |
88 | 88 | ||
89 | #define AT91_MATRIX_TCMR (AT91_MATRIX + 0x114) /* TCM Configuration Register */ | 89 | #define AT91_MATRIX_TCMR 0x114 /* TCM Configuration Register */ |
90 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ | 90 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ |
91 | #define AT91_MATRIX_ITCM_0 (0 << 0) | 91 | #define AT91_MATRIX_ITCM_0 (0 << 0) |
92 | #define AT91_MATRIX_ITCM_16 (5 << 0) | 92 | #define AT91_MATRIX_ITCM_16 (5 << 0) |
@@ -96,7 +96,7 @@ | |||
96 | #define AT91_MATRIX_DTCM_16 (5 << 4) | 96 | #define AT91_MATRIX_DTCM_16 (5 << 4) |
97 | #define AT91_MATRIX_DTCM_32 (6 << 4) | 97 | #define AT91_MATRIX_DTCM_32 (6 << 4) |
98 | 98 | ||
99 | #define AT91_MATRIX_EBI0CSA (AT91_MATRIX + 0x120) /* EBI0 Chip Select Assignment Register */ | 99 | #define AT91_MATRIX_EBI0CSA 0x120 /* EBI0 Chip Select Assignment Register */ |
100 | #define AT91_MATRIX_EBI0_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 100 | #define AT91_MATRIX_EBI0_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
101 | #define AT91_MATRIX_EBI0_CS1A_SMC (0 << 1) | 101 | #define AT91_MATRIX_EBI0_CS1A_SMC (0 << 1) |
102 | #define AT91_MATRIX_EBI0_CS1A_SDRAMC (1 << 1) | 102 | #define AT91_MATRIX_EBI0_CS1A_SDRAMC (1 << 1) |
@@ -114,7 +114,7 @@ | |||
114 | #define AT91_MATRIX_EBI0_VDDIOMSEL_1_8V (0 << 16) | 114 | #define AT91_MATRIX_EBI0_VDDIOMSEL_1_8V (0 << 16) |
115 | #define AT91_MATRIX_EBI0_VDDIOMSEL_3_3V (1 << 16) | 115 | #define AT91_MATRIX_EBI0_VDDIOMSEL_3_3V (1 << 16) |
116 | 116 | ||
117 | #define AT91_MATRIX_EBI1CSA (AT91_MATRIX + 0x124) /* EBI1 Chip Select Assignment Register */ | 117 | #define AT91_MATRIX_EBI1CSA 0x124 /* EBI1 Chip Select Assignment Register */ |
118 | #define AT91_MATRIX_EBI1_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 118 | #define AT91_MATRIX_EBI1_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
119 | #define AT91_MATRIX_EBI1_CS1A_SMC (0 << 1) | 119 | #define AT91_MATRIX_EBI1_CS1A_SMC (0 << 1) |
120 | #define AT91_MATRIX_EBI1_CS1A_SDRAMC (1 << 1) | 120 | #define AT91_MATRIX_EBI1_CS1A_SDRAMC (1 << 1) |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h b/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h index e2f8da8ce5bc..0210797abf2e 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h +++ b/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h | |||
@@ -59,7 +59,6 @@ | |||
59 | #define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */ | 59 | #define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */ |
60 | #define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */ | 60 | #define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */ |
61 | #define AT91_DDRSDRC_TWTR (0x7 << 24) /* Internal Write to Read delay */ | 61 | #define AT91_DDRSDRC_TWTR (0x7 << 24) /* Internal Write to Read delay */ |
62 | #define AT91CAP9_DDRSDRC_TWTR (1 << 24) /* Internal Write to Read delay */ | ||
63 | #define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay [SAM9 Only] */ | 62 | #define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay [SAM9 Only] */ |
64 | #define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */ | 63 | #define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */ |
65 | 64 | ||
@@ -76,7 +75,6 @@ | |||
76 | #define AT91_DDRSDRC_TRTP (0x7 << 12) /* Read to Precharge delay */ | 75 | #define AT91_DDRSDRC_TRTP (0x7 << 12) /* Read to Precharge delay */ |
77 | 76 | ||
78 | #define AT91_DDRSDRC_LPR 0x1C /* Low Power Register */ | 77 | #define AT91_DDRSDRC_LPR 0x1C /* Low Power Register */ |
79 | #define AT91CAP9_DDRSDRC_LPR 0x18 /* Low Power Register */ | ||
80 | #define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */ | 78 | #define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */ |
81 | #define AT91_DDRSDRC_LPCB_DISABLE 0 | 79 | #define AT91_DDRSDRC_LPCB_DISABLE 0 |
82 | #define AT91_DDRSDRC_LPCB_SELF_REFRESH 1 | 80 | #define AT91_DDRSDRC_LPCB_SELF_REFRESH 1 |
@@ -94,11 +92,9 @@ | |||
94 | #define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */ | 92 | #define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */ |
95 | 93 | ||
96 | #define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */ | 94 | #define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */ |
97 | #define AT91CAP9_DDRSDRC_MDR 0x1C /* Memory Device Register */ | ||
98 | #define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */ | 95 | #define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */ |
99 | #define AT91_DDRSDRC_MD_SDR 0 | 96 | #define AT91_DDRSDRC_MD_SDR 0 |
100 | #define AT91_DDRSDRC_MD_LOW_POWER_SDR 1 | 97 | #define AT91_DDRSDRC_MD_LOW_POWER_SDR 1 |
101 | #define AT91CAP9_DDRSDRC_MD_DDR 2 | ||
102 | #define AT91_DDRSDRC_MD_LOW_POWER_DDR 3 | 98 | #define AT91_DDRSDRC_MD_LOW_POWER_DDR 3 |
103 | #define AT91_DDRSDRC_MD_DDR2 6 /* [SAM9 Only] */ | 99 | #define AT91_DDRSDRC_MD_DDR2 6 /* [SAM9 Only] */ |
104 | #define AT91_DDRSDRC_DBW (1 << 4) /* Data Bus Width */ | 100 | #define AT91_DDRSDRC_DBW (1 << 4) /* Data Bus Width */ |
@@ -106,16 +102,10 @@ | |||
106 | #define AT91_DDRSDRC_DBW_16BITS (1 << 4) | 102 | #define AT91_DDRSDRC_DBW_16BITS (1 << 4) |
107 | 103 | ||
108 | #define AT91_DDRSDRC_DLL 0x24 /* DLL Information Register */ | 104 | #define AT91_DDRSDRC_DLL 0x24 /* DLL Information Register */ |
109 | #define AT91CAP9_DDRSDRC_DLL 0x20 /* DLL Information Register */ | ||
110 | #define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */ | 105 | #define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */ |
111 | #define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */ | 106 | #define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */ |
112 | #define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */ | 107 | #define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */ |
113 | #define AT91CAP9_DDRSDRC_SDCOVF (1 << 3) /* Slave Delay Correction Overflow */ | ||
114 | #define AT91CAP9_DDRSDRC_SDCUDF (1 << 4) /* Slave Delay Correction Underflow */ | ||
115 | #define AT91CAP9_DDRSDRC_SDERF (1 << 5) /* Slave Delay Correction error */ | ||
116 | #define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */ | 108 | #define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */ |
117 | #define AT91CAP9_DDRSDRC_SDVAL (0xff << 16) /* Slave Delay value */ | ||
118 | #define AT91CAP9_DDRSDRC_SDCVAL (0xff << 24) /* Slave Delay Correction value */ | ||
119 | 109 | ||
120 | #define AT91_DDRSDRC_HS 0x2C /* High Speed Register [SAM9 Only] */ | 110 | #define AT91_DDRSDRC_HS 0x2C /* High Speed Register [SAM9 Only] */ |
121 | #define AT91_DDRSDRC_DIS_ATCP_RD (1 << 2) /* Anticip read access is disabled */ | 111 | #define AT91_DDRSDRC_DIS_ATCP_RD (1 << 2) /* Anticip read access is disabled */ |
@@ -131,10 +121,4 @@ | |||
131 | #define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */ | 121 | #define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */ |
132 | #define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */ | 122 | #define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */ |
133 | 123 | ||
134 | /* Register access macros */ | ||
135 | #define at91_ramc_read(num, reg) \ | ||
136 | at91_sys_read(AT91_DDRSDRC##num + reg) | ||
137 | #define at91_ramc_write(num, reg, value) \ | ||
138 | at91_sys_write(AT91_DDRSDRC##num + reg, value) | ||
139 | |||
140 | #endif | 124 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h b/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h index 100f5a592926..3d085a9a7450 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h +++ b/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h | |||
@@ -82,10 +82,4 @@ | |||
82 | #define AT91_SDRAMC_MD_SDRAM 0 | 82 | #define AT91_SDRAMC_MD_SDRAM 0 |
83 | #define AT91_SDRAMC_MD_LOW_POWER_SDRAM 1 | 83 | #define AT91_SDRAMC_MD_LOW_POWER_SDRAM 1 |
84 | 84 | ||
85 | /* Register access macros */ | ||
86 | #define at91_ramc_read(num, reg) \ | ||
87 | at91_sys_read(AT91_SDRAMC##num + reg) | ||
88 | #define at91_ramc_write(num, reg, value) \ | ||
89 | at91_sys_write(AT91_SDRAMC##num + reg, value) | ||
90 | |||
91 | #endif | 85 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h index dd9c95ea0862..d052abcff852 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h | |||
@@ -84,17 +84,14 @@ | |||
84 | #define AT91SAM9G45_BASE_TC5 0xfffd4080 | 84 | #define AT91SAM9G45_BASE_TC5 0xfffd4080 |
85 | 85 | ||
86 | /* | 86 | /* |
87 | * System Peripherals (offset from AT91_BASE_SYS) | 87 | * System Peripherals |
88 | */ | 88 | */ |
89 | #define AT91_DDRSDRC1 (0xffffe400 - AT91_BASE_SYS) | ||
90 | #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) | ||
91 | #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) | ||
92 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
93 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | ||
94 | |||
95 | #define AT91SAM9G45_BASE_ECC 0xffffe200 | 89 | #define AT91SAM9G45_BASE_ECC 0xffffe200 |
90 | #define AT91SAM9G45_BASE_DDRSDRC1 0xffffe400 | ||
91 | #define AT91SAM9G45_BASE_DDRSDRC0 0xffffe600 | ||
96 | #define AT91SAM9G45_BASE_DMA 0xffffec00 | 92 | #define AT91SAM9G45_BASE_DMA 0xffffec00 |
97 | #define AT91SAM9G45_BASE_SMC 0xffffe800 | 93 | #define AT91SAM9G45_BASE_SMC 0xffffe800 |
94 | #define AT91SAM9G45_BASE_MATRIX 0xffffea00 | ||
98 | #define AT91SAM9G45_BASE_DBGU AT91_BASE_DBGU1 | 95 | #define AT91SAM9G45_BASE_DBGU AT91_BASE_DBGU1 |
99 | #define AT91SAM9G45_BASE_PIOA 0xfffff200 | 96 | #define AT91SAM9G45_BASE_PIOA 0xfffff200 |
100 | #define AT91SAM9G45_BASE_PIOB 0xfffff400 | 97 | #define AT91SAM9G45_BASE_PIOB 0xfffff400 |
@@ -107,6 +104,7 @@ | |||
107 | #define AT91SAM9G45_BASE_PIT 0xfffffd30 | 104 | #define AT91SAM9G45_BASE_PIT 0xfffffd30 |
108 | #define AT91SAM9G45_BASE_WDT 0xfffffd40 | 105 | #define AT91SAM9G45_BASE_WDT 0xfffffd40 |
109 | #define AT91SAM9G45_BASE_RTC 0xfffffdb0 | 106 | #define AT91SAM9G45_BASE_RTC 0xfffffdb0 |
107 | #define AT91SAM9G45_BASE_GPBR 0xfffffd60 | ||
110 | 108 | ||
111 | #define AT91_USART0 AT91SAM9G45_BASE_US0 | 109 | #define AT91_USART0 AT91SAM9G45_BASE_US0 |
112 | #define AT91_USART1 AT91SAM9G45_BASE_US1 | 110 | #define AT91_USART1 AT91SAM9G45_BASE_US1 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h index c972d60e0aeb..b76e2ed2fbc2 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45_matrix.h | |||
@@ -15,18 +15,18 @@ | |||
15 | #ifndef AT91SAM9G45_MATRIX_H | 15 | #ifndef AT91SAM9G45_MATRIX_H |
16 | #define AT91SAM9G45_MATRIX_H | 16 | #define AT91SAM9G45_MATRIX_H |
17 | 17 | ||
18 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | 18 | #define AT91_MATRIX_MCFG0 0x00 /* Master Configuration Register 0 */ |
19 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | 19 | #define AT91_MATRIX_MCFG1 0x04 /* Master Configuration Register 1 */ |
20 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | 20 | #define AT91_MATRIX_MCFG2 0x08 /* Master Configuration Register 2 */ |
21 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | 21 | #define AT91_MATRIX_MCFG3 0x0C /* Master Configuration Register 3 */ |
22 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | 22 | #define AT91_MATRIX_MCFG4 0x10 /* Master Configuration Register 4 */ |
23 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | 23 | #define AT91_MATRIX_MCFG5 0x14 /* Master Configuration Register 5 */ |
24 | #define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ | 24 | #define AT91_MATRIX_MCFG6 0x18 /* Master Configuration Register 6 */ |
25 | #define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ | 25 | #define AT91_MATRIX_MCFG7 0x1C /* Master Configuration Register 7 */ |
26 | #define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ | 26 | #define AT91_MATRIX_MCFG8 0x20 /* Master Configuration Register 8 */ |
27 | #define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */ | 27 | #define AT91_MATRIX_MCFG9 0x24 /* Master Configuration Register 9 */ |
28 | #define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */ | 28 | #define AT91_MATRIX_MCFG10 0x28 /* Master Configuration Register 10 */ |
29 | #define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */ | 29 | #define AT91_MATRIX_MCFG11 0x2C /* Master Configuration Register 11 */ |
30 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | 30 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ |
31 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | 31 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) |
32 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | 32 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) |
@@ -37,14 +37,14 @@ | |||
37 | #define AT91_MATRIX_ULBT_SIXTYFOUR (6 << 0) | 37 | #define AT91_MATRIX_ULBT_SIXTYFOUR (6 << 0) |
38 | #define AT91_MATRIX_ULBT_128 (7 << 0) | 38 | #define AT91_MATRIX_ULBT_128 (7 << 0) |
39 | 39 | ||
40 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | 40 | #define AT91_MATRIX_SCFG0 0x40 /* Slave Configuration Register 0 */ |
41 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | 41 | #define AT91_MATRIX_SCFG1 0x44 /* Slave Configuration Register 1 */ |
42 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | 42 | #define AT91_MATRIX_SCFG2 0x48 /* Slave Configuration Register 2 */ |
43 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | 43 | #define AT91_MATRIX_SCFG3 0x4C /* Slave Configuration Register 3 */ |
44 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | 44 | #define AT91_MATRIX_SCFG4 0x50 /* Slave Configuration Register 4 */ |
45 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | 45 | #define AT91_MATRIX_SCFG5 0x54 /* Slave Configuration Register 5 */ |
46 | #define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ | 46 | #define AT91_MATRIX_SCFG6 0x58 /* Slave Configuration Register 6 */ |
47 | #define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ | 47 | #define AT91_MATRIX_SCFG7 0x5C /* Slave Configuration Register 7 */ |
48 | #define AT91_MATRIX_SLOT_CYCLE (0x1ff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | 48 | #define AT91_MATRIX_SLOT_CYCLE (0x1ff << 0) /* Maximum Number of Allowed Cycles for a Burst */ |
49 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | 49 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ |
50 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 50 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
@@ -52,22 +52,22 @@ | |||
52 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | 52 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) |
53 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ | 53 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ |
54 | 54 | ||
55 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | 55 | #define AT91_MATRIX_PRAS0 0x80 /* Priority Register A for Slave 0 */ |
56 | #define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ | 56 | #define AT91_MATRIX_PRBS0 0x84 /* Priority Register B for Slave 0 */ |
57 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | 57 | #define AT91_MATRIX_PRAS1 0x88 /* Priority Register A for Slave 1 */ |
58 | #define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ | 58 | #define AT91_MATRIX_PRBS1 0x8C /* Priority Register B for Slave 1 */ |
59 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | 59 | #define AT91_MATRIX_PRAS2 0x90 /* Priority Register A for Slave 2 */ |
60 | #define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ | 60 | #define AT91_MATRIX_PRBS2 0x94 /* Priority Register B for Slave 2 */ |
61 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | 61 | #define AT91_MATRIX_PRAS3 0x98 /* Priority Register A for Slave 3 */ |
62 | #define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ | 62 | #define AT91_MATRIX_PRBS3 0x9C /* Priority Register B for Slave 3 */ |
63 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | 63 | #define AT91_MATRIX_PRAS4 0xA0 /* Priority Register A for Slave 4 */ |
64 | #define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ | 64 | #define AT91_MATRIX_PRBS4 0xA4 /* Priority Register B for Slave 4 */ |
65 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | 65 | #define AT91_MATRIX_PRAS5 0xA8 /* Priority Register A for Slave 5 */ |
66 | #define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ | 66 | #define AT91_MATRIX_PRBS5 0xAC /* Priority Register B for Slave 5 */ |
67 | #define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ | 67 | #define AT91_MATRIX_PRAS6 0xB0 /* Priority Register A for Slave 6 */ |
68 | #define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ | 68 | #define AT91_MATRIX_PRBS6 0xB4 /* Priority Register B for Slave 6 */ |
69 | #define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ | 69 | #define AT91_MATRIX_PRAS7 0xB8 /* Priority Register A for Slave 7 */ |
70 | #define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ | 70 | #define AT91_MATRIX_PRBS7 0xBC /* Priority Register B for Slave 7 */ |
71 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | 71 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ |
72 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | 72 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ |
73 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | 73 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ |
@@ -81,7 +81,7 @@ | |||
81 | #define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ | 81 | #define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ |
82 | #define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ | 82 | #define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ |
83 | 83 | ||
84 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | 84 | #define AT91_MATRIX_MRCR 0x100 /* Master Remap Control Register */ |
85 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | 85 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ |
86 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | 86 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ |
87 | #define AT91_MATRIX_RCB2 (1 << 2) | 87 | #define AT91_MATRIX_RCB2 (1 << 2) |
@@ -95,7 +95,7 @@ | |||
95 | #define AT91_MATRIX_RCB10 (1 << 10) | 95 | #define AT91_MATRIX_RCB10 (1 << 10) |
96 | #define AT91_MATRIX_RCB11 (1 << 11) | 96 | #define AT91_MATRIX_RCB11 (1 << 11) |
97 | 97 | ||
98 | #define AT91_MATRIX_TCMR (AT91_MATRIX + 0x110) /* TCM Configuration Register */ | 98 | #define AT91_MATRIX_TCMR 0x110 /* TCM Configuration Register */ |
99 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ | 99 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ |
100 | #define AT91_MATRIX_ITCM_0 (0 << 0) | 100 | #define AT91_MATRIX_ITCM_0 (0 << 0) |
101 | #define AT91_MATRIX_ITCM_32 (6 << 0) | 101 | #define AT91_MATRIX_ITCM_32 (6 << 0) |
@@ -107,12 +107,12 @@ | |||
107 | #define AT91_MATRIX_TCM_NO_WS (0x0 << 11) | 107 | #define AT91_MATRIX_TCM_NO_WS (0x0 << 11) |
108 | #define AT91_MATRIX_TCM_ONE_WS (0x1 << 11) | 108 | #define AT91_MATRIX_TCM_ONE_WS (0x1 << 11) |
109 | 109 | ||
110 | #define AT91_MATRIX_VIDEO (AT91_MATRIX + 0x118) /* Video Mode Configuration Register */ | 110 | #define AT91_MATRIX_VIDEO 0x118 /* Video Mode Configuration Register */ |
111 | #define AT91C_VDEC_SEL (0x1 << 0) /* Video Mode Selection */ | 111 | #define AT91C_VDEC_SEL (0x1 << 0) /* Video Mode Selection */ |
112 | #define AT91C_VDEC_SEL_OFF (0 << 0) | 112 | #define AT91C_VDEC_SEL_OFF (0 << 0) |
113 | #define AT91C_VDEC_SEL_ON (1 << 0) | 113 | #define AT91C_VDEC_SEL_ON (1 << 0) |
114 | 114 | ||
115 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x128) /* EBI Chip Select Assignment Register */ | 115 | #define AT91_MATRIX_EBICSA 0x128 /* EBI Chip Select Assignment Register */ |
116 | #define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 116 | #define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
117 | #define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) | 117 | #define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) |
118 | #define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1) | 118 | #define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1) |
@@ -138,13 +138,13 @@ | |||
138 | #define AT91_MATRIX_EBI_DDR_IOSR_REDUCED (0 << 18) | 138 | #define AT91_MATRIX_EBI_DDR_IOSR_REDUCED (0 << 18) |
139 | #define AT91_MATRIX_EBI_DDR_IOSR_NORMAL (1 << 18) | 139 | #define AT91_MATRIX_EBI_DDR_IOSR_NORMAL (1 << 18) |
140 | 140 | ||
141 | #define AT91_MATRIX_WPMR (AT91_MATRIX + 0x1E4) /* Write Protect Mode Register */ | 141 | #define AT91_MATRIX_WPMR 0x1E4 /* Write Protect Mode Register */ |
142 | #define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */ | 142 | #define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */ |
143 | #define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0) | 143 | #define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0) |
144 | #define AT91_MATRIX_WPMR_WP_WPEN (1 << 0) | 144 | #define AT91_MATRIX_WPMR_WP_WPEN (1 << 0) |
145 | #define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */ | 145 | #define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */ |
146 | 146 | ||
147 | #define AT91_MATRIX_WPSR (AT91_MATRIX + 0x1E8) /* Write Protect Status Register */ | 147 | #define AT91_MATRIX_WPSR 0x1E8 /* Write Protect Status Register */ |
148 | #define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */ | 148 | #define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */ |
149 | #define AT91_MATRIX_WPSR_NO_WPV (0 << 0) | 149 | #define AT91_MATRIX_WPSR_NO_WPV (0 << 0) |
150 | #define AT91_MATRIX_WPSR_WPV (1 << 0) | 150 | #define AT91_MATRIX_WPSR_WPV (1 << 0) |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9rl.h b/arch/arm/mach-at91/include/mach/at91sam9rl.h index d7bead7118da..e0073eb10144 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9rl.h +++ b/arch/arm/mach-at91/include/mach/at91sam9rl.h | |||
@@ -69,15 +69,13 @@ | |||
69 | /* | 69 | /* |
70 | * System Peripherals (offset from AT91_BASE_SYS) | 70 | * System Peripherals (offset from AT91_BASE_SYS) |
71 | */ | 71 | */ |
72 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
73 | #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) | ||
74 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
75 | #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) | 72 | #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) |
76 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | ||
77 | 73 | ||
78 | #define AT91SAM9RL_BASE_DMA 0xffffe600 | 74 | #define AT91SAM9RL_BASE_DMA 0xffffe600 |
79 | #define AT91SAM9RL_BASE_ECC 0xffffe800 | 75 | #define AT91SAM9RL_BASE_ECC 0xffffe800 |
76 | #define AT91SAM9RL_BASE_SDRAMC 0xffffea00 | ||
80 | #define AT91SAM9RL_BASE_SMC 0xffffec00 | 77 | #define AT91SAM9RL_BASE_SMC 0xffffec00 |
78 | #define AT91SAM9RL_BASE_MATRIX 0xffffee00 | ||
81 | #define AT91SAM9RL_BASE_DBGU AT91_BASE_DBGU0 | 79 | #define AT91SAM9RL_BASE_DBGU AT91_BASE_DBGU0 |
82 | #define AT91SAM9RL_BASE_PIOA 0xfffff400 | 80 | #define AT91SAM9RL_BASE_PIOA 0xfffff400 |
83 | #define AT91SAM9RL_BASE_PIOB 0xfffff600 | 81 | #define AT91SAM9RL_BASE_PIOB 0xfffff600 |
@@ -88,6 +86,7 @@ | |||
88 | #define AT91SAM9RL_BASE_RTT 0xfffffd20 | 86 | #define AT91SAM9RL_BASE_RTT 0xfffffd20 |
89 | #define AT91SAM9RL_BASE_PIT 0xfffffd30 | 87 | #define AT91SAM9RL_BASE_PIT 0xfffffd30 |
90 | #define AT91SAM9RL_BASE_WDT 0xfffffd40 | 88 | #define AT91SAM9RL_BASE_WDT 0xfffffd40 |
89 | #define AT91SAM9RL_BASE_GPBR 0xfffffd60 | ||
91 | #define AT91SAM9RL_BASE_RTC 0xfffffe00 | 90 | #define AT91SAM9RL_BASE_RTC 0xfffffe00 |
92 | 91 | ||
93 | #define AT91_USART0 AT91SAM9RL_BASE_US0 | 92 | #define AT91_USART0 AT91SAM9RL_BASE_US0 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9rl_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9rl_matrix.h index 5f9149071fe5..6d160adadafc 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9rl_matrix.h +++ b/arch/arm/mach-at91/include/mach/at91sam9rl_matrix.h | |||
@@ -14,12 +14,12 @@ | |||
14 | #ifndef AT91SAM9RL_MATRIX_H | 14 | #ifndef AT91SAM9RL_MATRIX_H |
15 | #define AT91SAM9RL_MATRIX_H | 15 | #define AT91SAM9RL_MATRIX_H |
16 | 16 | ||
17 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | 17 | #define AT91_MATRIX_MCFG0 0x00 /* Master Configuration Register 0 */ |
18 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | 18 | #define AT91_MATRIX_MCFG1 0x04 /* Master Configuration Register 1 */ |
19 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | 19 | #define AT91_MATRIX_MCFG2 0x08 /* Master Configuration Register 2 */ |
20 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | 20 | #define AT91_MATRIX_MCFG3 0x0C /* Master Configuration Register 3 */ |
21 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | 21 | #define AT91_MATRIX_MCFG4 0x10 /* Master Configuration Register 4 */ |
22 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | 22 | #define AT91_MATRIX_MCFG5 0x14 /* Master Configuration Register 5 */ |
23 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | 23 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ |
24 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | 24 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) |
25 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | 25 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) |
@@ -27,12 +27,12 @@ | |||
27 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | 27 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) |
28 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | 28 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) |
29 | 29 | ||
30 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | 30 | #define AT91_MATRIX_SCFG0 0x40 /* Slave Configuration Register 0 */ |
31 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | 31 | #define AT91_MATRIX_SCFG1 0x44 /* Slave Configuration Register 1 */ |
32 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | 32 | #define AT91_MATRIX_SCFG2 0x48 /* Slave Configuration Register 2 */ |
33 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | 33 | #define AT91_MATRIX_SCFG3 0x4C /* Slave Configuration Register 3 */ |
34 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | 34 | #define AT91_MATRIX_SCFG4 0x50 /* Slave Configuration Register 4 */ |
35 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | 35 | #define AT91_MATRIX_SCFG5 0x54 /* Slave Configuration Register 5 */ |
36 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | 36 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ |
37 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | 37 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ |
38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
@@ -43,12 +43,12 @@ | |||
43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | 43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) |
44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | 44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) |
45 | 45 | ||
46 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | 46 | #define AT91_MATRIX_PRAS0 0x80 /* Priority Register A for Slave 0 */ |
47 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | 47 | #define AT91_MATRIX_PRAS1 0x88 /* Priority Register A for Slave 1 */ |
48 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | 48 | #define AT91_MATRIX_PRAS2 0x90 /* Priority Register A for Slave 2 */ |
49 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | 49 | #define AT91_MATRIX_PRAS3 0x98 /* Priority Register A for Slave 3 */ |
50 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | 50 | #define AT91_MATRIX_PRAS4 0xA0 /* Priority Register A for Slave 4 */ |
51 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | 51 | #define AT91_MATRIX_PRAS5 0xA8 /* Priority Register A for Slave 5 */ |
52 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | 52 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ |
53 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | 53 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ |
54 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | 54 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ |
@@ -56,7 +56,7 @@ | |||
56 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ | 56 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ |
57 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ | 57 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ |
58 | 58 | ||
59 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | 59 | #define AT91_MATRIX_MRCR 0x100 /* Master Remap Control Register */ |
60 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | 60 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ |
61 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | 61 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ |
62 | #define AT91_MATRIX_RCB2 (1 << 2) | 62 | #define AT91_MATRIX_RCB2 (1 << 2) |
@@ -64,7 +64,7 @@ | |||
64 | #define AT91_MATRIX_RCB4 (1 << 4) | 64 | #define AT91_MATRIX_RCB4 (1 << 4) |
65 | #define AT91_MATRIX_RCB5 (1 << 5) | 65 | #define AT91_MATRIX_RCB5 (1 << 5) |
66 | 66 | ||
67 | #define AT91_MATRIX_TCMR (AT91_MATRIX + 0x114) /* TCM Configuration Register */ | 67 | #define AT91_MATRIX_TCMR 0x114 /* TCM Configuration Register */ |
68 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ | 68 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ |
69 | #define AT91_MATRIX_ITCM_0 (0 << 0) | 69 | #define AT91_MATRIX_ITCM_0 (0 << 0) |
70 | #define AT91_MATRIX_ITCM_16 (5 << 0) | 70 | #define AT91_MATRIX_ITCM_16 (5 << 0) |
@@ -74,7 +74,7 @@ | |||
74 | #define AT91_MATRIX_DTCM_16 (5 << 4) | 74 | #define AT91_MATRIX_DTCM_16 (5 << 4) |
75 | #define AT91_MATRIX_DTCM_32 (6 << 4) | 75 | #define AT91_MATRIX_DTCM_32 (6 << 4) |
76 | 76 | ||
77 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI0 Chip Select Assignment Register */ | 77 | #define AT91_MATRIX_EBICSA 0x120 /* EBI0 Chip Select Assignment Register */ |
78 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ | 78 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ |
79 | #define AT91_MATRIX_CS1A_SMC (0 << 1) | 79 | #define AT91_MATRIX_CS1A_SMC (0 << 1) |
80 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) | 80 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h new file mode 100644 index 000000000000..a297a77d88e2 --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * Chip-specific header file for the AT91SAM9x5 family | ||
3 | * | ||
4 | * Copyright (C) 2009-2012 Atmel Corporation. | ||
5 | * | ||
6 | * Common definitions. | ||
7 | * Based on AT91SAM9x5 datasheet. | ||
8 | * | ||
9 | * Licensed under GPLv2 or later. | ||
10 | */ | ||
11 | |||
12 | #ifndef AT91SAM9X5_H | ||
13 | #define AT91SAM9X5_H | ||
14 | |||
15 | /* | ||
16 | * Peripheral identifiers/interrupts. | ||
17 | */ | ||
18 | #define AT91SAM9X5_ID_PIOAB 2 /* Parallel I/O Controller A and B */ | ||
19 | #define AT91SAM9X5_ID_PIOCD 3 /* Parallel I/O Controller C and D */ | ||
20 | #define AT91SAM9X5_ID_SMD 4 /* SMD Soft Modem (SMD) */ | ||
21 | #define AT91SAM9X5_ID_USART0 5 /* USART 0 */ | ||
22 | #define AT91SAM9X5_ID_USART1 6 /* USART 1 */ | ||
23 | #define AT91SAM9X5_ID_USART2 7 /* USART 2 */ | ||
24 | #define AT91SAM9X5_ID_USART3 8 /* USART 3 */ | ||
25 | #define AT91SAM9X5_ID_TWI0 9 /* Two-Wire Interface 0 */ | ||
26 | #define AT91SAM9X5_ID_TWI1 10 /* Two-Wire Interface 1 */ | ||
27 | #define AT91SAM9X5_ID_TWI2 11 /* Two-Wire Interface 2 */ | ||
28 | #define AT91SAM9X5_ID_MCI0 12 /* High Speed Multimedia Card Interface 0 */ | ||
29 | #define AT91SAM9X5_ID_SPI0 13 /* Serial Peripheral Interface 0 */ | ||
30 | #define AT91SAM9X5_ID_SPI1 14 /* Serial Peripheral Interface 1 */ | ||
31 | #define AT91SAM9X5_ID_UART0 15 /* UART 0 */ | ||
32 | #define AT91SAM9X5_ID_UART1 16 /* UART 1 */ | ||
33 | #define AT91SAM9X5_ID_TCB 17 /* Timer Counter 0, 1, 2, 3, 4 and 5 */ | ||
34 | #define AT91SAM9X5_ID_PWM 18 /* Pulse Width Modulation Controller */ | ||
35 | #define AT91SAM9X5_ID_ADC 19 /* ADC Controller */ | ||
36 | #define AT91SAM9X5_ID_DMA0 20 /* DMA Controller 0 */ | ||
37 | #define AT91SAM9X5_ID_DMA1 21 /* DMA Controller 1 */ | ||
38 | #define AT91SAM9X5_ID_UHPHS 22 /* USB Host High Speed */ | ||
39 | #define AT91SAM9X5_ID_UDPHS 23 /* USB Device High Speed */ | ||
40 | #define AT91SAM9X5_ID_EMAC0 24 /* Ethernet MAC0 */ | ||
41 | #define AT91SAM9X5_ID_LCDC 25 /* LCD Controller */ | ||
42 | #define AT91SAM9X5_ID_ISI 25 /* Image Sensor Interface */ | ||
43 | #define AT91SAM9X5_ID_MCI1 26 /* High Speed Multimedia Card Interface 1 */ | ||
44 | #define AT91SAM9X5_ID_EMAC1 27 /* Ethernet MAC1 */ | ||
45 | #define AT91SAM9X5_ID_SSC 28 /* Synchronous Serial Controller */ | ||
46 | #define AT91SAM9X5_ID_CAN0 29 /* CAN Controller 0 */ | ||
47 | #define AT91SAM9X5_ID_CAN1 30 /* CAN Controller 1 */ | ||
48 | #define AT91SAM9X5_ID_IRQ0 31 /* Advanced Interrupt Controller */ | ||
49 | |||
50 | /* | ||
51 | * User Peripheral physical base addresses. | ||
52 | */ | ||
53 | #define AT91SAM9X5_BASE_USART0 0xf801c000 | ||
54 | #define AT91SAM9X5_BASE_USART1 0xf8020000 | ||
55 | #define AT91SAM9X5_BASE_USART2 0xf8024000 | ||
56 | |||
57 | /* | ||
58 | * System Peripherals | ||
59 | */ | ||
60 | #define AT91SAM9X5_BASE_DDRSDRC0 0xffffe800 | ||
61 | |||
62 | /* | ||
63 | * Base addresses for early serial code (uncompress.h) | ||
64 | */ | ||
65 | #define AT91_DBGU AT91_BASE_DBGU0 | ||
66 | #define AT91_USART0 AT91SAM9X5_BASE_USART0 | ||
67 | #define AT91_USART1 AT91SAM9X5_BASE_USART1 | ||
68 | #define AT91_USART2 AT91SAM9X5_BASE_USART2 | ||
69 | |||
70 | /* | ||
71 | * Internal Memory. | ||
72 | */ | ||
73 | #define AT91SAM9X5_SRAM_BASE 0x00300000 /* Internal SRAM base address */ | ||
74 | #define AT91SAM9X5_SRAM_SIZE SZ_32K /* Internal SRAM size (32Kb) */ | ||
75 | |||
76 | #define AT91SAM9X5_ROM_BASE 0x00400000 /* Internal ROM base address */ | ||
77 | #define AT91SAM9X5_ROM_SIZE SZ_64K /* Internal ROM size (64Kb) */ | ||
78 | |||
79 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h new file mode 100644 index 000000000000..a606d3966470 --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * Matrix-centric header file for the AT91SAM9x5 family | ||
3 | * | ||
4 | * Copyright (C) 2009-2012 Atmel Corporation. | ||
5 | * | ||
6 | * Only EBI related registers. | ||
7 | * Write Protect register definitions may be useful. | ||
8 | * | ||
9 | * Licensed under GPLv2 or later. | ||
10 | */ | ||
11 | |||
12 | #ifndef AT91SAM9X5_MATRIX_H | ||
13 | #define AT91SAM9X5_MATRIX_H | ||
14 | |||
15 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI Chip Select Assignment Register */ | ||
16 | #define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ | ||
17 | #define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) | ||
18 | #define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1) | ||
19 | #define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */ | ||
20 | #define AT91_MATRIX_EBI_CS3A_SMC (0 << 3) | ||
21 | #define AT91_MATRIX_EBI_CS3A_SMC_NANDFLASH (1 << 3) | ||
22 | #define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | ||
23 | #define AT91_MATRIX_EBI_DBPU_ON (0 << 8) | ||
24 | #define AT91_MATRIX_EBI_DBPU_OFF (1 << 8) | ||
25 | #define AT91_MATRIX_EBI_VDDIOMSEL (1 << 16) /* Memory voltage selection */ | ||
26 | #define AT91_MATRIX_EBI_VDDIOMSEL_1_8V (0 << 16) | ||
27 | #define AT91_MATRIX_EBI_VDDIOMSEL_3_3V (1 << 16) | ||
28 | #define AT91_MATRIX_EBI_EBI_IOSR (1 << 17) /* EBI I/O slew rate selection */ | ||
29 | #define AT91_MATRIX_EBI_EBI_IOSR_REDUCED (0 << 17) | ||
30 | #define AT91_MATRIX_EBI_EBI_IOSR_NORMAL (1 << 17) | ||
31 | #define AT91_MATRIX_EBI_DDR_IOSR (1 << 18) /* DDR2 dedicated port I/O slew rate selection */ | ||
32 | #define AT91_MATRIX_EBI_DDR_IOSR_REDUCED (0 << 18) | ||
33 | #define AT91_MATRIX_EBI_DDR_IOSR_NORMAL (1 << 18) | ||
34 | #define AT91_MATRIX_NFD0_SELECT (1 << 24) /* NAND Flash Data Bus Selection */ | ||
35 | #define AT91_MATRIX_NFD0_ON_D0 (0 << 24) | ||
36 | #define AT91_MATRIX_NFD0_ON_D16 (1 << 24) | ||
37 | #define AT91_MATRIX_DDR_MP_EN (1 << 25) /* DDR Multi-port Enable */ | ||
38 | #define AT91_MATRIX_MP_OFF (0 << 25) | ||
39 | #define AT91_MATRIX_MP_ON (1 << 25) | ||
40 | |||
41 | #define AT91_MATRIX_WPMR (AT91_MATRIX + 0x1E4) /* Write Protect Mode Register */ | ||
42 | #define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */ | ||
43 | #define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0) | ||
44 | #define AT91_MATRIX_WPMR_WP_WPEN (1 << 0) | ||
45 | #define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */ | ||
46 | |||
47 | #define AT91_MATRIX_WPSR (AT91_MATRIX + 0x1E8) /* Write Protect Status Register */ | ||
48 | #define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */ | ||
49 | #define AT91_MATRIX_WPSR_NO_WPV (0 << 0) | ||
50 | #define AT91_MATRIX_WPSR_WPV (1 << 0) | ||
51 | #define AT91_MATRIX_WPSR_WPVSRC (0xFFFF << 8) /* Write Protect Violation Source */ | ||
52 | |||
53 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/at91x40.h b/arch/arm/mach-at91/include/mach/at91x40.h index a57829f4fd18..90680217064e 100644 --- a/arch/arm/mach-at91/include/mach/at91x40.h +++ b/arch/arm/mach-at91/include/mach/at91x40.h | |||
@@ -28,18 +28,18 @@ | |||
28 | #define AT91X40_ID_IRQ2 18 /* External IRQ 2 */ | 28 | #define AT91X40_ID_IRQ2 18 /* External IRQ 2 */ |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * System Peripherals (offset from AT91_BASE_SYS) | 31 | * System Peripherals |
32 | */ | 32 | */ |
33 | #define AT91_BASE_SYS 0xffc00000 | 33 | #define AT91_BASE_SYS 0xffc00000 |
34 | 34 | ||
35 | #define AT91_EBI (0xffe00000 - AT91_BASE_SYS) /* External Bus Interface */ | 35 | #define AT91_EBI 0xffe00000 /* External Bus Interface */ |
36 | #define AT91_SF (0xfff00000 - AT91_BASE_SYS) /* Special Function */ | 36 | #define AT91_SF 0xfff00000 /* Special Function */ |
37 | #define AT91_USART1 (0xfffcc000 - AT91_BASE_SYS) /* USART 1 */ | 37 | #define AT91_USART1 0xfffcc000 /* USART 1 */ |
38 | #define AT91_USART0 (0xfffd0000 - AT91_BASE_SYS) /* USART 0 */ | 38 | #define AT91_USART0 0xfffd0000 /* USART 0 */ |
39 | #define AT91_TC (0xfffe0000 - AT91_BASE_SYS) /* Timer Counter */ | 39 | #define AT91_TC 0xfffe0000 /* Timer Counter */ |
40 | #define AT91_PIOA (0xffff0000 - AT91_BASE_SYS) /* PIO Controller A */ | 40 | #define AT91_PIOA 0xffff0000 /* PIO Controller A */ |
41 | #define AT91_PS (0xffff4000 - AT91_BASE_SYS) /* Power Save */ | 41 | #define AT91_PS 0xffff4000 /* Power Save */ |
42 | #define AT91_WD (0xffff8000 - AT91_BASE_SYS) /* Watchdog Timer */ | 42 | #define AT91_WD 0xffff8000 /* Watchdog Timer */ |
43 | 43 | ||
44 | /* | 44 | /* |
45 | * The AT91x40 series doesn't have a debug unit like the other AT91 parts. | 45 | * The AT91x40 series doesn't have a debug unit like the other AT91 parts. |
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index 3b33f07b1e11..dc8d6d4f17cf 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h | |||
@@ -107,6 +107,8 @@ struct atmel_nand_data { | |||
107 | u8 ale; /* address line number connected to ALE */ | 107 | u8 ale; /* address line number connected to ALE */ |
108 | u8 cle; /* address line number connected to CLE */ | 108 | u8 cle; /* address line number connected to CLE */ |
109 | u8 bus_width_16; /* buswidth is 16 bit */ | 109 | u8 bus_width_16; /* buswidth is 16 bit */ |
110 | u8 correction_cap; /* PMECC correction capability */ | ||
111 | u16 sector_size; /* Sector size for PMECC */ | ||
110 | struct mtd_partition *parts; | 112 | struct mtd_partition *parts; |
111 | unsigned int num_parts; | 113 | unsigned int num_parts; |
112 | }; | 114 | }; |
@@ -179,7 +181,9 @@ extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data); | |||
179 | extern void __init at91_add_device_ac97(struct ac97c_platform_data *data); | 181 | extern void __init at91_add_device_ac97(struct ac97c_platform_data *data); |
180 | 182 | ||
181 | /* ISI */ | 183 | /* ISI */ |
182 | extern void __init at91_add_device_isi(void); | 184 | struct isi_platform_data; |
185 | extern void __init at91_add_device_isi(struct isi_platform_data *data, | ||
186 | bool use_pck_as_mck); | ||
183 | 187 | ||
184 | /* Touchscreen Controller */ | 188 | /* Touchscreen Controller */ |
185 | struct at91_tsadcc_data { | 189 | struct at91_tsadcc_data { |
diff --git a/arch/arm/mach-at91/include/mach/cpu.h b/arch/arm/mach-at91/include/mach/cpu.h index f6ce936dba2b..0118c3338552 100644 --- a/arch/arm/mach-at91/include/mach/cpu.h +++ b/arch/arm/mach-at91/include/mach/cpu.h | |||
@@ -25,7 +25,6 @@ | |||
25 | #define ARCH_ID_AT91SAM9G45MRL 0x819b05a2 /* aka 9G45-ES2 & non ES lots */ | 25 | #define ARCH_ID_AT91SAM9G45MRL 0x819b05a2 /* aka 9G45-ES2 & non ES lots */ |
26 | #define ARCH_ID_AT91SAM9G45ES 0x819b05a1 /* 9G45-ES (Engineering Sample) */ | 26 | #define ARCH_ID_AT91SAM9G45ES 0x819b05a1 /* 9G45-ES (Engineering Sample) */ |
27 | #define ARCH_ID_AT91SAM9X5 0x819a05a0 | 27 | #define ARCH_ID_AT91SAM9X5 0x819a05a0 |
28 | #define ARCH_ID_AT91CAP9 0x039A03A0 | ||
29 | 28 | ||
30 | #define ARCH_ID_AT91SAM9XE128 0x329973a0 | 29 | #define ARCH_ID_AT91SAM9XE128 0x329973a0 |
31 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 | 30 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 |
@@ -51,10 +50,6 @@ | |||
51 | #define ARCH_FAMILY_AT91SAM9 0x01900000 | 50 | #define ARCH_FAMILY_AT91SAM9 0x01900000 |
52 | #define ARCH_FAMILY_AT91SAM9XE 0x02900000 | 51 | #define ARCH_FAMILY_AT91SAM9XE 0x02900000 |
53 | 52 | ||
54 | /* PMC revision */ | ||
55 | #define ARCH_REVISION_CAP9_B 0x399 | ||
56 | #define ARCH_REVISION_CAP9_C 0x601 | ||
57 | |||
58 | /* RM9200 type */ | 53 | /* RM9200 type */ |
59 | #define ARCH_REVISON_9200_BGA (0 << 0) | 54 | #define ARCH_REVISON_9200_BGA (0 << 0) |
60 | #define ARCH_REVISON_9200_PQFP (1 << 0) | 55 | #define ARCH_REVISON_9200_PQFP (1 << 0) |
@@ -63,9 +58,6 @@ enum at91_soc_type { | |||
63 | /* 920T */ | 58 | /* 920T */ |
64 | AT91_SOC_RM9200, | 59 | AT91_SOC_RM9200, |
65 | 60 | ||
66 | /* CAP */ | ||
67 | AT91_SOC_CAP9, | ||
68 | |||
69 | /* SAM92xx */ | 61 | /* SAM92xx */ |
70 | AT91_SOC_SAM9260, AT91_SOC_SAM9261, AT91_SOC_SAM9263, | 62 | AT91_SOC_SAM9260, AT91_SOC_SAM9261, AT91_SOC_SAM9263, |
71 | 63 | ||
@@ -86,9 +78,6 @@ enum at91_soc_subtype { | |||
86 | /* RM9200 */ | 78 | /* RM9200 */ |
87 | AT91_SOC_RM9200_BGA, AT91_SOC_RM9200_PQFP, | 79 | AT91_SOC_RM9200_BGA, AT91_SOC_RM9200_PQFP, |
88 | 80 | ||
89 | /* CAP9 */ | ||
90 | AT91_SOC_CAP9_REV_B, AT91_SOC_CAP9_REV_C, | ||
91 | |||
92 | /* SAM9260 */ | 81 | /* SAM9260 */ |
93 | AT91_SOC_SAM9XE, | 82 | AT91_SOC_SAM9XE, |
94 | 83 | ||
@@ -195,16 +184,6 @@ static inline int at91_soc_is_detected(void) | |||
195 | #define cpu_is_at91sam9x25() (0) | 184 | #define cpu_is_at91sam9x25() (0) |
196 | #endif | 185 | #endif |
197 | 186 | ||
198 | #ifdef CONFIG_ARCH_AT91CAP9 | ||
199 | #define cpu_is_at91cap9() (at91_soc_initdata.type == AT91_SOC_CAP9) | ||
200 | #define cpu_is_at91cap9_revB() (at91_soc_initdata.subtype == AT91_SOC_CAP9_REV_B) | ||
201 | #define cpu_is_at91cap9_revC() (at91_soc_initdata.subtype == AT91_SOC_CAP9_REV_C) | ||
202 | #else | ||
203 | #define cpu_is_at91cap9() (0) | ||
204 | #define cpu_is_at91cap9_revB() (0) | ||
205 | #define cpu_is_at91cap9_revC() (0) | ||
206 | #endif | ||
207 | |||
208 | /* | 187 | /* |
209 | * Since this is ARM, we will never run on any AVR32 CPU. But these | 188 | * Since this is ARM, we will never run on any AVR32 CPU. But these |
210 | * definitions may reduce clutter in common drivers. | 189 | * definitions may reduce clutter in common drivers. |
diff --git a/arch/arm/mach-at91/include/mach/hardware.h b/arch/arm/mach-at91/include/mach/hardware.h index 2d0e4e998566..e9e29a6c3868 100644 --- a/arch/arm/mach-at91/include/mach/hardware.h +++ b/arch/arm/mach-at91/include/mach/hardware.h | |||
@@ -19,7 +19,7 @@ | |||
19 | /* DBGU base */ | 19 | /* DBGU base */ |
20 | /* rm9200, 9260/9g20, 9261/9g10, 9rl */ | 20 | /* rm9200, 9260/9g20, 9261/9g10, 9rl */ |
21 | #define AT91_BASE_DBGU0 0xfffff200 | 21 | #define AT91_BASE_DBGU0 0xfffff200 |
22 | /* 9263, 9g45, cap9 */ | 22 | /* 9263, 9g45 */ |
23 | #define AT91_BASE_DBGU1 0xffffee00 | 23 | #define AT91_BASE_DBGU1 0xffffee00 |
24 | 24 | ||
25 | #if defined(CONFIG_ARCH_AT91RM9200) | 25 | #if defined(CONFIG_ARCH_AT91RM9200) |
@@ -34,8 +34,8 @@ | |||
34 | #include <mach/at91sam9rl.h> | 34 | #include <mach/at91sam9rl.h> |
35 | #elif defined(CONFIG_ARCH_AT91SAM9G45) | 35 | #elif defined(CONFIG_ARCH_AT91SAM9G45) |
36 | #include <mach/at91sam9g45.h> | 36 | #include <mach/at91sam9g45.h> |
37 | #elif defined(CONFIG_ARCH_AT91CAP9) | 37 | #elif defined(CONFIG_ARCH_AT91SAM9X5) |
38 | #include <mach/at91cap9.h> | 38 | #include <mach/at91sam9x5.h> |
39 | #elif defined(CONFIG_ARCH_AT91X40) | 39 | #elif defined(CONFIG_ARCH_AT91X40) |
40 | #include <mach/at91x40.h> | 40 | #include <mach/at91x40.h> |
41 | #else | 41 | #else |
@@ -59,9 +59,10 @@ | |||
59 | 59 | ||
60 | /* | 60 | /* |
61 | * On all at91 have the Advanced Interrupt Controller starts at address | 61 | * On all at91 have the Advanced Interrupt Controller starts at address |
62 | * 0xfffff000 | 62 | * 0xfffff000 and the Power Management Controller starts at 0xfffffc00 |
63 | */ | 63 | */ |
64 | #define AT91_AIC 0xfffff000 | 64 | #define AT91_AIC 0xfffff000 |
65 | #define AT91_PMC 0xfffffc00 | ||
65 | 66 | ||
66 | /* | 67 | /* |
67 | * Peripheral identifiers/interrupts. | 68 | * Peripheral identifiers/interrupts. |
diff --git a/arch/arm/mach-at91/include/mach/io.h b/arch/arm/mach-at91/include/mach/io.h deleted file mode 100644 index 4ca09ef7ca29..000000000000 --- a/arch/arm/mach-at91/include/mach/io.h +++ /dev/null | |||
@@ -1,49 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2003 SAN People | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #ifndef __ASM_ARCH_IO_H | ||
22 | #define __ASM_ARCH_IO_H | ||
23 | |||
24 | #include <mach/hardware.h> | ||
25 | |||
26 | #define IO_SPACE_LIMIT 0xFFFFFFFF | ||
27 | |||
28 | #define __io(a) __typesafe_io(a) | ||
29 | #define __mem_pci(a) (a) | ||
30 | |||
31 | #ifndef __ASSEMBLY__ | ||
32 | |||
33 | static inline unsigned int at91_sys_read(unsigned int reg_offset) | ||
34 | { | ||
35 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
36 | |||
37 | return __raw_readl(addr + reg_offset); | ||
38 | } | ||
39 | |||
40 | static inline void at91_sys_write(unsigned int reg_offset, unsigned long value) | ||
41 | { | ||
42 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
43 | |||
44 | __raw_writel(value, addr + reg_offset); | ||
45 | } | ||
46 | |||
47 | #endif | ||
48 | |||
49 | #endif | ||
diff --git a/arch/arm/mach-at91/include/mach/uncompress.h b/arch/arm/mach-at91/include/mach/uncompress.h index 0234fd9d20d6..4218647c1fcd 100644 --- a/arch/arm/mach-at91/include/mach/uncompress.h +++ b/arch/arm/mach-at91/include/mach/uncompress.h | |||
@@ -23,6 +23,7 @@ | |||
23 | 23 | ||
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/atmel_serial.h> | 25 | #include <linux/atmel_serial.h> |
26 | #include <mach/hardware.h> | ||
26 | 27 | ||
27 | #if defined(CONFIG_AT91_EARLY_DBGU0) | 28 | #if defined(CONFIG_AT91_EARLY_DBGU0) |
28 | #define UART_OFFSET AT91_BASE_DBGU0 | 29 | #define UART_OFFSET AT91_BASE_DBGU0 |
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 1606379ac284..6c9d5e69ac28 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c | |||
@@ -136,7 +136,7 @@ static int at91_pm_verify_clocks(void) | |||
136 | unsigned long scsr; | 136 | unsigned long scsr; |
137 | int i; | 137 | int i; |
138 | 138 | ||
139 | scsr = at91_sys_read(AT91_PMC_SCSR); | 139 | scsr = at91_pmc_read(AT91_PMC_SCSR); |
140 | 140 | ||
141 | /* USB must not be using PLLB */ | 141 | /* USB must not be using PLLB */ |
142 | if (cpu_is_at91rm9200()) { | 142 | if (cpu_is_at91rm9200()) { |
@@ -150,11 +150,6 @@ static int at91_pm_verify_clocks(void) | |||
150 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); | 150 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); |
151 | return 0; | 151 | return 0; |
152 | } | 152 | } |
153 | } else if (cpu_is_at91cap9()) { | ||
154 | if ((scsr & AT91CAP9_PMC_UHP) != 0) { | ||
155 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); | ||
156 | return 0; | ||
157 | } | ||
158 | } | 153 | } |
159 | 154 | ||
160 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | 155 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS |
@@ -165,7 +160,7 @@ static int at91_pm_verify_clocks(void) | |||
165 | if ((scsr & (AT91_PMC_PCK0 << i)) == 0) | 160 | if ((scsr & (AT91_PMC_PCK0 << i)) == 0) |
166 | continue; | 161 | continue; |
167 | 162 | ||
168 | css = at91_sys_read(AT91_PMC_PCKR(i)) & AT91_PMC_CSS; | 163 | css = at91_pmc_read(AT91_PMC_PCKR(i)) & AT91_PMC_CSS; |
169 | if (css != AT91_PMC_CSS_SLOW) { | 164 | if (css != AT91_PMC_CSS_SLOW) { |
170 | pr_err("AT91: PM - Suspend-to-RAM with PCK%d src %d\n", i, css); | 165 | pr_err("AT91: PM - Suspend-to-RAM with PCK%d src %d\n", i, css); |
171 | return 0; | 166 | return 0; |
@@ -193,23 +188,36 @@ int at91_suspend_entering_slow_clock(void) | |||
193 | EXPORT_SYMBOL(at91_suspend_entering_slow_clock); | 188 | EXPORT_SYMBOL(at91_suspend_entering_slow_clock); |
194 | 189 | ||
195 | 190 | ||
196 | static void (*slow_clock)(void); | 191 | static void (*slow_clock)(void __iomem *pmc, void __iomem *ramc0, |
192 | void __iomem *ramc1, int memctrl); | ||
197 | 193 | ||
198 | #ifdef CONFIG_AT91_SLOW_CLOCK | 194 | #ifdef CONFIG_AT91_SLOW_CLOCK |
199 | extern void at91_slow_clock(void); | 195 | extern void at91_slow_clock(void __iomem *pmc, void __iomem *ramc0, |
196 | void __iomem *ramc1, int memctrl); | ||
200 | extern u32 at91_slow_clock_sz; | 197 | extern u32 at91_slow_clock_sz; |
201 | #endif | 198 | #endif |
202 | 199 | ||
200 | void __iomem *at91_ramc_base[2]; | ||
201 | |||
202 | void __init at91_ioremap_ramc(int id, u32 addr, u32 size) | ||
203 | { | ||
204 | if (id < 0 || id > 1) { | ||
205 | pr_emerg("Wrong RAM controller id (%d), cannot continue\n", id); | ||
206 | BUG(); | ||
207 | } | ||
208 | at91_ramc_base[id] = ioremap(addr, size); | ||
209 | if (!at91_ramc_base[id]) | ||
210 | panic("Impossible to ioremap ramc.%d 0x%x\n", id, addr); | ||
211 | } | ||
203 | 212 | ||
204 | static int at91_pm_enter(suspend_state_t state) | 213 | static int at91_pm_enter(suspend_state_t state) |
205 | { | 214 | { |
206 | u32 saved_lpr; | ||
207 | at91_gpio_suspend(); | 215 | at91_gpio_suspend(); |
208 | at91_irq_suspend(); | 216 | at91_irq_suspend(); |
209 | 217 | ||
210 | pr_debug("AT91: PM - wake mask %08x, pm state %d\n", | 218 | pr_debug("AT91: PM - wake mask %08x, pm state %d\n", |
211 | /* remember all the always-wake irqs */ | 219 | /* remember all the always-wake irqs */ |
212 | (at91_sys_read(AT91_PMC_PCSR) | 220 | (at91_pmc_read(AT91_PMC_PCSR) |
213 | | (1 << AT91_ID_FIQ) | 221 | | (1 << AT91_ID_FIQ) |
214 | | (1 << AT91_ID_SYS) | 222 | | (1 << AT91_ID_SYS) |
215 | | (at91_extern_irq)) | 223 | | (at91_extern_irq)) |
@@ -234,11 +242,18 @@ static int at91_pm_enter(suspend_state_t state) | |||
234 | * turning off the main oscillator; reverse on wakeup. | 242 | * turning off the main oscillator; reverse on wakeup. |
235 | */ | 243 | */ |
236 | if (slow_clock) { | 244 | if (slow_clock) { |
245 | int memctrl = AT91_MEMCTRL_SDRAMC; | ||
246 | |||
247 | if (cpu_is_at91rm9200()) | ||
248 | memctrl = AT91_MEMCTRL_MC; | ||
249 | else if (cpu_is_at91sam9g45()) | ||
250 | memctrl = AT91_MEMCTRL_DDRSDR; | ||
237 | #ifdef CONFIG_AT91_SLOW_CLOCK | 251 | #ifdef CONFIG_AT91_SLOW_CLOCK |
238 | /* copy slow_clock handler to SRAM, and call it */ | 252 | /* copy slow_clock handler to SRAM, and call it */ |
239 | memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz); | 253 | memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz); |
240 | #endif | 254 | #endif |
241 | slow_clock(); | 255 | slow_clock(at91_pmc_base, at91_ramc_base[0], |
256 | at91_ramc_base[1], memctrl); | ||
242 | break; | 257 | break; |
243 | } else { | 258 | } else { |
244 | pr_info("AT91: PM - no slow clock mode enabled ...\n"); | 259 | pr_info("AT91: PM - no slow clock mode enabled ...\n"); |
@@ -259,16 +274,7 @@ static int at91_pm_enter(suspend_state_t state) | |||
259 | * For ARM 926 based chips, this requirement is weaker | 274 | * For ARM 926 based chips, this requirement is weaker |
260 | * as at91sam9 can access a RAM in self-refresh mode. | 275 | * as at91sam9 can access a RAM in self-refresh mode. |
261 | */ | 276 | */ |
262 | asm volatile ( "mov r0, #0\n\t" | 277 | at91_standby(); |
263 | "b 1f\n\t" | ||
264 | ".align 5\n\t" | ||
265 | "1: mcr p15, 0, r0, c7, c10, 4\n\t" | ||
266 | : /* no output */ | ||
267 | : /* no input */ | ||
268 | : "r0"); | ||
269 | saved_lpr = sdram_selfrefresh_enable(); | ||
270 | wait_for_interrupt_enable(); | ||
271 | sdram_selfrefresh_disable(saved_lpr); | ||
272 | break; | 278 | break; |
273 | 279 | ||
274 | case PM_SUSPEND_ON: | 280 | case PM_SUSPEND_ON: |
@@ -316,7 +322,7 @@ static int __init at91_pm_init(void) | |||
316 | 322 | ||
317 | #ifdef CONFIG_ARCH_AT91RM9200 | 323 | #ifdef CONFIG_ARCH_AT91RM9200 |
318 | /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ | 324 | /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ |
319 | at91_sys_write(AT91_SDRAMC_LPR, 0); | 325 | at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0); |
320 | #endif | 326 | #endif |
321 | 327 | ||
322 | suspend_set_ops(&at91_pm_ops); | 328 | suspend_set_ops(&at91_pm_ops); |
diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h index 7eb40d24242f..89f56f3a802e 100644 --- a/arch/arm/mach-at91/pm.h +++ b/arch/arm/mach-at91/pm.h | |||
@@ -1,5 +1,19 @@ | |||
1 | /* | ||
2 | * AT91 Power Management | ||
3 | * | ||
4 | * Copyright (C) 2005 David Brownell | ||
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 | #ifndef __ARCH_ARM_MACH_AT91_PM | ||
12 | #define __ARCH_ARM_MACH_AT91_PM | ||
13 | |||
14 | #include <mach/at91_ramc.h> | ||
1 | #ifdef CONFIG_ARCH_AT91RM9200 | 15 | #ifdef CONFIG_ARCH_AT91RM9200 |
2 | #include <mach/at91rm9200_mc.h> | 16 | #include <mach/at91rm9200_sdramc.h> |
3 | 17 | ||
4 | /* | 18 | /* |
5 | * The AT91RM9200 goes into self-refresh mode with this command, and will | 19 | * The AT91RM9200 goes into self-refresh mode with this command, and will |
@@ -11,51 +25,37 @@ | |||
11 | * still in self-refresh is "not recommended", but seems to work. | 25 | * still in self-refresh is "not recommended", but seems to work. |
12 | */ | 26 | */ |
13 | 27 | ||
14 | static inline u32 sdram_selfrefresh_enable(void) | 28 | static inline void at91rm9200_standby(void) |
15 | { | 29 | { |
16 | u32 saved_lpr = at91_sys_read(AT91_SDRAMC_LPR); | 30 | u32 lpr = at91_ramc_read(0, AT91RM9200_SDRAMC_LPR); |
17 | 31 | ||
18 | at91_sys_write(AT91_SDRAMC_LPR, 0); | 32 | asm volatile( |
19 | at91_sys_write(AT91_SDRAMC_SRR, 1); | 33 | "b 1f\n\t" |
20 | return saved_lpr; | 34 | ".align 5\n\t" |
35 | "1: mcr p15, 0, %0, c7, c10, 4\n\t" | ||
36 | " str %0, [%1, %2]\n\t" | ||
37 | " str %3, [%1, %4]\n\t" | ||
38 | " mcr p15, 0, %0, c7, c0, 4\n\t" | ||
39 | " str %5, [%1, %2]" | ||
40 | : | ||
41 | : "r" (0), "r" (AT91_BASE_SYS), "r" (AT91RM9200_SDRAMC_LPR), | ||
42 | "r" (1), "r" (AT91RM9200_SDRAMC_SRR), | ||
43 | "r" (lpr)); | ||
21 | } | 44 | } |
22 | 45 | ||
23 | #define sdram_selfrefresh_disable(saved_lpr) at91_sys_write(AT91_SDRAMC_LPR, saved_lpr) | 46 | #define at91_standby at91rm9200_standby |
24 | #define wait_for_interrupt_enable() asm volatile ("mcr p15, 0, %0, c7, c0, 4" \ | ||
25 | : : "r" (0)) | ||
26 | |||
27 | #elif defined(CONFIG_ARCH_AT91CAP9) | ||
28 | #include <mach/at91sam9_ddrsdr.h> | ||
29 | |||
30 | |||
31 | static inline u32 sdram_selfrefresh_enable(void) | ||
32 | { | ||
33 | u32 saved_lpr, lpr; | ||
34 | |||
35 | saved_lpr = at91_ramc_read(0, AT91CAP9_DDRSDRC_LPR); | ||
36 | |||
37 | lpr = saved_lpr & ~AT91_DDRSDRC_LPCB; | ||
38 | at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH); | ||
39 | return saved_lpr; | ||
40 | } | ||
41 | |||
42 | #define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, saved_lpr) | ||
43 | #define wait_for_interrupt_enable() cpu_do_idle() | ||
44 | 47 | ||
45 | #elif defined(CONFIG_ARCH_AT91SAM9G45) | 48 | #elif defined(CONFIG_ARCH_AT91SAM9G45) |
46 | #include <mach/at91sam9_ddrsdr.h> | ||
47 | 49 | ||
48 | /* We manage both DDRAM/SDRAM controllers, we need more than one value to | 50 | /* We manage both DDRAM/SDRAM controllers, we need more than one value to |
49 | * remember. | 51 | * remember. |
50 | */ | 52 | */ |
51 | static u32 saved_lpr1; | 53 | static inline void at91sam9g45_standby(void) |
52 | |||
53 | static inline u32 sdram_selfrefresh_enable(void) | ||
54 | { | 54 | { |
55 | /* Those tow values allow us to delay self-refresh activation | 55 | /* Those two values allow us to delay self-refresh activation |
56 | * to the maximum. */ | 56 | * to the maximum. */ |
57 | u32 lpr0, lpr1; | 57 | u32 lpr0, lpr1; |
58 | u32 saved_lpr0; | 58 | u32 saved_lpr0, saved_lpr1; |
59 | 59 | ||
60 | saved_lpr1 = at91_ramc_read(1, AT91_DDRSDRC_LPR); | 60 | saved_lpr1 = at91_ramc_read(1, AT91_DDRSDRC_LPR); |
61 | lpr1 = saved_lpr1 & ~AT91_DDRSDRC_LPCB; | 61 | lpr1 = saved_lpr1 & ~AT91_DDRSDRC_LPCB; |
@@ -69,18 +69,15 @@ static inline u32 sdram_selfrefresh_enable(void) | |||
69 | at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr0); | 69 | at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr0); |
70 | at91_ramc_write(1, AT91_DDRSDRC_LPR, lpr1); | 70 | at91_ramc_write(1, AT91_DDRSDRC_LPR, lpr1); |
71 | 71 | ||
72 | return saved_lpr0; | 72 | cpu_do_idle(); |
73 | |||
74 | at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0); | ||
75 | at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); | ||
73 | } | 76 | } |
74 | 77 | ||
75 | #define sdram_selfrefresh_disable(saved_lpr0) \ | 78 | #define at91_standby at91sam9g45_standby |
76 | do { \ | ||
77 | at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0); \ | ||
78 | at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); \ | ||
79 | } while (0) | ||
80 | #define wait_for_interrupt_enable() cpu_do_idle() | ||
81 | 79 | ||
82 | #else | 80 | #else |
83 | #include <mach/at91sam9_sdramc.h> | ||
84 | 81 | ||
85 | #ifdef CONFIG_ARCH_AT91SAM9263 | 82 | #ifdef CONFIG_ARCH_AT91SAM9263 |
86 | /* | 83 | /* |
@@ -90,18 +87,23 @@ static inline u32 sdram_selfrefresh_enable(void) | |||
90 | #warning Assuming EB1 SDRAM controller is *NOT* used | 87 | #warning Assuming EB1 SDRAM controller is *NOT* used |
91 | #endif | 88 | #endif |
92 | 89 | ||
93 | static inline u32 sdram_selfrefresh_enable(void) | 90 | static inline void at91sam9_standby(void) |
94 | { | 91 | { |
95 | u32 saved_lpr, lpr; | 92 | u32 saved_lpr, lpr; |
96 | 93 | ||
97 | saved_lpr = at91_ramc_read(0, AT91_SDRAMC_LPR); | 94 | saved_lpr = at91_ramc_read(0, AT91_SDRAMC_LPR); |
98 | 95 | ||
99 | lpr = saved_lpr & ~AT91_SDRAMC_LPCB; | 96 | lpr = saved_lpr & ~AT91_SDRAMC_LPCB; |
100 | at91_ramc_write(0, AT91_SDRAMC_LPR, lpr | AT91_SDRAMC_LPCB_SELF_REFRESH); | 97 | at91_ramc_write(0, AT91_SDRAMC_LPR, lpr | |
101 | return saved_lpr; | 98 | AT91_SDRAMC_LPCB_SELF_REFRESH); |
99 | |||
100 | cpu_do_idle(); | ||
101 | |||
102 | at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr); | ||
102 | } | 103 | } |
103 | 104 | ||
104 | #define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr) | 105 | #define at91_standby at91sam9_standby |
105 | #define wait_for_interrupt_enable() cpu_do_idle() | 106 | |
107 | #endif | ||
106 | 108 | ||
107 | #endif | 109 | #endif |
diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S index 92dfb8461392..db5452123f17 100644 --- a/arch/arm/mach-at91/pm_slowclock.S +++ b/arch/arm/mach-at91/pm_slowclock.S | |||
@@ -15,15 +15,7 @@ | |||
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <mach/at91_pmc.h> | 17 | #include <mach/at91_pmc.h> |
18 | 18 | #include <mach/at91_ramc.h> | |
19 | #if defined(CONFIG_ARCH_AT91RM9200) | ||
20 | #include <mach/at91rm9200_mc.h> | ||
21 | #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||
22 | || defined(CONFIG_ARCH_AT91SAM9G45) | ||
23 | #include <mach/at91sam9_ddrsdr.h> | ||
24 | #else | ||
25 | #include <mach/at91sam9_sdramc.h> | ||
26 | #endif | ||
27 | 19 | ||
28 | 20 | ||
29 | #ifdef CONFIG_ARCH_AT91SAM9263 | 21 | #ifdef CONFIG_ARCH_AT91SAM9263 |
@@ -47,17 +39,23 @@ | |||
47 | #define PLLALOCK_TIMEOUT 1000 | 39 | #define PLLALOCK_TIMEOUT 1000 |
48 | #define PLLBLOCK_TIMEOUT 1000 | 40 | #define PLLBLOCK_TIMEOUT 1000 |
49 | 41 | ||
42 | pmc .req r0 | ||
43 | sdramc .req r1 | ||
44 | ramc1 .req r2 | ||
45 | memctrl .req r3 | ||
46 | tmp1 .req r4 | ||
47 | tmp2 .req r5 | ||
50 | 48 | ||
51 | /* | 49 | /* |
52 | * Wait until master clock is ready (after switching master clock source) | 50 | * Wait until master clock is ready (after switching master clock source) |
53 | */ | 51 | */ |
54 | .macro wait_mckrdy | 52 | .macro wait_mckrdy |
55 | mov r4, #MCKRDY_TIMEOUT | 53 | mov tmp2, #MCKRDY_TIMEOUT |
56 | 1: sub r4, r4, #1 | 54 | 1: sub tmp2, tmp2, #1 |
57 | cmp r4, #0 | 55 | cmp tmp2, #0 |
58 | beq 2f | 56 | beq 2f |
59 | ldr r3, [r1, #(AT91_PMC_SR - AT91_PMC)] | 57 | ldr tmp1, [pmc, #AT91_PMC_SR] |
60 | tst r3, #AT91_PMC_MCKRDY | 58 | tst tmp1, #AT91_PMC_MCKRDY |
61 | beq 1b | 59 | beq 1b |
62 | 2: | 60 | 2: |
63 | .endm | 61 | .endm |
@@ -66,12 +64,12 @@ | |||
66 | * Wait until master oscillator has stabilized. | 64 | * Wait until master oscillator has stabilized. |
67 | */ | 65 | */ |
68 | .macro wait_moscrdy | 66 | .macro wait_moscrdy |
69 | mov r4, #MOSCRDY_TIMEOUT | 67 | mov tmp2, #MOSCRDY_TIMEOUT |
70 | 1: sub r4, r4, #1 | 68 | 1: sub tmp2, tmp2, #1 |
71 | cmp r4, #0 | 69 | cmp tmp2, #0 |
72 | beq 2f | 70 | beq 2f |
73 | ldr r3, [r1, #(AT91_PMC_SR - AT91_PMC)] | 71 | ldr tmp1, [pmc, #AT91_PMC_SR] |
74 | tst r3, #AT91_PMC_MOSCS | 72 | tst tmp1, #AT91_PMC_MOSCS |
75 | beq 1b | 73 | beq 1b |
76 | 2: | 74 | 2: |
77 | .endm | 75 | .endm |
@@ -80,12 +78,12 @@ | |||
80 | * Wait until PLLA has locked. | 78 | * Wait until PLLA has locked. |
81 | */ | 79 | */ |
82 | .macro wait_pllalock | 80 | .macro wait_pllalock |
83 | mov r4, #PLLALOCK_TIMEOUT | 81 | mov tmp2, #PLLALOCK_TIMEOUT |
84 | 1: sub r4, r4, #1 | 82 | 1: sub tmp2, tmp2, #1 |
85 | cmp r4, #0 | 83 | cmp tmp2, #0 |
86 | beq 2f | 84 | beq 2f |
87 | ldr r3, [r1, #(AT91_PMC_SR - AT91_PMC)] | 85 | ldr tmp1, [pmc, #AT91_PMC_SR] |
88 | tst r3, #AT91_PMC_LOCKA | 86 | tst tmp1, #AT91_PMC_LOCKA |
89 | beq 1b | 87 | beq 1b |
90 | 2: | 88 | 2: |
91 | .endm | 89 | .endm |
@@ -94,80 +92,98 @@ | |||
94 | * Wait until PLLB has locked. | 92 | * Wait until PLLB has locked. |
95 | */ | 93 | */ |
96 | .macro wait_pllblock | 94 | .macro wait_pllblock |
97 | mov r4, #PLLBLOCK_TIMEOUT | 95 | mov tmp2, #PLLBLOCK_TIMEOUT |
98 | 1: sub r4, r4, #1 | 96 | 1: sub tmp2, tmp2, #1 |
99 | cmp r4, #0 | 97 | cmp tmp2, #0 |
100 | beq 2f | 98 | beq 2f |
101 | ldr r3, [r1, #(AT91_PMC_SR - AT91_PMC)] | 99 | ldr tmp1, [pmc, #AT91_PMC_SR] |
102 | tst r3, #AT91_PMC_LOCKB | 100 | tst tmp1, #AT91_PMC_LOCKB |
103 | beq 1b | 101 | beq 1b |
104 | 2: | 102 | 2: |
105 | .endm | 103 | .endm |
106 | 104 | ||
107 | .text | 105 | .text |
108 | 106 | ||
107 | /* void at91_slow_clock(void __iomem *pmc, void __iomem *sdramc, | ||
108 | * void __iomem *ramc1, int memctrl) | ||
109 | */ | ||
109 | ENTRY(at91_slow_clock) | 110 | ENTRY(at91_slow_clock) |
110 | /* Save registers on stack */ | 111 | /* Save registers on stack */ |
111 | stmfd sp!, {r0 - r12, lr} | 112 | stmfd sp!, {r4 - r12, lr} |
112 | 113 | ||
113 | /* | 114 | /* |
114 | * Register usage: | 115 | * Register usage: |
115 | * R1 = Base address of AT91_PMC | 116 | * R0 = Base address of AT91_PMC |
116 | * R2 = Base address of RAM Controller (SDRAM, DDRSDR, or AT91_SYS) | 117 | * R1 = Base address of RAM Controller (SDRAM, DDRSDR, or AT91_SYS) |
117 | * R3 = temporary register | 118 | * R2 = Base address of second RAM Controller or 0 if not present |
119 | * R3 = Memory controller | ||
118 | * R4 = temporary register | 120 | * R4 = temporary register |
119 | * R5 = Base address of second RAM Controller or 0 if not present | 121 | * R5 = temporary register |
120 | */ | 122 | */ |
121 | ldr r1, .at91_va_base_pmc | ||
122 | ldr r2, .at91_va_base_sdramc | ||
123 | ldr r5, .at91_va_base_ramc1 | ||
124 | 123 | ||
125 | /* Drain write buffer */ | 124 | /* Drain write buffer */ |
126 | mov r0, #0 | 125 | mov tmp1, #0 |
127 | mcr p15, 0, r0, c7, c10, 4 | 126 | mcr p15, 0, tmp1, c7, c10, 4 |
127 | |||
128 | cmp memctrl, #AT91_MEMCTRL_MC | ||
129 | bne ddr_sr_enable | ||
128 | 130 | ||
129 | #ifdef CONFIG_ARCH_AT91RM9200 | 131 | /* |
132 | * at91rm9200 Memory controller | ||
133 | */ | ||
130 | /* Put SDRAM in self-refresh mode */ | 134 | /* Put SDRAM in self-refresh mode */ |
131 | mov r3, #1 | 135 | mov tmp1, #1 |
132 | str r3, [r2, #AT91_SDRAMC_SRR] | 136 | str tmp1, [sdramc, #AT91RM9200_SDRAMC_SRR] |
133 | #elif defined(CONFIG_ARCH_AT91CAP9) \ | 137 | b sdr_sr_done |
134 | || defined(CONFIG_ARCH_AT91SAM9G45) | 138 | |
139 | /* | ||
140 | * DDRSDR Memory controller | ||
141 | */ | ||
142 | ddr_sr_enable: | ||
143 | cmp memctrl, #AT91_MEMCTRL_DDRSDR | ||
144 | bne sdr_sr_enable | ||
135 | 145 | ||
136 | /* prepare for DDRAM self-refresh mode */ | 146 | /* prepare for DDRAM self-refresh mode */ |
137 | ldr r3, [r2, #AT91_DDRSDRC_LPR] | 147 | ldr tmp1, [sdramc, #AT91_DDRSDRC_LPR] |
138 | str r3, .saved_sam9_lpr | 148 | str tmp1, .saved_sam9_lpr |
139 | bic r3, #AT91_DDRSDRC_LPCB | 149 | bic tmp1, #AT91_DDRSDRC_LPCB |
140 | orr r3, #AT91_DDRSDRC_LPCB_SELF_REFRESH | 150 | orr tmp1, #AT91_DDRSDRC_LPCB_SELF_REFRESH |
141 | 151 | ||
142 | /* figure out if we use the second ram controller */ | 152 | /* figure out if we use the second ram controller */ |
143 | cmp r5, #0 | 153 | cmp ramc1, #0 |
144 | ldrne r4, [r5, #AT91_DDRSDRC_LPR] | 154 | ldrne tmp2, [ramc1, #AT91_DDRSDRC_LPR] |
145 | strne r4, .saved_sam9_lpr1 | 155 | strne tmp2, .saved_sam9_lpr1 |
146 | bicne r4, #AT91_DDRSDRC_LPCB | 156 | bicne tmp2, #AT91_DDRSDRC_LPCB |
147 | orrne r4, #AT91_DDRSDRC_LPCB_SELF_REFRESH | 157 | orrne tmp2, #AT91_DDRSDRC_LPCB_SELF_REFRESH |
148 | 158 | ||
149 | /* Enable DDRAM self-refresh mode */ | 159 | /* Enable DDRAM self-refresh mode */ |
150 | str r3, [r2, #AT91_DDRSDRC_LPR] | 160 | str tmp1, [sdramc, #AT91_DDRSDRC_LPR] |
151 | strne r4, [r5, #AT91_DDRSDRC_LPR] | 161 | strne tmp2, [ramc1, #AT91_DDRSDRC_LPR] |
152 | #else | 162 | |
163 | b sdr_sr_done | ||
164 | |||
165 | /* | ||
166 | * SDRAMC Memory controller | ||
167 | */ | ||
168 | sdr_sr_enable: | ||
153 | /* Enable SDRAM self-refresh mode */ | 169 | /* Enable SDRAM self-refresh mode */ |
154 | ldr r3, [r2, #AT91_SDRAMC_LPR] | 170 | ldr tmp1, [sdramc, #AT91_SDRAMC_LPR] |
155 | str r3, .saved_sam9_lpr | 171 | str tmp1, .saved_sam9_lpr |
156 | 172 | ||
157 | bic r3, #AT91_SDRAMC_LPCB | 173 | bic tmp1, #AT91_SDRAMC_LPCB |
158 | orr r3, #AT91_SDRAMC_LPCB_SELF_REFRESH | 174 | orr tmp1, #AT91_SDRAMC_LPCB_SELF_REFRESH |
159 | str r3, [r2, #AT91_SDRAMC_LPR] | 175 | str tmp1, [sdramc, #AT91_SDRAMC_LPR] |
160 | #endif | ||
161 | 176 | ||
177 | sdr_sr_done: | ||
162 | /* Save Master clock setting */ | 178 | /* Save Master clock setting */ |
163 | ldr r3, [r1, #(AT91_PMC_MCKR - AT91_PMC)] | 179 | ldr tmp1, [pmc, #AT91_PMC_MCKR] |
164 | str r3, .saved_mckr | 180 | str tmp1, .saved_mckr |
165 | 181 | ||
166 | /* | 182 | /* |
167 | * Set the Master clock source to slow clock | 183 | * Set the Master clock source to slow clock |
168 | */ | 184 | */ |
169 | bic r3, r3, #AT91_PMC_CSS | 185 | bic tmp1, tmp1, #AT91_PMC_CSS |
170 | str r3, [r1, #(AT91_PMC_MCKR - AT91_PMC)] | 186 | str tmp1, [pmc, #AT91_PMC_MCKR] |
171 | 187 | ||
172 | wait_mckrdy | 188 | wait_mckrdy |
173 | 189 | ||
@@ -177,61 +193,61 @@ ENTRY(at91_slow_clock) | |||
177 | * | 193 | * |
178 | * See AT91RM9200 errata #27 and #28 for details. | 194 | * See AT91RM9200 errata #27 and #28 for details. |
179 | */ | 195 | */ |
180 | mov r3, #0 | 196 | mov tmp1, #0 |
181 | str r3, [r1, #(AT91_PMC_MCKR - AT91_PMC)] | 197 | str tmp1, [pmc, #AT91_PMC_MCKR] |
182 | 198 | ||
183 | wait_mckrdy | 199 | wait_mckrdy |
184 | #endif | 200 | #endif |
185 | 201 | ||
186 | /* Save PLLA setting and disable it */ | 202 | /* Save PLLA setting and disable it */ |
187 | ldr r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] | 203 | ldr tmp1, [pmc, #AT91_CKGR_PLLAR] |
188 | str r3, .saved_pllar | 204 | str tmp1, .saved_pllar |
189 | 205 | ||
190 | mov r3, #AT91_PMC_PLLCOUNT | 206 | mov tmp1, #AT91_PMC_PLLCOUNT |
191 | orr r3, r3, #(1 << 29) /* bit 29 always set */ | 207 | orr tmp1, tmp1, #(1 << 29) /* bit 29 always set */ |
192 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] | 208 | str tmp1, [pmc, #AT91_CKGR_PLLAR] |
193 | 209 | ||
194 | /* Save PLLB setting and disable it */ | 210 | /* Save PLLB setting and disable it */ |
195 | ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 211 | ldr tmp1, [pmc, #AT91_CKGR_PLLBR] |
196 | str r3, .saved_pllbr | 212 | str tmp1, .saved_pllbr |
197 | 213 | ||
198 | mov r3, #AT91_PMC_PLLCOUNT | 214 | mov tmp1, #AT91_PMC_PLLCOUNT |
199 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 215 | str tmp1, [pmc, #AT91_CKGR_PLLBR] |
200 | 216 | ||
201 | /* Turn off the main oscillator */ | 217 | /* Turn off the main oscillator */ |
202 | ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] | 218 | ldr tmp1, [pmc, #AT91_CKGR_MOR] |
203 | bic r3, r3, #AT91_PMC_MOSCEN | 219 | bic tmp1, tmp1, #AT91_PMC_MOSCEN |
204 | str r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] | 220 | str tmp1, [pmc, #AT91_CKGR_MOR] |
205 | 221 | ||
206 | /* Wait for interrupt */ | 222 | /* Wait for interrupt */ |
207 | mcr p15, 0, r0, c7, c0, 4 | 223 | mcr p15, 0, tmp1, c7, c0, 4 |
208 | 224 | ||
209 | /* Turn on the main oscillator */ | 225 | /* Turn on the main oscillator */ |
210 | ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] | 226 | ldr tmp1, [pmc, #AT91_CKGR_MOR] |
211 | orr r3, r3, #AT91_PMC_MOSCEN | 227 | orr tmp1, tmp1, #AT91_PMC_MOSCEN |
212 | str r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] | 228 | str tmp1, [pmc, #AT91_CKGR_MOR] |
213 | 229 | ||
214 | wait_moscrdy | 230 | wait_moscrdy |
215 | 231 | ||
216 | /* Restore PLLB setting */ | 232 | /* Restore PLLB setting */ |
217 | ldr r3, .saved_pllbr | 233 | ldr tmp1, .saved_pllbr |
218 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 234 | str tmp1, [pmc, #AT91_CKGR_PLLBR] |
219 | 235 | ||
220 | tst r3, #(AT91_PMC_MUL & 0xff0000) | 236 | tst tmp1, #(AT91_PMC_MUL & 0xff0000) |
221 | bne 1f | 237 | bne 1f |
222 | tst r3, #(AT91_PMC_MUL & ~0xff0000) | 238 | tst tmp1, #(AT91_PMC_MUL & ~0xff0000) |
223 | beq 2f | 239 | beq 2f |
224 | 1: | 240 | 1: |
225 | wait_pllblock | 241 | wait_pllblock |
226 | 2: | 242 | 2: |
227 | 243 | ||
228 | /* Restore PLLA setting */ | 244 | /* Restore PLLA setting */ |
229 | ldr r3, .saved_pllar | 245 | ldr tmp1, .saved_pllar |
230 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] | 246 | str tmp1, [pmc, #AT91_CKGR_PLLAR] |
231 | 247 | ||
232 | tst r3, #(AT91_PMC_MUL & 0xff0000) | 248 | tst tmp1, #(AT91_PMC_MUL & 0xff0000) |
233 | bne 3f | 249 | bne 3f |
234 | tst r3, #(AT91_PMC_MUL & ~0xff0000) | 250 | tst tmp1, #(AT91_PMC_MUL & ~0xff0000) |
235 | beq 4f | 251 | beq 4f |
236 | 3: | 252 | 3: |
237 | wait_pllalock | 253 | wait_pllalock |
@@ -244,11 +260,11 @@ ENTRY(at91_slow_clock) | |||
244 | * | 260 | * |
245 | * See AT91RM9200 errata #27 and #28 for details. | 261 | * See AT91RM9200 errata #27 and #28 for details. |
246 | */ | 262 | */ |
247 | ldr r3, .saved_mckr | 263 | ldr tmp1, .saved_mckr |
248 | tst r3, #AT91_PMC_PRES | 264 | tst tmp1, #AT91_PMC_PRES |
249 | beq 2f | 265 | beq 2f |
250 | and r3, r3, #AT91_PMC_PRES | 266 | and tmp1, tmp1, #AT91_PMC_PRES |
251 | str r3, [r1, #(AT91_PMC_MCKR - AT91_PMC)] | 267 | str tmp1, [pmc, #AT91_PMC_MCKR] |
252 | 268 | ||
253 | wait_mckrdy | 269 | wait_mckrdy |
254 | #endif | 270 | #endif |
@@ -256,32 +272,45 @@ ENTRY(at91_slow_clock) | |||
256 | /* | 272 | /* |
257 | * Restore master clock setting | 273 | * Restore master clock setting |
258 | */ | 274 | */ |
259 | 2: ldr r3, .saved_mckr | 275 | 2: ldr tmp1, .saved_mckr |
260 | str r3, [r1, #(AT91_PMC_MCKR - AT91_PMC)] | 276 | str tmp1, [pmc, #AT91_PMC_MCKR] |
261 | 277 | ||
262 | wait_mckrdy | 278 | wait_mckrdy |
263 | 279 | ||
264 | #ifdef CONFIG_ARCH_AT91RM9200 | 280 | /* |
265 | /* Do nothing - self-refresh is automatically disabled. */ | 281 | * at91rm9200 Memory controller |
266 | #elif defined(CONFIG_ARCH_AT91CAP9) \ | 282 | * Do nothing - self-refresh is automatically disabled. |
267 | || defined(CONFIG_ARCH_AT91SAM9G45) | 283 | */ |
284 | cmp memctrl, #AT91_MEMCTRL_MC | ||
285 | beq ram_restored | ||
286 | |||
287 | /* | ||
288 | * DDRSDR Memory controller | ||
289 | */ | ||
290 | cmp memctrl, #AT91_MEMCTRL_DDRSDR | ||
291 | bne sdr_en_restore | ||
268 | /* Restore LPR on AT91 with DDRAM */ | 292 | /* Restore LPR on AT91 with DDRAM */ |
269 | ldr r3, .saved_sam9_lpr | 293 | ldr tmp1, .saved_sam9_lpr |
270 | str r3, [r2, #AT91_DDRSDRC_LPR] | 294 | str tmp1, [sdramc, #AT91_DDRSDRC_LPR] |
271 | 295 | ||
272 | /* if we use the second ram controller */ | 296 | /* if we use the second ram controller */ |
273 | cmp r5, #0 | 297 | cmp ramc1, #0 |
274 | ldrne r4, .saved_sam9_lpr1 | 298 | ldrne tmp2, .saved_sam9_lpr1 |
275 | strne r4, [r5, #AT91_DDRSDRC_LPR] | 299 | strne tmp2, [ramc1, #AT91_DDRSDRC_LPR] |
300 | |||
301 | b ram_restored | ||
276 | 302 | ||
277 | #else | 303 | /* |
304 | * SDRAMC Memory controller | ||
305 | */ | ||
306 | sdr_en_restore: | ||
278 | /* Restore LPR on AT91 with SDRAM */ | 307 | /* Restore LPR on AT91 with SDRAM */ |
279 | ldr r3, .saved_sam9_lpr | 308 | ldr tmp1, .saved_sam9_lpr |
280 | str r3, [r2, #AT91_SDRAMC_LPR] | 309 | str tmp1, [sdramc, #AT91_SDRAMC_LPR] |
281 | #endif | ||
282 | 310 | ||
311 | ram_restored: | ||
283 | /* Restore registers, and return */ | 312 | /* Restore registers, and return */ |
284 | ldmfd sp!, {r0 - r12, pc} | 313 | ldmfd sp!, {r4 - r12, pc} |
285 | 314 | ||
286 | 315 | ||
287 | .saved_mckr: | 316 | .saved_mckr: |
@@ -299,27 +328,5 @@ ENTRY(at91_slow_clock) | |||
299 | .saved_sam9_lpr1: | 328 | .saved_sam9_lpr1: |
300 | .word 0 | 329 | .word 0 |
301 | 330 | ||
302 | .at91_va_base_pmc: | ||
303 | .word AT91_VA_BASE_SYS + AT91_PMC | ||
304 | |||
305 | #ifdef CONFIG_ARCH_AT91RM9200 | ||
306 | .at91_va_base_sdramc: | ||
307 | .word AT91_VA_BASE_SYS | ||
308 | #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||
309 | || defined(CONFIG_ARCH_AT91SAM9G45) | ||
310 | .at91_va_base_sdramc: | ||
311 | .word AT91_VA_BASE_SYS + AT91_DDRSDRC0 | ||
312 | #else | ||
313 | .at91_va_base_sdramc: | ||
314 | .word AT91_VA_BASE_SYS + AT91_SDRAMC0 | ||
315 | #endif | ||
316 | |||
317 | .at91_va_base_ramc1: | ||
318 | #if defined(CONFIG_ARCH_AT91SAM9G45) | ||
319 | .word AT91_VA_BASE_SYS + AT91_DDRSDRC1 | ||
320 | #else | ||
321 | .word 0 | ||
322 | #endif | ||
323 | |||
324 | ENTRY(at91_slow_clock_sz) | 331 | ENTRY(at91_slow_clock_sz) |
325 | .word .-at91_slow_clock | 332 | .word .-at91_slow_clock |
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index 69d3fc4c46f3..372396c2ecb6 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
@@ -86,20 +86,6 @@ static void __init soc_detect(u32 dbgu_base) | |||
86 | socid = cidr & ~AT91_CIDR_VERSION; | 86 | socid = cidr & ~AT91_CIDR_VERSION; |
87 | 87 | ||
88 | switch (socid) { | 88 | switch (socid) { |
89 | case ARCH_ID_AT91CAP9: { | ||
90 | #ifdef CONFIG_AT91_PMC_UNIT | ||
91 | u32 pmc_ver = at91_sys_read(AT91_PMC_VER); | ||
92 | |||
93 | if (pmc_ver == ARCH_REVISION_CAP9_B) | ||
94 | at91_soc_initdata.subtype = AT91_SOC_CAP9_REV_B; | ||
95 | else if (pmc_ver == ARCH_REVISION_CAP9_C) | ||
96 | at91_soc_initdata.subtype = AT91_SOC_CAP9_REV_C; | ||
97 | #endif | ||
98 | at91_soc_initdata.type = AT91_SOC_CAP9; | ||
99 | at91_boot_soc = at91cap9_soc; | ||
100 | break; | ||
101 | } | ||
102 | |||
103 | case ARCH_ID_AT91RM9200: | 89 | case ARCH_ID_AT91RM9200: |
104 | at91_soc_initdata.type = AT91_SOC_RM9200; | 90 | at91_soc_initdata.type = AT91_SOC_RM9200; |
105 | at91_boot_soc = at91rm9200_soc; | 91 | at91_boot_soc = at91rm9200_soc; |
@@ -200,7 +186,6 @@ static void __init soc_detect(u32 dbgu_base) | |||
200 | 186 | ||
201 | static const char *soc_name[] = { | 187 | static const char *soc_name[] = { |
202 | [AT91_SOC_RM9200] = "at91rm9200", | 188 | [AT91_SOC_RM9200] = "at91rm9200", |
203 | [AT91_SOC_CAP9] = "at91cap9", | ||
204 | [AT91_SOC_SAM9260] = "at91sam9260", | 189 | [AT91_SOC_SAM9260] = "at91sam9260", |
205 | [AT91_SOC_SAM9261] = "at91sam9261", | 190 | [AT91_SOC_SAM9261] = "at91sam9261", |
206 | [AT91_SOC_SAM9263] = "at91sam9263", | 191 | [AT91_SOC_SAM9263] = "at91sam9263", |
@@ -221,8 +206,6 @@ EXPORT_SYMBOL(at91_get_soc_type); | |||
221 | static const char *soc_subtype_name[] = { | 206 | static const char *soc_subtype_name[] = { |
222 | [AT91_SOC_RM9200_BGA] = "at91rm9200 BGA", | 207 | [AT91_SOC_RM9200_BGA] = "at91rm9200 BGA", |
223 | [AT91_SOC_RM9200_PQFP] = "at91rm9200 PQFP", | 208 | [AT91_SOC_RM9200_PQFP] = "at91rm9200 PQFP", |
224 | [AT91_SOC_CAP9_REV_B] = "at91cap9 revB", | ||
225 | [AT91_SOC_CAP9_REV_C] = "at91cap9 revC", | ||
226 | [AT91_SOC_SAM9XE] = "at91sam9xe", | 209 | [AT91_SOC_SAM9XE] = "at91sam9xe", |
227 | [AT91_SOC_SAM9G45ES] = "at91sam9g45es", | 210 | [AT91_SOC_SAM9G45ES] = "at91sam9g45es", |
228 | [AT91_SOC_SAM9M10] = "at91sam9m10", | 211 | [AT91_SOC_SAM9M10] = "at91sam9m10", |
@@ -293,6 +276,15 @@ void __init at91_ioremap_rstc(u32 base_addr) | |||
293 | panic("Impossible to ioremap at91_rstc_base\n"); | 276 | panic("Impossible to ioremap at91_rstc_base\n"); |
294 | } | 277 | } |
295 | 278 | ||
279 | void __iomem *at91_matrix_base; | ||
280 | |||
281 | void __init at91_ioremap_matrix(u32 base_addr) | ||
282 | { | ||
283 | at91_matrix_base = ioremap(base_addr, 512); | ||
284 | if (!at91_matrix_base) | ||
285 | panic("Impossible to ioremap at91_matrix_base\n"); | ||
286 | } | ||
287 | |||
296 | void __init at91_initialize(unsigned long main_clock) | 288 | void __init at91_initialize(unsigned long main_clock) |
297 | { | 289 | { |
298 | at91_boot_soc.ioremap_registers(); | 290 | at91_boot_soc.ioremap_registers(); |
diff --git a/arch/arm/mach-at91/soc.h b/arch/arm/mach-at91/soc.h index 4588ae6f7acd..5db4aa45404a 100644 --- a/arch/arm/mach-at91/soc.h +++ b/arch/arm/mach-at91/soc.h | |||
@@ -13,7 +13,6 @@ struct at91_init_soc { | |||
13 | }; | 13 | }; |
14 | 14 | ||
15 | extern struct at91_init_soc at91_boot_soc; | 15 | extern struct at91_init_soc at91_boot_soc; |
16 | extern struct at91_init_soc at91cap9_soc; | ||
17 | extern struct at91_init_soc at91rm9200_soc; | 16 | extern struct at91_init_soc at91rm9200_soc; |
18 | extern struct at91_init_soc at91sam9260_soc; | 17 | extern struct at91_init_soc at91sam9260_soc; |
19 | extern struct at91_init_soc at91sam9261_soc; | 18 | extern struct at91_init_soc at91sam9261_soc; |
@@ -27,10 +26,6 @@ static inline int at91_soc_is_enabled(void) | |||
27 | return at91_boot_soc.init != NULL; | 26 | return at91_boot_soc.init != NULL; |
28 | } | 27 | } |
29 | 28 | ||
30 | #if !defined(CONFIG_ARCH_AT91CAP9) | ||
31 | #define at91cap9_soc at91_boot_soc | ||
32 | #endif | ||
33 | |||
34 | #if !defined(CONFIG_ARCH_AT91RM9200) | 29 | #if !defined(CONFIG_ARCH_AT91RM9200) |
35 | #define at91rm9200_soc at91_boot_soc | 30 | #define at91rm9200_soc at91_boot_soc |
36 | #endif | 31 | #endif |
diff --git a/arch/arm/mach-bcmring/include/mach/io.h b/arch/arm/mach-bcmring/include/mach/io.h deleted file mode 100644 index dae5e9b166ea..000000000000 --- a/arch/arm/mach-bcmring/include/mach/io.h +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * Copyright (C) 1999 ARM Limited | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | ||
19 | #ifndef __ASM_ARM_ARCH_IO_H | ||
20 | #define __ASM_ARM_ARCH_IO_H | ||
21 | |||
22 | #include <mach/hardware.h> | ||
23 | |||
24 | #define IO_SPACE_LIMIT 0xffffffff | ||
25 | |||
26 | /* | ||
27 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
28 | * drivers out there that might just work if we fake them... | ||
29 | */ | ||
30 | #define __io(a) __typesafe_io(a) | ||
31 | #define __mem_pci(a) (a) | ||
32 | |||
33 | #endif | ||
diff --git a/arch/arm/mach-clps711x/include/mach/io.h b/arch/arm/mach-clps711x/include/mach/io.h deleted file mode 100644 index 2e0b3ced8f07..000000000000 --- a/arch/arm/mach-clps711x/include/mach/io.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-clps711x/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 1999 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define IO_SPACE_LIMIT 0xffffffff | ||
24 | |||
25 | #define __io(a) __typesafe_io(a) | ||
26 | #define __mem_pci(a) (a) | ||
27 | |||
28 | /* | ||
29 | * We don't support ins[lb]/outs[lb]. Make them fault. | ||
30 | */ | ||
31 | #define __raw_readsb(p,d,l) do { *(int *)0 = 0; } while (0) | ||
32 | #define __raw_readsl(p,d,l) do { *(int *)0 = 0; } while (0) | ||
33 | #define __raw_writesb(p,d,l) do { *(int *)0 = 0; } while (0) | ||
34 | #define __raw_writesl(p,d,l) do { *(int *)0 = 0; } while (0) | ||
35 | |||
36 | #endif | ||
diff --git a/arch/arm/mach-clps711x/include/mach/uncompress.h b/arch/arm/mach-clps711x/include/mach/uncompress.h index 7164310dea7c..35ed731b9f16 100644 --- a/arch/arm/mach-clps711x/include/mach/uncompress.h +++ b/arch/arm/mach-clps711x/include/mach/uncompress.h | |||
@@ -17,7 +17,6 @@ | |||
17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | */ | 19 | */ |
20 | #include <mach/io.h> | ||
21 | #include <mach/hardware.h> | 20 | #include <mach/hardware.h> |
22 | #include <asm/hardware/clps7111.h> | 21 | #include <asm/hardware/clps7111.h> |
23 | 22 | ||
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c index 941a308e1253..031805b1428d 100644 --- a/arch/arm/mach-cns3xxx/core.c +++ b/arch/arm/mach-cns3xxx/core.c | |||
@@ -72,13 +72,13 @@ void __init cns3xxx_map_io(void) | |||
72 | /* used by entry-macro.S */ | 72 | /* used by entry-macro.S */ |
73 | void __init cns3xxx_init_irq(void) | 73 | void __init cns3xxx_init_irq(void) |
74 | { | 74 | { |
75 | gic_init(0, 29, __io(CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT), | 75 | gic_init(0, 29, IOMEM(CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT), |
76 | __io(CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT)); | 76 | IOMEM(CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT)); |
77 | } | 77 | } |
78 | 78 | ||
79 | void cns3xxx_power_off(void) | 79 | void cns3xxx_power_off(void) |
80 | { | 80 | { |
81 | u32 __iomem *pm_base = __io(CNS3XXX_PM_BASE_VIRT); | 81 | u32 __iomem *pm_base = IOMEM(CNS3XXX_PM_BASE_VIRT); |
82 | u32 clkctrl; | 82 | u32 clkctrl; |
83 | 83 | ||
84 | printk(KERN_INFO "powering system down...\n"); | 84 | printk(KERN_INFO "powering system down...\n"); |
@@ -237,7 +237,7 @@ static void __init __cns3xxx_timer_init(unsigned int timer_irq) | |||
237 | 237 | ||
238 | static void __init cns3xxx_timer_init(void) | 238 | static void __init cns3xxx_timer_init(void) |
239 | { | 239 | { |
240 | cns3xxx_tmr1 = __io(CNS3XXX_TIMER1_2_3_BASE_VIRT); | 240 | cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT); |
241 | 241 | ||
242 | __cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0); | 242 | __cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0); |
243 | } | 243 | } |
diff --git a/arch/arm/mach-cns3xxx/devices.c b/arch/arm/mach-cns3xxx/devices.c index 79d1fb02c23f..1e40c99b015f 100644 --- a/arch/arm/mach-cns3xxx/devices.c +++ b/arch/arm/mach-cns3xxx/devices.c | |||
@@ -98,7 +98,7 @@ static struct platform_device cns3xxx_sdhci_pdev = { | |||
98 | 98 | ||
99 | void __init cns3xxx_sdhci_init(void) | 99 | void __init cns3xxx_sdhci_init(void) |
100 | { | 100 | { |
101 | u32 __iomem *gpioa = __io(CNS3XXX_MISC_BASE_VIRT + 0x0014); | 101 | u32 __iomem *gpioa = IOMEM(CNS3XXX_MISC_BASE_VIRT + 0x0014); |
102 | u32 gpioa_pins = __raw_readl(gpioa); | 102 | u32 gpioa_pins = __raw_readl(gpioa); |
103 | 103 | ||
104 | /* MMC/SD pins share with GPIOA */ | 104 | /* MMC/SD pins share with GPIOA */ |
diff --git a/arch/arm/mach-cns3xxx/include/mach/io.h b/arch/arm/mach-cns3xxx/include/mach/io.h deleted file mode 100644 index 33b6fc1ece7c..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/io.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2008 Cavium Networks | ||
3 | * Copyright 2003 ARM Limited | ||
4 | * | ||
5 | * This file is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License, Version 2, as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | #ifndef __MACH_IO_H | ||
10 | #define __MACH_IO_H | ||
11 | |||
12 | #define IO_SPACE_LIMIT 0xffffffff | ||
13 | |||
14 | #define __io(a) __typesafe_io(a) | ||
15 | #define __mem_pci(a) (a) | ||
16 | |||
17 | #endif | ||
diff --git a/arch/arm/mach-davinci/include/mach/entry-macro.S b/arch/arm/mach-davinci/include/mach/entry-macro.S index c1661d2feca9..768b3c060214 100644 --- a/arch/arm/mach-davinci/include/mach/entry-macro.S +++ b/arch/arm/mach-davinci/include/mach/entry-macro.S | |||
@@ -8,7 +8,6 @@ | |||
8 | * is licensed "as is" without any warranty of any kind, whether express | 8 | * is licensed "as is" without any warranty of any kind, whether express |
9 | * or implied. | 9 | * or implied. |
10 | */ | 10 | */ |
11 | #include <mach/io.h> | ||
12 | #include <mach/irqs.h> | 11 | #include <mach/irqs.h> |
13 | 12 | ||
14 | .macro get_irqnr_preamble, base, tmp | 13 | .macro get_irqnr_preamble, base, tmp |
diff --git a/arch/arm/mach-davinci/include/mach/hardware.h b/arch/arm/mach-davinci/include/mach/hardware.h index 414e0b93e741..0be260bff9d5 100644 --- a/arch/arm/mach-davinci/include/mach/hardware.h +++ b/arch/arm/mach-davinci/include/mach/hardware.h | |||
@@ -32,10 +32,4 @@ | |||
32 | #define __IO_ADDRESS(x) ((x) + IO_OFFSET) | 32 | #define __IO_ADDRESS(x) ((x) + IO_OFFSET) |
33 | #define IO_ADDRESS(pa) IOMEM(__IO_ADDRESS(pa)) | 33 | #define IO_ADDRESS(pa) IOMEM(__IO_ADDRESS(pa)) |
34 | 34 | ||
35 | #ifdef __ASSEMBLER__ | ||
36 | #define IOMEM(x) x | ||
37 | #else | ||
38 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
39 | #endif | ||
40 | |||
41 | #endif /* __ASM_ARCH_HARDWARE_H */ | 35 | #endif /* __ASM_ARCH_HARDWARE_H */ |
diff --git a/arch/arm/mach-davinci/include/mach/io.h b/arch/arm/mach-davinci/include/mach/io.h deleted file mode 100644 index b2267d1e1a71..000000000000 --- a/arch/arm/mach-davinci/include/mach/io.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * DaVinci IO address definitions | ||
3 | * | ||
4 | * Copied from include/asm/arm/arch-omap/io.h | ||
5 | * | ||
6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | */ | ||
11 | #ifndef __ASM_ARCH_IO_H | ||
12 | #define __ASM_ARCH_IO_H | ||
13 | |||
14 | #define IO_SPACE_LIMIT 0xffffffff | ||
15 | |||
16 | /* | ||
17 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
18 | * drivers out there that might just work if we fake them... | ||
19 | */ | ||
20 | #define __io(a) __typesafe_io(a) | ||
21 | #define __mem_pci(a) (a) | ||
22 | #define __mem_isa(a) (a) | ||
23 | |||
24 | #endif /* __ASM_ARCH_IO_H */ | ||
diff --git a/arch/arm/mach-davinci/include/mach/uncompress.h b/arch/arm/mach-davinci/include/mach/uncompress.h index 9dc7cf9664fe..da2fb2c2155a 100644 --- a/arch/arm/mach-davinci/include/mach/uncompress.h +++ b/arch/arm/mach-davinci/include/mach/uncompress.h | |||
@@ -25,6 +25,8 @@ | |||
25 | 25 | ||
26 | #include <mach/serial.h> | 26 | #include <mach/serial.h> |
27 | 27 | ||
28 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
29 | |||
28 | u32 *uart; | 30 | u32 *uart; |
29 | 31 | ||
30 | /* PORT_16C550A, in polled non-fifo mode */ | 32 | /* PORT_16C550A, in polled non-fifo mode */ |
diff --git a/arch/arm/mach-dove/addr-map.c b/arch/arm/mach-dove/addr-map.c index 98b8c83b09ab..2a06c0163418 100644 --- a/arch/arm/mach-dove/addr-map.c +++ b/arch/arm/mach-dove/addr-map.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <asm/mach/arch.h> | 15 | #include <asm/mach/arch.h> |
16 | #include <asm/setup.h> | 16 | #include <asm/setup.h> |
17 | #include <mach/dove.h> | ||
17 | #include <plat/addr-map.h> | 18 | #include <plat/addr-map.h> |
18 | #include "common.h" | 19 | #include "common.h" |
19 | 20 | ||
diff --git a/arch/arm/mach-dove/include/mach/io.h b/arch/arm/mach-dove/include/mach/io.h index eb4936ff90ad..29c8b85355a5 100644 --- a/arch/arm/mach-dove/include/mach/io.h +++ b/arch/arm/mach-dove/include/mach/io.h | |||
@@ -15,6 +15,5 @@ | |||
15 | 15 | ||
16 | #define __io(a) ((void __iomem *)(((a) - DOVE_PCIE0_IO_BUS_BASE) + \ | 16 | #define __io(a) ((void __iomem *)(((a) - DOVE_PCIE0_IO_BUS_BASE) + \ |
17 | DOVE_PCIE0_IO_VIRT_BASE)) | 17 | DOVE_PCIE0_IO_VIRT_BASE)) |
18 | #define __mem_pci(a) (a) | ||
19 | 18 | ||
20 | #endif | 19 | #endif |
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c index 804c9122b7b3..b049edbdf152 100644 --- a/arch/arm/mach-ebsa110/core.c +++ b/arch/arm/mach-ebsa110/core.c | |||
@@ -119,6 +119,20 @@ static void __init ebsa110_map_io(void) | |||
119 | iotable_init(ebsa110_io_desc, ARRAY_SIZE(ebsa110_io_desc)); | 119 | iotable_init(ebsa110_io_desc, ARRAY_SIZE(ebsa110_io_desc)); |
120 | } | 120 | } |
121 | 121 | ||
122 | static void __iomem *ebsa110_ioremap_caller(unsigned long cookie, size_t size, | ||
123 | unsigned int flags, void *caller) | ||
124 | { | ||
125 | return (void __iomem *)cookie; | ||
126 | } | ||
127 | |||
128 | static void ebsa110_iounmap(volatile void __iomem *io_addr) | ||
129 | {} | ||
130 | |||
131 | static void __init ebsa110_init_early(void) | ||
132 | { | ||
133 | arch_ioremap_caller = ebsa110_ioremap_caller; | ||
134 | arch_iounmap = ebsa110_iounmap; | ||
135 | } | ||
122 | 136 | ||
123 | #define PIT_CTRL (PIT_BASE + 0x0d) | 137 | #define PIT_CTRL (PIT_BASE + 0x0d) |
124 | #define PIT_T2 (PIT_BASE + 0x09) | 138 | #define PIT_T2 (PIT_BASE + 0x09) |
@@ -315,6 +329,7 @@ MACHINE_START(EBSA110, "EBSA110") | |||
315 | .reserve_lp2 = 1, | 329 | .reserve_lp2 = 1, |
316 | .restart_mode = 's', | 330 | .restart_mode = 's', |
317 | .map_io = ebsa110_map_io, | 331 | .map_io = ebsa110_map_io, |
332 | .init_early = ebsa110_init_early, | ||
318 | .init_irq = ebsa110_init_irq, | 333 | .init_irq = ebsa110_init_irq, |
319 | .timer = &ebsa110_timer, | 334 | .timer = &ebsa110_timer, |
320 | .restart = ebsa110_restart, | 335 | .restart = ebsa110_restart, |
diff --git a/arch/arm/mach-ebsa110/include/mach/io.h b/arch/arm/mach-ebsa110/include/mach/io.h index 44679db672fb..11bb0799424b 100644 --- a/arch/arm/mach-ebsa110/include/mach/io.h +++ b/arch/arm/mach-ebsa110/include/mach/io.h | |||
@@ -62,15 +62,6 @@ void __writel(u32 val, void __iomem *addr); | |||
62 | #define writew(v,b) __writew(v,b) | 62 | #define writew(v,b) __writew(v,b) |
63 | #define writel(v,b) __writel(v,b) | 63 | #define writel(v,b) __writel(v,b) |
64 | 64 | ||
65 | static inline void __iomem *__arch_ioremap(unsigned long cookie, size_t size, | ||
66 | unsigned int flags) | ||
67 | { | ||
68 | return (void __iomem *)cookie; | ||
69 | } | ||
70 | |||
71 | #define __arch_ioremap __arch_ioremap | ||
72 | #define __arch_iounmap(cookie) do { } while (0) | ||
73 | |||
74 | extern void insb(unsigned int port, void *buf, int sz); | 65 | extern void insb(unsigned int port, void *buf, int sz); |
75 | extern void insw(unsigned int port, void *buf, int sz); | 66 | extern void insw(unsigned int port, void *buf, int sz); |
76 | extern void insl(unsigned int port, void *buf, int sz); | 67 | extern void insl(unsigned int port, void *buf, int sz); |
diff --git a/arch/arm/mach-ep93xx/include/mach/io.h b/arch/arm/mach-ep93xx/include/mach/io.h deleted file mode 100644 index 594b77f21054..000000000000 --- a/arch/arm/mach-ep93xx/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ep93xx/include/mach/io.h | ||
3 | */ | ||
4 | |||
5 | #ifndef __ASM_MACH_IO_H | ||
6 | #define __ASM_MACH_IO_H | ||
7 | |||
8 | #define IO_SPACE_LIMIT 0xffffffff | ||
9 | |||
10 | #define __io(p) __typesafe_io(p) | ||
11 | #define __mem_pci(p) (p) | ||
12 | |||
13 | /* | ||
14 | * A typesafe __io() variation for variable initialisers | ||
15 | */ | ||
16 | #ifdef __ASSEMBLER__ | ||
17 | #define IOMEM(p) p | ||
18 | #else | ||
19 | #define IOMEM(p) ((void __iomem __force *)(p)) | ||
20 | #endif | ||
21 | |||
22 | #endif /* __ASM_MACH_IO_H */ | ||
diff --git a/arch/arm/mach-exynos/include/mach/io.h b/arch/arm/mach-exynos/include/mach/io.h deleted file mode 100644 index d5478d247535..000000000000 --- a/arch/arm/mach-exynos/include/mach/io.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* linux/arch/arm/mach-exynos4/include/mach/io.h | ||
2 | * | ||
3 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. | ||
4 | * http://www.samsung.com | ||
5 | * | ||
6 | * Copyright 2008-2010 Ben Dooks <ben-linux@fluff.org> | ||
7 | * | ||
8 | * Based on arch/arm/mach-s5p6442/include/mach/io.h | ||
9 | * | ||
10 | * Default IO routines for EXYNOS4 | ||
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 version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #ifndef __ASM_ARM_ARCH_IO_H | ||
18 | #define __ASM_ARM_ARCH_IO_H __FILE__ | ||
19 | |||
20 | /* No current ISA/PCI bus support. */ | ||
21 | #define __io(a) __typesafe_io(a) | ||
22 | #define __mem_pci(a) (a) | ||
23 | |||
24 | #define IO_SPACE_LIMIT (0xFFFFFFFF) | ||
25 | |||
26 | #endif /* __ASM_ARM_ARCH_IO_H */ | ||
diff --git a/arch/arm/mach-footbridge/include/mach/io.h b/arch/arm/mach-footbridge/include/mach/io.h index 15a70396c27d..aba531eebbc6 100644 --- a/arch/arm/mach-footbridge/include/mach/io.h +++ b/arch/arm/mach-footbridge/include/mach/io.h | |||
@@ -27,18 +27,5 @@ | |||
27 | * Translation of various region addresses to virtual addresses | 27 | * Translation of various region addresses to virtual addresses |
28 | */ | 28 | */ |
29 | #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) | 29 | #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) |
30 | #if 1 | ||
31 | #define __mem_pci(a) (a) | ||
32 | #else | ||
33 | |||
34 | static inline void __iomem *___mem_pci(void __iomem *p) | ||
35 | { | ||
36 | unsigned long a = (unsigned long)p; | ||
37 | BUG_ON(a <= 0xc0000000 || a >= 0xe0000000); | ||
38 | return p; | ||
39 | } | ||
40 | |||
41 | #define __mem_pci(a) ___mem_pci(a) | ||
42 | #endif | ||
43 | 30 | ||
44 | #endif | 31 | #endif |
diff --git a/arch/arm/mach-gemini/include/mach/io.h b/arch/arm/mach-gemini/include/mach/io.h deleted file mode 100644 index c548056b98b2..000000000000 --- a/arch/arm/mach-gemini/include/mach/io.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001-2006 Storlink, Corp. | ||
3 | * Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt> | ||
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 | #ifndef __MACH_IO_H | ||
11 | #define __MACH_IO_H | ||
12 | |||
13 | #define IO_SPACE_LIMIT 0xffffffff | ||
14 | |||
15 | #define __io(a) __typesafe_io(a) | ||
16 | #define __mem_pci(a) (a) | ||
17 | |||
18 | #endif /* __MACH_IO_H */ | ||
diff --git a/arch/arm/mach-h720x/include/mach/io.h b/arch/arm/mach-h720x/include/mach/io.h deleted file mode 100644 index 2c8659c21a93..000000000000 --- a/arch/arm/mach-h720x/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-h720x/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2000 Steve Hill (sjhill@cotw.com) | ||
5 | * | ||
6 | * Changelog: | ||
7 | * | ||
8 | * 09-19-2001 JJKIM | ||
9 | * Created from arch/arm/mach-l7200/include/mach/io.h | ||
10 | * | ||
11 | * 03-27-2003 Robert Schwebel <r.schwebel@pengutronix.de>: | ||
12 | * re-unified header files for h720x | ||
13 | */ | ||
14 | #ifndef __ASM_ARM_ARCH_IO_H | ||
15 | #define __ASM_ARM_ARCH_IO_H | ||
16 | |||
17 | #define IO_SPACE_LIMIT 0xffffffff | ||
18 | |||
19 | #define __io(a) __typesafe_io(a) | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif | ||
diff --git a/arch/arm/mach-highbank/include/mach/io.h b/arch/arm/mach-highbank/include/mach/io.h deleted file mode 100644 index 70cfa3ba7697..000000000000 --- a/arch/arm/mach-highbank/include/mach/io.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __MACH_IO_H | ||
2 | #define __MACH_IO_H | ||
3 | |||
4 | #define __io(a) ({ (void)(a); __typesafe_io(0); }) | ||
5 | #define __mem_pci(a) (a) | ||
6 | |||
7 | #endif | ||
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c index 8404ee72555a..04be18d87e45 100644 --- a/arch/arm/mach-imx/mm-imx3.c +++ b/arch/arm/mach-imx/mm-imx3.c | |||
@@ -59,8 +59,8 @@ static void imx3_idle(void) | |||
59 | : "=r" (reg)); | 59 | : "=r" (reg)); |
60 | } | 60 | } |
61 | 61 | ||
62 | static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size, | 62 | static void __iomem *imx3_ioremap_caller(unsigned long phys_addr, size_t size, |
63 | unsigned int mtype) | 63 | unsigned int mtype, void *caller) |
64 | { | 64 | { |
65 | if (mtype == MT_DEVICE) { | 65 | if (mtype == MT_DEVICE) { |
66 | /* | 66 | /* |
@@ -73,7 +73,7 @@ static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size, | |||
73 | mtype = MT_DEVICE_NONSHARED; | 73 | mtype = MT_DEVICE_NONSHARED; |
74 | } | 74 | } |
75 | 75 | ||
76 | return __arm_ioremap(phys_addr, size, mtype); | 76 | return __arm_ioremap_caller(phys_addr, size, mtype, caller); |
77 | } | 77 | } |
78 | 78 | ||
79 | void imx3_init_l2x0(void) | 79 | void imx3_init_l2x0(void) |
@@ -132,7 +132,7 @@ void __init imx31_init_early(void) | |||
132 | { | 132 | { |
133 | mxc_set_cpu_type(MXC_CPU_MX31); | 133 | mxc_set_cpu_type(MXC_CPU_MX31); |
134 | mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); | 134 | mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); |
135 | imx_ioremap = imx3_ioremap; | 135 | arch_ioremap_caller = imx3_ioremap_caller; |
136 | arm_pm_idle = imx3_idle; | 136 | arm_pm_idle = imx3_idle; |
137 | } | 137 | } |
138 | 138 | ||
@@ -196,7 +196,7 @@ void __init imx35_init_early(void) | |||
196 | mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); | 196 | mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); |
197 | mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); | 197 | mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); |
198 | arm_pm_idle = imx3_idle; | 198 | arm_pm_idle = imx3_idle; |
199 | imx_ioremap = imx3_ioremap; | 199 | arch_ioremap_caller = imx3_ioremap_caller; |
200 | } | 200 | } |
201 | 201 | ||
202 | void __init mx35_init_irq(void) | 202 | void __init mx35_init_irq(void) |
diff --git a/arch/arm/mach-integrator/include/mach/io.h b/arch/arm/mach-integrator/include/mach/io.h index 37beed3fa3ed..8de70de3dd0a 100644 --- a/arch/arm/mach-integrator/include/mach/io.h +++ b/arch/arm/mach-integrator/include/mach/io.h | |||
@@ -29,6 +29,5 @@ | |||
29 | #define PCI_IO_VADDR 0xee000000 | 29 | #define PCI_IO_VADDR 0xee000000 |
30 | 30 | ||
31 | #define __io(a) ((void __iomem *)(PCI_IO_VADDR + (a))) | 31 | #define __io(a) ((void __iomem *)(PCI_IO_VADDR + (a))) |
32 | #define __mem_pci(a) (a) | ||
33 | 32 | ||
34 | #endif | 33 | #endif |
diff --git a/arch/arm/mach-iop13xx/include/mach/io.h b/arch/arm/mach-iop13xx/include/mach/io.h index dffb234bb967..f13188518025 100644 --- a/arch/arm/mach-iop13xx/include/mach/io.h +++ b/arch/arm/mach-iop13xx/include/mach/io.h | |||
@@ -22,20 +22,7 @@ | |||
22 | #define IO_SPACE_LIMIT 0xffffffff | 22 | #define IO_SPACE_LIMIT 0xffffffff |
23 | 23 | ||
24 | #define __io(a) __iop13xx_io(a) | 24 | #define __io(a) __iop13xx_io(a) |
25 | #define __mem_pci(a) (a) | ||
26 | #define __mem_isa(a) (a) | ||
27 | 25 | ||
28 | extern void __iomem * __iop13xx_io(unsigned long io_addr); | 26 | extern void __iomem * __iop13xx_io(unsigned long io_addr); |
29 | extern void __iomem *__iop13xx_ioremap(unsigned long cookie, size_t size, | ||
30 | unsigned int mtype); | ||
31 | extern void __iop13xx_iounmap(void __iomem *addr); | ||
32 | |||
33 | extern u32 iop13xx_atue_mem_base; | ||
34 | extern u32 iop13xx_atux_mem_base; | ||
35 | extern size_t iop13xx_atue_mem_size; | ||
36 | extern size_t iop13xx_atux_mem_size; | ||
37 | |||
38 | #define __arch_ioremap __iop13xx_ioremap | ||
39 | #define __arch_iounmap __iop13xx_iounmap | ||
40 | 27 | ||
41 | #endif | 28 | #endif |
diff --git a/arch/arm/mach-iop13xx/include/mach/iop13xx.h b/arch/arm/mach-iop13xx/include/mach/iop13xx.h index 07e9ff7adafb..e190dcd7d72d 100644 --- a/arch/arm/mach-iop13xx/include/mach/iop13xx.h +++ b/arch/arm/mach-iop13xx/include/mach/iop13xx.h | |||
@@ -5,6 +5,7 @@ | |||
5 | /* The ATU offsets can change based on the strapping */ | 5 | /* The ATU offsets can change based on the strapping */ |
6 | extern u32 iop13xx_atux_pmmr_offset; | 6 | extern u32 iop13xx_atux_pmmr_offset; |
7 | extern u32 iop13xx_atue_pmmr_offset; | 7 | extern u32 iop13xx_atue_pmmr_offset; |
8 | void iop13xx_init_early(void); | ||
8 | void iop13xx_init_irq(void); | 9 | void iop13xx_init_irq(void); |
9 | void iop13xx_map_io(void); | 10 | void iop13xx_map_io(void); |
10 | void iop13xx_platform_init(void); | 11 | void iop13xx_platform_init(void); |
diff --git a/arch/arm/mach-iop13xx/io.c b/arch/arm/mach-iop13xx/io.c index 48642e66c566..3c364198db9c 100644 --- a/arch/arm/mach-iop13xx/io.c +++ b/arch/arm/mach-iop13xx/io.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
23 | 23 | ||
24 | #include "pci.h" | ||
25 | |||
24 | void * __iomem __iop13xx_io(unsigned long io_addr) | 26 | void * __iomem __iop13xx_io(unsigned long io_addr) |
25 | { | 27 | { |
26 | void __iomem * io_virt; | 28 | void __iomem * io_virt; |
@@ -40,8 +42,8 @@ void * __iomem __iop13xx_io(unsigned long io_addr) | |||
40 | } | 42 | } |
41 | EXPORT_SYMBOL(__iop13xx_io); | 43 | EXPORT_SYMBOL(__iop13xx_io); |
42 | 44 | ||
43 | void * __iomem __iop13xx_ioremap(unsigned long cookie, size_t size, | 45 | static void __iomem *__iop13xx_ioremap_caller(unsigned long cookie, |
44 | unsigned int mtype) | 46 | size_t size, unsigned int mtype, void *caller) |
45 | { | 47 | { |
46 | void __iomem * retval; | 48 | void __iomem * retval; |
47 | 49 | ||
@@ -76,17 +78,14 @@ void * __iomem __iop13xx_ioremap(unsigned long cookie, size_t size, | |||
76 | break; | 78 | break; |
77 | default: | 79 | default: |
78 | retval = __arm_ioremap_caller(cookie, size, mtype, | 80 | retval = __arm_ioremap_caller(cookie, size, mtype, |
79 | __builtin_return_address(0)); | 81 | caller); |
80 | } | 82 | } |
81 | 83 | ||
82 | return retval; | 84 | return retval; |
83 | } | 85 | } |
84 | EXPORT_SYMBOL(__iop13xx_ioremap); | ||
85 | 86 | ||
86 | void __iop13xx_iounmap(void __iomem *addr) | 87 | static void __iop13xx_iounmap(volatile void __iomem *addr) |
87 | { | 88 | { |
88 | extern void __iounmap(volatile void __iomem *addr); | ||
89 | |||
90 | if (iop13xx_atue_mem_base) | 89 | if (iop13xx_atue_mem_base) |
91 | if (addr >= (void __iomem *) iop13xx_atue_mem_base && | 90 | if (addr >= (void __iomem *) iop13xx_atue_mem_base && |
92 | addr < (void __iomem *) (iop13xx_atue_mem_base + | 91 | addr < (void __iomem *) (iop13xx_atue_mem_base + |
@@ -110,4 +109,9 @@ void __iop13xx_iounmap(void __iomem *addr) | |||
110 | skip: | 109 | skip: |
111 | return; | 110 | return; |
112 | } | 111 | } |
113 | EXPORT_SYMBOL(__iop13xx_iounmap); | 112 | |
113 | void __init iop13xx_init_early(void) | ||
114 | { | ||
115 | arch_ioremap_caller = __iop13xx_ioremap_caller; | ||
116 | arch_iounmap = __iop13xx_iounmap; | ||
117 | } | ||
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c index abaee8833588..5c96b73e6964 100644 --- a/arch/arm/mach-iop13xx/iq81340mc.c +++ b/arch/arm/mach-iop13xx/iq81340mc.c | |||
@@ -92,6 +92,7 @@ static struct sys_timer iq81340mc_timer = { | |||
92 | MACHINE_START(IQ81340MC, "Intel IQ81340MC") | 92 | MACHINE_START(IQ81340MC, "Intel IQ81340MC") |
93 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ | 93 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ |
94 | .atag_offset = 0x100, | 94 | .atag_offset = 0x100, |
95 | .init_early = iop13xx_init_early, | ||
95 | .map_io = iop13xx_map_io, | 96 | .map_io = iop13xx_map_io, |
96 | .init_irq = iop13xx_init_irq, | 97 | .init_irq = iop13xx_init_irq, |
97 | .timer = &iq81340mc_timer, | 98 | .timer = &iq81340mc_timer, |
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c index 690916a09dc6..aa4dd750135a 100644 --- a/arch/arm/mach-iop13xx/iq81340sc.c +++ b/arch/arm/mach-iop13xx/iq81340sc.c | |||
@@ -94,6 +94,7 @@ static struct sys_timer iq81340sc_timer = { | |||
94 | MACHINE_START(IQ81340SC, "Intel IQ81340SC") | 94 | MACHINE_START(IQ81340SC, "Intel IQ81340SC") |
95 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ | 95 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ |
96 | .atag_offset = 0x100, | 96 | .atag_offset = 0x100, |
97 | .init_early = iop13xx_init_early, | ||
97 | .map_io = iop13xx_map_io, | 98 | .map_io = iop13xx_map_io, |
98 | .init_irq = iop13xx_init_irq, | 99 | .init_irq = iop13xx_init_irq, |
99 | .timer = &iq81340sc_timer, | 100 | .timer = &iq81340sc_timer, |
diff --git a/arch/arm/mach-iop13xx/pci.h b/arch/arm/mach-iop13xx/pci.h new file mode 100644 index 000000000000..c70cf5b41e31 --- /dev/null +++ b/arch/arm/mach-iop13xx/pci.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #include <linux/types.h> | ||
2 | |||
3 | extern u32 iop13xx_atue_mem_base; | ||
4 | extern u32 iop13xx_atux_mem_base; | ||
5 | extern size_t iop13xx_atue_mem_size; | ||
6 | extern size_t iop13xx_atux_mem_size; | ||
diff --git a/arch/arm/mach-iop32x/include/mach/io.h b/arch/arm/mach-iop32x/include/mach/io.h index 2d88264b9863..e2ada265bb8d 100644 --- a/arch/arm/mach-iop32x/include/mach/io.h +++ b/arch/arm/mach-iop32x/include/mach/io.h | |||
@@ -15,6 +15,5 @@ | |||
15 | 15 | ||
16 | #define IO_SPACE_LIMIT 0xffffffff | 16 | #define IO_SPACE_LIMIT 0xffffffff |
17 | #define __io(p) ((void __iomem *)IOP3XX_PCI_IO_PHYS_TO_VIRT(p)) | 17 | #define __io(p) ((void __iomem *)IOP3XX_PCI_IO_PHYS_TO_VIRT(p)) |
18 | #define __mem_pci(a) (a) | ||
19 | 18 | ||
20 | #endif | 19 | #endif |
diff --git a/arch/arm/mach-iop33x/include/mach/io.h b/arch/arm/mach-iop33x/include/mach/io.h index a8a66fc8fbdb..f7c1b6595660 100644 --- a/arch/arm/mach-iop33x/include/mach/io.h +++ b/arch/arm/mach-iop33x/include/mach/io.h | |||
@@ -15,6 +15,5 @@ | |||
15 | 15 | ||
16 | #define IO_SPACE_LIMIT 0xffffffff | 16 | #define IO_SPACE_LIMIT 0xffffffff |
17 | #define __io(p) ((void __iomem *)IOP3XX_PCI_IO_PHYS_TO_VIRT(p)) | 17 | #define __io(p) ((void __iomem *)IOP3XX_PCI_IO_PHYS_TO_VIRT(p)) |
18 | #define __mem_pci(a) (a) | ||
19 | 18 | ||
20 | #endif | 19 | #endif |
diff --git a/arch/arm/mach-ixp2000/include/mach/io.h b/arch/arm/mach-ixp2000/include/mach/io.h index 859e584914d9..f6552d6f35ab 100644 --- a/arch/arm/mach-ixp2000/include/mach/io.h +++ b/arch/arm/mach-ixp2000/include/mach/io.h | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | 19 | ||
20 | #define IO_SPACE_LIMIT 0xffffffff | 20 | #define IO_SPACE_LIMIT 0xffffffff |
21 | #define __mem_pci(a) (a) | ||
22 | 21 | ||
23 | /* | 22 | /* |
24 | * The A? revisions of the IXP2000s assert byte lanes for PCI I/O | 23 | * The A? revisions of the IXP2000s assert byte lanes for PCI I/O |
diff --git a/arch/arm/mach-ixp23xx/include/mach/io.h b/arch/arm/mach-ixp23xx/include/mach/io.h index 4ce4353b9f72..a7aceb55c130 100644 --- a/arch/arm/mach-ixp23xx/include/mach/io.h +++ b/arch/arm/mach-ixp23xx/include/mach/io.h | |||
@@ -18,6 +18,5 @@ | |||
18 | #define IO_SPACE_LIMIT 0xffffffff | 18 | #define IO_SPACE_LIMIT 0xffffffff |
19 | 19 | ||
20 | #define __io(p) ((void __iomem*)((p) + IXP23XX_PCI_IO_VIRT)) | 20 | #define __io(p) ((void __iomem*)((p) + IXP23XX_PCI_IO_VIRT)) |
21 | #define __mem_pci(a) (a) | ||
22 | 21 | ||
23 | #endif | 22 | #endif |
diff --git a/arch/arm/mach-ixp4xx/avila-setup.c b/arch/arm/mach-ixp4xx/avila-setup.c index a7277ad470a5..90e42e9982cb 100644 --- a/arch/arm/mach-ixp4xx/avila-setup.c +++ b/arch/arm/mach-ixp4xx/avila-setup.c | |||
@@ -165,6 +165,7 @@ static void __init avila_init(void) | |||
165 | MACHINE_START(AVILA, "Gateworks Avila Network Platform") | 165 | MACHINE_START(AVILA, "Gateworks Avila Network Platform") |
166 | /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */ | 166 | /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */ |
167 | .map_io = ixp4xx_map_io, | 167 | .map_io = ixp4xx_map_io, |
168 | .init_early = ixp4xx_init_early, | ||
168 | .init_irq = ixp4xx_init_irq, | 169 | .init_irq = ixp4xx_init_irq, |
169 | .timer = &ixp4xx_timer, | 170 | .timer = &ixp4xx_timer, |
170 | .atag_offset = 0x100, | 171 | .atag_offset = 0x100, |
@@ -184,6 +185,7 @@ MACHINE_END | |||
184 | MACHINE_START(LOFT, "Giant Shoulder Inc Loft board") | 185 | MACHINE_START(LOFT, "Giant Shoulder Inc Loft board") |
185 | /* Maintainer: Tom Billman <kernel@giantshoulderinc.com> */ | 186 | /* Maintainer: Tom Billman <kernel@giantshoulderinc.com> */ |
186 | .map_io = ixp4xx_map_io, | 187 | .map_io = ixp4xx_map_io, |
188 | .init_early = ixp4xx_init_early, | ||
187 | .init_irq = ixp4xx_init_irq, | 189 | .init_irq = ixp4xx_init_irq, |
188 | .timer = &ixp4xx_timer, | 190 | .timer = &ixp4xx_timer, |
189 | .atag_offset = 0x100, | 191 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index a6329a0a8ec4..c60e7b86192c 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | #include <mach/udc.h> | 32 | #include <mach/udc.h> |
33 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
34 | #include <mach/io.h> | ||
34 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
35 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
36 | #include <asm/page.h> | 37 | #include <asm/page.h> |
@@ -517,3 +518,35 @@ void ixp4xx_restart(char mode, const char *cmd) | |||
517 | *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE; | 518 | *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE; |
518 | } | 519 | } |
519 | } | 520 | } |
521 | |||
522 | #ifdef CONFIG_IXP4XX_INDIRECT_PCI | ||
523 | /* | ||
524 | * In the case of using indirect PCI, we simply return the actual PCI | ||
525 | * address and our read/write implementation use that to drive the | ||
526 | * access registers. If something outside of PCI is ioremap'd, we | ||
527 | * fallback to the default. | ||
528 | */ | ||
529 | |||
530 | static void __iomem *ixp4xx_ioremap_caller(unsigned long addr, size_t size, | ||
531 | unsigned int mtype, void *caller) | ||
532 | { | ||
533 | if (!is_pci_memory(addr)) | ||
534 | return __arm_ioremap_caller(addr, size, mtype, caller); | ||
535 | |||
536 | return (void __iomem *)addr; | ||
537 | } | ||
538 | |||
539 | static void ixp4xx_iounmap(void __iomem *addr) | ||
540 | { | ||
541 | if (!is_pci_memory((__force u32)addr)) | ||
542 | __iounmap(addr); | ||
543 | } | ||
544 | |||
545 | void __init ixp4xx_init_early(void) | ||
546 | { | ||
547 | arch_ioremap_caller = ixp4xx_ioremap_caller; | ||
548 | arch_iounmap = ixp4xx_iounmap; | ||
549 | } | ||
550 | #else | ||
551 | void __init ixp4xx_init_early(void) {} | ||
552 | #endif | ||
diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c index a74f86ce8bcc..1b83110028d6 100644 --- a/arch/arm/mach-ixp4xx/coyote-setup.c +++ b/arch/arm/mach-ixp4xx/coyote-setup.c | |||
@@ -110,6 +110,7 @@ static void __init coyote_init(void) | |||
110 | MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote") | 110 | MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote") |
111 | /* Maintainer: MontaVista Software, Inc. */ | 111 | /* Maintainer: MontaVista Software, Inc. */ |
112 | .map_io = ixp4xx_map_io, | 112 | .map_io = ixp4xx_map_io, |
113 | .init_early = ixp4xx_init_early, | ||
113 | .init_irq = ixp4xx_init_irq, | 114 | .init_irq = ixp4xx_init_irq, |
114 | .timer = &ixp4xx_timer, | 115 | .timer = &ixp4xx_timer, |
115 | .atag_offset = 0x100, | 116 | .atag_offset = 0x100, |
@@ -129,6 +130,7 @@ MACHINE_END | |||
129 | MACHINE_START(IXDPG425, "Intel IXDPG425") | 130 | MACHINE_START(IXDPG425, "Intel IXDPG425") |
130 | /* Maintainer: MontaVista Software, Inc. */ | 131 | /* Maintainer: MontaVista Software, Inc. */ |
131 | .map_io = ixp4xx_map_io, | 132 | .map_io = ixp4xx_map_io, |
133 | .init_early = ixp4xx_init_early, | ||
132 | .init_irq = ixp4xx_init_irq, | 134 | .init_irq = ixp4xx_init_irq, |
133 | .timer = &ixp4xx_timer, | 135 | .timer = &ixp4xx_timer, |
134 | .atag_offset = 0x100, | 136 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c index 67be177b336a..97a0af8f1955 100644 --- a/arch/arm/mach-ixp4xx/dsmg600-setup.c +++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c | |||
@@ -280,6 +280,7 @@ MACHINE_START(DSMG600, "D-Link DSM-G600 RevA") | |||
280 | /* Maintainer: www.nslu2-linux.org */ | 280 | /* Maintainer: www.nslu2-linux.org */ |
281 | .atag_offset = 0x100, | 281 | .atag_offset = 0x100, |
282 | .map_io = ixp4xx_map_io, | 282 | .map_io = ixp4xx_map_io, |
283 | .init_early = ixp4xx_init_early, | ||
283 | .init_irq = ixp4xx_init_irq, | 284 | .init_irq = ixp4xx_init_irq, |
284 | .timer = &dsmg600_timer, | 285 | .timer = &dsmg600_timer, |
285 | .init_machine = dsmg600_init, | 286 | .init_machine = dsmg600_init, |
diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c index 6d5818285af8..9175a25a7511 100644 --- a/arch/arm/mach-ixp4xx/fsg-setup.c +++ b/arch/arm/mach-ixp4xx/fsg-setup.c | |||
@@ -270,6 +270,7 @@ static void __init fsg_init(void) | |||
270 | MACHINE_START(FSG, "Freecom FSG-3") | 270 | MACHINE_START(FSG, "Freecom FSG-3") |
271 | /* Maintainer: www.nslu2-linux.org */ | 271 | /* Maintainer: www.nslu2-linux.org */ |
272 | .map_io = ixp4xx_map_io, | 272 | .map_io = ixp4xx_map_io, |
273 | .init_early = ixp4xx_init_early, | ||
273 | .init_irq = ixp4xx_init_irq, | 274 | .init_irq = ixp4xx_init_irq, |
274 | .timer = &ixp4xx_timer, | 275 | .timer = &ixp4xx_timer, |
275 | .atag_offset = 0x100, | 276 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/gateway7001-setup.c b/arch/arm/mach-ixp4xx/gateway7001-setup.c index 7ecf9b28f1c0..033c71758953 100644 --- a/arch/arm/mach-ixp4xx/gateway7001-setup.c +++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c | |||
@@ -97,6 +97,7 @@ static void __init gateway7001_init(void) | |||
97 | MACHINE_START(GATEWAY7001, "Gateway 7001 AP") | 97 | MACHINE_START(GATEWAY7001, "Gateway 7001 AP") |
98 | /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ | 98 | /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ |
99 | .map_io = ixp4xx_map_io, | 99 | .map_io = ixp4xx_map_io, |
100 | .init_early = ixp4xx_init_early, | ||
100 | .init_irq = ixp4xx_init_irq, | 101 | .init_irq = ixp4xx_init_irq, |
101 | .timer = &ixp4xx_timer, | 102 | .timer = &ixp4xx_timer, |
102 | .atag_offset = 0x100, | 103 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c index c0e3d69a8aec..0dda8f6d7805 100644 --- a/arch/arm/mach-ixp4xx/goramo_mlr.c +++ b/arch/arm/mach-ixp4xx/goramo_mlr.c | |||
@@ -497,6 +497,7 @@ subsys_initcall(gmlr_pci_init); | |||
497 | MACHINE_START(GORAMO_MLR, "MultiLink") | 497 | MACHINE_START(GORAMO_MLR, "MultiLink") |
498 | /* Maintainer: Krzysztof Halasa */ | 498 | /* Maintainer: Krzysztof Halasa */ |
499 | .map_io = ixp4xx_map_io, | 499 | .map_io = ixp4xx_map_io, |
500 | .init_early = ixp4xx_init_early, | ||
500 | .init_irq = ixp4xx_init_irq, | 501 | .init_irq = ixp4xx_init_irq, |
501 | .timer = &ixp4xx_timer, | 502 | .timer = &ixp4xx_timer, |
502 | .atag_offset = 0x100, | 503 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c index a23f89391458..18ebc6be7969 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c | |||
@@ -165,6 +165,7 @@ static void __init gtwx5715_init(void) | |||
165 | MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)") | 165 | MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)") |
166 | /* Maintainer: George Joseph */ | 166 | /* Maintainer: George Joseph */ |
167 | .map_io = ixp4xx_map_io, | 167 | .map_io = ixp4xx_map_io, |
168 | .init_early = ixp4xx_init_early, | ||
168 | .init_irq = ixp4xx_init_irq, | 169 | .init_irq = ixp4xx_init_irq, |
169 | .timer = &ixp4xx_timer, | 170 | .timer = &ixp4xx_timer, |
170 | .atag_offset = 0x100, | 171 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/include/mach/io.h b/arch/arm/mach-ixp4xx/include/mach/io.h index ffb9d6afb89f..5cf30d1b78d2 100644 --- a/arch/arm/mach-ixp4xx/include/mach/io.h +++ b/arch/arm/mach-ixp4xx/include/mach/io.h | |||
@@ -39,11 +39,7 @@ extern int ixp4xx_pci_write(u32 addr, u32 cmd, u32 data); | |||
39 | * but in some cases the performance hit is acceptable. In addition, you | 39 | * but in some cases the performance hit is acceptable. In addition, you |
40 | * cannot mmap() PCI devices in this case. | 40 | * cannot mmap() PCI devices in this case. |
41 | */ | 41 | */ |
42 | #ifndef CONFIG_IXP4XX_INDIRECT_PCI | 42 | #ifdef CONFIG_IXP4XX_INDIRECT_PCI |
43 | |||
44 | #define __mem_pci(a) (a) | ||
45 | |||
46 | #else | ||
47 | 43 | ||
48 | /* | 44 | /* |
49 | * In the case of using indirect PCI, we simply return the actual PCI | 45 | * In the case of using indirect PCI, we simply return the actual PCI |
@@ -57,24 +53,6 @@ static inline int is_pci_memory(u32 addr) | |||
57 | return (addr >= PCIBIOS_MIN_MEM) && (addr <= 0x4FFFFFFF); | 53 | return (addr >= PCIBIOS_MIN_MEM) && (addr <= 0x4FFFFFFF); |
58 | } | 54 | } |
59 | 55 | ||
60 | static inline void __iomem * __indirect_ioremap(unsigned long addr, size_t size, | ||
61 | unsigned int mtype) | ||
62 | { | ||
63 | if (!is_pci_memory(addr)) | ||
64 | return __arm_ioremap(addr, size, mtype); | ||
65 | |||
66 | return (void __iomem *)addr; | ||
67 | } | ||
68 | |||
69 | static inline void __indirect_iounmap(void __iomem *addr) | ||
70 | { | ||
71 | if (!is_pci_memory((__force u32)addr)) | ||
72 | __iounmap(addr); | ||
73 | } | ||
74 | |||
75 | #define __arch_ioremap __indirect_ioremap | ||
76 | #define __arch_iounmap __indirect_iounmap | ||
77 | |||
78 | #define writeb(v, p) __indirect_writeb(v, p) | 56 | #define writeb(v, p) __indirect_writeb(v, p) |
79 | #define writew(v, p) __indirect_writew(v, p) | 57 | #define writew(v, p) __indirect_writew(v, p) |
80 | #define writel(v, p) __indirect_writel(v, p) | 58 | #define writel(v, p) __indirect_writel(v, p) |
diff --git a/arch/arm/mach-ixp4xx/include/mach/platform.h b/arch/arm/mach-ixp4xx/include/mach/platform.h index df9250bbf13d..b66bedc64de1 100644 --- a/arch/arm/mach-ixp4xx/include/mach/platform.h +++ b/arch/arm/mach-ixp4xx/include/mach/platform.h | |||
@@ -121,6 +121,7 @@ extern unsigned long ixp4xx_timer_freq; | |||
121 | * Functions used by platform-level setup code | 121 | * Functions used by platform-level setup code |
122 | */ | 122 | */ |
123 | extern void ixp4xx_map_io(void); | 123 | extern void ixp4xx_map_io(void); |
124 | extern void ixp4xx_init_early(void); | ||
124 | extern void ixp4xx_init_irq(void); | 125 | extern void ixp4xx_init_irq(void); |
125 | extern void ixp4xx_sys_init(void); | 126 | extern void ixp4xx_sys_init(void); |
126 | extern void ixp4xx_timer_init(void); | 127 | extern void ixp4xx_timer_init(void); |
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c index 8a38b39999f8..3d742aee1773 100644 --- a/arch/arm/mach-ixp4xx/ixdp425-setup.c +++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c | |||
@@ -254,6 +254,7 @@ static void __init ixdp425_init(void) | |||
254 | MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") | 254 | MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") |
255 | /* Maintainer: MontaVista Software, Inc. */ | 255 | /* Maintainer: MontaVista Software, Inc. */ |
256 | .map_io = ixp4xx_map_io, | 256 | .map_io = ixp4xx_map_io, |
257 | .init_early = ixp4xx_init_early, | ||
257 | .init_irq = ixp4xx_init_irq, | 258 | .init_irq = ixp4xx_init_irq, |
258 | .timer = &ixp4xx_timer, | 259 | .timer = &ixp4xx_timer, |
259 | .atag_offset = 0x100, | 260 | .atag_offset = 0x100, |
@@ -269,6 +270,7 @@ MACHINE_END | |||
269 | MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") | 270 | MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") |
270 | /* Maintainer: MontaVista Software, Inc. */ | 271 | /* Maintainer: MontaVista Software, Inc. */ |
271 | .map_io = ixp4xx_map_io, | 272 | .map_io = ixp4xx_map_io, |
273 | .init_early = ixp4xx_init_early, | ||
272 | .init_irq = ixp4xx_init_irq, | 274 | .init_irq = ixp4xx_init_irq, |
273 | .timer = &ixp4xx_timer, | 275 | .timer = &ixp4xx_timer, |
274 | .atag_offset = 0x100, | 276 | .atag_offset = 0x100, |
@@ -283,6 +285,7 @@ MACHINE_END | |||
283 | MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") | 285 | MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") |
284 | /* Maintainer: MontaVista Software, Inc. */ | 286 | /* Maintainer: MontaVista Software, Inc. */ |
285 | .map_io = ixp4xx_map_io, | 287 | .map_io = ixp4xx_map_io, |
288 | .init_early = ixp4xx_init_early, | ||
286 | .init_irq = ixp4xx_init_irq, | 289 | .init_irq = ixp4xx_init_irq, |
287 | .timer = &ixp4xx_timer, | 290 | .timer = &ixp4xx_timer, |
288 | .atag_offset = 0x100, | 291 | .atag_offset = 0x100, |
@@ -297,6 +300,7 @@ MACHINE_END | |||
297 | MACHINE_START(KIXRP435, "Intel KIXRP435 Reference Platform") | 300 | MACHINE_START(KIXRP435, "Intel KIXRP435 Reference Platform") |
298 | /* Maintainer: MontaVista Software, Inc. */ | 301 | /* Maintainer: MontaVista Software, Inc. */ |
299 | .map_io = ixp4xx_map_io, | 302 | .map_io = ixp4xx_map_io, |
303 | .init_early = ixp4xx_init_early, | ||
300 | .init_irq = ixp4xx_init_irq, | 304 | .init_irq = ixp4xx_init_irq, |
301 | .timer = &ixp4xx_timer, | 305 | .timer = &ixp4xx_timer, |
302 | .atag_offset = 0x100, | 306 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index 1010eb7b0083..33cb0955b6bf 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -315,6 +315,7 @@ MACHINE_START(NAS100D, "Iomega NAS 100d") | |||
315 | /* Maintainer: www.nslu2-linux.org */ | 315 | /* Maintainer: www.nslu2-linux.org */ |
316 | .atag_offset = 0x100, | 316 | .atag_offset = 0x100, |
317 | .map_io = ixp4xx_map_io, | 317 | .map_io = ixp4xx_map_io, |
318 | .init_early = ixp4xx_init_early, | ||
318 | .init_irq = ixp4xx_init_irq, | 319 | .init_irq = ixp4xx_init_irq, |
319 | .timer = &ixp4xx_timer, | 320 | .timer = &ixp4xx_timer, |
320 | .init_machine = nas100d_init, | 321 | .init_machine = nas100d_init, |
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index aa355c360d57..e2903faaebb3 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -301,6 +301,7 @@ MACHINE_START(NSLU2, "Linksys NSLU2") | |||
301 | /* Maintainer: www.nslu2-linux.org */ | 301 | /* Maintainer: www.nslu2-linux.org */ |
302 | .atag_offset = 0x100, | 302 | .atag_offset = 0x100, |
303 | .map_io = ixp4xx_map_io, | 303 | .map_io = ixp4xx_map_io, |
304 | .init_early = ixp4xx_init_early, | ||
304 | .init_irq = ixp4xx_init_irq, | 305 | .init_irq = ixp4xx_init_irq, |
305 | .timer = &nslu2_timer, | 306 | .timer = &nslu2_timer, |
306 | .init_machine = nslu2_init, | 307 | .init_machine = nslu2_init, |
diff --git a/arch/arm/mach-ixp4xx/omixp-setup.c b/arch/arm/mach-ixp4xx/omixp-setup.c index 0940869fcfdd..158ddb79821d 100644 --- a/arch/arm/mach-ixp4xx/omixp-setup.c +++ b/arch/arm/mach-ixp4xx/omixp-setup.c | |||
@@ -243,6 +243,7 @@ static void __init omixp_init(void) | |||
243 | MACHINE_START(DEVIXP, "Omicron DEVIXP") | 243 | MACHINE_START(DEVIXP, "Omicron DEVIXP") |
244 | .atag_offset = 0x100, | 244 | .atag_offset = 0x100, |
245 | .map_io = ixp4xx_map_io, | 245 | .map_io = ixp4xx_map_io, |
246 | .init_early = ixp4xx_init_early, | ||
246 | .init_irq = ixp4xx_init_irq, | 247 | .init_irq = ixp4xx_init_irq, |
247 | .timer = &ixp4xx_timer, | 248 | .timer = &ixp4xx_timer, |
248 | .init_machine = omixp_init, | 249 | .init_machine = omixp_init, |
@@ -254,6 +255,7 @@ MACHINE_END | |||
254 | MACHINE_START(MICCPT, "Omicron MICCPT") | 255 | MACHINE_START(MICCPT, "Omicron MICCPT") |
255 | .atag_offset = 0x100, | 256 | .atag_offset = 0x100, |
256 | .map_io = ixp4xx_map_io, | 257 | .map_io = ixp4xx_map_io, |
258 | .init_early = ixp4xx_init_early, | ||
257 | .init_irq = ixp4xx_init_irq, | 259 | .init_irq = ixp4xx_init_irq, |
258 | .timer = &ixp4xx_timer, | 260 | .timer = &ixp4xx_timer, |
259 | .init_machine = omixp_init, | 261 | .init_machine = omixp_init, |
@@ -268,6 +270,7 @@ MACHINE_END | |||
268 | MACHINE_START(MIC256, "Omicron MIC256") | 270 | MACHINE_START(MIC256, "Omicron MIC256") |
269 | .atag_offset = 0x100, | 271 | .atag_offset = 0x100, |
270 | .map_io = ixp4xx_map_io, | 272 | .map_io = ixp4xx_map_io, |
273 | .init_early = ixp4xx_init_early, | ||
271 | .init_irq = ixp4xx_init_irq, | 274 | .init_irq = ixp4xx_init_irq, |
272 | .timer = &ixp4xx_timer, | 275 | .timer = &ixp4xx_timer, |
273 | .init_machine = omixp_init, | 276 | .init_machine = omixp_init, |
diff --git a/arch/arm/mach-ixp4xx/vulcan-setup.c b/arch/arm/mach-ixp4xx/vulcan-setup.c index 9dec20683291..2798f435aaf4 100644 --- a/arch/arm/mach-ixp4xx/vulcan-setup.c +++ b/arch/arm/mach-ixp4xx/vulcan-setup.c | |||
@@ -237,6 +237,7 @@ static void __init vulcan_init(void) | |||
237 | MACHINE_START(ARCOM_VULCAN, "Arcom/Eurotech Vulcan") | 237 | MACHINE_START(ARCOM_VULCAN, "Arcom/Eurotech Vulcan") |
238 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ | 238 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ |
239 | .map_io = ixp4xx_map_io, | 239 | .map_io = ixp4xx_map_io, |
240 | .init_early = ixp4xx_init_early, | ||
240 | .init_irq = ixp4xx_init_irq, | 241 | .init_irq = ixp4xx_init_irq, |
241 | .timer = &ixp4xx_timer, | 242 | .timer = &ixp4xx_timer, |
242 | .atag_offset = 0x100, | 243 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-ixp4xx/wg302v2-setup.c b/arch/arm/mach-ixp4xx/wg302v2-setup.c index 5ac0f0a0fd8c..a785175b115b 100644 --- a/arch/arm/mach-ixp4xx/wg302v2-setup.c +++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c | |||
@@ -98,6 +98,7 @@ static void __init wg302v2_init(void) | |||
98 | MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2") | 98 | MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2") |
99 | /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ | 99 | /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ |
100 | .map_io = ixp4xx_map_io, | 100 | .map_io = ixp4xx_map_io, |
101 | .init_early = ixp4xx_init_early, | ||
101 | .init_irq = ixp4xx_init_irq, | 102 | .init_irq = ixp4xx_init_irq, |
102 | .timer = &ixp4xx_timer, | 103 | .timer = &ixp4xx_timer, |
103 | .atag_offset = 0x100, | 104 | .atag_offset = 0x100, |
diff --git a/arch/arm/mach-kirkwood/include/mach/io.h b/arch/arm/mach-kirkwood/include/mach/io.h index 49dd0cb5e166..5d0ab61700d2 100644 --- a/arch/arm/mach-kirkwood/include/mach/io.h +++ b/arch/arm/mach-kirkwood/include/mach/io.h | |||
@@ -20,7 +20,5 @@ static inline void __iomem *__io(unsigned long addr) | |||
20 | } | 20 | } |
21 | 21 | ||
22 | #define __io(a) __io(a) | 22 | #define __io(a) __io(a) |
23 | #define __mem_pci(a) (a) | ||
24 | |||
25 | 23 | ||
26 | #endif | 24 | #endif |
diff --git a/arch/arm/mach-ks8695/include/mach/io.h b/arch/arm/mach-ks8695/include/mach/io.h deleted file mode 100644 index a7a63ac3ba4e..000000000000 --- a/arch/arm/mach-ks8695/include/mach/io.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ks8695/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2006 Andrew Victor | ||
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 | #ifndef __ASM_ARCH_IO_H | ||
12 | #define __ASM_ARCH_IO_H | ||
13 | |||
14 | #define IO_SPACE_LIMIT 0xffffffff | ||
15 | |||
16 | #define __io(a) __typesafe_io(a) | ||
17 | #define __mem_pci(a) (a) | ||
18 | |||
19 | #endif | ||
diff --git a/arch/arm/mach-lpc32xx/include/mach/io.h b/arch/arm/mach-lpc32xx/include/mach/io.h deleted file mode 100644 index 9b59ab5cef89..000000000000 --- a/arch/arm/mach-lpc32xx/include/mach/io.h +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-lpc32xx/include/mach/io.h | ||
3 | * | ||
4 | * Author: Kevin Wells <kevin.wells@nxp.com> | ||
5 | * | ||
6 | * Copyright (C) 2010 NXP Semiconductors | ||
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 as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARM_ARCH_IO_H | ||
20 | #define __ASM_ARM_ARCH_IO_H | ||
21 | |||
22 | #define IO_SPACE_LIMIT 0xffffffff | ||
23 | |||
24 | #define __io(a) __typesafe_io(a) | ||
25 | #define __mem_pci(a) (a) | ||
26 | |||
27 | #endif | ||
diff --git a/arch/arm/mach-mmp/include/mach/addr-map.h b/arch/arm/mach-mmp/include/mach/addr-map.h index 3e404acd6ff4..b1ece08174e8 100644 --- a/arch/arm/mach-mmp/include/mach/addr-map.h +++ b/arch/arm/mach-mmp/include/mach/addr-map.h | |||
@@ -11,12 +11,6 @@ | |||
11 | #ifndef __ASM_MACH_ADDR_MAP_H | 11 | #ifndef __ASM_MACH_ADDR_MAP_H |
12 | #define __ASM_MACH_ADDR_MAP_H | 12 | #define __ASM_MACH_ADDR_MAP_H |
13 | 13 | ||
14 | #ifndef __ASSEMBLER__ | ||
15 | #define IOMEM(x) ((void __iomem *)(x)) | ||
16 | #else | ||
17 | #define IOMEM(x) (x) | ||
18 | #endif | ||
19 | |||
20 | /* APB - Application Subsystem Peripheral Bus | 14 | /* APB - Application Subsystem Peripheral Bus |
21 | * | 15 | * |
22 | * NOTE: the DMA controller registers are actually on the AXI fabric #1 | 16 | * NOTE: the DMA controller registers are actually on the AXI fabric #1 |
diff --git a/arch/arm/mach-mmp/include/mach/io.h b/arch/arm/mach-mmp/include/mach/io.h deleted file mode 100644 index e7adf3d012c1..000000000000 --- a/arch/arm/mach-mmp/include/mach/io.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-mmp/include/mach/io.h | ||
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 | #ifndef __ASM_MACH_IO_H | ||
10 | #define __ASM_MACH_IO_H | ||
11 | |||
12 | #define IO_SPACE_LIMIT 0xffffffff | ||
13 | |||
14 | /* | ||
15 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
16 | * drivers out there that might just work if we fake them... | ||
17 | */ | ||
18 | #define __io(a) __typesafe_io(a) | ||
19 | #define __mem_pci(a) (a) | ||
20 | |||
21 | #endif /* __ASM_MACH_IO_H */ | ||
diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c index a60ab6d04ec5..3698a370d636 100644 --- a/arch/arm/mach-msm/board-halibut.c +++ b/arch/arm/mach-msm/board-halibut.c | |||
@@ -68,6 +68,11 @@ static struct platform_device *devices[] __initdata = { | |||
68 | 68 | ||
69 | extern struct sys_timer msm_timer; | 69 | extern struct sys_timer msm_timer; |
70 | 70 | ||
71 | static void __init halibut_init_early(void) | ||
72 | { | ||
73 | arch_ioremap_caller = __msm_ioremap_caller; | ||
74 | } | ||
75 | |||
71 | static void __init halibut_init_irq(void) | 76 | static void __init halibut_init_irq(void) |
72 | { | 77 | { |
73 | msm_init_irq(); | 78 | msm_init_irq(); |
@@ -96,6 +101,7 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") | |||
96 | .atag_offset = 0x100, | 101 | .atag_offset = 0x100, |
97 | .fixup = halibut_fixup, | 102 | .fixup = halibut_fixup, |
98 | .map_io = halibut_map_io, | 103 | .map_io = halibut_map_io, |
104 | .init_early = halibut_init_early, | ||
99 | .init_irq = halibut_init_irq, | 105 | .init_irq = halibut_init_irq, |
100 | .init_machine = halibut_init, | 106 | .init_machine = halibut_init, |
101 | .timer = &msm_timer, | 107 | .timer = &msm_timer, |
diff --git a/arch/arm/mach-msm/board-trout.c b/arch/arm/mach-msm/board-trout.c index 6b9b227c87c5..5414f76ec0a9 100644 --- a/arch/arm/mach-msm/board-trout.c +++ b/arch/arm/mach-msm/board-trout.c | |||
@@ -43,6 +43,11 @@ static struct platform_device *devices[] __initdata = { | |||
43 | 43 | ||
44 | extern struct sys_timer msm_timer; | 44 | extern struct sys_timer msm_timer; |
45 | 45 | ||
46 | static void __init trout_init_early(void) | ||
47 | { | ||
48 | arch_ioremap_caller = __msm_ioremap_caller; | ||
49 | } | ||
50 | |||
46 | static void __init trout_init_irq(void) | 51 | static void __init trout_init_irq(void) |
47 | { | 52 | { |
48 | msm_init_irq(); | 53 | msm_init_irq(); |
@@ -96,6 +101,7 @@ MACHINE_START(TROUT, "HTC Dream") | |||
96 | .atag_offset = 0x100, | 101 | .atag_offset = 0x100, |
97 | .fixup = trout_fixup, | 102 | .fixup = trout_fixup, |
98 | .map_io = trout_map_io, | 103 | .map_io = trout_map_io, |
104 | .init_early = trout_init_early, | ||
99 | .init_irq = trout_init_irq, | 105 | .init_irq = trout_init_irq, |
100 | .init_machine = trout_init, | 106 | .init_machine = trout_init, |
101 | .timer = &msm_timer, | 107 | .timer = &msm_timer, |
diff --git a/arch/arm/mach-msm/include/mach/io.h b/arch/arm/mach-msm/include/mach/io.h deleted file mode 100644 index dc1b928745e9..000000000000 --- a/arch/arm/mach-msm/include/mach/io.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* arch/arm/mach-msm/include/mach/io.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
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 | #ifndef __ASM_ARM_ARCH_IO_H | ||
17 | #define __ASM_ARM_ARCH_IO_H | ||
18 | |||
19 | #define IO_SPACE_LIMIT 0xffffffff | ||
20 | |||
21 | #define __arch_ioremap __msm_ioremap | ||
22 | #define __arch_iounmap __iounmap | ||
23 | |||
24 | void __iomem *__msm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype); | ||
25 | |||
26 | #define __io(a) __typesafe_io(a) | ||
27 | #define __mem_pci(a) (a) | ||
28 | |||
29 | void msm_map_qsd8x50_io(void); | ||
30 | void msm_map_msm7x30_io(void); | ||
31 | void msm_map_msm8x60_io(void); | ||
32 | void msm_map_msm8960_io(void); | ||
33 | |||
34 | extern unsigned int msm_shared_ram_phys; | ||
35 | |||
36 | #endif | ||
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h b/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h index 8af46123dab6..6c4046c21296 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | |||
@@ -38,12 +38,6 @@ | |||
38 | * | 38 | * |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #ifdef __ASSEMBLY__ | ||
42 | #define IOMEM(x) x | ||
43 | #else | ||
44 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
45 | #endif | ||
46 | |||
47 | #define MSM_VIC_BASE IOMEM(0xE0000000) | 41 | #define MSM_VIC_BASE IOMEM(0xE0000000) |
48 | #define MSM_VIC_PHYS 0xC0000000 | 42 | #define MSM_VIC_PHYS 0xC0000000 |
49 | #define MSM_VIC_SIZE SZ_4K | 43 | #define MSM_VIC_SIZE SZ_4K |
@@ -111,5 +105,11 @@ | |||
111 | #define MSM_AD5_PHYS 0xAC000000 | 105 | #define MSM_AD5_PHYS 0xAC000000 |
112 | #define MSM_AD5_SIZE (SZ_1M*13) | 106 | #define MSM_AD5_SIZE (SZ_1M*13) |
113 | 107 | ||
108 | #ifndef __ASSEMBLY__ | ||
109 | |||
110 | extern void __iomem *__msm_ioremap_caller(unsigned long phys_addr, size_t size, | ||
111 | unsigned int mtype, void *caller); | ||
112 | |||
113 | #endif | ||
114 | 114 | ||
115 | #endif | 115 | #endif |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h b/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h index 198202c267c8..f944fe65a657 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h | |||
@@ -100,4 +100,8 @@ | |||
100 | #define MSM_HSUSB_PHYS 0xA3600000 | 100 | #define MSM_HSUSB_PHYS 0xA3600000 |
101 | #define MSM_HSUSB_SIZE SZ_1K | 101 | #define MSM_HSUSB_SIZE SZ_1K |
102 | 102 | ||
103 | #ifndef __ASSEMBLY__ | ||
104 | extern void msm_map_msm7x30_io(void); | ||
105 | #endif | ||
106 | |||
103 | #endif | 107 | #endif |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h index 800b55767e6b..a1752c0284fc 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h | |||
@@ -50,4 +50,8 @@ | |||
50 | #define MSM_DEBUG_UART_PHYS 0x16440000 | 50 | #define MSM_DEBUG_UART_PHYS 0x16440000 |
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | #ifndef __ASSEMBLY__ | ||
54 | extern void msm_map_msm8960_io(void); | ||
55 | #endif | ||
56 | |||
53 | #endif | 57 | #endif |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h index 0faa894729b7..da77cc1d545d 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h | |||
@@ -122,4 +122,8 @@ | |||
122 | #define MSM_SDC4_PHYS 0xA0600000 | 122 | #define MSM_SDC4_PHYS 0xA0600000 |
123 | #define MSM_SDC4_SIZE SZ_4K | 123 | #define MSM_SDC4_SIZE SZ_4K |
124 | 124 | ||
125 | #ifndef __ASSEMBLY__ | ||
126 | extern void msm_map_qsd8x50_io(void); | ||
127 | #endif | ||
128 | |||
125 | #endif | 129 | #endif |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h index 54e12caa8d86..5aed57dc808c 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h | |||
@@ -67,4 +67,8 @@ | |||
67 | #define MSM_DEBUG_UART_PHYS 0x19C40000 | 67 | #define MSM_DEBUG_UART_PHYS 0x19C40000 |
68 | #endif | 68 | #endif |
69 | 69 | ||
70 | #ifndef __ASSEMBLY__ | ||
71 | extern void msm_map_msm8x60_io(void); | ||
72 | #endif | ||
73 | |||
70 | #endif | 74 | #endif |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h index 90682f4599d3..00afdfb8c38f 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap.h | |||
@@ -37,12 +37,6 @@ | |||
37 | * | 37 | * |
38 | */ | 38 | */ |
39 | 39 | ||
40 | #ifdef __ASSEMBLY__ | ||
41 | #define IOMEM(x) x | ||
42 | #else | ||
43 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
44 | #endif | ||
45 | |||
46 | #if defined(CONFIG_ARCH_MSM7X30) | 40 | #if defined(CONFIG_ARCH_MSM7X30) |
47 | #include "msm_iomap-7x30.h" | 41 | #include "msm_iomap-7x30.h" |
48 | #elif defined(CONFIG_ARCH_QSD8X50) | 42 | #elif defined(CONFIG_ARCH_QSD8X50) |
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c index 578b04e42deb..a1e7b1168850 100644 --- a/arch/arm/mach-msm/io.c +++ b/arch/arm/mach-msm/io.c | |||
@@ -172,8 +172,8 @@ void __init msm_map_msm7x30_io(void) | |||
172 | } | 172 | } |
173 | #endif /* CONFIG_ARCH_MSM7X30 */ | 173 | #endif /* CONFIG_ARCH_MSM7X30 */ |
174 | 174 | ||
175 | void __iomem * | 175 | void __iomem *__msm_ioremap_caller(unsigned long phys_addr, size_t size, |
176 | __msm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | 176 | unsigned int mtype, void *caller) |
177 | { | 177 | { |
178 | if (mtype == MT_DEVICE) { | 178 | if (mtype == MT_DEVICE) { |
179 | /* The peripherals in the 88000000 - D0000000 range | 179 | /* The peripherals in the 88000000 - D0000000 range |
@@ -184,7 +184,5 @@ __msm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | |||
184 | mtype = MT_DEVICE_NONSHARED; | 184 | mtype = MT_DEVICE_NONSHARED; |
185 | } | 185 | } |
186 | 186 | ||
187 | return __arm_ioremap_caller(phys_addr, size, mtype, | 187 | return __arm_ioremap_caller(phys_addr, size, mtype, caller); |
188 | __builtin_return_address(0)); | ||
189 | } | 188 | } |
190 | EXPORT_SYMBOL(__msm_ioremap); | ||
diff --git a/arch/arm/mach-mv78xx0/include/mach/io.h b/arch/arm/mach-mv78xx0/include/mach/io.h index 450e0e1ad092..c7d9d00d8fc1 100644 --- a/arch/arm/mach-mv78xx0/include/mach/io.h +++ b/arch/arm/mach-mv78xx0/include/mach/io.h | |||
@@ -20,7 +20,5 @@ static inline void __iomem *__io(unsigned long addr) | |||
20 | } | 20 | } |
21 | 21 | ||
22 | #define __io(a) __io(a) | 22 | #define __io(a) __io(a) |
23 | #define __mem_pci(a) (a) | ||
24 | |||
25 | 23 | ||
26 | #endif | 24 | #endif |
diff --git a/arch/arm/mach-mxs/include/mach/hardware.h b/arch/arm/mach-mxs/include/mach/hardware.h index 53e89a09bf0d..4c0e8a64d8c7 100644 --- a/arch/arm/mach-mxs/include/mach/hardware.h +++ b/arch/arm/mach-mxs/include/mach/hardware.h | |||
@@ -20,10 +20,4 @@ | |||
20 | #ifndef __MACH_MXS_HARDWARE_H__ | 20 | #ifndef __MACH_MXS_HARDWARE_H__ |
21 | #define __MACH_MXS_HARDWARE_H__ | 21 | #define __MACH_MXS_HARDWARE_H__ |
22 | 22 | ||
23 | #ifdef __ASSEMBLER__ | ||
24 | #define IOMEM(addr) (addr) | ||
25 | #else | ||
26 | #define IOMEM(addr) ((void __force __iomem *)(addr)) | ||
27 | #endif | ||
28 | |||
29 | #endif /* __MACH_MXS_HARDWARE_H__ */ | 23 | #endif /* __MACH_MXS_HARDWARE_H__ */ |
diff --git a/arch/arm/mach-mxs/include/mach/io.h b/arch/arm/mach-mxs/include/mach/io.h deleted file mode 100644 index 289b7227e072..000000000000 --- a/arch/arm/mach-mxs/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +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 __MACH_MXS_IO_H__ | ||
12 | #define __MACH_MXS_IO_H__ | ||
13 | |||
14 | /* Allow IO space to be anywhere in the memory */ | ||
15 | #define IO_SPACE_LIMIT 0xffffffff | ||
16 | |||
17 | /* io address mapping macro */ | ||
18 | #define __io(a) __typesafe_io(a) | ||
19 | |||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif /* __MACH_MXS_IO_H__ */ | ||
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c index 59e67979f197..aa627465d914 100644 --- a/arch/arm/mach-netx/generic.c +++ b/arch/arm/mach-netx/generic.c | |||
@@ -168,7 +168,7 @@ void __init netx_init_irq(void) | |||
168 | { | 168 | { |
169 | int irq; | 169 | int irq; |
170 | 170 | ||
171 | vic_init(__io(io_p2v(NETX_PA_VIC)), 0, ~0, 0); | 171 | vic_init(io_p2v(NETX_PA_VIC), 0, ~0, 0); |
172 | 172 | ||
173 | for (irq = NETX_IRQ_HIF_CHAINED(0); irq <= NETX_IRQ_HIF_LAST; irq++) { | 173 | for (irq = NETX_IRQ_HIF_CHAINED(0); irq <= NETX_IRQ_HIF_LAST; irq++) { |
174 | irq_set_chip_and_handler(irq, &netx_hif_chip, | 174 | irq_set_chip_and_handler(irq, &netx_hif_chip, |
diff --git a/arch/arm/mach-netx/include/mach/hardware.h b/arch/arm/mach-netx/include/mach/hardware.h index 517a2bd37842..b661af2f2145 100644 --- a/arch/arm/mach-netx/include/mach/hardware.h +++ b/arch/arm/mach-netx/include/mach/hardware.h | |||
@@ -33,7 +33,7 @@ | |||
33 | #define XMAC_MEM_SIZE 0x1000 | 33 | #define XMAC_MEM_SIZE 0x1000 |
34 | #define SRAM_MEM_SIZE 0x8000 | 34 | #define SRAM_MEM_SIZE 0x8000 |
35 | 35 | ||
36 | #define io_p2v(x) ((x) - NETX_IO_PHYS + NETX_IO_VIRT) | 36 | #define io_p2v(x) IOMEM((x) - NETX_IO_PHYS + NETX_IO_VIRT) |
37 | #define io_v2p(x) ((x) - NETX_IO_VIRT + NETX_IO_PHYS) | 37 | #define io_v2p(x) ((x) - NETX_IO_VIRT + NETX_IO_PHYS) |
38 | 38 | ||
39 | #endif | 39 | #endif |
diff --git a/arch/arm/mach-netx/include/mach/io.h b/arch/arm/mach-netx/include/mach/io.h deleted file mode 100644 index c3921cb3b6a6..000000000000 --- a/arch/arm/mach-netx/include/mach/io.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-netx/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2005 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix | ||
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 | ||
8 | * as published by the Free Software Foundation. | ||
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 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | ||
19 | |||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define IO_SPACE_LIMIT 0xffffffff | ||
24 | |||
25 | #define __io(a) __typesafe_io(a) | ||
26 | #define __mem_pci(a) (a) | ||
27 | |||
28 | #endif | ||
diff --git a/arch/arm/mach-netx/include/mach/netx-regs.h b/arch/arm/mach-netx/include/mach/netx-regs.h index 5a03e7ccb01a..fdde22b58ac3 100644 --- a/arch/arm/mach-netx/include/mach/netx-regs.h +++ b/arch/arm/mach-netx/include/mach/netx-regs.h | |||
@@ -115,7 +115,7 @@ | |||
115 | *********************************/ | 115 | *********************************/ |
116 | 116 | ||
117 | /* Registers */ | 117 | /* Registers */ |
118 | #define NETX_SYSTEM_REG(ofs) __io(NETX_VA_SYSTEM + (ofs)) | 118 | #define NETX_SYSTEM_REG(ofs) IOMEM(NETX_VA_SYSTEM + (ofs)) |
119 | #define NETX_SYSTEM_BOO_SR NETX_SYSTEM_REG(0x00) | 119 | #define NETX_SYSTEM_BOO_SR NETX_SYSTEM_REG(0x00) |
120 | #define NETX_SYSTEM_IOC_CR NETX_SYSTEM_REG(0x04) | 120 | #define NETX_SYSTEM_IOC_CR NETX_SYSTEM_REG(0x04) |
121 | #define NETX_SYSTEM_IOC_MR NETX_SYSTEM_REG(0x08) | 121 | #define NETX_SYSTEM_IOC_MR NETX_SYSTEM_REG(0x08) |
@@ -185,7 +185,7 @@ | |||
185 | *******************************/ | 185 | *******************************/ |
186 | 186 | ||
187 | /* Registers */ | 187 | /* Registers */ |
188 | #define NETX_GPIO_REG(ofs) __io(NETX_VA_GPIO + (ofs)) | 188 | #define NETX_GPIO_REG(ofs) IOMEM(NETX_VA_GPIO + (ofs)) |
189 | #define NETX_GPIO_CFG(gpio) NETX_GPIO_REG(0x0 + ((gpio)<<2)) | 189 | #define NETX_GPIO_CFG(gpio) NETX_GPIO_REG(0x0 + ((gpio)<<2)) |
190 | #define NETX_GPIO_THRESHOLD_CAPTURE(gpio) NETX_GPIO_REG(0x40 + ((gpio)<<2)) | 190 | #define NETX_GPIO_THRESHOLD_CAPTURE(gpio) NETX_GPIO_REG(0x40 + ((gpio)<<2)) |
191 | #define NETX_GPIO_COUNTER_CTRL(counter) NETX_GPIO_REG(0x80 + ((counter)<<2)) | 191 | #define NETX_GPIO_COUNTER_CTRL(counter) NETX_GPIO_REG(0x80 + ((counter)<<2)) |
@@ -230,7 +230,7 @@ | |||
230 | *******************************/ | 230 | *******************************/ |
231 | 231 | ||
232 | /* Registers */ | 232 | /* Registers */ |
233 | #define NETX_PIO_REG(ofs) __io(NETX_VA_PIO + (ofs)) | 233 | #define NETX_PIO_REG(ofs) IOMEM(NETX_VA_PIO + (ofs)) |
234 | #define NETX_PIO_INPIO NETX_PIO_REG(0x0) | 234 | #define NETX_PIO_INPIO NETX_PIO_REG(0x0) |
235 | #define NETX_PIO_OUTPIO NETX_PIO_REG(0x4) | 235 | #define NETX_PIO_OUTPIO NETX_PIO_REG(0x4) |
236 | #define NETX_PIO_OEPIO NETX_PIO_REG(0x8) | 236 | #define NETX_PIO_OEPIO NETX_PIO_REG(0x8) |
@@ -240,7 +240,7 @@ | |||
240 | *******************************/ | 240 | *******************************/ |
241 | 241 | ||
242 | /* Registers */ | 242 | /* Registers */ |
243 | #define NETX_MIIMU __io(NETX_VA_MIIMU) | 243 | #define NETX_MIIMU IOMEM(NETX_VA_MIIMU) |
244 | 244 | ||
245 | /* Bits */ | 245 | /* Bits */ |
246 | #define MIIMU_SNRDY (1<<0) | 246 | #define MIIMU_SNRDY (1<<0) |
@@ -317,7 +317,7 @@ | |||
317 | *******************************/ | 317 | *******************************/ |
318 | 318 | ||
319 | /* Registers */ | 319 | /* Registers */ |
320 | #define NETX_PFIFO_REG(ofs) __io(NETX_VA_PFIFO + (ofs)) | 320 | #define NETX_PFIFO_REG(ofs) IOMEM(NETX_VA_PFIFO + (ofs)) |
321 | #define NETX_PFIFO_BASE(pfifo) NETX_PFIFO_REG(0x00 + ((pfifo)<<2)) | 321 | #define NETX_PFIFO_BASE(pfifo) NETX_PFIFO_REG(0x00 + ((pfifo)<<2)) |
322 | #define NETX_PFIFO_BORDER_BASE(pfifo) NETX_PFIFO_REG(0x80 + ((pfifo)<<2)) | 322 | #define NETX_PFIFO_BORDER_BASE(pfifo) NETX_PFIFO_REG(0x80 + ((pfifo)<<2)) |
323 | #define NETX_PFIFO_RESET NETX_PFIFO_REG(0x100) | 323 | #define NETX_PFIFO_RESET NETX_PFIFO_REG(0x100) |
@@ -334,7 +334,7 @@ | |||
334 | *******************************/ | 334 | *******************************/ |
335 | 335 | ||
336 | /* Registers */ | 336 | /* Registers */ |
337 | #define NETX_MEMCR_REG(ofs) __io(NETX_VA_MEMCR + (ofs)) | 337 | #define NETX_MEMCR_REG(ofs) IOMEM(NETX_VA_MEMCR + (ofs)) |
338 | #define NETX_MEMCR_SRAM_CTRL(cs) NETX_MEMCR_REG(0x0 + 4 * (cs)) /* SRAM for CS 0..2 */ | 338 | #define NETX_MEMCR_SRAM_CTRL(cs) NETX_MEMCR_REG(0x0 + 4 * (cs)) /* SRAM for CS 0..2 */ |
339 | #define NETX_MEMCR_SDRAM_CFG_CTRL NETX_MEMCR_REG(0x40) | 339 | #define NETX_MEMCR_SDRAM_CFG_CTRL NETX_MEMCR_REG(0x40) |
340 | #define NETX_MEMCR_SDRAM_TIMING_CTRL NETX_MEMCR_REG(0x44) | 340 | #define NETX_MEMCR_SDRAM_TIMING_CTRL NETX_MEMCR_REG(0x44) |
@@ -355,7 +355,7 @@ | |||
355 | *******************************/ | 355 | *******************************/ |
356 | 356 | ||
357 | /* Registers */ | 357 | /* Registers */ |
358 | #define NETX_DPMAS_REG(ofs) __io(NETX_VA_DPMAS + (ofs)) | 358 | #define NETX_DPMAS_REG(ofs) IOMEM(NETX_VA_DPMAS + (ofs)) |
359 | #define NETX_DPMAS_SYS_STAT NETX_DPMAS_REG(0x4d8) | 359 | #define NETX_DPMAS_SYS_STAT NETX_DPMAS_REG(0x4d8) |
360 | #define NETX_DPMAS_INT_STAT NETX_DPMAS_REG(0x4e0) | 360 | #define NETX_DPMAS_INT_STAT NETX_DPMAS_REG(0x4e0) |
361 | #define NETX_DPMAS_INT_EN NETX_DPMAS_REG(0x4f0) | 361 | #define NETX_DPMAS_INT_EN NETX_DPMAS_REG(0x4f0) |
@@ -425,7 +425,7 @@ | |||
425 | /******************************* | 425 | /******************************* |
426 | * I2C * | 426 | * I2C * |
427 | *******************************/ | 427 | *******************************/ |
428 | #define NETX_I2C_REG(ofs) __io(NETX_VA_I2C, (ofs)) | 428 | #define NETX_I2C_REG(ofs) IOMEM(NETX_VA_I2C, (ofs)) |
429 | #define NETX_I2C_CTRL NETX_I2C_REG(0x0) | 429 | #define NETX_I2C_CTRL NETX_I2C_REG(0x0) |
430 | #define NETX_I2C_DATA NETX_I2C_REG(0x4) | 430 | #define NETX_I2C_DATA NETX_I2C_REG(0x4) |
431 | 431 | ||
diff --git a/arch/arm/mach-nomadik/include/mach/io.h b/arch/arm/mach-nomadik/include/mach/io.h deleted file mode 100644 index 2e1eca1b8243..000000000000 --- a/arch/arm/mach-nomadik/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-nomadik/include/mach/io.h (copied from mach-sa1100) | ||
3 | * | ||
4 | * Copyright (C) 1997-1999 Russell King | ||
5 | * | ||
6 | * Modifications: | ||
7 | * 06-12-1997 RMK Created. | ||
8 | * 07-04-1999 RMK Major cleanup | ||
9 | */ | ||
10 | #ifndef __ASM_ARM_ARCH_IO_H | ||
11 | #define __ASM_ARM_ARCH_IO_H | ||
12 | |||
13 | #define IO_SPACE_LIMIT 0xffffffff | ||
14 | |||
15 | /* | ||
16 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
17 | * drivers out there that might just work if we fake them... | ||
18 | */ | ||
19 | #define __io(a) __typesafe_io(a) | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif | ||
diff --git a/arch/arm/mach-omap1/ams-delta-fiq-handler.S b/arch/arm/mach-omap1/ams-delta-fiq-handler.S index c1c5fb6a5b4c..a051cb8ae57f 100644 --- a/arch/arm/mach-omap1/ams-delta-fiq-handler.S +++ b/arch/arm/mach-omap1/ams-delta-fiq-handler.S | |||
@@ -14,12 +14,14 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
17 | #include <asm/assembler.h> | ||
17 | 18 | ||
18 | #include <plat/io.h> | ||
19 | #include <plat/board-ams-delta.h> | 19 | #include <plat/board-ams-delta.h> |
20 | 20 | ||
21 | #include <mach/ams-delta-fiq.h> | 21 | #include <mach/ams-delta-fiq.h> |
22 | 22 | ||
23 | #include "iomap.h" | ||
24 | |||
23 | /* | 25 | /* |
24 | * GPIO related definitions, copied from arch/arm/plat-omap/gpio.c. | 26 | * GPIO related definitions, copied from arch/arm/plat-omap/gpio.c. |
25 | * Unfortunately, those were not placed in a separate header file. | 27 | * Unfortunately, those were not placed in a separate header file. |
diff --git a/arch/arm/mach-omap1/ams-delta-fiq.c b/arch/arm/mach-omap1/ams-delta-fiq.c index 152b32c15e28..fcce7ff37630 100644 --- a/arch/arm/mach-omap1/ams-delta-fiq.c +++ b/arch/arm/mach-omap1/ams-delta-fiq.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <plat/board-ams-delta.h> | 22 | #include <plat/board-ams-delta.h> |
23 | 23 | ||
24 | #include <asm/fiq.h> | 24 | #include <asm/fiq.h> |
25 | |||
25 | #include <mach/ams-delta-fiq.h> | 26 | #include <mach/ams-delta-fiq.h> |
26 | 27 | ||
27 | static struct fiq_handler fh = { | 28 | static struct fiq_handler fh = { |
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 88909cc0b254..ac65d7d7c7a1 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -20,25 +20,27 @@ | |||
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/serial_8250.h> | 21 | #include <linux/serial_8250.h> |
22 | #include <linux/export.h> | 22 | #include <linux/export.h> |
23 | #include <linux/io.h> | ||
23 | 24 | ||
24 | #include <media/soc_camera.h> | 25 | #include <media/soc_camera.h> |
25 | 26 | ||
26 | #include <asm/serial.h> | 27 | #include <asm/serial.h> |
27 | #include <mach/hardware.h> | ||
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
31 | 31 | ||
32 | #include <plat/io.h> | ||
33 | #include <plat/board-ams-delta.h> | 32 | #include <plat/board-ams-delta.h> |
34 | #include <plat/keypad.h> | 33 | #include <plat/keypad.h> |
35 | #include <plat/mux.h> | 34 | #include <plat/mux.h> |
36 | #include <plat/usb.h> | 35 | #include <plat/usb.h> |
37 | #include <plat/board.h> | 36 | #include <plat/board.h> |
38 | #include "common.h" | ||
39 | #include <mach/camera.h> | ||
40 | 37 | ||
38 | #include <mach/hardware.h> | ||
41 | #include <mach/ams-delta-fiq.h> | 39 | #include <mach/ams-delta-fiq.h> |
40 | #include <mach/camera.h> | ||
41 | |||
42 | #include "iomap.h" | ||
43 | #include "common.h" | ||
42 | 44 | ||
43 | static u8 ams_delta_latch1_reg; | 45 | static u8 ams_delta_latch1_reg; |
44 | static u16 ams_delta_latch2_reg; | 46 | static u16 ams_delta_latch2_reg; |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 0b9464b41212..079292cca584 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/input.h> | 22 | #include <linux/input.h> |
23 | #include <linux/smc91x.h> | 23 | #include <linux/smc91x.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
27 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
@@ -32,9 +31,13 @@ | |||
32 | #include <plat/flash.h> | 31 | #include <plat/flash.h> |
33 | #include <plat/fpga.h> | 32 | #include <plat/fpga.h> |
34 | #include <plat/keypad.h> | 33 | #include <plat/keypad.h> |
35 | #include "common.h" | ||
36 | #include <plat/board.h> | 34 | #include <plat/board.h> |
37 | 35 | ||
36 | #include <mach/hardware.h> | ||
37 | |||
38 | #include "iomap.h" | ||
39 | #include "common.h" | ||
40 | |||
38 | /* fsample is pretty close to p2-sample */ | 41 | /* fsample is pretty close to p2-sample */ |
39 | 42 | ||
40 | #define fsample_cpld_read(reg) __raw_readb(reg) | 43 | #define fsample_cpld_read(reg) __raw_readb(reg) |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 00ad6b22d60a..03e0050a8961 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -31,8 +31,6 @@ | |||
31 | #include <linux/i2c/tps65010.h> | 31 | #include <linux/i2c/tps65010.h> |
32 | #include <linux/smc91x.h> | 32 | #include <linux/smc91x.h> |
33 | 33 | ||
34 | #include <mach/hardware.h> | ||
35 | |||
36 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
38 | #include <asm/mach/map.h> | 36 | #include <asm/mach/map.h> |
@@ -43,9 +41,11 @@ | |||
43 | #include <plat/irda.h> | 41 | #include <plat/irda.h> |
44 | #include <plat/usb.h> | 42 | #include <plat/usb.h> |
45 | #include <plat/keypad.h> | 43 | #include <plat/keypad.h> |
46 | #include "common.h" | ||
47 | #include <plat/flash.h> | 44 | #include <plat/flash.h> |
48 | 45 | ||
46 | #include <mach/hardware.h> | ||
47 | |||
48 | #include "common.h" | ||
49 | #include "board-h2.h" | 49 | #include "board-h2.h" |
50 | 50 | ||
51 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | 51 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 4a7f25149703..f304fe211b1a 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -33,21 +33,21 @@ | |||
33 | 33 | ||
34 | #include <asm/setup.h> | 34 | #include <asm/setup.h> |
35 | #include <asm/page.h> | 35 | #include <asm/page.h> |
36 | #include <mach/hardware.h> | ||
37 | |||
38 | #include <asm/mach-types.h> | 36 | #include <asm/mach-types.h> |
39 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
41 | 39 | ||
42 | #include <mach/irqs.h> | ||
43 | #include <plat/mux.h> | 40 | #include <plat/mux.h> |
44 | #include <plat/tc.h> | 41 | #include <plat/tc.h> |
45 | #include <plat/usb.h> | 42 | #include <plat/usb.h> |
46 | #include <plat/keypad.h> | 43 | #include <plat/keypad.h> |
47 | #include <plat/dma.h> | 44 | #include <plat/dma.h> |
48 | #include "common.h" | ||
49 | #include <plat/flash.h> | 45 | #include <plat/flash.h> |
50 | 46 | ||
47 | #include <mach/hardware.h> | ||
48 | #include <mach/irqs.h> | ||
49 | |||
50 | #include "common.h" | ||
51 | #include "board-h3.h" | 51 | #include "board-h3.h" |
52 | 52 | ||
53 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ | 53 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 731cc3db7ab3..fa52d145d7b6 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
28 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
29 | #include <linux/input.h> | 29 | #include <linux/input.h> |
30 | #include <linux/io.h> | 30 | #include <linux/delay.h> |
31 | #include <linux/gpio.h> | 31 | #include <linux/gpio.h> |
32 | #include <linux/gpio_keys.h> | 32 | #include <linux/gpio_keys.h> |
33 | #include <linux/i2c.h> | 33 | #include <linux/i2c.h> |
@@ -41,7 +41,6 @@ | |||
41 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
42 | 42 | ||
43 | #include <plat/omap7xx.h> | 43 | #include <plat/omap7xx.h> |
44 | #include "common.h" | ||
45 | #include <plat/board.h> | 44 | #include <plat/board.h> |
46 | #include <plat/keypad.h> | 45 | #include <plat/keypad.h> |
47 | #include <plat/usb.h> | 46 | #include <plat/usb.h> |
@@ -49,7 +48,7 @@ | |||
49 | 48 | ||
50 | #include <mach/irqs.h> | 49 | #include <mach/irqs.h> |
51 | 50 | ||
52 | #include <linux/delay.h> | 51 | #include "common.h" |
53 | 52 | ||
54 | /* LCD register definition */ | 53 | /* LCD register definition */ |
55 | #define OMAP_LCDC_CONTROL (0xfffec000 + 0x00) | 54 | #define OMAP_LCDC_CONTROL (0xfffec000 + 0x00) |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 309369ea6978..289a6b82c5f7 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/input.h> | 26 | #include <linux/input.h> |
27 | #include <linux/smc91x.h> | 27 | #include <linux/smc91x.h> |
28 | 28 | ||
29 | #include <mach/hardware.h> | ||
30 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
31 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
@@ -37,9 +36,13 @@ | |||
37 | #include <plat/tc.h> | 36 | #include <plat/tc.h> |
38 | #include <plat/usb.h> | 37 | #include <plat/usb.h> |
39 | #include <plat/keypad.h> | 38 | #include <plat/keypad.h> |
40 | #include "common.h" | ||
41 | #include <plat/mmc.h> | 39 | #include <plat/mmc.h> |
42 | 40 | ||
41 | #include <mach/hardware.h> | ||
42 | |||
43 | #include "iomap.h" | ||
44 | #include "common.h" | ||
45 | |||
43 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | 46 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ |
44 | #define INNOVATOR1610_ETHR_START 0x04000300 | 47 | #define INNOVATOR1610_ETHR_START 0x04000300 |
45 | 48 | ||
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index f9efc036ba96..abdbdb08644f 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/workqueue.h> | 21 | #include <linux/workqueue.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.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/map.h> | 26 | #include <asm/mach/map.h> |
@@ -30,12 +29,15 @@ | |||
30 | #include <plat/usb.h> | 29 | #include <plat/usb.h> |
31 | #include <plat/board.h> | 30 | #include <plat/board.h> |
32 | #include <plat/keypad.h> | 31 | #include <plat/keypad.h> |
33 | #include "common.h" | ||
34 | #include <plat/hwa742.h> | 32 | #include <plat/hwa742.h> |
35 | #include <plat/lcd_mipid.h> | 33 | #include <plat/lcd_mipid.h> |
36 | #include <plat/mmc.h> | 34 | #include <plat/mmc.h> |
37 | #include <plat/clock.h> | 35 | #include <plat/clock.h> |
38 | 36 | ||
37 | #include <mach/hardware.h> | ||
38 | |||
39 | #include "common.h" | ||
40 | |||
39 | #define ADS7846_PENDOWN_GPIO 15 | 41 | #define ADS7846_PENDOWN_GPIO 15 |
40 | 42 | ||
41 | static const unsigned int nokia770_keymap[] = { | 43 | static const unsigned int nokia770_keymap[] = { |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 675de06557aa..e2d7ae4418f2 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -34,15 +34,11 @@ | |||
34 | #include <linux/i2c.h> | 34 | #include <linux/i2c.h> |
35 | #include <linux/leds.h> | 35 | #include <linux/leds.h> |
36 | #include <linux/smc91x.h> | 36 | #include <linux/smc91x.h> |
37 | |||
38 | #include <linux/mtd/mtd.h> | 37 | #include <linux/mtd/mtd.h> |
39 | #include <linux/mtd/partitions.h> | 38 | #include <linux/mtd/partitions.h> |
40 | #include <linux/mtd/physmap.h> | 39 | #include <linux/mtd/physmap.h> |
41 | |||
42 | #include <linux/i2c/tps65010.h> | 40 | #include <linux/i2c/tps65010.h> |
43 | 41 | ||
44 | #include <mach/hardware.h> | ||
45 | |||
46 | #include <asm/mach-types.h> | 42 | #include <asm/mach-types.h> |
47 | #include <asm/mach/arch.h> | 43 | #include <asm/mach/arch.h> |
48 | #include <asm/mach/map.h> | 44 | #include <asm/mach/map.h> |
@@ -51,6 +47,9 @@ | |||
51 | #include <plat/usb.h> | 47 | #include <plat/usb.h> |
52 | #include <plat/mux.h> | 48 | #include <plat/mux.h> |
53 | #include <plat/tc.h> | 49 | #include <plat/tc.h> |
50 | |||
51 | #include <mach/hardware.h> | ||
52 | |||
54 | #include "common.h" | 53 | #include "common.h" |
55 | 54 | ||
56 | /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ | 55 | /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 81fa27f88369..04efa7e61149 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/interrupt.h> | 28 | #include <linux/interrupt.h> |
29 | #include <linux/apm-emulation.h> | 29 | #include <linux/apm-emulation.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> |
@@ -41,6 +40,9 @@ | |||
41 | #include <plat/board.h> | 40 | #include <plat/board.h> |
42 | #include <plat/irda.h> | 41 | #include <plat/irda.h> |
43 | #include <plat/keypad.h> | 42 | #include <plat/keypad.h> |
43 | |||
44 | #include <mach/hardware.h> | ||
45 | |||
44 | #include "common.h" | 46 | #include "common.h" |
45 | 47 | ||
46 | #define PALMTE_USBDETECT_GPIO 0 | 48 | #define PALMTE_USBDETECT_GPIO 0 |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 81cb82178388..acd1f3645ba0 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -24,8 +24,9 @@ | |||
24 | #include <linux/mtd/partitions.h> | 24 | #include <linux/mtd/partitions.h> |
25 | #include <linux/mtd/physmap.h> | 25 | #include <linux/mtd/physmap.h> |
26 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
27 | #include <linux/spi/spi.h> | ||
28 | #include <linux/spi/ads7846.h> | ||
27 | 29 | ||
28 | #include <mach/hardware.h> | ||
29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
30 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
@@ -39,10 +40,10 @@ | |||
39 | #include <plat/board.h> | 40 | #include <plat/board.h> |
40 | #include <plat/irda.h> | 41 | #include <plat/irda.h> |
41 | #include <plat/keypad.h> | 42 | #include <plat/keypad.h> |
42 | #include "common.h" | ||
43 | 43 | ||
44 | #include <linux/spi/spi.h> | 44 | #include <mach/hardware.h> |
45 | #include <linux/spi/ads7846.h> | 45 | |
46 | #include "common.h" | ||
46 | 47 | ||
47 | #define PALMTT_USBDETECT_GPIO 0 | 48 | #define PALMTT_USBDETECT_GPIO 0 |
48 | #define PALMTT_CABLE_GPIO 1 | 49 | #define PALMTT_CABLE_GPIO 1 |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index e881945ce8ec..c1cd0f2d6866 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -27,8 +27,9 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/physmap.h> | 29 | #include <linux/mtd/physmap.h> |
30 | #include <linux/spi/spi.h> | ||
31 | #include <linux/spi/ads7846.h> | ||
30 | 32 | ||
31 | #include <mach/hardware.h> | ||
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/map.h> | 35 | #include <asm/mach/map.h> |
@@ -41,10 +42,10 @@ | |||
41 | #include <plat/board.h> | 42 | #include <plat/board.h> |
42 | #include <plat/irda.h> | 43 | #include <plat/irda.h> |
43 | #include <plat/keypad.h> | 44 | #include <plat/keypad.h> |
44 | #include "common.h" | ||
45 | 45 | ||
46 | #include <linux/spi/spi.h> | 46 | #include <mach/hardware.h> |
47 | #include <linux/spi/ads7846.h> | 47 | |
48 | #include "common.h" | ||
48 | 49 | ||
49 | #define PALMZ71_USBDETECT_GPIO 0 | 50 | #define PALMZ71_USBDETECT_GPIO 0 |
50 | #define PALMZ71_PENIRQ_GPIO 6 | 51 | #define PALMZ71_PENIRQ_GPIO 6 |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index c000bed76276..83f5b765c5b6 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/input.h> | 22 | #include <linux/input.h> |
23 | #include <linux/smc91x.h> | 23 | #include <linux/smc91x.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
27 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
@@ -32,9 +31,13 @@ | |||
32 | #include <plat/fpga.h> | 31 | #include <plat/fpga.h> |
33 | #include <plat/flash.h> | 32 | #include <plat/flash.h> |
34 | #include <plat/keypad.h> | 33 | #include <plat/keypad.h> |
35 | #include "common.h" | ||
36 | #include <plat/board.h> | 34 | #include <plat/board.h> |
37 | 35 | ||
36 | #include <mach/hardware.h> | ||
37 | |||
38 | #include "iomap.h" | ||
39 | #include "common.h" | ||
40 | |||
38 | static const unsigned int p2_keymap[] = { | 41 | static const unsigned int p2_keymap[] = { |
39 | KEY(0, 0, KEY_UP), | 42 | KEY(0, 0, KEY_UP), |
40 | KEY(1, 0, KEY_RIGHT), | 43 | KEY(1, 0, KEY_RIGHT), |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 7bcd82ab0fd0..fed4435f5d43 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/errno.h> | 28 | #include <linux/errno.h> |
29 | #include <linux/export.h> | 29 | #include <linux/export.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> |
@@ -40,10 +39,13 @@ | |||
40 | #include <plat/usb.h> | 39 | #include <plat/usb.h> |
41 | #include <plat/tc.h> | 40 | #include <plat/tc.h> |
42 | #include <plat/board.h> | 41 | #include <plat/board.h> |
43 | #include "common.h" | ||
44 | #include <plat/keypad.h> | 42 | #include <plat/keypad.h> |
45 | #include <plat/board-sx1.h> | 43 | #include <plat/board-sx1.h> |
46 | 44 | ||
45 | #include <mach/hardware.h> | ||
46 | |||
47 | #include "common.h" | ||
48 | |||
47 | /* Write to I2C device */ | 49 | /* Write to I2C device */ |
48 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) | 50 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) |
49 | { | 51 | { |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index f83a502dc93c..659d0f75de2c 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -27,18 +27,20 @@ | |||
27 | #include <linux/smc91x.h> | 27 | #include <linux/smc91x.h> |
28 | #include <linux/export.h> | 28 | #include <linux/export.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | ||
31 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
32 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
34 | 33 | ||
35 | #include <plat/board-voiceblue.h> | 34 | #include <plat/board-voiceblue.h> |
36 | #include "common.h" | ||
37 | #include <plat/flash.h> | 35 | #include <plat/flash.h> |
38 | #include <plat/mux.h> | 36 | #include <plat/mux.h> |
39 | #include <plat/tc.h> | 37 | #include <plat/tc.h> |
40 | #include <plat/usb.h> | 38 | #include <plat/usb.h> |
41 | 39 | ||
40 | #include <mach/hardware.h> | ||
41 | |||
42 | #include "common.h" | ||
43 | |||
42 | static struct plat_serial8250_port voiceblue_ports[] = { | 44 | static struct plat_serial8250_port voiceblue_ports[] = { |
43 | { | 45 | { |
44 | .mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x40000), | 46 | .mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x40000), |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 0c50df05d135..67382ddd8c83 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c | |||
@@ -15,8 +15,8 @@ | |||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/clk.h> | ||
19 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/clk.h> | ||
20 | #include <linux/clkdev.h> | 20 | #include <linux/clkdev.h> |
21 | 21 | ||
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
@@ -27,6 +27,9 @@ | |||
27 | #include <plat/sram.h> | 27 | #include <plat/sram.h> |
28 | #include <plat/clkdev_omap.h> | 28 | #include <plat/clkdev_omap.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | ||
31 | |||
32 | #include "iomap.h" | ||
30 | #include "clock.h" | 33 | #include "clock.h" |
31 | #include "opp.h" | 34 | #include "opp.h" |
32 | 35 | ||
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c index 94699a82a734..c6ce93f71d08 100644 --- a/arch/arm/mach-omap1/clock_data.c +++ b/arch/arm/mach-omap1/clock_data.c | |||
@@ -15,10 +15,10 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/io.h> | ||
18 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
19 | #include <linux/cpufreq.h> | 20 | #include <linux/cpufreq.h> |
20 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
21 | #include <linux/io.h> | ||
22 | 22 | ||
23 | #include <asm/mach-types.h> /* for machine_is_* */ | 23 | #include <asm/mach-types.h> /* for machine_is_* */ |
24 | 24 | ||
@@ -28,6 +28,9 @@ | |||
28 | #include <plat/sram.h> /* for omap_sram_reprogram_clock() */ | 28 | #include <plat/sram.h> /* for omap_sram_reprogram_clock() */ |
29 | #include <plat/usb.h> /* for OTG_BASE */ | 29 | #include <plat/usb.h> /* for OTG_BASE */ |
30 | 30 | ||
31 | #include <mach/hardware.h> | ||
32 | |||
33 | #include "iomap.h" | ||
31 | #include "clock.h" | 34 | #include "clock.h" |
32 | 35 | ||
33 | /* Some ARM_IDLECT1 bit shifts - used in struct arm_idlect1_clk */ | 36 | /* Some ARM_IDLECT1 bit shifts - used in struct arm_idlect1_clk */ |
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index a9a5146dd2d4..af658ad338ec 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -58,5 +58,6 @@ void omap1_restart(char, const char *); | |||
58 | 58 | ||
59 | extern struct sys_timer omap1_timer; | 59 | extern struct sys_timer omap1_timer; |
60 | extern bool omap_32k_timer_init(void); | 60 | extern bool omap_32k_timer_init(void); |
61 | extern void __init omap_init_consistent_dma_size(void); | ||
61 | 62 | ||
62 | #endif /* __ARCH_ARM_MACH_OMAP1_COMMON_H */ | 63 | #endif /* __ARCH_ARM_MACH_OMAP1_COMMON_H */ |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 1d76a63c0983..d06c7140392c 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -15,14 +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/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/io.h> | ||
19 | #include <linux/spi/spi.h> | 18 | #include <linux/spi/spi.h> |
20 | 19 | ||
21 | #include <mach/camera.h> | ||
22 | #include <mach/hardware.h> | ||
23 | #include <asm/mach/map.h> | 20 | #include <asm/mach/map.h> |
24 | 21 | ||
25 | #include "common.h" | ||
26 | #include <plat/tc.h> | 22 | #include <plat/tc.h> |
27 | #include <plat/board.h> | 23 | #include <plat/board.h> |
28 | #include <plat/mux.h> | 24 | #include <plat/mux.h> |
@@ -30,6 +26,10 @@ | |||
30 | #include <plat/omap7xx.h> | 26 | #include <plat/omap7xx.h> |
31 | #include <plat/mcbsp.h> | 27 | #include <plat/mcbsp.h> |
32 | 28 | ||
29 | #include <mach/camera.h> | ||
30 | #include <mach/hardware.h> | ||
31 | |||
32 | #include "common.h" | ||
33 | #include "clock.h" | 33 | #include "clock.h" |
34 | 34 | ||
35 | /*-------------------------------------------------------------------------*/ | 35 | /*-------------------------------------------------------------------------*/ |
diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index f5a52204b89f..3ef7d52316b4 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c | |||
@@ -19,11 +19,11 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/io.h> | ||
23 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
24 | #include <linux/module.h> | 23 | #include <linux/module.h> |
25 | #include <linux/init.h> | 24 | #include <linux/init.h> |
26 | #include <linux/device.h> | 25 | #include <linux/device.h> |
26 | #include <linux/io.h> | ||
27 | 27 | ||
28 | #include <plat/dma.h> | 28 | #include <plat/dma.h> |
29 | #include <plat/tc.h> | 29 | #include <plat/tc.h> |
diff --git a/arch/arm/mach-omap1/flash.c b/arch/arm/mach-omap1/flash.c index 1749cb37dda0..f9bf78d4fdfb 100644 --- a/arch/arm/mach-omap1/flash.c +++ b/arch/arm/mach-omap1/flash.c | |||
@@ -6,13 +6,15 @@ | |||
6 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/io.h> | ||
9 | #include <linux/mtd/mtd.h> | 10 | #include <linux/mtd/mtd.h> |
10 | #include <linux/mtd/map.h> | 11 | #include <linux/mtd/map.h> |
11 | 12 | ||
12 | #include <plat/io.h> | ||
13 | #include <plat/tc.h> | 13 | #include <plat/tc.h> |
14 | #include <plat/flash.h> | 14 | #include <plat/flash.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | ||
17 | |||
16 | void omap1_set_vpp(struct platform_device *pdev, int enable) | 18 | void omap1_set_vpp(struct platform_device *pdev, int enable) |
17 | { | 19 | { |
18 | static int count; | 20 | static int count; |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index 0a17a1a7e00d..76c67b3f9f61 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -24,12 +24,15 @@ | |||
24 | #include <linux/errno.h> | 24 | #include <linux/errno.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | 26 | ||
27 | #include <mach/hardware.h> | ||
28 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
29 | #include <asm/mach/irq.h> | 28 | #include <asm/mach/irq.h> |
30 | 29 | ||
31 | #include <plat/fpga.h> | 30 | #include <plat/fpga.h> |
32 | 31 | ||
32 | #include <mach/hardware.h> | ||
33 | |||
34 | #include "iomap.h" | ||
35 | |||
33 | static void fpga_mask_irq(struct irq_data *d) | 36 | static void fpga_mask_irq(struct irq_data *d) |
34 | { | 37 | { |
35 | unsigned int irq = d->irq - OMAP_FPGA_IRQ_BASE; | 38 | unsigned int irq = d->irq - OMAP_FPGA_IRQ_BASE; |
diff --git a/arch/arm/mach-omap1/gpio16xx.c b/arch/arm/mach-omap1/gpio16xx.c index 0f399bd0e70e..99cabc498ab5 100644 --- a/arch/arm/mach-omap1/gpio16xx.c +++ b/arch/arm/mach-omap1/gpio16xx.c | |||
@@ -218,6 +218,13 @@ static int __init omap16xx_gpio_init(void) | |||
218 | if (!cpu_is_omap16xx()) | 218 | if (!cpu_is_omap16xx()) |
219 | return -EINVAL; | 219 | return -EINVAL; |
220 | 220 | ||
221 | /* | ||
222 | * Enable system clock for GPIO module. | ||
223 | * The CAM_CLK_CTRL *is* really the right place. | ||
224 | */ | ||
225 | omap_writel(omap_readl(ULPD_CAM_CLK_CTRL) | 0x04, | ||
226 | ULPD_CAM_CLK_CTRL); | ||
227 | |||
221 | for (i = 0; i < ARRAY_SIZE(omap16xx_gpio_dev); i++) | 228 | for (i = 0; i < ARRAY_SIZE(omap16xx_gpio_dev); i++) |
222 | platform_device_register(omap16xx_gpio_dev[i]); | 229 | platform_device_register(omap16xx_gpio_dev[i]); |
223 | 230 | ||
diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c index a0e3560b39db..f24c1e2c5044 100644 --- a/arch/arm/mach-omap1/id.c +++ b/arch/arm/mach-omap1/id.c | |||
@@ -15,8 +15,11 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | |||
18 | #include <plat/cpu.h> | 19 | #include <plat/cpu.h> |
19 | 20 | ||
21 | #include <mach/hardware.h> | ||
22 | |||
20 | #define OMAP_DIE_ID_0 0xfffe1800 | 23 | #define OMAP_DIE_ID_0 0xfffe1800 |
21 | #define OMAP_DIE_ID_1 0xfffe1804 | 24 | #define OMAP_DIE_ID_1 0xfffe1804 |
22 | #define OMAP_PRODUCTION_ID_0 0xfffe2000 | 25 | #define OMAP_PRODUCTION_ID_0 0xfffe2000 |
diff --git a/arch/arm/mach-omap1/include/mach/entry-macro.S b/arch/arm/mach-omap1/include/mach/entry-macro.S index 83c0250c530a..88f08cab1717 100644 --- a/arch/arm/mach-omap1/include/mach/entry-macro.S +++ b/arch/arm/mach-omap1/include/mach/entry-macro.S | |||
@@ -9,10 +9,11 @@ | |||
9 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
10 | * warranty of any kind, whether express or implied. | 10 | * warranty of any kind, whether express or implied. |
11 | */ | 11 | */ |
12 | |||
12 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
13 | #include <mach/io.h> | ||
14 | #include <mach/irqs.h> | 14 | #include <mach/irqs.h> |
15 | #include <asm/hardware/gic.h> | 15 | |
16 | #include "../../iomap.h" | ||
16 | 17 | ||
17 | .macro get_irqnr_preamble, base, tmp | 18 | .macro get_irqnr_preamble, base, tmp |
18 | .endm | 19 | .endm |
diff --git a/arch/arm/mach-omap1/include/mach/hardware.h b/arch/arm/mach-omap1/include/mach/hardware.h index a3f6287b2007..01e35fa106b8 100644 --- a/arch/arm/mach-omap1/include/mach/hardware.h +++ b/arch/arm/mach-omap1/include/mach/hardware.h | |||
@@ -2,4 +2,40 @@ | |||
2 | * arch/arm/mach-omap1/include/mach/hardware.h | 2 | * arch/arm/mach-omap1/include/mach/hardware.h |
3 | */ | 3 | */ |
4 | 4 | ||
5 | #ifndef __MACH_HARDWARE_H | ||
6 | #define __MACH_HARDWARE_H | ||
7 | |||
8 | #ifndef __ASSEMBLER__ | ||
9 | /* | ||
10 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | ||
11 | */ | ||
12 | extern u8 omap_readb(u32 pa); | ||
13 | extern u16 omap_readw(u32 pa); | ||
14 | extern u32 omap_readl(u32 pa); | ||
15 | extern void omap_writeb(u8 v, u32 pa); | ||
16 | extern void omap_writew(u16 v, u32 pa); | ||
17 | extern void omap_writel(u32 v, u32 pa); | ||
18 | |||
19 | #include <plat/tc.h> | ||
20 | |||
21 | /* Almost all documentation for chip and board memory maps assumes | ||
22 | * BM is clear. Most devel boards have a switch to control booting | ||
23 | * from NOR flash (using external chipselect 3) rather than mask ROM, | ||
24 | * which uses BM to interchange the physical CS0 and CS3 addresses. | ||
25 | */ | ||
26 | static inline u32 omap_cs0m_phys(void) | ||
27 | { | ||
28 | return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) | ||
29 | ? OMAP_CS3_PHYS : 0; | ||
30 | } | ||
31 | |||
32 | static inline u32 omap_cs3_phys(void) | ||
33 | { | ||
34 | return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) | ||
35 | ? 0 : OMAP_CS3_PHYS; | ||
36 | } | ||
37 | |||
38 | #endif | ||
39 | #endif | ||
40 | |||
5 | #include <plat/hardware.h> | 41 | #include <plat/hardware.h> |
diff --git a/arch/arm/mach-omap1/include/mach/io.h b/arch/arm/mach-omap1/include/mach/io.h deleted file mode 100644 index 57bdf74a3e64..000000000000 --- a/arch/arm/mach-omap1/include/mach/io.h +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap1/include/mach/io.h | ||
3 | */ | ||
4 | |||
5 | #include <plat/io.h> | ||
diff --git a/arch/arm/mach-omap1/include/mach/memory.h b/arch/arm/mach-omap1/include/mach/memory.h index c6337645ba8a..901082def9bd 100644 --- a/arch/arm/mach-omap1/include/mach/memory.h +++ b/arch/arm/mach-omap1/include/mach/memory.h | |||
@@ -18,7 +18,8 @@ | |||
18 | * Note that the is_lbus_device() test is not very efficient on 1510 | 18 | * Note that the is_lbus_device() test is not very efficient on 1510 |
19 | * because of the strncmp(). | 19 | * because of the strncmp(). |
20 | */ | 20 | */ |
21 | #ifdef CONFIG_ARCH_OMAP15XX | 21 | #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) |
22 | #include <plat/cpu.h> | ||
22 | 23 | ||
23 | /* | 24 | /* |
24 | * OMAP-1510 Local Bus address offset | 25 | * OMAP-1510 Local Bus address offset |
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 8e55b6fb3478..56fb444a5f11 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -15,9 +15,12 @@ | |||
15 | 15 | ||
16 | #include <asm/tlb.h> | 16 | #include <asm/tlb.h> |
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | |||
18 | #include <plat/mux.h> | 19 | #include <plat/mux.h> |
19 | #include <plat/tc.h> | 20 | #include <plat/tc.h> |
20 | 21 | ||
22 | #include "iomap.h" | ||
23 | #include "common.h" | ||
21 | #include "clock.h" | 24 | #include "clock.h" |
22 | 25 | ||
23 | extern void omap_check_revision(void); | 26 | extern void omap_check_revision(void); |
diff --git a/arch/arm/mach-omap1/iomap.h b/arch/arm/mach-omap1/iomap.h new file mode 100644 index 000000000000..330c4716b028 --- /dev/null +++ b/arch/arm/mach-omap1/iomap.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * IO mappings for OMAP1 | ||
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 | #define OMAP1_IO_OFFSET 0x01000000 /* Virtual IO = 0xfefb0000 */ | ||
26 | #define OMAP1_IO_ADDRESS(pa) IOMEM((pa) - OMAP1_IO_OFFSET) | ||
27 | |||
28 | /* | ||
29 | * ---------------------------------------------------------------------------- | ||
30 | * Omap1 specific IO mapping | ||
31 | * ---------------------------------------------------------------------------- | ||
32 | */ | ||
33 | |||
34 | #define OMAP1_IO_PHYS 0xFFFB0000 | ||
35 | #define OMAP1_IO_SIZE 0x40000 | ||
36 | #define OMAP1_IO_VIRT (OMAP1_IO_PHYS - OMAP1_IO_OFFSET) | ||
diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c index e5b104b7fce6..4448114fab72 100644 --- a/arch/arm/mach-omap1/irq.c +++ b/arch/arm/mach-omap1/irq.c | |||
@@ -42,11 +42,13 @@ | |||
42 | #include <linux/interrupt.h> | 42 | #include <linux/interrupt.h> |
43 | #include <linux/io.h> | 43 | #include <linux/io.h> |
44 | 44 | ||
45 | #include <mach/hardware.h> | ||
46 | #include <asm/irq.h> | 45 | #include <asm/irq.h> |
47 | #include <asm/mach/irq.h> | 46 | #include <asm/mach/irq.h> |
47 | |||
48 | #include <plat/cpu.h> | 48 | #include <plat/cpu.h> |
49 | 49 | ||
50 | #include <mach/hardware.h> | ||
51 | |||
50 | #define IRQ_BANK(irq) ((irq) >> 5) | 52 | #define IRQ_BANK(irq) ((irq) >> 5) |
51 | #define IRQ_BIT(irq) ((irq) & 0x1f) | 53 | #define IRQ_BIT(irq) ((irq) & 0x1f) |
52 | 54 | ||
diff --git a/arch/arm/mach-omap1/lcd_dma.c b/arch/arm/mach-omap1/lcd_dma.c index 453809359ba6..123a0df63d48 100644 --- a/arch/arm/mach-omap1/lcd_dma.c +++ b/arch/arm/mach-omap1/lcd_dma.c | |||
@@ -27,9 +27,10 @@ | |||
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/dma.h> | ||
31 | |||
30 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
31 | #include <mach/lcdc.h> | 33 | #include <mach/lcdc.h> |
32 | #include <plat/dma.h> | ||
33 | 34 | ||
34 | int omap_lcd_dma_running(void) | 35 | int omap_lcd_dma_running(void) |
35 | { | 36 | { |
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index 91f9abbd3250..3082d60af082 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -19,12 +19,15 @@ | |||
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 <mach/irqs.h> | ||
23 | #include <plat/dma.h> | 22 | #include <plat/dma.h> |
24 | #include <plat/mux.h> | 23 | #include <plat/mux.h> |
25 | #include <plat/cpu.h> | 24 | #include <plat/cpu.h> |
26 | #include <plat/mcbsp.h> | 25 | #include <plat/mcbsp.h> |
27 | 26 | ||
27 | #include <mach/irqs.h> | ||
28 | |||
29 | #include "iomap.h" | ||
30 | |||
28 | #define DPS_RSTCT2_PER_EN (1 << 0) | 31 | #define DPS_RSTCT2_PER_EN (1 << 0) |
29 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) | 32 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) |
30 | 33 | ||
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 0c2c3669d594..306beaca14c5 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -49,7 +49,6 @@ | |||
49 | #include <asm/mach/irq.h> | 49 | #include <asm/mach/irq.h> |
50 | 50 | ||
51 | #include <plat/cpu.h> | 51 | #include <plat/cpu.h> |
52 | #include <mach/irqs.h> | ||
53 | #include <plat/clock.h> | 52 | #include <plat/clock.h> |
54 | #include <plat/sram.h> | 53 | #include <plat/sram.h> |
55 | #include <plat/tc.h> | 54 | #include <plat/tc.h> |
@@ -57,6 +56,9 @@ | |||
57 | #include <plat/dma.h> | 56 | #include <plat/dma.h> |
58 | #include <plat/dmtimer.h> | 57 | #include <plat/dmtimer.h> |
59 | 58 | ||
59 | #include <mach/irqs.h> | ||
60 | |||
61 | #include "iomap.h" | ||
60 | #include "pm.h" | 62 | #include "pm.h" |
61 | 63 | ||
62 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; | 64 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; |
diff --git a/arch/arm/mach-omap1/reset.c b/arch/arm/mach-omap1/reset.c index 91d199b64979..f255b153b863 100644 --- a/arch/arm/mach-omap1/reset.c +++ b/arch/arm/mach-omap1/reset.c | |||
@@ -4,9 +4,10 @@ | |||
4 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
5 | #include <linux/io.h> | 5 | #include <linux/io.h> |
6 | 6 | ||
7 | #include <mach/hardware.h> | ||
8 | #include <plat/prcm.h> | 7 | #include <plat/prcm.h> |
9 | 8 | ||
9 | #include <mach/hardware.h> | ||
10 | |||
10 | void omap1_restart(char mode, const char *cmd) | 11 | void omap1_restart(char mode, const char *cmd) |
11 | { | 12 | { |
12 | /* | 13 | /* |
diff --git a/arch/arm/mach-omap1/sleep.S b/arch/arm/mach-omap1/sleep.S index c875bdc902c5..0e628743bd03 100644 --- a/arch/arm/mach-omap1/sleep.S +++ b/arch/arm/mach-omap1/sleep.S | |||
@@ -33,8 +33,10 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include <linux/linkage.h> | 35 | #include <linux/linkage.h> |
36 | |||
36 | #include <asm/assembler.h> | 37 | #include <asm/assembler.h> |
37 | #include <mach/io.h> | 38 | |
39 | #include "iomap.h" | ||
38 | #include "pm.h" | 40 | #include "pm.h" |
39 | 41 | ||
40 | .text | 42 | .text |
diff --git a/arch/arm/mach-omap1/sram.S b/arch/arm/mach-omap1/sram.S index 692587d07ea5..00e9d9e9adf1 100644 --- a/arch/arm/mach-omap1/sram.S +++ b/arch/arm/mach-omap1/sram.S | |||
@@ -9,10 +9,13 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/linkage.h> | 11 | #include <linux/linkage.h> |
12 | |||
12 | #include <asm/assembler.h> | 13 | #include <asm/assembler.h> |
13 | #include <mach/io.h> | 14 | |
14 | #include <mach/hardware.h> | 15 | #include <mach/hardware.h> |
15 | 16 | ||
17 | #include "iomap.h" | ||
18 | |||
16 | .text | 19 | .text |
17 | 20 | ||
18 | /* | 21 | /* |
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index b8faffa44f9e..2fae6a2740f1 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -45,14 +45,15 @@ | |||
45 | #include <linux/io.h> | 45 | #include <linux/io.h> |
46 | 46 | ||
47 | #include <asm/system.h> | 47 | #include <asm/system.h> |
48 | #include <mach/hardware.h> | ||
49 | #include <asm/leds.h> | 48 | #include <asm/leds.h> |
50 | #include <asm/irq.h> | 49 | #include <asm/irq.h> |
51 | #include <asm/sched_clock.h> | 50 | #include <asm/sched_clock.h> |
52 | 51 | ||
52 | #include <mach/hardware.h> | ||
53 | #include <asm/mach/irq.h> | 53 | #include <asm/mach/irq.h> |
54 | #include <asm/mach/time.h> | 54 | #include <asm/mach/time.h> |
55 | 55 | ||
56 | #include "iomap.h" | ||
56 | #include "common.h" | 57 | #include "common.h" |
57 | 58 | ||
58 | #ifdef CONFIG_OMAP_MPU_TIMER | 59 | #ifdef CONFIG_OMAP_MPU_TIMER |
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 9a54ef4dcf5e..a2e6d0709df2 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -47,14 +47,17 @@ | |||
47 | #include <linux/io.h> | 47 | #include <linux/io.h> |
48 | 48 | ||
49 | #include <asm/system.h> | 49 | #include <asm/system.h> |
50 | #include <mach/hardware.h> | ||
51 | #include <asm/leds.h> | 50 | #include <asm/leds.h> |
52 | #include <asm/irq.h> | 51 | #include <asm/irq.h> |
53 | #include <asm/mach/irq.h> | 52 | #include <asm/mach/irq.h> |
54 | #include <asm/mach/time.h> | 53 | #include <asm/mach/time.h> |
55 | #include "common.h" | 54 | |
56 | #include <plat/dmtimer.h> | 55 | #include <plat/dmtimer.h> |
57 | 56 | ||
57 | #include <mach/hardware.h> | ||
58 | |||
59 | #include "common.h" | ||
60 | |||
58 | /* | 61 | /* |
59 | * --------------------------------------------------------------------------- | 62 | * --------------------------------------------------------------------------- |
60 | * 32KHz OS timer | 63 | * 32KHz OS timer |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index e921e3be24a4..d839c0506d8e 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -280,7 +280,6 @@ static struct omap_dss_board_info cm_t35_dss_data = { | |||
280 | 280 | ||
281 | static struct omap2_mcspi_device_config tdo24m_mcspi_config = { | 281 | static struct omap2_mcspi_device_config tdo24m_mcspi_config = { |
282 | .turbo_mode = 0, | 282 | .turbo_mode = 0, |
283 | .single_channel = 1, /* 0: slave, 1: master */ | ||
284 | }; | 283 | }; |
285 | 284 | ||
286 | static struct tdo24m_platform_data tdo24m_config = { | 285 | static struct tdo24m_platform_data tdo24m_config = { |
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index 42a4d11fad23..a9e983e01199 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -137,7 +137,6 @@ static void __init n8x0_usb_init(void) {} | |||
137 | 137 | ||
138 | static struct omap2_mcspi_device_config p54spi_mcspi_config = { | 138 | static struct omap2_mcspi_device_config p54spi_mcspi_config = { |
139 | .turbo_mode = 0, | 139 | .turbo_mode = 0, |
140 | .single_channel = 1, | ||
141 | }; | 140 | }; |
142 | 141 | ||
143 | static struct spi_board_info n800_spi_board_info[] __initdata = { | 142 | static struct spi_board_info n800_spi_board_info[] __initdata = { |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index acb4e77b39ef..0a668916e3c1 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -138,17 +138,14 @@ static struct lp5523_platform_data rx51_lp5523_platform_data = { | |||
138 | 138 | ||
139 | static struct omap2_mcspi_device_config wl1251_mcspi_config = { | 139 | static struct omap2_mcspi_device_config wl1251_mcspi_config = { |
140 | .turbo_mode = 0, | 140 | .turbo_mode = 0, |
141 | .single_channel = 1, | ||
142 | }; | 141 | }; |
143 | 142 | ||
144 | static struct omap2_mcspi_device_config mipid_mcspi_config = { | 143 | static struct omap2_mcspi_device_config mipid_mcspi_config = { |
145 | .turbo_mode = 0, | 144 | .turbo_mode = 0, |
146 | .single_channel = 1, | ||
147 | }; | 145 | }; |
148 | 146 | ||
149 | static struct omap2_mcspi_device_config tsc2005_mcspi_config = { | 147 | static struct omap2_mcspi_device_config tsc2005_mcspi_config = { |
150 | .turbo_mode = 0, | 148 | .turbo_mode = 0, |
151 | .single_channel = 1, | ||
152 | }; | 149 | }; |
153 | 150 | ||
154 | static struct spi_board_info rx51_peripherals_spi_board_info[] __initdata = { | 151 | static struct spi_board_info rx51_peripherals_spi_board_info[] __initdata = { |
diff --git a/arch/arm/mach-omap2/board-zoom-display.c b/arch/arm/mach-omap2/board-zoom-display.c index d4683ba5f721..281829036758 100644 --- a/arch/arm/mach-omap2/board-zoom-display.c +++ b/arch/arm/mach-omap2/board-zoom-display.c | |||
@@ -117,7 +117,6 @@ static struct omap_dss_board_info zoom_dss_data = { | |||
117 | 117 | ||
118 | static struct omap2_mcspi_device_config dss_lcd_mcspi_config = { | 118 | static struct omap2_mcspi_device_config dss_lcd_mcspi_config = { |
119 | .turbo_mode = 1, | 119 | .turbo_mode = 1, |
120 | .single_channel = 1, /* 0: slave, 1: master */ | ||
121 | }; | 120 | }; |
122 | 121 | ||
123 | static struct spi_board_info nec_8048_spi_board_info[] __initdata = { | 122 | static struct spi_board_info nec_8048_spi_board_info[] __initdata = { |
diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c index 39f9d5a58d0c..7072e0d651b1 100644 --- a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c +++ b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c | |||
@@ -33,6 +33,7 @@ | |||
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/cpu.h> | ||
36 | #include <plat/clock.h> | 37 | #include <plat/clock.h> |
37 | #include <plat/sram.h> | 38 | #include <plat/sram.h> |
38 | #include <plat/sdrc.h> | 39 | #include <plat/sdrc.h> |
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c index e069a9be93df..cd7fd0f91149 100644 --- a/arch/arm/mach-omap2/clkt_dpll.c +++ b/arch/arm/mach-omap2/clkt_dpll.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/div64.h> | 22 | #include <asm/div64.h> |
23 | 23 | ||
24 | #include <plat/clock.h> | 24 | #include <plat/clock.h> |
25 | #include <plat/cpu.h> | ||
25 | 26 | ||
26 | #include "clock.h" | 27 | #include "clock.h" |
27 | #include "cm-regbits-24xx.h" | 28 | #include "cm-regbits-24xx.h" |
diff --git a/arch/arm/mach-omap2/clock2420_data.c b/arch/arm/mach-omap2/clock2420_data.c index 61ad3855f10a..bace9308a4db 100644 --- a/arch/arm/mach-omap2/clock2420_data.c +++ b/arch/arm/mach-omap2/clock2420_data.c | |||
@@ -14,11 +14,14 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/io.h> | ||
17 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
18 | #include <linux/list.h> | 19 | #include <linux/list.h> |
19 | 20 | ||
21 | #include <plat/hardware.h> | ||
20 | #include <plat/clkdev_omap.h> | 22 | #include <plat/clkdev_omap.h> |
21 | 23 | ||
24 | #include "iomap.h" | ||
22 | #include "clock.h" | 25 | #include "clock.h" |
23 | #include "clock2xxx.h" | 26 | #include "clock2xxx.h" |
24 | #include "opp2xxx.h" | 27 | #include "opp2xxx.h" |
diff --git a/arch/arm/mach-omap2/clock2430.c b/arch/arm/mach-omap2/clock2430.c index d87bc9cb2a36..dfda9a3f2cb2 100644 --- a/arch/arm/mach-omap2/clock2430.c +++ b/arch/arm/mach-omap2/clock2430.c | |||
@@ -21,8 +21,10 @@ | |||
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/hardware.h> | ||
24 | #include <plat/clock.h> | 25 | #include <plat/clock.h> |
25 | 26 | ||
27 | #include "iomap.h" | ||
26 | #include "clock.h" | 28 | #include "clock.h" |
27 | #include "clock2xxx.h" | 29 | #include "clock2xxx.h" |
28 | #include "cm2xxx_3xxx.h" | 30 | #include "cm2xxx_3xxx.h" |
diff --git a/arch/arm/mach-omap2/clock2430_data.c b/arch/arm/mach-omap2/clock2430_data.c index 0cc12879e7b9..3b4d09a50399 100644 --- a/arch/arm/mach-omap2/clock2430_data.c +++ b/arch/arm/mach-omap2/clock2430_data.c | |||
@@ -17,8 +17,10 @@ | |||
17 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
18 | #include <linux/list.h> | 18 | #include <linux/list.h> |
19 | 19 | ||
20 | #include <plat/hardware.h> | ||
20 | #include <plat/clkdev_omap.h> | 21 | #include <plat/clkdev_omap.h> |
21 | 22 | ||
23 | #include "iomap.h" | ||
22 | #include "clock.h" | 24 | #include "clock.h" |
23 | #include "clock2xxx.h" | 25 | #include "clock2xxx.h" |
24 | #include "opp2xxx.h" | 26 | #include "opp2xxx.h" |
diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c index 80bb0f0e92e6..12500097378d 100644 --- a/arch/arm/mach-omap2/clock2xxx.c +++ b/arch/arm/mach-omap2/clock2xxx.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <plat/cpu.h> | ||
25 | #include <plat/clock.h> | 26 | #include <plat/clock.h> |
26 | 27 | ||
27 | #include "clock.h" | 28 | #include "clock.h" |
diff --git a/arch/arm/mach-omap2/clock3xxx.c b/arch/arm/mach-omap2/clock3xxx.c index 952c3e01c9eb..794d82702c85 100644 --- a/arch/arm/mach-omap2/clock3xxx.c +++ b/arch/arm/mach-omap2/clock3xxx.c | |||
@@ -21,6 +21,7 @@ | |||
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/hardware.h> | ||
24 | #include <plat/clock.h> | 25 | #include <plat/clock.h> |
25 | 26 | ||
26 | #include "clock.h" | 27 | #include "clock.h" |
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index d75e5f6b8a01..480fb8f09aed 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -19,15 +19,17 @@ | |||
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
21 | #include <linux/list.h> | 21 | #include <linux/list.h> |
22 | #include <linux/io.h> | ||
22 | 23 | ||
24 | #include <plat/hardware.h> | ||
23 | #include <plat/clkdev_omap.h> | 25 | #include <plat/clkdev_omap.h> |
24 | 26 | ||
27 | #include "iomap.h" | ||
25 | #include "clock.h" | 28 | #include "clock.h" |
26 | #include "clock3xxx.h" | 29 | #include "clock3xxx.h" |
27 | #include "clock34xx.h" | 30 | #include "clock34xx.h" |
28 | #include "clock36xx.h" | 31 | #include "clock36xx.h" |
29 | #include "clock3517.h" | 32 | #include "clock3517.h" |
30 | |||
31 | #include "cm2xxx_3xxx.h" | 33 | #include "cm2xxx_3xxx.h" |
32 | #include "cm-regbits-34xx.h" | 34 | #include "cm-regbits-34xx.h" |
33 | #include "prm2xxx_3xxx.h" | 35 | #include "prm2xxx_3xxx.h" |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 08e86d793a1f..c03c1108468e 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -26,8 +26,12 @@ | |||
26 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
27 | #include <linux/list.h> | 27 | #include <linux/list.h> |
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/io.h> | ||
30 | |||
31 | #include <plat/hardware.h> | ||
29 | #include <plat/clkdev_omap.h> | 32 | #include <plat/clkdev_omap.h> |
30 | 33 | ||
34 | #include "iomap.h" | ||
31 | #include "clock.h" | 35 | #include "clock.h" |
32 | #include "clock44xx.h" | 36 | #include "clock44xx.h" |
33 | #include "cm1_44xx.h" | 37 | #include "cm1_44xx.h" |
diff --git a/arch/arm/mach-omap2/cm2xxx_3xxx.c b/arch/arm/mach-omap2/cm2xxx_3xxx.c index 04d39cdd2112..c79ed63601ca 100644 --- a/arch/arm/mach-omap2/cm2xxx_3xxx.c +++ b/arch/arm/mach-omap2/cm2xxx_3xxx.c | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | 20 | ||
21 | #include "iomap.h" | ||
21 | #include "common.h" | 22 | #include "common.h" |
22 | |||
23 | #include "cm.h" | 23 | #include "cm.h" |
24 | #include "cm2xxx_3xxx.h" | 24 | #include "cm2xxx_3xxx.h" |
25 | #include "cm-regbits-24xx.h" | 25 | #include "cm-regbits-24xx.h" |
diff --git a/arch/arm/mach-omap2/cm44xx.c b/arch/arm/mach-omap2/cm44xx.c index 6a836303252c..535d66e2822c 100644 --- a/arch/arm/mach-omap2/cm44xx.c +++ b/arch/arm/mach-omap2/cm44xx.c | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | 20 | ||
21 | #include "iomap.h" | ||
21 | #include "common.h" | 22 | #include "common.h" |
22 | |||
23 | #include "cm.h" | 23 | #include "cm.h" |
24 | #include "cm1_44xx.h" | 24 | #include "cm1_44xx.h" |
25 | #include "cm2_44xx.h" | 25 | #include "cm2_44xx.h" |
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c index 6204deaf85b1..bd8810c3753f 100644 --- a/arch/arm/mach-omap2/cminst44xx.c +++ b/arch/arm/mach-omap2/cminst44xx.c | |||
@@ -20,8 +20,8 @@ | |||
20 | #include <linux/err.h> | 20 | #include <linux/err.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | 22 | ||
23 | #include "iomap.h" | ||
23 | #include "common.h" | 24 | #include "common.h" |
24 | |||
25 | #include "cm.h" | 25 | #include "cm.h" |
26 | #include "cm1_44xx.h" | 26 | #include "cm1_44xx.h" |
27 | #include "cm2_44xx.h" | 27 | #include "cm2_44xx.h" |
diff --git a/arch/arm/mach-omap2/common-board-devices.c b/arch/arm/mach-omap2/common-board-devices.c index bcb0c5817167..2d1d775f2c3e 100644 --- a/arch/arm/mach-omap2/common-board-devices.c +++ b/arch/arm/mach-omap2/common-board-devices.c | |||
@@ -33,7 +33,6 @@ | |||
33 | defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | 33 | defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) |
34 | static struct omap2_mcspi_device_config ads7846_mcspi_config = { | 34 | static struct omap2_mcspi_device_config ads7846_mcspi_config = { |
35 | .turbo_mode = 0, | 35 | .turbo_mode = 0, |
36 | .single_channel = 1, /* 0: slave, 1: master */ | ||
37 | }; | 36 | }; |
38 | 37 | ||
39 | static struct ads7846_platform_data ads7846_config = { | 38 | static struct ads7846_platform_data ads7846_config = { |
diff --git a/arch/arm/mach-omap2/common.c b/arch/arm/mach-omap2/common.c index aaf421178c91..93419de4534a 100644 --- a/arch/arm/mach-omap2/common.c +++ b/arch/arm/mach-omap2/common.c | |||
@@ -17,12 +17,12 @@ | |||
17 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | 19 | ||
20 | #include "common.h" | ||
21 | #include <plat/board.h> | 20 | #include <plat/board.h> |
22 | #include <plat/mux.h> | 21 | #include <plat/mux.h> |
23 | |||
24 | #include <plat/clock.h> | 22 | #include <plat/clock.h> |
25 | 23 | ||
24 | #include "iomap.h" | ||
25 | #include "common.h" | ||
26 | #include "sdrc.h" | 26 | #include "sdrc.h" |
27 | #include "control.h" | 27 | #include "control.h" |
28 | 28 | ||
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index febffde2ff10..f78ec4e6a5c7 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -133,6 +133,8 @@ void am33xx_map_io(void); | |||
133 | void omap4_map_io(void); | 133 | void omap4_map_io(void); |
134 | void ti81xx_map_io(void); | 134 | void ti81xx_map_io(void); |
135 | 135 | ||
136 | extern void __init omap_init_consistent_dma_size(void); | ||
137 | |||
136 | /** | 138 | /** |
137 | * omap_test_timeout - busy-loop, testing a condition | 139 | * omap_test_timeout - busy-loop, testing a condition |
138 | * @cond: condition to test until it evaluates to true | 140 | * @cond: condition to test until it evaluates to true |
@@ -235,5 +237,10 @@ static inline u32 omap4_mpuss_read_prev_context_state(void) | |||
235 | return 0; | 237 | return 0; |
236 | } | 238 | } |
237 | #endif | 239 | #endif |
240 | |||
241 | struct omap_sdrc_params; | ||
242 | extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, | ||
243 | struct omap_sdrc_params *sdrc_cs1); | ||
244 | |||
238 | #endif /* __ASSEMBLER__ */ | 245 | #endif /* __ASSEMBLER__ */ |
239 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ | 246 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ |
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c index 114c037e433c..2fd5fd1abb4f 100644 --- a/arch/arm/mach-omap2/control.c +++ b/arch/arm/mach-omap2/control.c | |||
@@ -15,9 +15,10 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include "common.h" | ||
19 | #include <plat/sdrc.h> | 18 | #include <plat/sdrc.h> |
20 | 19 | ||
20 | #include "iomap.h" | ||
21 | #include "common.h" | ||
21 | #include "cm-regbits-34xx.h" | 22 | #include "cm-regbits-34xx.h" |
22 | #include "prm-regbits-34xx.h" | 23 | #include "prm-regbits-34xx.h" |
23 | #include "prm2xxx_3xxx.h" | 24 | #include "prm2xxx_3xxx.h" |
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h index 0ba68d3764bc..03149de08544 100644 --- a/arch/arm/mach-omap2/control.h +++ b/arch/arm/mach-omap2/control.h | |||
@@ -16,7 +16,6 @@ | |||
16 | #ifndef __ARCH_ARM_MACH_OMAP2_CONTROL_H | 16 | #ifndef __ARCH_ARM_MACH_OMAP2_CONTROL_H |
17 | #define __ARCH_ARM_MACH_OMAP2_CONTROL_H | 17 | #define __ARCH_ARM_MACH_OMAP2_CONTROL_H |
18 | 18 | ||
19 | #include <mach/io.h> | ||
20 | #include <mach/ctrl_module_core_44xx.h> | 19 | #include <mach/ctrl_module_core_44xx.h> |
21 | #include <mach/ctrl_module_wkup_44xx.h> | 20 | #include <mach/ctrl_module_wkup_44xx.h> |
22 | #include <mach/ctrl_module_pad_core_44xx.h> | 21 | #include <mach/ctrl_module_pad_core_44xx.h> |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 283d11eae693..e13644c11260 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
25 | #include <asm/pmu.h> | 25 | #include <asm/pmu.h> |
26 | 26 | ||
27 | #include <plat/tc.h> | 27 | #include "iomap.h" |
28 | #include <plat/board.h> | 28 | #include <plat/board.h> |
29 | #include <plat/mcbsp.h> | 29 | #include <plat/mcbsp.h> |
30 | #include <plat/mmc.h> | 30 | #include <plat/mmc.h> |
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index 3677b1f58b85..28d16a4bb615 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <plat/omap-pm.h> | 30 | #include <plat/omap-pm.h> |
31 | #include "common.h" | 31 | #include "common.h" |
32 | 32 | ||
33 | #include "iomap.h" | ||
33 | #include "mux.h" | 34 | #include "mux.h" |
34 | #include "control.h" | 35 | #include "control.h" |
35 | #include "display.h" | 36 | #include "display.h" |
diff --git a/arch/arm/mach-omap2/emu.c b/arch/arm/mach-omap2/emu.c index ce91aad4cdad..e28e761b7ab9 100644 --- a/arch/arm/mach-omap2/emu.c +++ b/arch/arm/mach-omap2/emu.c | |||
@@ -21,6 +21,10 @@ | |||
21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | ||
25 | |||
26 | #include "iomap.h" | ||
27 | |||
24 | MODULE_LICENSE("GPL"); | 28 | MODULE_LICENSE("GPL"); |
25 | MODULE_AUTHOR("Alexander Shishkin"); | 29 | MODULE_AUTHOR("Alexander Shishkin"); |
26 | 30 | ||
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index 8ad210bda9a9..386dec8d2351 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <asm/mach/flash.h> | 17 | #include <asm/mach/flash.h> |
18 | 18 | ||
19 | #include <plat/cpu.h> | ||
19 | #include <plat/nand.h> | 20 | #include <plat/nand.h> |
20 | #include <plat/board.h> | 21 | #include <plat/board.h> |
21 | #include <plat/gpmc.h> | 22 | #include <plat/gpmc.h> |
diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c index 5cdce10d6183..385b3e02c4a6 100644 --- a/arch/arm/mach-omap2/gpmc-onenand.c +++ b/arch/arm/mach-omap2/gpmc-onenand.c | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #include <asm/mach/flash.h> | 19 | #include <asm/mach/flash.h> |
20 | 20 | ||
21 | #include <plat/cpu.h> | ||
21 | #include <plat/onenand.h> | 22 | #include <plat/onenand.h> |
22 | #include <plat/board.h> | 23 | #include <plat/board.h> |
23 | #include <plat/gpmc.h> | 24 | #include <plat/gpmc.h> |
diff --git a/arch/arm/mach-omap2/include/mach/io.h b/arch/arm/mach-omap2/include/mach/io.h deleted file mode 100644 index fd78f31aa1ad..000000000000 --- a/arch/arm/mach-omap2/include/mach/io.h +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap2/include/mach/io.h | ||
3 | */ | ||
4 | |||
5 | #include <plat/io.h> | ||
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index eb50c29fb644..3203128eef7d 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -24,26 +24,23 @@ | |||
24 | #include <linux/omapfb.h> | 24 | #include <linux/omapfb.h> |
25 | 25 | ||
26 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
27 | |||
28 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
29 | 28 | ||
30 | #include <plat/sram.h> | 29 | #include <plat/sram.h> |
31 | #include <plat/sdrc.h> | 30 | #include <plat/sdrc.h> |
32 | #include <plat/serial.h> | 31 | #include <plat/serial.h> |
33 | |||
34 | #include "clock2xxx.h" | ||
35 | #include "clock3xxx.h" | ||
36 | #include "clock44xx.h" | ||
37 | |||
38 | #include "common.h" | ||
39 | #include <plat/omap-pm.h> | 32 | #include <plat/omap-pm.h> |
33 | #include <plat/omap_hwmod.h> | ||
34 | #include <plat/multi.h> | ||
35 | |||
36 | #include "iomap.h" | ||
40 | #include "voltage.h" | 37 | #include "voltage.h" |
41 | #include "powerdomain.h" | 38 | #include "powerdomain.h" |
42 | |||
43 | #include "clockdomain.h" | 39 | #include "clockdomain.h" |
44 | #include <plat/omap_hwmod.h> | ||
45 | #include <plat/multi.h> | ||
46 | #include "common.h" | 40 | #include "common.h" |
41 | #include "clock2xxx.h" | ||
42 | #include "clock3xxx.h" | ||
43 | #include "clock44xx.h" | ||
47 | 44 | ||
48 | /* | 45 | /* |
49 | * The machine specific code may provide the extra mapping besides the | 46 | * The machine specific code may provide the extra mapping besides the |
@@ -490,43 +487,3 @@ void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, | |||
490 | _omap2_init_reprogram_sdrc(); | 487 | _omap2_init_reprogram_sdrc(); |
491 | } | 488 | } |
492 | } | 489 | } |
493 | |||
494 | /* | ||
495 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | ||
496 | */ | ||
497 | |||
498 | u8 omap_readb(u32 pa) | ||
499 | { | ||
500 | return __raw_readb(OMAP2_L4_IO_ADDRESS(pa)); | ||
501 | } | ||
502 | EXPORT_SYMBOL(omap_readb); | ||
503 | |||
504 | u16 omap_readw(u32 pa) | ||
505 | { | ||
506 | return __raw_readw(OMAP2_L4_IO_ADDRESS(pa)); | ||
507 | } | ||
508 | EXPORT_SYMBOL(omap_readw); | ||
509 | |||
510 | u32 omap_readl(u32 pa) | ||
511 | { | ||
512 | return __raw_readl(OMAP2_L4_IO_ADDRESS(pa)); | ||
513 | } | ||
514 | EXPORT_SYMBOL(omap_readl); | ||
515 | |||
516 | void omap_writeb(u8 v, u32 pa) | ||
517 | { | ||
518 | __raw_writeb(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
519 | } | ||
520 | EXPORT_SYMBOL(omap_writeb); | ||
521 | |||
522 | void omap_writew(u16 v, u32 pa) | ||
523 | { | ||
524 | __raw_writew(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
525 | } | ||
526 | EXPORT_SYMBOL(omap_writew); | ||
527 | |||
528 | void omap_writel(u32 v, u32 pa) | ||
529 | { | ||
530 | __raw_writel(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
531 | } | ||
532 | EXPORT_SYMBOL(omap_writel); | ||
diff --git a/arch/arm/plat-omap/include/plat/io.h b/arch/arm/mach-omap2/iomap.h index 0696bae1818b..0812b154f5b5 100644 --- a/arch/arm/plat-omap/include/plat/io.h +++ b/arch/arm/mach-omap2/iomap.h | |||
@@ -1,13 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/plat-omap/include/mach/io.h | 2 | * IO mappings for OMAP2+ |
3 | * | ||
4 | * IO definitions for TI OMAP processors and boards | ||
5 | * | ||
6 | * Copied from arch/arm/mach-sa1100/include/mach/io.h | ||
7 | * Copyright (C) 1997-1999 Russell King | ||
8 | * | ||
9 | * Copyright (C) 2009 Texas Instruments | ||
10 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
11 | * | 3 | * |
12 | * This program is free software; you can redistribute it and/or modify it | 4 | * This program is free software; you can redistribute it and/or modify it |
13 | * under the terms of the GNU General Public License as published by the | 5 | * under the terms of the GNU General Public License as published by the |
@@ -25,48 +17,14 @@ | |||
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 17 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 18 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | * | 19 | * |
28 | * You should have received a copy of the GNU General Public License along | 20 | * You should have received a copy of the GNU General Public License along |
29 | * with this program; if not, write to the Free Software Foundation, Inc., | 21 | * with this program; if not, write to the Free Software Foundation, Inc., |
30 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 22 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
31 | * | ||
32 | * Modifications: | ||
33 | * 06-12-1997 RMK Created. | ||
34 | * 07-04-1999 RMK Major cleanup | ||
35 | */ | ||
36 | |||
37 | #ifndef __ASM_ARM_ARCH_IO_H | ||
38 | #define __ASM_ARM_ARCH_IO_H | ||
39 | |||
40 | #include <mach/hardware.h> | ||
41 | |||
42 | #define IO_SPACE_LIMIT 0xffffffff | ||
43 | |||
44 | /* | ||
45 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
46 | * drivers out there that might just work if we fake them... | ||
47 | */ | 23 | */ |
48 | #define __io(a) __typesafe_io(a) | ||
49 | #define __mem_pci(a) (a) | ||
50 | |||
51 | /* | ||
52 | * ---------------------------------------------------------------------------- | ||
53 | * I/O mapping | ||
54 | * ---------------------------------------------------------------------------- | ||
55 | */ | ||
56 | |||
57 | #ifdef __ASSEMBLER__ | ||
58 | #define IOMEM(x) (x) | ||
59 | #else | ||
60 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
61 | #endif | ||
62 | |||
63 | #define OMAP1_IO_OFFSET 0x01000000 /* Virtual IO = 0xfefb0000 */ | ||
64 | #define OMAP1_IO_ADDRESS(pa) IOMEM((pa) - OMAP1_IO_OFFSET) | ||
65 | 24 | ||
66 | #define OMAP2_L3_IO_OFFSET 0x90000000 | 25 | #define OMAP2_L3_IO_OFFSET 0x90000000 |
67 | #define OMAP2_L3_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L3_IO_OFFSET) /* L3 */ | 26 | #define OMAP2_L3_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L3_IO_OFFSET) /* L3 */ |
68 | 27 | ||
69 | |||
70 | #define OMAP2_L4_IO_OFFSET 0xb2000000 | 28 | #define OMAP2_L4_IO_OFFSET 0xb2000000 |
71 | #define OMAP2_L4_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L4_IO_OFFSET) /* L4 */ | 29 | #define OMAP2_L4_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L4_IO_OFFSET) /* L4 */ |
72 | 30 | ||
@@ -87,16 +45,6 @@ | |||
87 | 45 | ||
88 | /* | 46 | /* |
89 | * ---------------------------------------------------------------------------- | 47 | * ---------------------------------------------------------------------------- |
90 | * Omap1 specific IO mapping | ||
91 | * ---------------------------------------------------------------------------- | ||
92 | */ | ||
93 | |||
94 | #define OMAP1_IO_PHYS 0xFFFB0000 | ||
95 | #define OMAP1_IO_SIZE 0x40000 | ||
96 | #define OMAP1_IO_VIRT (OMAP1_IO_PHYS - OMAP1_IO_OFFSET) | ||
97 | |||
98 | /* | ||
99 | * ---------------------------------------------------------------------------- | ||
100 | * Omap2 specific IO mapping | 48 | * Omap2 specific IO mapping |
101 | * ---------------------------------------------------------------------------- | 49 | * ---------------------------------------------------------------------------- |
102 | */ | 50 | */ |
@@ -247,31 +195,3 @@ | |||
247 | /* 0x4e000000 --> 0xfd300000 */ | 195 | /* 0x4e000000 --> 0xfd300000 */ |
248 | #define OMAP44XX_DMM_SIZE SZ_1M | 196 | #define OMAP44XX_DMM_SIZE SZ_1M |
249 | #define OMAP44XX_DMM_VIRT (OMAP44XX_EMIF2_VIRT + OMAP44XX_EMIF2_SIZE) | 197 | #define OMAP44XX_DMM_VIRT (OMAP44XX_EMIF2_VIRT + OMAP44XX_EMIF2_SIZE) |
250 | /* | ||
251 | * ---------------------------------------------------------------------------- | ||
252 | * Omap specific register access | ||
253 | * ---------------------------------------------------------------------------- | ||
254 | */ | ||
255 | |||
256 | #ifndef __ASSEMBLER__ | ||
257 | |||
258 | /* | ||
259 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | ||
260 | */ | ||
261 | |||
262 | extern u8 omap_readb(u32 pa); | ||
263 | extern u16 omap_readw(u32 pa); | ||
264 | extern u32 omap_readl(u32 pa); | ||
265 | extern void omap_writeb(u8 v, u32 pa); | ||
266 | extern void omap_writew(u16 v, u32 pa); | ||
267 | extern void omap_writel(u32 v, u32 pa); | ||
268 | |||
269 | struct omap_sdrc_params; | ||
270 | extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, | ||
271 | struct omap_sdrc_params *sdrc_cs1); | ||
272 | |||
273 | extern void __init omap_init_consistent_dma_size(void); | ||
274 | |||
275 | #endif | ||
276 | |||
277 | #endif | ||
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 1fef061f7927..6da2d0edee11 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -14,10 +14,13 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <mach/hardware.h> | 17 | |
18 | #include <asm/exception.h> | 18 | #include <asm/exception.h> |
19 | #include <asm/mach/irq.h> | 19 | #include <asm/mach/irq.h> |
20 | 20 | ||
21 | #include <mach/hardware.h> | ||
22 | |||
23 | #include "iomap.h" | ||
21 | 24 | ||
22 | /* selected INTC register offsets */ | 25 | /* selected INTC register offsets */ |
23 | 26 | ||
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index c1bf3ef0ba02..deffbf1c9627 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c | |||
@@ -23,11 +23,12 @@ | |||
23 | #include <asm/cacheflush.h> | 23 | #include <asm/cacheflush.h> |
24 | #include <asm/hardware/gic.h> | 24 | #include <asm/hardware/gic.h> |
25 | #include <asm/smp_scu.h> | 25 | #include <asm/smp_scu.h> |
26 | |||
26 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
27 | #include <mach/omap-secure.h> | 28 | #include <mach/omap-secure.h> |
28 | 29 | ||
30 | #include "iomap.h" | ||
29 | #include "common.h" | 31 | #include "common.h" |
30 | |||
31 | #include "clockdomain.h" | 32 | #include "clockdomain.h" |
32 | 33 | ||
33 | /* SCU base address */ | 34 | /* SCU base address */ |
diff --git a/arch/arm/mach-omap2/opp2420_data.c b/arch/arm/mach-omap2/opp2420_data.c index e6dda694fd5c..5037e76e4e23 100644 --- a/arch/arm/mach-omap2/opp2420_data.c +++ b/arch/arm/mach-omap2/opp2420_data.c | |||
@@ -28,6 +28,8 @@ | |||
28 | * http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/ | 28 | * http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/ |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <plat/hardware.h> | ||
32 | |||
31 | #include "opp2xxx.h" | 33 | #include "opp2xxx.h" |
32 | #include "sdrc.h" | 34 | #include "sdrc.h" |
33 | #include "clock.h" | 35 | #include "clock.h" |
diff --git a/arch/arm/mach-omap2/opp2430_data.c b/arch/arm/mach-omap2/opp2430_data.c index 1b9596ae201e..750805c528d8 100644 --- a/arch/arm/mach-omap2/opp2430_data.c +++ b/arch/arm/mach-omap2/opp2430_data.c | |||
@@ -26,6 +26,8 @@ | |||
26 | * This is technically part of the OMAP2xxx clock code. | 26 | * This is technically part of the OMAP2xxx clock code. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <plat/hardware.h> | ||
30 | |||
29 | #include "opp2xxx.h" | 31 | #include "opp2xxx.h" |
30 | #include "sdrc.h" | 32 | #include "sdrc.h" |
31 | #include "clock.h" | 33 | #include "clock.h" |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index 1f736222a629..bee8bb9111eb 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/io.h> | ||
30 | #include <linux/irq.h> | 29 | #include <linux/irq.h> |
31 | #include <linux/time.h> | 30 | #include <linux/time.h> |
32 | #include <linux/gpio.h> | 31 | #include <linux/gpio.h> |
@@ -35,12 +34,13 @@ | |||
35 | #include <asm/mach/irq.h> | 34 | #include <asm/mach/irq.h> |
36 | #include <asm/mach-types.h> | 35 | #include <asm/mach-types.h> |
37 | 36 | ||
38 | #include <mach/irqs.h> | ||
39 | #include <plat/clock.h> | 37 | #include <plat/clock.h> |
40 | #include <plat/sram.h> | 38 | #include <plat/sram.h> |
41 | #include <plat/dma.h> | 39 | #include <plat/dma.h> |
42 | #include <plat/board.h> | 40 | #include <plat/board.h> |
43 | 41 | ||
42 | #include <mach/irqs.h> | ||
43 | |||
44 | #include "common.h" | 44 | #include "common.h" |
45 | #include "prm2xxx_3xxx.h" | 45 | #include "prm2xxx_3xxx.h" |
46 | #include "prm-regbits-24xx.h" | 46 | #include "prm-regbits-24xx.h" |
@@ -49,7 +49,6 @@ | |||
49 | #include "sdrc.h" | 49 | #include "sdrc.h" |
50 | #include "pm.h" | 50 | #include "pm.h" |
51 | #include "control.h" | 51 | #include "control.h" |
52 | |||
53 | #include "powerdomain.h" | 52 | #include "powerdomain.h" |
54 | #include "clockdomain.h" | 53 | #include "clockdomain.h" |
55 | 54 | ||
@@ -258,26 +257,6 @@ static int omap2_pm_begin(suspend_state_t state) | |||
258 | return 0; | 257 | return 0; |
259 | } | 258 | } |
260 | 259 | ||
261 | static int omap2_pm_suspend(void) | ||
262 | { | ||
263 | u32 wken_wkup, mir1; | ||
264 | |||
265 | wken_wkup = omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN); | ||
266 | wken_wkup &= ~OMAP24XX_EN_GPT1_MASK; | ||
267 | omap2_prm_write_mod_reg(wken_wkup, WKUP_MOD, PM_WKEN); | ||
268 | |||
269 | /* Mask GPT1 */ | ||
270 | mir1 = omap_readl(0x480fe0a4); | ||
271 | omap_writel(1 << 5, 0x480fe0ac); | ||
272 | |||
273 | omap2_enter_full_retention(); | ||
274 | |||
275 | omap_writel(mir1, 0x480fe0a4); | ||
276 | omap2_prm_write_mod_reg(wken_wkup, WKUP_MOD, PM_WKEN); | ||
277 | |||
278 | return 0; | ||
279 | } | ||
280 | |||
281 | static int omap2_pm_enter(suspend_state_t state) | 260 | static int omap2_pm_enter(suspend_state_t state) |
282 | { | 261 | { |
283 | int ret = 0; | 262 | int ret = 0; |
@@ -285,7 +264,7 @@ static int omap2_pm_enter(suspend_state_t state) | |||
285 | switch (state) { | 264 | switch (state) { |
286 | case PM_SUSPEND_STANDBY: | 265 | case PM_SUSPEND_STANDBY: |
287 | case PM_SUSPEND_MEM: | 266 | case PM_SUSPEND_MEM: |
288 | ret = omap2_pm_suspend(); | 267 | omap2_enter_full_retention(); |
289 | break; | 268 | break; |
290 | default: | 269 | default: |
291 | ret = -EINVAL; | 270 | ret = -EINVAL; |
diff --git a/arch/arm/mach-omap2/prcm_mpu44xx.c b/arch/arm/mach-omap2/prcm_mpu44xx.c index ca669b50f390..928dbd4f20ed 100644 --- a/arch/arm/mach-omap2/prcm_mpu44xx.c +++ b/arch/arm/mach-omap2/prcm_mpu44xx.c | |||
@@ -15,8 +15,8 @@ | |||
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include "iomap.h" | ||
18 | #include "common.h" | 19 | #include "common.h" |
19 | |||
20 | #include "prcm_mpu44xx.h" | 20 | #include "prcm_mpu44xx.h" |
21 | #include "cm-regbits-44xx.h" | 21 | #include "cm-regbits-44xx.h" |
22 | 22 | ||
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c index 33dd655e6aab..f4c151989c91 100644 --- a/arch/arm/mach-omap2/prm44xx.c +++ b/arch/arm/mach-omap2/prm44xx.c | |||
@@ -17,10 +17,11 @@ | |||
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | 19 | ||
20 | #include "common.h" | ||
21 | #include <plat/cpu.h> | 20 | #include <plat/cpu.h> |
22 | #include <plat/prcm.h> | 21 | #include <plat/prcm.h> |
23 | 22 | ||
23 | #include "iomap.h" | ||
24 | #include "common.h" | ||
24 | #include "vp.h" | 25 | #include "vp.h" |
25 | #include "prm44xx.h" | 26 | #include "prm44xx.h" |
26 | #include "prm-regbits-44xx.h" | 27 | #include "prm-regbits-44xx.h" |
diff --git a/arch/arm/mach-omap2/prminst44xx.c b/arch/arm/mach-omap2/prminst44xx.c index f6de5bc6b12a..9b3898a3ac9b 100644 --- a/arch/arm/mach-omap2/prminst44xx.c +++ b/arch/arm/mach-omap2/prminst44xx.c | |||
@@ -16,8 +16,8 @@ | |||
16 | #include <linux/err.h> | 16 | #include <linux/err.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | 18 | ||
19 | #include "iomap.h" | ||
19 | #include "common.h" | 20 | #include "common.h" |
20 | |||
21 | #include "prm44xx.h" | 21 | #include "prm44xx.h" |
22 | #include "prminst44xx.h" | 22 | #include "prminst44xx.h" |
23 | #include "prm-regbits-44xx.h" | 23 | #include "prm-regbits-44xx.h" |
diff --git a/arch/arm/mach-omap2/sdram-nokia.c b/arch/arm/mach-omap2/sdram-nokia.c index 7479d7ea1379..845c4fd2b125 100644 --- a/arch/arm/mach-omap2/sdram-nokia.c +++ b/arch/arm/mach-omap2/sdram-nokia.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | 19 | ||
20 | #include <plat/io.h> | ||
21 | #include "common.h" | 20 | #include "common.h" |
22 | #include <plat/clock.h> | 21 | #include <plat/clock.h> |
23 | #include <plat/sdrc.h> | 22 | #include <plat/sdrc.h> |
diff --git a/arch/arm/mach-omap2/sdrc2xxx.c b/arch/arm/mach-omap2/sdrc2xxx.c index 791a63cdceb2..2c329a6f4778 100644 --- a/arch/arm/mach-omap2/sdrc2xxx.c +++ b/arch/arm/mach-omap2/sdrc2xxx.c | |||
@@ -24,13 +24,14 @@ | |||
24 | #include <linux/clk.h> | 24 | #include <linux/clk.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | 26 | ||
27 | #include "common.h" | ||
28 | #include <plat/clock.h> | 27 | #include <plat/clock.h> |
29 | #include <plat/sram.h> | 28 | #include <plat/sram.h> |
29 | #include <plat/sdrc.h> | ||
30 | 30 | ||
31 | #include "iomap.h" | ||
32 | #include "common.h" | ||
31 | #include "prm2xxx_3xxx.h" | 33 | #include "prm2xxx_3xxx.h" |
32 | #include "clock.h" | 34 | #include "clock.h" |
33 | #include <plat/sdrc.h> | ||
34 | #include "sdrc.h" | 35 | #include "sdrc.h" |
35 | 36 | ||
36 | /* Memory timing, DLL mode flags */ | 37 | /* Memory timing, DLL mode flags */ |
diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S index b5071a47ec39..d4bf904d84ab 100644 --- a/arch/arm/mach-omap2/sleep24xx.S +++ b/arch/arm/mach-omap2/sleep24xx.S | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #include <linux/linkage.h> | 28 | #include <linux/linkage.h> |
29 | #include <asm/assembler.h> | 29 | #include <asm/assembler.h> |
30 | #include <mach/io.h> | ||
31 | 30 | ||
32 | #include <plat/omap24xx.h> | 31 | #include <plat/omap24xx.h> |
33 | 32 | ||
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S index f2ea1bd1c691..1f62f23673fb 100644 --- a/arch/arm/mach-omap2/sleep34xx.S +++ b/arch/arm/mach-omap2/sleep34xx.S | |||
@@ -23,10 +23,13 @@ | |||
23 | * MA 02111-1307 USA | 23 | * MA 02111-1307 USA |
24 | */ | 24 | */ |
25 | #include <linux/linkage.h> | 25 | #include <linux/linkage.h> |
26 | |||
26 | #include <asm/assembler.h> | 27 | #include <asm/assembler.h> |
28 | |||
29 | #include <plat/hardware.h> | ||
27 | #include <plat/sram.h> | 30 | #include <plat/sram.h> |
28 | #include <mach/io.h> | ||
29 | 31 | ||
32 | #include "iomap.h" | ||
30 | #include "cm2xxx_3xxx.h" | 33 | #include "cm2xxx_3xxx.h" |
31 | #include "prm2xxx_3xxx.h" | 34 | #include "prm2xxx_3xxx.h" |
32 | #include "sdrc.h" | 35 | #include "sdrc.h" |
diff --git a/arch/arm/mach-omap2/sram242x.S b/arch/arm/mach-omap2/sram242x.S index ff9b9dbcb30e..ee0bfcc1410f 100644 --- a/arch/arm/mach-omap2/sram242x.S +++ b/arch/arm/mach-omap2/sram242x.S | |||
@@ -29,10 +29,12 @@ | |||
29 | * These crashes may be intermittent. | 29 | * These crashes may be intermittent. |
30 | */ | 30 | */ |
31 | #include <linux/linkage.h> | 31 | #include <linux/linkage.h> |
32 | |||
32 | #include <asm/assembler.h> | 33 | #include <asm/assembler.h> |
33 | #include <mach/io.h> | 34 | |
34 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
35 | 36 | ||
37 | #include "iomap.h" | ||
36 | #include "prm2xxx_3xxx.h" | 38 | #include "prm2xxx_3xxx.h" |
37 | #include "cm2xxx_3xxx.h" | 39 | #include "cm2xxx_3xxx.h" |
38 | #include "sdrc.h" | 40 | #include "sdrc.h" |
diff --git a/arch/arm/mach-omap2/sram243x.S b/arch/arm/mach-omap2/sram243x.S index 76730209fa0e..d4d39ef04769 100644 --- a/arch/arm/mach-omap2/sram243x.S +++ b/arch/arm/mach-omap2/sram243x.S | |||
@@ -29,10 +29,12 @@ | |||
29 | * These crashes may be intermittent. | 29 | * These crashes may be intermittent. |
30 | */ | 30 | */ |
31 | #include <linux/linkage.h> | 31 | #include <linux/linkage.h> |
32 | |||
32 | #include <asm/assembler.h> | 33 | #include <asm/assembler.h> |
33 | #include <mach/io.h> | 34 | |
34 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
35 | 36 | ||
37 | #include "iomap.h" | ||
36 | #include "prm2xxx_3xxx.h" | 38 | #include "prm2xxx_3xxx.h" |
37 | #include "cm2xxx_3xxx.h" | 39 | #include "cm2xxx_3xxx.h" |
38 | #include "sdrc.h" | 40 | #include "sdrc.h" |
diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index 6f5849aaa7c0..df5a21322b0a 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S | |||
@@ -26,11 +26,12 @@ | |||
26 | * MA 02111-1307 USA | 26 | * MA 02111-1307 USA |
27 | */ | 27 | */ |
28 | #include <linux/linkage.h> | 28 | #include <linux/linkage.h> |
29 | |||
29 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
30 | #include <mach/hardware.h> | ||
31 | 31 | ||
32 | #include <mach/io.h> | 32 | #include <mach/hardware.h> |
33 | 33 | ||
34 | #include "iomap.h" | ||
34 | #include "sdrc.h" | 35 | #include "sdrc.h" |
35 | #include "cm2xxx_3xxx.h" | 36 | #include "cm2xxx_3xxx.h" |
36 | 37 | ||
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h index d2513ac79ff5..2e6454c8d4ba 100644 --- a/arch/arm/mach-orion5x/common.h +++ b/arch/arm/mach-orion5x/common.h | |||
@@ -57,5 +57,14 @@ struct meminfo; | |||
57 | struct tag; | 57 | struct tag; |
58 | extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *); | 58 | extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *); |
59 | 59 | ||
60 | /***************************************************************************** | ||
61 | * Helpers to access Orion registers | ||
62 | ****************************************************************************/ | ||
63 | /* | ||
64 | * These are not preempt-safe. Locks, if needed, must be taken | ||
65 | * care of by the caller. | ||
66 | */ | ||
67 | #define orion5x_setbits(r, mask) writel(readl(r) | (mask), (r)) | ||
68 | #define orion5x_clrbits(r, mask) writel(readl(r) & ~(mask), (r)) | ||
60 | 69 | ||
61 | #endif | 70 | #endif |
diff --git a/arch/arm/mach-orion5x/include/mach/io.h b/arch/arm/mach-orion5x/include/mach/io.h deleted file mode 100644 index e9d9afdc2659..000000000000 --- a/arch/arm/mach-orion5x/include/mach/io.h +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-orion5x/include/mach/io.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
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 | #ifndef __ASM_ARCH_IO_H | ||
12 | #define __ASM_ARCH_IO_H | ||
13 | |||
14 | #include "orion5x.h" | ||
15 | |||
16 | #define IO_SPACE_LIMIT 0xffffffff | ||
17 | |||
18 | #define __io(a) __typesafe_io(a) | ||
19 | #define __mem_pci(a) (a) | ||
20 | |||
21 | |||
22 | /***************************************************************************** | ||
23 | * Helpers to access Orion registers | ||
24 | ****************************************************************************/ | ||
25 | /* | ||
26 | * These are not preempt-safe. Locks, if needed, must be taken | ||
27 | * care of by the caller. | ||
28 | */ | ||
29 | #define orion5x_setbits(r, mask) writel(readl(r) | (mask), (r)) | ||
30 | #define orion5x_clrbits(r, mask) writel(readl(r) & ~(mask), (r)) | ||
31 | |||
32 | |||
33 | #endif | ||
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c index 09a045f0c406..a9d21510c974 100644 --- a/arch/arm/mach-orion5x/pci.c +++ b/arch/arm/mach-orion5x/pci.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/mach/pci.h> | 19 | #include <asm/mach/pci.h> |
20 | #include <plat/pcie.h> | 20 | #include <plat/pcie.h> |
21 | #include <plat/addr-map.h> | 21 | #include <plat/addr-map.h> |
22 | #include <mach/orion5x.h> | ||
22 | #include "common.h" | 23 | #include "common.h" |
23 | 24 | ||
24 | /***************************************************************************** | 25 | /***************************************************************************** |
diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c index c9abb8fbfa70..7189827d641d 100644 --- a/arch/arm/mach-orion5x/tsx09-common.c +++ b/arch/arm/mach-orion5x/tsx09-common.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/mv643xx_eth.h> | 15 | #include <linux/mv643xx_eth.h> |
16 | #include <linux/timex.h> | 16 | #include <linux/timex.h> |
17 | #include <linux/serial_reg.h> | 17 | #include <linux/serial_reg.h> |
18 | #include <mach/orion5x.h> | ||
18 | #include "tsx09-common.h" | 19 | #include "tsx09-common.h" |
19 | #include "common.h" | 20 | #include "common.h" |
20 | 21 | ||
diff --git a/arch/arm/mach-picoxcell/include/mach/io.h b/arch/arm/mach-picoxcell/include/mach/io.h deleted file mode 100644 index 7573ec7d10a3..000000000000 --- a/arch/arm/mach-picoxcell/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2011 Picochip Ltd., Jamie Iles | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | #ifndef __ASM_ARM_ARCH_IO_H | ||
15 | #define __ASM_ARM_ARCH_IO_H | ||
16 | |||
17 | /* No ioports, but needed for driver compatibility. */ | ||
18 | #define __io(a) __typesafe_io(a) | ||
19 | /* No PCI possible on picoxcell. */ | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif /* __ASM_ARM_ARCH_IO_H */ | ||
diff --git a/arch/arm/mach-pnx4008/include/mach/io.h b/arch/arm/mach-pnx4008/include/mach/io.h deleted file mode 100644 index cbf0904540ea..000000000000 --- a/arch/arm/mach-pnx4008/include/mach/io.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | |||
2 | /* | ||
3 | * arch/arm/mach-pnx4008/include/mach/io.h | ||
4 | * | ||
5 | * Author: Dmitry Chigirev <chigirev@ru.mvista.com> | ||
6 | * | ||
7 | * 2005 (c) MontaVista Software, Inc. This file is licensed under | ||
8 | * the terms of the GNU General Public License version 2. This program | ||
9 | * is licensed "as is" without any warranty of any kind, whether express | ||
10 | * or implied. | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARM_ARCH_IO_H | ||
14 | #define __ASM_ARM_ARCH_IO_H | ||
15 | |||
16 | #define IO_SPACE_LIMIT 0xffffffff | ||
17 | |||
18 | #define __io(a) __typesafe_io(a) | ||
19 | #define __mem_pci(a) (a) | ||
20 | |||
21 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/io.h b/arch/arm/mach-prima2/include/mach/io.h deleted file mode 100644 index 6c31e9ec279e..000000000000 --- a/arch/arm/mach-prima2/include/mach/io.h +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_PRIMA2_IO_H | ||
10 | #define __MACH_PRIMA2_IO_H | ||
11 | |||
12 | #define IO_SPACE_LIMIT ((resource_size_t)0) | ||
13 | |||
14 | #define __mem_pci(a) (a) | ||
15 | |||
16 | #endif | ||
diff --git a/arch/arm/mach-pxa/include/mach/io.h b/arch/arm/mach-pxa/include/mach/io.h deleted file mode 100644 index fdca3be47d9b..000000000000 --- a/arch/arm/mach-pxa/include/mach/io.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-pxa/include/mach/io.h | ||
3 | * | ||
4 | * Copied from asm/arch/sa1100/io.h | ||
5 | */ | ||
6 | #ifndef __ASM_ARM_ARCH_IO_H | ||
7 | #define __ASM_ARM_ARCH_IO_H | ||
8 | |||
9 | #include <mach/hardware.h> | ||
10 | |||
11 | #define IO_SPACE_LIMIT 0xffffffff | ||
12 | |||
13 | /* | ||
14 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
15 | * drivers out there that might just work if we fake them... | ||
16 | */ | ||
17 | #define __io(a) __typesafe_io(a) | ||
18 | #define __mem_pci(a) (a) | ||
19 | |||
20 | #endif | ||
diff --git a/arch/arm/mach-realview/include/mach/hardware.h b/arch/arm/mach-realview/include/mach/hardware.h index 8a638d15797f..281e71c97525 100644 --- a/arch/arm/mach-realview/include/mach/hardware.h +++ b/arch/arm/mach-realview/include/mach/hardware.h | |||
@@ -37,6 +37,6 @@ | |||
37 | #else | 37 | #else |
38 | #define IO_ADDRESS(x) (x) | 38 | #define IO_ADDRESS(x) (x) |
39 | #endif | 39 | #endif |
40 | #define __io_address(n) __io(IO_ADDRESS(n)) | 40 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) |
41 | 41 | ||
42 | #endif | 42 | #endif |
diff --git a/arch/arm/mach-realview/include/mach/io.h b/arch/arm/mach-realview/include/mach/io.h deleted file mode 100644 index f05bcdf605d8..000000000000 --- a/arch/arm/mach-realview/include/mach/io.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-realview/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2003 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define IO_SPACE_LIMIT 0xffffffff | ||
24 | |||
25 | #define __io(a) __typesafe_io(a) | ||
26 | #define __mem_pci(a) (a) | ||
27 | |||
28 | #endif | ||
diff --git a/arch/arm/mach-rpc/include/mach/hardware.h b/arch/arm/mach-rpc/include/mach/hardware.h index 050d63c74cc1..257166b21f3d 100644 --- a/arch/arm/mach-rpc/include/mach/hardware.h +++ b/arch/arm/mach-rpc/include/mach/hardware.h | |||
@@ -14,12 +14,6 @@ | |||
14 | 14 | ||
15 | #include <mach/memory.h> | 15 | #include <mach/memory.h> |
16 | 16 | ||
17 | #ifndef __ASSEMBLY__ | ||
18 | #define IOMEM(x) ((void __iomem *)(unsigned long)(x)) | ||
19 | #else | ||
20 | #define IOMEM(x) x | ||
21 | #endif /* __ASSEMBLY__ */ | ||
22 | |||
23 | /* | 17 | /* |
24 | * What hardware must be present | 18 | * What hardware must be present |
25 | */ | 19 | */ |
diff --git a/arch/arm/mach-rpc/include/mach/io.h b/arch/arm/mach-rpc/include/mach/io.h index 695f4ed2e11b..707071a7ea4e 100644 --- a/arch/arm/mach-rpc/include/mach/io.h +++ b/arch/arm/mach-rpc/include/mach/io.h | |||
@@ -28,9 +28,4 @@ | |||
28 | */ | 28 | */ |
29 | #define __io(a) (PCIO_BASE + ((a) << 2)) | 29 | #define __io(a) (PCIO_BASE + ((a) << 2)) |
30 | 30 | ||
31 | /* | ||
32 | * 1:1 mapping for ioremapped regions. | ||
33 | */ | ||
34 | #define __mem_pci(x) (x) | ||
35 | |||
36 | #endif | 31 | #endif |
diff --git a/arch/arm/mach-s3c2410/include/mach/io.h b/arch/arm/mach-s3c2410/include/mach/io.h index 118749f37c4c..5dd1db4e2677 100644 --- a/arch/arm/mach-s3c2410/include/mach/io.h +++ b/arch/arm/mach-s3c2410/include/mach/io.h | |||
@@ -208,9 +208,4 @@ DECLARE_IO(int,l,"") | |||
208 | #define outsw(p,d,l) __raw_writesw(__ioaddr(p),d,l) | 208 | #define outsw(p,d,l) __raw_writesw(__ioaddr(p),d,l) |
209 | #define outsl(p,d,l) __raw_writesl(__ioaddr(p),d,l) | 209 | #define outsl(p,d,l) __raw_writesl(__ioaddr(p),d,l) |
210 | 210 | ||
211 | /* | ||
212 | * 1:1 mapping for ioremapped regions. | ||
213 | */ | ||
214 | #define __mem_pci(x) (x) | ||
215 | |||
216 | #endif | 211 | #endif |
diff --git a/arch/arm/mach-s3c64xx/include/mach/io.h b/arch/arm/mach-s3c64xx/include/mach/io.h deleted file mode 100644 index de5716dbbd65..000000000000 --- a/arch/arm/mach-s3c64xx/include/mach/io.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* arch/arm/mach-s3c64xxinclude/mach/io.h | ||
2 | * | ||
3 | * Copyright 2008 Simtec Electronics | ||
4 | * Ben Dooks <ben-linux@fluff.org> | ||
5 | * | ||
6 | * Default IO routines for S3C64XX based | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARM_ARCH_IO_H | ||
10 | #define __ASM_ARM_ARCH_IO_H | ||
11 | |||
12 | /* No current ISA/PCI bus support. */ | ||
13 | #define __io(a) __typesafe_io(a) | ||
14 | #define __mem_pci(a) (a) | ||
15 | |||
16 | #define IO_SPACE_LIMIT (0xFFFFFFFF) | ||
17 | |||
18 | #endif | ||
diff --git a/arch/arm/mach-s5p64x0/include/mach/io.h b/arch/arm/mach-s5p64x0/include/mach/io.h deleted file mode 100644 index a3e095c02fb5..000000000000 --- a/arch/arm/mach-s5p64x0/include/mach/io.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | /* linux/arch/arm/mach-s5p64x0/include/mach/io.h | ||
2 | * | ||
3 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | ||
4 | * http://www.samsung.com | ||
5 | * | ||
6 | * Copyright 2008 Simtec Electronics | ||
7 | * Ben Dooks <ben-linux@fluff.org> | ||
8 | * | ||
9 | * Default IO routines for S5P64X0 based | ||
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 | #ifndef __ASM_ARM_ARCH_IO_H | ||
17 | #define __ASM_ARM_ARCH_IO_H | ||
18 | |||
19 | /* No current ISA/PCI bus support. */ | ||
20 | #define __io(a) __typesafe_io(a) | ||
21 | #define __mem_pci(a) (a) | ||
22 | |||
23 | #define IO_SPACE_LIMIT (0xFFFFFFFF) | ||
24 | |||
25 | #endif | ||
diff --git a/arch/arm/mach-s5pc100/include/mach/io.h b/arch/arm/mach-s5pc100/include/mach/io.h deleted file mode 100644 index 819acf5eaf89..000000000000 --- a/arch/arm/mach-s5pc100/include/mach/io.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* arch/arm/mach-s5pc100/include/mach/io.h | ||
2 | * | ||
3 | * Copyright 2008 Simtec Electronics | ||
4 | * Ben Dooks <ben-linux@fluff.org> | ||
5 | * | ||
6 | * Default IO routines for S5PC100 systems | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARM_ARCH_IO_H | ||
10 | #define __ASM_ARM_ARCH_IO_H | ||
11 | |||
12 | /* No current ISA/PCI bus support. */ | ||
13 | #define __io(a) __typesafe_io(a) | ||
14 | #define __mem_pci(a) (a) | ||
15 | |||
16 | #define IO_SPACE_LIMIT (0xFFFFFFFF) | ||
17 | |||
18 | #endif | ||
diff --git a/arch/arm/mach-s5pv210/include/mach/io.h b/arch/arm/mach-s5pv210/include/mach/io.h deleted file mode 100644 index 5ab9d560bc86..000000000000 --- a/arch/arm/mach-s5pv210/include/mach/io.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* linux/arch/arm/mach-s5pv210/include/mach/io.h | ||
2 | * | ||
3 | * Copyright 2008-2010 Ben Dooks <ben-linux@fluff.org> | ||
4 | * | ||
5 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. | ||
6 | * http://www.samsung.com/ | ||
7 | * | ||
8 | * Based on arch/arm/mach-s5p6442/include/mach/io.h | ||
9 | * | ||
10 | * Default IO routines for S5PV210 | ||
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 version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #ifndef __ASM_ARM_ARCH_IO_H | ||
18 | #define __ASM_ARM_ARCH_IO_H __FILE__ | ||
19 | |||
20 | /* No current ISA/PCI bus support. */ | ||
21 | #define __io(a) __typesafe_io(a) | ||
22 | #define __mem_pci(a) (a) | ||
23 | |||
24 | #define IO_SPACE_LIMIT (0xFFFFFFFF) | ||
25 | |||
26 | #endif /* __ASM_ARM_ARCH_IO_H */ | ||
diff --git a/arch/arm/mach-sa1100/include/mach/io.h b/arch/arm/mach-sa1100/include/mach/io.h deleted file mode 100644 index dfc27ff08344..000000000000 --- a/arch/arm/mach-sa1100/include/mach/io.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-sa1100/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 1997-1999 Russell King | ||
5 | * | ||
6 | * Modifications: | ||
7 | * 06-12-1997 RMK Created. | ||
8 | * 07-04-1999 RMK Major cleanup | ||
9 | */ | ||
10 | #ifndef __ASM_ARM_ARCH_IO_H | ||
11 | #define __ASM_ARM_ARCH_IO_H | ||
12 | |||
13 | /* | ||
14 | * __io() is required to be an equivalent mapping to __mem_pci() for | ||
15 | * SOC_COMMON to work. | ||
16 | */ | ||
17 | #define __io(a) __typesafe_io(a) | ||
18 | #define __mem_pci(a) (a) | ||
19 | |||
20 | #endif | ||
diff --git a/arch/arm/mach-shark/include/mach/io.h b/arch/arm/mach-shark/include/mach/io.h index 9ccbcecc430b..1a45fc01ff1d 100644 --- a/arch/arm/mach-shark/include/mach/io.h +++ b/arch/arm/mach-shark/include/mach/io.h | |||
@@ -15,6 +15,4 @@ | |||
15 | 15 | ||
16 | #define __io(a) ((void __iomem *)(0xe0000000 + (a))) | 16 | #define __io(a) ((void __iomem *)(0xe0000000 + (a))) |
17 | 17 | ||
18 | #define __mem_pci(addr) (addr) | ||
19 | |||
20 | #endif | 18 | #endif |
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index eff8a96c75ee..5346529e8bcc 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -615,7 +615,7 @@ static void __init ag5evm_init(void) | |||
615 | 615 | ||
616 | #ifdef CONFIG_CACHE_L2X0 | 616 | #ifdef CONFIG_CACHE_L2X0 |
617 | /* Shared attribute override enable, 64K*8way */ | 617 | /* Shared attribute override enable, 64K*8way */ |
618 | l2x0_init(__io(0xf0100000), 0x00460000, 0xc2000fff); | 618 | l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff); |
619 | #endif | 619 | #endif |
620 | sh73a0_add_standard_devices(); | 620 | sh73a0_add_standard_devices(); |
621 | platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices)); | 621 | platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices)); |
diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index 4d2201622323..91d4c221c9c4 100644 --- a/arch/arm/mach-shmobile/board-bonito.c +++ b/arch/arm/mach-shmobile/board-bonito.c | |||
@@ -394,7 +394,7 @@ static void __init bonito_init(void) | |||
394 | 394 | ||
395 | #ifdef CONFIG_CACHE_L2X0 | 395 | #ifdef CONFIG_CACHE_L2X0 |
396 | /* Early BRESP enable, Shared attribute override enable, 32K*8way */ | 396 | /* Early BRESP enable, Shared attribute override enable, 32K*8way */ |
397 | l2x0_init(__io(0xf0002000), 0x40440000, 0x82000fff); | 397 | l2x0_init(IOMEM(0xf0002000), 0x40440000, 0x82000fff); |
398 | #endif | 398 | #endif |
399 | 399 | ||
400 | r8a7740_add_standard_devices(); | 400 | r8a7740_add_standard_devices(); |
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index 857ceeec1bb0..4cf6100989db 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c | |||
@@ -530,7 +530,7 @@ static void __init kota2_init(void) | |||
530 | 530 | ||
531 | #ifdef CONFIG_CACHE_L2X0 | 531 | #ifdef CONFIG_CACHE_L2X0 |
532 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ | 532 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ |
533 | l2x0_init(__io(0xf0100000), 0x40460000, 0x82000fff); | 533 | l2x0_init(IOMEM(0xf0100000), 0x40460000, 0x82000fff); |
534 | #endif | 534 | #endif |
535 | sh73a0_add_standard_devices(); | 535 | sh73a0_add_standard_devices(); |
536 | platform_add_devices(kota2_devices, ARRAY_SIZE(kota2_devices)); | 536 | platform_add_devices(kota2_devices, ARRAY_SIZE(kota2_devices)); |
diff --git a/arch/arm/mach-shmobile/include/mach/io.h b/arch/arm/mach-shmobile/include/mach/io.h deleted file mode 100644 index 7339fe46cb7c..000000000000 --- a/arch/arm/mach-shmobile/include/mach/io.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | #ifndef __ASM_MACH_IO_H | ||
2 | #define __ASM_MACH_IO_H | ||
3 | |||
4 | #define IO_SPACE_LIMIT 0xffffffff | ||
5 | |||
6 | #define __io(a) ((void __iomem *)(a)) | ||
7 | #define __mem_pci(a) (a) | ||
8 | |||
9 | #endif /* __ASM_MACH_IO_H */ | ||
diff --git a/arch/arm/mach-shmobile/intc-r8a7779.c b/arch/arm/mach-shmobile/intc-r8a7779.c index 5d92fcde2bc3..550b23df4fd4 100644 --- a/arch/arm/mach-shmobile/intc-r8a7779.c +++ b/arch/arm/mach-shmobile/intc-r8a7779.c | |||
@@ -42,8 +42,8 @@ static int r8a7779_set_wake(struct irq_data *data, unsigned int on) | |||
42 | 42 | ||
43 | void __init r8a7779_init_irq(void) | 43 | void __init r8a7779_init_irq(void) |
44 | { | 44 | { |
45 | void __iomem *gic_dist_base = __io(0xf0001000); | 45 | void __iomem *gic_dist_base = IOMEM(0xf0001000); |
46 | void __iomem *gic_cpu_base = __io(0xf0000100); | 46 | void __iomem *gic_cpu_base = IOMEM(0xf0000100); |
47 | 47 | ||
48 | /* use GIC to handle interrupts */ | 48 | /* use GIC to handle interrupts */ |
49 | gic_init(0, 29, gic_dist_base, gic_cpu_base); | 49 | gic_init(0, 29, gic_dist_base, gic_cpu_base); |
diff --git a/arch/arm/mach-shmobile/intc-sh73a0.c b/arch/arm/mach-shmobile/intc-sh73a0.c index 1eda6b0b69e3..dbb4357ea183 100644 --- a/arch/arm/mach-shmobile/intc-sh73a0.c +++ b/arch/arm/mach-shmobile/intc-sh73a0.c | |||
@@ -419,8 +419,8 @@ static irqreturn_t sh73a0_pint1_demux(int irq, void *dev_id) | |||
419 | 419 | ||
420 | void __init sh73a0_init_irq(void) | 420 | void __init sh73a0_init_irq(void) |
421 | { | 421 | { |
422 | void __iomem *gic_dist_base = __io(0xf0001000); | 422 | void __iomem *gic_dist_base = IOMEM(0xf0001000); |
423 | void __iomem *gic_cpu_base = __io(0xf0000100); | 423 | void __iomem *gic_cpu_base = IOMEM(0xf0000100); |
424 | void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); | 424 | void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); |
425 | int k, n; | 425 | int k, n; |
426 | 426 | ||
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index 4fe2e9eaf501..6d5e57d350b7 100644 --- a/arch/arm/mach-shmobile/smp-r8a7779.c +++ b/arch/arm/mach-shmobile/smp-r8a7779.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <asm/smp_twd.h> | 30 | #include <asm/smp_twd.h> |
31 | #include <asm/hardware/gic.h> | 31 | #include <asm/hardware/gic.h> |
32 | 32 | ||
33 | #define AVECR 0xfe700040 | 33 | #define AVECR IOMEM(0xfe700040) |
34 | 34 | ||
35 | static struct r8a7779_pm_ch r8a7779_ch_cpu1 = { | 35 | static struct r8a7779_pm_ch r8a7779_ch_cpu1 = { |
36 | .chan_offs = 0x40, /* PWRSR0 .. PWRER0 */ | 36 | .chan_offs = 0x40, /* PWRSR0 .. PWRER0 */ |
@@ -140,7 +140,7 @@ void __init r8a7779_smp_prepare_cpus(void) | |||
140 | scu_enable(scu_base_addr()); | 140 | scu_enable(scu_base_addr()); |
141 | 141 | ||
142 | /* Map the reset vector (in headsmp.S) */ | 142 | /* Map the reset vector (in headsmp.S) */ |
143 | __raw_writel(__pa(shmobile_secondary_vector), __io(AVECR)); | 143 | __raw_writel(__pa(shmobile_secondary_vector), AVECR); |
144 | 144 | ||
145 | /* enable cache coherency on CPU0 */ | 145 | /* enable cache coherency on CPU0 */ |
146 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); | 146 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); |
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index 0d159d64a345..667d53dd7012 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c | |||
@@ -28,11 +28,11 @@ | |||
28 | #include <asm/smp_twd.h> | 28 | #include <asm/smp_twd.h> |
29 | #include <asm/hardware/gic.h> | 29 | #include <asm/hardware/gic.h> |
30 | 30 | ||
31 | #define WUPCR 0xe6151010 | 31 | #define WUPCR IOMEM(0xe6151010) |
32 | #define SRESCR 0xe6151018 | 32 | #define SRESCR IOMEM(0xe6151018) |
33 | #define PSTR 0xe6151040 | 33 | #define PSTR IOMEM(0xe6151040) |
34 | #define SBAR 0xe6180020 | 34 | #define SBAR IOMEM(0xe6180020) |
35 | #define APARMBAREA 0xe6f10020 | 35 | #define APARMBAREA IOMEM(0xe6f10020) |
36 | 36 | ||
37 | static void __iomem *scu_base_addr(void) | 37 | static void __iomem *scu_base_addr(void) |
38 | { | 38 | { |
@@ -80,10 +80,10 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu) | |||
80 | /* enable cache coherency */ | 80 | /* enable cache coherency */ |
81 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); | 81 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); |
82 | 82 | ||
83 | if (((__raw_readw(__io(PSTR)) >> (4 * cpu)) & 3) == 3) | 83 | if (((__raw_readw(PSTR) >> (4 * cpu)) & 3) == 3) |
84 | __raw_writel(1 << cpu, __io(WUPCR)); /* wake up */ | 84 | __raw_writel(1 << cpu, WUPCR); /* wake up */ |
85 | else | 85 | else |
86 | __raw_writel(1 << cpu, __io(SRESCR)); /* reset */ | 86 | __raw_writel(1 << cpu, SRESCR); /* reset */ |
87 | 87 | ||
88 | return 0; | 88 | return 0; |
89 | } | 89 | } |
@@ -95,8 +95,8 @@ void __init sh73a0_smp_prepare_cpus(void) | |||
95 | scu_enable(scu_base_addr()); | 95 | scu_enable(scu_base_addr()); |
96 | 96 | ||
97 | /* Map the reset vector (in headsmp.S) */ | 97 | /* Map the reset vector (in headsmp.S) */ |
98 | __raw_writel(0, __io(APARMBAREA)); /* 4k */ | 98 | __raw_writel(0, APARMBAREA); /* 4k */ |
99 | __raw_writel(__pa(shmobile_secondary_vector), __io(SBAR)); | 99 | __raw_writel(__pa(shmobile_secondary_vector), SBAR); |
100 | 100 | ||
101 | /* enable cache coherency on CPU0 */ | 101 | /* enable cache coherency on CPU0 */ |
102 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); | 102 | modify_scu_cpu_psr(0, 3 << (cpu * 8)); |
diff --git a/arch/arm/mach-spear3xx/clock.c b/arch/arm/mach-spear3xx/clock.c index f67860cd649f..6c4841f55223 100644 --- a/arch/arm/mach-spear3xx/clock.c +++ b/arch/arm/mach-spear3xx/clock.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/io.h> | ||
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
17 | #include <plat/clock.h> | 18 | #include <plat/clock.h> |
diff --git a/arch/arm/mach-spear3xx/include/mach/io.h b/arch/arm/mach-spear3xx/include/mach/io.h deleted file mode 100644 index 30cff8a1f6b5..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/io.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/io.h | ||
3 | * | ||
4 | * IO definitions for SPEAr3xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IO_H | ||
15 | #define __MACH_IO_H | ||
16 | |||
17 | #include <plat/io.h> | ||
18 | |||
19 | #endif /* __MACH_IO_H */ | ||
diff --git a/arch/arm/mach-spear6xx/clock.c b/arch/arm/mach-spear6xx/clock.c index ac70e0d88fef..9281cf88a14a 100644 --- a/arch/arm/mach-spear6xx/clock.c +++ b/arch/arm/mach-spear6xx/clock.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/io.h> | ||
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <plat/clock.h> | 17 | #include <plat/clock.h> |
17 | #include <mach/misc_regs.h> | 18 | #include <mach/misc_regs.h> |
diff --git a/arch/arm/mach-spear6xx/include/mach/io.h b/arch/arm/mach-spear6xx/include/mach/io.h deleted file mode 100644 index fb7c106cea94..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/io.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/io.h | ||
3 | * | ||
4 | * IO definitions for SPEAr6xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IO_H | ||
15 | #define __MACH_IO_H | ||
16 | |||
17 | #include <plat/io.h> | ||
18 | |||
19 | #endif /* __MACH_IO_H */ | ||
20 | |||
diff --git a/arch/arm/mach-tegra/include/mach/debug-macro.S b/arch/arm/mach-tegra/include/mach/debug-macro.S index 619abc63aee8..e28ce1675146 100644 --- a/arch/arm/mach-tegra/include/mach/debug-macro.S +++ b/arch/arm/mach-tegra/include/mach/debug-macro.S | |||
@@ -18,7 +18,6 @@ | |||
18 | * | 18 | * |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <mach/io.h> | ||
22 | #include <mach/iomap.h> | 21 | #include <mach/iomap.h> |
23 | 22 | ||
24 | .macro addruart, rp, rv, tmp | 23 | .macro addruart, rp, rv, tmp |
diff --git a/arch/arm/mach-tegra/include/mach/io.h b/arch/arm/mach-tegra/include/mach/io.h index f15defffb5d2..fe700f9ce7dc 100644 --- a/arch/arm/mach-tegra/include/mach/io.h +++ b/arch/arm/mach-tegra/include/mach/io.h | |||
@@ -23,56 +23,8 @@ | |||
23 | 23 | ||
24 | #define IO_SPACE_LIMIT 0xffff | 24 | #define IO_SPACE_LIMIT 0xffff |
25 | 25 | ||
26 | /* On TEGRA, many peripherals are very closely packed in | ||
27 | * two 256MB io windows (that actually only use about 64KB | ||
28 | * at the start of each). | ||
29 | * | ||
30 | * We will just map the first 1MB of each window (to minimize | ||
31 | * pt entries needed) and provide a macro to transform physical | ||
32 | * io addresses to an appropriate void __iomem *. | ||
33 | * | ||
34 | */ | ||
35 | |||
36 | #ifdef __ASSEMBLY__ | ||
37 | #define IOMEM(x) (x) | ||
38 | #else | ||
39 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
40 | #endif | ||
41 | |||
42 | #define IO_IRAM_PHYS 0x40000000 | ||
43 | #define IO_IRAM_VIRT IOMEM(0xFE400000) | ||
44 | #define IO_IRAM_SIZE SZ_256K | ||
45 | |||
46 | #define IO_CPU_PHYS 0x50040000 | ||
47 | #define IO_CPU_VIRT IOMEM(0xFE000000) | ||
48 | #define IO_CPU_SIZE SZ_16K | ||
49 | |||
50 | #define IO_PPSB_PHYS 0x60000000 | ||
51 | #define IO_PPSB_VIRT IOMEM(0xFE200000) | ||
52 | #define IO_PPSB_SIZE SZ_1M | ||
53 | |||
54 | #define IO_APB_PHYS 0x70000000 | ||
55 | #define IO_APB_VIRT IOMEM(0xFE300000) | ||
56 | #define IO_APB_SIZE SZ_1M | ||
57 | |||
58 | #define IO_TO_VIRT_BETWEEN(p, st, sz) ((p) >= (st) && (p) < ((st) + (sz))) | ||
59 | #define IO_TO_VIRT_XLATE(p, pst, vst) (((p) - (pst) + (vst))) | ||
60 | |||
61 | #define IO_TO_VIRT(n) ( \ | ||
62 | IO_TO_VIRT_BETWEEN((n), IO_PPSB_PHYS, IO_PPSB_SIZE) ? \ | ||
63 | IO_TO_VIRT_XLATE((n), IO_PPSB_PHYS, IO_PPSB_VIRT) : \ | ||
64 | IO_TO_VIRT_BETWEEN((n), IO_APB_PHYS, IO_APB_SIZE) ? \ | ||
65 | IO_TO_VIRT_XLATE((n), IO_APB_PHYS, IO_APB_VIRT) : \ | ||
66 | IO_TO_VIRT_BETWEEN((n), IO_CPU_PHYS, IO_CPU_SIZE) ? \ | ||
67 | IO_TO_VIRT_XLATE((n), IO_CPU_PHYS, IO_CPU_VIRT) : \ | ||
68 | IO_TO_VIRT_BETWEEN((n), IO_IRAM_PHYS, IO_IRAM_SIZE) ? \ | ||
69 | IO_TO_VIRT_XLATE((n), IO_IRAM_PHYS, IO_IRAM_VIRT) : \ | ||
70 | NULL) | ||
71 | |||
72 | #ifndef __ASSEMBLER__ | 26 | #ifndef __ASSEMBLER__ |
73 | 27 | ||
74 | #define IO_ADDRESS(n) (IO_TO_VIRT(n)) | ||
75 | |||
76 | #ifdef CONFIG_TEGRA_PCI | 28 | #ifdef CONFIG_TEGRA_PCI |
77 | extern void __iomem *tegra_pcie_io_base; | 29 | extern void __iomem *tegra_pcie_io_base; |
78 | 30 | ||
@@ -88,7 +40,6 @@ static inline void __iomem *__io(unsigned long addr) | |||
88 | #endif | 40 | #endif |
89 | 41 | ||
90 | #define __io(a) __io(a) | 42 | #define __io(a) __io(a) |
91 | #define __mem_pci(a) (a) | ||
92 | 43 | ||
93 | #endif | 44 | #endif |
94 | 45 | ||
diff --git a/arch/arm/mach-tegra/include/mach/iomap.h b/arch/arm/mach-tegra/include/mach/iomap.h index 19dec3ac0854..c05b311ee4f7 100644 --- a/arch/arm/mach-tegra/include/mach/iomap.h +++ b/arch/arm/mach-tegra/include/mach/iomap.h | |||
@@ -271,4 +271,46 @@ | |||
271 | # define TEGRA_DEBUG_UART_BASE TEGRA_UARTE_BASE | 271 | # define TEGRA_DEBUG_UART_BASE TEGRA_UARTE_BASE |
272 | #endif | 272 | #endif |
273 | 273 | ||
274 | /* On TEGRA, many peripherals are very closely packed in | ||
275 | * two 256MB io windows (that actually only use about 64KB | ||
276 | * at the start of each). | ||
277 | * | ||
278 | * We will just map the first 1MB of each window (to minimize | ||
279 | * pt entries needed) and provide a macro to transform physical | ||
280 | * io addresses to an appropriate void __iomem *. | ||
281 | * | ||
282 | */ | ||
283 | |||
284 | #define IO_IRAM_PHYS 0x40000000 | ||
285 | #define IO_IRAM_VIRT IOMEM(0xFE400000) | ||
286 | #define IO_IRAM_SIZE SZ_256K | ||
287 | |||
288 | #define IO_CPU_PHYS 0x50040000 | ||
289 | #define IO_CPU_VIRT IOMEM(0xFE000000) | ||
290 | #define IO_CPU_SIZE SZ_16K | ||
291 | |||
292 | #define IO_PPSB_PHYS 0x60000000 | ||
293 | #define IO_PPSB_VIRT IOMEM(0xFE200000) | ||
294 | #define IO_PPSB_SIZE SZ_1M | ||
295 | |||
296 | #define IO_APB_PHYS 0x70000000 | ||
297 | #define IO_APB_VIRT IOMEM(0xFE300000) | ||
298 | #define IO_APB_SIZE SZ_1M | ||
299 | |||
300 | #define IO_TO_VIRT_BETWEEN(p, st, sz) ((p) >= (st) && (p) < ((st) + (sz))) | ||
301 | #define IO_TO_VIRT_XLATE(p, pst, vst) (((p) - (pst) + (vst))) | ||
302 | |||
303 | #define IO_TO_VIRT(n) ( \ | ||
304 | IO_TO_VIRT_BETWEEN((n), IO_PPSB_PHYS, IO_PPSB_SIZE) ? \ | ||
305 | IO_TO_VIRT_XLATE((n), IO_PPSB_PHYS, IO_PPSB_VIRT) : \ | ||
306 | IO_TO_VIRT_BETWEEN((n), IO_APB_PHYS, IO_APB_SIZE) ? \ | ||
307 | IO_TO_VIRT_XLATE((n), IO_APB_PHYS, IO_APB_VIRT) : \ | ||
308 | IO_TO_VIRT_BETWEEN((n), IO_CPU_PHYS, IO_CPU_SIZE) ? \ | ||
309 | IO_TO_VIRT_XLATE((n), IO_CPU_PHYS, IO_CPU_VIRT) : \ | ||
310 | IO_TO_VIRT_BETWEEN((n), IO_IRAM_PHYS, IO_IRAM_SIZE) ? \ | ||
311 | IO_TO_VIRT_XLATE((n), IO_IRAM_PHYS, IO_IRAM_VIRT) : \ | ||
312 | NULL) | ||
313 | |||
314 | #define IO_ADDRESS(n) (IO_TO_VIRT(n)) | ||
315 | |||
274 | #endif | 316 | #endif |
diff --git a/arch/arm/mach-tegra/io.c b/arch/arm/mach-tegra/io.c index d23ee2db2827..58b4baf9c483 100644 --- a/arch/arm/mach-tegra/io.c +++ b/arch/arm/mach-tegra/io.c | |||
@@ -26,6 +26,7 @@ | |||
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> | ||
29 | 30 | ||
30 | #include "board.h" | 31 | #include "board.h" |
31 | 32 | ||
diff --git a/arch/arm/mach-u300/include/mach/io.h b/arch/arm/mach-u300/include/mach/io.h deleted file mode 100644 index 5d6b4c13b3a0..000000000000 --- a/arch/arm/mach-u300/include/mach/io.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * arch/arm/mach-u300/include/mach/io.h | ||
4 | * | ||
5 | * | ||
6 | * Copyright (C) 2006-2009 ST-Ericsson AB | ||
7 | * License terms: GNU General Public License (GPL) version 2 | ||
8 | * Dummy IO map for being able to use writew()/readw(), | ||
9 | * writel()/readw() and similar accessor functions. | ||
10 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
11 | */ | ||
12 | #ifndef __MACH_IO_H | ||
13 | #define __MACH_IO_H | ||
14 | |||
15 | #define IO_SPACE_LIMIT 0xffffffff | ||
16 | |||
17 | #define __io(a) __typesafe_io(a) | ||
18 | #define __mem_pci(a) (a) | ||
19 | |||
20 | #endif | ||
diff --git a/arch/arm/mach-u300/include/mach/u300-regs.h b/arch/arm/mach-u300/include/mach/u300-regs.h index 035fdc9dbdb0..7b7cba960b69 100644 --- a/arch/arm/mach-u300/include/mach/u300-regs.h +++ b/arch/arm/mach-u300/include/mach/u300-regs.h | |||
@@ -18,12 +18,6 @@ | |||
18 | * the defines are used for setting up the I/O memory mapping. | 18 | * the defines are used for setting up the I/O memory mapping. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #ifdef __ASSEMBLER__ | ||
22 | #define IOMEM(a) (a) | ||
23 | #else | ||
24 | #define IOMEM(a) (void __iomem *) a | ||
25 | #endif | ||
26 | |||
27 | /* NAND Flash CS0 */ | 21 | /* NAND Flash CS0 */ |
28 | #define U300_NAND_CS0_PHYS_BASE 0x80000000 | 22 | #define U300_NAND_CS0_PHYS_BASE 0x80000000 |
29 | 23 | ||
diff --git a/arch/arm/mach-ux500/include/mach/hardware.h b/arch/arm/mach-ux500/include/mach/hardware.h index b6ba26a1367d..aac7689745e3 100644 --- a/arch/arm/mach-ux500/include/mach/hardware.h +++ b/arch/arm/mach-ux500/include/mach/hardware.h | |||
@@ -23,7 +23,7 @@ | |||
23 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | 23 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) |
24 | 24 | ||
25 | /* typesafe io address */ | 25 | /* typesafe io address */ |
26 | #define __io_address(n) __io(IO_ADDRESS(n)) | 26 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) |
27 | /* Used by some plat-nomadik code */ | 27 | /* Used by some plat-nomadik code */ |
28 | #define io_p2v(n) __io_address(n) | 28 | #define io_p2v(n) __io_address(n) |
29 | 29 | ||
diff --git a/arch/arm/mach-ux500/include/mach/io.h b/arch/arm/mach-ux500/include/mach/io.h deleted file mode 100644 index 1cf3f44ce5b2..000000000000 --- a/arch/arm/mach-ux500/include/mach/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-u8500/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 1997-1999 Russell King | ||
5 | * | ||
6 | * Modifications: | ||
7 | * 06-12-1997 RMK Created. | ||
8 | * 07-04-1999 RMK Major cleanup | ||
9 | */ | ||
10 | #ifndef __ASM_ARM_ARCH_IO_H | ||
11 | #define __ASM_ARM_ARCH_IO_H | ||
12 | |||
13 | #define IO_SPACE_LIMIT 0xffffffff | ||
14 | |||
15 | /* | ||
16 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
17 | * drivers out there that might just work if we fake them... | ||
18 | */ | ||
19 | #define __io(a) __typesafe_io(a) | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif | ||
diff --git a/arch/arm/mach-versatile/include/mach/io.h b/arch/arm/mach-versatile/include/mach/io.h deleted file mode 100644 index f067c14c7182..000000000000 --- a/arch/arm/mach-versatile/include/mach/io.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-versatile/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2003 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define IO_SPACE_LIMIT 0xffffffff | ||
24 | |||
25 | #define __io(a) __typesafe_io(a) | ||
26 | #define __mem_pci(a) (a) | ||
27 | |||
28 | #endif | ||
diff --git a/arch/arm/mach-vexpress/include/mach/io.h b/arch/arm/mach-vexpress/include/mach/io.h deleted file mode 100644 index 13522d86685e..000000000000 --- a/arch/arm/mach-vexpress/include/mach/io.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-vexpress/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2003 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define __io(a) __typesafe_io(a) | ||
24 | #define __mem_pci(a) (a) | ||
25 | |||
26 | #endif | ||
diff --git a/arch/arm/mach-vt8500/include/mach/io.h b/arch/arm/mach-vt8500/include/mach/io.h deleted file mode 100644 index 46181eecf273..000000000000 --- a/arch/arm/mach-vt8500/include/mach/io.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-vt8500/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Alexey Charkov | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARM_ARCH_IO_H | ||
21 | #define __ASM_ARM_ARCH_IO_H | ||
22 | |||
23 | #define __io(a) __typesafe_io((a) + 0xf0000000) | ||
24 | #define __mem_pci(a) (a) | ||
25 | |||
26 | #endif | ||
diff --git a/arch/arm/mach-w90x900/include/mach/io.h b/arch/arm/mach-w90x900/include/mach/io.h deleted file mode 100644 index d96ab99df05b..000000000000 --- a/arch/arm/mach-w90x900/include/mach/io.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-w90x900/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Wan ZongShun <mcuos.com@gmail.com> | ||
8 | * | ||
9 | * Based on arch/arm/mach-s3c2410/include/mach/io.h | ||
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 as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #ifndef __ASM_ARM_ARCH_IO_H | ||
19 | #define __ASM_ARM_ARCH_IO_H | ||
20 | |||
21 | #define IO_SPACE_LIMIT 0xffffffff | ||
22 | |||
23 | /* | ||
24 | * 1:1 mapping for ioremapped regions. | ||
25 | */ | ||
26 | |||
27 | #define __mem_pci(a) (a) | ||
28 | #define __io(a) __typesafe_io(a) | ||
29 | |||
30 | #endif | ||
diff --git a/arch/arm/mach-zynq/include/mach/io.h b/arch/arm/mach-zynq/include/mach/io.h deleted file mode 100644 index 39d9885e0e9a..000000000000 --- a/arch/arm/mach-zynq/include/mach/io.h +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | /* arch/arm/mach-zynq/include/mach/io.h | ||
2 | * | ||
3 | * Copyright (C) 2011 Xilinx | ||
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 | #ifndef __MACH_IO_H__ | ||
16 | #define __MACH_IO_H__ | ||
17 | |||
18 | /* Allow IO space to be anywhere in the memory */ | ||
19 | |||
20 | #define IO_SPACE_LIMIT 0xffff | ||
21 | |||
22 | /* IO address mapping macros, nothing special at this time but required */ | ||
23 | |||
24 | #ifdef __ASSEMBLER__ | ||
25 | #define IOMEM(x) (x) | ||
26 | #else | ||
27 | #define IOMEM(x) ((void __force __iomem *)(x)) | ||
28 | #endif | ||
29 | |||
30 | #define __io(a) __typesafe_io(a) | ||
31 | #define __mem_pci(a) (a) | ||
32 | |||
33 | #endif | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 80632e8d7538..024629046f1f 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -306,11 +306,15 @@ __arm_ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
306 | } | 306 | } |
307 | EXPORT_SYMBOL(__arm_ioremap_pfn); | 307 | EXPORT_SYMBOL(__arm_ioremap_pfn); |
308 | 308 | ||
309 | void __iomem * (*arch_ioremap_caller)(unsigned long, size_t, | ||
310 | unsigned int, void *) = | ||
311 | __arm_ioremap_caller; | ||
312 | |||
309 | void __iomem * | 313 | void __iomem * |
310 | __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | 314 | __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) |
311 | { | 315 | { |
312 | return __arm_ioremap_caller(phys_addr, size, mtype, | 316 | return arch_ioremap_caller(phys_addr, size, mtype, |
313 | __builtin_return_address(0)); | 317 | __builtin_return_address(0)); |
314 | } | 318 | } |
315 | EXPORT_SYMBOL(__arm_ioremap); | 319 | EXPORT_SYMBOL(__arm_ioremap); |
316 | 320 | ||
@@ -369,4 +373,11 @@ void __iounmap(volatile void __iomem *io_addr) | |||
369 | 373 | ||
370 | vunmap(addr); | 374 | vunmap(addr); |
371 | } | 375 | } |
372 | EXPORT_SYMBOL(__iounmap); | 376 | |
377 | void (*arch_iounmap)(volatile void __iomem *) = __iounmap; | ||
378 | |||
379 | void __arm_iounmap(volatile void __iomem *io_addr) | ||
380 | { | ||
381 | arch_iounmap(io_addr); | ||
382 | } | ||
383 | EXPORT_SYMBOL(__arm_iounmap); | ||
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c index 4fc6794cca4b..6486d2f253cd 100644 --- a/arch/arm/mm/nommu.c +++ b/arch/arm/mm/nommu.c | |||
@@ -86,13 +86,17 @@ void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, | |||
86 | } | 86 | } |
87 | EXPORT_SYMBOL(__arm_ioremap); | 87 | EXPORT_SYMBOL(__arm_ioremap); |
88 | 88 | ||
89 | void __iomem * (*arch_ioremap_caller)(unsigned long, size_t, unsigned int, void *); | ||
90 | |||
89 | void __iomem *__arm_ioremap_caller(unsigned long phys_addr, size_t size, | 91 | void __iomem *__arm_ioremap_caller(unsigned long phys_addr, size_t size, |
90 | unsigned int mtype, void *caller) | 92 | unsigned int mtype, void *caller) |
91 | { | 93 | { |
92 | return __arm_ioremap(phys_addr, size, mtype); | 94 | return __arm_ioremap(phys_addr, size, mtype); |
93 | } | 95 | } |
94 | 96 | ||
95 | void __iounmap(volatile void __iomem *addr) | 97 | void (*arch_iounmap)(volatile void __iomem *); |
98 | |||
99 | void __arm_iounmap(volatile void __iomem *addr) | ||
96 | { | 100 | { |
97 | } | 101 | } |
98 | EXPORT_SYMBOL(__iounmap); | 102 | EXPORT_SYMBOL(__arm_iounmap); |
diff --git a/arch/arm/plat-mxc/include/mach/hardware.h b/arch/arm/plat-mxc/include/mach/hardware.h index a599f01f8b92..0630513554de 100644 --- a/arch/arm/plat-mxc/include/mach/hardware.h +++ b/arch/arm/plat-mxc/include/mach/hardware.h | |||
@@ -22,11 +22,8 @@ | |||
22 | 22 | ||
23 | #include <asm/sizes.h> | 23 | #include <asm/sizes.h> |
24 | 24 | ||
25 | #ifdef __ASSEMBLER__ | 25 | #define addr_in_module(addr, mod) \ |
26 | #define IOMEM(addr) (addr) | 26 | ((unsigned long)(addr) - mod ## _BASE_ADDR < mod ## _SIZE) |
27 | #else | ||
28 | #define IOMEM(addr) ((void __force __iomem *)(addr)) | ||
29 | #endif | ||
30 | 27 | ||
31 | #define IMX_IO_P2V_MODULE(addr, module) \ | 28 | #define IMX_IO_P2V_MODULE(addr, module) \ |
32 | (((addr) - module ## _BASE_ADDR) < module ## _SIZE ? \ | 29 | (((addr) - module ## _BASE_ADDR) < module ## _SIZE ? \ |
diff --git a/arch/arm/plat-mxc/include/mach/io.h b/arch/arm/plat-mxc/include/mach/io.h deleted file mode 100644 index 338300b18b00..000000000000 --- a/arch/arm/plat-mxc/include/mach/io.h +++ /dev/null | |||
@@ -1,39 +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_IO_H__ | ||
12 | #define __ASM_ARCH_MXC_IO_H__ | ||
13 | |||
14 | /* Allow IO space to be anywhere in the memory */ | ||
15 | #define IO_SPACE_LIMIT 0xffffffff | ||
16 | |||
17 | #define __arch_ioremap __imx_ioremap | ||
18 | #define __arch_iounmap __iounmap | ||
19 | |||
20 | #define addr_in_module(addr, mod) \ | ||
21 | ((unsigned long)(addr) - mod ## _BASE_ADDR < mod ## _SIZE) | ||
22 | |||
23 | extern void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int); | ||
24 | |||
25 | static inline void __iomem * | ||
26 | __imx_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | ||
27 | { | ||
28 | if (imx_ioremap != NULL) | ||
29 | return imx_ioremap(phys_addr, size, mtype); | ||
30 | else | ||
31 | return __arm_ioremap(phys_addr, size, mtype); | ||
32 | } | ||
33 | |||
34 | /* io address mapping macro */ | ||
35 | #define __io(a) __typesafe_io(a) | ||
36 | |||
37 | #define __mem_pci(a) (a) | ||
38 | |||
39 | #endif | ||
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c index 5f0f2292b7fb..5068fe5a6910 100644 --- a/arch/arm/plat-omap/counter_32k.c +++ b/arch/arm/plat-omap/counter_32k.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <asm/sched_clock.h> | 22 | #include <asm/sched_clock.h> |
23 | 23 | ||
24 | #include <plat/hardware.h> | ||
24 | #include <plat/common.h> | 25 | #include <plat/common.h> |
25 | #include <plat/board.h> | 26 | #include <plat/board.h> |
26 | 27 | ||
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 002fb4d96bbc..95c3ed693f65 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -164,6 +164,8 @@ static inline void set_gdma_dev(int req, int dev) | |||
164 | } | 164 | } |
165 | #else | 165 | #else |
166 | #define set_gdma_dev(req, dev) do {} while (0) | 166 | #define set_gdma_dev(req, dev) do {} while (0) |
167 | #define omap_readl(reg) 0 | ||
168 | #define omap_writel(val, reg) do {} while (0) | ||
167 | #endif | 169 | #endif |
168 | 170 | ||
169 | void omap_set_dma_priority(int lch, int dst_port, int priority) | 171 | void omap_set_dma_priority(int lch, int dst_port, int priority) |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index af3b92be8459..2678260d9feb 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -43,6 +43,8 @@ | |||
43 | 43 | ||
44 | #include <plat/dmtimer.h> | 44 | #include <plat/dmtimer.h> |
45 | 45 | ||
46 | #include <mach/hardware.h> | ||
47 | |||
46 | static LIST_HEAD(omap_timer_list); | 48 | static LIST_HEAD(omap_timer_list); |
47 | static DEFINE_SPINLOCK(dm_timer_lock); | 49 | static DEFINE_SPINLOCK(dm_timer_lock); |
48 | 50 | ||
diff --git a/arch/arm/plat-omap/include/plat/keypad.h b/arch/arm/plat-omap/include/plat/keypad.h index 793ce9d53294..a6b21eddb212 100644 --- a/arch/arm/plat-omap/include/plat/keypad.h +++ b/arch/arm/plat-omap/include/plat/keypad.h | |||
@@ -12,6 +12,8 @@ | |||
12 | 12 | ||
13 | #ifndef CONFIG_ARCH_OMAP1 | 13 | #ifndef CONFIG_ARCH_OMAP1 |
14 | #warning Please update the board to use matrix-keypad driver | 14 | #warning Please update the board to use matrix-keypad driver |
15 | #define omap_readw(reg) 0 | ||
16 | #define omap_writew(val, reg) do {} while (0) | ||
15 | #endif | 17 | #endif |
16 | #include <linux/input/matrix_keypad.h> | 18 | #include <linux/input/matrix_keypad.h> |
17 | 19 | ||
diff --git a/arch/arm/plat-omap/include/plat/mcspi.h b/arch/arm/plat-omap/include/plat/mcspi.h index 3d51b18131cc..a357eb26bd25 100644 --- a/arch/arm/plat-omap/include/plat/mcspi.h +++ b/arch/arm/plat-omap/include/plat/mcspi.h | |||
@@ -18,9 +18,6 @@ struct omap2_mcspi_dev_attr { | |||
18 | 18 | ||
19 | struct omap2_mcspi_device_config { | 19 | struct omap2_mcspi_device_config { |
20 | unsigned turbo_mode:1; | 20 | unsigned turbo_mode:1; |
21 | |||
22 | /* Do we want one channel enabled at the same time? */ | ||
23 | unsigned single_channel:1; | ||
24 | }; | 21 | }; |
25 | 22 | ||
26 | #endif | 23 | #endif |
diff --git a/arch/arm/plat-omap/include/plat/sdrc.h b/arch/arm/plat-omap/include/plat/sdrc.h index 925b12b500dc..9bb978ecd884 100644 --- a/arch/arm/plat-omap/include/plat/sdrc.h +++ b/arch/arm/plat-omap/include/plat/sdrc.h | |||
@@ -16,7 +16,6 @@ | |||
16 | * published by the Free Software Foundation. | 16 | * published by the Free Software Foundation. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <mach/io.h> | ||
20 | 19 | ||
21 | /* SDRC register offsets - read/write with sdrc_{read,write}_reg() */ | 20 | /* SDRC register offsets - read/write with sdrc_{read,write}_reg() */ |
22 | 21 | ||
diff --git a/arch/arm/plat-omap/include/plat/tc.h b/arch/arm/plat-omap/include/plat/tc.h index d2fcd789bb9a..1b4b2da86203 100644 --- a/arch/arm/plat-omap/include/plat/tc.h +++ b/arch/arm/plat-omap/include/plat/tc.h | |||
@@ -84,23 +84,6 @@ | |||
84 | #define EMIFS_CCS(n) (EMIFS_CS0_CONFIG + (4 * (n))) | 84 | #define EMIFS_CCS(n) (EMIFS_CS0_CONFIG + (4 * (n))) |
85 | #define EMIFS_ACS(n) (EMIFS_ACS0 + (4 * (n))) | 85 | #define EMIFS_ACS(n) (EMIFS_ACS0 + (4 * (n))) |
86 | 86 | ||
87 | /* Almost all documentation for chip and board memory maps assumes | ||
88 | * BM is clear. Most devel boards have a switch to control booting | ||
89 | * from NOR flash (using external chipselect 3) rather than mask ROM, | ||
90 | * which uses BM to interchange the physical CS0 and CS3 addresses. | ||
91 | */ | ||
92 | static inline u32 omap_cs0_phys(void) | ||
93 | { | ||
94 | return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) | ||
95 | ? OMAP_CS3_PHYS : 0; | ||
96 | } | ||
97 | |||
98 | static inline u32 omap_cs3_phys(void) | ||
99 | { | ||
100 | return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) | ||
101 | ? 0 : OMAP_CS3_PHYS; | ||
102 | } | ||
103 | |||
104 | #endif /* __ASSEMBLER__ */ | 87 | #endif /* __ASSEMBLER__ */ |
105 | 88 | ||
106 | #endif /* __ASM_ARCH_TC_H */ | 89 | #endif /* __ASM_ARCH_TC_H */ |
diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b580da0..762eeb0626c1 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h | |||
@@ -3,6 +3,7 @@ | |||
3 | #ifndef __ASM_ARCH_OMAP_USB_H | 3 | #ifndef __ASM_ARCH_OMAP_USB_H |
4 | #define __ASM_ARCH_OMAP_USB_H | 4 | #define __ASM_ARCH_OMAP_USB_H |
5 | 5 | ||
6 | #include <linux/io.h> | ||
6 | #include <linux/usb/musb.h> | 7 | #include <linux/usb/musb.h> |
7 | #include <plat/board.h> | 8 | #include <plat/board.h> |
8 | 9 | ||
@@ -105,6 +106,45 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); | |||
105 | extern int omap4430_phy_init(struct device *dev); | 106 | extern int omap4430_phy_init(struct device *dev); |
106 | extern int omap4430_phy_exit(struct device *dev); | 107 | extern int omap4430_phy_exit(struct device *dev); |
107 | extern int omap4430_phy_suspend(struct device *dev, int suspend); | 108 | extern int omap4430_phy_suspend(struct device *dev, int suspend); |
109 | |||
110 | /* | ||
111 | * NOTE: Please update omap USB drivers to use ioremap + read/write | ||
112 | */ | ||
113 | |||
114 | #define OMAP2_L4_IO_OFFSET 0xb2000000 | ||
115 | #define OMAP2_L4_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L4_IO_OFFSET) | ||
116 | |||
117 | static inline u8 omap_readb(u32 pa) | ||
118 | { | ||
119 | return __raw_readb(OMAP2_L4_IO_ADDRESS(pa)); | ||
120 | } | ||
121 | |||
122 | static inline u16 omap_readw(u32 pa) | ||
123 | { | ||
124 | return __raw_readw(OMAP2_L4_IO_ADDRESS(pa)); | ||
125 | } | ||
126 | |||
127 | static inline u32 omap_readl(u32 pa) | ||
128 | { | ||
129 | return __raw_readl(OMAP2_L4_IO_ADDRESS(pa)); | ||
130 | } | ||
131 | |||
132 | static inline void omap_writeb(u8 v, u32 pa) | ||
133 | { | ||
134 | __raw_writeb(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
135 | } | ||
136 | |||
137 | |||
138 | static inline void omap_writew(u16 v, u32 pa) | ||
139 | { | ||
140 | __raw_writew(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
141 | } | ||
142 | |||
143 | static inline void omap_writel(u32 v, u32 pa) | ||
144 | { | ||
145 | __raw_writel(v, OMAP2_L4_IO_ADDRESS(pa)); | ||
146 | } | ||
147 | |||
108 | #endif | 148 | #endif |
109 | 149 | ||
110 | extern void am35x_musb_reset(void); | 150 | extern void am35x_musb_reset(void); |
diff --git a/arch/arm/plat-omap/mux.c b/arch/arm/plat-omap/mux.c index 0d4aa0d5876c..cff8712122bb 100644 --- a/arch/arm/plat-omap/mux.c +++ b/arch/arm/plat-omap/mux.c | |||
@@ -26,8 +26,11 @@ | |||
26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
27 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
30 | |||
31 | #include <asm/system.h> | ||
32 | |||
33 | #include <plat/cpu.h> | ||
31 | #include <plat/mux.h> | 34 | #include <plat/mux.h> |
32 | 35 | ||
33 | #ifdef CONFIG_OMAP_MUX | 36 | #ifdef CONFIG_OMAP_MUX |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 4243bdcc87bc..3022fc267d23 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -31,11 +31,10 @@ | |||
31 | 31 | ||
32 | #include "sram.h" | 32 | #include "sram.h" |
33 | 33 | ||
34 | /* XXX These "sideways" includes are a sign that something is wrong */ | 34 | /* XXX These "sideways" includes will disappear when sram.c becomes a driver */ |
35 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | 35 | #include "../mach-omap2/iomap.h" |
36 | # include "../mach-omap2/prm2xxx_3xxx.h" | 36 | #include "../mach-omap2/prm2xxx_3xxx.h" |
37 | # include "../mach-omap2/sdrc.h" | 37 | #include "../mach-omap2/sdrc.h" |
38 | #endif | ||
39 | 38 | ||
40 | #define OMAP1_SRAM_PA 0x20000000 | 39 | #define OMAP1_SRAM_PA 0x20000000 |
41 | #define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800) | 40 | #define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800) |
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index f3570884883e..d2bbfd1cb0b5 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -29,6 +29,10 @@ | |||
29 | #include <plat/usb.h> | 29 | #include <plat/usb.h> |
30 | #include <plat/board.h> | 30 | #include <plat/board.h> |
31 | 31 | ||
32 | #include <mach/hardware.h> | ||
33 | |||
34 | #include "../mach-omap2/common.h" | ||
35 | |||
32 | #ifdef CONFIG_ARCH_OMAP_OTG | 36 | #ifdef CONFIG_ARCH_OMAP_OTG |
33 | 37 | ||
34 | void __init | 38 | void __init |
diff --git a/arch/arm/plat-spear/include/plat/hardware.h b/arch/arm/plat-spear/include/plat/hardware.h index 66d677225d15..70187d763e26 100644 --- a/arch/arm/plat-spear/include/plat/hardware.h +++ b/arch/arm/plat-spear/include/plat/hardware.h | |||
@@ -14,10 +14,4 @@ | |||
14 | #ifndef __PLAT_HARDWARE_H | 14 | #ifndef __PLAT_HARDWARE_H |
15 | #define __PLAT_HARDWARE_H | 15 | #define __PLAT_HARDWARE_H |
16 | 16 | ||
17 | #ifndef __ASSEMBLY__ | ||
18 | #define IOMEM(x) ((void __iomem __force *)(x)) | ||
19 | #else | ||
20 | #define IOMEM(x) (x) | ||
21 | #endif | ||
22 | |||
23 | #endif /* __PLAT_HARDWARE_H */ | 17 | #endif /* __PLAT_HARDWARE_H */ |
diff --git a/arch/arm/plat-spear/include/plat/io.h b/arch/arm/plat-spear/include/plat/io.h deleted file mode 100644 index 4d4ba822b3eb..000000000000 --- a/arch/arm/plat-spear/include/plat/io.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-spear/include/plat/io.h | ||
3 | * | ||
4 | * IO definitions for SPEAr platform | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __PLAT_IO_H | ||
15 | #define __PLAT_IO_H | ||
16 | |||
17 | #define IO_SPACE_LIMIT 0xFFFFFFFF | ||
18 | |||
19 | #define __io(a) __typesafe_io(a) | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif /* __PLAT_IO_H */ | ||
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c index 402a7bb72669..889c544688ca 100644 --- a/arch/avr32/mach-at32ap/at32ap700x.c +++ b/arch/avr32/mach-at32ap/at32ap700x.c | |||
@@ -1055,8 +1055,6 @@ struct platform_device *__init at32_add_device_usart(unsigned int id) | |||
1055 | return at32_usarts[id]; | 1055 | return at32_usarts[id]; |
1056 | } | 1056 | } |
1057 | 1057 | ||
1058 | struct platform_device *atmel_default_console_device; | ||
1059 | |||
1060 | void __init at32_setup_serial_console(unsigned int usart_id) | 1058 | void __init at32_setup_serial_console(unsigned int usart_id) |
1061 | { | 1059 | { |
1062 | atmel_default_console_device = at32_usarts[usart_id]; | 1060 | atmel_default_console_device = at32_usarts[usart_id]; |
diff --git a/arch/avr32/mach-at32ap/include/mach/cpu.h b/arch/avr32/mach-at32ap/include/mach/cpu.h index 8181293115e4..16a24b14146c 100644 --- a/arch/avr32/mach-at32ap/include/mach/cpu.h +++ b/arch/avr32/mach-at32ap/include/mach/cpu.h | |||
@@ -30,9 +30,6 @@ | |||
30 | #define cpu_is_at91sam9261() (0) | 30 | #define cpu_is_at91sam9261() (0) |
31 | #define cpu_is_at91sam9263() (0) | 31 | #define cpu_is_at91sam9263() (0) |
32 | #define cpu_is_at91sam9rl() (0) | 32 | #define cpu_is_at91sam9rl() (0) |
33 | #define cpu_is_at91cap9() (0) | ||
34 | #define cpu_is_at91cap9_revB() (0) | ||
35 | #define cpu_is_at91cap9_revC() (0) | ||
36 | #define cpu_is_at91sam9g10() (0) | 33 | #define cpu_is_at91sam9g10() (0) |
37 | #define cpu_is_at91sam9g20() (0) | 34 | #define cpu_is_at91sam9g20() (0) |
38 | #define cpu_is_at91sam9g45() (0) | 35 | #define cpu_is_at91sam9g45() (0) |
diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c index b757fac3cd1f..a07a5caa599c 100644 --- a/drivers/char/hw_random/omap-rng.c +++ b/drivers/char/hw_random/omap-rng.c | |||
@@ -26,6 +26,8 @@ | |||
26 | 26 | ||
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | 28 | ||
29 | #include <plat/cpu.h> | ||
30 | |||
29 | #define RNG_OUT_REG 0x00 /* Output register */ | 31 | #define RNG_OUT_REG 0x00 /* Output register */ |
30 | #define RNG_STAT_REG 0x04 /* Status register | 32 | #define RNG_STAT_REG 0x04 /* Status register |
31 | [0] = STAT_BUSY */ | 33 | [0] = STAT_BUSY */ |
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index 0b0562979171..5b7b164e08ad 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c | |||
@@ -1064,13 +1064,6 @@ static void omap_gpio_mod_init(struct gpio_bank *bank, int id) | |||
1064 | + OMAP1610_GPIO_IRQSTATUS1); | 1064 | + OMAP1610_GPIO_IRQSTATUS1); |
1065 | __raw_writew(0x0014, bank->base | 1065 | __raw_writew(0x0014, bank->base |
1066 | + OMAP1610_GPIO_SYSCONFIG); | 1066 | + OMAP1610_GPIO_SYSCONFIG); |
1067 | |||
1068 | /* | ||
1069 | * Enable system clock for GPIO module. | ||
1070 | * The CAM_CLK_CTRL *is* really the right place. | ||
1071 | */ | ||
1072 | omap_writel(omap_readl(ULPD_CAM_CLK_CTRL) | 0x04, | ||
1073 | ULPD_CAM_CLK_CTRL); | ||
1074 | } | 1067 | } |
1075 | if (cpu_is_omap7xx() && bank->method == METHOD_GPIO_7XX) { | 1068 | if (cpu_is_omap7xx() && bank->method == METHOD_GPIO_7XX) { |
1076 | __raw_writel(0xffffffff, bank->base | 1069 | __raw_writel(0xffffffff, bank->base |
diff --git a/drivers/media/video/davinci/vpbe_osd.c b/drivers/media/video/davinci/vpbe_osd.c index d6488b79ae3b..bba299dbf396 100644 --- a/drivers/media/video/davinci/vpbe_osd.c +++ b/drivers/media/video/davinci/vpbe_osd.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
30 | 30 | ||
31 | #include <mach/io.h> | ||
32 | #include <mach/cputype.h> | 31 | #include <mach/cputype.h> |
33 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
34 | 33 | ||
diff --git a/drivers/media/video/davinci/vpbe_venc.c b/drivers/media/video/davinci/vpbe_venc.c index 00e80f59d5d5..b21ecc8d134d 100644 --- a/drivers/media/video/davinci/vpbe_venc.c +++ b/drivers/media/video/davinci/vpbe_venc.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
29 | #include <mach/mux.h> | 29 | #include <mach/mux.h> |
30 | #include <mach/io.h> | ||
31 | #include <mach/i2c.h> | 30 | #include <mach/i2c.h> |
32 | 31 | ||
33 | #include <linux/io.h> | 32 | #include <linux/io.h> |
diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c index 947faa5d2ce4..efdb81d21c44 100644 --- a/drivers/mmc/host/at91_mci.c +++ b/drivers/mmc/host/at91_mci.c | |||
@@ -86,7 +86,6 @@ static inline int at91mci_is_mci1rev2xx(void) | |||
86 | { | 86 | { |
87 | return ( cpu_is_at91sam9260() | 87 | return ( cpu_is_at91sam9260() |
88 | || cpu_is_at91sam9263() | 88 | || cpu_is_at91sam9263() |
89 | || cpu_is_at91cap9() | ||
90 | || cpu_is_at91sam9rl() | 89 | || cpu_is_at91sam9rl() |
91 | || cpu_is_at91sam9g10() | 90 | || cpu_is_at91sam9g10() |
92 | || cpu_is_at91sam9g20() | 91 | || cpu_is_at91sam9g20() |
diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c index 4902206f53d9..1dd68f502634 100644 --- a/drivers/pcmcia/at91_cf.c +++ b/drivers/pcmcia/at91_cf.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <mach/board.h> | 27 | #include <mach/board.h> |
28 | #include <mach/at91rm9200_mc.h> | 28 | #include <mach/at91rm9200_mc.h> |
29 | #include <mach/at91_ramc.h> | ||
29 | 30 | ||
30 | 31 | ||
31 | /* | 32 | /* |
@@ -156,7 +157,7 @@ static int at91_cf_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io) | |||
156 | /* | 157 | /* |
157 | * Use 16 bit accesses unless/until we need 8-bit i/o space. | 158 | * Use 16 bit accesses unless/until we need 8-bit i/o space. |
158 | */ | 159 | */ |
159 | csr = at91_sys_read(AT91_SMC_CSR(cf->board->chipselect)) & ~AT91_SMC_DBW; | 160 | csr = at91_ramc_read(0, AT91_SMC_CSR(cf->board->chipselect)) & ~AT91_SMC_DBW; |
160 | 161 | ||
161 | /* | 162 | /* |
162 | * NOTE: this CF controller ignores IOIS16, so we can't really do | 163 | * NOTE: this CF controller ignores IOIS16, so we can't really do |
@@ -175,7 +176,7 @@ static int at91_cf_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io) | |||
175 | csr |= AT91_SMC_DBW_16; | 176 | csr |= AT91_SMC_DBW_16; |
176 | pr_debug("%s: 16bit i/o bus\n", driver_name); | 177 | pr_debug("%s: 16bit i/o bus\n", driver_name); |
177 | } | 178 | } |
178 | at91_sys_write(AT91_SMC_CSR(cf->board->chipselect), csr); | 179 | at91_ramc_write(0, AT91_SMC_CSR(cf->board->chipselect), csr); |
179 | 180 | ||
180 | io->start = cf->socket.io_offset; | 181 | io->start = cf->socket.io_offset; |
181 | io->stop = io->start + SZ_2K - 1; | 182 | io->stop = io->start + SZ_2K - 1; |
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index a3ad957507dc..729fb843a2fc 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c | |||
@@ -57,6 +57,7 @@ struct sam9_rtc { | |||
57 | void __iomem *rtt; | 57 | void __iomem *rtt; |
58 | struct rtc_device *rtcdev; | 58 | struct rtc_device *rtcdev; |
59 | u32 imr; | 59 | u32 imr; |
60 | void __iomem *gpbr; | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | #define rtt_readl(rtc, field) \ | 63 | #define rtt_readl(rtc, field) \ |
@@ -65,9 +66,9 @@ struct sam9_rtc { | |||
65 | __raw_writel((val), (rtc)->rtt + AT91_RTT_ ## field) | 66 | __raw_writel((val), (rtc)->rtt + AT91_RTT_ ## field) |
66 | 67 | ||
67 | #define gpbr_readl(rtc) \ | 68 | #define gpbr_readl(rtc) \ |
68 | at91_sys_read(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR) | 69 | __raw_readl((rtc)->gpbr) |
69 | #define gpbr_writel(rtc, val) \ | 70 | #define gpbr_writel(rtc, val) \ |
70 | at91_sys_write(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR, (val)) | 71 | __raw_writel((val), (rtc)->gpbr) |
71 | 72 | ||
72 | /* | 73 | /* |
73 | * Read current time and date in RTC | 74 | * Read current time and date in RTC |
@@ -287,16 +288,19 @@ static const struct rtc_class_ops at91_rtc_ops = { | |||
287 | /* | 288 | /* |
288 | * Initialize and install RTC driver | 289 | * Initialize and install RTC driver |
289 | */ | 290 | */ |
290 | static int __init at91_rtc_probe(struct platform_device *pdev) | 291 | static int __devinit at91_rtc_probe(struct platform_device *pdev) |
291 | { | 292 | { |
292 | struct resource *r; | 293 | struct resource *r, *r_gpbr; |
293 | struct sam9_rtc *rtc; | 294 | struct sam9_rtc *rtc; |
294 | int ret; | 295 | int ret; |
295 | u32 mr; | 296 | u32 mr; |
296 | 297 | ||
297 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 298 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
298 | if (!r) | 299 | r_gpbr = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
300 | if (!r || !r_gpbr) { | ||
301 | dev_err(&pdev->dev, "need 2 ressources\n"); | ||
299 | return -ENODEV; | 302 | return -ENODEV; |
303 | } | ||
300 | 304 | ||
301 | rtc = kzalloc(sizeof *rtc, GFP_KERNEL); | 305 | rtc = kzalloc(sizeof *rtc, GFP_KERNEL); |
302 | if (!rtc) | 306 | if (!rtc) |
@@ -307,8 +311,19 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
307 | device_init_wakeup(&pdev->dev, 1); | 311 | device_init_wakeup(&pdev->dev, 1); |
308 | 312 | ||
309 | platform_set_drvdata(pdev, rtc); | 313 | platform_set_drvdata(pdev, rtc); |
310 | rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS); | 314 | rtc->rtt = ioremap(r->start, resource_size(r)); |
311 | rtc->rtt += r->start; | 315 | if (!rtc->rtt) { |
316 | dev_err(&pdev->dev, "failed to map registers, aborting.\n"); | ||
317 | ret = -ENOMEM; | ||
318 | goto fail; | ||
319 | } | ||
320 | |||
321 | rtc->gpbr = ioremap(r_gpbr->start, resource_size(r_gpbr)); | ||
322 | if (!rtc->gpbr) { | ||
323 | dev_err(&pdev->dev, "failed to map gpbr registers, aborting.\n"); | ||
324 | ret = -ENOMEM; | ||
325 | goto fail_gpbr; | ||
326 | } | ||
312 | 327 | ||
313 | mr = rtt_readl(rtc, MR); | 328 | mr = rtt_readl(rtc, MR); |
314 | 329 | ||
@@ -326,7 +341,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
326 | &at91_rtc_ops, THIS_MODULE); | 341 | &at91_rtc_ops, THIS_MODULE); |
327 | if (IS_ERR(rtc->rtcdev)) { | 342 | if (IS_ERR(rtc->rtcdev)) { |
328 | ret = PTR_ERR(rtc->rtcdev); | 343 | ret = PTR_ERR(rtc->rtcdev); |
329 | goto fail; | 344 | goto fail_register; |
330 | } | 345 | } |
331 | 346 | ||
332 | /* register irq handler after we know what name we'll use */ | 347 | /* register irq handler after we know what name we'll use */ |
@@ -336,7 +351,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
336 | if (ret) { | 351 | if (ret) { |
337 | dev_dbg(&pdev->dev, "can't share IRQ %d?\n", AT91_ID_SYS); | 352 | dev_dbg(&pdev->dev, "can't share IRQ %d?\n", AT91_ID_SYS); |
338 | rtc_device_unregister(rtc->rtcdev); | 353 | rtc_device_unregister(rtc->rtcdev); |
339 | goto fail; | 354 | goto fail_register; |
340 | } | 355 | } |
341 | 356 | ||
342 | /* NOTE: sam9260 rev A silicon has a ROM bug which resets the | 357 | /* NOTE: sam9260 rev A silicon has a ROM bug which resets the |
@@ -351,6 +366,10 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
351 | 366 | ||
352 | return 0; | 367 | return 0; |
353 | 368 | ||
369 | fail_register: | ||
370 | iounmap(rtc->gpbr); | ||
371 | fail_gpbr: | ||
372 | iounmap(rtc->rtt); | ||
354 | fail: | 373 | fail: |
355 | platform_set_drvdata(pdev, NULL); | 374 | platform_set_drvdata(pdev, NULL); |
356 | kfree(rtc); | 375 | kfree(rtc); |
@@ -360,7 +379,7 @@ fail: | |||
360 | /* | 379 | /* |
361 | * Disable and remove the RTC driver | 380 | * Disable and remove the RTC driver |
362 | */ | 381 | */ |
363 | static int __exit at91_rtc_remove(struct platform_device *pdev) | 382 | static int __devexit at91_rtc_remove(struct platform_device *pdev) |
364 | { | 383 | { |
365 | struct sam9_rtc *rtc = platform_get_drvdata(pdev); | 384 | struct sam9_rtc *rtc = platform_get_drvdata(pdev); |
366 | u32 mr = rtt_readl(rtc, MR); | 385 | u32 mr = rtt_readl(rtc, MR); |
@@ -371,6 +390,8 @@ static int __exit at91_rtc_remove(struct platform_device *pdev) | |||
371 | 390 | ||
372 | rtc_device_unregister(rtc->rtcdev); | 391 | rtc_device_unregister(rtc->rtcdev); |
373 | 392 | ||
393 | iounmap(rtc->gpbr); | ||
394 | iounmap(rtc->rtt); | ||
374 | platform_set_drvdata(pdev, NULL); | 395 | platform_set_drvdata(pdev, NULL); |
375 | kfree(rtc); | 396 | kfree(rtc); |
376 | return 0; | 397 | return 0; |
@@ -433,63 +454,20 @@ static int at91_rtc_resume(struct platform_device *pdev) | |||
433 | #endif | 454 | #endif |
434 | 455 | ||
435 | static struct platform_driver at91_rtc_driver = { | 456 | static struct platform_driver at91_rtc_driver = { |
436 | .driver.name = "rtc-at91sam9", | 457 | .probe = at91_rtc_probe, |
437 | .driver.owner = THIS_MODULE, | 458 | .remove = __devexit_p(at91_rtc_remove), |
438 | .remove = __exit_p(at91_rtc_remove), | ||
439 | .shutdown = at91_rtc_shutdown, | 459 | .shutdown = at91_rtc_shutdown, |
440 | .suspend = at91_rtc_suspend, | 460 | .suspend = at91_rtc_suspend, |
441 | .resume = at91_rtc_resume, | 461 | .resume = at91_rtc_resume, |
462 | .driver = { | ||
463 | .name = "rtc-at91sam9", | ||
464 | .owner = THIS_MODULE, | ||
465 | }, | ||
442 | }; | 466 | }; |
443 | 467 | ||
444 | /* Chips can have more than one RTT module, and they can be used for more | ||
445 | * than just RTCs. So we can't just register as "the" RTT driver. | ||
446 | * | ||
447 | * A normal approach in such cases is to create a library to allocate and | ||
448 | * free the modules. Here we just use bus_find_device() as like such a | ||
449 | * library, binding directly ... no runtime "library" footprint is needed. | ||
450 | */ | ||
451 | static int __init at91_rtc_match(struct device *dev, void *v) | ||
452 | { | ||
453 | struct platform_device *pdev = to_platform_device(dev); | ||
454 | int ret; | ||
455 | |||
456 | /* continue searching if this isn't the RTT we need */ | ||
457 | if (strcmp("at91_rtt", pdev->name) != 0 | ||
458 | || pdev->id != CONFIG_RTC_DRV_AT91SAM9_RTT) | ||
459 | goto fail; | ||
460 | |||
461 | /* else we found it ... but fail unless we can bind to the RTC driver */ | ||
462 | if (dev->driver) { | ||
463 | dev_dbg(dev, "busy, can't use as RTC!\n"); | ||
464 | goto fail; | ||
465 | } | ||
466 | dev->driver = &at91_rtc_driver.driver; | ||
467 | if (device_attach(dev) == 0) { | ||
468 | dev_dbg(dev, "can't attach RTC!\n"); | ||
469 | goto fail; | ||
470 | } | ||
471 | ret = at91_rtc_probe(pdev); | ||
472 | if (ret == 0) | ||
473 | return true; | ||
474 | |||
475 | dev_dbg(dev, "RTC probe err %d!\n", ret); | ||
476 | fail: | ||
477 | return false; | ||
478 | } | ||
479 | |||
480 | static int __init at91_rtc_init(void) | 468 | static int __init at91_rtc_init(void) |
481 | { | 469 | { |
482 | int status; | 470 | return platform_driver_register(&at91_rtc_driver); |
483 | struct device *rtc; | ||
484 | |||
485 | status = platform_driver_register(&at91_rtc_driver); | ||
486 | if (status) | ||
487 | return status; | ||
488 | rtc = bus_find_device(&platform_bus_type, NULL, | ||
489 | NULL, at91_rtc_match); | ||
490 | if (!rtc) | ||
491 | platform_driver_unregister(&at91_rtc_driver); | ||
492 | return rtc ? 0 : -ENODEV; | ||
493 | } | 471 | } |
494 | module_init(at91_rtc_init); | 472 | module_init(at91_rtc_init); |
495 | 473 | ||
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c index 10605ecc99ab..f9a6be7a9bed 100644 --- a/drivers/tty/serial/atmel_serial.c +++ b/drivers/tty/serial/atmel_serial.c | |||
@@ -1526,6 +1526,8 @@ void __init atmel_register_uart_fns(struct atmel_port_fns *fns) | |||
1526 | atmel_pops.set_wake = fns->set_wake; | 1526 | atmel_pops.set_wake = fns->set_wake; |
1527 | } | 1527 | } |
1528 | 1528 | ||
1529 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
1530 | |||
1529 | #ifdef CONFIG_SERIAL_ATMEL_CONSOLE | 1531 | #ifdef CONFIG_SERIAL_ATMEL_CONSOLE |
1530 | static void atmel_console_putchar(struct uart_port *port, int ch) | 1532 | static void atmel_console_putchar(struct uart_port *port, int ch) |
1531 | { | 1533 | { |
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 7ecb68a67411..85ae4b46bb68 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig | |||
@@ -137,7 +137,7 @@ choice | |||
137 | 137 | ||
138 | config USB_AT91 | 138 | config USB_AT91 |
139 | tristate "Atmel AT91 USB Device Port" | 139 | tristate "Atmel AT91 USB Device Port" |
140 | depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45 | 140 | depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91SAM9G45 |
141 | help | 141 | help |
142 | Many Atmel AT91 processors (such as the AT91RM2000) have a | 142 | Many Atmel AT91 processors (such as the AT91RM2000) have a |
143 | full speed USB Device Port with support for five configurable | 143 | full speed USB Device Port with support for five configurable |
@@ -150,7 +150,7 @@ config USB_AT91 | |||
150 | config USB_ATMEL_USBA | 150 | config USB_ATMEL_USBA |
151 | tristate "Atmel USBA" | 151 | tristate "Atmel USBA" |
152 | select USB_GADGET_DUALSPEED | 152 | select USB_GADGET_DUALSPEED |
153 | depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 | 153 | depends on AVR32 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 |
154 | help | 154 | help |
155 | USBA is the integrated high-speed USB Device controller on | 155 | USBA is the integrated high-speed USB Device controller on |
156 | the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. | 156 | the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 143a7256b598..f99b3dc745bd 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/board.h> | 41 | #include <mach/board.h> |
42 | #include <mach/cpu.h> | 42 | #include <mach/cpu.h> |
43 | #include <mach/at91sam9261_matrix.h> | 43 | #include <mach/at91sam9261_matrix.h> |
44 | #include <mach/at91_matrix.h> | ||
44 | 45 | ||
45 | #include "at91_udc.h" | 46 | #include "at91_udc.h" |
46 | 47 | ||
@@ -910,9 +911,9 @@ static void pullup(struct at91_udc *udc, int is_on) | |||
910 | } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) { | 911 | } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) { |
911 | u32 usbpucr; | 912 | u32 usbpucr; |
912 | 913 | ||
913 | usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR); | 914 | usbpucr = at91_matrix_read(AT91_MATRIX_USBPUCR); |
914 | usbpucr |= AT91_MATRIX_USBPUCR_PUON; | 915 | usbpucr |= AT91_MATRIX_USBPUCR_PUON; |
915 | at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr); | 916 | at91_matrix_write(AT91_MATRIX_USBPUCR, usbpucr); |
916 | } | 917 | } |
917 | } else { | 918 | } else { |
918 | stop_activity(udc); | 919 | stop_activity(udc); |
@@ -928,9 +929,9 @@ static void pullup(struct at91_udc *udc, int is_on) | |||
928 | } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) { | 929 | } else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) { |
929 | u32 usbpucr; | 930 | u32 usbpucr; |
930 | 931 | ||
931 | usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR); | 932 | usbpucr = at91_matrix_read(AT91_MATRIX_USBPUCR); |
932 | usbpucr &= ~AT91_MATRIX_USBPUCR_PUON; | 933 | usbpucr &= ~AT91_MATRIX_USBPUCR_PUON; |
933 | at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr); | 934 | at91_matrix_write(AT91_MATRIX_USBPUCR, usbpucr); |
934 | } | 935 | } |
935 | clk_off(udc); | 936 | clk_off(udc); |
936 | } | 937 | } |
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index e2fb6d583bd9..ce9dffb0515d 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c | |||
@@ -332,12 +332,12 @@ static int vbus_is_present(struct usba_udc *udc) | |||
332 | 332 | ||
333 | static void toggle_bias(int is_on) | 333 | static void toggle_bias(int is_on) |
334 | { | 334 | { |
335 | unsigned int uckr = at91_sys_read(AT91_CKGR_UCKR); | 335 | unsigned int uckr = at91_pmc_read(AT91_CKGR_UCKR); |
336 | 336 | ||
337 | if (is_on) | 337 | if (is_on) |
338 | at91_sys_write(AT91_CKGR_UCKR, uckr | AT91_PMC_BIASEN); | 338 | at91_pmc_write(AT91_CKGR_UCKR, uckr | AT91_PMC_BIASEN); |
339 | else | 339 | else |
340 | at91_sys_write(AT91_CKGR_UCKR, uckr & ~(AT91_PMC_BIASEN)); | 340 | at91_pmc_write(AT91_CKGR_UCKR, uckr & ~(AT91_PMC_BIASEN)); |
341 | } | 341 | } |
342 | 342 | ||
343 | #else | 343 | #else |
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c index 6313e4439f37..4db399c01348 100644 --- a/drivers/usb/host/ohci-pxa27x.c +++ b/drivers/usb/host/ohci-pxa27x.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/signal.h> | 23 | #include <linux/signal.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/clk.h> | 25 | #include <linux/clk.h> |
26 | #include <mach/hardware.h> | ||
26 | #include <mach/ohci.h> | 27 | #include <mach/ohci.h> |
27 | #include <mach/pxa3xx-u2d.h> | 28 | #include <mach/pxa3xx-u2d.h> |
28 | 29 | ||
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index e1626a1d5c45..cce0820f3bc6 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c | |||
@@ -3272,11 +3272,6 @@ static void _omap_dispc_initial_config(void) | |||
3272 | if (dss_has_feature(FEAT_FUNCGATED)) | 3272 | if (dss_has_feature(FEAT_FUNCGATED)) |
3273 | REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9); | 3273 | REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9); |
3274 | 3274 | ||
3275 | /* L3 firewall setting: enable access to OCM RAM */ | ||
3276 | /* XXX this should be somewhere in plat-omap */ | ||
3277 | if (cpu_is_omap24xx()) | ||
3278 | __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0)); | ||
3279 | |||
3280 | _dispc_setup_color_conv_coef(); | 3275 | _dispc_setup_color_conv_coef(); |
3281 | 3276 | ||
3282 | dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY); | 3277 | dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY); |
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c index 77c2b5a32b5d..e6af8759f7dd 100644 --- a/drivers/video/omap2/dss/dss.c +++ b/drivers/video/omap2/dss/dss.c | |||
@@ -33,7 +33,10 @@ | |||
33 | #include <linux/pm_runtime.h> | 33 | #include <linux/pm_runtime.h> |
34 | 34 | ||
35 | #include <video/omapdss.h> | 35 | #include <video/omapdss.h> |
36 | |||
37 | #include <plat/cpu.h> | ||
36 | #include <plat/clock.h> | 38 | #include <plat/clock.h> |
39 | |||
37 | #include "dss.h" | 40 | #include "dss.h" |
38 | #include "dss_features.h" | 41 | #include "dss_features.h" |
39 | 42 | ||
diff --git a/drivers/video/omap2/vrfb.c b/drivers/video/omap2/vrfb.c index fd2271600370..4e5b960c32c8 100644 --- a/drivers/video/omap2/vrfb.c +++ b/drivers/video/omap2/vrfb.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/bitops.h> | 27 | #include <linux/bitops.h> |
28 | #include <linux/mutex.h> | 28 | #include <linux/mutex.h> |
29 | 29 | ||
30 | #include <mach/io.h> | ||
31 | #include <plat/vrfb.h> | 30 | #include <plat/vrfb.h> |
32 | #include <plat/sdrc.h> | 31 | #include <plat/sdrc.h> |
33 | 32 | ||
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c index b3046dc4b56c..7ceefd29ae14 100644 --- a/drivers/watchdog/at91rm9200_wdt.c +++ b/drivers/watchdog/at91rm9200_wdt.c | |||
@@ -51,7 +51,7 @@ static unsigned long at91wdt_busy; | |||
51 | */ | 51 | */ |
52 | static inline void at91_wdt_stop(void) | 52 | static inline void at91_wdt_stop(void) |
53 | { | 53 | { |
54 | at91_sys_write(AT91_ST_WDMR, AT91_ST_EXTEN); | 54 | at91_st_write(AT91_ST_WDMR, AT91_ST_EXTEN); |
55 | } | 55 | } |
56 | 56 | ||
57 | /* | 57 | /* |
@@ -59,9 +59,9 @@ static inline void at91_wdt_stop(void) | |||
59 | */ | 59 | */ |
60 | static inline void at91_wdt_start(void) | 60 | static inline void at91_wdt_start(void) |
61 | { | 61 | { |
62 | at91_sys_write(AT91_ST_WDMR, AT91_ST_EXTEN | AT91_ST_RSTEN | | 62 | at91_st_write(AT91_ST_WDMR, AT91_ST_EXTEN | AT91_ST_RSTEN | |
63 | (((65536 * wdt_time) >> 8) & AT91_ST_WDV)); | 63 | (((65536 * wdt_time) >> 8) & AT91_ST_WDV)); |
64 | at91_sys_write(AT91_ST_CR, AT91_ST_WDRST); | 64 | at91_st_write(AT91_ST_CR, AT91_ST_WDRST); |
65 | } | 65 | } |
66 | 66 | ||
67 | /* | 67 | /* |
@@ -69,7 +69,7 @@ static inline void at91_wdt_start(void) | |||
69 | */ | 69 | */ |
70 | static inline void at91_wdt_reload(void) | 70 | static inline void at91_wdt_reload(void) |
71 | { | 71 | { |
72 | at91_sys_write(AT91_ST_CR, AT91_ST_WDRST); | 72 | at91_st_write(AT91_ST_CR, AT91_ST_WDRST); |
73 | } | 73 | } |
74 | 74 | ||
75 | /* ......................................................................... */ | 75 | /* ......................................................................... */ |