Commit 5fc4e779 authored by Ajay Kumar Gupta's avatar Ajay Kumar Gupta Committed by Greg Kroah-Hartman

usb: musb: Add 'extvbus' in musb_hdrc_platform_data

Some of the board might use external Vbus power supply on musb
interface which would require to program ULPI_BUSCONTROL register.

Adding 'extvbus' flag which can be set from such boards which will
be checked at musb driver files before programming ULPI_BUSCONTROL.
Signed-off-by: default avatarAjay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 51bf0d0e
...@@ -2031,6 +2031,7 @@ bad_config: ...@@ -2031,6 +2031,7 @@ bad_config:
/* host side needs more setup */ /* host side needs more setup */
if (is_host_enabled(musb)) { if (is_host_enabled(musb)) {
struct usb_hcd *hcd = musb_to_hcd(musb); struct usb_hcd *hcd = musb_to_hcd(musb);
u8 busctl;
otg_set_host(musb->xceiv, &hcd->self); otg_set_host(musb->xceiv, &hcd->self);
...@@ -2038,6 +2039,13 @@ bad_config: ...@@ -2038,6 +2039,13 @@ bad_config:
hcd->self.otg_port = 1; hcd->self.otg_port = 1;
musb->xceiv->host = &hcd->self; musb->xceiv->host = &hcd->self;
hcd->power_budget = 2 * (plat->power ? : 250); hcd->power_budget = 2 * (plat->power ? : 250);
/* program PHY to use external vBus if required */
if (plat->extvbus) {
busctl = musb_readb(musb->mregs, MUSB_ULPI_BUSCONTROL);
busctl |= MUSB_ULPI_USE_EXTVBUS;
musb_writeb(musb->mregs, MUSB_ULPI_BUSCONTROL, busctl);
}
} }
/* For the host-only role, we can activate right away. /* For the host-only role, we can activate right away.
......
...@@ -72,6 +72,10 @@ ...@@ -72,6 +72,10 @@
#define MUSB_DEVCTL_HR 0x02 #define MUSB_DEVCTL_HR 0x02
#define MUSB_DEVCTL_SESSION 0x01 #define MUSB_DEVCTL_SESSION 0x01
/* MUSB ULPI VBUSCONTROL */
#define MUSB_ULPI_USE_EXTVBUS 0x01
#define MUSB_ULPI_USE_EXTVBUSIND 0x02
/* TESTMODE */ /* TESTMODE */
#define MUSB_TEST_FORCE_HOST 0x80 #define MUSB_TEST_FORCE_HOST 0x80
#define MUSB_TEST_FIFO_ACCESS 0x40 #define MUSB_TEST_FIFO_ACCESS 0x40
...@@ -246,6 +250,7 @@ ...@@ -246,6 +250,7 @@
/* REVISIT: vctrl/vstatus: optional vendor utmi+phy register at 0x68 */ /* REVISIT: vctrl/vstatus: optional vendor utmi+phy register at 0x68 */
#define MUSB_HWVERS 0x6C /* 8 bit */ #define MUSB_HWVERS 0x6C /* 8 bit */
#define MUSB_ULPI_BUSCONTROL 0x70 /* 8 bit */
#define MUSB_EPINFO 0x78 /* 8 bit */ #define MUSB_EPINFO 0x78 /* 8 bit */
#define MUSB_RAMINFO 0x79 /* 8 bit */ #define MUSB_RAMINFO 0x79 /* 8 bit */
......
...@@ -76,6 +76,9 @@ struct musb_hdrc_platform_data { ...@@ -76,6 +76,9 @@ struct musb_hdrc_platform_data {
/* (HOST or OTG) msec/2 after VBUS on till power good */ /* (HOST or OTG) msec/2 after VBUS on till power good */
u8 potpgt; u8 potpgt;
/* (HOST or OTG) program PHY for external Vbus */
unsigned extvbus:1;
/* Power the device on or off */ /* Power the device on or off */
int (*set_power)(int state); int (*set_power)(int state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment