staging: comedi: ni_pcidio: implement INSN_CONFIG_GET_CMD_TIMING_CONSTRAINTS
authorSpencer E. Olson <olsonse@umich.edu>
Wed, 19 Sep 2018 16:51:05 +0000 (10:51 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Oct 2018 13:27:47 +0000 (15:27 +0200)
Adds implementation of the new INSN_CONFIG_GET_CMD_TIMING_CONSTRAINTS
instruction.  This patch also adds data for this implementation, based on
spec sheets from NI.

Signed-off-by: Spencer E. Olson <olsonse@umich.edu>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/ni_pcidio.c

index 6692af5..b9a0dc6 100644 (file)
@@ -260,18 +260,22 @@ enum nidio_boardid {
 struct nidio_board {
        const char *name;
        unsigned int uses_firmware:1;
+       unsigned int dio_speed;
 };
 
 static const struct nidio_board nidio_boards[] = {
        [BOARD_PCIDIO_32HS] = {
                .name           = "pci-dio-32hs",
+               .dio_speed      = 50,
        },
        [BOARD_PXI6533] = {
                .name           = "pxi-6533",
+               .dio_speed      = 50,
        },
        [BOARD_PCI6534] = {
                .name           = "pci-6534",
                .uses_firmware  = 1,
+               .dio_speed      = 50,
        },
 };
 
@@ -467,6 +471,15 @@ static int ni_pcidio_insn_config(struct comedi_device *dev,
 {
        int ret;
 
+       if (data[0] == INSN_CONFIG_GET_CMD_TIMING_CONSTRAINTS) {
+               const struct nidio_board *board = dev->board_ptr;
+
+               /* we don't care about actual channels */
+               data[1] = board->dio_speed;
+               data[2] = 0;
+               return 0;
+       }
+
        ret = comedi_dio_insn_config(dev, s, insn, data, 0);
        if (ret)
                return ret;