From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC78F3126D7 for ; Sat, 11 Jul 2026 20:42:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802564; cv=none; b=QWoTAxHyNe7YfafChuAfy+0DZaV1jcuInUJqKYwVUT9r+pAHRVf37ed8HQnA80P6gHOGva1uTjYZJ/KNfcSnb4UhuSqMT7y8BEj6gbGdpHdm+BX7TibPIhI7b8tid4pe5/7w9pKoB9+TfDSQA3NEJUF5ws7D4OiafcO8Z1/jxD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802564; c=relaxed/simple; bh=rrLo2METxAPvW/Kvl+v935lLmIy60Gg/5rsQY3LkAQI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=b9Ki+x/WAEJUM9GWUb/+ZTsBLSXjMpL1L9CD4gddct+az2Hzq9nS79LIFBvEWtytyt3F0RP7Ux8SwLpoW+Ezy9VmuJ75fTffyAS1lyU2yRX7cEIBLWJ9En5raPqTE2VhRN2mBr6XfiaylYTUL88ChgYh3wB5fHqyfqcsRxZ09wQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZH1+HJlu; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZH1+HJlu" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-493b779003fso8928105e9.3 for ; Sat, 11 Jul 2026 13:42:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802560; x=1784407360; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ovaR5Pw/la2QK7dtVGwmXlwaYYgjdR7NRcQLElGlwYM=; b=ZH1+HJluLYVdZL5sYy0OaU5R1KkHaCN6IQNnn4Y80YEFDuSCjt1sgUXBtEKO431vJt a9MYF8nunimMvItseqbjS1a5ixCFCiiq+7j3LNn77hYp5+ZYci6Jj0stJO4uUn7MlQVQ qLxFc+IIWzLhGD8fs/ajD4kIVhlvyKOg28EO6HdQ+42MAf+U8PXCUyNRRm/MNna92ZW5 Ra90O5KHtd4pqT3t1DY0xgKWPvD6KTcpi4DKx7zZLysnfjAJyEMYOyxNN70MrshG6+Lc mIdRAevoJ8ifeH62J708oQcU9bXtp5pJrRunWIUDzLeMkv/i5TTc01U2RO6kdaMy6hKU TcLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802560; x=1784407360; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ovaR5Pw/la2QK7dtVGwmXlwaYYgjdR7NRcQLElGlwYM=; b=hJejGkccy0g/UuK8tNiHAvjTG1VpAyMdUThKhkzc9zp5/S71skzB1Bn25g3ZdaSMMn VrHjQ8pG5mS7h1jJoWbfw//lBb0WhfX5VywH7F/3Qk6Zwsx0j837HrKoXeD9T7xbN0Fh GeF0P/bR4EBx9kmf6xRDE+u41PuARPyzzGKZNyFS65RRD3g13Cj4Ep7FjDBTT2t2vkiO urUXwdBjRnh3AXjK7+ciIq/4L+N/8KfLJpx6opXFOjFkmGnFv71nG/gDMSetSvxaCmO1 EVKdwPmYbMepopam2sgOjqoAgdoP9Ai2yBRKvBLxCIfUKkiZS56AI4yv7I+inJVV7+lI vWIQ== X-Forwarded-Encrypted: i=1; AHgh+RqsRR9aXUKAFBeiSzt9T+tT7sd1bXgCR7UZ+fuIRUYCFsIDVMBrDeY5EJnfyfJ/A5031L6eUpaQzvWfiX4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3dOKMN/3ROisZsavt/aWHyTTiFMHuU+he6VyUhnaQB0zedtTl Eas4YDRK4buNl8TA23AC0A0WqfVL52m829nvPVcmU2B4wAROPVc5qxbE X-Gm-Gg: AfdE7cnCdYfrtA/gKYEYiIcsjvIBa2zsNoZe30zPbQaHBnjumE8wVHXofpE2B4gvLFw hawnHn2oLgT6+6Q0E8O4RLIG3QXPiajuwrFDJ3XUfOPRlGnnV8fJzrHuBTZQ4HaDS5687boajEK 7KAYoox+v/pnd9LQeiyZ58BHQLYq9IlSiONPMh9yJOa4WsaM8KGolWd2Q1clUnMJFHVMWlCgE/s 75QE6ylnxoCy3XBwwVZJ9Rd8/igqGmUZyCtdf72u5vb0MALwTzPuAxQLdi7YhEcZBAgWTISEiNg T/jUPOHEPIpU2o7c9BCob3uwhfh/eWuSlFy39IgQEFT63Yd22YOsun6QycTPG8fDRpfuv7+Lchq Rg4/Dbcqb7vXZoMcwI0uDh+xwWv1jCXoglidzXIJkfagDw/ox9wcW25ZuyQ5UFVaA1o+dSJ05fB Di6BewDXLW9LgagU1xjoRBxGY1l+mgSN5VVg== X-Received: by 2002:a05:600c:310f:b0:493:c601:3e23 with SMTP id 5b1f17b1804b1-493f87d5d1amr31985415e9.5.1783802560352; Sat, 11 Jul 2026 13:42:40 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:39 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 1/7] dt-bindings: phy: motorola,cpcap-usb: add chrg_det interrupt Date: Sat, 11 Jul 2026 23:42:04 +0300 Message-Id: <20260711204210.197144-2-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Document the optional CPCAP charger detection interrupt in the USB PHY binding. Update the example DTS to include the corresponding "chrg_det" interrupt name. Signed-off-by: Ivaylo Dimitrov Reviewed-by: Rob Herring (Arm) --- .../devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.y= aml b/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml index 0febd04a61f4..d6d52d21280c 100644 --- a/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml +++ b/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml @@ -20,6 +20,7 @@ properties: =20 interrupts: description: CPCAP PMIC interrupts used by the USB PHY + minItems: 9 items: - description: id_ground interrupt - description: id_float interrupt @@ -30,9 +31,11 @@ properties: - description: se1 interrupt - description: dm interrupt - description: dp interrupt + - description: charger detection interrupt =20 interrupt-names: description: Interrupt names + minItems: 9 items: - const: id_ground - const: id_float @@ -43,6 +46,7 @@ properties: - const: se1 - const: dm - const: dp + - const: chrg_det =20 io-channels: description: IIO ADC channels used by the USB PHY @@ -91,10 +95,10 @@ examples: interrupts-extended =3D < &cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0 &cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0 - &cpcap 48 1 + &cpcap 48 1 &cpcap 13 0 >; interrupt-names =3D "id_ground", "id_float", "se0conn", "vbusvld", - "sessvld", "sessend", "se1", "dm", "dp"; + "sessvld", "sessend", "se1", "dm", "dp", "chrg_d= et"; io-channels =3D <&cpcap_adc 2>, <&cpcap_adc 7>; io-channel-names =3D "vbus", "id"; vusb-supply =3D <&vusb>; --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 867A5317143 for ; Sat, 11 Jul 2026 20:42:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802566; cv=none; b=b6+nY4WMRUZLd8bOSgWsE5v47m9xnhFlmUsd58mrRJ7Dw/wQARcQzlSBiYq2pVYhPUT1ceJpiNeqRdWhZ6Zu6uA8XuCiGKZ0gtIKFrNr0rBrGnuYXqeeqGCGoSS/QZI8i/aMy9MPOp93TLOIUe/plU89cAGn7tYazPgAX96lf/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802566; c=relaxed/simple; bh=2WBH7acSpS1buhG5UF6DDL20aRHFmpdt5Bv97S7dCpI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kF9TBR3BljeUmMqezQUOab/YGGPqb3vUCUdgLvYRSEfKjqlL9YQ1b5o1hHJ7AKDnLp6/6AWTiAYDTMZsOQZC7UnbFySinQkBsTtVveLx/wFMlagBG3kNgZB/zyUSVxau0VwpGbkP+8+JcK9PpufFN9Fp+YE5n/cTIccisMAxC5g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lg2Cs4z+; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lg2Cs4z+" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-493f140ca8eso12816345e9.1 for ; Sat, 11 Jul 2026 13:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802562; x=1784407362; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=D4Wlb7YHseLBpG9ALxYAV8hvXubKFh0TjzQy9FHDQQY=; b=lg2Cs4z+D2eL+7PH0ehzPge8Gbz45/Kw5NYgNhr9JVOAqHsWqHbkCBATieYNOYceOL 2obR1dpz0WwZvfMKelubluBULLbqbW9vePBrPOYnBOA0QvWZu0hMlUKFqrk5nixDed7+ MUNK86vH6r2JOnvPSJ+6D4u773Yml/LBuqaUXnV/hyIE7NIWJVtj/HqaZfZzYsZrtmqF /DQZQTXlELRzp0sm+VVjMVCixkuaqiZWvZbcAFiaspUZaflbNIgmmxi3wqW3E0+q5bSZ xxM2K8WFwGvBqCFCLYp7bwS6qgl0McO2TdC/iQGp+A0zfw8zJoZwf+zxlYYKzHP/cz8d pZ7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802562; x=1784407362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=D4Wlb7YHseLBpG9ALxYAV8hvXubKFh0TjzQy9FHDQQY=; b=S73B6NSxl9xyy1TvqkR2ODaHVgokoSQ3LkCAcS+n+jeyMmr+ReNV9pfZgPOq49Way3 O1N0IlH3xiBtgMBG+Zo4xoBydMAj/iv3TGBa1iAdOhLtVBtTBaqDbPCvWBkDNHuZiMYA ijZkznit6nieq5VxLZmgdrOIIruvcZ3ITVc6+s4xk3Jz4fCjwNmJr35LfZU0eAEA7nP+ qo/IlM3zWjjG1DMlUyF7F5qrYQAKdTxXUcnzFBqhpMGk4YkCG4Sy9bjfFiy8Zmq6LVEp ZQkMXoWDATkwQjbUUXb8LLaEHOB3AqBZhn5rxxzk61VIRZVqm+cL+CNLteHT4odNWFlG PvoQ== X-Forwarded-Encrypted: i=1; AHgh+RpaLRuiic7k8rrlRL12HBvzIySsOgYetKNjASeS+M1OmHuTuz1NVQEntukAB0x0GybTnWC1gKJq6g3C/LY=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6bPlsKM12euBfyrDDC3QK7UnST60jwE+HuKW/E/Df+QYPJ4f9 6jqUFnQUnB8/XuTAmGmorhPueiOfOe0JEvMNIgiskQpFpBIr2D8ly7i3 X-Gm-Gg: AfdE7ck58uC5l2I6mCA61jJaxYLthtGtHok17pKTf2FGCFPH3mOiX0NJIFFbQ5Xqs/x Qac6jEXNbCwh7axEJck3Wmo5NRqVNycIfeKd6vbGHLUmkD4wv3d9He8cHe8ncB/oSUCfSLA2yR8 m1L+5FVi78DzcVaeo/3sd5Ny27xnx8FxLZMlKg3PCbuM3MNbCCx0d3IHr114Gx50EdMb96Z05GU ZLugo34KF58wXyBb8s6aPIfPYJVFHdYoYATvIru9N6FFUL51K+zs/+tBQ74oJA+QI50r+loHxI8 irRYSfph3X386dFqZmh53Mh6CxT+ogFemUI80rWWgnLrc7+y9/IevO+okNFdB5Q8Y+aegh5Pn1c ic5NXnTyoZRBwMUCV3f/jsT6sFAyv5cyOhXS9RTqCy2tyGQJ+UwKoHx0yON+9BywESaq+mOmJuE r0NfGbjWelvcL4DKXv72ajYhrqxa2Z/LmuYg== X-Received: by 2002:a05:600c:6d48:b0:490:9588:bdb6 with SMTP id 5b1f17b1804b1-493f88389c0mr25978355e9.33.1783802561934; Sat, 11 Jul 2026 13:42:41 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:41 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 2/7] dt-bindings: phy: motorola,cpcap-usb-phy: add optional safe pinctrl state Date: Sat, 11 Jul 2026 23:42:05 +0300 Message-Id: <20260711204210.197144-3-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Document the optional "safe" pinctrl state for the CPCAP USB PHY. Signed-off-by: Ivaylo Dimitrov Reviewed-by: Rob Herring (Arm) --- .../devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.y= aml b/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml index d6d52d21280c..25c36138bf66 100644 --- a/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml +++ b/Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml @@ -62,11 +62,13 @@ properties: vusb-supply: true =20 pinctrl-names: + minItems: 4 items: - const: default - const: ulpi - const: utmi - const: uart + - const: safe =20 mode-gpios: description: Optional GPIOs for configuring alternate modes @@ -106,6 +108,7 @@ examples: pinctrl-1 =3D <&usb_ulpi_pins>; pinctrl-2 =3D <&usb_utmi_pins>; pinctrl-3 =3D <&uart3_pins>; - pinctrl-names =3D "default", "ulpi", "utmi", "uart"; + pinctrl-4 =3D <&usb_safe_pins>; + pinctrl-names =3D "default", "ulpi", "utmi", "uart", "safe"; mode-gpios =3D <&gpio2 28 GPIO_ACTIVE_HIGH>, <&gpio1 0 GPIO_ACTIVE= _HIGH>; }; --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 50B1A31354F for ; Sat, 11 Jul 2026 20:42:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802568; cv=none; b=U8mmqZFRfCRTCbrlQt8WS+a+CJhri2+iKY+fXNDu7BtCxPKxuSYIxI7WSVyQ6G4z1rXeP4TLO+kA0DPvnHYZX1r7LIMcF4ztFSh+m9tj9tkIcFpGSNYE9y3XdNkvcF2grcDt3d87KfKQvVszkp6RJd4YD0x+4G1WKFeXNMEQN1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802568; c=relaxed/simple; bh=Ks2eP/cpFMNIiN5iTQ0FeCLHneQLovfhgH+//9ums1M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=N+8lMLad7fAsyR/XLwhhXZBoqXTMrkiNV/ThPhx3HgpqSupnZLjWI57Eob6PWl95jFz4vEHEsv+G458K8X3MESmKrK0k25JEsNfVZKul+HzNbAQqzZVjA1CuU/gwf66QVA4jL8FANgCnTHMOLwyHGDFfHUvm+SarftR1FGWGPVg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bvNcRQTV; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bvNcRQTV" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-493c7902f47so17912565e9.1 for ; Sat, 11 Jul 2026 13:42:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802565; x=1784407365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OR+gVYl7lNIahaA/xS643KgVQohpeipjmcrGmazJ6MU=; b=bvNcRQTVVw8n7mMb16mUwF1RBVaHYV+09ypgkxTkb1FOPa6kuMof7CgQv01ABJeDKW tvPKp0HatvIkDf8fjvxfIwsBfQQeupcXo3ufOnXhw8VbuxEINFk7Qo3tIzdV3Tc5Pxyl CAQ/IjJfbzRwQGYZPx+ME8bSVhR1vt/m7jZKKmlyatqChpD3KaQr7MVcGBg+8v5+zFYL eZUIW/jh+zTENTDlBJpzN4pzZHoATWhJAo1Hz1YDnygOakMjnFzPmYZpJBuReJYhdT2Q DM8U1wZ1SCyATKfSSI0gfmMrNsW4pUczv0EL8davQJbS0JCJiTPtadxPHRlNuj7X9/f9 t1Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802565; x=1784407365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OR+gVYl7lNIahaA/xS643KgVQohpeipjmcrGmazJ6MU=; b=RoryVkoOIk6aHcuE7J+z36xjTlVDAlSYgqk2cqB9OvH0npH9klL/ut2GITnJQM1DbX CDBOvwEqmbrr0QfNJMwgdsM0+FH9+nGGqjR3kcTnabPRxwwbSdc4cmOE8ggTLWP65efU uskD4dUUhc9hJfKDqZbhwNChd72UFf4EMNxuYS4O6c4K/PtMSDKkUcbVYvFPYrXOv30R ljLPokYN4FlGslSMDNxZZ4SjtOq2+17OUkxsyIFznWoq+57xpSwQXhjdHT19/UwY1GuV dh6iPv2cY0+E74Myzn8dys04HvM9RyUZAojaHoKw70JY5OjPAtCEyFlX0veLOnGTTB9y 3LJg== X-Forwarded-Encrypted: i=1; AHgh+RouUJjtqpa70Mr/V65mqU3muL5irlT0HNgMDGF3quFGU9/si0OQ7KBtfHtkXIZ9USoyrVNXOYYe2OKEaZI=@vger.kernel.org X-Gm-Message-State: AOJu0YxSH0xfWXkbwGTN0R+fxFW7sGuUcDlsA1xyPGULe0BJsmVlUrI6 4YFjcQHNCC0eI/j349Go7DzDDaRUUDtUwBrso7xL+U9N4gISzTZKhmj9 X-Gm-Gg: AfdE7clFRDOiiGUdqabvuhE4Zi6Wu4OxVw+5d71ZmZUE2hL6aINM6W8TrLns16lhjec 6dDwlf80pwHEpX/V5cPCOE9692M+HCp9TWNlrl+QjtMk3KgYCfPS45MJuNapUui8ondhiDt2v9L 6Js+oPwGtEubMfVB1S1lo7Y4Y+K2fhm/9qjFLaog/VrYcfEa53ypCR+i69pe5IPuQVPEM5HizAM +7zswqd0xdkMXE1eWdV5Mv5goECOLCvuLdKDgfS3U1M6OGqm+yOVnYR8K7F55bNHsWIAhOyOSrB T845n2BbCjZGqvlOWN6SUB9tqq0dGI7tR9PdqIKX0IU/9xPBMeH6K+9NC8JheguAI5K2ch3f0mu W+pgBFdrh8gNAIwtQBNcSW6m7DTgmsR0DWIMek+e3fiVIrQcsTWLA8L3E8l+6qHJhr/FPEqYy3B OBq7CGmIWxE/TQ2XVzJ+sZ7AGWQurFcYXNTNipTLWIfHwv X-Received: by 2002:a05:600c:46ce:b0:493:bc92:ef45 with SMTP id 5b1f17b1804b1-493f8820951mr35073795e9.24.1783802564720; Sat, 11 Jul 2026 13:42:44 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:43 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 3/7] phy: cpcap-usb: fix IRQ teardown race Date: Sat, 11 Jul 2026 23:42:06 +0300 Message-Id: <20260711204210.197144-4-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" there is a race between IRQ handler and remove: IRQ thread: ddata->active =3D=3D 1 remove(): ddata->active =3D 0 cancel_delayed_work_sync() IRQ thread: schedule_delayed_work() The IRQ handler can therefore queue detect work after it has been canceled during remove(). Free the IRQ handlers before canceling detect work to prevent new work from being scheduled during teardown. Reported by Sashiko Signed-off-by: Ivaylo Dimitrov --- drivers/phy/motorola/phy-cpcap-usb.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/ph= y-cpcap-usb.c index 7cb020dd3423..741145c89e5b 100644 --- a/drivers/phy/motorola/phy-cpcap-usb.c +++ b/drivers/phy/motorola/phy-cpcap-usb.c @@ -393,6 +393,19 @@ static int cpcap_usb_init_interrupts(struct platform_d= evice *pdev, return 0; } =20 +static void cpcap_usb_fini_interrupts(struct platform_device *pdev, + struct cpcap_phy_ddata *ddata) +{ + int i, irq; + + for (i =3D 0; i < ARRAY_SIZE(cpcap_phy_irqs); i++) { + irq =3D platform_get_irq_byname(pdev, cpcap_phy_irqs[i]); + + if (irq >=3D 0) + devm_free_irq(ddata->dev, irq, ddata); + } +} + /* * Optional pins and modes. At least Motorola mapphone devices * are using two GPIOs and dynamic pinctrl to multiplex PHY pins @@ -691,6 +704,8 @@ static void cpcap_usb_phy_remove(struct platform_device= *pdev) int error; =20 atomic_set(&ddata->active, 0); + cpcap_usb_fini_interrupts(pdev, ddata); + cancel_delayed_work_sync(&ddata->detect_work); error =3D cpcap_usb_set_uart_mode(ddata); if (error) dev_err(ddata->dev, "could not set UART mode\n"); @@ -698,7 +713,6 @@ static void cpcap_usb_phy_remove(struct platform_device= *pdev) cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); =20 usb_remove_phy(&ddata->phy); - cancel_delayed_work_sync(&ddata->detect_work); regulator_disable(ddata->vusb); } =20 --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05E993176E0 for ; Sat, 11 Jul 2026 20:42:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802573; cv=none; b=fDUiu+3kFZxSrQtnQCdXBh8yknsW+OtI3Vvm+o49+9+ieXf/XtxmFl/0JaNOdJ0VP+HT/mcfGq//jplLMfA9jMJCA/BKDTPFzdqpr7jDoXhMkVmB8Zv50QzwfSt6LcHgT6QhXS08fzYqIf85GRsrXcKbD5PfPY693uD3h9/6omY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802573; c=relaxed/simple; bh=UP73jtLlN1AuLWDQgF7AftXRUzG4kZ1AeeUPGQ4oI3A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Stm93Ge7eVzn294Ty8HscDNvIDbO0DCh3sqctAe8ohGritWjifO5bjaBiKvCExLWueLxc2ocAJBRzRG1YpzNt3KYTz2064ADcwnBhhaOjFDfrB0NWBetojbq9QyFKhtSUPl5VLINX9eJJ3eeR4mLygnwdgp3/FPfkoi90Ohuo/w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=smLPTRQ2; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="smLPTRQ2" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4921eed3fa2so17981515e9.0 for ; Sat, 11 Jul 2026 13:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802566; x=1784407366; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5lKBZDbQ54EDG3mIoiRjOcv2/ppN6VDq89EVU7M3vL0=; b=smLPTRQ2SlfQ5Bq+4WcD1744gRSDa8Wq25Mk2TLdkGLiePLYGESgq8e7XvNJon0RBc lUGh5T+Bg10edjbTTvXQw51Htd2NU5hnzT+ErObMMFF7CKXKoZ0JS7FFlF7pkU0sGe7s 2vWOPyjFNjXd10AzzIULTpnlorIc3RLKgF3Z+bXt6JHls7rSMbWA/S7T00BPAWY40vW9 Ujaw3waUi1pO9n57+FDxcjWMQmF3JMwGeSIbI67t3iYe5EYreHjCymOyceGtw+pBw8qF D1I0dqW/YvX/lsAaVHsg4Or4YwTylaw0caQ6eFOH6xFLLSzdXU9IMxYw63jMXUxNvcmk Np8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802566; x=1784407366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5lKBZDbQ54EDG3mIoiRjOcv2/ppN6VDq89EVU7M3vL0=; b=JsjBrvliTeIJr174XUOHMRlivfSzcrfhLC/gmKEADvRbR11wvAWDRq8cLq66zmS1Bz javWwhkOArtR4K7itE7Pid9gRAGxMts3/wiBWrF2a5mvBn7rV2FMUijwR3aFL5AgRCGC ESCDmQS3SESVxgllUGGUymx44k9ueSyOEQFl6aYO3P4zxqB+kvsqVpBkXG3kbymN0FGi 3ehnRDedjvauYCm2Aq6PKvpRp3AvW8obxSL18XH0+gKE6+NsPN7v8cfvHjGgkBJ/GbWi RfjhvY8FdfAeGWYwjXfTa9RFJ0bLnicjuNkTsGgaGWZf37quCO3wggUSXZKVUEohP8jU n0gA== X-Forwarded-Encrypted: i=1; AHgh+RrKjCtmAqWuf8S+rVM4L3Rb9rZotFCi806Sa+acA7GccvMW7jpqyjqwmoC8ECFHtl0VmDNjppI1XXDGxow=@vger.kernel.org X-Gm-Message-State: AOJu0YzdaB8lrMbVD5YQINPRNp0kDiRfq9YuzqRpH264v65VZ3SZKicM 1kI7/gL6JiWoa3k8Iif0TudF5ICV8s+25RVttjAGXOgD0orbCiMPm/Hw X-Gm-Gg: AfdE7cmZQoH9lnHGIYzKj5Pv2i6yoIW02704haI2Hr25zNEGXZofi7V6/Y/VqR05Fi6 ZIa7nBKnBGu1gY0gM0ezWlrkcVH/KJWfbzRv7nVHOzgI7LaGrzjBnMy6f41UUEsW+vm8/xi9b5m kaofYMvRBEFoQdG2huNxhBxUSlHrj2oz1Gswm6wc7EmGzInZVO/eKGOhRLz1rW+pxVEkAdKDVKY PgxgyuGZnstcD/yF06KRB3AUjXqYqEko6yFErNr0zeRYbONUTVWrtY2ZbLC/QhBYbBgEfDxOlF0 sljzrJp/Bal2n6zB0lDBt6dHhWczbhLTtzubXq16Lg7PNq5PUDVdryBFVnRiqxCWHw7tbugLyhU y4lVVpcFB6IoKYZKqmp9isfZ3lmvvFiqWYQEMaK24hMZcbD2C0WSHi6Ku+D/k7innE7mM+sk2GS xDLtyGD7AVMPaRaO6tH2OQaRyyzW8ViFXXJQ== X-Received: by 2002:a05:600c:64c5:b0:493:bc31:b2ae with SMTP id 5b1f17b1804b1-493f87e48a6mr34836835e9.10.1783802566328; Sat, 11 Jul 2026 13:42:46 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:45 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 4/7] phy: cpcap-usb: add DCP detection and make UART idle mode optional Date: Sat, 11 Jul 2026 23:42:07 +0300 Message-Id: <20260711204210.197144-5-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Handle DCP separately from USB host connections using CPCAP charger detection status. Make the existing idle UART mode optional via the "enable_uart" module parameter. When disabled (default), the PHY remains in its USB/charger detection configuration while idle. Also initialize the PHY into the baseline configuration required for reliable charger detection during probe. Use the optional "safe" pinctrl state before switching between modes to avoid glitches on USB or UART lines. Note: Enabling UART idle mode increases idle power consumption (by 25mW on droid4). Signed-off-by: Ivaylo Dimitrov # Conflicts: # drivers/phy/motorola/phy-cpcap-usb.c --- drivers/phy/motorola/phy-cpcap-usb.c | 301 +++++++++++++++++++++------ 1 file changed, 238 insertions(+), 63 deletions(-) diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/ph= y-cpcap-usb.c index 741145c89e5b..2d770ff19e93 100644 --- a/drivers/phy/motorola/phy-cpcap-usb.c +++ b/drivers/phy/motorola/phy-cpcap-usb.c @@ -110,6 +110,15 @@ enum cpcap_gpio_mode { CPCAP_OTG_DM_DP, }; =20 +enum cpcap_mode { + CPCAP_UNKNOWN, + CPCAP_IDLE, + CPCAP_CHARGER, + CPCAP_USB, + CPCAP_USB_HOST, + CPCAP_DOCK, +}; + struct cpcap_phy_ddata { struct regmap *reg; struct device *dev; @@ -119,15 +128,19 @@ struct cpcap_phy_ddata { struct pinctrl_state *pins_ulpi; struct pinctrl_state *pins_utmi; struct pinctrl_state *pins_uart; + struct pinctrl_state *pins_safe; struct gpio_desc *gpio[2]; struct iio_channel *vbus; struct iio_channel *id; struct regulator *vusb; atomic_t active; - unsigned int vbus_provider:1; - unsigned int docked:1; + enum cpcap_mode mode; }; =20 +static bool cpcap_enable_uart; +module_param_named(enable_uart, cpcap_enable_uart, bool, 0644); +MODULE_PARM_DESC(enable_uart, + "Enable UART on the USB connector while idle (increases power consumpti= on)"); static bool cpcap_usb_vbus_valid(struct cpcap_phy_ddata *ddata) { int error, value =3D 0; @@ -196,8 +209,9 @@ static int cpcap_phy_get_ints_state(struct cpcap_phy_dd= ata *ddata, return 0; } =20 -static int cpcap_usb_set_uart_mode(struct cpcap_phy_ddata *ddata); +static int cpcap_usb_set_idle_mode(struct cpcap_phy_ddata *ddata); static int cpcap_usb_set_usb_mode(struct cpcap_phy_ddata *ddata); +static int cpcap_usb_set_dcp_mode(struct cpcap_phy_ddata *ddata); =20 static void cpcap_usb_try_musb_mailbox(struct cpcap_phy_ddata *ddata, enum musb_vbus_id_status status) @@ -228,7 +242,7 @@ static void cpcap_usb_detect(struct work_struct *work) vbus =3D cpcap_usb_vbus_valid(ddata); =20 /* We need to kick the VBUS as USB A-host */ - if (s.id_ground && ddata->vbus_provider) { + if (s.id_ground && ddata->mode =3D=3D CPCAP_USB_HOST) { dev_dbg(ddata->dev, "still in USB A-host mode, kicking VBUS\n"); =20 cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); @@ -243,7 +257,7 @@ static void cpcap_usb_detect(struct work_struct *work) return; } =20 - if (vbus && s.id_ground && ddata->docked) { + if (vbus && s.id_ground && ddata->mode =3D=3D CPCAP_DOCK) { dev_dbg(ddata->dev, "still docked as A-host, signal ID down\n"); =20 cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); @@ -252,15 +266,14 @@ static void cpcap_usb_detect(struct work_struct *work) } =20 /* No VBUS needed with docks */ - if (vbus && s.id_ground && !ddata->vbus_provider) { + if (vbus && s.id_ground && ddata->mode !=3D CPCAP_USB_HOST) { dev_dbg(ddata->dev, "connected to a dock\n"); =20 - ddata->docked =3D true; - error =3D cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; =20 + ddata->mode =3D CPCAP_DOCK; cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); =20 /* @@ -274,17 +287,13 @@ static void cpcap_usb_detect(struct work_struct *work) return; } =20 - if (s.id_ground && !ddata->docked) { + if (s.id_ground && ddata->mode !=3D CPCAP_DOCK) { dev_dbg(ddata->dev, "id ground, USB host mode\n"); =20 - ddata->vbus_provider =3D true; - error =3D cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; =20 - cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); - error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, CPCAP_BIT_VBUSSTBY_EN | CPCAP_BIT_VBUSEN_SPI, @@ -292,38 +301,74 @@ static void cpcap_usb_detect(struct work_struct *work) if (error) goto out_err; =20 + ddata->mode =3D CPCAP_USB_HOST; + cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); + return; } =20 - error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, - CPCAP_BIT_VBUSSTBY_EN | - CPCAP_BIT_VBUSEN_SPI, 0); - if (error) - goto out_err; - vbus =3D cpcap_usb_vbus_valid(ddata); =20 - /* Otherwise assume we're connected to a USB host */ - if (vbus) { - dev_dbg(ddata->dev, "connected to USB host\n"); - error =3D cpcap_usb_set_usb_mode(ddata); + /* Check if we're connected to a USB host or charger */ + if (vbus && ddata->mode !=3D CPCAP_USB_HOST) { + enum cpcap_mode new_mode; + + if (s.se1) + new_mode =3D CPCAP_CHARGER; + else if (!s.dm && !s.dp) + new_mode =3D CPCAP_USB; + else { + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC2, + CPCAP_BIT_USBXCVREN | + CPCAP_BIT_UARTMUX0 | + CPCAP_BIT_EMUMODE0, 0); + if (error) + goto out_err; + + schedule_delayed_work(&ddata->detect_work, + msecs_to_jiffies(100)); + return; + } + + dev_dbg(ddata->dev, "connected to %s\n", + s.se1 ? "DCP" : "USB host"); + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, + CPCAP_BIT_VBUSSTBY_EN | + CPCAP_BIT_VBUSEN_SPI, 0); if (error) goto out_err; - cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_VALID); + + if (new_mode =3D=3D CPCAP_CHARGER) + error =3D cpcap_usb_set_dcp_mode(ddata); + else + error =3D cpcap_usb_set_usb_mode(ddata); + + if (error) + goto out_err; + + ddata->mode =3D new_mode; + if (ddata->mode =3D=3D CPCAP_USB) + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_VALID); =20 return; } =20 - ddata->vbus_provider =3D false; - ddata->docked =3D false; - cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); + if (ddata->mode =3D=3D CPCAP_IDLE) + return; =20 - /* Default to debug UART mode */ - error =3D cpcap_usb_set_uart_mode(ddata); + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, + CPCAP_BIT_VBUSSTBY_EN | + CPCAP_BIT_VBUSEN_SPI, 0); + if (error) + goto out_err; + + error =3D cpcap_usb_set_idle_mode(ddata); if (error) goto out_err; =20 - dev_dbg(ddata->dev, "set UART mode\n"); + ddata->mode =3D CPCAP_IDLE; + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); =20 return; =20 @@ -424,43 +469,84 @@ static int cpcap_usb_gpio_set_mode(struct cpcap_phy_d= data *ddata, return 0; } =20 -static int cpcap_usb_set_uart_mode(struct cpcap_phy_ddata *ddata) +static int cpcap_usb_set_safe_mode(struct cpcap_phy_ddata *ddata) { int error; =20 /* Disable lines to prevent glitches from waking up mdm6600 */ error =3D cpcap_usb_gpio_set_mode(ddata, CPCAP_UNKNOWN_DISABLED); if (error) - goto out_err; + return error; =20 - if (ddata->pins_uart) { - error =3D pinctrl_select_state(ddata->pins, ddata->pins_uart); - if (error) - goto out_err; + if (ddata->pins_safe) { + error =3D pinctrl_select_state(ddata->pins, ddata->pins_safe); + if (error) { + dev_err(ddata->dev, "could not set safe mode: %i\n", + error); + } } =20 + return error; +} + +static int cpcap_usb_set_idle_mode(struct cpcap_phy_ddata *ddata) +{ + int error; + unsigned int val; + bool enable_uart =3D cpcap_enable_uart; + + error =3D cpcap_usb_set_safe_mode(ddata); + if (error) + return error; + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC1, + CPCAP_BIT_DP150KPU | + CPCAP_BIT_DP1K5PU | + CPCAP_BIT_DM1K5PU | + CPCAP_BIT_DPPD | + CPCAP_BIT_DMPD | CPCAP_BIT_VBUSPD, + CPCAP_BIT_DP150KPU | CPCAP_BIT_VBUSPD); if (error) goto out_err; =20 - error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC2, - 0xffff, CPCAP_BIT_UARTMUX0 | - CPCAP_BIT_EMUMODE0); + val =3D CPCAP_BIT_USBSUSPEND; + + if (enable_uart) + val |=3D (CPCAP_BIT_UARTMUX0 | CPCAP_BIT_EMUMODE0); + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC2, 0xffff, val); if (error) goto out_err; =20 - error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, 0x7fff, - CPCAP_BIT_IDPU_SPI); + val =3D CPCAP_BIT_VBUSSTBY_EN | + CPCAP_BIT_VBUSPD_SPI | + CPCAP_BIT_DMPD_SPI | + CPCAP_BIT_DPPD_SPI | + CPCAP_BIT_PU_SPI | + CPCAP_BIT_IDPU_SPI | + CPCAP_BIT_ULPI_SPI_SEL; + + if (!enable_uart) + val |=3D CPCAP_BIT_SUSPEND_SPI; + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, 0x7fff, val); if (error) goto out_err; =20 - /* Enable UART mode */ error =3D cpcap_usb_gpio_set_mode(ddata, CPCAP_DM_DP); if (error) goto out_err; =20 + if (enable_uart && ddata->pins_uart) { + error =3D pinctrl_select_state(ddata->pins, ddata->pins_uart); + if (error) + goto out_err; + } + + dev_dbg(ddata->dev, "set %s mode\n", enable_uart ? "UART" : "IDLE"); + return 0; =20 out_err: @@ -473,21 +559,10 @@ static int cpcap_usb_set_usb_mode(struct cpcap_phy_dd= ata *ddata) { int error; =20 - /* Disable lines to prevent glitches from waking up mdm6600 */ - error =3D cpcap_usb_gpio_set_mode(ddata, CPCAP_UNKNOWN_DISABLED); + error =3D cpcap_usb_set_safe_mode(ddata); if (error) return error; =20 - if (ddata->pins_utmi) { - error =3D pinctrl_select_state(ddata->pins, ddata->pins_utmi); - if (error) { - dev_err(ddata->dev, "could not set usb mode: %i\n", - error); - - return error; - } - } - error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC1, CPCAP_BIT_VBUSPD, 0); if (error) @@ -503,11 +578,23 @@ static int cpcap_usb_set_usb_mode(struct cpcap_phy_dd= ata *ddata) goto out_err; =20 error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC2, - CPCAP_BIT_USBXCVREN, + CPCAP_BIT_USBXCVREN | + CPCAP_BIT_UARTMUX0 | + CPCAP_BIT_EMUMODE0, CPCAP_BIT_USBXCVREN); if (error) goto out_err; =20 + if (ddata->pins_utmi) { + error =3D pinctrl_select_state(ddata->pins, ddata->pins_utmi); + if (error) { + dev_err(ddata->dev, "could not set usb mode: %i\n", + error); + + return error; + } + } + /* Enable USB mode */ error =3D cpcap_usb_gpio_set_mode(ddata, CPCAP_OTG_DM_DP); if (error) @@ -521,6 +608,38 @@ static int cpcap_usb_set_usb_mode(struct cpcap_phy_dda= ta *ddata) return error; } =20 +static int cpcap_usb_set_dcp_mode(struct cpcap_phy_ddata *ddata) +{ + int error; + + error =3D cpcap_usb_set_safe_mode(ddata); + if (error) + return error; + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC2, + CPCAP_BIT_USBXCVREN | + CPCAP_BIT_UARTMUX0 | + CPCAP_BIT_EMUMODE0, 0); + if (error) + goto out_err; + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, + CPCAP_BIT_SUSPEND_SPI, 0); + if (error) + goto out_err; + + error =3D cpcap_usb_gpio_set_mode(ddata, CPCAP_DM_DP); + if (error) + goto out_err; + + return 0; + +out_err: + dev_err(ddata->dev, "%s failed with %i\n", __func__, error); + + return error; +} + static int cpcap_usb_init_optional_pins(struct cpcap_phy_ddata *ddata) { ddata->pins =3D devm_pinctrl_get(ddata->dev); @@ -550,8 +669,11 @@ static int cpcap_usb_init_optional_pins(struct cpcap_p= hy_ddata *ddata) ddata->pins_uart =3D NULL; } =20 - if (ddata->pins_uart) - return pinctrl_select_state(ddata->pins, ddata->pins_uart); + ddata->pins_safe =3D pinctrl_lookup_state(ddata->pins, "safe"); + if (IS_ERR(ddata->pins_safe)) { + dev_info(ddata->dev, "safe pins not configured\n"); + ddata->pins_safe =3D NULL; + } =20 return 0; } @@ -605,6 +727,59 @@ static int cpcap_usb_init_iio(struct cpcap_phy_ddata *= ddata) return error; } =20 +static int cpcap_usb_init_usb(struct cpcap_phy_ddata *ddata) +{ + struct cpcap_usb_ints_state s; + int error; + int mask; + + error =3D cpcap_phy_get_ints_state(ddata, &s); + if (error) + return error; + + error =3D cpcap_usb_set_safe_mode(ddata); + if (error) + return error; + + /* + * Do not touch DM/DP PD as this will break charger detection if charger + * is connected before we detect it. + */ + if (s.se1) { + mask =3D CPCAP_BIT_VBUSEN_SPI | CPCAP_BIT_VBUSPU_SPI | + CPCAP_BIT_SUSPEND_SPI | CPCAP_BIT_ULPI_SPI_SEL; + } else { + mask =3D CPCAP_BIT_VBUSEN_SPI | CPCAP_BIT_VBUSPU_SPI | + CPCAP_BIT_DMPD_SPI | CPCAP_BIT_DPPD_SPI | + CPCAP_BIT_SUSPEND_SPI | CPCAP_BIT_PU_SPI | + CPCAP_BIT_ULPI_SPI_SEL; + } + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, mask, + CPCAP_BIT_ULPI_SPI_SEL); + if (error) + return error; + + /* + * Configure safe DP/DM termination state. + * + * Vendor kernel uses: + * DP150KPU =3D enabled + * all USB pullups/pulldowns =3D disabled + */ + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC1, + CPCAP_BIT_DP150KPU | + CPCAP_BIT_DP1K5PU | + CPCAP_BIT_DM1K5PU | + CPCAP_BIT_DPPD | + CPCAP_BIT_DMPD, + CPCAP_BIT_DP150KPU); + if (error) + return error; + + return cpcap_usb_gpio_set_mode(ddata, CPCAP_DM_DP); +} + #ifdef CONFIG_OF static const struct of_device_id cpcap_usb_phy_id_table[] =3D { { @@ -638,6 +813,7 @@ static int cpcap_usb_phy_probe(struct platform_device *= pdev) if (!otg) return -ENOMEM; =20 + ddata->mode =3D CPCAP_UNKNOWN; ddata->dev =3D &pdev->dev; ddata->phy.dev =3D ddata->dev; ddata->phy.label =3D "cpcap_usb_phy"; @@ -682,6 +858,10 @@ static int cpcap_usb_phy_probe(struct platform_device = *pdev) if (error) goto out_reg_disable; =20 + error =3D cpcap_usb_init_usb(ddata); + if (error) + goto out_reg_disable; + error =3D cpcap_usb_init_interrupts(pdev, ddata); if (error) goto out_reg_disable; @@ -701,17 +881,12 @@ static int cpcap_usb_phy_probe(struct platform_device= *pdev) static void cpcap_usb_phy_remove(struct platform_device *pdev) { struct cpcap_phy_ddata *ddata =3D platform_get_drvdata(pdev); - int error; =20 atomic_set(&ddata->active, 0); cpcap_usb_fini_interrupts(pdev, ddata); cancel_delayed_work_sync(&ddata->detect_work); - error =3D cpcap_usb_set_uart_mode(ddata); - if (error) - dev_err(ddata->dev, "could not set UART mode\n"); - + cpcap_usb_set_idle_mode(ddata); cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); - usb_remove_phy(&ddata->phy); regulator_disable(ddata->vusb); } --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C58813128D4 for ; Sat, 11 Jul 2026 20:42:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802573; cv=none; b=Sr54ae3esH4disGUWjXVNSCpi04E2UHIQkd4nKA3DxCqc4zLHavhKySkKs+n6MQQNWB9Ad1IutConsDkTZPU6pu7K62MqdjYb2ME7b/nWmGqb76bS9XFU6KqAGD9Fbc+QuxFBiWtJxzU6N3GJ1vi3Hi8BEbwMy/iQR5ETHiUp2U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802573; c=relaxed/simple; bh=keh7k5g99s9JFAlPqxaGS+ggiP+D3wffEqkcASw/DCs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Uctxvc8A6WvFGOfQRaG/77n6MK0LY7/sF3rIik/j6+w/ANMEYvcgjDKf0cWAsoiRJ9b7jcG6ZThmbxN+32/vUDcMfnXwk6CFpx1KZcV9vG0ydJUluDOrKN4aUfB91Om3zb0y1wnXtB/wbMTzBhfRilcu02uK2/KhvkXMb0IVh1M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qtzeryNK; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qtzeryNK" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-493ec555a26so13753525e9.0 for ; Sat, 11 Jul 2026 13:42:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802568; x=1784407368; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1bSIbMOG7dMBWAgtFylVuhg8C83qfhMuIPQBzICKRrc=; b=qtzeryNKQwbRA3kgmXQEil/yVhyupYXX600fJLd46ydEjBHn+UUtGqlngxblws8Y7P BHwg+fOITfb6GMck8STTAkI0+tbkfiPv35q8hiIjnV2jcpbJFY3CWYJSu4gszj8+uTCe InOExOtd0Z84+ouhdeQXxQnN0tfaYaEEgUQetrZsRklqw7jQWehAPJiN/Kp+iSQFCZ/Y bkRxcJ9tRcRTTWYJTBNBqxJ39K66UckipfVMzu/oQN4tVBmpWPjvhcnqfgzy30tyYS9Z tY5wTgPsO9qBdtiqJKYw+JhZ1mQvPsEvvYxyCixUj9yoFmlpQrBpEy7HoAsya1QV4SNa /KPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802568; x=1784407368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1bSIbMOG7dMBWAgtFylVuhg8C83qfhMuIPQBzICKRrc=; b=NsY9mxv9X63j92KREUgwXCpyftVn9gtBjoRrzwnQuRd0FAEwP4/2umNZn6iGnIwqQp LKInhdx+BYyYaRD5GN+QEBTN8oeMU+udUj86Nps22ZkEKK502Vt1eb+3z9pPKA2C0KHT HkFE5M2axi6k5bgyD5PdcdhymvsbtBN5REa5aMu5N1uNWbpkEce9ZhIwY/UtYuoDJeku edO1NMzgwgIANFfHvy2ey2KcCS5h+JGCYjy47Yx4ImX0rxe23ZT6WMgNh7QyTQNftRWs J0dcFvHzofDVZtk/bbupKYuxkHocKfhl1hzI5em7EI8UxFbzTeOX1CVI2xgZD49H6K46 /Ckg== X-Forwarded-Encrypted: i=1; AHgh+RpBNo6QZWUcCo+IBcp0LtJWiRYf2H9xJF73ZKj+BYOUvV3boGp505M4HWcArWvw+zZnd8QWzQrMyET1EjY=@vger.kernel.org X-Gm-Message-State: AOJu0YxLjbK0HtkWqm8KUyVej+RzaUEEycXXkiM3YDLvKsCES+4x/WZR Q+XjUd8TrnKF7F4IQpoelbB/1iNz6k72ugcVgQqZ+//gLz/3MVWz1R8U X-Gm-Gg: AfdE7clB2wtfW/FP2I40GVGesIhVVUkCT2HZUe7Hb5fQ62RM71jbTH2kU9NlzM12HI8 NhQuJiymFx2Rn2u/1KZzMsJQonoF+tQFMkENVNkmVdFmmUHo5kXm4s5Jie827Kpal95zGem9evl 43dM02F2B4qh07AwxQKqZ7Y3PHKLpqInZ+ZOisiD+JqKlJacFm2rr+eGPYqHPKCIV9Ms+bFFsCf B9yUatcnWxbFkVqjqyciUnMSrhD3/8/QvwjeDtj6bLQdNSx0PGaGpQQY5E8F7MO8bjMIpKBpSR0 NxeTzMNWYgOuuG8D8ZAlabkFtdjkYmc76k7CdZVoxU40DX9Q0odNFd238S8MZ3Avk/8RVj9SoWe 1fVRcexL5klWabhK4d/DGZwDYw3ryQxi3y9VlEdJyMj49GQil4EAbx6HnNsyDak2DWnYbbOV/bj GWRQQrZr5vwMvYGv2sEKTJB87t7LwhaxEAaQ== X-Received: by 2002:a05:600c:2d56:b0:493:f639:9b2f with SMTP id 5b1f17b1804b1-493f8834f8amr22456715e9.39.1783802568144; Sat, 11 Jul 2026 13:42:48 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:47 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 5/7] phy: cpcap-usb: add extcon support Date: Sat, 11 Jul 2026 23:42:08 +0300 Message-Id: <20260711204210.197144-6-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Register an Extcon device and report the detected cable state. The driver already determines the type of cable attached during USB cable detection. Export the detected state through the Extcon framework so other drivers can consume it using a standard kernel interface. Signed-off-by: Ivaylo Dimitrov --- drivers/phy/motorola/phy-cpcap-usb.c | 69 ++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/ph= y-cpcap-usb.c index 2d770ff19e93..23d8709a0026 100644 --- a/drivers/phy/motorola/phy-cpcap-usb.c +++ b/drivers/phy/motorola/phy-cpcap-usb.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -123,6 +124,7 @@ struct cpcap_phy_ddata { struct regmap *reg; struct device *dev; struct usb_phy phy; + struct extcon_dev *edev; struct delayed_work detect_work; struct pinctrl *pins; struct pinctrl_state *pins_ulpi; @@ -135,12 +137,23 @@ struct cpcap_phy_ddata { struct regulator *vusb; atomic_t active; enum cpcap_mode mode; + int cable; }; =20 static bool cpcap_enable_uart; module_param_named(enable_uart, cpcap_enable_uart, bool, 0644); MODULE_PARM_DESC(enable_uart, "Enable UART on the USB connector while idle (increases power consumpti= on)"); + +/* List of detectable cables */ +static const unsigned int cpcap_extcon_cables[] =3D { + EXTCON_USB, + EXTCON_USB_HOST, + EXTCON_CHG_USB_SDP, + EXTCON_CHG_USB_DCP, + EXTCON_NONE, +}; + static bool cpcap_usb_vbus_valid(struct cpcap_phy_ddata *ddata) { int error, value =3D 0; @@ -226,6 +239,46 @@ static void cpcap_usb_try_musb_mailbox(struct cpcap_ph= y_ddata *ddata, __func__, error); } =20 +static void cpcap_usb_set_extcon(struct cpcap_phy_ddata *ddata) +{ + int cable; + + switch (ddata->mode) { + case CPCAP_CHARGER: + cable =3D EXTCON_CHG_USB_DCP; + break; + case CPCAP_USB: + cable =3D EXTCON_CHG_USB_SDP; + break; + case CPCAP_USB_HOST: + case CPCAP_DOCK: + cable =3D EXTCON_USB_HOST; + break; + case CPCAP_IDLE: + cable =3D EXTCON_NONE; + break; + case CPCAP_UNKNOWN: + dev_warn_once(ddata->dev, "called with unknown PHY mode\n"); + return; + } + + if (cable =3D=3D ddata->cable) + return; + + if (ddata->cable !=3D EXTCON_NONE) + extcon_set_state_sync(ddata->edev, ddata->cable, false); + + if (ddata->cable =3D=3D EXTCON_CHG_USB_SDP) + extcon_set_state_sync(ddata->edev, EXTCON_USB, false); + else if (cable =3D=3D EXTCON_CHG_USB_SDP) + extcon_set_state_sync(ddata->edev, EXTCON_USB, true); + + if (cable !=3D EXTCON_NONE) + extcon_set_state_sync(ddata->edev, cable, true); + + ddata->cable =3D cable; +} + static void cpcap_usb_detect(struct work_struct *work) { struct cpcap_phy_ddata *ddata; @@ -275,6 +328,7 @@ static void cpcap_usb_detect(struct work_struct *work) =20 ddata->mode =3D CPCAP_DOCK; cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); + cpcap_usb_set_extcon(ddata); =20 /* * Force check state again after musb has reoriented, @@ -303,6 +357,7 @@ static void cpcap_usb_detect(struct work_struct *work) =20 ddata->mode =3D CPCAP_USB_HOST; cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); + cpcap_usb_set_extcon(ddata); =20 return; } @@ -351,6 +406,8 @@ static void cpcap_usb_detect(struct work_struct *work) if (ddata->mode =3D=3D CPCAP_USB) cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_VALID); =20 + cpcap_usb_set_extcon(ddata); + return; } =20 @@ -369,6 +426,7 @@ static void cpcap_usb_detect(struct work_struct *work) =20 ddata->mode =3D CPCAP_IDLE; cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); + cpcap_usb_set_extcon(ddata); =20 return; =20 @@ -813,7 +871,18 @@ static int cpcap_usb_phy_probe(struct platform_device = *pdev) if (!otg) return -ENOMEM; =20 + ddata->edev =3D devm_extcon_dev_allocate(&pdev->dev, cpcap_extcon_cables); + if (IS_ERR(ddata->edev)) { + return dev_err_probe(&pdev->dev, PTR_ERR(ddata->edev), + "failed to allocate extcon device\n"); + } + + error =3D devm_extcon_dev_register(&pdev->dev, ddata->edev); + if (error < 0) + return error; + ddata->mode =3D CPCAP_UNKNOWN; + ddata->cable =3D EXTCON_NONE; ddata->dev =3D &pdev->dev; ddata->phy.dev =3D ddata->dev; ddata->phy.label =3D "cpcap_usb_phy"; --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79C8E30499A for ; Sat, 11 Jul 2026 20:42:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802575; cv=none; b=PHZC2RPiMW2bRVw4E44L+FLJhSzYn0q1A5Cqrl8CE2cIflAV4NGRGeYlpZqU55irr7RCiL0XGD1XTXUGeDnV8UJKp2uAEaHvfw/el/4rwQxwHmORwwsSxVSfsCstWnT07r37phQqQyE5LGMKKP2wSLPENYEknGBqTO77pIr8cDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802575; c=relaxed/simple; bh=8gu660Q0u7C0W8t7xo2+vLeynZsPh27OtCchUb5pAFU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Zdy18KMvlcvloPVPARSW04zjlkEyEpEG7MPmh0WlZxKX3+R/DAI59ewj/23tlfsJgtUdcSCqCB5GLslYyHBC+ML6yU5pyPw2/OaFH7V9w040ax9j5JtUzkHJWx1Kb2tuEz80FXjU/zgudZCqmihk/DeYTDd6woUxnXnwZb3z1zs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iS96HQZy; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iS96HQZy" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-493ece78b0cso14402565e9.0 for ; Sat, 11 Jul 2026 13:42:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802570; x=1784407370; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PhreuQjpg77ctdkAec2a78pglE74GvXVMC9BSorqz4I=; b=iS96HQZyK9MD0DIMczLE88UgFLmh8RFub/m6jV8+7uQ17og/euMZEFinDx9d4tHl2P BtB2XQ1TBcSxf1oNIEvHR80BIE2fS4/YkIx0G9jA5ExGqGkDnq50I20j+mspbnI5Zro5 KlKdaNAxFtCC6fhtgLfK+VGlQaHeJBWvmSF65wKo0/+t7mQb03nP3YCaGd8qtfkvB18S F19W+bDYQa6FI+/TzuXKwR9bOIdBuv3CRfB5Ut2s5sWnzdtHJmUgpMVOqjT3GOrRKaoH qXBCfcbMcZkYj1OknkknyEreOaFPKM8iOksbeklfuqG659LNDedp46y59hP462LF5905 7SLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802570; x=1784407370; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PhreuQjpg77ctdkAec2a78pglE74GvXVMC9BSorqz4I=; b=qsTrZsu1EWLUBSm9rKMGVaOcihgJe1vh1+R7xpnelCu3SwOqQ748MR7gZNss9Y0N08 7Ukfx0QFVNXReptb113mHewZ49qItbFhcua/0zNpMfUqm9jeRd0uBz+lnYYgQbpnkqSN TiDGen8y2YlYfUp6REexf147YLbat7+xj0bLxHRI9eccOOjSPTgiSJbyf/E2eP1yd/vX VAVRNWImd6KYD222oN9xcsyFIckUS2UHOd/F/OKWkLGeiQdkaSutNtk11SNWt2w5WldC 0dYLr2Fs7HxP/yyl1Ps2VhVtw/MLrmLbm0IVCFrCJbUfgFrnFcrauQ1iuqOJFmmyzV3I Bg7A== X-Forwarded-Encrypted: i=1; AHgh+RqBWaRfB6yrlGKAA9lQyWn64LzlXNJtlyqMQ359bsqtG+51crlT5JCSY3dBsYdNKPS/wbSAks6hRzo3+vA=@vger.kernel.org X-Gm-Message-State: AOJu0Yzk8zU97QXC/FZDKM0xgEjLYmIrrdXs82dyzTj9vMr+8WV+N+VD C45a43x6IWgmaAKtnynq59lCXtyYlJnpE4icLuKsnlolv2g/ivTCDCTA X-Gm-Gg: AfdE7ckEILMV42s87EVOAkO/YCO8j5FCYjNSSrff5G8QB1nPKChDZass7Vb7JLgiMPI ZdEPEijib3h1gJyIs+NfYQbpONxJMxgVLwoqvrhDsRvMbJ7hISKp24VsH6SLhETXljOChM8MIsV rlAinAYMThZ2ZtzBcO8WRHva5HIBx8SOc/h1sBEIUXDJQXEDo/SgfCPtCUM4VEP7byNiM4LeTK4 Fz5IUtwVvGfRYIQOr34Ms9g5HIwQiT6QOAnG0yOABsd6SlN2y8UP/+FcbeiUlJBGt7Ua2YgO6i3 WPO1KWuky+CuBvFPl19HkwxPq6xN8id05FwHDhDjzdiYyEraOdBs4hjZ23CBdT2Cb4kFoVHrbSM Qvf4cbc2QtXTqMlUkn+f1XnMIySpIXsAnCXjz5/t7OnydUbRzATIjktTNnIBRPYzsKRtD1mAD5R tUBx05jfpUNMULM0GhbJJXBSbFfFnjuFxv8A== X-Received: by 2002:a05:600c:8b05:b0:493:e4cd:def1 with SMTP id 5b1f17b1804b1-493f87e9ba7mr41987295e9.11.1783802569796; Sat, 11 Jul 2026 13:42:49 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:49 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 6/7] ARM: dts: ti: cpcap-mapphone: add charger detection interrupt for CPCAP USB PHY Date: Sat, 11 Jul 2026 23:42:09 +0300 Message-Id: <20260711204210.197144-7-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Update the CPCAP USB PHY interrupt mapping to use the charger detection interrupt and corresponding "chrg_det" interrupt name. Signed-off-by: Ivaylo Dimitrov --- arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi b/arch/= arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi index 6b1195c2a768..51a858021541 100644 --- a/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi +++ b/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi @@ -125,11 +125,13 @@ cpcap_usb2_phy: phy { interrupts-extended =3D <&cpcap 15 0>, <&cpcap 14 0>, <&cpcap 28 0>, <&cpcap 19 0>, <&cpcap 18 0>, <&cpcap 17 0>, - <&cpcap 16 0>, <&cpcap 49 0>, <&cpcap 48 0>; + <&cpcap 16 0>, <&cpcap 49 0>, <&cpcap 48 0>, + <&cpcap 13 0>; interrupt-names =3D "id_ground", "id_float", "se0conn", "vbusvld", "sessvld", "sessend", - "se1", "dm", "dp"; + "se1", "dm", "dp", + "chrg_det"; mode-gpios =3D <&gpio2 28 GPIO_ACTIVE_HIGH>, <&gpio1 0 GPIO_ACTIVE_HIGH>; io-channels =3D <&cpcap_adc 2>, <&cpcap_adc 7>; --=20 2.39.5 From nobody Sat Jul 25 23:05:42 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D5E4B3101A5 for ; Sat, 11 Jul 2026 20:42:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802575; cv=none; b=ZdoRhcS5Jupu/qhaZF7hLCqK7rseO1reHgbUfYJ8cxNPIgaLSB9eBt/H4Zd3kQrojs3lmUNOqrKUuorHpB5xjnIh7KqeczVByGhU9yz7b4EnZCMQC2gJp4srg3+iXSw7jS6fNIscHMdzUK1GxZOtiX6MOyyqaYivxHvSoVUoa0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783802575; c=relaxed/simple; bh=yVMP8UAtXlu981/AZfXfuu6ntdCZq3l09RETxP3vnIQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nftS9i9zgV6tWRRoU+AiUAhq2LF+yOZira2nx1mAZi40WAuH4HZjEdjSDEnblkn2DgtnUmF3ithbLjVm+APi/qKOHO5Nt559lB/k+K3r/TgNewx4qasUH3wvkwBUznGLGfa3ugd9bWxwxQ/7HvJg4LTYSDbd1zC7iuuU5XpN3e0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Oqgxc/IL; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Oqgxc/IL" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-493b1710405so9299635e9.2 for ; Sat, 11 Jul 2026 13:42:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783802571; x=1784407371; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VDpn6H9slILEKuaZA30ay5+GU6mS2ER9t41k8f7Sm/c=; b=Oqgxc/ILhJbdZLdffAL/Gx5QOoL6JDhumNO3glwYxoqTfqXH1XFbpVBxn9KEUuCOP2 Ca2juNqV6dbJZb+fDeGFzBS7jKceYOeJbtg+NstjzdaQ1mkA3T81KnHDEu6qcPG4bsvU G20yAO2J/mMz8enqH8rsS/LTRjXej5DN6dhKptOxXsqaZagV6FeISGFjpsdXxwppvmNv M4Rj/SDdtnPtz3/Bchld4+bt9yyOs/WKHfn4v7yPVve3WuKo9hyBB976i0ksOTLLhPhN AXwYPAYt05YGrNHILHz0I4wRUBsCaZ8EdjfGgfMJLa0CJBDOwkebBLSUOHT9B/r8Ohcc p3FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783802571; x=1784407371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VDpn6H9slILEKuaZA30ay5+GU6mS2ER9t41k8f7Sm/c=; b=MK8U9d3izmRDlohiL5+Pyuy09a9N0bmmfe7LyhiszscZlW0RNoiYhgPBVy91aXFggX /M+HAG/k+otm2e6mNcMPKR2KWxSVa9c5n2fyVC/efkAHJqttaCacJ2b6YpnZ6uOL12kb uko5RsusuoDbL10ufrvoNxE7q2Qfw5NbRNwjRLz6Jk2xNjGh7T1qEbgeVRHbWVMt61a5 AUedohCE+KkgKYcDK90RXRABXWvQu01QZapf0q9OfHauPO5rSRCCpd2R8tMTzFzzfrLK WkbBhzVAr8o9W86Xq/sbNT/xeFhdfeiPp/BpnD/QlFBAK7iOd1kIlQlM5km5dmfmU2By 1esQ== X-Forwarded-Encrypted: i=1; AHgh+RrZNZU/cOpT8ztLZnm9PDZmLaV+GT+KlbDyOkZbWXuJPevwfJ8fLDTBnGQOE4TEbh0Lmjjl25AjFPiFDh4=@vger.kernel.org X-Gm-Message-State: AOJu0YxVaaRyhqmlc5bJW2JFr3sJNcv+2sLHlvAWa5HfkXRWjYSEnHjF R7fmbwadyizLpvFmODvIk9oWYTcpPDu+JqsI9m6UQHfd3BtIwPW59jJT X-Gm-Gg: AfdE7cnyi/yinI+8hFV6+oxgnfxi3Fz+LkRglbd9smBSMv1A8hDgLMjUhTp1Jiu9nDO ey18yMAXi8S7uNa0B0GEqRXb/PsDzgzqJluNS+Oh8rdOGPWHRf/C4jaBHmLDBX7IsQFFzWFOVfk NYUJmEdWcmF1TIbfKtr//hNErcauYKHyy+SV2L3IZG9ZLDd6dvC19h3PmbnlYNzI4Y3Eozjzl4W mbJoTUV6x9j7maUvPT8FrSVxdgIOCE6fq1ELHT6GQDori85y1ZWr4oXpmvqFlnSuCrjn1PNZSJ9 V1d36A0DmNESfADY+Vl2gEmvfqFBgejKf6lS4K3KpExV5plLANI+usWxToiOF8PNHGKfGa9RkK0 SCqh5QrfJ/vmeCJqDAWyqJAh6n/wO0Yo4QJOzPMMJo/Km54n4TjQesZ+ES4yCsxVbvpYGsrhBrV g8QSVbcqieQBP0vshpEraQGXVPhD763JjCsQ== X-Received: by 2002:a05:600c:a31c:b0:493:fd5b:2d5c with SMTP id 5b1f17b1804b1-493fd5b3043mr9045005e9.22.1783802571359; Sat, 11 Jul 2026 13:42:51 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f2d97527sm172704725e9.2.2026.07.11.13.42.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 13:42:50 -0700 (PDT) From: Ivaylo Dimitrov To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Linus Walleij , Bartosz Golaszewski , --cc=linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Ivaylo Dimitrov Subject: [PATCH v5 7/7] ARM: dts: ti: cpcap-mapphone: add USB safe pinctrl state Date: Sat, 11 Jul 2026 23:42:10 +0300 Message-Id: <20260711204210.197144-8-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.com> References: <20260711204210.197144-1-ivo.g.dimitrov.75@gmail.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 Content-Type: text/plain; charset="utf-8" Add a pinctrl state that configures the USB interface pins into a safe GPIO configuration. This allows the CPCAP USB PHY driver to place the pins into a defined state whenever the USB interface is not active. Signed-off-by: Ivaylo Dimitrov --- .../dts/ti/omap/motorola-cpcap-mapphone.dtsi | 3 ++- .../dts/ti/omap/motorola-mapphone-common.dtsi | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi b/arch/= arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi index 51a858021541..368cb539997f 100644 --- a/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi +++ b/arch/arm/boot/dts/ti/omap/motorola-cpcap-mapphone.dtsi @@ -120,7 +120,8 @@ cpcap_usb2_phy: phy { pinctrl-1 =3D <&usb_ulpi_pins>; pinctrl-2 =3D <&usb_utmi_pins>; pinctrl-3 =3D <&uart3_pins>; - pinctrl-names =3D "default", "ulpi", "utmi", "uart"; + pinctrl-4 =3D <&usb_safe_pins>; + pinctrl-names =3D "default", "ulpi", "utmi", "uart", "safe"; #phy-cells =3D <0>; interrupts-extended =3D <&cpcap 15 0>, <&cpcap 14 0>, <&cpcap 28 0>, diff --git a/arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi b/arch= /arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi index acac3c243c7a..475ffe678e76 100644 --- a/arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi @@ -352,6 +352,25 @@ OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7) >; }; =20 + usb_safe_pins: usb-safe-pins { + pinctrl-single,pins =3D < + OMAP4_IOPAD(0x196, MUX_MODE7) + OMAP4_IOPAD(0x198, MUX_MODE7) + OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7) + OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7) + >; + }; + /* * Note that the v3.0.8 stock userspace dynamically remuxes uart1 * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7 --=20 2.39.5