2270332_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2270332_ja-JP

2270332_ja-JP

i.MX8MPにHD3SS3220 Type-Cを追加するとWake on LANが失敗する

私は 6.12.34 カーネルに取り組んでおり、カーネル デバイス ツリー imx8mp-evk.dts を変更しています。

nxp-imx/imx-manifest: i.MX リリースマニフェスト( imx-linux-walnascar )

次のようにデバイス ツリーに hd3ss3220 タイプ C コントローラを追加すると、WOL が失敗しました。

/{
connector {
		compatible = "usb-c-connector";
		label = "USB-C";
		data-role = "dual";
		status = "disabled";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hs_ep: endpoint {
					remote-endpoint = <&usb3_hs_ep>;
				};
			};
			port@1 {
				reg = <1>;

				ss_ep: endpoint {
					remote-endpoint = <&hd3ss3220_in_ep>;
				};
			};
		};
	};
};

&iomux {
pinctrl_hd3ss3220: hd3ss3220grp {
		fsl,pins = <
			MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12	0x140
		>;
	};
};

&i2c2 {
clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";
hd3ss3220@67 {
		compatible = "ti,hd3ss3220";
		reg = <0x67>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hd3ss3220>;
		interrupt-parent = <&gpio5>;
		interrupts = <12 IRQ_TYPE_LEVEL_LOW>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hd3ss3220_in_ep: endpoint {
					remote-endpoint = <&ss_ep>;
				};
 			};
			port@1 {
				reg = <1>;

				hd3ss3220_out_ep: endpoint {
					remote-endpoint = <&usb3_role_switch>;
				};
 			};
 		};
	};
};

&usb_dwc3_1 {
	dr_mode = "otg";
	hnp-disable;
	srp-disable;
	adp-disable;
	usb-role-switch;
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			usb3_hs_ep: endpoint {
				remote-endpoint = <&hs_ep>;
			};
		};
		port@1 {
			reg = <1>;
			usb3_role_switch: endpoint {
				remote-endpoint = <&hd3ss3220_out_ep>;
			};
		};
	};
};

サスペンド コマンドを呼び出した後、WOL 機能が失敗しました。

確認したところ、ウェイクアップはサポートされているようです

root@imx8mpevk:~# ethtool -s eth0 wol g
root@imx8mpevk:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Full
                                100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Full
                                100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: ug
        Wake-on: g
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes
root@imx8mpevk:~# dmesg | grep -i wake
[    3.148381] imx-dwmac 30bf0000.ethernet: Wake-Up On Lan supported
[   13.933830] stmmac: wakeup enable
root@imx8mpevk:~# cat /sys/class/net/eth0/device/power/wakeup
enabled

しかし、6.6.52 カーネル ( imx-linux-scarthgap ) 上のデバイス ツリーの同じ設定は正常に機能しました。


誰か助けてくれませんか?


i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlusLinuxRe: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed

こんにちは、

dts ではIRQ_TYPE_EDGE_FALLINGを使用してみてください。

よろしくお願いします、
志明

Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed

割り込み信号を「 IRQ_TYPE_EDGE_FALLING 」に変更しても、ウェイクアップ機能は依然として動作しませんでした。

現在、次の設定を使用してウェイクアップ機能が正常に動作しました。

/ {
    connector {
		compatible = "usb-c-connector";
		label = "USB-C";
		data-role = "dual";
		status = "disabled";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hs_ep: endpoint {
					remote-endpoint = <&usb3_hs_ep>;
				};
			};
			port@1 {
				reg = <1>;

				ss_ep: endpoint {
					remote-endpoint = <&hd3ss3220_in_ep>;
				};
			};
		};
	};
};

&i2c2 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";

	hd3ss3220@67 {
		compatible = "ti,hd3ss3220";
		reg = <0x67>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hd3ss3220>;
		interrupt-parent = <&gpio5>;
		interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
		wakeup-source;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hd3ss3220_in_ep: endpoint {
					remote-endpoint = <&ss_ep>;
				};
 			};
			port@1 {
				reg = <1>;

				hd3ss3220_out_ep: endpoint {
					remote-endpoint = <&usb3_role_switch>;
				};
 			};
 		};
	};
};

&iomux {
    pinctrl_hd3ss3220: hd3ss3220grp {
		fsl,pins = <
			MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12	0x140 // USB_SW_INTn (AH20)
		>;
	};
};

&usb3_phy1 {
	fsl,phy-tx-preemp-amp-tune-microamp = <1800>;
	fsl,phy-tx-vref-tune-percent = <116>;
	status = "okay";
};

&usb3_1 {
	status = "okay";
};

&usb_dwc3_1 {
	dr_mode = "otg";
	hnp-disable;
	srp-disable;
	adp-disable;
	usb-role-switch;
	role-switch-default-mode = "host";
	snps,dis-u1-entry-quirk;
	snps,dis-u2-entry-quirk;
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			usb3_hs_ep: endpoint {
				remote-endpoint = <&hs_ep>;
			};
		};
		port@1 {
			reg = <1>;
			usb3_role_switch: endpoint {
				remote-endpoint = <&hd3ss3220_out_ep>;
			};
		};
	};
};

しかし、ご覧のとおり、コネクタのステータスは「無効」に設定されています。なぜでしょうか?

この行を削除すると、ウェイクアップ機能が失敗しました。

Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed

こんにちは@AlanWen

私の個人的な意見では、この問題はカーネルの汎用コンポーネントのアップグレードに関連している可能性が高く、i.MX 関連のドライバに起因するものではないはずです。同じハードウェア プラットフォームを持っていないため、問題がどこにあるのかを正確に特定することはできません。

よろしくお願いします、
志明

Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed

しかし、ウェイクアップ機能は、コネクタ ステータス ラインのない同じ設定を使用して、カーネル バージョン 6.6.52 で動作しました。

以下の通りです:

/ {
    connector {
		compatible = "usb-c-connector";
		label = "USB-C";
		data-role = "dual";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hs_ep: endpoint {
					remote-endpoint = <&usb3_hs_ep>;
				};
			};
			port@1 {
				reg = <1>;

				ss_ep: endpoint {
					remote-endpoint = <&hd3ss3220_in_ep>;
				};
			};
		};
	};
};

&i2c2 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";

	hd3ss3220@67 {
		compatible = "ti,hd3ss3220";
		reg = <0x67>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hd3ss3220>;
		interrupt-parent = <&gpio5>;
		interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
		wakeup-source;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				hd3ss3220_in_ep: endpoint {
					remote-endpoint = <&ss_ep>;
				};
 			};
			port@1 {
				reg = <1>;

				hd3ss3220_out_ep: endpoint {
					remote-endpoint = <&usb3_role_switch>;
				};
 			};
 		};
	};
};

&iomux {
    pinctrl_hd3ss3220: hd3ss3220grp {
		fsl,pins = <
			MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12	0x140 // USB_SW_INTn (AH20)
		>;
	};
};

&usb3_phy1 {
	fsl,phy-tx-preemp-amp-tune-microamp = <1800>;
	fsl,phy-tx-vref-tune-percent = <116>;
	status = "okay";
};

&usb3_1 {
	status = "okay";
};

&usb_dwc3_1 {
	dr_mode = "otg";
	hnp-disable;
	srp-disable;
	adp-disable;
	usb-role-switch;
	role-switch-default-mode = "host";
	snps,dis-u1-entry-quirk;
	snps,dis-u2-entry-quirk;
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			usb3_hs_ep: endpoint {
				remote-endpoint = <&hs_ep>;
			};
		};
		port@1 {
			reg = <1>;
			usb3_role_switch: endpoint {
				remote-endpoint = <&hd3ss3220_out_ep>;
			};
		};
	};
};
Tags (1)
No ratings
Version history
Last update:
‎01-10-2026 03:31 AM
Updated by: