Allow ISA-style drivers on modern systems
Subsystems (7)
v4 cover Allow ISA-style drivers on modern systems
Changes in v4:
- Remove unnecessary explicit "default n" from the X86 ISA_BUS Kconfig option since Kconfig options are disabled by default
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 | 9 +++++++++ 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, 20 insertions(+), 8 deletions(-)
Signature · 1 line
2.7.3
PATCH v4 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 | 9 +++++++++ drivers/base/Makefile | 2 +- include/linux/isa.h | 2 +- 4 files changed, 14 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 +9 -0
@@ -2439,6 +2439,15 @@ config PCI_CNB20LE_QUIRK source "drivers/pci/Kconfig" +config ISA_BUS + bool "ISA-style bus support on modern systems" if EXPERT + 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
Re: [PATCH v4 1/4] isa: Allow ISA-style drivers on modern systems
Quoted 13 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).
Quoted 6 lines
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]>
FWIW, looks good to me.
Quoted 74 lines
--- arch/Kconfig | 3 +++ arch/x86/Kconfig | 9 +++++++++ drivers/base/Makefile | 2 +- include/linux/isa.h | 2 +- 4 files changed, 14 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 +9
-0@@ -2439,6 +2439,15 @@ config PCI_CNB20LE_QUIRK source "drivers/pci/Kconfig" +config ISA_BUS + bool "ISA-style bus support on modern systems" if EXPERT + 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 v4 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
Re: [PATCH v4 2/4] gpio: Allow PC/104 devices on X86_64
Quoted 8 lines · William Breathitt Gray
With the introduction of the
ISA_BUS_APIKconfigoption, ISA-style drivers may be built forX86_64architectures. This patch changes the ISAKconfigoption dependency of the PC/104 drivers toISA_BUS_API, thus allowing them to build forX86_64as they are expected to.Cc Guenter Roeck <[email protected]>Cc Linus Walleij <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>
Quoted 47 lines
--- 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 portSignature · 1 line
2.7.3
PATCH v4 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
Re: [PATCH v4 3/4] iio: stx104: Allow build for X86_64
Quoted 20 lines · William Breathitt Gray
With the introduction of the
ISA_BUS_APIKconfigoption, ISA-style drivers may be built forX86_64architectures. This patch changes the ISAKconfigoption dependency of the Apex Embedded Systems STX104 DAC driver toISA_BUS_API, thus allowing it to build forX86_64as it is expected to.Cc Hartmut Knaack <[email protected]>Cc Lars-Peter Clausen <lars-Qo5EllUWu/[email protected]>Cc Peter Meerwald-Stadler <[email protected]>Cc Jonathan Cameron <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>--- drivers/iio/dac/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/iio/dac/Kconfig +0
-0
drivers/iio/dac/Kconfig config MCP4922 · line 250
Quoted 5 lines
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
Assuming the dropped dependency on X86 is intentional:
Quoted 10 lines
drivers/iio/dac/Kconfig +0
-0help Say yes here to build support for the 2-channel DAC on the Apex Embedded Systems STX104 integrated analog PC/104 card. The base portSignature · 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
Re: [PATCH v4 3/4] iio: stx104: Allow build for X86_64
Quoted 22 lines · Guenter Roeck
Quoted 21 lines · William Breathitt Gray
With the introduction of the
ISA_BUS_APIKconfigoption, ISA-style drivers may be built forX86_64architectures. This patch changes the ISAKconfigoption dependency of the Apex Embedded Systems STX104 DAC driver toISA_BUS_API, thus allowing it to build forX86_64as it is expected to.Cc Hartmut Knaack <[email protected]>Cc Lars-Peter Clausen <lars-Qo5EllUWu/[email protected]>Cc Peter Meerwald-Stadler <[email protected]>Cc Jonathan Cameron <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>--- drivers/iio/dac/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/iio/dac/Kconfig +0
-0@@ -247,7 +247,7 @@ config MCP4922
Quoted 8 lines
drivers/iio/dac/Kconfig config MCP4922 · line 250
Quoted 4 lines
drivers/iio/dac/Kconfig +1
-1config STX104 tristate "Apex Embedded Systems STX104 DAC driver" - depends on X86 && ISA + depends on ISA_BUS_APIAssuming the dropped dependency on X86 is intentional:
Reviewed-by Guenter Roeck <[email protected]>
Thanks for the review Guenter: losing the X86 dependency was not intentional; it looks like I forgot to adjust this when I made ISA_BUS_API available to all architectures. I'll submit version 5 with the explicit X86 dependency back in place for CONFIG_STX104 and CONFIG_EBC_C384_WDT.
William Breathitt Gray
--
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
Guenter Roeck
maintainerRe: [PATCH v4 3/4] iio: stx104: Allow build for X86_64
Quoted 30 lines · William Breathitt Gray
Quoted 29 lines · Guenter Roeck
Quoted 20 lines · William Breathitt Gray
With the introduction of the
ISA_BUS_APIKconfigoption, ISA-style drivers may be built forX86_64architectures. This patch changes the ISAKconfigoption dependency of the Apex Embedded Systems STX104 DAC driver toISA_BUS_API, thus allowing it to build forX86_64as it is expected to.Cc Hartmut Knaack <[email protected]>Cc Lars-Peter Clausen <lars-Qo5EllUWu/[email protected]>Cc Peter Meerwald-Stadler <[email protected]>Cc Jonathan Cameron <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>--- drivers/iio/dac/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/iio/dac/Kconfig +0
-0drivers/iio/dac/Kconfig config MCP4922 · line 250
Quoted 5 lines
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_APIAssuming the dropped dependency on X86 is intentional:
Quoted 8 lines
Quoted 1 line
Reviewed-by Guenter Roeck <[email protected]>Thanks for the review Guenter: losing the X86 dependency was not intentional; it looks like I forgot to adjust this when I made
ISA_BUS_APIavailable to all architectures. I'll submit version 5 with the explicit X86 dependency back in place forCONFIG_STX104andCONFIG_EBC_C384_WDT.
Ok. Feel free to keep my Reviewed-by: tag unless you make further changes.
Guenter
--
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 v4 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