linux/drivers/staging/comedi/drivers/cb_pcimdas.c
<<
>>
Prefs
   1/*
   2 * comedi/drivers/cb_pcimdas.c
   3 * Comedi driver for Computer Boards PCIM-DAS1602/16 and PCIe-DAS1602/16
   4 *
   5 * COMEDI - Linux Control and Measurement Device Interface
   6 * Copyright (C) 2000 David A. Schleef <ds@schleef.org>
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License as published by
  10 * the Free Software Foundation; either version 2 of the License, or
  11 * (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 */
  18
  19/*
  20 * Driver: cb_pcimdas
  21 * Description: Measurement Computing PCI Migration series boards
  22 * Devices: [ComputerBoards] PCIM-DAS1602/16 (cb_pcimdas), PCIe-DAS1602/16
  23 * Author: Richard Bytheway
  24 * Updated: Mon, 13 Oct 2014 11:57:39 +0000
  25 * Status: experimental
  26 *
  27 * Written to support the PCIM-DAS1602/16 and PCIe-DAS1602/16.
  28 *
  29 * Configuration Options:
  30 *   none
  31 *
  32 * Manual configuration of PCI(e) cards is not supported; they are configured
  33 * automatically.
  34 *
  35 * Developed from cb_pcidas and skel by Richard Bytheway (mocelet@sucs.org).
  36 * Only supports DIO, AO and simple AI in it's present form.
  37 * No interrupts, multi channel or FIFO AI,
  38 * although the card looks like it could support this.
  39 *
  40 * http://www.mccdaq.com/PDFs/Manuals/pcim-das1602-16.pdf
  41 * http://www.mccdaq.com/PDFs/Manuals/pcie-das1602-16.pdf
  42 */
  43
  44#include <linux/module.h>
  45#include <linux/interrupt.h>
  46
  47#include "../comedi_pci.h"
  48
  49#include "comedi_8254.h"
  50#include "plx9052.h"
  51#include "8255.h"
  52
  53/*
  54 * PCI Bar 1 Register map
  55 * see plx9052.h for register and bit defines
  56 */
  57
  58/*
  59 * PCI Bar 2 Register map (devpriv->daqio)
  60 */
  61#define PCIMDAS_AI_REG                  0x00
  62#define PCIMDAS_AI_SOFTTRIG_REG         0x00
  63#define PCIMDAS_AO_REG(x)               (0x02 + ((x) * 2))
  64
  65/*
  66 * PCI Bar 3 Register map (devpriv->BADR3)
  67 */
  68#define PCIMDAS_MUX_REG                 0x00
  69#define PCIMDAS_MUX(_lo, _hi)           ((_lo) | ((_hi) << 4))
  70#define PCIMDAS_DI_DO_REG               0x01
  71#define PCIMDAS_STATUS_REG              0x02
  72#define PCIMDAS_STATUS_EOC              BIT(7)
  73#define PCIMDAS_STATUS_UB               BIT(6)
  74#define PCIMDAS_STATUS_MUX              BIT(5)
  75#define PCIMDAS_STATUS_CLK              BIT(4)
  76#define PCIMDAS_STATUS_TO_CURR_MUX(x)   ((x) & 0xf)
  77#define PCIMDAS_CONV_STATUS_REG         0x03
  78#define PCIMDAS_CONV_STATUS_EOC         BIT(7)
  79#define PCIMDAS_CONV_STATUS_EOB         BIT(6)
  80#define PCIMDAS_CONV_STATUS_EOA         BIT(5)
  81#define PCIMDAS_CONV_STATUS_FNE         BIT(4)
  82#define PCIMDAS_CONV_STATUS_FHF         BIT(3)
  83#define PCIMDAS_CONV_STATUS_OVERRUN     BIT(2)
  84#define PCIMDAS_IRQ_REG                 0x04
  85#define PCIMDAS_IRQ_INTE                BIT(7)
  86#define PCIMDAS_IRQ_INT                 BIT(6)
  87#define PCIMDAS_IRQ_OVERRUN             BIT(4)
  88#define PCIMDAS_IRQ_EOA                 BIT(3)
  89#define PCIMDAS_IRQ_EOA_INT_SEL         BIT(2)
  90#define PCIMDAS_IRQ_INTSEL(x)           ((x) << 0)
  91#define PCIMDAS_IRQ_INTSEL_EOC          PCIMDAS_IRQ_INTSEL(0)
  92#define PCIMDAS_IRQ_INTSEL_FNE          PCIMDAS_IRQ_INTSEL(1)
  93#define PCIMDAS_IRQ_INTSEL_EOB          PCIMDAS_IRQ_INTSEL(2)
  94#define PCIMDAS_IRQ_INTSEL_FHF_EOA      PCIMDAS_IRQ_INTSEL(3)
  95#define PCIMDAS_PACER_REG               0x05
  96#define PCIMDAS_PACER_GATE_STATUS       BIT(6)
  97#define PCIMDAS_PACER_GATE_POL          BIT(5)
  98#define PCIMDAS_PACER_GATE_LATCH        BIT(4)
  99#define PCIMDAS_PACER_GATE_EN           BIT(3)
 100#define PCIMDAS_PACER_EXT_PACER_POL     BIT(2)
 101#define PCIMDAS_PACER_SRC(x)            ((x) << 0)
 102#define PCIMDAS_PACER_SRC_POLLED        PCIMDAS_PACER_SRC(0)
 103#define PCIMDAS_PACER_SRC_EXT           PCIMDAS_PACER_SRC(2)
 104#define PCIMDAS_PACER_SRC_INT           PCIMDAS_PACER_SRC(3)
 105#define PCIMDAS_PACER_SRC_MASK          (3 << 0)
 106#define PCIMDAS_BURST_REG               0x06
 107#define PCIMDAS_BURST_BME               BIT(1)
 108#define PCIMDAS_BURST_CONV_EN           BIT(0)
 109#define PCIMDAS_GAIN_REG                0x07
 110#define PCIMDAS_8254_BASE               0x08
 111#define PCIMDAS_USER_CNTR_REG           0x0c
 1v2.6.12PCIT_CONV_EN           BIT(0)
 103#defineRESIDUE_MSB"+code=PCIMDAS_USER_CNTR_RERESIDUE_MSB"+co>PCIMDAS_CONV_STd class="sref">BIT(0)
 104#defineRESIDUE_LSB"+code=PCIMDAS_USER_CNTR_RERESIDUE_LSB"+co>PCIMDAS_CONV_STe class="sref">BIT(0)
BIT(0)
  16/*
  17 * PCI 3 Reiobaser map (devpriv->BADR3)
  38 */
 109#definers/8href="+code=PCIMDAS_8254_BASE" 5lass="sref">PCIMDAS_8254_BA                 0x00

	 notst structe="L109"> 109 109                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BIT0),/a>                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BI5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BI2.5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BIT.2T" class="sref">BIT(5)
BIT(5)
8255.h"
 *

	 notst structe="L109"> 109 109                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BIT0),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BI5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BI2.5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BIT.2T" class="sref">BIT(5)
BIT(5)
8255.h"
  18
  39/*
  40/*
  41
ss isation ="comme-readable./*
  42 */

	 notst structe="L109"> 109 109                 0x00
PCIM6, {/a>                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BIT0),/a>                 0x00
PCIMDAS_GAINT_CONV_EN    P_RANG="+code=PCIMDAS_  P_RANG=de=BI5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BIT0),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  UNI_RANG="+code=PCIMDAS_UNI_RANG=de=BI5),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  RANG=_="">
code=PCIMDAS_RANG=_=""de=BI-1, 1),/a>                 0x00
PCIMDAS_GAINT_CONV_EN  RANG=_="">
code=PCIMDAS_RANG=_=""de=BI0, 1)/a>                 0x00
BIT(5)
8255.h"
  43
  54/*
  55
  56 sevass="b_pcommen"drives keepnly ilar in AI ment"> progli structuree that it will be useful,
  17ss="cggest movn>
Y WARvariable ss=s e structedi_8254dpan c that it will be useful,
  58 struct./*
  59 */
 109  54 base addressess> */
PCIMunsigneent">
Y="L109"> 1098255.h"
PCIMunsigneent">
Y="L109"> 1098255.h"
8255.h"
BIT(0)

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNunsigneent">
Y="L109"> 109
code=PCIMDAS_onten"""+cod/a>                 0x00
 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 1098255.h"
  43
PCIM="L109"> 109 109 109 109  71#define 8255.h"
PCIMif"sref">x)     span c"+code=PCIMDAS_span cs="lf=x" cle="L71">  71#define PCIMDAS_GAINreturn 0s="fref">8255.h"
PCIMreturn -e="L71">  718255.h"
BIT(5)
 *

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNunsigneeninte><"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 109 109 109 1098255.h"
PCIMinte="L109"> 1098255.h"
PCIMunsigneeninte="L109"> 1098255.h"
PCIMinte="L109"> 1098255.h"
8255.h"
PCIMine" name="L54">  54  opan class=" swMinitin cl readss="coma st;
le> * No in> */
  43
PCIMine" name="L54">  54 not suppoammenswMinitin cl readn> */
PCIM="L109"> 109 109 109 109  71#define 8255.h"
PCIMif"sref">x)     d"+code=PCIMDAS_ds="lf=x" cle="L71">  71#define PC) != <"L109"> 109#define PCIM)D{/a>                 0x00
PCIMDAS_GAINT_CONV_EN  d"+code=PCIMDAS_ds="lf=x" c= ~e="L71">  71#define PCs="fref">8255.h"
PCIMDAS_GAINT_CONV_EN  d"+code=PCIMDAS_ds="lf|= <"L109"> 109#define PCIMs="fref">8255.h"
PCIMDAS_GAINT_CONV_EN  outb"+code=PCIMDAS_outbde=BI<"L109"> 109gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define 8255.h"
PCIM} class="sref">BIT(5)
8255.h"
PCIMine" name="L54">  54 set burstn>
 off, notiverions oNY> */
PCIM="L109"> 109 109#define Plo" class="sref">gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define 8255.h"
  64
PCIMine" name="L54">  54 set rangeg> */
PCIM="L109"> 109 109gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define 8255.h"
  57
PCIMine" name="L54">  54 set muxammenst;
le> * No inscaNY> */
PCIM="L109"> 109 109#define PCIMDAS * N"+code=PCIMDAS_d* N"srelo" class="sref"> * N"+code=PCIMDAS_d* N"sre)lo" class="sref">gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define 8255.h"
  54 notivet n sx" less> */
PCIMmmens="sref">PCIMDASn"+code=PCIMDAS_ns="lf= 0cle="L71">  71 109 109  71                 0x00
PCIMDAS_GAINTne" name="L54">  54 trigger notiverions> */
PCIMDAS_GAINT_CONV_EN  outw"+code=PCIMDAS_outwclass0lo" class="sref">gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define PCI)s="fref">8255.h"
BIT(0)
PCIMDAS_GAINTne" name="L54">  54 waitMmmennotiverionsto endn> */
PCIMDAS_GAINT_CONV_EN  ret"+code=PCIMDAS_rets="lf= <"L109"> 109 109 109 109 staging/c_ai_eoc"+code=PCIMDAS_dstaging/c_ai_eocde=B, 0)s="fref">8255.h"
PCIMDAS_GAINif"sT_CONV_EN  ret"+code=PCIMDAS_rets="ld/a>                 0x00
PCIMDAS_GAINNNNNNNNNreturn ="L109"> 1098255.h"
PCIMDAS_GAINTne" name="L54">  54 readndata > */
PCIMDAS_GAINT_CONV_EN  gata"+code=PCIMDAS_gita"+co[e="L71">  71 109 109 109  71#define PCI)s="fref">8255.h"
PCIM} class="sref">BIT(5)
  64
PCIMine" name="L54">  54 return s e number of sx" lessread/writtens> */
PCIMreturn ="L109"> 1098255.h"
BIT(5)
  18

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNunsigneeninte><"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 109 109 109  718255.h"
PCIMinte="L109"> 1098255.h"
  18
PCIMmmens="sref">PCIMDASi"+code=PCIMDAS_is="lf= 0cle="L71">  71 109 109  71                 0x00
PCIMDAS_GAINT_CONV_EN  val"+code=PCIMDAS_val"sref= <"L109"> 109  718255.h"
PCIMDAS_GAINT_CONV_EN  outw"+code=PCIMDAS_outwclassT_CONV_EN  val"+code=PCIMDAS_val"srelo" class="sref">gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#define Oaode=PCIMDAS_AI_SOFTTRIG_REGO ef">PCIs="sref">PCIMDAS * N"+code=PCIMDAS_d* N"sre))s="fref">8255.h"
PCIM} class="sref">BIT(5)
PCIM="L109"> 109 109  71 1098255.h"
  64
PCIMreturn ="L109"> 109 109  64
BIT(5)
  57

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNunsigneeninte><"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h"
PCIMunsigneeninte="L109"> 1098255.h"
BIT(0)
PCIM="L109"> 109 109 109 109  71#defineDI_DOaode=PCIMDAS_AI_SOFTTRIG_REDI_DOaodesref)s="fref">8255.h"
  57
PCIM="L109"> 109 1098255.h"
 *
PCIMreturn ="L109"> 109 109  64
BIT(5)
BIT(5)

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNunsigneeninte><"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h"
 *
PCIMif"sT_CONV_EN  di_8254dio_upgite_.c">c"+code=PCIMDAS_di_8254dio_upgite_.c">cde=BI<"L109"> 109 109                 0x00
PCIMDAS_GAINT_CONV_EN  outb"+code=PCIMDAS_outbde=BI<"L109"> 109 109c"+code=PCIMDAS_.c">cde=Blo" class="sref">gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#defineDI_DOaode=PCIMDAS_AI_SOFTTRIG_REDI_DOaodesref)s="fref">8255.h"
BIT(5)
PCIM="L109"> 109 109 109c"+code=PCIMDAS_.c">cde=Bs="fref">8255.h"
  64
PCIMreturn ="L109"> 109 109  64
BIT(5)
  57

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNNNNNNNstructe="L109"> 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNNNNNNNunsigneeninte><"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h&qux00
PCIMunsigneeninte="L109"> 1098255.h&qux00
BIT(0)
PCIMswitch"sT_CONV_EN  gata"+code=PCIMDAS_gita"+co[0])D{/a>                 0x00
PCIMcase T_CONV_EN  INSNass=FIG_SET_CLOCKass="+code=PCIMDAS_INSNass=FIG_SET_CLOCKass=s="l:/a>                 0x00
PCIMDAS_GAINswitch"sT_CONV_EN  gata"+code=PCIMDAS_gita"+co[1])D{/a>                 0x00
PCIMDAS_GAINcase 0:Mine" name="L54">  54 internal 100 kHznamocks> */
PCIMDAS_GAINNNNNNNNN="L109"> 109 1098255.h&qux00
PCIMDAS_GAINNNNNNNNNbreaks="fref">8255.h&qux00
PCIMDAS_GAINcase 1:Mine" name="L54">  54 external clk oNYpin 21s> */
PCIMDAS_GAINNNNNNNNN="L109"> 1098255.h"
PCIMDAS_GAINNNNNNNNNbreaks="fref">8255.h&qux00
PCIMDAS_GAINdefault:/a>                 0x00
PCIMDAS_GAINNNNNNNNNreturn -e="L71">  718255.h&qux00
PCIMDAS_GAIN} class="sref">BIT(5)
PCIMDAS_GAINT_CONV_EN  outb"+code=PCIMDAS_outbde=BI<"L109"> 109gev Bar"+code=PCIMDAS_gev Bar"sre 3 Re<"L109"> 109  71#defineUSER_CNTR_ode=PCIMDAS_AI_SOFTTRIG_REUSER_CNTR_odesref)s="fref">8255.h"
PCIMDAS_GAINbreaks="fref">8255.h&qux00
PCIMcase T_CONV_EN  INSNass=FIG_GET_CLOCKass="+code=PCIMDAS_INSNass=FIG_GET_CLOCKass=s="l:/a>                 0x00
PCIMDAS_GAINT_CONV_EN  ctrl"+code=PCIMDAS_ctrls="lf= <"L109"> 109 109 109  71#defineUSER_CNTR_ode=PCIMDAS_AI_SOFTTRIG_REUSER_CNTR_odesref)s="fref">8255.h"
PCIMDAS_GAINif"sT_CONV_EN  dtrl"+code=PCIMDAS_ctrls="lf=x" cle="L71">  71#defineUSER_CNTR_CTR1_CLKasEL=PCIMDAS_AI_SOFTTRIG_REUSER_CNTR_CTR1_CLKasELs="l)D{/a>                 0x00
PCIMDAS_GAINNNNNNNNN="L109"> 1098255.h"
PCIMDAS_GAINNNNNNNNN="L109"> 109 1098255.h&qux00
PCIMDAS_GAIN} else {/a>                 0x00
PCIMDAS_GAINNNNNNNNN="L109"> 1098255.h&qux00
PCIMDAS_GAINNNNNNNNN="L109"> 1098255.h"
PCIMDAS_GAIN} class="sref">BIT(5)
PCIMDAS_GAINbreaks="fref">8255.h&qux00
PCIMdefault:/a>                 0x00
PCIMDAS_GAINreturn -e="L71">  718255.h&qux00
PCIM} class="sref">BIT(5)
  43
PCIMreturn ="L109"> 109 109  64
BIT(5)
BIT(5)

	 unsigneeninte="L109"> 109 109<"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h&qux00
PCIMunsigneeninte="L109"> 1098255.h"
8255.h"
PCIMine" name="L54">  54 The Pacer Cmocksjumper selects a 10 MHz or 1 MHz amocks> */
PCIM="L109"> 109 109 109 109  71#define 8255"> */
PCIMif"sT_CONV_EN  span c"+code=PCIMDAS_span cs="lf=x" cle="L71">  71#define                  0x00
PCIMDAS_GAINreturn ="L109"> 1098255.h&qux00
PCIMreturn ="L109"> 1098255.h&qux00
BIT(5)
  18

	 ="L109"> 109 109 109<"L109"> 109                 0x00
 109 109 109 1098255.h&qux00
PCIMunsigneeninte="L109"> 1098255.h"
  43
PCIMine" name="L54">  54span class="comment"> */
  54 The number of Analog Input> * No is is set with s espan class="comment"> */
  54 Analog Input>M9 */
  54 have 16nst;
le-endeenor 8 differ 54ial c* No is."san class="comment"> */
  54 */
PCIM="L109"> 109 109 109 109  71#define 825t"> */
PCIMreturn ="L109"> 109  71#define 8255.h"
BIT(5)
BIT(5)

	 ="L109"> 109 109 109<"L109"> 109                 0x00
PCIM.cructe="L109"> 109 109 109 1098255.h&qux00
PCIMunsigneeninte="L109"> 1098255.h"
  57
PCIMine" name="L54">  54span class="comment"> */
  54 The Analog Input>rangegpolarity is set with s espan class="comment"> */
  54 Analog Input>Polarity Switch"on s e board. Thespan class="comment"> */
  54 inputs c N be set to Unipolarnor Bipolarnranges."san class="comment"> */
  54 */
PCIM="L109"> 109 109 109 109  71#define 825t"> */
PCIMreturn ="L109"> 109  71#define 8255.h"
BIT(5)
BIT(5)

	 inte="L109"> 109 109<"L109"> 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNunsigneenlonge="L109"> 109                 0x00
PCIMstructe="L109"> 109<"L109"> 109 109 1098255.h"
 109 1098255.h"
 109<"L109"> 1098255.h"
PCIMinte="L109"> 1098255.h"
  64
PCIM<"L109"> 109 109 109<"L109"> 1098255.h"
PCIMif"s!<"L109"> 1098255.h"
PCIMDAS_GAINreturn -e="L71">  718255.h"
  18
PCIM="L109"> 109 109 1098255.h"
PCIMif"sT_CONV_EN  ret"+code=PCIMDAS_rets="ld/a>                 0x00
PCIMDAS_GAINreturn ="L109"> 1098255.h"
BIT(5)
PCIM="L109"> 109 109 109 1098255.h"
PCIM="L109"> 109 109 109 1098255.h"
PCIM<"L109"> 109 109 109 1098255.h"
BIT(5)
PCIM<"L109"> 109 109 109 109 109  71#define8254_BASE+code=PCIMDAS_STATUS_RE8254_BASE ta/,/a>                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNPCIM<"L109"> 109 109                 0x00
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNNN<"L109"> 1098255.h"
PCIMif"s!<"L109"> 109 109                 0x00
PCIMDAS_GAINreturn -e="L71">  718255.h"
BIT(5)
PCIM="L109"> 109 109 1098255.h"
PCIMif"sT_CONV_EN  ret"+code=PCIMDAS_rets="ld/a>                 0x00
PCIMDAS_GAINreturn ="L109"> 1098255.h"
BIT(5)
PCIMine" name="L54">  54 Analog Input>subdpan cN> */
PCIM="L109"> 109 109 1098255.h"
PCIM="L109"> 109 109PCIMD= <"L109"> 1098255.h"
PCIM="L109"> 109 109 1098255.h"
PCIMif"sT_CONV_EN  dstaging/c_ic_ai_se"+code=PCIMDAS_dstaging/c_ic_ai_sede=BI<"L109"> 109                 0x00
PCIMDAS_GAIN="L109"> 109 109 1098255.h"
PCIMDAS_GAIN="L109"> 109 109PCI= 16s="fref">8255.h"
PCIM} else {/a>                 0x00
PCIMDAS_GAIN="L109"> 109 109 1098255.h"
PCIMDAS_GAIN="L109"> 109 109PCI= 8s="fref">8255.h"
PCIM} class="sref">BIT(5)
PCIM="L109"> 109 109PC= 0xffffs="fref">8255.h"
PCIM="L109"> 109 109 109 109 109BIT(5)
PCIMDAS_GAINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: =x" c<"L109"> 1098255.h"
PCIM="L109"> 109 109= <"L109"> 1098255.h"
BIT(5)
PCIMine" name="L54">  54 Analog Output>subdpan cN> */
PCIM="L109"> 109 109 1098255.h"
PCIM<"L109"> 109 109PCIMD= <"L109"> 1098255.h"
PCIM="L109"> 109 109 1098255.h"
PCIM<"L109"> 109 109PCI= 2s="fref">8255.h"
PCIM="L109"> 109 109PC= 0xfffs="fref">8255.h"
PCIM="L109"> 109 109 1098255.h"
PCIM="L109"> 109 109 1098255.h"
8255.h"
PCIM="L109"> 109 109 1098255.h"
PCIMif"sT_CONV_EN  ret"+code=PCIMDAS_rets="ld/a>                 0x00
PCIMDAS_GAINreturn ="L109"> 1098255.h"
BIT(0)
PCIM=ne" name="L54">  54 Digital I/O>subdpan cN> */
PCIM<"L109"> 109 109 1098255.h"
PCIM="L109"> 109 109 109 109 109 1098255.h"
PCIMif"sT_CONV_EN  ret"+code=PCIMDAS_rets="ld/a>                 0x00
PCIMDAS_GAINreturn ="L109"> 1098255.h"
8255.h"
PCIMine" name="L54">  54 Digital Input>subdpan cN(mai naonnector)N> */
PCIM="L109"> 109 109 1098255.h"
PCIM="L109"> 109 109PCIMD= <"L109"> 1098255.h"
PCIM<"L109"> 109 109 1098255.h"
PCIM="L109"> 109 109PCI= 4s="fref">8255.h"
PCIM<"L109"> 109 109PC= 1s="fref">8255.h&qux00
PCIM="L109"> 109 109 1098255.h"
  71 109 109                 0x00
<4 href4"drive" c<"L109"> 109                 0x00
<4 href4"drivers/staging/comed4i/drivers4ccb_pcimdas.c#103" id="L143" cl422s="lef">PCIMine" name="L54">  54 Digital Input>subdpan cN(mai naonnector)N>ates="ls=4fref">8255.h&qux00
<4 href43drivers/staging/comed4/driveers4/cb_pcimdas.c#L23" id="L423" c423s="lef">PCIM="L109"> 109 109 1098255.h"
<4 href43drivers/staging/comed4i/drivers4/cb_pcimdas.c#L23" id="L424" c424s="lef">PCIM="L109"> 109 109 109  43
<4 href43drivers/staging/comed4i4rivers/4/cb_pcimdas.c#L24" id="L424" c424s="lef">PCIM="L109"> 109 109 109span cla4s="comment"> */
<4 href43drivers/staging/comed4idrivers/4/cb_pcimdas.c#L25" id="L425" c42ss="lef">PCIM="L109"> 109 109 */
<4 href43drivers/staging/comed4idrivers/4/cb_pcimdas.c#L26" id="L426" c42ss="lef">PCIM<"L109"> 109 109 */
<4 href43drivers/staging/comed4i7rivers/4/cb_pcimdas.c#L27" id="L427" c427s="lef">PCIM="L109"> 109 109 109 */
<4 href43drivers/staging/comed4idrivers/4/cb_pcimdas.c#L28" id="L428" c428s="l  71 109 109 */
<4 href4"drive" c<"L109"> 109825t"> */
<4 href4"drivers/staging/comed4i/drivers4ccb_pcCouL289d="L143" cl4INNNine" name="L54">  54 Digital Input>subdpan cN(mai naonnector)N> 8255.h"
<4 href44drivers/staging/comed4/drivers/4b_pcimdas.c#L101"" id="L423" c423s="lef">PCIM="L109"> 109 109 109BIT(5)
<4 href44drivers/staging/comed4/driveIMDAS_aacersode=PCIMD109 109 109 109BIT(5)
<4 href44drivers/staging/comed33/drivers3ccb_pcimdas.c#L13" id="L333"4gev ta/d/4>                 0x00
<4 href44drivers/staging/comed3i/driversIM="L109"> 109 109 109                 0x00
<4 href44drivers/staging/comed4/drivers/4/cb_pcimdas.c#L15" id="L415" ates="ls=4fref">8255.h&qux00
<4 href44drivers/staging/comed4i6rivers/4/cb_pccouL289s 1 and 2 are gnee="L289" cly forine" ev"+cne" name="L54">  54 Digital Input>subdpan cN(mai naonnector)N> "san cla4fref">8255.h"
<4 href44drivers/staging/comed4i7riveIMDAS_aacersoet_busya acer"+code=PCIMDAS_aacersoet_busy= <"L109"> 109 109PCIM="L109"> 109ru>ode=Pa/ 3 Re<"L109"> 109  57
<4 href44drivers/staging/comed4idriveIMDAS_aacersoet_busya acer"+code=PCIMDAS_aacersoet_busy= <"L109"> 109 109PCIM="L109"> 109ru>ode=Pa/ 3 Re<"L109"> 109 */
<4 href44drive" c<"L109"> 109 */
<4 href45drivers/staging/comeDAS_GAINNNNNNNNN="L109"> 109 */
<4 href45drivers/staging/comed3i/drivers3/cb_pcimdas.c#L41" id="L341" 4."san cla4s="comment"> */
<4 href45drivers/staging/comed4/2rivers/4bcb_pcimdas.c#L92" id="L42" c */
<4 href45drivers/stagdstaging/c_auto_attach"+code=Pmdas.a acer"+code=PCIMDAS_aPmdas.river/ 3 Re<"L109"> 109PCI4="sref)s=4fref">825t"> */
<4 href4"drivers/stagi.109"> 109"39ss="lef"" name="taging/c_ acer_clkde=BI<"L109"> 1098255.h"
<4 href455rivers/stagi.109"> 109 109 109BIT(5)
<4 href456rivers/stagi.109"> 109 109 109
	 inte="L109"> 109 109BIT(5)
<4 href457rivers/stagi.109"> 109 109                 0x00
<4 href4"drive}AS_GAINNNNNNNNN="L109"> 109                 0x00
<4 href45drive" c<"L109"> 109                 0x00
<4 href4"drivers/staging/comed3i/drivers3/cb_pcimdaretsprobCIMDAS_insn_writes="lef"= PCIMstructe=/adi_8254dpan c"+code=PCIMDAS_di_8254dpan c ta/a><"L109"> 1098255.h"
<4 href46drivers/staging/comedddddddddddddddddlefsting/comed3i/drivers3/cb_pcimdaIMD10PCIMDAS_insn_rea_pcimdaIMD10Pss="lef">PCIMstructe=0PCIMDAS_insn_reaienlonge="L109"> 1098255.h"
<4 href4"drived3i/drivers3/cb_pcimdas.c#L94" id="L394" c39ss="lef">PCI4S_s ta/s=4fref">8255.h"
<4 href4"drivers/stagi4i/drivers4/cb_pcimdasCIMDAS_retse="L1leffigs/4/cb_pcimdas."IMDAS_retse="L1leffig= <"L109"> 109 109<"L109"> 1098255.h"
<4 href46drivers/staging/comedddddddddddddddddddddddf">PCIMstructe=0PCIMDAS_insn_reaienlonc373s="lef">PCIM="L10L394"_c#L97" id="L37" cl30L394"_c#L9ode=Pa/ 3 Re<"L109"> 109  64
<4 href46drivers/staging/comed3i/drivers3/cb_pcimdas.c#L55" id="L355" 4r"sre))s=4fref">8255.h"
<4 href46drivers/staging/comed3i/drivers3/cb_pcimdas.c#L86" id="L386"4Bar"sre)=4fref">8255.h"
<4 href46drivers/staglefsting/comed3i/drivers3/cb_pcimdaIMD10PCIMDAS_insn_rea_pcimdaIMD10Pss="lcomed3i/drivers3/cb_pcimdaretsIM="L109"> 109PCI4MEMs="ls=4fref">8255.h"
<4 href46drivers/stagi{+code=PCIMDAS_s ta/_DEVIC9 109  54 Digital Input>subdpan cN(mai naonnector)N>c36ss="li4e" name="L18">  18
<4 href4"drivers/stagi{+code=PCIMDAS_s ta/_DEVIC9 109  54 Digital Input>subdpan cN(mai naonnector)N>ev ta/ds=4fref">8255.h"
<4 href4"drivers/stagi{ 0ing/comed3i/drivers3/cb_pcimdas.c#L97" id="L397" c397s="l4rets="ld/4>                 0x00
<4 href4"drive}AS_GAINNNNNNNNN="L109"> 1098255.h"
<4 href4"drive109"> 109 109 109 109BIT(5)
<4 href47drivers/staging/comed33/drivers3ccb_pcimdas.c#L13" id="L333"4ta/, 2ds=4fref">8255.h"
<4 href4"drivers/stagdstaging/c_auto_attach_pcimmdas.a acer"+code=PC_pcimmdas.ss="lcomed3i/drivers3/cb_pcimdaretsNmdas.a acer"+code=PCI09PCI4ta/, 3ds=4fref">8255.h"
<4 href475rivers/stagi.109"> 109"39ss="lef"" name="taging/c_ acer_clkde=BI<"L109"> 1098255.h"
<4 href476rivers/stagi.109"> 109 109 109 109BIT(5)
<4 href477rivers/stagi.109"> 109 109                 0x00
<4 href4"drivers/stagi.109"> 109 109 109                 0x00
<4 href4"drive}AS_GAINNNNNNNNN="L109"> 1098255.h"
<4 href4"drive109"> 109 109 1098255.h"
<4 href48drive109"> 109"C/cb_p http://www.4/cb_p.org" name="Pa/ 3 Re<"L109"> 109BIT(5)
<4 href4"drive109"> 109"C/cb_p code=P fori_AI_-DAS1602/16nand _AIe-DAS1602/16" name="Pa/ 3 Re<"L109"> 1098255.h"
<4 href4"drive109"> 109"GPL" name="Pa/ 3 Re<"L109"> 109                 0x00
<4 href4"drive


imdaorisubal LXR software byine" 3 Re<"L1http://ases="forge.net/projects/lx.a>LXR versunity id=Mlthis experis/4/al e=PCion byi 3 Re<"L1mailto:lx.@ ux.no">lx.@ ux.no id=.
lx.. ux.no kindly hosted byi 3 Re<"L1http://www.redpill- pro.no">Redpill L pro AS id=MlprovidL35" iL uxglefsultubdnand oper/stefs serCIMDA#L37ce 1995.