From 50fc0d0f3bda43f9d10e7a9a34186d95b6579a00 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Radek=20Pup=C3=A1k?= Date: Wed, 9 Jul 2008 13:19:23 +0200 Subject: [PATCH] upravene printk - zmenen level, AJ, pridana funkce release --- mx1_ts-driver.c | 114 ++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 62 deletions(-) diff --git a/mx1_ts-driver.c b/mx1_ts-driver.c index 7f6f11d..59d809a 100644 --- a/mx1_ts-driver.c +++ b/mx1_ts-driver.c @@ -206,7 +206,7 @@ static inline void mx1ts_reg_clear_mask(struct mx1ts *mts , unsigned int reg, u3 static inline void mx1ts_reg_write(struct mx1ts *mts, unsigned int reg, unsigned int val) { __raw_writel(val, mts->mx1ts_mem+reg); - printk(KERN_ERR "mx1_touchscreen: zapisuji do : %p hodnotu %x\n",mts->mx1ts_mem+reg, val); + printk(KERN_DEBUG "mx1_touchscreen: writing into : %p value %x\n",mts->mx1ts_mem+reg, val); } @@ -215,7 +215,7 @@ static inline unsigned int mx1ts_reg_read(struct mx1ts *mts, unsigned int reg) unsigned int out; out = __raw_readl( mts->mx1ts_mem + reg ); - /*printk(KERN_ERR "mx1_touchscreen: ctu z %p : %d \n",mts->mx1ts_mem + reg, out);*/ + /*printk(KERN_DEBUG "mx1_touchscreen: reading from %p : %d \n",mts->mx1ts_mem + reg, out);*/ return out; } @@ -291,7 +291,7 @@ static void mx1ts_enable_pen_touch_interrupt(struct mx1ts *mts) value |= ASP_EDGE | /*ASP_POL |*/ ASP_PIRQE; mx1ts_reg_write(mts, ASP_ICNTLR, value); - printk(KERN_ERR "mx1_touchscreen pen_touch: aktivuji pen down interrupt \n"); + printk(KERN_DEBUG "mx1_touchscreen: pen_touch: activating pen_down interrupt \n"); } static void mx1ts_disable_pen_touch_interrupt(struct mx1ts *mts) @@ -303,7 +303,7 @@ static void mx1ts_disable_pen_touch_interrupt(struct mx1ts *mts) value &= ~ASP_PIRQE; value = 0; /* TODO tohle se musi smazat*/ mx1ts_reg_write(mts, ASP_ICNTLR, value); - printk(KERN_ERR "mx1_touchscreen pen_touch: deaktivuji pen down interrupt \n"); + printk(KERN_DEBUG "mx1_touchscreen: pen_touch: deaktivating pen_down interrupt \n"); } static void mx1ts_enable_pen_up_interrupt(struct mx1ts *mts) @@ -313,7 +313,7 @@ static void mx1ts_enable_pen_up_interrupt(struct mx1ts *mts) value = mx1ts_reg_read(mts, ASP_ICNTLR); value |= ASP_PUIE; mx1ts_reg_write(mts, ASP_ICNTLR, value); - printk(KERN_ERR "mx1_touchscreen pen_up: aktivuji pen up interrupt \n"); + printk(KERN_DEBUG "mx1_touchscreen: pen_up: activating pen_up interrupt \n"); } static void mx1ts_disable_pen_up_interrupt(struct mx1ts *mts) @@ -324,7 +324,7 @@ 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(KERN_ERR "mx1_touchscreen pen_up: deaktivuji pen up interrupt \n"); + printk(KERN_DEBUG "mx1_touchscreen: pen_up: deaktivating pen_up interrupt \n"); } @@ -332,7 +332,7 @@ static void mx1ts_disable_pen_up_interrupt(struct mx1ts *mts) static void mx1ts_start_auto_calibration(struct mx1ts *mts) { unsigned int value; - printk(KERN_ERR "mx1_touchscreen start_auto_calibration \n"); + printk(KERN_DEBUG "mx1_touchscreen: start_auto_calibration \n"); mts->auto_calibration = 1; @@ -449,8 +449,8 @@ static irqreturn_t mx1ts_pendata_irq(int irq, void *dev_id) mx1_cal_range_x = 1; mx1_cal_range_y = 1; - /*printk(KERN_ERR "mx1_touchscreen mx1ts_pendata_irq \n");*/ -/* printk(KERN_ERR "mx1_touchscreen: mx1_pendata_irq interrupt recived from struct %p\n", mts);*/ + /*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*/ @@ -461,7 +461,7 @@ static irqreturn_t mx1ts_pendata_irq(int irq, void *dev_id) if(mts->is_open) /*report last known touch*/ mx1ts_evt_add_up(mts->ts_idev, 100, 100); - printk(KERN_ERR "Pen up interrupt.\n"); + printk(KERN_DEBUG "Pen up interrupt.\n"); mx1ts_flush_fifo(mts); return IRQ_HANDLED; @@ -474,19 +474,18 @@ static irqreturn_t mx1ts_pendata_irq(int irq, void *dev_id) 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"); + printk(KERN_INFO "Invalid calibration data. Recalibrating. \n"); mx1ts_flush_fifo(mts); /*if there are some older data*/ mx1ts_start_auto_calibration(mts); - return IRQ_NONE; /* return IRQ_HANDLED; */ + return IRQ_HANDLED; /*return IRQ_NONE;*/ } + printk(KERN_DEBUG "mx1 touchscreen: calibration cal_auto_zero %i.\n",mts->cal_auto_zero); + printk(KERN_DEBUG "mx1 touchscreen: calibration cal_range_x %i.\n",mts->cal_range_x); + printk(KERN_DEBUG "mx1 touchscreen: calibration cal_range_y %i.\n",mts->cal_range_y); mts->cal_range_x -= mts->cal_auto_zero; mts->cal_range_y -= mts->cal_auto_zero; @@ -538,7 +537,7 @@ static irqreturn_t mx1ts_touch_irq(int irq, void *dev_id) { struct mx1ts *mts = (struct mx1ts *) dev_id; - printk(KERN_ERR "Prijat touch down irq \n"); + printk(KERN_DEBUG "mx1 touchscreen: Touch down interrupt \n"); /* Clear the interrupt. */ mx1ts_reg_set_mask(mts, ASP_ISTATR, ASP_PEN); @@ -554,13 +553,14 @@ static irqreturn_t mx1ts_touch_irq(int irq, void *dev_id) static inline int mx1ts_enable_irqs(struct mx1ts *mts) //zaregistruje preruseni { int result; +//TODO printk(KERN_ERR "enabling irq %d.\n",mts->ts_idev->dev.parent.resource[1]->start); result = request_irq(ASP_PENDATA_IRQ, mx1ts_pendata_irq, - /*IRQF_*/ 0, + 0, DEV_IRQ_ID, mts); if (result) { - printk(KERN_ERR "Couldn't request pen data IRQ.\n"); + printk(KERN_ERR "mx1 touchscreen: Couldn't request pen data IRQ.\n"); return result; } @@ -570,7 +570,7 @@ static inline int mx1ts_enable_irqs(struct mx1ts *mts) //zaregistruje preruseni DEV_IRQ_ID, mts); if (result) { - printk(KERN_ERR "Couldn't request pen touch IRQ.\n"); + printk(KERN_ERR "mx1 touchscreen: Couldn't request pen touch IRQ.\n"); free_irq(ASP_PENDATA_IRQ, mts); return result; } @@ -584,26 +584,26 @@ static int mx1ts_on(struct mx1ts *mts) int ret = 0; if(!request_mem_region(ASP_BASE_ADDR, 0x38 , "mx1ts")) { - printk(KERN_ERR "mx1ts: request_mem_region \tFAILED\n"); + printk(KERN_ERR "mx1 touchscreen: request_mem_region \tFAILED\n"); return -1; } - printk(KERN_ERR "mx1ts: request_mem_region \tOK\n"); + printk(KERN_DEBUG "mx1 touchscreen: request_mem_region \tOK\n"); mts->mx1ts_mem = ioremap ( ASP_BASE_ADDR, 0x38); - printk(KERN_ERR "mx1ts: memory remaped on %p \n", mts->mx1ts_mem); + printk(KERN_DEBUG "mx1 touchscreen: memory remaped on %p \n", mts->mx1ts_mem); - printk(KERN_ERR "mx1ts: enabling irqs\n"); + /*printk(KERN_DEBUG "mx1 touchscreen: enabling irqs\n");*/ if ((ret = mx1ts_enable_irqs(mts))) return ret; - printk(KERN_ERR "mx1ts: irqs enabled \tOK\n"); + printk(KERN_DEBUG "mx1 touchscreen: irqs enabled \tOK\n"); mx1ts_reset_asp(mts); - printk(KERN_ERR "mx1ts: reset\tOK\n"); + printk(KERN_DEBUG "mx1 touchscreen: reset\tOK\n"); return 0; } @@ -614,7 +614,7 @@ static void mx1ts_close(struct input_dev *idev) mts->is_open = 0; mx1ts_flush_fifo(mts); mx1ts_reset_asp(mts); - printk(KERN_ERR "mx1ts: reset\tOK\n"); + printk(KERN_DEBUG "mx1 touchscreen: reset\tOK\n"); mx1ts_disable_pen_touch_interrupt(mts); mx1ts_disable_pen_up_interrupt(mts); @@ -626,7 +626,7 @@ static int mx1ts_open(struct input_dev *idev) mts->is_open = 1; mx1ts_flush_fifo(mts); /*if there are some older data*/ mx1ts_enable_pen_touch_interrupt(mts); - printk(KERN_ERR "mx1ts: zapnuti touch interrupt\n"); + printk(KERN_DEBUG "mx1 touchscreen: touch_down interupt enabled\n"); return 0; } @@ -642,7 +642,7 @@ static int mx1ts_probe(struct platform_device *dev) idev = input_allocate_device(); if (!mts || !idev) { error = -ENOMEM; - printk(KERN_ERR "mx1ts: failed allocate memory for struct mx1ts or idev\n"); + printk(KERN_ERR "mx1 touchscreen: failed allocate memory for struct mx1ts or idev\n"); goto err_free_devs; return error; } @@ -650,44 +650,24 @@ static int mx1ts_probe(struct platform_device *dev) mx1ts_on(mts); /* remaping registers, reseting device */ mts->ts_idev = idev; - //ucb->adcsync = adcsync; - //ucb->ac97 = to_ac97_t(dev); init_waitqueue_head(&mts->ts_wait); -/* id = mx1ts_reg_read(ucb, UCB_ID); - if (id != UCB_ID_1400) { - error = -ENODEV; - goto err_free_devs; - } - - error = mx1ts_detect_irq(ucb); - if (error) { - printk(KERN_ERR "UCB1400: IRQ probe failed\n"); - goto err_free_devs; - } - - error = request_irq(ucb->irq, mx1ts_hard_irq, IRQF_TRIGGER_RISING, - "UCB1400", ucb); - if (error) { - printk(KERN_ERR "mx1ts: unable to grab irq%d: %d\n", - ucb->irq, error); - goto err_free_devs; - } - printk(KERN_DEBUG "UCB1400: found IRQ %d\n", ucb->irq);*/ - //input_set_drvdata(idev, mts); /*moznost ulozit ukazatel na trukturu do input_driver*/ platform_set_drvdata(dev, mts); idev->dev.parent = &dev->dev; idev->name = "MX1 touchscreen interface"; + idev->phys = "mx1ts/input0"; //dodano idev->id.vendor = (unsigned int) 345; /*mx1ts_reg_read(mx1_ts, AC97_VENDOR_ID1);*/ idev->id.product = (unsigned int) 354; /*id;*/ + idev->id.version = 0x0100; //dodano + idev->id.bustype = BUS_HOST; idev->open = mx1ts_open; idev->close = mx1ts_close; idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); - printk(KERN_ERR "mx1ts: setting idev struct \tOK\n"); + printk(KERN_DEBUG "mx1ts: setting idev struct \tOK\n"); x_res = 60000; y_res = 60000; @@ -695,20 +675,20 @@ static int mx1ts_probe(struct platform_device *dev) input_set_abs_params(idev, ABS_X, 0, x_res, 0, 0); input_set_abs_params(idev, ABS_Y, 0, y_res, 0, 0); - input_set_abs_params(idev, ABS_PRESSURE, 0, 20000, 0, 0); + input_set_abs_params(idev, ABS_PRESSURE, 0, 1, 0, 0); error = input_register_device(idev); if (error) { - printk(KERN_ERR "mx1ts: error while register input device\n"); + printk(KERN_ERR "mx1 touchscreen: error while register input device\n"); goto err_free_devs; } - printk(KERN_ERR "mx1ts: input device registered \tOK\n"); + printk(KERN_DEBUG "mx1ts: input device registered \tOK\n"); return 0; err_free_devs: - printk(KERN_ERR "mx1ts: error in device probe \n"); + printk(KERN_ERR "mx1 touchscreen: error in device probe \n"); /*input_free_device(idev);*/ kfree(mts); return error; @@ -721,22 +701,22 @@ static int mx1ts_remove(struct platform_device *dev) { struct mx1ts *mts = platform_get_drvdata(dev); - BUG_ON(mts == NULL); + //BUG_ON(mts == NULL); free_irq(ASP_PENDATA_IRQ, mts); free_irq(ASP_TOUCH_IRQ, mts); /*input_free_device(mts->ts_idev); - printk(KERN_ERR "Free device \tOK\n");*/ + printk(KERN_DEBUG "Free device \tOK\n");*/ input_unregister_device(mts->ts_idev); - printk(KERN_ERR "Unregister device \tOK\n"); + printk(KERN_INFO "mx1 touchscreen: Unregister device \tOK\n"); iounmap(mts->mx1ts_mem); release_mem_region(ASP_BASE_ADDR, 0x38); kfree(mts); - printk(KERN_ERR "Removing driver \tOK\n"); + printk(KERN_INFO "mx1 touchscreen: Removing driver \tOK\n"); return 0; } @@ -777,11 +757,21 @@ static struct resource mx1ts_resources[] = { }, }; +void mx1ts_device_release(struct device *dev) { + /*struct platform_device *pdev = to_platform_device(dev); + release_resource(&dev->res); + kfree(pdev); + }*/ +} + static struct platform_device mx1ts_device = { .name = "mx1ts", .id = 0, .num_resources = ARRAY_SIZE(mx1ts_resources), .resource = mx1ts_resources, + .dev = { + .release = mx1ts_device_release, + }, }; @@ -793,7 +783,7 @@ static int __init mx1ts_init(void) int error; error = platform_device_register(&mx1ts_device); if(error) { - printk(KERN_ERR "PiMX1_touchsceen: device registration failed\n"); + printk(KERN_ERR "mx1 touchscreen: device registration failed\n"); return error; } -- 2.39.2