hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
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
Microchip AT42QT1050 Five-channel Touch Sensor IC
 
The AT42QT1050 (QT1050) is a QTouchADC sensor device. The device can sense from
one to five keys, dependent on mode. The QT1050 includes all signal processing
functions necessary to provide stable sensing under a wide variety of changing
conditions, and the outputs are fully debounced.
 
The touchkey device node should be placed inside an I2C bus node.
 
Required properties:
- compatible: Must be "microchip,qt1050"
- reg: The I2C address of the device
- interrupts: The sink for the touchpad's IRQ output,
  see ../interrupt-controller/interrupts.txt
 
Optional properties:
- wakeup-source: touch keys can be used as a wakeup source
 
Each button (key) is represented as a sub-node:
 
Each not specified key or key with linux,code set to KEY_RESERVED gets disabled
in HW.
 
Subnode properties:
- linux,code: Keycode to emit.
- reg: The key number. Valid values: 0, 1, 2, 3, 4.
 
Optional subnode-properties:
 
If a optional property is missing or has a invalid value the default value is
taken.
 
- microchip,pre-charge-time-ns:
  Each touchpad need some time to precharge. The value depends on the mechanical
  layout.
  Valid value range: 0 - 637500; values must be a multiple of 2500;
  default is 0.
- microchip,average-samples:
  Number of data samples which are averaged for each read.
  Valid values: 1, 4, 16, 64, 256, 1024, 4096, 16384; default is 1.
- microchip,average-scaling:
  The scaling factor which is used to scale the average-samples.
  Valid values: 1, 2, 4, 8, 16, 32, 64, 128; default is 1.
- microchip,threshold:
  Number of counts to register a touch detection.
  Valid value range: 0 - 255; default is 20.
 
Example:
QT1050 with 3 non continuous keys, key2 and key4 are disabled.
 
touchkeys@41 {
   compatible = "microchip,qt1050";
   reg = <0x41>;
   interrupt-parent = <&gpio0>;
   interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
 
   up@0 {
       reg = <0>;
       linux,code = <KEY_UP>;
       microchip,average-samples = <64>;
       microchip,average-scaling = <16>;
       microchip,pre-charge-time-ns = <10000>;
   };
 
   right@1 {
       reg = <1>;
       linux,code = <KEY_RIGHT>;
       microchip,average-samples = <64>;
       microchip,average-scaling = <8>;
   };
 
   down@3 {
       reg = <3>;
       linux,code = <KEY_DOWN>;
       microchip,average-samples = <256>;
       microchip,average-scaling = <16>;
   };
};