/* Enable pen touch interrupt. */
value = mx1ts_reg_read(mts, ASP_ICNTLR);
- value |= ASP_EDGE | ASP_PIRQE;
+ value |= /*ASP_POL detekuje zvednuti |*/ ASP_EDGE | ASP_PIRQE;
mx1ts_reg_write(mts, ASP_ICNTLR, value);
+ printk("mx1_touchscreen: aktivuji pen down interrupt \n");
}
static void mx1ts_disable_pen_touch_interrupt(struct mx1ts *mts)
value = mx1ts_reg_read(mts, ASP_ICNTLR);
value &= ~ASP_PIRQE;
mx1ts_reg_write(mts, ASP_ICNTLR, value);
+ printk("mx1_touchscreen: deaktivuji pen down interrupt \n");
}
static void mx1ts_enable_pen_up_interrupt(struct mx1ts *mts)
/* Enable pen up interrupt. XXX: This feature is undocumented. */
value = mx1ts_reg_read(mts, ASP_ICNTLR);
- value |= ASP_PUIE;
+ value |= ASP_PUIE;
mx1ts_reg_write(mts, ASP_ICNTLR, value);
+ printk("mx1_touchscreen: aktivuji penup interrupt \n");
}
static void mx1ts_disable_pen_up_interrupt(struct mx1ts *mts)
value = mx1ts_reg_read(mts, ASP_ICNTLR);
value &= ~ASP_PUIE;
mx1ts_reg_write(mts, ASP_ICNTLR, value);
+ printk("mx1_touchscreen: deaktivuji penup interrupt \n");
}
mts->cal_range_x = mx1ts_reg_read(mts, ASP_PADFIFO) & 0xFFFF;
mts->cal_range_y = mx1ts_reg_read(mts, ASP_PADFIFO) & 0xFFFF;
+ printk(KERN_ERR "Kalibrace cal_auto_zero %i.\n",mts->cal_auto_zero);
+ printk(KERN_ERR "Kalibrace cal_range_x %i.\n",mts->cal_range_x);
+ printk(KERN_ERR "Kalibrace cal_range_y %i.\n",mts->cal_range_y);
+
if ((mts->cal_auto_zero >= mts->cal_range_x) ||
(mts->cal_auto_zero >= mts->cal_range_y)) {
// Invalid data.
printk(KERN_ERR "Invalid data.\n");
+ mx1ts_flush_fifo(mts);
mx1ts_start_auto_calibration(mts);
return IRQ_NONE; /* return IRQ_HANDLED; */
}
mts->cal_range_x -= mts->cal_auto_zero;
mts->cal_range_y -= mts->cal_auto_zero;
- printk(KERN_ERR "Kalibrace cal_auto_zero %i.\n",mts->cal_auto_zero);
- printk(KERN_ERR "Kalibrace cal_range_x %i.\n",mts->cal_range_x);
- printk(KERN_ERR "Kalibrace cal_range_y %i.\n",mts->cal_range_y);
+
value = mx1ts_reg_read(mts, ASP_ACNTLCR);
value &= ~0x04000000; // Undocumented.
static void mx1ts_enable_pen_up_irq(struct mx1ts *mts)
{
unsigned int value;
- printk(KERN_ERR "Pen up irq.\n");
+ printk(KERN_ERR "enabling pen up irq.\n");
value = mx1ts_reg_read(mts, ASP_ICNTLR);
value |= ASP_PUIE;
{
struct mx1ts *mts = (struct mx1ts *) dev_id;
- printk(KERN_ERR "Prijat touch irq \n");
+ printk(KERN_ERR "Prijat touch down irq \n");
/* Clear the interrupt. */
mx1ts_reg_set_mask(mts, ASP_ISTATR, ASP_PEN);
mx1ts_reset_asp(mts);
printk("<1>mx1ts: reset\tOK\n");
- mx1ts_enable_pen_touch_interrupt(mts);
- printk("<1>mx1ts: zapnuti touch interrupt\n");
return 0;
}
{
struct mx1ts *mts = dev_get_drvdata(idev->dev.parent);
mts->is_open = 0;
+ mx1ts_reset_asp(mts);
+ printk("<1>mx1ts: reset\tOK\n");
+ mx1ts_disable_pen_touch_interrupt(mts);
+ mx1ts_disable_pen_up_interrupt(mts);
+
}
static int mx1ts_open(struct input_dev *idev)
{
struct mx1ts *mts = dev_get_drvdata(idev->dev.parent);
mts->is_open = 1;
+
+ mx1ts_enable_pen_touch_interrupt(mts);
+ printk("<1>mx1ts: zapnuti touch interrupt\n");
return 0;
}
-
static int mx1ts_remove(struct platform_device *dev)
{
struct mx1ts *mts = platform_get_drvdata(dev);
BUG_ON(mts == NULL);
-
+
free_irq(ASP_PENDATA_IRQ, mts);
free_irq(ASP_TOUCH_IRQ, mts);
- iounmap(mts->mx1ts_mem);
- release_mem_region(ASP_BASE_ADDR, 0x40);
-
input_free_device(mts->ts_idev);
+
+ iounmap(mts->mx1ts_mem);
+ release_mem_region(ASP_BASE_ADDR, 0x38);
+
kfree(mts);
printk("<1> Removing driver \tOK\n");