GPIO controllers and the DT
Every GPIO controller declared in the DT must have the Boolean property gpio-controller
set. Some controllers provide IRQs mapped to the GPIO. In that case, the interrupt-cells
property should be set too; usually you use2
, but it depends on the need. The first cell is thepinnumber, and the second represents the interrupt flag.
gpio-cells
should be set to identify how many cells are used to describe a GPIO specifier. You usually use <2>
, the first cell to identify the GPIO number, and the second for flags. Actually, most non-memory mapped GPIO controllers do not use flags:
expander_1: mcp23016@27 { compatible = "microchip,mcp23016"; interrupt-controller; gpio-controller; #gpio-cells = <2>; interrupt-parent = <&gpio6>; interrupts = <31 IRQ_TYPE_LEVEL_LOW>; reg = <0x27>; #interrupt-cells=<2>; };
The preceding sample is the node of our GPIO-controller device, and the complete device driver...