요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
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>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
AT42QT1050 key와 I2C 속성
1-27Microchip AT42QT1050(QT1050)은 QTouchADC sensor device이며 mode에 따라 key 1~5개를 감지합니다. 다양한 변화 조건에서도 안정적으로 sensing하는 데 필요한 signal processing을 모두 포함하고 output은 완전히 debounce됩니다. Touchkey node는 I2C bus node 안에 둡니다.
필수 `compatible`은 `microchip,qt1050`, `reg`는 device I2C address, `interrupts`는 touchpad IRQ output의 sink이며 `../interrupt-controller/interrupts.txt`를 참조합니다. 선택 `wakeup-source`는 touch key를 wakeup source로 사용할 수 있게 합니다.
각 button은 subnode 하나로 나타냅니다. 명시하지 않은 key 또는 `linux,code = KEY_RESERVED`인 key는 hardware에서 비활성화됩니다. Subnode의 `linux,code`는 내보낼 keycode, `reg`는 0, 1, 2, 3, 4 중 하나인 key number입니다.
QT1050 per-key tuning
28-47선택 subnode property가 없거나 값이 invalid하면 기본값을 사용합니다. `microchip,pre-charge-time-ns`는 mechanical layout에 따른 touchpad precharge time으로 0~637500 범위의 2500 배수이며 기본 0입니다.
`microchip,average-samples`는 read마다 평균할 sample 수로 1, 4, 16, 64, 256, 1024, 4096, 16384 중 하나이며 기본 1입니다. `microchip,average-scaling`은 average-samples에 적용할 scaling factor로 1, 2, 4, 8, 16, 32, 64, 128 중 하나이며 기본 1입니다. `microchip,threshold`는 touch detection을 등록할 count 수로 0~255이고 기본 20입니다.
각 optional subnode property의 허용값과 기본값입니다.
불연속 key 3개 예제
48-78예제 QT1050은 I2C address `0x41`과 GPIO0 falling-edge interrupt 17을 사용합니다. 불연속 key 0, 1, 3만 `KEY_UP`, `KEY_RIGHT`, `KEY_DOWN`으로 정의하여 key 2와 4를 비활성화합니다. Up key는 average 64, scaling 16, precharge 10000 ns, right key는 average 64와 scaling 8, down key는 average 256과 scaling 16을 사용합니다.
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>;
};
};
요약과 해설
microchip,qt1050.txt:1-78불연속 key 구성과 precharge, averaging, threshold를 설명합니다.