コード例 #1
0
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;
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: pinctrl-axp.c プロジェクト: condret/OrangePI-Kernel
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;
}
コード例 #4
0
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)
コード例 #5
0
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;
}
コード例 #6
0
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) {