blob: 4f22b2b07dc5efb540514410810ce90aee23e64f [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001* 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 - interrupts : the interrupt on the parent the controller is connected to
19 - interrupt-controller : marks the device node as an interrupt controller
20 - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this
21 TC3589x interrupt controller.
22
23Optional nodes:
24
25- GPIO
26 This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20
27 (other models) GPIO lines.
28 - compatible : must be "toshiba,tc3589x-gpio"
29 - interrupts : interrupt on the parent, which must be the tc3589x MFD device
30 - interrupt-controller : marks the device node as an interrupt controller
31 - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this
32 TC3589x GPIO interrupt controller, the second cell is the interrupt flags
33 in accordance with <dt-bindings/interrupt-controller/irq.h>. The following
34 flags are valid:
35 - IRQ_TYPE_LEVEL_LOW
36 - IRQ_TYPE_LEVEL_HIGH
37 - IRQ_TYPE_EDGE_RISING
38 - IRQ_TYPE_EDGE_FALLING
39 - IRQ_TYPE_EDGE_BOTH
40 - gpio-controller : marks the device node as a GPIO controller
41 - #gpio-cells : should be <2>, the first cell is the GPIO offset on this
42 GPIO controller, the second cell is the flags.
43
44- Keypad
45 This keypad is the same on all variants, supporting up to 96 different
46 keys. The linux-specific properties are modeled on those already existing
47 in other input drivers.
48 - compatible : must be "toshiba,tc3589x-keypad"
49 - debounce-delay-ms : debounce interval in milliseconds
50 - keypad,num-rows : number of rows in the matrix, see
51 bindings/input/matrix-keymap.txt
52 - keypad,num-columns : number of columns in the matrix, see
53 bindings/input/matrix-keymap.txt
54 - linux,keymap: the definition can be found in
55 bindings/input/matrix-keymap.txt
56 - linux,no-autorepeat: do no enable autorepeat feature.
57 - wakeup-source: use any event on keypad as wakeup event.
58 (Legacy property supported: "linux,wakeup")
59
60Example:
61
62tc35893@44 {
63 compatible = "toshiba,tc35893";
64 reg = <0x44>;
65 interrupt-parent = <&gpio6>;
66 interrupts = <26 IRQ_TYPE_EDGE_RISING>;
67
68 interrupt-controller;
69 #interrupt-cells = <1>;
70
71 tc3589x_gpio {
72 compatible = "toshiba,tc3589x-gpio";
73 interrupts = <0>;
74
75 interrupt-controller;
76 #interrupt-cells = <2>;
77 gpio-controller;
78 #gpio-cells = <2>;
79 };
80 tc3589x_keypad {
81 compatible = "toshiba,tc3589x-keypad";
82 interrupts = <6>;
83 debounce-delay-ms = <4>;
84 keypad,num-columns = <8>;
85 keypad,num-rows = <8>;
86 linux,no-autorepeat;
87 linux,keymap = <0x0301006b
88 0x04010066
89 0x06040072
90 0x040200d7
91 0x0303006a
92 0x0205000e
93 0x0607008b
94 0x0500001c
95 0x0403000b
96 0x03040034
97 0x05020067
98 0x0305006c
99 0x040500e7
100 0x0005009e
101 0x06020073
102 0x01030039
103 0x07060069
104 0x050500d9>;
105 wakeup-source;
106 };
107};