When should gpio-restart be used/avoided?
Bjørn Mork
bjorn at mork.no
Sat Aug 13 10:12:22 PDT 2022
I just got myself a ZTE286D. But after installing OpenWrt I had an
unexpected problem on reboot. The Openwrt DTS includes a gpio-restart
device:
gpio-restart {
compatible = "gpio-restart";
gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>;
};
The gpio-restart driver is therefore used to reboot the system due to
default priorities.
I have two concerns about this:
1) it's different from OEM, and
2) it cuts power to the 3.3V VCC console line on reboot
A quick test indicates that reboot works just fine without using
gpio-restart in OpenWrt too. And a similar node seems to be rare in
this target. AFAICS, this is the only device having one.
So I wonder if we could/should remove that gpio-restart device. What do
you think?
The reason I ask is because the VCC toggling causes unnecessary problems
for me. I realize that I have an unusual setup, but I have connected a
bluetooth module to the console port. Toggling the console VCC on
reboot makes it hard/imposible to enter the bootloader, or to capture
the whole boot log. It takes some time before the console server
notices that the bluetooth device disappeared and tries to reconnect. I
believe this is an unwanted side effect. And it wasn't like that with
OEM.
This is of course only a minor problem. In addition to just pathcing the
DTS myself, I could also put something like
test -w /sys/bus/platform/drivers/restart-gpio/unbind && echo gpio-restart >/sys/bus/platform/drivers/restart-gpio/unbind
into /etc/rc.local. That's a perfectly fine workaround. But I wanted
to ask becasuse of the different behaviour in OEM.
Bjørn
More information about the openwrt-devel
mailing list