Assigning the mux to the USB Type-C port on top of fusb302. That will prepare this driver for the change in the USB Type-C class code, where the class driver will assume the muxes to be always assigned to the ports and not the controllers. Once the USB Type-C class driver has been updated, the connections between the mux and fusb302 can be dropped. Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> --- drivers/platform/x86/intel_cht_int33fe.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/intel_cht_int33fe.c b/drivers/platform/x86/intel_cht_int33fe.c index a5d27f06b2fb..4a41c546ce2f 100644 --- a/drivers/platform/x86/intel_cht_int33fe.c +++ b/drivers/platform/x86/intel_cht_int33fe.c @@ -35,7 +35,7 @@ struct cht_int33fe_data { struct i2c_client *fusb302; struct i2c_client *pi3usb30532; /* Contain a list-head must be per device */ - struct device_connection connections[4]; + struct device_connection connections[6]; }; /* @@ -183,13 +183,20 @@ static int cht_int33fe_probe(struct i2c_client *client) data->connections[1].endpoint[1] = "i2c-pi3usb30532"; data->connections[1].id = "idff01m01"; + data->connections[2].endpoint[0] = "port0"; + data->connections[2].endpoint[1] = "i2c-pi3usb30532"; + data->connections[2].id = "typec-switch"; + data->connections[3].endpoint[0] = "port0"; + data->connections[3].endpoint[1] = "i2c-pi3usb30532"; + data->connections[3].id = "idff01m01"; + /* Only adding connection for role switch if UDC exists */ udc = pci_get_class(PCI_CLASS_SERIAL_USB_DEVICE, NULL); if (udc) { pci_dev_put(udc); - data->connections[2].endpoint[0] = "i2c-fusb302"; - data->connections[2].endpoint[1] = "intel_xhci_usb_sw-role-switch"; - data->connections[2].id = "usb-role-switch"; + data->connections[4].endpoint[0] = "i2c-fusb302"; + data->connections[4].endpoint[1] = "intel_xhci_usb_sw-role-switch"; + data->connections[4].id = "usb-role-switch"; } device_connections_add(data->connections); -- 2.18.0