1$FreeBSD$ 2 3GPIO configuration. 4=================== 5 61. Properties for GPIO Controllers 7 81.1 #gpio-cells 9 10Property: #gpio-cells 11 12Value type: <u32> 13 14Description: The #gpio-cells property defines the number of cells required 15 to encode a gpio specifier. 16 17 181.2 gpio-controller 19 20Property: gpio-controller 21 22Value type: <empty> 23 24Description: The presence of a gpio-controller property defines a node as a 25 GPIO controller node. 26 27 281.3 pin-count 29 30Property: pin-count 31 32Value type: <u32> 33 34Description: The pin-count property defines the number of GPIO pins. 35 36 371.4 Example 38 39 GPIO: gpio@10100 { 40 #gpio-cells = <3>; 41 compatible = "mrvl,gpio"; 42 reg = <0x10100 0x20>; 43 gpio-controller; 44 interrupts = <6 7 8 9>; 45 interrupt-parent = <&PIC>; 46 pin-count = <50> 47 }; 48 492. Properties for GPIO consumer nodes. 50 512.1 gpios 52 53Property: gpios 54 55Value type: <prop-encoded-array> encoded as arbitrary number of GPIO 56 specifiers. 57 58Description: The gpios property of a device node defines the GPIO or GPIOs 59 that are used by the device. The value of the gpios property 60 consists of an arbitrary number of GPIO specifiers. 61 62 The first cell of the GPIO specifier is phandle of the node's 63 parent GPIO controller and remaining cells are defined by the 64 binding describing the GPIO parent, typically include 65 information like pin number, direction and various flags. 66 67Example: 68 gpios = <&GPIO 0 1 /* GPIO[0]: FLAGS */ 69 &GPIO 1 2>; /* GPIO[1]: FLAGS */ 70 71 723. GPIO controller specifier 73 74 <phandle pin dir flags> 75 76 77pin: 0-MAX GPIO pin number. 78 79flags: 80 Available flags are listed in sys/conf.h. Following combination 81 can be supported by the controller. For details please refer 82 to controller's GPIO reference manual. 83 84 GPIO_PIN_INPUT 0x0001 Input direction 85 GPIO_PIN_OUTPUT 0x0002 Output direction 86 GPIO_PIN_OPENDRAIN 0x0004 Open-drain output 87 GPIO_PIN_OPENSOURCE 0x0008 Open-source output 88 GPIO_PIN_PUSHPULL 0x0010 Push-pull output 89 GPIO_PIN_TRISTATE 0x0020 Output disabled 90 GPIO_PIN_PULLUP 0x0040 Internal pull-up enabled 91 GPIO_PIN_PULLDOWN 0x0080 Internal pull-down enabled 92 GPIO_PIN_INVIN 0x0100 Invert input 93 GPIO_PIN_INVOUT 0x0200 Invert output 94 GPIO_PIN_PULSATE 0x0400 Pulsate in hardware 95 GPIO_PIN_IRQ_POL_EDG 0x0800 IRQ active single edge 96 GPIO_PIN_IRQ_POL_DBL 0x1000 IRQ active double edge 97 GPIO_PIN_IRQ_POL_LVL 0x2000 IRQ active level 98 GPIO_PIN_IRQ_DEBOUNCE 0x4000 Debounce on IRQ pin 99 100Example: 101 gpios = <&GPIO 0 0x00000001 /* GPIO[0]: IN */ 102 &GPIO 1 0x00000002 /* GPIO[1]: OUT */ 103 &GPIO 2 0x00000801 /* GPIO[2]: IN, IRQ (edge) */ 104 &GPIO 3 0x00004001 /* GPIO[3]: IN, IRQ (level) */ 105 ... 106 &GPIO 10 0x00000401>; /* GPIO[10]: OUT, blink */ 107