counter: microchip-tcb-capture: Fix CMR value check
Subsystems (3)
PATCH v2 1/1 counter: microchip-tcb-capture: Fix CMR value check
The ATMEL_TC_ETRGEDG_* defines are not masks but rather possible values for CMR. This patch fixes the action_get() callback to properly check for these values rather than mask them.
--- drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
drivers/counter/microchip-tcb-capture.c +10 -6
@@ -183,16 +183,20 @@ static int mchp_tc_count_action_get(struct counter_device *counter,regmap_read (priv->regmap,ATMEL_TC_REG (priv->channel[0 ],CMR ), &cmr); - *action =MCHP_TC_SYNAPSE_ACTION_NONE ; - -if (cmr &ATMEL_TC_ETRGEDG_NONE ) +switch (cmr &ATMEL_TC_ETRGEDG ) { +default : *action =MCHP_TC_SYNAPSE_ACTION_NONE ; -else if (cmr &ATMEL_TC_ETRGEDG_RISING ) +break ; +case ATMEL_TC_ETRGEDG_RISING : *action =MCHP_TC_SYNAPSE_ACTION_RISING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_FALLING ) +break ; +case ATMEL_TC_ETRGEDG_FALLING : *action =MCHP_TC_SYNAPSE_ACTION_FALLING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_BOTH ) +break ; +case ATMEL_TC_ETRGEDG_BOTH : *action =MCHP_TC_SYNAPSE_ACTION_BOTH_EDGE ; +break ; + }return 0 ; }
Signature · 1 line
2.29.2
Quoted 9 lines · William Breathitt Gray
The ATMEL_TC_ETRGEDG_* defines are not masks but rather possible values for CMR. This patch fixes the
action_get()callback to properly check for these values rather than mask them.Fixes 106b104137fd ("counter: Add microchip TCB capture counter")Cc Kamel Bouhara <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>---
Quoted 35 lines
drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)drivers/counter/microchip-tcb-capture.c +10
-7@@ -183,16 +183,20 @@ static int mchp_tc_count_action_get(struct counter_device *counter,regmap_read (priv->regmap,ATMEL_TC_REG (priv->channel[0 ],CMR ), &cmr); - *action =MCHP_TC_SYNAPSE_ACTION_NONE ; - -if (cmr &ATMEL_TC_ETRGEDG_NONE ) +switch (cmr &ATMEL_TC_ETRGEDG ) { +default : *action =MCHP_TC_SYNAPSE_ACTION_NONE ; -else if (cmr &ATMEL_TC_ETRGEDG_RISING ) +break ; +case ATMEL_TC_ETRGEDG_RISING : *action =MCHP_TC_SYNAPSE_ACTION_RISING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_FALLING ) +break ; +case ATMEL_TC_ETRGEDG_FALLING : *action =MCHP_TC_SYNAPSE_ACTION_FALLING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_BOTH ) +break ; +case ATMEL_TC_ETRGEDG_BOTH : *action =MCHP_TC_SYNAPSE_ACTION_BOTH_EDGE ; +break ; + }return 0 ; } --
Quoted 2 lines
2.29.2
--
Kamel Bouhara, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com
Quoted 5 lines · On Sun, 15 Nov 2020 16:26:17 +0100 Kamel Bouhara <[email protected]>…
Quoted 4 lines · William Breathitt Gray
The ATMEL_TC_ETRGEDG_* defines are not masks but rather possible values for CMR. This patch fixes the
action_get()callback to properly check for these values rather than mask them.
Quoted 8 lines
Quoted 5 lines
Fixes 106b104137fd ("counter: Add microchip TCB capture counter")Cc Kamel Bouhara <[email protected]>Signed-off-by William Breathitt Gray <[email protected]>---
Acked-by Kamel Bouhara <[email protected]>
Applied to the fixes-togreg branch of iio.git and marked for stable.
Thanks,
Jonathan
Quoted 42 lines
Quoted 35 lines
drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)drivers/counter/microchip-tcb-capture.c +10
-7@@ -183,16 +183,20 @@ static int mchp_tc_count_action_get(struct counter_device *counter,regmap_read (priv->regmap,ATMEL_TC_REG (priv->channel[0 ],CMR ), &cmr); - *action =MCHP_TC_SYNAPSE_ACTION_NONE ; - -if (cmr &ATMEL_TC_ETRGEDG_NONE ) +switch (cmr &ATMEL_TC_ETRGEDG ) { +default : *action =MCHP_TC_SYNAPSE_ACTION_NONE ; -else if (cmr &ATMEL_TC_ETRGEDG_RISING ) +break ; +case ATMEL_TC_ETRGEDG_RISING : *action =MCHP_TC_SYNAPSE_ACTION_RISING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_FALLING ) +break ; +case ATMEL_TC_ETRGEDG_FALLING : *action =MCHP_TC_SYNAPSE_ACTION_FALLING_EDGE ; -else if (cmr &ATMEL_TC_ETRGEDG_BOTH ) +break ; +case ATMEL_TC_ETRGEDG_BOTH : *action =MCHP_TC_SYNAPSE_ACTION_BOTH_EDGE ; +break ; + }return 0 ; } --Quoted 2 lines
2.29.2
--
Kamel Bouhara, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com