Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -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:
			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.
+5 −0
Original line number Original line Diff line number Diff line
@@ -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 @@


/* 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 */
+3 −0
Original line number Original line Diff line number Diff line
@@ -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);