Commit c0c3c7df authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

staging: comedi: addi_apci_2032: remove boardinfo



This driver only supports a single board type. Remove the boardinfo
and just use the information directly where used.

Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0c33bdd0
Loading
Loading
Loading
Loading
+20 −81
Original line number Diff line number Diff line
@@ -5,30 +5,9 @@

#include "addi-data/hwdrv_apci2032.c"

static const struct addi_board apci2032_boardtypes[] = {
	{
		.pc_DriverName		= "apci2032",
		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
		.i_DeviceId		= 0x1004,
		.i_NbrDoChannel		= 32,
		.i_DoMaxdata		= 0xffffffff,
		.i_Timer		= 1,
		.interrupt		= v_APCI2032_Interrupt,
		.do_config		= i_APCI2032_ConfigDigitalOutput,
		.do_bits		= apci2032_do_insn_bits,
		.do_read		= i_APCI2032_ReadInterruptStatus,
		.timer_config		= i_APCI2032_ConfigWatchdog,
		.timer_write		= i_APCI2032_StartStopWriteWatchdog,
		.timer_read		= i_APCI2032_ReadWatchdog,
	},
};

static irqreturn_t v_ADDI_Interrupt(int irq, void *d)
{
	struct comedi_device *dev = d;
	const struct addi_board *this_board = comedi_board(dev);

	this_board->interrupt(irq, d);
	v_APCI2032_Interrupt(irq, d);
	return IRQ_RETVAL(1);
}

@@ -46,37 +25,15 @@ static int apci2032_reset(struct comedi_device *dev)
	return 0;
}

static const void *addi_find_boardinfo(struct comedi_device *dev,
				       struct pci_dev *pcidev)
{
	const void *p = dev->driver->board_name;
	const struct addi_board *this_board;
	int i;

	for (i = 0; i < dev->driver->num_names; i++) {
		this_board = p;
		if (this_board->i_VendorId == pcidev->vendor &&
		    this_board->i_DeviceId == pcidev->device)
			return this_board;
		p += dev->driver->offset;
	}
	return NULL;
}

static int apci2032_auto_attach(struct comedi_device *dev,
				unsigned long context_unused)
{
	struct pci_dev *pcidev = comedi_to_pci_dev(dev);
	const struct addi_board *this_board;
	struct addi_private *devpriv;
	struct comedi_subdevice *s;
	int ret;

	this_board = addi_find_boardinfo(dev, pcidev);
	if (!this_board)
		return -ENODEV;
	dev->board_ptr = this_board;
	dev->board_name = this_board->pc_DriverName;
	dev->board_name = dev->driver->driver_name;

	devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
	if (!devpriv)
@@ -101,42 +58,27 @@ static int apci2032_auto_attach(struct comedi_device *dev,

	/* Initialize the digital output subdevice */
	s = &dev->subdevices[0];
	if (this_board->i_NbrDoChannel) {
	s->type = COMEDI_SUBD_DO;
	s->subdev_flags =
		SDF_READABLE | SDF_WRITEABLE | SDF_GROUND | SDF_COMMON;
		s->n_chan = this_board->i_NbrDoChannel;
		s->maxdata = this_board->i_DoMaxdata;
		s->len_chanlist = this_board->i_NbrDoChannel;
	s->n_chan = 32;
	s->maxdata = 1;
	s->range_table = &range_digital;
		s->io_bits = 0xf;	/* all bits output */

		/* insn_config - for digital output memory */
		s->insn_config = this_board->do_config;
		s->insn_write = this_board->do_write;
		s->insn_bits = this_board->do_bits;
		s->insn_read = this_board->do_read;
	} else {
		s->type = COMEDI_SUBD_UNUSED;
	}
	s->insn_config = i_APCI2032_ConfigDigitalOutput;
	s->insn_bits = apci2032_do_insn_bits;
	s->insn_read = i_APCI2032_ReadInterruptStatus;

	/* Initialize the watchdog subdevice */
	s = &dev->subdevices[1];
	if (this_board->i_Timer) {
	s->type = COMEDI_SUBD_TIMER;
	s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON;
	s->n_chan = 1;
	s->maxdata = 0;
	s->len_chanlist = 1;
	s->range_table = &range_digital;

		s->insn_write = this_board->timer_write;
		s->insn_read = this_board->timer_read;
		s->insn_config = this_board->timer_config;
		s->insn_bits = this_board->timer_bits;
	} else {
		s->type = COMEDI_SUBD_UNUSED;
	}
	s->insn_write = i_APCI2032_StartStopWriteWatchdog;
	s->insn_read = i_APCI2032_ReadWatchdog;
	s->insn_config = i_APCI2032_ConfigWatchdog;

	apci2032_reset(dev);
	return 0;
@@ -164,9 +106,6 @@ static struct comedi_driver apci2032_driver = {
	.module		= THIS_MODULE,
	.auto_attach	= apci2032_auto_attach,
	.detach		= apci2032_detach,
	.num_names	= ARRAY_SIZE(apci2032_boardtypes),
	.board_name	= &apci2032_boardtypes[0].pc_DriverName,
	.offset		= sizeof(struct addi_board),
};

static int apci2032_pci_probe(struct pci_dev *dev,