1* Toshiba TC3589x multi-purpose expander 2 3The Toshiba TC3589x series are I2C-based MFD devices which may expose the 4following built-in devices: gpio, keypad, rotator (vibrator), PWM (for 5e.g. LEDs or vibrators) The included models are: 6 7- TC35890 8- TC35892 9- TC35893 10- TC35894 11- TC35895 12- TC35896 13 14Required properties: 15 - compatible : must be "toshiba,tc35890", "toshiba,tc35892", "toshiba,tc35893", 16 "toshiba,tc35894", "toshiba,tc35895" or "toshiba,tc35896" 17 - reg : I2C address of the device 18 - interrupt-parent : specifies which IRQ controller we're connected to 19 - interrupts : the interrupt on the parent the controller is connected to 20 - interrupt-controller : marks the device node as an interrupt controller 21 - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this 22 TC3589x interrupt controller. 23 24Optional nodes: 25 26- GPIO 27 This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20 28 (other models) GPIO lines. 29 - compatible : must be "toshiba,tc3589x-gpio" 30 - interrupts : interrupt on the parent, which must be the tc3589x MFD device 31 - interrupt-controller : marks the device node as an interrupt controller 32 - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this 33 TC3589x GPIO interrupt controller, the second cell is the interrupt flags 34 in accordance with <dt-bindings/interrupt-controller/irq.h>. The following 35 flags are valid: 36 - IRQ_TYPE_LEVEL_LOW 37 - IRQ_TYPE_LEVEL_HIGH 38 - IRQ_TYPE_EDGE_RISING 39 - IRQ_TYPE_EDGE_FALLING 40 - IRQ_TYPE_EDGE_BOTH 41 - gpio-controller : marks the device node as a GPIO controller 42 - #gpio-cells : should be <2>, the first cell is the GPIO offset on this 43 GPIO controller, the second cell is the flags. 44 45- Keypad 46 This keypad is the same on all variants, supporting up to 96 different 47 keys. The linux-specific properties are modeled on those already existing 48 in other input drivers. 49 - compatible : must be "toshiba,tc3589x-keypad" 50 - debounce-delay-ms : debounce interval in milliseconds 51 - keypad,num-rows : number of rows in the matrix, see 52 bindings/input/matrix-keymap.txt 53 - keypad,num-columns : number of columns in the matrix, see 54 bindings/input/matrix-keymap.txt 55 - linux,keymap: the definition can be found in 56 bindings/input/matrix-keymap.txt 57 - linux,no-autorepeat: do no enable autorepeat feature. 58 - wakeup-source: use any event on keypad as wakeup event. 59 (Legacy property supported: "linux,wakeup") 60 61Example: 62 63tc35893@44 { 64 compatible = "toshiba,tc35893"; 65 reg = <0x44>; 66 interrupt-parent = <&gpio6>; 67 interrupts = <26 IRQ_TYPE_EDGE_RISING>; 68 69 interrupt-controller; 70 #interrupt-cells = <1>; 71 72 tc3589x_gpio { 73 compatible = "toshiba,tc3589x-gpio"; 74 interrupts = <0>; 75 76 interrupt-controller; 77 #interrupt-cells = <2>; 78 gpio-controller; 79 #gpio-cells = <2>; 80 }; 81 tc3589x_keypad { 82 compatible = "toshiba,tc3589x-keypad"; 83 interrupts = <6>; 84 debounce-delay-ms = <4>; 85 keypad,num-columns = <8>; 86 keypad,num-rows = <8>; 87 linux,no-autorepeat; 88 linux,keymap = <0x0301006b 89 0x04010066 90 0x06040072 91 0x040200d7 92 0x0303006a 93 0x0205000e 94 0x0607008b 95 0x0500001c 96 0x0403000b 97 0x03040034 98 0x05020067 99 0x0305006c 100 0x040500e7 101 0x0005009e 102 0x06020073 103 0x01030039 104 0x07060069 105 0x050500d9>; 106 wakeup-source; 107 }; 108}; 109