I am developing a system based in the 2.6.18 kernel and LSP 2.10. I am having a problem with USB OTG using the USB_ID pin switching. The problem seems to occur when I connct a USB host mode cable (USB_ID = 0) then disconnect it. If I then try and connect as a USB gadget to a PC, it does not work. I enabled debug at level 7, and noticed that the otg_workaround timer routine never resumes. Here is some messages I see in the log when I remove the cable.
What normally would force the USB OTG workaround to start running again?
# [ 1117.330000] usb 1-1: USB disconnect, address 2
dmesg
<7>[ 1117.330000] davinci_interrupt 315: IRQ 00280000
<7>[ 1117.330000] musb_interrupt 1528: ** IRQ peripheral usb0028 tx0000 rx0000
<7>[ 1117.330000] musb_stage2_irq 718: START_OF_FRAME
<7>[ 1117.330000] musb_stage2_irq 733: DISCONNECT (a_host) as Host, devctl 19
<7>[ 1117.330000] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
<7>[ 1117.330000] musb_hub_control 344: port status 00010100
<7>[ 1117.330000] musb_hub_control 278: clear feature 16
<7>[ 1117.330000] hub 1-0:1.0: port 1, status 0100, change 0001, 12 Mb/s
<6>[ 1117.330000] usb 1-1: USB disconnect, address 2
<7>[ 1117.330000] usb 1-1: usb_disable_device nuking all URBs
<7>[ 1117.330000] usb 1-1: unregistering interface 1-1:1.0
<7>[ 1117.330000] usbdev1.2_ep81: ep_device_release called for usbdev1.2_ep81
<7>[ 1117.330000] usbdev1.2_ep02: ep_device_release called for usbdev1.2_ep02
<7>[ 1117.340000] usb 1-1:1.0: uevent
<7>[ 1117.340000] usb 1-1: unregistering device
<7>[ 1117.340000] usbdev1.2_ep00: ep_device_release called for usbdev1.2_ep00
<7>[ 1117.340000] usb 1-1: uevent
<7>[ 1117.340000] musb_hub_control 344: port status 00000100
<7>[ 1117.380000] musb_hub_control 344: port status 00000100
<7>[ 1117.420000] musb_hub_control 344: port status 00000100
<7>[ 1117.460000] musb_hub_control 344: port status 00000100
<7>[ 1117.500000] musb_hub_control 344: port status 00000100
<7>[ 1117.500000] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100
#