From eeca0caa84169dcff5e67da6dee74b785f12a4f4 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 14 Jul 2014 12:24:00 -0700 Subject: [PATCH] staging: comedi: ni_mio_common: only reset the ai/ao subdevices if they exist 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 Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- 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 6d1754f98c2e..e60b9e696233 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) | -- 2.11.0