All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: mihail.chindris@analog.com
Cc: linux-iio@vger.kernel.org
Subject: [bug report] drivers:iio:dac: Add AD3552R driver support
Date: Fri, 1 Apr 2022 13:06:01 +0300	[thread overview]
Message-ID: <20220401100601.GA29860@kili> (raw)

Hello Mihail Chindris,

The patch 8f2b54824b28: "drivers:iio:dac: Add AD3552R driver support"
from Dec 13, 2021, leads to the following Smatch static checker
warning:

	drivers/iio/dac/ad3552r.c:812 ad3552r_configure_custom_gain()
	warn: 'gain_child' is not an error pointer

drivers/iio/dac/ad3552r.c
    799 static int ad3552r_configure_custom_gain(struct ad3552r_desc *dac,
    800                                          struct fwnode_handle *child,
    801                                          u32 ch)
    802 {
    803         struct device *dev = &dac->spi->dev;
    804         struct fwnode_handle *gain_child;
    805         u32 val;
    806         int err;
    807         u8 addr;
    808         u16 reg = 0, offset;
    809 
    810         gain_child = fwnode_get_named_child_node(child,
    811                                                  "custom-output-range-config");
--> 812         if (IS_ERR(gain_child)) {

This should probably be a NULL check right?  return -EINVAL;?

    813                 dev_err(dev,
    814                         "mandatory custom-output-range-config property missing\n");
    815                 return PTR_ERR(gain_child);
    816         }
    817 
    818         dac->ch_data[ch].range_override = 1;
    819         reg |= ad3552r_field_prep(1, AD3552R_MASK_CH_RANGE_OVERRIDE);
    820 
    821         err = fwnode_property_read_u32(gain_child, "adi,gain-scaling-p", &val);
    822         if (err) {
    823                 dev_err(dev, "mandatory adi,gain-scaling-p property missing\n");
    824                 goto put_child;
    825         }
    826         reg |= ad3552r_field_prep(val, AD3552R_MASK_CH_GAIN_SCALING_P);
    827         dac->ch_data[ch].p = val;
    828 
    829         err = fwnode_property_read_u32(gain_child, "adi,gain-scaling-n", &val);
    830         if (err) {
    831                 dev_err(dev, "mandatory adi,gain-scaling-n property missing\n");
    832                 goto put_child;
    833         }
    834         reg |= ad3552r_field_prep(val, AD3552R_MASK_CH_GAIN_SCALING_N);
    835         dac->ch_data[ch].n = val;
    836 
    837         err = fwnode_property_read_u32(gain_child, "adi,rfb-ohms", &val);
    838         if (err) {
    839                 dev_err(dev, "mandatory adi,rfb-ohms property missing\n");
    840                 goto put_child;
    841         }
    842         dac->ch_data[ch].rfb = val;
    843 
    844         err = fwnode_property_read_u32(gain_child, "adi,gain-offset", &val);
    845         if (err) {
    846                 dev_err(dev, "mandatory adi,gain-offset property missing\n");
    847                 goto put_child;
    848         }
    849         dac->ch_data[ch].gain_offset = val;
    850 
    851         offset = abs((s32)val);
    852         reg |= ad3552r_field_prep((offset >> 8), AD3552R_MASK_CH_OFFSET_BIT_8);
    853 
    854         reg |= ad3552r_field_prep((s32)val < 0, AD3552R_MASK_CH_OFFSET_POLARITY);
    855         addr = AD3552R_REG_ADDR_CH_GAIN(ch);
    856         err = ad3552r_write_reg(dac, addr,
    857                                 offset & AD3552R_MASK_CH_OFFSET_BITS_0_7);
    858         if (err) {
    859                 dev_err(dev, "Error writing register\n");
    860                 goto put_child;
    861         }
    862 
    863         err = ad3552r_write_reg(dac, addr, reg);
    864         if (err) {
    865                 dev_err(dev, "Error writing register\n");
    866                 goto put_child;
    867         }
    868 
    869 put_child:
    870         fwnode_handle_put(gain_child);
    871 
    872         return err;
    873 }

regards,
dan carpenter

             reply	other threads:[~2022-04-01 10:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-01 10:06 Dan Carpenter [this message]
2022-04-01 12:07 ` [bug report] drivers:iio:dac: Add AD3552R driver support Sa, Nuno
  -- strict thread matches above, loose matches on Subject: below --
2022-01-06 10:35 Dan Carpenter

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=20220401100601.GA29860@kili \
    --to=dan.carpenter@oracle.com \
    --cc=linux-iio@vger.kernel.org \
    --cc=mihail.chindris@analog.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.