Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
usblp.c File Reference
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/poll.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/lp.h>
#include <linux/mutex.h>
#include <linux/usb.h>
#include <linux/ratelimit.h>

Go to the source code of this file.

Data Structures

struct  usblp
 
struct  quirk_printer_struct
 

Macros

#define DRIVER_AUTHOR   "Michael Gee, Pavel Machek, Vojtech Pavlik, Randy Dunlap, Pete Zaitcev, David Paschal"
 
#define DRIVER_DESC   "USB Printer Device Class driver"
 
#define USBLP_BUF_SIZE   8192
 
#define USBLP_BUF_SIZE_IN   1024
 
#define USBLP_DEVICE_ID_SIZE   1024
 
#define IOCNR_GET_DEVICE_ID   1
 
#define IOCNR_GET_PROTOCOLS   2
 
#define IOCNR_SET_PROTOCOL   3
 
#define IOCNR_HP_SET_CHANNEL   4
 
#define IOCNR_GET_BUS_ADDRESS   5
 
#define IOCNR_GET_VID_PID   6
 
#define IOCNR_SOFT_RESET   7
 
#define LPIOC_GET_DEVICE_ID(len)   _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
 
#define LPIOC_GET_PROTOCOLS(len)   _IOC(_IOC_READ, 'P', IOCNR_GET_PROTOCOLS, len)
 
#define LPIOC_SET_PROTOCOL   _IOC(_IOC_WRITE, 'P', IOCNR_SET_PROTOCOL, 0)
 
#define LPIOC_HP_SET_CHANNEL   _IOC(_IOC_WRITE, 'P', IOCNR_HP_SET_CHANNEL, 0)
 
#define LPIOC_GET_BUS_ADDRESS(len)   _IOC(_IOC_READ, 'P', IOCNR_GET_BUS_ADDRESS, len)
 
#define LPIOC_GET_VID_PID(len)   _IOC(_IOC_READ, 'P', IOCNR_GET_VID_PID, len)
 
#define LPIOC_SOFT_RESET   _IOC(_IOC_NONE, 'P', IOCNR_SOFT_RESET, 0);
 
#define USBLP_REQ_GET_ID   0x00
 
#define USBLP_REQ_GET_STATUS   0x01
 
#define USBLP_REQ_RESET   0x02
 
#define USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST   0x00 /* HP Vendor-specific */
 
#define USBLP_MINORS   16
 
#define USBLP_MINOR_BASE   0
 
#define USBLP_CTL_TIMEOUT   5000 /* 5 seconds */
 
#define USBLP_FIRST_PROTOCOL   1
 
#define USBLP_LAST_PROTOCOL   3
 
#define USBLP_MAX_PROTOCOLS   (USBLP_LAST_PROTOCOL+1)
 
#define STATUS_BUF_SIZE   8
 
#define USBLP_QUIRK_BIDIR   0x1 /* reports bidir but requires unidirectional mode (no INs/reads) */
 
#define USBLP_QUIRK_USB_INIT   0x2 /* needs vendor USB init string */
 
#define USBLP_QUIRK_BAD_CLASS   0x4 /* descriptor uses vendor-specific Class or SubClass */
 
#define usblp_read_status(usblp, status)   usblp_ctrl_msg(usblp, USBLP_REQ_GET_STATUS, USB_TYPE_CLASS, USB_DIR_IN, USB_RECIP_INTERFACE, 0, status, 1)
 
#define usblp_get_id(usblp, config, id, maxlen)   usblp_ctrl_msg(usblp, USBLP_REQ_GET_ID, USB_TYPE_CLASS, USB_DIR_IN, USB_RECIP_INTERFACE, config, id, maxlen)
 
#define usblp_reset(usblp)   usblp_ctrl_msg(usblp, USBLP_REQ_RESET, USB_TYPE_CLASS, USB_DIR_OUT, USB_RECIP_OTHER, 0, NULL, 0)
 
#define usblp_hp_channel_change_request(usblp, channel, buffer)   usblp_ctrl_msg(usblp, USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST, USB_TYPE_VENDOR, USB_DIR_IN, USB_RECIP_INTERFACE, channel, buffer, 1)
 

Functions

 MODULE_DEVICE_TABLE (usb, usblp_ids)
 
 module_usb_driver (usblp_driver)
 
 MODULE_AUTHOR (DRIVER_AUTHOR)
 
 MODULE_DESCRIPTION (DRIVER_DESC)
 
 module_param (proto_bias, int, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (proto_bias,"Favourite protocol number")
 
 MODULE_LICENSE ("GPL")
 

Macro Definition Documentation

#define DRIVER_AUTHOR   "Michael Gee, Pavel Machek, Vojtech Pavlik, Randy Dunlap, Pete Zaitcev, David Paschal"

Definition at line 66 of file usblp.c.

#define DRIVER_DESC   "USB Printer Device Class driver"

Definition at line 67 of file usblp.c.

#define IOCNR_GET_BUS_ADDRESS   5

Definition at line 78 of file usblp.c.

#define IOCNR_GET_DEVICE_ID   1

Definition at line 74 of file usblp.c.

#define IOCNR_GET_PROTOCOLS   2

Definition at line 75 of file usblp.c.

#define IOCNR_GET_VID_PID   6

Definition at line 79 of file usblp.c.

#define IOCNR_HP_SET_CHANNEL   4

Definition at line 77 of file usblp.c.

#define IOCNR_SET_PROTOCOL   3

Definition at line 76 of file usblp.c.

#define IOCNR_SOFT_RESET   7

Definition at line 80 of file usblp.c.

#define LPIOC_GET_BUS_ADDRESS (   len)    _IOC(_IOC_READ, 'P', IOCNR_GET_BUS_ADDRESS, len)

Definition at line 93 of file usblp.c.

#define LPIOC_GET_DEVICE_ID (   len)    _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)

Definition at line 82 of file usblp.c.

#define LPIOC_GET_PROTOCOLS (   len)    _IOC(_IOC_READ, 'P', IOCNR_GET_PROTOCOLS, len)

Definition at line 87 of file usblp.c.

#define LPIOC_GET_VID_PID (   len)    _IOC(_IOC_READ, 'P', IOCNR_GET_VID_PID, len)

Definition at line 95 of file usblp.c.

#define LPIOC_HP_SET_CHANNEL   _IOC(_IOC_WRITE, 'P', IOCNR_HP_SET_CHANNEL, 0)

Definition at line 91 of file usblp.c.

#define LPIOC_SET_PROTOCOL   _IOC(_IOC_WRITE, 'P', IOCNR_SET_PROTOCOL, 0)

Definition at line 89 of file usblp.c.

#define LPIOC_SOFT_RESET   _IOC(_IOC_NONE, 'P', IOCNR_SOFT_RESET, 0);

Definition at line 97 of file usblp.c.

#define STATUS_BUF_SIZE   8

Definition at line 129 of file usblp.c.

#define USBLP_BUF_SIZE   8192

Definition at line 69 of file usblp.c.

#define USBLP_BUF_SIZE_IN   1024

Definition at line 70 of file usblp.c.

#define USBLP_CTL_TIMEOUT   5000 /* 5 seconds */

Definition at line 119 of file usblp.c.

#define USBLP_DEVICE_ID_SIZE   1024

Definition at line 71 of file usblp.c.

#define USBLP_FIRST_PROTOCOL   1

Definition at line 121 of file usblp.c.

#define usblp_get_id (   usblp,
  config,
  id,
  maxlen 
)    usblp_ctrl_msg(usblp, USBLP_REQ_GET_ID, USB_TYPE_CLASS, USB_DIR_IN, USB_RECIP_INTERFACE, config, id, maxlen)

Definition at line 277 of file usblp.c.

#define usblp_hp_channel_change_request (   usblp,
  channel,
  buffer 
)    usblp_ctrl_msg(usblp, USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST, USB_TYPE_VENDOR, USB_DIR_IN, USB_RECIP_INTERFACE, channel, buffer, 1)

Definition at line 282 of file usblp.c.

#define USBLP_LAST_PROTOCOL   3

Definition at line 122 of file usblp.c.

#define USBLP_MAX_PROTOCOLS   (USBLP_LAST_PROTOCOL+1)

Definition at line 123 of file usblp.c.

#define USBLP_MINOR_BASE   0

Definition at line 117 of file usblp.c.

#define USBLP_MINORS   16

Definition at line 116 of file usblp.c.

#define USBLP_QUIRK_BAD_CLASS   0x4 /* descriptor uses vendor-specific Class or SubClass */

Definition at line 216 of file usblp.c.

#define USBLP_QUIRK_BIDIR   0x1 /* reports bidir but requires unidirectional mode (no INs/reads) */

Definition at line 214 of file usblp.c.

#define USBLP_QUIRK_USB_INIT   0x2 /* needs vendor USB init string */

Definition at line 215 of file usblp.c.

#define usblp_read_status (   usblp,
  status 
)    usblp_ctrl_msg(usblp, USBLP_REQ_GET_STATUS, USB_TYPE_CLASS, USB_DIR_IN, USB_RECIP_INTERFACE, 0, status, 1)

Definition at line 275 of file usblp.c.

#define USBLP_REQ_GET_ID   0x00

Definition at line 111 of file usblp.c.

#define USBLP_REQ_GET_STATUS   0x01

Definition at line 112 of file usblp.c.

#define USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST   0x00 /* HP Vendor-specific */

Definition at line 114 of file usblp.c.

#define USBLP_REQ_RESET   0x02

Definition at line 113 of file usblp.c.

#define usblp_reset (   usblp)    usblp_ctrl_msg(usblp, USBLP_REQ_RESET, USB_TYPE_CLASS, USB_DIR_OUT, USB_RECIP_OTHER, 0, NULL, 0)

Definition at line 279 of file usblp.c.

Function Documentation

MODULE_AUTHOR ( DRIVER_AUTHOR  )
MODULE_DESCRIPTION ( DRIVER_DESC  )
MODULE_DEVICE_TABLE ( usb  ,
usblp_ids   
)
MODULE_LICENSE ( "GPL"  )
module_param ( proto_bias  ,
int  ,
S_IRUGO S_IWUSR 
)
MODULE_PARM_DESC ( proto_bias  ,
"Favourite protocol number  
)
module_usb_driver ( usblp_driver  )