| 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,mcp23008" for 8 GPIO I2C version or |
| - "microchip,mcp23017" for 16 GPIO I2C version of the chip |
| 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. Flags are currently unused. |
| - 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. |
| NOTE: The interrupt functionality is only supported for i2c versions of the |
| chips. The spi chips can also do the interrupts, but this is not supported by |
| the linux driver yet. |
| |
| 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 |
| occured 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. |
| |
| 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>; |
| spi-present-mask = <0x01>; |
| reg = <0>; |
| spi-max-frequency = <1000000>; |
| }; |