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) | 8QuadPlus Linux Re: 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>;
};
};
};
};
查看全文