nidas  v1.2-1520
Classes | Macros | Functions | Variables
lamsx.c File Reference
#include <linux/types.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/workqueue.h>
#include <linux/poll.h>
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <asm/io.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include "lamsx.h"
#include <nidas/linux/ver_macros.h>
#include <nidas/linux/Revision.h>
#include <nidas/linux/klog.h>
#include <nidas/linux/isa_bus.h>
#include <nidas/linux/util.h>

Classes

struct  bh_data
 
struct  LAMS_board
 

Macros

#define MAX_LAMS_BOARDS   3
 
#define IRQF_SHARED   SA_SHIRQ
 
#define REPO_REVISION   "unknown"
 
#define RAM_CLEAR_OFFSET   0x00
 
#define PEAK_CLEAR_OFFSET   0x02
 
#define AVG_LSW_DATA_OFFSET   0x04
 
#define AVG_MSW_DATA_OFFSET   0x06
 
#define PEAK_DATA_OFFSET   0x08
 
#define TAS_BELOW_OFFSET   0x0A
 
#define TAS_ABOVE_OFFSET   0x0C
 
#define IOPORT_REGION_SIZE   16
 
#define SPECTRAL_POINTS_TO_SKIP   0
 
#define LAMS_ISR_SAMPLE_QUEUE_SIZE   128
 
#define LAMS_OUTPUT_SAMPLE_QUEUE_SIZE   32
 

Functions

 module_param_array (ioports, int, numboards, 0)
 
 module_param_array (irqs, int, numirqs, 0)
 
 MODULE_AUTHOR ("Gordon Maclean <maclean@ucar.edu>")
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_DESCRIPTION ("Driver for LAMX card")
 
 MODULE_VERSION (REPO_REVISION)
 
static int setNAvg (struct LAMS_board *brd, int val)
 
static void lams_bottom_half (struct work_struct *work)
 Work queue function that processes the raw samples from the ISR. More...
 
static irqreturn_t lams_irq_handler (int irq, void *dev_id)
 
static int lams_request_irq (struct LAMS_board *brd)
 
static int lams_remove_irq (struct LAMS_board *brd)
 
static int lams_open (struct inode *inode, struct file *filp)
 
static int lams_release (struct inode *inode, struct file *filp)
 
static ssize_t lams_read (struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
 
static unsigned int lams_poll (struct file *filp, poll_table *wait)
 
static long lams_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)
 
static void lams_cleanup (void)
 
static int __init lams_init (void)
 
 module_init (lams_init)
 
 module_exit (lams_cleanup)
 

Variables

static const char * driver_name = "lamsx"
 
static unsigned int ioports [MAX_LAMS_BOARDS] = { 0x220, 0, 0 }
 
static int numboards = 0
 
static int irqs [MAX_LAMS_BOARDS] = { 4, 0, 0 }
 
static int numirqs = 0
 
static dev_t lams_device = MKDEV(0,0)
 
static struct class * lams_class
 
static struct LAMS_boardboards = 0
 
static struct workqueue_struct * work_queue = 0
 
static struct file_operations lams_fops
 

Macro Definition Documentation

#define AVG_LSW_DATA_OFFSET   0x04

Referenced by lams_init().

#define AVG_MSW_DATA_OFFSET   0x06

Referenced by lams_init().

#define IOPORT_REGION_SIZE   16

Referenced by lams_cleanup(), and lams_init().

#define IRQF_SHARED   SA_SHIRQ
#define LAMS_ISR_SAMPLE_QUEUE_SIZE   128
#define LAMS_OUTPUT_SAMPLE_QUEUE_SIZE   32
#define MAX_LAMS_BOARDS   3

Referenced by lams_init().

#define PEAK_CLEAR_OFFSET   0x02

Referenced by lams_init().

#define PEAK_DATA_OFFSET   0x08

Referenced by lams_init().

#define RAM_CLEAR_OFFSET   0x00

Referenced by lams_init().

#define REPO_REVISION   "unknown"

Referenced by lams_init().

#define SPECTRAL_POINTS_TO_SKIP   0

Referenced by lams_init().

#define TAS_ABOVE_OFFSET   0x0C

Referenced by lams_ioctl().

#define TAS_BELOW_OFFSET   0x0A

Referenced by lams_ioctl().

Function Documentation

static void lams_bottom_half ( struct work_struct *  work)
static
static void lams_cleanup ( void  )
static
static int __init lams_init ( void  )
static
static long lams_ioctl ( struct file *  filp,
unsigned int  cmd,
unsigned long  arg 
)
static
static irqreturn_t lams_irq_handler ( int  irq,
void *  dev_id 
)
static
static int lams_open ( struct inode *  inode,
struct file *  filp 
)
static
static unsigned int lams_poll ( struct file *  filp,
poll_table *  wait 
)
static
static ssize_t lams_read ( struct file *  filp,
char __user *  buf,
size_t  count,
loff_t *  f_pos 
)
static
static int lams_release ( struct inode *  inode,
struct file *  filp 
)
static
static int lams_remove_irq ( struct LAMS_board brd)
static

References LAMS_board::irq.

Referenced by lams_release().

static int lams_request_irq ( struct LAMS_board brd)
static
MODULE_AUTHOR ( "Gordon Maclean <maclean@ucar.edu>"  )
MODULE_DESCRIPTION ( "Driver for LAMX card"  )
module_exit ( lams_cleanup  )
module_init ( lams_init  )
MODULE_LICENSE ( "Dual BSD/GPL"  )
module_param_array ( ioports  ,
int  ,
numboards  ,
 
)
module_param_array ( irqs  ,
int  ,
numirqs  ,
 
)
MODULE_VERSION ( REPO_REVISION  )
static int setNAvg ( struct LAMS_board brd,
int  val 
)
static

Variable Documentation

struct LAMS_board* boards = 0
static
const char* driver_name = "lamsx"
static

Referenced by lams_init(), and lams_request_irq().

unsigned int ioports[MAX_LAMS_BOARDS] = { 0x220, 0, 0 }
static

Referenced by lams_init().

int irqs[MAX_LAMS_BOARDS] = { 4, 0, 0 }
static

Referenced by lams_init(), and lams_request_irq().

struct class* lams_class
static

Referenced by lams_cleanup(), and lams_init().

dev_t lams_device = MKDEV(0,0)
static

Referenced by lams_cleanup(), and lams_init().

struct file_operations lams_fops
static
Initial value:
= {
.owner = THIS_MODULE,
.read = lams_read,
.poll = lams_poll,
.open = lams_open,
.unlocked_ioctl = lams_ioctl,
.release = lams_release,
.llseek = no_llseek,
}
static int lams_release(struct inode *inode, struct file *filp)
Definition: lamsx.c:583
static long lams_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
Definition: lamsx.c:655
static unsigned int lams_poll(struct file *filp, poll_table *wait)
Definition: lamsx.c:640
static int lams_open(struct inode *inode, struct file *filp)
Definition: lamsx.c:521
static ssize_t lams_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
Definition: lamsx.c:611
int numboards = 0
static
int numirqs = 0
static
struct workqueue_struct* work_queue = 0
static