FreeBSD kernel usb device Code
|
#include <sys/cdefs.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 <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbhid.h>
#include <dev/usb/usb_cdc.h>
#include "usbdevs.h"
#include "usb_if.h"
#include <dev/usb/usb_ioctl.h>
#include <dev/usb/usb_debug.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/quirk/usb_quirk.h>
#include <dev/usb/serial/usb_serial.h>
Go to the source code of this file.
Data Structures | |
struct | umodem_softc |
Macros | |
#define | USB_DEBUG_VAR umodem_debug |
#define | UMODEM_BUF_SIZE 1024 |
#define | UMODEM_MODVER 1 /* module version */ |
Enumerations | |
enum | { UMODEM_BULK_WR , UMODEM_BULK_RD , UMODEM_INTR_WR , UMODEM_INTR_RD , UMODEM_N_TRANSFER } |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | umodem_free_softc (struct umodem_softc *) |
static void | umodem_free (struct ucom_softc *) |
static void | umodem_start_read (struct ucom_softc *) |
static void | umodem_stop_read (struct ucom_softc *) |
static void | umodem_start_write (struct ucom_softc *) |
static void | umodem_stop_write (struct ucom_softc *) |
static void | umodem_get_caps (struct usb_attach_arg *, uint8_t *, uint8_t *) |
static void | umodem_cfg_get_status (struct ucom_softc *, uint8_t *, uint8_t *) |
static int | umodem_pre_param (struct ucom_softc *, struct termios *) |
static void | umodem_cfg_param (struct ucom_softc *, struct termios *) |
static int | umodem_ioctl (struct ucom_softc *, uint32_t, caddr_t, int, struct thread *) |
static void | umodem_cfg_set_dtr (struct ucom_softc *, uint8_t) |
static void | umodem_cfg_set_rts (struct ucom_softc *, uint8_t) |
static void | umodem_cfg_set_break (struct ucom_softc *, uint8_t) |
static void * | umodem_get_desc (struct usb_attach_arg *, uint8_t, uint8_t) |
static usb_error_t | umodem_set_comm_feature (struct usb_device *, uint8_t, uint16_t, uint16_t) |
static void | umodem_poll (struct ucom_softc *ucom) |
static void | umodem_find_data_iface (struct usb_attach_arg *uaa, uint8_t, uint8_t *, uint8_t *) |
DRIVER_MODULE (umodem, uhub, umodem_driver, umodem_devclass, NULL, 0) | |
MODULE_DEPEND (umodem, ucom, 1, 1, 1) | |
MODULE_DEPEND (umodem, usb, 1, 1, 1) | |
MODULE_VERSION (umodem, UMODEM_MODVER) | |
USB_PNP_DUAL_INFO (umodem_dual_devs) | |
USB_PNP_HOST_INFO (umodem_host_devs) | |
static int | umodem_probe (device_t dev) |
static int | umodem_attach (device_t dev) |
static void | umodem_intr_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | umodem_intr_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | umodem_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | umodem_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static int | umodem_detach (device_t dev) |
UCOM_UNLOAD_DRAIN (umodem) | |
static int | umodem_handle_request (device_t dev, const void *preq, void **pptr, uint16_t *plen, uint16_t offset, uint8_t *pstate) |
Variables | |
static const STRUCT_USB_DUAL_ID | umodem_dual_devs [] |
static const STRUCT_USB_HOST_ID | umodem_host_devs [] |
static device_probe_t | umodem_probe |
static device_attach_t | umodem_attach |
static device_detach_t | umodem_detach |
static usb_handle_request_t | umodem_handle_request |
static usb_callback_t | umodem_intr_read_callback |
static usb_callback_t | umodem_intr_write_callback |
static usb_callback_t | umodem_write_callback |
static usb_callback_t | umodem_read_callback |
static const struct usb_config | umodem_config [UMODEM_N_TRANSFER] |
static const struct ucom_callback | umodem_callback |
static device_method_t | umodem_methods [] |
static devclass_t | umodem_devclass |
static driver_t | umodem_driver |
anonymous enum |
__FBSDID | ( | "$FreeBSD$" | ) |
DRIVER_MODULE | ( | umodem | , |
uhub | , | ||
umodem_driver | , | ||
umodem_devclass | , | ||
NULL | , | ||
0 | |||
) |
MODULE_DEPEND | ( | umodem | , |
ucom | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_DEPEND | ( | umodem | , |
usb | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_VERSION | ( | umodem | , |
UMODEM_MODVER | |||
) |
UCOM_UNLOAD_DRAIN | ( | umodem | ) |
|
static |
Definition at line 341 of file umodem.c.
References usb_cdc_cm_descriptor::bDataInterface, usbd_lookup_info::bIfaceIndex, usbd_lookup_info::bIfaceNum, usb_cdc_cm_descriptor::bLength, usb_cdc_union_descriptor::bLength, usb_cdc_union_descriptor::bSlaveInterface, dev, usb_attach_arg::device, device_set_usb_desc(), DPRINTF, error, id, usb_attach_arg::info, umodem_softc::sc_acm_cap, umodem_softc::sc_cm_cap, umodem_softc::sc_cm_over_data, umodem_softc::sc_ctrl_iface_no, umodem_softc::sc_data_iface_no, umodem_softc::sc_iface_index, umodem_softc::sc_mtx, umodem_softc::sc_super_ucom, umodem_softc::sc_ucom, umodem_softc::sc_udev, umodem_softc::sc_xfer, UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED, ucom_attach(), ucom_ref(), ucom_set_pnpinfo_usb(), ucom_set_usb_mode(), UDESC_CS_INTERFACE, UDESCSUB_CDC_CM, UDESCSUB_CDC_UNION, UMODEM_BULK_RD, UMODEM_BULK_WR, umodem_callback, umodem_config, umodem_detach, umodem_find_data_iface(), umodem_get_caps(), umodem_get_desc(), UMODEM_N_TRANSFER, umodem_set_comm_feature(), UQ_ASSUME_CM_OVER_DATA, USB_CDC_ACM_HAS_BREAK, USB_CDC_ACM_HAS_FEATURE, USB_CDC_CM_OVER_DATA, usb_attach_arg::usb_mode, USB_MODE_HOST, usb_test_quirk(), usbd_find_descriptor(), usbd_get_iface(), usbd_get_interface_descriptor(), usbd_set_parent_iface(), usbd_transfer_setup(), and usbd_xfer_set_stall().
|
static |
Definition at line 571 of file umodem.c.
References DPRINTF, umodem_softc::sc_lsr, umodem_softc::sc_msr, and ucom_softc::sc_parent.
|
static |
Definition at line 589 of file umodem.c.
References usb_cdc_line_state::bCharFormat, usb_cdc_line_state::bDataBits, usb_cdc_line_state::bParityType, DPRINTF, usb_cdc_line_state::dwDTERate, req, umodem_softc::sc_ctrl_iface_no, ucom_softc::sc_parent, umodem_softc::sc_ucom, umodem_softc::sc_udev, UCDC_PARITY_EVEN, UCDC_PARITY_NONE, UCDC_PARITY_ODD, UCDC_SET_LINE_CODING, UCDC_STOP_BIT_1, UCDC_STOP_BIT_2, ucom_cfg_do_request, UGETDW, USETDW, USETW, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 716 of file umodem.c.
References DPRINTF, req, umodem_softc::sc_acm_cap, umodem_softc::sc_ctrl_iface_no, ucom_softc::sc_parent, umodem_softc::sc_ucom, umodem_softc::sc_udev, UCDC_BREAK_OFF, UCDC_BREAK_ON, UCDC_SEND_BREAK, ucom_cfg_do_request, USB_CDC_ACM_HAS_BREAK, USETW, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 668 of file umodem.c.
References DPRINTF, req, umodem_softc::sc_ctrl_iface_no, umodem_softc::sc_line, ucom_softc::sc_parent, umodem_softc::sc_ucom, umodem_softc::sc_udev, UCDC_LINE_DTR, UCDC_SET_CONTROL_LINE_STATE, ucom_cfg_do_request, USETW, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 692 of file umodem.c.
References DPRINTF, req, umodem_softc::sc_ctrl_iface_no, umodem_softc::sc_line, ucom_softc::sc_parent, umodem_softc::sc_ucom, umodem_softc::sc_udev, UCDC_LINE_RTS, UCDC_SET_CONTROL_LINE_STATE, ucom_cfg_do_request, USETW, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 948 of file umodem.c.
References dev, DPRINTF, umodem_softc::sc_super_ucom, umodem_softc::sc_ucom, umodem_softc::sc_xfer, ucom_detach(), umodem_free_softc(), UMODEM_N_TRANSFER, and usbd_transfer_unsetup().
|
static |
Definition at line 478 of file umodem.c.
References usb_attach_arg::device, id, UICLASS_CDC_DATA, UISUBCLASS_DATA, usbd_get_iface(), and usbd_get_interface_descriptor().
Referenced by umodem_attach().
|
static |
Definition at line 976 of file umodem.c.
References ucom_softc::sc_parent, and umodem_free_softc().
|
static |
Definition at line 967 of file umodem.c.
References umodem_softc::sc_mtx, umodem_softc::sc_super_ucom, and ucom_unref().
Referenced by umodem_detach(), and umodem_free().
|
static |
Definition at line 550 of file umodem.c.
References usb_cdc_cm_descriptor::bLength, usb_cdc_acm_descriptor::bLength, usb_cdc_cm_descriptor::bmCapabilities, usb_cdc_acm_descriptor::bmCapabilities, DPRINTF, UDESC_CS_INTERFACE, UDESCSUB_CDC_ACM, UDESCSUB_CDC_CM, umodem_get_desc(), USB_CDC_CM_DOES_CM, and USB_CDC_CM_OVER_DATA.
Referenced by umodem_attach().
|
static |
Definition at line 920 of file umodem.c.
References usbd_lookup_info::bIfaceIndex, usb_attach_arg::device, usb_attach_arg::info, type, and usbd_find_descriptor().
Referenced by umodem_attach(), and umodem_get_caps().
|
static |
Definition at line 989 of file umodem.c.
References dev, DPRINTF, offset, plen, pptr, pstate, req, umodem_softc::sc_abstract_state, umodem_softc::sc_ctrl_iface_no, umodem_softc::sc_line_coding, UCDC_SEND_BREAK, UCDC_SET_COMM_FEATURE, UCDC_SET_CONTROL_LINE_STATE, UCDC_SET_LINE_CODING, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 767 of file umodem.c.
References usb_cdc_notification::bmRequestType, usb_cdc_notification::bNotification, usb_cdc_notification::data, DPRINTF, error, umodem_softc::sc_lsr, umodem_softc::sc_msr, umodem_softc::sc_ucom, UCDC_N_SERIAL_DCD, UCDC_N_SERIAL_DSR, UCDC_N_SERIAL_RI, UCDC_N_SERIAL_STATE, UCDC_NOTIFICATION, ucom_status_change(), UGETW, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_out(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_max_len(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), usbd_xfer_softc(), usbd_xfer_status(), and usb_cdc_notification::wLength.
|
static |
Definition at line 740 of file umodem.c.
References DPRINTF, error, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_xfer_set_stall(), and usbd_xfer_status().
|
static |
Definition at line 639 of file umodem.c.
References data, DPRINTF, error, umodem_softc::sc_cm_over_data, ucom_softc::sc_parent, USB_GET_CM_OVER_DATA, and USB_SET_CM_OVER_DATA.
|
static |
Definition at line 982 of file umodem.c.
References ucom_softc::sc_parent, umodem_softc::sc_xfer, UMODEM_N_TRANSFER, and usbd_transfer_poll().
|
static |
|
static |
Definition at line 322 of file umodem.c.
References dev, error, umodem_dual_devs, umodem_host_devs, and usbd_lookup_id_by_uaa().
|
static |
Definition at line 887 of file umodem.c.
References DPRINTF, error, umodem_softc::sc_ucom, ucom_put_data(), USB_ERR_CANCELLED, 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(), usbd_xfer_softc(), and usbd_xfer_status().
|
static |
Definition at line 927 of file umodem.c.
References DPRINTF, feature, req, state, UCDC_ABSTRACT_STATE_LENGTH, UCDC_SET_COMM_FEATURE, usbd_do_request, USETW, UT_WRITE_CLASS_INTERFACE, and usb_cdc_abstract_state::wState.
Referenced by umodem_attach().
|
static |
Definition at line 508 of file umodem.c.
References ucom_softc::sc_parent, umodem_softc::sc_xfer, UMODEM_BULK_RD, UMODEM_INTR_RD, and usbd_transfer_start().
|
static |
Definition at line 532 of file umodem.c.
References ucom_softc::sc_parent, umodem_softc::sc_xfer, UMODEM_BULK_WR, UMODEM_INTR_WR, and usbd_transfer_start().
|
static |
Definition at line 520 of file umodem.c.
References ucom_softc::sc_parent, umodem_softc::sc_xfer, UMODEM_BULK_RD, UMODEM_INTR_RD, and usbd_transfer_stop().
|
static |
Definition at line 541 of file umodem.c.
References ucom_softc::sc_parent, umodem_softc::sc_xfer, UMODEM_BULK_WR, UMODEM_INTR_WR, and usbd_transfer_stop().
|
static |
Definition at line 858 of file umodem.c.
References error, umodem_softc::sc_ucom, ucom_get_data(), UMODEM_BUF_SIZE, USB_ERR_CANCELLED, 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(), and usbd_xfer_softc().
USB_PNP_DUAL_INFO | ( | umodem_dual_devs | ) |
USB_PNP_HOST_INFO | ( | umodem_host_devs | ) |
|
static |
Definition at line 279 of file umodem.c.
Referenced by umodem_attach().
|
static |
Definition at line 233 of file umodem.c.
Referenced by umodem_attach().
|
static |
Definition at line 201 of file umodem.c.
Referenced by umodem_attach().
|
static |
|
static |
|
static |
Definition at line 132 of file umodem.c.
Referenced by umodem_probe().
|
static |
|
static |
|
static |
|
static |
|
static |