From nobody Sat Jul 25 23:05:54 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 E7A0A3C4B94 for ; Sat, 11 Jul 2026 16:48:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788510; cv=none; b=Y8rLS2FnlbinYiMIVJKut0RWWJeaypAYaPkcNbhD6TRKcQAxyx/fKuwQoGCndRMZnnMdCjDBR8x2RYWbw3lt/yINLwVMNRo1M3nYqcPhhtQXJM+dZhBTKy3RjIysKjU9P+KZyJQNReiigvLmPeaLX3+h9iZ+69EOwOo2+Njb/vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788510; c=relaxed/simple; bh=rrLo2METxAPvW/Kvl+v935lLmIy60Gg/5rsQY3LkAQI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EMNgJsPpJ2jpwigl5I8SRd1JMbEqRujcgov9DSg0LLpgZs+xKSM9rODlc4BGmqxMVZv0NOR9G5sxlgr4iqxdKnK2u4WWygtFwqpkvJhXQFcAkL66bcSSmdgrbXUVbN1uqDPMBVC9h4xrJ+ZHtFBv6cr3k6vJv/RRJ9zSjj7dEHM= 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=CTbo8JvV; arc=none smtp.client-ip=209.85.221.44 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="CTbo8JvV" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-47ddf7b09aaso1201642f8f.3 for ; Sat, 11 Jul 2026 09:48:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788507; x=1784393307; 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=CTbo8JvV/2tDtnkbraf1mKjiLGCdEj/uCPEo5msQ2fWddssinHzY1BCRdcoEiMzPet hltcm/IWk1qdwXugx5gqzpsQju94Golx1+KfuXKUNnh6BSUU12SOC04HaX95sfiig+pE zyyFXSiptkq+Tig0px/Lx8PfclHSRB9R78wsb6dO/jG8Kq9YvJ0Dq592q50tY+2DTjm1 M7+gPUPMgL8KBvM82DbLmvazEQtPAiHIGzsbeZh8iTkh3syl/sIgJ1Y5wZ2jP3Z1DEQK rxjUN5swjkylue9OWc5Rp3o3kouHMGS0rpCgTAWR0QpZp8H4Z2v9nHmM5Ti9igEk1K6l t5xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788507; x=1784393307; 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=Oap3L4hrumKUDpmxecg91VwfSj2h4JiqQvq2UNICw8a+q6UsYgCYxu0vdlrZskl612 4iNlNqLGfjQlzWzlLcADKPfIMcTQKOsyIpVkzuwN/QLRV2CxBOWnDbVkaVX4FHqC+pLY UG+O3FrA/hOaieBbupumNea9N56pl79QZxFdVFm6sYgu/SmMJOIYskgc+4mGqEpBlesF CrVrUsitf2GbV4t9PopKIdJv330W1sWURGTAUrUXYTNhT4IB1RnL2+QzyfHhn5wglDF7 4rqyc39qhW8mi0QXEo5kt+NZ9+M8ywGvcBpC7FHmdoVUh0fIGhdnm9laNfb1YxMAgQKg Os6g== X-Forwarded-Encrypted: i=1; AHgh+RoWwAzCqzaS5maJ0uD9/mvPSlwHEnFDCfe1ml8uQ2e6H9181AEjP6D0Twd4ZC0STndOngmLl9WVUZh5zx8=@vger.kernel.org X-Gm-Message-State: AOJu0YwADB8L7zN2tSE6H8d/+Q7bMyHaNxSKY9HyTsb6NouJHdm8FW1X xAdbFgy5ql02r5D8tpBtz7QtlXddD8P19oEHV/KeSR/RUF5uQ0GfZqi1 X-Gm-Gg: AfdE7cllgUC8gw7VV4DcSbtkR+AIMXrYlDyl2Rc8CSYncHL82op6FpYjt+JKjrYd/Pk 8qJv6DIL6dXVct8aKTXMVSkx5O0jvp9syNGyO/SUhww7icbX+nDnLTmu0NbSJQCBP/Nsj76cuNs AU00kBGQJMc1wAF/hmP6A5CSobU3HwnC2L2v8nMImeMy57WHD1wTGRRjz6ShUIRNGSePPX2HrxI OdoZuILq6B9beqneNv5FGwXdGsPPBdYSK/peTsb7EK1sLBxyP8lP3ketYlKKwpXqVE2OPNcx741 r7sepiTzjyp68BLI7HDRqcFKHvemLkUAKxPnN6UiIteMURtomER9I5NxfxKpTjvlXryxBKjF9l8 pPGChCkLAZj08umSSOggKKnzwlsfztb5TCHURWi4XRSAZCD2J2KvwodbwScW64vANdfrJXitm7x atRVH+LK59eLUwPQFoGcMXfujwEF3bmXN1fg== X-Received: by 2002:a05:6000:24c9:b0:477:80fa:f474 with SMTP id ffacd0b85a97d-47f2dcf400fmr3364939f8f.38.1783788507031; Sat, 11 Jul 2026 09:48:27 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:26 -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 v4 1/6] dt-bindings: phy: motorola,cpcap-usb: add chrg_det interrupt Date: Sat, 11 Jul 2026 19:47:49 +0300 Message-Id: <20260711164754.185565-2-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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 --- .../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:54 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 ABDF53C65F2 for ; Sat, 11 Jul 2026 16:48:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788512; cv=none; b=T/TC0eydSx2C4v3WqybSrramn1BZYQbxDDIFbrlKqh6eeutPMDT2GV3snmIp+zJH1Fcj7iwzJvD9Mv5m+66WHERGdEmiwjOmPWGHukESujcWBjFMw2xRh/a120TrXNvgy1qhHbCoTy2AMYpma+nVgYHwkBZoz4I2uUgswGlU+Wc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788512; c=relaxed/simple; bh=vctX9KwwqmloP7foTyQPo3feQK/oPWLbCvXEnlHxCHU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UBmTBLMAvLTcb5yKSy3u9gvK7jqAB9G/T49GBG1mUpfSsqBfYFcEdPMy+zE2g3xepaX5zJUADibGMSMCp6Gg3plTC59XKiOZI8eYq153MwhtSRzvS9w7E1XvV+of3AOWrOYyvd9bM534Ny6iVB/lICFppnxzmt9gArtMev43Baw= 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=gp2nSyaK; arc=none smtp.client-ip=209.85.221.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="gp2nSyaK" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-47362928f65so1837722f8f.2 for ; Sat, 11 Jul 2026 09:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788509; x=1784393309; 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=UtuIacplhejTVgASevQDxobm7194RuV+jAzjBsHtT/s=; b=gp2nSyaK1Urp4iPvXDIhcr5FQouJFhgmM70xr/TgmRoQlcrJcsMekjFWtoBJgr/ZVq NwYM1oDBna6q9xR49ld2PZPMkdQLYfZHl4pnnTPP46PNY4Wft/yq6BJCC0fUj+sPrEdU co/yRYCPezsk6xUE6Kk+U7T9YVE0vT5PZvzK50CbR2nur+qUZB3tCPlf6ZKUf43wTUQG HYj6HfohoCQ98lz4KAddssPDJYMlYjhb2BmbOaj/ceMnkAZPxY0jkIVhaS0tBXpy2QHQ UWzqllmjtc6OTWHML4KOqNdatmhzdRWAe7ovt24Gc0Wf/M4+AKF2k3CDCLEm265L/Zgt GsHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788509; x=1784393309; 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=UtuIacplhejTVgASevQDxobm7194RuV+jAzjBsHtT/s=; b=FBVqkePrHbOJEYw6/NzPZ79ECT7GjnNzEPPGPl4ZsgXbsND+ozjhUBXvtlDrk04Omv ZOJmoeS1bsX1lv3+WdinLCKkUijiZssFe73JKednytNbtYaKS0eD/cHfQR7t4Z6KSJdV sn2p1qU53uaQX8A4elJJBhrn556SEc2BrZk6QDQQNnI7lTo5jznVWjb4dNaI8PmdlDIF 1ZynhylQoCV1G1oGvqeEOd7AMHcTMmcW96Py2NHM48UzfbYUBXq941ufOjM18SVbU75N xFMdnpiftEN4dn4j47vxePbAjCWQuz10bcQj7JHEnSbE5DMMLGHUuMsD3ebhsEjLl+ml vDBA== X-Forwarded-Encrypted: i=1; AHgh+RpLDtfRYxcznot/62nNT3ZyfZzH684tRf2EksimS3hwfkUH318hKp+o9ZqIl+7biVnvgVPFMotcUJGn+Dc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1Cj8ZLouh+fNiUS1o5UdYBi7xE1GKi9+bXznJdSn4JdOdMlU4 3Tea3OeGdje7AqkwTn0UzfUmJ2oDJ4Y90n7GWH6U0e9ojVqcU30cdMOL X-Gm-Gg: AfdE7cl+bcCU4aWBJ5c49gvABdC2kgXZinBBNGpcaBDx87N9Zu3RStFcy/v1Y+NCmFp +J2Z8HrrDpD5RCbvRpg4WfKLzcfqo9nAOqiAgtqNCQT5kdCMuZyXO6nQ1AoKOsO8PCA2luSLVKE DKD1ON+XHzdIa/JYQ+ruwSQpPTGLeHUwOTbW1KVbj27WcKvG40bEucgN+jnvQ0GKpj+oMSjlKw6 /IcxXHEU6ACwxf9nP8TuMCMc4K31qAsfH3HlFYQKlO1md+0mO7KBeRZ6DkwX2u/Tr2RHmZJUAVg Ob4zKgIuFGR4dtFF5j2g7tGcOnKSkrK+m6qfHnxKOyYHzSqMDEoqW0d9MjidbZNn/0xPHr7CrQz jSnGwpiEWlwXDy6cUb0OFTJ/gtknenUXyLm5w1HhPsKahzhLLJZSK2saTKDfvQ94OKCre05ZasA AtuetFwAQIBdJmS9VuLXIoZAS6Hm8e4O47dw== X-Received: by 2002:a5d:5c84:0:b0:478:65a8:6305 with SMTP id ffacd0b85a97d-47f2dcebd30mr3684315f8f.49.1783788509108; Sat, 11 Jul 2026 09:48:29 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:28 -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 v4 2/6] dt-bindings: phy: motorola,cpcap-usb-phy: add optional safe pinctrl state Date: Sat, 11 Jul 2026 19:47:50 +0300 Message-Id: <20260711164754.185565-3-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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 used by the CPCAP USB PHY driver. Signed-off-by: Ivaylo Dimitrov --- .../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:54 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.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 A14A63CBE89 for ; Sat, 11 Jul 2026 16:48:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788518; cv=none; b=WlP/0iEOzD5XzSRoTjSrVUtsoCZljZPA7lF67VUxotbJR8+gUQOa9JnjxeyD8f3BHTPtX+NwI9DvZ41NMhreTyGA+Mv9EVlG964aXtSsvZr6y6IoCulZyS7N0cE8M6bkbNY0GISAaFHtokV8YQ/kwIyswnyAdpWB6U6dQ7aXDGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788518; c=relaxed/simple; bh=7M2d5+hUcFNQfvU1ANkHFdGWgfJi+MrQuPo0yxaPCrs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=k6XOPWhMZxhV+1/c8ZV6U4utLnQVgS5n4E0HBOW+E8fjWg7Ksbp0PCQ5u0UdecpUpQO8nZEteZ3UTfrfEdUMe5CnnkyDlzfh2fOW0cZFwFmkok2FKs83tX+hBgKBd9nhOqCmaIZaCTAmo1mo6HtY/X1uG51j6yU8fUNTP4Fonbo= 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=gR+YOp8C; arc=none smtp.client-ip=209.85.221.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="gR+YOp8C" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-4759b4f0897so1012829f8f.1 for ; Sat, 11 Jul 2026 09:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788511; x=1784393311; 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=KyZWZlyaOYWp5czHM4iq7SfeFCjsKYeLefKXNqvyu9Q=; b=gR+YOp8CXlQRIfRTqWXHQo6tuDID4njAcHffH5ircS1Oj2j+rZZwfyTuCncei2lVY+ eTqtkYC0mej4s9RlOC6Uqv35pbS4BPAcTQU5oKebMEp0yZoSvljFt+47gp8NzG50gfLG W5qvRLdvkYBOzVnrcdZ9gV/aQ1cPLttXPT9kM+5oaVysO6zHnyWjqrCMnXxL+ZldNWyO 6OxmoFV+PQ1h3TckDgSN7hPC2I6A34dJihCWxz2FYRvzX1T9jPmkfFddGp65BJstnXXJ gosCeLjiYhlzZvL6vAUPpa2224FQ39NKYp/TVQTB94WMK1fpRtplt2SNjukQROfCtvhq 5Hog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788511; x=1784393311; 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=KyZWZlyaOYWp5czHM4iq7SfeFCjsKYeLefKXNqvyu9Q=; b=gfWr7NfJFiuH+HwKNz8XODx6JztXSdTibGVJ9izcCljLI9u9UW3XTyK/yAGSYTXz6X ukgeFv2GXgak1ZotxUJIkB3HEuPGwntrSC0000Vvk7xrvYmZIRFDjni/UgPs0mmtrW2j UfX3QTQGQxQiQibgxr8wHp9HhVC4PebYWHwXoSinnYWrQQmxbKw4jn5p2DReKs84gVCI Jx7t1SIsiyokeUx+Fm+1u9szrlGrI0qxbpU5qA9lsvws/e3O86TUVLXMruXibR6oE1P3 3YGVyyqUQnOd9+5ipFA/zxQAz0iuuvcjozhQ1827EktggPt64NMWXmNXzd1Tsv44uan6 0I3g== X-Forwarded-Encrypted: i=1; AHgh+RpDCUTfD6wTjkFwfdw22BG/gjOEIr7K3a0pffImBP3vSW7VgRUXcdjxneqpxnCZHeDtEZL8Qefg+Sj4wrs=@vger.kernel.org X-Gm-Message-State: AOJu0Yxm8gcrqiEgEqIuq53WQzObSrMIqQG86h+wPsKQYvLqCN7CqZM0 s79H6CKC0fKKkjkH80OYfcPMBbYDiN2YVHmah/r5CPwOJAVuxvoXhRZi X-Gm-Gg: AfdE7cmPMaMvDfR9snv8c1kNLm2I8TmeKNgTewzk40T1SF60HhWsk/T8lM+xt9chGf0 qRa7SWhurEwZUO3XfrbHhfzX6cCQJVSvyrVxV6t5As51RLf6yWz7Tj00VM5D9xO8vyC50eGhy6y HawzXsG1SGF8j6fNUtUlVmpR/h8b0LjFHikhxsbVd3Qo4ETEMywGT2ONBWpxZjoGqmt8uN1I7xM SzNRElQiz3+T25BKheUfk4mfKLE3xAIqPwnGQxFtPdU94C8iKI2Y62y7ofY7ovbqIz3QyNGhMtl ZkLsNNGlaP6NEj1qMhzyK+PteuToI1s3U5IyXePSOr0sl9vvaQMOZz8FU/LEP0MqIaezm7V/hJ0 4KOoczvogtgcQ5+D5a/kSi26LR86Bnx7VqwDWAj+h0v/QqQY0N0e81XgeKjcWRa3BLkNOIfKY4/ ysrlCE8S8Tfpkgc5HKqyKz6ex7qld2dD9fIg== X-Received: by 2002:a05:6000:471c:b0:479:e6a8:c0f1 with SMTP id ffacd0b85a97d-47f2dc8d79fmr3046520f8f.9.1783788510827; Sat, 11 Jul 2026 09:48:30 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:30 -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 v4 3/6] phy: cpcap-usb: add DCP detection and make UART idle mode optional Date: Sat, 11 Jul 2026 19:47:51 +0300 Message-Id: <20260711164754.185565-4-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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. Fix a possible race between idle mode setup in cpcap_usb_phy_remove() and cpcap_usb_detect(). Note: Enabling UART idle mode increases idle power consumption (by 25mW on droid4). Signed-off-by: Ivaylo Dimitrov --- drivers/phy/motorola/phy-cpcap-usb.c | 281 +++++++++++++++++++++------ 1 file changed, 219 insertions(+), 62 deletions(-) diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/ph= y-cpcap-usb.c index 7cb020dd3423..d4eb8086b600 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,64 @@ 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 + 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; + + error =3D regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, + CPCAP_BIT_VBUSSTBY_EN | + CPCAP_BIT_VBUSEN_SPI, 0); + if (error) + goto out_err; =20 - /* Default to debug UART mode */ - error =3D cpcap_usb_set_uart_mode(ddata); + 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 @@ -411,43 +446,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: @@ -460,21 +536,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) @@ -495,6 +560,16 @@ static int cpcap_usb_set_usb_mode(struct cpcap_phy_dda= ta *ddata) 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) @@ -508,6 +583,31 @@ 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_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); @@ -537,8 +637,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; } @@ -592,6 +695,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 { { @@ -625,6 +781,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"; @@ -669,6 +826,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; @@ -688,17 +849,13 @@ 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); - error =3D cpcap_usb_set_uart_mode(ddata); - if (error) - dev_err(ddata->dev, "could not set UART mode\n"); - + cancel_delayed_work_sync(&ddata->detect_work); + cpcap_usb_set_idle_mode(ddata); 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:54 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 5606E3CB90F for ; Sat, 11 Jul 2026 16:48:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788517; cv=none; b=DuNN0OXiytd/TEFi6j5Hs7H7gNAg/bZd218t1Rj3p2JiNQwwyVHR7vPYyTAy2pOcL8vIB8hK5a4l2O1+505A1C0fnuit5uUEPKYFC0rcd36e7cF3D0lZEMVV0A4meXtNgeiD4WZSmAWnShuA1TFNiW1BtkVUhfy3HNhQ9Fc6JRc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788517; c=relaxed/simple; bh=JGx8vLrxPA3/wNpjLIcKZMzqlLOJCUnCsboNlS4acXk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y61w9nWu5ubJ2a5QF0OC5P1IdOjickFkIpQZOICp8oe1cQlAWolFI/2QJ8z7+8aRiDMpxaqJxF9ecl3RK/P0I4dkHNUxdRtxNJ9qYnPtzJqotl8pOh7dfYOFAuYOhst7Fmn2HqHh806cAlkyCvqg2CGAKXqQGQbOkGsX4zpHjoo= 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=paI+YSnz; arc=none smtp.client-ip=209.85.221.46 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="paI+YSnz" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-47c6e9a694bso1020119f8f.1 for ; Sat, 11 Jul 2026 09:48:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788513; x=1784393313; 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=uUs89C+zAejcNnfDQ8q3Fa2LOUmGMmgh0ewi2+CW7gM=; b=paI+YSnzvxO6qXWcN2dEKfVPxgsTfvj7Re/364vviv+kbHEn1yP2wlFM1gxxGW0lra AfUp6Nz3evreCrBppbvWzcFKpblYGfr6JgIZtYpKa/jzMxGIDkKqvZHjrLi4EFb2PAow mKlUeCyIV4FXDdnSl91k4iJl6VDKgvg6+Y3wE4EnMf9trJC+AKl3ByDMHvyyqXmR9EJ3 u/RmBy8Vt877ilmRfC/lauV7KSdZArqrpXanP6OeU77DB4ghfi0Tktw/sJmoVYYnWWo7 wXNq1fRX8Aq9UI/g3vGd858RbOrFjvR7GS73JfWmbrV7idDdQUaK/wbJbrSMu3NqLbe2 NDOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788513; x=1784393313; 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=uUs89C+zAejcNnfDQ8q3Fa2LOUmGMmgh0ewi2+CW7gM=; b=ZUaNeSBtM/5bKHTgQcn+3RW/2SF8sejxoUtAPgu9uPvghxXndRTDKbBoPttQbl7cNE o//LyprGpvbNcuL80IvDMPHh5jR1WQVczxnjq9Odhdjwq3E5goBu8DUJTBUQtoIFdIV3 EFNnA8p7xSaBvGJJGCTLTEsLzi8ecIEIG9rQuE88RP1jJGCy5OxeLcbY6E9Nfag4ctj2 bNIAnc5MhI2NFhZGpznwy0zMG8qnK2um7org2sxLJV4bRHZyrrfm+IQVNQy45e1ZlLIE Dr1U8NmJ7F4MlXa4Uzea4AfGsBcxnzAG0c4nAZk0sef5FyKPbKdxnJbdtpQEW0bWMnWM elIQ== X-Forwarded-Encrypted: i=1; AHgh+Rraj5ajDf87d4C7/0HkKL54Lb7fOCydVyxiIpa6Fcn201z7kVhJeHNNLPbF5pcjV238rkcUM8ve+9tlgdU=@vger.kernel.org X-Gm-Message-State: AOJu0Yxiw4csQaszpnCmR3QrkAMjpe/WaT/9zX8i+qoUUHFeKTj6x9jE /JcXT2xMJNcIcuTtrxfk3hWODroDiZOogp0mOXb3R4FbgwRuEqFRY7x8 X-Gm-Gg: AfdE7cneFS3gvg2jMR4ekCO7WXE64beHE7Zj0oY3O0ZDIks79CDL1av+pro9WnUBKzo EOmZi0CyG9IHdshXu4XHiunh48SjcCNxsZmvev8m0L8Hi374PS3ltPQJFby1mNyOUIHQfFsF1WG F9CaU4/ORk8RPMu0BjctDWrEAb++GtxzvJP8pYkjzMxKpfvlqoRdf7s48IOnT9VQL3KCum0dBYC jp+9XafGk9Klx/f+dOe5+GoNuBBzHqNMRbnPy7pxpBAKHaSZmY54/2/2xsMf2e07bK2kTx9JfsZ 3bTOrBU/ewTFKaBOiFJtUYB/+Twp3A1Xvgdkbf5mRmVoRBWblSeIDWf0loLE3R7oZUN40DH19Ba v9GymSu4XUIaYJIuU6ywg/v/5YVsw1miLt7mTv0IackHC60wGVy/c3Hs9K01drE+2Q0NSRvfkJz BF/H9sfMQWCOYa8pwvBVuJMUcPq2R1/erlXQ== X-Received: by 2002:a5d:5887:0:b0:474:b860:b7b1 with SMTP id ffacd0b85a97d-47f2dca82dcmr3244640f8f.9.1783788512502; Sat, 11 Jul 2026 09:48:32 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:31 -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 v4 4/6] phy: cpcap-usb: add extcon support Date: Sat, 11 Jul 2026 19:47:52 +0300 Message-Id: <20260711164754.185565-5-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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 d4eb8086b600..8f9bea1d8a21 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=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 (ddata->cable !=3D EXTCON_NONE) + extcon_set_state_sync(ddata->edev, ddata->cable, false); + + 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; } @@ -341,6 +396,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 @@ -359,6 +416,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 @@ -781,7 +839,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:54 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 D6D613CBE8F for ; Sat, 11 Jul 2026 16:48:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788518; cv=none; b=UriX977xmvK5hnlicnv+6PhUmyApJZYetIdjtb1OgWUAWMHEuVk9PIX7Nbevjf8hept+Hb2QDPyhdrZ9RF1HP9yPU2Ou6KHEWBGL70GYg2+sbraRhn+IwREAI0ayiH50+3JHj2AURkhvvfadGsTtYMKwFM0gV7ZEsuIEu9oM1XQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788518; c=relaxed/simple; bh=8gu660Q0u7C0W8t7xo2+vLeynZsPh27OtCchUb5pAFU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G2ONHMTDljJiigQ2IK6ROaSVUN60SdPPPYp+EZ9cDVmCipDaHypugL2kHzs+ggjPn0PHcZ/HM3N7apj27TTGCBeNFyFtl6GHhMB7vRqUqe/vP5eYQQrslq7J7ShYvza6Z//CYu53Zb1DbSorHmsVqUqrEq+f3E+ILgZcBD7h78g= 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=ZJZXCd52; arc=none smtp.client-ip=209.85.128.52 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="ZJZXCd52" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-493f60208a5so13232005e9.3 for ; Sat, 11 Jul 2026 09:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788514; x=1784393314; 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=ZJZXCd526PBGcsE275x8ElVB5+6uBnUiTv3kfpyHPiijdrzPAx48m6xnrLoysjOu8B CP35OhHD4nHawYQ2f1pBtMWeO99FknQCV8GUERmnQQZ1xqPSp7A8ijJ6MZXIK4KdeS2d kWwSEc4kOwG2x9cS4SO20/YWls86G2DOY5BqRgB3ERlDCcSd0St2dA4JnpZA0eaucKor NzSL1othtzt2aPKwKhVChHHy/4josABg1EAfSmVTKxDoDx/QvF5GZLqTpIkmon6Hsp8L Td9BhysOGZ3PL2Ikr2Rb3YGoozgbokUWpY83R1PvvYCHl8f9GjzmJYkUlTPzRYq8HpcQ L5Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788514; x=1784393314; 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=GA3yX5uVyAtrWIyeWWQwLpf4LzaOYD+69Bgm/OsrChtvJIH/EUpc1KXX39wVfKNEF9 I8qPnZjYx/yk8xwuuzMgsRvw5xQYxMohWy+2/FN5Asmaosp3yOwvTD7T7/wuUNXC6zyl p3F6Oo0DjyCR6X+goQvQQ3rdW/PGHZgRhHnOEA6VZQ7q25kl+0BC4ffZJXQWbqoQBEOI QhLYv1RdnsETIAj+plWFiPZK3gIpQjiis9ZwLTHgIjpnVq6JuVYsQLajBUmaQBTpaSvJ hSoFsHnagy4PLaJoS8TC1JCYiDV6M7BZPpQip0O4tBQnT1RKjyduGNtUIcHI7uh1p8SJ xbmg== X-Forwarded-Encrypted: i=1; AHgh+Rp5eaYw+eMi6Ve4w/38OojRRCseulsNM92DXiGtWxlPkjAHYNRu6UEpv2BQsK15LA6cbyDlecVZLZvBYh4=@vger.kernel.org X-Gm-Message-State: AOJu0YwYbBKTaDmcqJ2OuM5Lo+styqLGWHU2cX763hLDKoqlCeb1DYFt fz+OEjGTkYasrJYCQZS7flqX8xDJvkgbsHpheKuWFEp4v03X9EJIHNq+ X-Gm-Gg: AfdE7ckrSCADl0nML6RbGvPBiZonVqayiZad4cSW14gJzR6o7wtSR8FvFn2S2fqDxFC 9bpQNTG9jY29GcHKvWfF+9gC2Vm0E/1aOYPfcJZ8IzjJ4WTambs3Q/mRVKopiQtQM6V1l33aZFJ JC0e7f7KYT98pnJSEg5CcFzL++0jsZaVX9BlX+Jal4aqeOfujniTuNbjdfvaAC82L7WSrcfiPwJ RUaW+yaJFyIkGAu4ClssOf43+04Ce6bqkhve73NyZj590P3h8OMWYKSW828+4aDMIIwetjXZTMP b6tc6zZuMivuVXLKbctFALNeXRGQ/yVjGGMfhbpoq8n1o2I4oy+lLctI0LNXMQ80VA+0PLM1Js1 rYlUcdHSFIANZw2r+EclnPql0FSezw7C7nYB9OBRkvRASwGd0cB0T9+C9nNt3Cuu/PuyJ66TuuK wWueE+/G0tnvSriHzVrUJopJ+O9mOrBB3gH90i9C20S5Cn X-Received: by 2002:a05:600c:19c7:b0:493:fa7d:56a0 with SMTP id 5b1f17b1804b1-493fa7d589cmr22554885e9.13.1783788514279; Sat, 11 Jul 2026 09:48:34 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:33 -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 v4 5/6] ARM: dts: ti: cpcap-mapphone: add charger detection interrupt for CPCAP USB PHY Date: Sat, 11 Jul 2026 19:47:53 +0300 Message-Id: <20260711164754.185565-6-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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:54 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 75ECE3CC338 for ; Sat, 11 Jul 2026 16:48:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788530; cv=none; b=JiB5riaeIXudo06Auzj8LSRUcGau6FWY7ZhVgpoo+NDBimSvaHYAB1kXsfyWheUZvazJQBjlvznoEhh6uvYq91dn8gY3c6jS5VqJwaYUnWEjJ648zGldgFf1hXUCPPfI23qWrIem+jDVmQm5dqt6ftqpbp8C1xmcqxE6ypsksLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783788530; c=relaxed/simple; bh=yVMP8UAtXlu981/AZfXfuu6ntdCZq3l09RETxP3vnIQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jS3XOdTjeQnlSwDo29VyEJltxT2f1WdRd85XXW9jEBlKTwwaPjreoEqdkAHSkETdybuOUg3YnaU0DXuC33FZi04jo0+QBMzkpbdRRRs9lfcy2bk+8QnVKYQXf/su4JusVe+DtJXESoXHyJC2kQe7rHi0GSPzAN2FKPT6kf8I9rE= 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=qnb2V/4B; arc=none smtp.client-ip=209.85.128.44 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="qnb2V/4B" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-493f431e317so17017455e9.0 for ; Sat, 11 Jul 2026 09:48:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783788516; x=1784393316; 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=qnb2V/4BHecTg/Bstd2nMyetg96JxjdqwwEPGpBQV5kC4m6oim5hvw2ownjnEQoxYH EM13pqUiExGCOUWveiovV5Pg48IAbgut8sqqnJT1ALmvnN2KD87IcZCFd9ImEvkfXxmn Doi5wQsapjWOtcNS9F8g1TKg8Pyi1wllbLirUo2oHlNM/nli0n97PJydxOhtrLmE8wed hdCSoFHJBZWA2Zo0IDzpfwIi9CgJStbrG4wfrHeYTtW3TPyYJbZhXEhJ5SJgWmChmn03 II5dudICvCtO3WqRhour/Sp9RQ/Apou673hl1XN0cR7SJPXMEnuGTo9+3d/XHS4k/ZAi +G8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783788516; x=1784393316; 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=Au4hb1eQJKHwUFHTjw6K1GqLYCXewqWq0L60a4WtUBapN1qfxupJ9MjWC/NgbjtmPq wmnKHmfGiA+CQU2NY89cmeFU06wf0TpOPHZywgB5njwpANP0AkNpxN5u4mnGrMZ65GcS gHmEGyQ7N8DHyinNmRsPujwpBgO3LHQomYlreHB7JTzKK1xCK0nq0j6kQwWlxoDzEa4/ yhgV5fivEt87J0UYI7ukbPGo5OAAsAYp7zNpcsqn9gKofxOtKkxpX7PnTV7pYyTjPucX dzEmEjN3XGYw7+E0dgB1nFGCG9nazspHIC7dKR6hBNMX5p20I2Va7NJSgDBGSf5c8Rvw EeQw== X-Forwarded-Encrypted: i=1; AHgh+Roi0RjaFwb8HVYBNlYWzTXH1rf+70rLrfzfJ6TqF/mUk8byEEXLJguUXaEm0DAGFE0waGw0iJCuUs/FUpU=@vger.kernel.org X-Gm-Message-State: AOJu0Yym0S5NK20c3gqOA5gAZJpfE0abuMJvY+PxVSfDxBRZAVUFOHyV aKOc+rIxe2eYA9TJs5JPu+6BtAARo/BmKJp3mXw1FOL91KcjPQPV048n X-Gm-Gg: AfdE7cnvysBnBS2+gTxD74SkGagBUYnyBad3TCdWGpzv7CoaHHYnfG+2VblAZFlm4Io jO5to/koq/HHhf/dKgoUcDBrvRrGVdxhHYoK/iIsMTxQJKW+uqIpviMVXkFCcNCVKkj9PUhrhOW 3a4YJAZZwNnE++gLftd8ZD3WVCXuxzs5kLnBmneUy3hsPMAprwonZiAZ5lrL3PoHQvHwfZWa1Xq Z6uWGIdvS4pvbjHJe67t/d0pNLhWC+M5DdztT8J4oZTXCgy/G2ozRDdRdNs18qy3UDDXTzB0j0Y NGp+nKEJ6RsVL4qli4dSVnBhmwnlZSqjO2hNx3U7WcxaRoZy6flyKEHy7dEsk3OwIfAVBwR9g94 x6jHIAaDgr1U1nauywJx394i6/HAJc27xZj/d10AycIGiIElYKSBYBX/E+HyMMpb2WmvH2SMyVO Jxl+18mQAZdWcWenUAbtiP0FKjlAnoHhr9Ow== X-Received: by 2002:a5d:5c89:0:b0:476:cfa0:a976 with SMTP id ffacd0b85a97d-47f2dcb60fcmr3613474f8f.5.1783788515836; Sat, 11 Jul 2026 09:48:35 -0700 (PDT) Received: from localhost.localdomain ([95.43.220.235]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d83bdsm69152875f8f.13.2026.07.11.09.48.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 09:48:35 -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 v4 6/6] ARM: dts: ti: cpcap-mapphone: add USB safe pinctrl state Date: Sat, 11 Jul 2026 19:47:54 +0300 Message-Id: <20260711164754.185565-7-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260711164754.185565-1-ivo.g.dimitrov.75@gmail.com> References: <20260711164754.185565-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