]> rtime.felk.cvut.cz Git - mx1ts.git/commitdiff
upravene printk - zmenen level, AJ, pridana funkce release
authorRadek Pupák <pupakr1@fel.cvut.cz>
Wed, 9 Jul 2008 11:19:23 +0000 (13:19 +0200)
committerRadek Pupák <pupakr1@fel.cvut.cz>
Wed, 9 Jul 2008 11:19:23 +0000 (13:19 +0200)
mx1_ts-driver.c

index 7f6f11da788d4cf98fa1150eade508ca67dce4e9..59d809a4209ea33f9f5c815aacce84b2aa212670 100644 (file)
@@ -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;
        }