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