From 1496e5961113860e97e8fc39c4fdc0e83c1fbcab Mon Sep 17 00:00:00 2001 From: Chase Southwood Date: Sat, 12 Jul 2014 17:44:09 -0500 Subject: [PATCH] staging: comedi: addi_apci_1564: use addi_watchdog module to init watchdog subdevice Use the addi_watchdog module to provide support for the watchdog subdevice. Also, rearrange the subdevice init blocks so that the order makes sense. Digital input/output subdevices and subdevices for DI/DO interrupt support, followed by timer/counter/watchdog subdevices is the new order. Signed-off-by: Chase Southwood Reviewed-by: Ian Abbott Cc: H Hartley Sweeten Signed-off-by: Greg Kroah-Hartman --- .../staging/comedi/drivers/addi_apci_1564.c | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/drivers/staging/comedi/drivers/addi_apci_1564.c b/drivers/staging/comedi/drivers/addi_apci_1564.c index 16f3b69871ef..190b02663bd0 100644 --- a/drivers/staging/comedi/drivers/addi_apci_1564.c +++ b/drivers/staging/comedi/drivers/addi_apci_1564.c @@ -373,7 +373,7 @@ static int apci1564_auto_attach(struct comedi_device *dev, dev->irq = pcidev->irq; } - ret = comedi_alloc_subdevices(dev, 4); + ret = comedi_alloc_subdevices(dev, 5); if (ret) return ret; @@ -397,20 +397,8 @@ static int apci1564_auto_attach(struct comedi_device *dev, s->insn_bits = apci1564_do_insn_bits; s->insn_read = apci1564_do_read; - /* Allocate and Initialise Timer Subdevice Structures */ - s = &dev->subdevices[2]; - s->type = COMEDI_SUBD_TIMER; - s->subdev_flags = SDF_WRITEABLE; - s->n_chan = 1; - s->maxdata = 0; - s->len_chanlist = 1; - s->range_table = &range_digital; - s->insn_write = apci1564_timer_write; - s->insn_read = apci1564_timer_read; - s->insn_config = apci1564_timer_config; - /* Change-Of-State (COS) interrupt subdevice */ - s = &dev->subdevices[3]; + s = &dev->subdevices[2]; if (dev->irq) { dev->read_subdev = s; s->type = COMEDI_SUBD_DI; @@ -428,6 +416,24 @@ static int apci1564_auto_attach(struct comedi_device *dev, s->type = COMEDI_SUBD_UNUSED; } + /* Allocate and Initialise Timer Subdevice Structures */ + s = &dev->subdevices[3]; + s->type = COMEDI_SUBD_TIMER; + s->subdev_flags = SDF_WRITEABLE; + s->n_chan = 1; + s->maxdata = 0; + s->len_chanlist = 1; + s->range_table = &range_digital; + s->insn_write = apci1564_timer_write; + s->insn_read = apci1564_timer_read; + s->insn_config = apci1564_timer_config; + + /* Initialize the watchdog subdevice */ + s = &dev->subdevices[4]; + ret = addi_watchdog_init(s, devpriv->amcc_iobase + APCI1564_WDOG_REG); + if (ret) + return ret; + return 0; } -- 2.34.1