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.
next prev parent 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.