Date: Tue, 26 Oct 1999 10:58:34 -0700 (PDT) From: Doug Ambrisko <ambrisko@whistle.com> To: imp@village.org (Warner Losh) Cc: mark@grondar.za, mobile@FreeBSD.ORG Subject: Re: PCIC/Libretto brokenness - fixed! Message-ID: <199910261758.KAA10547@whistle.com> In-Reply-To: <199910260336.VAA45912@harmony.village.org> from Warner Losh at "Oct 25, 99 09:36:16 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Warner Losh writes: | In message <199910260317.FAA08954@gratis.grondar.za> Mark Murray writes: | : Order could be it according to my faulty memory of MSmith's | : description; something to do with the probe (?) or init | : code setting the PCIC into cardbus mode, and the later | : code then not finding it? | | I know that the pcic_p driver tries to set the cardbus bridge device | into legacy mode. Since it is a pci device, it gets probed first. | This allows the isa code to later probe to find it. This is a hold | over from the past initialization hack that put pcic last in kernel | init process. In reality, pcic_p should be its own attachment, but | talking to the cardbus device in non-legacy mode is somewhat different | than talking to a pcic, if my reading of the newconfig code is right, | so we've not done that. As a follow on to this. I tried your code on 3 machines. Nec 6030X, Thinkpad 770Z, Generic PC with ISA PCCard adapter. On the Nec 6030X I got the dreaded: chip1: <Intel 82371MX mobile PCI I/O IDE accelerator (MPIIX)> at device 1.0 on pci0 vga-pci0: <Chips & Technologies model 00e0 VGA-compatible display device> at device 2.0 on pci0 pcic0: <TI PCI-1130 PCI-CardBus Bridge> at device 3.0 on pci0 pcic1: <TI PCI-1130 PCI-CardBus Bridge> at device 3.1 on pci0 devclass_alloc_unit: pcic0 already exists, using next available unit number devclass_alloc_unit: pcic1 already exists, using next available unit number isa0: <ISA bus> on motherboard and no card device created so things didn't work. I nuke the contents of sys/pci/pcic_p.c and rebuilt. Now it got further chip2: <PCI to CardBus bridge (vendor=104c device=ac12)> at device 3.0 on pci0 chip3: <PCI to CardBus bridge (vendor=104c device=ac12)> at device 3.1 on pci0 pcic: polling, can't alloc 0 pcic: polling, can't alloc 0 pcic0: <VLSI 82C146> on isa0 pccard0: <PC Card bus -- kludge version> on pcic0 sio_pccard_probe: Does anonymous match? ed_pccard_probe: Does anonymous match? ep_pccard_probe: Does anonymous match? pccard1: <PC Card bus -- kludge version> on pcic0 sio_pccard_probe: Does anonymous match? ed_pccard_probe: Does anonymous match? ep_pccard_probe: Does anonymous match? And then I got endless splx & splhigh for pcicintr. It also didn't detect PCCard insertions. So it looks like polled mode is broken. I then hard coded for now the pcic_intr to 15 and then life was good. So it looks like trying to allocate an available pcic_intr is broken. Now I get chip2: <PCI to CardBus bridge (vendor=104c device=ac12)> at device 3.0 on pci0 chip3: <PCI to CardBus bridge (vendor=104c device=ac12)> at device 3.1 on pci0 pcic0: <VLSI 82C146> at irq 15 on isa0 pccard0: <PC Card bus -- kludge version> on pcic0 sio_pccard_probe: Does anonymous match? ed_pccard_probe: Does anonymous match? ep_pccard_probe: Does anonymous match? pccard1: <PC Card bus -- kludge version> on pcic0 sio_pccard_probe: Does anonymous match? ed_pccard_probe: Does anonymous match? ep_pccard_probe: Does anonymous match? And life is good: pccard: card inserted, slot 1 devclass_alloc_unit: ed0 already exists, using next available unit number ed_pccard_probe: Does ed match? ed1 at port 0x300-0x31f irq 11 slot 1 on pccard0 ed1: address 00:80:c6:fe:1f:fd, type NE2000 (16 bit) splhigh for pcicintr splx pccard: card inserted, slot 0 devclass_alloc_unit: sio2 already exists, using next available unit number sio_pccard_probe: Does sio match? sio4: configured irq 1 not in bitmap of probed irqs 0 sio4 at port 0x3e8-0x3ef irq 9 slot 0 on pccard0 sio4: type 16550A Both cards work! I haven't run the full set of experiments on all machines yet, but the IBM 770z -> same problem as NEC 6030X PC & ISA PCCard adapter -> didn't locate a free IRQ for pcic_intr. So my observations so far. - The pcic stuff in the sys/pci/pcic_p.c is confusing things, bad side effect? - Polled mode of the pcic controller is broken - Allocating a free pcic_intr is broken I'm going to do some more playing around and try to dig up my TI specs for PCCard controller and play around with this stuff some more. Also I'm going to work on making the new ata driver with this new code (I had some hacks before to make it work with the old stuff) which support external IDE devices such as CD-RW, Hard drive, Zip etc (ie the Microtech stuff or addonics). Once I get this somewhat stable, then I'll start to track the new stuff (to support Cardbus). BTW and recommendation on CardBus Ethernet cards? I may get 2 since I use two PCMCIA in my laptop. Thanks, we seem to be making good progress. Doug A. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910261758.KAA10547>