[RFC 6/6] pci: hotplug: move cardbus code from drivers/pcmcia

From: Arnd Bergmann
Date: Mon Feb 27 2023 - 08:37:07 EST


From: Arnd Bergmann <arnd@xxxxxxxx>

16-bit pcmcia and 32-bit cardbus code are now completely separate
code bases, with the cardbus implementation just interfacig with
the PCI core for hotplugging cards, so move it to the same place
as the other PCI hotplug drivers.

The pcmcia/i82365.h header file is the only bit that contains shared
definitions for common registers.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
---
drivers/Makefile | 2 +-
drivers/pci/hotplug/Kconfig | 56 +++++++++++++++++++
drivers/pci/hotplug/Makefile | 1 +
.../{pcmcia => pci/hotplug}/yenta_socket.c | 2 +-
drivers/pcmcia/Kconfig | 56 -------------------
drivers/pcmcia/Makefile | 3 -
drivers/pcmcia/i82092.c | 2 +-
drivers/pcmcia/i82365.c | 2 +-
drivers/pcmcia/pd6729.c | 3 +-
{drivers => include}/pcmcia/i82365.h | 0
10 files changed, 62 insertions(+), 65 deletions(-)
rename drivers/{pcmcia => pci/hotplug}/yenta_socket.c (99%)
rename {drivers => include}/pcmcia/i82365.h (100%)

diff --git a/drivers/Makefile b/drivers/Makefile
index bdf1c66141c9..900a37a1b401 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -93,7 +93,7 @@ obj-$(CONFIG_UIO) += uio/
obj-$(CONFIG_VFIO) += vfio/
obj-y += cdrom/
obj-y += auxdisplay/
-obj-$(CONFIG_PCCARD) += pcmcia/
+obj-$(CONFIG_PCMCIA) += pcmcia/
obj-$(CONFIG_DIO) += dio/
obj-$(CONFIG_SBUS) += sbus/
obj-$(CONFIG_ZORRO) += zorro/
diff --git a/drivers/pci/hotplug/Kconfig b/drivers/pci/hotplug/Kconfig
index 48113b210cf9..83941cb45291 100644
--- a/drivers/pci/hotplug/Kconfig
+++ b/drivers/pci/hotplug/Kconfig
@@ -161,4 +161,60 @@ config HOTPLUG_PCI_S390

When in doubt, say Y.

+config CARDBUS
+ tristate "32-bit CardBus support"
+ depends on PCI
+ select YENTA
+ default PCCARD
+ help
+ CardBus is a bus mastering architecture for PC-cards, which allows
+ for 32 bit PC-cards (the original PCMCIA standard specifies only
+ a 16 bit wide bus). Many newer PC-cards are actually CardBus cards.
+
+ To use 32 bit PC-cards, you also need a CardBus compatible host
+ bridge. Virtually all modern PCMCIA bridges do this, and most of
+ them are "yenta-compatible", so say Y or M there, too.
+
+ If unsure, say Y.
+
+config YENTA
+ tristate "CardBus yenta-compatible bridge support" if EXPERT
+ depends on PCI && CARDBUS
+ default y
+ help
+ This option enables support for CardBus host bridges. Virtually
+ all modern PCMCIA bridges are CardBus compatible. A "bridge" is
+ the hardware inside your computer that PCMCIA cards are plugged
+ into.
+
+ To compile this driver as modules, choose M here: the
+ module will be called yenta_socket.
+
+ If unsure, say Y.
+
+config YENTA_O2
+ default y
+ bool "Special initialization for O2Micro bridges" if EXPERT
+ depends on YENTA
+
+config YENTA_RICOH
+ default y
+ bool "Special initialization for Ricoh bridges" if EXPERT
+ depends on YENTA
+
+config YENTA_TI
+ default y
+ bool "Special initialization for TI and EnE bridges" if EXPERT
+ depends on YENTA
+
+config YENTA_ENE_TUNE
+ default y
+ bool "Auto-tune EnE bridges for CB cards" if EXPERT
+ depends on YENTA_TI && CARDBUS
+
+config YENTA_TOSHIBA
+ default y
+ bool "Special initialization for Toshiba ToPIC bridges" if EXPERT
+ depends on YENTA
+
endif # HOTPLUG_PCI
diff --git a/drivers/pci/hotplug/Makefile b/drivers/pci/hotplug/Makefile
index 5196983220df..8b655c283565 100644
--- a/drivers/pci/hotplug/Makefile
+++ b/drivers/pci/hotplug/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_HOTPLUG_PCI_RPA) += rpaphp.o
obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR) += rpadlpar_io.o
obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o
obj-$(CONFIG_HOTPLUG_PCI_S390) += s390_pci_hpc.o
+obj-$(CONFIG_CARDBUS) += yenta_socket.o

# acpiphp_ibm extends acpiphp, so should be linked afterwards.

diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pci/hotplug/yenta_socket.c
similarity index 99%
rename from drivers/pcmcia/yenta_socket.c
rename to drivers/pci/hotplug/yenta_socket.c
index 68b852f18cbb..3b530ce76809 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pci/hotplug/yenta_socket.c
@@ -34,7 +34,7 @@
#include <linux/timer.h>
#include <linux/workqueue.h>
#include <asm/irq.h>
-#include "i82365.h"
+#include <pcmcia/i82365.h>

/* Definitions for card status flags for GetStatus */
#define SS_WRPROT 0x0001
diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig
index c05d95cf7d3e..3c4b895dba80 100644
--- a/drivers/pcmcia/Kconfig
+++ b/drivers/pcmcia/Kconfig
@@ -53,67 +53,11 @@ config PCMCIA_LOAD_CIS

If unsure, say Y.

-config CARDBUS
- tristate "32-bit CardBus support"
- depends on PCI
- select YENTA
- default y
- help
- CardBus is a bus mastering architecture for PC-cards, which allows
- for 32 bit PC-cards (the original PCMCIA standard specifies only
- a 16 bit wide bus). Many newer PC-cards are actually CardBus cards.
-
- To use 32 bit PC-cards, you also need a CardBus compatible host
- bridge. Virtually all modern PCMCIA bridges do this, and most of
- them are "yenta-compatible", so say Y or M there, too.
-
- If unsure, say Y.
-
config PCMCIA_MAX1600
tristate

comment "PC-card bridges"

-config YENTA
- tristate "CardBus yenta-compatible bridge support" if EXPERT
- depends on PCI && CARDBUS
- default y
- help
- This option enables support for CardBus host bridges. Virtually
- all modern PCMCIA bridges are CardBus compatible. A "bridge" is
- the hardware inside your computer that PCMCIA cards are plugged
- into.
-
- To compile this driver as modules, choose M here: the
- module will be called yenta_socket.
-
- If unsure, say Y.
-
-config YENTA_O2
- default y
- bool "Special initialization for O2Micro bridges" if EXPERT
- depends on YENTA
-
-config YENTA_RICOH
- default y
- bool "Special initialization for Ricoh bridges" if EXPERT
- depends on YENTA
-
-config YENTA_TI
- default y
- bool "Special initialization for TI and EnE bridges" if EXPERT
- depends on YENTA
-
-config YENTA_ENE_TUNE
- default y
- bool "Auto-tune EnE bridges for CB cards" if EXPERT
- depends on YENTA_TI && CARDBUS
-
-config YENTA_TOSHIBA
- default y
- bool "Special initialization for Toshiba ToPIC bridges" if EXPERT
- depends on YENTA
-
config PD6729
tristate "Cirrus PD6729 compatible bridge support"
depends on PCMCIA && PCI
diff --git a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile
index 4d0af3e27c1c..481468778f46 100644
--- a/drivers/pcmcia/Makefile
+++ b/drivers/pcmcia/Makefile
@@ -14,9 +14,6 @@ obj-$(CONFIG_PCMCIA) += pcmcia_rsrc.o


# socket drivers
-
-obj-$(CONFIG_YENTA) += yenta_socket.o
-
obj-$(CONFIG_PD6729) += pd6729.o
obj-$(CONFIG_I82365) += i82365.o
obj-$(CONFIG_I82092) += i82092.o
diff --git a/drivers/pcmcia/i82092.c b/drivers/pcmcia/i82092.c
index a335748bdef5..b74eb77e7489 100644
--- a/drivers/pcmcia/i82092.c
+++ b/drivers/pcmcia/i82092.c
@@ -17,11 +17,11 @@
#include <linux/device.h>

#include <pcmcia/ss.h>
+#include <pcmcia/i82365.h>

#include <linux/io.h>

#include "i82092aa.h"
-#include "i82365.h"

MODULE_LICENSE("GPL");

diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index 891ccea2cccb..bb4045b4613a 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -54,7 +54,7 @@
#include <linux/isapnp.h>

/* ISA-bus controllers */
-#include "i82365.h"
+#include <pcmcia/i82365.h>
#include "cirrus.h"
#include "vg468.h"
#include "ricoh.h"
diff --git a/drivers/pcmcia/pd6729.c b/drivers/pcmcia/pd6729.c
index a0a2e7f18356..ec8c093e7fd0 100644
--- a/drivers/pcmcia/pd6729.c
+++ b/drivers/pcmcia/pd6729.c
@@ -18,10 +18,9 @@
#include <linux/io.h>

#include <pcmcia/ss.h>
-
+#include <pcmcia/i82365.h>

#include "pd6729.h"
-#include "i82365.h"
#include "cirrus.h"

MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/i82365.h b/include/pcmcia/i82365.h
similarity index 100%
rename from drivers/pcmcia/i82365.h
rename to include/pcmcia/i82365.h
--
2.39.2