14fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef/* 24fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef comedi/drivers/ni_mio_cs.c 34fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef Hardware driver for NI PCMCIA MIO E series cards 44fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 54fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef COMEDI - Linux Control and Measurement Device Interface 64fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef Copyright (C) 1997-2000 David A. Schleef <ds@schleef.org> 74fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 84fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef This program is free software; you can redistribute it and/or modify 94fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef it under the terms of the GNU General Public License as published by 104fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef the Free Software Foundation; either version 2 of the License, or 114fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef (at your option) any later version. 124fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 134fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef This program is distributed in the hope that it will be useful, 144fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef but WITHOUT ANY WARRANTY; without even the implied warranty of 154fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 164fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef GNU General Public License for more details. 174fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef*/ 184fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef/* 194fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefDriver: ni_mio_cs 204fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefDescription: National Instruments DAQCard E series 214fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefAuthor: ds 224fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefStatus: works 234fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefDevices: [National Instruments] DAQCard-AI-16XE-50 (ni_mio_cs), 244fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef DAQCard-AI-16E-4, DAQCard-6062E, DAQCard-6024E, DAQCard-6036E 254fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefUpdated: Thu Oct 23 19:43:17 CDT 2003 264fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 274fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefSee the notes in the ni_atmio.o driver. 284fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef*/ 294fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef/* 304fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef The real guts of the driver is in ni_mio_common.c, which is 314fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef included by all the E series drivers. 324fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 334fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef References for specifications: 344fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 354fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 341080a.pdf DAQCard E Series Register Level Programmer Manual 364fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 374fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef*/ 384fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 39ce157f8032bbd46d9427034c335b0afd751da25dH Hartley Sweeten#include <linux/module.h> 404fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include "../comedidev.h" 414fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 424fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include <linux/delay.h> 434fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 444fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include "ni_stc.h" 454fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include "8255.h" 464fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 474fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include <pcmcia/cistpl.h> 484fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#include <pcmcia/ds.h> 494fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 504fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef/* 514fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef * AT specific setup 524fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef */ 534fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 5472a822807272f8bb29a527e7e3c60efc7032a9baGreg Kroah-Hartmanstatic const struct ni_board_struct ni_boards[] = { 55885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten { 56885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-ai-16xe-50", 57b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x010d, 58885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_adchan = 16, 59db2255f5a0394fc5bc295a4b3e96667c46a7b9efH Hartley Sweeten .ai_maxdata = 0xffff, 60885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_fifo_depth = 1024, 61885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .gainlkup = ai_gain_8, 62885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_speed = 5000, 63885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { dac8800, dac8043 }, 64885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten }, { 65885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-ai-16e-4", 66b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x010c, 67885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_adchan = 16, 68db2255f5a0394fc5bc295a4b3e96667c46a7b9efH Hartley Sweeten .ai_maxdata = 0x0fff, 69885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_fifo_depth = 1024, 70885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .gainlkup = ai_gain_16, 71885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_speed = 4000, 72885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { mb88341 }, /* verified */ 73885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten }, { 74885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-6062E", 75b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x02c4, 76885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_adchan = 16, 77db2255f5a0394fc5bc295a4b3e96667c46a7b9efH Hartley Sweeten .ai_maxdata = 0x0fff, 78885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_fifo_depth = 8192, 79885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .gainlkup = ai_gain_16, 80885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_speed = 2000, 81885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_aochan = 2, 82c5f26499998476edf599b599cd88163305dee5b2H Hartley Sweeten .ao_maxdata = 0x0fff, 83885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_fifo_depth = 2048, 84885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_range_table = &range_bipolar10, 85885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_speed = 1176, 86885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { ad8804_debug }, /* verified */ 87885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten }, { 88885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten /* specs incorrect! */ 89885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-6024E", 90b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x075e, 91885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_adchan = 16, 92db2255f5a0394fc5bc295a4b3e96667c46a7b9efH Hartley Sweeten .ai_maxdata = 0x0fff, 93885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_fifo_depth = 1024, 94885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .gainlkup = ai_gain_4, 95885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_speed = 5000, 96885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_aochan = 2, 97c5f26499998476edf599b599cd88163305dee5b2H Hartley Sweeten .ao_maxdata = 0x0fff, 98885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_range_table = &range_bipolar10, 99885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_speed = 1000000, 100885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { ad8804_debug }, 101885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten }, { 102885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten /* specs incorrect! */ 103885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-6036E", 104b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x0245, 105885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_adchan = 16, 106db2255f5a0394fc5bc295a4b3e96667c46a7b9efH Hartley Sweeten .ai_maxdata = 0xffff, 107885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_fifo_depth = 1024, 108885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .alwaysdither = 1, 109885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .gainlkup = ai_gain_4, 110885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ai_speed = 5000, 111885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_aochan = 2, 112c5f26499998476edf599b599cd88163305dee5b2H Hartley Sweeten .ao_maxdata = 0xffff, 113885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_range_table = &range_bipolar10, 114885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_speed = 1000000, 115885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { ad8804_debug }, 1160a85b6f0ab0d2edb0d41b32697111ce0e4f43496Mithlesh Thukral }, 1174fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#if 0 118885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten { 119885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .name = "DAQCard-6715", 120b674f9df207dc7da7b77ada82e0fb072ba06267cH Hartley Sweeten .device_id = 0x0000, /* unknown */ 121885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .n_aochan = 8, 122c5f26499998476edf599b599cd88163305dee5b2H Hartley Sweeten .ao_maxdata = 0x0fff, 123885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .ao_671x = 8192, 124885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten .caldac = { mb88341, mb88341 }, 125885d8bce7f6e834c190ee3c60561c1c6c0e6174bH Hartley Sweeten }, 1264fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef#endif 1274fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef}; 1284fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 129ac63baf5517cb7c22d63e2c5d269994f3002c7e0H Hartley Sweeten#include "ni_mio_common.c" 1304fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 13142d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweetenstatic const void *ni_getboardtype(struct comedi_device *dev, 13242d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten struct pcmcia_device *link) 133616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten{ 13442d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten static const struct ni_board_struct *board; 135616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten int i; 1364fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 13742d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten for (i = 0; i < ARRAY_SIZE(ni_boards); i++) { 13842d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten board = &ni_boards[i]; 13942d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten if (board->device_id == link->card_id) 14042d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return board; 141616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten } 14242d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return NULL; 14342d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten} 14442d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten 14542d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweetenstatic int mio_pcmcia_config_loop(struct pcmcia_device *p_dev, void *priv_data) 14642d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten{ 14742d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten int base, ret; 148616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten 14942d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; 15042d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_16; 151616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten 15242d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten for (base = 0x000; base < 0x400; base += 0x20) { 15342d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten p_dev->resource[0]->start = base; 15442d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten ret = pcmcia_request_io(p_dev); 15542d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten if (!ret) 15642d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return 0; 15742d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten } 15842d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return -ENODEV; 159616b7a479e190e099f75073231c027fa393da5b2H Hartley Sweeten} 1600a85b6f0ab0d2edb0d41b32697111ce0e4f43496Mithlesh Thukral 16142d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweetenstatic int mio_cs_auto_attach(struct comedi_device *dev, 16242d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten unsigned long context) 1634fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef{ 16442d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten struct pcmcia_device *link = comedi_to_pcmcia_dev(dev); 16542d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten static const struct ni_board_struct *board; 1660e05c55226bffcdd3f1393d5ab74cd0d9faff385H Hartley Sweeten struct ni_private *devpriv; 1674fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef int ret; 1684fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 16942d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten board = ni_getboardtype(dev, link); 17042d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten if (!board) 17142d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return -ENODEV; 17242d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten dev->board_ptr = board; 17342d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten dev->board_name = board->name; 17442d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten 1755cd8e852629fc7f1bdaacbdd32fe4139b9944f8bH Hartley Sweeten link->config_flags |= CONF_AUTO_SET_IO | CONF_ENABLE_IRQ; 1765cd8e852629fc7f1bdaacbdd32fe4139b9944f8bH Hartley Sweeten ret = comedi_pcmcia_enable(dev, mio_pcmcia_config_loop); 17742d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten if (ret) 17842d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return ret; 1795cd8e852629fc7f1bdaacbdd32fe4139b9944f8bH Hartley Sweeten dev->iobase = link->resource[0]->start; 18042d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten 18182e9ee616a89f152f42c7051c5f9f5f0d7663652H Hartley Sweeten link->priv = dev; 18282e9ee616a89f152f42c7051c5f9f5f0d7663652H Hartley Sweeten ret = pcmcia_request_irq(link, ni_E_interrupt); 18382e9ee616a89f152f42c7051c5f9f5f0d7663652H Hartley Sweeten if (ret) 184678a6ff3e98ddbb049f3a012520c36da3065af4dH Hartley Sweeten return ret; 185678a6ff3e98ddbb049f3a012520c36da3065af4dH Hartley Sweeten dev->irq = link->irq; 1864fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 187c3744138715045adb316284ee7a1e608f0278f6cBill Pemberton ret = ni_alloc_private(dev); 1880e05c55226bffcdd3f1393d5ab74cd0d9faff385H Hartley Sweeten if (ret) 1894fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef return ret; 1904fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 191678a6ff3e98ddbb049f3a012520c36da3065af4dH Hartley Sweeten devpriv = dev->private; 1929c340ac934dbbfd46e776465b08391baac32d486H Hartley Sweeten 1931fa955ba355bfa6eb83b8fd9cc6064a561291d1fH Hartley Sweeten return ni_E_init(dev, 0, 1); 1944fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef} 1954fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 196abbe0796baa03610f3147c786c7c3f20b0050c1dH Hartley Sweetenstatic void mio_cs_detach(struct comedi_device *dev) 197abbe0796baa03610f3147c786c7c3f20b0050c1dH Hartley Sweeten{ 198abbe0796baa03610f3147c786c7c3f20b0050c1dH Hartley Sweeten mio_common_detach(dev); 1995cd8e852629fc7f1bdaacbdd32fe4139b9944f8bH Hartley Sweeten comedi_pcmcia_disable(dev); 200abbe0796baa03610f3147c786c7c3f20b0050c1dH Hartley Sweeten} 201abbe0796baa03610f3147c786c7c3f20b0050c1dH Hartley Sweeten 202aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweetenstatic struct comedi_driver driver_ni_mio_cs = { 203aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweeten .driver_name = "ni_mio_cs", 204aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweeten .module = THIS_MODULE, 20542d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten .auto_attach = mio_cs_auto_attach, 206aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweeten .detach = mio_cs_detach, 207aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweeten}; 208aaefe848e056474a583b43c13c4891fbda50caa4H Hartley Sweeten 209e5e7ff89e660e8e1a0861062197f3fd4d7576c41H Hartley Sweetenstatic int cs_attach(struct pcmcia_device *link) 210bea5b9035dae264e5da4a8a6aacc8bace0647c35H Hartley Sweeten{ 21142d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten return comedi_pcmcia_auto_config(link, &driver_ni_mio_cs); 212bea5b9035dae264e5da4a8a6aacc8bace0647c35H Hartley Sweeten} 213bea5b9035dae264e5da4a8a6aacc8bace0647c35H Hartley Sweeten 2142202a5a7490a9de282846ea8d4a56d0249e09033Joe Perchesstatic const struct pcmcia_device_id ni_mio_cs_ids[] = { 2154fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010d), /* DAQCard-ai-16xe-50 */ 2164fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010c), /* DAQCard-ai-16e-4 */ 2174fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_MANF_CARD(0x010b, 0x02c4), /* DAQCard-6062E */ 2184fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_MANF_CARD(0x010b, 0x075e), /* DAQCard-6024E */ 2194fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0245), /* DAQCard-6036E */ 2204fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef PCMCIA_DEVICE_NULL 2214fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef}; 2224fecf4a2a64c453ea8e57c166edb5385082e3948David SchleefMODULE_DEVICE_TABLE(pcmcia, ni_mio_cs_ids); 2234fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef 2243243785c39836fdded4ad76797941fad7e504227H Hartley Sweetenstatic struct pcmcia_driver ni_mio_cs_driver = { 225a7538b8271b2abe6fa4cc8b8ce684d2970de1bfbH Hartley Sweeten .name = "ni_mio_cs", 226a7538b8271b2abe6fa4cc8b8ce684d2970de1bfbH Hartley Sweeten .owner = THIS_MODULE, 227a7538b8271b2abe6fa4cc8b8ce684d2970de1bfbH Hartley Sweeten .id_table = ni_mio_cs_ids, 228a7538b8271b2abe6fa4cc8b8ce684d2970de1bfbH Hartley Sweeten .probe = cs_attach, 22942d1aeea844874961af00621f0a5584aa9b9e1a5H Hartley Sweeten .remove = comedi_pcmcia_auto_unconfig, 2304fecf4a2a64c453ea8e57c166edb5385082e3948David Schleef}; 231235bee772b0fa4cf059c669bcaa733da08b4894cPeter Huewemodule_comedi_pcmcia_driver(driver_ni_mio_cs, ni_mio_cs_driver); 23227629c600d6090af0f9d5af9a09bf9dd2aff5adfH Hartley Sweeten 23327629c600d6090af0f9d5af9a09bf9dd2aff5adfH Hartley SweetenMODULE_DESCRIPTION("Comedi driver for National Instruments DAQCard E series"); 23427629c600d6090af0f9d5af9a09bf9dd2aff5adfH Hartley SweetenMODULE_AUTHOR("David A. Schleef <ds@schleef.org>"); 23527629c600d6090af0f9d5af9a09bf9dd2aff5adfH Hartley SweetenMODULE_LICENSE("GPL"); 236