Goodix tp는 I2C를 지원하지 않습니다.

Goodix tp는 I2C를 지원하지 않습니다.

저는 Friendlyarm의 Nanopi 2 Fire를 사용했습니다. GT911 Goodix 터치스크린을 사용하고 싶습니다. 6개의 핀이 있습니다. 1개는 재설정(GPIO 중 하나에 연결), 2개는 vdd3.3V, 3개는 GND, 4개는 irq(gpioc11에 연결), SDA 및 SCL(핀 3에 연결) I2C-0과 같은 5개). 이 소스 코드를 사용하여 goodix 터치 스크린을 활성화하기 위해 Linux 커널 4.4.y를 다운로드했습니다.

git clone https://github.com/friendlyarm/linux.git -b nanopi2-v4.4.y --depth 1

커널에서 goodix를 모듈로 활성화하고 따랐습니다.페이지커널을 컴파일하고 마지막으로 파일을 SD에 복사합니다. (make 명령을 실행하여 zimage 및 dtb 파일을 부팅 SD에 복사합니다.) 이 코드를 실행하면:

root@NanoPi2-Fire:/# find -iname goodix*
./sys/bus/i2c/drivers/Goodix-TS
./sys/firmware/devicetree/base/soc/i2c@c00a6000/goodix_ts@5d
./sys/firmware/devicetree/base/soc/i2c@c00a6000/goodix_ts@5d/goodix,irq-gpio    

i2c를 감지하려면 다음이 필요합니다.

root@NanoPi2-Fire:~# ls -l /sys/bus/i2c/devices/i2c*
lrwxrwxrwx 1 root root 0 Jan  1  1970 /sys/bus/i2c/devices/i2c-0 -> ../../../devices/platform/c0000000.soc/c00a4000.i2c/i2c-0
lrwxrwxrwx 1 root root 0 Jan  1  1970 /sys/bus/i2c/devices/i2c-1 -> ../../../devices/platform/c0000000.soc/c00a5000.i2c/i2c-1
lrwxrwxrwx 1 root root 0 Jan  1  1970 /sys/bus/i2c/devices/i2c-2 -> ../../../devices/platform/c0000000.soc/c00a6000.i2c/i2c-2
lrwxrwxrwx 1 root root 0 Jan  1  1970 /sys/bus/i2c/devices/i2c-3 -> ../../../devices/platform/c0000000.soc/c0000000.soc:i2c@3/i2c-3

그리고:

root@NanoPi2-Fire:/# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@NanoPi2-Fire:/# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@NanoPi2-Fire:/# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 
30: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@NanoPi2-Fire:/# i2cdetect -y 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --      
modprobe goodix_ts
modprobe: FATAL: Module goodix_ts not found in directory /lib/modules/4.4.49-s5p4418

리눅스에서 gt911을 어떻게 사용하나요?

답변1

커널의 장치 트리(dts)에 다음과 같은 항목을 추가해야 합니다.

&i2c1 { /* Use the correct name of the bus you're device is on */

 - other dts code here -

    gt911: touchscreen@14 {
            compatible = "goodix,gt911";
            reg = <0x14>;
            interrupt-parent = <&gpioc>; /* Use the correct gpio controller here */
            interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
            irq-gpios = <&gpioc 11 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpioc ? GPIO_ACTIVE_LOW>; /* Use the correct gpio controller and pin */
    };

 - other dts code here -

};

여기에서 장치 트리 바인딩을 참조하세요. https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/input/touchscreen/goodix.txt

드라이버가 IRQ 및 RESET 핀을 모두 제어할 수 있으면 장치 트리에 제공한 주소에 맞게 칩이 자동으로 구성됩니다. (올바른 INT 레벨 세트로 gt911을 재설정하고 라인을 다시 입력으로 전환하여 이를 수행합니다.) 위의 경우 0x14이고 사용 가능한 다른 주소는 0x5d입니다.

참고: 단방향 INT 라인이 있는 경우: 단방향 신호만 있는 경우(예: 신호 사이에 버퍼 사용) 드라이버를 통해 리셋 라인을 사용하는 것이 어려운 요구 사항은 아닙니다. GT911이 올바르게 재설정되고 재설정 중에 구성한 주소를 제공하는지 확인하십시오.

관련 정보