Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sound/usb/uaudio.c
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | |||||
static int uaudio_default_rate = 0; /* use rate list */ | static int uaudio_default_rate = 0; /* use rate list */ | ||||
static int uaudio_default_bits = 32; | static int uaudio_default_bits = 32; | ||||
static int uaudio_default_channels = 0; /* use default */ | static int uaudio_default_channels = 0; /* use default */ | ||||
static int uaudio_buffer_ms = 8; | static int uaudio_buffer_ms = 8; | ||||
#ifdef USB_DEBUG | #ifdef USB_DEBUG | ||||
static int uaudio_debug; | static int uaudio_debug; | ||||
static SYSCTL_NODE(_hw_usb, OID_AUTO, uaudio, CTLFLAG_RW, 0, "USB uaudio"); | static SYSCTL_NODE(_hw_usb, OID_AUTO, uaudio, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, | ||||
"USB uaudio"); | |||||
SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, debug, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, debug, CTLFLAG_RWTUN, | ||||
&uaudio_debug, 0, "uaudio debug level"); | &uaudio_debug, 0, "uaudio debug level"); | ||||
SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_rate, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_rate, CTLFLAG_RWTUN, | ||||
&uaudio_default_rate, 0, "uaudio default sample rate"); | &uaudio_default_rate, 0, "uaudio default sample rate"); | ||||
SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_bits, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_bits, CTLFLAG_RWTUN, | ||||
&uaudio_default_bits, 0, "uaudio default sample bits"); | &uaudio_default_bits, 0, "uaudio default sample bits"); | ||||
SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_channels, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, default_channels, CTLFLAG_RWTUN, | ||||
Show All 14 Lines | if (val > 8) | ||||
val = 8; | val = 8; | ||||
else if (val < 2) | else if (val < 2) | ||||
val = 2; | val = 2; | ||||
uaudio_buffer_ms = val; | uaudio_buffer_ms = val; | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_usb_uaudio, OID_AUTO, buffer_ms, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_usb_uaudio, OID_AUTO, buffer_ms, | ||||
0, sizeof(int), uaudio_buffer_ms_sysctl, "I", | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, 0, sizeof(int), | ||||
uaudio_buffer_ms_sysctl, "I", | |||||
"uaudio buffering delay from 2ms to 8ms"); | "uaudio buffering delay from 2ms to 8ms"); | ||||
#else | #else | ||||
#define uaudio_debug 0 | #define uaudio_debug 0 | ||||
#endif | #endif | ||||
#define UAUDIO_NFRAMES 64 /* must be factor of 8 due HS-USB */ | #define UAUDIO_NFRAMES 64 /* must be factor of 8 due HS-USB */ | ||||
#define UAUDIO_NCHANBUFS 2 /* number of outstanding request */ | #define UAUDIO_NCHANBUFS 2 /* number of outstanding request */ | ||||
#define UAUDIO_RECURSE_LIMIT 255 /* rounds */ | #define UAUDIO_RECURSE_LIMIT 255 /* rounds */ | ||||
▲ Show 20 Lines • Show All 2,754 Lines • ▼ Show 20 Lines | uaudio_mixer_register_sysctl(struct uaudio_softc *sc, device_t dev) | ||||
struct sysctl_oid *mixer_tree; | struct sysctl_oid *mixer_tree; | ||||
struct sysctl_oid *control_tree; | struct sysctl_oid *control_tree; | ||||
char buf[32]; | char buf[32]; | ||||
int chan; | int chan; | ||||
int n; | int n; | ||||
mixer_tree = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), | mixer_tree = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), | ||||
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "mixer", | SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "mixer", | ||||
CTLFLAG_RD, NULL, ""); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, ""); | ||||
if (mixer_tree == NULL) | if (mixer_tree == NULL) | ||||
return; | return; | ||||
for (n = 0, pmc = sc->sc_mixer_root; pmc != NULL; | for (n = 0, pmc = sc->sc_mixer_root; pmc != NULL; | ||||
pmc = pmc->next, n++) { | pmc = pmc->next, n++) { | ||||
for (chan = 0; chan < pmc->nchan; chan++) { | for (chan = 0; chan < pmc->nchan; chan++) { | ||||
if (pmc->nchan > 1) { | if (pmc->nchan > 1) { | ||||
snprintf(buf, sizeof(buf), "%s_%d_%d", | snprintf(buf, sizeof(buf), "%s_%d_%d", | ||||
pmc->name, n, chan); | pmc->name, n, chan); | ||||
} else { | } else { | ||||
snprintf(buf, sizeof(buf), "%s_%d", | snprintf(buf, sizeof(buf), "%s_%d", | ||||
pmc->name, n); | pmc->name, n); | ||||
} | } | ||||
control_tree = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), | control_tree = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), | ||||
SYSCTL_CHILDREN(mixer_tree), OID_AUTO, buf, | SYSCTL_CHILDREN(mixer_tree), OID_AUTO, buf, | ||||
CTLFLAG_RD, NULL, "Mixer control nodes"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, | ||||
"Mixer control nodes"); | |||||
if (control_tree == NULL) | if (control_tree == NULL) | ||||
continue; | continue; | ||||
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), | SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), | ||||
SYSCTL_CHILDREN(control_tree), | SYSCTL_CHILDREN(control_tree), | ||||
OID_AUTO, "val", CTLTYPE_INT | CTLFLAG_RWTUN, sc, | OID_AUTO, "val", | ||||
pmc->wValue[chan], | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, | ||||
sc, pmc->wValue[chan], | |||||
uaudio_mixer_sysctl_handler, "I", "Current value"); | uaudio_mixer_sysctl_handler, "I", "Current value"); | ||||
SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), | SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), | ||||
SYSCTL_CHILDREN(control_tree), | SYSCTL_CHILDREN(control_tree), | ||||
OID_AUTO, "min", CTLFLAG_RD, 0, pmc->minval, | OID_AUTO, "min", CTLFLAG_RD, 0, pmc->minval, | ||||
"Minimum value"); | "Minimum value"); | ||||
SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), | SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), | ||||
▲ Show 20 Lines • Show All 3,344 Lines • Show Last 20 Lines |