Add support for the ON Semiconductor NB7VPQ904M Type-C USB SuperSpeed and DisplayPort ALT Mode Linear Redriver chip found on some devices with a Type-C port. The redriver compensates ultra High-Speeed DisplayPort and USB Super Speed signal integrity losses mainly due to PCB & transmission cables. The redriver doesn't support SuperSpeed lines swapping, but can support Type-C SBU lines swapping. Support is designed as a Type-C Switch and Retimer, and can propagate orientation settings to the source endpoint, which is usually a Super Speed PHY which does the data lanes swapping. Bindings are added first and can handle the fact data lanes pairs can be swapped on the PCB. Compile-time dependencies: - svid removal at [1] [1] https://lore.kernel.org/all/20230526131434.46920-1-heikki.krogerus@xxxxxxxxxxxxxxx/ Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx> --- Changes in v2: - Switch to "retimer" infrastructure - Slight style fixups after switch to retimer - Bindings updates (did not keep Reviewed-by tag for those reasons) - Update maintainer, was using Bjorn with invalid email - Fixed swapped lanes mapping - Switched to retimer-switch - Fixed i2c top node in example - Link to v1: https://lore.kernel.org/r/20230601-topic-sm8x50-upstream-redriver-v1-0-6ad21094ff6f@xxxxxxxxxx --- Dmitry Baryshkov (1): usb: typec: add support for the nb7vpq904m Type-C Linear Redriver Neil Armstrong (1): dt-bindings: usb: add ON Semiconductor nb7vpq904m Type-C Linear Redriver bindings .../devicetree/bindings/usb/onnn,nb7vpq904m.yaml | 141 ++++++ drivers/usb/typec/mux/Kconfig | 8 + drivers/usb/typec/mux/Makefile | 1 + drivers/usb/typec/mux/nb7vpq904m.c | 529 +++++++++++++++++++++ 4 files changed, 679 insertions(+) --- base-commit: ac9a78681b921877518763ba0e89202254349d1b change-id: 20230601-topic-sm8x50-upstream-redriver-6e261edd5cb4 Best regards, -- Neil Armstrong <neil.armstrong@xxxxxxxxxx>