Commit ca74d0eb authored by Angelo Dureghello's avatar Angelo Dureghello Committed by Jonathan Cameron
Browse files

iio: dac: adi-axi-dac: add data source get

parent 20863215
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -536,6 +536,35 @@ static int axi_dac_data_source_set(struct iio_backend *back, unsigned int chan,
	}
}

static int axi_dac_data_source_get(struct iio_backend *back, unsigned int chan,
				   enum iio_backend_data_source *data)
{
	struct axi_dac_state *st = iio_backend_get_priv(back);
	int ret;
	u32 val;

	if (chan > AXI_DAC_CHAN_CNTRL_MAX)
		return -EINVAL;

	ret = regmap_read(st->regmap, AXI_DAC_CHAN_CNTRL_7_REG(chan), &val);
	if (ret)
		return ret;

	switch (val) {
	case AXI_DAC_DATA_INTERNAL_TONE:
		*data = IIO_BACKEND_INTERNAL_CONTINUOUS_WAVE;
		return 0;
	case AXI_DAC_DATA_DMA:
		*data = IIO_BACKEND_EXTERNAL;
		return 0;
	case AXI_DAC_DATA_INTERNAL_RAMP_16BIT:
		*data = IIO_BACKEND_INTERNAL_RAMP_16BIT;
		return 0;
	default:
		return -EIO;
	}
}

static int axi_dac_set_sample_rate(struct iio_backend *back, unsigned int chan,
				   u64 sample_rate)
{
@@ -818,6 +847,7 @@ static const struct iio_backend_ops axi_ad3552r_ops = {
	.request_buffer = axi_dac_request_buffer,
	.free_buffer = axi_dac_free_buffer,
	.data_source_set = axi_dac_data_source_set,
	.data_source_get = axi_dac_data_source_get,
	.ddr_enable = axi_dac_ddr_enable,
	.ddr_disable = axi_dac_ddr_disable,
	.data_stream_enable = axi_dac_data_stream_enable,