From nobody Sun Feb 8 12:52:17 2026 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 B329F348861 for ; Fri, 24 Oct 2025 18:18:56 +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=1761329938; cv=none; b=t4CVZZj3BSkV1kMsLgflHGB4ZKHZoF2vv8DEs6XqxpTxAwTzuofn0IU+zBgMsjLfVWX8dUL3lo6ovJkWZgZvBCdGVW45VC9RXArPdazhpXewsKpoPHCRfSKo/dI6YWIgm2LyNjdYoHosmkx35o0af+KlnB/pdNsQI7ucZ6VFdzw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761329938; c=relaxed/simple; bh=6LDCzDAorQ1rdxr458tviaygajHjm49tspDBIZwnE5M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NYinALKOJSTWliA2VfHpBqmB7Y9NNcQn9lEHVmpRqoPfWQL8ntsAefLPIJHzagIXVfDlP1GJjC5ehmJyKzMzD/zr4tIWClkJQFy/UwtcP2FexGM2wkzaXrTn5UvXcI562X2DXV/jsAvRJShbNTo8HVtIzDdEcw64Hh7sfPo1s5A= 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=U3Q96RL3; 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="U3Q96RL3" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59OI9Ihp028820 for ; Fri, 24 Oct 2025 18:18:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=pfNn+iLNbzS vPfiCGkJrd9fqTPoz6zfOgZ+31wHMCWk=; b=U3Q96RL3t7dGVLwFclEVlwj2lz/ k+v8zwf1oiDCekiNHf5bY5vK3+HHWLsmQaOiT3s2e1sKph3pFRcPNijXvOmkyldc 8EKraDbGOHPVc4o6b54UyMKfMU10dxpWepK5ubrTQEg7iLOM8TzCK60k0pEMtfEM OUlxglspG/h1iNQuVgJg6RRbt41r9FGqRfcjBsRC5bin1FHDHcDGvh8cBDi8DXKz W7aJNJlczEfC5Jr8yyp3XToDVQfkiGZ8xyR5liJ9ABmKmyprqH4bC9WA09wEDvn8 K9mQ6d4YOIUMzwrM1TeZGxcg+cfMNJju8lKeltlFdW98e81C6dk+mNYlotA== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49v1w8cv79-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 24 Oct 2025 18:18:55 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b6ce25bea3eso1692636a12.2 for ; Fri, 24 Oct 2025 11:18:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761329934; x=1761934734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pfNn+iLNbzSvPfiCGkJrd9fqTPoz6zfOgZ+31wHMCWk=; b=AaHQO7auXpd7sqBtuh/Jv8i24D5XWNvABHbiFXaMi/DSAJt+vOc2x2aDrM8pLwy0mA teNNpNz0RSeF4HY9fgtP0I4jbc3g+JRxq0IZGLfaKOgyTNd+j2b3wifMkOF72++undKf ZL4wqhnYQ2tW/FAkpIEhy5SKvLKmXsAyZ0kXNb68uGZAi7nSj7H//TPwz/lFx3dtHpTR X10av++y7NKZhyUcNP9wBjmZq6/OUg9EGdxhKhJK6RfbDQY2XPbsu0y7miCGAWls0lls ZNuzi1Bir4zosX/fEV4gTQDFOO7m/Kp064NmM3v8pMVBRYSb+Q0vhoWU+IiCYVBXecKy B4iA== X-Forwarded-Encrypted: i=1; AJvYcCUrkk7P6iq/CeeWqn72+YpHftsmAMeeMORcVRx+YbZWc220bbtO3AppujKAG4LxVkNwGWSDbs+e0u32Snw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw87UkiesVVkeBONKfLbVqv0slNsT6aONWzkww6MtyoClhNLjnQ rbJAlZ+yrAK1w/8/qK4hgfBqwubi3AfgnZDDVnbw98fUxztnivM709P1C2uZHb0DxXuVNZqWdIJ OMWVKYm0jmGRynnBdzxcHRkQUddjw8XQ7fzSmMzGAvkMx5jNmDWrhuR5206myzKmgsqQ= X-Gm-Gg: ASbGnctxBRkWTZAm9qwVc0R85SBI8JtGI2GiGSaasL0b6+lAKXXLDLA1sHyp87dNybl JsLMmfjhZ3wiTNOXvs1un/RNLWRbRUAqSXsv1Vum83c8qp5b+muH4u8pqTVrpn04vNUo8d1Vywe Zy1Q+upUxAD2Hqq77hGnTSt4ltp/YLGVFCxdpFk6KBDxb7MlJNL0vr5wQKLxmUtuKltRI+qeTze BwTIggd1enoCFCd+fZn5UJ3HuJrc/6RttwEQ1jtvRJI18CoAvA7P2Huaq1pLp/0l5EiMCPROPO0 daCGiqu7+9+Pj9bvzeq+4Z4AvT9oYDaOl5ZM3Hf78R38nlUSW09P8gnyjWpUrtADrRdoDWGiG4M u97FyKMVKJGzfjCcD8groLXWw43e0gNiYVbgP X-Received: by 2002:a17:903:2305:b0:290:ab25:2986 with SMTP id d9443c01a7336-2948ba3e9b3mr47364215ad.48.1761329934101; Fri, 24 Oct 2025 11:18:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IELcCDpHEgvvYzQ0bQxFdSUCPv3oQqtjRlEyx2hfO6qfAnTDcaIuKb/rUMuhz6fYiteMAdjEw== X-Received: by 2002:a17:903:2305:b0:290:ab25:2986 with SMTP id d9443c01a7336-2948ba3e9b3mr47363965ad.48.1761329933695; Fri, 24 Oct 2025 11:18:53 -0700 (PDT) Received: from hu-kriskura-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2946dfd0405sm62398045ad.66.2025.10.24.11.18.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 11:18:53 -0700 (PDT) From: Krishna Kurapati To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heikki Krogerus , Biju Das , Dmitry Baryshkov Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krishna Kurapati Subject: [PATCH v3 1/2] dt-bindings: usb: ti,hd3ss3220: Add support for VBUS based on ID state Date: Fri, 24 Oct 2025 23:48:31 +0530 Message-Id: <20251024181832.2744502-2-krishna.kurapati@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com> References: <20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAxNSBTYWx0ZWRfXwtn62aNpLj5U 4r95OJw0qsIk/5UvmcY5DtVl5L6cdarisVmc1KsbaZx5F/UTQlFGHjlxascMoZFW0Tfc8WxFb4s 3r82Q3BtI6hzO2jn5P8d93Z0miam9Pyclgh1xmllo+tYDhWqFlWf/XDk5dKfkGWz4mU8Wsos97T XXbM0o7/YIuibxD1pX/EGBfyWyn9HJ9W6BOaiGDEtVk86363p2lfRHnpZwRDgZjMuVoknMoYP42 TjjMQB5IvNNy6D0weQIxC+03R41lJWCJUvI6+Gts8zYffI35gsbajd9VO+UAw4FOpTmYlV8tH3S 68cAPPNpNiw+GsEf6NfRdOv2wscOyJjN1FHrTODPfMbhlf2jaLHsMy1+wl5xNXJJuuAPZAN4sb2 tVhknupM31iCzLj6HWs9SLiRQNj9MQ== X-Authority-Analysis: v=2.4 cv=bNUb4f+Z c=1 sm=1 tr=0 ts=68fbc30f cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=UO34u3PHWDRxg_ly3EkA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-GUID: xzIOTToWIqx6UXQcQ_QtaRaA4FVlp26i X-Proofpoint-ORIG-GUID: xzIOTToWIqx6UXQcQ_QtaRaA4FVlp26i X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-24_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 adultscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180015 Content-Type: text/plain; charset="utf-8" Update the bindings to support reading ID state and VBUS, as per the HD3SS3220 data sheet. The ID pin is kept high if VBUS is not at VSafe0V and asserted low once VBUS is at VSafe0V, enforcing the Type-C requirement that VBUS must be at VSafe0V before re-enabling VBUS. Add id-gpios property to describe the input gpio for USB ID pin. Signed-off-by: Krishna Kurapati --- Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml b/Docu= mentation/devicetree/bindings/usb/ti,hd3ss3220.yaml index bec1c8047bc0..06099e93c6c3 100644 --- a/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml +++ b/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml @@ -25,6 +25,14 @@ properties: interrupts: maxItems: 1 =20 + id-gpios: + description: + An input gpio for USB ID pin. Upon detecting a UFP device, HD3SS3220 + will keep ID pin high if VBUS is not at VSafe0V. Once VBUS is at VSa= fe0V, + the HD3SS3220 will assert ID pin low. This is done to enforce Type-C + requirement that VBUS must be at VSafe0V before re-enabling VBUS. + maxItems: 1 + ports: $ref: /schemas/graph.yaml#/properties/ports description: OF graph bindings (specified in bindings/graph.txt) that = model --=20 2.34.1 From nobody Sun Feb 8 12:52:17 2026 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 B339534BA42 for ; Fri, 24 Oct 2025 18:19:01 +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=1761329943; cv=none; b=Tq5CnLwLlqOn5nKDXZVyIto92rP1IWMtwWGS7i0R1k2mmpL9xAbT7IwS3j/i+v5mWcya7Apof8Z39TuHY355/MsHX8Kc4TgSvvAvsHJuWsMxSfNM8JVLfZ+CgiXlcw3Ct64UtvRVffNxkhx3Xd4RD9JLaqvVkYLw2zQkiMcUtiw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761329943; c=relaxed/simple; bh=bYKZfRy493BjHUUMMUf8qDIAsdclwDo0cOBzM86O7xE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RRzDmJVh4ZlrPIlVxL3gO/he1OCtm4v7wkC3BvBUryDUDAL8XS9s75kbmzxl+QDNmg54vacPBZQTZFrcu+kESupaT+MmdeexAaZX6pDZPGX5Tv7wNnuIaCJ01UV6DdCYwyoUXs+YywwBOz9xIqVe2a/jLXbxEbh40evvI1O5A9A= 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=EE9a6UvI; 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="EE9a6UvI" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59OI9K03026930 for ; Fri, 24 Oct 2025 18:19:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=FNRiqA6ZWIA ZhUHE0CMfI2vngujnY7ny3jYCqjeJjGE=; b=EE9a6UvIV4V+sUDUCbhmJxbkxHp HGErmIdtYPc0jKUh6vI7vbGdSzsZ75wwSpIA1RkUz50EB3z7bWSgPSdLH9BlXEXe OMhnTCZfAVO0UV4zZi8jZpJKoA67GmTe/ehhMSaAiAqtxeO5wt2g2CaEH6meqtcr O35DMWPYoGtEwsVriS2M/nwXOonbrVqr8stvWE9fjlcf//ByALKyM0c7hQZ3EKl/ ZkP33v3UZx3b2FhcOnb9o02U5Sc26xy2J47XsBo1HJ2uYjWoeuybGjcfuptMXrie hTTZew1hHC8DbixYRL04eWRTivolLLvzVssB+VVasZ5QyFSF5XcijHvYxsw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49xhe0tvnd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 24 Oct 2025 18:19:00 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-27c62320f16so22912495ad.1 for ; Fri, 24 Oct 2025 11:19:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761329939; x=1761934739; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FNRiqA6ZWIAZhUHE0CMfI2vngujnY7ny3jYCqjeJjGE=; b=wt7N73FmOYqI4RmQ++LLBCV4j879H5hS1kuL9fVStaoSPSB00qKyYiYOR1jMkOptmz LPcUBrSbundsnc5uEOhFc7B5k7tCW8ktXOVIUHTkxrI7tCvzPCH1gX3z5WmdwQzk2aOT 0gffAIgjGVEVptz+WP2/GMlDAmgSwCfhzUV4EmANHxHUhR4gBkdaDZJPbDmeQHPpgpjj U+ptjOzqg6C8WU+/TwQ6yFXyl7U1DOULU+WrNYH/Rg6nUErsMivgzwsUmBnzXRiMxWf7 BckL4W/cD/vgM1SHSRuWR90kjIys4BwAu235kezY+Hij2avzjzfc6Lr71P0c3iSdJ10o ChhA== X-Forwarded-Encrypted: i=1; AJvYcCXpRwefH7ygBlseqCYJT3JEgJFBuiWYDqWoodfHaThv822m8OpA0/89FMFCLQPTx7VOwFWx/TkTL6StLC8=@vger.kernel.org X-Gm-Message-State: AOJu0YzHSKow1ncTO4Ps+rqvJPT2LzgjmRLLn8tOba23UGsdh/S6zrEy Iffy80y7BOvYMiZNJ9MbW8sBtptcGQsic+pgPnN4x2y5b+DXUHiqIU97tzCvMNxdOCFX3HG8mBk p30Nlg0cM0BEmReR4RAoqVpzsxK5urJ3+cnyZsuexVlLSUZMcBVjUgPP8h1UPFptPE/U= X-Gm-Gg: ASbGncvJ/h7pK+E6ZjSci2TDu2VJ8SH6dijbjf8167pGpitT7BCTBUeTn7YlCoB2EIh w93I45WzbBAl96bDiWM4id1fV0P3qBfS4PZy2bH25+obufUogAlbLYcipjWIeWl5s6kFrGrqkq0 6HODtSim+2Q+t9rN0FtxgxS90eTVTgZOunELrvu4ZC+j4NfQ5e+4jCWRy0zQo4QqYcFmRRN1ger AP9YXyFErJNAje+xguDa1r8m6rMpUi0r/9z3q9drL4tlOBT8rNHmN1BVlC0iVkQpsG6R+ZkwBWu v77waRKVa5CVWFgat1ATkePxNTJZ9shEucqh1tqhn27wizGKT9mNVvR/6nGzqQjyEPj1xI4Xyrl gzue0gaTZVIh+CckxAP3mZnt565o9YVeCo0ue X-Received: by 2002:a17:902:e5c8:b0:27d:6777:2833 with SMTP id d9443c01a7336-290cb18415emr406071585ad.47.1761329938911; Fri, 24 Oct 2025 11:18:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSm/bODB+wvY+31q4oQRKstujxXhMa/XtgYhxLhkWB1z17N1nmPow/OM0vlNhYjjaE9nT2ag== X-Received: by 2002:a17:902:e5c8:b0:27d:6777:2833 with SMTP id d9443c01a7336-290cb18415emr406071155ad.47.1761329938241; Fri, 24 Oct 2025 11:18:58 -0700 (PDT) Received: from hu-kriskura-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2946dfd0405sm62398045ad.66.2025.10.24.11.18.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 11:18:57 -0700 (PDT) From: Krishna Kurapati To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heikki Krogerus , Biju Das , Dmitry Baryshkov Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krishna Kurapati Subject: [PATCH v3 2/2] usb: typec: hd3ss3220: Enable VBUS based on ID pin state Date: Fri, 24 Oct 2025 23:48:32 +0530 Message-Id: <20251024181832.2744502-3-krishna.kurapati@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com> References: <20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIxMDE2NyBTYWx0ZWRfX4wx5SflzdWwg ZaJzqItVbd+K56P3cl6y9xnvUI0Hl/qc6CjDlivrRnQlNBixruigWnr+R2vFpbD7nuDG+b/bbZU cLzpYxcQ9aJF9vxtc7lUhiDbM1448+qpEfBXjMGhQBFdmTz/5kpH1wTtasJdiYZbqwPqG3CHzeF HpFa4S9Wb/zMyzkaVHn18A+t4+jsRJixDstRrUNi9o9irWFyl8bPCpChkbJMAJqCarhjXxw3fCd V2lM7EGcQHO/OpvI9WxpSuQDkOJxdGFUdxsllauAFgyMsyDdFPofcIwM5l+mJOGqjz9mjQZ510p L5SKWinTsQWUfAe7uSQrpo9tSCxXUHb9Kj1TARxlb1J2iVOLOEqVQ0LaIbM3yeyjSJe53JCB+dT F1900k/DMflv6Uk3RieL/sObaVFDfg== X-Proofpoint-ORIG-GUID: D-mK0WWQ3QibnMEsbzlqgpC-qeuELxqD X-Authority-Analysis: v=2.4 cv=WYUBqkhX c=1 sm=1 tr=0 ts=68fbc314 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=BB6_mFRvN0jHwWjQ22wA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-GUID: D-mK0WWQ3QibnMEsbzlqgpC-qeuELxqD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-24_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 bulkscore=0 impostorscore=0 spamscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510210167 Content-Type: text/plain; charset="utf-8" There is a ID pin present on HD3SS3220 controller that can be routed to SoC. As per the datasheet: "Upon detecting a UFP device, HD3SS3220 will keep ID pin high if VBUS is not at VSafe0V. Once VBUS is at VSafe0V, the HD3SS3220 will assert ID pin low. This is done to enforce Type-C requirement that VBUS must be at VSafe0V before re-enabling VBUS" Add support to read the ID pin state and enable VBUS accordingly. Signed-off-by: Krishna Kurapati --- drivers/usb/typec/hd3ss3220.c | 101 ++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/drivers/usb/typec/hd3ss3220.c b/drivers/usb/typec/hd3ss3220.c index 3ecc688dda82..089c4168c7b5 100644 --- a/drivers/usb/typec/hd3ss3220.c +++ b/drivers/usb/typec/hd3ss3220.c @@ -15,6 +15,9 @@ #include #include #include +#include +#include +#include =20 #define HD3SS3220_REG_CN_STAT 0x08 #define HD3SS3220_REG_CN_STAT_CTRL 0x09 @@ -54,6 +57,11 @@ struct hd3ss3220 { struct delayed_work output_poll_work; enum usb_role role_state; bool poll; + + struct gpio_desc *id_gpiod; + int id_irq; + + struct regulator *vbus; }; =20 static int hd3ss3220_set_power_opmode(struct hd3ss3220 *hd3ss3220, int pow= er_opmode) @@ -319,6 +327,71 @@ static const struct regmap_config config =3D { .max_register =3D 0x0A, }; =20 +static irqreturn_t hd3ss3220_id_isr(int irq, void *dev_id) +{ + struct hd3ss3220 *hd3ss3220 =3D dev_id; + int ret; + int id; + + if (IS_ERR_OR_NULL(hd3ss3220->vbus)) + return IRQ_HANDLED; + + id =3D hd3ss3220->id_gpiod ? gpiod_get_value_cansleep(hd3ss3220->id_gpiod= ) : 1; + + if (!id) { + ret =3D regulator_enable(hd3ss3220->vbus); + if (ret) + dev_err(hd3ss3220->dev, "enable vbus regulator failed\n"); + } else { + regulator_disable(hd3ss3220->vbus); + } + + return IRQ_HANDLED; +} + +static int hd3ss3220_get_vbus_supply(struct hd3ss3220 *hd3ss3220) +{ + struct device_node *hd3ss3220_node =3D hd3ss3220->dev->of_node; + const char *compat_string; + struct device_node *np; + int num_ports =3D 0; + int ret =3D 0; + int i =3D 0; + + num_ports =3D of_graph_get_port_count(hd3ss3220_node); + + for (i =3D 0; i < num_ports; i++) { + np =3D of_graph_get_remote_node(hd3ss3220_node, i, 0); + if (!np) { + dev_err(hd3ss3220->dev, "failed to get device node"); + ret =3D -ENODEV; + goto done; + } + + ret =3D of_property_read_string(np, "compatible", &compat_string); + if (ret) { + of_node_put(np); + dev_err(hd3ss3220->dev, "failed to get compatible string"); + ret =3D -ENODEV; + goto done; + } + + if (strcmp(compat_string, "usb-c-connector") =3D=3D 0) { + hd3ss3220->vbus =3D of_regulator_get(hd3ss3220->dev, np, "vbus"); + if (PTR_ERR(hd3ss3220->vbus) =3D=3D -ENODEV) + hd3ss3220->vbus =3D NULL; + + if (IS_ERR(hd3ss3220->vbus)) + ret =3D -ENODEV; + } + + of_node_put(np); + } + +done: + return ret; +} + static int hd3ss3220_probe(struct i2c_client *client) { struct typec_capability typec_cap =3D { }; @@ -354,6 +427,34 @@ static int hd3ss3220_probe(struct i2c_client *client) hd3ss3220->role_sw =3D usb_role_switch_get(hd3ss3220->dev); } =20 + hd3ss3220->id_gpiod =3D devm_gpiod_get_optional(hd3ss3220->dev, "id", GPI= OD_IN); + if (IS_ERR(hd3ss3220->id_gpiod)) + return PTR_ERR(hd3ss3220->id_gpiod); + + if (hd3ss3220->id_gpiod) { + hd3ss3220->id_irq =3D gpiod_to_irq(hd3ss3220->id_gpiod); + if (hd3ss3220->id_irq < 0) { + dev_err(hd3ss3220->dev, "failed to get ID IRQ\n"); + return hd3ss3220->id_irq; + } + + ret =3D devm_request_threaded_irq(hd3ss3220->dev, + hd3ss3220->id_irq, NULL, + hd3ss3220_id_isr, + IRQF_TRIGGER_RISING | + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, + dev_name(hd3ss3220->dev), hd3ss3220); + if (ret < 0) { + dev_err(hd3ss3220->dev, "failed to get id irq\n"); + return ret; + } + } + + ret =3D hd3ss3220_get_vbus_supply(hd3ss3220); + if (ret) + return dev_err_probe(hd3ss3220->dev, + PTR_ERR(hd3ss3220->vbus), "failed to get vbus\n"); + if (IS_ERR(hd3ss3220->role_sw)) { ret =3D PTR_ERR(hd3ss3220->role_sw); goto err_put_fwnode; --=20 2.34.1