usb / ohci on mpc52xx custom board

From: Angelo <hidden>
Date: 2008-12-05 09:22:24

Hi all!

I need your help.
I have a custom board based on mpc52xx.
kernel: 2.6.21 arch: powerpc u-boot: 1.2.0

The board reach the shell and everything seems to work fine.
But when i plug-in a usb-storage the system try to do all the necessary operations to enable the device but after these prints:
============================================
root@xxx>
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
ppc-of-ohci f0001000.usb: GetStatus roothub.portstatus [1] = 0x00010101 CSC PPS CCS
hub 1-0:1.0: port 2, status 0101, change 0001, 12 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101
ppc-of-ohci f0001000.usb: GetStatus roothub.portstatus [1] = 0x00100103 PRSC PPS PES CCS
usb 1-2: new full speed USB device using ppc-of-ohci and address 2
============================================

the system sleep for just 1 minute and return with these prints:
============================================
BUG: soft lockup detected on CPU#0!
Call Trace:
[C7E05A50] [C0007FD8] show_stack+0x3c/0x194 (unreliable)
[C7E05A80] [C004A380] softlockup_tick+0xa4/0xd4
[C7E05AA0] [C002B998] run_local_timers+0x18/0x28
[C7E05AB0] [C002B9D8] update_process_times+0x30/0x7c
[C7E05AC0] [C003FF3C] tick_sched_timer+0xb0/0x280
[C7E05B20] [C003C538] hrtimer_interrupt+0x214/0x26c
[C7E05B80] [C000E744] timer_interrupt+0x88/0x354
[C7E05BF0] [C0011C04] ret_from_except+0x0/0x14
--- Exception: 901 at handle_IRQ_event+0x7c/0x1e8
    LR = handle_level_irq+0x90/0x13c
[C7E05CB0] [C7F15C00] 0xc7f15c00 (unreliable)
[C7E05CD0] [C004C2E0] handle_level_irq+0x90/0x13c
[C7E05CE0] [C0006304] do_IRQ+0x98/0xbc
[C7E05CF0] [C0011C04] ret_from_except+0x0/0x14
--- Exception: 501 at schedule+0x38/0x64c
    LR = schedule_timeout+0x68/0xe4
[C7E05DB0] [C01A1650] usb_hcd_submit_urb+0x190/0x8a0 (unreliable)
[C7E05E00] [C02389A4] schedule_timeout+0x68/0xe4
[C7E05E40] [C0238378] wait_for_completion_timeout+0x8c/0x138
[C7E05E80] [C01A2B60] usb_start_wait_urb+0x64/0x124
[C7E05EB0] [C01A2E1C] usb_control_msg+0xc4/0xf0
[C7E05EF0] [C019D0D0] hub_port_init+0x424/0x614
[C7E05F40] [C019F42C] hub_thread+0x434/0xe64
[C7E05FC0] [C0037E60] kthread+0xc0/0xfc
[C7E05FF0] [C00123F8] original_kernel_thread+0x44/0x60
ppc-of-ohci f0001000.usb: OHCI Unrecoverable Error, disabled
ppc-of-ohci f0001000.usb: OHCI controller state
ppc-of-ohci f0001000.usb: OHCI 1.0, NO legacy support registers
ppc-of-ohci f0001000.usb: control 0x093 HCFS=operational CLE CBSR=3
ppc-of-ohci f0001000.usb: cmdstatus 0x00000 SOC=0
ppc-of-ohci f0001000.usb: intrstatus 0x00000074 RHSC FNO UE SF
ppc-of-ohci f0001000.usb: intrenable 0x8000001a MIE UE RD WDH
ppc-of-ohci f0001000.usb: ed_controlhead 07fcc000
ppc-of-ohci f0001000.usb: ed_controlcurrent fffffff0
ppc-of-ohci f0001000.usb: hcca frame #ddb6
ppc-of-ohci f0001000.usb: roothub.a 02001202 POTPGT=2 NOCP NPS NDP=2(2)
ppc-of-ohci f0001000.usb: roothub.b 00000000 PPCM=0000 DR=0000
ppc-of-ohci f0001000.usb: roothub.status 00008000 DRWE
ppc-of-ohci f0001000.usb: roothub.portstatus [0] 0x00000100 PPS
ppc-of-ohci f0001000.usb: roothub.portstatus [1] 0x00030100 PESC CSC PPS
ppc-of-ohci f0001000.usb: HC died; cleaning up
irq 134: nobody cared (try booting with the "irqpoll" option)
Call Trace:
[C046FDF0] [C0007FD8] show_stack+0x3c/0x194 (unreliable)
[C046FE20] [C004B358] __report_bad_irq+0x34/0xac
[C046FE40] [C004B4AC] note_interrupt+0xdc/0x288
[C046FE70] [C004C344] handle_level_irq+0xf4/0x13c
[C046FE80] [C0006304] do_IRQ+0x98/0xbc
[C046FE90] [C0011C04] ret_from_except+0x0/0x14
--- Exception: 501 at schedule+0x304/0x64c
    LR = schedule+0x2d8/0x64c
[C046FFA0] [C004A2B4] watchdog+0x4c/0x74
[C046FFC0] [C0037E60] kthread+0xc0/0xfc
[C046FFF0] [C00123F8] original_kernel_thread+0x44/0x60
handlers:
[<c01a1008>] (usb_hcd_irq+0x0/0x9c)
Disabling IRQ #134
usb 1-2: khubd timed out on ep0in len=0/64
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
ppc-of-ohci f0001000.usb: leak ed c7fcc000 (#00) state 0 (has tds)
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: state 0 ports 2 chg 0000 evt 0004
============================================

I'd like to follow the message "try booting with the "irqpoll" option" but i don't know how to enable this option! I had looked for this option in my kernel but there isn't any similar symbol.

At boot time i can see these prints for usb-driver:
============================================
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
ohci_hcd: block sizes: ed 64 td 64
ppc-of-ohci f0001000.usb: initializing PPC-OF USB Controller
irq: irq_create_mapping(0xc0455480, 0x86)
irq: -> using host @c0455480
irq: -> obtained virq 134
ppc-of-ohci f0001000.usb: OF OHCI
drivers/usb/core/inode.c: creating file 'devices'
drivers/usb/core/inode.c: creating file '001'
ppc-of-ohci f0001000.usb: new USB bus registered, assigned bus number 1
ppc-of-ohci f0001000.usb: irq 134, io mem 0xf0001000
ppc-of-ohci f0001000.usb: created debug files
ppc-of-ohci f0001000.usb: resetting from state 'reset', control = 0x0
ppc-of-ohci f0001000.usb: OHCI controller state
ppc-of-ohci f0001000.usb: OHCI 1.0, NO legacy support registers
ppc-of-ohci f0001000.usb: control 0x083 HCFS=operational CBSR=3
ppc-of-ohci f0001000.usb: cmdstatus 0x00000 SOC=0
ppc-of-ohci f0001000.usb: intrstatus 0x00000004 SF
ppc-of-ohci f0001000.usb: intrenable 0x8000005a MIE RHSC UE RD WDH
ppc-of-ohci f0001000.usb: hcca frame #0000
ppc-of-ohci f0001000.usb: roothub.a 02001202 POTPGT=2 NOCP NPS NDP=2(2)
ppc-of-ohci f0001000.usb: roothub.b 00000000 PPCM=0000 DR=0000
ppc-of-ohci f0001000.usb: roothub.status 00008000 DRWE
ppc-of-ohci f0001000.usb: roothub.portstatus [0] 0x00000100 PPS
ppc-of-ohci f0001000.usb: roothub.portstatus [1] 0x00000100 PPS
usb usb1: default language 0x0409
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: OF OHCI
usb usb1: Manufacturer: Linux 2.6.21.7-hrt1-WR2.0bl_standard ohci_hcd
usb usb1: SerialNumber: PPC-OF USB
usb usb1: uevent
usb usb1: usb_probe_device
usb usb1: configuration #1 chosen from 1 choice
usb usb1: adding 1-0:1.0 (config #1, interface 0)
usb 1-0:1.0: uevent
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: ganged power switching
hub 1-0:1.0: global over-current protection
hub 1-0:1.0: power on to power good time: 4ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: no over-current condition exists
hub 1-0:1.0: enabling power on all ports
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0000
============================================

Other info:
- I ahve the same problem with a new kernel (2.6.26)
- on my u-boot the usb is completely operational
- the actual kernel (2.6.21) compiled for PPC enable usb device and it work fine
- MOST IMPORTANT: usb is on the Ethernet pin group instead of on the USB in group. The kernel change the value of port_config when it boots (arch/powerpc/lite5200.c). 
I had to modify my device tree source for this??

Any idea is appreciate.
Thanks


      
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help