Commit 131a975a authored by Stanislav Jakubek's avatar Stanislav Jakubek Committed by Lee Jones
Browse files

dt-bindings: mfd: sprd,sc2731: Convert to YAML

Convert the Spreadtrum SC27xx PMIC bindings to DT schema. Adjust the
filename to match the compatible of the only in-tree user, SC2731.
Change #interrupt-cells value to 1, as according to [1] that is the
correct value.
Move partial examples of child nodes in the child node schemas to this new
MFD schema to have one complete example.

[1] https://lore.kernel.org/lkml/b6a32917d1e231277d240a4084bebb6ad91247e3.1550060544.git.baolin.wang@linaro.org/



Signed-off-by: default avatarStanislav Jakubek <stano.jakubek@gmail.com>
Reviewed-by: default avatarRob Herring (Arm) <robh@kernel.org>
Acked-by: default avatarSebastian Reichel <sre@kernel.org>
Acked-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: default avatarJonathan Cameron <jic23@kernel.org>
Link: https://lore.kernel.org/r/efd200c3b5b75405e4e450d064b026f10ae2f8e0.1730709384.git.stano.jakubek@gmail.com


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 0d3f0739
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -80,23 +80,6 @@ required:
additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    pmic {
        #address-cells = <1>;
        #size-cells = <0>;
        adc@480 {
            compatible = "sprd,sc2731-adc";
            reg = <0x480>;
            interrupt-parent = <&sc2731_pmic>;
            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
            #io-channel-cells = <1>;
            hwlocks = <&hwlock 4>;
            nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
            nvmem-cell-names = "big_scale_calib", "small_scale_calib";
        };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    pmic {
+0 −31
Original line number Diff line number Diff line
@@ -50,35 +50,4 @@ required:
  - '#size-cells'

additionalProperties: false

examples:
  - |
    #include <dt-bindings/leds/common.h>

    pmic {
      #address-cells = <1>;
      #size-cells = <0>;

      led-controller@200 {
        compatible = "sprd,sc2731-bltc";
        reg = <0x200>;
        #address-cells = <1>;
        #size-cells = <0>;

        led@0 {
          reg = <0x0>;
          color = <LED_COLOR_ID_RED>;
        };

        led@1 {
          reg = <0x1>;
          color = <LED_COLOR_ID_GREEN>;
        };

        led@2 {
          reg = <0x2>;
          color = <LED_COLOR_ID_BLUE>;
        };
      };
    };
...
+252 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/sprd,sc2731.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Spreadtrum SC27xx PMIC

maintainers:
  - Orson Zhai <orsonzhai@gmail.com>
  - Baolin Wang <baolin.wang7@gmail.com>
  - Chunyan Zhang <zhang.lyra@gmail.com>

description: |
  Spreadtrum PMICs belonging to the SC27xx series integrate all mobile handset
  power management, audio codec, battery management and user interface support
  functions in a single chip. They have 6 major functional blocks:
    - DCDCs to support CPU, memory
    - LDOs to support both internal and external requirements
    - Battery management system, such as charger, fuel gauge
    - Audio codec
    - User interface functions, such as indicator, flash LED and so on
    - IC level interface, such as power on/off control, RTC, typec and so on

properties:
  $nodename:
    pattern: '^pmic@[0-9a-f]+$'

  compatible:
    enum:
      - sprd,sc2720
      - sprd,sc2721
      - sprd,sc2723
      - sprd,sc2730
      - sprd,sc2731

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true
  spi-max-frequency: true

  '#address-cells':
    const: 1

  '#interrupt-cells':
    const: 1

  '#size-cells':
    const: 0

  regulators:
    type: object
    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#

patternProperties:
  "^adc@[0-9a-f]+$":
    type: object
    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#

  "^charger@[0-9a-f]+$":
    type: object
    $ref: /schemas/power/supply/sc2731-charger.yaml#

  "^efuse@[0-9a-f]+$":
    type: object
    additionalProperties: true
    properties:
      compatible:
        enum:
          - sprd,sc2720-efuse
          - sprd,sc2721-efuse
          - sprd,sc2723-efuse
          - sprd,sc2730-efuse
          - sprd,sc2731-efuse

  "^fuel-gauge@[0-9a-f]+$":
    type: object
    $ref: /schemas/power/supply/sc27xx-fg.yaml#

  "^gpio@[0-9a-f]+$":
    type: object
    $ref: /schemas/gpio/sprd,gpio-eic.yaml#

  "^led-controller@[0-9a-f]+$":
    type: object
    $ref: /schemas/leds/sprd,sc2731-bltc.yaml#

  "^rtc@[0-9a-f]+$":
    type: object
    $ref: /schemas/rtc/sprd,sc2731-rtc.yaml#

  "^vibrator@[0-9a-f]+$":
    type: object
    $ref: /schemas/input/sprd,sc27xx-vibrator.yaml#

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - spi-max-frequency
  - '#address-cells'
  - '#interrupt-cells'
  - '#size-cells'

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/leds/common.h>

    spi {
      #address-cells = <1>;
      #size-cells = <0>;

      sc2731_pmic: pmic@0 {
        compatible = "sprd,sc2731";
        reg = <0>;
        interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
        interrupt-controller;
        spi-max-frequency = <26000000>;
        #address-cells = <1>;
        #interrupt-cells = <1>;
        #size-cells = <0>;

        charger@0 {
          compatible = "sprd,sc2731-charger";
          reg = <0x0>;
          phys = <&ssphy>;
          monitored-battery = <&bat>;
        };

        led-controller@200 {
          compatible = "sprd,sc2731-bltc";
          reg = <0x200>;
          #address-cells = <1>;
          #size-cells = <0>;

          led@0 {
            reg = <0x0>;
            color = <LED_COLOR_ID_RED>;
          };

          led@1 {
            reg = <0x1>;
            color = <LED_COLOR_ID_GREEN>;
          };

          led@2 {
            reg = <0x2>;
            color = <LED_COLOR_ID_BLUE>;
          };
        };

        rtc@280 {
          compatible = "sprd,sc2731-rtc";
          reg = <0x280>;
          interrupt-parent = <&sc2731_pmic>;
          interrupts = <2>;
        };

        pmic_eic: gpio@300 {
          compatible = "sprd,sc2731-eic";
          reg = <0x300>;
          interrupt-parent = <&sc2731_pmic>;
          interrupts = <5>;
          gpio-controller;
          #gpio-cells = <2>;
          interrupt-controller;
          #interrupt-cells = <2>;
        };

        efuse@380 {
          compatible = "sprd,sc2731-efuse";
          reg = <0x380>;
          hwlocks = <&hwlock 12>;
          #address-cells = <1>;
          #size-cells = <1>;

          /* Data cells */
          fgu_calib: calib@6 {
            reg = <0x6 0x2>;
            bits = <0 9>;
          };

          adc_big_scale: calib@24 {
            reg = <0x24 0x2>;
          };

          adc_small_scale: calib@26 {
            reg = <0x26 0x2>;
          };
        };

        adc@480 {
          compatible = "sprd,sc2731-adc";
          reg = <0x480>;
          interrupt-parent = <&sc2731_pmic>;
          interrupts = <0>;
          #io-channel-cells = <1>;
          hwlocks = <&hwlock 4>;
          nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
          nvmem-cell-names = "big_scale_calib", "small_scale_calib";
        };

        fuel-gauge@a00 {
          compatible = "sprd,sc2731-fgu";
          reg = <0xa00>;
          battery-detect-gpios = <&pmic_eic 9 GPIO_ACTIVE_HIGH>;
          interrupt-parent = <&sc2731_pmic>;
          interrupts = <4>;
          io-channels = <&pmic_adc 5>, <&pmic_adc 14>;
          io-channel-names = "bat-temp", "charge-vol";
          nvmem-cells = <&fgu_calib>;
          nvmem-cell-names = "fgu_calib";
          monitored-battery = <&bat>;
          sprd,calib-resistance-micro-ohms = <21500>;
        };

        vibrator@ec8 {
          compatible = "sprd,sc2731-vibrator";
          reg = <0xec8>;
        };

        regulators {
          compatible = "sprd,sc2731-regulator";

          BUCK_CPU0 {
            regulator-name = "vddarm0";
            regulator-min-microvolt = <400000>;
            regulator-max-microvolt = <1996875>;
            regulator-ramp-delay = <25000>;
            regulator-always-on;
          };

          LDO_CAMA0 {
            regulator-name = "vddcama0";
            regulator-min-microvolt = <1200000>;
            regulator-max-microvolt = <3750000>;
            regulator-enable-ramp-delay = <100>;
          };
        };
      };
    };
...
+0 −40
Original line number Diff line number Diff line
Spreadtrum SC27xx Power Management Integrated Circuit (PMIC)

The Spreadtrum SC27xx series PMICs contain SC2720, SC2721, SC2723, SC2730
and SC2731. The Spreadtrum PMIC belonging to SC27xx series integrates all
mobile handset power management, audio codec, battery management and user
interface support function in a single chip. It has 6 major functional
blocks:
- DCDCs to support CPU, memory.
- LDOs to support both internal and external requirement.
- Battery management system, such as charger, fuel gauge.
- Audio codec.
- User interface function, such as indicator, flash LED and so on.
- IC level interface, such as power on/off control, RTC and typec and so on.

Required properties:
- compatible: Should be one of the following:
	"sprd,sc2720"
	"sprd,sc2721"
	"sprd,sc2723"
	"sprd,sc2730"
	"sprd,sc2731"
- reg: The address of the device chip select, should be 0.
- spi-max-frequency: Typically set to 26000000.
- interrupts: The interrupt line the device is connected to.
- interrupt-controller: Marks the device node as an interrupt controller.
- #interrupt-cells: The number of cells to describe an PMIC IRQ, must be 2.
- #address-cells: Child device offset number of cells, must be 1.
- #size-cells: Child device size number of cells, must be 0.

Example:
pmic@0 {
	compatible = "sprd,sc2731";
	reg = <0>;
	spi-max-frequency = <26000000>;
	interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-controller;
	#interrupt-cells = <2>;
	#address-cells = <1>;
	#size-cells = <0>;
};
+1 −20
Original line number Diff line number Diff line
@@ -30,23 +30,4 @@ properties:
      - constant-charge-voltage-max-microvolt: maximum constant input voltage.

additionalProperties: false

examples:
  - |
    bat: battery {
      compatible = "simple-battery";
      charge-term-current-microamp = <120000>;
      constant-charge-voltage-max-microvolt = <4350000>;
    };

    pmic {
      #address-cells = <1>;
      #size-cells = <0>;

      battery@a00 {
        compatible = "sprd,sc2731-charger";
        reg = <0x0>;
        phys = <&ssphy>;
        monitored-battery = <&bat>;
      };
    };
...
Loading