OSDN Git Service

Merge branch 'next' into for-linus
[android-x86/kernel.git] / drivers / input / mouse / sentelic.c
index c5b12d2..e36847d 100644 (file)
@@ -2,7 +2,7 @@
  * Finger Sensing Pad PS/2 mouse driver.
  *
  * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
- * Copyright (C) 2005-2010 Tai-hwa Liang, Sentelic Corporation.
+ * Copyright (C) 2005-2011 Tai-hwa Liang, Sentelic Corporation.
  *
  *   This program is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU General Public License
@@ -162,7 +162,7 @@ static int fsp_reg_write(struct psmouse *psmouse, int reg_addr, int reg_val)
        ps2_sendbyte(ps2dev, v, FSP_CMD_TIMEOUT2);
 
        if (ps2_sendbyte(ps2dev, 0xf3, FSP_CMD_TIMEOUT) < 0)
-               return -1;
+               goto out;
 
        if ((v = fsp_test_invert_cmd(reg_val)) != reg_val) {
                /* inversion is required */
@@ -261,7 +261,7 @@ static int fsp_page_reg_write(struct psmouse *psmouse, int reg_val)
        ps2_sendbyte(ps2dev, 0x88, FSP_CMD_TIMEOUT2);
 
        if (ps2_sendbyte(ps2dev, 0xf3, FSP_CMD_TIMEOUT) < 0)
-               return -1;
+               goto out;
 
        if ((v = fsp_test_invert_cmd(reg_val)) != reg_val) {
                ps2_sendbyte(ps2dev, 0x47, FSP_CMD_TIMEOUT2);
@@ -309,7 +309,7 @@ static int fsp_get_buttons(struct psmouse *psmouse, int *btn)
        };
        int val;
 
-       if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS1, &val) == -1)
+       if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS, &val) == -1)
                return -EIO;
 
        *btn = buttons[(val & 0x30) >> 4];
@@ -408,7 +408,7 @@ static int fsp_onpad_hscr(struct psmouse *psmouse, bool enable)
 static ssize_t fsp_attr_set_setreg(struct psmouse *psmouse, void *data,
                                   const char *buf, size_t count)
 {
-       unsigned long reg, val;
+       int reg, val;
        char *rest;
        ssize_t retval;
 
@@ -416,7 +416,11 @@ static ssize_t fsp_attr_set_setreg(struct psmouse *psmouse, void *data,
        if (rest == buf || *rest != ' ' || reg > 0xff)
                return -EINVAL;
 
-       if (strict_strtoul(rest + 1, 16, &val) || val > 0xff)
+       retval = kstrtoint(rest + 1, 16, &val);
+       if (retval)
+               return retval;
+
+       if (val > 0xff)
                return -EINVAL;
 
        if (fsp_reg_write_enable(psmouse, true))
@@ -448,10 +452,13 @@ static ssize_t fsp_attr_set_getreg(struct psmouse *psmouse, void *data,
                                        const char *buf, size_t count)
 {
        struct fsp_data *pad = psmouse->private;
-       unsigned long reg;
-       int val;
+       int reg, val, err;
+
+       err = kstrtoint(buf, 16, &reg);
+       if (err)
+               return err;
 
-       if (strict_strtoul(buf, 16, &reg) || reg > 0xff)
+       if (reg > 0xff)
                return -EINVAL;
 
        if (fsp_reg_read(psmouse, reg, &val))
@@ -480,9 +487,13 @@ static ssize_t fsp_attr_show_pagereg(struct psmouse *psmouse,
 static ssize_t fsp_attr_set_pagereg(struct psmouse *psmouse, void *data,
                                        const char *buf, size_t count)
 {
-       unsigned long val;
+       int val, err;
+
+       err = kstrtoint(buf, 16, &val);
+       if (err)
+               return err;
 
-       if (strict_strtoul(buf, 16, &val) || val > 0xff)
+       if (val > 0xff)
                return -EINVAL;
 
        if (fsp_page_reg_write(psmouse, val))
@@ -505,9 +516,14 @@ static ssize_t fsp_attr_show_vscroll(struct psmouse *psmouse,
 static ssize_t fsp_attr_set_vscroll(struct psmouse *psmouse, void *data,
                                        const char *buf, size_t count)
 {
-       unsigned long val;
+       unsigned int val;
+       int err;
 
-       if (strict_strtoul(buf, 10, &val) || val > 1)
+       err = kstrtouint(buf, 10, &val);
+       if (err)
+               return err;
+
+       if (val > 1)
                return -EINVAL;
 
        fsp_onpad_vscr(psmouse, val);
@@ -529,9 +545,14 @@ static ssize_t fsp_attr_show_hscroll(struct psmouse *psmouse,
 static ssize_t fsp_attr_set_hscroll(struct psmouse *psmouse, void *data,
                                        const char *buf, size_t count)
 {
-       unsigned long val;
+       unsigned int val;
+       int err;
+
+       err = kstrtouint(buf, 10, &val);
+       if (err)
+               return err;
 
-       if (strict_strtoul(buf, 10, &val) || val > 1)
+       if (val > 1)
                return -EINVAL;
 
        fsp_onpad_hscr(psmouse, val);