Commit f92d2e93 authored by Ricky CX Wu's avatar Ricky CX Wu Committed by Lee Jones
Browse files

dt-bindings: leds: pca955x: Convert text bindings to YAML



Convert the text bindings of pca955x to YAML so it could be used to
validate the DTS.

Signed-off-by: default avatarRicky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
Signed-off-by: default avatarDelphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20241016093857.925467-1-Delphine_CC_Chiu@wiwynn.com


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 6cbf5c99
Loading
Loading
Loading
Loading
+0 −89
Original line number Diff line number Diff line
* NXP - pca955x LED driver

The PCA955x family of chips are I2C LED blinkers whose pins not used
to control LEDs can be used as general purpose I/Os. The GPIO pins can
be input or output, and output pins can also be pulse-width controlled.

Required properties:
- compatible : should be one of :
	"nxp,pca9550"
	"nxp,pca9551"
	"nxp,pca9552"
	"ibm,pca9552"
	"nxp,pca9553"
- #address-cells: must be 1
- #size-cells: must be 0
- reg: I2C slave address. depends on the model.

Optional properties:
- gpio-controller: allows pins to be used as GPIOs.
- #gpio-cells: must be 2.
- gpio-line-names: define the names of the GPIO lines

LED sub-node properties:
- reg : number of LED line.
		from 0 to  1 for the pca9550
		from 0 to  7 for the pca9551
		from 0 to 15 for the pca9552
		from 0 to  3 for the pca9553
- type: (optional) either
	PCA955X_TYPE_NONE
	PCA955X_TYPE_LED
	PCA955X_TYPE_GPIO
	see dt-bindings/leds/leds-pca955x.h (default to LED)
- label : (optional)
	see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : (optional)
	see Documentation/devicetree/bindings/leds/common.txt

Examples:

pca9552: pca9552@60 {
	compatible = "nxp,pca9552";
	#address-cells = <1>;
        #size-cells = <0>;
	reg = <0x60>;

	gpio-controller;
	#gpio-cells = <2>;
	gpio-line-names = "GPIO12", "GPIO13", "GPIO14", "GPIO15";

	gpio@12 {
		reg = <12>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@13 {
		reg = <13>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@14 {
		reg = <14>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@15 {
		reg = <15>;
		type = <PCA955X_TYPE_GPIO>;
	};

	led@0 {
		label = "red:power";
		linux,default-trigger = "default-on";
		reg = <0>;
		type = <PCA955X_TYPE_LED>;
	};
	led@1 {
		label = "green:power";
		reg = <1>;
		type = <PCA955X_TYPE_LED>;
	};
	led@2 {
		label = "pca9552:yellow";
		reg = <2>;
		type = <PCA955X_TYPE_LED>;
	};
	led@3 {
		label = "pca9552:white";
		reg = <3>;
		type = <PCA955X_TYPE_LED>;
	};
};
+158 −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/leds/nxp,pca955x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP PCA955X LED controllers

maintainers:
  - Nate Case <ncase@xes-inc.com>

description: |
  The PCA955x family of chips are I2C LED blinkers whose pins not used
  to control LEDs can be used as general purpose I/Os. The GPIO pins can
  be input or output, and output pins can also be pulse-width controlled.

  For more product information please see the link below:
  - https://www.nxp.com/docs/en/data-sheet/PCA9552.pdf

properties:
  compatible:
    enum:
      - nxp,pca9550
      - nxp,pca9551
      - nxp,pca9552
      - ibm,pca9552
      - nxp,pca9553

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  gpio-controller: true

  gpio-line-names:
    minItems: 1
    maxItems: 16

  "#gpio-cells":
    const: 2

patternProperties:
  "^led@[0-9a-f]$":
    type: object
    $ref: common.yaml#
    unevaluatedProperties: false

    properties:
      reg:
        maxItems: 1
      type:
        description: |
          Output configuration, see include/dt-bindings/leds/leds-pca955x.h
        $ref: /schemas/types.yaml#/definitions/uint32
        default: 0
        minimum: 0
        maximum: 2

    required:
      - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nxp,pca9550
    then:
      patternProperties:
        "^led@[0-9a-f]$":
          properties:
            reg:
              maximum: 1
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nxp,pca9551
    then:
      patternProperties:
        "^led@[0-9a-f]$":
          properties:
            reg:
              maximum: 7
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nxp,pca9552
              - ibm,pca9552
    then:
      patternProperties:
        "^led@[0-9a-f]$":
          properties:
            reg:
              maximum: 15
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nxp,pca9553
    then:
      patternProperties:
        "^led@[0-9a-f]$":
          properties:
            reg:
              maximum: 3

additionalProperties: false

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

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

        led-controller@60 {
            compatible = "nxp,pca9552";
            reg = <0x60>;
            #address-cells = <1>;
            #size-cells = <0>;

            led@0 {
                reg = <0>;
                label = "red:power";
                linux,default-trigger = "default-on";
                type = <PCA955X_TYPE_LED>;
            };
            led@1 {
                reg = <1>;
                label = "green:power";
                type = <PCA955X_TYPE_LED>;
            };
            led@2 {
                reg = <2>;
                label = "pca9552:yellow";
                type = <PCA955X_TYPE_LED>;
            };
            led@3 {
                reg = <3>;
                label = "pca9552:white";
                type = <PCA955X_TYPE_LED>;
            };
        };
    };

...