FreeBSD kernel usb device Code
|
#include <sys/param.h>
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/queue.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/linker_set.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/usb_cdc.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbhid.h>
#include "usb_if.h"
#include <dev/usb/usb_debug.h>
#include <dev/usb/gadget/g_audio.h>
Go to the source code of this file.
Data Structures | |
struct | g_audio_softc |
Macros | |
#define | USB_DEBUG_VAR g_audio_debug |
Enumerations | |
enum | { G_AUDIO_ISOC0_RD , G_AUDIO_ISOC1_RD , G_AUDIO_ISOC0_WR , G_AUDIO_ISOC1_WR , G_AUDIO_N_TRANSFER } |
Functions | |
__FBSDID ("$FreeBSD$") | |
static | SYSCTL_NODE (_hw_usb, OID_AUTO, g_audio, CTLFLAG_RW|CTLFLAG_MPSAFE, 0, "USB audio gadget") |
SYSCTL_INT (_hw_usb_g_audio, OID_AUTO, mode, CTLFLAG_RWTUN, &g_audio_mode, 0, "Mode selection") | |
SYSCTL_INT (_hw_usb_g_audio, OID_AUTO, pattern_interval, CTLFLAG_RWTUN, &g_audio_pattern_interval, 0, "Pattern interval in milliseconds") | |
SYSCTL_STRING (_hw_usb_g_audio, OID_AUTO, pattern, CTLFLAG_RW, &g_audio_pattern_data, sizeof(g_audio_pattern_data), "Data pattern") | |
SYSCTL_INT (_hw_usb_g_audio, OID_AUTO, throughput, CTLFLAG_RD, &g_audio_throughput, sizeof(g_audio_throughput), "Throughput in bytes per second") | |
static void | g_audio_watchdog (void *arg) |
static void | g_audio_timeout (void *arg) |
DRIVER_MODULE (g_audio, uhub, g_audio_driver, g_audio_devclass, 0, 0) | |
MODULE_DEPEND (g_audio, usb, 1, 1, 1) | |
static void | g_audio_timeout_reset (struct g_audio_softc *sc) |
static void | g_audio_watchdog_reset (struct g_audio_softc *sc) |
static int | g_audio_probe (device_t dev) |
static int | g_audio_attach (device_t dev) |
static int | g_audio_detach (device_t dev) |
static int32_t | g_noise (struct g_audio_softc *sc) |
static void | g_audio_make_samples (struct g_audio_softc *sc, int16_t *ptr, int samples) |
static void | g_audio_isoc_write_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | g_audio_isoc_read_callback (struct usb_xfer *xfer, usb_error_t error) |
static int | g_audio_handle_request (device_t dev, const void *preq, void **pptr, uint16_t *plen, uint16_t offset, uint8_t *pstate) |
Variables | |
static int | g_audio_mode = 0 |
static int | g_audio_pattern_interval = 1000 |
static char | g_audio_pattern_data [G_AUDIO_MAX_STRLEN] |
static int | g_audio_throughput |
static device_probe_t | g_audio_probe |
static device_attach_t | g_audio_attach |
static device_detach_t | g_audio_detach |
static usb_handle_request_t | g_audio_handle_request |
static usb_callback_t | g_audio_isoc_read_callback |
static usb_callback_t | g_audio_isoc_write_callback |
static devclass_t | g_audio_devclass |
static device_method_t | g_audio_methods [] |
static driver_t | g_audio_driver |
static const struct usb_config | g_audio_config [G_AUDIO_N_TRANSFER] |
anonymous enum |
__FBSDID | ( | "$FreeBSD$" | ) |
DRIVER_MODULE | ( | g_audio | , |
uhub | , | ||
g_audio_driver | , | ||
g_audio_devclass | , | ||
0 | , | ||
0 | |||
) |
|
static |
Definition at line 289 of file g_audio.c.
References usbd_lookup_info::bIfaceIndex, dev, usb_attach_arg::device, device_set_usb_desc(), DPRINTF, error, G_AUDIO_BUFSIZE, g_audio_config, g_audio_detach, G_AUDIO_FRAMES, G_AUDIO_ISOC0_RD, G_AUDIO_ISOC0_WR, G_AUDIO_ISOC1_RD, G_AUDIO_ISOC1_WR, G_AUDIO_MODE_SILENT, G_AUDIO_N_TRANSFER, g_audio_timeout_reset(), g_audio_watchdog_reset(), usb_attach_arg::info, g_audio_softc::sc_callout, g_audio_softc::sc_data_len, g_audio_softc::sc_mode, g_audio_softc::sc_mtx, g_audio_softc::sc_noise_rem, g_audio_softc::sc_watchdog, g_audio_softc::sc_xfer, usb_callout_init_mtx, usbd_errstr(), usbd_set_alt_interface_index(), usbd_set_parent_iface(), usbd_transfer_setup(), and usbd_transfer_start().
|
static |
Definition at line 363 of file g_audio.c.
References dev, DPRINTF, G_AUDIO_N_TRANSFER, g_audio_softc::sc_callout, g_audio_softc::sc_mtx, g_audio_softc::sc_watchdog, g_audio_softc::sc_xfer, usb_callout_drain, usb_callout_stop, and usbd_transfer_unsetup().
|
static |
Definition at line 542 of file g_audio.c.
References dev, offset, plen, pptr, pstate, req, g_audio_softc::sc_sample_rate, g_audio_softc::sc_volume_limit, g_audio_softc::sc_volume_setting, USETW, UT_READ_CLASS_INTERFACE, UT_WRITE_CLASS_ENDPOINT, and UT_WRITE_CLASS_INTERFACE.
|
static |
Definition at line 487 of file g_audio.c.
References DPRINTF, error, G_AUDIO_BUFSIZE, G_AUDIO_FRAMES, G_AUDIO_ISOC0_RD, G_AUDIO_ISOC0_WR, G_AUDIO_ISOC1_WR, g_audio_softc::sc_data_buf, g_audio_softc::sc_data_len, g_audio_softc::sc_throughput, g_audio_softc::sc_xfer, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_errstr(), usbd_transfer_start(), usbd_transfer_submit(), usbd_xfer_frame_len(), usbd_xfer_set_frame_data(), usbd_xfer_set_stall(), usbd_xfer_softc(), and usbd_xfer_status().
|
static |
Definition at line 428 of file g_audio.c.
References DPRINTF, error, G_AUDIO_BUFSIZE, G_AUDIO_FRAMES, G_AUDIO_ISOC0_WR, g_audio_make_samples(), G_AUDIO_MODE_LOOP, G_AUDIO_MODE_PATTERN, g_audio_softc::sc_data_buf, g_audio_softc::sc_data_len, g_audio_softc::sc_mode, g_audio_softc::sc_throughput, g_audio_softc::sc_xfer, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_errstr(), usbd_xfer_set_frame_data(), usbd_xfer_set_stall(), usbd_xfer_softc(), and usbd_xfer_status().
|
static |
Definition at line 407 of file g_audio.c.
References g_noise(), g_audio_softc::sc_pattern, g_audio_softc::sc_pattern_len, and g_audio_softc::sc_state.
Referenced by g_audio_isoc_write_callback().
|
static |
Definition at line 272 of file g_audio.c.
References usbd_lookup_info::bInterfaceClass, usbd_lookup_info::bInterfaceSubClass, dev, usb_attach_arg::info, UICLASS_AUDIO, UISUBCLASS_AUDIOCONTROL, usb_attach_arg::usb_mode, and USB_MODE_DEVICE.
|
static |
Definition at line 231 of file g_audio.c.
References G_AUDIO_ISOC0_WR, G_AUDIO_ISOC1_WR, G_AUDIO_MAX_STRLEN, g_audio_mode, G_AUDIO_MODE_LOOP, g_audio_pattern_data, g_audio_timeout_reset(), g_audio_softc::sc_mode, g_audio_softc::sc_pattern, g_audio_softc::sc_pattern_len, g_audio_softc::sc_xfer, and usbd_transfer_start().
Referenced by g_audio_timeout_reset().
|
static |
Definition at line 214 of file g_audio.c.
References g_audio_pattern_interval, g_audio_timeout(), g_audio_softc::sc_callout, g_audio_softc::sc_tx_interval, usb_callout_reset, and USB_MS_TO_TICKS.
Referenced by g_audio_attach(), and g_audio_timeout().
|
static |
Definition at line 257 of file g_audio.c.
References g_audio_throughput, g_audio_watchdog_reset(), and g_audio_softc::sc_throughput.
Referenced by g_audio_watchdog_reset().
|
static |
Definition at line 251 of file g_audio.c.
References g_audio_watchdog(), g_audio_softc::sc_watchdog, and usb_callout_reset.
Referenced by g_audio_attach(), and g_audio_watchdog().
|
static |
Definition at line 385 of file g_audio.c.
References g_audio_softc::sc_noise_rem.
Referenced by g_audio_make_samples().
MODULE_DEPEND | ( | g_audio | , |
usb | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
SYSCTL_INT | ( | _hw_usb_g_audio | , |
OID_AUTO | , | ||
mode | , | ||
CTLFLAG_RWTUN | , | ||
& | g_audio_mode, | ||
0 | , | ||
"Mode selection" | |||
) |
SYSCTL_INT | ( | _hw_usb_g_audio | , |
OID_AUTO | , | ||
pattern_interval | , | ||
CTLFLAG_RWTUN | , | ||
& | g_audio_pattern_interval, | ||
0 | , | ||
"Pattern interval in milliseconds" | |||
) |
SYSCTL_INT | ( | _hw_usb_g_audio | , |
OID_AUTO | , | ||
throughput | , | ||
CTLFLAG_RD | , | ||
& | g_audio_throughput, | ||
sizeof(g_audio_throughput) | , | ||
"Throughput in bytes per second" | |||
) |
|
static |
SYSCTL_STRING | ( | _hw_usb_g_audio | , |
OID_AUTO | , | ||
pattern | , | ||
CTLFLAG_RW | , | ||
& | g_audio_pattern_data, | ||
sizeof(g_audio_pattern_data) | , | ||
"Data pattern" | |||
) |
|
static |
Definition at line 163 of file g_audio.c.
Referenced by g_audio_attach().
|
static |
Definition at line 131 of file g_audio.c.
Referenced by g_audio_attach().
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 109 of file g_audio.c.
Referenced by g_audio_timeout().
|
static |
Definition at line 119 of file g_audio.c.
Referenced by g_audio_timeout().
|
static |
Definition at line 114 of file g_audio.c.
Referenced by g_audio_timeout_reset().
|
static |
Definition at line 124 of file g_audio.c.
Referenced by g_audio_watchdog().