Staging: comedi: Remove C99 style comments in adl_pci9111.c

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Bill Pemberton 2009-03-16 22:07:46 -04:00 committed by Greg Kroah-Hartman
parent 3ba97b3c62
commit 52f8ac9830
1 changed files with 98 additions and 153 deletions

View File

@ -85,7 +85,7 @@ TODO:
#define PCI9111_DRIVER_NAME "adl_pci9111" #define PCI9111_DRIVER_NAME "adl_pci9111"
#define PCI9111_HR_DEVICE_ID 0x9111 #define PCI9111_HR_DEVICE_ID 0x9111
// TODO: Add other pci9111 board id /* TODO: Add other pci9111 board id */
#define PCI9111_IO_RANGE 0x0100 #define PCI9111_IO_RANGE 0x0100
@ -133,11 +133,11 @@ TODO:
/* IO address map */ /* IO address map */
#define PCI9111_REGISTER_AD_FIFO_VALUE 0x00 // AD Data stored in FIFO #define PCI9111_REGISTER_AD_FIFO_VALUE 0x00 /* AD Data stored in FIFO */
#define PCI9111_REGISTER_DA_OUTPUT 0x00 #define PCI9111_REGISTER_DA_OUTPUT 0x00
#define PCI9111_REGISTER_DIGITAL_IO 0x02 #define PCI9111_REGISTER_DIGITAL_IO 0x02
#define PCI9111_REGISTER_EXTENDED_IO_PORTS 0x04 #define PCI9111_REGISTER_EXTENDED_IO_PORTS 0x04
#define PCI9111_REGISTER_AD_CHANNEL_CONTROL 0x06 // Channel selection #define PCI9111_REGISTER_AD_CHANNEL_CONTROL 0x06 /* Channel selection */
#define PCI9111_REGISTER_AD_CHANNEL_READBACK 0x06 #define PCI9111_REGISTER_AD_CHANNEL_READBACK 0x06
#define PCI9111_REGISTER_INPUT_SIGNAL_RANGE 0x08 #define PCI9111_REGISTER_INPUT_SIGNAL_RANGE 0x08
#define PCI9111_REGISTER_RANGE_STATUS_READBACK 0x08 #define PCI9111_REGISTER_RANGE_STATUS_READBACK 0x08
@ -261,9 +261,7 @@ TODO:
outb(data & 0xFF, PCI9111_IO_BASE+PCI9111_REGISTER_8254_COUNTER_2); \ outb(data & 0xFF, PCI9111_IO_BASE+PCI9111_REGISTER_8254_COUNTER_2); \
outb( (data >> 8) & 0xFF, PCI9111_IO_BASE+PCI9111_REGISTER_8254_COUNTER_2) outb( (data >> 8) & 0xFF, PCI9111_IO_BASE+PCI9111_REGISTER_8254_COUNTER_2)
// /* Function prototypes */
// Function prototypes
//
static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig * it); static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig * it);
static int pci9111_detach(struct comedi_device * dev); static int pci9111_detach(struct comedi_device * dev);
@ -284,27 +282,27 @@ static const struct comedi_lrange pci9111_hr_ai_range = {
static DEFINE_PCI_DEVICE_TABLE(pci9111_pci_table) = { static DEFINE_PCI_DEVICE_TABLE(pci9111_pci_table) = {
{PCI_VENDOR_ID_ADLINK, PCI9111_HR_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, {PCI_VENDOR_ID_ADLINK, PCI9111_HR_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0,
0, 0}, 0, 0},
//{ PCI_VENDOR_ID_ADLINK, PCI9111_HG_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* { PCI_VENDOR_ID_ADLINK, PCI9111_HG_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, */
{0} {0}
}; };
MODULE_DEVICE_TABLE(pci, pci9111_pci_table); MODULE_DEVICE_TABLE(pci, pci9111_pci_table);
// /* */
// Board specification structure /* Board specification structure */
// /* */
struct pci9111_board { struct pci9111_board {
const char *name; // driver name const char *name; /* driver name */
int device_id; int device_id;
int ai_channel_nbr; // num of A/D chans int ai_channel_nbr; /* num of A/D chans */
int ao_channel_nbr; // num of D/A chans int ao_channel_nbr; /* num of D/A chans */
int ai_resolution; // resolution of A/D int ai_resolution; /* resolution of A/D */
int ai_resolution_mask; int ai_resolution_mask;
int ao_resolution; // resolution of D/A int ao_resolution; /* resolution of D/A */
int ao_resolution_mask; int ao_resolution_mask;
const struct comedi_lrange *ai_range_list; // rangelist for A/D const struct comedi_lrange *ai_range_list; /* rangelist for A/D */
const struct comedi_lrange *ao_range_list; // rangelist for D/A const struct comedi_lrange *ao_range_list; /* rangelist for D/A */
unsigned int ai_acquisition_period_min_ns; unsigned int ai_acquisition_period_min_ns;
}; };
@ -335,15 +333,13 @@ static struct comedi_driver pci9111_driver = {
COMEDI_PCI_INITCLEANUP(pci9111_driver, pci9111_pci_table); COMEDI_PCI_INITCLEANUP(pci9111_driver, pci9111_pci_table);
// /* Private data structure */
// Private data structure
//
struct pci9111_private_data { struct pci9111_private_data {
struct pci_dev *pci_device; struct pci_dev *pci_device;
unsigned long io_range; // PCI6503 io range unsigned long io_range; /* PCI6503 io range */
unsigned long lcr_io_base; // Local configuration register base address unsigned long lcr_io_base; /* Local configuration register base address */
unsigned long lcr_io_range; unsigned long lcr_io_range;
int stop_counter; int stop_counter;
@ -354,23 +350,21 @@ struct pci9111_private_data {
unsigned int chunk_counter; unsigned int chunk_counter;
unsigned int chunk_num_samples; unsigned int chunk_num_samples;
int ao_readback; // Last written analog output data int ao_readback; /* Last written analog output data */
int timer_divisor_1; // Divisor values for the 8254 timer pacer int timer_divisor_1; /* Divisor values for the 8254 timer pacer */
int timer_divisor_2; int timer_divisor_2;
int is_valid; // Is device valid int is_valid; /* Is device valid */
short ai_bounce_buffer[2 * PCI9111_FIFO_HALF_SIZE]; short ai_bounce_buffer[2 * PCI9111_FIFO_HALF_SIZE];
}; };
#define dev_private ((struct pci9111_private_data *)dev->private) #define dev_private ((struct pci9111_private_data *)dev->private)
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* PLX9050 SECTION */
// PLX9050 SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
#define PLX9050_REGISTER_INTERRUPT_CONTROL 0x4c #define PLX9050_REGISTER_INTERRUPT_CONTROL 0x4c
@ -405,15 +399,11 @@ static void plx9050_interrupt_control(unsigned long io_base,
outb(flags, io_base + PLX9050_REGISTER_INTERRUPT_CONTROL); outb(flags, io_base + PLX9050_REGISTER_INTERRUPT_CONTROL);
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* MISCELLANEOUS SECTION */
// MISCELLANEOUS SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
// /* 8254 timer */
// 8254 timer
//
static void pci9111_timer_set(struct comedi_device * dev) static void pci9111_timer_set(struct comedi_device * dev)
{ {
@ -494,13 +484,13 @@ enum pci9111_ISC0_sources {
irq_on_fifo_half_full irq_on_fifo_half_full
}; };
typedef enum { enum pci9111_ISC1_sources {
irq_on_timer_tick, irq_on_timer_tick,
irq_on_external_trigger irq_on_external_trigger
} pci9111_ISC1_sources; };
static void pci9111_interrupt_source_set(struct comedi_device * dev, static void pci9111_interrupt_source_set(struct comedi_device * dev,
enum pci9111_ISC0_sources irq_0_source, pci9111_ISC1_sources irq_1_source) enum pci9111_ISC0_sources irq_0_source, enum pci9111_ISC1_sources irq_1_source)
{ {
int flags; int flags;
@ -515,21 +505,17 @@ static void pci9111_interrupt_source_set(struct comedi_device * dev,
pci9111_interrupt_and_fifo_set(flags); pci9111_interrupt_and_fifo_set(flags);
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* HARDWARE TRIGGERED ANALOG INPUT SECTION */
// HARDWARE TRIGGERED ANALOG INPUT SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
// /* Cancel analog input autoscan */
// Cancel analog input autoscan
//
#undef AI_DO_CMD_DEBUG #undef AI_DO_CMD_DEBUG
static int pci9111_ai_cancel(struct comedi_device * dev, struct comedi_subdevice * s) static int pci9111_ai_cancel(struct comedi_device * dev, struct comedi_subdevice * s)
{ {
// Disable interrupts /* Disable interrupts */
plx9050_interrupt_control(dev_private->lcr_io_base, true, true, true, plx9050_interrupt_control(dev_private->lcr_io_base, true, true, true,
true, false); true, false);
@ -547,9 +533,7 @@ static int pci9111_ai_cancel(struct comedi_device * dev, struct comedi_subdevice
return 0; return 0;
} }
// /* Test analog input command */
// Test analog input command
//
#define pci9111_check_trigger_src(src,flags) \ #define pci9111_check_trigger_src(src,flags) \
tmp = src; \ tmp = src; \
@ -566,7 +550,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
int i; int i;
struct pci9111_board *board = (struct pci9111_board *) dev->board_ptr; struct pci9111_board *board = (struct pci9111_board *) dev->board_ptr;
// Step 1 : check if trigger are trivialy valid /* Step 1 : check if trigger are trivialy valid */
pci9111_check_trigger_src(cmd->start_src, TRIG_NOW); pci9111_check_trigger_src(cmd->start_src, TRIG_NOW);
pci9111_check_trigger_src(cmd->scan_begin_src, pci9111_check_trigger_src(cmd->scan_begin_src,
@ -578,7 +562,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
if (error) if (error)
return 1; return 1;
// step 2 : make sure trigger sources are unique and mutually compatible /* step 2 : make sure trigger sources are unique and mutually compatible */
if (cmd->start_src != TRIG_NOW) if (cmd->start_src != TRIG_NOW)
error++; error++;
@ -610,7 +594,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
if (error) if (error)
return 2; return 2;
// Step 3 : make sure arguments are trivialy compatible /* Step 3 : make sure arguments are trivialy compatible */
if (cmd->chanlist_len < 1) { if (cmd->chanlist_len < 1) {
cmd->chanlist_len = 1; cmd->chanlist_len = 1;
@ -669,7 +653,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
if (error) if (error)
return 3; return 3;
// Step 4 : fix up any arguments /* Step 4 : fix up any arguments */
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
tmp = cmd->convert_arg; tmp = cmd->convert_arg;
@ -680,8 +664,8 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
if (tmp != cmd->convert_arg) if (tmp != cmd->convert_arg)
error++; error++;
} }
// There's only one timer on this card, so the scan_begin timer must /* There's only one timer on this card, so the scan_begin timer must */
// be a multiple of chanlist_len*convert_arg /* be a multiple of chanlist_len*convert_arg */
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
@ -710,7 +694,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
if (error) if (error)
return 4; return 4;
// Step 5 : check channel list /* Step 5 : check channel list */
if (cmd->chanlist) { if (cmd->chanlist) {
@ -754,9 +738,7 @@ pci9111_ai_do_cmd_test(struct comedi_device * dev,
} }
// /* Analog input command */
// Analog input command
//
static int pci9111_ai_do_cmd(struct comedi_device * dev, struct comedi_subdevice * subdevice) static int pci9111_ai_do_cmd(struct comedi_device * dev, struct comedi_subdevice * subdevice)
{ {
@ -767,12 +749,9 @@ static int pci9111_ai_do_cmd(struct comedi_device * dev, struct comedi_subdevice
"no irq assigned for PCI9111, cannot do hardware conversion"); "no irq assigned for PCI9111, cannot do hardware conversion");
return -1; return -1;
} }
// Set channel scan limit /* Set channel scan limit */
// /* PCI9111 allows only scanning from channel 0 to channel n */
// PCI9111 allows only scanning from channel 0 to channel n /* TODO: handle the case of an external multiplexer */
//
// TODO: handle the case of an external multiplexer
//
if (async_cmd->chanlist_len > 1) { if (async_cmd->chanlist_len > 1) {
pci9111_ai_channel_set((async_cmd->chanlist_len) - 1); pci9111_ai_channel_set((async_cmd->chanlist_len) - 1);
@ -782,10 +761,8 @@ static int pci9111_ai_do_cmd(struct comedi_device * dev, struct comedi_subdevice
pci9111_autoscan_set(dev, false); pci9111_autoscan_set(dev, false);
} }
// Set gain /* Set gain */
// /* This is the same gain on every channel */
// This is the same gain on every channel
//
pci9111_ai_range_set(CR_RANGE(async_cmd->chanlist[0])); pci9111_ai_range_set(CR_RANGE(async_cmd->chanlist[0]));
@ -808,7 +785,7 @@ static int pci9111_ai_do_cmd(struct comedi_device * dev, struct comedi_subdevice
return -1; return -1;
} }
// Set timer pacer /* Set timer pacer */
dev_private->scan_delay = 0; dev_private->scan_delay = 0;
switch (async_cmd->convert_src) { switch (async_cmd->convert_src) {
@ -901,11 +878,9 @@ static void pci9111_ai_munge(struct comedi_device * dev, struct comedi_subdevice
} }
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* INTERRUPT SECTION */
// INTERRUPT SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
#undef INTERRUPT_DEBUG #undef INTERRUPT_DEBUG
@ -918,8 +893,8 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device PT_REGS_ARG)
unsigned char intcsr; unsigned char intcsr;
if (!dev->attached) { if (!dev->attached) {
// Ignore interrupt before device fully attached. /* Ignore interrupt before device fully attached. */
// Might not even have allocated subdevices yet! /* Might not even have allocated subdevices yet! */
return IRQ_NONE; return IRQ_NONE;
} }
@ -927,7 +902,7 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device PT_REGS_ARG)
comedi_spin_lock_irqsave(&dev->spinlock, irq_flags); comedi_spin_lock_irqsave(&dev->spinlock, irq_flags);
// Check if we are source of interrupt /* Check if we are source of interrupt */
intcsr = inb(dev_private->lcr_io_base + intcsr = inb(dev_private->lcr_io_base +
PLX9050_REGISTER_INTERRUPT_CONTROL); PLX9050_REGISTER_INTERRUPT_CONTROL);
if (!(((intcsr & PLX9050_PCI_INTERRUPT_ENABLE) != 0) if (!(((intcsr & PLX9050_PCI_INTERRUPT_ENABLE) != 0)
@ -941,15 +916,15 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device PT_REGS_ARG)
== ==
(PLX9050_LINTI2_ENABLE | (PLX9050_LINTI2_ENABLE |
PLX9050_LINTI2_STATUS))))) { PLX9050_LINTI2_STATUS))))) {
// Not the source of the interrupt. /* Not the source of the interrupt. */
// (N.B. not using PLX9050_SOFTWARE_INTERRUPT) /* (N.B. not using PLX9050_SOFTWARE_INTERRUPT) */
comedi_spin_unlock_irqrestore(&dev->spinlock, irq_flags); comedi_spin_unlock_irqrestore(&dev->spinlock, irq_flags);
return IRQ_NONE; return IRQ_NONE;
} }
if ((intcsr & (PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) == if ((intcsr & (PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) ==
(PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) { (PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) {
// Interrupt comes from fifo_half-full signal /* Interrupt comes from fifo_half-full signal */
if (pci9111_is_fifo_full()) { if (pci9111_is_fifo_full()) {
comedi_spin_unlock_irqrestore(&dev->spinlock, comedi_spin_unlock_irqrestore(&dev->spinlock,
@ -1059,15 +1034,11 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device PT_REGS_ARG)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* INSTANT ANALOG INPUT OUTPUT SECTION */
// INSTANT ANALOG INPUT OUTPUT SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
// /* analog instant input */
// analog instant input
//
#undef AI_INSN_DEBUG #undef AI_INSN_DEBUG
@ -1126,9 +1097,7 @@ static int pci9111_ai_insn_read(struct comedi_device * dev,
return i; return i;
} }
// /* Analog instant output */
// Analog instant output
//
static int static int
pci9111_ao_insn_write(struct comedi_device * dev, pci9111_ao_insn_write(struct comedi_device * dev,
@ -1144,9 +1113,7 @@ pci9111_ao_insn_write(struct comedi_device * dev,
return i; return i;
} }
// /* Analog output readback */
// Analog output readback
//
static int pci9111_ao_insn_read(struct comedi_device * dev, static int pci9111_ao_insn_read(struct comedi_device * dev,
struct comedi_subdevice * s, struct comedi_insn * insn, unsigned int * data) struct comedi_subdevice * s, struct comedi_insn * insn, unsigned int * data)
@ -1160,15 +1127,11 @@ static int pci9111_ao_insn_read(struct comedi_device * dev,
return i; return i;
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* DIGITAL INPUT OUTPUT SECTION */
// DIGITAL INPUT OUTPUT SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
// /* Digital inputs */
// Digital inputs
//
static int pci9111_di_insn_bits(struct comedi_device * dev, static int pci9111_di_insn_bits(struct comedi_device * dev,
struct comedi_subdevice * subdevice, struct comedi_insn * insn, unsigned int * data) struct comedi_subdevice * subdevice, struct comedi_insn * insn, unsigned int * data)
@ -1181,18 +1144,16 @@ static int pci9111_di_insn_bits(struct comedi_device * dev,
return 2; return 2;
} }
// /* Digital outputs */
// Digital outputs
//
static int pci9111_do_insn_bits(struct comedi_device * dev, static int pci9111_do_insn_bits(struct comedi_device * dev,
struct comedi_subdevice * subdevice, struct comedi_insn * insn, unsigned int * data) struct comedi_subdevice * subdevice, struct comedi_insn * insn, unsigned int * data)
{ {
unsigned int bits; unsigned int bits;
// Only set bits that have been masked /* Only set bits that have been masked */
// data[0] = mask /* data[0] = mask */
// data[1] = bit state /* data[1] = bit state */
data[0] &= PCI9111_DO_MASK; data[0] &= PCI9111_DO_MASK;
@ -1208,19 +1169,15 @@ static int pci9111_do_insn_bits(struct comedi_device * dev,
return 2; return 2;
} }
// ------------------------------------------------------------------ /* ------------------------------------------------------------------ */
// /* INITIALISATION SECTION */
// INITIALISATION SECTION /* ------------------------------------------------------------------ */
//
// ------------------------------------------------------------------
// /* Reset device */
// Reset device
//
static int pci9111_reset(struct comedi_device * dev) static int pci9111_reset(struct comedi_device * dev)
{ {
// Set trigger source to software /* Set trigger source to software */
plx9050_interrupt_control(dev_private->lcr_io_base, true, true, true, plx9050_interrupt_control(dev_private->lcr_io_base, true, true, true,
true, false); true, false);
@ -1229,7 +1186,7 @@ static int pci9111_reset(struct comedi_device * dev)
pci9111_pretrigger_set(dev, false); pci9111_pretrigger_set(dev, false);
pci9111_autoscan_set(dev, false); pci9111_autoscan_set(dev, false);
// Reset 8254 chip /* Reset 8254 chip */
dev_private->timer_divisor_1 = 0; dev_private->timer_divisor_1 = 0;
dev_private->timer_divisor_2 = 0; dev_private->timer_divisor_2 = 0;
@ -1239,12 +1196,9 @@ static int pci9111_reset(struct comedi_device * dev)
return 0; return 0;
} }
// /* Attach */
// Attach /* - Register PCI device */
// /* - Declare device driver capability */
// - Register PCI device
// - Declare device driver capability
//
static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig * it) static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig * it)
{ {
@ -1257,9 +1211,7 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
if (alloc_private(dev, sizeof(struct pci9111_private_data)) < 0) { if (alloc_private(dev, sizeof(struct pci9111_private_data)) < 0) {
return -ENOMEM; return -ENOMEM;
} }
// /* Probe the device to determine what device in the series it is. */
// Probe the device to determine what device in the series it is.
//
printk("comedi%d: " PCI9111_DRIVER_NAME " driver\n", dev->minor); printk("comedi%d: " PCI9111_DRIVER_NAME " driver\n", dev->minor);
@ -1271,10 +1223,10 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
for (i = 0; i < pci9111_board_nbr; i++) { for (i = 0; i < pci9111_board_nbr; i++) {
if (pci9111_boards[i].device_id == if (pci9111_boards[i].device_id ==
pci_device->device) { pci_device->device) {
// was a particular bus/slot requested? /* was a particular bus/slot requested? */
if ((it->options[0] != 0) if ((it->options[0] != 0)
|| (it->options[1] != 0)) { || (it->options[1] != 0)) {
// are we on the wrong bus/slot? /* are we on the wrong bus/slot? */
if (pci_device->bus->number != if (pci_device->bus->number !=
it->options[0] it->options[0]
|| PCI_SLOT(pci_device-> || PCI_SLOT(pci_device->
@ -1307,24 +1259,24 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
PCI_SLOT(pci_device->devfn), PCI_SLOT(pci_device->devfn),
PCI_FUNC(pci_device->devfn), pci_device->irq); PCI_FUNC(pci_device->devfn), pci_device->irq);
// TODO: Warn about non-tested boards. /* TODO: Warn about non-tested boards. */
switch (board->device_id) { switch (board->device_id) {
}; };
// Read local configuration register base address [PCI_BASE_ADDRESS #1]. /* Read local configuration register base address [PCI_BASE_ADDRESS #1]. */
lcr_io_base = pci_resource_start(pci_device, 1); lcr_io_base = pci_resource_start(pci_device, 1);
lcr_io_range = pci_resource_len(pci_device, 1); lcr_io_range = pci_resource_len(pci_device, 1);
printk("comedi%d: local configuration registers at address 0x%4lx [0x%4lx]\n", dev->minor, lcr_io_base, lcr_io_range); printk("comedi%d: local configuration registers at address 0x%4lx [0x%4lx]\n", dev->minor, lcr_io_base, lcr_io_range);
// Enable PCI device and request regions /* Enable PCI device and request regions */
if (comedi_pci_enable(pci_device, PCI9111_DRIVER_NAME) < 0) { if (comedi_pci_enable(pci_device, PCI9111_DRIVER_NAME) < 0) {
printk("comedi%d: Failed to enable PCI device and request regions\n", dev->minor); printk("comedi%d: Failed to enable PCI device and request regions\n", dev->minor);
return -EIO; return -EIO;
} }
// Read PCI6308 register base address [PCI_BASE_ADDRESS #2]. /* Read PCI6308 register base address [PCI_BASE_ADDRESS #2]. */
io_base = pci_resource_start(pci_device, 2); io_base = pci_resource_start(pci_device, 2);
io_range = pci_resource_len(pci_device, 2); io_range = pci_resource_len(pci_device, 2);
@ -1341,7 +1293,7 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
pci9111_reset(dev); pci9111_reset(dev);
// Irq setup /* Irq setup */
dev->irq = 0; dev->irq = 0;
if (pci_device->irq > 0) { if (pci_device->irq > 0) {
@ -1355,9 +1307,7 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
} }
dev->irq = pci_device->irq; dev->irq = pci_device->irq;
// /* TODO: Add external multiplexer setup (according to option[2]). */
// TODO: Add external multiplexer setup (according to option[2]).
//
if ((error = alloc_subdevices(dev, 4)) < 0) if ((error = alloc_subdevices(dev, 4)) < 0)
return error; return error;
@ -1368,12 +1318,9 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
subdevice->type = COMEDI_SUBD_AI; subdevice->type = COMEDI_SUBD_AI;
subdevice->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_CMD_READ; subdevice->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_CMD_READ;
// /* TODO: Add external multiplexer data */
// TODO: Add external multiplexer data /* if (devpriv->usemux) { subdevice->n_chan = devpriv->usemux; } */
// /* else { subdevice->n_chan = this_board->n_aichan; } */
// if (devpriv->usemux) { subdevice->n_chan = devpriv->usemux; }
// else { subdevice->n_chan = this_board->n_aichan; }
//
subdevice->n_chan = board->ai_channel_nbr; subdevice->n_chan = board->ai_channel_nbr;
subdevice->maxdata = board->ai_resolution_mask; subdevice->maxdata = board->ai_resolution_mask;
@ -1416,20 +1363,18 @@ static int pci9111_attach(struct comedi_device * dev, struct comedi_devconfig *
return 0; return 0;
} }
// /* Detach */
// Detach
//
static int pci9111_detach(struct comedi_device * dev) static int pci9111_detach(struct comedi_device * dev)
{ {
// Reset device /* Reset device */
if (dev->private != 0) { if (dev->private != 0) {
if (dev_private->is_valid) if (dev_private->is_valid)
pci9111_reset(dev); pci9111_reset(dev);
} }
// Release previously allocated irq /* Release previously allocated irq */
if (dev->irq != 0) { if (dev->irq != 0) {
comedi_free_irq(dev->irq, dev); comedi_free_irq(dev->irq, dev);