[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1daa9f1f-6a68-273f-0866-72a4496cd0db@hartkopp.net>
Date: Mon, 27 Feb 2023 20:07:16 +0100
From: Oliver Hartkopp <socketcan@...tkopp.net>
To: Arnd Bergmann <arnd@...nel.org>,
Dominik Brodowski <linux@...inikbrodowski.net>,
linux-kernel@...r.kernel.org
Cc: Arnd Bergmann <arnd@...db.de>, Bjorn Helgaas <bhelgaas@...gle.com>,
Florian Fainelli <f.fainelli@...il.com>,
H Hartley Sweeten <hsweeten@...ionengravers.com>,
Ian Abbott <abbotti@....co.uk>,
Jakub Kicinski <kuba@...nel.org>,
Kevin Cernekee <cernekee@...il.com>,
Lukas Wunner <lukas@...ner.de>,
Manuel Lauss <manuel.lauss@...il.com>,
Olof Johansson <olof@...om.net>,
Robert Jarzmik <robert.jarzmik@...e.fr>,
YOKOTA Hiroshi <yokota@...lab.is.tsukuba.ac.jp>,
bcm-kernel-feedback-list@...adcom.com,
linux-arm-kernel@...ts.infradead.org, linux-can@...r.kernel.org,
linux-mips@...r.kernel.org, linux-pci@...r.kernel.org,
linux-wireless@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [RFC 0/6] pcmcia: separate 16-bit support from cardbus
Hello Arnd,
On 27.02.23 14:34, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@...db.de>
(..)
> 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@owl.dominikbrodowski.net/
> [2] https://lore.kernel.org/all/c5b39544-a4fb-4796-a046-0b9be9853787@app.fastmail.com/
> [3] https://lore.kernel.org/all/20230222092302.6348-1-jirislaby@kernel.org/
>
> Cc: Bjorn Helgaas <bhelgaas@...gle.com>
> Cc: Dominik Brodowski <linux@...inikbrodowski.net>
> Cc: Florian Fainelli <f.fainelli@...il.com>
> Cc: H Hartley Sweeten <hsweeten@...ionengravers.com>
> Cc: Ian Abbott <abbotti@....co.uk>
> Cc: Jakub Kicinski <kuba@...nel.org>
> Cc: Kevin Cernekee <cernekee@...il.com>
> Cc: Lukas Wunner <lukas@...ner.de>
> Cc: Manuel Lauss <manuel.lauss@...il.com>
> Cc: Oliver Hartkopp <socketcan@...tkopp.net>
> Cc: Olof Johansson <olof@...om.net>
> Cc: Robert Jarzmik <robert.jarzmik@...e.fr>
> Cc: YOKOTA Hiroshi <yokota@...lab.is.tsukuba.ac.jp>
> Cc: bcm-kernel-feedback-list@...adcom.com
> Cc: linux-arm-kernel@...ts.infradead.org
> Cc: linux-can@...r.kernel.org
> Cc: linux-mips@...r.kernel.org
> Cc: linux-pci@...r.kernel.org
> Cc: linux-wireless@...r.kernel.org
> Cc: netdev@...r.kernel.org
>
> 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%)
>
Powered by blists - more mailing lists