RE: [Dragonboard-aosp] [PATCH 2/4] usb: chipidea: Hook into mux framework to toggle usb switch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>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@xxxxxxxxxx>
>>>> Cc: Peter Chen <peter.chen@xxxxxxx>
>>>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>>>> Cc: <devicetree@xxxxxxxxxxxxxxx>
>>>> Signed-off-by: Stephen Boyd <stephen.boyd@xxxxxxxxxx>
>>>>
>>>> Signed-off-by: Yossi Mansharoff <yossim@xxxxxxxxxxxxxx>
>>>> ---
>>>>  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

>
>>>
>>>>  
>>>>  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@xxxxxxxxxxxxxxxxxx
>> https://lists.96boards.org/mailman/listinfo/dragonboard-aosp
>> 
>
>
��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux