linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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>,
	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, Jason Reeder <jreeder@ti.com>
Subject: Re: [PATCH 28/40] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
Date: Mon, 30 Aug 2021 15:10:10 +0100	[thread overview]
Message-ID: <20210830151010.7dcb1be3@jic23-huawei> (raw)
In-Reply-To: <20210825152518.379386-29-miquel.raynal@bootlin.com>

On Wed, 25 Aug 2021 17:25:06 +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.
> 
> Co-developed-by: Jason Reeder <jreeder@ti.com>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> Signed-off-by: Jason Reeder <jreeder@ti.com>
There is one bit in here that I think should have been back in patch 16 but
maybe I'm missing something.

Jonathan

> ---
>  drivers/mfd/ti_am335x_tscadc.c       | 43 ++++++++++++++++++++++------
>  include/linux/mfd/ti_am335x_tscadc.h |  9 +++++-
>  2 files changed, 43 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c
> index 1a30610dc65f..f4f6b9db4d2a 100644
> --- a/drivers/mfd/ti_am335x_tscadc.c
> +++ b/drivers/mfd/ti_am335x_tscadc.c
> @@ -122,9 +122,9 @@ static	int ti_tscadc_probe(struct platform_device *pdev)
>  	const __be32 *cur;
>  	struct clk *clk;
>  	u32 val;
> -	bool use_tsc = false;
> +	bool use_tsc = false, use_mag = false;
>  	int tscmag_wires = 0, adc_channels = 0, readouts = 0, cell_idx = 0;
> -	int total_channels, err;
> +	int mag_tracks = 0, total_channels, err;
>  
>  	/* Allocate memory for device */
>  	tscadc = devm_kzalloc(&pdev->dev, sizeof(*tscadc), GFP_KERNEL);
> @@ -146,6 +146,12 @@ static	int ti_tscadc_probe(struct platform_device *pdev)
>  		of_property_read_u32(node, "ti,coordiante-readouts", &readouts);
>  		if (tscmag_wires)
>  			use_tsc = true;
> +	} else {
> +		node = of_get_child_by_name(pdev->dev.of_node, "mag");
> +		of_property_read_u32(node, "ti,tracks", &mag_tracks);
> +		tscmag_wires = mag_tracks * 2;
> +		if (tscmag_wires)
> +			use_mag = true;
>  	}
>  
>  	node = of_get_child_by_name(pdev->dev.of_node, "adc");
> @@ -206,8 +212,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);
> @@ -231,7 +238,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);
> @@ -241,7 +250,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;
> @@ -329,6 +338,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",
> @@ -336,8 +346,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", },
> +	{
> +		.compatible = "ti,am3359-tscadc",
> +		.data = &tscdata,
Interesting to see match data added here and not before.
Given you don't have any code in here that seems to have
changed to use the match data, was it buggy before or is this still
not used?

> +	},
> +	{
> +		.compatible = "ti,am4372-magadc",
> +		.data = &magdata,
> +	},
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(of, ti_tscadc_dt_ids);
> @@ -355,6 +382,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 082b2af94263..31b22ec567e7 100644
> --- a/include/linux/mfd/ti_am335x_tscadc.h
> +++ b/include/linux/mfd/ti_am335x_tscadc.h
> @@ -129,6 +129,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 (0xfff << 0)
>  #define FIFOREAD_CHNLID_MASK (0xf << 16)
> @@ -141,7 +146,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 */

Not sure on current status, but there is a proposed series floating
about that adds HZ_PER_MEGAHZ or something like that which would make
it easier to spot if these have right number of zeros.

>  #define TOTAL_STEPS		16
>  #define TOTAL_CHANNELS		8
>  #define FIFO1_THRESHOLD		19
> @@ -164,6 +170,7 @@
>  
>  struct ti_tscadc_data {
>  	bool has_tsc;
> +	bool has_mag;
>  	char *name_tscmag;
>  	char *compat_tscmag;
>  	char *name_adc;


  reply	other threads:[~2021-08-30 14:07 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
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 [this message]
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=20210830151010.7dcb1be3@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jreeder@ti.com \
    --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=miquel.raynal@bootlin.com \
    --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 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).