FreeBSD kernel usb device Code
|
#include <sys/cdefs.h>
#include "opt_hid.h"
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/sx.h>
#include <sys/unistd.h>
#include <sys/callout.h>
#include <sys/malloc.h>
#include <sys/priv.h>
#include <sys/conf.h>
#include <sys/fcntl.h>
#include <dev/hid/hid.h>
#include "usbdevs.h"
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbhid.h>
#include <dev/usb/usb_ioctl.h>
#include <dev/usb/usb_generic.h>
#include <dev/usb/usb_debug.h>
#include <dev/usb/input/usb_rdesc.h>
#include <dev/usb/quirk/usb_quirk.h>
Go to the source code of this file.
Data Structures | |
struct | uhid_softc |
Macros | |
#define | USB_DEBUG_VAR uhid_debug |
#define | UHID_BSIZE 1024 /* bytes, buffer size */ |
#define | UHID_FRAME_NUM 50 /* bytes, frame number */ |
#define | UHID_FLAG_IMMED 0x01 /* set if read should be immediate */ |
#define | UHID_FLAG_STATIC_DESC |
Enumerations | |
enum | { UHID_INTR_DT_WR , UHID_INTR_DT_RD , UHID_CTRL_DT_WR , UHID_CTRL_DT_RD , UHID_N_TRANSFER } |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | uhid_intr_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | uhid_intr_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | uhid_fill_set_report (struct usb_device_request *req, uint8_t iface_no, uint8_t type, uint8_t id, uint16_t size) |
static void | uhid_fill_get_report (struct usb_device_request *req, uint8_t iface_no, uint8_t type, uint8_t id, uint16_t size) |
static void | uhid_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | uhid_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | uhid_start_read (struct usb_fifo *fifo) |
static void | uhid_stop_read (struct usb_fifo *fifo) |
static void | uhid_start_write (struct usb_fifo *fifo) |
static void | uhid_stop_write (struct usb_fifo *fifo) |
static int | uhid_get_report (struct uhid_softc *sc, uint8_t type, uint8_t id, void *kern_data, void *user_data, uint16_t len) |
static int | uhid_set_report (struct uhid_softc *sc, uint8_t type, uint8_t id, void *kern_data, void *user_data, uint16_t len) |
static int | uhid_open (struct usb_fifo *fifo, int fflags) |
static void | uhid_close (struct usb_fifo *fifo, int fflags) |
static int | uhid_ioctl (struct usb_fifo *fifo, u_long cmd, void *addr, int fflags) |
static int | uhid_ioctl_post (struct usb_fifo *fifo, u_long cmd, void *addr, int fflags) |
static int | uhid_probe (device_t dev) |
static int | uhid_attach (device_t dev) |
static int | uhid_detach (device_t dev) |
DRIVER_MODULE (uhid, uhub, uhid_driver, uhid_devclass, NULL, 0) | |
MODULE_DEPEND (uhid, usb, 1, 1, 1) | |
MODULE_DEPEND (uhid, hid, 1, 1, 1) | |
MODULE_VERSION (uhid, 1) | |
USB_PNP_HOST_INFO (uhid_devs) | |
#define UHID_FLAG_IMMED 0x01 /* set if read should be immediate */ |
#define UHID_FLAG_STATIC_DESC |
anonymous enum |
__FBSDID | ( | "$FreeBSD$" | ) |
DRIVER_MODULE | ( | uhid | , |
uhub | , | ||
uhid_driver | , | ||
uhid_devclass | , | ||
NULL | , | ||
0 | |||
) |
MODULE_DEPEND | ( | uhid | , |
hid | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_DEPEND | ( | uhid | , |
usb | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_VERSION | ( | uhid | , |
1 | |||
) |
|
static |
Definition at line 762 of file uhid.c.
References usbd_lookup_info::bIfaceIndex, usbd_lookup_info::bIfaceNum, usbd_lookup_info::bInterfaceClass, usbd_lookup_info::bInterfaceProtocol, usbd_lookup_info::bInterfaceSubClass, dev, usb_attach_arg::device, device_set_usb_desc(), DPRINTF, error, usbd_lookup_info::idProduct, usbd_lookup_info::idVendor, usb_attach_arg::info, uhid_softc::sc_fid, uhid_softc::sc_fifo, uhid_softc::sc_flags, uhid_softc::sc_fsize, uhid_softc::sc_iface_index, uhid_softc::sc_iface_no, uhid_softc::sc_iid, uhid_softc::sc_isize, uhid_softc::sc_mtx, uhid_softc::sc_oid, uhid_softc::sc_osize, uhid_softc::sc_repdesc_ptr, uhid_softc::sc_repdesc_size, uhid_softc::sc_udev, uhid_softc::sc_xfer, UHID_BSIZE, uhid_config, uhid_detach, UHID_FEATURE_REPORT, uhid_fifo_methods, UHID_FLAG_STATIC_DESC, uhid_graphire3_4x5_report_descr, uhid_graphire_report_descr, UHID_N_TRANSFER, UHID_OUTPUT_REPORT, uhid_xb360gp_report_descr, UICLASS_VENDOR, UIPROTO_XBOX360_GAMEPAD, UISUBCLASS_XBOX360_CONTROLLER, usb_fifo_attach(), usbd_errstr(), usbd_req_get_hid_desc(), usbd_req_set_idle(), usbd_req_set_report(), and usbd_transfer_setup().
|
static |
Definition at line 539 of file uhid.c.
References usb_fifo_free_buffer().
|
static |
Definition at line 896 of file uhid.c.
References dev, uhid_softc::sc_fifo, uhid_softc::sc_flags, uhid_softc::sc_mtx, uhid_softc::sc_repdesc_ptr, uhid_softc::sc_xfer, UHID_FLAG_STATIC_DESC, UHID_N_TRANSFER, usb_fifo_detach(), and usbd_transfer_unsetup().
|
static |
Definition at line 257 of file uhid.c.
References req, size, type, UR_GET_REPORT, USETW, USETW2, and UT_READ_CLASS_INTERFACE.
Referenced by uhid_read_callback().
|
static |
Definition at line 245 of file uhid.c.
References req, size, type, UR_SET_REPORT, USETW, USETW2, and UT_WRITE_CLASS_INTERFACE.
Referenced by uhid_write_callback().
|
static |
Definition at line 449 of file uhid.c.
References len, uhid_softc::sc_iface_index, uhid_softc::sc_udev, type, and usbd_req_get_report().
Referenced by uhid_ioctl().
|
static |
Definition at line 195 of file uhid.c.
References DPRINTF, error, usb_fifo_sc::fp, uhid_softc::sc_fifo, uhid_softc::sc_iid, uhid_softc::sc_isize, USB_ERR_CANCELLED, usb_fifo_put_bytes_max(), usb_fifo_put_data(), USB_FIFO_RX, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), usbd_xfer_softc(), and usbd_xfer_status().
|
static |
Definition at line 166 of file uhid.c.
References error, usb_fifo_sc::fp, uhid_softc::sc_fifo, USB_ERR_CANCELLED, usb_fifo_get_data(), USB_FIFO_TX, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_max_len(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), and usbd_xfer_softc().
|
static |
Definition at line 547 of file uhid.c.
References addr, error, id, uhid_softc::sc_fid, uhid_softc::sc_flags, uhid_softc::sc_fsize, uhid_softc::sc_iid, uhid_softc::sc_isize, uhid_softc::sc_mtx, uhid_softc::sc_oid, uhid_softc::sc_osize, uhid_softc::sc_repdesc_ptr, uhid_softc::sc_repdesc_size, size, usb_gen_descriptor::ugd_actlen, usb_gen_descriptor::ugd_data, usb_gen_descriptor::ugd_maxlen, usb_gen_descriptor::ugd_report_type, UHID_FEATURE_REPORT, UHID_FLAG_IMMED, uhid_get_report(), UHID_INPUT_REPORT, UHID_OUTPUT_REPORT, uhid_set_report(), usb_fifo_softc(), USB_GET_REPORT, USB_GET_REPORT_DESC, USB_GET_REPORT_ID, USB_SET_IMMED, and USB_SET_REPORT.
|
static |
Definition at line 680 of file uhid.c.
References addr, error, ugen_fill_deviceinfo(), and USB_GET_DEVICEINFO.
|
static |
Definition at line 510 of file uhid.c.
References uhid_softc::sc_flags, uhid_softc::sc_isize, uhid_softc::sc_mtx, uhid_softc::sc_osize, UHID_FRAME_NUM, usb_fifo_alloc_buffer(), and usb_fifo_softc().
|
static |
Definition at line 707 of file uhid.c.
References usbd_lookup_info::bIfaceIndex, usbd_lookup_info::bInterfaceClass, usbd_lookup_info::bInterfaceProtocol, usbd_lookup_info::bInterfaceSubClass, dev, usb_attach_arg::device, error, usb_attach_arg::info, len, uhid_devs, UICLASS_HID, UIPROTO_BOOT_KEYBOARD, UIPROTO_MOUSE, UISUBCLASS_BOOT, UQ_HID_IGNORE, UQ_KBD_IGNORE, UQ_UMS_IGNORE, UQ_WMT_IGNORE, usb_attach_arg::usb_mode, USB_MODE_HOST, usb_test_quirk(), usbd_lookup_id_by_uaa(), and usbd_req_get_hid_desc().
|
static |
Definition at line 330 of file uhid.c.
References usb_fifo_sc::fp, req, uhid_softc::sc_fifo, uhid_softc::sc_iface_no, uhid_softc::sc_iid, uhid_softc::sc_isize, uhid_fill_get_report(), UHID_INPUT_REPORT, usb_fifo_put_bytes_max(), usb_fifo_put_data(), usb_fifo_put_data_error(), USB_FIFO_RX, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_in(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_set_frame_len(), usbd_xfer_set_frames(), and usbd_xfer_softc().
|
static |
Definition at line 481 of file uhid.c.
References len, uhid_softc::sc_iface_index, uhid_softc::sc_udev, type, and usbd_req_set_report().
Referenced by uhid_ioctl().
|
static |
Definition at line 406 of file uhid.c.
References uhid_softc::sc_flags, uhid_softc::sc_xfer, UHID_CTRL_DT_RD, UHID_FLAG_IMMED, UHID_INTR_DT_RD, usb_fifo_softc(), and usbd_transfer_start().
|
static |
Definition at line 427 of file uhid.c.
References uhid_softc::sc_flags, uhid_softc::sc_xfer, UHID_CTRL_DT_WR, UHID_FLAG_IMMED, UHID_INTR_DT_WR, usb_fifo_softc(), and usbd_transfer_start().
|
static |
Definition at line 418 of file uhid.c.
References uhid_softc::sc_xfer, UHID_CTRL_DT_RD, UHID_INTR_DT_RD, usb_fifo_softc(), and usbd_transfer_stop().
|
static |
Definition at line 440 of file uhid.c.
References uhid_softc::sc_xfer, UHID_CTRL_DT_WR, UHID_INTR_DT_WR, usb_fifo_softc(), and usbd_transfer_stop().
|
static |
Definition at line 269 of file uhid.c.
References usb_fifo_sc::fp, id, req, uhid_softc::sc_fifo, uhid_softc::sc_iface_no, uhid_softc::sc_oid, uhid_softc::sc_osize, size, UHID_BSIZE, uhid_fill_set_report(), UHID_OUTPUT_REPORT, usb_fifo_get_data(), usb_fifo_get_data_error(), USB_FIFO_TX, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_in(), usbd_copy_out(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_set_frame_len(), usbd_xfer_set_frames(), and usbd_xfer_softc().
USB_PNP_HOST_INFO | ( | uhid_devs | ) |
|
static |
|
static |
Definition at line 367 of file uhid.c.
Referenced by uhid_attach().
|
static |
Definition at line 137 of file uhid.c.
Referenced by uhid_attach().
|
static |
|
static |
|
static |
Definition at line 153 of file uhid.c.
Referenced by uhid_attach().
|
static |
Definition at line 131 of file uhid.c.
Referenced by uhid_attach().
|
static |
Definition at line 130 of file uhid.c.
Referenced by uhid_attach().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 129 of file uhid.c.
Referenced by uhid_attach().