iobase=it->options[i];
printk(" 0x%04x",iobase);
- if(check_region(iobase,_8255_SIZE)<0){
+ if(!request_region(iobase,_8255_SIZE,"8255")){
printk(" (I/O port conflict)");
dev->subdevices[i].type=COMEDI_SUBD_UNUSED;
}else{
- request_region(iobase,_8255_SIZE,"8255");
-
subdev_8255_init(dev,dev->subdevices+i,NULL,iobase);
}
}
iorange=this_board->io_range;
printk("comedi%d: acl7225b: board=%s 0x%04x ", dev->minor,
this_board->name, iobase);
- if( check_region(iobase, iorange) < 0 )
- {
+ if( !request_region(iobase, iorange, "acl7225b") ) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, iorange, "acl7225b");
- dev->board_name=this_board->name;
+ dev->board_name=this_board->name;
dev->iobase=iobase;
dev->irq=0;
lcr_io_base,
lcr_io_range);
- if (check_region (lcr_io_base, lcr_io_range) < 0) {
- printk("comedi%d: I/O port conflict\n",dev_minor);
- return -EIO;
- }
-
// Read PCI6208 register base address [PCI_BASE_ADDRESS #2].
io_base = pci_resource_start (pci_dev, 2);
io_range = pci_resource_end (pci_dev, 2) - io_base +1;
io_base,
io_range);
- if (check_region (io_base, io_range) < 0) {
+ // Allocate IO ressources
+ if (pci_request_regions(pci_dev, PCI6208_DRIVER_NAME) < 0) {
printk("comedi%d: I/O port conflict\n",dev_minor);
return -EIO;
}
-
- // Allocate IO ressources
- pci_request_regions(pci_dev, PCI6208_DRIVER_NAME);
*io_base_ptr = io_base;
//devpriv->io_range = io_range;
rt_printk(", b:s:f=%d:%d:%d, io=0x%4x, 0x%4x",pci_bus,pci_slot,pci_func,iobase_9,iobase_a);
- if (check_region(iobase_9, this_board->iorange_9118) < 0) {
+ if (!request_region(iobase_9, this_board->iorange_9118, "ADLink PCI-9118")) {
rt_printk("I/O port conflict\n");
return -EIO;
}
- if (check_region(iobase_a, this_board->iorange_amcc) < 0) {
- rt_printk("I/O port conflict\n");
- return -EIO;
- }
-
- request_region(iobase_9, this_board->iorange_9118, "ADLink PCI-9118");
dev->iobase=iobase_9;
dev->board_name = this_board->name;
devpriv->amcc=card;
devpriv->pcidev=card->pcidev;
- request_region(iobase_a, this_board->iorange_amcc, "ADLink PCI-9118");
+ if (!request_region(iobase_a, this_board->iorange_amcc, "ADLink PCI-9118")) {
+ rt_printk("I/O port conflict\n");
+ return -EIO;
+ }
devpriv->iobase_a=iobase_a;
if (it->options[3]&2) irq=0; // user don't want use IRQ
{
if (dev->private) {
if (devpriv->valid) pci9118_reset(dev);
- release_region(devpriv->iobase_a,this_board->iorange_amcc);
+ if (devpriv->iobase_a) release_region(devpriv->iobase_a,this_board->iorange_amcc);
if (devpriv->allocated) pci_card_free(devpriv->amcc);
if (devpriv->dmabuf_virt[0]) free_pages((unsigned long)devpriv->dmabuf_virt[0],devpriv->dmabuf_pages[0]);
if (devpriv->dmabuf_virt[1]) free_pages((unsigned long)devpriv->dmabuf_virt[1],devpriv->dmabuf_pages[1]);
rt_printk(", b:s:f=%d:%d:%d, io=0x%4x",pci_bus,pci_slot,pci_func,iobase);
- if (check_region(iobase, this_board->iorange) < 0) {
+ if (!request_region(iobase, this_board->iorange, "Advantech PCI-1710")) {
pci_card_free(card);
rt_printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, this_board->iorange, "Advantech PCI-1710");
dev->iobase=iobase;
dev->board_name = this_board->name;
static int
dio200_request_region(unsigned minor, unsigned long from, unsigned long extent)
{
- if (check_region(from, extent) < 0) {
+ if (!request_region(from, extent, DIO200_DRIVER_NAME)) {
printk(KERN_ERR "comedi%d: I/O port conflict (%#lx,%lu)!\n",
minor, from, extent);
return -EIO;
}
- request_region(from, extent, DIO200_DRIVER_NAME);
return 0;
}
*/
static int pc236_request_region(unsigned long from, unsigned long extent)
{
- if (check_region(from, extent) < 0) {
+ if (!request_region(from, extent, PC236_DRIVER_NAME)) {
printk("I/O port conflict (%#lx,%lu)!\n", from, extent);
return -EIO;
}
- request_region(from, extent, PC236_DRIVER_NAME);
return 0;
}
*/
static int pc263_request_region(unsigned long from, unsigned long extent)
{
- if (check_region(from, extent) < 0) {
+ if (!request_region(from, extent, PC263_DRIVER_NAME)) {
printk("I/O port conflict (%#lx,%lu)!\n", from, extent);
return -EIO;
}
- request_region(from, extent, PC263_DRIVER_NAME);
return 0;
}
}
devpriv->pci_dev = pci_dev;
- /* Reserve I/O space 1. */
- if(check_region(pci_iobase,PCI230_IO1_SIZE)<0){
- printk("comedi%d: amplc_pci230: I/O space 1 conflict\n",dev->minor);
+ /* Reserve I/O spaces. */
+ if(pci_request_regions(pci_dev,"PCI230")<0){
+ printk("comedi%d: amplc_pci230: I/O space conflict\n",dev->minor);
return -EIO;
}
- request_region(pci_iobase,PCI230_IO1_SIZE,"PCI230");
devpriv->pci_iobase = pci_iobase;
-
- /* Reserve I/O space 2. */
- if(check_region(iobase,PCI230_IO2_SIZE)<0){
- printk("comedi%d: amplc_pci230: I/O space 2 conflict\n",dev->minor);
- return -EIO;
- }
- request_region(iobase,PCI230_IO2_SIZE,"PCI230");
dev->iobase = iobase;
/*
if(dev->subdevices && thisboard->have_dio)
subdev_8255_cleanup(dev,dev->subdevices + 2); /* Clean up dio subdevice. */
- if(dev->iobase)
- release_region(dev->iobase,PCI230_IO2_SIZE);
-
if(dev->irq)
comedi_free_irq(dev->irq, dev);
if(devpriv){
- if(devpriv->pci_iobase){
- release_region(devpriv->pci_iobase, PCI230_IO1_SIZE);
- }
if(devpriv->pci_dev){
+ if(devpriv->pci_iobase)
+ pci_release_regions(devpriv->pci_dev);
pci_dev_put(devpriv->pci_dev);
}
}
// reserve io ports
err = 0;
- if(check_region(s5933_config, AMCC_OP_REG_SIZE) < 0)
+ if(request_region(s5933_config, AMCC_OP_REG_SIZE, "cb_pcidas"))
+ devpriv->s5933_config = s5933_config;
+ else
err++;
- if(check_region(control_status, CONT_STAT_SIZE) < 0)
+ if(request_region(control_status, CONT_STAT_SIZE, "cb_pcidas"))
+ devpriv->control_status = control_status;
+ else
err++;
- if(check_region(adc_fifo, ADC_FIFO_SIZE) < 0)
+ if(request_region(adc_fifo, ADC_FIFO_SIZE, "cb_pcidas"))
+ devpriv->adc_fifo = adc_fifo;
+ else
err++;
- if(check_region(pacer_counter_dio, PACER_SIZE) < 0)
+ if(request_region(pacer_counter_dio, PACER_SIZE, "cb_pcidas"))
+ devpriv->pacer_counter_dio = pacer_counter_dio;
+ else
err++;
if(thisboard->ao_nchan)
- if(check_region(ao_registers, AO_SIZE) < 0)
+ if(request_region(ao_registers, AO_SIZE, "cb_pcidas"))
+ devpriv->ao_registers = ao_registers;
+ else
err++;
if(err)
{
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(s5933_config, AMCC_OP_REG_SIZE, "cb_pcidas");
- devpriv->s5933_config = s5933_config;
- request_region(control_status, CONT_STAT_SIZE, "cb_pcidas");
- devpriv->control_status = control_status;
- request_region(adc_fifo, ADC_FIFO_SIZE, "cb_pcidas");
- devpriv->adc_fifo = adc_fifo;
- request_region(pacer_counter_dio, PACER_SIZE, "cb_pcidas");
- devpriv->pacer_counter_dio = pacer_counter_dio;
- if(thisboard->ao_nchan)
- {
- request_region(ao_registers, AO_SIZE, "cb_pcidas");
- devpriv->ao_registers = ao_registers;
- }
// get irq
if(comedi_request_irq(devpriv->pci_dev->irq, cb_pcidas_interrupt, SA_SHIRQ, "cb_pcidas", dev ))
iobase=it->options[0];
printk("comedi%d: parport: 0x%04x ",dev->minor,iobase);
- if(check_region(iobase,PARPORT_SIZE)<0){
+ if(!request_region(iobase,PARPORT_SIZE,"parport (comedi)")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,PARPORT_SIZE,"parport (comedi)");
dev->iobase=iobase;
irq=it->options[1];
if(thisboard->bustype != pcmcia)
{
printk(" iobase 0x%lx\n", iobase);
- if(check_region(iobase, thisboard->iosize)<0){
+ if(!request_region(iobase, thisboard->iosize,"das08")){
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase, thisboard->iosize,"das08");
}
dev->iobase = iobase;
iobase = pci_resource_start(pdev, 2);
printk("pcibase 0x%lx ", pci_iobase);
// reserve io ports for 9052 pci chip
- if(check_region(pci_iobase,PCIDAS08_SIZE)<0){
+ if(!request_region(pci_iobase,PCIDAS08_SIZE,"das08")){
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(pci_iobase,PCIDAS08_SIZE,"das08");
devpriv->pci_iobase = pci_iobase;
#if 0
/* We could enable to pci-das08's interrupt here to make it possible
if(thisboard->size<0x400){
printk(" 0x%04x-0x%04x\n", iobase, iobase+thisboard->size);
- if(check_region(iobase,thisboard->size)<0){
+ if(!request_region(iobase,thisboard->size,"das16")){
printk(" I/O port conflict\n");
return -EIO;
}
printk(" 0x%04x-0x%04x 0x%04x-0x%04x\n",
iobase,iobase+0x0f,
iobase+0x400,iobase+0x400+(thisboard->size&0x3ff));
- if(check_region(iobase,0x10) < 0) {
+ if(!request_region(iobase,0x10,"das16")){
printk(" I/O port conflict: 0x%04x-0x%04x\n",
iobase,iobase+0x0f);
return -EIO;
}
- if(check_region(iobase+0x400,thisboard->size&0x3ff)<0){
+ if(!request_region(iobase+0x400,thisboard->size&0x3ff,"das16")){
+ release_region(iobase, 0x10);
printk(" I/O port conflict: 0x%04x-0x%04x\n",
iobase+0x400,
iobase+0x400+(thisboard->size&0x3ff));
}
}
- if(thisboard->size < 0x400){
- request_region(iobase,thisboard->size,"das16");
- }else{
- request_region(iobase,0x10,"das16");
- request_region(iobase+0x400,thisboard->size&0x3ff,"das16");
- }
-
dev->iobase = iobase;
// probe id bits to make sure they are consistent
printk(" io 0x%x-0x%x 0x%x-0x%x",
iobase, iobase + DAS16M1_SIZE,
iobase + DAS16M1_82C55, iobase + DAS16M1_82C55 + DAS16M1_SIZE2);
- if(check_region(iobase, DAS16M1_SIZE) < 0) {
+ if(!request_region(iobase, DAS16M1_SIZE, driver_das16m1.driver_name)) {
printk(" I/O port conflict\n");
return -EIO;
}
- if(check_region(iobase + DAS16M1_82C55, DAS16M1_SIZE2) < 0){
+ if(!request_region(iobase + DAS16M1_82C55, DAS16M1_SIZE2, driver_das16m1.driver_name)) {
+ release_region(iobase , DAS16M1_SIZE);
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase, DAS16M1_SIZE, driver_das16m1.driver_name);
- request_region(iobase + DAS16M1_82C55, DAS16M1_SIZE2, driver_das16m1.driver_name);
dev->iobase = iobase;
/* now for the irq */
}
/* check if io addresses are available */
- if(check_region(iobase, DAS1800_SIZE) < 0)
+ if(!request_region(iobase, DAS1800_SIZE, driver_das1800.driver_name))
{
printk(" I/O port conflict: failed to allocate ports 0x%x to 0x%x\n",
iobase, iobase + DAS1800_SIZE - 1);
return -EIO;
}
- request_region(iobase, DAS1800_SIZE, driver_das1800.driver_name);
dev->iobase = iobase;
board = das1800_probe(dev);
if(thisboard->ao_ability == 2)
{
iobase2 = iobase + IOBASE2;
- if(check_region(iobase2, DAS1800_SIZE) < 0)
+ if(!request_region(iobase2, DAS1800_SIZE, driver_das1800.driver_name))
{
printk(" I/O port conflict: failed to allocate ports 0x%x to 0x%x\n",
iobase2, iobase2 + DAS1800_SIZE - 1);
return -EIO;
}
- request_region(iobase2, DAS1800_SIZE, driver_das1800.driver_name);
devpriv->iobase2 = iobase2;
}
printk("comedi%d: das6402: 0x%04x",dev->minor,iobase);
- if(check_region(iobase,DAS6402_SIZE)<0){
+ if(!request_region(iobase,DAS6402_SIZE,"das6402")){
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase,DAS6402_SIZE,"das6402");
dev->iobase=iobase;
/* should do a probe here */
}
/* check if io addresses are available */
- if(check_region(iobase, DAS800_SIZE) < 0)
+ if(!request_region(iobase, DAS800_SIZE, "das800"))
{
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, DAS800_SIZE, "das800");
dev->iobase = iobase;
board = das800_probe(dev);
int n_ai_chans;
iobase=it->options[0];
- if(check_region(iobase,DT2801_IOSIZE)<0){
+ if(!request_region(iobase, DT2801_IOSIZE, "dt2801")){
comedi_error(dev,"I/O port conflict");
return -EIO;
}
- request_region(iobase, DT2801_IOSIZE, "dt2801");
dev->iobase=iobase;
/* do some checking */
printk("comedi%d: dt2811: base=0x%04x\n", dev->minor, iobase);
- if (check_region(iobase, DT2811_SIZE) < 0) {
+ if (!request_region(iobase, DT2811_SIZE, driver_name)) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, DT2811_SIZE, driver_name);
dev->iobase = iobase;
dev->board_name = this_board->name;
iobase=it->options[0];
printk("comedi%d: dt2814: 0x%04lx ",dev->minor,dev->iobase);
- if(check_region(iobase,DT2814_SIZE)<0){
+ if(!request_region(iobase,DT2814_SIZE,"dt2814")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,DT2814_SIZE,"dt2814");
dev->iobase=iobase;
dev->board_name = "dt2814";
iobase = it->options[0];
printk("comedi%d: dt2815: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, DT2815_SIZE) < 0) {
+ if (!request_region(iobase, DT2815_SIZE, "dt2815")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, DT2815_SIZE, "dt2815");
dev->iobase = iobase;
dev->board_name = "dt2815";
iobase=it->options[0];
printk("comedi%d: dt2817: 0x%04x ",dev->minor,iobase);
- if(check_region(iobase,DT2817_SIZE)<0){
+ if(!request_region(iobase,DT2817_SIZE,"dt2817")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,DT2817_SIZE,"dt2817");
dev->iobase = iobase;
dev->board_name="dt2817";
if(!iobase)iobase = 0x240;
printk("comedi%d: dt282x: 0x%04x", dev->minor, iobase);
- if (check_region(iobase, DT2821_SIZE) < 0) {
+ if (!request_region(iobase, DT2821_SIZE, "dt282x")) {
printk(" I/O port conflict\n");
return -EBUSY;
}
- request_region(iobase, DT2821_SIZE, "dt282x");
dev->iobase = iobase;
outw(DT2821_BDINIT, dev->iobase + DT2821_SUPCSR);
iobase = it->options[0];
printk("comedi:%d fl512: 0x%04x",dev->minor,iobase);
- if (check_region(iobase, FL512_SIZE) < 0) {
+ if (!request_region(iobase, FL512_SIZE, "fl512")) {
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase, FL512_SIZE, "fl512");
dev->iobase = iobase;
dev->board_name = "fl512";
if(alloc_private(dev,sizeof(fl512_private)) < 0)
iobase = it->options[0];
printk("comedi%d: multiq3: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, MULTIQ3_SIZE) < 0) {
+ if (!request_region(iobase, MULTIQ3_SIZE, "multiq3")) {
printk("comedi%d: I/O port conflict\n", dev->minor);
return -EIO;
}
- request_region(iobase, MULTIQ3_SIZE, "multiq3");
dev->iobase = iobase;
irq = it->options[1];
}
/* check if io addresses are available */
- if(check_region(iobase, A2150_SIZE) < 0)
+ if(!request_region(iobase, A2150_SIZE, driver_a2150.driver_name))
{
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase, A2150_SIZE, driver_a2150.driver_name);
dev->iobase = iobase;
/* grab our IRQ */
printk("comedi%d: ni_at_ao: 0x%04lx",dev->minor,iobase);
- if(check_region(iobase, ATAO_SIZE) < 0){
+ if(!request_region(iobase, ATAO_SIZE, "ni_at_ao")){
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase, ATAO_SIZE, "ni_at_ao");
dev->iobase = iobase;
//dev->board_ptr = atao_probe(dev);
/* reserve our I/O region */
printk("comedi%d: ni_atmio: 0x%04x",dev->minor,iobase);
- if(check_region(iobase,NI_SIZE)<0){
+ if(!request_region(iobase,NI_SIZE,"ni_atmio")){
printk(" I/O port conflict\n");
return -EIO;
}
- request_region(iobase,NI_SIZE,"ni_atmio");
dev->iobase=iobase;
/* make sure the address range is free and allocate it */
iobase = it->options[0];
printk("comedi%d: atmio16d: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, ATMIO16D_SIZE) < 0) {
+ if (!request_region(iobase, ATMIO16D_SIZE, "ni_atmio16d")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, ATMIO16D_SIZE, "ni_atmio16d");
dev->iobase = iobase;
if(thisboard->bustype == isa_bustype)
{
/* check if io addresses are available */
- if(check_region(iobase, LABPC_SIZE) < 0)
+ if(!request_region(iobase, LABPC_SIZE, driver_labpc.driver_name))
{
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, LABPC_SIZE, driver_labpc.driver_name);
}
dev->iobase = iobase;
iobase = it->options[0];
printk("comedi%d: pcl711: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, PCL711_SIZE) < 0) {
+ if (!request_region(iobase, PCL711_SIZE, "pcl711")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, PCL711_SIZE, "pcl711");
dev->iobase = iobase;
/* there should be a sanity check here */
iorange=PCL722_96_SIZE; // PCL-724 in 96 DIO configuration
printk("comedi%d: pcl724: board=%s, 0x%03x ",dev->minor,
this_board->name,iobase);
- if(check_region(iobase,iorange)<0){
+ if(!request_region(iobase, iorange, "pcl724")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, iorange, "pcl724");
dev->iobase=iobase;
dev->board_name = this_board->name;
iobase=it->options[0];
printk("comedi%d: pcl725: 0x%04x ",dev->minor,iobase);
- if(check_region(iobase,PCL725_SIZE)<0){
+ if(!request_region(iobase,PCL725_SIZE,"pcl725")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,PCL725_SIZE,"pcl725");
dev->board_name="pcl725";
dev->iobase=iobase;
dev->irq=0;
iobase=it->options[0];
iorange=this_board->io_range;
printk("comedi%d: pcl726: board=%s, 0x%03x ",dev->minor,this_board->name,iobase);
- if(check_region(iobase,iorange)<0){
+ if(!request_region(iobase, iorange, "pcl726")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, iorange, "pcl726");
dev->iobase=iobase;
dev->board_name = this_board->name;
iorange=this_board->io_range;
printk("comedi%d: pcl730: board=%s 0x%04x ", dev->minor,
this_board->name, iobase);
- if( check_region(iobase, iorange) < 0 )
- {
+ if( !request_region(iobase, iorange, "pcl730") ) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, iorange, "pcl730");
- dev->board_name=this_board->name;
+ dev->board_name=this_board->name;
dev->iobase=iobase;
dev->irq=0;
printk("comedi%d: pcl812: board=%s, ioport=0x%03x", dev->minor,
this_board->name, iobase);
- if (check_region(iobase, this_board->io_range) < 0) {
+ if (!request_region(iobase, this_board->io_range, "pcl812")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, this_board->io_range, "pcl812");
dev->iobase = iobase;
if ((ret = alloc_private(dev, sizeof(pcl812_private))) < 0) {
printk("comedi%d: pcl816: board=%s, ioport=0x%03x", dev->minor,
this_board->name, iobase);
- if (check_region (iobase, this_board->io_range) < 0) {
+ if (!request_region (iobase, this_board->io_range, "pcl816")) {
rt_printk ("I/O port conflict\n");
return -EIO;
}
- request_region (iobase, this_board->io_range, "pcl816");
dev->iobase = iobase;
if (pcl816_check (iobase)) {
{ // we want to use DMA
if (RTC_lock == 0)
{
- if (check_region (RTC_PORT (0), RTC_IO_EXTENT) < 0)
+ if (!request_region (RTC_PORT (0), RTC_IO_EXTENT, "pcl816 (RTC)"))
goto no_rtc;
- request_region (RTC_PORT (0), RTC_IO_EXTENT, "pcl816 (RTC)");
}
devpriv->rtc_iobase = RTC_PORT (0);
devpriv->rtc_iosize = RTC_IO_EXTENT;
devpriv->io_range=PCLx1xFIFO_RANGE;
devpriv->usefifo = 1;
}
- if (check_region(iobase, this_board->io_range) < 0) {
+ if (!request_region(iobase, devpriv->io_range, "pcl818")) {
rt_printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, devpriv->io_range, "pcl818");
dev->iobase=iobase;
if (pcl818_check(iobase)) {
devpriv->dma_rtc=0;
if (it->options[2]>0) { // we want to use DMA
if (RTC_lock==0) {
- if (check_region(RTC_PORT(0), RTC_IO_EXTENT) < 0) goto no_rtc;
- request_region(RTC_PORT(0), RTC_IO_EXTENT, "pcl818 (RTC)");
+ if (!request_region(RTC_PORT(0), RTC_IO_EXTENT, "pcl818 (RTC)"))
+ goto no_rtc;
}
devpriv->rtc_iobase=RTC_PORT(0);
devpriv->rtc_iosize=RTC_IO_EXTENT;
iobase=it->options[0];
printk("comedi%d: pcm3730: 0x%04x ",dev->minor,iobase);
- if(check_region(iobase,PCM3730_SIZE)<0){
+ if(!request_region(iobase,PCM3730_SIZE,"pcm3730")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,PCM3730_SIZE,"pcm3730");
dev->iobase=iobase;
dev->board_name="pcm3730";
dev->iobase=dev->iobase;
iobase=it->options[0];
printk("comedi%d: pcmad: 0x%04x ",dev->minor,iobase);
- if(check_region(iobase,PCMAD_SIZE)<0){
+ if(!request_region(iobase,PCMAD_SIZE,"pcmad")){
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase,PCMAD_SIZE,"pcmad");
dev->iobase=iobase;
if((ret=alloc_subdevices(dev, 1))<0)
iosize = this_board->iosize;
/* check if io addresses are available */
- if(check_region(iobase, iosize) < 0)
+ if(!request_region(iobase, iosize, "dac02"))
{
printk("I/O port conflict: failed to allocate ports 0x%x to 0x%x\n",
iobase, iobase + iosize - 1);
return -EIO;
}
- request_region(iobase, iosize, "dac02");
dev->iobase = iobase;
if(alloc_subdevices(dev, 1) < 0)
iobase = it->options[0];
printk("comedi%d: rti800: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, RTI800_SIZE) < 0) {
+ if (!request_region(iobase, RTI800_SIZE, "rti800")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, RTI800_SIZE, "rti800");
dev->iobase = iobase;
#ifdef DEBUG
iobase = it->options[0];
printk("comedi%d: rti802: 0x%04x ", dev->minor, iobase);
- if (check_region(iobase, RTI802_SIZE) < 0) {
+ if (!request_region(iobase, RTI802_SIZE, "rti802")) {
printk("I/O port conflict\n");
return -EIO;
}
- request_region(iobase, RTI802_SIZE, "rti802");
dev->iobase = iobase;
dev->board_name = "rti802";
#include_next <linux/ioport.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,11)
+
+/* 'struct resource' not defined. Define a dummy version. */
+struct resource {
+ int dummy;
+};
+
+/* Define a compatible version of request_region that returns a pointer
+ * to a non-NULL value on success. */
+static inline struct resource *compat__request_region(unsigned long from,
+ unsigned long extent, const char *name)
+{
+ if (check_region(from, extent) < 0) {
+ return (struct resource *)0;
+ }
+ request_region(from, extent, name);
+ return ((struct resource *)0 + 1); /* Should be non-NULL */
+}
+
+/* Replace existing request_region macro/function. */
+#undef request_region
+#define request_region(f,e,n) compat__request_region(f,e,n)
+
+#endif
+
#endif // _COMPAT_IOPORT_H
if(dev->base_address[i])
{
if(dev->base_address[i] & PCI_BASE_ADDRESS_SPACE_IO)
- retval = check_region(pci_resource_start(dev, i),
- fake_length);
- if( retval )
- break;
+ if(!request_region(pci_resource_start(dev, i),
+ fake_length, name))
+ {
+ retval = -EBUSY;
+ break;
+ }
}
}
- if(retval) return retval;
-
- for(i = 0; i < max_num_base_addr; i++)
+ if(retval)
{
- if(dev->base_address[i])
+ while(--i >= 0)
{
if(dev->base_address[i] & PCI_BASE_ADDRESS_SPACE_IO)
- request_region(pci_resource_start(dev, i),
- fake_length, name);
+ release_region(pci_resource_start(dev, i),
+ fake_length);
}
}
- return 0;
+ return retval;
}
static inline void pci_release_regions(struct pci_dev *dev)