lkml.org 
[lkml]   [2018]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC PATCH v3 0/5] usb: typec: Support for Alternate Modes
From
Date
On 05/11/2018 06:18 AM, Heikki Krogerus wrote:
> Hi,
>
> This is the third version of my proposal for more complete alternate
> mode support. In this version I'm including a proposal for the mux
> handling. Basically, I'm proposing that every supported alternate will
> have its own mux handle. That should allow us to support multiple
> alternate modes at the same time. There is also a small change to how
> I handled enter/exit mode commands. Now the alternate mode drivers
> will need to check if Enter Mode command ACK/NAK. The ->enter callback
> is not called in those cases separately. The typec_altmode_enter/exit
> functions are used only when the command is initiated. Other than
> that, only minor tuning.
>

I like the both the idea and the approach. I browsed through the code,
but I don't see anything obviously wrong with it. Too bad I wont have
the time for an actual alternate mode implementation. Are you working
on one, by any chance ? I would like to see this move forward, and an
actual implementation would help to get there.

Thanks,
Guenter

>
> v2 commit message:
>
> This is second version of my proposal for more complete USB Type-C
> Alternate Mode support. The original proposal can be read from here:
> https://www.spinics.net/lists/linux-usb/msg161098.html
>
> These patches now depend on series from Hans where he is introducing
> mux handling support for USB Type-C and USB in general:
> https://lkml.org/lkml/2018/3/2/340
>
> The major difference compared to v1 is that I'm proposing change to
> the sysfs ABI we have for the alternate mode devices. The files are
> not changed, but they are moved to the parent directory from the
> mode<index> folder. Since the alternate mode devices are not yet used
> and in practice not supported in mainline, I felt brave enough to
> propose that.
>
> The reason for removing the mode<index> folder is because as in patch
> 1/3 I now create a device for every mode of every SVID, there will
> never be more then one mode folder. I.e. the folder serves no purpose.
> The mode<index> is still kept for now, but it's just deprecated.
>
> There are no alternate mode drivers included yet in this version.
>
>
> Original commit message (subject was "usb: typec: alternate mode
> bus"):
>
> The bus allows SVID specific communication with the partners to be
> handled in separate drivers for each alternate mode.
>
> Alternate mode handling happens with two separate logical devices:
> 1. Partner alternate mode devices which represent the alternate modes
> on the partner. The driver for them will handle the alternate mode
> specific communication with the partner using VDMs.
> 2. Port alternate mode devices which represent connections from the
> USB Type-C port to devices on the platform.
>
> The drivers will be bind to the partner alternate modes. The alternate
> mode drivers will need to deliver the result of the negotiated pin
> configurations to the rest of the platform (towards the port alternate
> mode devices). This series includes API for that, however, not the
> final implementation yet.
>
> The connections to the other devices on the platform the ports have
> can be described by using the remote endpoint concept [1][2] on ACPI
> and DT platforms, but I have no solution for the "platform data" case
> where we have neither DT nor ACPI to describe the connections for us.
>
> [1] Documentation/devicetree/bindings/graph.txt
> [2] Documentation/acpi/dsd/graph.txt
>
>
> Heikki Krogerus (5):
> usb: typec: mux: Get the mux identifier from function parameter
> usb: typec: Register a device for every mode
> usb: typec: Bus type for alternate modes
> usb: typec: pi3usb30532: Start using generic state values
> usb: typec: tcpm: Support for Alternate Modes
>
> Documentation/ABI/obsolete/sysfs-class-typec | 48 ++
> Documentation/ABI/testing/sysfs-bus-typec | 51 ++
> Documentation/ABI/testing/sysfs-class-typec | 62 +--
> Documentation/driver-api/usb/typec_bus.rst | 136 ++++++
> drivers/usb/typec/Makefile | 2 +-
> drivers/usb/typec/bus.c | 423 +++++++++++++++++
> drivers/usb/typec/bus.h | 38 ++
> drivers/usb/typec/class.c | 472 ++++++++++++-------
> drivers/usb/typec/mux.c | 6 +-
> drivers/usb/typec/mux/pi3usb30532.c | 11 +-
> drivers/usb/typec/tcpm.c | 179 +++++--
> include/linux/mod_devicetable.h | 15 +
> include/linux/usb/tcpm.h | 9 -
> include/linux/usb/typec.h | 51 +-
> include/linux/usb/typec_altmode.h | 142 ++++++
> include/linux/usb/typec_mux.h | 2 +-
> scripts/mod/devicetable-offsets.c | 4 +
> scripts/mod/file2alias.c | 13 +
> 18 files changed, 1347 insertions(+), 317 deletions(-)
> create mode 100644 Documentation/ABI/obsolete/sysfs-class-typec
> create mode 100644 Documentation/ABI/testing/sysfs-bus-typec
> create mode 100644 Documentation/driver-api/usb/typec_bus.rst
> create mode 100644 drivers/usb/typec/bus.c
> create mode 100644 drivers/usb/typec/bus.h
> create mode 100644 include/linux/usb/typec_altmode.h
>

\
 
 \ /
  Last update: 2018-05-12 23:43    [W:0.102 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site