Message ID | 20201111163807.10201-1-vilhelm.gray@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | counter: microchip-tcb-capture: Fix CMR value check | expand |
On Wed, 11 Nov 2020 11:38:07 -0500 William Breathitt Gray <vilhelm.gray@gmail.com> wrote: > 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 <kamel.bouhara@bootlin.com> > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> Looks fine to me, but ideally after an ack from Kamel Thanks, Jonathan > --- > drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c > index 039c54a78aa5..142b389fc9db 100644 > --- a/drivers/counter/microchip-tcb-capture.c > +++ b/drivers/counter/microchip-tcb-capture.c > @@ -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_BOTH) { > + 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; > }
On 11/11/2020 11:38:07-0500, William Breathitt Gray wrote: > 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 <kamel.bouhara@bootlin.com> > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c > index 039c54a78aa5..142b389fc9db 100644 > --- a/drivers/counter/microchip-tcb-capture.c > +++ b/drivers/counter/microchip-tcb-capture.c > @@ -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_BOTH) { > + 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; > } > -- > 2.29.2 >
On 14/11/2020 23:48:28+0100, Alexandre Belloni wrote: > On 11/11/2020 11:38:07-0500, William Breathitt Gray wrote: > > 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 <kamel.bouhara@bootlin.com> > > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> > Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > > > --- > > drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ > > 1 file changed, 10 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c > > index 039c54a78aa5..142b389fc9db 100644 > > --- a/drivers/counter/microchip-tcb-capture.c > > +++ b/drivers/counter/microchip-tcb-capture.c > > @@ -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_BOTH) { BTW, this could be simply ATMEL_TC_ETRGEDG which is the mask. > > + 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; > > } > > -- > > 2.29.2 > > > > -- > Alexandre Belloni, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com
On Sat, Nov 14, 2020 at 11:51:13PM +0100, Alexandre Belloni wrote: > On 14/11/2020 23:48:28+0100, Alexandre Belloni wrote: > > On 11/11/2020 11:38:07-0500, William Breathitt Gray wrote: > > > 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 <kamel.bouhara@bootlin.com> > > > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> > > Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > > > > > --- > > > drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ > > > 1 file changed, 10 insertions(+), 6 deletions(-) > > > > > > diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c > > > index 039c54a78aa5..142b389fc9db 100644 > > > --- a/drivers/counter/microchip-tcb-capture.c > > > +++ b/drivers/counter/microchip-tcb-capture.c > > > @@ -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_BOTH) { > > BTW, this could be simply ATMEL_TC_ETRGEDG which is the mask. You're right, let me resubmit this patch with that change since it'll be much clearer. By the way, microchip-tcb-capture.c is missing a MAINTAINERS entry. Is Kamel the maintainer of this driver? I'd like to get a proper entry added so we have a point of contact in case of future bugs and changes. Thanks, William Breathitt Gray
On Sat, Nov 14, 2020 at 05:58:28PM -0500, William Breathitt Gray wrote: > On Sat, Nov 14, 2020 at 11:51:13PM +0100, Alexandre Belloni wrote: > > On 14/11/2020 23:48:28+0100, Alexandre Belloni wrote: > > > On 11/11/2020 11:38:07-0500, William Breathitt Gray wrote: > > > > 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 <kamel.bouhara@bootlin.com> > > > > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> > > > Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > > > > > > > --- > > > > drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ > > > > 1 file changed, 10 insertions(+), 6 deletions(-) > > > > > > > > diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c > > > > index 039c54a78aa5..142b389fc9db 100644 > > > > --- a/drivers/counter/microchip-tcb-capture.c > > > > +++ b/drivers/counter/microchip-tcb-capture.c > > > > @@ -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_BOTH) { > > > > BTW, this could be simply ATMEL_TC_ETRGEDG which is the mask. > > You're right, let me resubmit this patch with that change since it'll be > much clearer. > > By the way, microchip-tcb-capture.c is missing a MAINTAINERS entry. Is > Kamel the maintainer of this driver? I'd like to get a proper entry > added so we have a point of contact in case of future bugs and changes. > Hello William, Thanks for the patch, indeed Im the maintainer of this driver. Regards, Kamel > Thanks, > > William Breathitt Gray -- Kamel Bouhara, Bootlin Embedded Linux and kernel engineering https://bootlin.com
diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c index 039c54a78aa5..142b389fc9db 100644 --- a/drivers/counter/microchip-tcb-capture.c +++ b/drivers/counter/microchip-tcb-capture.c @@ -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_BOTH) { + 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; }
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 <kamel.bouhara@bootlin.com> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> --- drivers/counter/microchip-tcb-capture.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)