Commit 25a010c8 authored by Craig W. Nadler's avatar Craig W. Nadler Committed by Greg Kroah-Hartman

USB: add Printer Gadget Driver

G_PRINTER: Adds a USB printer gadget driver for use in printer firmware.

This adds a USB printer gadget driver for use in printer firmware.
The printer gadget channels data between the USB host and a userspace
program driving the print engine. The user space program reads and
writes the device file /dev/g_printer to receive or send printer data.
It can use ioctl calls to the device file to get or set printer status.
Signed-off-by: default avatarCraig W. Nadler <craig@nadler.us>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 676d3aa1
This diff is collapsed.
...@@ -548,6 +548,20 @@ config USB_MIDI_GADGET ...@@ -548,6 +548,20 @@ config USB_MIDI_GADGET
Say "y" to link the driver statically, or "m" to build a Say "y" to link the driver statically, or "m" to build a
dynamically linked module called "g_midi". dynamically linked module called "g_midi".
config USB_G_PRINTER
tristate "Printer Gadget"
help
The Printer Gadget channels data between the USB host and a
userspace program driving the print engine. The user space
program reads and writes the device file /dev/g_printer to
receive or send printer data. It can use ioctl calls to
the device file to get or set printer status.
Say "y" to link the driver statically, or "m" to build a
dynamically linked module called "g_printer".
For more information, see Documentation/usb/gadget_printer.txt
which includes sample code for accessing the device file.
# put drivers that need isochronous transfer support (for audio # put drivers that need isochronous transfer support (for audio
# or video class gadget drivers), or specific hardware, here. # or video class gadget drivers), or specific hardware, here.
......
...@@ -28,6 +28,8 @@ g_midi-objs := gmidi.o usbstring.o config.o epautoconf.o ...@@ -28,6 +28,8 @@ g_midi-objs := gmidi.o usbstring.o config.o epautoconf.o
gadgetfs-objs := inode.o gadgetfs-objs := inode.o
g_file_storage-objs := file_storage.o usbstring.o config.o \ g_file_storage-objs := file_storage.o usbstring.o config.o \
epautoconf.o epautoconf.o
g_printer-objs := printer.o usbstring.o config.o \
epautoconf.o
ifeq ($(CONFIG_USB_ETH_RNDIS),y) ifeq ($(CONFIG_USB_ETH_RNDIS),y)
g_ether-objs += rndis.o g_ether-objs += rndis.o
...@@ -38,5 +40,6 @@ obj-$(CONFIG_USB_ETH) += g_ether.o ...@@ -38,5 +40,6 @@ obj-$(CONFIG_USB_ETH) += g_ether.o
obj-$(CONFIG_USB_GADGETFS) += gadgetfs.o obj-$(CONFIG_USB_GADGETFS) += gadgetfs.o
obj-$(CONFIG_USB_FILE_STORAGE) += g_file_storage.o obj-$(CONFIG_USB_FILE_STORAGE) += g_file_storage.o
obj-$(CONFIG_USB_G_SERIAL) += g_serial.o obj-$(CONFIG_USB_G_SERIAL) += g_serial.o
obj-$(CONFIG_USB_G_PRINTER) += g_printer.o
obj-$(CONFIG_USB_MIDI_GADGET) += g_midi.o obj-$(CONFIG_USB_MIDI_GADGET) += g_midi.o
This diff is collapsed.
...@@ -3,4 +3,5 @@ unifdef-y += cdc.h ...@@ -3,4 +3,5 @@ unifdef-y += cdc.h
unifdef-y += ch9.h unifdef-y += ch9.h
unifdef-y += gadgetfs.h unifdef-y += gadgetfs.h
unifdef-y += midi.h unifdef-y += midi.h
unifdef-y += g_printer.h
/*
* g_printer.h -- Header file for USB Printer gadget driver
*
* Copyright (C) 2007 Craig W. Nadler
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define PRINTER_NOT_ERROR 0x08
#define PRINTER_SELECTED 0x10
#define PRINTER_PAPER_EMPTY 0x20
/* The 'g' code is also used by gadgetfs ioctl requests.
* Don't add any colliding codes to either driver, and keep
* them in unique ranges (size 0x20 for now).
*/
#define GADGET_GET_PRINTER_STATUS _IOR('g', 0x21, unsigned char)
#define GADGET_SET_PRINTER_STATUS _IOWR('g', 0x22, unsigned char)
...@@ -59,6 +59,11 @@ struct usb_gadgetfs_event { ...@@ -59,6 +59,11 @@ struct usb_gadgetfs_event {
}; };
/* The 'g' code is also used by printer gadget ioctl requests.
* Don't add any colliding codes to either driver, and keep
* them in unique ranges (size 0x20 for now).
*/
/* endpoint ioctls */ /* endpoint ioctls */
/* IN transfers may be reported to the gadget driver as complete /* IN transfers may be reported to the gadget driver as complete
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment