aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-03-04 23:03:33 -0500
committerRob Herring <rob.herring@calxeda.com>2012-03-06 22:34:43 -0500
commitc334bc150524f833db3c76a0aaf55fb5044444e1 (patch)
treea29acb80a05bdca36547b973229582481727ee24
parent41e32c906054be3a600cdeb69eb70350066e0a91 (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/Kconfig23
-rw-r--r--arch/arm/include/asm/io.h5
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
220config 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
220config NEED_MACH_MEMORY_H 227config 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