Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: typec: Add retimer handle to port altmode

Just like it does with muxes, the Type-C bus code can update the state
of connected retimers (especially when altmode-related transitions
occur). Add a retimer handle to the port altmode struct to enable this.

Signed-off-by: Prashant Malani <pmalani@chromium.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20230112221609.540754-2-pmalani@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Prashant Malani and committed by
Greg Kroah-Hartman
2476de82 a30951d3

+16 -3
+2
drivers/usb/typec/bus.h
··· 7 7 8 8 struct bus_type; 9 9 struct typec_mux; 10 + struct typec_retimer; 10 11 11 12 struct altmode { 12 13 unsigned int id; 13 14 struct typec_altmode adev; 14 15 struct typec_mux *mux; 16 + struct typec_retimer *retimer; 15 17 16 18 enum typec_port_data roles; 17 19
+14 -3
drivers/usb/typec/class.c
··· 583 583 { 584 584 if (IS_ERR_OR_NULL(adev)) 585 585 return; 586 + typec_retimer_put(to_altmode(adev)->retimer); 586 587 typec_mux_put(to_altmode(adev)->mux); 587 588 device_unregister(&adev->dev); 588 589 } ··· 2109 2108 { 2110 2109 struct typec_altmode *adev; 2111 2110 struct typec_mux *mux; 2111 + struct typec_retimer *retimer; 2112 2112 2113 2113 mux = typec_mux_get(&port->dev, desc); 2114 2114 if (IS_ERR(mux)) 2115 2115 return ERR_CAST(mux); 2116 2116 2117 - adev = typec_register_altmode(&port->dev, desc); 2118 - if (IS_ERR(adev)) 2117 + retimer = typec_retimer_get(&port->dev); 2118 + if (IS_ERR(retimer)) { 2119 2119 typec_mux_put(mux); 2120 - else 2120 + return ERR_CAST(retimer); 2121 + } 2122 + 2123 + adev = typec_register_altmode(&port->dev, desc); 2124 + if (IS_ERR(adev)) { 2125 + typec_retimer_put(retimer); 2126 + typec_mux_put(mux); 2127 + } else { 2121 2128 to_altmode(adev)->mux = mux; 2129 + to_altmode(adev)->retimer = retimer; 2130 + } 2122 2131 2123 2132 return adev; 2124 2133 }