All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nuno Sá" <noname.nuno@gmail.com>
To: "Angelo Dureghello" <adureghello@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Olivier Moysan" <olivier.moysan@foss.st.com>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>
Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org,
	 linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/5] iio: dac: adi-axi-dac: add cntrl chan check
Date: Mon, 07 Apr 2025 17:11:48 +0100	[thread overview]
Message-ID: <55fea555e7fc756d26220b6c9a06053f8ae5dc56.camel@gmail.com> (raw)
In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-1-61874065b60f@baylibre.com>

On Mon, 2025-04-07 at 10:52 +0200, Angelo Dureghello wrote:
> From: Angelo Dureghello <adureghello@baylibre.com>
> 
> Add validity check on CNTRL_X channels (valid as 0 to 15).
> 
> Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
> ---

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  drivers/iio/dac/adi-axi-dac.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c
> index
> 892d770aec69c4259de777058801c9ab33c79923..f86acb98b0cffb09bf4d4626f932bf1edc91
> 1e2b 100644
> --- a/drivers/iio/dac/adi-axi-dac.c
> +++ b/drivers/iio/dac/adi-axi-dac.c
> @@ -84,6 +84,7 @@
>  #define AXI_DAC_CHAN_CNTRL_7_REG(c)		(0x0418 + (c) * 0x40)
>  #define   AXI_DAC_CHAN_CNTRL_7_DATA_SEL		GENMASK(3, 0)
>  
> +#define AXI_DAC_CHAN_CNTRL_MAX			15
>  #define AXI_DAC_RD_ADDR(x)			(BIT(7) | (x))
>  
>  /* 360 degrees in rad */
> @@ -186,6 +187,9 @@ static int __axi_dac_frequency_get(struct axi_dac_state
> *st, unsigned int chan,
>  	u32 reg, raw;
>  	int ret;
>  
> +	if (chan > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	if (!st->dac_clk) {
>  		dev_err(st->dev, "Sampling rate is 0...\n");
>  		return -EINVAL;
> @@ -230,6 +234,9 @@ static int axi_dac_scale_get(struct axi_dac_state *st,
>  	int ret, vals[2];
>  	u32 reg, raw;
>  
> +	if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	if (tone_2)
>  		reg = AXI_DAC_CHAN_CNTRL_3_REG(chan->channel);
>  	else
> @@ -264,6 +271,9 @@ static int axi_dac_phase_get(struct axi_dac_state *st,
>  	u32 reg, raw, phase;
>  	int ret, vals[2];
>  
> +	if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	if (tone_2)
>  		reg = AXI_DAC_CHAN_CNTRL_4_REG(chan->channel);
>  	else
> @@ -291,6 +301,9 @@ static int __axi_dac_frequency_set(struct axi_dac_state
> *st, unsigned int chan,
>  	u16 raw;
>  	int ret;
>  
> +	if (chan > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	if (!sample_rate || freq > sample_rate / 2) {
>  		dev_err(st->dev, "Invalid frequency(%u) dac_clk(%llu)\n",
>  			freq, sample_rate);
> @@ -342,6 +355,9 @@ static int axi_dac_scale_set(struct axi_dac_state *st,
>  	u32 raw = 0, reg;
>  	int ret;
>  
> +	if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	ret = iio_str_to_fixpoint(buf, 100000, &integer, &frac);
>  	if (ret)
>  		return ret;
> @@ -385,6 +401,9 @@ static int axi_dac_phase_set(struct axi_dac_state *st,
>  	u32 raw, reg;
>  	int ret;
>  
> +	if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	ret = iio_str_to_fixpoint(buf, 100000, &integer, &frac);
>  	if (ret)
>  		return ret;
> @@ -493,6 +512,9 @@ static int axi_dac_data_source_set(struct iio_backend
> *back, unsigned int chan,
>  {
>  	struct axi_dac_state *st = iio_backend_get_priv(back);
>  
> +	if (chan > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
> +
>  	switch (data) {
>  	case IIO_BACKEND_INTERNAL_CONTINUOUS_WAVE:
>  		return regmap_update_bits(st->regmap,
> @@ -521,6 +543,8 @@ static int axi_dac_set_sample_rate(struct iio_backend
> *back, unsigned int chan,
>  	unsigned int freq;
>  	int ret, tone;
>  
> +	if (chan > AXI_DAC_CHAN_CNTRL_MAX)
> +		return -EINVAL;
>  	if (!sample_rate)
>  		return -EINVAL;
>  	if (st->reg_config & AXI_DAC_CONFIG_DDS_DISABLE)

  reply	other threads:[~2025-04-07 16:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-07  8:52 [PATCH v3 0/5] iio: ad3552r-hs: add support for internal ramp generator Angelo Dureghello
2025-04-07  8:52 ` [PATCH v3 1/5] iio: dac: adi-axi-dac: add cntrl chan check Angelo Dureghello
2025-04-07 16:11   ` Nuno Sá [this message]
2025-04-07  8:52 ` [PATCH v3 2/5] docs: iio: add documentation for ad3552r driver Angelo Dureghello
2025-04-07  8:52 ` [PATCH v3 3/5] iio: backend: add support for data source get Angelo Dureghello
2025-04-07 16:12   ` Nuno Sá
2025-04-07  8:52 ` [PATCH v3 4/5] iio: dac: adi-axi-dac: add " Angelo Dureghello
2025-04-07 16:13   ` Nuno Sá
2025-04-07  8:52 ` [PATCH v3 5/5] iio: dac: ad3552r-hs: add support for internal ramp Angelo Dureghello
2025-04-07 16:21   ` Nuno Sá

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55fea555e7fc756d26220b6c9a06053f8ae5dc56.camel@gmail.com \
    --to=noname.nuno@gmail.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=adureghello@baylibre.com \
    --cc=corbet@lwn.net \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=olivier.moysan@foss.st.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.