Commit fade5e5b authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman
Browse files

comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init()



`comedi_8254_init()` and `comedi_8254_mm_init()` return `NULL` on
failure, but the failure is not necessarily due to lack of memory.
Change them to return an `ERR_PTR` value on failure and rename the
functions to make it obvious the API has changed.  `comedi_8254_init()`
has been replaced with `comedi_8254_io_alloc()`, and
`comedi_8254_mm_init()` has been replaced with `comedi_8254_mm_alloc()`.

Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20230913170712.111719-4-abbotti@mev.co.uk


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c62f5032
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ static void comedi_device_detach_cleanup(struct comedi_device *dev)
		dev->n_subdevices = 0;
	}
	kfree(dev->private);
	if (!IS_ERR(dev->pacer))
		kfree(dev->pacer);
	dev->private = NULL;
	dev->pacer = NULL;
+4 −4
Original line number Diff line number Diff line
@@ -647,10 +647,10 @@ static int pci9111_auto_attach(struct comedi_device *dev,
			dev->irq = pcidev->irq;
	}

	dev->pacer = comedi_8254_init(dev->iobase + PCI9111_8254_BASE_REG,
	dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI9111_8254_BASE_REG,
					  I8254_OSC_BASE_2MHZ, I8254_IO16, 0);
	if (!dev->pacer)
		return -ENOMEM;
	if (IS_ERR(dev->pacer))
		return PTR_ERR(dev->pacer);

	ret = comedi_alloc_subdevices(dev, 4);
	if (ret)
+4 −4
Original line number Diff line number Diff line
@@ -1524,10 +1524,10 @@ static int pci9118_common_attach(struct comedi_device *dev,
	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,
	dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI9118_TIMER_BASE,
					  I8254_OSC_BASE_4MHZ, I8254_IO32, 0);
	if (!dev->pacer)
		return -ENOMEM;
	if (IS_ERR(dev->pacer))
		return PTR_ERR(dev->pacer);

	pci9118_reset(dev);

+4 −4
Original line number Diff line number Diff line
@@ -767,10 +767,10 @@ static int pci1710_auto_attach(struct comedi_device *dev,
		return ret;
	dev->iobase = pci_resource_start(pcidev, 2);

	dev->pacer = comedi_8254_init(dev->iobase + PCI171X_TIMER_BASE,
	dev->pacer = comedi_8254_io_alloc(dev->iobase + PCI171X_TIMER_BASE,
					  I8254_OSC_BASE_10MHZ, I8254_IO16, 0);
	if (!dev->pacer)
		return -ENOMEM;
	if (IS_ERR(dev->pacer))
		return PTR_ERR(dev->pacer);

	n_subdevices = 1;	/* all boards have analog inputs */
	if (board->has_ao)
+5 −5
Original line number Diff line number Diff line
@@ -664,11 +664,11 @@ static int pci_dio_auto_attach(struct comedi_device *dev,
	if (board->timer_regbase) {
		s = &dev->subdevices[subdev++];

		dev->pacer = comedi_8254_init(dev->iobase +
					      board->timer_regbase,
		dev->pacer =
		    comedi_8254_io_alloc(dev->iobase + board->timer_regbase,
					 0, I8254_IO8, 0);
		if (!dev->pacer)
			return -ENOMEM;
		if (IS_ERR(dev->pacer))
			return PTR_ERR(dev->pacer);

		comedi_8254_subdevice_init(s, dev->pacer);
	}
Loading