Subject: Re: pci-cardbus bridge woes
To: Jolan Luff <jolan@cryptonomicon.org>
From: Arthur Dimitrelis <adimitri@optusnet.com.au>
List: tech-kern
Date: 08/25/2002 09:04:16
Hi,

just as a stab in the dark, why don't you try adding

{ PCI_VENDOR_VIATECH,	PCI_PRODUCT_VIATECH_VT8233,
   via82c586_init }

to the pciintr_icu_table[] in sys/arc/i386/pci/pci_intr_fixup.c, and 
rebuild your kernel (you'll also need to make sure that 
PCI_PRODUCT_VIATECH_VT8233 is defined in sys/dev/pci/pcidevs.h).

So you should have something like:

sys/arc/i386/pci/pci_intr_fixup.c:
...
pciintr_icu_table[] = {
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82371MX,
	  piix_init },
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82371AB_ISA,
	  piix_init },
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82371FB_ISA,
	  piix_init },
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82371SB_ISA,
	  piix_init },
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82801BA_LPC,
	  piix_init },
	{ PCI_VENDOR_INTEL,	PCI_PRODUCT_INTEL_82801BAM_LPC,
	  piix_init },

	{ PCI_VENDOR_OPTI,	PCI_PRODUCT_OPTI_82C558,
	  opti82c558_init },
	{ PCI_VENDOR_OPTI,	PCI_PRODUCT_OPTI_82C700,
	  opti82c700_init },

	{ PCI_VENDOR_VIATECH,	PCI_PRODUCT_VIATECH_VT82C586_ISA,
	  via82c586_init },
	{ PCI_VENDOR_VIATECH,	PCI_PRODUCT_VIATECH_VT82C686A_ISA,
	  via82c586_init },
	{ PCI_VENDOR_VIATECH,	PCI_PRODUCT_VIATECH_VT8233,
  	  via82c586_init },

	{ PCI_VENDOR_SIS,	PCI_PRODUCT_SIS_85C503,
	  sis85c503_init },

	{ PCI_VENDOR_AMD,	PCI_PRODUCT_AMD_PBC756_PMC,
	  amd756_init },

	{ PCI_VENDOR_ALI,	PCI_PRODUCT_ALI_M1543,
	  ali1543_init },

	{ 0, 
		0,
	  NULL },
};

cheers,
Arthur

btw, let me know if this works!

Jolan Luff wrote:
> i have a pci cardbus adapter that i use in conjunction with my
> orinoco wavelan card.  unfortunately, my BIOS doesn't assign the
> card an interrupt correctly.  freebsd has some clever hacks to
> overcome this and the card does indeed get an interrupt assigned to
> it.  i made a kernel with all of the pcibios code and it didn't help
> any.  i also tried another kernel with PCI_INTR_FIXUP_FORCE enabled,
> but that didn't produce any results.  so i have a couple of
> questions here.
> 
> 1) some of the pcibios interrupt message don't make into the dmesg.
> anyway to fix this?
> 
> 2) can someone point me to a good source of information on how
> bioses map interrupts?  i'd really like to get a solid understanding
> of what is going on before i start trying to modify pcibios to use
> the hacks from freebsd.
> 
> 3) is there anyone who is good at this stuff that has any
> suggestions?
> 
> anyway. the dmesg output is below.
> 
> thanks,
> 
> - jolan
> 
> p.s. the card doesn't get an interrupt mapped under openbsd either.
> 
> 
>  0xdcf8
>                 INTC: link 0x03 bitmap 0xdcf8
>                 INTD: link 0x05 bitmap 0xdcf8
> PIR Entry 3:
>         Bus: 0  Device: 6
>                 INTA: link 0x02 bitmap 0xdcf8
>                 INTB: link 0x03 bitmap 0xdcf8
>                 INTC: link 0x05 bitmap 0xdcf8
>                 INTD: link 0x01 bitmap 0xdcf8
> PIR Entry 4:
>         Bus: 0  Device: 7
>                 INTA: link 0x03 bitmap 0xdcf8
>                 INTB: link 0x05 bitmap 0xdcf8
>                 INTC: link 0x01 bitmap 0xdcf8
>                 INTD: link 0x02 bitmap 0xdcf8
> PIR Entry 5:
>         Bus: 0  Device: 8
>                 INTA: link 0x05 bitmap 0xdcf8
>                 INTB: link 0x01 bitmap 0xdcf8
>                 INTC: link 0x02 bitmap 0xdcf8
>                 INTD: link 0x03 bitmap 0xdcf8
> PIR Entry 6:
>         Bus: 0  Device: 9
>                 INTA: link 0x01 bitmap 0xdcf8
>                 INTB: link 0x02 bitmap 0xdcf8
>                 INTC: link 0x03 bitmap 0xdcf8
>                 INTD: link 0x05 bitmap 0xdcf8
> PIR Entry 7:
>         Bus: 0  Device: 11
>                 INTA: link 0x01 bitmap 0xdcf8
>                 INTB: link 0x02 bitmap 0xdcf8
>                 INTC: link 0x03 bitmap 0xdcf8
>                 INTD: link 0x00 bitmap 0x0000
> PIR Entry 8:
>         Bus: 0  Device: 12
>                 INTA: link 0x02 bitmap 0xdcf8
>                 INTB: link 0x00 bitmap 0x0000
>                 INTC: link 0x00 bitmap 0x0000
>                 INTD: link 0x00 bitmap 0x0000
> PIR Entry 9:
>         Bus: 0  Device: 18
>                 INTA: link 0x01 bitmap 0xdcf8
>                 INTB: link 0x00 bitmap 0x0000
>                 INTC: link 0x00 bitmap 0x0000
>                 INTD: link 0x00 bitmap 0x0000
> pci_intr_fixup: no compatible PCI ICU found: ICU vendor 0x1106
>         product 0x3074
> pciintr_guess_irq (stage 1): guessing PIRQ 0xfe to be IRQ 14
> pciintr_guess_irq (stage 1): guessing PIRQ 0xff to be IRQ 15
> ------------------------------------------
>   device vendor product pin PIRQ IRQ stage
> ------------------------------------------
> pciintr_header_fixup: no entry for link 0x69 (0:1:0:@)
> 000:05:0 0x104c 0xac50   A  0x01   -  0    WARNING: missing IRQ
> 000:06:0 0x8086 0x1229   A  0x02   -  0   
> 000:17:2 0x1106 0x3038   D  0x05   -  0   
> 000:17:3 0x1106 0x3038   D  0x05   -  0   
> 000:17:5 0x1106 0x3059   C  0x03   -  0   
> ------------------------------------------
> PCI fixup examining 1106:3099
> PCI fixup examining 1106:b099
> PCI fixup examining 10de:110
> PCI bridge 0: primary 0, secondary 1, subordinate 1
> PCI fixup examining 104c:ac50
> PCI bridge 1: primary 0, secondary 2, subordinate 2
> PCI fixup examining 8086:1229
> PCI fixup examining 1106:3074
> PCI fixup examining 1106:571
> PCI fixup examining 1106:3038
> PCI fixup examining 1106:3038
> PCI fixup examining 1106:3059
> PCI bus #2 is the last bus
> [System BIOS Setting]-----------------------
>   device vendor product
>   register space address    size
> --------------------------------------------
> 000:00:0 0x1106 0x3099 
>         10h mem  0xe0000000 0x04000000
>                 [OK]
> 000:01:0 0x1106 0xb099 
>                 [OK]
> 000:05:0 0x104c 0xac50 
>         10h mem  0x00000000 0x00001000
>                 [NG]
> 000:06:0 0x8086 0x1229 
>         10h mem  0xdffff000 0x00001000
>         14h port 0x0000ec00 0x00000040
>         18h mem  0xdffc0000 0x00020000
>                 [OK]
> 000:17:0 0x1106 0x3074 
>                 [OK]
> 000:17:1 0x1106 0x0571 
>         20h port 0x0000fc00 0x00000010
>                 [OK]
> 000:17:2 0x1106 0x3038 
>         20h port 0x0000e000 0x00000020
>                 [OK]
> 000:17:3 0x1106 0x3038 
>         20h port 0x0000e400 0x00000020
>                 [OK]
> 000:17:5 0x1106 0x3059 
>         10h port 0x0000e800 0x00000100
>                 [OK]
> 001:00:0 0x10de 0x0110 
>         10h mem  0xde000000 0x01000000
>         14h mem  0xd0000000 0x08000000
>                 [OK]
> --------------------------[  1 devices bogus]
>  Physical memory end: 0x1ffee000
>  PCI memory mapped I/O space start: 0x20000000
> [PCIBIOS fixup stage]-----------------------
>   device vendor product
>   register space address    size
> --------------------------------------------
> 000:00:0 0x1106 0x3099 
>         10h mem  0xe0000000 0x04000000
>                 [OK]
> 000:01:0 0x1106 0xb099 
>                 [OK]
> 000:05:0 0x104c 0xac50 
>         10h mem  0x20000000 0x00001000
>                 [OK]
> 000:06:0 0x8086 0x1229 
>         10h mem  0xdffff000 0x00001000
>         14h port 0x0000ec00 0x00000040
>         18h mem  0xdffc0000 0x00020000
>                 [OK]
> 000:17:0 0x1106 0x3074 
>                 [OK]
> 000:17:1 0x1106 0x0571 
>         20h port 0x0000fc00 0x00000010
>                 [OK]
> 000:17:2 0x1106 0x3038 
>         20h port 0x0000e000 0x00000020
>                 [OK]
> 000:17:3 0x1106 0x3038 
>         20h port 0x0000e400 0x00000020
>                 [OK]
> 000:17:5 0x1106 0x3059
>         10h port 0x0000e800 0x00000100
>                 [OK]
> 001:00:0 0x10de 0x0110 
>         10h mem  0xde000000 0x01000000
>         14h mem  0xd0000000 0x08000000
>                 [OK]
> --------------------------[  0 devices bogus]
> mainbus0 (root)
> pci0 at mainbus0 bus 0: configuration mode 1
> pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
> pchb0 at pci0 dev 0 function 0
> pchb0: VIA Technologies VT8366 (Apollo KT266) CPU-PCI Bridge (rev.
> 0x00)
> agp0 at pchb0: aperture at 0xe0000000, size 0x10000000
> ppb0 at pci0 dev 1 function 0: VIA Technologies VT8366 CPU-AGP
> Bridge (rev. 0x00
> )
> pci1 at ppb0 bus 1
> pci1: i/o space, memory space enabled
> vga1 at pci1 dev 0 function 0: Nvidia Corporation GeForce2 MX [NV11]
> (rev. 0xb2)
> wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
> wsmux1: connecting to wsdisplay0
> Texas Instruments PCI1410 PCI-CardBus Bridge (CardBus bridge,
> revision 0x01) at 
> pci0 dev 5 function 0 not configured
> fxp0 at pci0 dev 6 function 0: i82550 Ethernet, rev 12
> fxp0: interrupting at irq 10
> fxp0: Ethernet address 00:02:b3:2b:12:7c
> inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
> inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
> pcib0 at pci0 dev 17 function 0
> pcib0: VIA Technologies VT8233 PCI-ISA Bridge (rev. 0x00)
> pciide0 at pci0 dev 17 function 1: VIA Technologies VT8233 ATA100
> controller
> pciide0: bus-master DMA support present
> pciide0: primary channel configured to compatibility mode
> wd0 at pciide0 channel 0 drive 0: <Maxtor 5T030H3>
> wd0: drive supports 16-sector PIO transfers, LBA addressing
> wd0: 29311 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 60030432
> sectors
> wd0: 32-bit data port
> wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5
> (Ultra/100)
> pciide0: primary channel interrupting at irq 14
> wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100)
> (using DMA data
>  transfers)
> pciide0: secondary channel configured to compatibility mode
> atapibus0 at pciide0 channel 1: 2 targets
> cd0 at atapibus0 drive 0: <HITACHI DVD-ROM GD-5000, , 0213> type 5
> cdrom removab
> le
> cd0: 32-bit data port
> cd0: drive supports PIO mode 4, DMA mode 2
> pciide0: secondary channel interrupting at irq 15
> cd0(pciide0:1:0): using PIO mode 4, DMA mode 2 (using DMA data
> transfers)
> uhci0 at pci0 dev 17 function 2: VIA Technologies VT83C572 USB
> Controller (rev. 
> 0x1b)
> uhci0: interrupting at irq 5
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0
> uhub0: VIA Technologie UHCI root hub, class 9/0, rev 1.00/1.00, addr
> 1
> uhub0: 2 ports with 2 removable, self powered
> uhci1 at pci0 dev 17 function 3: VIA Technologies VT83C572 USB
> Controller (rev. 
> 0x1b)
> uhci1: interrupting at irq 5
> usb1 at uhci1: USB revision 1.0
> uhub1 at usb1
> uhub1: VIA Technologie UHCI root hub, class 9/0, rev 1.00/1.00, addr
> 1
> uhub1: 2 ports with 2 removable, self powered
> auvia0 at pci0 dev 17 function 5: VIA VT8233 AC97 Audio
> auvia0: interrupting at irq 5
> auvia0: ALG16 codec; headphone, 18 bit DAC, 18 bit ADC, Realtek 3D
> audio0 at auvia0: full duplex, mmap, independent
> isa0 at pcib0
> com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
> com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
> pckbc0 at isa0 port 0x60-0x64
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pms0 at pckbc0 (aux slot)
> pckbc0: using irq 12 for aux slot
> wsmouse0 at pms0 mux 0
> lpt0 at isa0 port 0x378-0x37b irq 7
> pcppi0 at isa0 port 0x61
> midi0 at pcppi0: PC speaker
> sysbeep0 at pcppi0
> isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
> npx0 at isa0 port 0xf0-0xff: using exception 16
> fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
> fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
> isapnp0: no ISA Plug 'n Play devices found
> biomask eb65 netmask ef65 ttymask ffe7
> Kernelized RAIDframe activated
> uhub0: port error, restarting port 1
> uhub1: port error, restarting port 1
> uhub1: port error, giving up port 1
> uhub1: port error, restarting port 2
> uhub1: port error, giving up port 2
> ugen0 at uhub0 port 2
> ugen0: Logitech Camera, rev 1.00/1.00, addr 2
> boot device: wd0
> root on wd0a dumps on wd0b
> root file system type: ffs
> wsdisplay0: screen 1 added (80x25, vt100 emulation)
> wsdisplay0: screen 2 added (80x25, vt100 emulation)
> wsdisplay0: screen 3 added (80x25, vt100 emulation)
> wsdisplay0: screen 4 added (80x25, vt100 emulation)
> 
>