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

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.orgSigned-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 06de5193
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;
};
};
# 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;
};
};
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment