mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 18:21:24 +02:00
dt-bindings: pinctrl: convert pinctrl-mcp23s08.txt to yaml format
YAML binding file provides the conversion of the original text-based binding for the pinctrl-mcp23s08 to microchip,mcp23s08.yaml. following compatible strings using the deprecated mcp prefix have been removed from this binding: - mcp,mcp23s08 - mcp,mcp23s17 - mcp,mcp23008 - mcp,mcp23017 Signed-off-by: Himanshu Bhavani <himanshu.bhavani@siliconsignals.io> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/20241028063939.6276-1-himanshu.bhavani@siliconsignals.io Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
1aad42abae
commit
3ad8d3ec6d
|
|
@ -0,0 +1,161 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/pinctrl/microchip,mcp23s08.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip I/O expander with serial interface (I2C/SPI)
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Himanshu Bhavani <himanshu.bhavani@siliconsignals.io>
|
||||||
|
|
||||||
|
description:
|
||||||
|
Microchip MCP23008, MCP23017, MCP23S08, MCP23S17, MCP23S18 GPIO expander
|
||||||
|
chips.These chips provide 8 or 16 GPIO pins with either I2C or SPI interface.
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- microchip,mcp23s08
|
||||||
|
- microchip,mcp23s17
|
||||||
|
- microchip,mcp23s18
|
||||||
|
- microchip,mcp23008
|
||||||
|
- microchip,mcp23017
|
||||||
|
- microchip,mcp23018
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
gpio-controller: true
|
||||||
|
|
||||||
|
'#gpio-cells':
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
interrupt-controller: true
|
||||||
|
|
||||||
|
'#interrupt-cells':
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description: GPIO specifier for active-low reset pin.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
microchip,spi-present-mask:
|
||||||
|
description:
|
||||||
|
Multiple SPI chips can share the same SPI chipselect. Set a bit in
|
||||||
|
bit0-7 in this mask to 1 if there is a chip connected with the
|
||||||
|
corresponding spi address set. For example if you have a chip with
|
||||||
|
address 3 connected, you have to set bit3 to 1, which is 0x08. mcp23s08
|
||||||
|
chip variant only supports bits 0-3. It is not possible to mix mcp23s08
|
||||||
|
and mcp23s17 on the same chipselect. Set at least one bit to 1 for SPI
|
||||||
|
chips.
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint8
|
||||||
|
|
||||||
|
microchip,irq-mirror:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Sets the mirror flag in the IOCON register. Devices with two interrupt
|
||||||
|
outputs (these are the devices ending with 17 and those that have 16 IOs)
|
||||||
|
have two IO banks IO 0-7 form bank 1 and IO 8-15 are bank 2. These chips
|
||||||
|
have two different interrupt outputs One for bank 1 and another for
|
||||||
|
bank 2. If irq-mirror is set, both interrupts are generated regardless of
|
||||||
|
the bank that an input change occurred on. If it is not set,the interrupt
|
||||||
|
are only generated for the bank they belong to.
|
||||||
|
|
||||||
|
microchip,irq-active-high:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Sets the INTPOL flag in the IOCON register.This configures the IRQ output
|
||||||
|
polarity as active high.
|
||||||
|
|
||||||
|
drive-open-drain:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Sets the ODR flag in the IOCON register. This configures the IRQ output as
|
||||||
|
open drain active low.
|
||||||
|
|
||||||
|
pinmux:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
pins:
|
||||||
|
description:
|
||||||
|
The list of GPIO pins controlled by this node. Each pin name
|
||||||
|
corresponds to a physical pin on the GPIO expander.
|
||||||
|
items:
|
||||||
|
pattern: '^gpio([0-9]|[1][0-5])$'
|
||||||
|
maxItems: 16
|
||||||
|
|
||||||
|
bias-pull-up:
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
Configures pull-up resistors for the GPIO pins. Absence of this
|
||||||
|
property will leave the configuration in its default state.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- pins
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- gpio-controller
|
||||||
|
- '#gpio-cells'
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
gpio@21 {
|
||||||
|
compatible = "microchip,mcp23017";
|
||||||
|
reg = <0x21>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
|
||||||
|
microchip,irq-mirror;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_i2c_gpio0>, <&gpiopullups>;
|
||||||
|
reset-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
gpiopullups: pinmux {
|
||||||
|
pins = "gpio0", "gpio1", "gpio2", "gpio3",
|
||||||
|
"gpio4", "gpio5", "gpio6", "gpio7",
|
||||||
|
"gpio8", "gpio9", "gpio10", "gpio11",
|
||||||
|
"gpio12", "gpio13", "gpio14", "gpio15";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
- |
|
||||||
|
spi {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
gpio@0 {
|
||||||
|
compatible = "microchip,mcp23s17";
|
||||||
|
reg = <0>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
spi-max-frequency = <1000000>;
|
||||||
|
microchip,spi-present-mask = /bits/ 8 <0x01>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
@ -1,148 +0,0 @@
|
||||||
Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
|
|
||||||
8-/16-bit I/O expander with serial interface (I2C/SPI)
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : Should be
|
|
||||||
- "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version
|
|
||||||
- "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version
|
|
||||||
- "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or
|
|
||||||
- "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip
|
|
||||||
|
|
||||||
- "microchip,mcp23s08" for 8 GPIO SPI version
|
|
||||||
- "microchip,mcp23s17" for 16 GPIO SPI version
|
|
||||||
- "microchip,mcp23s18" for 16 GPIO SPI version
|
|
||||||
- "microchip,mcp23008" for 8 GPIO I2C version or
|
|
||||||
- "microchip,mcp23017" for 16 GPIO I2C version of the chip
|
|
||||||
- "microchip,mcp23018" for 16 GPIO I2C version
|
|
||||||
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
|
||||||
removed.
|
|
||||||
- #gpio-cells : Should be two.
|
|
||||||
- first cell is the pin number
|
|
||||||
- second cell is used to specify flags as described in
|
|
||||||
'Documentation/devicetree/bindings/gpio/gpio.txt'. Allowed values defined by
|
|
||||||
'include/dt-bindings/gpio/gpio.h' (e.g. GPIO_ACTIVE_LOW).
|
|
||||||
- gpio-controller : Marks the device node as a GPIO controller.
|
|
||||||
- reg : For an address on its bus. I2C uses this a the I2C address of the chip.
|
|
||||||
SPI uses this to specify the chipselect line which the chip is
|
|
||||||
connected to. The driver and the SPI variant of the chip support
|
|
||||||
multiple chips on the same chipselect. Have a look at
|
|
||||||
microchip,spi-present-mask below.
|
|
||||||
|
|
||||||
Required device specific properties (only for SPI chips):
|
|
||||||
- mcp,spi-present-mask (DEPRECATED)
|
|
||||||
- microchip,spi-present-mask : This is a present flag, that makes only sense for SPI
|
|
||||||
chips - as the name suggests. Multiple SPI chips can share the same
|
|
||||||
SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a
|
|
||||||
chip connected with the corresponding spi address set. For example if
|
|
||||||
you have a chip with address 3 connected, you have to set bit3 to 1,
|
|
||||||
which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not
|
|
||||||
possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
|
|
||||||
least one bit to 1 for SPI chips.
|
|
||||||
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
|
||||||
removed.
|
|
||||||
- spi-max-frequency = The maximum frequency this chip is able to handle
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- #interrupt-cells : Should be two.
|
|
||||||
- first cell is the pin number
|
|
||||||
- second cell is used to specify flags.
|
|
||||||
- interrupt-controller: Marks the device node as a interrupt controller.
|
|
||||||
- drive-open-drain: Sets the ODR flag in the IOCON register. This configures
|
|
||||||
the IRQ output as open drain active low.
|
|
||||||
- reset-gpios: Corresponds to the active-low RESET# pin for the chip
|
|
||||||
|
|
||||||
Optional device specific properties:
|
|
||||||
- microchip,irq-mirror: Sets the mirror flag in the IOCON register. Devices
|
|
||||||
with two interrupt outputs (these are the devices ending with 17 and
|
|
||||||
those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and
|
|
||||||
IO 8-15 are bank 2. These chips have two different interrupt outputs:
|
|
||||||
One for bank 1 and another for bank 2. If irq-mirror is set, both
|
|
||||||
interrupts are generated regardless of the bank that an input change
|
|
||||||
occurred on. If it is not set, the interrupt are only generated for the
|
|
||||||
bank they belong to.
|
|
||||||
On devices with only one interrupt output this property is useless.
|
|
||||||
- microchip,irq-active-high: Sets the INTPOL flag in the IOCON register. This
|
|
||||||
configures the IRQ output polarity as active high.
|
|
||||||
|
|
||||||
Example I2C (with interrupt):
|
|
||||||
gpiom1: gpio@20 {
|
|
||||||
compatible = "microchip,mcp23017";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
reg = <0x20>;
|
|
||||||
|
|
||||||
interrupt-parent = <&gpio1>;
|
|
||||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells=<2>;
|
|
||||||
microchip,irq-mirror;
|
|
||||||
};
|
|
||||||
|
|
||||||
Example SPI:
|
|
||||||
gpiom1: gpio@0 {
|
|
||||||
compatible = "microchip,mcp23s17";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
microchip,spi-present-mask = <0x01>;
|
|
||||||
reg = <0>;
|
|
||||||
spi-max-frequency = <1000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
Pull-up configuration
|
|
||||||
=====================
|
|
||||||
|
|
||||||
If pins are used as output, they can also be configured with pull-ups. This is
|
|
||||||
done with pinctrl.
|
|
||||||
|
|
||||||
Please refer file <devicetree/bindings/pinctrl/pinctrl-bindings.txt>
|
|
||||||
for details of the common pinctrl bindings used by client devices,
|
|
||||||
including the meaning of the phrase "pin configuration node".
|
|
||||||
|
|
||||||
Optional Pinmux properties:
|
|
||||||
--------------------------
|
|
||||||
Following properties are required if default setting of pins are required
|
|
||||||
at boot.
|
|
||||||
- pinctrl-names: A pinctrl state named per <pinctrl-bindings.txt>.
|
|
||||||
- pinctrl[0...n]: Properties to contain the phandle for pinctrl states per
|
|
||||||
<pinctrl-bindings.txt>.
|
|
||||||
|
|
||||||
The pin configurations are defined as child of the pinctrl states node. Each
|
|
||||||
sub-node have following properties:
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
------------------
|
|
||||||
- pins: List of pins. Valid values of pins properties are:
|
|
||||||
gpio0 ... gpio7 for the devices with 8 GPIO pins and
|
|
||||||
gpio0 ... gpio15 for the devices with 16 GPIO pins.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
-------------------
|
|
||||||
The following optional property is defined in the pinmux DT binding document
|
|
||||||
<pinctrl-bindings.txt>. Absence of this property will leave the configuration
|
|
||||||
in its default state.
|
|
||||||
bias-pull-up
|
|
||||||
|
|
||||||
Example with pinctrl to pull-up output pins:
|
|
||||||
gpio21: gpio@21 {
|
|
||||||
compatible = "microchip,mcp23017";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <0x2>;
|
|
||||||
reg = <0x21>;
|
|
||||||
interrupt-parent = <&socgpio>;
|
|
||||||
interrupts = <0x17 0x8>;
|
|
||||||
interrupt-names = "mcp23017@21 irq";
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <0x2>;
|
|
||||||
microchip,irq-mirror;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2cgpio0irq>, <&gpio21pullups>;
|
|
||||||
reset-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
|
|
||||||
|
|
||||||
gpio21pullups: pinmux {
|
|
||||||
pins = "gpio0", "gpio1", "gpio2", "gpio3",
|
|
||||||
"gpio4", "gpio5", "gpio6", "gpio7",
|
|
||||||
"gpio8", "gpio9", "gpio10", "gpio11",
|
|
||||||
"gpio12", "gpio13", "gpio14", "gpio15";
|
|
||||||
bias-pull-up;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Loading…
Reference in New Issue
Block a user