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