Allow ISA-style drivers on modern systems
Subsystems (7)
v3 cover Allow ISA-style drivers on modern systems
Changes in v3:
- Remove redundant X86 dependency from the X86 ISA_BUS Kconfig option
Changes in v2:
- Adjusted preprocessor compilation conditional in include/linux/isa.h to use CONFIG_ISA_BUS_API in order to link the correct ISA bus driver function definitions when available
- Move ISA_BUS_API Kconfig option to arch/Kconfig, thus making it available to all architectures instead of just X86
- X86 ISA_BUS Kconfig option should be disabled by default; ISA devices typically do not have a way to be probed, so users should be required to explicitly enable ISA bus driver support, lest a selected driver be loaded with the misguided expectation of a safe hardware probe
Several modern devices, such as PC/104 cards, are expected to run on modern systems via an ISA bus interface. Since ISA is a legacy interface for most modern architectures, ISA support should remain disabled in general. Support for ISA-style drivers should be enabled on a per driver basis.
To allow ISA-style drivers on modern systems, this patchset introduces the ISA_BUS_API and ISA_BUS Kconfig options. The ISA bus driver will now build conditionally on the ISA_BUS_API Kconfig option, which defaults to the legacy ISA Kconfig option. The ISA_BUS Kconfig option allows the ISA_BUS_API Kconfig option to be selected on architectures which do not enable ISA (e.g. X86_64).
The ISA_BUS Kconfig option is currently only implemented for X86 architectures. Other architectures may have their own ISA_BUS Kconfig option added as required.
An earlier attempt to allow the ISA bus driver to build for X86_64 took an inappropriate approach resulting in legacy ISA drivers becoming enabled unconditionally on untested and unsupported architectures. Commit 51e68d055cba ("x86 isa: add back X86_32 dependency on CONFIG_ISA"), added to restrict the ISA bus driver to only X86_32, causes several drivers intended for X86_64 to be restricted to X86_32 as well.
This patchset replaces the ISA Kconfig option dependency of several drivers to ISA_BUS_API, so that they may build for X86_64 as intended. The respective drivers are as follows:
* ACCES 104-IDIO-16 GPIO driver
* ACCES 104-IDI-48 GPIO driver
* ACCES 104-DIO-48E GPIO driver
* Apex Embedded Systems STX104 DAC driver
* WinSystems EBC-C384 watchdog timer driver
* WinSystems WS16C48 GPIO driver
William Breathitt Gray (4):
isa: Allow ISA-style drivers on modern systems
gpio: Allow PC/104 devices on X86_64
iio: stx104: Allow build for X86_64
watchdog: ebc-c384_wdt: Allow build for X86_64
arch/Kconfig | 3 +++ arch/x86/Kconfig | 10 ++++++++++ drivers/base/Makefile | 2 +- drivers/gpio/Kconfig | 8 ++++---- drivers/iio/dac/Kconfig | 2 +- drivers/watchdog/Kconfig | 2 +- include/linux/isa.h | 2 +- 7 files changed, 21 insertions(+), 8 deletions(-)
Signature · 1 line
2.7.3
PATCH v3 1/4 isa: Allow ISA-style drivers on modern systems
Several modern devices, such as PC/104 cards, are expected to run on modern systems via an ISA bus interface. Since ISA is a legacy interface for most modern architectures, ISA support should remain disabled in general. Support for ISA-style drivers should be enabled on a per driver basis.
To allow ISA-style drivers on modern systems, this patch introduces the ISA_BUS_API and ISA_BUS Kconfig options. The ISA bus driver will now build conditionally on the ISA_BUS_API Kconfig option, which defaults to the legacy ISA Kconfig option. The ISA_BUS Kconfig option allows the ISA_BUS_API Kconfig option to be selected on architectures which do not enable ISA (e.g. X86_64).
The ISA_BUS Kconfig option is currently only implemented for X86 architectures. Other architectures may have their own ISA_BUS Kconfig options added as required.
--- arch/Kconfig | 3 +++ arch/x86/Kconfig | 10 ++++++++++ drivers/base/Makefile | 2 +- include/linux/isa.h | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-)
arch/Kconfig +3 -0
@@ -598,6 +598,9 @@ config HAVE_STACK_VALIDATION Architecture supports the 'objtool check' host tool command, which performs compile-time stack metadata validation. +config ISA_BUS_API + def_bool ISA + # # ABI hall of shame #
arch/x86/Kconfig +10 -0
@@ -2439,6 +2439,16 @@ config PCI_CNB20LE_QUIRK source "drivers/pci/Kconfig" +config ISA_BUS + bool "ISA-style bus support on modern systems" if EXPERT + default n + select ISA_BUS_API + help + Enables ISA-style drivers on modern systems. This is necessary to + support PC/104 devices on X86_64 platforms. + + If unsure, say N. + # x86_64 have no ISA slots, but can have ISA-style DMA. config ISA_DMA_API bool "ISA-style DMA support" if (X86_64 && EXPERT)
drivers/base/Makefile +1 -1
@@ -10,7 +10,7 @@ obj-$(CONFIG_DMA_CMA) += dma-contiguous.o obj-y += power/ obj-$(CONFIG_HAS_DMA) += dma-mapping.o obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o -obj-$(CONFIG_ISA) += isa.o +obj-$(CONFIG_ISA_BUS_API) += isa.o obj-$(CONFIG_FW_LOADER) += firmware_class.o obj-$(CONFIG_NUMA) += node.o obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o
include/linux/isa.h +1 -1
@@ -22,7 +22,7 @@ struct isa_driver {#define to_isa_driver (x) container_of((x), struct isa_driver, driver) -#ifdef CONFIG_ISA +#ifdef CONFIG_ISA_BUS_API int isa_register_driver (struct isa_driver *,unsigned int );void isa_unregister_driver (struct isa_driver *);#else
Signature · 1 line
2.7.3
Guenter Roeck
maintainerRe: [PATCH v3 1/4] isa: Allow ISA-style drivers on modern systems
Quoted 45 lines · William Breathitt Gray
Several modern devices, such as PC/104 cards, are expected to run on modern systems via an ISA bus interface. Since ISA is a legacy interface for most modern architectures, ISA support should remain disabled in general. Support for ISA-style drivers should be enabled on a per driver basis.
To allow ISA-style drivers on modern systems, this patch introduces the
ISA_BUS_APIandISA_BUSKconfigoptions. The ISA bus driver will now build conditionally on theISA_BUS_APIKconfigoption, which defaults to the legacy ISAKconfigoption. TheISA_BUSKconfigoption allows theISA_BUS_APIKconfigoption to be selected on architectures which do not enable ISA (e.g.X86_64).The
ISA_BUSKconfigoption is currently only implemented for X86 architectures. Other architectures may have their ownISA_BUSKconfigoptions added as required.Cc Linus Torvalds <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>--- arch/Kconfig | 3 +++ arch/x86/Kconfig | 10 ++++++++++ drivers/base/Makefile | 2 +- include/linux/isa.h | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-)arch/Kconfig +3
-0@@ -598,6 +598,9 @@ config HAVE_STACK_VALIDATION Architecture supports the 'objtool check' host tool command, which performs compile-time stack metadata validation. +config ISA_BUS_API + def_bool ISA + # # ABI hall of shame #arch/x86/Kconfig +0
-0
arch/x86/Kconfig config PCI_CNB20LE_QUIRK · line 2444
Quoted 6 lines
arch/x86/Kconfig +3
-0@@ -2439,6 +2439,16 @@ config PCI_CNB20LE_QUIRK source "drivers/pci/Kconfig" +config ISA_BUS + bool "ISA-style bus support on modern systems" if EXPERT + default n
I don't think an explicit "default n" is necessary.
Quoted 43 lines
arch/x86/Kconfig +7
-0+ select ISA_BUS_API + help + Enables ISA-style drivers on modern systems. This is necessary to + support PC/104 devices on X86_64 platforms. + + If unsure, say N. + # x86_64 have no ISA slots, but can have ISA-style DMA. config ISA_DMA_API bool "ISA-style DMA support" if (X86_64 && EXPERT)drivers/base/Makefile +1
-1@@ -10,7 +10,7 @@ obj-$(CONFIG_DMA_CMA) += dma-contiguous.o obj-y += power/ obj-$(CONFIG_HAS_DMA) += dma-mapping.o obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o -obj-$(CONFIG_ISA) += isa.o +obj-$(CONFIG_ISA_BUS_API) += isa.o obj-$(CONFIG_FW_LOADER) += firmware_class.o obj-$(CONFIG_NUMA) += node.o obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.oinclude/linux/isa.h +1
-1@@ -22,7 +22,7 @@ struct isa_driver {#define to_isa_driver (x) container_of((x), struct isa_driver, driver) -#ifdef CONFIG_ISA +#ifdef CONFIG_ISA_BUS_API int isa_register_driver (struct isa_driver *,unsigned int );void isa_unregister_driver (struct isa_driver *);#else Signature · 6 lines
2.7.3 -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v3 2/4 gpio: Allow PC/104 devices on X86_64
In reply to William Breathitt GrayWith the introduction of the ISA_BUS_API Kconfig option, ISA-style drivers may be built for X86_64 architectures. This patch changes the ISA Kconfig option dependency of the PC/104 drivers to ISA_BUS_API, thus allowing them to build for X86_64 as they are expected to.
--- drivers/gpio/Kconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/gpio/Kconfig +4 -4
@@ -530,7 +530,7 @@ menu "Port-mapped I/O GPIO drivers" config GPIO_104_DIO_48E tristate "ACCES 104-DIO-48E GPIO support" - depends on ISA + depends on ISA_BUS_API select GPIOLIB_IRQCHIP help Enables GPIO support for the ACCES 104-DIO-48E series (104-DIO-48E,
@@ -540,7 +540,7 @@ config GPIO_104_DIO_48E config GPIO_104_IDIO_16 tristate "ACCES 104-IDIO-16 GPIO support" - depends on ISA + depends on ISA_BUS_API select GPIOLIB_IRQCHIP help Enables GPIO support for the ACCES 104-IDIO-16 family (104-IDIO-16,
@@ -551,7 +551,7 @@ config GPIO_104_IDIO_16 config GPIO_104_IDI_48 tristate "ACCES 104-IDI-48 GPIO support" - depends on ISA + depends on ISA_BUS_API select GPIOLIB_IRQCHIP help Enables GPIO support for the ACCES 104-IDI-48 family (104-IDI-48A,
@@ -627,7 +627,7 @@ config GPIO_TS5500 config GPIO_WS16C48 tristate "WinSystems WS16C48 GPIO support" - depends on ISA + depends on ISA_BUS_API select GPIOLIB_IRQCHIP help Enables GPIO support for the WinSystems WS16C48. The base port
Signature · 1 line
2.7.3
PATCH v3 3/4 iio: stx104: Allow build for X86_64
In reply to William Breathitt GrayWith the introduction of the ISA_BUS_API Kconfig option, ISA-style drivers may be built for X86_64 architectures. This patch changes the ISA Kconfig option dependency of the Apex Embedded Systems STX104 DAC driver to ISA_BUS_API, thus allowing it to build for X86_64 as it is expected to.
--- drivers/iio/dac/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/dac/Kconfig +1 -1
@@ -247,7 +247,7 @@ config MCP4922 config STX104 tristate "Apex Embedded Systems STX104 DAC driver" - depends on X86 && ISA + depends on ISA_BUS_API help Say yes here to build support for the 2-channel DAC on the Apex Embedded Systems STX104 integrated analog PC/104 card. The base port
Signature · 1 line
2.7.3
PATCH v3 4/4 watchdog: ebc-c384_wdt: Allow build for X86_64
In reply to William Breathitt GrayWith the introduction of the ISA_BUS_API Kconfig option, ISA-style drivers may be built for X86_64 architectures. This patch changes the ISA Kconfig option dependency of the WinSystems EBC-C384 watchdog timer driver to ISA_BUS_API, thus allowing it to build for X86_64 as it is expected to.
--- drivers/watchdog/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/watchdog/Kconfig +1 -1
@@ -746,7 +746,7 @@ config ALIM7101_WDT config EBC_C384_WDT tristate "WinSystems EBC-C384 Watchdog Timer" - depends on X86 && ISA + depends on ISA_BUS_API select WATCHDOG_CORE help Enables watchdog timer support for the watchdog timer on the
Signature · 1 line
2.7.3