Commit 0109253d authored by Bill Pemberton's avatar Bill Pemberton Committed by Greg Kroah-Hartman

Staging: comedi: remove C99 comments in pcl818.c

Signed-off-by: default avatarBill Pemberton <wfp5p@virginia.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent a351ecf3
...@@ -107,9 +107,9 @@ A word or two about DMA. Driver support DMA operations at two ways: ...@@ -107,9 +107,9 @@ A word or two about DMA. Driver support DMA operations at two ways:
#include "8253.h" #include "8253.h"
// #define PCL818_MODE13_AO 1 /* #define PCL818_MODE13_AO 1 */
// boards constants /* boards constants */
#define boardPCL818L 0 #define boardPCL818L 0
#define boardPCL818H 1 #define boardPCL818H 1
...@@ -118,60 +118,60 @@ A word or two about DMA. Driver support DMA operations at two ways: ...@@ -118,60 +118,60 @@ A word or two about DMA. Driver support DMA operations at two ways:
#define boardPCL818 4 #define boardPCL818 4
#define boardPCL718 5 #define boardPCL718 5
// IO space len /* IO space len */
#define PCLx1x_RANGE 16 #define PCLx1x_RANGE 16
// IO space len if we use FIFO /* IO space len if we use FIFO */
#define PCLx1xFIFO_RANGE 32 #define PCLx1xFIFO_RANGE 32
// W: clear INT request /* W: clear INT request */
#define PCL818_CLRINT 8 #define PCL818_CLRINT 8
// R: return status byte /* R: return status byte */
#define PCL818_STATUS 8 #define PCL818_STATUS 8
// R: A/D high byte W: A/D range control /* R: A/D high byte W: A/D range control */
#define PCL818_RANGE 1 #define PCL818_RANGE 1
// R: next mux scan channel W: mux scan channel & range control pointer /* R: next mux scan channel W: mux scan channel & range control pointer */
#define PCL818_MUX 2 #define PCL818_MUX 2
// R/W: operation control register /* R/W: operation control register */
#define PCL818_CONTROL 9 #define PCL818_CONTROL 9
// W: counter enable /* W: counter enable */
#define PCL818_CNTENABLE 10 #define PCL818_CNTENABLE 10
// R: low byte of A/D W: soft A/D trigger /* R: low byte of A/D W: soft A/D trigger */
#define PCL818_AD_LO 0 #define PCL818_AD_LO 0
// R: high byte of A/D W: A/D range control /* R: high byte of A/D W: A/D range control */
#define PCL818_AD_HI 1 #define PCL818_AD_HI 1
// W: D/A low&high byte /* W: D/A low&high byte */
#define PCL818_DA_LO 4 #define PCL818_DA_LO 4
#define PCL818_DA_HI 5 #define PCL818_DA_HI 5
// R: low&high byte of DI /* R: low&high byte of DI */
#define PCL818_DI_LO 3 #define PCL818_DI_LO 3
#define PCL818_DI_HI 11 #define PCL818_DI_HI 11
// W: low&high byte of DO /* W: low&high byte of DO */
#define PCL818_DO_LO 3 #define PCL818_DO_LO 3
#define PCL818_DO_HI 11 #define PCL818_DO_HI 11
// W: PCL718 second D/A /* W: PCL718 second D/A */
#define PCL718_DA2_LO 6 #define PCL718_DA2_LO 6
#define PCL718_DA2_HI 7 #define PCL718_DA2_HI 7
// counters /* counters */
#define PCL818_CTR0 12 #define PCL818_CTR0 12
#define PCL818_CTR1 13 #define PCL818_CTR1 13
#define PCL818_CTR2 14 #define PCL818_CTR2 14
// W: counter control /* W: counter control */
#define PCL818_CTRCTL 15 #define PCL818_CTRCTL 15
// W: fifo enable/disable /* W: fifo enable/disable */
#define PCL818_FI_ENABLE 6 #define PCL818_FI_ENABLE 6
// W: fifo interrupt clear /* W: fifo interrupt clear */
#define PCL818_FI_INTCLR 20 #define PCL818_FI_INTCLR 20
// W: fifo interrupt clear /* W: fifo interrupt clear */
#define PCL818_FI_FLUSH 25 #define PCL818_FI_FLUSH 25
// R: fifo status /* R: fifo status */
#define PCL818_FI_STATUS 25 #define PCL818_FI_STATUS 25
// R: one record from FIFO /* R: one record from FIFO */
#define PCL818_FI_DATALO 23 #define PCL818_FI_DATALO 23
#define PCL818_FI_DATAHI 23 #define PCL818_FI_DATAHI 23
// type of interrupt handler /* type of interrupt handler */
#define INT_TYPE_AI1_INT 1 #define INT_TYPE_AI1_INT 1
#define INT_TYPE_AI1_DMA 2 #define INT_TYPE_AI1_DMA 2
#define INT_TYPE_AI1_FIFO 3 #define INT_TYPE_AI1_FIFO 3
...@@ -184,7 +184,7 @@ A word or two about DMA. Driver support DMA operations at two ways: ...@@ -184,7 +184,7 @@ A word or two about DMA. Driver support DMA operations at two ways:
#endif #endif
#ifdef unused #ifdef unused
// RTC stuff... /* RTC stuff... */
#define INT_TYPE_AI1_DMA_RTC 9 #define INT_TYPE_AI1_DMA_RTC 9
#define INT_TYPE_AI3_DMA_RTC 10 #define INT_TYPE_AI3_DMA_RTC 10
...@@ -254,22 +254,22 @@ static int RTC_timer_lock = 0; /* RTC int lock */ ...@@ -254,22 +254,22 @@ static int RTC_timer_lock = 0; /* RTC int lock */
struct pcl818_board { struct pcl818_board {
const char *name; // driver name const char *name; /* driver name */
int n_ranges; // len of range list int n_ranges; /* len of range list */
int n_aichan_se; // num of A/D chans in single ended mode int n_aichan_se; /* num of A/D chans in single ended mode */
int n_aichan_diff; // num of A/D chans in diferencial mode int n_aichan_diff; /* num of A/D chans in diferencial mode */
unsigned int ns_min; // minimal alllowed delay between samples (in ns) unsigned int ns_min; /* minimal alllowed delay between samples (in ns) */
int n_aochan; // num of D/A chans int n_aochan; /* num of D/A chans */
int n_dichan; // num of DI chans int n_dichan; /* num of DI chans */
int n_dochan; // num of DO chans int n_dochan; /* num of DO chans */
const struct comedi_lrange *ai_range_type; // default A/D rangelist const struct comedi_lrange *ai_range_type; /* default A/D rangelist */
const struct comedi_lrange *ao_range_type; // default D/A rangelist const struct comedi_lrange *ao_range_type; /* default D/A rangelist */
unsigned int io_range; // len of IO space unsigned int io_range; /* len of IO space */
unsigned int IRQbits; // allowed interrupts unsigned int IRQbits; /* allowed interrupts */
unsigned int DMAbits; // allowed DMA chans unsigned int DMAbits; /* allowed DMA chans */
int ai_maxdata; // maxdata for A/D int ai_maxdata; /* maxdata for A/D */
int ao_maxdata; // maxdata for D/A int ao_maxdata; /* maxdata for D/A */
unsigned char fifo; // 1=board has FIFO unsigned char fifo; /* 1=board has FIFO */
int is_818; int is_818;
}; };
...@@ -315,54 +315,54 @@ COMEDI_INITCLEANUP(driver_pcl818); ...@@ -315,54 +315,54 @@ COMEDI_INITCLEANUP(driver_pcl818);
struct pcl818_private { struct pcl818_private {
unsigned int dma; // used DMA, 0=don't use DMA unsigned int dma; /* used DMA, 0=don't use DMA */
int dma_rtc; // 1=RTC used with DMA, 0=no RTC alloc int dma_rtc; /* 1=RTC used with DMA, 0=no RTC alloc */
unsigned int io_range; unsigned int io_range;
#ifdef unused #ifdef unused
unsigned long rtc_iobase; // RTC port region unsigned long rtc_iobase; /* RTC port region */
unsigned int rtc_iosize; unsigned int rtc_iosize;
unsigned int rtc_irq; unsigned int rtc_irq;
struct timer_list rtc_irq_timer; // timer for RTC sanity check struct timer_list rtc_irq_timer; /* timer for RTC sanity check */
unsigned long rtc_freq; // RTC int freq unsigned long rtc_freq; /* RTC int freq */
int rtc_irq_blocked; // 1=we now do AI with DMA&RTC int rtc_irq_blocked; /* 1=we now do AI with DMA&RTC */
#endif #endif
unsigned long dmabuf[2]; // pointers to begin of DMA buffers unsigned long dmabuf[2]; /* pointers to begin of DMA buffers */
unsigned int dmapages[2]; // len of DMA buffers in PAGE_SIZEs unsigned int dmapages[2]; /* len of DMA buffers in PAGE_SIZEs */
unsigned int hwdmaptr[2]; // hardware address of DMA buffers unsigned int hwdmaptr[2]; /* hardware address of DMA buffers */
unsigned int hwdmasize[2]; // len of DMA buffers in Bytes unsigned int hwdmasize[2]; /* len of DMA buffers in Bytes */
unsigned int dmasamplsize; // size in samples hwdmasize[0]/2 unsigned int dmasamplsize; /* size in samples hwdmasize[0]/2 */
unsigned int last_top_dma; // DMA pointer in last RTC int unsigned int last_top_dma; /* DMA pointer in last RTC int */
int next_dma_buf; // which DMA buffer will be used next round int next_dma_buf; /* which DMA buffer will be used next round */
long dma_runs_to_end; // how many we must permorm DMA transfer to end of record long dma_runs_to_end; /* how many we must permorm DMA transfer to end of record */
unsigned long last_dma_run; // how many bytes we must transfer on last DMA page unsigned long last_dma_run; /* how many bytes we must transfer on last DMA page */
unsigned char neverending_ai; // if=1, then we do neverending record (you must use cancel()) unsigned char neverending_ai; /* if=1, then we do neverending record (you must use cancel()) */
unsigned int ns_min; // manimal alllowed delay between samples (in us) for actual card unsigned int ns_min; /* manimal alllowed delay between samples (in us) for actual card */
int i8253_osc_base; // 1/frequency of on board oscilator in ns int i8253_osc_base; /* 1/frequency of on board oscilator in ns */
int irq_free; // 1=have allocated IRQ int irq_free; /* 1=have allocated IRQ */
int irq_blocked; // 1=IRQ now uses any subdev int irq_blocked; /* 1=IRQ now uses any subdev */
int irq_was_now_closed; // when IRQ finish, there's stored int818_mode for last interrupt int irq_was_now_closed; /* when IRQ finish, there's stored int818_mode for last interrupt */
int ai_mode; // who now uses IRQ - 1=AI1 int, 2=AI1 dma, 3=AI3 int, 4AI3 dma int ai_mode; /* who now uses IRQ - 1=AI1 int, 2=AI1 dma, 3=AI3 int, 4AI3 dma */
struct comedi_subdevice *last_int_sub; // ptr to subdevice which now finish struct comedi_subdevice *last_int_sub; /* ptr to subdevice which now finish */
int ai_act_scan; // how many scans we finished int ai_act_scan; /* how many scans we finished */
int ai_act_chan; // actual position in actual scan int ai_act_chan; /* actual position in actual scan */
unsigned int act_chanlist[16]; // MUX setting for actual AI operations unsigned int act_chanlist[16]; /* MUX setting for actual AI operations */
unsigned int act_chanlist_len; // how long is actual MUX list unsigned int act_chanlist_len; /* how long is actual MUX list */
unsigned int act_chanlist_pos; // actual position in MUX list unsigned int act_chanlist_pos; /* actual position in MUX list */
unsigned int ai_scans; // len of scanlist unsigned int ai_scans; /* len of scanlist */
unsigned int ai_n_chan; // how many channels is measured unsigned int ai_n_chan; /* how many channels is measured */
unsigned int *ai_chanlist; // actaul chanlist unsigned int *ai_chanlist; /* actaul chanlist */
unsigned int ai_flags; // flaglist unsigned int ai_flags; /* flaglist */
unsigned int ai_data_len; // len of data buffer unsigned int ai_data_len; /* len of data buffer */
short *ai_data; // data buffer short *ai_data; /* data buffer */
unsigned int ai_timer1; // timers unsigned int ai_timer1; /* timers */
unsigned int ai_timer2; unsigned int ai_timer2;
struct comedi_subdevice *sub_ai; // ptr to AI subdevice struct comedi_subdevice *sub_ai; /* ptr to AI subdevice */
unsigned char usefifo; // 1=use fifo unsigned char usefifo; /* 1=use fifo */
unsigned int ao_readback[2]; unsigned int ao_readback[2];
}; };
static const unsigned int muxonechan[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // used for gain list programming static const unsigned int muxonechan[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, /* used for gain list programming */
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
}; };
...@@ -535,10 +535,10 @@ static irqreturn_t interrupt_pcl818_ai_mode13_int(int irq, void *d) ...@@ -535,10 +535,10 @@ static irqreturn_t interrupt_pcl818_ai_mode13_int(int irq, void *d)
conv_finish: conv_finish:
low = inb(dev->iobase + PCL818_AD_LO); low = inb(dev->iobase + PCL818_AD_LO);
comedi_buf_put(s->async, ((inb(dev->iobase + PCL818_AD_HI) << 4) | (low >> 4))); // get one sample comedi_buf_put(s->async, ((inb(dev->iobase + PCL818_AD_HI) << 4) | (low >> 4))); /* get one sample */
outb(0, dev->iobase + PCL818_CLRINT); /* clear INT request */ outb(0, dev->iobase + PCL818_CLRINT); /* clear INT request */
if ((low & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { // dropout! if ((low & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { /* dropout! */
rt_printk rt_printk
("comedi: A/D mode1/3 IRQ - channel dropout %x!=%x !\n", ("comedi: A/D mode1/3 IRQ - channel dropout %x!=%x !\n",
(low & 0xf), (low & 0xf),
...@@ -549,7 +549,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_int(int irq, void *d) ...@@ -549,7 +549,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_int(int irq, void *d)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
if (s->async->cur_chan == 0) { if (s->async->cur_chan == 0) {
// rt_printk("E"); /* rt_printk("E"); */
devpriv->ai_act_scan--; devpriv->ai_act_scan--;
} }
...@@ -577,7 +577,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d) ...@@ -577,7 +577,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
disable_dma(devpriv->dma); disable_dma(devpriv->dma);
devpriv->next_dma_buf = 1 - devpriv->next_dma_buf; devpriv->next_dma_buf = 1 - devpriv->next_dma_buf;
if ((devpriv->dma_runs_to_end) > -1 || devpriv->neverending_ai) { // switch dma bufs if ((devpriv->dma_runs_to_end) > -1 || devpriv->neverending_ai) { /* switch dma bufs */
set_dma_mode(devpriv->dma, DMA_MODE_READ); set_dma_mode(devpriv->dma, DMA_MODE_READ);
flags = claim_dma_lock(); flags = claim_dma_lock();
set_dma_addr(devpriv->dma, set_dma_addr(devpriv->dma,
...@@ -601,7 +601,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d) ...@@ -601,7 +601,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
bufptr = 0; bufptr = 0;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
if ((ptr[bufptr] & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { // dropout! if ((ptr[bufptr] & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { /* dropout! */
rt_printk rt_printk
("comedi: A/D mode1/3 DMA - channel dropout %d(card)!=%d(chanlist) at %d !\n", ("comedi: A/D mode1/3 DMA - channel dropout %d(card)!=%d(chanlist) at %d !\n",
(ptr[bufptr] & 0xf), (ptr[bufptr] & 0xf),
...@@ -614,7 +614,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d) ...@@ -614,7 +614,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
comedi_buf_put(s->async, ptr[bufptr++] >> 4); // get one sample comedi_buf_put(s->async, ptr[bufptr++] >> 4); /* get one sample */
devpriv->act_chanlist_pos++; devpriv->act_chanlist_pos++;
if (devpriv->act_chanlist_pos >= devpriv->act_chanlist_len) { if (devpriv->act_chanlist_pos >= devpriv->act_chanlist_len) {
...@@ -627,7 +627,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d) ...@@ -627,7 +627,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
pcl818_ai_cancel(dev, s); pcl818_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA; s->async->events |= COMEDI_CB_EOA;
comedi_event(dev, s); comedi_event(dev, s);
// printk("done int ai13 dma\n"); /* printk("done int ai13 dma\n"); */
return IRQ_HANDLED; return IRQ_HANDLED;
} }
} }
...@@ -651,7 +651,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d) ...@@ -651,7 +651,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
long ofs_dats; long ofs_dats;
short *dmabuf = (short *) devpriv->dmabuf[0]; short *dmabuf = (short *) devpriv->dmabuf[0];
//outb(2,0x378); /* outb(2,0x378); */
switch (devpriv->ai_mode) { switch (devpriv->ai_mode) {
case INT_TYPE_AI1_DMA_RTC: case INT_TYPE_AI1_DMA_RTC:
case INT_TYPE_AI3_DMA_RTC: case INT_TYPE_AI3_DMA_RTC:
...@@ -668,31 +668,31 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d) ...@@ -668,31 +668,31 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
if (top1 != top2) if (top1 != top2)
return IRQ_HANDLED; return IRQ_HANDLED;
top1 = devpriv->hwdmasize[0] - top1; // where is now DMA in buffer top1 = devpriv->hwdmasize[0] - top1; /* where is now DMA in buffer */
top1 >>= 1; top1 >>= 1;
ofs_dats = top1 - devpriv->last_top_dma; // new samples from last call ofs_dats = top1 - devpriv->last_top_dma; /* new samples from last call */
if (ofs_dats < 0) if (ofs_dats < 0)
ofs_dats = (devpriv->dmasamplsize) + ofs_dats; ofs_dats = (devpriv->dmasamplsize) + ofs_dats;
if (!ofs_dats) if (!ofs_dats)
return IRQ_HANDLED; // exit=no new samples from last call return IRQ_HANDLED; /* exit=no new samples from last call */
// obsluz data /* obsluz data */
i = devpriv->last_top_dma - 1; i = devpriv->last_top_dma - 1;
i &= (devpriv->dmasamplsize - 1); i &= (devpriv->dmasamplsize - 1);
if (dmabuf[i] != MAGIC_DMA_WORD) { // DMA overflow! if (dmabuf[i] != MAGIC_DMA_WORD) { /* DMA overflow! */
comedi_error(dev, "A/D mode1/3 DMA buffer overflow!"); comedi_error(dev, "A/D mode1/3 DMA buffer overflow!");
//rt_printk("I %d dmabuf[i] %d %d\n",i,dmabuf[i],devpriv->dmasamplsize); /* rt_printk("I %d dmabuf[i] %d %d\n",i,dmabuf[i],devpriv->dmasamplsize); */
pcl818_ai_cancel(dev, s); pcl818_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR;
comedi_event(dev, s); comedi_event(dev, s);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
//rt_printk("r %ld ",ofs_dats); /* rt_printk("r %ld ",ofs_dats); */
bufptr = devpriv->last_top_dma; bufptr = devpriv->last_top_dma;
for (i = 0; i < ofs_dats; i++) { for (i = 0; i < ofs_dats; i++) {
if ((dmabuf[bufptr] & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { // dropout! if ((dmabuf[bufptr] & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { /* dropout! */
rt_printk rt_printk
("comedi: A/D mode1/3 DMA - channel dropout %d!=%d !\n", ("comedi: A/D mode1/3 DMA - channel dropout %d!=%d !\n",
(dmabuf[bufptr] & 0xf), (dmabuf[bufptr] & 0xf),
...@@ -705,7 +705,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d) ...@@ -705,7 +705,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
comedi_buf_put(s->async, dmabuf[bufptr++] >> 4); // get one sample comedi_buf_put(s->async, dmabuf[bufptr++] >> 4); /* get one sample */
bufptr &= (devpriv->dmasamplsize - 1); bufptr &= (devpriv->dmasamplsize - 1);
if (s->async->cur_chan == 0) { if (s->async->cur_chan == 0) {
...@@ -717,7 +717,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d) ...@@ -717,7 +717,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
pcl818_ai_cancel(dev, s); pcl818_ai_cancel(dev, s);
s->async->events |= COMEDI_CB_EOA; s->async->events |= COMEDI_CB_EOA;
comedi_event(dev, s); comedi_event(dev, s);
//printk("done int ai13 dma\n"); /* printk("done int ai13 dma\n"); */
return IRQ_HANDLED; return IRQ_HANDLED;
} }
} }
...@@ -727,11 +727,11 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d) ...@@ -727,11 +727,11 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
bufptr &= (devpriv->dmasamplsize - 1); bufptr &= (devpriv->dmasamplsize - 1);
dmabuf[bufptr] = MAGIC_DMA_WORD; dmabuf[bufptr] = MAGIC_DMA_WORD;
comedi_event(dev, s); comedi_event(dev, s);
//outb(0,0x378); /* outb(0,0x378); */
return IRQ_HANDLED; return IRQ_HANDLED;
} }
//outb(0,0x378); /* outb(0,0x378); */
return IRQ_HANDLED; return IRQ_HANDLED;
} }
#endif #endif
...@@ -746,7 +746,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d) ...@@ -746,7 +746,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d)
struct comedi_subdevice *s = dev->subdevices + 0; struct comedi_subdevice *s = dev->subdevices + 0;
int i, len, lo; int i, len, lo;
outb(0, dev->iobase + PCL818_FI_INTCLR); // clear fifo int request outb(0, dev->iobase + PCL818_FI_INTCLR); /* clear fifo int request */
lo = inb(dev->iobase + PCL818_FI_STATUS); lo = inb(dev->iobase + PCL818_FI_STATUS);
...@@ -774,7 +774,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d) ...@@ -774,7 +774,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d)
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
lo = inb(dev->iobase + PCL818_FI_DATALO); lo = inb(dev->iobase + PCL818_FI_DATALO);
if ((lo & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { // dropout! if ((lo & 0xf) != devpriv->act_chanlist[devpriv->act_chanlist_pos]) { /* dropout! */
rt_printk rt_printk
("comedi: A/D mode1/3 FIFO - channel dropout %d!=%d !\n", ("comedi: A/D mode1/3 FIFO - channel dropout %d!=%d !\n",
(lo & 0xf), (lo & 0xf),
...@@ -786,7 +786,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d) ...@@ -786,7 +786,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
comedi_buf_put(s->async, (lo >> 4) | (inb(dev->iobase + PCL818_FI_DATAHI) << 4)); // get one sample comedi_buf_put(s->async, (lo >> 4) | (inb(dev->iobase + PCL818_FI_DATAHI) << 4)); /* get one sample */
if (s->async->cur_chan == 0) { if (s->async->cur_chan == 0) {
devpriv->ai_act_scan--; devpriv->ai_act_scan--;
...@@ -818,7 +818,7 @@ static irqreturn_t interrupt_pcl818(int irq, void *d PT_REGS_ARG) ...@@ -818,7 +818,7 @@ static irqreturn_t interrupt_pcl818(int irq, void *d PT_REGS_ARG)
comedi_error(dev, "premature interrupt"); comedi_error(dev, "premature interrupt");
return IRQ_HANDLED; return IRQ_HANDLED;
} }
//rt_printk("I\n"); /* rt_printk("I\n"); */
switch (devpriv->ai_mode) { switch (devpriv->ai_mode) {
case INT_TYPE_AI1_DMA: case INT_TYPE_AI1_DMA:
...@@ -881,12 +881,12 @@ static void pcl818_ai_mode13dma_int(int mode, struct comedi_device * dev, ...@@ -881,12 +881,12 @@ static void pcl818_ai_mode13dma_int(int mode, struct comedi_device * dev,
unsigned int bytes; unsigned int bytes;
rt_printk("mode13dma_int, mode: %d\n", mode); rt_printk("mode13dma_int, mode: %d\n", mode);
disable_dma(devpriv->dma); // disable dma disable_dma(devpriv->dma); /* disable dma */
bytes = devpriv->hwdmasize[0]; bytes = devpriv->hwdmasize[0];
if (!devpriv->neverending_ai) { if (!devpriv->neverending_ai) {
bytes = devpriv->ai_n_chan * devpriv->ai_scans * sizeof(short); // how many bytes = devpriv->ai_n_chan * devpriv->ai_scans * sizeof(short); /* how many */
devpriv->dma_runs_to_end = bytes / devpriv->hwdmasize[0]; // how many DMA pages we must fiil devpriv->dma_runs_to_end = bytes / devpriv->hwdmasize[0]; /* how many DMA pages we must fiil */
devpriv->last_dma_run = bytes % devpriv->hwdmasize[0]; //on last dma transfer must be moved devpriv->last_dma_run = bytes % devpriv->hwdmasize[0]; /* on last dma transfer must be moved */
devpriv->dma_runs_to_end--; devpriv->dma_runs_to_end--;
if (devpriv->dma_runs_to_end >= 0) if (devpriv->dma_runs_to_end >= 0)
bytes = devpriv->hwdmasize[0]; bytes = devpriv->hwdmasize[0];
...@@ -928,7 +928,7 @@ static void pcl818_ai_mode13dma_rtc(int mode, struct comedi_device * dev, ...@@ -928,7 +928,7 @@ static void pcl818_ai_mode13dma_rtc(int mode, struct comedi_device * dev,
set_dma_count(devpriv->dma, devpriv->hwdmasize[0]); set_dma_count(devpriv->dma, devpriv->hwdmasize[0]);
release_dma_lock(flags); release_dma_lock(flags);
enable_dma(devpriv->dma); enable_dma(devpriv->dma);
devpriv->last_top_dma = 0; //devpriv->hwdmasize[0]; devpriv->last_top_dma = 0; /* devpriv->hwdmasize[0]; */
pole = (short *) devpriv->dmabuf[0]; pole = (short *) devpriv->dmabuf[0];
devpriv->dmasamplsize = devpriv->hwdmasize[0] / 2; devpriv->dmasamplsize = devpriv->hwdmasize[0] / 2;
pole[devpriv->dmasamplsize - 1] = MAGIC_DMA_WORD; pole[devpriv->dmasamplsize - 1] = MAGIC_DMA_WORD;
...@@ -972,7 +972,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev, ...@@ -972,7 +972,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
if (devpriv->irq_blocked) if (devpriv->irq_blocked)
return -EBUSY; return -EBUSY;
start_pacer(dev, -1, 0, 0); // stop pacer start_pacer(dev, -1, 0, 0); /* stop pacer */
seglen = check_channel_list(dev, s, devpriv->ai_chanlist, seglen = check_channel_list(dev, s, devpriv->ai_chanlist,
devpriv->ai_n_chan); devpriv->ai_n_chan);
...@@ -992,7 +992,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev, ...@@ -992,7 +992,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
devpriv->dma_runs_to_end = 0; devpriv->dma_runs_to_end = 0;
if ((devpriv->ai_scans == 0) || (devpriv->ai_scans == -1)) if ((devpriv->ai_scans == 0) || (devpriv->ai_scans == -1))
devpriv->neverending_ai = 1; //well, user want neverending devpriv->neverending_ai = 1; /* well, user want neverending */
if (mode == 1) { if (mode == 1) {
i8253_cascade_ns_to_timer(devpriv->i8253_osc_base, &divisor1, i8253_cascade_ns_to_timer(devpriv->i8253_osc_base, &divisor1,
...@@ -1010,7 +1010,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev, ...@@ -1010,7 +1010,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
outb(0, dev->iobase + PCL818_CNTENABLE); /* enable pacer */ outb(0, dev->iobase + PCL818_CNTENABLE); /* enable pacer */
switch (devpriv->dma) { switch (devpriv->dma) {
case 1: // DMA case 1: /* DMA */
case 3: case 3:
if (devpriv->dma_rtc == 0) { if (devpriv->dma_rtc == 0) {
pcl818_ai_mode13dma_int(mode, dev, s); pcl818_ai_mode13dma_int(mode, dev, s);
...@@ -1025,8 +1025,8 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev, ...@@ -1025,8 +1025,8 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
} }
#endif #endif
break; break;
case 0: // IRQ case 0: /* IRQ */
// rt_printk("IRQ\n"); /* rt_printk("IRQ\n"); */
if (mode == 1) { if (mode == 1) {
devpriv->ai_mode = INT_TYPE_AI1_INT; devpriv->ai_mode = INT_TYPE_AI1_INT;
outb(0x83 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Pacer+IRQ */ outb(0x83 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Pacer+IRQ */
...@@ -1035,8 +1035,8 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev, ...@@ -1035,8 +1035,8 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device * dev,
outb(0x82 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Ext trig+IRQ */ outb(0x82 | (dev->irq << 4), dev->iobase + PCL818_CONTROL); /* Ext trig+IRQ */
}; };
break; break;
case -1: // FIFO case -1: /* FIFO */
outb(1, dev->iobase + PCL818_FI_ENABLE); // enable FIFO outb(1, dev->iobase + PCL818_FI_ENABLE); /* enable FIFO */
if (mode == 1) { if (mode == 1) {
devpriv->ai_mode = INT_TYPE_AI1_FIFO; devpriv->ai_mode = INT_TYPE_AI1_FIFO;
outb(0x03, dev->iobase + PCL818_CONTROL); /* Pacer */ outb(0x03, dev->iobase + PCL818_CONTROL); /* Pacer */
...@@ -1080,7 +1080,7 @@ static int pcl818_ao_mode13(int mode, struct comedi_device * dev, struct comedi_ ...@@ -1080,7 +1080,7 @@ static int pcl818_ao_mode13(int mode, struct comedi_device * dev, struct comedi_
if (devpriv->irq_blocked) if (devpriv->irq_blocked)
return -EBUSY; return -EBUSY;
start_pacer(dev, -1, 0, 0); // stop pacer start_pacer(dev, -1, 0, 0); /* stop pacer */
devpriv->int13_act_scan = it->n; devpriv->int13_act_scan = it->n;
devpriv->int13_act_chan = 0; devpriv->int13_act_chan = 0;
...@@ -1175,30 +1175,34 @@ static int check_channel_list(struct comedi_device * dev, struct comedi_subdevic ...@@ -1175,30 +1175,34 @@ static int check_channel_list(struct comedi_device * dev, struct comedi_subdevic
} }
if (n_chan > 1) { if (n_chan > 1) {
// first channel is everytime ok /* first channel is everytime ok */
chansegment[0] = chanlist[0]; chansegment[0] = chanlist[0];
// build part of chanlist /* build part of chanlist */
for (i = 1, seglen = 1; i < n_chan; i++, seglen++) { for (i = 1, seglen = 1; i < n_chan; i++, seglen++) {
// rt_printk("%d. %d %d\n",i,CR_CHAN(it->chanlist[i]),CR_RANGE(it->chanlist[i]));
// we detect loop, this must by finish /* rt_printk("%d. %d * %d\n",i,
* CR_CHAN(it->chanlist[i]),CR_RANGE(it->chanlist[i]));*/
/* we detect loop, this must by finish */
if (chanlist[0] == chanlist[i]) if (chanlist[0] == chanlist[i])
break; break;
nowmustbechan = nowmustbechan =
(CR_CHAN(chansegment[i - 1]) + 1) % s->n_chan; (CR_CHAN(chansegment[i - 1]) + 1) % s->n_chan;
if (nowmustbechan != CR_CHAN(chanlist[i])) { // channel list isn't continous :-( if (nowmustbechan != CR_CHAN(chanlist[i])) { /* channel list isn't continous :-( */
rt_printk rt_printk
("comedi%d: pcl818: channel list must be continous! chanlist[%i]=%d but must be %d or %d!\n", ("comedi%d: pcl818: channel list must be continous! chanlist[%i]=%d but must be %d or %d!\n",
dev->minor, i, CR_CHAN(chanlist[i]), dev->minor, i, CR_CHAN(chanlist[i]),
nowmustbechan, CR_CHAN(chanlist[0])); nowmustbechan, CR_CHAN(chanlist[0]));
return 0; return 0;
} }
// well, this is next correct channel in list /* well, this is next correct channel in list */
chansegment[i] = chanlist[i]; chansegment[i] = chanlist[i];
} }
// check whole chanlist /* check whole chanlist */
for (i = 0, segpos = 0; i < n_chan; i++) { for (i = 0, segpos = 0; i < n_chan; i++) {
//rt_printk("%d %d=%d %d\n",CR_CHAN(chansegment[i%seglen]),CR_RANGE(chansegment[i%seglen]),CR_CHAN(it->chanlist[i]),CR_RANGE(it->chanlist[i])); /* rt_printk("%d %d=%d %d\n",CR_CHAN(chansegment[i%seglen]),CR_RANGE(chansegment[i%seglen]),CR_CHAN(it->chanlist[i]),CR_RANGE(it->chanlist[i])); */
if (chanlist[i] != chansegment[i % seglen]) { if (chanlist[i] != chansegment[i % seglen]) {
rt_printk rt_printk
("comedi%d: pcl818: bad channel or range number! chanlist[%i]=%d,%d,%d and not %d,%d,%d!\n", ("comedi%d: pcl818: bad channel or range number! chanlist[%i]=%d,%d,%d and not %d,%d,%d!\n",
...@@ -1208,7 +1212,7 @@ static int check_channel_list(struct comedi_device * dev, struct comedi_subdevic ...@@ -1208,7 +1212,7 @@ static int check_channel_list(struct comedi_device * dev, struct comedi_subdevic
CR_CHAN(chanlist[i % seglen]), CR_CHAN(chanlist[i % seglen]),
CR_RANGE(chanlist[i % seglen]), CR_RANGE(chanlist[i % seglen]),
CR_AREF(chansegment[i % seglen])); CR_AREF(chansegment[i % seglen]));
return 0; // chan/gain list is strange return 0; /* chan/gain list is strange */
} }
} }
} else { } else {
...@@ -1226,7 +1230,7 @@ static void setup_channel_list(struct comedi_device * dev, struct comedi_subdevi ...@@ -1226,7 +1230,7 @@ static void setup_channel_list(struct comedi_device * dev, struct comedi_subdevi
devpriv->act_chanlist_len = seglen; devpriv->act_chanlist_len = seglen;
devpriv->act_chanlist_pos = 0; devpriv->act_chanlist_pos = 0;
for (i = 0; i < seglen; i++) { // store range list to card for (i = 0; i < seglen; i++) { /* store range list to card */
devpriv->act_chanlist[i] = CR_CHAN(chanlist[i]); devpriv->act_chanlist[i] = CR_CHAN(chanlist[i]);
outb(muxonechan[CR_CHAN(chanlist[i])], dev->iobase + PCL818_MUX); /* select channel */ outb(muxonechan[CR_CHAN(chanlist[i])], dev->iobase + PCL818_MUX); /* select channel */
outb(CR_RANGE(chanlist[i]), dev->iobase + PCL818_RANGE); /* select gain */ outb(CR_RANGE(chanlist[i]), dev->iobase + PCL818_RANGE); /* select gain */
...@@ -1391,7 +1395,7 @@ static int ai_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s, ...@@ -1391,7 +1395,7 @@ static int ai_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
if (cmd->chanlist) { if (cmd->chanlist) {
if (!check_channel_list(dev, s, cmd->chanlist, if (!check_channel_list(dev, s, cmd->chanlist,
cmd->chanlist_len)) cmd->chanlist_len))
return 5; // incorrect channels list return 5; /* incorrect channels list */
} }
return 0; return 0;
...@@ -1420,14 +1424,14 @@ static int ai_cmd(struct comedi_device * dev, struct comedi_subdevice * s) ...@@ -1420,14 +1424,14 @@ static int ai_cmd(struct comedi_device * dev, struct comedi_subdevice * s)
devpriv->ai_scans = 0; devpriv->ai_scans = 0;
} }
if (cmd->scan_begin_src == TRIG_FOLLOW) { // mode 1, 3 if (cmd->scan_begin_src == TRIG_FOLLOW) { /* mode 1, 3 */
if (cmd->convert_src == TRIG_TIMER) { // mode 1 if (cmd->convert_src == TRIG_TIMER) { /* mode 1 */
devpriv->ai_timer1 = cmd->convert_arg; devpriv->ai_timer1 = cmd->convert_arg;
retval = pcl818_ai_cmd_mode(1, dev, s); retval = pcl818_ai_cmd_mode(1, dev, s);
rt_printk("pcl818_ai_cmd() end\n"); rt_printk("pcl818_ai_cmd() end\n");
return retval; return retval;
} }
if (cmd->convert_src == TRIG_EXT) { // mode 3 if (cmd->convert_src == TRIG_EXT) { /* mode 3 */
return pcl818_ai_cmd_mode(3, dev, s); return pcl818_ai_cmd_mode(3, dev, s);
} }
} }
...@@ -1450,7 +1454,7 @@ static int pcl818_ai_cancel(struct comedi_device * dev, struct comedi_subdevice ...@@ -1450,7 +1454,7 @@ static int pcl818_ai_cancel(struct comedi_device * dev, struct comedi_subdevice
#ifdef unused #ifdef unused
case INT_TYPE_AI1_DMA_RTC: case INT_TYPE_AI1_DMA_RTC:
case INT_TYPE_AI3_DMA_RTC: case INT_TYPE_AI3_DMA_RTC:
set_rtc_irq_bit(0); // stop RTC set_rtc_irq_bit(0); /* stop RTC */
del_timer(&devpriv->rtc_irq_timer); del_timer(&devpriv->rtc_irq_timer);
#endif #endif
case INT_TYPE_AI1_DMA: case INT_TYPE_AI1_DMA:
...@@ -1476,7 +1480,7 @@ static int pcl818_ai_cancel(struct comedi_device * dev, struct comedi_subdevice ...@@ -1476,7 +1480,7 @@ static int pcl818_ai_cancel(struct comedi_device * dev, struct comedi_subdevice
inb(dev->iobase + PCL818_AD_HI); inb(dev->iobase + PCL818_AD_HI);
outb(0, dev->iobase + PCL818_CLRINT); /* clear INT request */ outb(0, dev->iobase + PCL818_CLRINT); /* clear INT request */
outb(0, dev->iobase + PCL818_CONTROL); /* Stop A/D */ outb(0, dev->iobase + PCL818_CONTROL); /* Stop A/D */
if (devpriv->usefifo) { // FIFO shutdown if (devpriv->usefifo) { /* FIFO shutdown */
outb(0, dev->iobase + PCL818_FI_INTCLR); outb(0, dev->iobase + PCL818_FI_INTCLR);
outb(0, dev->iobase + PCL818_FI_FLUSH); outb(0, dev->iobase + PCL818_FI_FLUSH);
outb(0, dev->iobase + PCL818_FI_ENABLE); outb(0, dev->iobase + PCL818_FI_ENABLE);
...@@ -1502,18 +1506,18 @@ static int pcl818_check(unsigned long iobase) ...@@ -1502,18 +1506,18 @@ static int pcl818_check(unsigned long iobase)
outb(0x00, iobase + PCL818_MUX); outb(0x00, iobase + PCL818_MUX);
comedi_udelay(1); comedi_udelay(1);
if (inb(iobase + PCL818_MUX) != 0x00) if (inb(iobase + PCL818_MUX) != 0x00)
return 1; //there isn't card return 1; /* there isn't card */
outb(0x55, iobase + PCL818_MUX); outb(0x55, iobase + PCL818_MUX);
comedi_udelay(1); comedi_udelay(1);
if (inb(iobase + PCL818_MUX) != 0x55) if (inb(iobase + PCL818_MUX) != 0x55)
return 1; //there isn't card return 1; /* there isn't card */
outb(0x00, iobase + PCL818_MUX); outb(0x00, iobase + PCL818_MUX);
comedi_udelay(1); comedi_udelay(1);
outb(0x18, iobase + PCL818_CONTROL); outb(0x18, iobase + PCL818_CONTROL);
comedi_udelay(1); comedi_udelay(1);
if (inb(iobase + PCL818_CONTROL) != 0x18) if (inb(iobase + PCL818_CONTROL) != 0x18)
return 1; //there isn't card return 1; /* there isn't card */
return 0; // ok, card exist return 0; /* ok, card exist */
} }
/* /*
...@@ -1522,15 +1526,15 @@ static int pcl818_check(unsigned long iobase) ...@@ -1522,15 +1526,15 @@ static int pcl818_check(unsigned long iobase)
*/ */
static void pcl818_reset(struct comedi_device * dev) static void pcl818_reset(struct comedi_device * dev)
{ {
if (devpriv->usefifo) { // FIFO shutdown if (devpriv->usefifo) { /* FIFO shutdown */
outb(0, dev->iobase + PCL818_FI_INTCLR); outb(0, dev->iobase + PCL818_FI_INTCLR);
outb(0, dev->iobase + PCL818_FI_FLUSH); outb(0, dev->iobase + PCL818_FI_FLUSH);
outb(0, dev->iobase + PCL818_FI_ENABLE); outb(0, dev->iobase + PCL818_FI_ENABLE);
} }
outb(0, dev->iobase + PCL818_DA_LO); // DAC=0V outb(0, dev->iobase + PCL818_DA_LO); /* DAC=0V */
outb(0, dev->iobase + PCL818_DA_HI); outb(0, dev->iobase + PCL818_DA_HI);
comedi_udelay(1); comedi_udelay(1);
outb(0, dev->iobase + PCL818_DO_HI); // DO=$0000 outb(0, dev->iobase + PCL818_DO_HI); /* DO=$0000 */
outb(0, dev->iobase + PCL818_DO_LO); outb(0, dev->iobase + PCL818_DO_LO);
comedi_udelay(1); comedi_udelay(1);
outb(0, dev->iobase + PCL818_CONTROL); outb(0, dev->iobase + PCL818_CONTROL);
...@@ -1643,7 +1647,7 @@ static int rtc_setfreq_irq(int freq) ...@@ -1643,7 +1647,7 @@ static int rtc_setfreq_irq(int freq)
*/ */
static void free_resources(struct comedi_device * dev) static void free_resources(struct comedi_device * dev)
{ {
//rt_printk("free_resource()\n"); /* rt_printk("free_resource()\n"); */
if (dev->private) { if (dev->private) {
pcl818_ai_cancel(dev, devpriv->sub_ai); pcl818_ai_cancel(dev, devpriv->sub_ai);
pcl818_reset(dev); pcl818_reset(dev);
...@@ -1670,7 +1674,7 @@ static void free_resources(struct comedi_device * dev) ...@@ -1670,7 +1674,7 @@ static void free_resources(struct comedi_device * dev)
free_irq(dev->irq, dev); free_irq(dev->irq, dev);
if (dev->iobase) if (dev->iobase)
release_region(dev->iobase, devpriv->io_range); release_region(dev->iobase, devpriv->io_range);
//rt_printk("free_resource() end\n"); /* rt_printk("free_resource() end\n"); */
} }
/* /*
...@@ -1695,7 +1699,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i ...@@ -1695,7 +1699,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
printk("comedi%d: pcl818: board=%s, ioport=0x%03lx", printk("comedi%d: pcl818: board=%s, ioport=0x%03lx",
dev->minor, this_board->name, iobase); dev->minor, this_board->name, iobase);
devpriv->io_range = this_board->io_range; devpriv->io_range = this_board->io_range;
if ((this_board->fifo) && (it->options[2] == -1)) { // we've board with FIFO and we want to use FIFO if ((this_board->fifo) && (it->options[2] == -1)) { /* we've board with FIFO and we want to use FIFO */
devpriv->io_range = PCLx1xFIFO_RANGE; devpriv->io_range = PCLx1xFIFO_RANGE;
devpriv->usefifo = 1; devpriv->usefifo = 1;
} }
...@@ -1750,7 +1754,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i ...@@ -1750,7 +1754,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
#ifdef unused #ifdef unused
/* grab RTC for DMA operations */ /* grab RTC for DMA operations */
devpriv->dma_rtc = 0; devpriv->dma_rtc = 0;
if (it->options[2] > 0) { // we want to use DMA if (it->options[2] > 0) { /* we want to use DMA */
if (RTC_lock == 0) { if (RTC_lock == 0) {
if (!request_region(RTC_PORT(0), RTC_IO_EXTENT, if (!request_region(RTC_PORT(0), RTC_IO_EXTENT,
"pcl818 (RTC)")) "pcl818 (RTC)"))
...@@ -1809,8 +1813,8 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i ...@@ -1809,8 +1813,8 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
devpriv->dmapages[0] = pages; devpriv->dmapages[0] = pages;
devpriv->hwdmaptr[0] = virt_to_bus((void *)devpriv->dmabuf[0]); devpriv->hwdmaptr[0] = virt_to_bus((void *)devpriv->dmabuf[0]);
devpriv->hwdmasize[0] = (1 << pages) * PAGE_SIZE; devpriv->hwdmasize[0] = (1 << pages) * PAGE_SIZE;
//rt_printk("%d %d %ld, ",devpriv->dmapages[0],devpriv->hwdmasize[0],PAGE_SIZE); /* rt_printk("%d %d %ld, ",devpriv->dmapages[0],devpriv->hwdmasize[0],PAGE_SIZE); */
if (devpriv->dma_rtc == 0) { // we must do duble buff :-( if (devpriv->dma_rtc == 0) { /* we must do duble buff :-( */
devpriv->dmabuf[1] = __get_dma_pages(GFP_KERNEL, pages); devpriv->dmabuf[1] = __get_dma_pages(GFP_KERNEL, pages);
if (!devpriv->dmabuf[1]) { if (!devpriv->dmabuf[1]) {
rt_printk rt_printk
...@@ -1858,7 +1862,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i ...@@ -1858,7 +1862,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
} }
if (this_board->is_818) { if (this_board->is_818) {
if ((it->options[4] == 1) || (it->options[4] == 10)) if ((it->options[4] == 1) || (it->options[4] == 10))
s->range_table = &range_pcl818l_h_ai; // secondary range list jumper selectable s->range_table = &range_pcl818l_h_ai; /* secondary range list jumper selectable */
} else { } else {
switch (it->options[4]) { switch (it->options[4]) {
case 0: case 0:
...@@ -1982,7 +1986,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i ...@@ -1982,7 +1986,7 @@ static int pcl818_attach(struct comedi_device * dev, struct comedi_devconfig * i
*/ */
static int pcl818_detach(struct comedi_device * dev) static int pcl818_detach(struct comedi_device * dev)
{ {
// rt_printk("comedi%d: pcl818: remove\n", dev->minor); /* rt_printk("comedi%d: pcl818: remove\n", dev->minor); */
free_resources(dev); free_resources(dev);
return 0; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment