So of the boards supported by this driver do not have analog inputs and some don't have analog outputs. Move the calls that reset these subdevices during the (*attach) by ni_E_init() so they only happen if the subdevices are present. Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregk@xxxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/ni_mio_common.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c index 6d1754f..e60b9e6 100644 --- a/drivers/staging/comedi/drivers/ni_mio_common.c +++ b/drivers/staging/comedi/drivers/ni_mio_common.c @@ -5544,6 +5544,9 @@ static int ni_E_init(struct comedi_device *dev, if (devpriv->mite) s->async_dma_dir = DMA_FROM_DEVICE; } + + /* reset the analog input configuration */ + ni_ai_reset(dev, s); } else { s->type = COMEDI_SUBD_UNUSED; } @@ -5582,6 +5585,9 @@ static int ni_E_init(struct comedi_device *dev, if (devpriv->is_67xx) init_ao_67xx(dev, s); + + /* reset the analog output configuration */ + ni_ao_reset(dev, s); } else { s->type = COMEDI_SUBD_UNUSED; } @@ -5779,14 +5785,6 @@ static int ni_E_init(struct comedi_device *dev, s->insn_write = &ni_freq_out_insn_write; s->insn_config = &ni_freq_out_insn_config; - /* ai configuration */ - s = &dev->subdevices[NI_AI_SUBDEV]; - ni_ai_reset(dev, s); - - /* analog output configuration */ - s = &dev->subdevices[NI_AO_SUBDEV]; - ni_ao_reset(dev, s); - if (dev->irq) { ni_stc_writew(dev, (irq_polarity ? Interrupt_Output_Polarity : 0) | -- 1.9.3 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel