示例#1
0
文件: men_z188_adc.c 项目: 7799/linux
static int z188_iio_read_raw(struct iio_dev *iio_dev,
			struct iio_chan_spec const *chan,
			int *val,
			int *val2,
			long info)
{
	struct z188_adc *adc = iio_priv(iio_dev);
	int ret;
	u16 tmp;

	switch (info) {
	case IIO_CHAN_INFO_RAW:
		tmp = readw(adc->base + chan->channel * 4);

		if (ADC_OVR(tmp)) {
			dev_info(&iio_dev->dev,
				"Oversampling error on ADC channel %d\n",
				chan->channel);
			return -EIO;
		}
		*val = ADC_DATA(tmp);
		ret = IIO_VAL_INT;
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}
示例#2
0
/*
 * vt1603_get_bat_convert_data - get battery converted data
 * @bat_drv: vt1603 battery driver data
 */
static u16 vt1603_get_bat_convert_data(struct vt1603_bat_drvdata *bat_drv)
{
    u8 data_l, data_h;

    data_l = vt1603_get_reg8(bat_drv, VT1603_DATL_REG);
    data_h = vt1603_get_reg8(bat_drv, VT1603_DATH_REG);
    return ADC_DATA(data_l, data_h);
}
示例#3
0
/*
 * vt1603_get_bat_convert_data - get battery converted data
 * @bat_drv: vt1603 battery driver data
 */
static int vt1603_get_bat_data(struct vt1603_bat_drvdata *bat_drv,int *data)
{
    int ret = 0;
    u8 data_l, data_h;
	
    ret |= vt1603_read8(bat_drv, VT1603_DATL_REG, &data_l);
    ret |= vt1603_read8(bat_drv, VT1603_DATH_REG, &data_h);
	
    *data = ADC_DATA(data_l, data_h);
	
    return ret;
}