[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a6cbc859-184e-2a0d-bd2b-0ad9653e5ee2@linaro.org>
Date: Tue, 18 Feb 2020 14:48:16 +0000
From: Bryan O'Donoghue <bryan.odonoghue@...aro.org>
To: "Dwivedi, Avaneesh Kumar (avani)" <akdwived@...eaurora.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>
Cc: linux-arm-msm@...r.kernel.org, linux-usb@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
ckadabi@...eaurora.org, tsoni@...eaurora.org,
bryanh@...eaurora.org, psodagud@...eaurora.org,
rnayak@...eaurora.org, satyap@...eaurora.org,
pheragu@...eaurora.org
Subject: Re: [PATCH v4 2/2] Embedded USB Debugger (EUD) driver
On 18/02/2020 13:23, Dwivedi, Avaneesh Kumar (avani) wrote:
>
> On 2/18/2020 1:14 AM, Bryan O'Donoghue wrote:
>> On 16/02/2020 16:07, Dwivedi, Avaneesh Kumar (avani) wrote:
>>>
>>> On 2/4/2020 8:40 AM, Bryan O'Donoghue wrote:
>>>> On 03/02/2020 19:35, Bjorn Andersson wrote:
>>>>> On Thu 30 Jan 20:43 PST 2020, Avaneesh Kumar Dwivedi wrote:
>>>>
>>>> Hi Avaneesh.
>>>
>>> Hello Bryan, Thank you very much for your review comments.
>>>
>>> Will be replying to your comments and will be posting new patchset
>>> soon as per review comments.
>>>
>>>>
>>>>> Please aim for keeping the sort order in this file (ignore QCOM_APR
>>>>> which obviously is in the wrong place)
>>>>>
>>>>>> + tristate "QTI Embedded USB Debugger (EUD)"
>>>>>> + depends on ARCH_QCOM
>>>>
>>>> If we persist with the model of EXTCON you should "select EXTCON" here.
>>
>>> I have asked this query with Bjorn Also against his review comments,
>>> whether we need to persist with extcon or need to switch to usb role
>>> switch framework, as we are notifying not only to usb controller but
>>> also to pmic charger so in case we adopt usb role switch then how we
>>> will notify to pmic charger to enable charging battery ? Also as i
>>> mentioned there my dilema is it does not look very apt to model EUD
>>> hw IP as c type connector, so please let me know your views.
>>
>> I think there's a desire to model USB ports as connector child nodes
>> of a USB controllers as opposed to the more generic extcon so, I think
>> the effort should probably be made to model it up as typec.
> this comment is irrespective of your below comment (If we were to
> support Control Peripheral where the local DWC3 controller has the
> signals routed away entirely, then I think we would need to look into
> modelling that in device tree - and using an overlay to show the DWC3
> controller going away in Control Peripheral mode and coming back. )?
Yes, I think irrespective we should model this as a connector not an
extcon and I think you could do think you could do that as a typec
1. Using role-switch
2. Use the regulator API to capture EUD related charger messages
and trigger changes in the PMIC as opposed to using extcon
to notify.
I could be wrong about #2
>> Can that work for you ?
> Did not comprehend this comment fully. if possible can you give some
> example.
My understanding is we are generally being encouraged to model ports as
connectors instead of extcon. I think it is possible to model your port
driver as a typec connector using USB role-switching and the regulator
API i.e. I don't think you really need extcon here.
>> Ah so, the EUD is a mux, that sits between the connector and the
>> controller, routing UTMI signals to an internal USB hub, which in-turn
>> has debug functions attached to the hub...
> Yes that is correct understanding.
>>
>> Can the Arm core see the hub ? I assume not ?
> Not sure what is it mean by "Can the Arm core see the hub"?
In Debug mode will a DWC3 controller in host mode enumerate the internal
hub ? If so, is that a supported use-case ?
>> There are a few different modes - you should probably be clear on
>> which mode it is you are supporting.
>>
>> Normal mode: (Bypass)
>> Port | EUD | Controller
>>
>> Normal + debug hub mode: (Debug)
>> Port | EUD | Controller + HUB -> debug functions
>>
>> Debug hub mode: (Control Peripheral)
>> Port | EUD | HUB -> debug functions
>>
>> its not clear to me from the documentation or the code which mode it
>> is we are targeting to be supported here.
> Its debug mode which we are supporting in driver.
>>
>> I think you should support Debug mode only here, so that the Arm core
>> never has to deal with the situation where the USB connector "goes away".
> Can you please help what you mean by "so that the Arm core never has to
> deal with the situation where the USB connector "goes away""
So my thinking is
- DWC3 in host mode
For argument sake, lets say an external self-powered hub is connected
and a number of USB devices are enumerated
- EUD switches to Control Peripheral mode
In this case what would happen ?
>>
>> If we were to support Control Peripheral where the local DWC3
>> controller has the signals routed away entirely, then I think we would
>> need to look into modelling that in device tree - and using an overlay
>> to show the DWC3 controller going away in Control Peripheral mode and
>> coming back.
> debug mode is set run time via user, i will check how we can model such
> scenario where device tree corresponding to a h/w module is only valid
> in some scenario at run time. if possible please elaborate bit more on
> your suggestion
If Debug mode is all you are trying to do support then I don't think you
really need to model that in DT.
However if intend to support Control Peripheral mode which as I
understand it, switches the UTMI signals away from a DWC3 controller in
Host mode, then I think you would need to use a DT overlay to switch off
the controller, before switching.
That's why I'm asking you about Control Peripheral mode - do you want to
support it - and if so, then what happens to DWC3 in host mode when the
UTMI signals go away ?
I think you've said you only want to support Debug mode, which makes
more sense to me.
Is Debug mode only valid when the DWC3 controller is in
peripheral/device mode and if so, should we be checking/enforcing that
somewhere - DT or EUD-driver code ?
>> Also final thought since the EUD can operate in different modes, it
>> really should be a string that gets passed in - with the string name
>> aligning to the documentation "bypass", "debug" and so on, so that the
>> mode we are switching to is obvious to anybody who has the spec and
>> the driver.
>
> you mean we should document that this driver works in debug mode only?
> not clear on where one should pass "debug" and "bypass" string?
You have a routine to switch to debug mode that takes a parameter from
user-space right ?
Bjorn mentioned you could write 42. My question/suggestion is why isn't
the value written a string which corresponds to the supported modes from
the EUD spec ?
"bypass" as default "debug" the mode you want to add, at a later time
you could optionally add in "control-periperhal" mode.
Makes a little more sense to me than writing just 0, 1 or 42 :) into
your store routine.
---
bod
Powered by blists - more mailing lists