From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>, Andrew Lunn <andrew@lunn.ch>,
Jason Cooper <jason@lakedaemon.net>,
Nadav Haklai <nadavh@marvell.com>,
devicetree@vger.kernel.org,
Antoine Tenart <antoine.tenart@bootlin.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Gregory Clement <gregory.clement@bootlin.com>,
linux-pm@vger.kernel.org, Will Deacon <will.deacon@arm.com>,
Maxime Chevallier <maxime.chevallier@bootlin.com>,
Eduardo Valentin <edubezval@gmail.com>,
David Sniatkiwicz <davidsn@marvell.com>,
Rob Herring <robh+dt@kernel.org>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Zhang Rui <rui.zhang@intel.com>,
linux-arm-kernel@lists.infradead.org,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches
Date: Sun, 29 Jul 2018 21:30:55 +0200 [thread overview]
Message-ID: <20180729213055.2215bd53@xps13> (raw)
In-Reply-To: <2ab1a1f6-e0c3-3eed-a088-9b04e88fce12@linaro.org>
Hi Daniel,
Daniel Lezcano <daniel.lezcano@linaro.org> wrote on Fri, 27 Jul 2018
18:29:01 +0200:
> On 16/07/2018 16:41, Miquel Raynal wrote:
> > Configure the sample frequency and number of averaged samples.
> >
> > This is needed for two reasons:
> > 1/ To be bootloader independent.
> > 2/ To prepare the introduction of multi-sensors support by preventing
> > inconsistencies when reading temperatures that could be a mean of
> > samples took from different sensors.
> >
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> > drivers/thermal/armada_thermal.c | 25 +++++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
> > index 9291ea3ad2f7..1f9706d96a0d 100644
> > --- a/drivers/thermal/armada_thermal.c
> > +++ b/drivers/thermal/armada_thermal.c
> > @@ -54,7 +54,12 @@
> > #define CONTROL0_TSEN_START BIT(0)
> > #define CONTROL0_TSEN_RESET BIT(1)
> > #define CONTROL0_TSEN_ENABLE BIT(2)
> > +#define CONTROL0_TSEN_AVG_BYPASS BIT(6)
> > +#define CONTROL0_TSEN_OSR_SHIFT 24
> > +#define CONTROL0_TSEN_OSR_MAX 0x3
> >
> > +#define CONTROL1_TSEN_AVG_SHIFT 0
>
> Why shift by zero ?
>
I know some people do not like it, it's a matter of taste, as this IP
registers documentation is a bit fuzzy, I wanted to make it clear that
it was the first region in the CONTROL1 register. It's optimized out by
the compiler anyway.
>
>
> > +#define CONTROL1_TSEN_AVG_MASK 0x7
> > #define CONTROL1_EXT_TSEN_SW_RESET BIT(7)
> > #define CONTROL1_EXT_TSEN_HW_RESETn BIT(8)
> >
> > @@ -194,6 +199,13 @@ static void armada_ap806_init(struct platform_device *pdev,
> > reg = readl_relaxed(priv->control0);
> > reg &= ~CONTROL0_TSEN_RESET;
> > reg |= CONTROL0_TSEN_START | CONTROL0_TSEN_ENABLE;
> > +
> > + /* Sample every ~2ms */
> > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT;
> > +
> > + /* Enable average (2 samples by default) */
> > + reg &= ~CONTROL0_TSEN_AVG_BYPASS;
> > +
> > writel(reg, priv->control0);
> >
> > /* Wait the sensors to be valid or the core will warn the user */
> > @@ -203,7 +215,20 @@ static void armada_ap806_init(struct platform_device *pdev,
> > static void armada_cp110_init(struct platform_device *pdev,
> > struct armada_thermal_priv *priv)
> > {
> > + u32 reg;
> > +
> > armada380_init(pdev, priv);
> > +
> > + /* Sample every ~2ms */
> > + reg = readl_relaxed(priv->control0);
> > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT;
> > + writel(reg, priv->control0);
> > +
> > + /* Average the output value over 2^1 = 2 samples */
> > + reg = readl_relaxed(priv->control1);
> > + reg &= ~CONTROL1_TSEN_AVG_MASK << CONTROL1_TSEN_AVG_SHIFT;
> > + reg |= 1 << CONTROL1_TSEN_AVG_SHIFT;
> > + writel(reg, priv->control1);
> > }
> >
> > static bool armada_is_valid(struct armada_thermal_priv *priv)
> >
>
>
Thanks
Miquèl
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: miquel.raynal@bootlin.com (Miquel Raynal)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches
Date: Sun, 29 Jul 2018 21:30:55 +0200 [thread overview]
Message-ID: <20180729213055.2215bd53@xps13> (raw)
In-Reply-To: <2ab1a1f6-e0c3-3eed-a088-9b04e88fce12@linaro.org>
Hi Daniel,
Daniel Lezcano <daniel.lezcano@linaro.org> wrote on Fri, 27 Jul 2018
18:29:01 +0200:
> On 16/07/2018 16:41, Miquel Raynal wrote:
> > Configure the sample frequency and number of averaged samples.
> >
> > This is needed for two reasons:
> > 1/ To be bootloader independent.
> > 2/ To prepare the introduction of multi-sensors support by preventing
> > inconsistencies when reading temperatures that could be a mean of
> > samples took from different sensors.
> >
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> > drivers/thermal/armada_thermal.c | 25 +++++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
> > index 9291ea3ad2f7..1f9706d96a0d 100644
> > --- a/drivers/thermal/armada_thermal.c
> > +++ b/drivers/thermal/armada_thermal.c
> > @@ -54,7 +54,12 @@
> > #define CONTROL0_TSEN_START BIT(0)
> > #define CONTROL0_TSEN_RESET BIT(1)
> > #define CONTROL0_TSEN_ENABLE BIT(2)
> > +#define CONTROL0_TSEN_AVG_BYPASS BIT(6)
> > +#define CONTROL0_TSEN_OSR_SHIFT 24
> > +#define CONTROL0_TSEN_OSR_MAX 0x3
> >
> > +#define CONTROL1_TSEN_AVG_SHIFT 0
>
> Why shift by zero ?
>
I know some people do not like it, it's a matter of taste, as this IP
registers documentation is a bit fuzzy, I wanted to make it clear that
it was the first region in the CONTROL1 register. It's optimized out by
the compiler anyway.
>
>
> > +#define CONTROL1_TSEN_AVG_MASK 0x7
> > #define CONTROL1_EXT_TSEN_SW_RESET BIT(7)
> > #define CONTROL1_EXT_TSEN_HW_RESETn BIT(8)
> >
> > @@ -194,6 +199,13 @@ static void armada_ap806_init(struct platform_device *pdev,
> > reg = readl_relaxed(priv->control0);
> > reg &= ~CONTROL0_TSEN_RESET;
> > reg |= CONTROL0_TSEN_START | CONTROL0_TSEN_ENABLE;
> > +
> > + /* Sample every ~2ms */
> > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT;
> > +
> > + /* Enable average (2 samples by default) */
> > + reg &= ~CONTROL0_TSEN_AVG_BYPASS;
> > +
> > writel(reg, priv->control0);
> >
> > /* Wait the sensors to be valid or the core will warn the user */
> > @@ -203,7 +215,20 @@ static void armada_ap806_init(struct platform_device *pdev,
> > static void armada_cp110_init(struct platform_device *pdev,
> > struct armada_thermal_priv *priv)
> > {
> > + u32 reg;
> > +
> > armada380_init(pdev, priv);
> > +
> > + /* Sample every ~2ms */
> > + reg = readl_relaxed(priv->control0);
> > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT;
> > + writel(reg, priv->control0);
> > +
> > + /* Average the output value over 2^1 = 2 samples */
> > + reg = readl_relaxed(priv->control1);
> > + reg &= ~CONTROL1_TSEN_AVG_MASK << CONTROL1_TSEN_AVG_SHIFT;
> > + reg |= 1 << CONTROL1_TSEN_AVG_SHIFT;
> > + writel(reg, priv->control1);
> > }
> >
> > static bool armada_is_valid(struct armada_thermal_priv *priv)
> >
>
>
Thanks
Miqu?l
next prev parent reply other threads:[~2018-07-29 19:30 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-16 14:41 [PATCH v3 00/23] Add multi-channel support to Armada thermal driver Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 01/23] thermal: armada: add a function that sanitizes the thermal zone name Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 11:34 ` Daniel Lezcano
2018-07-27 11:34 ` Daniel Lezcano
2018-07-27 11:52 ` Miquel Raynal
2018-07-27 11:52 ` Miquel Raynal
2018-07-27 15:29 ` Daniel Lezcano
2018-07-27 15:29 ` Daniel Lezcano
2018-07-29 19:27 ` Miquel Raynal
2018-07-29 19:27 ` Miquel Raynal
2018-07-30 6:16 ` Daniel Lezcano
2018-07-30 6:16 ` Daniel Lezcano
2018-07-16 14:41 ` [PATCH v3 02/23] thermal: armada: remove useless register accesses Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 15:56 ` Daniel Lezcano
2018-07-27 15:56 ` Daniel Lezcano
2018-07-27 16:13 ` Ezequiel Garcia
2018-07-27 16:13 ` Ezequiel Garcia
2018-07-29 19:23 ` Miquel Raynal
2018-07-29 19:23 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 03/23] thermal: armada: remove misleading comments Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 16:03 ` Daniel Lezcano
2018-07-27 16:03 ` Daniel Lezcano
2018-07-16 14:41 ` [PATCH v3 04/23] thermal: armada: rename the initialization routine Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 16:02 ` Daniel Lezcano
2018-07-27 16:02 ` Daniel Lezcano
2018-07-16 14:41 ` [PATCH v3 05/23] thermal: armada: dissociate a380 and cp110 ->init() hooks Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 16:09 ` Daniel Lezcano
2018-07-27 16:09 ` Daniel Lezcano
2018-07-16 14:41 ` [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-27 16:29 ` Daniel Lezcano
2018-07-27 16:29 ` Daniel Lezcano
2018-07-29 19:30 ` Miquel Raynal [this message]
2018-07-29 19:30 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 07/23] thermal: armada: convert driver to syscon register accesses Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 08/23] thermal: armada: use the resource managed registration helper alternative Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-26 21:37 ` Eduardo Valentin
2018-07-26 21:37 ` Eduardo Valentin
2018-07-16 14:41 ` [PATCH v3 09/23] thermal: armada: add multi-channel sensors support Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 10/23] thermal: armada: remove sensors validity from the IP initialization Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 11/23] thermal: armada: move validity check out of the read function Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 12/23] thermal: armada: get rid of the ->is_valid() pointer Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 13/23] dt-bindings: cp110: rename cp110 syscon file Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 14/23] dt-bindings: ap806: prepare the syscon file to list other syscons nodes Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 15/23] dt-bindings: cp110: " Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:41 ` [PATCH v3 16/23] dt-bindings: ap806: add the thermal node in the syscon file Miquel Raynal
2018-07-16 14:41 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 17/23] dt-bindings: cp110: update documentation since DT de-duplication Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 18/23] dt-bindings: cp110: add the thermal node in the syscon file Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 19/23] dt-bindings: thermal: armada: add reference to new bindings Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 16:03 ` Rob Herring
2018-07-16 16:03 ` Rob Herring
2018-07-16 14:42 ` [PATCH v3 20/23] arm64: dts: marvell: move AP806/CP110 thermal nodes into a new syscon Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 21/23] arm64: dts: marvell: add thermal-zone node in ap806 DTSI file Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 22/23] arm64: dts: marvell: add macro to make distinction between node names Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-16 14:42 ` [PATCH v3 23/23] arm64: dts: marvell: add thermal-zone node in cp110 DTSI file Miquel Raynal
2018-07-16 14:42 ` Miquel Raynal
2018-07-18 15:28 ` [PATCH v3 00/23] Add multi-channel support to Armada thermal driver Miquel Raynal
2018-07-18 15:28 ` Miquel Raynal
2018-07-25 7:52 ` Miquel Raynal
2018-07-25 7:52 ` Miquel Raynal
2018-07-26 2:00 ` Zhang Rui
2018-07-26 2:00 ` Zhang Rui
2018-07-26 21:14 ` Eduardo Valentin
2018-07-26 21:14 ` Eduardo Valentin
2018-07-26 21:35 ` Eduardo Valentin
2018-07-26 21:35 ` Eduardo Valentin
2018-07-26 22:14 ` Eduardo Valentin
2018-07-26 22:14 ` Eduardo Valentin
2018-07-26 22:59 ` Miquel Raynal
2018-07-26 22:59 ` Miquel Raynal
2018-07-27 21:15 ` Eduardo Valentin
2018-07-27 21:15 ` Eduardo Valentin
-- strict thread matches above, loose matches on Subject: below --
2018-07-05 16:04 Miquel Raynal
2018-07-05 16:04 ` [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches Miquel Raynal
2018-07-05 16:04 ` Miquel Raynal
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=20180729213055.2215bd53@xps13 \
--to=miquel.raynal@bootlin.com \
--cc=andrew@lunn.ch \
--cc=antoine.tenart@bootlin.com \
--cc=catalin.marinas@arm.com \
--cc=daniel.lezcano@linaro.org \
--cc=davidsn@marvell.com \
--cc=devicetree@vger.kernel.org \
--cc=edubezval@gmail.com \
--cc=gregory.clement@bootlin.com \
--cc=jason@lakedaemon.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maxime.chevallier@bootlin.com \
--cc=nadavh@marvell.com \
--cc=robh+dt@kernel.org \
--cc=rui.zhang@intel.com \
--cc=sebastian.hesselbarth@gmail.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=will.deacon@arm.com \
/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.