diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-03-04 23:03:33 -0500 |
---|---|---|
committer | Rob Herring <rob.herring@calxeda.com> | 2012-03-06 22:34:43 -0500 |
commit | c334bc150524f833db3c76a0aaf55fb5044444e1 (patch) | |
tree | a29acb80a05bdca36547b973229582481727ee24 | |
parent | 41e32c906054be3a600cdeb69eb70350066e0a91 (diff) |
ARM: make mach/io.h include optional
Add a kconfig option NEED_MACH_IO_H to conditionally include mach/io.h.
Basing this on CONFIG_PCI and CONFIG_ISA doesn't quite work. Most ISA
platforms don't need mach/io.h, but ebsa110 does. Most PCI platforms need
mach/io.h for now, but ks8695 doesn't which means i/o accesses are broken.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
-rw-r--r-- | arch/arm/Kconfig | 23 | ||||
-rw-r--r-- | arch/arm/include/asm/io.h | 5 |
2 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f2574fef1e41..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. |
@@ -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/include/asm/io.h b/arch/arm/include/asm/io.h index 6f7555ddab8c..233034e46ec6 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h | |||
@@ -114,7 +114,12 @@ static inline void __iomem *__typesafe_io(unsigned long addr) | |||
114 | /* | 114 | /* |
115 | * Now, pick up the machine-defined IO definitions | 115 | * Now, pick up the machine-defined IO definitions |
116 | */ | 116 | */ |
117 | #ifdef CONFIG_NEED_MACH_IO_H | ||
117 | #include <mach/io.h> | 118 | #include <mach/io.h> |
119 | #else | ||
120 | #define __io(a) ({ (void)(a); __typesafe_io(0); }) | ||
121 | #define __mem_pci(a) (a) | ||
122 | #endif | ||
118 | 123 | ||
119 | /* | 124 | /* |
120 | * This is the limit of PC card/PCI/ISA IO space, which is by default | 125 | * This is the limit of PC card/PCI/ISA IO space, which is by default |