Paolo, Am 27.10.2024 um 04:42 schrieb Paolo Pisati:
Hi there, attached is a driver for the pcmcia side of C='s gayle - it's a WIP, as such there are many dev_dbg()/pr_err()/pr_dbg() scattered around, you've been warned. It recognize all pcmcia cards i tried (IOW gayle's attribute space is read and parsed correctly), socket's interrupt work (IOW you can plug & unplug cards), but *it seems* any I/O read operation return bogus data (e.g. 0xff or 0xfff). Here's a dmesg dealing with with a 3Com 3c589 ethernet card: http://dpaste.com//84TPTPLNV - notice the "hw_addr ff:ff:ff:ff:ff:ff" or "exiting interrupt, status ffff". AFAIK inb()/inw() already add the GAYLE_IO offset (
Correct.
AG_ISA_IO_B and AG_ISA_IO_W in arch/m68k/include/asm/io_mm.h), and i didn't know if i could read directly (without an ioremap() first), so i tried both cases:
AFAIK the Gayle MMIO region is already mapped in head.S, and does not need ioremap() at all.
1) ioreamp() sock->phys_io, and subtract the GAYLE_IO offset (see sock->socket.io_offset). or 2) set Amiga base IO port to 0x0 and patch drivers/pcmcia/rsrc_mgr.c::static_find_io() (see https://dpaste.com//B75LTFF3V) In both case the 3c589_cs driver request an I/O aperture at 0x0300, large 0x0010, receives it, but all read operations return 0xff or 0xffff.
Can you post your .config? I wonder whether the CONFIG_ATARI_ROM_ISA option is set, because that would mess up inb()/outb() for ports < 0x400.
Cheers, Michael
Any idea? Any guess is welcome since i'm running out of ideas ATM. Paolo Pisati (1): pcmcia: gayle: initial support arch/m68k/amiga/pcmcia.c | 5 + arch/m68k/amiga/platform.c | 29 +++ arch/m68k/include/asm/amipcmcia.h | 11 ++ drivers/pcmcia/Kconfig | 8 + drivers/pcmcia/Makefile | 1 + drivers/pcmcia/gayle.c | 307 ++++++++++++++++++++++++++++++ 6 files changed, 361 insertions(+) create mode 100644 drivers/pcmcia/gayle.c