glinet forum users reported the problem at
https://forum.gl-inet.com/t/gl-ar300m16-openwrt-22-03-0-rc5-usb-port-power-off-by-default/23199
The current code uses the regulator framework to control the USB power
supply. Although usb0 described in DTS refers to the regulator by
vbus-supply, but there is no code related to regulator implemented
in the USB driver of QCA953X, so the USB of the device cannot work.
Under the regulator framework, adding the regulator-always-on attribute
fixes this problem, but it means that USB power will not be able to be
turned off. Since we need to control the USB power supply in user space,
I didn't find any other better way under the regulator framework of Linux,
so I directly export gpio.
Signed-off-by: Luo Chongjun <luochongjun@gl-inet.com>
model = "GL.iNet GL-AR300M-Lite";
};
-/delete-node/ ®_usb_vbus;
/delete-node/ &nand_flash;
label = "green:wlan";
};
-&usb0 {
- /delete-property/ vbus-supply;
-};
};
};
- reg_usb_vbus: reg_usb_vbus {
- compatible = "regulator-fixed";
-
- regulator-name = "usb_vbus";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
- enable-active-high;
+ gpio-export {
+ compatible = "gpio-export";
+
+ gpio_usb_power {
+ gpio-export,name = "usb_power";
+ gpio-export,output = <1>;
+ gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
+ };
};
leds {
};
&usb0 {
- vbus-supply = <®_usb_vbus>;
status = "okay";
};