ARM/ixp4xx: Make NEED_MACH_IO_H optional
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 29 Apr 2021 21:34:10 +0000 (23:34 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 Jun 2021 13:14:30 +0000 (15:14 +0200)
In order to create a proper PCI driver for the IXP4xx
we need to make the old PCI driver and its reliance
on <mach/io.h> optional.

Create a new Kconfig symbol for the legacy PCI driver
IXP4XX_PCI_LEGACY and only activate NEED_MACH_IO_H
for this driver.

A few files need to be adjusted to explicitly include
the <mach/hardware.h> and <mach/cpu.h> headers that
they previously obtained implicitly using <linux/io.h>
that would include <mach/io.h> and in turn include
these two headers.

This breaks our reliance on the old PCI and indirect
PCI support so we can reimplement a proper purely
DT-based driver in the PCI subsystem.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Imre Kaloz <kaloz@openwrt.org>
Cc: Krzysztof Halasa <khalasa@piap.pl>
Cc: Zoltan HERPAI <wigyori@uid0.hu>
Cc: Raylynn Knight <rayknight@me.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/Kconfig
arch/arm/mach-ixp4xx/Kconfig
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
drivers/ata/pata_ixp4xx_cf.c
drivers/net/ethernet/xscale/ixp4xx_eth.c
drivers/soc/ixp4xx/ixp4xx-npe.c
drivers/soc/ixp4xx/ixp4xx-qmgr.c

index 24804f1..819f0d0 100644 (file)
@@ -398,7 +398,8 @@ config ARCH_IXP4XX
        select HAVE_PCI
        select IXP4XX_IRQ
        select IXP4XX_TIMER
-       select NEED_MACH_IO_H
+       # With the new PCI driver this is not needed
+       select NEED_MACH_IO_H if PCI_IXP4XX_LEGACY
        select USB_EHCI_BIG_ENDIAN_DESC
        select USB_EHCI_BIG_ENDIAN_MMIO
        help
index 165c184..cabb372 100644 (file)
@@ -20,7 +20,7 @@ config MACH_IXP4XX_OF
 config MACH_NSLU2
        bool
        prompt "Linksys NSLU2"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Linksys's
          NSLU2 NAS device. For more information on this platform,
@@ -28,7 +28,7 @@ config MACH_NSLU2
 
 config MACH_AVILA
        bool "Avila"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support the Gateworks
          Avila Network Platform. For more information on this platform,
@@ -44,7 +44,7 @@ config MACH_LOFT
 
 config ARCH_ADI_COYOTE
        bool "Coyote"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support the ADI 
          Engineering Coyote Gateway Reference Platform. For more
@@ -52,7 +52,7 @@ config ARCH_ADI_COYOTE
 
 config MACH_GATEWAY7001
        bool "Gateway 7001"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Gateway's
          7001 Access Point. For more information on this platform,
@@ -60,7 +60,7 @@ config MACH_GATEWAY7001
 
 config MACH_WG302V2
        bool "Netgear WG302 v2 / WAG302 v2"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Netgear's
          WG302 v2 or WAG302 v2 Access Points. For more information
@@ -68,6 +68,7 @@ config MACH_WG302V2
 
 config ARCH_IXDP425
        bool "IXDP425"
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Intel's 
          IXDP425 Development Platform (Also known as Richfield).  
@@ -75,6 +76,7 @@ config ARCH_IXDP425
 
 config MACH_IXDPG425
        bool "IXDPG425"
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Intel's
          IXDPG425 Development Platform (Also known as Montajade).
@@ -120,7 +122,7 @@ config ARCH_PRPMC1100
 config MACH_NAS100D
        bool
        prompt "NAS100D"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Iomega's
          NAS 100d device. For more information on this platform,
@@ -129,7 +131,7 @@ config MACH_NAS100D
 config MACH_DSMG600
        bool
        prompt "D-Link DSM-G600 RevA"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support D-Link's
          DSM-G600 RevA device. For more information on this platform,
@@ -143,7 +145,7 @@ config      ARCH_IXDP4XX
 config MACH_FSG
        bool
        prompt "Freecom FSG-3"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Freecom's
          FSG-3 device. For more information on this platform,
@@ -152,7 +154,7 @@ config MACH_FSG
 config MACH_ARCOM_VULCAN
        bool
        prompt "Arcom/Eurotech Vulcan"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support Arcom's
          Vulcan board.
@@ -173,7 +175,7 @@ config CPU_IXP43X
 config MACH_GTWX5715
        bool "Gemtek WX5715 (Linksys WRV54G)"
        depends on ARCH_IXP4XX
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
                This board is currently inside the Linksys WRV54G Gateways.
 
@@ -196,7 +198,7 @@ config MACH_DEVIXP
 
 config MACH_MICCPT
        bool "Omicron MICCPT"
-       select FORCE_PCI
+       depends on IXP4XX_PCI_LEGACY
        help
          Say 'Y' here if you want your kernel to support the MICCPT
          board from OMICRON electronics GmbH.
@@ -209,9 +211,16 @@ config MACH_MIC256
 
 comment "IXP4xx Options"
 
+config IXP4XX_PCI_LEGACY
+       bool "IXP4xx legacy PCI driver support"
+       depends on PCI
+       help
+         Selects legacy PCI driver.
+         Not recommended for new development.
+
 config IXP4XX_INDIRECT_PCI
        bool "Use indirect PCI memory access"
-       depends on PCI
+       depends on IXP4XX_PCI_LEGACY
        help
           IXP4xx provides two methods of accessing PCI memory space:
 
index 000f672..431da1b 100644 (file)
@@ -32,7 +32,6 @@
 #include <linux/dma-map-ops.h>
 #include <mach/udc.h>
 #include <mach/hardware.h>
-#include <mach/io.h>
 #include <linux/uaccess.h>
 #include <asm/page.h>
 #include <asm/exception.h>
index 507ee38..844329c 100644 (file)
@@ -28,6 +28,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
+#include <mach/hardware.h>
 
 #include "irqs.h"
 
index 6959ad2..6133cf0 100644 (file)
@@ -33,6 +33,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
+#include <mach/hardware.h>
 
 #include "irqs.h"
 
index a428bb9..8526a70 100644 (file)
@@ -31,6 +31,7 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
 #include <asm/mach/time.h>
+#include <mach/hardware.h>
 
 #include "irqs.h"
 
index 43215a4..073c4e2 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/irq.h>
 #include <linux/platform_device.h>
 #include <scsi/scsi_host.h>
+#include <mach/hardware.h>
 
 #define DRV_NAME       "pata_ixp4xx_cf"
 #define DRV_VERSION    "0.2"
index cb89323..3624d92 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/module.h>
 #include <linux/soc/ixp4xx/npe.h>
 #include <linux/soc/ixp4xx/qmgr.h>
+#include <mach/hardware.h>
 
 #include "ixp46x_ts.h"
 
index ec90b44..0a16ac4 100644 (file)
@@ -20,6 +20,8 @@
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/soc/ixp4xx/npe.h>
+#include <mach/hardware.h>
+#include <mach/cpu.h>
 
 #define DEBUG_MSG                      0
 #define DEBUG_FW                       0
index 8c96838..1b1631a 100644 (file)
@@ -12,6 +12,8 @@
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/soc/ixp4xx/qmgr.h>
+#include <mach/hardware.h>
+#include <mach/cpu.h>
 
 static struct qmgr_regs __iomem *qmgr_regs;
 static int qmgr_irq_1;