From nobody Thu Apr 2 22:29:16 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AEF9924DCF6; Fri, 13 Feb 2026 19:48:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771012132; cv=none; b=FDc4tBFwzEVwBNvsVqvBdwYTnniYVWA9sR7UqkzdiRTwLo2/kxLP45iqCzbBs1AqEzVCxaJwan1HxpOp/61T11tOI50oBIU2CgvAPFLPDqOoirZAFPTXLvg/9DD7jWY5rgLUc9McuTNCTG7CIRiVEhVTENbwfTCjMtTUqtRnRIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771012132; c=relaxed/simple; bh=YUaqb71jusyBC3+IgLMi2lBOpLNCkySQLseoFKGsKag=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FP3xqMRehq+bPrh3QWs68nuM4Cgu7yUbripi42sdDvxQKo/gXJ71L0Dg6qjjbeb0ynEtpUAldem/MI2UUH/6xYYvZBVYnhR+FfQSn3DRZhxN8w2+CCNWVqmoepyagD6z1i/dXokcMiwA6LcrLlTd+CXI/V59PymIF6GPmwZwR4I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=Hiflr1O2; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="Hiflr1O2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1771012129; bh=YUaqb71jusyBC3+IgLMi2lBOpLNCkySQLseoFKGsKag=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Hiflr1O2NasbYk9bdVcIpXm91O5jeP5dhotOjcpqRK6d8YxSyFDtTdwcrq+6jvYY6 4aJzoDPix/J+aRvUcPkl7Y/4cTrXhPRlScQiHiW30qZ71OhjzxyJ+D4F+v95NjLI+4 WKgTxTmvSpdZMsX6W34TcvAh/cxsZY/fwhB7HEiNDudoAZrSxgo0Cbo6vE4TzT9nEC G6cmWxeDWFaHGPQmpwOnlfCSp7MLU4hW7FKWK8X7lEC+uA4PCn+GOuOgRsvtUNj2bo VR9tlubRjwbzJCMvETqYn2IflWflOTVOCtbXOIldXE8eFUY1nPzq9Vac9OJqkF4mLM dfhfgI4WjvDaw== Received: from jupiter.universe (dyndsl-091-248-188-214.ewe-ip-backbone.de [91.248.188.214]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 073C517E35CB; Fri, 13 Feb 2026 20:48:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 96CE8480023; Fri, 13 Feb 2026 20:48:48 +0100 (CET) From: Sebastian Reichel Date: Fri, 13 Feb 2026 20:48:44 +0100 Subject: [PATCH 1/2] usb: typec: tcpm: improve handling of DISCOVER_MODES failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260213-tcpm-discover-modes-nak-fix-v1-1-9bcb5adb4ef6@collabora.com> References: <20260213-tcpm-discover-modes-nak-fix-v1-0-9bcb5adb4ef6@collabora.com> In-Reply-To: <20260213-tcpm-discover-modes-nak-fix-v1-0-9bcb5adb4ef6@collabora.com> To: Badhri Jagan Sridharan , Heikki Krogerus , Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2566; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=YUaqb71jusyBC3+IgLMi2lBOpLNCkySQLseoFKGsKag=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGmPgCAX3kzrq6Ji5xpsrkH7SxpjtXBNqPW2j 8CA0fHemayVPIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpj4AgAAoJENju1/PI O/qa2yMP/2rtqw+fc7Jt+Q19HPp4Sccld2oEoerUevx/WSHo1tOPY9AopNeqWOdNO58hL8hD+pk vJ4LdtSOn3Bdu9BD0Rs7lDh4KqjBKDwqBguHpT8iXw7ZY86TJGDeuqTghyyLygsR8Rgge0ob1UU L43pyJqpZd4ByMLAqkxsn5fJKsQGVN2rDpIyhoiI1h9ZEW8WRc6mkjRlmK/z38A+xA+063Q0ni2 19lwlY1BDnTB4VYYRQRtO8/eTWQusiCTGgbmbzovsuqPHPqlo33o/9+Xs4SKLAPYlMt/k8FWpx8 ZA47pcx5z2URWd9OutCofHlCLLu0EoMZ7OBkCQBsxEvvegEHr9jrUQsy1eGY/jMjFRSoNT1Emcv /VwbKudKUTRZbJntnM86gr/n3CNeem+XCrCnRdnWqwmcGFiI30loHEAWSGVL36m+JdCSQNHiaar Un2mKW/Q6vhPh69Mgi7JhbK/Z53vZ6BxnpNSDur9e8+y4ZvFtSEDQv1UWSpHBET1QLSRhSjsHHn A82dP8by7RROAdMDRYJAY1pUyepCTSmC31Gq5AJ3+GlEV18sROQwYAJI5b9Mhr0SUVoznalaCC1 LTK8I+zzAEuhCR+4czN1TZX0Rj2C7VdagLswXz3TG0lURT7oeJ+OddQZ2aWTQ+tPrGJnGZP4O0+ ymZBB1d4v7n8kynvL4qcpWA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A UGREEN USB-C Multifunction Adapter Model CM512 (AKA "Revodok 107") exposes two SVIDs: 0xff01 (DP Alt Mode) and 0x1d5c. The DISCOVER_MODES step succeeds for 0xff01 and gets a NAK for 0x1d5c. Currently this results in DP Alt Mode not being registered either, since the modes are only registered once all of them have been discovered. The NAK results in the processing being stopped and thus no Alt modes being registered. Improve the situation by handling the NAK gracefully and continue processing the other modes. Signed-off-by: Sebastian Reichel --- drivers/usb/typec/tcpm/tcpm.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index be49a976428f..88cc27ad9514 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -2329,8 +2329,46 @@ static int tcpm_pd_svdm(struct tcpm_port *port, stru= ct typec_altmode *adev, switch (cmd) { case CMD_DISCOVER_IDENT: case CMD_DISCOVER_SVID: - case CMD_DISCOVER_MODES: case VDO_CMD_VENDOR(0) ... VDO_CMD_VENDOR(15): + break; + case CMD_DISCOVER_MODES: + tcpm_log(port, "Skip SVID 0x%04x (failed to discover mode)", + PD_VDO_SVID_SVID0(p[0])); + + if (rx_sop_type =3D=3D TCPC_TX_SOP) { + /* 6.4.4.3.3 */ + modep->svid_index++; + if (modep->svid_index < modep->nsvids) { + u16 svid =3D modep->svids[modep->svid_index]; + *response_tx_sop_type =3D TCPC_TX_SOP; + response[0] =3D VDO(svid, 1, svdm_version, + CMD_DISCOVER_MODES); + rlen =3D 1; + } else if (tcpm_cable_vdm_supported(port)) { + *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; + response[0] =3D VDO(USB_SID_PD, 1, + typec_get_cable_svdm_version(typec), + CMD_DISCOVER_SVID); + rlen =3D 1; + } else { + tcpm_register_partner_altmodes(port); + } + } else if (rx_sop_type =3D=3D TCPC_TX_SOP_PRIME) { + /* 6.4.4.3.3 */ + modep_prime->svid_index++; + if (modep_prime->svid_index < modep_prime->nsvids) { + u16 svid =3D modep_prime->svids[modep_prime->svid_index]; + *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; + response[0] =3D VDO(svid, 1, + typec_get_cable_svdm_version(typec), + CMD_DISCOVER_MODES); + rlen =3D 1; + } else { + tcpm_register_plug_altmodes(port); + tcpm_register_partner_altmodes(port); + } + } + break; case CMD_ENTER_MODE: /* Back to USB Operation */ --=20 2.51.0 From nobody Thu Apr 2 22:29:16 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B08932773EE; Fri, 13 Feb 2026 19:48:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771012132; cv=none; b=omLv+vNfT2tKVGSM8gLLJqnJjlh+TTyfpKnZBETJFRmR/GxXmtlJMqRZcUagIL3noSfyY1dhuNAo3zfAOFN/0n46su196Vm4KTVV3852HyRKpMcMqU93d7dDO+aP+bFSu34buUY6lK0HG3/cXxu9y6qbmzYANzRYvUp0qxfCVFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771012132; c=relaxed/simple; bh=meuP6gxKTqFT3ealhNZwKKg1S7fUmPZIfIPiv1LoVbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oCs9kVcvPSS7vPxdro8F0oxKXfg3M9seK2Jm7anYOJEjc6T8MLszBJLrFMmrgBTliTALm13RBXpu0yMXbiFc54oHZ3kZLFz1G2S4Zed/7xqyRcJWkEzzU0XQeyXPIOuGxvEqxUHCpOiNatBGW1+dtzneG3d6z6kvxDjv/LIBLE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=UaUYjdn2; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="UaUYjdn2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1771012129; bh=meuP6gxKTqFT3ealhNZwKKg1S7fUmPZIfIPiv1LoVbw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UaUYjdn2nJX90ysST6mv6S27OrnMqGk3blj78y5rt/2WVFLHAz92uZ0Q9eJemmP9Z nubKS0rs+RhflqLNrJnnzvzN67puEw8DaqG70oFrXFMkyJQT2ow27t/LpIc1mzGQ7E ModbQdryOjROQH5klbtZ3PyLkvnznyUqpiAD3mt7Hs7tp0Qx6fs+xMPYsO1KqOB8OA arWKa+I6cQArnHo2xaWXV5P+qXYXJe30mX2fVqJe+WkTFlvSofU74lh/MR75HxKNbR 4f7iJf9XLvUKXX0zZA9n4dhUCdlbZbRNHFsasQi/rU6LPoNomfIJNPRbaz1s3HIwzJ 1SgoAsQLkO73Q== Received: from jupiter.universe (dyndsl-091-248-188-214.ewe-ip-backbone.de [91.248.188.214]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 025C117E35C4; Fri, 13 Feb 2026 20:48:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 97D46480027; Fri, 13 Feb 2026 20:48:48 +0100 (CET) From: Sebastian Reichel Date: Fri, 13 Feb 2026 20:48:45 +0100 Subject: [PATCH 2/2] usb: typec: tcpm: create helper function for DISCOVER_MODES Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260213-tcpm-discover-modes-nak-fix-v1-2-9bcb5adb4ef6@collabora.com> References: <20260213-tcpm-discover-modes-nak-fix-v1-0-9bcb5adb4ef6@collabora.com> In-Reply-To: <20260213-tcpm-discover-modes-nak-fix-v1-0-9bcb5adb4ef6@collabora.com> To: Badhri Jagan Sridharan , Heikki Krogerus , Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5818; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=meuP6gxKTqFT3ealhNZwKKg1S7fUmPZIfIPiv1LoVbw=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGmPgCCJbzxvuaPsNs1FUUvU0/0WRVvZbnsCm 0eB3oaYofDT4okCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpj4AgAAoJENju1/PI O/qaaMgP/iT1bdMy0RqYwsIU0LK/18hjos0CEDteWBqHaVqCCYmzl3bAcrrmKjHC+0VaggMOPDE IjH2Xl6nXjWLG1RAgtCLDZ2tyM2jIzO8Q+3mE98WQHj5dpoQpYYaLQYVoHT36Bzx6ZwAhsCC240 5GvSdkdl/+HYMooLckcvK7vTWcqPBmqJ9iH5vazN+TvbUh5kTxfuFLr6hUKJ5vwgD8JNHh31oZJ t8TNK0UadwINvn/Jn0XTfbGV+4D1C1NfjA4pZzmF5oiWhzHr4ZMxq6CMUfP4IBbXQEGHhIouZvL mpHsz9rVWL3k+ogoVgzGGc89MRk/ZiLYatasHdGBpd1f4BA0w9vLccF0t9G05OT0PjHBqqJ+nct 4JYiAOYMRbkII5KInHpjJeWbhBJiH5WidB1f/2LyNltxDm1FqGu8ZDzGXgOcOtSQxauGLvp9E4k aAvUC85UAxrhvMd0IIIBnhlVKtPk9QnluouiRo0coyDhDBhhPTqegVlWFmIwZQXCC3QkEt0AhsC Wx2/ui3jmAcxAZ8r+bcgOGwr1e4qo4QgZ3eF6hA7UBSLruXdXk7fyqKswO1/pYBkn6BgIv3GLRP FeLjGxl+oa+COpWfvF+PCxhZzZ6UhQjlT/iOwKROGMbw4F6hqDIfor4KI7lla//VpVP5RH3rJ7O oaNU2MleZcWRntPpHyOws7w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A The ACK and NAK response handling for DISCOVER_MODES is almost exactly the same. Create a helper function to reduce code duplication. Signed-off-by: Sebastian Reichel --- drivers/usb/typec/tcpm/tcpm.c | 129 +++++++++++++++++++-------------------= ---- 1 file changed, 59 insertions(+), 70 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 88cc27ad9514..dd4e7cd2db9e 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -1995,6 +1995,57 @@ static bool tcpm_cable_vdm_supported(struct tcpm_por= t *port) tcpm_can_communicate_sop_prime(port); } =20 +static void tcpm_handle_discover_mode(struct tcpm_port *port, + const u32 *p, int cnt, u32 *response, + enum tcpm_transmit_type rx_sop_type, + enum tcpm_transmit_type *response_tx_sop_type, + struct pd_mode_data *modep, + struct pd_mode_data *modep_prime, + int svdm_version, int *rlen, + bool success) + +{ + struct typec_port *typec =3D port->typec_port; + + if (rx_sop_type =3D=3D TCPC_TX_SOP) { + /* 6.4.4.3.3 */ + if (success) + svdm_consume_modes(port, p, cnt, rx_sop_type); + modep->svid_index++; + if (modep->svid_index < modep->nsvids) { + u16 svid =3D modep->svids[modep->svid_index]; + *response_tx_sop_type =3D TCPC_TX_SOP; + response[0] =3D VDO(svid, 1, svdm_version, + CMD_DISCOVER_MODES); + *rlen =3D 1; + } else if (tcpm_cable_vdm_supported(port)) { + *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; + response[0] =3D VDO(USB_SID_PD, 1, + typec_get_cable_svdm_version(typec), + CMD_DISCOVER_SVID); + *rlen =3D 1; + } else { + tcpm_register_partner_altmodes(port); + } + } else if (rx_sop_type =3D=3D TCPC_TX_SOP_PRIME) { + /* 6.4.4.3.3 */ + if (success) + svdm_consume_modes(port, p, cnt, rx_sop_type); + modep_prime->svid_index++; + if (modep_prime->svid_index < modep_prime->nsvids) { + u16 svid =3D modep_prime->svids[modep_prime->svid_index]; + *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; + response[0] =3D VDO(svid, 1, + typec_get_cable_svdm_version(typec), + CMD_DISCOVER_MODES); + *rlen =3D 1; + } else { + tcpm_register_plug_altmodes(port); + tcpm_register_partner_altmodes(port); + } + } +} + static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, const u32 *p, int cnt, u32 *response, enum adev_actions *adev_action, @@ -2252,41 +2303,10 @@ static int tcpm_pd_svdm(struct tcpm_port *port, str= uct typec_altmode *adev, } break; case CMD_DISCOVER_MODES: - if (rx_sop_type =3D=3D TCPC_TX_SOP) { - /* 6.4.4.3.3 */ - svdm_consume_modes(port, p, cnt, rx_sop_type); - modep->svid_index++; - if (modep->svid_index < modep->nsvids) { - u16 svid =3D modep->svids[modep->svid_index]; - *response_tx_sop_type =3D TCPC_TX_SOP; - response[0] =3D VDO(svid, 1, svdm_version, - CMD_DISCOVER_MODES); - rlen =3D 1; - } else if (tcpm_cable_vdm_supported(port)) { - *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; - response[0] =3D VDO(USB_SID_PD, 1, - typec_get_cable_svdm_version(typec), - CMD_DISCOVER_SVID); - rlen =3D 1; - } else { - tcpm_register_partner_altmodes(port); - } - } else if (rx_sop_type =3D=3D TCPC_TX_SOP_PRIME) { - /* 6.4.4.3.3 */ - svdm_consume_modes(port, p, cnt, rx_sop_type); - modep_prime->svid_index++; - if (modep_prime->svid_index < modep_prime->nsvids) { - u16 svid =3D modep_prime->svids[modep_prime->svid_index]; - *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; - response[0] =3D VDO(svid, 1, - typec_get_cable_svdm_version(typec), - CMD_DISCOVER_MODES); - rlen =3D 1; - } else { - tcpm_register_plug_altmodes(port); - tcpm_register_partner_altmodes(port); - } - } + tcpm_handle_discover_mode(port, p, cnt, response, + rx_sop_type, response_tx_sop_type, + modep, modep_prime, svdm_version, + &rlen, true); break; case CMD_ENTER_MODE: *response_tx_sop_type =3D rx_sop_type; @@ -2334,41 +2354,10 @@ static int tcpm_pd_svdm(struct tcpm_port *port, str= uct typec_altmode *adev, case CMD_DISCOVER_MODES: tcpm_log(port, "Skip SVID 0x%04x (failed to discover mode)", PD_VDO_SVID_SVID0(p[0])); - - if (rx_sop_type =3D=3D TCPC_TX_SOP) { - /* 6.4.4.3.3 */ - modep->svid_index++; - if (modep->svid_index < modep->nsvids) { - u16 svid =3D modep->svids[modep->svid_index]; - *response_tx_sop_type =3D TCPC_TX_SOP; - response[0] =3D VDO(svid, 1, svdm_version, - CMD_DISCOVER_MODES); - rlen =3D 1; - } else if (tcpm_cable_vdm_supported(port)) { - *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; - response[0] =3D VDO(USB_SID_PD, 1, - typec_get_cable_svdm_version(typec), - CMD_DISCOVER_SVID); - rlen =3D 1; - } else { - tcpm_register_partner_altmodes(port); - } - } else if (rx_sop_type =3D=3D TCPC_TX_SOP_PRIME) { - /* 6.4.4.3.3 */ - modep_prime->svid_index++; - if (modep_prime->svid_index < modep_prime->nsvids) { - u16 svid =3D modep_prime->svids[modep_prime->svid_index]; - *response_tx_sop_type =3D TCPC_TX_SOP_PRIME; - response[0] =3D VDO(svid, 1, - typec_get_cable_svdm_version(typec), - CMD_DISCOVER_MODES); - rlen =3D 1; - } else { - tcpm_register_plug_altmodes(port); - tcpm_register_partner_altmodes(port); - } - } - + tcpm_handle_discover_mode(port, p, cnt, response, + rx_sop_type, response_tx_sop_type, + modep, modep_prime, svdm_version, + &rlen, false); break; case CMD_ENTER_MODE: /* Back to USB Operation */ --=20 2.51.0