From: Jim Cromie Usage of request_region() was wrong ( returns 0 on error - docpatch sent to trivial ). This fixes it, and clarifies the err-msg. Signed-off-by: Jim Cromie Signed-off-by: Andrew Morton --- drivers/char/pc8736x_gpio.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff -puN drivers/char/pc8736x_gpio.c~chardev-gpio-for-scx200-pc-8736x-add-platform_device-request-region drivers/char/pc8736x_gpio.c --- a/drivers/char/pc8736x_gpio.c~chardev-gpio-for-scx200-pc-8736x-add-platform_device-request-region +++ a/drivers/char/pc8736x_gpio.c @@ -279,9 +279,12 @@ static int __init pc8736x_gpio_init(void pc8736x_gpio_base = (superio_inb(SIO_BASE_HADDR) << 8 | superio_inb(SIO_BASE_LADDR)); - if (request_region(pc8736x_gpio_base, 16, DEVNAME)) - dev_info(&pdev->dev, "GPIO ioport %x reserved\n", - pc8736x_gpio_base); + if (!request_region(pc8736x_gpio_base, 16, DEVNAME)) { + dev_err(&pdev->dev, "GPIO ioport %x busy\n", + pc8736x_gpio_base); + return -ENODEV; + } + dev_info(&pdev->dev, "GPIO ioport %x reserved\n", pc8736x_gpio_base); r = register_chrdev(major, DEVNAME, &pc8736x_gpio_fops); if (r < 0) { _