| * Toshiba TC3589x multi-purpose expander |
| |
| The Toshiba TC3589x series are I2C-based MFD devices which may expose the |
| following built-in devices: gpio, keypad, rotator (vibrator), PWM (for |
| e.g. LEDs or vibrators) The included models are: |
| |
| - TC35890 |
| - TC35892 |
| - TC35893 |
| - TC35894 |
| - TC35895 |
| - TC35896 |
| |
| Required properties: |
| - compatible : must be "toshiba,tc35890", "toshiba,tc35892", "toshiba,tc35893", |
| "toshiba,tc35894", "toshiba,tc35895" or "toshiba,tc35896" |
| - reg : I2C address of the device |
| - interrupt-parent : specifies which IRQ controller we're connected to |
| - interrupts : the interrupt on the parent the controller is connected to |
| - interrupt-controller : marks the device node as an interrupt controller |
| - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this |
| TC3589x interrupt controller. |
| |
| Optional nodes: |
| |
| - GPIO |
| This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20 |
| (other models) GPIO lines. |
| - compatible : must be "toshiba,tc3589x-gpio" |
| - interrupts : interrupt on the parent, which must be the tc3589x MFD device |
| - interrupt-controller : marks the device node as an interrupt controller |
| - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this |
| TC3589x GPIO interrupt controller, the second cell is the interrupt flags |
| in accordance with <dt-bindings/interrupt-controller/irq.h>. The following |
| flags are valid: |
| - IRQ_TYPE_LEVEL_LOW |
| - IRQ_TYPE_LEVEL_HIGH |
| - IRQ_TYPE_EDGE_RISING |
| - IRQ_TYPE_EDGE_FALLING |
| - IRQ_TYPE_EDGE_BOTH |
| - gpio-controller : marks the device node as a GPIO controller |
| - #gpio-cells : should be <2>, the first cell is the GPIO offset on this |
| GPIO controller, the second cell is the flags. |
| |
| - Keypad |
| This keypad is the same on all variants, supporting up to 96 different |
| keys. The linux-specific properties are modeled on those already existing |
| in other input drivers. |
| - compatible : must be "toshiba,tc3589x-keypad" |
| - debounce-delay-ms : debounce interval in milliseconds |
| - keypad,num-rows : number of rows in the matrix, see |
| bindings/input/matrix-keymap.txt |
| - keypad,num-columns : number of columns in the matrix, see |
| bindings/input/matrix-keymap.txt |
| - linux,keymap: the definition can be found in |
| bindings/input/matrix-keymap.txt |
| - linux,no-autorepeat: do no enable autorepeat feature. |
| - wakeup-source: use any event on keypad as wakeup event. |
| (Legacy property supported: "linux,wakeup") |
| |
| Example: |
| |
| tc35893@44 { |
| compatible = "toshiba,tc35893"; |
| reg = <0x44>; |
| interrupt-parent = <&gpio6>; |
| interrupts = <26 IRQ_TYPE_EDGE_RISING>; |
| |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| tc3589x_gpio { |
| compatible = "toshiba,tc3589x-gpio"; |
| interrupts = <0>; |
| |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| tc3589x_keypad { |
| compatible = "toshiba,tc3589x-keypad"; |
| interrupts = <6>; |
| debounce-delay-ms = <4>; |
| keypad,num-columns = <8>; |
| keypad,num-rows = <8>; |
| linux,no-autorepeat; |
| linux,keymap = <0x0301006b |
| 0x04010066 |
| 0x06040072 |
| 0x040200d7 |
| 0x0303006a |
| 0x0205000e |
| 0x0607008b |
| 0x0500001c |
| 0x0403000b |
| 0x03040034 |
| 0x05020067 |
| 0x0305006c |
| 0x040500e7 |
| 0x0005009e |
| 0x06020073 |
| 0x01030039 |
| 0x07060069 |
| 0x050500d9>; |
| wakeup-source; |
| }; |
| }; |