Skip site navigation (1)Skip section navigation (2)
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>