Re: [PATCH] arch/arm/Kconfig: Make UIO available on ARM architecture

Sam Ravnborg
2008-02-07T20:23:39Z

On Thu, Feb 07, 2008 at 04:05:58PM +0000, Russell King - ARM Linux wrote:
> On Thu, Feb 07, 2008 at 04:09:34PM +0100, Marcin Juszkiewicz wrote:
> > Dnia Thursday, 7 of February 2008, Sam Ravnborg napisał:
> > > On Thu, Feb 07, 2008 at 07:58:24AM -0500, Christoph Hellwig wrote:
> >
> > > > Any chance to make arm finally use drivers/Kconfig? It's a bit silly
> > > > that arm still is crapping around while even s390 uses it.
> >
> > > rmk said that it should be easy to check the amount of work needed to
> > > do so. But I have not had time to look into it yet - hopefully someone
> > > in ARM land could fix it.
> >
> > I looked at it and 'arch/arm/Kconfig' does not source few entries:
>
> diff -u arch/arm/Kconfig drivers/Kconfig shows the situation. This is
> why I insist that new entries to arch/arm/Kconfig should be in the same
> order as drivers/Kconfig.
>
> > Including of 'drivers/mtd' depends on "ALIGNMENT_TRAP || !CPU_CP15_MMU".
>
> It's this which is the main issue.
>
> > Including of 'drivers/ide' depends on "PCMCIA || ARCH_CLPS7500 ||
> > ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX || ARCH_L7200 ||
> > ARCH_LH7A40X || ARCH_PXA || ARCH_RPC || ARCH_S3C2410 || ARCH_SA1100 ||
> > ARCH_SHARK || FOOTBRIDGE || ARCH_IXP23XX" but 'drivers/ata' (which can be
> > used instead on PCMCIA enabled platforms) does not depend on such set.
>
> IDE people insisted that we _will_ have that silly conditional for IDE.
> I personally do not want it and would be happy to see it go - but I
> don't have the authority to do that. Take this one up with Bart.

Both situations are trivially fixable by introducing
HAVE_IDE and HAVE_MTD.
See attached patch.

My quick scan told me that only S390 and UM did not
support IDE neither MTD.
ARM is the only one where IDE and MTD support is conditional
and the rest you select them unconditionally.

Does this look acceptable?

Sam

diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 01b10ab..46049fa 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -5,6 +5,8 @@
config ALPHA
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
help
The Alpha is a 64-bit general-purpose processor designed and
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e19e774..58c7eb4 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -23,6 +23,16 @@ config ARM
config SYS_SUPPORTS_APM_EMULATION
bool

+# if PCMCIA is selected then we need IDE
+config ARM_PCMCIA
+ depends on PCMCIA
+ select HAVE_IDE
+
+# select MTD except in a few corner configuration cases
+config ARM_MTD
+ depends on ALIGNMENT_TRAP || !CPU_CP15_MMU
+ select HAVE_MTD
+
config GENERIC_GPIO
bool
default n
@@ -219,6 +229,7 @@ config ARCH_CLPS7500
select TIMER_ACORN
select ISA
select NO_IOPORT
+ select HAVE_IDE
help
Support for the Cirrus Logic PS7500FE system-on-a-chip.

@@ -231,6 +242,7 @@ config ARCH_CO285
bool "Co-EBSA285"
select FOOTBRIDGE
select FOOTBRIDGE_ADDIN
+ select HAVE_IDE
help
Support for Intel's EBSA285 companion chip.

@@ -255,6 +267,7 @@ config ARCH_EP93XX
config ARCH_FOOTBRIDGE
bool "FootBridge"
select FOOTBRIDGE
+ select HAVE_IDE
help
Support for systems based on the DC21285 companion chip
("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
@@ -293,6 +306,7 @@ config ARCH_IOP32X
depends on MMU
select PLAT_IOP
select PCI
+ select HAVE_IDE
help
Support for Intel's 80219 and IOP32X (XScale) family of
processors.
@@ -302,12 +316,14 @@ config ARCH_IOP33X
depends on MMU
select PLAT_IOP
select PCI
+ select HAVE_IDE
help
Support for Intel's IOP33X (XScale) family of processors.

config ARCH_IXP23XX
bool "IXP23XX-based"
depends on MMU
+ select HAVE_IDE
select PCI
help
Support for Intel's IXP23xx (XScale) family of processors.
@@ -325,12 +341,14 @@ config ARCH_IXP4XX
select GENERIC_GPIO
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
+ select HAVE_IDE
help
Support for Intel's IXP4XX (XScale) family of processors.

config ARCH_L7200
bool "LinkUp-L7200"
select FIQ
+ select HAVE_IDE
help
Say Y here if you intend to run this kernel on a LinkUp Systems
L7200 Software Development Board which uses an ARM720T processor.
@@ -385,6 +403,7 @@ config ARCH_PXA
depends on MMU
select ARCH_MTD_XIP
select GENERIC_GPIO
+ select HAVE_IDE
select HAVE_GPIO_LIB
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
@@ -400,6 +419,7 @@ config ARCH_RPC
select ARCH_MAY_HAVE_PC_FDC
select ISA_DMA_API
select NO_IOPORT
+ select HAVE_IDE
help
On the Acorn Risc-PC, Linux can support the internal IDE disk and
CD-ROM interface, serial and parallel port, and the floppy drive.
@@ -411,12 +431,14 @@ config ARCH_SA1100
select ARCH_MTD_XIP
select GENERIC_GPIO
select GENERIC_TIME
+ select HAVE_IDE
help
Support for StrongARM 11x0 based boards.

config ARCH_S3C2410
bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443"
select GENERIC_GPIO
+ select HAVE_IDE
help
Samsung S3C2410X CPU based systems, such as the Simtec Electronics
BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or
@@ -424,6 +446,7 @@ config ARCH_S3C2410

config ARCH_SHARK
bool "Shark"
+ select HAVE_IDE
select ISA
select ISA_DMA
select PCI
@@ -433,6 +456,7 @@ config ARCH_SHARK

config ARCH_LH7A40X
bool "Sharp LH7A40X"
+ select HAVE_IDE
help
Say Y here for systems based on one of the Sharp LH7A40X
System on a Chip processors. These CPUs include an ARM922T
@@ -1076,9 +1100,7 @@ source "drivers/base/Kconfig"

source "drivers/connector/Kconfig"

-if ALIGNMENT_TRAP || !CPU_CP15_MMU
source "drivers/mtd/Kconfig"
-endif

source "drivers/parport/Kconfig"

@@ -1090,12 +1112,7 @@ source "drivers/block/Kconfig"

source "drivers/misc/Kconfig"

-if PCMCIA || ARCH_CLPS7500 || ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX \
- || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
- || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \
- || ARCH_IXP23XX
source "drivers/ide/Kconfig"
-endif

source "drivers/scsi/Kconfig"

diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index 28e0caf..1be1893 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -10,6 +10,8 @@ config AVR32
# With EMBEDDED=n, we get lots of stuff automatically selected
# that we usually don't need on AVR32.
select EMBEDDED
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
select HAVE_KPROBES
help
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index ba21e33..2c989e3 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -24,6 +24,8 @@ config RWSEM_XCHGADD_ALGORITHM
config BLACKFIN
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE

config ZONE_DMA
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 27b082a..13c40a1 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -54,6 +54,8 @@ config NO_IOPORT
config CRIS
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

source "init/Kconfig"

diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 96f7d70..08f4332 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -5,6 +5,8 @@
config FRV
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

config ZONE_DMA
bool
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index dc61222..5f12412 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -8,6 +8,8 @@ mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration"
config H8300
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

config MMU
bool
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index b0de113..765c17a 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -15,6 +15,8 @@ config IA64
select ACPI if (!IA64_HP_SIM)
select PM if (!IA64_HP_SIM)
select ARCH_SUPPORTS_MSI
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
select HAVE_KPROBES
default y
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index 795180b..4615ead 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -8,6 +8,8 @@ mainmenu "Linux/M32R Kernel Configuration"
config M32R
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE

config SBUS
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index ffabd01..182c798 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -5,6 +5,8 @@
config M68K
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

config MMU
bool
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index 6abbbb8..8008f4d 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -8,6 +8,8 @@ mainmenu "uClinux/68k (w/o MMU) Kernel Configuration"
config M68K
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

config MMU
bool
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index ec78a57..13d36c8 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1,6 +1,8 @@
config MIPS
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
# Horrible source of confusion. Die, die, die ...
select EMBEDDED
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 028d8a0..8511f43 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -7,6 +7,8 @@ mainmenu "Linux/PA-RISC Kernel Configuration"

config PARISC
def_bool y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
help
The PA-RISC microprocessor is designed by Hewlett-Packard and used
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 8dcac0b..8038ab7 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -87,6 +87,8 @@ config ARCH_NO_VIRT_TO_BUS
config PPC
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
select HAVE_KPROBES

diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
index 531156f..11ea57e 100644
--- a/arch/ppc/Kconfig
+++ b/arch/ppc/Kconfig
@@ -42,6 +42,8 @@ config GENERIC_CALIBRATE_DELAY
config PPC
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
select HAVE_KPROBES

diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 1c3a908..29890ac 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -8,6 +8,8 @@ mainmenu "Linux/SuperH Kernel Configuration"
config SUPERH
def_bool y
select EMBEDDED
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
help
The SuperH is a RISC processor targeted for use in embedded systems
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 99f8971..e51bbdd 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -62,6 +62,8 @@ config NR_CPUS
config SPARC
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE

# Identify this as a Sparc32 build
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index a8c6366..9d60b26 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -14,6 +14,8 @@ config SPARC
config SPARC64
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
help
SPARC is a family of RISC microprocessors designed and marketed by
Sun Microsystems, incorporated. This port covers the newer 64-bit
diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig
index ace479a..9317fd1 100644
--- a/arch/v850/Kconfig
+++ b/arch/v850/Kconfig
@@ -75,6 +75,8 @@ config MCA
config V850
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD

menu "Processor type and features"

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index c95482b..cc20002 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -18,6 +18,8 @@ config X86_64
### Arch settings
config X86
def_bool y
+ select HAVE_IDE
+ select HAVE_MTD
select HAVE_OPROFILE
select HAVE_KPROBES

diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 5d5546c..e438ab2 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -14,6 +14,8 @@ config ZONE_DMA
config XTENSA
bool
default y
+ select HAVE_IDE
+ select HAVE_MTD
help
Xtensa processors are 32-bit RISC machines designed by Tensilica
primarily for embedded systems. These processors are both
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index ab8fb25..043c34a 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -4,10 +4,14 @@
# Andre Hedrick <andre@linux-ide.org>
#

+# Select HAVE_IDE if IDE is supported
+config HAVE_IDE
+ def_bool n
+
menuconfig IDE
tristate "ATA/ATAPI/MFM/RLL support"
+ depends on HAVE_IDE
depends on BLOCK
- depends on HAS_IOMEM
---help---
If you say Y here, your kernel will be able to manage low cost mass
storage units such as ATA/(E)IDE and ATAPI units. The most common
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index e850334..9365d8b 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -1,8 +1,11 @@
# $Id: Kconfig,v 1.11 2005/11/07 11:14:19 gleixner Exp $

+# select if MTD is supported
+config HAVE_MTD
+ def_bool n
+
menuconfig MTD
tristate "Memory Technology Device (MTD) support"
- depends on HAS_IOMEM
help
Memory Technology Devices are flash, RAM and similar chips, often
used for solid state file systems on embedded devices. This option