From nobody Thu Oct 9 01:13:40 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 63C6825A2A2 for ; Sat, 21 Jun 2025 18:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529658; cv=none; b=oBaz1V1c5G9gRmnxu8jlEB+jsRSr/lgTruOpEuj3u2ES+HcGVE0DWUzkn5WUhErk1ZHz/4HzknYmOldPS0/EVEvhlBxUIArayeDQorahT2c5ZBTf626dxy8LV6HLshweRdGZrNAlHY/XTw+JYgIjSLACUlI+bqmwkNcA0f2Pwbs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529658; c=relaxed/simple; bh=dSQFGNWG/Zf26SyfOt589O9Vx61eV+28LRkpnswAKEg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TgEmzIVgTdweus1NGmgT7ez7oTpEihXdaYzLtnNERRsr8Hh1n5XkbkkdUKBAAeP8bkyCLxlUnL/3/sFMlk6ETy+hyxKbsnVNMYSzOD8RJ24aiHhX33EarlGsy1qL/y0N/gybxvyZ6/2UNBLsEzEWMQSbC5lGcsx/da4YSNyA0Vc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=oA3Ww1VI; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="oA3Ww1VI" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LI7Bef017784 for ; Sat, 21 Jun 2025 18:14:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= bcQ/uB31Z3cDOfD3eWsCLPpsYTWEx+9S9C+nOkqBYN0=; b=oA3Ww1VIz1cpKZBe eTPM1nXYt16Hh2oYYoOKjy+sWt13kCla5iloWldXzSlUU5RnFFegMLiH0FxM/KVF 8QTHeo4phR7rONv3mwUKY/nkhjG9xq8X3MUmp+GPy5pEAKQdYaHYu/2KyxIw/4Dn 1If83H1hDgHpxClV84RvR3rIxctIjqpk5OwafT0U0YCPK5Y8MJ1krpHhgQm4qacE SqeGdeyWvr3ACHh4sCMHlsVh5gc3gtgD8MHKAtv+NWBHfZzm3Np1ExwBl+T0WKqF tWQckPZ1L1uDcYc5ZqvqMcd6N8aKsmzwJ9JFAqE1hy2CyKlU6tFk6jNpba4r+YG1 E6pDyw== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47e1qgr08d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:16 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7ceb5b5140eso432047885a.2 for ; Sat, 21 Jun 2025 11:14:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529655; x=1751134455; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bcQ/uB31Z3cDOfD3eWsCLPpsYTWEx+9S9C+nOkqBYN0=; b=aAlGcbg/fQ9D6IMNjJgq6NwIS4DlYIE72+wkpetTrNZOWwozAtTtpFiNh9KwmCmkNy qsBf/XaaYu4OKSrY94G6teJN91SzoONf+gZlynJKOU45imSKORIIZdiL9gT/eIcYmbzc AxSRZMXimPD1Lu6BAQT94jai8hbYJ5xMqnFRQrYGj9aq97ipI2sivPceR6m7x5GgtXvu SSqRdldjSfT/34wF5JYe0VQxCv8dCeAXEfSZeMrrg+jUd5Iw4b0rp6A+h7CnbHAjNITw N7WxG9LnOe3sozlREEyAvH1fYghbt/xFOgc1pCNtHMo+jnfQFivpX548FSdvezwspT8/ lTBA== X-Forwarded-Encrypted: i=1; AJvYcCXq/ClIic9YEfz7LQf+88UMmhCjLntmDTF2Ami5WiZm7XjUgCfQKw39SheBHh4ZxKmurllhgVWo63z9Pbc=@vger.kernel.org X-Gm-Message-State: AOJu0YyE9rrWxsRbsLWDYSDSEiu4jVjJeijAaHIPpRbLGR66k7oGP7iL 3n7Ji68TpBgqZTUMuaJudHbG0SCi/K0ZmNSFBh4JP/5/miic4jPDzkQ5JqQj0f8abdpw+afGRQA JHaTRPAZ8IKcMqS0z8WgUuv/w+97lHRkEuyyZ2V/5A7vG4OjzQncCOgrpaHnfMxZ31rb9UZWKnP J5og== X-Gm-Gg: ASbGncvFElRBTBu7Yg5CBPkWW32r/ezfmyRxJwbe3jQppBAMNdFXeUhA9YHAyr0lkO/ CPo10i+NkUPPsfKZjgPtXNmG1CFP4L/jOnKFr3DL7L7d3PvsWel0Pgsup//20LRPgqmRMn7jLGe TJoWGpFa6Wq2MWJZfvjOl2cYzXv9I5xJMsaco8unDVLNCgM6ZSDibbpZJJeCovjxboWP/Xr6nlV 9R9zRdbvRFNqUzR+jiEIGX44z2HgHVkDyy1+/C+bzXQzetTKwkA3OCuQ4q5stVkn8dDWEHGD8fz 3OUgvcVX5JCatFy6J8LAyw2xAO22n0PN41mFFT4WU4uG9M6r78HgG3PTaEPyNQEVTm0drv+UBZN ORsOzABEdR6ECmXwBmBYPorPUKeFoDjqcutA= X-Received: by 2002:a05:620a:29d2:b0:7ca:c9cb:ab1 with SMTP id af79cd13be357-7d3f98c77e6mr1102347085a.7.1750529655171; Sat, 21 Jun 2025 11:14:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE9y42uVOGByHIC2CBh6Ap0nz7GpIfl5u/D03eThzuzRkDRz+TR/dzqSjl234RVIJ6r6Kel8Q== X-Received: by 2002:a05:620a:29d2:b0:7ca:c9cb:ab1 with SMTP id af79cd13be357-7d3f98c77e6mr1102343785a.7.1750529654719; Sat, 21 Jun 2025 11:14:14 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:13 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:12:56 +0300 Subject: [PATCH 1/8] usb: typec: ucsi: yoga-c630: fix error and remove paths 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: <20250621-c630-ucsi-v1-1-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1645; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=dSQFGNWG/Zf26SyfOt589O9Vx61eV+28LRkpnswAKEg=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZyR3x2JVzH9HD3TQI4ofjUDHoHGx3Andr9b pMKv6svuPKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cgAKCRCLPIo+Aiko 1dNyB/4xVhi2i3qRu/UXloyqlOmjwZXkfGnQKJA19/28sTSvZSmYqkUwVjPR+rlBYXeD5ri+W+z hpgtM7ZFzm8FtToy6XwR/eDi6EA0ruS5wNCJ7GzXmcaI7+YwjBIyK5UDMMx8RdQ7RTYxBJ0Olhw ISyiLrr3hhXrHUb/hiRDI4igTussRWtKuK9hMUQ/4IB+4Fj5uN4/NcgbUkMzp6PYInoxS4WrKmX xP2ji4GdYqxa2FPbejzIiysLYe/qmiu3ih/2P7g9sS0W2Y05BTcDO7ckpjrUAZ7QJqyQx3Rdin5 yklMXFcRY3QBW6pBERSfc79DHn0vzzRalx9ozwzEj8aZyo4N X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: tqTul-KuaYnvcMAKCiHFf7gYo3oPVWJS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX2wQMxkgUDSG2 PNFZjwtKyDUCSiySoDi6El7xlM0ro3WGuRShhXAqcw098LV9cg/V4KUjUZZ1D3VG98Ex/82LokE RfvVX8X9BI69n0ZqGRQnYa+Hyo7hl/1g2CivJPCy+quTP/fDV7H61aSkRdhpXkVlDurbkLnGsj/ iXigEAOy7JKSCDCU1SnRH1QOgTZ85qatuwNCSOuYhDZtaIrderUWJhXmyIkKKCfYPuVT2KHQftj 1PuckBlYPvyjJBrgbf4p1kS0Ukbrofht83bxqPR68eAjCXIcaFlaqOXOLJXn7twBFaJENed+KdK NRP4JzYV3bGo4hj/Is6lBXLG9pd0qqAPjU/nJ79YJ6VkqilSyTDsvDB1kdFBAKhOp/CWfgUiTr3 aTeKGMsj3lz0Dz4Yk9EEW8L0nZZgSwAn9QJdKhzujSaHiL1n7QbrjtIRN1YD+W4ywMe/Fd/i X-Authority-Analysis: v=2.4 cv=UetRSLSN c=1 sm=1 tr=0 ts=6856f678 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=6GRmOlDtAtgjFoD-o_4A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: tqTul-KuaYnvcMAKCiHFf7gYo3oPVWJS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 Fix memory leak and call ucsi_destroy() from the driver's remove function and probe's error path in order to remove debugfs files and free the memory. Also call yoga_c630_ec_unregister_notify() in the probe's error path. Fixes: 2ea6d07efe53 ("usb: typec: ucsi: add Lenovo Yoga C630 glue driver") Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index d33e3f2dd1d80f7b49d9c5e7355fb14a97c74dd5..47e8dd5b255b2b306dd9c3d6ac8= c3b896954981a 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -133,17 +133,30 @@ static int yoga_c630_ucsi_probe(struct auxiliary_devi= ce *adev, =20 ret =3D yoga_c630_ec_register_notify(ec, &uec->nb); if (ret) - return ret; + goto err_destroy; + + ret =3D ucsi_register(uec->ucsi); + if (ret) + goto err_unregister; + + return 0; =20 - return ucsi_register(uec->ucsi); +err_unregister: + yoga_c630_ec_unregister_notify(uec->ec, &uec->nb); + +err_destroy: + ucsi_destroy(uec->ucsi); + + return ret; } =20 static void yoga_c630_ucsi_remove(struct auxiliary_device *adev) { struct yoga_c630_ucsi *uec =3D auxiliary_get_drvdata(adev); =20 - yoga_c630_ec_unregister_notify(uec->ec, &uec->nb); ucsi_unregister(uec->ucsi); + yoga_c630_ec_unregister_notify(uec->ec, &uec->nb); + ucsi_destroy(uec->ucsi); } =20 static const struct auxiliary_device_id yoga_c630_ucsi_id_table[] =3D { --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 1131C26FA57 for ; Sat, 21 Jun 2025 18:14:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529660; cv=none; b=lUsC3OmHk3Fmefum5iz7zFznMdtPBH6s1LFJ8+XprJmM/8S4dwpr1ltmp4Wz41DPKhTmPLbCx8M84LczpFPAhcqTb3hn2LFSieWZS6OEERBDPYO8yPOPDkJcz6uUyLmbtzYPO2o+1zspFpDTORobTIXLQ5D+U14wl8SofrTxMX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529660; c=relaxed/simple; bh=X82NT0To0cHHxEVthOIl3cobJlSNDagM+IRg4TmYzKc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D0poxP1UXfkvDmDZPs3Eos/46KN9Pe4GQ1Fm7TkGWYmOWRdXs7rlRnFrihQ5LoutQHQULnFfcr9FPVoVVMuXEVCZ3DJpF6T7Z2DHo2Mzu6WbNIqS538yzLU2fE6atlf1cmLGnnHc491gAYSdLFqbLF2EgLIt2ZbMoWW9pVuBCR4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=EiXymH2y; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="EiXymH2y" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LHoY9C008517 for ; Sat, 21 Jun 2025 18:14:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= avdnB+hgZU9bp52v1KCtyf6jWRUeqQMF8YsHerstNhY=; b=EiXymH2yfLB9uYE0 2rLUx8XLym0Pl2pwFuYUS9CPeR+QTHWDr3zaqWWM4oBPANCun9pSU+VszDB+Z5tI 32wGlZq5F29yJLFcLYn9rNkHpK3V6Fz3cxy7GYsC5J/181KpWDZzJejHHzFzeGGr 0L0xAVB6KBkXowqkkNHNgeB69p+wYbGyrCGoKPKZ+EgekpSy0GPvd7sur7I6jX6k Rj8Ai4L/ybEgoMxT0tM41BlVeOnZbsqNWcStd9ADUSlKricsun/iQmRhPKa6TtAy aPg8luqwvVPyBJz3joXneqO5aw3o6xiTzYf0m3Lvn5rft0bp/+WcGN+7BkHsNk6N TDme/g== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47dw9wrake-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:17 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7c790dc38b4so462047485a.0 for ; Sat, 21 Jun 2025 11:14:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529657; x=1751134457; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=avdnB+hgZU9bp52v1KCtyf6jWRUeqQMF8YsHerstNhY=; b=FvsAft+ccO2zH4RSIiKxdTMlr9ZwBbbJv2Yz8T3zCgcr8IaQexrc33dIfGAI9teUMc 0DiuzBt2qtgmiBQ08bVXEw/4MkxbqoOurRorEyFwqIZZOORniZzA5BcoBLDPZHh/4T/8 mNXSIj8VBFKx3P3Qb6ba6aC9YhArd6BK2FaTdmdB4FTg4fQO8GmPMxCqlLgnVForKz9B Yk9Z4x3YBs7OJi4V3oxxCbsWjg3p0bi+qd6mTp+b58MtC+US+9vNQH9QePQLvtpZv2ky 18NvMuS55LJyvbhkZlbIrQKu2q/LfFJvGkmYfm3PyvCvKftx3r1UI5oR7al7I4vxXnbw DyQw== X-Forwarded-Encrypted: i=1; AJvYcCVR47gU/bg/3t+4CErlBfC5hLzR8r2i9z9svflCux9RrxNxlZE8F7iqF6tXRZJmha530AL9MXVmASYxk3I=@vger.kernel.org X-Gm-Message-State: AOJu0Yzx3hpN4a9MxHozgNk9UXREa1P04XgIRz3r1JHQ4nwLE6LTf9Pq yK0CGxlnSo5JJmsxyvVZE9h0FaLogAuOtVuZ1bnb3OTt85d8d8YtWrUCN2/ZnAVO0gd+Xu1oZCd uOa682JhMauWbAPwakIyJx3mLpV27dGiaj3u9IjGoAKf3cDwNaTgRM6zv6KIEBuTojuBz40Gwgg Vp8w== X-Gm-Gg: ASbGncuAje7lcy48xLlerok3ERLPPsed42yIS9I0ZO/WHNQygUEoTl6qG1FUOIT64GL shIOAS2J9lumZ4kA6sYVx4e270mxqs43wJXLXHFCd2cifkT4j9sGLbtxRzIXfV4mp4DB28wkTdK yqO2h8DBQ+W1xCv1gf5NEU3ukfxb82nJzRfVMhAvs2Nz2avzdY2U9GGzpkRl5W6AICnCItOKFaj PyV1KoWad/rWrkCyG5xCpinniSuI7FQemJNl35xCEdDN3f+Ekj1jT2bO3ML6jTLicHFsyFkw7pB +WV1Q5IB9TLu3DKGBgkAJDbN7EI5w/jzEm0sZgG+kYUQ94Abe+y5bPbMfs8AEt7By5FGYTSVzi9 GeXlru4heuIRIjqfvVSEkhKnVlN2Sw3F09Do= X-Received: by 2002:a05:620a:17a1:b0:7d3:acfa:de46 with SMTP id af79cd13be357-7d3fc0560cfmr791243585a.21.1750529656841; Sat, 21 Jun 2025 11:14:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrCCipgLc+IJfwkcgPlL/s5L64oH8qO7m3lUECqimODLjYk4FQkVFIcnMxqeDLNaXnR2l5NA== X-Received: by 2002:a05:620a:17a1:b0:7d3:acfa:de46 with SMTP id af79cd13be357-7d3fc0560cfmr791240485a.21.1750529656379; Sat, 21 Jun 2025 11:14:16 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:15 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:12:57 +0300 Subject: [PATCH 2/8] usb: typec: ucsi: add recipient arg to update_altmodes() callback 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: <20250621-c630-ucsi-v1-2-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3071; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=X82NT0To0cHHxEVthOIl3cobJlSNDagM+IRg4TmYzKc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZyrcF9ULbQVUsBpsvflMQvumIJQN8uUjujx ol4kEFWh2aJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cgAKCRCLPIo+Aiko 1UIQB/9zdlNNR3KBaDfKW01XEjTdzJ8V2naxLu8sdm+UKjdlYij6WoovE4TdJ4SFbfAHfCFFfk1 3SnqbRf2zjM3irQ68anQQoEsX9ehyNBatJFeL6y4WaH2LDyhaipwNxq1vGTbYRqIvoegKlKwOvx Lc//d31F8Ggjy9c7rajuN5Tt4Dsu/92kIN06dfEZa0uhRYZWrO1arc0FT1N4zygvHaEUgBn86Ku rtNFNgTmdKuGXi6jdmoqWxpVhJNZgm38+5JMsyCUpl6j3RbpIPeHNZyw1iqEbGhNDnS1W9EMSNC SYCkTZO1KS2fxkQgsPcEH8IC+fn1xhIGlyFc+8CMW49xd+0J X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: -LsZ8NLFDZASIvP9KQ0ZTcV2DY4S6hgp X-Authority-Analysis: v=2.4 cv=HcEUTjE8 c=1 sm=1 tr=0 ts=6856f679 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=E64p1VqjvP21rIaO_JEA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: -LsZ8NLFDZASIvP9KQ0ZTcV2DY4S6hgp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX34mTu2BpgOVg X6yeEgkIrUxpl2K43OOuskhh7aGA4bLGZXe/vrlYcnDGURTD4bwqiKZrfblUWAH0zxeNULIfwAi B3Wp6dYo4XZwDjT5gGbkzwmwBpppvx/0nNKuuB1hT8kyU3RzNIp4hnbvcgs3zNwRV3b7uSP/F1L FX+dPUIOx8yndpLn4109unE3aqCNay9Wrg48ISl/E0b5kAsK91gF33jE92Jnm6McMJdx2Ys38A4 cMDnbJzoTuVPC9CUpppyU8Rrw06+ionPiTFrYFC7VeA6DxeNf/5MGFMcZN2wzxCtMEOE6V/JrVY zJ7HKe52qFuHJobzkhL2t+GscRj2rrZ7FcDFkN6AGXzmsKf0GwDHs4yUZOWPYRgOJbSNtyYSUPf SPp5MggL1v3Sb8b4lZHwmY4gAiMTNx4BZwCtdQNBn3kCAFn80ij+4xOxkB5svqXNZTxlbpr2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 clxscore=1015 mlxscore=0 suspectscore=0 bulkscore=0 adultscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 The update_altmodes() is executed only for connetor's AltModes, because that's what required on the CCG platforms. Other platforms (like Lenovo Yoga C630) requires similar fix for partner's AltModes. Extend update_altmodes() callback to accept the recipient as an argument and move corresponding check to the CCG UCSI driver. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi.c | 5 ++--- drivers/usb/typec/ucsi/ucsi.h | 3 ++- drivers/usb/typec/ucsi/ucsi_ccg.c | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 01ce858a1a2b3466155db340e213c767d1e79479..e913d099f934c7728cb678fc8e2= 1e75ab0a00cce 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -531,13 +531,12 @@ ucsi_register_altmodes_nvidia(struct ucsi_connector *= con, u8 recipient) * Update the original altmode table as some ppms may report * multiple DP altmodes. */ - if (recipient =3D=3D UCSI_RECIPIENT_CON) - multi_dp =3D ucsi->ops->update_altmodes(ucsi, orig, updated); + multi_dp =3D ucsi->ops->update_altmodes(ucsi, recipient, orig, updated); =20 /* now register altmodes */ for (i =3D 0; i < max_altmodes; i++) { memset(&desc, 0, sizeof(desc)); - if (multi_dp && recipient =3D=3D UCSI_RECIPIENT_CON) { + if (multi_dp) { desc.svid =3D updated[i].svid; desc.vdo =3D updated[i].mid; } else { diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h index 5a8f947fcece29f98c0458f9eb05c0c5ede2d244..d02f6a3e2f50a4044eb3f222769= 31017cc624532 100644 --- a/drivers/usb/typec/ucsi/ucsi.h +++ b/drivers/usb/typec/ucsi/ucsi.h @@ -82,7 +82,8 @@ struct ucsi_operations { int (*sync_control)(struct ucsi *ucsi, u64 command, u32 *cci, void *data, size_t size); int (*async_control)(struct ucsi *ucsi, u64 command); - bool (*update_altmodes)(struct ucsi *ucsi, struct ucsi_altmode *orig, + bool (*update_altmodes)(struct ucsi *ucsi, u8 recipient, + struct ucsi_altmode *orig, struct ucsi_altmode *updated); void (*update_connector)(struct ucsi_connector *con); void (*connector_status)(struct ucsi_connector *con); diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucs= i_ccg.c index e9a9df1431af3a52c00cc456f5c920b9077a1ade..d83a0051c737336af2543fc2f6d= 53a131ffe9583 100644 --- a/drivers/usb/typec/ucsi/ucsi_ccg.c +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c @@ -394,6 +394,7 @@ static void ucsi_ccg_update_get_current_cam_cmd(struct = ucsi_ccg *uc, u8 *data) } =20 static bool ucsi_ccg_update_altmodes(struct ucsi *ucsi, + u8 recipient, struct ucsi_altmode *orig, struct ucsi_altmode *updated) { @@ -402,6 +403,9 @@ static bool ucsi_ccg_update_altmodes(struct ucsi *ucsi, int i, j, k =3D 0; bool found =3D false; =20 + if (recipient !=3D UCSI_RECIPIENT_CON) + return false; + alt =3D uc->orig; new_alt =3D uc->updated; memset(uc->updated, 0, sizeof(uc->updated)); --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 800CF26FDA9 for ; Sat, 21 Jun 2025 18:14:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529661; cv=none; b=RNqjtuAIRvDrWQgujJI4wgKzYpKcb8PjCjvrsB5tQZIjW+BhN5UpfXN7Q3g71wqCvRivLflSR8BIpWIDcGbqWkkq5vQBTJsrdyn89qrOJCN4Rv0C70GpGo34cqi7dH6Fab+MPql6MwzZVxr5yyJSZJ7ZnvObR+wVSoGmijZlz0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529661; c=relaxed/simple; bh=4CYOA9AagDnQlzLO8jvRE7LipR/5rn+iPGyR5z/1opc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pdAqNn/F4YjTVzTxJAiPoio/kMu84fEEyHbhAo6v9TmSpaZN+p/E4omkYIX1nGqKiVz5EbIOC47JfQaBjjBDwj9ZMncPSfA+KaAGI3ZO+DedURsUtTvkM6obWLc7IQTgeIjl0/w3BdzKfOiruYOBQ5iSQrRA4XRGf6dmEmyYia4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MkWpKB4N; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MkWpKB4N" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55L8ntQ6018874 for ; Sat, 21 Jun 2025 18:14:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= zowIyNUEyO7rt+gljYGoF/edvYqN+vq2B4rXcDP0lxM=; b=MkWpKB4NGOYwGE5i 5Kqzq4iziOFtR228nkHelZnK4XWLVSZmphg/p54UqhzNH1wWU1DN+RG7qsNk5x0d 3Szm84sTJVRRnvF15IYTGFYWf/NmoaB6pQ7C+njcOqMA2PfKVrCv4origrBKnHSa ONrSat6u7iGAcfGEYtU6wNYcySqI1/SlGQP0syWUk6s8qYW3C20W1la5Ve+xPqR1 b3rFysi9R6xA+iF3osCtpN5UFccZDUxN56+9Vl6qAoZeD3DPH+YKpYaTGWlyKWMf ErhZlFG/0S6lW3U/j9VqYU79gLsJwGu7IY6neo4RWSdRuh/zmJHsuP+HBG5kM3lv UrX1ww== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47dpqtrugm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:19 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c5e2a31f75so857491085a.1 for ; Sat, 21 Jun 2025 11:14:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529658; x=1751134458; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zowIyNUEyO7rt+gljYGoF/edvYqN+vq2B4rXcDP0lxM=; b=GtDVkp76jrEkTf+Njenq8yoUEgHuhxmAfup+701Vo+Zzeos12QmxEOj/vR757TvH2Y Nc0GdW1Ghbv4z/45Pt/eHc+mTD0Qh+P6bkQU2Yx7Yhex5+p8Dnxys+oe2Ca323A2BeiO jqkPm9JQ5StV9nUivDdC3HvlhsEPL9WVJ8O/bSKLplZifAuMiKLPdEWV+1FJ3lpGRrmb afZ064uhm5eFGYoBJsiB2D1LWmvsxKB+Qxo6p9uzfMZcVluGnhdiTYwaeweRZOI2jkwP DC4r3sgQUjoXkoyG6+vYUe3mfoiawA0yIQW1VoNSExbyuGVJZtrLjwzLKjnJJK7CV+J4 ThsQ== X-Forwarded-Encrypted: i=1; AJvYcCWw9NJLgKHn6Ug/XjFeWtJdJ6Eac/4fibLn93WDe0cORXfQ8EqbDQ0Ap/SVy0yMMce0JGN+5ClfiZsskWs=@vger.kernel.org X-Gm-Message-State: AOJu0YyMmlMrdd2dXOT7Ho8swcr9xKGqbfgPksSHiDRoD9YpqlPXnjyi VwzG/FwS5Ji4B9kkXH+blIKv6XciJNoAJ9cbQq/sdHr3AZ4HGSrOij+GKc0cx42MN+C2AFje4bf JwkKVfYuYY90U+/zKW8HolZ/fxZsvvBluv718/jJ65/Ksy42JvPeQ9/DwV+O51ZYozf4yvtCBOT Ht6A== X-Gm-Gg: ASbGncthkOsRWnt1GY7HqbxEeEoH2cYLxKdeelhER91Yfq6cbawNtxno6MiwTMp8zb6 ARsfBodf+BBYJm2xe9/8cYObRmIyt4jSZ6CT7/qD/0sepHLD2g2Ir1sQZotoJRZ3X/lKtyEmGs1 EgUHAEnzDDMGnKa6YhYdPQf0UB7Af7i0OjidPW7kR9EtnCKivfD3gNmmpSN4SPwfywwoFQf+IkH Cgp6n8wif4dBNOeE3PWvIUP8CHF7UIEz9MjyXEnEh++tiXIwK1zW5g6HJr4/yK2LRY5KMYzQ+A8 +sN8RuPGpV9zT1qTsC2AOaArIAh4++qKs7K9DMUXZy1wP/EPPcClM6rOwjl5ZR5c2/h+ZX3dFPY GMnuVW36xIPl/c+fqk3ImsJ8hO/1h9nQhfSg= X-Received: by 2002:a05:620a:1906:b0:7d0:a1d2:436 with SMTP id af79cd13be357-7d3f9932ab0mr942601685a.33.1750529658157; Sat, 21 Jun 2025 11:14:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE1/0MhQYuKfBpzeVErFNYZh8FZs6s89lsKMD66pGJWLmGvzYlwhn1nDZIEbwBmB1PBHWKAUw== X-Received: by 2002:a05:620a:1906:b0:7d0:a1d2:436 with SMTP id af79cd13be357-7d3f9932ab0mr942598985a.33.1750529657781; Sat, 21 Jun 2025 11:14:17 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:16 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:12:58 +0300 Subject: [PATCH 3/8] usb: typec: ucsi: yoga-c630: remove duplicate AltModes 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: <20250621-c630-ucsi-v1-3-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2145; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=4CYOA9AagDnQlzLO8jvRE7LipR/5rn+iPGyR5z/1opc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZzEwCSquoV5Q2Y0LnJ2z5hijlfP4HmCo0CY WaWygQHwP6JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cwAKCRCLPIo+Aiko 1UWdB/9erkAZ/EL2NpUqbd0w3OylzoPIom7LGhqMTEJFDyP2tBqOczET09Z+xyhim9bUXRRvoM2 VSaa23CqxqeoilfJMB67B/BTP06kqCv07Mum81lER5PQoqeLh5MiKfKLjhupdFeHxUt/umpkmoR nwMW0W3NtoedisLaIv+r68ZLWHMQhU/nxOW72rMU/5QshyNtZ92+VbaMffjE+uo8miBDynSaAEu btb1zSAgosSHqaOu0+9Hd9WJ4V5Ep0/bHZQVowFqjGI/8zoBpV9UMBaodNJ86Lc1SOLBNlHNux3 M7VZpB0tHP4flQMmrqaFNMgWuzozAfvPzzx8CArzMlLyZNbB X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNCBTYWx0ZWRfX+uJFamQH8HD3 eHBP9++IcB1UWIwZIYuXmxpgAyQolBAMGM/ES81a0ewFu6BqmMqjNGyYuHYY4NrM8w3zu77J/ab oSS//kvH7ScCoQ6umoB1kr0eX07ACFCcDAx32hdIN6fL0kkOUKUXHlBftT4tsTnh6y0YknJEOXB mqUZL9D5OcJaRu0pZ05x/NJEbfrT6V60daNtpMUMdfkJudPwkTmBhFoU3slzhYiXVVr3uOcoz/Q 2WVersU4Ec9WvXvMeMQlNHQNBvNOIvWuLeXRXvgd5t09tegDi7GIxk0wKMyGw68Qv8J1p2YpKDl MgRCei6HVnSZioniPmYsNJwxZUsX00Cl3LwCm9+ymDBYaq3PHsnv1vk2+DXGpWG+UBJAPmHc3Bp qH92PuKI4fwpfUVEcTfUFYBkacwy/e/JcmfDjJ6Dis1xDZ2CC8WK9zyxnP+g9EY3zSe5s2GU X-Proofpoint-ORIG-GUID: P5od1HMrYj4-6Ez68k8vEyni4lGzRPMx X-Authority-Analysis: v=2.4 cv=cbPSrmDM c=1 sm=1 tr=0 ts=6856f67b cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=AZjPiHVZ31VRnYr7GT0A:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: P5od1HMrYj4-6Ez68k8vEyni4lGzRPMx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 priorityscore=1501 phishscore=0 mlxscore=0 adultscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210114 On Lenovo Yoga C630 the EC firmware is buggy and it returns duplicate AltModes over and over again instead of returning an empty one, as demanded by the spec. Ignore extra altmodes by zeroing them in the update_altmodes() callback. It is not possible to shortcut that in the sync_control() callback since we need to know if the AltMode matches the first reported AltMode or not. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index 47e8dd5b255b2b306dd9c3d6ac8c3b896954981a..7cc1342d6e2f1d2c6f5b95caa48= a711a280b91d3 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -71,6 +71,28 @@ static int yoga_c630_ucsi_async_control(struct ucsi *ucs= i, u64 command) return yoga_c630_ec_ucsi_write(uec->ec, (u8*)&command); } =20 +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 =3D=3D 0 || recipient !=3D UCSI_RECIPIENT_SOP) + return false; + + /* EC is nice and repeats altmodes again and again. Ignore copies. */ + for (i =3D 1; i < UCSI_MAX_ALTMODES; i++) { + if (orig[i].svid =3D=3D 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 const struct ucsi_operations yoga_c630_ucsi_ops =3D { .read_version =3D yoga_c630_ucsi_read_version, .read_cci =3D yoga_c630_ucsi_read_cci, @@ -78,6 +100,7 @@ static const struct ucsi_operations yoga_c630_ucsi_ops = =3D { .read_message_in =3D yoga_c630_ucsi_read_message_in, .sync_control =3D ucsi_sync_control_common, .async_control =3D yoga_c630_ucsi_async_control, + .update_altmodes =3D yoga_c630_ucsi_update_altmodes, }; =20 static int yoga_c630_ucsi_notify(struct notifier_block *nb, --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 2C5B4270542 for ; Sat, 21 Jun 2025 18:14:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529663; cv=none; b=DUwaEmMq3PZ1s71e/h4cJRyNDf29IJueFgstw0OSPZllOA1tjodlkNdg1KSW0nmYVgA6Qnmt/jf93nWqjocwOzyte933Vpb/gFsH0451ZmXM8+Qf08Yagb2fYTGGGsU3GkmwVxPiMHR8PVMqBG2kRsUHv1Cs4tuUg0Hs/vpH/bg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529663; c=relaxed/simple; bh=JNYxpLLFOBRtvMlzQKm/ZNif0iwVlobtKiwFXihfikY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JTIdacYm4BaOrEiFJNh+083nt7X3PTZ/nPaQOhMjxlgKEz8TXfOyBqRWRcP09lZ35qUKR9SIwVARnTOdHpBqEh/SBvvM6eFhcSi9Z9tiUwVwVY1ssiWnqEUQ/nZZhhiRcQ8aOvVyXamtCYS/CtcBtS7azygE7+XMLyrMw1XDuzo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=aRDdACQs; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="aRDdACQs" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LHvGi3030191 for ; Sat, 21 Jun 2025 18:14:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= oirU1+a/+8yORbmhMEzS0Sl226rFq5hViGnYuTM/r30=; b=aRDdACQsnsIKaPsC 6EZNmwi6rj2coudCih1V8klJVqj86soO3SEdo7N3QcThVWq9zCL/Ok0AgjQDprBZ wLa7VQ8+Ma61A45+ZrN2kim6u6Z5FocCufIEQ6NlgBlRU5i1M474Pd23FQuEpKWc bkS4OyaX04vTHy+BG6xwGfowwQvtecDUoXQtjzcHVLjB45ltYY6mvf8nKjgSoSQp 00JloOXa6c5e+SL9s0MpbWgdjpe3cn536etUE3XcsS+ZQMK/nxYvnvIHWZWNq3rr YcX85/P/hMtn8VfPT7J72i6elHDHBK+Xyg4RmwDEoklbueL+dCQDDbp/y+7jD1N8 OUtz9Q== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47dxejr7pf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:21 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7c760637fe5so425673385a.0 for ; Sat, 21 Jun 2025 11:14:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529659; x=1751134459; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oirU1+a/+8yORbmhMEzS0Sl226rFq5hViGnYuTM/r30=; b=Wz0H9NQ2Hf7c9/IbzUtKZ6KTV53p8zQtF3D/AlAstKfc/h+cCIwwfrLxdaBtwBCHPy +KPs6G84JCSAhonQYzj/R/IrXpPO0ccn+Bu4wjx/lXnXsq7c3J4QYdkJxovR3Vlu6CFK Z9MyuYfe5ZmY90mJw35JkPAQpAvZbcCQjD0MGD6+pCfeqzj+TWiDFQjPKwCyETVxmr9A scC6RqXgxTFB4iYhZfAj0eb0dPSRBii9TyvBIqvjlLXjdj3pnGB4g2Fdw2rAViHeVtCM TJ1s89CrPwwtlBrPlueArt1TZsr5tYlEip5SB79zLcZ5+8VD6uWElBH3ot7fuNNxYWet YIfg== X-Forwarded-Encrypted: i=1; AJvYcCWBuUVpG3pJeaJlctOcCE51yNHsZTtLlT9l2EDY307zwaWU+HSDirH23AF//hvGn4+Vxu8XW0LAb3V2UX8=@vger.kernel.org X-Gm-Message-State: AOJu0YxcviDMl0x6rteHbZXApe5DPIKH/814vkQEtoWl1AW8MUpgoPIW mtHbbN2ColeDmmxWXJfFylCgTZ6vpxut2KyjMQinNHfQcDqtq9yCysi5SlgGdxgyPYoue0chBRW vIjVbVVbcH6+RuBIjor1cx5GWfZt7OoUh868SgfjbRU5LCmR9DoAl/5Tm5hOL9kYKAq/iSubwKD xyGQ== X-Gm-Gg: ASbGncs1NhBV33dklKvzPBJd3UQ0zJqMJEI5c57xtca2vq4QGvBwzOb8N4aV4j+Ivdi C6uEBxYfJYFvoLNquJ5tKO8lfACy7bsJCJqVTQC9gnOrKKHRdkzmUzhRXuNWcSmanmqV6XT+uev /XYJoaogwLI7pIUEksMtB2ZzUBlqNb1ghB3VLW3ij6PcyMUkadYICTm4z+DeAOC6ixxbaXQR4zW JlvYpf4HTIPqC1mW1yc7oQRrucL/i/OUaVonoKz428HxlhFtPNWJSkzgMNn/FNDYxaCWhRPg3ZH O1cYs+9PbhtHhuA2GRlD8PC4ZuZ+/a0k4eCgBGy4wIYNALv/IVPVjskjtM7KH9iG0Zk1+8hUbjy y8hico8dR1KCR/YS1/QWYe8S5z8b3L8F0Nuk= X-Received: by 2002:a05:620a:8087:b0:7d3:a7a7:27ad with SMTP id af79cd13be357-7d3f9923f29mr1085887985a.37.1750529659583; Sat, 21 Jun 2025 11:14:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGBm728IxfVCsHScLqUKxUSwnu6QjuV90MNM2egI9dUzP6ktUhVo2klu+wAiUSpjtngW1id+A== X-Received: by 2002:a05:620a:8087:b0:7d3:a7a7:27ad with SMTP id af79cd13be357-7d3f9923f29mr1085885285a.37.1750529659186; Sat, 21 Jun 2025 11:14:19 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:18 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:12:59 +0300 Subject: [PATCH 4/8] usb: typec: ucsi: yoga-c630: remove extra AltModes for port 1 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: <20250621-c630-ucsi-v1-4-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2166; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=JNYxpLLFOBRtvMlzQKm/ZNif0iwVlobtKiwFXihfikY=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZzb6rUS5eMMljhrS0Q+E/0bKqx4EhaapoTC S/gAg8Wn3mJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cwAKCRCLPIo+Aiko 1cxcB/9Cy6IVelfifZerWEZXrYultMWDVJdyoWiBy6c0sL9bdpy6ECtRtiIw5OaGPpz0F6cwEYE x44jPn8Lz3vuShxXYwFwp1mFWQIJeidrdEKh5elCZDfvRVdXZqMCvQL6zFkUtuXP/wkBIAIZgIL Ipo3XzsKrczew5P7JvHGrYWtPIE3+pr6VZY4KNym4wxbjxXYlZkxeTzSRpc2SzG2NyxpNSIAf6T UMU9j+jmu3iacNjuVkjTrJJDuvurdsBq1rVYzH9mK0yBK8r3/JAWUES/Bc1q9bbBgXd28dpRdm/ tRNp6uTiYNnpB3SWqkgUMhk01YUo3xCInk21AWqsJ5CAqimA X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: 7LAZtp-tdcpCsUW1rDeahGn8v1i0ve-m X-Proofpoint-ORIG-GUID: 7LAZtp-tdcpCsUW1rDeahGn8v1i0ve-m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX8MTC9hNYt47K ZTmv+TZYPj0msxdL6H39Dnh+MxDyJ9oY21jNqrMrAVwhiTGcnFQS1lxwG6lFErWy5LY7hEKpJMU wALO2HMSnU2FYkF1bt3Cc8MjoIy1Tupa5caA3EqusilH+WTQ5nR+iyWyBpFLBY3E7UPTEY+IFWM fsimzZLzvo/p9kiun9vwFbb0+ChUXIzOLXEOStPkq96riXCakB18QQoY9pOQNzThJg/nyKBR1SY TzxuBn/F9gncCGuQJEglE/O2ZaoQHdsk6Znxqk3cjDgNhipo6ANzGzQ1KqgUeH8MaxMzmXej4CZ iTcRx66ahSKyi1WEhco/9sADZab12rG9U0FR/7LnKC5CmvjbXJRzbb7KtDzIxneNUDDrrN0jR+u uDMdgfec7hRAj5C9XJ6lGuBj1R31IDo9nr6rQMoLQvVk63+k9fQ3AnX+dwoxHEKPgLvryu/y X-Authority-Analysis: v=2.4 cv=GcwXnRXL c=1 sm=1 tr=0 ts=6856f67d cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=L9Ihpj2tn0joOnW3KS4A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 priorityscore=1501 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 bulkscore=0 adultscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 On Lenovo Yoga C630 the EC firmware is buggy and it cat return altmodes for a device pushed into the port 0 (right) when the driver asks for altmodes for port 1 (left). Since the left Type-C port doesn't support DP anyway, ignore all UCSI_GET_ALTERNATE_MODES commands destined to the port 1. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index 7cc1342d6e2f1d2c6f5b95caa48a711a280b91d3..2005f64ebfe43ca2bcada2231ff= 99c578fdce877 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -71,6 +71,27 @@ static int yoga_c630_ucsi_async_control(struct ucsi *ucs= i, u64 command) return yoga_c630_ec_ucsi_write(uec->ec, (u8*)&command); } =20 +static int yoga_c630_ucsi_sync_control(struct ucsi *ucsi, + u64 command, + u32 *cci, + void *data, size_t size) +{ + /* + * EC can return AltModes present on CON1 (port0, right) for CON2 + * (port1, left) too. Ignore all requests going to CON2 (it doesn't + * support DP anyway). + */ + if (UCSI_COMMAND(command) =3D=3D UCSI_GET_ALTERNATE_MODES && + UCSI_GET_ALTMODE_GET_CONNECTOR_NUMBER(command) =3D=3D 2) { + dev_dbg(ucsi->dev, "ignoring altmodes for con2\n"); + memset(data, 0, size); + *cci =3D UCSI_CCI_COMMAND_COMPLETE; + return 0; + } + + return ucsi_sync_control_common(ucsi, command, cci, data, size); +} + static bool yoga_c630_ucsi_update_altmodes(struct ucsi *ucsi, u8 recipient, struct ucsi_altmode *orig, @@ -98,7 +119,7 @@ static const struct ucsi_operations yoga_c630_ucsi_ops = =3D { .read_cci =3D yoga_c630_ucsi_read_cci, .poll_cci =3D yoga_c630_ucsi_read_cci, .read_message_in =3D yoga_c630_ucsi_read_message_in, - .sync_control =3D ucsi_sync_control_common, + .sync_control =3D yoga_c630_ucsi_sync_control, .async_control =3D yoga_c630_ucsi_async_control, .update_altmodes =3D yoga_c630_ucsi_update_altmodes, }; --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 B9FEA270EAE for ; Sat, 21 Jun 2025 18:14:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529665; cv=none; b=TU4CMOv2D9DXBQ0+WJ0FDrZ1QOXIcsQgs+RED02FlGTo+hm2swwEcNY2ByZjHze2A9oHSeL5Fx0A2NQUxwu3wPmM2s+0bK6mWTC97U/lnjTwmGRZX+3xmNAW6XdKSZu/S4Pc5CgCjlrct0GYG0XpaYrl1h8fSrwghjzD/8bNs2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529665; c=relaxed/simple; bh=MULVME50ezTJwjsRCNi4oguat38TlOEQQoYSE9mtnJs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zk+IRLJJLGXgH4nPPmZ4aaUOTVs3RmwB3BWkAtT3Xs7jP2+P5opBYkVq5I1pVFq/7D8UMEf5iEGiTR+F6IG5KFAlsAar3GLrdZb7IbOWBPiMQ3soxgJvaAZNj2eYSQYrvgTTXxKyldwlFSP8z3k3zbcbesTDyakZhKoxyXQUxgk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=KSGak9gr; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="KSGak9gr" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LI7d2D002723 for ; Sat, 21 Jun 2025 18:14:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= dDHxHk18JOqx0nTuxFkbc1Jn6lI5tYF4hSfLOq+sH78=; b=KSGak9grsqFsME1A yyM4ChOU28J95059wf5iJPt+T2ar1UFjU28a2Pjo50OyytORfCs2uQwtRQgXXp1N RPvYi7vwdTZm8zDrvft6pUjWh6jDM025/O+n/daWJ2e94U0jZqFtoF2bMqsLnblU BxnRgjoyfBdwXdyNwdl5tIJGmVWeYl/Mpqglw7gBhJNe8/4gsbVSOT4QefIRIlEr OWibeAVRjb9fBr6rP7pEnbONpgpUcsieucu9J+6e4/PyqqkTQ1smrhzV5raIhdt5 tpU3Ixl5gNuDCiM6b2ayjQb6YhDD3zc7GljxN6B30Ze6uazUK9gTgXWFYHpbpVfw sRY3IA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47e14981cj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:23 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7d3eeab1223so372255785a.0 for ; Sat, 21 Jun 2025 11:14:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529661; x=1751134461; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dDHxHk18JOqx0nTuxFkbc1Jn6lI5tYF4hSfLOq+sH78=; b=cMrNe/jPiZ1P0NSRAQ4BN0e8RUh49rbSZj/7h0kNiq6MbPzBg1lzaHZrcQKnswH+7+ HQsn9CjEFCRF4qdv9OKx4NCU50rzInHtt2juT2yz87/DIMVIsICuizJ/sTY7rSmNvH8I fZVdtT2AycHL/98fnRvC2HdMJzklj0QQEuiCB+zHvWrlB0axeDTRR8DPO3FPcmf4Su/m s0h4REHBRA9LfcJh+iSTAeRtr25tLbMzyzpHJJT+RlkrOGcCqMkI8oP7PGdsDzMQgJ5Y tUL+1h5N0GtjVZnNzeBW3jiflJfL7QBIz7Dn33YkCPiG9JkQSC0c8zVmyq9vvz41LTxS XoIA== X-Forwarded-Encrypted: i=1; AJvYcCV3BGz0HZNGABPgmBWoTGTiLMvWVFYAVSnfoBhzTvXLK5QVkNwsCkre6/MZRKeEBVWvoNk4086QdqX4X6g=@vger.kernel.org X-Gm-Message-State: AOJu0YwrzgEXaRGjzBFAbRdL643UxlB/YLsGWdrtZYE/pHS3b4YSJ92H ONXL292Bt/KV9BfGT/YpLXQwhWQPHTC5br4rXVana+A5U+5SGZbB5vEPO/4P/Ipq3L6WQp+9M5j NWsPacMeN1OwtCCpy0Vk5dwdzUAdh8E2osn1O96Z8q49Lvq6iPH8v1DyVl5e87yT6zfgOn8hmnA YwPg== X-Gm-Gg: ASbGncs+N5HWQ5rMWKsDYFiBYI/GWs7imvyXO1bwaFb4X/1n+1UF9epkLzgoiFwaOee klh3sSyxLoHzJoufoPKwYVMy+unIWYnGk0ER/Re9VEF0wJcXwJFqtCNGXOuo6g9KrzJ9fNeWNtB n5td/3DwfeE4Jal7Gx2/cI35JcoW0hb2pMmUYY8DHf2Ovo5Wd/lwBSoyGujIDKQ7AIcXaIN8+DV HElm9iIpE90Ps+gsBHBVYG+c6S+gG4rY+WURvZs7Fj4vzIUXkB7jUWaCnwgoJRpo4af7fBG/zVJ BlK3EcMBVlSKpxhwTTLQMVDJzQG4XNCSmPlJRdjKJSWZYxkL6tUdQ/qvH3njLVMgaJaydv8YBLo CKIqH/dFVUoxcEmFqKoCK1HqcRrY23FrquaM= X-Received: by 2002:a05:620a:2b94:b0:7ce:ea9d:5967 with SMTP id af79cd13be357-7d3fc02d9b9mr965399985a.15.1750529661120; Sat, 21 Jun 2025 11:14:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGIIGisK+ntmvZYvKQNh3iR3tO+luthxByBUMIc+I29rTikd3A4VMB6uu9xiBW8m3JmQts4UQ== X-Received: by 2002:a05:620a:2b94:b0:7ce:ea9d:5967 with SMTP id af79cd13be357-7d3fc02d9b9mr965395985a.15.1750529660725; Sat, 21 Jun 2025 11:14:20 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:19 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:13:00 +0300 Subject: [PATCH 5/8] usb: typec: ucsi: yoga-c630: fake AltModes for port 0 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: <20250621-c630-ucsi-v1-5-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2419; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=MULVME50ezTJwjsRCNi4oguat38TlOEQQoYSE9mtnJs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZzPdJRglsGaRqUfmMC4gZNM1SYbEIfH7lW0 sJ6e5L770qJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cwAKCRCLPIo+Aiko 1dh9B/4rga50gzKHMm+2fHIeEu00WRUMyq4GwbB1ytQ6p+PNsDp2JbPXQP9HsbuZkv4wPVoUxgZ h+bexTXZNS16WHt2JwBN3ry/jNsH0vVya3DTydbC1p1oFelUBZnCfupLGUkf9Ct10VpOL41DT8h LcP75iKMyulsPwUZHADhMATecht3g2CFz7xEZ9+itC2PParDxJz+VkO+vij2T1g8EpDASdh0dqC ZbUv72bKypU7loxxS7RyNmlU3uBVVnn2TFZwpi1Nkr0Dv8rIHgz+F2nIPaQO6zrauD9ejya/CE5 y4SYpTpr124VkpeI60dW2gprY07SDz46Xl3SPya7JfN/bvKX X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: dmk5-s7i9CEoCVJa39a-_KsldozxqmSc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX2tfCrBQtTMBJ L5BW7LhL3ohazXTBBL8XIDg4LMssg5+/DbkHeiC6pz2Y1PzHc8gJLFhXQlTMgdLY1aww0w2+2Qy 83Ff8oSsAQm/+Sng4k/TGh2iheNMRn+DuDTD3F3Hb5fnzaKJDpx7NW7r7P0SuCgvvLJ8+U5PWoo P6yHkw6kJyAI11wdnEyHkifn8G99vcN864do5kTWk4g8TKDHNcz1u3XOKIUeduRftYzLwcKca0x amlCknv7EcmrirzXw8Fh4hzzTty3APEuMTDOP6YPbYquKNBwDaYlank0KKKkP+sMoejEURh5Ei+ hrJJZoQYqtwWJL+rRTQ/x1yJXnci2MHuBFYC1PBi1tww5HoAeh7JmSGhnWgaOVcUSaVrNgr8IOW 1WLovSb6RlFUvNxaj20DTbsuIcX81u1DlCZmg+e7vl6hP9Fc/g6MLcyI8fswoZGHf3RBbeHN X-Authority-Analysis: v=2.4 cv=XJkwSRhE c=1 sm=1 tr=0 ts=6856f67f cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=O-xtLUNLgrTPA20joi0A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-GUID: dmk5-s7i9CEoCVJa39a-_KsldozxqmSc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 priorityscore=1501 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 EC firmware provides information about partner AltModes and handles the DisplayPort AltMode internally, however it doesn't report AltModes of the port to the host. Fake the DP AltMode for port0 in order to let Linux bind displayport AltMode driver. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi.h | 1 + drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h index d02f6a3e2f50a4044eb3f22276931017cc624532..b711e1ecc3785eeb34e407e58df= 939f2d29bdb38 100644 --- a/drivers/usb/typec/ucsi/ucsi.h +++ b/drivers/usb/typec/ucsi/ucsi.h @@ -50,6 +50,7 @@ struct dentry; /* Command Status and Connector Change Indication (CCI) bits */ #define UCSI_CCI_CONNECTOR(_c_) (((_c_) & GENMASK(7, 1)) >> 1) #define UCSI_CCI_LENGTH(_c_) (((_c_) & GENMASK(15, 8)) >> 8) +#define UCSI_SET_CCI_LENGTH(_c_) ((_c_) << 8) #define UCSI_CCI_NOT_SUPPORTED BIT(25) #define UCSI_CCI_CANCEL_COMPLETE BIT(26) #define UCSI_CCI_RESET_COMPLETE BIT(27) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index 2005f64ebfe43ca2bcada2231ff99c578fdce877..506faf31b6e3a056e067f2bb69f= 5e9e5ea40e514 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -76,6 +76,28 @@ static int yoga_c630_ucsi_sync_control(struct ucsi *ucsi, u32 *cci, void *data, size_t size) { + int ret; + + /* + * EC doesn't return connector's DP mode even though it is supported. + * Fake it. + */ + if (UCSI_COMMAND(command) =3D=3D UCSI_GET_ALTERNATE_MODES && + UCSI_GET_ALTMODE_GET_CONNECTOR_NUMBER(command) =3D=3D 1 && + UCSI_ALTMODE_RECIPIENT(command) =3D=3D UCSI_RECIPIENT_CON && + UCSI_ALTMODE_OFFSET(command) =3D=3D 0) { + static const struct ucsi_altmode alt =3D { + .svid =3D USB_TYPEC_DP_SID, + .mid =3D USB_TYPEC_DP_MODE, + }; + + dev_dbg(ucsi->dev, "faking DP altmode for con1\n"); + memset(data, 0, size); + memcpy(data, &alt, min(sizeof(alt), size)); + *cci =3D UCSI_CCI_COMMAND_COMPLETE | UCSI_SET_CCI_LENGTH(sizeof(alt)); + return 0; + } + /* * EC can return AltModes present on CON1 (port0, right) for CON2 * (port1, left) too. Ignore all requests going to CON2 (it doesn't --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 CCAE0271461 for ; Sat, 21 Jun 2025 18:14:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529667; cv=none; b=FUv5EGEJIbztVEQCRS7Q/TIk2bi78i5BUUXbYx19qXgU5hRIB4euWvc9geluRN0zuUct4ELUC/AhyFYtOGnWmBx2NHWmAk6uxhr8w21FXYfIKxOQlAFO7dj4cIpZoAnB/mnfi0C6RPYVrfcvqcARrPMhlQkz1fL7anP33/s6mNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529667; c=relaxed/simple; bh=Run+O2mI2A76noQdH2tqShWLEpuGZIuywf14cmX4Kk8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Kjd3vJXyfVeB2ooXvnZJ1grLjqOAFScPWRxCdPCL6NexA0tc/E8LsRxisIcUqNAjCsdUWxQnDYaVMaJUjVg37h0YxsjuSa4gRGRGu+9IEaop+MWXNc3FnS24sRp3VA66hE96U5MfLuctPmx/Rjznhk3jyNjfyN37iTehiexLMzY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZSq5Uatp; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZSq5Uatp" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55L8RqNb000931 for ; Sat, 21 Jun 2025 18:14:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 1aqIaLvUpP1zFWPwZcv8zHZi9hcPKnIY5YKRhPTvJuk=; b=ZSq5Uatp+fG9ELBr RRwTAdWxWNSz4z6UtG5++e+SRg5K4sGGGnzchc7TkXzBZjKYFSDXdL+FymHxFJW6 S8Xlrm44tjahnBo/NVKVH06HOsYtT3gyP3ZAc1Jf948YfVeN1F/DzXKMhDh9djSD IIhrDSDVsjf8vWXx+KApWNY/oUwsgzRiDdmgo4UXWUO7J0Ls5lN8AE1mW+CDqbFv c1ZN2i4LuI0bYCHBTPtBPaO6TfgdsrthGJG3R9wt3H+14AWS3MwBEYn0vhu03cCj i2wICl4stcHVS8rF+EnwihaCGV1WNu044e6h8DJsbL28ra0pv5eNTSBJcBTo7wiq pdpEqA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47ds7s0kmp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:25 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7d0981315c8so239127785a.0 for ; Sat, 21 Jun 2025 11:14:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529663; x=1751134463; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1aqIaLvUpP1zFWPwZcv8zHZi9hcPKnIY5YKRhPTvJuk=; b=d4WxPzLslkEH7H6TJCLTtKx4ArB26bqhQwXYpF6bcKdbLx8BJJbekBb1C3LS1c9WRy /MPP/sTUUIbBdLrjzXVFkop29/LQAQ0CfUyjajTqqRYbK6sUUTGjSswhj/LE0B5KohCS 8NHpMgLcoOLQlkuFvXIJVkyFnM1BszaNzqu1h2i0PQS9xe69CI9X9vM2XUa9t/c1zySy 8eNdLf2HQ3DQqtwc85U8ZbWaaP4LPbx3cRDqn/6Le3HjqeWUmJG0rzIBxUoTRQq7mEN7 9wSZJNSWVH/TRIdarPVJ/3WG9y8t6ft1y3Va7MYzUSed1w7EOM7l02q0RO0ebD5qZTVn pQSQ== X-Forwarded-Encrypted: i=1; AJvYcCUBLShYaHzNUCxubeVu7YJIlHSLGBf87txlvYHakSi66fYxMCgmXcNh6WWSBOLadFFRXVgx19vGHLUrk+4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy00eQtwgZv5GlpkunWN1H1FzNwd0LTC8x/41x7MIJ/ReKjyI1G EX4ONrRvCkCoKry3lNNVgdKWPsrS7I82+ZVKFamCI7bgO8cmCORRBNKtyjMZ49Ks260tX7c7UeE iRzi5oBnj4tYj1x1y6eYaaYUNJBIbX3w8c6wihlEn/45l3anggw8jrsAAuysRROJQq5dkKJhNWk 4gDg== X-Gm-Gg: ASbGncsVX4mZgUFAt7XUpouW3iY/Zr7qUArq/A7S6+fUWymIxvQ9Z3cn8wAh85E6zmv weOnBf4Rgv+wxdic6Fdk7gyKjxpVNzN2IOpbtRIR8Q5T8mKKSfP8NNRwtMLrU2O9ayDLKNhdVOp XTWhkg3LtW6a8LTk7hmLjzMaibCt45sIeXsvXoWb7kKLzFe7IKZ/0gMaZCH1BbgwyIdLm7oGLnR 2kPfOAuvleG+nKtYJ9EPDnBzisqaAviv0/nwPlfkEiyJCIBjTMJkfuxtF8syOS37FQpc7ElLsYa ry3Y+W8wXstGoaWpOgAWQlawz8ocRp4+nZb4qn3hkrP2EarxjZ6KoxaO0PE2UrEoZV4by9COPlk ugBw3hnLENiYkj3huUWuLXOYnXeP09Tpk5pY= X-Received: by 2002:a05:620a:2693:b0:7d3:ed4c:fe84 with SMTP id af79cd13be357-7d3f991d7d9mr1216212985a.31.1750529663609; Sat, 21 Jun 2025 11:14:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IELim/6+6aSoh9DCQhdH9yeSt9LxI2hvvLw6WOJeokVXk9fuz4Lf6Jl1owf+XMfbDNvPIp+vw== X-Received: by 2002:a05:620a:2693:b0:7d3:ed4c:fe84 with SMTP id af79cd13be357-7d3f991d7d9mr1216210585a.31.1750529663236; Sat, 21 Jun 2025 11:14:23 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:21 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:13:01 +0300 Subject: [PATCH 6/8] usb: typec: ucsi: yoga-c630: correct response for GET_CURRENT_CAM 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: <20250621-c630-ucsi-v1-6-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1228; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Run+O2mI2A76noQdH2tqShWLEpuGZIuywf14cmX4Kk8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZzwGwXYpmPvXDx4iRsvi9cjZU0WfvZSDkRh IDMJvCJeDyJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cwAKCRCLPIo+Aiko 1RSLB/4obyjbVEnnrgRFrKXyP8J/IIWxADau7nzq5Ef21hBWZml2P4EjvzYsPPBuYZSTClzcuAj i9NZEYyViwIasFDsQU9aDXQ36I65lGrnjnnTl1ii2BiHQggjgHDrBkcvET281KnEXY/1CemYaIq o5gMtd+k4A2/zRLotSO3SH6SC/yulmYj7ESWJxLmwllFHF4SWEM5XqSgmklCvheY2QxYdFJjCms 5enH57R56RTgJYT8bkt2k0GGIOSkW+1R7s3ZVFdLw4xeBHlp5oDjDucDFKS0KHIPvBM3Nuj5BEO kHqLWEgb46YmdGXSNyV5WOCM40B7wuDuRBgucsJl25ETxJax X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: liqJhY14EXo2ZILioIkKsQaFzclIrP_F X-Authority-Analysis: v=2.4 cv=cIPgskeN c=1 sm=1 tr=0 ts=6856f681 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=btjbPSU_vhCAQAxPhXgA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-ORIG-GUID: liqJhY14EXo2ZILioIkKsQaFzclIrP_F X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX8ljHw+NA2Keh u9WysB6rhsbkO/zpMz7aHhALla/VZ33sl7kvdxvtRQunt4jjT0An+2hldgnQbShtSRozGjzIvTq tmLoW/2/jo3OeYwBq77EbGPcd2l41xruAyYeiObLBnaZUJJ/pnQfLWhEWYBQ9i2hDbvhIOQZ16x ayXpndmwsdfOPwb/ca/JDdPA7tQsdFNSMWeQv5jQFH8bX4TgZTGxpu2XkvM6rOSyZwAXyuxfNfF Hu1sBQ9Qyo7m00aG7ipUrwLzWsBXwBRgtdXlUYuvjXjf2v63Xw6liftvE638lfRSp6izRK7Dmeg shssNvPGQZyZ5UwHLmjqNlH07cxFGrm/efKgiiOS6wrrG0qxxgdU3ekNH5QoWYYS0S6tnYKWMxU L4BmByLzEKdyDpXEds90VgGE6EIivlzomJTND/VfXKnl36vGBR8Yj4jdJGXXSjeDSyNbYeS7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 impostorscore=0 phishscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 adultscore=0 mlxlogscore=806 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 On Lenovo Yoga C630 the EC handles GET_CURRENT_CAM command, but it returns 1 if DisplayPort is active and 0 otherwise. However in order to let UCSI drivers handle AltModes correctly, it should return 0 / 0xff. Correct returned value. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index 506faf31b6e3a056e067f2bb69f5e9e5ea40e514..76afd128d42a2573ff55433f815= c2773462a6426 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -111,7 +111,15 @@ static int yoga_c630_ucsi_sync_control(struct ucsi *uc= si, return 0; } =20 - return ucsi_sync_control_common(ucsi, command, cci, data, size); + ret =3D ucsi_sync_control_common(ucsi, command, cci, data, size); + if (ret < 0) + return ret; + + /* UCSI_GET_CURRENT_CAM is off-by-one on all ports */ + if (UCSI_COMMAND(command) =3D=3D UCSI_GET_CURRENT_CAM && data) + ((u8 *)data)[0]--; + + return ret; } =20 static bool yoga_c630_ucsi_update_altmodes(struct ucsi *ucsi, --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 7275A26F476 for ; Sat, 21 Jun 2025 18:14:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529669; cv=none; b=N0Q4KtszL7xU51GIw7YFlXpWQAv+h1Hty9o9WztZoTVhTNvGamXhRLjkm3gLYS4XQnhCqQQp68zC9vysb3Du3Sh4RKaIstxmM7R03GN7haAzKJln9gkPfm4gHV3qfJj2ZjhoPRFrtISDQ44OJVMRGV0oCkNahwymtqbD5jmK+Lc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529669; c=relaxed/simple; bh=Vp5Fme7/3hYqg8ZC4exosk/7eg4G/1nTlZJs2jkgM98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qbiTLxhn3DQpcVvuL8PMTpzNJbLtTtXx3DFDJd6bf4q0LFFrG1qjpHG8gS2vUo1svL574/l0SMlZsLXooCHpfqm709r8fBtFUgdP/EXW7IXRElnbRA5ZNyY8daHMWMqx722cAqyLxmEMv+yjQ+2aCAbaK35D0wfNtIVzWvmxa7I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=b2XRLuwa; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="b2XRLuwa" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LFdOxk023071 for ; Sat, 21 Jun 2025 18:14:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= i0hBPSYquU2It6N5un/PFHS9t4oxEjLZu7nUhJVo2lc=; b=b2XRLuwaub69Oghr /816m92bzejA8lRQvpA6x+ay5CRJfD2HiP5dXDUt1x2YuxXF9pZ1zUq7wYWWp5qJ ys9GO0NzWJb/MRkkQTxDE94KYPS8i3IU0YoH47iELWxBP97OqkYfRh8aGppLLlGc +K2ExuMmk0Lkq6Kmvqpqe7fR1rYADQMCUS1tXhmvssu6l3OE8AChWJS1lS+BepcB EFGh7o4WsdkuUcmQRwABPLWrVIPkAzbhKoqiC+CkWMaE+UV6OtVaTJWLnyuZIENU fPsJSV+RyqRVRP+pzbmgx8/Sj0PWtpm8RVjK+bdERat/QgIYe+qWso1ePzxHt+mS XTA9oQ== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47dyjhg558-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:26 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-7d38c5c3130so485321185a.1 for ; Sat, 21 Jun 2025 11:14:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529665; x=1751134465; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=i0hBPSYquU2It6N5un/PFHS9t4oxEjLZu7nUhJVo2lc=; b=JllXSAtY54a3L6g4NXlEvY3wx+ybuEiQkkd3y8TCQCGe0a+CaGymUAv66L9ZZYqRgn eVHyeTP26RALJpPT1atb3vNkxyVJCMmUcRHB0aALwJ8mUlI31PYTMs+EPK8gK9o2XtNc ACNbKPQA+hquFX6JjCNMYkorNp2Z8Lgecjz1IkPlcqPjpzM0bqTrXjbh26ABwP1j1HHM /DtaeFZmCCAGsI1O2QqdgpWYnf1WcFsGpL9SGPM9M4tIyYbf9Zd8UMxG59mkB/5aLNm7 225mE0ChII3drlykftapo50ugI2pZqGy80LYSkKlLDFFL+q2KbS5J8w7GHyTdoR2buVb SFuA== X-Forwarded-Encrypted: i=1; AJvYcCUu2PfvSIRn7kxaVKODrijFd8dNd5ITFr6dOd59CB/Ldn5EnQzjPGRKb/tT2u26zvBJWPJ3eBMgRWHxSnc=@vger.kernel.org X-Gm-Message-State: AOJu0YxdlxLDjR1UQLG5JoWdKt1R+Y8MpYX6a9dJTsdMnloKow+mYjWL gKMpY9EK9V5IV9Ick8S8vsGs3sz9lLasFdbp/EcXSAK1s1kt5SZu5DhWnmDXa36D3NG2QNDiUXg 1H6TVCv8S2/kZGENBppkQZIYobIqR2AtjA+AxC+GfnSOWC53dDXb6bzhvHtKnNSluV1OiO5SdeV ORTQ== X-Gm-Gg: ASbGncsu2zzGkfjsP3V5l9KDoXS62ykiSh2i00c/kiUMZRD6q3SW0gsVrJbbGRrrpVT Syq2pRrq3mqc+hV1lSWN3WPEWHa76wgqV1vN0c/l3nlsofJIqpqCd50kdFsw47VIHkULEqXahOY jG+Ol5eUa8lxAUHeHun8OKmbZ5YdUVsH3NohAQBdexukmyX8Pab/ItDpvhnPP93aOstgGR7JoHn +ZG9QpwPmqGrC92YVG9f8NPh9t1ZGWBs+lyl+g6i+m+L49IuIYppajAQCZbhrXuYC8RER0WaCNK O2QdROaGxW3ImU8MM5bMbv5n9F0TzBDtwwgmayfhMFtqt0CIenFJhR5A5whOm5dkqzBB6YcZX2P MxmxN0ELeyR/4p5zuWoFmeNxTnt6mMy0l/r8= X-Received: by 2002:a05:620a:1997:b0:7c7:bb3f:fd40 with SMTP id af79cd13be357-7d3f98c335emr1054953085a.5.1750529665007; Sat, 21 Jun 2025 11:14:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE+BLvp55Mks0cd0omIsX9xEno7K+V+qTVjIWAp23+UGVrowvzZ6fUThgqonkqEHlZPASIb2g== X-Received: by 2002:a05:620a:1997:b0:7c7:bb3f:fd40 with SMTP id af79cd13be357-7d3f98c335emr1054949285a.5.1750529664603; Sat, 21 Jun 2025 11:14:24 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:23 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:13:02 +0300 Subject: [PATCH 7/8] usb: typec: ucsi: yoga-c630: handle USB / HPD messages to set port orientation 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: <20250621-c630-ucsi-v1-7-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3261; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Vp5Fme7/3hYqg8ZC4exosk/7eg4G/1nTlZJs2jkgM98=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ0bYt2L957xak3P43952cZ0rvWh+R+586RNWWVfPhH1// 0LbNJq/k9GYhYGRi0FWTJHFp6Blasym5LAPO6bWwwxiZQKZwsDFKQATkTLiYFioUWFX7Llx0X8n 6QsC7fH3+P707I13XfkqPIZ77k9ugd60Y33MOvkzj3k98HndNGP1cb6WGZvmdugbv3uoGNB2+I5 x1ztvT+17eoWKBj6lBgIXcpNe+DyLatcR58vhnKV6MEHO667GlG9PWWpjr1Qe/JE1babJUabuhv Q9PMnrNLd+uiV8jmPO2n190ycIzXbYP2OZqETSOl/Tn4x6/UJXlCqmujoUWbJPF7M/4eRzZfX8d hmObZdq1/A4rw5ac+asvhHTu0KjTefyGGdbSfWwxYu3FFvEftvbWBfTrbX0zryJf7++OxS9pqKo QX7958JrwY9fNhQ0z9BwnNckziFnl80xseJIa8jHxFcfAQ== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: nC8Gu8MvQnJysf0tnMU6AEC2rNTSDCpp X-Authority-Analysis: v=2.4 cv=f9pIBPyM c=1 sm=1 tr=0 ts=6856f682 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=KtUMi8uSWGBWOuXQcx8A:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-GUID: nC8Gu8MvQnJysf0tnMU6AEC2rNTSDCpp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfX4exdF/Az2HZA kwAiv4galvO47CudTl9lMtqrygzA81tGgOkGhDwig9Pq0s6CeP3YAZHUSIGEjlYXrKyC/NUkW6e IGx/t7xxNYN+f+q1DemN0oYa4fIgdzmwD6t/ku5aMP3SGSdxo2i3eg7lonCxhyjEt4N26Kwi85I gkuqaP0SINT0sDVMg6F3RljVnftp0u8BHmz4f0cAOlgZs7+jpKu/Iq8usWr0WymZ0jQipTyTn5U GlL79FJPs7HnDdnYNTXaq/G7jBqiyCTZumJqnQ/70ITQy+txVMcJbwb9Blequ0VDg7t0JA4mqbW 3bxldnYkiZzjSLhsWdzogToNinT56Q9+3jKZL2NvMyCrPeXmI70AGFHa/4fiKJQPpzi/t1QNE8i EJkbmeIqhEa11+o2CvDJ4PjCeCUTrCBGU9KLptAF0vikbHrn7LIcvI7CQqDLmPSHrSr+WZXy X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 adultscore=0 suspectscore=0 clxscore=1015 mlxscore=0 mlxlogscore=999 lowpriorityscore=0 impostorscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 Parse USB / HPD messages from EC in order to set the orientation of the corresponding Type-C port, letting connected USB 3 devices to enjoy SuperSpeed connection rather than beign limited to HighSpeed only (if the orientation didn't match). Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 42 +++++++++++++++++++++++++++++= ++++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index 76afd128d42a2573ff55433f815c2773462a6426..f85170417d19cdc5ae39a15e2f9= 7010259ef12f6 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -7,15 +7,25 @@ */ #include #include +#include #include #include #include #include #include #include +#include =20 #include "ucsi.h" =20 +#define LENOVO_EC_USB_MUX 0x08 + +#define USB_MUX_MUXC GENMASK(1, 0) +#define USB_MUX_CCST GENMASK(3, 2) +#define USB_MUX_DPPN GENMASK(7, 4) +#define USB_MUX_HPDS BIT(8) +#define USB_MUX_HSFL GENMASK(11, 9) + struct yoga_c630_ucsi { struct yoga_c630_ec *ec; struct ucsi *ucsi; @@ -144,6 +154,12 @@ static bool yoga_c630_ucsi_update_altmodes(struct ucsi= *ucsi, return false; } =20 +static void yoga_c630_ucsi_update_connector(struct ucsi_connector *con) +{ + if (con->num =3D=3D 1) + con->typec_cap.orientation_aware =3D true; +} + static const struct ucsi_operations yoga_c630_ucsi_ops =3D { .read_version =3D yoga_c630_ucsi_read_version, .read_cci =3D yoga_c630_ucsi_read_cci, @@ -152,8 +168,33 @@ static const struct ucsi_operations yoga_c630_ucsi_ops= =3D { .sync_control =3D yoga_c630_ucsi_sync_control, .async_control =3D yoga_c630_ucsi_async_control, .update_altmodes =3D yoga_c630_ucsi_update_altmodes, + .update_connector =3D yoga_c630_ucsi_update_connector, }; =20 +static void yoga_c630_ucsi_read_port0_status(struct yoga_c630_ucsi *uec) +{ + int val; + unsigned int muxc, ccst, dppn, hpds, hsfl; + + val =3D yoga_c630_ec_read16(uec->ec, LENOVO_EC_USB_MUX); + + muxc =3D FIELD_GET(USB_MUX_MUXC, val); + ccst =3D FIELD_GET(USB_MUX_CCST, val); + dppn =3D FIELD_GET(USB_MUX_DPPN, val); + hpds =3D FIELD_GET(USB_MUX_HPDS, val); + hsfl =3D FIELD_GET(USB_MUX_HSFL, val); + + dev_dbg(uec->ucsi->dev, " mux %04x (muxc %d ccst %d dppn %d hpds %d hsfl = %d)\n", + val, + muxc, ccst, dppn, hpds, hsfl); + + if (uec->ucsi->connector && uec->ucsi->connector[0].port) + typec_set_orientation(uec->ucsi->connector[0].port, + ccst =3D=3D 1 ? + TYPEC_ORIENTATION_REVERSE : + TYPEC_ORIENTATION_NORMAL); +} + static int yoga_c630_ucsi_notify(struct notifier_block *nb, unsigned long action, void *data) { @@ -164,6 +205,7 @@ static int yoga_c630_ucsi_notify(struct notifier_block = *nb, switch (action) { case LENOVO_EC_EVENT_USB: case LENOVO_EC_EVENT_HPD: + yoga_c630_ucsi_read_port0_status(uec); ucsi_connector_change(uec->ucsi, 1); return NOTIFY_OK; =20 --=20 2.39.5 From nobody Thu Oct 9 01:13:40 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 68C7B272E4E for ; Sat, 21 Jun 2025 18:14:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529670; cv=none; b=VrMPKbG787UY44ZeZhkbKjEJtWAH1KrWXjse7aDITXPXO8XYe3V25G2pEdPz6exiHFy4llwocxwmSFM0ngmxkF+TQvb6Km9WZO/XTloLaoHOHdzSsJVvi4Qh9cUAhnWEFNihBnbv0VpugpLsPws7O27JK1MJ1wObdihl+ngGCcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750529670; c=relaxed/simple; bh=FpW79T9YvftggI3m1nG4aTepTbBBYG8c+lDmZC/zvy8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vg/HuivcWVUSSIFkyqm1NN+Ic3tPPjW6krtrWjRxlWKHcIXTEbhI+mSKWrtfaUm2ukwzKnkLm0/SSzl6rLQ03pIp0G/Z6gP4VGmumaOmLusHAClZc5r0Xj7u9RrqXmnYNOPxA4OoIUeKpYHMF63XP4cjqvZwNWA1e81BTRLXxks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pSQQbo2N; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pSQQbo2N" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55LEN1Zr007788 for ; Sat, 21 Jun 2025 18:14:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6W7bz7mumVKjkQi3vedorRqnABekWR1kRWVKvxBpQYs=; b=pSQQbo2NxtSZglt2 IKG9FzI57m0lbu6GkQyas+xghftyNTqeJ3KfqzdzQdnXH7VjZrk3HESksmcRzIS7 SqxFZJ06tx/AwWwg48Z5LK9n48id+Thi9wI7SDSCqU8hFfYMO72eiXCqMGNyahRW 88/ihr1ZtqpuoCMEGQCuuKiRY3FcHrEEUyNIuRxmOeJtvxFMS0z/IcVG8JrttVb2 60eU9UblrNHKjShsZb32+jK0OZnLSkwCww3kTOPcY46j95Kta+cpcJM7w816Cju/ Q1hNaFk34yPIcKbmWLio3i2TR35TF8r9IvQXWvwHbgB1aAfu8xSttyvgvqZNGAFD 5+xPEg== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 47dxejr7ps-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 21 Jun 2025 18:14:28 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7d09ed509aaso407458985a.3 for ; Sat, 21 Jun 2025 11:14:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750529666; x=1751134466; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6W7bz7mumVKjkQi3vedorRqnABekWR1kRWVKvxBpQYs=; b=wdW+ViBYRqkKcDij0pT7jGtP8oySGuc/RjkcOnKREtQ/dRd0UsmCz49LRoBBiStPmL 8aYJlvfP2LH4jEdlf6kNsN8g12Y6OiNhUmH7UuD7f9vO9ajEtZ8qv2ud1Oi68Gx4dhPs uoozMWHt1+jyf5+CqLEzMebYlP3ygUwocN6C4pn3PvpAMqbwHDmr/gaiXP1pnxe6HAO1 cCczcH5BaUE6CAD9zEgzRoW3x2pqiyLbmReOQ7Lw8hE2sBkuu2deN4NQONbHR2M2mJTc r07deWwT3JRYz7jwHyu/De/nsasGrYi4r1Eju3h3da11nDUAXSU8Nkhx9mVqDaOztbY1 R13g== X-Forwarded-Encrypted: i=1; AJvYcCW/eH0kQkkJu6NspmoWRs8E0ZTmcbUT+3dTyO9EECBTOvL7FOX3l4VPu2MYRg8pSyQveNBZPMNx5/6QVM8=@vger.kernel.org X-Gm-Message-State: AOJu0YwsvqjypETUcrAA0SNz3LtFEhaN9uXL1OeEaYrLoOBjnDdq8h3u YNj16+gvzSCWLuAKwjcAr9W6hadZPzf8oAV3JNSH2VIK1UuzImzrjm2el2F/1rr0VI7NR98gs50 k85cpPoaBIbZcsr7GQR/fIaA76wi2MmPY2FiANcHOP9EBsIIFUL3eHuK+CeoqgM7Od27/pNhuQe NJ4w== X-Gm-Gg: ASbGncvv/y8JHOPTxhM9OQHTS95pvbt+WqO9eja7Fxtvtixyd0/+04mNG5lVheoQk16 JgQdzfGrCOq9GMv/QM2L8bVnQAHQNIw4tYQJdjt9wD5pB+S9d5WJfzObmc9W4DkXsjnoVhjrooW tBEDRHT78CAaPv1dKDUYscCJrUiqYZb+Wysej4rLf6Ks+/H/P/bbtzTPnpWbbhlBTAXrrS29hY+ 8KSgOPXy3nE74BOMr6M+OJLLvnNOMpMAWVi6flT+UjVgAh8ZRmBiCXDNbU8TaL37tJmFhyt7cju q9N0uLuqfb6qpwBlNAW8/Wd2XG+gvBRqf+0b/MtWFQWS5oRr4gX/+9wnnNw2WfO+nejPqpYsn7k NLp2EhcagF/aqKnfbePlCxLtzko/Vx5bZHjY= X-Received: by 2002:a05:620a:4711:b0:7d3:f0b0:3923 with SMTP id af79cd13be357-7d3f98c058cmr794839485a.11.1750529666466; Sat, 21 Jun 2025 11:14:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGNu3e+Vqi/twA6YrEVVy5gvr3OvSabeNJNWBdMJf9Nc3t7dBPNmwhVHngVNg58YjWOkm3g1w== X-Received: by 2002:a05:620a:4711:b0:7d3:f0b0:3923 with SMTP id af79cd13be357-7d3f98c058cmr794837585a.11.1750529666039; Sat, 21 Jun 2025 11:14:26 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553e414cf36sm752336e87.86.2025.06.21.11.14.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jun 2025 11:14:25 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 21 Jun 2025 21:13:03 +0300 Subject: [PATCH 8/8] usb: typec: ucsi: yoga-c630: register DRM HPD bridge 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: <20250621-c630-ucsi-v1-8-a86de5e11361@oss.qualcomm.com> References: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> In-Reply-To: <20250621-c630-ucsi-v1-0-a86de5e11361@oss.qualcomm.com> To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3461; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=FpW79T9YvftggI3m1nG4aTepTbBBYG8c+lDmZC/zvy8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoVvZzIqHyyr70rdlkR2ynE+980npLhS9AnFqt6 48F5PPvF/+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaFb2cwAKCRCLPIo+Aiko 1acnB/9NmCptu0kBEeP30DyUCAMSo1tFZMXGQ0MnaP11ImnSRZ78l+nehBzl2wZFKmSH1tlyXRv VTRUtBAkt61D7csum9Mqp7qLHsb1fBFFdnVOCafQRNGngXFcNI03wcCzvg3x4QQ5dSjXRYLeFI9 9XOK2lnYEJpSZJ1Qa2sE4d+lHf4tabQ44cGvYHE3URRdZIzqwcRhqA0EHbtPAk8MnQzpHgfBFL/ XK7wx2ETVGeH4GbNbkXwyj3Hhd316On6ZIChDR7yWA0ja1sV7PuiPtXxMjtfQh3GZ6XdBCamoU0 k2vNfS0l6QvnQLiFtAZZmYR3OaXo2ByvBLg6KhKZ77a1uTvN X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: 75jievH2aGgDFHFEeiCd8a8j21Ow5UuD X-Proofpoint-ORIG-GUID: 75jievH2aGgDFHFEeiCd8a8j21Ow5UuD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjIxMDExNSBTYWx0ZWRfXxDNgw30IA/0k WCjhUKnoVpR5U+M/nPJLmlf0MgGXsCiWKJ3S8gwy3SYEulDufgsYRW/jEDPC+2WiBnLjf1+ggaZ Rw/xdH4QXV9VgSM6/9th73j0Fz6l9CLn5D4WdT1G43jm+MzC/G5xM17M8szmylPUjV4z+Q5l9MY AKkfUyqmk7s38i68jnPijVK9LbTyLfavOTnJW6Rbti9PucPEC/jh9rjHj5YyqQ+ytxT7X70d201 HNoP1eOt7qBb9iubwE1cqx5Vd+ZMfDzcskvatyyoHCOCC0gRLanRB57IZx/dgXbOZPnCyEbKvgD mxM9ztUX6a4SLrWqVqR2kITsRExbcmlaR7hfWy85C1/B1CfBDCxCNGipwkFUvYlGwzNtYjSLOPm 6A1BKnGklDgqanD1lq42Oh1JUiK7ZO2GaD8fGvB/OCtyYZ4eIBfIWlsLZjoQ7x0xQqXAu42u X-Authority-Analysis: v=2.4 cv=GcwXnRXL c=1 sm=1 tr=0 ts=6856f684 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=EUspDBNiAAAA:8 a=6fbo0VkVZcmtXeJ5A9EA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-21_06,2025-06-20_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 priorityscore=1501 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 bulkscore=0 adultscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506210115 On Qualcomm platforms DisplayPort driver expects to have a drm bridge in the final device on the USB-C chain. Register the DRM HPD bridge in order to fulfill this requirement and to send HPD events to the DRM driver. Signed-off-by: Dmitry Baryshkov Reviewed-by: Heikki Krogerus --- drivers/usb/typec/ucsi/Kconfig | 1 + drivers/usb/typec/ucsi/ucsi_yoga_c630.c | 39 +++++++++++++++++++++++++++++= ++++ 2 files changed, 40 insertions(+) diff --git a/drivers/usb/typec/ucsi/Kconfig b/drivers/usb/typec/ucsi/Kconfig index 8bf8fefb4f07bccc4be90a4b7f771d91294386b0..52b53bb6dfed28c4272f8ccc5e3= 1601aede29911 100644 --- a/drivers/usb/typec/ucsi/Kconfig +++ b/drivers/usb/typec/ucsi/Kconfig @@ -85,6 +85,7 @@ config CROS_EC_UCSI config UCSI_LENOVO_YOGA_C630 tristate "UCSI Interface Driver for Lenovo Yoga C630" depends on EC_LENOVO_YOGA_C630 + select DRM_AUX_HPD_BRIDGE if DRM_BRIDGE && OF help This driver enables UCSI support on the Lenovo Yoga C630 laptop. =20 diff --git a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c b/drivers/usb/typec/uc= si/ucsi_yoga_c630.c index f85170417d19cdc5ae39a15e2f97010259ef12f6..0187c1c4b21abc7b5429526ebb4= 538c28b2e2e77 100644 --- a/drivers/usb/typec/ucsi/ucsi_yoga_c630.c +++ b/drivers/usb/typec/ucsi/ucsi_yoga_c630.c @@ -12,10 +12,14 @@ #include #include #include +#include +#include #include #include #include =20 +#include + #include "ucsi.h" =20 #define LENOVO_EC_USB_MUX 0x08 @@ -29,6 +33,7 @@ struct yoga_c630_ucsi { struct yoga_c630_ec *ec; struct ucsi *ucsi; + struct auxiliary_device *bridge; struct notifier_block nb; u16 version; }; @@ -193,6 +198,13 @@ static void yoga_c630_ucsi_read_port0_status(struct yo= ga_c630_ucsi *uec) ccst =3D=3D 1 ? TYPEC_ORIENTATION_REVERSE : TYPEC_ORIENTATION_NORMAL); + + if (uec->bridge) + drm_aux_hpd_bridge_notify(&uec->bridge->dev, + dppn !=3D 0 ? + connector_status_connected : + connector_status_disconnected); + } =20 static int yoga_c630_ucsi_notify(struct notifier_block *nb, @@ -237,6 +249,24 @@ static int yoga_c630_ucsi_probe(struct auxiliary_devic= e *adev, uec->ec =3D ec; uec->nb.notifier_call =3D yoga_c630_ucsi_notify; =20 + device_for_each_child_node_scoped(&adev->dev, fwnode) { + u32 port; + + ret =3D fwnode_property_read_u32(fwnode, "reg", &port); + if (ret < 0) { + dev_err(&adev->dev, "missing reg property of %pfwP\n", fwnode); + return ret; + } + + /* DP is only on port0 */ + if (port !=3D 0) + continue; + + uec->bridge =3D devm_drm_dp_hpd_bridge_alloc(&adev->dev, to_of_node(fwno= de)); + if (IS_ERR(uec->bridge)) + return PTR_ERR(uec->bridge); + } + uec->ucsi =3D ucsi_create(&adev->dev, &yoga_c630_ucsi_ops); if (IS_ERR(uec->ucsi)) return PTR_ERR(uec->ucsi); @@ -255,8 +285,17 @@ static int yoga_c630_ucsi_probe(struct auxiliary_devic= e *adev, if (ret) goto err_unregister; =20 + if (uec->bridge) { + ret =3D devm_drm_dp_hpd_bridge_add(&adev->dev, uec->bridge); + if (ret) + goto err_ucsi_unregister; + } + return 0; =20 +err_ucsi_unregister: + ucsi_unregister(uec->ucsi); + err_unregister: yoga_c630_ec_unregister_notify(uec->ec, &uec->nb); =20 --=20 2.39.5