--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/usb/otg/twl4030-usb.c
++++ kernel-power-2.6.28/drivers/usb/otg/twl4030-usb.c
+@@ -621,6 +621,7 @@
+ #endif
+
+ status = twl4030_usb_linkstat(twl);
++printk(KERN_WARNING "twl4030_usb_irq: status=0x%0x\n",status);
+ if (status != USB_LINK_UNKNOWN) {
+
+ /* FIXME add a set_power() method so that B-devices can
+@@ -669,6 +670,9 @@
+
+ twl = xceiv_to_twl(x);
+ twl->otg.gadget = gadget;
++printk(KERN_WARNING "twl4030_set_peripheral() 4030 OTG_CTRL=0x%0x\n",twl4030_usb_read(twl,TWL4030_OTG_CTRL));
++ twl4030_usb_clear_bits(twl,TWL4030_OTG_CTRL,TWL4030_OTG_CTRL_DRVVBUS);
++printk(KERN_WARNING "twl4030_set_peripheral() after 4030 OTG_CTRL=0x%0x\n",twl4030_usb_read(twl,TWL4030_OTG_CTRL));
+ if (!gadget)
+ twl->otg.state = OTG_STATE_UNDEFINED;
+
+@@ -684,6 +688,9 @@
+
+ twl = xceiv_to_twl(x);
+ twl->otg.host = host;
++printk(KERN_WARNING "twl4030_set_host() 4030 OTG_CTRL=0x%0x\n",twl4030_usb_read(twl,TWL4030_OTG_CTRL));
++ twl4030_usb_set_bits(twl,TWL4030_OTG_CTRL,TWL4030_OTG_CTRL_DRVVBUS);
++printk(KERN_WARNING "twl4030_set_host() after 4030 OTG_CTRL=0x%0x\n",twl4030_usb_read(twl,TWL4030_OTG_CTRL));
+ if (!host)
+ twl->otg.state = OTG_STATE_UNDEFINED;
+