All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	Rob Herring <robh+dt@kernel.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	bcousson@baylibre.com, Tony Lindgren <tony@atomide.com>,
	linux-iio@vger.kernel.org, devicetree@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>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: Re: [PATCH v3 35/47] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
Date: Wed, 22 Sep 2021 17:00:20 +0100	[thread overview]
Message-ID: <YUtTFEv1YFOMeuEb@google.com> (raw)
In-Reply-To: <20210915155908.476767-36-miquel.raynal@bootlin.com>

On Wed, 15 Sep 2021, Miquel Raynal 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>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
>  drivers/mfd/ti_am335x_tscadc.c       | 41 ++++++++++++++++++++++++----
>  include/linux/mfd/ti_am335x_tscadc.h |  7 +++++
>  2 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c
> index 65c0fa735a71..155a8ed879b3 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");
> @@ -209,8 +219,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);
> @@ -238,6 +249,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,

Why 2 bools?

Better to have a single u8:

  MODE_TOUCHSCREEN
  MODE_MAG_STRING
  MODE_NONE

> +	.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");

Magnetic what?  Tape, disk, stripe?

>  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 467b3bec4335..9a412e6d764b 100644
> --- a/include/linux/mfd/ti_am335x_tscadc.h
> +++ b/include/linux/mfd/ti_am335x_tscadc.h
> @@ -106,6 +106,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)
> @@ -119,6 +124,7 @@
>  #define CHARGE_STEP		0x11
>  
>  #define TSC_ADC_CLK		(3 * HZ_PER_MHZ)
> +#define MAG_ADC_CLK		(13 * HZ_PER_MHZ)
>  #define TOTAL_STEPS		16
>  #define TOTAL_CHANNELS		8
>  #define FIFO1_THRESHOLD		19
> @@ -141,6 +147,7 @@
>  
>  struct ti_tscadc_data {
>  	bool has_tsc;
> +	bool has_mag;
>  	char *name_tscmag;
>  	char *compat_tscmag;
>  	char *name_adc;

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2021-09-22 16:00 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-15 15:58 [PATCH v3 00/47] TI AM437X ADC1 Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 01/47] clk: ti: am43xx: Add clkctrl data for am43xx ADC1 Miquel Raynal
2021-09-21  7:49   ` Tony Lindgren
2021-09-15 15:58 ` [PATCH v3 02/47] dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this MFD Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 03/47] dt-bindings: touchscreen: ti,am3359-tsc: New yaml description Miquel Raynal
2021-09-21  3:55   ` Dmitry Torokhov
2021-09-15 15:58 ` [PATCH v3 04/47] dt-bindings: iio: adc: ti,am3359-adc: " Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 05/47] dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file Miquel Raynal
2021-09-21  3:56   ` Dmitry Torokhov
2021-09-15 15:58 ` [PATCH v3 06/47] dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 07/47] dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 08/47] mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 09/47] mfd: ti_am335x_tscadc: Replace license text with SPDX tag Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 10/47] mfd: ti_am335x_tscadc: Fix style Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 11/47] mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack variables Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 12/47] mfd: ti_am335x_tscadc: Get rid of useless gotos Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 13/47] mfd: ti_am335x_tscadc: Reword the comment explaining the dividers Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 14/47] mfd: ti_am335x_tscadc: Don't search the tree for our clock Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 15/47] mfd: ti_am335x_tscadc: Simplify divisor calculation Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 16/47] mfd: ti_am335x_tscadc: Move the driver structure allocation earlier Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 17/47] mfd: ti_am335x_tscadc: Use driver data Miquel Raynal
2021-09-22 15:01   ` Lee Jones
2021-09-22 15:42     ` Miquel Raynal
2021-09-22 15:54       ` Lee Jones
2021-09-15 15:58 ` [PATCH v3 18/47] mfd: ti_am335x_tscadc: Mimic the probe from resume() Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 19/47] mfd: ti_am335x_tscadc: Drop useless variables from the driver structure Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 20/47] mfd: ti_am335x_tscadc: Always provide an idle configuration Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 21/47] mfd: ti_am335x_tscadc: Reorder the initialization steps Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 22/47] mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 23/47] mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 24/47] mfd: ti_am335x_tscadc: Fix header spacing Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 25/47] mfd: ti_am335x_tscadc: Use the new HZ_PER_MHZ macro Miquel Raynal
2021-09-18 16:02   ` Jonathan Cameron
2021-09-15 15:58 ` [PATCH v3 26/47] mfd: ti_am335x_tscadc: Use BIT(), GENMASK() and FIELD_PREP() when relevant Miquel Raynal
2021-09-18 16:15   ` Jonathan Cameron
2021-09-15 15:58 ` [PATCH v3 27/47] mfd: ti_am335x_tscadc: Clarify the maximum values for DT entries Miquel Raynal
2021-09-18 16:22   ` Jonathan Cameron
2021-09-15 15:58 ` [PATCH v3 28/47] mfd: ti_am335x_tscadc: Drop useless definitions from the header Miquel Raynal
2021-09-18 16:31   ` Jonathan Cameron
2021-09-20 15:21     ` Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 29/47] mfd: ti_am335x_tscadc: Rename the subsystem enable macro Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 30/47] mfd: ti_am335x_tscadc: Add TSC prefix in certain macros Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 31/47] mfd: ti_am335x_tscadc: Rename a variable Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 32/47] mfd: ti_am335x_tscadc: Fix an error message Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 33/47] mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a touchscreen Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 34/47] mfd: ti_am335x_tscadc: Introduce has_tsc Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 35/47] mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support Miquel Raynal
2021-09-22 16:00   ` Lee Jones [this message]
2021-09-23  8:33     ` Miquel Raynal
2021-09-28 10:34     ` Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 36/47] mfd: ti_am335x_tscadc: Support the correctly spelled DT property Miquel Raynal
2021-09-22 15:57   ` Lee Jones
2021-09-23  8:19     ` Miquel Raynal
2021-09-23  9:11       ` Lee Jones
2021-09-23  9:33         ` Miquel Raynal
2021-09-27  8:09           ` Lee Jones
2021-09-27  8:18             ` Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 37/47] iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls Miquel Raynal
2021-09-15 15:58 ` [PATCH v3 38/47] iio: adc: ti_am335x_adc: Replace license text with SPDX tag Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 39/47] iio: adc: ti_am335x_adc: Fix style Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 40/47] iio: adc: ti_am335x_adc: Get rid of useless gotos Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 41/47] iio: adc: ti_am335x_adc: Gather the checks on the delays Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 42/47] iio: adc: ti_am335x_adc: Add a unit to the timeout delay Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 43/47] iio: adc: ti_am335x_adc: Add the scale information Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 44/47] iio: adc: ti_am335x_adc: Add the am437x compatible Miquel Raynal
2021-09-15 15:59 ` [PATCH v3 45/47] ARM: dts: am437x-cm-t43: Use a correctly spelled DT property Miquel Raynal
2021-09-21  7:51   ` Tony Lindgren
2021-09-15 15:59 ` [PATCH v3 46/47] ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module Miquel Raynal
2021-09-21  7:51   ` Tony Lindgren
2021-09-15 15:59 ` [PATCH v3 47/47] ARM: dts: am437x-gp-evm: enable ADC1 Miquel Raynal
2021-09-20 15:30 ` [PATCH v3 00/47] TI AM437X ADC1 Miquel Raynal
2021-09-22 16:02 ` Lee Jones
2021-09-23  8:35   ` 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=YUtTFEv1YFOMeuEb@google.com \
    --to=lee.jones@linaro.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=grygorii.strashko@ti.com \
    --cc=jic23@kernel.org \
    --cc=jreeder@ti.com \
    --cc=kristo@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@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 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.