FAILED: patch "[PATCH] usb: typec: ucsi: Fix cable registration" failed to apply to 6.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.10.y
git checkout FETCH_HEAD
git cherry-pick -x 87eb3cb4ec619299cd5572e1d5eb68aef4074ac2
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024090909-goes-yogurt-80fa@gregkh' --subject-prefix 'PATCH 6.10.y' HEAD^..
Possible dependencies:
87eb3cb4ec61 ("usb: typec: ucsi: Fix cable registration") c313a44ac9cd ("usb: typec: ucsi: Always set number of alternate modes")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 87eb3cb4ec619299cd5572e1d5eb68aef4074ac2 Mon Sep 17 00:00:00 2001
From: Heikki Krogerus <[email protected]>
Date: Tue, 3 Sep 2024 16:09:44 +0300
Subject: [PATCH] usb: typec: ucsi: Fix cable registration
The Cable PD Revision field in GET_CABLE_PROPERTY was introduced in UCSI v2.1, so adding check for that.
The cable properties are also not used anywhere after the cable is registered, so removing the cable_prop member from struct ucsi_connector while at it.
drivers/usb/typec/ucsi/ucsi.c +15 -15
@@ -965,10 +965,20 @@ static void ucsi_unregister_plug(struct ucsi_connector *con)static int ucsi_register_cable (struct ucsi_connector *con) { +struct ucsi_cable_property cable_prop;struct typec_cable *cable;struct typec_cable_desc desc = {}; +u64 command; +int ret; -switch (UCSI_CABLE_PROP_FLAG_PLUG_TYPE (con->cable_prop.flags)) { + command =UCSI_GET_CABLE_PROPERTY |UCSI_CONNECTOR_NUMBER (con->num); + ret =ucsi_send_command (con->ucsi, command, &cable_prop,sizeof (cable_prop)); +if (ret <0 ) { +dev_err (con->ucsi->dev,"GET_CABLE_PROPERTY failed (%d)\n" , ret); +return ret; + } + +switch (UCSI_CABLE_PROP_FLAG_PLUG_TYPE (cable_prop.flags)) {case UCSI_CABLE_PROPERTY_PLUG_TYPE_A : desc.type =USB_PLUG_TYPE_A ;break ;
@@ -984,10 +994,10 @@ static int ucsi_register_cable(struct ucsi_connector *con) } desc.identity = &con->cable_identity; - desc.active = !!(UCSI_CABLE_PROP_FLAG_ACTIVE_CABLE & - con->cable_prop.flags); - desc.pd_revision =UCSI_CABLE_PROP_FLAG_PD_MAJOR_REV_AS_BCD ( - con->cable_prop.flags); + desc.active = !!(UCSI_CABLE_PROP_FLAG_ACTIVE_CABLE & cable_prop.flags); + +if (con->ucsi->version >=UCSI_VERSION_2_1 ) + desc.pd_revision =UCSI_CABLE_PROP_FLAG_PD_MAJOR_REV_AS_BCD (cable_prop.flags); cable =typec_register_cable (con->port, &desc);if (IS_ERR (cable)) {
@@ -1193,21 +1203,11 @@ static int ucsi_check_connection(struct ucsi_connector *con)static int ucsi_check_cable (struct ucsi_connector *con) { -u64 command;int ret, num_plug_am;if (con->cable)return 0 ; - command =UCSI_GET_CABLE_PROPERTY |UCSI_CONNECTOR_NUMBER (con->num); - ret =ucsi_send_command (con->ucsi, command, &con->cable_prop, -sizeof (con->cable_prop)); -if (ret <0 ) { -dev_err (con->ucsi->dev,"GET_CABLE_PROPERTY failed (%d)\n" , - ret); -return ret; - } - ret =ucsi_register_cable (con);if (ret <0 )return ret;
drivers/usb/typec/ucsi/ucsi.h +0 -1
@@ -465,7 +465,6 @@ struct ucsi_connector {struct ucsi_connector_status status;struct ucsi_connector_capability cap; -struct ucsi_cable_property cable_prop;struct power_supply *psy;struct power_supply_desc psy_desc;u32 rdo;