mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 07:23:14 +00: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