diff mbox

arm: dtsi: am335x-bone-common, usb0 is peripheral only

Message ID 1389448851-20010-1-git-send-email-mpa@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Markus Pargmann Jan. 11, 2014, 2 p.m. UTC
The PMIC is using usb0 vbus line as power source. It is also connected
to the am335x processor as vbus sense. But there is no possibility to
pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
---
 arch/arm/boot/dts/am335x-bone-common.dtsi | 1 +
 1 file changed, 1 insertion(+)

Comments

Tony Lindgren Feb. 13, 2014, 10:54 p.m. UTC | #1
* Markus Pargmann <mpa@pengutronix.de> [140111 06:03]:
> The PMIC is using usb0 vbus line as power source. It is also connected
> to the am335x processor as vbus sense. But there is no possibility to
> pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.

That's the MUSB? AFAIK it's not possible to operate MUSB in peripheral
only mode because the hardware does what it wants based on the ID
pin state.

Regards,

Tony
Markus Pargmann Feb. 13, 2014, 11:13 p.m. UTC | #2
Hi,

On Thu, Feb 13, 2014 at 02:54:38PM -0800, Tony Lindgren wrote:
> * Markus Pargmann <mpa@pengutronix.de> [140111 06:03]:
> > The PMIC is using usb0 vbus line as power source. It is also connected
> > to the am335x processor as vbus sense. But there is no possibility to
> > pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.
> 
> That's the MUSB? AFAIK it's not possible to operate MUSB in peripheral
> only mode because the hardware does what it wants based on the ID
> pin state.

Yes that's MUSB. The am335x reference manual describes that it is
possible to force peripheral/host mode by setting bit 7 (IDDIG_MUX) in
register USBnMODE to 1. Then it uses the bit written in bit 8 (IDDIG) of
register USBnMODE to set host/peripheral mode.

I am not sure if the driver supports it yet but I think the DTS should
contain the correct mode nevertheless, especially to avoid starting the
otg loops in the musb driver.

Regards,

Markus
Tony Lindgren Feb. 13, 2014, 11:25 p.m. UTC | #3
* Markus Pargmann <mpa@pengutronix.de> [140213 15:16]:
> Hi,
> 
> On Thu, Feb 13, 2014 at 02:54:38PM -0800, Tony Lindgren wrote:
> > * Markus Pargmann <mpa@pengutronix.de> [140111 06:03]:
> > > The PMIC is using usb0 vbus line as power source. It is also connected
> > > to the am335x processor as vbus sense. But there is no possibility to
> > > pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.
> > 
> > That's the MUSB? AFAIK it's not possible to operate MUSB in peripheral
> > only mode because the hardware does what it wants based on the ID
> > pin state.
> 
> Yes that's MUSB. The am335x reference manual describes that it is
> possible to force peripheral/host mode by setting bit 7 (IDDIG_MUX) in
> register USBnMODE to 1. Then it uses the bit written in bit 8 (IDDIG) of
> register USBnMODE to set host/peripheral mode.

OK
 
> I am not sure if the driver supports it yet but I think the DTS should
> contain the correct mode nevertheless, especially to avoid starting the
> otg loops in the musb driver.

Well there's one more thing to consider.. I think in the OTG role change
case the VBUS is still driven externally from the original host, so the
lack of VBUS does not always mean that host mode should be disabled.

Regards,

Tony
Markus Pargmann Feb. 14, 2014, 10:02 a.m. UTC | #4
Hi,

On Thu, Feb 13, 2014 at 03:25:52PM -0800, Tony Lindgren wrote:
> * Markus Pargmann <mpa@pengutronix.de> [140213 15:16]:
> > Hi,
> > 
> > On Thu, Feb 13, 2014 at 02:54:38PM -0800, Tony Lindgren wrote:
> > > * Markus Pargmann <mpa@pengutronix.de> [140111 06:03]:
> > > > The PMIC is using usb0 vbus line as power source. It is also connected
> > > > to the am335x processor as vbus sense. But there is no possibility to
> > > > pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.
> > > 
> > > That's the MUSB? AFAIK it's not possible to operate MUSB in peripheral
> > > only mode because the hardware does what it wants based on the ID
> > > pin state.
> > 
> > Yes that's MUSB. The am335x reference manual describes that it is
> > possible to force peripheral/host mode by setting bit 7 (IDDIG_MUX) in
> > register USBnMODE to 1. Then it uses the bit written in bit 8 (IDDIG) of
> > register USBnMODE to set host/peripheral mode.
> 
> OK
>  
> > I am not sure if the driver supports it yet but I think the DTS should
> > contain the correct mode nevertheless, especially to avoid starting the
> > otg loops in the musb driver.
> 
> Well there's one more thing to consider.. I think in the OTG role change
> case the VBUS is still driven externally from the original host, so the
> lack of VBUS does not always mean that host mode should be disabled.

I thought more about the hardware description than the possible role
changes through software protocols. In a hardware perspective, this USB
port is only in peripheral mode, as it can't drive VBUS. However is
there any support for role change protocols in the kernel yet?

Perhaps we have to add a seperate DT binding for usb role changes when
they are supported. This would help to describe the hardware
capabilities (host, peripheral or OTG) and the role change protocols
supported.

Regards,

Markus
Tony Lindgren Feb. 14, 2014, 4:20 p.m. UTC | #5
* Markus Pargmann <mpa@pengutronix.de> [140214 02:05]:
> Hi,
> 
> On Thu, Feb 13, 2014 at 03:25:52PM -0800, Tony Lindgren wrote:
> > * Markus Pargmann <mpa@pengutronix.de> [140213 15:16]:
> > > Hi,
> > > 
> > > On Thu, Feb 13, 2014 at 02:54:38PM -0800, Tony Lindgren wrote:
> > > > * Markus Pargmann <mpa@pengutronix.de> [140111 06:03]:
> > > > > The PMIC is using usb0 vbus line as power source. It is also connected
> > > > > to the am335x processor as vbus sense. But there is no possibility to
> > > > > pullup usb0 vbus to operate as host. This patch fixes the dr_mode of usb0.
> > > > 
> > > > That's the MUSB? AFAIK it's not possible to operate MUSB in peripheral
> > > > only mode because the hardware does what it wants based on the ID
> > > > pin state.
> > > 
> > > Yes that's MUSB. The am335x reference manual describes that it is
> > > possible to force peripheral/host mode by setting bit 7 (IDDIG_MUX) in
> > > register USBnMODE to 1. Then it uses the bit written in bit 8 (IDDIG) of
> > > register USBnMODE to set host/peripheral mode.
> > 
> > OK
> >  
> > > I am not sure if the driver supports it yet but I think the DTS should
> > > contain the correct mode nevertheless, especially to avoid starting the
> > > otg loops in the musb driver.
> > 
> > Well there's one more thing to consider.. I think in the OTG role change
> > case the VBUS is still driven externally from the original host, so the
> > lack of VBUS does not always mean that host mode should be disabled.
> 
> I thought more about the hardware description than the possible role
> changes through software protocols. In a hardware perspective, this USB
> port is only in peripheral mode, as it can't drive VBUS. However is
> there any support for role change protocols in the kernel yet?

There's some to trigger it, if you grep -ri hnp drivers/usb/
you'll see some references to it.
 
> Perhaps we have to add a seperate DT binding for usb role changes when
> they are supported. This would help to describe the hardware
> capabilities (host, peripheral or OTG) and the role change protocols
> supported.

Yeah it might be worth discussing on the USB list what's the best way
to deal with all that.

Regards,

Tony
diff mbox

Patch

diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
index e3f27ec..da2db9b 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
@@ -197,6 +197,7 @@ 
 
 	usb@47401000 {
 		status = "okay";
+		dr_mode = "peripheral";
 	};
 
 	usb@47401800 {