[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <gnh2oayoj5bwqwrixm5x5qtjdq5i3cclokekkezagonl65su3m@b6b4p7duyot5>
Date: Thu, 9 Jan 2025 18:25:47 +0100
From: Angelo Dureghello <adureghello@...libre.com>
To: David Lechner <dlechner@...libre.com>
Cc: Lars-Peter Clausen <lars@...afoo.de>,
Michael Hennerich <Michael.Hennerich@...log.com>, Jonathan Cameron <jic23@...nel.org>,
Mihail Chindris <mihail.chindris@...log.com>, Nuno Sa <nuno.sa@...log.com>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>, linux-iio@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 6/9] iio: dac: ad3552r-hs: use instruction mode for
configuration
Hi,
On 08.01.2025 15:16, David Lechner wrote:
> On 1/8/25 11:29 AM, Angelo Dureghello wrote:
> > From: Angelo Dureghello <adureghello@...libre.com>
> >
> > Use "instruction" mode over initial configuration and all other
> > non-streaming operations.
> >
> > DAC boots in streaming mode as default, and the driver is not
> > changing this mode.
> >
> > Instruction r/w is still working becouse instruction is processed
>
> s/becouse/because/
>
> > from the DAC after chip select is deasserted, this works until
> > loop mode is 0 or greater than the instruction size.
> >
> > All initial operations should be more safely done in instruction
> > mode, a mode provided for this.
>
> I'm not sure it is really "safer". The way I read the datasheet, this just
> enables bulk reads of multiple registers. So unless we need to do bulk reads
> it seems like this is just adding extra complexity to the driver without a
> tangible benefit.
>
this change was initially requested from the HDL team to stay aligned with
the HDL side streaming/non streaming mode, and later, applied since seems
a safer way to operate.
I see that for the driver and DAC point of view, this is "functionally"
not needed, but streaming mode for configuration or raw read/write works
until STREAM_MODE register is set to 0 or to a value >= to the register
size to be accessed, since the _CS deasserting completes the transaction.
I.e., a transaction with a STREAM_MODE set to 1 would fail in case of
a 16bit r/w access. Staying into streaming mode seems to me a bit tricky,
and setting to instruction mode may be safer since in this mode the
STREAM_MODE value is not important anymore.
For me is the same, i can remove related code. As you prefer.
> >
> > Signed-off-by: Angelo Dureghello <adureghello@...libre.com>
> > ---
> > drivers/iio/dac/ad3552r-hs.c | 22 ++++++++++++++++++++++
> > 1 file changed, 22 insertions(+)
> >
> > diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c
> > index 27949f207d42..991b11702273 100644
> > --- a/drivers/iio/dac/ad3552r-hs.c
> > +++ b/drivers/iio/dac/ad3552r-hs.c
> > @@ -132,6 +132,13 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev *indio_dev)
> > return -EINVAL;
> > }
> >
> > + /* Primary region access, set streaming mode (now in SPI + SDR). */
> > + ret = ad3552r_qspi_update_reg_bits(st,
> > + AD3552R_REG_ADDR_INTERFACE_CONFIG_B,
> > + AD3552R_MASK_SINGLE_INST, 0, 1);
>
> Missing undoing this operation in the error path if a later operation in this
> function fails?
>
> > + if (ret)
> > + return ret;
> > +
> > ret = st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_STREAM_MODE,
> > loop_len, 1);
> > if (ret)
>
Powered by blists - more mailing lists