From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Rob Herring <robh+dt@kernel.org>,
Lee Jones <lee.jones@linaro.org>,
bcousson@baylibre.com, Tony Lindgren <tony@atomide.com>,
Tero Kristo <t-kristo@ti.com>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
"Ryan J . Barnett" <ryan.barnett@collins.com>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-input@vger.kernel.org, linux-omap@vger.kernel.org,
linux-clk@vger.kernel.org
Subject: Re: [PATCH 20/40] mfd: ti_am335x_tscadc: Gather the ctrl register logic at one place
Date: Thu, 2 Sep 2021 21:42:47 +0200 [thread overview]
Message-ID: <20210902214247.13243c71@xps13> (raw)
In-Reply-To: <20210830145608.09d7e685@jic23-huawei>
Hi Jonathan,
Jonathan Cameron <jic23@kernel.org> wrote on Mon, 30 Aug 2021 14:56:08
+0100:
> On Wed, 25 Aug 2021 17:24:58 +0200
> Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> > Instead of deriving in the probe and in the resume path the value of the
> > ctrl register, let's do it only once in the probe, save the value of
> > this register in the driver's structure and use it from the resume
> > callback.
> >
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> A few minor things inline.
>
> J
>
> > ---
> > drivers/mfd/ti_am335x_tscadc.c | 31 ++++++++--------------------
> > include/linux/mfd/ti_am335x_tscadc.h | 2 +-
> > 2 files changed, 10 insertions(+), 23 deletions(-)
> >
> > diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c
> > index 7071344ad18e..d661e8ae66c9 100644
> > --- a/drivers/mfd/ti_am335x_tscadc.c
> > +++ b/drivers/mfd/ti_am335x_tscadc.c
> > @@ -122,7 +122,7 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> > struct clk *clk;
> > u32 val;
> > int tsc_wires = 0, adc_channels = 0, readouts = 0, cell_idx = 0;
> > - int total_channels, ctrl, err;
> > + int total_channels, err;
> >
> > /* Allocate memory for device */
> > tscadc = devm_kzalloc(&pdev->dev, sizeof(*tscadc), GFP_KERNEL);
> > @@ -215,22 +215,21 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> > regmap_write(tscadc->regmap, REG_CLKDIV, tscadc->clk_div);
> >
> > /* Set the control register bits */
> > - ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID;
> > - regmap_write(tscadc->regmap, REG_CTRL, ctrl);
> > + tscadc->ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID;
> > + regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl);
> >
> > if (tsc_wires > 0) {
> > - tscadc->tsc_wires = tsc_wires;
> > + tscadc->ctrl |= CNTRLREG_TSCENB;
> > if (tsc_wires == 5)
> > - ctrl |= CNTRLREG_5WIRE | CNTRLREG_TSCENB;
> > + tscadc->ctrl |= CNTRLREG_5WIRE;
> > else
> > - ctrl |= CNTRLREG_4WIRE | CNTRLREG_TSCENB;
> > + tscadc->ctrl |= CNTRLREG_4WIRE;
> > }
> >
> > tscadc_idle_config(tscadc);
> >
> > /* Enable the TSC module enable bit */
> > - ctrl |= CNTRLREG_TSCSSENB;
> > - regmap_write(tscadc->regmap, REG_CTRL, ctrl);
> > + regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl | CNTRLREG_TSCSSENB);
> >
> > /* TSC Cell */
> > if (tsc_wires > 0) {
> > @@ -305,25 +304,13 @@ static int __maybe_unused tscadc_suspend(struct device *dev)
> > static int __maybe_unused tscadc_resume(struct device *dev)
> > {
> > struct ti_tscadc_dev *tscadc = dev_get_drvdata(dev);
> > - u32 ctrl;
> >
> > pm_runtime_get_sync(dev);
> >
> > - /* context restore */
> > - ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID;
> > - regmap_write(tscadc->regmap, REG_CTRL, ctrl);
> > -
> > - if (tscadc->tsc_wires > 0) {
> > - if (tscadc->tsc_wires == 5)
> > - ctrl |= CNTRLREG_5WIRE | CNTRLREG_TSCENB;
> > - else
> > - ctrl |= CNTRLREG_4WIRE | CNTRLREG_TSCENB;
> > - }
> > - ctrl |= CNTRLREG_TSCSSENB;
> > - regmap_write(tscadc->regmap, REG_CTRL, ctrl);
> > -
> > regmap_write(tscadc->regmap, REG_CLKDIV, tscadc->clk_div);
> > + regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl);
>
> Patch description should mention why this ordering change is here.
I actually moved the patch that reorders things earlier so that the
reviewer is not bothered by the order changes later on.
>
> > tscadc_idle_config(tscadc);
> > + regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl | CNTRLREG_TSCSSENB);
>
> As the value of tscadc->ctrl is not the same as REG_CTRL this is a bit non obvious.
>
> You might be better off keeping them in sync, but masking that bit out and then resetting
> it as appropriate.
I honestly find more readable doing:
ctrl = flags;
writel(ctrl);
writel(ctrl | en_bit);
than
ctrl = flags;
writel(ctrl & ~en_bit);
writel(ctrl);
because the second version emphasis the fact that we reset the en_bit
(which is wrong, the point of this first write is to actually write all
the configuration but not the en_bit yet) while the first version
clearly shows that the second write includes an additional "enable bit".
Thanks,
Miquèl
next prev parent reply other threads:[~2021-09-02 19:42 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-25 15:24 [PATCH 00/40] TI AM437X ADC1 Miquel Raynal
2021-08-25 15:24 ` [PATCH 01/40] clk: ti: am43xx: Add clkctrl data for am43xx ADC1 Miquel Raynal
2021-08-25 15:24 ` [PATCH 02/40] dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this MFD Miquel Raynal
2021-08-30 12:47 ` Jonathan Cameron
2021-09-02 17:35 ` Miquel Raynal
2021-08-31 19:33 ` Rob Herring
2021-08-25 15:24 ` [PATCH 03/40] dt-bindings: touchscreen: ti,am3359-tsc: New yaml description Miquel Raynal
2021-08-30 13:36 ` Jonathan Cameron
2021-09-02 17:45 ` Miquel Raynal
2021-09-05 11:58 ` Jonathan Cameron
2021-08-31 19:37 ` Rob Herring
2021-09-01 7:42 ` Miquel Raynal
2021-08-25 15:24 ` [PATCH 04/40] dt-bindings: iio: adc: ti,am3359-adc: " Miquel Raynal
2021-08-30 12:31 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 05/40] dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file Miquel Raynal
2021-08-30 12:39 ` Jonathan Cameron
2021-08-31 19:38 ` Rob Herring
2021-08-25 15:24 ` [PATCH 06/40] dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible Miquel Raynal
2021-08-30 12:34 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 07/40] dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible Miquel Raynal
2021-08-30 12:35 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 08/40] mfd: ti_am335x_tscadc: Replace license text with SPDX tag Miquel Raynal
2021-08-30 12:38 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 09/40] mfd: ti_am335x_tscadc: Fix style Miquel Raynal
2021-08-30 12:49 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 10/40] mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack variables Miquel Raynal
2021-08-30 12:52 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 11/40] mfd: ti_am335x_tscadc: Get rid of useless gotos Miquel Raynal
2021-08-30 13:39 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 12/40] mfd: ti_am335x_tscadc: Move the driver structure allocation earlier Miquel Raynal
2021-08-30 14:25 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 13/40] mfd: ti_am335x_tscadc: Reword the comment explaining the dividers Miquel Raynal
2021-08-30 13:43 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 14/40] mfd: ti_am335x_tscadc: Don't search the tree for our clock Miquel Raynal
2021-08-25 15:24 ` [PATCH 15/40] mfd: ti_am335x_tscadc: Simplify divisor calculation Miquel Raynal
2021-08-30 13:47 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 16/40] mfd: ti_am335x_tscadc: Use driver data Miquel Raynal
2021-08-30 14:46 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 17/40] mfd: ti_am335x_tscadc: Mimic the probe from resume() Miquel Raynal
2021-08-25 15:24 ` [PATCH 18/40] mfd: ti_am335x_tscadc: Drop useless variables from the driver structure Miquel Raynal
2021-08-25 15:24 ` [PATCH 19/40] mfd: ti_am335x_tscadc: Always provide an idle configuration Miquel Raynal
2021-08-30 14:49 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 20/40] mfd: ti_am335x_tscadc: Gather the ctrl register logic at one place Miquel Raynal
2021-08-30 13:56 ` Jonathan Cameron
2021-09-02 19:42 ` Miquel Raynal [this message]
2021-09-05 11:13 ` Jonathan Cameron
2021-08-25 15:24 ` [PATCH 21/40] mfd: ti_am335x_tscadc: Rename the subsystem enable macro Miquel Raynal
2021-08-30 14:50 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 22/40] mfd: ti_am335x_tscadc: Add TSC prefix in certain macros Miquel Raynal
2021-08-30 14:52 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 23/40] mfd: ti_am335x_tscadc: Rename a variable Miquel Raynal
2021-08-30 14:53 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 24/40] mfd: ti_am335x_tscadc: Fix an error message Miquel Raynal
2021-08-30 13:58 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 25/40] mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a touchscreen Miquel Raynal
2021-08-30 13:59 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 26/40] mfd: ti_am335x_tscadc: Introduce has_tsc Miquel Raynal
2021-08-30 14:02 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 27/40] mfd: ti_am335x_tscadc: Move control register configuration Miquel Raynal
2021-08-30 14:03 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 28/40] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support Miquel Raynal
2021-08-30 14:10 ` Jonathan Cameron
2021-09-02 18:31 ` Miquel Raynal
2021-09-02 20:03 ` Miquel Raynal
2021-09-01 19:26 ` Grygorii Strashko
2021-09-02 6:47 ` Miquel Raynal
2021-09-02 9:57 ` Grygorii Strashko
2021-08-25 15:25 ` [PATCH 29/40] mfd: ti_am335x_tscadc: Support the correctly spelled DT property Miquel Raynal
2021-08-30 14:11 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 30/40] iio: adc: ti_am335x_adc: Replace license text with SPDX tag Miquel Raynal
2021-08-30 14:12 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 31/40] iio: adc: ti_am335x_adc: Fix style Miquel Raynal
2021-08-30 14:16 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 32/40] iio: adc: ti_am335x_adc: Get rid of useless gotos Miquel Raynal
2021-08-30 14:18 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 33/40] iio: adc: ti_am335x_adc: Gather the checks on the delays Miquel Raynal
2021-08-30 14:19 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 34/40] iio: adc: ti_am335x_adc: Add a unit to the timeout delay Miquel Raynal
2021-08-30 14:20 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 35/40] iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls Miquel Raynal
2021-08-30 14:22 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 36/40] iio: adc: ti_am335x_adc: Add the scale information Miquel Raynal
2021-08-30 14:23 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 37/40] iio: adc: ti_am335x_adc: Add the am437x compatible Miquel Raynal
2021-08-30 14:24 ` Jonathan Cameron
2021-08-25 15:25 ` [PATCH 38/40] ARM: dts: am437x-cm-t43: Use a correctly spelled DT property Miquel Raynal
2021-08-25 15:25 ` [PATCH 39/40] ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module Miquel Raynal
2021-08-25 15:25 ` [PATCH 40/40] ARM: dts: am437x-gp-evm: enable ADC1 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=20210902214247.13243c71@xps13 \
--to=miquel.raynal@bootlin.com \
--cc=bcousson@baylibre.com \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=lee.jones@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=pmeerw@pmeerw.net \
--cc=robh+dt@kernel.org \
--cc=ryan.barnett@collins.com \
--cc=sboyd@kernel.org \
--cc=t-kristo@ti.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=tony@atomide.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.