TwiceAsNice  2019-02-18
Classes | Macros | Functions | Variables
fliusb.c File Reference
#include <linux/version.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kref.h>
#include <linux/errno.h>
#include <linux/usb.h>
#include <linux/fs.h>
#include <linux/fcntl.h>
#include <linux/slab.h>
#include <asm/uaccess.h>
#include "fliusb.h"
#include "fliusb_ioctl.h"
Include dependency graph for fliusb.c:

Classes

struct  fliusb_param_t
 

Macros

#define FLIUSB_MOD_PARAMETERS
 
#define FLIUSB_MOD_PARAM(var, type, desc)
 
#define FLIUSB_PROD(name, prodid)   { USB_DEVICE(FLIUSB_VENDORID, prodid) },
 
#define FLIUSB_IOC_GETCMD(cmd, val, type)
 
#define FLIUSB_PROD(name, prodid)   case name##_PRODID:
 

Functions

 MODULE_AUTHOR ("Finger Lakes Instrumentation, L.L.C. <support@flicamera.com>")
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_VERSION ("1.3")
 
 MODULE_DEVICE_TABLE (usb, fliusb_table)
 
static int fliusb_open (struct inode *inode, struct file *file)
 
static int fliusb_release (struct inode *inode, struct file *file)
 
static ssize_t fliusb_read (struct file *file, char __user *buffer, size_t count, loff_t *ppos)
 
static ssize_t fliusb_write (struct file *file, const char __user *user_buffer, size_t count, loff_t *ppos)
 
static int fliusb_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
 
static int fliusb_probe (struct usb_interface *interface, const struct usb_device_id *id)
 
static void fliusb_disconnect (struct usb_interface *interface)
 
static void fliusb_delete (struct kref *kref)
 
static int fliusb_allocbuffer (fliusb_t *dev, unsigned int size)
 
static int fliusb_simple_bulk_read (fliusb_t *dev, unsigned int pipe, char __user *userbuffer, size_t count, unsigned int timeout)
 
static int fliusb_bulk_read (fliusb_t *dev, unsigned int pipe, char __user *userbuffer, size_t count, unsigned int timeout)
 
static int fliusb_bulk_write (fliusb_t *dev, unsigned int pipe, const char __user *userbuffer, size_t count, unsigned int timeout)
 
static int fliusb_initdev (fliusb_t **dev, struct usb_interface *interface, const struct usb_device_id *id)
 
static int __init fliusb_init (void)
 
static void __exit fliusb_exit (void)
 
 module_init (fliusb_init)
 
 module_exit (fliusb_exit)
 

Variables

struct mutex fliusb_mutex
 
static fliusb_param_t defaults
 
 FLIUSB_MOD_PARAMETERS
 
static struct usb_device_id fliusb_table []
 
static struct file_operations fliusb_fops
 
static struct usb_class_driver fliusb_class
 
static struct usb_driver fliusb_driver
 

Macro Definition Documentation

◆ FLIUSB_IOC_GETCMD

#define FLIUSB_IOC_GETCMD (   cmd,
  val,
  type 
)
Value:
case cmd: \
return __put_user(val, (type __user *)arg); \
break;
arg demonstrates additional data passing to expfit jacexpfit arg
Definition: lmdemo.m:17
__u8 cmd[4]
Definition: pwc-ioctl.h:255
__le16 type
Definition: pwc-ioctl.h:253

◆ FLIUSB_MOD_PARAM

#define FLIUSB_MOD_PARAM (   var,
  type,
  desc 
)
Value:
module_param_named(var, defaults.var, type, S_IRUGO); \
MODULE_PARM_DESC(var, desc);
static fliusb_param_t defaults
Definition: fliusb.c:87
__le16 type
Definition: pwc-ioctl.h:253

◆ FLIUSB_MOD_PARAMETERS

#define FLIUSB_MOD_PARAMETERS
Value:
FLIUSB_MOD_PARAM(buffersize, uint, "USB bulk transfer buffer size") \
FLIUSB_MOD_PARAM(timeout, uint, "USB bulk transfer timeout (msec)")
static int timeout
Definition: evalINDI.c:58
#define FLIUSB_MOD_PARAM(var, type, desc)
Definition: fliusb.c:96

◆ FLIUSB_PROD [1/2]

#define FLIUSB_PROD (   name,
  prodid 
)    { USB_DEVICE(FLIUSB_VENDORID, prodid) },

◆ FLIUSB_PROD [2/2]

#define FLIUSB_PROD (   name,
  prodid 
)    case name##_PRODID:

Function Documentation

◆ fliusb_allocbuffer()

static int fliusb_allocbuffer ( fliusb_t dev,
unsigned int  size 
)
static

◆ fliusb_bulk_read()

static int fliusb_bulk_read ( fliusb_t dev,
unsigned int  pipe,
char __user *  userbuffer,
size_t  count,
unsigned int  timeout 
)
static

◆ fliusb_bulk_write()

static int fliusb_bulk_write ( fliusb_t dev,
unsigned int  pipe,
const char __user *  userbuffer,
size_t  count,
unsigned int  timeout 
)
static

◆ fliusb_delete()

static void fliusb_delete ( struct kref *  kref)
static

◆ fliusb_disconnect()

static void fliusb_disconnect ( struct usb_interface *  interface)
static

◆ fliusb_exit()

static void __exit fliusb_exit ( void  )
static

◆ fliusb_init()

static int __init fliusb_init ( void  )
static

◆ fliusb_initdev()

static int fliusb_initdev ( fliusb_t **  dev,
struct usb_interface *  interface,
const struct usb_device_id *  id 
)
static

◆ fliusb_ioctl()

static int fliusb_ioctl ( struct inode *  inode,
struct file *  file,
unsigned int  cmd,
unsigned long  arg 
)
static

◆ fliusb_open()

static int fliusb_open ( struct inode *  inode,
struct file *  file 
)
static

◆ fliusb_probe()

static int fliusb_probe ( struct usb_interface *  interface,
const struct usb_device_id *  id 
)
static

◆ fliusb_read()

static ssize_t fliusb_read ( struct file *  file,
char __user *  buffer,
size_t  count,
loff_t *  ppos 
)
static

◆ fliusb_release()

static int fliusb_release ( struct inode *  inode,
struct file *  file 
)
static

◆ fliusb_simple_bulk_read()

static int fliusb_simple_bulk_read ( fliusb_t dev,
unsigned int  pipe,
char __user *  userbuffer,
size_t  count,
unsigned int  timeout 
)
static

◆ fliusb_write()

static ssize_t fliusb_write ( struct file *  file,
const char __user *  user_buffer,
size_t  count,
loff_t *  ppos 
)
static

◆ MODULE_AUTHOR()

MODULE_AUTHOR ( "Finger Lakes  Instrumentation,
L.L.C.< support @flicamera.com >"   
)

◆ MODULE_DEVICE_TABLE()

MODULE_DEVICE_TABLE ( usb  ,
fliusb_table   
)

◆ module_exit()

module_exit ( fliusb_exit  )

◆ module_init()

module_init ( fliusb_init  )

◆ MODULE_LICENSE()

MODULE_LICENSE ( "Dual BSD/GPL"  )

◆ MODULE_VERSION()

MODULE_VERSION ( "1.3"  )

Variable Documentation

◆ defaults

fliusb_param_t defaults
static
Initial value:
= {
.buffersize = FLIUSB_BUFFERSIZE,
.timeout = FLIUSB_TIMEOUT,
}
#define FLIUSB_BUFFERSIZE
Definition: fliusb.h:76
#define FLIUSB_TIMEOUT
Definition: fliusb.h:74

◆ fliusb_class

struct usb_class_driver fliusb_class
static
Initial value:
= {
.name = "usb/" FLIUSB_NAME "%d",
.fops = &fliusb_fops,
.minor_base = FLIUSB_MINOR_BASE,
}
#define FLIUSB_MINOR_BASE
Definition: fliusb.h:48
static struct file_operations fliusb_fops
Definition: fliusb.c:129
#define FLIUSB_NAME
Definition: fliusb.h:47

◆ fliusb_driver

struct usb_driver fliusb_driver
static
Initial value:
= {
.name = FLIUSB_NAME,
.probe = fliusb_probe,
.disconnect = fliusb_disconnect,
.id_table = fliusb_table,
}
static void fliusb_disconnect(struct usb_interface *interface)
Definition: fliusb.c:832
static int fliusb_probe(struct usb_interface *interface, const struct usb_device_id *id)
Definition: fliusb.c:804
#define FLIUSB_NAME
Definition: fliusb.h:47
static struct usb_device_id fliusb_table[]
Definition: fliusb.c:105

◆ fliusb_fops

struct file_operations fliusb_fops
static
Initial value:
= {
.owner = THIS_MODULE,
.read = fliusb_read,
.write = fliusb_write,
.ioctl = fliusb_ioctl,
.open = fliusb_open,
.release = fliusb_release,
}
static int fliusb_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
Definition: fliusb.c:577
static int fliusb_open(struct inode *inode, struct file *file)
Definition: fliusb.c:208
static int fliusb_release(struct inode *inode, struct file *file)
Definition: fliusb.c:237
static ssize_t fliusb_write(struct file *file, const char __user *user_buffer, size_t count, loff_t *ppos)
Definition: fliusb.c:559
static ssize_t fliusb_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
Definition: fliusb.c:544

◆ FLIUSB_MOD_PARAMETERS

FLIUSB_MOD_PARAMETERS

◆ fliusb_mutex

struct mutex fliusb_mutex

◆ fliusb_table

struct usb_device_id fliusb_table[]
static
Initial value:
= {
#define FLIUSB_PROD(name, prodid)
{},
}
#define FLIUSB_PRODUCTS
Definition: libfli-usb-sys.h:117