[Droid Incredible General] Slick1123:
Progress

Even after I got the kernel compiling, the new EHCI driver wouldn't load (probe() wasn't being called). Then I realized -- after several hours -- that the USB device was no longer being registered (thanks to more HTC-kernel awesomeness). So, I had to carefully go in and set CONFIG_USB_ANDROID to be Y without enabling any other USB gadget drivers. This allows the USB controller device to be registered with the Linux kernel, but without a driver claiming it yet. That's the EHCI driver's job. And then you see:

<6>[ 247.267852] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
<7>[ 247.268096] ehci_hcd: block sizes: qh 60 qtd 96 itd 160 sitd 96
<7>[ 247.268615] msm_hsusb msm_hsusb: initializing MSM7201/QSD8X50 USB Controller
<6>[ 247.287658] msm_hsusb msm_hsusb: Qualcomm MSM7201/QSD8X50 On-Chip EHCI Host Controller
<7>[ 247.287994] drivers/usb/core/inode.c: creating file 'devices'
<7>[ 247.288391] drivers/usb/core/inode.c: creating file '001'
<6>[ 247.288604] msm_hsusb msm_hsusb: new USB bus registered, assigned bus number 1
<7>[ 247.288970] msm_hsusb msm_hsusb: reset command 080002 (park)=0 ithresh=8 period=1024 Reset HALT
<7>[ 247.289733] msm_hsusb msm_hsusb: park 0
<7>[ 247.289947] msm_hsusb msm_hsusb: reset command 080b02 park=3 ithresh=8 period=1024 Reset HALT
<6>[ 247.290313] msm_hsusb_phy_reset
<7>[ 247.347717] msm_hsusb msm_hsusb: ...powerdown ports...
<6>[ 247.377807] msm_hsusb msm_hsusb: irq 58, io mem 0xa0800000
<7>[ 247.397918] usb usb1: default language 0x0409
<7>[ 247.398406] usb usb1: udev 1, busnum 1, minor = 0
<6>[ 247.399108] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[ 247.399505] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 247.400207] usb usb1: Product: Qualcomm MSM7201/QSD8X50 On-Chip EHCI Host Controller
<6>[ 247.400939] usb usb1: Manufacturer: Linux 2.6.32.15-hg000000000000 ehci_hcd
<6>[ 247.401306] usb usb1: SerialNumber: msm_hsusb
<7>[ 247.402893] usb usb1: uevent
<7>[ 247.409057] usb usb1: usb_probe_device
<6>[ 247.409484] usb usb1: configuration #1 chosen from 1 choice
<7>[ 247.410278] usb usb1: adding 1-0:1.0 (config #1, interface 0)
<7>[ 247.410980] usb 1-0:1.0: uevent
<7>[ 247.417358] hub 1-0:1.0: usb_probe_interface
<7>[ 247.417938] hub 1-0:1.0: usb_probe_interface - got id
<6>[ 247.418304] hub 1-0:1.0: USB hub found
<6>[ 247.419189] hub 1-0:1.0: 1 port detected
<7>[ 247.419586] hub 1-0:1.0: standalone hub
<7>[ 247.419982] hub 1-0:1.0: individual port power switching
<7>[ 247.420684] hub 1-0:1.0: individual port over-current protection
<7>[ 247.421051] hub 1-0:1.0: Single TT
<7>[ 247.421752] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
<7>[ 247.422149] hub 1-0:1.0: power on to power good time: 20ms
<7>[ 247.422882] hub 1-0:1.0: local power source is good
<7>[ 247.423278] hub 1-0:1.0: enabling power on all ports
<7>[ 247.428955] drivers/usb/core/inode.c: creating file '001'
<4>[ 247.429718] ------------[ cut here ]------------
<4>[ 247.430175] WARNING: at kernel/irq/manage.c:274 enable_irq+0x4c/0xa0()
<4>[ 247.430877] Unbalanced enable for IRQ 58
<4>[ 247.431274] Modules linked in: ehci_hcd(+) usbcore bcm4329
<4>[ 247.433502] [<c002d7f8>] (unwind_backtrace+0x0/0xd8) from [<c0063e34>] (warn_slowpath_common+0x48/0x60)
<4>[ 247.434265] [<c0063e34>] (warn_slowpath_common+0x48/0x60) from [<c0063e84>] (warn_slowpath_fmt+0x24/0x30)
<4>[ 247.434997] [<c0063e84>] (warn_slowpath_fmt+0x24/0x30) from [<c00979f0>] (enable_irq+0x4c/0xa0)
<4>[ 247.435516] [<c00979f0>] (enable_irq+0x4c/0xa0) from [<bf064988>] (usb_hcd_msm7201_probe+0x23c/0x2fc [ehci_hcd])
<4>[ 247.436279] [<bf064988>] (usb_hcd_msm7201_probe+0x23c/0x2fc [ehci_hcd]) from [<c01b2dc4>] (platform_drv_probe+0x18/0x1c)
<4>[ 247.437042] [<c01b2dc4>] (platform_drv_probe+0x18/0x1c) from [<c01b1f84>] (driver_probe_device+0xa0/0x14c)
<4>[ 247.437805] [<c01b1f84>] (driver_probe_device+0xa0/0x14c) from [<c01b2090>] (__driver_attach+0x60/0x84)
<4>[ 247.438568] [<c01b2090>] (__driver_attach+0x60/0x84) from [<c01b17f8>] (bus_for_each_dev+0x48/0x84)
<4>[ 247.439331] [<c01b17f8>] (bus_for_each_dev+0x48/0x84) from [<c01b114c>] (bus_add_driver+0x9c/0x218)
<4>[ 247.440093] [<c01b114c>] (bus_add_driver+0x9c/0x218) from [<c01b235c>] (driver_register+0xa8/0x134)
<4>[ 247.440551] [<c01b235c>] (driver_register+0xa8/0x134) from [<bf0700ac>] (ehci_hcd_init+0xac/0x12c [ehci_hcd])
<4>[ 247.441314] [<bf0700ac>] (ehci_hcd_init+0xac/0x12c [ehci_hcd]) from [<c002836c>] (do_one_initcall+0x5c/0x1b4)
<4>[ 247.442077] [<c002836c>] (do_one_initcall+0x5c/0x1b4) from [<c008d368>] (sys_init_module+0xb0/0x1dc)
<4>[ 247.442840] [<c008d368>] (sys_init_module+0xb0/0x1dc) from [<c0028f00>] (ret_fast_syscall+0x0/0x2c)
<4>[ 247.443542] ---[ end trace 1b75b31a2719ed1f ]---
<7>[ 247.518524] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000

A comment in the code seems to indicate that the WARNING from the kernel is normal (?).

So the USB controller is up, but it's not detecting any devices plugged into it. Rather, when I plug a hub in, the Incredible detects it as a start-charging-the-battery event.

(Note: When I removed the callbacks, plugging in the phone to upstream power doesn't necessarily cause it to start charging. But when an attached hub is disconnected and reconnected, it sometimes starts charging. But then I see things like:

<6>[ 2183.727874] batt: M2A_RPC: set_charging: 1 at 2180262071950 (2010-08-17 06:08:47.707000720 UTC)
<6>[ 2183.742767] batt: M2A_RPC: cable_update: USB at 2180276934011 (2010-08-17 06:08:47.721923817 UTC)
<6>[ 2183.743865] batt: htc_cable_status_update: 1 -> 1
<6>[ 2183.744323] batt: batt:(htc_cable_status_update)power_supply_changed: OverVoltage at 2180278520925 (2010-08-17 06:08:47.723510731 UTC)
<6>[ 2183.749298] batt: SMEM_BATT: get_batt_info: batt_id=2, batt_vol=3966, batt_temp=324, batt_current=417, eval_current=92, level=75, charging_source=1, charging_enabled=1, full_bat=1300000, over_vchg=0 at 2180283892020 (2010-08-17 06:08:47.728454579 UTC)
<6>[ 2183.751159] batt: SMEM_BATT: get_batt_info: batt_id=2, batt_vol=3966, batt_temp=324, batt_current=417, eval_current=92, level=75, charging_source=1, charging_enabled=1, full_bat=1300000, over_vchg=0 at 2180285723074 (2010-08-17 06:08:47.730316152 UTC)
<6>[ 2183.752838] batt: SMEM_BATT: get_batt_info: batt_id=2, batt_vol=3966, batt_temp=324, batt_current=417, eval_current=92, level=75, charging_source=1, charging_enabled=1, full_bat=1300000, over_vchg=0 at 2180287401541 (2010-08-17 06:08:47.731994618 UTC)

OverVoltage? That doesn't sound good -- I hope I'm not killing the poor USB port!