Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sound/pcm/channel.c
Show All 12 Lines | |||||
return err; | return err; | ||||
if (val < CHN_LATENCY_MIN || val > CHN_LATENCY_MAX) | if (val < CHN_LATENCY_MIN || val > CHN_LATENCY_MAX) | ||||
err = EINVAL; | err = EINVAL; | ||||
else | else | ||||
chn_latency = val; | chn_latency = val; | ||||
return err; | return err; | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, latency, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, latency, | ||||
0, sizeof(int), sysctl_hw_snd_latency, "I", | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | ||||
"buffering latency (0=low ... 10=high)"); | 0, sizeof(int), sysctl_hw_snd_latency, "I", | ||||
"buffering latency (0=low ... 10=high)"); | |||||
int chn_latency_profile = CHN_LATENCY_PROFILE_DEFAULT; | int chn_latency_profile = CHN_LATENCY_PROFILE_DEFAULT; | ||||
static int | static int | ||||
sysctl_hw_snd_latency_profile(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_latency_profile(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int err, val; | int err, val; | ||||
val = chn_latency_profile; | val = chn_latency_profile; | ||||
err = sysctl_handle_int(oidp, &val, 0, req); | err = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (err != 0 || req->newptr == NULL) | if (err != 0 || req->newptr == NULL) | ||||
return err; | return err; | ||||
if (val < CHN_LATENCY_PROFILE_MIN || val > CHN_LATENCY_PROFILE_MAX) | if (val < CHN_LATENCY_PROFILE_MIN || val > CHN_LATENCY_PROFILE_MAX) | ||||
err = EINVAL; | err = EINVAL; | ||||
else | else | ||||
chn_latency_profile = val; | chn_latency_profile = val; | ||||
return err; | return err; | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, latency_profile, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, latency_profile, | ||||
0, sizeof(int), sysctl_hw_snd_latency_profile, "I", | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | ||||
"buffering latency profile (0=aggressive 1=safe)"); | 0, sizeof(int), sysctl_hw_snd_latency_profile, "I", | ||||
"buffering latency profile (0=aggressive 1=safe)"); | |||||
static int chn_timeout = CHN_TIMEOUT; | static int chn_timeout = CHN_TIMEOUT; | ||||
static int | static int | ||||
sysctl_hw_snd_timeout(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_timeout(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int err, val; | int err, val; | ||||
val = chn_timeout; | val = chn_timeout; | ||||
err = sysctl_handle_int(oidp, &val, 0, req); | err = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (err != 0 || req->newptr == NULL) | if (err != 0 || req->newptr == NULL) | ||||
return err; | return err; | ||||
if (val < CHN_TIMEOUT_MIN || val > CHN_TIMEOUT_MAX) | if (val < CHN_TIMEOUT_MIN || val > CHN_TIMEOUT_MAX) | ||||
err = EINVAL; | err = EINVAL; | ||||
else | else | ||||
chn_timeout = val; | chn_timeout = val; | ||||
return err; | return err; | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, timeout, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, timeout, | ||||
0, sizeof(int), sysctl_hw_snd_timeout, "I", | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | ||||
"interrupt timeout (1 - 10) seconds"); | 0, sizeof(int), sysctl_hw_snd_timeout, "I", | ||||
"interrupt timeout (1 - 10) seconds"); | |||||
static int chn_vpc_autoreset = 1; | static int chn_vpc_autoreset = 1; | ||||
SYSCTL_INT(_hw_snd, OID_AUTO, vpc_autoreset, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_snd, OID_AUTO, vpc_autoreset, CTLFLAG_RWTUN, | ||||
&chn_vpc_autoreset, 0, "automatically reset channels volume to 0db"); | &chn_vpc_autoreset, 0, "automatically reset channels volume to 0db"); | ||||
static int chn_vol_0db_pcm = SND_VOL_0DB_PCM; | static int chn_vol_0db_pcm = SND_VOL_0DB_PCM; | ||||
static void | static void | ||||
Show All 24 Lines | |||||
if (val < SND_VOL_0DB_MIN || val > SND_VOL_0DB_MAX) | if (val < SND_VOL_0DB_MIN || val > SND_VOL_0DB_MAX) | ||||
return (EINVAL); | return (EINVAL); | ||||
chn_vol_0db_pcm = val; | chn_vol_0db_pcm = val; | ||||
chn_vpc_proc(0, val); | chn_vpc_proc(0, val); | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_0db, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_0db, | ||||
0, sizeof(int), sysctl_hw_snd_vpc_0db, "I", | CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | ||||
"0db relative level"); | 0, sizeof(int), sysctl_hw_snd_vpc_0db, "I", | ||||
"0db relative level"); | |||||
static int | static int | ||||
sysctl_hw_snd_vpc_reset(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_vpc_reset(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int err, val; | int err, val; | ||||
val = 0; | val = 0; | ||||
err = sysctl_handle_int(oidp, &val, 0, req); | err = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (err != 0 || req->newptr == NULL || val == 0) | if (err != 0 || req->newptr == NULL || val == 0) | ||||
return (err); | return (err); | ||||
chn_vol_0db_pcm = SND_VOL_0DB_PCM; | chn_vol_0db_pcm = SND_VOL_0DB_PCM; | ||||
chn_vpc_proc(1, SND_VOL_0DB_PCM); | chn_vpc_proc(1, SND_VOL_0DB_PCM); | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_reset, CTLTYPE_INT | CTLFLAG_RW, | SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_reset, | ||||
0, sizeof(int), sysctl_hw_snd_vpc_reset, "I", | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
"reset volume on all channels"); | 0, sizeof(int), sysctl_hw_snd_vpc_reset, "I", | ||||
"reset volume on all channels"); | |||||
static int chn_usefrags = 0; | static int chn_usefrags = 0; | ||||
static int chn_syncdelay = -1; | static int chn_syncdelay = -1; | ||||
SYSCTL_INT(_hw_snd, OID_AUTO, usefrags, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_snd, OID_AUTO, usefrags, CTLFLAG_RWTUN, | ||||
&chn_usefrags, 0, "prefer setfragments() over setblocksize()"); | &chn_usefrags, 0, "prefer setfragments() over setblocksize()"); | ||||
SYSCTL_INT(_hw_snd, OID_AUTO, syncdelay, CTLFLAG_RWTUN, | SYSCTL_INT(_hw_snd, OID_AUTO, syncdelay, CTLFLAG_RWTUN, | ||||
&chn_syncdelay, 0, | &chn_syncdelay, 0, | ||||
Show All 12 Lines |