From: Hugh Cole-Baker <sigmaris@gmail.com>
To: John Clark <inindev@gmail.com>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Marcin Juszkiewicz <mjuszkiewicz@redhat.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
Jonas Karlman <jonas@kwiboo.se>
Subject: Re: [PATCH] arm64: dts: rockchip: rk3588-nanopc-t6: fix usb-c port functionality
Date: Tue, 22 Apr 2025 00:12:02 +0100 [thread overview]
Message-ID: <bda07179-1ff4-46e4-9dda-ece9c63fd613@gmail.com> (raw)
In-Reply-To: <20250419023715.16811-1-inindev@gmail.com>
Hi John,
On 19/04/2025 03:37, John Clark wrote:
> The USB-C port on the NanoPC-T6 was not providing VBUS (vbus5v0_typec
> regulator disabled, gpio-58 out lo) due to misconfiguration. The
> original setup with regulator-always-on and regulator-boot-on forced
> the port on, masking the issue, but removing these properties revealed
> that the fusb302 driver was not enabling the regulator dynamically.
>
> Changes:
> - Removed regulator-always-on and regulator-boot-on from vbus5v0_typec
> and vbus5v0_usb to allow driver control.
> - Changed power-role from "source" to "dual" in the usb-c-connector
> to support OTG functionality.
> - Add pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>; to the FUSB302MPX node
> to specify USB Power Delivery (PD) Revision 2.0, Version 1.2,
> ensuring the driver correctly advertises PD capabilities and
> negotiates power roles (source/sink) per the FUSB302MPX’s supported
> PD protocol.
> - Added op-sink-microwatt and sink-pdos for proper sink mode
> configuration (1w min, 15w max).
> - Add typec-power-opmode = "3.0A"; to enable 3.0A (15W) fallback for
> non-PD USB-C devices with the FUSB302MPX.
> - Set try-power-role to "source" to prioritize VBUS enablement.
> - Adjusted usb_host0_xhci dr_mode from "host" to "otg" and added
> usb-role-switch for dual-role support.
>
> Testing:
> - Verified VBUS (5V) delivery to a sink device (USB thumb drive).
> - Confirmed USB host mode with lsusb detecting connected devices.
> - Validated USB device mode with adb devices when connected to a PC.
> - Tested dual-role (OTG) functionality with try-power-role set to
> "source" and "sink"; "source" prioritizes faster VBUS activation.
> - Validated functionality with a mobile device, including USB Power
> Delivery, file transfer, USB tethering, MIDI, and image transfer.
> - Tested USB-C Ethernet adapter compatibility, ensuring proper
> operation in host mode.
> - Tested USB-C hub compatibility, ensuring proper operation in host mode.
>
> Signed-off-by: John Clark <inindev@gmail.com>
> ---
> .../boot/dts/rockchip/rk3588-nanopc-t6.dtsi | 21 ++++++++++---------
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> index cecfb788bf9e..8f2bd30786d9 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> @@ -174,8 +174,6 @@ vbus5v0_typec: regulator-vbus5v0-typec {
> gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
> pinctrl-names = "default";
> pinctrl-0 = <&typec5v_pwren>;
> - regulator-always-on;
> - regulator-boot-on;
> regulator-name = "vbus5v0_typec";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> @@ -188,8 +186,6 @@ vbus5v0_usb: regulator-vbus5v0-usb {
> gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
> pinctrl-names = "default";
> pinctrl-0 = <&usb5v_pwren>;
> - regulator-always-on;
> - regulator-boot-on;
> regulator-name = "vbus5v0_usb";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> @@ -465,24 +461,30 @@ regulator-state-mem {
> };
>
> &i2c6 {
> - clock-frequency = <200000>;
> status = "okay";
>
> - fusb302: typec-portc@22 {
> + usbc0: usb-typec@22 {
> compatible = "fcs,fusb302";
> reg = <0x22>;
> interrupt-parent = <&gpio0>;
> interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
> - pinctrl-0 = <&usbc0_int>;
> pinctrl-names = "default";
> + pinctrl-0 = <&usbc0_int>;
> vbus-supply = <&vbus5v0_typec>;
> + status = "okay";
>
> connector {
> compatible = "usb-c-connector";
> data-role = "dual";
> label = "USB-C";
> - power-role = "source";
> + /* fusb302 supports PD Rev 2.0 Ver 1.2 */
> + pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>;
> + power-role = "dual";
> + op-sink-microwatt = <1000000>;
> + sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
> source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
> + try-power-role = "source";
> + typec-power-opmode = "3.0A";
According to the manufacturer wiki [1] "Power Output Capacity" table, the USB-C
port maximum output is 5V/2A. So I think "1.5A" would be a better value here.
[1]: https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6
>
> ports {
> #address-cells = <1>;
> @@ -1135,9 +1137,8 @@ &usb_host0_ohci {
> };
>
> &usb_host0_xhci {
> - dr_mode = "host";
> - status = "okay";
> usb-role-switch;
> + status = "okay";
>
> port {
> usb_host0_xhci_drd_sw: endpoint {
br, Hugh
WARNING: multiple messages have this Message-ID (diff)
From: Hugh Cole-Baker <sigmaris@gmail.com>
To: John Clark <inindev@gmail.com>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Marcin Juszkiewicz <mjuszkiewicz@redhat.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
Jonas Karlman <jonas@kwiboo.se>
Subject: Re: [PATCH] arm64: dts: rockchip: rk3588-nanopc-t6: fix usb-c port functionality
Date: Tue, 22 Apr 2025 00:12:02 +0100 [thread overview]
Message-ID: <bda07179-1ff4-46e4-9dda-ece9c63fd613@gmail.com> (raw)
In-Reply-To: <20250419023715.16811-1-inindev@gmail.com>
Hi John,
On 19/04/2025 03:37, John Clark wrote:
> The USB-C port on the NanoPC-T6 was not providing VBUS (vbus5v0_typec
> regulator disabled, gpio-58 out lo) due to misconfiguration. The
> original setup with regulator-always-on and regulator-boot-on forced
> the port on, masking the issue, but removing these properties revealed
> that the fusb302 driver was not enabling the regulator dynamically.
>
> Changes:
> - Removed regulator-always-on and regulator-boot-on from vbus5v0_typec
> and vbus5v0_usb to allow driver control.
> - Changed power-role from "source" to "dual" in the usb-c-connector
> to support OTG functionality.
> - Add pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>; to the FUSB302MPX node
> to specify USB Power Delivery (PD) Revision 2.0, Version 1.2,
> ensuring the driver correctly advertises PD capabilities and
> negotiates power roles (source/sink) per the FUSB302MPX’s supported
> PD protocol.
> - Added op-sink-microwatt and sink-pdos for proper sink mode
> configuration (1w min, 15w max).
> - Add typec-power-opmode = "3.0A"; to enable 3.0A (15W) fallback for
> non-PD USB-C devices with the FUSB302MPX.
> - Set try-power-role to "source" to prioritize VBUS enablement.
> - Adjusted usb_host0_xhci dr_mode from "host" to "otg" and added
> usb-role-switch for dual-role support.
>
> Testing:
> - Verified VBUS (5V) delivery to a sink device (USB thumb drive).
> - Confirmed USB host mode with lsusb detecting connected devices.
> - Validated USB device mode with adb devices when connected to a PC.
> - Tested dual-role (OTG) functionality with try-power-role set to
> "source" and "sink"; "source" prioritizes faster VBUS activation.
> - Validated functionality with a mobile device, including USB Power
> Delivery, file transfer, USB tethering, MIDI, and image transfer.
> - Tested USB-C Ethernet adapter compatibility, ensuring proper
> operation in host mode.
> - Tested USB-C hub compatibility, ensuring proper operation in host mode.
>
> Signed-off-by: John Clark <inindev@gmail.com>
> ---
> .../boot/dts/rockchip/rk3588-nanopc-t6.dtsi | 21 ++++++++++---------
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> index cecfb788bf9e..8f2bd30786d9 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi
> @@ -174,8 +174,6 @@ vbus5v0_typec: regulator-vbus5v0-typec {
> gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
> pinctrl-names = "default";
> pinctrl-0 = <&typec5v_pwren>;
> - regulator-always-on;
> - regulator-boot-on;
> regulator-name = "vbus5v0_typec";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> @@ -188,8 +186,6 @@ vbus5v0_usb: regulator-vbus5v0-usb {
> gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
> pinctrl-names = "default";
> pinctrl-0 = <&usb5v_pwren>;
> - regulator-always-on;
> - regulator-boot-on;
> regulator-name = "vbus5v0_usb";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> @@ -465,24 +461,30 @@ regulator-state-mem {
> };
>
> &i2c6 {
> - clock-frequency = <200000>;
> status = "okay";
>
> - fusb302: typec-portc@22 {
> + usbc0: usb-typec@22 {
> compatible = "fcs,fusb302";
> reg = <0x22>;
> interrupt-parent = <&gpio0>;
> interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
> - pinctrl-0 = <&usbc0_int>;
> pinctrl-names = "default";
> + pinctrl-0 = <&usbc0_int>;
> vbus-supply = <&vbus5v0_typec>;
> + status = "okay";
>
> connector {
> compatible = "usb-c-connector";
> data-role = "dual";
> label = "USB-C";
> - power-role = "source";
> + /* fusb302 supports PD Rev 2.0 Ver 1.2 */
> + pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>;
> + power-role = "dual";
> + op-sink-microwatt = <1000000>;
> + sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
> source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
> + try-power-role = "source";
> + typec-power-opmode = "3.0A";
According to the manufacturer wiki [1] "Power Output Capacity" table, the USB-C
port maximum output is 5V/2A. So I think "1.5A" would be a better value here.
[1]: https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6
>
> ports {
> #address-cells = <1>;
> @@ -1135,9 +1137,8 @@ &usb_host0_ohci {
> };
>
> &usb_host0_xhci {
> - dr_mode = "host";
> - status = "okay";
> usb-role-switch;
> + status = "okay";
>
> port {
> usb_host0_xhci_drd_sw: endpoint {
br, Hugh
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-04-21 23:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-19 2:37 [PATCH] arm64: dts: rockchip: rk3588-nanopc-t6: fix usb-c port functionality John Clark
2025-04-19 2:37 ` John Clark
2025-04-21 23:12 ` Hugh Cole-Baker [this message]
2025-04-21 23:12 ` Hugh Cole-Baker
2025-04-22 0:07 ` John Clark
2025-04-22 0:07 ` John Clark
2025-04-22 20:20 ` Hugh Cole-Baker
2025-04-22 20:20 ` Hugh Cole-Baker
2025-04-22 21:03 ` [PATCH v2] " John Clark
2025-04-22 21:03 ` John Clark
2025-05-01 13:29 ` Heiko Stuebner
2025-05-01 13:29 ` Heiko Stuebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bda07179-1ff4-46e4-9dda-ece9c63fd613@gmail.com \
--to=sigmaris@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=inindev@gmail.com \
--cc=jonas@kwiboo.se \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mjuszkiewicz@redhat.com \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.