On Fri, 2025-03-21 at 21:28 +0100, Angelo Dureghello wrote: > From: Angelo Dureghello <adureghello@xxxxxxxxxxxx> > > Add data source getter. > > Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx> > --- > drivers/iio/dac/adi-axi-dac.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c > index > 892d770aec69c4259de777058801c9ab33c79923..a6abd828ebdb34800cc08a2151e52a9acda9eba1 > 100644 > --- a/drivers/iio/dac/adi-axi-dac.c > +++ b/drivers/iio/dac/adi-axi-dac.c > @@ -514,6 +514,32 @@ 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; > + > + ret = regmap_read(st->regmap, AXI_DAC_CHAN_CNTRL_7_REG(chan), &val); > + if (ret) > + return ret; Is chan something that we can validate? Do we reliable know max number of channels? > + > + 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 -EINVAL; More of a nitpick comment but I would some other error code. This is not really an "Invalid argument" situation. Maybe -EIO as the HW is giving something unexpected? or ENOTSUPP (likely not exactly like this)... - Nuno Sá > .ddr_disable = axi_dac_ddr_disable, > .data_stream_enable = axi_dac_data_stream_enable, >