--- kernel-power-2.6.28.orig/drivers/usb/musb/musb_procfs.c
+++ kernel-power-2.6.28/drivers/usb/musb/musb_procfs.c
-@@ -657,9 +657,12 @@
+@@ -656,15 +656,50 @@
+ case 'H':
if (mbase) {
reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl before=0x%0x\n",reg);
reg |= MUSB_DEVCTL_HR;
-+ reg |= MUSB_DEVCTL_HM;
-+ ctx.devctl |= MUSB_DEVCTL_HR;
-+ ctx.devctl |= MUSB_DEVCTL_HM;
musb_writeb(mbase, MUSB_DEVCTL, reg);
- /* MUSB_HST_MODE( ((struct musb*)data) ); */
- /* WARNING("Host Mode\n"); */
+ MUSB_HST_MODE( ((struct musb*)data) );
+ WARNING("Host Mode\n");
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl after set=0x%0x\n",reg);
++ }
++ break;
++
++ case 'K':
++ if (mbase) {
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl before=0x%0x\n",reg);
++ DBG(1, "entering FORCE_HOSTMODE\n");
++ musb_writeb(mbase, MUSB_TESTMODE,MUSB_TEST_FORCE_HOST);
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl after force=0x%0x\n",reg);
++ reg |= MUSB_DEVCTL_HR | MUSB_DEVCTL_HM | MUSB_DEVCTL_SESSION;
++ ctx.devctl |= MUSB_DEVCTL_HR | MUSB_DEVCTL_HM | MUSB_DEVCTL_SESSION;
++ musb_writeb(mbase, MUSB_DEVCTL, reg);
++ MUSB_HST_MODE( ((struct musb*)data) );
++ WARNING("Host Mode\n");
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl after set=0x%0x\n",reg);
++ }
++ break;
++
++ case 'k':
++ if (mbase) {
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl before=0x%0x\n",reg);
++ DBG(1, "entering FORCE_HOSTMODE\n");
++ musb_writeb(mbase, MUSB_TESTMODE,MUSB_TEST_FORCE_HOST);
++ reg = musb_readb(mbase, MUSB_DEVCTL);
++ printk(KERN_WARNING "usb devctl after force=0x%0x\n",reg);
++ MUSB_HST_MODE( ((struct musb*)data) );
++ WARNING("Host Mode\n");
}
break;
+ case 'h':
+ if (mbase) {
++ musb_writeb(mbase, MUSB_TESTMODE,0);
+ reg = musb_readb(mbase, MUSB_DEVCTL);
+ reg &= ~MUSB_DEVCTL_HR;
+ musb_writeb(mbase, MUSB_DEVCTL, reg);
--- kernel-power-2.6.28.orig/drivers/usb/musb/musb_core.c
+++ kernel-power-2.6.28/drivers/usb/musb/musb_core.c
@@ -113,7 +113,7 @@