mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
usb: typec: ucsi: yoga_c630: Remove redundant duplicate altmode handling
This reverts commite0c48e42d8("usb: typec: ucsi: yoga-c630: remove duplicate AltModes"). The yoga_c630 driver previously implemented its own duplicate altmode detection in yoga_c630_ucsi_update_altmodes() to work around buggy EC firmware that returns duplicate AltModes instead of empty ones. With the introduction of the common ucsi_altmode_is_duplicate() helper in both the standard and nvidia registration paths, duplicate detection is now handled automatically in the core UCSI code. This makes the yoga_c630-specific implementation added in commite0c48e42d8("usb: typec: ucsi: yoga-c630: remove duplicate AltModes") redundant. Remove yoga_c630_ucsi_update_altmodes() and its callback to eliminate code duplication and simplify the driver. Note that this causes the driver to switch back from the nvidia registration path to the standard path, which is the original behavior before commite0c48e42d8("usb: typec: ucsi: yoga-c630: remove duplicate AltModes"). Both paths now include duplicate detection, ensuring the firmware bug is still properly handled. Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com> Link: https://patch.msgid.link/20260713084323.287516-3-acelan.kao@canonical.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f1aa17f72f
commit
8706409bd4
|
|
@ -139,28 +139,6 @@ static int yoga_c630_ucsi_sync_control(struct ucsi *ucsi,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static bool yoga_c630_ucsi_update_altmodes(struct ucsi *ucsi,
|
||||
u8 recipient,
|
||||
struct ucsi_altmode *orig,
|
||||
struct ucsi_altmode *updated)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (orig[0].svid == 0 || recipient != UCSI_RECIPIENT_SOP)
|
||||
return false;
|
||||
|
||||
/* EC is nice and repeats altmodes again and again. Ignore copies. */
|
||||
for (i = 1; i < UCSI_MAX_ALTMODES; i++) {
|
||||
if (orig[i].svid == orig[0].svid) {
|
||||
dev_dbg(ucsi->dev, "Found duplicate altmodes, starting from %d\n", i);
|
||||
memset(&orig[i], 0, (UCSI_MAX_ALTMODES - i) * sizeof(*orig));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void yoga_c630_ucsi_update_connector(struct ucsi_connector *con)
|
||||
{
|
||||
if (con->num == 1)
|
||||
|
|
@ -174,7 +152,6 @@ static const struct ucsi_operations yoga_c630_ucsi_ops = {
|
|||
.read_message_in = yoga_c630_ucsi_read_message_in,
|
||||
.sync_control = yoga_c630_ucsi_sync_control,
|
||||
.async_control = yoga_c630_ucsi_async_control,
|
||||
.update_altmodes = yoga_c630_ucsi_update_altmodes,
|
||||
.update_connector = yoga_c630_ucsi_update_connector,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user