4.1.2 ATWILC Power On

To turn on the chip, set the CHIP_EN and RESET low, then set the CHIP_EN line high, then set the RESET high with a 5 ms delay.

Note: For the power-up sequence, the chip must be set to power-off, then set to power-on together.

A reference power control API implementation is provided below.

void wilc_wlan_power(struct wilc *wilc, bool on)
{
 if (!gpio_is_valid(wilc->power.gpios.chip_en) ||
     !gpio_is_valid(wilc->power.gpios.reset)) {
  /* In case SDIO power sequence driver is used to power this
   * device then the powering sequence is handled by the bus
   * via pm_runtime_* functions. */
  return;
 }
 if (on) {
  gpio_direction_output(wilc->power.gpios.chip_en, 1);
  mdelay(5);
  gpio_direction_output(wilc->power.gpios.reset, 1);
 } else {
  gpio_direction_output(wilc->power.gpios.chip_en, 0);
  gpio_direction_output(wilc->power.gpios.reset, 0);
 }
}