Subject: [PATCH] ARM: dts: omap3-beagle-xm: Add USB Host support for Rev Ax/Bx

From: [email-masked] (Roger Quadros)
Date: Wed, 17 Apr 2013 11:38:54 +0300

On 04/17/2013 10:56 AM, Igor Grinberg wrote:
> On 04/17/13 04:30, Robert Nelson wrote:
>> On Tue, Apr 16, 2013 at 7:52 PM, Tony Lindgren <[email-masked]> wrote:
>>> * Roger Quadros <[email-masked]> [130415 05:44]:
>>>> On 04/15/2013 03:35 PM, Roger Quadros wrote:
>>>>> Provide RESET and Power regulators for the USB PHY,
>>>>> the USB Host port mode and the PHY device.
>>>>>
>>>>> Also provide pin multiplexer information for USB host
>>>>> pins.
>>>>>
>>>>> This will not work for Rev Cx boards because of reversed logic
>>>>> for USB_POWER_Enable.
>>>>>
>>>>> CC: Beno?t Cousson <[email-masked]>
>>>>> Signed-off-by: Roger Quadros <[email-masked]>
>>>>> ---
>>>>>  arch/arm/boot/dts/omap3-beagle-xm.dts |   62 +++++++++++++++++++++++++++++++++
>>>>>  1 files changed, 62 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts
>>>>> index 5a31964..d394c51 100644
>>>>> --- a/arch/arm/boot/dts/omap3-beagle-xm.dts
>>>>> +++ b/arch/arm/boot/dts/omap3-beagle-xm.dts
>>>>> @@ -57,6 +57,60 @@
>>>>>             ti,mcbsp = <&mcbsp2>;
>>>>>             ti,codec = <&twl_audio>;
>>>>>     };
>>>>> +
>>>>> +   /* HS USB Port 2 RESET */
>>>>> +   hsusb2_reset: hsusb2_reset_reg {
>>>>> +           compatible = "regulator-fixed";
>>>>> +           regulator-name = "hsusb2_reset";
>>>>> +           regulator-min-microvolt = <3300000>;
>>>>> +           regulator-max-microvolt = <3300000>;
>>>>> +           gpio = <&gpio5 19 0>;   /* gpio_147 */
>>>>> +           startup-delay-us = <70000>;
>>>>> +           enable-active-high;
>>>>> +   };
>>>>> +
>>>>> +   /* HS USB Port 2 Power */
>>>>> +   hsusb2_power: hsusb2_power_reg {
>>>>> +           compatible = "regulator-fixed";
>>>>> +           regulator-name = "hsusb2_vbus";
>>>>> +           regulator-min-microvolt = <3300000>;
>>>>> +           regulator-max-microvolt = <3300000>;
>>>>> +           gpio = <&twl_gpio 18 0>;        /* GPIO LEDA */
>>>>> +           startup-delay-us = <70000>;
>>>>> +           enable-active-high;     /* FIXME: active-low for Rev. C */
>>>>
>>>> Benoit & Tony,
>>>>
>>>> Any ideas how to tackle the reversed logic for Rev. C boards?
>>>
>>> Sounds like we need a shared omap3-beage.dtsi, then omap3-beagle-xm.dts
>>> and omap3-beagle-rev-c.dts. Then xm and rev-c can both include the
>>
>> Bike-sheding, but we might want to make that "omap3-beagle-xmc.dts" as
>> there is the "rev c" variant of the original beagle...
>>
>> It's too bad we can't read the 3 gpio pin states in the device tree
>> and make a decision.
> 
> I would recommend to move the detection to the boot loader and
> adjust the DT blob at run time (in the boot loader).
> This way, we will not need to deal with all the (sub)revision stuff.
> 
> 
Moving the detection to bootloader is fine, but modifying the DT at
runtime would create a debug/maintenance issue. Instead it could just
pick one of the .DTBs and pass it to kernel.

Since most users will be using rev-c, I think we should keep the original
file 'omap3-beagle-xm.dts" as it is for rev-c boards.
I can just create a new dts file for Revisions A and B that will be
like so.

+++ b/arch/arm/boot/dts/omap3-beagle-xm-ab.dts
@@ -0,0 +1,6 @@
+/include/ "omap3-beagle-xm.dts"
+
+/* On Rev A/B USBHOST_PWR_EN is active high */
+&hsusb2_power {
+       enable-active-high;
+};

Since omap3-beagle and omap3-beagle-xm use different SoC versions and have
quite many differences, I don't think it is a good idea to create a common
file between the two.

cheers,
-roger