Here is code:
#define NETWORK_INFO_GPIO PERIPHS_IO_MUX_MTMS_U
#define NETWORK_INFO_GPIO_FUNC FUNC_GPIO14
#define NETWORK_INFO_GPIO_ID GPIO_ID_PIN(14)
#define NETWORK_INFO_GPIO_BIT BIT14
#define NETWORK_INFO_GPIO_ENABLE() gpio_output_set(NETWORK_INFO_GPIO_BIT, 0, NETWORK_INFO_GPIO_BIT, 0)
#define NETWORK_INFO_GPIO_DISABLE() gpio_output_set(0, NETWORK_INFO_GPIO_BIT, NETWORK_INFO_GPIO_BIT, 0)
void ICACHE_FLASH_ATTR gpio_interrupt_init(void)
{
ETS_GPIO_INTR_DISABLE();
//gpio_intr_handler_register((gpio_intr_handler_fn_t)gpio_intr, NULL);
ETS_GPIO_INTR_ATTACH((gpio_intr_handler_fn_t)gpio_intr, NULL);
GPIO_DIS_OUTPUT(14);
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, NETWORK_INFO_GPIO_BIT);
gpio_pin_intr_state_set(NETWORK_INFO_GPIO_ID, GPIO_PIN_INTR_ANYEDGE);
ETS_GPIO_INTR_ENABLE();
}
LOCAL void gpio_intr(uint32 intr_mask, void *arg)
{
WIFI_GPIO_DISABLE();
/* Clear interrupt state */
uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);
}
void ICACHE_FLASH_ATTR user_init()
{
gpio_init();
PIN_FUNC_SELECT(NETWORK_INFO_GPIO, NETWORK_INFO_GPIO_FUNC);
NETWORK_INFO_GPIO_DISABLE();
PIN_FUNC_SELECT(WIFI_GPIO, WIFI_GPIO_FUNC);
WIFI_GPIO_ENABLE();
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
gpio_output_set(0, BIT12, BIT12, 0);
gpio_interrupt_init();
}