[Armadillo:09072] Re: Armadillo-800EVA,Tslibのサポートできない問題
馬 国鋒
email@hidden
2013年 7月 26日 (金) 12:44:57 JST
nakai様
MCSの馬です。
ST1232の修正方法で,タッチパネルのタッチ機能は無事実現しました。いろいろありがとうございました。
Tslibの修正方法は余裕な時間ある時試してみたいと思っております。これからもよろしくお願いいたします。
*************************************************
MCS(マイクロコントロールシステムズ株式会社)
技術部開発課
E-Mail : email@hidden
〒384-0414 長野県佐久市下越143
TEL : 0267-81-1311 FAX : 0267-81-1312
*************************************************
-----Original Message-----
From: nakai
Sent: Wednesday, July 24, 2013 6:47 PM
To: Armadillo general discussion list
Subject: [Armadillo:09065] Re: Armadillo-800EVA,Tslibのサポートできない問題
nakaiです。
マルチタッチイベントではなくて、通常のタッチイベントにすることで
tslibを利用できるようにする方法もあります。
linuxカーネルに次のようなパッチをあてることで、
tslibで利用できたと思います。
diff --git a/drivers/input/touchscreen/st1232.c
b/drivers/input/touchscreen/st1232.c
index 4ab3713..170123d 100644
--- a/drivers/input/touchscreen/st1232.c
+++ b/drivers/input/touchscreen/st1232.c
@@ -26,6 +26,8 @@
#include <linux/slab.h>
#include <linux/types.h>
+#define FORCE_SINGLE_EVENT
+
#define ST1232_TS_NAME "st1232-ts"
#define MIN_X 0x00
@@ -100,11 +102,27 @@ static irqreturn_t st1232_ts_irq_handler(int irq, void
*dev_id)
struct input_dev *input_dev = ts->input_dev;
int count = 0;
int i, ret;
+ static int pendown = 0;
ret = st1232_ts_read_data(ts);
if (ret < 0)
goto end;
+#ifdef FORCE_SINGLE_EVENT
+ for (i = 0; i < 1; i++) {
+ if (!finger[i].is_valid) {
+ pendown = 0;
+ input_report_key(input_dev, BTN_TOUCH, 0);
+ input_report_abs(input_dev, ABS_PRESSURE, 0);
+ } else {
+ if (pendown++ == 0)
+ input_report_key(input_dev, BTN_TOUCH, 1);
+ input_report_abs(input_dev, ABS_PRESSURE, 1);
+ input_report_abs(input_dev, ABS_X, finger[i].x);
+ input_report_abs(input_dev, ABS_Y, finger[i].y);
+ }
+ }
+#else
/* multi touch protocol */
for (i = 0; i < MAX_FINGERS; i++) {
if (!finger[i].is_valid)
@@ -120,6 +138,7 @@ static irqreturn_t st1232_ts_irq_handler(int irq, void
*dev_id)
/* SYN_MT_REPORT only if no contact */
if (!count)
input_mt_sync(input_dev);
+#endif
/* SYN_REPORT */
input_sync(input_dev);
@@ -164,9 +183,16 @@ static int __devinit st1232_ts_probe(struct i2c_client
*client,
__set_bit(EV_KEY, input_dev->evbit);
__set_bit(EV_ABS, input_dev->evbit);
+#ifdef FORCE_SINGLE_EVENT
+ input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
+ input_set_abs_params(input_dev, ABS_PRESSURE, 0, 1, 0, 0);
+ input_set_abs_params(input_dev, ABS_X, MIN_X, MAX_X, 0, 0);
+ input_set_abs_params(input_dev, ABS_Y, MIN_Y, MAX_Y, 0, 0);
+#else
input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, MAX_AREA, 0, 0);
input_set_abs_params(input_dev, ABS_MT_POSITION_X, MIN_X, MAX_X, 0, 0);
input_set_abs_params(input_dev, ABS_MT_POSITION_Y, MIN_Y, MAX_Y, 0, 0);
+#endif
error = request_threaded_irq(client->irq, NULL, st1232_ts_irq_handler,
IRQF_ONESHOT, client->name, ts);
(2013年07月24日 18:40), nakai wrote:
> nakaiです。
>
> tslibがマルチタッチイベントに対応していないために、
> 利用できない状態だと思います。
>
> 「tslib multitouch」
> などのキーワードで検索すると、マルチタッチ対応の
> パッチを見つけることができます。
>
> 試してはいませんが、もしかすると利用できるものがあるかもしれません。
> # ↓このような奴です
> #
> ttp://repository.timesys.com/buildsources/t/tslib/tslib-1.0/tslib-1.0-add-multitouch-support.patch
>
>
> 補足情報:
> Armadillo-840 (Debian 7.x)では、mtdevパッケージ[1]を利用しています。
> [1]: http://packages.debian.org/wheezy/libmtdev1
>
> --
> nakai
>
>
>
> (2013年07月24日 18:03), 馬 国鋒 wrote:
>> MCSの馬と申します。
>>
>> Armadillo-800EVAでソフト開発を行なっておりますが、
>> タッチパネルの制御のところで
>> うまく動かせなくて困っている点がございます。
>>
>> 質問内容は下記「参考」のとおりですが、
>> もしわかりましたらご教授頂けると助かります。
>>
>> 参考:
>> 1.動作環境
>> ①ハードウェア
>> Armadillo-800 EVA
>> ②OS
>> プリインストールされているDebian GNU/Linux 6.0
>> ③使用ライブラリ
>> Tslib
>> 2.現象
>> Tslib をインストールして、./ts_calibrate を実行(コマンドライン実
>> 行)しても,タッチパネルが
>> 反応しない。以下のエラーが表示されます。
>> xres= 800, yres = 480 selected device uses is not a touchscreen
>> (must support ABS_X and
>> ABS_Y events)
>> selected device is not a touchscreen I understand
>> 3.その他
>> ①cat /dev/input/event1 またはevtest /dev/input/event1 で動作は確認し
>>
>> た。
>> ②Tslib 環境変数の設定
>> export TSLIB_TSEVENTTYPE=INPUT
>> export TSLIB_CONSOLEDEVICE=none
>> export TSLIB_FBDEVICE=/dev/fb0
>> export TSLIB_TSDEVICE=/dev/input/event1
>> export TSLIB_CALIBFILE=/etc/pointercal
>> export TSLIB_CONFFILE=/etc/ts.conf
>> export TSLIB_PLUGINDIR=/usr/local/lib/ts
>> export LD_LIBRARY_PATH=/usr/local/lib
>> ③Tslib のインストール方法は色々試しました。
>> ・apt-get install tslib
>> ・Tslib のソースをatde4 でクロスコンパイルして作成など
>> 以上、お手数をおかけいたしますがよろしくお願いいたします。
>>
>>
>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
_______________________________________________
armadillo mailing list
email@hidden
http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
armadillo メーリングリストの案内