From: yossim@codeaurora.org
To: Peter Chen <peter.chen@nxp.com>, Peter Rosin <peda@axentia.se>,
Rob Herring <robh@kernel.org>,
devicetree@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
swboyd@chromium.org
Cc: Yossim@codeaurora.org
Subject: Re: [Dragonboard-aosp] [PATCH 2/4] usb: chipidea: Hook into mux framework to toggle usb switch
Date: Tue, 17 Apr 2018 16:00:23 +0300 [thread overview]
Message-ID: <bc531a6e55ace1da59a05b4e93bf1cea@codeaurora.org> (raw)
In-Reply-To: <b0f6848a-08d6-04ab-4b60-c31aea81041b@axentia.se>
On 2018-03-07 12:30, Peter Rosin wrote:
> [finally remembered to switch email for Stephen Boyd]
>
> On 2018-03-07 10:22, Yossi Mansharoff wrote:
>>> On 2018-03-06 16:16, Yossi Mansharoff wrote:
>>>>> On Wed, Feb 21, 2018 at 09:44:59AM +0200, Yossi Mansharoff wrote:
>>>>>> On the db410c 96boards platform we have a TC7USB40MU on the board
>>>>>> to
>>>>>> mux the D+/D- lines coming from the controller between a micro usb
>>>>>> "device" port and a USB hub for "host" roles[1]. During a role
>>>>>> switch, we need to toggle this mux to forward the D+/D- lines to
>>>>>> either the port or the hub. Add the necessary code to do the role
>>>>>> switch in chipidea core via the generic mux framework.
>>>>>> Board configurations like on db410c are expected to change roles
>>>>>> via
>>>>>> the sysfs API described in
>>>>>> Documentation/ABI/testing/sysfs-platform-chipidea-usb2.
>>>>>>
>>>>>> [1]
>>>>>> https://github.com/96boards/documentation/raw/master/ConsumerEdition
>>>>>> /DragonBoard-410c/HardwareDocs/Schematics_DragonBoard.pdf
>>>>>>
>>>>>> Cc: Peter Rosin <peda@axentia.se>
>>>>>> Cc: Peter Chen <peter.chen@nxp.com>
>>>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>>>> Cc: <devicetree@vger.kernel.org>
>>>>>> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>
>>>>>>
>>>>>> Signed-off-by: Yossi Mansharoff <yossim@codeaurora.org>
>>>>>> ---
>>>>>> Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 6
>>>>>> ++++++
>>>>>
>>>>> Please make bindings a separate patch.
>>>> sure
>>>>>
>>>>>> drivers/usb/chipidea/Kconfig | 2 ++
>>>>>> drivers/usb/chipidea/core.c | 6
>>>>>> ++++++
>>>>>> drivers/usb/chipidea/host.c | 7
>>>>>> +++++++
>>>>>> drivers/usb/chipidea/udc.c | 13
>>>>>> ++++++++++++-
>>>>>> include/linux/usb/chipidea.h | 2 ++
>>>>>> 6 files changed, 35 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git
>>>>>> a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
>>>>>> b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
>>>>>> index 0e03344..2e93181 100644
>>>>>> --- a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
>>>>>> +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
>>>>>> @@ -76,6 +76,10 @@ Optional properties:
>>>>>> needs to make sure it does not send more than 90%
>>>>>> maximum_periodic_data_per_frame. The use case is multiple
>>>>>> transactions, but
>>>>>> less frame rate.
>>>>>> +- mux-controls: The mux control for toggling host/device output
>>>>>> of
>>>>>> +this
>>>>>> + controller. It's expected that a mux state of 0 indicates
>>>>>> device
>>>>>> +mode and a
>>>>>> + mux state of 1 indicates host mode.
>>>>>> +- mux-control-names: Shall be "usb_switch" if mux-controls is
>>>>>> specified.
>>>>>
>>>>> -names is pointless when there is only 1.
>>>> the names is used to find the attached mux in the dt .
>>>> it is used in the following lines in mux/core.c if (mux_name) {
>>>> index = of_property_match_string(np, "mux-control-names",
>>>> mux_name);
>>>> so I think iwe need to keep it, agreed?
>>>
>>> If mux_name is NULL, index defaults to 0, i.e. the first (and
>>> presumably
>>> only) mux control is grabbed from the mux-controls list.
>>>
>>> So, you should be able to call mux_control_get_optional with a NULL
>>> mux_name argument for this to work. But please try it...
>>>
>>> Cheers,
>>> Peter
>>
>> that's correct, my thought is that it would be safer to explicitly
>> call the mux_control_get_optional function with a mux name, just for
>> the case of multiple muxes.
>> Thanks.
>> For example another mux to switch off vBUS.
>> Yossi
>
> Right. Rob, how do you propose to handle the future where a second
> mux with a different function is needed? Specifically, everything
> I come up with introduces some ugly compatibility crap in the future
> code to handle old devicetrees w/o the mux-control-names property.
> So, how to avoid that?
>
> I'm inclined to just requiring a mux-control-names up front to keep
> the future simple.
>
> Cheers,
> Peter
>
is it ok to keep the "mux-control-names"?
I want to make a new patch set for this, currently, I'm splitting this
patch into two (one for bindings and one for chipidea).
Thanks,
Yossi
>>
>>>
>>>>>
>>>>>>
>>>>>> i.mx specific properties
>>>>>> - fsl,usbmisc: phandler of non-core register device, with one @@
>>>>>> -102,4 +106,6 @@ Example:
>>>>>> rx-burst-size-dword = <0x10>;
>>>>>> extcon = <0>, <&usb_id>;
>>>>>> phy-clkgate-delay-us = <400>;
>>>>>> + mux-controls = <&usb_switch>;
>>>>>> + mux-control-names = "usb_switch";
>>>>>> };
>>>> _______________________________________________
>>>> Dragonboard-aosp mailing list
>>>> Dragonboard-aosp@lists.96boards.org
>>>> https://lists.96boards.org/mailman/listinfo/dragonboard-aosp
>>>>
>>>
>>>
prev parent reply other threads:[~2018-04-17 13:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1519199101-27065-1-git-send-email-yossim@codeaurora.org>
2018-02-21 7:44 ` [PATCH 2/4] usb: chipidea: Hook into mux framework to toggle usb switch Yossi Mansharoff
2018-03-01 22:11 ` Rob Herring
2018-03-06 15:16 ` [Dragonboard-aosp] " Yossi Mansharoff
2018-03-06 15:37 ` Peter Rosin
2018-03-07 9:22 ` Yossi Mansharoff
2018-03-07 10:30 ` Peter Rosin
2018-04-17 13:00 ` yossim [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=bc531a6e55ace1da59a05b4e93bf1cea@codeaurora.org \
--to=yossim@codeaurora.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=peda@axentia.se \
--cc=peter.chen@nxp.com \
--cc=robh@kernel.org \
--cc=swboyd@chromium.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.