hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
* 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;
   };
};