Re: [PATCH v2 10/11] dt-bindings: iio: adc: exynos: Convert Exynos ADC bindings to json-schema

From: Jonathan Cameron
Date: Sun Sep 08 2019 - 08:29:55 EST


On Sat, 7 Sep 2019 11:20:06 +0200
Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:

> Convert Samsung Exynos Analog to Digital Converter bindings to DT schema
> format using json-schema.
>
> This is a direct conversion of existing bindings so it also copies the
> existing error in the bindings regarding the requirement of two register
> address ranges for certain compatibles. The inconsistency in binding
> was caused by commit fafb37cfae6d ("iio: exyno-adc: use syscon for PMU
> register access").
>
> Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx>

To my less than experienced eye when it comes to yaml, this looks fine.
I'll wait on more experienced review before I apply it however!

Thanks,

Jonathan

>
> ---
>
> Changes since v1:
> 1. Rework reg, clocks and clock-names matching for specific compatibles,
> 2. Make samsung,syscon-phandle required only on certain compatibles,
> 3. Fix indentation.
> ---
> .../bindings/iio/adc/samsung,exynos-adc.txt | 107 ------------
> .../bindings/iio/adc/samsung,exynos-adc.yaml | 163 ++++++++++++++++++
> 2 files changed, 163 insertions(+), 107 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt
> create mode 100644 Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.yaml
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt b/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt
> deleted file mode 100644
> index e1fe02f3e3e9..000000000000
> --- a/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt
> +++ /dev/null
> @@ -1,107 +0,0 @@
> -Samsung Exynos Analog to Digital Converter bindings
> -
> -The devicetree bindings are for the new ADC driver written for
> -Exynos4 and upward SoCs from Samsung.
> -
> -New driver handles the following
> -1. Supports ADC IF found on EXYNOS4412/EXYNOS5250
> - and future SoCs from Samsung
> -2. Add ADC driver under iio/adc framework
> -3. Also adds the Documentation for device tree bindings
> -
> -Required properties:
> -- compatible: Must be "samsung,exynos-adc-v1"
> - for Exynos5250 controllers.
> - Must be "samsung,exynos-adc-v2" for
> - future controllers.
> - Must be "samsung,exynos3250-adc" for
> - controllers compatible with ADC of Exynos3250.
> - Must be "samsung,exynos4212-adc" for
> - controllers compatible with ADC of Exynos4212 and Exynos4412.
> - Must be "samsung,exynos7-adc" for
> - the ADC in Exynos7 and compatibles
> - Must be "samsung,s3c2410-adc" for
> - the ADC in s3c2410 and compatibles
> - Must be "samsung,s3c2416-adc" for
> - the ADC in s3c2416 and compatibles
> - Must be "samsung,s3c2440-adc" for
> - the ADC in s3c2440 and compatibles
> - Must be "samsung,s3c2443-adc" for
> - the ADC in s3c2443 and compatibles
> - Must be "samsung,s3c6410-adc" for
> - the ADC in s3c6410 and compatibles
> - Must be "samsung,s5pv210-adc" for
> - the ADC in s5pv210 and compatibles
> -- reg: List of ADC register address range
> - - The base address and range of ADC register
> - - The base address and range of ADC_PHY register (every
> - SoC except for s3c24xx/s3c64xx ADC)
> -- interrupts: Contains the interrupt information for the timer. The
> - format is being dependent on which interrupt controller
> - the Samsung device uses.
> -- #io-channel-cells = <1>; As ADC has multiple outputs
> -- clocks From common clock bindings: handles to clocks specified
> - in "clock-names" property, in the same order.
> -- clock-names From common clock bindings: list of clock input names
> - used by ADC block:
> - - "adc" : ADC bus clock
> - - "sclk" : ADC special clock (only for Exynos3250 and
> - compatible ADC block)
> -- vdd-supply VDD input supply.
> -
> -- samsung,syscon-phandle Contains the PMU system controller node
> - (To access the ADC_PHY register on Exynos5250/5420/5800/3250)
> -Optional properties:
> -- has-touchscreen: If present, indicates that a touchscreen is
> - connected an usable.
> -
> -Note: child nodes can be added for auto probing from device tree.
> -
> -Example: adding device info in dtsi file
> -
> -adc: adc@12d10000 {
> - compatible = "samsung,exynos-adc-v1";
> - reg = <0x12D10000 0x100>;
> - interrupts = <0 106 0>;
> - #io-channel-cells = <1>;
> - io-channel-ranges;
> -
> - clocks = <&clock 303>;
> - clock-names = "adc";
> -
> - vdd-supply = <&buck5_reg>;
> - samsung,syscon-phandle = <&pmu_system_controller>;
> -};
> -
> -Example: adding device info in dtsi file for Exynos3250 with additional sclk
> -
> -adc: adc@126c0000 {
> - compatible = "samsung,exynos3250-adc", "samsung,exynos-adc-v2;
> - reg = <0x126C0000 0x100>;
> - interrupts = <0 137 0>;
> - #io-channel-cells = <1>;
> - io-channel-ranges;
> -
> - clocks = <&cmu CLK_TSADC>, <&cmu CLK_SCLK_TSADC>;
> - clock-names = "adc", "sclk";
> -
> - vdd-supply = <&buck5_reg>;
> - samsung,syscon-phandle = <&pmu_system_controller>;
> -};
> -
> -Example: Adding child nodes in dts file
> -
> -adc@12d10000 {
> -
> - /* NTC thermistor is a hwmon device */
> - ncp15wb473@0 {
> - compatible = "murata,ncp15wb473";
> - pullup-uv = <1800000>;
> - pullup-ohm = <47000>;
> - pulldown-ohm = <0>;
> - io-channels = <&adc 4>;
> - };
> -};
> -
> -Note: Does not apply to ADC driver under arch/arm/plat-samsung/
> -Note: The child node can be added under the adc node or separately.
> diff --git a/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.yaml b/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.yaml
> new file mode 100644
> index 000000000000..dd58121f25b1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.yaml
> @@ -0,0 +1,163 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/samsung,exynos-adc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Samsung Exynos Analog to Digital Converter (ADC)
> +
> +maintainers:
> + - Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> +
> +properties:
> + compatible:
> + enum:
> + - samsung,exynos-adc-v1 # Exynos5250
> + - samsung,exynos-adc-v2
> + - samsung,exynos3250-adc
> + - samsung,exynos4212-adc # Exynos4212 and Exynos4412
> + - samsung,exynos7-adc
> + - samsung,s3c2410-adc
> + - samsung,s3c2416-adc
> + - samsung,s3c2440-adc
> + - samsung,s3c2443-adc
> + - samsung,s3c6410-adc
> + - samsung,s5pv210-adc
> +
> + reg:
> + minItems: 1
> + maxItems: 2
> +
> + clocks:
> + description:
> + Phandle to ADC bus clock. For Exynos3250 additional clock is needed.
> + minItems: 1
> + maxItems: 2
> +
> + clock-names:
> + description:
> + Must contain clock names (adc, sclk) matching phandles in clocks
> + property.
> + minItems: 1
> + maxItems: 2
> +
> + interrupts:
> + maxItems: 1
> +
> + "#io-channel-cells":
> + const: 1
> +
> + vdd-supply:
> + description: VDD input supply
> + maxItems: 1
> +
> + samsung,syscon-phandle:
> + $ref: '/schemas/types.yaml#/definitions/phandle'
> + description:
> + Phandle to the PMU system controller node (to access the ADC_PHY
> + register on Exynos5250/5420/5800/3250).
> +
> + has-touchscreen:
> + description:
> + If present, indicates that a touchscreen is connected and usable.
> + type: boolean
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - interrupts
> + - "#io-channel-cells"
> + - vdd-supply
> +
> +allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - samsung,exynos-adc-v1
> + - samsung,exynos-adc-v2
> + - samsung,exynos3250-adc
> + - samsung,exynos4212-adc
> + - samsung,s5pv210-adc
> + then:
> + properties:
> + reg:
> + items:
> + # For S5P and Exynos
> + - description: base registers
> + - description: phy registers
> + required:
> + - samsung,syscon-phandle
> + else:
> + properties:
> + reg:
> + items:
> + - description: base registers
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - samsung,exynos3250-adc
> + then:
> + properties:
> + clocks:
> + minItems: 2
> + maxItems: 2
> + clock-names:
> + items:
> + - const: adc
> + - const: sclk
> + else:
> + properties:
> + clocks:
> + minItems: 1
> + maxItems: 1
> + clock-names:
> + items:
> + - const: adc
> +
> +examples:
> + - |
> + adc: adc@12d10000 {
> + compatible = "samsung,exynos-adc-v1";
> + reg = <0x12d10000 0x100>;
> + interrupts = <0 106 0>;
> + #io-channel-cells = <1>;
> + io-channel-ranges;
> +
> + clocks = <&clock 303>;
> + clock-names = "adc";
> +
> + vdd-supply = <&buck5_reg>;
> + samsung,syscon-phandle = <&pmu_system_controller>;
> +
> + /* NTC thermistor is a hwmon device */
> + ncp15wb473@0 {
> + compatible = "murata,ncp15wb473";
> + pullup-uv = <1800000>;
> + pullup-ohm = <47000>;
> + pulldown-ohm = <0>;
> + io-channels = <&adc 4>;
> + };
> + };
> +
> + - |
> + adc@126c0000 {
> + compatible = "samsung,exynos3250-adc";
> + reg = <0x126C0000 0x100>;
> + interrupts = <0 137 0>;
> + #io-channel-cells = <1>;
> + io-channel-ranges;
> +
> + clocks = <&cmu 0>, // CLK_TSADC
> + <&cmu 1>; // CLK_SCLK_TSADC
> + clock-names = "adc", "sclk";
> +
> + vdd-supply = <&buck5_reg>;
> + samsung,syscon-phandle = <&pmu_system_controller>;
> + };