From: Fabrice Gasnier <fabrice.gasnier@foss.st.com> To: <william.gray@linaro.org> Cc: <lee@kernel.org>, <alexandre.torgue@foss.st.com>, <fabrice.gasnier@foss.st.com>, <linux-iio@vger.kernel.org>, <linux-stm32@st-md-mailman.stormreply.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org> Subject: [PATCH v4 06/11] counter: stm32-timer-cnt: add counter prescaler extension Date: Tue, 27 Feb 2024 18:37:58 +0100 [thread overview] Message-ID: <20240227173803.53906-7-fabrice.gasnier@foss.st.com> (raw) In-Reply-To: <20240227173803.53906-1-fabrice.gasnier@foss.st.com> There's a prescaler in between the selected input signal used for counting (CK_PSC), and the counter input (CK_CNT). So add the "prescaler" extension to the counter. Reviewed-by: William Breathitt Gray <william.gray@linaro.org> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> --- Changes in v4: - Add William's Reviewed-by tag Changes in v3: - New patch split from "counter: stm32-timer-cnt: introduce clock signal" --- drivers/counter/stm32-timer-cnt.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/counter/stm32-timer-cnt.c b/drivers/counter/stm32-timer-cnt.c index b914c87b6f10..e0709dd7dcfd 100644 --- a/drivers/counter/stm32-timer-cnt.c +++ b/drivers/counter/stm32-timer-cnt.c @@ -220,11 +220,40 @@ static int stm32_count_enable_write(struct counter_device *counter, return 0; } +static int stm32_count_prescaler_read(struct counter_device *counter, + struct counter_count *count, u64 *prescaler) +{ + struct stm32_timer_cnt *const priv = counter_priv(counter); + u32 psc; + + regmap_read(priv->regmap, TIM_PSC, &psc); + + *prescaler = psc + 1; + + return 0; +} + +static int stm32_count_prescaler_write(struct counter_device *counter, + struct counter_count *count, u64 prescaler) +{ + struct stm32_timer_cnt *const priv = counter_priv(counter); + u32 psc; + + if (!prescaler || prescaler > MAX_TIM_PSC + 1) + return -ERANGE; + + psc = prescaler - 1; + + return regmap_write(priv->regmap, TIM_PSC, psc); +} + static struct counter_comp stm32_count_ext[] = { COUNTER_COMP_DIRECTION(stm32_count_direction_read), COUNTER_COMP_ENABLE(stm32_count_enable_read, stm32_count_enable_write), COUNTER_COMP_CEILING(stm32_count_ceiling_read, stm32_count_ceiling_write), + COUNTER_COMP_COUNT_U64("prescaler", stm32_count_prescaler_read, + stm32_count_prescaler_write), }; static const enum counter_synapse_action stm32_clock_synapse_actions[] = { -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Fabrice Gasnier <fabrice.gasnier@foss.st.com> To: <william.gray@linaro.org> Cc: <lee@kernel.org>, <alexandre.torgue@foss.st.com>, <fabrice.gasnier@foss.st.com>, <linux-iio@vger.kernel.org>, <linux-stm32@st-md-mailman.stormreply.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org> Subject: [PATCH v4 06/11] counter: stm32-timer-cnt: add counter prescaler extension Date: Tue, 27 Feb 2024 18:37:58 +0100 [thread overview] Message-ID: <20240227173803.53906-7-fabrice.gasnier@foss.st.com> (raw) In-Reply-To: <20240227173803.53906-1-fabrice.gasnier@foss.st.com> There's a prescaler in between the selected input signal used for counting (CK_PSC), and the counter input (CK_CNT). So add the "prescaler" extension to the counter. Reviewed-by: William Breathitt Gray <william.gray@linaro.org> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> --- Changes in v4: - Add William's Reviewed-by tag Changes in v3: - New patch split from "counter: stm32-timer-cnt: introduce clock signal" --- drivers/counter/stm32-timer-cnt.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/counter/stm32-timer-cnt.c b/drivers/counter/stm32-timer-cnt.c index b914c87b6f10..e0709dd7dcfd 100644 --- a/drivers/counter/stm32-timer-cnt.c +++ b/drivers/counter/stm32-timer-cnt.c @@ -220,11 +220,40 @@ static int stm32_count_enable_write(struct counter_device *counter, return 0; } +static int stm32_count_prescaler_read(struct counter_device *counter, + struct counter_count *count, u64 *prescaler) +{ + struct stm32_timer_cnt *const priv = counter_priv(counter); + u32 psc; + + regmap_read(priv->regmap, TIM_PSC, &psc); + + *prescaler = psc + 1; + + return 0; +} + +static int stm32_count_prescaler_write(struct counter_device *counter, + struct counter_count *count, u64 prescaler) +{ + struct stm32_timer_cnt *const priv = counter_priv(counter); + u32 psc; + + if (!prescaler || prescaler > MAX_TIM_PSC + 1) + return -ERANGE; + + psc = prescaler - 1; + + return regmap_write(priv->regmap, TIM_PSC, psc); +} + static struct counter_comp stm32_count_ext[] = { COUNTER_COMP_DIRECTION(stm32_count_direction_read), COUNTER_COMP_ENABLE(stm32_count_enable_read, stm32_count_enable_write), COUNTER_COMP_CEILING(stm32_count_ceiling_read, stm32_count_ceiling_write), + COUNTER_COMP_COUNT_U64("prescaler", stm32_count_prescaler_read, + stm32_count_prescaler_write), }; static const enum counter_synapse_action stm32_clock_synapse_actions[] = { -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-02-27 17:40 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-27 17:37 [PATCH v4 00/11] counter: Add stm32 timer events support Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-02-27 17:37 ` [PATCH v4 01/11] counter: Introduce the COUNTER_COMP_FREQUENCY() macro Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-02-29 19:06 ` William Breathitt Gray 2024-02-29 19:06 ` William Breathitt Gray 2024-02-27 17:37 ` [PATCH v4 02/11] counter: stm32-timer-cnt: rename quadrature signal Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-02-27 17:37 ` [PATCH v4 03/11] counter: stm32-timer-cnt: rename counter Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-02-27 17:37 ` [PATCH v4 04/11] counter: stm32-timer-cnt: adopt signal definitions Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-02-27 17:37 ` [PATCH v4 05/11] counter: stm32-timer-cnt: introduce clock signal Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-03-06 19:43 ` William Breathitt Gray 2024-03-06 19:43 ` William Breathitt Gray 2024-02-27 17:37 ` Fabrice Gasnier [this message] 2024-02-27 17:37 ` [PATCH v4 06/11] counter: stm32-timer-cnt: add counter prescaler extension Fabrice Gasnier 2024-02-27 17:37 ` [PATCH v4 07/11] counter: stm32-timer-cnt: add checks on quadrature encoder capability Fabrice Gasnier 2024-02-27 17:37 ` Fabrice Gasnier 2024-03-06 19:39 ` William Breathitt Gray 2024-03-06 19:39 ` William Breathitt Gray 2024-02-27 17:38 ` [PATCH v4 08/11] counter: stm32-timer-cnt: introduce channels Fabrice Gasnier 2024-02-27 17:38 ` Fabrice Gasnier 2024-02-27 17:38 ` [PATCH v4 09/11] counter: stm32-timer-cnt: probe number of channels from registers Fabrice Gasnier 2024-02-27 17:38 ` Fabrice Gasnier 2024-03-06 19:40 ` William Breathitt Gray 2024-03-06 19:40 ` William Breathitt Gray 2024-02-27 17:38 ` [PATCH v4 10/11] counter: stm32-timer-cnt: add support for overflow events Fabrice Gasnier 2024-02-27 17:38 ` Fabrice Gasnier 2024-03-06 19:40 ` William Breathitt Gray 2024-03-06 19:40 ` William Breathitt Gray 2024-02-27 17:38 ` [PATCH v4 11/11] counter: stm32-timer-cnt: add support for capture events Fabrice Gasnier 2024-02-27 17:38 ` Fabrice Gasnier 2024-03-06 19:41 ` William Breathitt Gray 2024-03-06 19:41 ` William Breathitt Gray
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=20240227173803.53906-7-fabrice.gasnier@foss.st.com \ --to=fabrice.gasnier@foss.st.com \ --cc=alexandre.torgue@foss.st.com \ --cc=lee@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-stm32@st-md-mailman.stormreply.com \ --cc=william.gray@linaro.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: linkBe 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.