From 694dcf501c35b6afcbc90ae3b4f3fea0b59f9888 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Wed, 23 Jan 2013 12:42:39 -0700 Subject: [PATCH] staging: comedi: addi_apci_3501: only allocate needed subdevices The addi-data "common" code always allocated 7 subdevices. This driver only uses 5. Change the allocation and remove the unused subdevices. Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/addi_apci_3501.c | 29 +++++++++---------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/drivers/staging/comedi/drivers/addi_apci_3501.c b/drivers/staging/comedi/drivers/addi_apci_3501.c index 942386f..6e331d4 100644 --- a/drivers/staging/comedi/drivers/addi_apci_3501.c +++ b/drivers/staging/comedi/drivers/addi_apci_3501.c @@ -225,7 +225,7 @@ static int apci3501_auto_attach(struct comedi_device *dev, struct addi_private *devpriv; struct comedi_subdevice *s; int ao_n_chan; - int ret, n_subdevices; + int ret; dev->board_name = dev->driver->driver_name; @@ -250,17 +250,12 @@ static int apci3501_auto_attach(struct comedi_device *dev, dev->irq = pcidev->irq; } - n_subdevices = 7; - ret = comedi_alloc_subdevices(dev, n_subdevices); + ret = comedi_alloc_subdevices(dev, 5); if (ret) return ret; - /* Allocate and Initialise AI Subdevice Structures */ + /* Initialize the analog output subdevice */ s = &dev->subdevices[0]; - s->type = COMEDI_SUBD_UNUSED; - - /* Allocate and Initialise AO Subdevice Structures */ - s = &dev->subdevices[1]; if (ao_n_chan) { s->type = COMEDI_SUBD_AO; s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; @@ -273,8 +268,8 @@ static int apci3501_auto_attach(struct comedi_device *dev, s->type = COMEDI_SUBD_UNUSED; } - /* Allocate and Initialise DI Subdevice Structures */ - s = &dev->subdevices[2]; + /* Initialize the digital input subdevice */ + s = &dev->subdevices[1]; s->type = COMEDI_SUBD_DI; s->subdev_flags = SDF_READABLE; s->n_chan = 2; @@ -283,7 +278,7 @@ static int apci3501_auto_attach(struct comedi_device *dev, s->insn_bits = apci3501_di_insn_bits; /* Initialize the digital output subdevice */ - s = &dev->subdevices[3]; + s = &dev->subdevices[2]; s->type = COMEDI_SUBD_DO; s->subdev_flags = SDF_WRITEABLE; s->n_chan = 2; @@ -291,8 +286,8 @@ static int apci3501_auto_attach(struct comedi_device *dev, s->range_table = &range_digital; s->insn_bits = apci3501_do_insn_bits; - /* Allocate and Initialise Timer Subdevice Structures */ - s = &dev->subdevices[4]; + /* Initialize the timer/watchdog subdevice */ + s = &dev->subdevices[3]; s->type = COMEDI_SUBD_TIMER; s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; s->n_chan = 1; @@ -303,12 +298,8 @@ static int apci3501_auto_attach(struct comedi_device *dev, s->insn_read = i_APCI3501_ReadTimerCounterWatchdog; s->insn_config = i_APCI3501_ConfigTimerCounterWatchdog; - /* Allocate and Initialise TTL */ - s = &dev->subdevices[5]; - s->type = COMEDI_SUBD_UNUSED; - - /* EEPROM */ - s = &dev->subdevices[6]; + /* Initialize the eeprom subdevice */ + s = &dev->subdevices[4]; s->type = COMEDI_SUBD_MEMORY; s->subdev_flags = SDF_READABLE | SDF_INTERNAL; s->n_chan = 256; -- 2.7.4