[linux-sunxi] [PATCH] musb: sunxi: Ignore VBus errors in host-only mode

Bin Liu
2015-09-15T04:20:22Z

Hi,

On Mon, Sep 14, 2015 at 9:54 PM, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
>
> On 09/14/2015 10:25 PM, Maxime Ripard wrote:
>>
>> On Thu, Sep 10, 2015 at 08:38:38PM +0200, Hans de Goede wrote:
>>>
>>> Hi,
>>>
>>> On 10-09-15 20:30, Maxime Ripard wrote:
>>>>
>>>> On Thu, Sep 10, 2015 at 08:23:23PM +0200, Hans de Goede wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On 04-09-15 08:43, Olliver Schinagl wrote:
>>>>>>
>>>>>> Hey Hans,
>>>>>>
>>>>>> On 07-08-15 10:45, Olliver Schinagl wrote:
>>>>>>>
>>>>>>> <snip>
>>>>>>>>
>>>>>>>> If you change the dr_mode to host then you _must_ also remove any
>>>>>>>> id_det and vbus_det
>>>>>>>> gpio settings from the usb_phy node in the dts, as the sun4i phy
>>>>>>>> code detects
>>>>>>>> host vs otg mode by checking for the presence of these.
>>>>>>>
>>>>>>> Yes, this fixes it and makes it work. Thanks.
>>>>>>>
>>>>>> I've been going back to this and am wondering if this is something I
>>>>>> can look into to fix properly? E.g. if the dts sets dr_mode = host, can we
>>>>>> simply ignore the pins and treat them as unset?
>>>>>
>>>>>
>>>>> AFAIK you cannot unset something in dts. The only solution I
>>>>> can comeup with is to add a dr_mode argument to the phy like
>>>>> we already have for the otg controller itself.
>>>>>
>>>>> This is something which we likely need to do anyways to add
>>>>> support for peripheral only mode, which we seem to need for
>>>>> some "hdmi sticks".
>>>>
>>>>
>>>> I haven't really followed the rest of the discussion, so sorry if you
>>>> already talked about that, but why can't you just set the dr_mode to
>>>> peripheral in such a case?
>>>
>>>
>>> This is about the usbphy code not the musb-controller code, which are
>>> 2 different dts nodes, atm only the musb-controller node has a
>>> dr_mode property, and the phy code decides between host-only
>>> and otg mode based on whether an id pin is assigned or not.
>>>
>>> My proposal is to get rid of the id-pin hack to determine the mode
>>> and add a dr_mode property to the usbphy dts node.
>>
>>
>> I agree that we should get rid of that hack, especially since a lack
>> of an ID pin might also be used on a peripheral-only device.
>>
>> However, we already have that information in the musb node, and
>> duplicating the info seems error prone. We already have a custom
>> function, maybe that's a case for another one
>
>
> AFAIK the musb / phy maintainers really want to avoid adding more
> custom functions ...

I add a function called of_usb_get_dr_mode_by_phy() in usb/common.c,
so that other phy drivers can call it to get dr_mode of the
controller. I will send the patch tomorrow morning for review.

Regards,
-Bin.

>
> Felipe, Kishon any comments on this ?
>
>
> Regards,
>
> Hans
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html