From: Liam Beguin <liambeguin@gmail.com>
To: liambeguin@gmail.com, lars@metafoo.de,
Michael.Hennerich@analog.com, jic23@kernel.org,
charles-antoine.couret@essensium.com
Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, robh+dt@kernel.org
Subject: [PATCH v1 1/4] iio: adc: ad7949: define and use bitfield names
Date: Thu, 8 Jul 2021 19:56:15 -0400 [thread overview]
Message-ID: <20210708235618.1541335-2-liambeguin@gmail.com> (raw)
In-Reply-To: <20210708235618.1541335-1-liambeguin@gmail.com>
From: Liam Beguin <lvb@xiphos.com>
Replace raw configuration register values by using FIELD_PREP and
defines to improve readability.
Signed-off-by: Liam Beguin <lvb@xiphos.com>
---
drivers/iio/adc/ad7949.c | 38 +++++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 7 deletions(-)
diff --git a/drivers/iio/adc/ad7949.c b/drivers/iio/adc/ad7949.c
index 1b4b3203e428..93aacf4f680b 100644
--- a/drivers/iio/adc/ad7949.c
+++ b/drivers/iio/adc/ad7949.c
@@ -12,12 +12,27 @@
#include <linux/regulator/consumer.h>
#include <linux/spi/spi.h>
-#define AD7949_MASK_CHANNEL_SEL GENMASK(9, 7)
#define AD7949_MASK_TOTAL GENMASK(13, 0)
-#define AD7949_OFFSET_CHANNEL_SEL 7
-#define AD7949_CFG_READ_BACK 0x1
#define AD7949_CFG_REG_SIZE_BITS 14
+#define AD7949_CFG_BIT_CFG BIT(13)
+#define AD7949_CFG_VAL_CFG_OVERWRITE 1
+#define AD7949_CFG_VAL_CFG_KEEP 0
+#define AD7949_CFG_BIT_INCC GENMASK(12, 10)
+#define AD7949_CFG_VAL_INCC_UNIPOLAR_GND 7
+#define AD7949_CFG_VAL_INCC_UNIPOLAR_COMM 6
+#define AD7949_CFG_VAL_INCC_UNIPOLAR_DIFF 4
+#define AD7949_CFG_VAL_INCC_TEMP 3
+#define AD7949_CFG_VAL_INCC_BIPOLAR 2
+#define AD7949_CFG_VAL_INCC_BIPOLAR_DIFF 0
+#define AD7949_CFG_BIT_INX GENMASK(9, 7)
+#define AD7949_CFG_BIT_BW BIT(6)
+#define AD7949_CFG_VAL_BW_FULL 1
+#define AD7949_CFG_VAL_BW_QUARTER 0
+#define AD7949_CFG_BIT_REF GENMASK(5, 3)
+#define AD7949_CFG_BIT_SEQ GENMASK(2, 1)
+#define AD7949_CFG_BIT_RBN BIT(0)
+
enum {
ID_AD7949 = 0,
ID_AD7682,
@@ -109,8 +124,8 @@ static int ad7949_spi_read_channel(struct ad7949_adc_chip *ad7949_adc, int *val,
*/
for (i = 0; i < 2; i++) {
ret = ad7949_spi_write_cfg(ad7949_adc,
- channel << AD7949_OFFSET_CHANNEL_SEL,
- AD7949_MASK_CHANNEL_SEL);
+ FIELD_PREP(AD7949_CFG_BIT_INX, channel),
+ AD7949_CFG_BIT_INX);
if (ret)
return ret;
if (channel == ad7949_adc->current_channel)
@@ -214,10 +229,19 @@ static int ad7949_spi_init(struct ad7949_adc_chip *ad7949_adc)
{
int ret;
int val;
+ u16 cfg;
- /* Sequencer disabled, CFG readback disabled, IN0 as default channel */
ad7949_adc->current_channel = 0;
- ret = ad7949_spi_write_cfg(ad7949_adc, 0x3C79, AD7949_MASK_TOTAL);
+
+ cfg = FIELD_PREP(AD7949_CFG_BIT_CFG, AD7949_CFG_VAL_CFG_OVERWRITE) |
+ FIELD_PREP(AD7949_CFG_BIT_INCC, AD7949_CFG_VAL_INCC_UNIPOLAR_GND) |
+ FIELD_PREP(AD7949_CFG_BIT_INX, ad7949_adc->current_channel) |
+ FIELD_PREP(AD7949_CFG_BIT_BW, AD7949_CFG_VAL_BW_FULL) |
+ FIELD_PREP(AD7949_CFG_BIT_REF, AD7949_REF_EXT_BUF) |
+ FIELD_PREP(AD7949_CFG_BIT_SEQ, 0x0) |
+ FIELD_PREP(AD7949_CFG_BIT_RBN, 1);
+
+ ret = ad7949_spi_write_cfg(ad7949_adc, cfg, AD7949_MASK_TOTAL);
/*
* Do two dummy conversions to apply the first configuration setting.
--
2.30.1.489.g328c10930387
next prev parent reply other threads:[~2021-07-08 23:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 23:56 [PATCH v1 0/4] AD7949 Fixes Liam Beguin
2021-07-08 23:56 ` Liam Beguin [this message]
2021-07-08 23:56 ` [PATCH v1 2/4] iio: adc: ad7949: fix spi messages on non 14-bit controllers Liam Beguin
2021-07-09 8:19 ` Sa, Nuno
2021-07-09 14:25 ` Liam Beguin
2021-07-08 23:56 ` [PATCH v1 3/4] iio: adc: ad7949: add support for internal vref Liam Beguin
2021-07-09 8:23 ` Sa, Nuno
2021-07-09 14:49 ` Liam Beguin
2021-07-08 23:56 ` [PATCH v1 4/4] dt-bindings: iio: adc: ad7949: add adi,reference-source Liam Beguin
2021-07-09 8:15 ` Sa, Nuno
2021-07-09 14:19 ` Liam Beguin
2021-07-09 14:28 ` Liam Beguin
2021-07-09 8:12 ` [PATCH v1 0/4] AD7949 Fixes Sa, Nuno
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=20210708235618.1541335-2-liambeguin@gmail.com \
--to=liambeguin@gmail.com \
--cc=Michael.Hennerich@analog.com \
--cc=charles-antoine.couret@essensium.com \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@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.