File Index
Files and directories
Sign in
FILE

microchip,mcp23s08.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/pinctrl/microchip,mcp23s08.yaml YAML
  1# SPDX-License-Identifier: GPL-2.0-only
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/pinctrl/microchip,mcp23s08.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: Microchip I/O expander with serial interface (I2C/SPI)
  8
  9maintainers:
 10  - Himanshu Bhavani <himanshu.bhavani@siliconsignals.io>
 11
 12description:
 13  Microchip MCP23008, MCP23017, MCP23S08, MCP23S17, MCP23S18 GPIO expander
 14  chips.These chips provide 8 or 16 GPIO pins with either I2C or SPI interface.
 15
 16allOf:
 17  - $ref: /schemas/spi/spi-peripheral-props.yaml#
 18
 19properties:
 20  compatible:
 21    enum:
 22      - microchip,mcp23s08
 23      - microchip,mcp23s17
 24      - microchip,mcp23s18
 25      - microchip,mcp23008
 26      - microchip,mcp23017
 27      - microchip,mcp23018
 28
 29  reg:
 30    maxItems: 1
 31
 32  gpio-controller: true
 33
 34  '#gpio-cells':
 35    const: 2
 36
 37  interrupt-controller: true
 38
 39  '#interrupt-cells':
 40    const: 2
 41
 42  interrupts:
 43    maxItems: 1
 44
 45  reset-gpios:
 46    description: GPIO specifier for active-low reset pin.
 47    maxItems: 1
 48
 49  microchip,spi-present-mask:
 50    description:
 51      Multiple SPI chips can share the same SPI chipselect. Set a bit in
 52      bit0-7 in this mask to 1 if there is a chip connected with the
 53      corresponding spi address set. For example if you have a chip with
 54      address 3 connected, you have to set bit3 to 1, which is 0x08. mcp23s08
 55      chip variant only supports bits 0-3. It is not possible to mix mcp23s08
 56      and mcp23s17 on the same chipselect. Set at least one bit to 1 for SPI
 57      chips.
 58    $ref: /schemas/types.yaml#/definitions/uint8
 59
 60  microchip,irq-mirror:
 61    type: boolean
 62    description:
 63      Sets the mirror flag in the IOCON register. Devices with two interrupt
 64      outputs (these are the devices ending with 17 and those that have 16 IOs)
 65      have two IO banks IO 0-7 form bank 1 and IO 8-15 are bank 2. These chips
 66      have two different interrupt outputs One for bank 1 and another for
 67      bank 2. If irq-mirror is set, both interrupts are generated regardless of
 68      the bank that an input change occurred on. If it is not set,the interrupt
 69      are only generated for the bank they belong to.
 70
 71  microchip,irq-active-high:
 72    type: boolean
 73    description:
 74      Sets the INTPOL flag in the IOCON register.This configures the IRQ output
 75      polarity as active high.
 76
 77  drive-open-drain:
 78    type: boolean
 79    description:
 80      Sets the ODR flag in the IOCON register. This configures the IRQ output as
 81      open drain active low.
 82
 83  pinmux:
 84    type: object
 85    properties:
 86      pins:
 87        description:
 88          The list of GPIO pins controlled by this node. Each pin name
 89          corresponds to a physical pin on the GPIO expander.
 90        items:
 91          pattern: '^gpio([0-9]|[1][0-5])$'
 92        maxItems: 16
 93
 94      bias-pull-up:
 95        type: boolean
 96        description:
 97          Configures pull-up resistors for the GPIO pins. Absence of this
 98          property will leave the configuration in its default state.
 99
100    required:
101      - pins
102
103    additionalProperties: false
104
105required:
106  - compatible
107  - reg
108  - gpio-controller
109  - '#gpio-cells'
110
111unevaluatedProperties: false
112
113examples:
114  - |
115    #include <dt-bindings/interrupt-controller/irq.h>
116    #include <dt-bindings/gpio/gpio.h>
117
118    i2c {
119        #address-cells = <1>;
120        #size-cells = <0>;
121
122        gpio@21 {
123            compatible = "microchip,mcp23017";
124            reg = <0x21>;
125            gpio-controller;
126            #gpio-cells = <2>;
127
128            interrupt-parent = <&gpio1>;
129            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
130            interrupt-controller;
131            #interrupt-cells = <2>;
132
133            microchip,irq-mirror;
134            pinctrl-names = "default";
135            pinctrl-0 = <&pinctrl_i2c_gpio0>, <&gpiopullups>;
136            reset-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
137
138            gpiopullups: pinmux {
139                pins = "gpio0", "gpio1", "gpio2", "gpio3",
140                       "gpio4", "gpio5", "gpio6", "gpio7",
141                       "gpio8", "gpio9", "gpio10", "gpio11",
142                       "gpio12", "gpio13", "gpio14", "gpio15";
143                bias-pull-up;
144            };
145        };
146    };
147
148  - |
149    spi {
150        #address-cells = <1>;
151        #size-cells = <0>;
152
153        gpio@0 {
154            compatible = "microchip,mcp23s17";
155            reg = <0>;
156            gpio-controller;
157            #gpio-cells = <2>;
158            spi-max-frequency = <1000000>;
159            microchip,spi-present-mask = /bits/ 8 <0x01>;
160        };
161    };
~/ Read-only file preview.