]>
Commit | Line | Data |
---|---|---|
97ddb1c8 LP |
1 | Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for |
2 | 8-/16-bit I/O expander with serial interface (I2C/SPI) | |
3 | ||
4 | Required properties: | |
5 | - compatible : Should be | |
45971686 LP |
6 | - "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version |
7 | - "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version | |
8 | - "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or | |
9 | - "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip | |
10 | ||
11 | - "microchip,mcp23s08" for 8 GPIO SPI version | |
12 | - "microchip,mcp23s17" for 16 GPIO SPI version | |
13 | - "microchip,mcp23008" for 8 GPIO I2C version or | |
14 | - "microchip,mcp23017" for 16 GPIO I2C version of the chip | |
15 | NOTE: Do not use the old mcp prefix any more. It is deprecated and will be | |
16 | removed. | |
97ddb1c8 LP |
17 | - #gpio-cells : Should be two. |
18 | - first cell is the pin number | |
19 | - second cell is used to specify flags. Flags are currently unused. | |
20 | - gpio-controller : Marks the device node as a GPIO controller. | |
21 | - reg : For an address on its bus. I2C uses this a the I2C address of the chip. | |
22 | SPI uses this to specify the chipselect line which the chip is | |
23 | connected to. The driver and the SPI variant of the chip support | |
24 | multiple chips on the same chipselect. Have a look at | |
45971686 | 25 | microchip,spi-present-mask below. |
97ddb1c8 LP |
26 | |
27 | Required device specific properties (only for SPI chips): | |
45971686 LP |
28 | - mcp,spi-present-mask (DEPRECATED) |
29 | - microchip,spi-present-mask : This is a present flag, that makes only sense for SPI | |
97ddb1c8 LP |
30 | chips - as the name suggests. Multiple SPI chips can share the same |
31 | SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a | |
32 | chip connected with the corresponding spi address set. For example if | |
33 | you have a chip with address 3 connected, you have to set bit3 to 1, | |
34 | which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not | |
35 | possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at | |
36 | least one bit to 1 for SPI chips. | |
45971686 LP |
37 | NOTE: Do not use the old mcp prefix any more. It is deprecated and will be |
38 | removed. | |
97ddb1c8 LP |
39 | - spi-max-frequency = The maximum frequency this chip is able to handle |
40 | ||
4e47f91b LP |
41 | Optional properties: |
42 | - #interrupt-cells : Should be two. | |
43 | - first cell is the pin number | |
44 | - second cell is used to specify flags. | |
45 | - interrupt-controller: Marks the device node as a interrupt controller. | |
46 | NOTE: The interrupt functionality is only supported for i2c versions of the | |
47 | chips. The spi chips can also do the interrupts, but this is not supported by | |
48 | the linux driver yet. | |
49 | ||
50 | Optional device specific properties: | |
51 | - microchip,irq-mirror: Sets the mirror flag in the IOCON register. Devices | |
52 | with two interrupt outputs (these are the devices ending with 17 and | |
53 | those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and | |
54 | IO 8-15 are bank 2. These chips have two different interrupt outputs: | |
55 | One for bank 1 and another for bank 2. If irq-mirror is set, both | |
56 | interrupts are generated regardless of the bank that an input change | |
57 | occured on. If it is not set, the interrupt are only generated for the | |
58 | bank they belong to. | |
59 | On devices with only one interrupt output this property is useless. | |
60 | ||
61 | Example I2C (with interrupt): | |
97ddb1c8 | 62 | gpiom1: gpio@20 { |
45971686 | 63 | compatible = "microchip,mcp23017"; |
97ddb1c8 LP |
64 | gpio-controller; |
65 | #gpio-cells = <2>; | |
66 | reg = <0x20>; | |
4e47f91b LP |
67 | |
68 | interrupt-parent = <&gpio1>; | |
69 | interrupts = <17 IRQ_TYPE_LEVEL_LOW>; | |
70 | interrupt-controller; | |
71 | #interrupt-cells=<2>; | |
72 | microchip,irq-mirror; | |
97ddb1c8 LP |
73 | }; |
74 | ||
75 | Example SPI: | |
76 | gpiom1: gpio@0 { | |
45971686 | 77 | compatible = "microchip,mcp23s17"; |
97ddb1c8 LP |
78 | gpio-controller; |
79 | #gpio-cells = <2>; | |
80 | spi-present-mask = <0x01>; | |
81 | reg = <0>; | |
82 | spi-max-frequency = <1000000>; | |
83 | }; |