- 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.txtkeypad,num-columns : number of columns in the matrix, see
bindings/input/matrix-keymap.txtlinux,keymap: the definition can be found in
bindings/input/matrix-keymap.txtlinux,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;
};
};