usb / ohci on mpc52xx custom board

Angelo s104259 at yahoo.it
Fri Dec 5 20:22:21 EST 2008


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 at 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


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20081205/0df6dce1/attachment.htm>


More information about the Linuxppc-embedded mailing list