Esempio n. 1
0
static int vf610_adc_buffer_postenable(struct iio_dev *indio_dev)
{
	struct vf610_adc *info = iio_priv(indio_dev);
	unsigned int channel;
	int ret;
	int val;

	ret = iio_triggered_buffer_postenable(indio_dev);
	if (ret)
		return ret;

	val = readl(info->regs + VF610_REG_ADC_GC);
	val |= VF610_ADC_ADCON;
	writel(val, info->regs + VF610_REG_ADC_GC);

	channel = find_first_bit(indio_dev->active_scan_mask,
						indio_dev->masklength);

	val = VF610_ADC_ADCHC(channel);
	val |= VF610_ADC_AIEN;

	writel(val, info->regs + VF610_REG_ADC_HC0);

	return 0;
}
Esempio n. 2
0
static int st_gyro_buffer_postenable(struct iio_dev *indio_dev)
{
	int err;
	struct st_sensor_data *gdata = iio_priv(indio_dev);

	gdata->buffer_data = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
	if (gdata->buffer_data == NULL) {
		err = -ENOMEM;
		goto allocate_memory_error;
	}

	err = st_sensors_set_axis_enable(indio_dev,
					(u8)indio_dev->active_scan_mask[0]);
	if (err < 0)
		goto st_gyro_buffer_postenable_error;

	err = iio_triggered_buffer_postenable(indio_dev);
	if (err < 0)
		goto st_gyro_buffer_postenable_error;

	return err;

st_gyro_buffer_postenable_error:
	kfree(gdata->buffer_data);
allocate_memory_error:
	return err;
}
static int st_press_buffer_postenable(struct iio_dev *indio_dev)
{
	int err;
	struct st_sensor_data *pdata = iio_priv(indio_dev);

	pdata->buffer_data = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
	if (pdata->buffer_data == NULL) {
		err = -ENOMEM;
		goto allocate_memory_error;
	}

	err = iio_triggered_buffer_postenable(indio_dev);
	if (err < 0)
		goto st_press_buffer_postenable_error;

	return err;

st_press_buffer_postenable_error:
	kfree(pdata->buffer_data);
allocate_memory_error:
	return err;
}