私はFriendlyarmのNanopi 2 Fireを使用しました。 GT911 Goodixタッチスクリーンを使いたいです。 6本のピンがあります。 1つはリセット(GPIOの1つに接続)、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
Linuxで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が正しくリセットされ、リセット中に設定したアドレスが提供されていることを確認してください。