From: H Hartley Sweeten Date: Mon, 12 Oct 2015 23:07:09 +0000 (-0700) Subject: staging: comedi: cb_das16_cs: the DAC16/16-AO only has 4 digital I/O X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b93c2862b95d4c4021aeaf6c18b89e11e245ebab;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git staging: comedi: cb_das16_cs: the DAC16/16-AO only has 4 digital I/O The PC-CARD DAS16/16-AO board only has 4 digital I/O channels. The other boards supported by this driver have 8. Add the boardinfo to correctly initialize the subdevice. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c index 0769878f082f..45db386331aa 100644 --- a/drivers/staging/comedi/drivers/cb_das16_cs.c +++ b/drivers/staging/comedi/drivers/cb_das16_cs.c @@ -100,6 +100,7 @@ struct das16cs_board { const char *name; int device_id; unsigned int has_ao:1; + unsigned int has_4dio:1; }; static const struct das16cs_board das16cs_boards[] = { @@ -107,6 +108,7 @@ static const struct das16cs_board das16cs_boards[] = { .name = "PC-CARD DAS16/16-AO", .device_id = 0x0039, .has_ao = 1, + .has_4dio = 1, }, { .name = "PCM-DAS16s/16", .device_id = 0x4009, @@ -407,11 +409,11 @@ static int das16cs_auto_attach(struct comedi_device *dev, s->type = COMEDI_SUBD_UNUSED; } + /* Digital I/O subdevice */ s = &dev->subdevices[2]; - /* digital i/o subdevice */ s->type = COMEDI_SUBD_DIO; s->subdev_flags = SDF_READABLE | SDF_WRITABLE; - s->n_chan = 8; + s->n_chan = board->has_4dio ? 4 : 8; s->maxdata = 1; s->range_table = &range_digital; s->insn_bits = das16cs_dio_insn_bits;