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

usb: typec: Only use SVID for matching altmodes

Mode in struct typec_altmode is used to indicate the index of the
altmode on a port, partner or plug. It is used in enter mode VDMs but
doesn't make much sense for matching against altmode drivers or for
matching partner to port altmodes.

Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
Link: https://lore.kernel.org/r/20241213153543.v5.1.Ie0d37646f18461234777d88b4c3e21faed92ed4f@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Abhishek Pandit-Subedi and committed by
Greg Kroah-Hartman
8541bf02 1ff24d40

+8 -16
+1 -1
drivers/usb/typec/altmodes/displayport.c
··· 791 791 EXPORT_SYMBOL_GPL(dp_altmode_remove); 792 792 793 793 static const struct typec_device_id dp_typec_id[] = { 794 - { USB_TYPEC_DP_SID, USB_TYPEC_DP_MODE }, 794 + { USB_TYPEC_DP_SID }, 795 795 { }, 796 796 }; 797 797 MODULE_DEVICE_TABLE(typec, dp_typec_id);
+1 -1
drivers/usb/typec/altmodes/nvidia.c
··· 24 24 } 25 25 26 26 static const struct typec_device_id nvidia_typec_id[] = { 27 - { USB_TYPEC_NVIDIA_VLINK_SID, TYPEC_ANY_MODE }, 27 + { USB_TYPEC_NVIDIA_VLINK_SID }, 28 28 { }, 29 29 }; 30 30 MODULE_DEVICE_TABLE(typec, nvidia_typec_id);
+2 -4
drivers/usb/typec/bus.c
··· 454 454 const struct typec_device_id *id; 455 455 456 456 for (id = drv->id_table; id->svid; id++) 457 - if (id->svid == altmode->svid && 458 - (id->mode == TYPEC_ANY_MODE || id->mode == altmode->mode)) 457 + if (id->svid == altmode->svid) 459 458 return 1; 460 459 return 0; 461 460 } ··· 469 470 if (add_uevent_var(env, "MODE=%u", altmode->mode)) 470 471 return -ENOMEM; 471 472 472 - return add_uevent_var(env, "MODALIAS=typec:id%04Xm%02X", 473 - altmode->svid, altmode->mode); 473 + return add_uevent_var(env, "MODALIAS=typec:id%04X", altmode->svid); 474 474 } 475 475 476 476 static int typec_altmode_create_links(struct altmode *alt)
+2 -2
drivers/usb/typec/class.c
··· 237 237 if (!is_typec_altmode(dev)) 238 238 return 0; 239 239 240 - return ((adev->svid == id->svid) && (adev->mode == id->mode)); 240 + return (adev->svid == id->svid); 241 241 } 242 242 243 243 static void typec_altmode_set_partner(struct altmode *altmode) 244 244 { 245 245 struct typec_altmode *adev = &altmode->adev; 246 - struct typec_device_id id = { adev->svid, adev->mode, }; 246 + struct typec_device_id id = { adev->svid }; 247 247 struct typec_port *port = typec_altmode2port(adev); 248 248 struct altmode *partner; 249 249 struct device *dev;
-1
scripts/mod/devicetable-offsets.c
··· 237 237 238 238 DEVID(typec_device_id); 239 239 DEVID_FIELD(typec_device_id, svid); 240 - DEVID_FIELD(typec_device_id, mode); 241 240 242 241 DEVID(tee_client_device_id); 243 242 DEVID_FIELD(tee_client_device_id, uuid);
+2 -7
scripts/mod/file2alias.c
··· 1221 1221 module_alias_printf(mod, true, "tbsvc:%s", alias); 1222 1222 } 1223 1223 1224 - /* Looks like: typec:idNmN */ 1224 + /* Looks like: typec:idN */ 1225 1225 static void do_typec_entry(struct module *mod, void *symval) 1226 1226 { 1227 - char alias[256] = {}; 1228 - 1229 1227 DEF_FIELD(symval, typec_device_id, svid); 1230 - DEF_FIELD(symval, typec_device_id, mode); 1231 1228 1232 - ADD(alias, "m", mode != TYPEC_ANY_MODE, mode); 1233 - 1234 - module_alias_printf(mod, false, "typec:id%04X%s", svid, alias); 1229 + module_alias_printf(mod, false, "typec:id%04X", svid); 1235 1230 } 1236 1231 1237 1232 /* Looks like: tee:uuid */