| From 647a6002cb41d358d9ac5de101a8a6dc74748a59 Mon Sep 17 00:00:00 2001 |
| From: Ian Abbott <abbotti@mev.co.uk> |
| Date: Wed, 21 Oct 2020 13:21:42 +0100 |
| Subject: staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice |
| |
| From: Ian Abbott <abbotti@mev.co.uk> |
| |
| commit 647a6002cb41d358d9ac5de101a8a6dc74748a59 upstream. |
| |
| The "cb_pcidas" driver supports asynchronous commands on the analog |
| output (AO) subdevice for those boards that have an AO FIFO. The code |
| (in `cb_pcidas_ao_check_chanlist()` and `cb_pcidas_ao_cmd()`) to |
| validate and set up the command supports output to a single channel or |
| to two channels simultaneously (the boards have two AO channels). |
| However, the code in `cb_pcidas_auto_attach()` that initializes the |
| subdevices neglects to initialize the AO subdevice's `len_chanlist` |
| member, leaving it set to 0, but the Comedi core will "correct" it to 1 |
| if the driver neglected to set it. This limits commands to use a single |
| channel (either channel 0 or 1), but the limit should be two channels. |
| Set the AO subdevice's `len_chanlist` member to be the same value as the |
| `n_chan` member, which will be 2. |
| |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Ian Abbott <abbotti@mev.co.uk> |
| Link: https://lore.kernel.org/r/20201021122142.81628-1-abbotti@mev.co.uk |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/staging/comedi/drivers/cb_pcidas.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/staging/comedi/drivers/cb_pcidas.c |
| +++ b/drivers/staging/comedi/drivers/cb_pcidas.c |
| @@ -1342,6 +1342,7 @@ static int cb_pcidas_auto_attach(struct |
| if (dev->irq && board->has_ao_fifo) { |
| dev->write_subdev = s; |
| s->subdev_flags |= SDF_CMD_WRITE; |
| + s->len_chanlist = s->n_chan; |
| s->do_cmdtest = cb_pcidas_ao_cmdtest; |
| s->do_cmd = cb_pcidas_ao_cmd; |
| s->cancel = cb_pcidas_ao_cancel; |