[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 メーリングリストの案内