Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 15 Sep 2009 00:56:51 +0000 (17:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 15 Sep 2009 00:56:51 +0000 (17:56 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (52 commits)
  Input: bcm5974 - silence uninitialized variables warnings
  Input: wistron_btns - add keymap for AOpen 1557
  Input: psmouse - use boolean type
  Input: i8042 - use platform_driver_probe
  Input: i8042 - use boolean type where it makes sense
  Input: i8042 - try disabling and re-enabling AUX port at close
  Input: pxa27x_keypad - allow modifying keymap from userspace
  Input: sunkbd - fix formatting
  Input: i8042 - bypass AUX IRQ delivery test on laptops
  Input: wacom_w8001 - simplify querying logic
  Input: atkbd - allow setting force-release bitmap via sysfs
  Input: w90p910_keypad - move a dereference below a NULL test
  Input: add twl4030_keypad driver
  Input: matrix-keypad - add function to build device keymap
  Input: tosakbd - fix cleaning up KEY_STROBEs after error
  Input: joydev - validate axis/button maps before clobbering current ones
  Input: xpad - add USB ID for the drumkit controller from Rock Band
  Input: w90p910_keypad - rename driver name to match platform
  Input: add new driver for Sentelic Finger Sensing Pad
  Input: psmouse - allow defining read-only attributes
  ...

1  2 
drivers/input/touchscreen/w90p910_ts.c

index 937dfe4e9b12a25db1adacac19be628f686944ab,dc4c9d6b67c782f4fafe9725980a48fbf57a1555..6ccbdbbf33fec2725fc9495b0271af7aa82b81f5
@@@ -13,6 -13,7 +13,7 @@@
  #include <linux/module.h>
  #include <linux/platform_device.h>
  #include <linux/io.h>
+ #include <linux/clk.h>
  #include <linux/input.h>
  #include <linux/interrupt.h>
  
@@@ -47,8 -48,8 +48,8 @@@ enum ts_state 
  struct w90p910_ts {
        struct input_dev *input;
        struct timer_list timer;
+       struct clk *clk;
        int irq_num;
-       void __iomem *clocken;
        void __iomem *ts_reg;
        spinlock_t lock;
        enum ts_state state;
@@@ -166,8 -167,7 +167,7 @@@ static int w90p910_open(struct input_de
        unsigned long val;
  
        /* enable the ADC clock */
-       val = __raw_readl(w90p910_ts->clocken);
-       __raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
+       clk_enable(w90p910_ts->clk);
  
        __raw_writel(ADC_RST1, w90p910_ts->ts_reg);
        msleep(1);
@@@ -211,8 -211,7 +211,7 @@@ static void w90p910_close(struct input_
        del_timer_sync(&w90p910_ts->timer);
  
        /* stop the ADC clock */
-       val = __raw_readl(w90p910_ts->clocken);
-       __raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
+       clk_disable(w90p910_ts->clk);
  }
  
  static int __devinit w90x900ts_probe(struct platform_device *pdev)
                goto fail1;
        }
  
-       if (!request_mem_region(res->start, res->end - res->start + 1,
+       if (!request_mem_region(res->start, resource_size(res),
                                pdev->name)) {
                err = -EBUSY;
                goto fail1;
        }
  
-       w90p910_ts->ts_reg = ioremap(res->start, res->end - res->start + 1);
+       w90p910_ts->ts_reg = ioremap(res->start, resource_size(res));
        if (!w90p910_ts->ts_reg) {
                err = -ENOMEM;
                goto fail2;
        }
  
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       if (!res) {
-               err = -ENXIO;
+       w90p910_ts->clk = clk_get(&pdev->dev, NULL);
+       if (IS_ERR(w90p910_ts->clk)) {
+               err = PTR_ERR(w90p910_ts->clk);
                goto fail3;
        }
  
-       w90p910_ts->clocken = (void __iomem *)res->start;
        input_dev->name = "W90P910 TouchScreen";
        input_dev->phys = "w90p910ts/event0";
        input_dev->id.bustype = BUS_HOST;
        if (request_irq(w90p910_ts->irq_num, w90p910_ts_interrupt,
                        IRQF_DISABLED, "w90p910ts", w90p910_ts)) {
                err = -EBUSY;
-               goto fail3;
+               goto fail4;
        }
  
        err = input_register_device(w90p910_ts->input);
        if (err)
-               goto fail4;
+               goto fail5;
  
        platform_set_drvdata(pdev, w90p910_ts);
  
        return 0;
  
- fail4:        free_irq(w90p910_ts->irq_num, w90p910_ts);
+ fail5:        free_irq(w90p910_ts->irq_num, w90p910_ts);
+ fail4:        clk_put(w90p910_ts->clk);
  fail3:        iounmap(w90p910_ts->ts_reg);
- fail2:        release_mem_region(res->start, res->end - res->start + 1);
+ fail2:        release_mem_region(res->start, resource_size(res));
  fail1:        input_free_device(input_dev);
        kfree(w90p910_ts);
        return err;
@@@ -311,8 -309,10 +309,10 @@@ static int __devexit w90x900ts_remove(s
        del_timer_sync(&w90p910_ts->timer);
        iounmap(w90p910_ts->ts_reg);
  
+       clk_put(w90p910_ts->clk);
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, res->end - res->start + 1);
+       release_mem_region(res->start, resource_size(res));
  
        input_unregister_device(w90p910_ts->input);
        kfree(w90p910_ts);
@@@ -326,7 -326,7 +326,7 @@@ static struct platform_driver w90x900ts
        .probe          = w90x900ts_probe,
        .remove         = __devexit_p(w90x900ts_remove),
        .driver         = {
 -              .name   = "w90x900-ts",
 +              .name   = "nuc900-ts",
                .owner  = THIS_MODULE,
        },
  };
@@@ -347,4 -347,4 +347,4 @@@ module_exit(w90x900ts_exit)
  MODULE_AUTHOR("Wan ZongShun <mcuos.com@gmail.com>");
  MODULE_DESCRIPTION("w90p910 touch screen driver!");
  MODULE_LICENSE("GPL");
 -MODULE_ALIAS("platform:w90p910-ts");
 +MODULE_ALIAS("platform:nuc900-ts");