I tried the patch and it's not better...
should i modify the driver tsc2102_ts.c and compile my kernel again?
that's my driver:
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/kbd_kern.h>
#include <linux/spi/tsc2102.h>
#define DRIVER_NAME "TSC210x Touchscreen"
struct input_dev *dev;
static void tsc210x_touch(int touching)
{
if (!touching) {
input_report_abs(dev, ABS_X, 0);
input_report_abs(dev, ABS_Y, 0);
input_report_abs(dev, ABS_PRESSURE, 0);
input_sync(dev);
}
input_report_key(dev, BTN_TOUCH, touching);
//do_poke_blanked_console = 1;
}
static void tsc210x_coords(int x, int y, int z1, int z2)
{
int p;
/* Calculate the touch resistance a la equation #1 */
if (z1 != 0)
p = x * (z2 - z1) / (z1 << 4);
else
p = 1;
input_report_abs(dev, ABS_X, x);
input_report_abs(dev, ABS_Y, y);
input_report_abs(dev, ABS_PRESSURE, p);
input_sync(dev);
}
static int tsc210x_ts_probe(struct platform_device *pdev)
{
int status;
dev = input_allocate_device();
if (!dev)
return -ENOMEM;
status = tsc210x_touch_cb(tsc210x_touch);
if (status) {
goto error;
}
status = tsc210x_coords_cb(tsc210x_coords);
if (status) {
goto error;
}
dev->name = DRIVER_NAME;
dev->dev.parent = &pdev->dev;
dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
dev->keybit[BIT_WORD(BTN_TOUCH)] |= BIT_MASK(BTN_TOUCH);
dev->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | BIT_MASK
(ABS_PRESSURE);
status = input_register_device(dev);
if (status) {
printk(KERN_INFO "Unable to register TSC210x as input device
!\n");
goto error;
}
printk(DRIVER_NAME " driver initialized\n");
return 0;
error:
input_free_device(dev);
return status;
}
static int tsc210x_ts_remove(struct platform_device *pdev)
{
tsc210x_touch_cb(0);
tsc210x_coords_cb(0);
input_unregister_device(dev);
return 0;
}
static int
tsc210x_ts_suspend(struct platform_device *pdev, pm_message_t state)
{
/* Nothing yet */
return 0;
}
static int tsc210x_ts_resume(struct platform_device *pdev)
{
/* Nothing either */
return 0;
}
static struct platform_driver tsc210x_ts_driver = {
.probe = tsc210x_ts_probe,
.remove = tsc210x_ts_remove,
.suspend = tsc210x_ts_suspend,
.resume = tsc210x_ts_resume,
.driver = {
.name = "tsc210x-ts",
},
};
static int __init tsc210x_ts_init(void)
{
int ret;
ret = platform_driver_register(&tsc210x_ts_driver);
if (ret)
return -ENODEV;
return 0;
}
static void __exit tsc210x_ts_exit(void)
{
platform_driver_unregister(&tsc210x_ts_driver);
}
module_init(tsc210x_ts_init);
module_exit(tsc210x_ts_exit);
MODULE_AUTHOR("Andrzej Zaborowski");
MODULE_DESCRIPTION("Touchscreen input driver for TI TSC210x.");
MODULE_LICENSE("GPL");
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---