Re: [RFC PATCH 1/2] usb: doc: Add bindings for ULPI platform driver

From: Kishon Vijay Abraham I
Date: Sun Oct 11 2015 - 10:41:10 EST


Hi,

On Sunday 11 October 2015 04:45 PM, punnaiah choudary kalluri wrote:
> On Wed, Sep 30, 2015 at 9:48 PM, Felipe Balbi <balbi@xxxxxx> wrote:
>> On Thu, Sep 24, 2015 at 11:18:01AM -0500, Rob Herring wrote:
>>> On Thu, Sep 24, 2015 at 4:26 AM, Subbaraya Sundeep Bhatta
>>> <subbaraya.sundeep.bhatta@xxxxxxxxxx> wrote:
>>>> Hi Peter,
>>>>
>>>>> -----Original Message-----
>>>>> From: Peter Chen [mailto:peter.chen@xxxxxxxxxxxxx]
>>>>> Sent: Thursday, September 24, 2015 2:41 PM
>>>>> To: Subbaraya Sundeep Bhatta
>>>>> Cc: balbi@xxxxxx; devicetree@xxxxxxxxxxxxxxx; kishon@xxxxxx;
>>>>> gregkh@xxxxxxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux-
>>>>> kernel@xxxxxxxxxxxxxxx; Punnaiah Choudary Kalluri; Subbaraya Sundeep Bhatta;
>>>>> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
>>>>> Subject: Re: [RFC PATCH 1/2] usb: doc: Add bindings for ULPI platform driver
>>>>>
>>>>> On Wed, Sep 23, 2015 at 06:24:01PM +0530, Subbaraya Sundeep Bhatta
>>>>> wrote:
>>>>>> This patch adds binding doc info for generic ULPI PHYs platform
>>>>>> driver.
>>>>>>
>>>>>> Signed-off-by: Subbaraya Sundeep Bhatta <sbhatta@xxxxxxxxxx>
>>>>>> ---
>>>>>> .../devicetree/bindings/usb/ulpi-platform-phy.txt | 34
>>>>> ++++++++++++++++++++
>>>>>> 1 files changed, 34 insertions(+), 0 deletions(-) create mode 100644
>>>>>> Documentation/devicetree/bindings/usb/ulpi-platform-phy.txt
>>>>>>
>>>>>> diff --git
>>>>>> a/Documentation/devicetree/bindings/usb/ulpi-platform-phy.txt
>>>>>> b/Documentation/devicetree/bindings/usb/ulpi-platform-phy.txt
>>>>>> new file mode 100644
>>>>>> index 0000000..7b8cbb4
>>>>>> --- /dev/null
>>>>>> +++ b/Documentation/devicetree/bindings/usb/ulpi-platform-phy.txt
>>>>>> @@ -0,0 +1,34 @@
>>>>>> +Platform driver for generic ULPI PHYs
>>>>>> +
>>>>>> +Required properties:
>>>>>> +- compatible : Should be "ulpi-phy"
>>>>>> +- reg : Physical base address and size of the USB
>>>>>> + controller registers map to which this PHY
>>>>>> + is connected.
>>>>>> +- view-port : Should contain viewport register offset of the
>>>>>> + USB controller to which this PHY is connected Optional
>>>>>> +properties:
>>>>>> +- drv-vbus : required if turning VBUS on/off has to be driven
>>>>>> + by writing to PHY. This feature depends on board
>>>>>> + design.
>>>>>> +
>>>>>> +Example:
>>>>>> +Below example shows the PHY binding for Chipidea USB controller which
>>>>>> +has ulpi viewport register at 0x0170
>>>>>> +
>>>>>> + usb_phy0: phy0 {
>>>>>> + compatible = "ulpi-phy";
>>>>>> + reg = <0xe0002000 0x1000>;
>>>>>> + view-port = <0x0170>;
>>>>>> + drv-vbus;
>>>>>> + };
>>>>>> +
>>>>>> + usb0: usb@e0002000 {
>>>>>> + compatible = "chipidea,usb2";
>>>>>> + interrupt-parent = <&intc>;
>>>>>> + interrupts = <0 21 4>;
>>>>>> + reg = <0xe0002000 0x1000>;
>>>>>
>>>>> Although just call devm_ioremap twice for the same register region does not
>>>>> cause any errors, I am not sure if it will has other potential problems. Cc: arm
>>>>> list.
>>>>
>>>> Yes Peter I was also in doubt to call devm_ioremap twice for same register region.
>>>> devm_ioremap_resource complained hence modified to devm_ioremap. Thanks for
>>>> adding arm-list.
>>>
>>> Don't put overlapping resources in the DT. Having 2 drivers accessing
>>> the same registers is not a clean or safe design.
>>
>> thanks, saves me the trouble of saying the same thing.
>>
>> Bottom line, if devm_ioremap_resource() fails, you're wrong. Just fix
>> your driver and move on.
>
> Any suggestions on how to move further?
> Chipidea controller provides ulpi view port register for accessing the
> usb phy registers. Now we want to add new driver for ulpi phy configuration
> and that obviously it need of ulpi view port register access. So, sharing the
> register space between these two drivers is necessary here.

Why not program ULPI the same way as DWC3 does?

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/