int gpio_get_value(unsigned gpio) { #ifdef AXP_GPIO if (gpio >= SUNXI_GPIO_AXP0_START) return axp_gpio_get_value(gpio - SUNXI_GPIO_AXP0_START); #endif return sunxi_gpio_input(gpio); }
static ssize_t show_value(struct device *dev, struct device_attribute *attr, char *buf) { struct virtual_gpio_data *data = dev_get_drvdata(dev); int ret; mutex_lock(&data->lock); ret = axp_gpio_get_value(data->gpio,&data->value); mutex_unlock(&data->lock); if(ret) return ret; return sprintf(buf, "%d\n", data->value); }