Commit 02dde2c4 authored by Jihed Chaibi's avatar Jihed Chaibi Committed by Lee Jones
Browse files

dt-bindings: mfd: twl: Add missing sub-nodes for TWL4030 & TWL603x



Update the main TI TWL-family binding to be self-contained and to fix
pre-existing validation errors.

To ensure future patches are bisectable, child nodes whose bindings
are in other patches (audio, keypad, usb, etc.) are now defined using
a flexible 'additionalProperties: true' pattern. This removes hard
dependencies between the MFD and subsystem bindings.

The complete dtbs_check for this binding is clean except for two
warnings originating from pre-existing bugs in the OMAP DTS files,
for which fixes have already been submitted separately [1][2].

Reviewed-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarUwe Kleine-König <ukleinek@kernel.org>
Signed-off-by: default avatarJihed Chaibi <jihed.chaibi.dev@gmail.com>
Reviewed-by: default avatarAndreas Kemnade <andreas@kemnade.info>
Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 354f31e9
Loading
Loading
Loading
Loading
+273 −46
Original line number Diff line number Diff line
@@ -11,9 +11,9 @@ maintainers:

description: |
  The TWLs are Integrated Power Management Chips.
  Some version might contain much more analog function like
  Some versions might contain much more analog functions like
  USB transceiver or Audio amplifier.
  These chips are connected to an i2c bus.
  These chips are connected to an I2C bus.

allOf:
  - if:
@@ -49,33 +49,14 @@ allOf:
            ti,retain-on-reset: false

      properties:
        madc:
          type: object
          $ref: /schemas/iio/adc/ti,twl4030-madc.yaml
          unevaluatedProperties: false

        charger:
          type: object
          $ref: /schemas/power/supply/twl4030-charger.yaml
          unevaluatedProperties: false

        pwrbutton:
          type: object
          additionalProperties: false
          properties:
            compatible:
              const: ti,twl4030-pwrbutton
            interrupts:
              items:
                - items:
                    const: 8
        gpadc: false

        usb-comparator: false

        watchdog:
          type: object
          additionalProperties: false
          properties:
            compatible:
              const: ti,twl4030-wdt
  - if:
      properties:
        compatible:
@@ -106,15 +87,30 @@ allOf:

      properties:
        charger:
          type: object
          properties:
            compatible:
              const: ti,twl6030-charger
          $ref: /schemas/power/supply/ti,twl6030-charger.yaml
          unevaluatedProperties: false

        gpadc:
          type: object
          properties:
            compatible:
              const: ti,twl6030-gpadc

        pwrbutton: false

        madc: false

        watchdog: false

        audio: false

        keypad: false

        twl4030-usb: false

        gpio: false

        power: false

  - if:
      properties:
        compatible:
@@ -142,23 +138,36 @@ allOf:

      properties:
        charger:
          type: object
          properties:
            compatible:
              items:
                - const: ti,twl6032-charger
                - const: ti,twl6030-charger
          $ref: /schemas/power/supply/ti,twl6030-charger.yaml
          unevaluatedProperties: false

        gpadc:
          type: object
          properties:
            compatible:
              const: ti,twl6032-gpadc

        pwrbutton: false

        madc: false

        watchdog: false

        audio: false

        keypad: false

        twl4030-usb: false

        gpio: false

        power: false

properties:
  compatible:
    description:
      TWL4030 for integrated power-management/audio CODEC device used in OMAP3
      based boards
    description: >
      TWL4030 for integrated power-management/audio CODEC device used in
      OMAP3 based boards.

      TWL6030/32 for integrated power-management used in OMAP4 based boards
    enum:
      - ti,twl4030
@@ -181,28 +190,221 @@ properties:
  "#clock-cells":
    const: 1

  clocks:
    maxItems: 1

  clock-names:
    const: fck

  charger:
    type: object
    additionalProperties: true

    properties:
      compatible: true

    required:
      - compatible

  rtc:
    type: object
    additionalProperties: false

    properties:
      compatible:
        const: ti,twl4030-rtc
      interrupts:
        maxItems: 1

  madc:
    type: object
    $ref: /schemas/iio/adc/ti,twl4030-madc.yaml
    unevaluatedProperties: false

  pwrbutton:
    type: object
    additionalProperties: false

    properties:
      compatible:
        const: ti,twl4030-pwrbutton
      interrupts:
        items:
          - items:
              const: 8

  watchdog:
    type: object
    additionalProperties: false

    properties:
      compatible:
        const: ti,twl4030-wdt

  audio:
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: ti,twl4030-audio

    required:
      - compatible

  keypad:
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: ti,twl4030-keypad

    required:
      - compatible

  twl4030-usb:
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: ti,twl4030-usb

    required:
      - compatible

  gpio:
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: ti,twl4030-gpio

    required:
      - compatible

  power:
    type: object
    additionalProperties: false
    description: >
      The power management module inside the TWL4030 provides several
      facilities to control the power resources, including power scripts.

      For now, the binding only supports the complete shutdown of the
      system after poweroff.

      Board-specific compatible strings may be used for platform-specific
      power configurations.

      A board-specific compatible string (e.g., ti,twl4030-power-omap3-evm)
      may be paired with a generic fallback (generally for power saving mode).

    properties:
      compatible:
        oneOf:
          # Case 1: A single compatible string is provided.
          - enum:
              - ti,twl4030-power
              - ti,twl4030-power-reset
              - ti,twl4030-power-idle
              - ti,twl4030-power-idle-osc-off
              - ti,twl4030-power-omap3-sdp
              - ti,twl4030-power-omap3-ldp
              - ti,twl4030-power-omap3-evm

          # Case 2: The specific, valid fallback for 'idle-osc-off'.
          - items:
              - const: ti,twl4030-power-idle-osc-off
              - const: ti,twl4030-power-idle

          # Case 3: The specific, valid fallback for 'omap3-evm'.
          - items:
              - const: ti,twl4030-power-omap3-evm
              - const: ti,twl4030-power-idle

      ti,system-power-controller:
        type: boolean
        deprecated: true
        description: >
          DEPRECATED. The standard 'system-power-controller'
          property on the parent node should be used instead.

      ti,use_poweroff:
        type: boolean
        deprecated: true
        description: DEPRECATED, to be removed.

    required:
      - compatible

  gpadc:
    type: object
    $ref: /schemas/iio/adc/ti,twl6030-gpadc.yaml
    unevaluatedProperties: false

    properties:
      compatible: true

  usb-comparator:
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: ti,twl6030-usb

    required:
      - compatible

  pwm:
    type: object
    $ref: /schemas/pwm/pwm.yaml#
    unevaluatedProperties: false
    description:
      PWM controllers (PWM1 and PWM2 on TWL4030, PWM0 and PWM1 on TWL6030/32).

    properties:
      compatible:
        enum:
          - ti,twl4030-pwm
          - ti,twl6030-pwm

      '#pwm-cells':
        const: 2

    required:
      - compatible
      - '#pwm-cells'

  pwmled:
    type: object
    $ref: /schemas/pwm/pwm.yaml#
    unevaluatedProperties: false
    description: >
      PWM controllers connected to LED terminals (PWMA and PWMB on TWL4030.

      LED PWM on TWL6030/32, mainly used as charging indicator LED).

    properties:
      compatible:
        enum:
          - ti,twl4030-pwmled
          - ti,twl6030-pwmled

      '#pwm-cells':
        const: 2

    required:
      - compatible
      - '#pwm-cells'

patternProperties:
  "^regulator-":
    type: object
    unevaluatedProperties: false
    $ref: /schemas/regulator/regulator.yaml

    properties:
      compatible: true
      regulator-initial-mode:
@@ -211,12 +413,13 @@ patternProperties:
                 # with low power consumption with low load current capability
          - 0x0e # Active mode, the regulator can deliver its nominal output
                 # voltage with full-load current capability

      ti,retain-on-reset:
        description:
          Does not turn off the supplies during warm
          reset. Could be needed for VMMC, as TWL6030
          reset sequence for this signal does not comply
          with the SD specification.
        description: >
          Does not turn off the supplies during warm reset.

          Could be needed for VMMC, as TWL6030 reset sequence for
          this signal does not comply with the SD specification.
        type: boolean

unevaluatedProperties: false
@@ -271,6 +474,16 @@ examples:
          compatible = "ti,twl6030-vmmc";
          ti,retain-on-reset;
        };

        pwm {
          compatible = "ti,twl6030-pwm";
          #pwm-cells = <2>;
        };

        pwmled {
          compatible = "ti,twl6030-pwmled";
          #pwm-cells = <2>;
        };
      };
    };

@@ -325,6 +538,20 @@ examples:
        watchdog {
          compatible = "ti,twl4030-wdt";
        };

        power {
          compatible = "ti,twl4030-power";
        };

        pwm {
          compatible = "ti,twl4030-pwm";
          #pwm-cells = <2>;
        };

        pwmled {
          compatible = "ti,twl4030-pwmled";
          #pwm-cells = <2>;
        };
      };
    };
...
+0 −48
Original line number Diff line number Diff line
Texas Instruments TWL family (twl4030) reset and power management module

The power management module inside the TWL family provides several facilities
to control the power resources, including power scripts. For now, the
binding only supports the complete shutdown of the system after poweroff.

Required properties:
- compatible : must be one of the following
	"ti,twl4030-power"
	"ti,twl4030-power-reset"
	"ti,twl4030-power-idle"
	"ti,twl4030-power-idle-osc-off"

The use of ti,twl4030-power-reset is recommended at least on
3530 that needs a special configuration for warm reset to work.

When using ti,twl4030-power-idle, the TI recommended configuration
for idle modes is loaded to the tlw4030 PMIC.

When using ti,twl4030-power-idle-osc-off, the TI recommended
configuration is used with the external oscillator being shut
down during off-idle. Note that this does not work on all boards
depending on how the external oscillator is wired.

Optional properties:

- ti,system-power-controller: This indicates that TWL4030 is the
  power supply master of the system. With this flag, the chip will
  initiate an ACTIVE-to-OFF or SLEEP-to-OFF transition when the
  system poweroffs.

- ti,use_poweroff: Deprecated name for ti,system-power-controller

Example:
&i2c1 {
	clock-frequency = <2600000>;

	twl: twl@48 {
		reg = <0x48>;
		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
		interrupt-parent = <&intc>;

		twl_power: power {
			compatible = "ti,twl4030-power";
			ti,use_poweroff;
		};
	};
};
+0 −17
Original line number Diff line number Diff line
Texas Instruments TWL series PWM drivers

Supported PWMs:
On TWL4030 series: PWM1 and PWM2
On TWL6030 series: PWM0 and PWM1

Required properties:
- compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm"
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

twl_pwm: pwm {
	compatible = "ti,twl6030-pwm";
	#pwm-cells = <2>;
};
+0 −17
Original line number Diff line number Diff line
Texas Instruments TWL series PWM drivers connected to LED terminals

Supported PWMs:
On TWL4030 series: PWMA and PWMB (connected to LEDA and LEDB terminals)
On TWL6030 series: LED PWM (mainly used as charging indicator LED)

Required properties:
- compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled"
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

twl_pwmled: pwmled {
	compatible = "ti,twl6030-pwmled";
	#pwm-cells = <2>;
};