Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
gsc_hpdi.c File Reference
#include <linux/interrupt.h>
#include "../comedidev.h"
#include <linux/delay.h>
#include "plx9080.h"
#include "comedi_fc.h"

Go to the source code of this file.

Data Structures

struct  hpdi_board
 
struct  hpdi_private
 

Macros

#define DEBUG_PRINT(format, args...)
 
#define TIMER_BASE   50 /* 20MHz master clock */
 
#define DMA_BUFFER_SIZE   0x10000
 
#define NUM_DMA_BUFFERS   4
 
#define NUM_DMA_DESCRIPTORS   256
 

Enumerations

enum  base_address_regions {
  PLX9080_BADDRINDEX = 0, MAIN_BADDRINDEX = 2, DIO_COUNTER_BADDRINDEX = 3, PLX9080_BADDRINDEX = 0,
  HPDI_BADDRINDEX = 2
}
 
enum  hpdi_registers {
  FIRMWARE_REV_REG = 0x0, BOARD_CONTROL_REG = 0x4, BOARD_STATUS_REG = 0x8, TX_PROG_ALMOST_REG = 0xc,
  RX_PROG_ALMOST_REG = 0x10, FEATURES_REG = 0x14, FIFO_REG = 0x18, TX_STATUS_COUNT_REG = 0x1c,
  TX_LINE_VALID_COUNT_REG = 0x20, TX_LINE_INVALID_COUNT_REG = 0x24, RX_STATUS_COUNT_REG = 0x28, RX_LINE_COUNT_REG = 0x2c,
  INTERRUPT_CONTROL_REG = 0x30, INTERRUPT_STATUS_REG = 0x34, TX_CLOCK_DIVIDER_REG = 0x38, TX_FIFO_SIZE_REG = 0x40,
  RX_FIFO_SIZE_REG = 0x44, TX_FIFO_WORDS_REG = 0x48, RX_FIFO_WORDS_REG = 0x4c, INTERRUPT_EDGE_LEVEL_REG = 0x50,
  INTERRUPT_POLARITY_REG = 0x54
}
 
enum  firmware_revision_bits { FEATURES_REG_PRESENT_BIT = 0x8000 }
 
enum  board_control_bits {
  BOARD_RESET_BIT = 0x1, TX_FIFO_RESET_BIT = 0x2, RX_FIFO_RESET_BIT = 0x4, TX_ENABLE_BIT = 0x10,
  RX_ENABLE_BIT = 0x20, DEMAND_DMA_DIRECTION_TX_BIT = 0x40, LINE_VALID_ON_STATUS_VALID_BIT = 0x80, START_TX_BIT = 0x10,
  CABLE_THROTTLE_ENABLE_BIT = 0x20, TEST_MODE_ENABLE_BIT = 0x80000000
}
 
enum  board_status_bits {
  COMMAND_LINE_STATUS_MASK = 0x7f, TX_IN_PROGRESS_BIT = 0x80, TX_NOT_EMPTY_BIT = 0x100, TX_NOT_ALMOST_EMPTY_BIT = 0x200,
  TX_NOT_ALMOST_FULL_BIT = 0x400, TX_NOT_FULL_BIT = 0x800, RX_NOT_EMPTY_BIT = 0x1000, RX_NOT_ALMOST_EMPTY_BIT = 0x2000,
  RX_NOT_ALMOST_FULL_BIT = 0x4000, RX_NOT_FULL_BIT = 0x8000, BOARD_JUMPER0_INSTALLED_BIT = 0x10000, BOARD_JUMPER1_INSTALLED_BIT = 0x20000,
  TX_OVERRUN_BIT = 0x200000, RX_UNDERRUN_BIT = 0x400000, RX_OVERRUN_BIT = 0x800000
}
 
enum  features_bits {
  FIFO_SIZE_PRESENT_BIT = 0x1, FIFO_WORDS_PRESENT_BIT = 0x2, LEVEL_EDGE_INTERRUPTS_PRESENT_BIT = 0x4, GPIO_SUPPORTED_BIT = 0x8,
  PLX_DMA_CH1_SUPPORTED_BIT = 0x10, OVERRUN_UNDERRUN_SUPPORTED_BIT = 0x20
}
 
enum  interrupt_sources {
  FRAME_VALID_START_INTR = 0, FRAME_VALID_END_INTR = 1, TX_FIFO_EMPTY_INTR = 8, TX_FIFO_ALMOST_EMPTY_INTR = 9,
  TX_FIFO_ALMOST_FULL_INTR = 10, TX_FIFO_FULL_INTR = 11, RX_EMPTY_INTR = 12, RX_ALMOST_EMPTY_INTR = 13,
  RX_ALMOST_FULL_INTR = 14, RX_FULL_INTR = 15
}
 

Functions

int command_channel_valid (unsigned int channel)
 
int firmware_revision (uint32_t fwr_bits)
 
int pcb_revision (uint32_t fwr_bits)
 
int hpdi_subid (uint32_t fwr_bits)
 
uint32_t command_discrete_output_bits (unsigned int channel, int output, int output_value)
 
uint32_t almost_full_bits (unsigned int num_words)
 
uint32_t almost_empty_bits (unsigned int num_words)
 
unsigned int almost_full_num_words (uint32_t bits)
 
unsigned int almost_empty_num_words (uint32_t bits)
 
int command_intr_source (unsigned int channel)
 
uint32_t intr_bit (int interrupt_source)
 
uint32_t tx_clock_divisor_bits (unsigned int divisor)
 
unsigned int fifo_size (uint32_t fifo_size_bits)
 
unsigned int fifo_words (uint32_t fifo_words_bits)
 
uint32_t intr_edge_bit (int interrupt_source)
 
uint32_t intr_active_high_bit (int interrupt_source)
 
 MODULE_DEVICE_TABLE (pci, gsc_hpdi_pci_table)
 
 module_comedi_pci_driver (gsc_hpdi_driver, gsc_hpdi_pci_driver)
 
 MODULE_AUTHOR ("Comedi http://www.comedi.org")
 
 MODULE_DESCRIPTION ("Comedi low-level driver")
 
 MODULE_LICENSE ("GPL")
 

Macro Definition Documentation

#define DEBUG_PRINT (   format,
  args... 
)

Definition at line 69 of file gsc_hpdi.c.

#define DMA_BUFFER_SIZE   0x10000

Definition at line 73 of file gsc_hpdi.c.

#define NUM_DMA_BUFFERS   4

Definition at line 74 of file gsc_hpdi.c.

#define NUM_DMA_DESCRIPTORS   256

Definition at line 75 of file gsc_hpdi.c.

#define TIMER_BASE   50 /* 20MHz master clock */

Definition at line 72 of file gsc_hpdi.c.

Enumeration Type Documentation

Enumerator:
PLX9080_BADDRINDEX 
MAIN_BADDRINDEX 
DIO_COUNTER_BADDRINDEX 
PLX9080_BADDRINDEX 
HPDI_BADDRINDEX 

Definition at line 78 of file gsc_hpdi.c.

Enumerator:
BOARD_RESET_BIT 
TX_FIFO_RESET_BIT 
RX_FIFO_RESET_BIT 
TX_ENABLE_BIT 
RX_ENABLE_BIT 
DEMAND_DMA_DIRECTION_TX_BIT 
LINE_VALID_ON_STATUS_VALID_BIT 
START_TX_BIT 
CABLE_THROTTLE_ENABLE_BIT 
TEST_MODE_ENABLE_BIT 

Definition at line 137 of file gsc_hpdi.c.

Enumerator:
COMMAND_LINE_STATUS_MASK 
TX_IN_PROGRESS_BIT 
TX_NOT_EMPTY_BIT 
TX_NOT_ALMOST_EMPTY_BIT 
TX_NOT_ALMOST_FULL_BIT 
TX_NOT_FULL_BIT 
RX_NOT_EMPTY_BIT 
RX_NOT_ALMOST_EMPTY_BIT 
RX_NOT_ALMOST_FULL_BIT 
RX_NOT_FULL_BIT 
BOARD_JUMPER0_INSTALLED_BIT 
BOARD_JUMPER1_INSTALLED_BIT 
TX_OVERRUN_BIT 
RX_UNDERRUN_BIT 
RX_OVERRUN_BIT 

Definition at line 167 of file gsc_hpdi.c.

Enumerator:
FIFO_SIZE_PRESENT_BIT 
FIFO_WORDS_PRESENT_BIT 
LEVEL_EDGE_INTERRUPTS_PRESENT_BIT 
GPIO_SUPPORTED_BIT 
PLX_DMA_CH1_SUPPORTED_BIT 
OVERRUN_UNDERRUN_SUPPORTED_BIT 

Definition at line 207 of file gsc_hpdi.c.

Enumerator:
FEATURES_REG_PRESENT_BIT 

Definition at line 119 of file gsc_hpdi.c.

Enumerator:
FIRMWARE_REV_REG 
BOARD_CONTROL_REG 
BOARD_STATUS_REG 
TX_PROG_ALMOST_REG 
RX_PROG_ALMOST_REG 
FEATURES_REG 
FIFO_REG 
TX_STATUS_COUNT_REG 
TX_LINE_VALID_COUNT_REG 
TX_LINE_INVALID_COUNT_REG 
RX_STATUS_COUNT_REG 
RX_LINE_COUNT_REG 
INTERRUPT_CONTROL_REG 
INTERRUPT_STATUS_REG 
TX_CLOCK_DIVIDER_REG 
TX_FIFO_SIZE_REG 
RX_FIFO_SIZE_REG 
TX_FIFO_WORDS_REG 
RX_FIFO_WORDS_REG 
INTERRUPT_EDGE_LEVEL_REG 
INTERRUPT_POLARITY_REG 

Definition at line 83 of file gsc_hpdi.c.

Enumerator:
FRAME_VALID_START_INTR 
FRAME_VALID_END_INTR 
TX_FIFO_EMPTY_INTR 
TX_FIFO_ALMOST_EMPTY_INTR 
TX_FIFO_ALMOST_FULL_INTR 
TX_FIFO_FULL_INTR 
RX_EMPTY_INTR 
RX_ALMOST_EMPTY_INTR 
RX_ALMOST_FULL_INTR 
RX_FULL_INTR 

Definition at line 216 of file gsc_hpdi.c.

Function Documentation

uint32_t almost_empty_bits ( unsigned int  num_words)

Definition at line 191 of file gsc_hpdi.c.

unsigned int almost_empty_num_words ( uint32_t  bits)

Definition at line 202 of file gsc_hpdi.c.

uint32_t almost_full_bits ( unsigned int  num_words)

Definition at line 185 of file gsc_hpdi.c.

unsigned int almost_full_num_words ( uint32_t  bits)

Definition at line 196 of file gsc_hpdi.c.

int command_channel_valid ( unsigned int  channel)

Definition at line 107 of file gsc_hpdi.c.

uint32_t command_discrete_output_bits ( unsigned int  channel,
int  output,
int  output_value 
)

Definition at line 150 of file gsc_hpdi.c.

int command_intr_source ( unsigned int  channel)

Definition at line 228 of file gsc_hpdi.c.

unsigned int fifo_size ( uint32_t  fifo_size_bits)

Definition at line 245 of file gsc_hpdi.c.

unsigned int fifo_words ( uint32_t  fifo_words_bits)

Definition at line 250 of file gsc_hpdi.c.

int firmware_revision ( uint32_t  fwr_bits)

Definition at line 122 of file gsc_hpdi.c.

int hpdi_subid ( uint32_t  fwr_bits)

Definition at line 132 of file gsc_hpdi.c.

uint32_t intr_active_high_bit ( int  interrupt_source)

Definition at line 260 of file gsc_hpdi.c.

uint32_t intr_bit ( int  interrupt_source)

Definition at line 235 of file gsc_hpdi.c.

uint32_t intr_edge_bit ( int  interrupt_source)

Definition at line 255 of file gsc_hpdi.c.

MODULE_AUTHOR ( "Comedi http://www.comedi.org"  )
module_comedi_pci_driver ( gsc_hpdi_driver  ,
gsc_hpdi_pci_driver   
)
MODULE_DESCRIPTION ( "Comedi low-level driver )
MODULE_DEVICE_TABLE ( pci  ,
gsc_hpdi_pci_table   
)
MODULE_LICENSE ( "GPL"  )
int pcb_revision ( uint32_t  fwr_bits)

Definition at line 127 of file gsc_hpdi.c.

uint32_t tx_clock_divisor_bits ( unsigned int  divisor)

Definition at line 240 of file gsc_hpdi.c.