* [PATCH 1/3] iio: adc: ti-ads1298: Add parentheses around macro parameter
2026-05-06 18:15 [PATCH 0/3] iio: adc: ti-ads1298: Three driver cleanups Md Shofiqul Islam
@ 2026-05-06 18:15 ` Md Shofiqul Islam
2026-05-07 5:21 ` mike.looijmans
2026-05-06 18:15 ` [PATCH 2/3] iio: adc: ti-ads1298: Fix incorrect timeout comment Md Shofiqul Islam
2026-05-06 18:15 ` [PATCH 3/3] iio: adc: ti-ads1298: Don't enable internal test signal during init Md Shofiqul Islam
2 siblings, 1 reply; 7+ messages in thread
From: Md Shofiqul Islam @ 2026-05-06 18:15 UTC (permalink / raw)
To: linux-iio, linux-kernel
Cc: Md Shofiqul Islam, jic23, dlechner, nuno.sa, andy, mike.looijmans
ADS1298_REG_CHnSET() is missing parentheses around the parameter 'n'.
Add them to follow kernel macro coding style and prevent potential
operator precedence issues if the argument is an expression.
Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
---
drivers/iio/adc/ti-ads1298.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
index ae30b47e45..cf5f954206 100644
--- a/drivers/iio/adc/ti-ads1298.c
+++ b/drivers/iio/adc/ti-ads1298.c
@@ -66,7 +66,7 @@
#define ADS1298_MASK_CONFIG3_VREF_4V BIT(5)
#define ADS1298_REG_LOFF 0x04
-#define ADS1298_REG_CHnSET(n) (0x05 + n)
+#define ADS1298_REG_CHnSET(n) (0x05 + (n))
#define ADS1298_MASK_CH_PD BIT(7)
#define ADS1298_MASK_CH_PGA GENMASK(6, 4)
#define ADS1298_MASK_CH_MUX GENMASK(2, 0)
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] iio: adc: ti-ads1298: Add parentheses around macro parameter
2026-05-06 18:15 ` [PATCH 1/3] iio: adc: ti-ads1298: Add parentheses around macro parameter Md Shofiqul Islam
@ 2026-05-07 5:21 ` mike.looijmans
0 siblings, 0 replies; 7+ messages in thread
From: mike.looijmans @ 2026-05-07 5:21 UTC (permalink / raw)
To: Md Shofiqul Islam, linux-iio, linux-kernel; +Cc: jic23, dlechner, nuno.sa, andy
On 5/6/26 20:15, Md Shofiqul Islam wrote:
> ADS1298_REG_CHnSET() is missing parentheses around the parameter 'n'.
> Add them to follow kernel macro coding style and prevent potential
> operator precedence issues if the argument is an expression.
Acked-by: Mike Looijmans<mike.looijmans@topic.nl>
>
> Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
> ---
> drivers/iio/adc/ti-ads1298.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
> index ae30b47e45..cf5f954206 100644
> --- a/drivers/iio/adc/ti-ads1298.c
> +++ b/drivers/iio/adc/ti-ads1298.c
> @@ -66,7 +66,7 @@
> #define ADS1298_MASK_CONFIG3_VREF_4V BIT(5)
>
> #define ADS1298_REG_LOFF 0x04
> -#define ADS1298_REG_CHnSET(n) (0x05 + n)
> +#define ADS1298_REG_CHnSET(n) (0x05 + (n))
> #define ADS1298_MASK_CH_PD BIT(7)
> #define ADS1298_MASK_CH_PGA GENMASK(6, 4)
> #define ADS1298_MASK_CH_MUX GENMASK(2, 0)
--
Mike Looijmans
System Expert
TOPIC Embedded Products B.V.
Materiaalweg 4, 5681 RJ Best
The Netherlands
T: +31 (0) 499 33 69 69
E: mike.looijmans@topic.nl
W: www.topic.nl
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/3] iio: adc: ti-ads1298: Fix incorrect timeout comment
2026-05-06 18:15 [PATCH 0/3] iio: adc: ti-ads1298: Three driver cleanups Md Shofiqul Islam
2026-05-06 18:15 ` [PATCH 1/3] iio: adc: ti-ads1298: Add parentheses around macro parameter Md Shofiqul Islam
@ 2026-05-06 18:15 ` Md Shofiqul Islam
2026-05-07 5:19 ` mike.looijmans
2026-05-06 18:15 ` [PATCH 3/3] iio: adc: ti-ads1298: Don't enable internal test signal during init Md Shofiqul Islam
2 siblings, 1 reply; 7+ messages in thread
From: Md Shofiqul Islam @ 2026-05-06 18:15 UTC (permalink / raw)
To: linux-iio, linux-kernel
Cc: Md Shofiqul Islam, jic23, dlechner, nuno.sa, andy, mike.looijmans
At the lowest supported data rate of 250Hz, one conversion period is
4ms, not 40ms. Fix the comment to correctly reflect the timing.
The 50ms timeout value itself is correct as a conservative margin.
Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
---
drivers/iio/adc/ti-ads1298.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
index cf5f954206..186bda3087 100644
--- a/drivers/iio/adc/ti-ads1298.c
+++ b/drivers/iio/adc/ti-ads1298.c
@@ -210,7 +210,7 @@ static int ads1298_read_one(struct ads1298_private *priv, int chan_index)
return ret;
}
- /* Cannot take longer than 40ms (250Hz) */
+ /* Cannot take longer than 4ms at the lowest rate (250Hz) */
ret = wait_for_completion_timeout(&priv->completion, msecs_to_jiffies(50));
if (!ret)
return -ETIMEDOUT;
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] iio: adc: ti-ads1298: Fix incorrect timeout comment
2026-05-06 18:15 ` [PATCH 2/3] iio: adc: ti-ads1298: Fix incorrect timeout comment Md Shofiqul Islam
@ 2026-05-07 5:19 ` mike.looijmans
0 siblings, 0 replies; 7+ messages in thread
From: mike.looijmans @ 2026-05-07 5:19 UTC (permalink / raw)
To: Md Shofiqul Islam, linux-iio, linux-kernel; +Cc: jic23, dlechner, nuno.sa, andy
On 5/6/26 20:15, Md Shofiqul Islam wrote:
> At the lowest supported data rate of 250Hz, one conversion period is
> 4ms, not 40ms. Fix the comment to correctly reflect the timing.
> The 50ms timeout value itself is correct as a conservative margin.
The 50ms value is also wrong then, change it to 5. That's already more than
enough margin.
>
> Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
> ---
> drivers/iio/adc/ti-ads1298.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
> index cf5f954206..186bda3087 100644
> --- a/drivers/iio/adc/ti-ads1298.c
> +++ b/drivers/iio/adc/ti-ads1298.c
> @@ -210,7 +210,7 @@ static int ads1298_read_one(struct ads1298_private *priv, int chan_index)
> return ret;
> }
>
> - /* Cannot take longer than 40ms (250Hz) */
> + /* Cannot take longer than 4ms at the lowest rate (250Hz) */
> ret = wait_for_completion_timeout(&priv->completion, msecs_to_jiffies(50));
> if (!ret)
> return -ETIMEDOUT;
--
Mike Looijmans
System Expert
TOPIC Embedded Products B.V.
Materiaalweg 4, 5681 RJ Best
The Netherlands
T: +31 (0) 499 33 69 69
E: mike.looijmans@topic.nl
W: www.topic.nl
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] iio: adc: ti-ads1298: Don't enable internal test signal during init
2026-05-06 18:15 [PATCH 0/3] iio: adc: ti-ads1298: Three driver cleanups Md Shofiqul Islam
2026-05-06 18:15 ` [PATCH 1/3] iio: adc: ti-ads1298: Add parentheses around macro parameter Md Shofiqul Islam
2026-05-06 18:15 ` [PATCH 2/3] iio: adc: ti-ads1298: Fix incorrect timeout comment Md Shofiqul Islam
@ 2026-05-06 18:15 ` Md Shofiqul Islam
2026-05-07 5:25 ` mike.looijmans
2 siblings, 1 reply; 7+ messages in thread
From: Md Shofiqul Islam @ 2026-05-06 18:15 UTC (permalink / raw)
To: linux-iio, linux-kernel
Cc: Md Shofiqul Islam, jic23, dlechner, nuno.sa, andy, mike.looijmans
The driver was enabling the internal test signal (INT_TEST), double
amplitude (TEST_AMP), and fast frequency (TEST_FREQ_FAST) bits in
CONFIG2 during initialization. These bits activate an internal square
wave generator intended for device testing and calibration, not normal
ECG operation.
While the test signal does not affect channel measurements unless the
channel MUX is explicitly set to route it (MUX = 101), enabling the
test signal generator unnecessarily increases power consumption and is
inappropriate for a medical ADC driver in normal operation.
Keep only the RESERVED bit which the datasheet requires to always be
written as 1.
Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
---
drivers/iio/adc/ti-ads1298.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
index 186bda3087..360dfd2fc8 100644
--- a/drivers/iio/adc/ti-ads1298.c
+++ b/drivers/iio/adc/ti-ads1298.c
@@ -615,12 +615,9 @@ static int ads1298_init(struct iio_dev *indio_dev)
if (!indio_dev->name)
return -ENOMEM;
- /* Enable internal test signal, double amplitude, double frequency */
+ /* CONFIG2: reserved bit must always be written as 1 per datasheet */
ret = regmap_write(priv->regmap, ADS1298_REG_CONFIG2,
- ADS1298_MASK_CONFIG2_RESERVED |
- ADS1298_MASK_CONFIG2_INT_TEST |
- ADS1298_MASK_CONFIG2_TEST_AMP |
- ADS1298_MASK_CONFIG2_TEST_FREQ_FAST);
+ ADS1298_MASK_CONFIG2_RESERVED);
if (ret)
return ret;
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] iio: adc: ti-ads1298: Don't enable internal test signal during init
2026-05-06 18:15 ` [PATCH 3/3] iio: adc: ti-ads1298: Don't enable internal test signal during init Md Shofiqul Islam
@ 2026-05-07 5:25 ` mike.looijmans
0 siblings, 0 replies; 7+ messages in thread
From: mike.looijmans @ 2026-05-07 5:25 UTC (permalink / raw)
To: Md Shofiqul Islam, linux-iio, linux-kernel; +Cc: jic23, dlechner, nuno.sa, andy
On 5/6/26 20:15, Md Shofiqul Islam wrote:
> The driver was enabling the internal test signal (INT_TEST), double
> amplitude (TEST_AMP), and fast frequency (TEST_FREQ_FAST) bits in
> CONFIG2 during initialization. These bits activate an internal square
> wave generator intended for device testing and calibration, not normal
> ECG operation.
>
> While the test signal does not affect channel measurements unless the
> channel MUX is explicitly set to route it (MUX = 101), enabling the
> test signal generator unnecessarily increases power consumption and is
> inappropriate for a medical ADC driver in normal operation.
>
> Keep only the RESERVED bit which the datasheet requires to always be
> written as 1.
This boils down to just leaving the register at its default value. In that
case, I'd suggest removing this completely.
>
> Signed-off-by: Md Shofiqul Islam <shofiqtest@gmail.com>
> ---
> drivers/iio/adc/ti-ads1298.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c
> index 186bda3087..360dfd2fc8 100644
> --- a/drivers/iio/adc/ti-ads1298.c
> +++ b/drivers/iio/adc/ti-ads1298.c
> @@ -615,12 +615,9 @@ static int ads1298_init(struct iio_dev *indio_dev)
> if (!indio_dev->name)
> return -ENOMEM;
>
> - /* Enable internal test signal, double amplitude, double frequency */
> + /* CONFIG2: reserved bit must always be written as 1 per datasheet */
> ret = regmap_write(priv->regmap, ADS1298_REG_CONFIG2,
> - ADS1298_MASK_CONFIG2_RESERVED |
> - ADS1298_MASK_CONFIG2_INT_TEST |
> - ADS1298_MASK_CONFIG2_TEST_AMP |
> - ADS1298_MASK_CONFIG2_TEST_FREQ_FAST);
> + ADS1298_MASK_CONFIG2_RESERVED);
> if (ret)
> return ret;
>
--
Mike Looijmans
System Expert
TOPIC Embedded Products B.V.
Materiaalweg 4, 5681 RJ Best
The Netherlands
T: +31 (0) 499 33 69 69
E: mike.looijmans@topic.nl
W: www.topic.nl
^ permalink raw reply [flat|nested] 7+ messages in thread