};
-static int MX1TS_presed = 0;
static int MX1TS_lastx = 0;
static int MX1TS_lasty = 0;
/* Enable pen touch interrupt. */
value = mx1ts_reg_read(mts, ASP_ICNTLR);
value &= ~ASP_PIRQE;
- value = 0; /* TODO tohle se musi smazat*/
mx1ts_reg_write(mts, ASP_ICNTLR, value);
printk(KERN_DEBUG "mx1_touchscreen: pen_touch: deaktivating pen_down interrupt \n");
}
input_report_abs(idev, ABS_Y, y);
/*input_report_abs(idev, ABS_PRESSURE, p);*/
input_report_abs(idev, ABS_PRESSURE, 1);
+ MX1TS_lastx = x;
+ MX1TS_lasty = y;
input_sync(idev);
}
-static void mx1ts_evt_add_up(struct input_dev *idev, u16 x, u16 y)
+static void mx1ts_evt_add_up(struct input_dev *idev)
{
- input_report_abs(idev, ABS_X, x);
- input_report_abs(idev, ABS_Y, y);
+ input_report_abs(idev, ABS_X, MX1TS_lastx);
+ input_report_abs(idev, ABS_Y, MX1TS_lasty);
input_report_abs(idev, ABS_PRESSURE, 0);
/*input_report_key(idev, BTN_TOUCH, 0);*/
input_sync(idev);
}
-static void mx1ts_evt_add(struct input_dev *idev, u8 p , u16 x, u16 y)
-{
- if((x < 7900 || x > 8900) && (y < 7751 || y > 10900)) {
- MX1TS_presed = 1;
- MX1TS_lastx = x;
- MX1TS_lasty = y;
- mx1ts_evt_add_touch(idev,p, x, y); /* TODO opravit pen_up pen_down zrejme chyba HW ??? TODO */
-
-
- } else {
- if(MX1TS_presed == 1) {
- MX1TS_presed = 0;
- mx1ts_evt_add_up(idev, MX1TS_lastx, MX1TS_lasty);
- }
- }
-}
-
/*
* Handle the pen data ready interrupt, generated when pen data is
* in the FIFO.
/*printk(KERN_DEBUG "mx1_touchscreen mx1ts_pendata_irq \n");*/
/* printk(KERN_DEBUG "mx1_touchscreen: mx1_pendata_irq interrupt recived from struct %p\n", mts);*/
- if (mx1ts_reg_read(mts, ASP_ISTATR) & ASP_PUIS) { /*pen up interupt pending*/
- mx1ts_reg_set_mask(mts, ASP_ISTATR, ASP_PUIS); /*clearing pen up interupt*/
+ if (mx1ts_reg_read(mts, ASP_ISTATR) & ASP_PUIS) { /*pen up interupt pending*/
+ mx1ts_reg_set_mask(mts, ASP_ISTATR, ASP_PUIS); /*clearing pen up interupt*/
mx1ts_disable_auto_sample(mts);
mx1ts_disable_pen_up_interrupt(mts);
mx1ts_enable_pen_touch_interrupt(mts);
if(mts->is_open) /*report last known touch*/
- mx1ts_evt_add_up(mts->ts_idev, 100, 100);
+ mx1ts_evt_add_up(mts->ts_idev);
printk(KERN_DEBUG "Pen up interrupt.\n");
mx1ts_flush_fifo(mts);
// generated as long as there is data in the FIFO.
if ((mx1ts_reg_read(mts, ASP_ISTATR) & ASP_PDR) != ASP_PDR) {
- return IRQ_NONE; /* TODO je to tak? */
+ return IRQ_NONE;
}
auto_zero = mx1ts_reg_read(mts, ASP_PADFIFO);
mts->cal_range_y);
if(mts->is_open)
- mx1ts_evt_add(mts->ts_idev, 200 , pen_x, pen_y);
+ mx1ts_evt_add_touch(mts->ts_idev, 200 , pen_x, pen_y);
}
return IRQ_HANDLED;
}
{
struct mx1ts *mts = (struct mx1ts *) dev_id;
- printk(KERN_DEBUG "mx1 touchscreen: Touch down interrupt \n");
+ printk(KERN_ERR "mx1 touchscreen: Touch down interrupt \n");
/* Clear the interrupt. */
mx1ts_reg_set_mask(mts, ASP_ISTATR, ASP_PEN);
-static int mx1ts_on(struct mx1ts *mts)
+static int mx1ts_on(struct mx1ts *mts) /*TODO doplnit pri chybach*/
{
int ret = 0;
mts->mx1ts_mem = ioremap ( ASP_BASE_ADDR, 0x38);
+ if(!mts->mx1ts_mem) {
+ printk(KERN_ERR "mx1 touchscreen: ioremap \tFAILED\n");
+ return -1;
+ }
+
printk(KERN_DEBUG "mx1 touchscreen: memory remaped on %p \n", mts->mx1ts_mem);
printk(KERN_DEBUG "mx1ts: setting idev struct \tOK\n");
- x_res = 60000;
+ x_res = 60000; /*TODO neni mozne zmerit ? */
y_res = 60000;
printk(KERN_DEBUG "mx1ts: x/y = %d/%d\n", x_res, y_res);