From patchwork Wed Sep 15 15:58:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Miquel Raynal X-Patchwork-Id: 12496449 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06B7CC433EF for ; Wed, 15 Sep 2021 15:59:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D02D461244 for ; Wed, 15 Sep 2021 15:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234294AbhIOQAc (ORCPT ); Wed, 15 Sep 2021 12:00:32 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:51937 "EHLO relay8-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234166AbhIOQAb (ORCPT ); Wed, 15 Sep 2021 12:00:31 -0400 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id BDDAA1BF207; Wed, 15 Sep 2021 15:59:08 +0000 (UTC) From: Miquel Raynal To: Jonathan Cameron , Lars-Peter Clausen , Peter Meerwald-Stadler , Rob Herring , Dmitry Torokhov , Lee Jones , bcousson@baylibre.com, Tony Lindgren Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-omap@vger.kernel.org, Thomas Petazzoni , Vignesh Raghavendra , Lokesh Vutla , Tero Kristo , Ryan Barnett , Grygorii Strashko , Jason Reeder , Miquel Raynal Subject: [PATCH v3 00/47] TI AM437X ADC1 Date: Wed, 15 Sep 2021 17:58:21 +0200 Message-Id: <20210915155908.476767-1-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org 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