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/usb_core.h>
#include <dev/usb/usb_ioctl.h>
#include "usbdevs.h"
#include <dev/usb/usb_debug.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/serial/usb_serial.h>
#include <dev/usb/serial/uftdi_reg.h>
#include <dev/usb/uftdiio.h>
Go to the source code of this file.
Data Structures | |
struct | uftdi_softc |
struct | uftdi_param_config |
struct | jtag_by_name |
Macros | |
#define | USB_DEBUG_VAR uftdi_debug |
#define | UFTDI_CONFIG_INDEX 0 |
#define | UFTDI_IBUFSIZE 2048 |
#define | UFTDI_IHDRSIZE 2 |
#define | UFTDI_OBUFSIZE 2048 |
#define | UFTDI_OPKTSIZE 64 |
#define | DEVF_BAUDBITS_HINDEX 0x01 /* Baud bits in high byte of index. */ |
#define | DEVF_BAUDCLK_12M 0X02 /* Base baud clock is 12MHz. */ |
#define | UFTDI_DEV(v, p, i) { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) } |
Enumerations | |
enum | { UFTDI_BULK_DT_WR , UFTDI_BULK_DT_RD , UFTDI_N_TRANSFER } |
enum | { DEVT_SIO , DEVT_232A , DEVT_232B , DEVT_2232D , DEVT_232R , DEVT_2232H , DEVT_4232H , DEVT_232H , DEVT_230X } |
Functions | |
__FBSDID ("$FreeBSD$") | |
static | SYSCTL_NODE (_hw_usb, OID_AUTO, uftdi, CTLFLAG_RW|CTLFLAG_MPSAFE, 0, "USB uftdi") |
static void | uftdi_free_softc (struct uftdi_softc *) |
static void | uftdi_free (struct ucom_softc *) |
static void | uftdi_cfg_open (struct ucom_softc *) |
static void | uftdi_cfg_close (struct ucom_softc *) |
static void | uftdi_cfg_set_dtr (struct ucom_softc *, uint8_t) |
static void | uftdi_cfg_set_rts (struct ucom_softc *, uint8_t) |
static void | uftdi_cfg_set_break (struct ucom_softc *, uint8_t) |
static int | uftdi_set_parm_soft (struct ucom_softc *, struct termios *, struct uftdi_param_config *) |
static int | uftdi_pre_param (struct ucom_softc *, struct termios *) |
static void | uftdi_cfg_param (struct ucom_softc *, struct termios *) |
static void | uftdi_cfg_get_status (struct ucom_softc *, uint8_t *, uint8_t *) |
static int | uftdi_reset (struct ucom_softc *, int) |
static int | uftdi_set_bitmode (struct ucom_softc *, uint8_t, uint8_t) |
static int | uftdi_get_bitmode (struct ucom_softc *, uint8_t *, uint8_t *) |
static int | uftdi_set_latency (struct ucom_softc *, int) |
static int | uftdi_get_latency (struct ucom_softc *, int *) |
static int | uftdi_set_event_char (struct ucom_softc *, int) |
static int | uftdi_set_error_char (struct ucom_softc *, int) |
static int | uftdi_ioctl (struct ucom_softc *, uint32_t, caddr_t, int, struct thread *) |
static void | uftdi_start_read (struct ucom_softc *) |
static void | uftdi_stop_read (struct ucom_softc *) |
static void | uftdi_start_write (struct ucom_softc *) |
static void | uftdi_stop_write (struct ucom_softc *) |
static void | uftdi_poll (struct ucom_softc *ucom) |
DRIVER_MODULE (uftdi, uhub, uftdi_driver, uftdi_devclass, NULL, NULL) | |
MODULE_DEPEND (uftdi, ucom, 1, 1, 1) | |
MODULE_DEPEND (uftdi, usb, 1, 1, 1) | |
MODULE_VERSION (uftdi, 1) | |
USB_PNP_HOST_INFO (uftdi_devs) | |
SYSCTL_INT (_hw_usb_uftdi, OID_AUTO, skip_jtag_interfaces, CTLFLAG_RWTUN, &skip_jtag_interfaces, 1, "Skip creating tty devices for jtag interfaces") | |
static boolean_t | is_jtag_interface (struct usb_attach_arg *uaa, const struct usb_device_id *id) |
static void | uftdi_devtype_setup (struct uftdi_softc *sc, struct usb_attach_arg *uaa) |
static int | uftdi_probe (device_t dev) |
static int | uftdi_attach (device_t dev) |
static int | uftdi_detach (device_t dev) |
UCOM_UNLOAD_DRAIN (uftdi) | |
static void | uftdi_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | uftdi_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static boolean_t | uftdi_baud_within_tolerance (uint64_t speed, uint64_t target) |
static int | uftdi_sio_encode_baudrate (struct uftdi_softc *sc, speed_t speed, struct uftdi_param_config *cfg) |
static int | uftdi_encode_baudrate (struct uftdi_softc *sc, speed_t speed, struct uftdi_param_config *cfg) |
static int | uftdi_read_eeprom (struct ucom_softc *ucom, struct uftdi_eeio *eeio) |
static int | uftdi_write_eeprom (struct ucom_softc *ucom, struct uftdi_eeio *eeio) |
static int | uftdi_erase_eeprom (struct ucom_softc *ucom, int confirmation) |
Variables | |
static device_probe_t | uftdi_probe |
static device_attach_t | uftdi_attach |
static device_detach_t | uftdi_detach |
static usb_callback_t | uftdi_write_callback |
static usb_callback_t | uftdi_read_callback |
static const struct usb_config | uftdi_config [UFTDI_N_TRANSFER] |
static const struct ucom_callback | uftdi_callback |
static device_method_t | uftdi_methods [] |
static devclass_t | uftdi_devclass |
static driver_t | uftdi_driver |
static const STRUCT_USB_HOST_ID | uftdi_devs [] |
static const struct jtag_by_name | jtag_products_by_name [] |
static int | skip_jtag_interfaces = 1 |
#define DEVF_BAUDBITS_HINDEX 0x01 /* Baud bits in high byte of index. */ |
#define DEVF_BAUDCLK_12M 0X02 /* Base baud clock is 12MHz. */ |
#define UFTDI_DEV | ( | v, | |
p, | |||
i | |||
) | { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) } |
anonymous enum |
anonymous enum |
__FBSDID | ( | "$FreeBSD$" | ) |
DRIVER_MODULE | ( | uftdi | , |
uhub | , | ||
uftdi_driver | , | ||
uftdi_devclass | , | ||
NULL | , | ||
NULL | |||
) |
|
static |
Definition at line 949 of file uftdi.c.
References usbd_lookup_info::bIfaceIndex, usb_attach_arg::device, id, usb_attach_arg::info, jtag_by_name::jtag_interfaces, jtag_products_by_name, jtag_by_name::product_name, UFTDI_JTAG_CHECK_STRING, UFTDI_JTAG_IFACE, UFTDI_JTAG_IFACES_MAX, UFTDI_JTAG_MASK, and usb_get_product().
Referenced by uftdi_probe().
MODULE_DEPEND | ( | uftdi | , |
ucom | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_DEPEND | ( | uftdi | , |
usb | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_VERSION | ( | uftdi | , |
1 | |||
) |
SYSCTL_INT | ( | _hw_usb_uftdi | , |
OID_AUTO | , | ||
skip_jtag_interfaces | , | ||
CTLFLAG_RWTUN | , | ||
& | skip_jtag_interfaces, | ||
1 | , | ||
"Skip creating tty devices for jtag interfaces" | |||
) |
|
static |
UCOM_UNLOAD_DRAIN | ( | uftdi | ) |
|
static |
Definition at line 1090 of file uftdi.c.
References usbd_lookup_info::bIfaceIndex, dev, usb_attach_arg::device, device_set_usb_desc(), DPRINTF, error, FTDI_SIO_SET_DATA_BITS, FTDI_SIO_SET_DATA_PARITY_NONE, FTDI_SIO_SET_DATA_STOP_BITS_2, usb_attach_arg::info, uftdi_softc::sc_bitmode, uftdi_softc::sc_dev, uftdi_softc::sc_last_lcr, uftdi_softc::sc_mtx, uftdi_softc::sc_super_ucom, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, uftdi_softc::sc_unit, uftdi_softc::sc_xfer, ucom_attach(), ucom_ref(), ucom_set_pnpinfo_usb(), ucom_use_lsr_txbits(), UFTDI_BITMODE_NONE, UFTDI_BULK_DT_RD, UFTDI_BULK_DT_WR, uftdi_callback, uftdi_config, uftdi_detach, uftdi_devtype_setup(), UFTDI_N_TRANSFER, usbd_transfer_setup(), and usbd_xfer_set_stall().
|
inlinestatic |
Definition at line 1429 of file uftdi.c.
Referenced by uftdi_encode_baudrate().
|
static |
|
static |
Definition at line 1678 of file uftdi.c.
References uftdi_softc::sc_lsr, uftdi_softc::sc_msr, and ucom_softc::sc_parent.
|
static |
|
static |
Definition at line 1637 of file uftdi.c.
References uftdi_param_config::baud_hibits, uftdi_param_config::baud_lobits, DPRINTF, FTDI_SIO_SET_BAUD_RATE, FTDI_SIO_SET_DATA, FTDI_SIO_SET_FLOW_CTRL, uftdi_param_config::lcr, req, uftdi_softc::sc_last_lcr, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, ucom_cfg_do_request, uftdi_set_parm_soft(), USETW, USETW2, UT_WRITE_VENDOR_DEVICE, uftdi_param_config::v_flow, uftdi_param_config::v_start, uftdi_param_config::v_stop, and usb_device_request::wIndex.
|
static |
Definition at line 1398 of file uftdi.c.
References FTDI_SIO_SET_BREAK, FTDI_SIO_SET_DATA, req, uftdi_softc::sc_last_lcr, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, ucom_cfg_do_request, USETW, UT_WRITE_VENDOR_DEVICE, usb_device_request::wIndex, and usb_device_request::wValue.
|
static |
Definition at line 1356 of file uftdi.c.
References FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_DTR_HIGH, FTDI_SIO_SET_DTR_LOW, req, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, ucom_cfg_do_request, USETW, UT_WRITE_VENDOR_DEVICE, usb_device_request::wIndex, and usb_device_request::wValue.
|
static |
Definition at line 1377 of file uftdi.c.
References FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_RTS_HIGH, FTDI_SIO_SET_RTS_LOW, req, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, ucom_cfg_do_request, USETW, UT_WRITE_VENDOR_DEVICE, usb_device_request::wIndex, and usb_device_request::wValue.
|
static |
Definition at line 1149 of file uftdi.c.
References dev, uftdi_softc::sc_super_ucom, uftdi_softc::sc_ucom, uftdi_softc::sc_xfer, ucom_detach(), uftdi_free_softc(), UFTDI_N_TRANSFER, and usbd_transfer_unsetup().
|
static |
Definition at line 991 of file uftdi.c.
References usbd_lookup_info::bcdDevice, usbd_lookup_info::bIfaceNum, DEVF_BAUDBITS_HINDEX, DEVF_BAUDCLK_12M, DEVT_2232D, DEVT_2232H, DEVT_230X, DEVT_232A, DEVT_232B, DEVT_232H, DEVT_232R, DEVT_4232H, DEVT_SIO, FTDI_PIT_SIOA, usb_attach_arg::info, usb_device_descriptor::iSerialNumber, uftdi_softc::sc_bcdDevice, uftdi_softc::sc_dev, uftdi_softc::sc_devflags, uftdi_softc::sc_devtype, uftdi_softc::sc_hdrlen, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, and usbd_get_device_descriptor().
Referenced by uftdi_attach().
|
static |
Definition at line 1459 of file uftdi.c.
References uftdi_param_config::baud_hibits, uftdi_param_config::baud_lobits, DEVF_BAUDBITS_HINDEX, DEVF_BAUDCLK_12M, DEVT_232A, uftdi_softc::sc_devflags, uftdi_softc::sc_devtype, and uftdi_baud_within_tolerance().
Referenced by uftdi_set_parm_soft().
|
static |
Definition at line 1898 of file uftdi.c.
References FTDI_SIO_ERASE_EEPROM, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, uftdi_softc::sc_udev, UFTDI_CONFIRM_ERASE, usbd_do_request, USETW, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1175 of file uftdi.c.
References ucom_softc::sc_parent, and uftdi_free_softc().
|
static |
Definition at line 1166 of file uftdi.c.
References uftdi_softc::sc_mtx, uftdi_softc::sc_super_ucom, and ucom_unref().
Referenced by uftdi_detach(), and uftdi_free().
|
static |
Definition at line 1734 of file uftdi.c.
References FTDI_SIO_GET_BITMODE, req, uftdi_softc::sc_bitmode, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, usbd_do_request, USETW, and UT_READ_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1774 of file uftdi.c.
References FTDI_SIO_GET_LATENCY, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, usbd_do_request, USETW, and UT_READ_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1921 of file uftdi.c.
References data, FTDI_SIO_RESET_PURGE_RX, FTDI_SIO_RESET_PURGE_TX, FTDI_SIO_RESET_SIO, uftdi_bitmode::mode, uftdi_softc::sc_bcdDevice, ucom_softc::sc_parent, uftdi_erase_eeprom(), uftdi_get_bitmode(), uftdi_get_latency(), uftdi_read_eeprom(), uftdi_reset(), uftdi_set_bitmode(), uftdi_set_error_char(), uftdi_set_event_char(), uftdi_set_latency(), uftdi_write_eeprom(), UFTDIIOC_ERASE_EEPROM, UFTDIIOC_GET_BITMODE, UFTDIIOC_GET_HWREV, UFTDIIOC_GET_LATENCY, UFTDIIOC_READ_EEPROM, UFTDIIOC_RESET_IO, UFTDIIOC_RESET_RX, UFTDIIOC_RESET_TX, UFTDIIOC_SET_BITMODE, UFTDIIOC_SET_ERROR_CHAR, UFTDIIOC_SET_EVENT_CHAR, UFTDIIOC_SET_LATENCY, UFTDIIOC_WRITE_EEPROM, and USB_ERR_NORMAL_COMPLETION.
|
static |
Definition at line 2011 of file uftdi.c.
References ucom_softc::sc_parent, uftdi_softc::sc_xfer, UFTDI_N_TRANSFER, and usbd_transfer_poll().
|
static |
Definition at line 1627 of file uftdi.c.
References DPRINTF, and uftdi_set_parm_soft().
|
static |
Definition at line 1056 of file uftdi.c.
References usbd_lookup_info::bConfigIndex, usbd_lookup_info::bIfaceIndex, dev, usb_attach_arg::device, usb_attach_arg::driver_info, id, usb_attach_arg::info, is_jtag_interface(), skip_jtag_interfaces, UFTDI_CONFIG_INDEX, uftdi_devs, usb_get_product(), usb_attach_arg::usb_mode, USB_MODE_HOST, usbd_get_bus_index(), usbd_get_device_index(), and usbd_lookup_id_by_info().
|
static |
Definition at line 1264 of file uftdi.c.
References DPRINTF, error, FTDI_GET_LSR, FTDI_GET_MSR, FTDI_SIO_CTS_MASK, FTDI_SIO_DSR_MASK, FTDI_SIO_RI_MASK, FTDI_SIO_RLSD_MASK, usb_xfer::max_packet_size, offset, uftdi_softc::sc_lsr, uftdi_softc::sc_msr, uftdi_softc::sc_ucom, ucom_put_data(), ucom_status_change(), UFTDI_IHDRSIZE, ULSR_TSRE, ULSR_TXRDY, 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(), and usbd_xfer_status().
|
static |
Definition at line 1839 of file uftdi.c.
References uftdi_eeio::data, FTDI_SIO_READ_EEPROM, uftdi_eeio::length, uftdi_eeio::offset, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, uftdi_softc::sc_udev, USB_ERR_NORMAL_COMPLETION, usbd_do_request, USETW, and UT_READ_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1689 of file uftdi.c.
References FTDI_SIO_RESET, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, usbd_do_request, USETW, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1707 of file uftdi.c.
References FTDI_SIO_SET_BITMODE, req, uftdi_softc::sc_bitmode, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, UFTDI_BITMODE_NONE, USB_ERR_NORMAL_COMPLETION, usbd_do_request, USETW, USETW2, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1818 of file uftdi.c.
References FTDI_SIO_SET_ERROR_CHAR, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, usbd_do_request, USETW, USETW2, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1797 of file uftdi.c.
References FTDI_SIO_SET_EVENT_CHAR, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, usbd_do_request, USETW, USETW2, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1753 of file uftdi.c.
References FTDI_SIO_SET_LATENCY, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, ucom_softc::sc_portno, uftdi_softc::sc_ucom, uftdi_softc::sc_udev, USB_ERR_INVAL, usbd_do_request, USETW, USETW2, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
|
static |
Definition at line 1565 of file uftdi.c.
References DEVT_SIO, FTDI_SIO_DISABLE_FLOW_CTRL, FTDI_SIO_RTS_CTS_HS, FTDI_SIO_SET_DATA_BITS, FTDI_SIO_SET_DATA_PARITY_EVEN, FTDI_SIO_SET_DATA_PARITY_NONE, FTDI_SIO_SET_DATA_PARITY_ODD, FTDI_SIO_SET_DATA_STOP_BITS_1, FTDI_SIO_SET_DATA_STOP_BITS_2, FTDI_SIO_XON_XOFF_HS, uftdi_param_config::lcr, uftdi_softc::sc_devtype, ucom_softc::sc_parent, uftdi_encode_baudrate(), uftdi_sio_encode_baudrate(), uftdi_param_config::v_flow, uftdi_param_config::v_start, and uftdi_param_config::v_stop.
Referenced by uftdi_cfg_param(), and uftdi_pre_param().
|
static |
Definition at line 1436 of file uftdi.c.
References uftdi_param_config::baud_hibits, and uftdi_param_config::baud_lobits.
Referenced by uftdi_set_parm_soft().
|
static |
Definition at line 1979 of file uftdi.c.
References ucom_softc::sc_parent, uftdi_softc::sc_xfer, UFTDI_BULK_DT_RD, and usbd_transfer_start().
|
static |
Definition at line 1995 of file uftdi.c.
References ucom_softc::sc_parent, uftdi_softc::sc_xfer, UFTDI_BULK_DT_WR, and usbd_transfer_start().
|
static |
Definition at line 1987 of file uftdi.c.
References ucom_softc::sc_parent, uftdi_softc::sc_xfer, UFTDI_BULK_DT_RD, and usbd_transfer_stop().
|
static |
Definition at line 2003 of file uftdi.c.
References ucom_softc::sc_parent, uftdi_softc::sc_xfer, UFTDI_BULK_DT_WR, and usbd_transfer_stop().
|
static |
Definition at line 1205 of file uftdi.c.
References error, FTDI_OUT_TAG, uftdi_softc::sc_hdrlen, ucom_softc::sc_portno, uftdi_softc::sc_ucom, ucom_get_data(), UFTDI_OBUFSIZE, UFTDI_OPKTSIZE, USB_ERR_CANCELLED, 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_stall(), and usbd_xfer_softc().
|
static |
Definition at line 1869 of file uftdi.c.
References uftdi_eeio::data, FTDI_SIO_WRITE_EEPROM, uftdi_eeio::length, uftdi_eeio::offset, req, uftdi_softc::sc_mtx, ucom_softc::sc_parent, uftdi_softc::sc_udev, USB_ERR_NORMAL_COMPLETION, usbd_do_request, USETW, and UT_WRITE_VENDOR_DEVICE.
Referenced by uftdi_ioctl().
USB_PNP_HOST_INFO | ( | uftdi_devs | ) |
|
static |
Referenced by is_jtag_interface().
|
static |
Definition at line 944 of file uftdi.c.
Referenced by uftdi_probe().
|
static |
Definition at line 236 of file uftdi.c.
Referenced by uftdi_attach().
|
static |
Definition at line 216 of file uftdi.c.
Referenced by uftdi_attach().
|
static |
Definition at line 183 of file uftdi.c.
Referenced by uftdi_attach().
|
static |
Definition at line 270 of file uftdi.c.
Referenced by uftdi_probe().
|
static |
|
static |
|
static |
|
static |