int wifi_gpio_operate(struct wifi_power *gpio, int flag) { int sensitive; if (gpio->use_gpio == POWER_NOT_USE_GPIO) return 0; if (gpio->gpio_iomux == POWER_GPIO_IOMUX) { OS_IOMUX(gpio->iomux_name, gpio->iomux_value); } if (flag == GPIO_SWITCH_ON) sensitive = gpio->sensi_level; else sensitive = 1 - gpio->sensi_level; if (gpio->use_gpio == POWER_USE_EXT_GPIO) { wifi_extgpio_operation(gpio->gpio_id, sensitive); } else { #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25) gpio_direction_output(gpio->gpio_id, GPIO_OUT); __gpio_set(gpio->gpio_id, sensitive); #else gpio_direction_output(gpio->gpio_id, sensitive); gpio_set_value(gpio->gpio_id, sensitive); #endif } return 0; }
int wifi_gpio_operate(struct wifi_power *gpio, int flag) { int sensitive; if (gpio->use_gpio == POWER_NOT_USE_GPIO) return 0; if (gpio->gpio_iomux == POWER_GPIO_IOMUX) { OS_IOMUX(gpio->iomux_name, gpio->iomux_value); } if (flag == GPIO_SWITCH_ON) sensitive = gpio->sensi_level; else sensitive = 1 - gpio->sensi_level; if (gpio->use_gpio == POWER_USE_EXT_GPIO) { wifi_extgpio_operation(gpio->gpio_id, sensitive); } else { int ret; ret = gpio_request(gpio->gpio_id, NULL); if (ret != 0) printk("Request GPIO for WIFI POWER error!\n"); gpio_direction_output(gpio->gpio_id, sensitive); gpio_set_value(gpio->gpio_id, sensitive); gpio_free(gpio->gpio_id); } return 0; }