mbox series

[v3,00/47] TI AM437X ADC1

Message ID 20210915155908.476767-1-miquel.raynal@bootlin.com (mailing list archive)
Headers show
Series TI AM437X ADC1 | expand

Message

Miquel Raynal Sept. 15, 2021, 3:58 p.m. UTC
Hello,

This is a (fairly big) series bringing support of AM437X ADC1.
On TI AM33XX SoCs family there is an ADC that can also be connected to a
touchscreen. This hardware has been extended and is present on certain
SoCs from the AM437X family. In particular, the touchscreen has been
replaced by a magnetic card reader. In both cases, the representation is
an MFD device with two children:
* on AM33XX: the touchscreen controller and the ADC
* on AM437X: the magnetic card reader and the ADC

This series really targets small and atomic changes so that the overall
review is eased, even though it leads to a lot of rather small patches.
Here are the steps:
* Supporting the missing clock
* Translating a single text file containing the description for the
  MFD, the touchscreen and the ADC into three independent yaml files.
* Cleaning/preparing the MFD driver.
* Supporting ADC1 in the MFD driver.
* Cleaning/preparing of the ADC driver.
* Supporting ADC1 in the ADC driver.
* Updating various device trees.

Here is the full series again, almost reviewed and acked entirely, but
rebased on the last -rc1. The clock patch has been acked, the ADC
patches as well, so we expect the series to go through the MFD
tree if hte maintainers agree with it.

Thanks,
Miquèl

Changes in v3:
* Rebased on top of v5.15-rc1.
* R-by/A-by tags added.
* Light reordering to let the of_put_node() fix to be applied more easily
* Dropped a patch made useless because of the previous reordering
* Explained how the tscadc->ctrl variable was used.
* Fixed a couple of typos.
* Included the change for the HZ macro.
* Went further in the BIT()/FIELD_PREP() cleanup.
* Added maximum definitions for sample delay/open delay.
* Removed useless definitions.
* Fixed a couple of rebase conflicts (the series was not bisectable).

Changes in v2:
* Added various R-by/A-by tags.
* Various typos & style fixes.
[Bindings]
* Included the missing ti,am654-tscadc compatible.
* Reworded the compatible lines as requested by Jonathan.
* Reworded the bindings content a little bit as advised by Rob (subnodes
  being objects, MFD descriptions provided once, status and unused
  labels removed).
[SPDX changes]
* Mentioned that the license macro and the license text matched.
* Also added an SPDX tag in the MFD header.
[MFD header]
* Used the BIT(), GENMASK() and PREP_FIELD() macros when relevant.
[MFD driver]
* Did not reordered the variables declared on the probe stack as advised
  by Jonathan.
* Added missing of_node_put() calls.
* Moved the patch changing the place where the main structure is
  allocated to directly precede the patch using this change.
* Fixed the driver data wiring (bug happening between ex patches 16 and
  28).
* Added a commit just to explain the reordering of the register writes
  during initialization/resume.
* Explained the check about 'use_tsc' in the commit message.
* Added a link to the TRM in a commit message referencing it.
* Removed the use of the ti,tracks property, used a constant value
  instead.
* Dropped the error check when retrieving the "wrong" DT property
  (coordiante-readouts) which is unused.


Miquel Raynal (47):
  clk: ti: am43xx: Add clkctrl data for am43xx ADC1
  dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this
    MFD
  dt-bindings: touchscreen: ti,am3359-tsc: New yaml description
  dt-bindings: iio: adc: ti,am3359-adc: New yaml description
  dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file
  dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible
  dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible
  mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put
  mfd: ti_am335x_tscadc: Replace license text with SPDX tag
  mfd: ti_am335x_tscadc: Fix style
  mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack
    variables
  mfd: ti_am335x_tscadc: Get rid of useless gotos
  mfd: ti_am335x_tscadc: Reword the comment explaining the dividers
  mfd: ti_am335x_tscadc: Don't search the tree for our clock
  mfd: ti_am335x_tscadc: Simplify divisor calculation
  mfd: ti_am335x_tscadc: Move the driver structure allocation earlier
  mfd: ti_am335x_tscadc: Use driver data
  mfd: ti_am335x_tscadc: Mimic the probe from resume()
  mfd: ti_am335x_tscadc: Drop useless variables from the driver
    structure
  mfd: ti_am335x_tscadc: Always provide an idle configuration
  mfd: ti_am335x_tscadc: Reorder the initialization steps
  mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place
  mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag
  mfd: ti_am335x_tscadc: Fix header spacing
  mfd: ti_am335x_tscadc: Use the new HZ_PER_MHZ macro
  mfd: ti_am335x_tscadc: Use BIT(), GENMASK() and FIELD_PREP() when
    relevant
  mfd: ti_am335x_tscadc: Clarify the maximum values for DT entries
  mfd: ti_am335x_tscadc: Drop useless definitions from the header
  mfd: ti_am335x_tscadc: Rename the subsystem enable macro
  mfd: ti_am335x_tscadc: Add TSC prefix in certain macros
  mfd: ti_am335x_tscadc: Rename a variable
  mfd: ti_am335x_tscadc: Fix an error message
  mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a
    touchscreen
  mfd: ti_am335x_tscadc: Introduce has_tsc
  mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
  mfd: ti_am335x_tscadc: Support the correctly spelled DT property
  iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls
  iio: adc: ti_am335x_adc: Replace license text with SPDX tag
  iio: adc: ti_am335x_adc: Fix style
  iio: adc: ti_am335x_adc: Get rid of useless gotos
  iio: adc: ti_am335x_adc: Gather the checks on the delays
  iio: adc: ti_am335x_adc: Add a unit to the timeout delay
  iio: adc: ti_am335x_adc: Add the scale information
  iio: adc: ti_am335x_adc: Add the am437x compatible
  ARM: dts: am437x-cm-t43: Use a correctly spelled DT property
  ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module
  ARM: dts: am437x-gp-evm: enable ADC1

 .../bindings/iio/adc/ti,am3359-adc.yaml       |  70 +++++
 .../input/touchscreen/ti,am3359-tsc.yaml      |  76 ++++++
 .../bindings/input/touchscreen/ti-tsc-adc.txt |  91 -------
 .../bindings/mfd/ti,am3359-tscadc.yaml        |  84 ++++++
 arch/arm/boot/dts/am437x-cm-t43.dts           |   2 +-
 arch/arm/boot/dts/am437x-gp-evm.dts           |   8 +
 arch/arm/boot/dts/am437x-l4.dtsi              |  31 ++-
 arch/arm/boot/dts/am43xx-clocks.dtsi          |   7 +
 drivers/clk/ti/clk-43xx.c                     |   1 +
 drivers/iio/adc/ti_am335x_adc.c               | 220 +++++++++-------
 drivers/mfd/ti_am335x_tscadc.c                | 243 ++++++++++--------
 include/dt-bindings/clock/am4.h               |   1 +
 include/linux/mfd/ti_am335x_tscadc.h          | 115 ++++-----
 13 files changed, 599 insertions(+), 350 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,am3359-adc.yaml
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti,am3359-tsc.yaml
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
 create mode 100644 Documentation/devicetree/bindings/mfd/ti,am3359-tscadc.yaml

Comments

Miquel Raynal Sept. 20, 2021, 3:30 p.m. UTC | #1
Hello Lee,

miquel.raynal@bootlin.com wrote on Wed, 15 Sep 2021 17:58:21 +0200:

> Hello,
> 
> This is a (fairly big) series bringing support of AM437X ADC1.
> On TI AM33XX SoCs family there is an ADC that can also be connected to a
> touchscreen. This hardware has been extended and is present on certain
> SoCs from the AM437X family. In particular, the touchscreen has been
> replaced by a magnetic card reader. In both cases, the representation is
> an MFD device with two children:
> * on AM33XX: the touchscreen controller and the ADC
> * on AM437X: the magnetic card reader and the ADC
> 
> This series really targets small and atomic changes so that the overall
> review is eased, even though it leads to a lot of rather small patches.
> Here are the steps:
> * Supporting the missing clock
> * Translating a single text file containing the description for the
>   MFD, the touchscreen and the ADC into three independent yaml files.
> * Cleaning/preparing the MFD driver.
> * Supporting ADC1 in the MFD driver.
> * Cleaning/preparing of the ADC driver.
> * Supporting ADC1 in the ADC driver.
> * Updating various device trees.
> 
> Here is the full series again, almost reviewed and acked entirely, but
> rebased on the last -rc1. The clock patch has been acked, the ADC
> patches as well, so we expect the series to go through the MFD
> tree if hte maintainers agree with it.

Lee, I would welcome your feedback about this big series. I received
the acknowledgment of:
* Stephen for the clock patch
* Jonathan and Rob for the binding patches
* Jonathan for the IIO patches
* Jonathan again for the MFD patches

There is currently only one issue left: I should reorder 28/47 before
26/47 and change the commit message of patch 27/47.

If this is fine for you I would like to:
* let you pick patches from 1 to 25 of v3
* I will send a v4 with only three patches: 26, 27, 28 with Jonathan's
  last comments addressed.
* Finally you could take the remaining patches of v3 up to patch 44 (the
  last 3 are DT patches).

Would this work for you? If possible I would like to avoid resending
the entire series once again. Unless of course you have additional
comments which I will obviously address.

Thanks,
Miquèl

> Changes in v3:
> * Rebased on top of v5.15-rc1.
> * R-by/A-by tags added.
> * Light reordering to let the of_put_node() fix to be applied more easily
> * Dropped a patch made useless because of the previous reordering
> * Explained how the tscadc->ctrl variable was used.
> * Fixed a couple of typos.
> * Included the change for the HZ macro.
> * Went further in the BIT()/FIELD_PREP() cleanup.
> * Added maximum definitions for sample delay/open delay.
> * Removed useless definitions.
> * Fixed a couple of rebase conflicts (the series was not bisectable).
> 
> Changes in v2:
> * Added various R-by/A-by tags.
> * Various typos & style fixes.
> [Bindings]
> * Included the missing ti,am654-tscadc compatible.
> * Reworded the compatible lines as requested by Jonathan.
> * Reworded the bindings content a little bit as advised by Rob (subnodes
>   being objects, MFD descriptions provided once, status and unused
>   labels removed).
> [SPDX changes]
> * Mentioned that the license macro and the license text matched.
> * Also added an SPDX tag in the MFD header.
> [MFD header]
> * Used the BIT(), GENMASK() and PREP_FIELD() macros when relevant.
> [MFD driver]
> * Did not reordered the variables declared on the probe stack as advised
>   by Jonathan.
> * Added missing of_node_put() calls.
> * Moved the patch changing the place where the main structure is
>   allocated to directly precede the patch using this change.
> * Fixed the driver data wiring (bug happening between ex patches 16 and
>   28).
> * Added a commit just to explain the reordering of the register writes
>   during initialization/resume.
> * Explained the check about 'use_tsc' in the commit message.
> * Added a link to the TRM in a commit message referencing it.
> * Removed the use of the ti,tracks property, used a constant value
>   instead.
> * Dropped the error check when retrieving the "wrong" DT property
>   (coordiante-readouts) which is unused.
> 
> 
> Miquel Raynal (47):
>   clk: ti: am43xx: Add clkctrl data for am43xx ADC1
>   dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this
>     MFD
>   dt-bindings: touchscreen: ti,am3359-tsc: New yaml description
>   dt-bindings: iio: adc: ti,am3359-adc: New yaml description
>   dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file
>   dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible
>   dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible
>   mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put
>   mfd: ti_am335x_tscadc: Replace license text with SPDX tag
>   mfd: ti_am335x_tscadc: Fix style
>   mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack
>     variables
>   mfd: ti_am335x_tscadc: Get rid of useless gotos
>   mfd: ti_am335x_tscadc: Reword the comment explaining the dividers
>   mfd: ti_am335x_tscadc: Don't search the tree for our clock
>   mfd: ti_am335x_tscadc: Simplify divisor calculation
>   mfd: ti_am335x_tscadc: Move the driver structure allocation earlier
>   mfd: ti_am335x_tscadc: Use driver data
>   mfd: ti_am335x_tscadc: Mimic the probe from resume()
>   mfd: ti_am335x_tscadc: Drop useless variables from the driver
>     structure
>   mfd: ti_am335x_tscadc: Always provide an idle configuration
>   mfd: ti_am335x_tscadc: Reorder the initialization steps
>   mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place
>   mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag
>   mfd: ti_am335x_tscadc: Fix header spacing
>   mfd: ti_am335x_tscadc: Use the new HZ_PER_MHZ macro
>   mfd: ti_am335x_tscadc: Use BIT(), GENMASK() and FIELD_PREP() when
>     relevant
>   mfd: ti_am335x_tscadc: Clarify the maximum values for DT entries
>   mfd: ti_am335x_tscadc: Drop useless definitions from the header
>   mfd: ti_am335x_tscadc: Rename the subsystem enable macro
>   mfd: ti_am335x_tscadc: Add TSC prefix in certain macros
>   mfd: ti_am335x_tscadc: Rename a variable
>   mfd: ti_am335x_tscadc: Fix an error message
>   mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a
>     touchscreen
>   mfd: ti_am335x_tscadc: Introduce has_tsc
>   mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
>   mfd: ti_am335x_tscadc: Support the correctly spelled DT property
>   iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls
>   iio: adc: ti_am335x_adc: Replace license text with SPDX tag
>   iio: adc: ti_am335x_adc: Fix style
>   iio: adc: ti_am335x_adc: Get rid of useless gotos
>   iio: adc: ti_am335x_adc: Gather the checks on the delays
>   iio: adc: ti_am335x_adc: Add a unit to the timeout delay
>   iio: adc: ti_am335x_adc: Add the scale information
>   iio: adc: ti_am335x_adc: Add the am437x compatible
>   ARM: dts: am437x-cm-t43: Use a correctly spelled DT property
>   ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module
>   ARM: dts: am437x-gp-evm: enable ADC1
> 
>  .../bindings/iio/adc/ti,am3359-adc.yaml       |  70 +++++
>  .../input/touchscreen/ti,am3359-tsc.yaml      |  76 ++++++
>  .../bindings/input/touchscreen/ti-tsc-adc.txt |  91 -------
>  .../bindings/mfd/ti,am3359-tscadc.yaml        |  84 ++++++
>  arch/arm/boot/dts/am437x-cm-t43.dts           |   2 +-
>  arch/arm/boot/dts/am437x-gp-evm.dts           |   8 +
>  arch/arm/boot/dts/am437x-l4.dtsi              |  31 ++-
>  arch/arm/boot/dts/am43xx-clocks.dtsi          |   7 +
>  drivers/clk/ti/clk-43xx.c                     |   1 +
>  drivers/iio/adc/ti_am335x_adc.c               | 220 +++++++++-------
>  drivers/mfd/ti_am335x_tscadc.c                | 243 ++++++++++--------
>  include/dt-bindings/clock/am4.h               |   1 +
>  include/linux/mfd/ti_am335x_tscadc.h          | 115 ++++-----
>  13 files changed, 599 insertions(+), 350 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,am3359-adc.yaml
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti,am3359-tsc.yaml
>  delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
>  create mode 100644 Documentation/devicetree/bindings/mfd/ti,am3359-tscadc.yaml
>
Lee Jones Sept. 22, 2021, 4:02 p.m. UTC | #2
On Wed, 15 Sep 2021, Miquel Raynal wrote:

> Hello,
> 
> This is a (fairly big) series bringing support of AM437X ADC1.
> On TI AM33XX SoCs family there is an ADC that can also be connected to a
> touchscreen. This hardware has been extended and is present on certain
> SoCs from the AM437X family. In particular, the touchscreen has been
> replaced by a magnetic card reader. In both cases, the representation is
> an MFD device with two children:
> * on AM33XX: the touchscreen controller and the ADC
> * on AM437X: the magnetic card reader and the ADC
> 
> This series really targets small and atomic changes so that the overall
> review is eased, even though it leads to a lot of rather small patches.
> Here are the steps:
> * Supporting the missing clock
> * Translating a single text file containing the description for the
>   MFD, the touchscreen and the ADC into three independent yaml files.
> * Cleaning/preparing the MFD driver.
> * Supporting ADC1 in the MFD driver.
> * Cleaning/preparing of the ADC driver.
> * Supporting ADC1 in the ADC driver.
> * Updating various device trees.
> 
> Here is the full series again, almost reviewed and acked entirely, but
> rebased on the last -rc1. The clock patch has been acked, the ADC
> patches as well, so we expect the series to go through the MFD
> tree if hte maintainers agree with it.
> 
> Thanks,
> Miquèl
> 
> Changes in v3:
> * Rebased on top of v5.15-rc1.
> * R-by/A-by tags added.
> * Light reordering to let the of_put_node() fix to be applied more easily
> * Dropped a patch made useless because of the previous reordering
> * Explained how the tscadc->ctrl variable was used.
> * Fixed a couple of typos.
> * Included the change for the HZ macro.
> * Went further in the BIT()/FIELD_PREP() cleanup.
> * Added maximum definitions for sample delay/open delay.
> * Removed useless definitions.
> * Fixed a couple of rebase conflicts (the series was not bisectable).
> 
> Changes in v2:
> * Added various R-by/A-by tags.
> * Various typos & style fixes.
> [Bindings]
> * Included the missing ti,am654-tscadc compatible.
> * Reworded the compatible lines as requested by Jonathan.
> * Reworded the bindings content a little bit as advised by Rob (subnodes
>   being objects, MFD descriptions provided once, status and unused
>   labels removed).
> [SPDX changes]
> * Mentioned that the license macro and the license text matched.
> * Also added an SPDX tag in the MFD header.
> [MFD header]
> * Used the BIT(), GENMASK() and PREP_FIELD() macros when relevant.
> [MFD driver]
> * Did not reordered the variables declared on the probe stack as advised
>   by Jonathan.
> * Added missing of_node_put() calls.
> * Moved the patch changing the place where the main structure is
>   allocated to directly precede the patch using this change.
> * Fixed the driver data wiring (bug happening between ex patches 16 and
>   28).
> * Added a commit just to explain the reordering of the register writes
>   during initialization/resume.
> * Explained the check about 'use_tsc' in the commit message.
> * Added a link to the TRM in a commit message referencing it.
> * Removed the use of the ti,tracks property, used a constant value
>   instead.
> * Dropped the error check when retrieving the "wrong" DT property
>   (coordiante-readouts) which is unused.
> 
> 
> Miquel Raynal (47):
>   clk: ti: am43xx: Add clkctrl data for am43xx ADC1
>   dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this
>     MFD
>   dt-bindings: touchscreen: ti,am3359-tsc: New yaml description
>   dt-bindings: iio: adc: ti,am3359-adc: New yaml description
>   dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file
>   dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible
>   dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible
>   mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put
>   mfd: ti_am335x_tscadc: Replace license text with SPDX tag
>   mfd: ti_am335x_tscadc: Fix style
>   mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack
>     variables
>   mfd: ti_am335x_tscadc: Get rid of useless gotos
>   mfd: ti_am335x_tscadc: Reword the comment explaining the dividers
>   mfd: ti_am335x_tscadc: Don't search the tree for our clock
>   mfd: ti_am335x_tscadc: Simplify divisor calculation
>   mfd: ti_am335x_tscadc: Move the driver structure allocation earlier
>   mfd: ti_am335x_tscadc: Use driver data
>   mfd: ti_am335x_tscadc: Mimic the probe from resume()
>   mfd: ti_am335x_tscadc: Drop useless variables from the driver
>     structure
>   mfd: ti_am335x_tscadc: Always provide an idle configuration
>   mfd: ti_am335x_tscadc: Reorder the initialization steps
>   mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place
>   mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag
>   mfd: ti_am335x_tscadc: Fix header spacing
>   mfd: ti_am335x_tscadc: Use the new HZ_PER_MHZ macro
>   mfd: ti_am335x_tscadc: Use BIT(), GENMASK() and FIELD_PREP() when
>     relevant
>   mfd: ti_am335x_tscadc: Clarify the maximum values for DT entries
>   mfd: ti_am335x_tscadc: Drop useless definitions from the header
>   mfd: ti_am335x_tscadc: Rename the subsystem enable macro
>   mfd: ti_am335x_tscadc: Add TSC prefix in certain macros
>   mfd: ti_am335x_tscadc: Rename a variable
>   mfd: ti_am335x_tscadc: Fix an error message
>   mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a
>     touchscreen
>   mfd: ti_am335x_tscadc: Introduce has_tsc
>   mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
>   mfd: ti_am335x_tscadc: Support the correctly spelled DT property

The MFD patches I haven't reviewed/replied to seem fine.

>   iio: adc: ti_am335x_adc: Wait the idle state to avoid stalls
>   iio: adc: ti_am335x_adc: Replace license text with SPDX tag
>   iio: adc: ti_am335x_adc: Fix style
>   iio: adc: ti_am335x_adc: Get rid of useless gotos
>   iio: adc: ti_am335x_adc: Gather the checks on the delays
>   iio: adc: ti_am335x_adc: Add a unit to the timeout delay
>   iio: adc: ti_am335x_adc: Add the scale information
>   iio: adc: ti_am335x_adc: Add the am437x compatible
>   ARM: dts: am437x-cm-t43: Use a correctly spelled DT property
>   ARM: dts: am43xx: Describe the magnetic reader/ADC1 hardware module
>   ARM: dts: am437x-gp-evm: enable ADC1
> 
>  .../bindings/iio/adc/ti,am3359-adc.yaml       |  70 +++++
>  .../input/touchscreen/ti,am3359-tsc.yaml      |  76 ++++++
>  .../bindings/input/touchscreen/ti-tsc-adc.txt |  91 -------
>  .../bindings/mfd/ti,am3359-tscadc.yaml        |  84 ++++++
>  arch/arm/boot/dts/am437x-cm-t43.dts           |   2 +-
>  arch/arm/boot/dts/am437x-gp-evm.dts           |   8 +
>  arch/arm/boot/dts/am437x-l4.dtsi              |  31 ++-
>  arch/arm/boot/dts/am43xx-clocks.dtsi          |   7 +
>  drivers/clk/ti/clk-43xx.c                     |   1 +
>  drivers/iio/adc/ti_am335x_adc.c               | 220 +++++++++-------
>  drivers/mfd/ti_am335x_tscadc.c                | 243 ++++++++++--------
>  include/dt-bindings/clock/am4.h               |   1 +
>  include/linux/mfd/ti_am335x_tscadc.h          | 115 ++++-----
>  13 files changed, 599 insertions(+), 350 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,am3359-adc.yaml
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti,am3359-tsc.yaml
>  delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
>  create mode 100644 Documentation/devicetree/bindings/mfd/ti,am3359-tscadc.yaml
>
Miquel Raynal Sept. 23, 2021, 8:35 a.m. UTC | #3
Hi Lee,

lee.jones@linaro.org wrote on Wed, 22 Sep 2021 17:02:00 +0100:

> On Wed, 15 Sep 2021, Miquel Raynal wrote:
> 
> > Hello,
> > 
> > This is a (fairly big) series bringing support of AM437X ADC1.
> > On TI AM33XX SoCs family there is an ADC that can also be connected to a
> > touchscreen. This hardware has been extended and is present on certain
> > SoCs from the AM437X family. In particular, the touchscreen has been
> > replaced by a magnetic card reader. In both cases, the representation is
> > an MFD device with two children:
> > * on AM33XX: the touchscreen controller and the ADC
> > * on AM437X: the magnetic card reader and the ADC
> > 
> > This series really targets small and atomic changes so that the overall
> > review is eased, even though it leads to a lot of rather small patches.
> > Here are the steps:
> > * Supporting the missing clock
> > * Translating a single text file containing the description for the
> >   MFD, the touchscreen and the ADC into three independent yaml files.
> > * Cleaning/preparing the MFD driver.
> > * Supporting ADC1 in the MFD driver.
> > * Cleaning/preparing of the ADC driver.
> > * Supporting ADC1 in the ADC driver.
> > * Updating various device trees.
> > 
> > Here is the full series again, almost reviewed and acked entirely, but
> > rebased on the last -rc1. The clock patch has been acked, the ADC
> > patches as well, so we expect the series to go through the MFD
> > tree if hte maintainers agree with it.
> > 
> > Thanks,
> > Miquèl
> > 
> > Changes in v3:
> > * Rebased on top of v5.15-rc1.
> > * R-by/A-by tags added.
> > * Light reordering to let the of_put_node() fix to be applied more easily
> > * Dropped a patch made useless because of the previous reordering
> > * Explained how the tscadc->ctrl variable was used.
> > * Fixed a couple of typos.
> > * Included the change for the HZ macro.
> > * Went further in the BIT()/FIELD_PREP() cleanup.
> > * Added maximum definitions for sample delay/open delay.
> > * Removed useless definitions.
> > * Fixed a couple of rebase conflicts (the series was not bisectable).
> > 
> > Changes in v2:
> > * Added various R-by/A-by tags.
> > * Various typos & style fixes.
> > [Bindings]
> > * Included the missing ti,am654-tscadc compatible.
> > * Reworded the compatible lines as requested by Jonathan.
> > * Reworded the bindings content a little bit as advised by Rob (subnodes
> >   being objects, MFD descriptions provided once, status and unused
> >   labels removed).
> > [SPDX changes]
> > * Mentioned that the license macro and the license text matched.
> > * Also added an SPDX tag in the MFD header.
> > [MFD header]
> > * Used the BIT(), GENMASK() and PREP_FIELD() macros when relevant.
> > [MFD driver]
> > * Did not reordered the variables declared on the probe stack as advised
> >   by Jonathan.
> > * Added missing of_node_put() calls.
> > * Moved the patch changing the place where the main structure is
> >   allocated to directly precede the patch using this change.
> > * Fixed the driver data wiring (bug happening between ex patches 16 and
> >   28).
> > * Added a commit just to explain the reordering of the register writes
> >   during initialization/resume.
> > * Explained the check about 'use_tsc' in the commit message.
> > * Added a link to the TRM in a commit message referencing it.
> > * Removed the use of the ti,tracks property, used a constant value
> >   instead.
> > * Dropped the error check when retrieving the "wrong" DT property
> >   (coordiante-readouts) which is unused.
> > 
> > 
> > Miquel Raynal (47):
> >   clk: ti: am43xx: Add clkctrl data for am43xx ADC1
> >   dt-bindings: mfd: ti,am3359-tscadc: Add a yaml description for this
> >     MFD
> >   dt-bindings: touchscreen: ti,am3359-tsc: New yaml description
> >   dt-bindings: iio: adc: ti,am3359-adc: New yaml description
> >   dt-bindings: touchscreen: ti,am3359-tsc: Remove deprecated text file
> >   dt-bindings: mfd: ti,am3359-tscadc: Describe am4372 MFD compatible
> >   dt-bindings: iio: adc: ti,am3359-adc: Describe am4372 ADC compatible
> >   mfd: ti_am335x_tscadc: Ensure a balanced number of node get/put
> >   mfd: ti_am335x_tscadc: Replace license text with SPDX tag
> >   mfd: ti_am335x_tscadc: Fix style
> >   mfd: ti_am335x_tscadc: Drop extra spacing when declaring stack
> >     variables
> >   mfd: ti_am335x_tscadc: Get rid of useless gotos
> >   mfd: ti_am335x_tscadc: Reword the comment explaining the dividers
> >   mfd: ti_am335x_tscadc: Don't search the tree for our clock
> >   mfd: ti_am335x_tscadc: Simplify divisor calculation
> >   mfd: ti_am335x_tscadc: Move the driver structure allocation earlier
> >   mfd: ti_am335x_tscadc: Use driver data
> >   mfd: ti_am335x_tscadc: Mimic the probe from resume()
> >   mfd: ti_am335x_tscadc: Drop useless variables from the driver
> >     structure
> >   mfd: ti_am335x_tscadc: Always provide an idle configuration
> >   mfd: ti_am335x_tscadc: Reorder the initialization steps
> >   mfd: ti_am335x_tscadc: Gather the ctrl register logic in one place
> >   mfd: ti_am335x_tscadc: Replace the header license text with SPDX tag
> >   mfd: ti_am335x_tscadc: Fix header spacing
> >   mfd: ti_am335x_tscadc: Use the new HZ_PER_MHZ macro
> >   mfd: ti_am335x_tscadc: Use BIT(), GENMASK() and FIELD_PREP() when
> >     relevant
> >   mfd: ti_am335x_tscadc: Clarify the maximum values for DT entries
> >   mfd: ti_am335x_tscadc: Drop useless definitions from the header
> >   mfd: ti_am335x_tscadc: Rename the subsystem enable macro
> >   mfd: ti_am335x_tscadc: Add TSC prefix in certain macros
> >   mfd: ti_am335x_tscadc: Rename a variable
> >   mfd: ti_am335x_tscadc: Fix an error message
> >   mfd: ti_am335x_tscadc: Add a boolean to clarify the presence of a
> >     touchscreen
> >   mfd: ti_am335x_tscadc: Introduce has_tsc
> >   mfd: ti_am335x_tscadc: Add ADC1/magnetic reader support
> >   mfd: ti_am335x_tscadc: Support the correctly spelled DT property  
> 
> The MFD patches I haven't reviewed/replied to seem fine.

Great!

I'll address all your comments, bring-in the latest
Reviewed-by/Acked-by that I received on the other patches and send a
v4. Thanks for the feedback.

Cheers,
Miquèl