All of lore.kernel.org
 help / color / mirror / Atom feed
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 09/11] counter: stm32-timer-cnt: probe number of channels from registers
Date: Tue, 27 Feb 2024 18:38:01 +0100	[thread overview]
Message-ID: <20240227173803.53906-10-fabrice.gasnier@foss.st.com> (raw)
In-Reply-To: <20240227173803.53906-1-fabrice.gasnier@foss.st.com>

Probe the number of capture compare channels, by writing CCER register bits
and read them back. Take care to restore the register original value.

This is a precursor patch to support capture channels.

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
---
Changes in v4:
- directly use dev struct in stm32_timer_cnt_detect_channels routine.
Changes in v3:
- New patch split from:
  "counter: stm32-timer-cnt: populate capture channels and check encoder"
---
 drivers/counter/stm32-timer-cnt.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/counter/stm32-timer-cnt.c b/drivers/counter/stm32-timer-cnt.c
index 66039d1b3642..710437d3b33f 100644
--- a/drivers/counter/stm32-timer-cnt.c
+++ b/drivers/counter/stm32-timer-cnt.c
@@ -42,6 +42,7 @@ struct stm32_timer_cnt {
 	bool enabled;
 	struct stm32_timer_regs bak;
 	bool has_encoder;
+	unsigned int nchannels;
 };
 
 static const enum counter_function stm32_count_functions[] = {
@@ -416,6 +417,20 @@ static struct counter_count stm32_counts = {
 	.num_ext = ARRAY_SIZE(stm32_count_ext)
 };
 
+static void stm32_timer_cnt_detect_channels(struct device *dev,
+					    struct stm32_timer_cnt *priv)
+{
+	u32 ccer, ccer_backup;
+
+	regmap_read(priv->regmap, TIM_CCER, &ccer_backup);
+	regmap_set_bits(priv->regmap, TIM_CCER, TIM_CCER_CCXE);
+	regmap_read(priv->regmap, TIM_CCER, &ccer);
+	regmap_write(priv->regmap, TIM_CCER, ccer_backup);
+	priv->nchannels = hweight32(ccer & TIM_CCER_CCXE);
+
+	dev_dbg(dev, "has %d cc channels\n", priv->nchannels);
+}
+
 /* encoder supported on TIM1 TIM2 TIM3 TIM4 TIM5 TIM8 */
 #define STM32_TIM_ENCODER_SUPPORTED	(BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(7))
 
@@ -484,6 +499,8 @@ static int stm32_timer_cnt_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
+	stm32_timer_cnt_detect_channels(dev, priv);
+
 	counter->name = dev_name(dev);
 	counter->parent = dev;
 	counter->ops = &stm32_timer_cnt_ops;
-- 
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 09/11] counter: stm32-timer-cnt: probe number of channels from registers
Date: Tue, 27 Feb 2024 18:38:01 +0100	[thread overview]
Message-ID: <20240227173803.53906-10-fabrice.gasnier@foss.st.com> (raw)
In-Reply-To: <20240227173803.53906-1-fabrice.gasnier@foss.st.com>

Probe the number of capture compare channels, by writing CCER register bits
and read them back. Take care to restore the register original value.

This is a precursor patch to support capture channels.

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
---
Changes in v4:
- directly use dev struct in stm32_timer_cnt_detect_channels routine.
Changes in v3:
- New patch split from:
  "counter: stm32-timer-cnt: populate capture channels and check encoder"
---
 drivers/counter/stm32-timer-cnt.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/counter/stm32-timer-cnt.c b/drivers/counter/stm32-timer-cnt.c
index 66039d1b3642..710437d3b33f 100644
--- a/drivers/counter/stm32-timer-cnt.c
+++ b/drivers/counter/stm32-timer-cnt.c
@@ -42,6 +42,7 @@ struct stm32_timer_cnt {
 	bool enabled;
 	struct stm32_timer_regs bak;
 	bool has_encoder;
+	unsigned int nchannels;
 };
 
 static const enum counter_function stm32_count_functions[] = {
@@ -416,6 +417,20 @@ static struct counter_count stm32_counts = {
 	.num_ext = ARRAY_SIZE(stm32_count_ext)
 };
 
+static void stm32_timer_cnt_detect_channels(struct device *dev,
+					    struct stm32_timer_cnt *priv)
+{
+	u32 ccer, ccer_backup;
+
+	regmap_read(priv->regmap, TIM_CCER, &ccer_backup);
+	regmap_set_bits(priv->regmap, TIM_CCER, TIM_CCER_CCXE);
+	regmap_read(priv->regmap, TIM_CCER, &ccer);
+	regmap_write(priv->regmap, TIM_CCER, ccer_backup);
+	priv->nchannels = hweight32(ccer & TIM_CCER_CCXE);
+
+	dev_dbg(dev, "has %d cc channels\n", priv->nchannels);
+}
+
 /* encoder supported on TIM1 TIM2 TIM3 TIM4 TIM5 TIM8 */
 #define STM32_TIM_ENCODER_SUPPORTED	(BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(7))
 
@@ -484,6 +499,8 @@ static int stm32_timer_cnt_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
+	stm32_timer_cnt_detect_channels(dev, priv);
+
 	counter->name = dev_name(dev);
 	counter->parent = dev;
 	counter->ops = &stm32_timer_cnt_ops;
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  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 ` [PATCH v4 06/11] counter: stm32-timer-cnt: add counter prescaler extension Fabrice Gasnier
2024-02-27 17:37   ` 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 ` Fabrice Gasnier [this message]
2024-02-27 17:38   ` [PATCH v4 09/11] counter: stm32-timer-cnt: probe number of channels from registers 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-10-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: 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.