* 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 - 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; }; };