From: Jonathan Cameron <jic23@kernel.org>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Rob Herring <robh+dt@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Lee Jones <lee.jones@linaro.org>,
bcousson@baylibre.com, Tony Lindgren <tony@atomide.com>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-input@vger.kernel.org, linux-omap@vger.kernel.org,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Vignesh Raghavendra <vigneshr@ti.com>,
Lokesh Vutla <lokeshvutla@ti.com>,
Tero Kristo <kristo@kernel.org>,
Ryan Barnett <ryan.barnett@collins.com>,
Grygorii Strashko <grygorii.strashko@ti.com>,
Jason Reeder <jreeder@ti.com>
Subject: Re: [PATCH v2 34/46] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
Date: Sun, 5 Sep 2021 14:23:24 +0100 [thread overview]
Message-ID: <20210905142324.3de19916@jic23-huawei> (raw)
In-Reply-To: <20210902215144.507243-35-miquel.raynal@bootlin.com>
On Thu, 2 Sep 2021 23:51:32 +0200
Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> Introduce a new compatible that has another set of driver data,
> targeting am437x SoCs with a magnetic reader instead of the
> touchscreen and a more featureful set of registers.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
I'm being lazy and not datasheet diving but otherwise looks good.
The HZ unit patch is in mm, but Linus hasn't merged it yet. May well be
in whatever tree this goes into post merge window though.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/mfd/ti_am335x_tscadc.c | 41 ++++++++++++++++++++++++----
> include/linux/mfd/ti_am335x_tscadc.h | 9 +++++-
> 2 files changed, 43 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c
> index a0db3e4ff265..a3347f9fc388 100644
> --- a/drivers/mfd/ti_am335x_tscadc.c
> +++ b/drivers/mfd/ti_am335x_tscadc.c
> @@ -121,11 +121,11 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> struct mfd_cell *cell;
> struct property *prop;
> const __be32 *cur;
> - bool use_tsc = false;
> + bool use_tsc = false, use_mag = false;
> u32 val;
> int err;
> int tscmag_wires = 0, adc_channels = 0, cell_idx = 0, total_channels;
> - int readouts = 0;
> + int readouts = 0, mag_tracks = 0;
>
> /* Allocate memory for device */
> tscadc = devm_kzalloc(&pdev->dev, sizeof(*tscadc), GFP_KERNEL);
> @@ -148,6 +148,16 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> of_node_put(node);
> if (tscmag_wires)
> use_tsc = true;
> + } else {
> + /*
> + * When adding support for the magnetic reader, here is the
> + * place to look for the number of tracks used from device tree.
> + * Let's default to 0 for now.
> + */
> + mag_tracks = 0;
> + tscmag_wires = mag_tracks * 2;
> + if (tscmag_wires)
> + use_mag = true;
> }
>
> node = of_get_child_by_name(pdev->dev.of_node, "adc");
> @@ -211,8 +221,9 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> * The TSC_ADC_Subsystem has 2 clock domains: OCP_CLK and ADC_CLK.
> * ADCs produce a 12-bit sample every 15 ADC_CLK cycles.
> * am33xx ADCs expect to capture 200ksps.
> - * We need the ADC clocks to run at 3MHz.
> - * This frequency is valid since TSC_ADC_SS controller design
> + * am47xx ADCs expect to capture 867ksps.
> + * We need ADC clocks respectively running at 3MHz and 13MHz.
> + * These frequencies are valid since TSC_ADC_SS controller design
> * assumes the OCP clock is at least 6x faster than the ADC clock.
> */
> clk = devm_clk_get(&pdev->dev, NULL);
> @@ -236,6 +247,9 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> else
> tscadc->ctrl |= CNTRLREG_TSC_4WIRE;
> }
> + } else {
> + tscadc->ctrl |= CNTRLREG_MAG_PREAMP_PWRDOWN |
> + CNTRLREG_MAG_PREAMP_BYPASS;
> }
> regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl);
>
> @@ -246,7 +260,7 @@ static int ti_tscadc_probe(struct platform_device *pdev)
> /* Enable the TSC module enable bit */
> regmap_write(tscadc->regmap, REG_CTRL, tscadc->ctrl | CNTRLREG_SSENB);
>
> - /* TSC Cell */
> + /* TSC or MAG Cell */
> if (tscmag_wires > 0) {
> cell = &tscadc->cells[cell_idx++];
> cell->name = tscadc->data->name_tscmag;
> @@ -334,6 +348,7 @@ static SIMPLE_DEV_PM_OPS(tscadc_pm_ops, tscadc_suspend, tscadc_resume);
>
> static const struct ti_tscadc_data tscdata = {
> .has_tsc = true,
> + .has_mag = false,
> .name_tscmag = "TI-am335x-tsc",
> .compat_tscmag = "ti,am3359-tsc",
> .name_adc = "TI-am335x-adc",
> @@ -341,11 +356,25 @@ static const struct ti_tscadc_data tscdata = {
> .target_clk_rate = TSC_ADC_CLK,
> };
>
> +static const struct ti_tscadc_data magdata = {
> + .has_tsc = false,
> + .has_mag = true,
> + .name_tscmag = "TI-am43xx-mag",
> + .compat_tscmag = "ti,am4372-mag",
> + .name_adc = "TI-am43xx-adc",
> + .compat_adc = "ti,am4372-adc",
> + .target_clk_rate = MAG_ADC_CLK,
> +};
> +
> static const struct of_device_id ti_tscadc_dt_ids[] = {
> {
> .compatible = "ti,am3359-tscadc",
> .data = &tscdata,
> },
> + {
> + .compatible = "ti,am4372-magadc",
> + .data = &magdata,
> + },
> { }
> };
> MODULE_DEVICE_TABLE(of, ti_tscadc_dt_ids);
> @@ -363,6 +392,6 @@ static struct platform_driver ti_tscadc_driver = {
>
> module_platform_driver(ti_tscadc_driver);
>
> -MODULE_DESCRIPTION("TI touchscreen / ADC MFD controller driver");
> +MODULE_DESCRIPTION("TI touchscreen/magnetic reader/ADC MFD controller driver");
> MODULE_AUTHOR("Rachna Patil <rachna@ti.com>");
> MODULE_LICENSE("GPL");
> diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
> index 3dbdb827566c..1f29bcdf51c7 100644
> --- a/include/linux/mfd/ti_am335x_tscadc.h
> +++ b/include/linux/mfd/ti_am335x_tscadc.h
> @@ -122,6 +122,11 @@
> #define CNTRLREG_TSC_8WIRE CNTRLREG_TSC_AFE_CTRL(3)
> #define CNTRLREG_TSC_ENB BIT(7)
>
> +/*Control registers bitfields for MAGADC IP */
> +#define CNTRLREG_MAGADCENB BIT(0)
> +#define CNTRLREG_MAG_PREAMP_PWRDOWN BIT(5)
> +#define CNTRLREG_MAG_PREAMP_BYPASS BIT(6)
> +
> /* FIFO READ Register */
> #define FIFOREAD_DATA_MASK GENMASK(11, 0)
> #define FIFOREAD_CHNLID_MASK GENMASK(19, 16)
> @@ -134,7 +139,8 @@
> #define SEQ_STATUS BIT(5)
> #define CHARGE_STEP 0x11
>
> -#define TSC_ADC_CLK 3000000
> +#define TSC_ADC_CLK 3000000 /* 3 MHz */
> +#define MAG_ADC_CLK 13000000 /* 13 MHz */
> #define TOTAL_STEPS 16
> #define TOTAL_CHANNELS 8
> #define FIFO1_THRESHOLD 19
> @@ -157,6 +163,7 @@
>
> struct ti_tscadc_data {
> bool has_tsc;
> + bool has_mag;
> char *name_tscmag;
> char *compat_tscmag;
> char *name_adc;
next prev parent reply other threads:[~2021-09-05 13:20 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-02 21:50 [PATCH v2 00/46] TI AM437X ADC1 Miquel Raynal
2021-09-02 21:50 ` [PATCH v2 01/46] clk: ti: am43xx: Add clkctrl data for am43xx ADC1 Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 02/46] dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this MFD Miquel Raynal
2021-09-03 16:05 ` Rob Herring
2021-09-05 11:57 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 03/46] dt-bindings: touchscreen: ti,am3359-tsc: New yaml description Miquel Raynal
2021-09-03 16:06 ` Rob Herring
2021-09-05 11:59 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 04/46] dt-bindings: iio: adc: ti,am3359-adc: " Miquel Raynal
2021-09-03 16:07 ` Rob Herring
2021-09-02 21:51 ` [PATCH v2 05/46] dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 06/46] dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible Miquel Raynal
2021-09-05 12:01 ` Jonathan Cameron
2021-09-07 19:04 ` Rob Herring
2021-09-02 21:51 ` [PATCH v2 07/46] dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible Miquel Raynal
2021-09-07 19:05 ` Rob Herring
2021-09-02 21:51 ` [PATCH v2 08/46] mfd: ti_am335x_tscadc: Replace license text with SPDX tag Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 09/46] mfd: ti_am335x_tscadc: Fix style Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 10/46] mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack variables Miquel Raynal
2021-09-05 12:03 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 11/46] mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put Miquel Raynal
2021-09-05 12:06 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 12/46] mfd: ti_am335x_tscadc: Get rid of useless gotos Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 13/46] mfd: ti_am335x_tscadc: Reword the comment explaining the dividers Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 14/46] mfd: ti_am335x_tscadc: Don't search the tree for our clock Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 15/46] mfd: ti_am335x_tscadc: Simplify divisor calculation Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 16/46] mfd: ti_am335x_tscadc: Move the driver structure allocation earlier Miquel Raynal
2021-09-05 12:09 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 17/46] mfd: ti_am335x_tscadc: Use driver data Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 18/46] mfd: ti_am335x_tscadc: Mimic the probe from resume() Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 19/46] mfd: ti_am335x_tscadc: Drop useless variables from the driver structure Miquel Raynal
2021-09-05 12:11 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 20/46] mfd: ti_am335x_tscadc: Always provide an idle configuration Miquel Raynal
2021-09-05 12:13 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 21/46] mfd: ti_am335x_tscadc: Reorder the initialization steps Miquel Raynal
2021-09-05 12:18 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 22/46] mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place Miquel Raynal
2021-09-05 12:20 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 23/46] mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag Miquel Raynal
2021-09-05 12:21 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 24/46] mfd: ti_am335x_tscadc: Fix header spacing Miquel Raynal
2021-09-05 12:22 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 25/46] mfd: ti_am335x_tscadc: Use BIT() and GENMASK() when relevant in the header Miquel Raynal
2021-09-05 13:09 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 26/46] mfd: ti_am335x_tscadc: Use FIELD_PREP() " Miquel Raynal
2021-09-05 13:13 ` Jonathan Cameron
2021-09-15 7:48 ` Miquel Raynal
2021-09-19 15:49 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 27/46] mfd: ti_am335x_tscadc: Rename the subsystem enable macro Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 28/46] mfd: ti_am335x_tscadc: Add TSC prefix in certain macros Miquel Raynal
2021-09-05 13:15 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 29/46] mfd: ti_am335x_tscadc: Rename a variable Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 30/46] mfd: ti_am335x_tscadc: Fix an error message Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 31/46] mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a touchscreen Miquel Raynal
2021-09-05 13:17 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 32/46] mfd: ti_am335x_tscadc: Introduce has_tsc Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 33/46] mfd: ti_am335x_tscadc: Move control register configuration Miquel Raynal
2021-09-03 13:24 ` Grygorii Strashko
2021-09-05 13:18 ` Jonathan Cameron
2021-09-05 13:22 ` Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 34/46] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support Miquel Raynal
2021-09-05 13:23 ` Jonathan Cameron [this message]
2021-09-14 18:25 ` Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 35/46] mfd: ti_am335x_tscadc: Support the correctly spelled DT property Miquel Raynal
2021-09-05 13:24 ` Jonathan Cameron
2021-09-02 21:51 ` [PATCH v2 36/46] iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 37/46] iio: adc: ti_am335x_adc: Replace license text with SPDX tag Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 38/46] iio: adc: ti_am335x_adc: Fix style Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 39/46] iio: adc: ti_am335x_adc: Get rid of useless gotos Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 40/46] iio: adc: ti_am335x_adc: Gather the checks on the delays Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 41/46] iio: adc: ti_am335x_adc: Add a unit to the timeout delay Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 42/46] iio: adc: ti_am335x_adc: Add the scale information Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 43/46] iio: adc: ti_am335x_adc: Add the am437x compatible Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 44/46] ARM: dts: am437x-cm-t43: Use a correctly spelled DT property Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 45/46] ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module Miquel Raynal
2021-09-02 22:17 ` Miquel Raynal
2021-09-02 21:51 ` [PATCH v2 46/46] 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=20210905142324.3de19916@jic23-huawei \
--to=jic23@kernel.org \
--cc=bcousson@baylibre.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=grygorii.strashko@ti.com \
--cc=jreeder@ti.com \
--cc=kristo@kernel.org \
--cc=lars@metafoo.de \
--cc=lee.jones@linaro.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=lokeshvutla@ti.com \
--cc=miquel.raynal@bootlin.com \
--cc=pmeerw@pmeerw.net \
--cc=robh+dt@kernel.org \
--cc=ryan.barnett@collins.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=tony@atomide.com \
--cc=vigneshr@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).