From: "Shah, Nehal-bakulchandra" <nehal-bakulchandra.shah@amd.com>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: linux-iio <linux-iio@vger.kernel.org>,
linux-usb@vger.kernel.org, Jagadish.Hadimani@amd.com
Subject: Re: ucsi and DRD controller interaction
Date: Wed, 22 Apr 2020 20:23:54 +0530 [thread overview]
Message-ID: <e85cefec-2731-65e8-f0f5-8cdc5d9e3773@amd.com> (raw)
In-Reply-To: <20200422142808.GE618654@kuha.fi.intel.com>
Hi
On 4/22/2020 7:58 PM, Heikki Krogerus wrote:
> On Wed, Apr 22, 2020 at 06:37:10PM +0530, Shah, Nehal-bakulchandra wrote:
>> Hi
>>
>> On 4/22/2020 4:30 PM, Heikki Krogerus wrote:
>>> On Tue, Apr 21, 2020 at 07:23:30PM +0530, Shah, Nehal-bakulchandra wrote:
>>>> Hi
>>>>
>>>> On 4/21/2020 1:13 PM, Heikki Krogerus wrote:
>>>>> Adding linux-usb mailing list.
>>>>>
>>>>> On Mon, Apr 20, 2020 at 07:09:17PM +0530, Shah, Nehal-bakulchandra wrote:
>>>>>> Hi Heikki ,
>>>>>>
>>>>>> I need some pointer from you, so in a system where I have UCSI driver for DRD
>>>>>> Controller, then how call stack will be?
>>>>>>
>>>>>> I am unable to comprehend the flow from UCSI infrastructure to DRD controller
>>>>>> code base.
>>>>> Do you need to tell the negotiated data role to your USB controller
>>>>> driver from the UCSI driver? For that we would need to know which USB
>>>>> controller, or more precisely, which USB port is connected to the
>>>>> USB Type-C connector in question.
>>>>>
>>>>> That would require ACPI tables to be able to describe the connection
>>>>> between the USB Type-C connector and the USB port (and the connection
>>>>> between DisplayPort and the USB Type-C connector etc.). Unfortunately
>>>>> there is currently no documented way of doing that, however, there is
>>>>> a proposal for a document the defines how the USB Type-C connectors
>>>>> should be described in ACPI in general. The proposal does consider
>>>>> this problem as well. For this the solution is to use _DSD device
>>>>> properties "usb2-port" and "usb3-port" that have references to the
>>>>> correct USB port nodes as values.
>>>>>
>>>>> Which USB controller are you using btw?
>>>>>
>>>>> thanks,
>>>> Thanks for the mail.
>>>>
>>>> Here is the configuration
>>>>
>>>> 1. DRD Controller (DWC3 controller)
>>>>
>>>> 2. TI PD Controller
>>>>
>>>> 3. TI PD Controller and Host has I2C as transport layer. So ACPI mechanism wont work here.
>>>>
>>>>
>>>> Hence i was wondering, is there any way from UCSI Driver we inform to DWC3 driver stack about Role change. I can understand one point that,
>>>>
>>>> DWC3 controller can work without UCSI Implementation i.e Only PD firmware. But i want to understand if there is a role change, PD interrupt will be generated
>>>>
>>>> and UCSI Driver will come to know about this role change. But from this onwards , i am unable to comprehend how it can be propagated upto DWC3 stack.
>>> If the Type-C drivers need to tell DWC3 driver the data role (USB
>>> role) the connector is operating in, then you use the USB Role Switch
>>> Class for that (drivers/usb/role/). The USB Type-C driver (so ucsi.c
>>> or tps6598x.c in this case) that knows the USB role tells it to the
>>> USB role class by calling usb_role_switch_set_role().
>>>
>>> The USB role switch class then takes care of forwarding the
>>> information to the actual switch, which is DWC3 in this case. The DWC3
>>> driver already registers the USB role switch for you
>>> (drivers/usb/dwc3/drd.c), but the UCSI driver, and also tps6598x.c,
>>> does not use the USB role switch API yet. There has never been need
>>> for that before this.
>>>
>>> Adding USB role switch handling to the UCSI and tps6598x drivers can
>>> easily be fixed, but it's still not enough. You still need to describe
>>> the connection between the USB PD controller and DWC3 somewhere.
>>>
>>> thanks,
>> appreciate your input. So if understand correctly, something like below patch has to be done
>>
>> https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Flkml.iu.edu%2Fhypermail%2Flinux%2Fkernel%2F2003.1%2F04687.html&data=02%7C01%7Cnehal-bakulchandra.shah%40amd.com%7Cafa9696669a74336186a08d7e6c96354%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637231624939620306&sdata=nwwQbBBlAduAOhIfvfYv9UzR%2B478yN%2Fldb9%2FLK%2F6eiE%3D&reserved=0
>>
>> So this patch is still under review?
> The patch is in mainline:
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcommit%2F%3Fid%3D8a0a137997448690a642e2325fe73242788b26fe&data=02%7C01%7Cnehal-bakulchandra.shah%40amd.com%7Cafa9696669a74336186a08d7e6c96354%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637231624939620306&sdata=%2BIf%2Bz0Cm7CG32POOf3tdue%2FSamAqWPGjaZQYwBuRFwE%3D&reserved=0
>
>> right, and this will take for "Registering a role switch in the DRD code". So then from ucsi.c we need to
>>
>> call the role class. Also, the above patch is based on device tree binding (i.e for arm platform)but in my case i have x86 so do i have to expose this via ACPI?
> That patch does not actually have anything devicetree specific, but
> you do need to supply the description of the connection like I said,
> and ideally you can do that in your ACPI tables.
>
> Can you still influence what goes to your ACPI tables, or are we
> talking about products that are already on the market?
>
>
> thanks,
Yes still it is in development phase so i can work out with BIOS team for the same. When you say description of connection ,something like this should be part of _DSD method right? (i.e from below dts
to _DSD of ACPI)
usb_con: connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
try-power-role = "sink";
source-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>;
sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)
PDO_VAR(5000, 5000, 1000)>;
op-sink-microwatt = <10000000>;
};
regards
Nehal Shah
next prev parent reply other threads:[~2020-04-22 14:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-20 13:39 ucsi and DRD controller interaction Shah, Nehal-bakulchandra
2020-04-21 7:43 ` Heikki Krogerus
2020-04-21 13:53 ` Shah, Nehal-bakulchandra
2020-04-22 11:00 ` Heikki Krogerus
2020-04-22 13:07 ` Shah, Nehal-bakulchandra
2020-04-22 14:28 ` Heikki Krogerus
2020-04-22 14:53 ` Shah, Nehal-bakulchandra [this message]
2020-04-27 12:00 ` Heikki Krogerus
2020-04-27 14:15 ` Shah, Nehal-bakulchandra
2020-04-29 12:43 ` Heikki Krogerus
2020-04-29 13:03 ` Heikki Krogerus
2020-04-29 20:02 ` Shah, Nehal-bakulchandra
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=e85cefec-2731-65e8-f0f5-8cdc5d9e3773@amd.com \
--to=nehal-bakulchandra.shah@amd.com \
--cc=Jagadish.Hadimani@amd.com \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-usb@vger.kernel.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