diff -urpN --exclude-from=/home/davej/.exclude bk-linus/arch/sh/kernel/hd64465_gpio.c linux-2.5/arch/sh/kernel/hd64465_gpio.c --- bk-linus/arch/sh/kernel/hd64465_gpio.c 2002-11-21 02:12:00.000000000 +0000 +++ linux-2.5/arch/sh/kernel/hd64465_gpio.c 2002-11-21 17:56:38.000000000 +0000 @@ -165,12 +165,19 @@ void hd64465_gpio_unregister_irq(int por static int __init hd64465_gpio_init(void) { - /* TODO: check return values */ - request_region(HD64465_REG_GPACR, 0x1000, MODNAME); - request_irq(HD64465_IRQ_GPIO, hd64465_gpio_interrupt, - SA_INTERRUPT, MODNAME, 0); + int err; + + if (!request_region(HD64465_REG_GPACR, 0x1000, MODNAME)) + return -EIO; + err = request_irq (HD64465_IRQ_GPIO, hd64465_gpio_interrupt, + SA_INTERRUPT, MODNAME, 0); + if (err) { + printk(KERN_ERR"HD64465: Unable to get irq %d.\n", HD64465_IRQ_GPIO); + release_region(HD64465_REG_GPACR, 0x1000); + return err; + } - printk("HD64465 GPIO layer on irq %d\n", HD64465_IRQ_GPIO); + printk("HD64465 GPIO layer on irq %d\n", HD64465_IRQ_GPIO); return 0; }