From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Kim Seer Paller <kimseer.paller@analog.com>
Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, "Jonathan Cameron" <jic23@kernel.org>,
"David Lechner" <dlechner@baylibre.com>,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Mark Brown" <broonie@kernel.org>,
"Dimitri Fedrau" <dima.fedrau@gmail.com>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Michael Hennerich" <michael.hennerich@analog.com>,
"Nuno Sá" <noname.nuno@gmail.com>
Subject: Re: [PATCH v2 5/5] iio: dac: ltc2664: Add driver for LTC2664 and LTC2672
Date: Thu, 23 May 2024 18:02:10 +0100 [thread overview]
Message-ID: <20240523180210.00006b84@Huawei.com> (raw)
In-Reply-To: <20240523031909.19427-6-kimseer.paller@analog.com>
On Thu, 23 May 2024 11:19:09 +0800
Kim Seer Paller <kimseer.paller@analog.com> wrote:
> LTC2664 4 channel, 16 bit Voltage Output SoftSpan DAC
> LTC2672 5 channel, 16 bit Current Output Softspan DAC
>
> Co-developed-by: Michael Hennerich <michael.hennerich@analog.com>
> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
> Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
Hi Kim,
A few minor things inline,
Jonathan
> diff --git a/drivers/iio/dac/ltc2664.c b/drivers/iio/dac/ltc2664.c
> new file mode 100644
> index 000000000000..488b841e6c66
> --- /dev/null
> +++ b/drivers/iio/dac/ltc2664.c
> @@ -0,0 +1,802 @@
> +static int ltc2664_set_span(const struct ltc2664_state *st, int min, int max,
> + int chan)
> +{
> + const struct ltc2664_chip_info *chip_info = st->chip_info;
> + const int (*span_helper)[2] = chip_info->span_helper;
> + int span, ret;
> +
> + st->iio_channels[chan].type = chip_info->measurement_type;
> +
> + for (span = 0; span < chip_info->num_span; span++) {
> + if (min == span_helper[span][0] && max == span_helper[span][1])
> + break;
> + }
Sanity check for no match?
> +
> + ret = regmap_write(st->regmap, LTC2664_CMD_SPAN_N(chan),
> + (chip_info->id == LTC2672) ? span + 1 : span);
> + if (ret)
> + return ret;
> +
> + return span;
> +}
> +
> +static int ltc2664_channel_config(struct ltc2664_state *st)
> +{
> + const struct ltc2664_chip_info *chip_info = st->chip_info;
> + struct device *dev = &st->spi->dev;
> + u32 reg, tmp[2], mspan;
> + int ret, span;
> +
> + mspan = LTC2664_MSPAN_SOFTSPAN;
> + ret = device_property_read_u32(dev, "adi,manual-span-operation-config",
> + &mspan);
> + if (!ret) {
> + if (!chip_info->manual_span_support)
> + return dev_err_probe(dev, -EINVAL,
> + "adi,manual-span-operation-config not supported\n");
> +
> + if (mspan > ARRAY_SIZE(ltc2664_mspan_lut))
> + return dev_err_probe(dev, -EINVAL,
> + "adi,manual-span-operation-config not in range\n");
> + }
> +
> + st->rfsadj = 20000;
> + ret = device_property_read_u32(dev, "adi,rfsadj-ohms", &st->rfsadj);
> + if (!ret) {
> + if (!chip_info->rfsadj_support)
> + return dev_err_probe(dev, -EINVAL,
> + "adi,rfsadj-ohms not supported\n");
> +
> + if (st->rfsadj < 19000 || st->rfsadj > 41000)
> + return dev_err_probe(dev, -EINVAL,
> + "adi,rfsadj-ohms not in range\n");
> + }
> +
> + device_for_each_child_node_scoped(dev, child) {
> + struct ltc2664_chan *chan;
> +
> + ret = fwnode_property_read_u32(child, "reg", ®);
> + if (ret)
> + return dev_err_probe(dev, ret,
> + "Failed to get reg property\n");
> +
> + if (reg >= chip_info->num_channels)
> + return dev_err_probe(dev, -EINVAL,
> + "reg bigger than: %d\n",
> + chip_info->num_channels);
> +
> + chan = &st->channels[reg];
> +
> + if (fwnode_property_read_bool(child, "adi,toggle-mode")) {
> + chan->toggle_chan = true;
> + /* assume sw toggle ABI */
> + st->iio_channels[reg].ext_info = ltc2664_toggle_sym_ext_info;
chan->ext_info = ...
> + /*
> + * Clear IIO_CHAN_INFO_RAW bit as toggle channels expose
> + * out_voltage/current_raw{0|1} files.
> + */
> + __clear_bit(IIO_CHAN_INFO_RAW,
> + &st->iio_channels[reg].info_mask_separate);
> + }
> +
> + chan->raw[0] = ltc2664_mspan_lut[mspan][1];
> + chan->raw[1] = ltc2664_mspan_lut[mspan][1];
> +
> + chan->span = ltc2664_mspan_lut[mspan][0];
> +
> + ret = fwnode_property_read_u32_array(child, "adi,output-range-microvolt",
> + tmp, ARRAY_SIZE(tmp));
> + if (!ret && mspan == LTC2664_MSPAN_SOFTSPAN) {
> + chan->span = ltc2664_set_span(st, tmp[0] / 1000,
> + tmp[1] / 1000, reg);
> + if (span < 0)
> + return dev_err_probe(dev, span,
> + "Failed to set span\n");
> +
> + }
> +
> + ret = fwnode_property_read_u32(child,
> + "adi,output-range-microamp",
> + &tmp[0]);
> + if (!ret) {
> + chan->span = ltc2664_set_span(st, 0, tmp[0] / 1000, reg);
> + if (span < 0)
> + return dev_err_probe(dev, span,
> + "Failed to set span\n");
> + }
> + }
> +
> + return 0;
> +}
next prev parent reply other threads:[~2024-05-23 17:02 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-23 3:19 [PATCH v2 0/5] Add driver for LTC2664 and LTC2672 Kim Seer Paller
2024-05-23 3:19 ` [PATCH v2 1/5] iio: ABI: Generalize ABI documentation for DAC Kim Seer Paller
2024-05-23 16:52 ` Jonathan Cameron
2024-05-23 3:19 ` [PATCH v2 2/5] iio: ABI: add DAC 42kohm_to_gnd powerdown mode Kim Seer Paller
2024-06-03 18:46 ` David Lechner
2024-05-23 3:19 ` [PATCH v2 3/5] dt-bindings: iio: dac: Add adi,ltc2664.yaml Kim Seer Paller
2024-05-23 6:39 ` Krzysztof Kozlowski
2024-05-24 6:28 ` Paller, Kim Seer
2024-05-25 16:49 ` Krzysztof Kozlowski
2024-05-25 17:17 ` Jonathan Cameron
2024-05-23 3:19 ` [PATCH v2 4/5] dt-bindings: iio: dac: Add adi,ltc2672.yaml Kim Seer Paller
2024-05-23 4:24 ` Rob Herring (Arm)
2024-05-23 12:33 ` Rob Herring
2024-05-23 3:19 ` [PATCH v2 5/5] iio: dac: ltc2664: Add driver for LTC2664 and LTC2672 Kim Seer Paller
2024-05-23 17:02 ` Jonathan Cameron [this message]
2024-05-28 5:53 ` Paller, Kim Seer
2024-06-02 13:13 ` Jonathan Cameron
2024-05-24 3:28 ` kernel test robot
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=20240523180210.00006b84@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dima.fedrau@gmail.com \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=kimseer.paller@analog.com \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=lgirdwood@gmail.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.hennerich@analog.com \
--cc=noname.nuno@gmail.com \
--cc=robh@kernel.org \
/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.