int axp_gpio_set_value(int gpio, int value) { int io_state,ret; ret = axp_gpio_get_io(gpio,&io_state); if(ret) return ret; if(io_state){ if(value){ switch(gpio) { case 0: axp_clr_bits(&axp->dev,AXP20_GPIO0_CFG,0x06); return axp_set_bits(&axp->dev,AXP20_GPIO0_CFG,0x01); case 1: axp_clr_bits(&axp->dev,AXP20_GPIO1_CFG,0x06); return axp_set_bits(&axp->dev,AXP20_GPIO1_CFG,0x01); case 2: return -EINVAL; case 3: return axp_set_bits(&axp->dev,AXP20_GPIO3_CFG,0x02); default:break; } } else{ switch(gpio) { case 0: return axp_clr_bits(&axp->dev,AXP20_GPIO0_CFG,0x03); case 1: return axp_clr_bits(&axp->dev,AXP20_GPIO1_CFG,0x03); case 2: return axp_clr_bits(&axp->dev,AXP20_GPIO1_CFG,0x03); case 3: return axp_clr_bits(&axp->dev,AXP20_GPIO3_CFG,0x02); default:break; } } return -ENXIO; } return -ENXIO; }
static ssize_t show_io(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_io(data->gpio,&data->io); mutex_unlock(&data->lock); if(ret) return ret; return sprintf(buf, "%d\n", data->io); }
static int axp_gpio_get_data(int gpio) { int io_state; uint8_t ret; uint8_t val; int value; struct axp_dev *axp = NULL; axp = axp_dev_lookup(AXP19); if (NULL == axp) { printk("%s: axp data is null\n", __func__); return -ENXIO; } ret = axp_gpio_get_io(gpio,&io_state); if(ret) return ret; if(io_state){ switch(gpio) { case 0:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = val & 0x01;break; case 1:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = (val & 0x02)?1:0;break; case 2:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = (val & 0x04)?1:0;break; case 3:ret = axp_read(axp->dev,AXP19_GPIO34_STATE,&val); value =val & 0x01;break; case 4:ret = axp_read(axp->dev,AXP19_GPIO34_STATE,&val); value =(val & 0x02)?1:0;break; case 5:ret = axp_read(axp->dev,AXP19_GPIO5_STATE,&val); value =(val & 0x20)?1:0;break; case 6:ret = axp_read(axp->dev,AXP19_GPIO67_STATE,&val); value =(val & 0x20)?1:0;break; case 7:ret = axp_read(axp->dev,AXP19_GPIO67_STATE,&val); value =(val & 0x02)?1:0;break; default:return -ENXIO; } } else{ switch(gpio) { case 0:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = (val & 0x10)?1:0;break; case 1:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = (val & 0x20)?1:0;break; case 2:ret = axp_read(axp->dev,AXP19_GPIO012_STATE,&val); value = (val & 0x40)?1:0;break; case 3:ret = axp_read(axp->dev,AXP19_GPIO34_STATE,&val); value = (val & 0x10)?1:0;break; case 4:ret = axp_read(axp->dev,AXP19_GPIO34_STATE,&val); value = (val & 0x20)?1:0;break; case 5:ret = axp_read(axp->dev,AXP19_GPIO5_STATE,&val); value = (val & 0x10);break; case 6:ret = axp_read(axp->dev,AXP19_GPIO67_STATE,&val); value =(val & 0x10)?1:0;break; case 7:ret = axp_read(axp->dev,AXP19_GPIO67_STATE,&val); value =(val & 0x01)?1:0;break; default:return -ENXIO; } } return value; }
int axp_gpio_get_value(int gpio, int *value) { int io_state; int ret; uint8_t val; ret = axp_gpio_get_io(gpio,&io_state); if(ret) return ret; if(io_state){ switch(gpio) { case 0:ret = axp_read(&axp->dev,AXP20_GPIO0_CFG,&val);*value = val & 0x01;break; case 1:ret =axp_read(&axp->dev,AXP20_GPIO1_CFG,&val);*value = val & 0x01;break; case 2:ret = 0; *value = 0;break; case 3:ret = axp_read(&axp->dev,AXP20_GPIO3_CFG,&val);val &= 0x02;*value = val>>1;break; default:return -ENXIO; } } else{ switch(gpio)
int axp_gpio_get_value(int gpio, int *value) { int io_state; int ret; uint8_t val; ret = axp_gpio_get_io(gpio,&io_state); if(ret) return ret; if(io_state){ switch(gpio) { case 0:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val);*value = val & 0x01;break; case 1:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val);*value = (val & 0x02)?1:0;break; case 2:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val);*value = (val & 0x04)?1:0;break; case 3:ret = axp_read(&axp->dev,AXP19_GPIO34_STATE,&val);*value =val & 0x01;break; case 4:ret = axp_read(&axp->dev,AXP19_GPIO34_STATE,&val);*value =(val & 0x02)?1:0;break; case 5:ret = axp_read(&axp->dev,AXP19_GPIO5_STATE,&val);*value =(val & 0x20)?1:0;break; case 6:ret = axp_read(&axp->dev,AXP19_GPIO67_STATE,&val);*value =(val & 0x20)?1:0;break; case 7:ret = axp_read(&axp->dev,AXP19_GPIO67_STATE,&val);*value =(val & 0x02)?1:0;break; default:return -ENXIO; } } else{ switch(gpio) { case 0:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val); *value = (val & 0x10)?1:0;break; case 1:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val); *value = (val & 0x20)?1:0;break; case 2:ret = axp_read(&axp->dev,AXP19_GPIO012_STATE,&val); *value = (val & 0x40)?1:0;break; case 3:ret = axp_read(&axp->dev,AXP19_GPIO34_STATE,&val); *value = (val & 0x10)?1:0;break; case 4:ret = axp_read(&axp->dev,AXP19_GPIO34_STATE,&val); *value = (val & 0x20)?1:0;break; case 5:ret = axp_read(&axp->dev,AXP19_GPIO5_STATE,&val); *value = (val & 0x10);break; case 6:ret = axp_read(&axp->dev,AXP19_GPIO67_STATE,&val);*value =(val & 0x10)?1:0;break; case 7:ret = axp_read(&axp->dev,AXP19_GPIO67_STATE,&val);*value =(val & 0x01)?1:0;break; default:return -ENXIO; } } return ret; }
int axp_gpio_get_value(int gpio, int *value) { int io_state; int ret; uint8_t val; if (!axp) { printk("[AXP] driver has not ready now, wait...\n"); return -ENODEV; } ret = axp_gpio_get_io(gpio,&io_state); if(ret) return ret; if(io_state){ switch (gpio) { case 0:ret = axp_read(&axp->dev, AXP20_GPIO0_CFG, &val);*value = val & 0x01;break; case 1:ret = axp_read(&axp->dev, AXP20_GPIO1_CFG, &val);*value = val & 0x01;break; case 2:ret = axp_read(&axp->dev, AXP20_GPIO2_CFG, &val);*value = val & 0x01;break; case 3:ret = axp_read(&axp->dev, AXP20_GPIO3_CFG, &val);val &= 0x02;*value = val>>1;break; default: return -ENXIO; } } else { switch (gpio) {