Subject: MPC5200 PCI interrupt routing

From: Juergen Beisert <[email-masked]>
Date: Mon, 22 Sep 2008 15:56:33 +0200

Hi,

my MPC5200 based platform has one PCI slot, with the following interrupt
routing:

PCI slot  MPC5200
 INT A     IRQ0
 INT B     IRQ1
 INT C     IRQ2
 INT D     IRQ3

In my oftree I'm using these lines to describe this routing (slot's IDSEL is
0x18)

[...]
       pci@f0000d00 {
               #interrupt-cells = <1>;
               #size-cells = <2>;
               #address-cells = <3>;
               device_type = "pci";
               compatible = "fsl,mpc5200b-pci","fsl,mpc5200-pci";
               reg = <0xf0000d00 0x100>;
               interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
               interrupt-map = <0xc000 0x0 0x0 0x1 &mpc5200_pic 0x0 0x0 0x3
                                0xc000 0x0 0x0 0x2 &mpc5200_pic 0x1 0x1 0x3
                                0xc000 0x0 0x0 0x3 &mpc5200_pic 0x1 0x2 0x3
                                0xc000 0x0 0x0 0x4 &mpc5200_pic 0x1 0x3 0x3
                               >;
               clock-frequency = <0>; // From boot loader
               interrupts = <0x2 0x8 0x0 0x2 0x9 0x0 0x2 0xa 0x0>;
               interrupt-parent = <&mpc5200_pic>;
               bus-range = <0 0>;
               ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x20000000
                         0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
                         0x01000000 0x0 0x00000000 0xb0000000 0x0 0x01000000>;
       };
[...]

First: But /proc/interrupts states "Edge" type. From the documentation "0x3"
(the last number per interrupt-map-line) should be "low level", not "edge".

$ cat /proc/interrupts
           CPU0
 16:          0   MPC52xx IRQ[0-3]  Edge      uhci_hcd:usb3
 65:          0   MPC52xx IRQ[0-3]  Edge      uhci_hcd:usb4
 66:          5   MPC52xx IRQ[0-3]  Edge      ehci_hcd:usb2
131:      58585  MPC52xx Peripherals Edge      mpc52xx_psc_uart
133:          0  MPC52xx Peripherals Edge      mpc52xx-fec_ctrl
134:         34  MPC52xx Peripherals Edge      ohci_hcd:usb1
135:          0  MPC52xx Peripherals Edge      mpc52xx_ata
143:          0  MPC52xx Peripherals Edge      i2c-mpc
144:         36  MPC52xx Peripherals Edge      i2c-mpc
192:       5815  MPC52xx SDMA Edge      mpc52xx-fec_rx
193:       4512  MPC52xx SDMA Edge      mpc52xx-fec_tx
BAD:          0

Second: When I load the drivers for the uhci/ehci PCI card I get:

[...]
usb 1-1: new high speed USB device using ehci_hcd and address 2
usb 1-1: device not accepting address 2, error -110
usb 1-1: new high speed USB device using ehci_hcd and address 3
usb 1-1: device descriptor read/64, error -110
usb 1-1: device descriptor read/64, error -110
usb 1-1: new high speed USB device using ehci_hcd and address 4
usb 1-1: device not accepting address 4, error -110
usb 1-1: new high speed USB device using ehci_hcd and address 5
usb 1-1: device not accepting address 5, error -110
hub 1-0:1.0: unable to enumerate USB device on port 1
usb 1-2: new high speed USB device using ehci_hcd and address 6
usb 1-2: device descriptor read/64, error -110
[...]
uhci_hcd 0000:00:18.0: Unlink after no-IRQ?  Controller is probably using the wrong IRQ.
[...]

$ lspci
00:18.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)
00:18.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)
00:18.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 63)

USB driver (endianess???) or oftee or hardware problem?

Anyone experience with VIA USB hardware on PowerPc?

Juergen

-- 
Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
    Handelsregister: Amtsgericht Hildesheim, HRA 2686
         Vertretung Sued/Muenchen, Germany
   Phone: +49-8766-939 228 |  Fax: +49-5121-206917-9