* module_init & module_exit.
* Torben Mathiasen <tmm@image.dk>
*
- * 19 June 2004 -- check_region() converted to request_region()
- * and return statement cleanups.
- * Jesper Juhl <juhl-lkml@dif.dk>
- *
* Detect cdrom interface on ISP16 sound card.
* Configure cdrom interface.
*
if (!strcmp(isp16_cdrom_type, "noisp16")) {
printk("ISP16: no cdrom interface configured.\n");
- return 0;
+ return (0);
}
- if (!request_region(ISP16_IO_BASE, ISP16_IO_SIZE, "isp16")) {
+ if (check_region(ISP16_IO_BASE, ISP16_IO_SIZE)) {
printk("ISP16: i/o ports already in use.\n");
- goto out;
+ return (-EIO);
}
if ((isp16_type = isp16_detect()) < 0) {
printk("ISP16: no cdrom interface found.\n");
- goto cleanup_out;
+ return (-EIO);
}
printk(KERN_INFO
else {
printk("ISP16: %s not supported by cdrom interface.\n",
isp16_cdrom_type);
- goto cleanup_out;
+ return (-EIO);
}
if (isp16_cdi_config(isp16_cdrom_base, expected_drive,
isp16_cdrom_irq, isp16_cdrom_dma) < 0) {
printk
("ISP16: cdrom interface has not been properly configured.\n");
- goto cleanup_out;
+ return (-EIO);
}
printk(KERN_INFO
"ISP16: cdrom interface set up with io base 0x%03X, irq %d, dma %d,"
" type %s.\n", isp16_cdrom_base, isp16_cdrom_irq,
isp16_cdrom_dma, isp16_cdrom_type);
- return 0;
-
-cleanup_out:
- release_region(ISP16_IO_BASE, ISP16_IO_SIZE);
-out:
- return -EIO;
+ return (0);
}
static short __init isp16_detect(void)
{
if (isp16_c929__detect() >= 0)
- return 2;
+ return (2);
else
return (isp16_c928__detect());
}
ISP16_OUT(ISP16_C928__ENABLE_PORT, enable_cdrom);
} else { /* bits are not the same */
ISP16_OUT(ISP16_CTRL_PORT, ctrl);
- return i; /* -> not detected: possibly incorrect conclusion */
+ return (i); /* -> not detected: possibly incorrect conclusion */
}
} else if (enable_cdrom == 0x20)
i = 0;
ISP16_OUT(ISP16_CTRL_PORT, ctrl);
- return i;
+ return (i);
}
static short __init isp16_c929__detect(void)
tmp = ISP16_IN(ISP16_CTRL_PORT);
if (tmp != 2) /* isp16 with 82C929 not detected */
- return -1;
+ return (-1);
/* restore ctrl port value */
ISP16_OUT(ISP16_CTRL_PORT, ctrl);
- return 2;
+ return (2);
}
static short __init
printk
("ISP16: base address 0x%03X not supported by cdrom interface.\n",
base);
- return -1;
+ return (-1);
}
switch (irq) {
case 0:
default:
printk("ISP16: irq %d not supported by cdrom interface.\n",
irq);
- return -1;
+ return (-1);
}
switch (dma) {
case 0:
case 1:
printk("ISP16: dma 1 cannot be used by cdrom interface,"
" due to conflict with the sound card.\n");
- return -1;
+ return (-1);
break;
case 3:
dma_code = ISP16_DMA_3;
default:
printk("ISP16: dma %d not supported by cdrom interface.\n",
dma);
- return -1;
+ return (-1);
}
if (drive_type != ISP16_SONY && drive_type != ISP16_PANASONIC0 &&
printk
("ISP16: drive type (code 0x%02X) not supported by cdrom"
" interface.\n", drive_type);
- return -1;
+ return (-1);
}
/* set type of interface */
i = ISP16_IN(ISP16_IO_SET_PORT) & ISP16_IO_SET_MASK; /* keep some bits */
ISP16_OUT(ISP16_IO_SET_PORT, i | base_code | irq_code | dma_code);
- return 0;
+ return (0);
}
void __exit isp16_exit(void)