====================================================================
,diff -ur linux-2.6.22/drivers/input/touchscreen/mxc_ts.c
linux-2.6.22/drivers/input/touchscreen/mxc_ts.c
--- linux-2.6.22/drivers/input/touchscreen/mxc_ts.c 2008-06-02
20:40:12.000000000 +0900
+++ linux-2.6.22.android/drivers/input/touchscreen/mxc_ts.c 2008-06-17
18:49:28.000000000 +0900
@@ -38,6 +38,15 @@
#define MXC_TS_NAME "mxc_ts"
+#define X_AXIS_MAX 1000
+#define X_AXIS_MIN 80
+#define Y_AXIS_MAX 1000
+#define Y_AXIS_MIN 80
+#define PRESSURE_MAX 1
+#define PRESSURE_MIN 0
static struct input_dev *mxc_inputdev = NULL;
static u32 input_ts_installed;
@@ -50,15 +59,39 @@
try_to_freeze();
memset(&ts_sample, 0, sizeof(t_touch_screen));
pmic_adc_get_touch_sample(&ts_sample, !wait);
-
+#if 1
+ if((ts_sample.x_position >= X_AXIS_MIN) &&
+ (ts_sample.x_position <= X_AXIS_MAX) &&
+ (ts_sample.y_position >= Y_AXIS_MIN) &&
+ (ts_sample.y_position <= Y_AXIS_MAX)) {
+
+ input_report_abs(mxc_inputdev, ABS_X, ts_sample.x_position);
+ input_report_abs(mxc_inputdev, ABS_Y, ts_sample.y_position);
+ input_report_abs(mxc_inputdev, ABS_PRESSURE,
+ ts_sample.contact_resistance);
+
+ input_report_key(mxc_inputdev,BTN_TOUCH,1);
+ }
+ else {
+ input_report_key(mxc_inputdev,BTN_TOUCH,0);
+ }
+ input_sync(mxc_inputdev);
+
+ wait = ts_sample.contact_resistance;
+ msleep(20);
+#else
input_report_abs(mxc_inputdev, ABS_X, ts_sample.x_position);
input_report_abs(mxc_inputdev, ABS_Y, ts_sample.y_position);
input_report_abs(mxc_inputdev, ABS_PRESSURE,
ts_sample.contact_resistance);
+
input_sync(mxc_inputdev);
wait = ts_sample.contact_resistance;
msleep(20);
+#endif
}
return 0;
@@ -77,6 +110,12 @@
mxc_inputdev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
mxc_inputdev->keybit[LONG(BTN_TOUCH)] |= BIT(BTN_TOUCH);
mxc_inputdev->absbit[0] = BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE);
+ input_set_abs_params(mxc_inputdev,ABS_X,X_AXIS_MIN,X_AXIS_MAX,0,0);
+ input_set_abs_params(mxc_inputdev,ABS_Y,Y_AXIS_MIN,Y_AXIS_MAX,0,0);
+ input_set_abs_params(mxc_inputdev,ABS_PRESSURE,PRESSURE_MIN,PRESSURE_MAX,0,0);
input_register_device(mxc_inputdev);
input_ts_installed = 1;
=======================================================================
BTW I found ipu had some problem.following image is fix image.
diff -ur linux-2.6.22/drivers/mxc/ipu/ipu_common.c
linux-2.6.22/drivers/mxc/ipu/ipu_common.c
--- linux-2.6.22/drivers/mxc/ipu/ipu_common.c 2008-06-02
20:40:13.000000000 +0900
+++ linux-2.6.22.android/drivers/mxc/ipu/ipu_common.c 2008-06-17
18:49:40.000000000 +0900
@@ -588,23 +587,28 @@
if (dma_chan == IDMA_CHAN_INVALID)
return -EINVAL;
-
spin_lock_irqsave(&ipu_lock, lock_flags);