aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-ich.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio/gpio-ich.c')
-rw-r--r--drivers/gpio/gpio-ich.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c
index d4d617966696..de3c317bd3e2 100644
--- a/drivers/gpio/gpio-ich.c
+++ b/drivers/gpio/gpio-ich.c
@@ -128,9 +128,9 @@ static int ichx_read_bit(int reg, unsigned nr)
128 return data & (1 << bit) ? 1 : 0; 128 return data & (1 << bit) ? 1 : 0;
129} 129}
130 130
131static int ichx_gpio_check_available(struct gpio_chip *gpio, unsigned nr) 131static bool ichx_gpio_check_available(struct gpio_chip *gpio, unsigned nr)
132{ 132{
133 return (ichx_priv.use_gpio & (1 << (nr / 32))) ? 0 : -ENXIO; 133 return ichx_priv.use_gpio & (1 << (nr / 32));
134} 134}
135 135
136static int ichx_gpio_direction_input(struct gpio_chip *gpio, unsigned nr) 136static int ichx_gpio_direction_input(struct gpio_chip *gpio, unsigned nr)
@@ -214,7 +214,7 @@ static int ichx_gpio_request(struct gpio_chip *chip, unsigned nr)
214 * If it can't be trusted, assume that the pin can be used as a GPIO. 214 * If it can't be trusted, assume that the pin can be used as a GPIO.
215 */ 215 */
216 if (ichx_priv.desc->use_sel_ignore[nr / 32] & (1 << (nr & 0x1f))) 216 if (ichx_priv.desc->use_sel_ignore[nr / 32] & (1 << (nr & 0x1f)))
217 return 1; 217 return 0;
218 218
219 return ichx_read_bit(GPIO_USE_SEL, nr) ? 0 : -ENODEV; 219 return ichx_read_bit(GPIO_USE_SEL, nr) ? 0 : -ENODEV;
220} 220}
@@ -238,7 +238,7 @@ static void ichx_gpio_set(struct gpio_chip *chip, unsigned nr, int val)
238 ichx_write_bit(GPIO_LVL, nr, val, 0); 238 ichx_write_bit(GPIO_LVL, nr, val, 0);
239} 239}
240 240
241static void __devinit ichx_gpiolib_setup(struct gpio_chip *chip) 241static void ichx_gpiolib_setup(struct gpio_chip *chip)
242{ 242{
243 chip->owner = THIS_MODULE; 243 chip->owner = THIS_MODULE;
244 chip->label = DRV_NAME; 244 chip->label = DRV_NAME;
@@ -313,7 +313,7 @@ static struct ichx_desc intel5_desc = {
313 .ngpio = 76, 313 .ngpio = 76,
314}; 314};
315 315
316static int __devinit ichx_gpio_request_regions(struct resource *res_base, 316static int ichx_gpio_request_regions(struct resource *res_base,
317 const char *name, u8 use_gpio) 317 const char *name, u8 use_gpio)
318{ 318{
319 int i; 319 int i;
@@ -353,7 +353,7 @@ static void ichx_gpio_release_regions(struct resource *res_base, u8 use_gpio)
353 } 353 }
354} 354}
355 355
356static int __devinit ichx_gpio_probe(struct platform_device *pdev) 356static int ichx_gpio_probe(struct platform_device *pdev)
357{ 357{
358 struct resource *res_base, *res_pm; 358 struct resource *res_base, *res_pm;
359 int err; 359 int err;
@@ -390,6 +390,7 @@ static int __devinit ichx_gpio_probe(struct platform_device *pdev)
390 return -ENODEV; 390 return -ENODEV;
391 } 391 }
392 392
393 spin_lock_init(&ichx_priv.lock);
393 res_base = platform_get_resource(pdev, IORESOURCE_IO, ICH_RES_GPIO); 394 res_base = platform_get_resource(pdev, IORESOURCE_IO, ICH_RES_GPIO);
394 ichx_priv.use_gpio = ich_info->use_gpio; 395 ichx_priv.use_gpio = ich_info->use_gpio;
395 err = ichx_gpio_request_regions(res_base, pdev->name, 396 err = ichx_gpio_request_regions(res_base, pdev->name,
@@ -442,7 +443,7 @@ add_err:
442 return err; 443 return err;
443} 444}
444 445
445static int __devexit ichx_gpio_remove(struct platform_device *pdev) 446static int ichx_gpio_remove(struct platform_device *pdev)
446{ 447{
447 int err; 448 int err;
448 449
@@ -467,7 +468,7 @@ static struct platform_driver ichx_gpio_driver = {
467 .name = DRV_NAME, 468 .name = DRV_NAME,
468 }, 469 },
469 .probe = ichx_gpio_probe, 470 .probe = ichx_gpio_probe,
470 .remove = __devexit_p(ichx_gpio_remove), 471 .remove = ichx_gpio_remove,
471}; 472};
472 473
473module_platform_driver(ichx_gpio_driver); 474module_platform_driver(ichx_gpio_driver);