Re: [RFC 0/6] pcmcia: separate 16-bit support from cardbus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Arnd,

On 27.02.23 14:34, Arnd Bergmann wrote:
From: Arnd Bergmann <arnd@xxxxxxxx>

(..)

The remaining cardbus/yenta support is essentially a PCI hotplug driver
with a slightly unusual sysfs interface, and it would still support all
32-bit cardbus hosts and cards, but no longer work with the even older
16-bit cards that require the pcmcia_driver infrastructure.

I'm using a 2005 Samsung X20 laptop (Pentium M 1.6GHz, Centrino) with PCMCIA (type 2) CAN bus cards:

- EMS PCMCIA
https://elixir.bootlin.com/linux/latest/source/drivers/net/can/sja1000/ems_pcmcia.c

- PEAK PCCard
https://elixir.bootlin.com/linux/latest/source/drivers/net/can/sja1000/peak_pcmcia.c

As I still maintain the EMS PCMCIA and had to tweak and test a patch recently (with a 5.16-rc2 kernel):

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/net/can/sja1000/ems_pcmcia.c?id=3ec6ca6b1a8e64389f0212b5a1b0f6fed1909e45

I assume these CAN bus PCMCIA interfaces won't work after your patch set, right?

Here is the dmesg output of the PCMCIA driver and the CAN drivers from the 5.16-rc2 kernel:

[   17.167938] yenta_cardbus 0000:02:09.0: CardBus bridge found [144d:c01a]
[   17.304252] yenta_cardbus 0000:02:09.0: ISA IRQ mask 0x0cb8, PCI irq 16
[   17.304266] yenta_cardbus 0000:02:09.0: Socket status: 30000006
[ 17.304275] yenta_cardbus 0000:02:09.0: pcmcia: parent PCI bridge window: [io 0x4000-0x4fff] [ 17.304282] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x4000-0x4fff:
[   17.305582]  excluding 0x4000-0x40ff 0x4400-0x44ff
[ 17.318112] yenta_cardbus 0000:02:09.0: pcmcia: parent PCI bridge window: [mem 0xb8000000-0xb80fffff] [ 17.318122] pcmcia_socket pcmcia_socket0: cs: memory probe 0xb8000000-0xb80fffff:
[   17.318129]  excluding 0xb8000000-0xb801ffff
[   18.481675] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x100-0x3af:
[   18.482680]  excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377
[   18.483428] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x3e0-0x4ff:
[   18.484196]  excluding 0x3f0-0x3f7 0x4d0-0x4d7
[   18.484570] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x820-0x8ff:
[   18.485149]  clean
[   18.485178] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xc00-0xcf7:
[   18.485818]  clean
[ 18.485856] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff:
[   18.485863]  excluding 0xc0000-0xc7fff 0xd8000-0xfffff
[ 18.485908] pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff:
[   18.485929]  clean
[ 18.485958] pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff:
[   18.485972]  excluding 0x60000000-0x60ffffff
[   18.486005] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xa00-0xaff:
[   18.486663]  clean

(..)

[ 176.999473] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0 [ 176.999489] pcmcia_socket pcmcia_socket0: cs: memory probe 0xb8020000-0xb80fffff:
[  177.009792]  clean
[  177.010039] pcmcia 0.0: pcmcia: registering new device pcmcia0.0 (IRQ: 3)
[  177.119671] CAN device driver interface
[  177.140214] sja1000 CAN netdevice driver
[ 177.204920] ems_pcmcia: registered can0 on channel #0 at 0xbd4852ee, irq 3 [ 177.212167] ems_pcmcia: registered can1 on channel #1 at 0x081f55b8, irq 3 [ 1003.014730] pcmcia_socket pcmcia_socket0: pccard: card ejected from slot 0
[ 1003.014801] ems_pcmcia: removing can0 on channel #0
[ 1003.027520] ems_pcmcia: removing can1 on channel #1
[ 1019.943489] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0
[ 1019.943715] pcmcia 0.0: pcmcia: registering new device pcmcia0.0 (IRQ: 3)
[ 1020.035605] peak_pcmcia 0.0: PEAK-System pcmcia card PC_CAN_CARD fw 1.5
[ 1020.039539] peak_pcmcia 0.0: can0 on channel 0 at 0x55749494 irq 3
[ 1020.045816] peak_pcmcia 0.0: can1 on channel 1 at 0x415066ba irq 3

Best regards,
Oliver



I don't expect this to be a problem normal laptop support, as the last
PC models that predate Cardbus support (e.g. 1997 ThinkPad 380ED) are
all limited to i586MMX CPUs and 80MB of RAM. This is barely enough to
boot Tiny Core Linux but not a regular distro.

Support for device drivers is somewhat less clear. Losing support for
16-bit cards in cardbus sockets is obviously a limiting factor for
anyone who still has those cards, but there is also a good chance that
the only reason to keep the cards around is for using them in pre-cardbus
machines that cannot be upgrade to 32-bit devices.

Completely removing the 16-bit PCMCIA support would however break some
20+ year old embedded machines that rely on CompactFlash cards as their
mass-storage device (extension), this notably includes early PocketPC
models and the reference implementations for OMAP1, StrongARM1100,
Alchemy and PA-Semi. All of these are still maintained, though most
of the PocketPC machines got removed in the 6.3 merge window and the
PA-Semi Electra board is the only one that was introduced after
2003.

The approach that I take in this series is to split drivers/pcmcia
into two mutually incompatible parts: the Cardbus support contains
all the code that is relevant for post-1997 laptops and gets moved
to drivers/pci/hotplug, while the drivers/pcmcia/ subsystem is
retained for both the older laptops and the embedded systems but no
longer works with the yenta socket host driver. The BCM63xx
PCMCIA/Cardbus host driver appears to be unused and conflicts with
this series, so it is removed in the process.

My series does not touch any of the pcmcia_driver instances, but
if there is consensus about splitting out the cardbus support,
a lot of them can probably get removed as a follow-up.

[1] https://lore.kernel.org/all/Y07d7rMvd5++85BJ@xxxxxxxxxxxxxxxxxxxxxxxx/
[2] https://lore.kernel.org/all/c5b39544-a4fb-4796-a046-0b9be9853787@xxxxxxxxxxxxxxxx/
[3] https://lore.kernel.org/all/20230222092302.6348-1-jirislaby@xxxxxxxxxx/

Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
Cc: Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx>
Cc: Florian Fainelli <f.fainelli@xxxxxxxxx>
Cc: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx>
Cc: Ian Abbott <abbotti@xxxxxxxxx>
Cc: Jakub Kicinski <kuba@xxxxxxxxxx>
Cc: Kevin Cernekee <cernekee@xxxxxxxxx>
Cc: Lukas Wunner <lukas@xxxxxxxxx>
Cc: Manuel Lauss <manuel.lauss@xxxxxxxxx>
Cc: Oliver Hartkopp <socketcan@xxxxxxxxxxxx>
Cc: Olof Johansson <olof@xxxxxxxxx>
Cc: Robert Jarzmik <robert.jarzmik@xxxxxxx>
Cc: YOKOTA Hiroshi <yokota@xxxxxxxxxxxxxxxxxxxxxxx>
Cc: bcm-kernel-feedback-list@xxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-can@xxxxxxxxxxxxxxx
Cc: linux-mips@xxxxxxxxxxxxxxx
Cc: linux-pci@xxxxxxxxxxxxxxx
Cc: linux-wireless@xxxxxxxxxxxxxxx
Cc: netdev@xxxxxxxxxxxxxxx

Arnd Bergmann (6):
   pccard: remove bcm63xx socket driver
   pccard: split cardbus support from pcmcia
   yenta_socket: copy pccard core code into driver
   yenta_socket: remove dead code
   pccard: drop remnants of cardbus support
   pci: hotplug: move cardbus code from drivers/pcmcia

  arch/mips/bcm63xx/Makefile                    |    2 +-
  arch/mips/bcm63xx/boards/board_bcm963xx.c     |   14 -
  arch/mips/bcm63xx/dev-pcmcia.c                |  144 -
  arch/mips/configs/bcm63xx_defconfig           |    1 -
  .../asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h     |   14 -
  arch/mips/pci/ops-bcm63xx.c                   |  294 --
  arch/mips/pci/pci-bcm63xx.c                   |   44 -
  drivers/Makefile                              |    2 +-
  drivers/pci/hotplug/Kconfig                   |   56 +
  drivers/pci/hotplug/Makefile                  |    1 +
  drivers/pci/hotplug/yenta_socket.c            | 4056 +++++++++++++++++
  drivers/pcmcia/Kconfig                        |   63 +-
  drivers/pcmcia/Makefile                       |   13 +-
  drivers/pcmcia/bcm63xx_pcmcia.c               |  538 ---
  drivers/pcmcia/bcm63xx_pcmcia.h               |   61 -
  drivers/pcmcia/cardbus.c                      |  124 -
  drivers/pcmcia/cistpl.c                       |   10 +-
  drivers/pcmcia/cs.c                           |  103 +-
  drivers/pcmcia/cs_internal.h                  |   10 +-
  drivers/pcmcia/ds.c                           |   14 +-
  drivers/pcmcia/i82092.c                       |    2 +-
  drivers/pcmcia/i82365.c                       |    2 +-
  drivers/pcmcia/o2micro.h                      |  183 -
  drivers/pcmcia/pd6729.c                       |    3 +-
  drivers/pcmcia/ricoh.h                        |  169 -
  drivers/pcmcia/socket_sysfs.c                 |    2 -
  drivers/pcmcia/ti113x.h                       |  978 ----
  drivers/pcmcia/topic.h                        |  168 -
  drivers/pcmcia/yenta_socket.c                 | 1455 ------
  drivers/pcmcia/yenta_socket.h                 |  136 -
  {drivers => include}/pcmcia/i82365.h          |    0
  include/pcmcia/ss.h                           |   21 -
  32 files changed, 4147 insertions(+), 4536 deletions(-)
  delete mode 100644 arch/mips/bcm63xx/dev-pcmcia.c
  delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h
  create mode 100644 drivers/pci/hotplug/yenta_socket.c
  delete mode 100644 drivers/pcmcia/bcm63xx_pcmcia.c
  delete mode 100644 drivers/pcmcia/bcm63xx_pcmcia.h
  delete mode 100644 drivers/pcmcia/cardbus.c
  delete mode 100644 drivers/pcmcia/o2micro.h
  delete mode 100644 drivers/pcmcia/ti113x.h
  delete mode 100644 drivers/pcmcia/topic.h
  delete mode 100644 drivers/pcmcia/yenta_socket.c
  delete mode 100644 drivers/pcmcia/yenta_socket.h
  rename {drivers => include}/pcmcia/i82365.h (100%)




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux