diff --git a/board/nm/nmhw21/board.c b/board/nm/nmhw21/board.c index f90b03f8ea..db4009ae68 100644 --- a/board/nm/nmhw21/board.c +++ b/board/nm/nmhw21/board.c @@ -703,42 +703,48 @@ static void init_gsm(void) /* * Perform power up sequence for TOBY-L2 modem. - * - * Modem is initially disabled and does not start automatically. - * Enable power and start modem by "pressing" POWER_ON_OFF input for 1.0s. - * + * + * TOBY-L2 series can be switched on in one of the following ways: + * - Rising edge on the VCC pin to a valid voltage for module supply, + * i.e. applying module supply + * - Low level on the PWR_ON pin, which is normally set high by an + * internal pull-up, for a valid time period when the applied VCC + * voltage is within the valid operating range (see section 4.2.8). + * - Low level on the RESET_N pin, which is normally set high by an + * internal pull-up, for a valid time period when the applied VCC + * voltage is within the valid operating range (see section 4.2.9). + * + * PWR_ON low time: 5 ms - Low time to switch-on the module + * RESET_N low time: 18..800 ms - Low time to switch-on the module + * 2.1..15 s - Low time to reset the module + * 16 s - Low time to switch-off the module + * * References: * - uBlox TOBY-L2 Datasheet UBX-13004573 - R24 * 2.3.1 Module power-on + * 4.2.8 PWR_ON pin + * 4.2.9 RESET_N pin + * + * Functionality: + * - Leave GSM power enable as is (default at power up = off) + * - Set reset line inactive (note: inverter logic in HW present) + * - Leave button unpressed (note: inverter logic in HW present) + * - Modem shall be enabled by Linux system by enabling GSM power + * supply */ - bus = da9063_claim_i2c_bus(); - puts("GSM: "); - /* TODO: Keep Power-On and use GSM Modem Reset Signal to restart */ + REQUEST_AND_CLEAR_GPIO(GPIO_RST_GSM); /* Set reset inactive (active high) */ + REQUEST_AND_CLEAR_GPIO(GPIO_PWR_GSM); /* Set power switch inactive/released (active high) */ - REQUEST_AND_SET_GPIO(GPIO_RST_GSM); /* Assert reset (active high) */ - REQUEST_AND_CLEAR_GPIO(GPIO_PWR_GSM); /* Keep power switch inactive (released) */ - - da9063_set_gpio(PMIC_GSM_SUPPLY_EN_IO, 0); /* Switch GSM Supply off */ - mdelay(30+100); /* Give time to discharge supply */ - /* Keep of for 100ms, #3.3.2 */ - - da9063_set_gpio(PMIC_GSM_SUPPLY_EN_IO, 1); /* Enable GSM supply */ - mdelay(10); - - gpio_set_value(GPIO_RST_GSM, 0); /* Take modem out of reset */ - - puts("ready\n"); - - da9063_release_i2c_bus(bus); + puts("init\n"); } static void init_gnss(void) { /* - * Release GNSS reset line, so that modem starts up early + * Release GNSS reset line, so that module starts up early */ REQUEST_AND_SET_GPIO(GPIO_RST_GNSS); } @@ -1349,7 +1355,7 @@ int ft_board_setup(void *blob, bd_t *bd) { ft_bootloader_version(blob); ft_hw_info(blob); - ft_user_interface(blob); + ft_user_interface(blob); ft_user_module(blob); ft_eth(blob);