devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Bin Liu <b-liu-l0cyMroinI0@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v3 1/4] USB: Fix of_usb_get_dr_mode_by_phy with a shared phy block
Date: Fri, 10 Jun 2016 11:27:37 +0200	[thread overview]
Message-ID: <764e8d4b-4b8a-6b8a-db34-424efbc8ca93@redhat.com> (raw)
In-Reply-To: <20160609194936.GB2167@uda0271908>

Hi,

On 09-06-16 21:49, Bin Liu wrote:
> Hi,
>
> On Thu, Jun 09, 2016 at 04:51:45PM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 09-06-16 16:30, Bin Liu wrote:
>>> Hi,
>>>
>>> On Sun, Jun 05, 2016 at 04:59:33PM +0200, Hans de Goede wrote:
>>>> Some SoCs have a single phy-hw-block with multiple phys, this is
>>>> modelled by a single phy dts node, so we end up with multiple
>>>> controller nodes with a phys property pointing to the phy-node
>>>> of the otg-phy.
>>>>
>>>> Only one of these controllers typically is an otg controller, yet we
>>>> were checking the first controller who uses a phy from the block and
>>>> then end up looking for a dr_mode property in e.g. the ehci controller.
>>>>
>>>> This commit fixes this by adding an arg0 parameter to
>>>> of_usb_get_dr_mode_by_phy and make of_usb_get_dr_mode_by_phy
>>>> check that this matches the phandle args[0] value when looking for
>>>> the otg controller.
>>>>
>>>> Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>>>> ---
>>>> Changes in v2:
>>>> -Add a args0 parameter instead of looking for nodes with a dr_mode property
>>>> Changes in v3:
>>>> -No changes
>>>> ---
>>>> drivers/usb/common/common.c  | 31 ++++++++++++++++++-------------
>>>> drivers/usb/phy/phy-am335x.c |  2 +-
>>>> include/linux/usb/of.h       |  4 ++--
>>>> 3 files changed, 21 insertions(+), 16 deletions(-)
>>>
>>> This breaks am335x.
>>>
>>> [   17.433166] /ocp/usb@47400000/usb@47401000: could not get #phy-cells
>>> for /ocp/usb@47400000/usb-phy@47401300
>>> [   17.443627] /ocp/usb@47400000/usb@47401800: could not get #phy-cells
>>> for /ocp/usb@47400000/usb-phy@47401b00
>>> [   17.454005] am335x-phy-driver 47401300.usb-phy: dr_mode 0
>>> [   17.460518] 47401300.usb-phy supply vcc not found, using dummy
>>> regulator
>>> [   17.469685] /ocp/usb@47400000/usb@47401000: could not get #phy-cells
>>> for /ocp/usb@47400000/usb-phy@47401300
>>> [   17.479998] /ocp/usb@47400000/usb@47401800: could not get #phy-cells
>>> for /ocp/usb@47400000/usb-phy@47401b00
>>> [   17.490342] am335x-phy-driver 47401b00.usb-phy: dr_mode 0
>>
>> That is weird, quoting: drivers/phy/phy-core.c: _of_phy_get():
>>
>>         ret = of_parse_phandle_with_args(np, "phys", "#phy-cells",
>>                 index, &args);
>>         if (ret)
>>                 return ERR_PTR(-ENODEV);
>>
>> So if #phy-cells is not defined, then the phy core should not
>> be able to work with the dts files in question at all.
>
> am335x phy does not use phy framework, so those phy core api is not
> called.
>
>>
>> All my patch does is make the way of_usb_get_dr_mode_by_phy parses
>> phy-handles be identical to how phy-core.c does it.
>>
>> I see that the usb0_phy node in arch/arm/boot/dts/am33xx.dtsi
>> indeed lacks a "#phy-cells = <0>;" line.
>>
>> Quoting: Documentation/devicetree/bindings/phy/phy-bindings.txt
>>
>> PHY device node
>> ===============
>>
>> Required Properties:
>> #phy-cells:     Number of cells in a PHY specifier;  The meaning of all those
>>                 cells is defined by the binding for the phy node. The PHY
>>                 provider can use the values in cells to find the appropriate
>>                 PHY.
>>
>> So not having #phy-cells defined for a phy-node clearly is a bug.
>
> am335x phy does not follow the bindings in phy/, but usb/phy/.

Ah, I did not know about those, that explains. I will send a v4 of
the patch which will keep compatibility with the usb/phy/ bindings
when the passed in arg0 == -1.

Note I will not be resending patch 2-4, please merge these as they
are (no changes are needed).

>>
>> A patch like the following should fix this:
>>
>> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
>> index 52be48b..c4ff788d 100644
>> --- a/arch/arm/boot/dts/am33xx.dtsi
>> +++ b/arch/arm/boot/dts/am33xx.dtsi
>> @@ -557,6 +557,7 @@
>>  			};
>>
>>  			usb0_phy: usb-phy@47401300 {
>> +				#phy-cells = <0>;
>
> This seems to be ok, but this patch would break the dt backward compatible.

I understand, as said above I'll do a new version of the patch preserving
compatibility.

>>  				compatible = "ti,am335x-usb-phy";
>>  				reg = <0x47401300 0x100>;
>>  				reg-names = "phy";
>>

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2016-06-10  9:27 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-05 14:59 [PATCH v3 1/4] USB: Fix of_usb_get_dr_mode_by_phy with a shared phy block Hans de Goede
     [not found] ` <1465138776-6003-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-05 14:59   ` [PATCH v3 2/4] phy-sun4i-usb: Add support for peripheral-only mode Hans de Goede
     [not found]     ` <1465138776-6003-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-17 13:12       ` Kishon Vijay Abraham I
2016-06-05 14:59   ` [PATCH v3 3/4] phy-sun4i-usb: Add workaround for missing Vbus det interrupts on A31 Hans de Goede
     [not found]     ` <1465138776-6003-3-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-17 13:12       ` Kishon Vijay Abraham I
2016-06-05 14:59   ` [PATCH v3 4/4] musb: sunxi: Simplify dr_mode handling Hans de Goede
     [not found]     ` <1465138776-6003-4-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-08 10:23       ` Maxime Ripard
2016-06-08 10:30         ` Hans de Goede
     [not found]           ` <08af737c-f1f1-0966-0eca-24d4daa7423b-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-15 19:30             ` Maxime Ripard
2016-06-10 14:53       ` Bin Liu
2016-06-09 14:30   ` [PATCH v3 1/4] USB: Fix of_usb_get_dr_mode_by_phy with a shared phy block Bin Liu
2016-06-09 14:51     ` Hans de Goede
     [not found]       ` <9a05c16a-e8a2-02b7-c093-1131e27bcdd4-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-09 19:49         ` Bin Liu
2016-06-10  9:27           ` Hans de Goede [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=764e8d4b-4b8a-6b8a-db34-424efbc8ca93@redhat.com \
    --to=hdegoede-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=b-liu-l0cyMroinI0@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=kishon-l0cyMroinI0@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).