Messages in this thread | | | Subject | Re: [PATCH v7 00/12] USB Type-C device-connection, mux and switch support | From | Hans de Goede <> | Date | Mon, 12 Mar 2018 17:53:19 +0100 |
| |
Hi,
On 12-03-18 15:34, Heikki Krogerus wrote: > Hi, > > This is version 7 of Hans' and my series introducing support for USB muxes and > generic device-connections. The api naming for device-connections is now made > according to proposal from Greg, connection.h is dropped and the prototypes are > now in device.h. kbuild test robot <fengguang.wu@intel.com> also found stylistic > problems from patches 9/12 and 10/12 which were fixed. The patch 4/12 ("usb: > typec: Separate the definitions for data and power roles") was added to the > series.
Thanks.
I've given this new series a quick test run and it works for me :)
Regards,
Hans
> > Check the v6 from here: > https://lkml.org/lkml/2018/3/2/340 > > > Here is the cover-letter of v6: > > Hi All, > > Here is version 6 of Heikki's and my USB Type-C device-connection, mux and > switch support series. Versions 2 - 5 bring various small code and style > fixes based on review (no major changes). Version 6 is rebased on top of > the latest usb-next and brings one small but important code fix in > the devcon code. > > Here is the original cover-letter of v1: > > Some devices with an USB Type-C connector have a bunch of muxes > behind that connector which need to be controlled by the kernel (rather > then having them controlled by firmware as on most devices). > > Quite a while back I submitted a patch-series to tie together these muxes > and the Type-C Port Manager (tcpm) code, using the then new drivers/mux > framework. But the way I used the mux framework went against what it was > designed for, so in the end that series got nowhere. > > Heikki Krogerus from Intel, who maintains the USB TYPEC subsystem, has > recently been working on solving the same problem for some boards he is > doing hardware-enablement for. > > Heikki has come up with a number of infrastructure patches for this. > The first one is a new device-connection framework. This solves the > problem of describing non bus device-links on x86 in what in my experience > with this problematic area is a really nice simple, clean and *generic* > way. This could for example in the near future also replace the custom > lookup code in the pwm subsys and the custom pwm_add_table() / > pwm_remove_table() functions. > > The other 3 patches add a framework for the different type of Type-C / > USB "muxes". > > Heikki and I have gone through a number of iterations of these patches > together and we believe these are now ready for merging. Since merging > infrastructure patches without users is not done and Heikki's own use-case > for these is not yet ready for merging, the rest of this series consists > of patches by me to make the Type-C connector found on some Cherry Trail > devices (finally) be able to actually work as an USB port and not just > a charge port. > > The last patch uses the new usb-role-switch framework to also do proper > devcie / host switching on CHT devices with a USB micro AB connector. > This is also a big feature for CHT users, because before this they had > to do a reboot to get an OTG-host cable recognized (on some devices). > > Part of this series is an usb-role-switch driver for the role-switch > found inside the xhci controller on e.g. CHT devices, this is currently > implemented as the generic xhci controller instantiating a platform > child-device for this, since this really is a separate chunk of HW > which happens to sit in the XHCI mmio space. This approach may not be > universally liked, given that in this new series the role-switch driver > is much smaller and does not have any external deps anymore we could > just integrate it into the xhci code if that is preferred. > > About merging this series (once everything is reviewed, etc.), there are > quite some interdependencies in it esp. a lot of the patches depend on > the first patch. Luckily patches 1-10 all apply to subsystems which are > maintained by Greg (most to the USB subsys). Which just leaves patches > 11 and 12 once 1-10 are merged. Greg, can you create an immutable branch > for the platform/x86 and extcon maintainers to merge once this is done? > > Regards, > > Hans > > > Hans de Goede (7): > usb: typec: tcpm: Set USB role switch to device mode when configured > as such > usb: typec: tcpm: Use new Type-C switch/mux and usb-role-switch > functions > xhci: Add Intel extended cap / otg phy mux handling > usb: roles: Add Intel xHCI USB role switch driver > usb: typec: driver for Pericom PI3USB30532 Type-C cross switch > platform/x86: intel_cht_int33fe: Add device connections for the Type-C > port > extcon: axp288: Set USB role where necessary > > Heikki Krogerus (4): > drivers: base: Unified device connection lookup > usb: typec: API for controlling USB Type-C Multiplexers > usb: common: Small class for USB role switches > usb: typec: Separate the definitions for data and power roles > > Mathias Nyman (1): > xhci: Add option to get next extended capability in list by passing id > = 0 > > Documentation/ABI/testing/sysfs-class-usb_role | 21 ++ > Documentation/driver-api/device_connection.rst | 43 ++++ > Documentation/driver-api/usb/typec.rst | 73 +++++- > MAINTAINERS | 12 + > drivers/base/Makefile | 3 +- > drivers/base/devcon.c | 141 ++++++++++++ > drivers/extcon/Kconfig | 3 +- > drivers/extcon/extcon-axp288.c | 176 +++++++++++++- > drivers/platform/x86/intel_cht_int33fe.c | 24 ++ > drivers/usb/Kconfig | 5 + > drivers/usb/Makefile | 2 + > drivers/usb/common/Makefile | 1 + > drivers/usb/common/roles.c | 305 +++++++++++++++++++++++++ > drivers/usb/host/Makefile | 2 +- > drivers/usb/host/xhci-ext-caps.c | 90 ++++++++ > drivers/usb/host/xhci-ext-caps.h | 7 +- > drivers/usb/host/xhci-pci.c | 5 + > drivers/usb/host/xhci.h | 2 + > drivers/usb/roles/Kconfig | 14 ++ > drivers/usb/roles/Makefile | 1 + > drivers/usb/roles/intel-xhci-usb-role-switch.c | 192 ++++++++++++++++ > drivers/usb/typec/Kconfig | 3 + > drivers/usb/typec/Makefile | 2 + > drivers/usb/typec/{typec.c => class.c} | 124 ++++++++-- > drivers/usb/typec/fusb302/fusb302.c | 2 +- > drivers/usb/typec/mux.c | 191 ++++++++++++++++ > drivers/usb/typec/mux/Kconfig | 10 + > drivers/usb/typec/mux/Makefile | 3 + > drivers/usb/typec/mux/pi3usb30532.c | 178 +++++++++++++++ > drivers/usb/typec/tcpm.c | 63 +++-- > drivers/usb/typec/tps6598x.c | 26 ++- > drivers/usb/typec/typec_wcove.c | 1 + > drivers/usb/typec/ucsi/ucsi.c | 13 +- > include/linux/device.h | 22 ++ > include/linux/usb/role.h | 53 +++++ > include/linux/usb/tcpm.h | 15 +- > include/linux/usb/typec.h | 28 ++- > include/linux/usb/typec_mux.h | 55 +++++ > 38 files changed, 1817 insertions(+), 94 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-class-usb_role > create mode 100644 Documentation/driver-api/device_connection.rst > create mode 100644 drivers/base/devcon.c > create mode 100644 drivers/usb/common/roles.c > create mode 100644 drivers/usb/host/xhci-ext-caps.c > create mode 100644 drivers/usb/roles/Kconfig > create mode 100644 drivers/usb/roles/Makefile > create mode 100644 drivers/usb/roles/intel-xhci-usb-role-switch.c > rename drivers/usb/typec/{typec.c => class.c} (93%) > create mode 100644 drivers/usb/typec/mux.c > create mode 100644 drivers/usb/typec/mux/Kconfig > create mode 100644 drivers/usb/typec/mux/Makefile > create mode 100644 drivers/usb/typec/mux/pi3usb30532.c > create mode 100644 include/linux/usb/role.h > create mode 100644 include/linux/usb/typec_mux.h >
| |