Commit 29c10bce authored by Neil Armstrong's avatar Neil Armstrong Committed by Linus Walleij
Browse files

dt-bindings: pinctrl: convert semtech,sx150xq bindings to dt-schema



This converts the Semtech SX150Xq bindings to dt-schemas, add necessary
bindings documentation to cover all differences between HW variants
and current bindings usage.

Signed-off-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20221005-mdm9615-sx1509q-yaml-v3-0-e8b349eb1900@linaro.org


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 06de5193
Loading
Loading
Loading
Loading
+0 −72
Original line number Diff line number Diff line
SEMTECH SX150x GPIO expander bindings

Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
../interrupt-controller/interrupts.txt for generic information regarding
pin controller, GPIO, and interrupt bindings.

Required properties:
- compatible: should be one of :
			"semtech,sx1501q",
			"semtech,sx1502q",
			"semtech,sx1503q",
			"semtech,sx1504q",
			"semtech,sx1505q",
			"semtech,sx1506q",
			"semtech,sx1507q",
			"semtech,sx1508q",
			"semtech,sx1509q".

- reg: The I2C slave address for this device.

- #gpio-cells: Should be 2. The first cell is the GPIO number and the
		second cell is used to specify optional parameters:
		bit 0: polarity (0: normal, 1: inverted)

- gpio-controller: Marks the device as a GPIO controller.

Optional properties :
- interrupts: Interrupt specifier for the controllers interrupt.

- interrupt-controller: Marks the device as a interrupt controller.

- semtech,probe-reset: Will trigger a reset of the GPIO expander on probe,
		only for sx1507q, sx1508q and sx1509q

The GPIO expander can optionally be used as an interrupt controller, in
which case it uses the default two cell specifier.

Required properties for pin configuration sub-nodes:
 - pins: List of pins to which the configuration applies.

Optional properties for pin configuration sub-nodes:
----------------------------------------------------
 - bias-disable: disable any pin bias, except the OSCIO pin
 - bias-pull-up: pull up the pin, except the OSCIO pin
 - bias-pull-down: pull down the pin, except the OSCIO pin
 - bias-pull-pin-default: use pin-default pull state, except the OSCIO pin
 - drive-push-pull: drive actively high and low
 - drive-open-drain: drive with open drain only for sx1507q, sx1508q and sx1509q and except the OSCIO pin
 - output-low: set the pin to output mode with low level
 - output-high: set the pin to output mode with high level

Example:

	i2c0gpio-expander@20{
		#gpio-cells = <2>;
		#interrupt-cells = <2>;
		compatible = "semtech,sx1506q";
		reg = <0x20>;
		interrupt-parent = <&gpio_1>;
		interrupts = <16 0>;

		gpio-controller;
		interrupt-controller;

		pinctrl-names = "default";
		pinctrl-0 = <&gpio1_cfg_pins>;

		gpio1_cfg_pins: gpio1-cfg {
			pins = "gpio1";
			bias-pull-up;
		};
	};
+208 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2022 Linaro Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/semtech,sx1501q.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Semtech SX150x GPIO expander

maintainers:
  - Neil Armstrong <neil.armstrong@linaro.org>

properties:
  compatible:
    enum:
      - semtech,sx1501q
      - semtech,sx1502q
      - semtech,sx1503q
      - semtech,sx1504q
      - semtech,sx1505q
      - semtech,sx1506q
      - semtech,sx1507q
      - semtech,sx1508q
      - semtech,sx1509q

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  '#interrupt-cells':
    const: 2

  interrupt-controller: true

  '#gpio-cells':
    const: 2

  gpio-controller: true

  semtech,probe-reset:
    description: Will trigger a reset of the GPIO expander on probe
    type: boolean

patternProperties:
  '-cfg$':
    type: object
    properties:
      pins: true

      bias-disable: true
      bias-pull-up: true
      bias-pull-down: true
      bias-pull-pin-default: true
      drive-push-pull: true
      output-low: true
      output-high: true
      drive-open-drain: true

    required:
      - pins

    allOf:
      - $ref: "pincfg-node.yaml#"
      - $ref: "pinmux-node.yaml#"
      - if:
          properties:
            pins:
              contains:
                const: oscio
        then:
          properties:
            bias-disable: false
            bias-pull-up: false
            bias-pull-down: false
            bias-pull-pin-default: false
            drive-open-drain: false

    additionalProperties: false

required:
  - compatible
  - reg
  - '#gpio-cells'
  - gpio-controller

allOf:
  - $ref: "pinctrl.yaml#"
  - if:
      not:
        properties:
          compatible:
            contains:
              enum:
                - semtech,sx1507q
                - semtech,sx1508q
                - semtech,sx1509q
    then:
      properties:
        semtech,probe-reset: false
  - if:
      properties:
        compatible:
          contains:
            enum:
              - semtech,sx1501q
              - semtech,sx1504q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^gpio[0-3]$'
  - if:
      properties:
        compatible:
          contains:
            enum:
              - semtech,sx1502q
              - semtech,sx1505q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^gpio[0-7]$'
  - if:
      properties:
        compatible:
          contains:
            enum:
              - semtech,sx1503q
              - semtech,sx1506q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^gpio[0-15]$'
  - if:
      properties:
        compatible:
          contains:
            const: semtech,sx1507q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^(oscio|gpio[0-3])$'
  - if:
      properties:
        compatible:
          contains:
            const: semtech,sx1508q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^(oscio|gpio[0-7])$'
  - if:
      properties:
        compatible:
          contains:
            const: semtech,sx1509q
    then:
      patternProperties:
        '-cfg$':
          properties:
            pins:
              items:
                pattern: '^(oscio|gpio[0-15])$'

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c@1000 {
        reg = <0x1000 0x80>;
        #address-cells = <1>;
        #size-cells = <0>;

        pinctrl@20 {
            compatible = "semtech,sx1501q";
            reg = <0x20>;

            #gpio-cells = <2>;
            #interrupt-cells = <2>;

            interrupts = <16 IRQ_TYPE_EDGE_FALLING>;

            gpio-controller;
            interrupt-controller;

            gpio1-cfg {
                  pins = "gpio1";
                  bias-pull-up;
            };
        };
    };