Browse Source

staging: comedi: me_daq: analog output subdevice could be unused

One of the boards supported by this driver does not have analog
outputs. Fix the attach code to account for this.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
H Hartley Sweeten 12 years ago
parent
commit
43d51f885a
1 changed files with 12 additions and 8 deletions
  1. 12 8
      drivers/staging/comedi/drivers/me_daq.c

+ 12 - 8
drivers/staging/comedi/drivers/me_daq.c

@@ -735,14 +735,18 @@ static int me_attach_pci(struct comedi_device *dev, struct pci_dev *pcidev)
 	s->do_cmd = me_ai_do_cmd;
 
 	s = &dev->subdevices[1];
-	s->type = COMEDI_SUBD_AO;
-	s->subdev_flags = SDF_WRITEABLE | SDF_COMMON;
-	s->n_chan = board->ao_channel_nbr;
-	s->maxdata = board->ao_resolution_mask;
-	s->len_chanlist = board->ao_channel_nbr;
-	s->range_table = board->ao_range_list;
-	s->insn_read = me_ao_insn_read;
-	s->insn_write = me_ao_insn_write;
+	if (board->ao_channel_nbr) {
+		s->type = COMEDI_SUBD_AO;
+		s->subdev_flags = SDF_WRITEABLE | SDF_COMMON;
+		s->n_chan = board->ao_channel_nbr;
+		s->maxdata = board->ao_resolution_mask;
+		s->len_chanlist = board->ao_channel_nbr;
+		s->range_table = board->ao_range_list;
+		s->insn_read = me_ao_insn_read;
+		s->insn_write = me_ao_insn_write;
+	} else {
+		s->type = COMEDI_SUBD_UNUSED;
+	}
 
 	s = &dev->subdevices[2];
 	s->type = COMEDI_SUBD_DIO;