All of lore.kernel.org
 help / color / mirror / Atom feed
From: <Dharma.B@microchip.com>
To: <csokas.bence@prolan.hu>, <linux-arm-kernel@lists.infradead.org>,
	<linux-iio@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Cc: <kamel.bouhara@bootlin.com>, <wbg@kernel.org>
Subject: Re: [PATCH v3 2/2] counter: microchip-tcb-capture: Add capture extensions for registers RA-RC
Date: Fri, 7 Feb 2025 08:19:25 +0000	[thread overview]
Message-ID: <37bf1294-a9c4-4a6b-9e5a-b8bc54ed87e9@microchip.com> (raw)
In-Reply-To: <20250205104957.95236-3-csokas.bence@prolan.hu>

Hi Bence,

On 05/02/25 4:19 pm, Bence Csókás wrote:
> TCB hardware is capable of capturing the timer value to registers RA and
> RB. On top, it is capable of triggering on compare against a third
> register, RC. Add these registers as extensions.
> 
> Signed-off-by: Bence Csókás <csokas.bence@prolan.hu>
> ---
> 
> Notes:
>      Changes in v2:
>      * Add IRQs
>      Changes in v3:
>      * Move IRQs to previous patch
> 
>   drivers/counter/microchip-tcb-capture.c | 58 +++++++++++++++++++++++++
>   1 file changed, 58 insertions(+)
> 
> diff --git a/drivers/counter/microchip-tcb-capture.c b/drivers/counter/microchip-tcb-capture.c
> index fef4bb69b486..1445ac512c52 100644
> --- a/drivers/counter/microchip-tcb-capture.c
> +++ b/drivers/counter/microchip-tcb-capture.c
> @@ -253,6 +253,62 @@ static int mchp_tc_count_read(struct counter_device *counter,
>   	return 0;
>   }
>   
> +static int mchp_tc_count_cap_read(struct counter_device *counter,
> +				  struct counter_count *count, size_t idx, u64 *val)

The registers RA/B/C are 32 bit registers, hence use of u64 is unnecessary.

> +{
> +	struct mchp_tc_data *const priv = counter_priv(counter);
> +	u32 cnt;
> +
> +	switch (idx) {
> +	case 0:
> +		regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], RA), &cnt);
> +		break;
> +	case 1:
> +		regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], RB), &cnt);
> +		break;
> +	case 2:
> +		regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], RC), &cnt);
> +		break;
> +	default:
> +		return -EINVAL;
> +	}

The regmap_read() returns an error code, which is currently ignored. If 
regmap_read() fails, cnt remains uninitialized, potentially returning 
garbage data.

> +	*val = cnt;
> +
> +	return 0;
> +}
> +
> +static int mchp_tc_count_cap_write(struct counter_device *counter,
> +				   struct counter_count *count, size_t idx, u64 val)

ditto

> +{
> +	struct mchp_tc_data *const priv = counter_priv(counter);
> +
> +	if (val > U32_MAX)
> +		return -ERANGE;
> +
> +	switch (idx) {
> +	case 0:
> +		regmap_write(priv->regmap, ATMEL_TC_REG(priv->channel[0], RA), val);

ditto

> +		break;
> +	case 1:
> +		regmap_write(priv->regmap, ATMEL_TC_REG(priv->channel[0], RB), val);
> +		break;
> +	case 2:
> +		regmap_write(priv->regmap, ATMEL_TC_REG(priv->channel[0], RC), val);
> +		break;
> +	default:
> +		return -EINVAL;
> +	}
> +
> +	return 0;
> +}
> +
> +static DEFINE_COUNTER_ARRAY_CAPTURE(mchp_tc_cnt_cap_array, 3);
> +
> +static struct counter_comp mchp_tc_count_ext[] = {
> +	COUNTER_COMP_ARRAY_CAPTURE(mchp_tc_count_cap_read, mchp_tc_count_cap_write,
> +				   mchp_tc_cnt_cap_array),
> +};
> +
>   static struct counter_count mchp_tc_counts[] = {
>   	{
>   		.id = 0,
> @@ -261,6 +317,8 @@ static struct counter_count mchp_tc_counts[] = {
>   		.num_functions = ARRAY_SIZE(mchp_tc_count_functions),
>   		.synapses = mchp_tc_count_synapses,
>   		.num_synapses = ARRAY_SIZE(mchp_tc_count_synapses),
> +		.ext = mchp_tc_count_ext,
> +		.num_ext = ARRAY_SIZE(mchp_tc_count_ext),
>   	},
>   };
>   


-- 
With Best Regards,
Dharma B.

  reply	other threads:[~2025-02-07  8:19 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20250205104957.95236-1-csokas.bence@prolan.hu>
2025-02-05 10:49 ` [PATCH v3 1/2] counter: microchip-tcb-capture: Add IRQ handling Bence Csókás
2025-02-05 10:50   ` [PATCH v3 0/2] microchip-tcb-capture: Add Capture, Compare, Overflow etc. events Bence Csókás
2025-02-06 17:32   ` Dharma.B
2025-02-07  8:12   ` [PATCH v3 1/2] counter: microchip-tcb-capture: Add IRQ handling Dharma.B
2025-02-10  9:49     ` Csókás Bence
2025-02-05 10:49 ` [PATCH v3 2/2] counter: microchip-tcb-capture: Add capture extensions for registers RA-RC Bence Csókás
2025-02-07  8:19   ` Dharma.B [this message]
2025-02-10  9:56     ` Csókás Bence

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=37bf1294-a9c4-4a6b-9e5a-b8bc54ed87e9@microchip.com \
    --to=dharma.b@microchip.com \
    --cc=csokas.bence@prolan.hu \
    --cc=kamel.bouhara@bootlin.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wbg@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.