dev->n_subdevices = 0;
        }
        kfree(dev->private);
-       kfree(dev->pacer);
+       if (!IS_ERR(dev->pacer))
+               kfree(dev->pacer);
        dev->private = NULL;
        dev->pacer = NULL;
        dev->driver = NULL;
 
                        dev->irq = pcidev->irq;
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCI9111_8254_BASE_REG,
-                                     I8254_OSC_BASE_2MHZ, I8254_IO16, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI9111_8254_BASE_REG,
+                                         I8254_OSC_BASE_2MHZ, I8254_IO16, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
        devpriv->iobase_a = pci_resource_start(pcidev, 0);
        dev->iobase = pci_resource_start(pcidev, 2);
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCI9118_TIMER_BASE,
-                                     I8254_OSC_BASE_4MHZ, I8254_IO32, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI9118_TIMER_BASE,
+                                         I8254_OSC_BASE_4MHZ, I8254_IO32, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        pci9118_reset(dev);
 
 
                return ret;
        dev->iobase = pci_resource_start(pcidev, 2);
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCI171X_TIMER_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO16, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI171X_TIMER_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO16, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        n_subdevices = 1;       /* all boards have analog inputs */
        if (board->has_ao)
 
        if (board->timer_regbase) {
                s = &dev->subdevices[subdev++];
 
-               dev->pacer = comedi_8254_init(dev->iobase +
-                                             board->timer_regbase,
-                                             0, I8254_IO8, 0);
-               if (!dev->pacer)
-                       return -ENOMEM;
+               dev->pacer =
+                   comedi_8254_io_alloc(dev->iobase + board->timer_regbase,
+                                        0, I8254_IO8, 0);
+               if (IS_ERR(dev->pacer))
+                       return PTR_ERR(dev->pacer);
 
                comedi_8254_subdevice_init(s, dev->pacer);
        }
 
        if (ret)
                return ret;
 
-       dev->pacer = comedi_8254_init(dev->iobase + AIO12_8_8254_BASE_REG,
-                                     0, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + AIO12_8_8254_BASE_REG,
+                                         0, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
        }
 
        if (dev->mmio) {
-               i8254 = comedi_8254_mm_init(dev->mmio + offset,
-                                           0, I8254_IO8, regshift);
+               i8254 = comedi_8254_mm_alloc(dev->mmio + offset,
+                                            0, I8254_IO8, regshift);
        } else {
-               i8254 = comedi_8254_init(dev->iobase + offset,
-                                        0, I8254_IO8, regshift);
+               i8254 = comedi_8254_io_alloc(dev->iobase + offset,
+                                            0, I8254_IO8, regshift);
        }
-       if (!i8254)
-               return -ENOMEM;
+       if (IS_ERR(i8254))
+               return PTR_ERR(i8254);
 
        comedi_8254_subdevice_init(s, i8254);
 
 
        outw(devpriv->daccon | PCI224_DACCON_FIFORESET,
             dev->iobase + PCI224_DACCON);
 
-       dev->pacer = comedi_8254_init(devpriv->iobase1 + PCI224_Z2_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(devpriv->iobase1 + PCI224_Z2_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 1);
        if (ret)
 
                        dev->irq = pci_dev->irq;
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCI230_Z2_CT_BASE,
-                                     0, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI230_Z2_CT_BASE,
+                                         0, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        rc = comedi_alloc_subdevices(dev, 3);
        if (rc)
 
        if (!devpriv)
                return -ENOMEM;
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS16CS_TIMER_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO16, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS16CS_TIMER_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO16, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
        }
        dev->irq = pcidev->irq;
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCIDAS_AI_8254_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCIDAS_AI_8254_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
-       devpriv->ao_pacer = comedi_8254_init(dev->iobase + PCIDAS_AO_8254_BASE,
-                                            I8254_OSC_BASE_10MHZ,
-                                            I8254_IO8, 0);
-       if (!devpriv->ao_pacer)
-               return -ENOMEM;
+       devpriv->ao_pacer =
+           comedi_8254_io_alloc(dev->iobase + PCIDAS_AO_8254_BASE,
+                                I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(devpriv->ao_pacer))
+               return PTR_ERR(devpriv->ao_pacer);
 
        ret = comedi_alloc_subdevices(dev, 7);
        if (ret)
                if (devpriv->amcc)
                        outl(INTCSR_INBOX_INTR_STATUS,
                             devpriv->amcc + AMCC_OP_REG_INTCSR);
-               kfree(devpriv->ao_pacer);
+               if (!IS_ERR(devpriv->ao_pacer))
+                       kfree(devpriv->ao_pacer);
        }
        comedi_pci_detach(dev);
 }
 
        devpriv->BADR3 = pci_resource_start(pcidev, 3);
        dev->iobase = pci_resource_start(pcidev, 4);
 
-       dev->pacer = comedi_8254_init(devpriv->BADR3 + PCIMDAS_8254_BASE,
-                                     cb_pcimdas_pacer_clk(dev),
-                                     I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(devpriv->BADR3 + PCIMDAS_8254_BASE,
+                                         cb_pcimdas_pacer_clk(dev),
+                                         I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 6);
        if (ret)
 
  *
  * This module provides the following basic functions:
  *
- * comedi_8254_init() / comedi_8254_mm_init()
+ * comedi_8254_io_alloc() / comedi_8254_mm_alloc()
  *     Initializes this module to access the 8254 registers. The _mm version
- *     sets up the module for MMIO register access the other for PIO access.
- *     The pointer returned from these functions is normally stored in the
- *     comedi_device dev->pacer and will be freed by the comedi core during
- *     the driver (*detach). If a driver has multiple 8254 devices, they need
- *     to be stored in the drivers private data and freed when the driver is
- *     detached.
+ *     sets up the module for MMIO register access; the _io version sets it
+ *     up for PIO access.  These functions return a pointer to a struct
+ *     comedi_8254 on success, or an ERR_PTR value on failure.  The pointer
+ *     returned from these functions is normally stored in the comedi_device
+ *     dev->pacer and will be freed by the comedi core during the driver
+ *     (*detach). If a driver has multiple 8254 devices, they need to be
+ *     stored in the drivers private data and freed when the driver is
+ *     detached.  If the ERR_PTR value is stored, code should check the
+ *     pointer value with !IS_ERR(pointer) before freeing.
  *
  *     NOTE: The counters are reset by setting them to I8254_MODE0 as part of
  *     this initialization.
        /* sanity check that the iosize is valid */
        if (!(iosize == I8254_IO8 || iosize == I8254_IO16 ||
              iosize == I8254_IO32))
-               return NULL;
+               return ERR_PTR(-EINVAL);
 
        if (!iocb)
-               return NULL;
+               return ERR_PTR(-EINVAL);
 
        i8254 = kzalloc(sizeof(*i8254), GFP_KERNEL);
        if (!i8254)
-               return NULL;
+               return ERR_PTR(-ENOMEM);
 
        i8254->iocb     = iocb;
        i8254->context  = context;
 }
 
 /**
- * comedi_8254_init - allocate and initialize the 8254 device for pio access
+ * comedi_8254_io_alloc - allocate and initialize the 8254 device for pio access
  * @iobase:    port I/O base address
  * @osc_base:  base time of the counter in ns
  *             OPTIONAL - only used by comedi_8254_cascade_ns_to_timer()
  * @iosize:    I/O register size
  * @regshift:  register gap shift
+ *
+ * Return: A pointer to a struct comedi_8254 or an ERR_PTR value.
  */
-struct comedi_8254 *comedi_8254_init(unsigned long iobase,
-                                    unsigned int osc_base,
-                                    unsigned int iosize,
-                                    unsigned int regshift)
+struct comedi_8254 *comedi_8254_io_alloc(unsigned long iobase,
+                                        unsigned int osc_base,
+                                        unsigned int iosize,
+                                        unsigned int regshift)
 {
        comedi_8254_iocb_fn *iocb;
 
                iocb = i8254_io32_cb;
                break;
        default:
-               return NULL;
+               return ERR_PTR(-EINVAL);
        }
        return __i8254_init(iocb, iobase, osc_base, iosize, regshift);
 }
-EXPORT_SYMBOL_GPL(comedi_8254_init);
+EXPORT_SYMBOL_GPL(comedi_8254_io_alloc);
 
 /**
- * comedi_8254_mm_init - allocate and initialize the 8254 device for mmio access
+ * comedi_8254_mm_alloc - allocate and initialize the 8254 device for mmio access
  * @mmio:      memory mapped I/O base address
  * @osc_base:  base time of the counter in ns
  *             OPTIONAL - only used by comedi_8254_cascade_ns_to_timer()
  * @iosize:    I/O register size
  * @regshift:  register gap shift
+ *
+ * Return: A pointer to a struct comedi_8254 or an ERR_PTR value.
  */
-struct comedi_8254 *comedi_8254_mm_init(void __iomem *mmio,
-                                       unsigned int osc_base,
-                                       unsigned int iosize,
-                                       unsigned int regshift)
+struct comedi_8254 *comedi_8254_mm_alloc(void __iomem *mmio,
+                                        unsigned int osc_base,
+                                        unsigned int iosize,
+                                        unsigned int regshift)
 {
        comedi_8254_iocb_fn *iocb;
 
                iocb = i8254_mmio32_cb;
                break;
        default:
-               return NULL;
+               return ERR_PTR(-EINVAL);
        }
        return __i8254_init(iocb, (unsigned long)mmio, osc_base, iosize, regshift);
 }
-EXPORT_SYMBOL_GPL(comedi_8254_mm_init);
+EXPORT_SYMBOL_GPL(comedi_8254_mm_alloc);
 
 static int __init comedi_8254_module_init(void)
 {
 
        /* Counter subdevice (8254) */
        s = &dev->subdevices[5];
        if (board->i8254_offset) {
-               dev->pacer = comedi_8254_init(dev->iobase + board->i8254_offset,
-                                             0, I8254_IO8, 0);
-               if (!dev->pacer)
-                       return -ENOMEM;
+               dev->pacer =
+                   comedi_8254_io_alloc(dev->iobase + board->i8254_offset,
+                                        0, I8254_IO8, 0);
+               if (IS_ERR(dev->pacer))
+                       return PTR_ERR(dev->pacer);
 
                comedi_8254_subdevice_init(s, dev->pacer);
        } else {
 
                        osc_base = I8254_OSC_BASE_1MHZ / it->options[3];
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS16_TIMER_BASE_REG,
-                                     osc_base, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS16_TIMER_BASE_REG,
+                                         osc_base, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        das16_alloc_dma(dev, it->options[2]);
 
 
                        dev->irq = it->options[1];
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS16M1_8254_IOBASE2,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS16M1_8254_IOBASE2,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
-       devpriv->counter = comedi_8254_init(dev->iobase + DAS16M1_8254_IOBASE1,
-                                           0, I8254_IO8, 0);
-       if (!devpriv->counter)
-               return -ENOMEM;
+       devpriv->counter =
+           comedi_8254_io_alloc(dev->iobase + DAS16M1_8254_IOBASE1,
+                                0, I8254_IO8, 0);
+       if (IS_ERR(devpriv->counter))
+               return PTR_ERR(devpriv->counter);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
        if (devpriv) {
                if (devpriv->extra_iobase)
                        release_region(devpriv->extra_iobase, DAS16M1_SIZE2);
-               kfree(devpriv->counter);
+               if (!IS_ERR(devpriv->counter))
+                       kfree(devpriv->counter);
        }
        comedi_legacy_detach(dev);
 }
 
        if (!devpriv->fifo_buf)
                return -ENOMEM;
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS1800_COUNTER,
-                                     I8254_OSC_BASE_5MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS1800_COUNTER,
+                                         I8254_OSC_BASE_5MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
                }
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS6402_TIMER_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS6402_TIMER_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
                        dev->irq = irq;
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + DAS800_8254,
-                                     I8254_OSC_BASE_1MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + DAS800_8254,
+                                         I8254_OSC_BASE_1MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 3);
        if (ret)
 
                if (!timer_base)
                        return -ENODEV;
 
-               dev->pacer = comedi_8254_init(timer_base, 0, I8254_IO8, 0);
-               if (!dev->pacer)
-                       return -ENOMEM;
+               dev->pacer = comedi_8254_io_alloc(timer_base, 0, I8254_IO8, 0);
+               if (IS_ERR(dev->pacer))
+                       return PTR_ERR(dev->pacer);
 
                comedi_8254_subdevice_init(s, dev->pacer);
        } else {
 
        /* an IRQ and DMA are required to support async commands */
        a2150_alloc_irq_and_dma(dev, it);
 
-       dev->pacer = comedi_8254_init(dev->iobase + I8253_BASE_REG,
-                                     0, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + I8253_BASE_REG,
+                                         0, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 1);
        if (ret)
 
        if (!devpriv)
                return -ENOMEM;
 
-       dev->pacer = comedi_8254_init(dev->iobase + ATAO_82C53_BASE,
-                                     0, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + ATAO_82C53_BASE,
+                                         0, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
        }
 
        if (dev->mmio) {
-               dev->pacer = comedi_8254_mm_init(dev->mmio + COUNTER_B_BASE_REG,
-                                                I8254_OSC_BASE_2MHZ,
-                                                I8254_IO8, 0);
-               devpriv->counter = comedi_8254_mm_init(dev->mmio +
-                                                      COUNTER_A_BASE_REG,
-                                                      I8254_OSC_BASE_2MHZ,
-                                                      I8254_IO8, 0);
+               dev->pacer =
+                   comedi_8254_mm_alloc(dev->mmio + COUNTER_B_BASE_REG,
+                                        I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
+               devpriv->counter =
+                   comedi_8254_mm_alloc(dev->mmio + COUNTER_A_BASE_REG,
+                                        I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
        } else {
-               dev->pacer = comedi_8254_init(dev->iobase + COUNTER_B_BASE_REG,
-                                             I8254_OSC_BASE_2MHZ,
-                                             I8254_IO8, 0);
-               devpriv->counter = comedi_8254_init(dev->iobase +
-                                                   COUNTER_A_BASE_REG,
-                                                   I8254_OSC_BASE_2MHZ,
-                                                   I8254_IO8, 0);
+               dev->pacer =
+                   comedi_8254_io_alloc(dev->iobase + COUNTER_B_BASE_REG,
+                                        I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
+               devpriv->counter =
+                   comedi_8254_io_alloc(dev->iobase + COUNTER_A_BASE_REG,
+                                        I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
        }
-       if (!dev->pacer || !devpriv->counter)
-               return -ENOMEM;
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
+       if (IS_ERR(devpriv->counter))
+               return PTR_ERR(devpriv->counter);
 
        ret = comedi_alloc_subdevices(dev, 5);
        if (ret)
 {
        struct labpc_private *devpriv = dev->private;
 
-       if (devpriv)
-               kfree(devpriv->counter);
+       if (devpriv) {
+               if (!IS_ERR(devpriv->counter))
+                       kfree(devpriv->counter);
+       }
 }
 EXPORT_SYMBOL_GPL(labpc_common_detach);
 
 
                        dev->irq = it->options[1];
        }
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCL711_TIMER_BASE,
-                                     I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCL711_TIMER_BASE,
+                                         I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
                return ret;
 
        if (board->irq_bits) {
-               dev->pacer = comedi_8254_init(dev->iobase + PCL812_TIMER_BASE,
-                                             I8254_OSC_BASE_2MHZ,
-                                             I8254_IO8, 0);
-               if (!dev->pacer)
-                       return -ENOMEM;
+               dev->pacer =
+                   comedi_8254_io_alloc(dev->iobase + PCL812_TIMER_BASE,
+                                        I8254_OSC_BASE_2MHZ, I8254_IO8, 0);
+               if (IS_ERR(dev->pacer))
+                       return PTR_ERR(dev->pacer);
 
                if ((1 << it->options[1]) & board->irq_bits) {
                        ret = request_irq(it->options[1], pcl812_interrupt, 0,
 
        /* an IRQ and DMA are required to support async commands */
        pcl816_alloc_irq_and_dma(dev, it);
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCL816_TIMER_BASE,
-                                     I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCL816_TIMER_BASE,
+                                         I8254_OSC_BASE_10MHZ, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        ret = comedi_alloc_subdevices(dev, 4);
        if (ret)
 
        else
                osc_base = I8254_OSC_BASE_1MHZ;
 
-       dev->pacer = comedi_8254_init(dev->iobase + PCL818_TIMER_BASE,
-                                     osc_base, I8254_IO8, 0);
-       if (!dev->pacer)
-               return -ENOMEM;
+       dev->pacer = comedi_8254_io_alloc(dev->iobase + PCL818_TIMER_BASE,
+                                         osc_base, I8254_IO8, 0);
+       if (IS_ERR(dev->pacer))
+               return PTR_ERR(dev->pacer);
 
        /* max sampling speed */
        devpriv->ns_min = board->ns_min;
 
 
        /* 8254 Timer/Counter subdevice */
        s = &dev->subdevices[3];
-       dev->pacer = comedi_8254_mm_init(dev->mmio + LAS0_8254_TIMER_BASE,
-                                        RTD_CLOCK_BASE, I8254_IO8, 2);
-       if (!dev->pacer)
+       dev->pacer = comedi_8254_mm_alloc(dev->mmio + LAS0_8254_TIMER_BASE,
+                                         RTD_CLOCK_BASE, I8254_IO8, 2);
+       if (IS_ERR(dev->pacer))
                return -ENOMEM;
 
        comedi_8254_subdevice_init(s, dev->pacer);
 
 void comedi_8254_subdevice_init(struct comedi_subdevice *s,
                                struct comedi_8254 *i8254);
 
-struct comedi_8254 *comedi_8254_init(unsigned long iobase,
-                                    unsigned int osc_base,
-                                    unsigned int iosize,
-                                    unsigned int regshift);
-struct comedi_8254 *comedi_8254_mm_init(void __iomem *mmio,
-                                       unsigned int osc_base,
-                                       unsigned int iosize,
-                                       unsigned int regshift);
+struct comedi_8254 *comedi_8254_io_alloc(unsigned long iobase,
+                                        unsigned int osc_base,
+                                        unsigned int iosize,
+                                        unsigned int regshift);
+struct comedi_8254 *comedi_8254_mm_alloc(void __iomem *mmio,
+                                        unsigned int osc_base,
+                                        unsigned int iosize,
+                                        unsigned int regshift);
 
 #endif /* _COMEDI_8254_H */