diff --git a/src/gpio.c b/src/gpio.c index 994d228..d3bf329 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -74,6 +74,10 @@ int gpio_line_set_value(struct EG25Manager *manager, int line, enum gpiod_line_v int gpio_sequence_poweron(struct EG25Manager *manager) { + /* Disable airplane mode in case it was enabled by other software. The + * W_DISABLE pin is active-low, so we set it to high here. */ + gpio_line_set_value(manager, GPIO_OUT_DISABLE, GPIOD_LINE_VALUE_ACTIVE); + /* * Force the modem to poweroff using the RESET_N pin before attempting to * boot in case the it got into a bad state. @@ -110,8 +114,6 @@ int gpio_sequence_poweron(struct EG25Manager *manager) int gpio_sequence_shutdown(struct EG25Manager *manager) { - gpio_line_set_value(manager, GPIO_OUT_DISABLE, GPIOD_LINE_VALUE_ACTIVE); - gpio_line_set_value(manager, GPIO_OUT_PWRKEY, GPIOD_LINE_VALUE_ACTIVE); sleep(1); gpio_line_set_value(manager, GPIO_OUT_PWRKEY, GPIOD_LINE_VALUE_INACTIVE);