*
* Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>
*
- * Many codes borrowed from audio.c by
+ * Many codes borrowed from audio.c by
* Alan Cox (alan@lxorguk.ukuu.org.uk)
* Thomas Sailer (sailer@ife.ee.ethz.ch)
*
unsigned int ctrlif;
unsigned int id;
unsigned int control; /* CS or ICN (high byte) */
- unsigned int cmask; /* channel mask bitmap: 0 = master */
+ unsigned int cmask; /* channel mask bitmap: 0 = master */
int channels;
int val_type;
int min, max, res;
unsigned char buf[2];
int val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1;
int timeout = 10;
-
+
while (timeout-- > 0) {
if (snd_usb_ctl_msg(cval->chip->dev, usb_rcvctrlpipe(cval->chip->dev, 0),
request,
unsigned char buf[2];
int val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1;
int timeout = 10;
-
+
value_set = convert_bytes_value(cval, value_set);
buf[0] = value_set & 0xff;
buf[1] = (value_set >> 8) & 0xff;
/*
- * parser routines begin here...
+ * parser routines begin here...
*/
static int parse_audio_unit(mixer_build_t *state, int unitid);
{ 0x0712, "Multi-Track Recorder" },
{ 0x0713, "Synthesizer" },
{ 0 },
-};
+};
static int get_term_name(mixer_build_t *state, usb_audio_term_t *iterm,
unsigned char *name, int maxlen, int term_only)
static void usb_mixer_elem_free(snd_kcontrol_t *kctl)
{
if (kctl->private_data) {
- snd_magic_kfree((void *)kctl->private_data);
+ kfree((void *)kctl->private_data);
kctl->private_data = NULL;
}
}
cval->res = 1;
} else {
int last_valid_res = cval->res;
-
+
while (cval->res > 1) {
if (set_ctl_value(cval, SET_RES, (cval->control << 8) | minchn, cval->res / 2) < 0)
break;
/* get a feature/mixer unit info */
static int mixer_ctl_feature_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+{
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
if (cval->val_type == USB_MIXER_BOOLEAN ||
cval->val_type == USB_MIXER_INV_BOOLEAN)
/* get the current value from feature/mixer unit */
static int mixer_ctl_feature_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int c, cnt, val, err;
if (cval->cmask) {
/* put the current value to feature/mixer unit */
static int mixer_ctl_feature_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int c, cnt, val, oval, err;
int changed = 0;
if (check_ignored_ctl(state, unitid, control))
return;
- cval = snd_magic_kcalloc(usb_mixer_elem_info_t, 0, GFP_KERNEL);
+ cval = kcalloc(1, sizeof(*cval), GFP_KERNEL);
if (! cval) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
return;
kctl = snd_ctl_new1(&usb_feature_unit_ctl, cval);
if (! kctl) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
- snd_magic_kfree(cval);
+ kfree(cval);
return;
}
kctl->private_free = usb_mixer_elem_free;
if (master_bits & (1 << i))
build_feature_ctl(state, ftr, 0, i, &iterm, unitid);
}
-
+
return 0;
}
if (check_ignored_ctl(state, unitid, 0))
return;
- cval = snd_magic_kcalloc(usb_mixer_elem_info_t, 0, GFP_KERNEL);
+ cval = kcalloc(1, sizeof(*cval), GFP_KERNEL);
if (! cval)
return;
kctl = snd_ctl_new1(&usb_feature_unit_ctl, cval);
if (! kctl) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
- snd_magic_kfree(cval);
+ kfree(cval);
return;
}
kctl->private_free = usb_mixer_elem_free;
/* get callback for processing/extension unit */
static int mixer_ctl_procunit_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int err, val;
err = get_cur_ctl_value(cval, cval->control << 8, &val);
/* put callback for processing/extension unit */
static int mixer_ctl_procunit_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int val, oval, err;
err = get_cur_ctl_value(cval, cval->control << 8, &oval);
continue;
if (check_ignored_ctl(state, unitid, valinfo->control))
continue;
- cval = snd_magic_kcalloc(usb_mixer_elem_info_t, 0, GFP_KERNEL);
+ cval = kcalloc(1, sizeof(*cval), GFP_KERNEL);
if (! cval) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
return -ENOMEM;
kctl = snd_ctl_new1(&mixer_procunit_ctl, cval);
if (! kctl) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
- snd_magic_kfree(cval);
+ kfree(cval);
return -ENOMEM;
}
kctl->private_free = usb_mixer_elem_free;
* use an enumerator type for routing
*/
static int mixer_ctl_selector_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+{
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
char **itemlist = (char **)kcontrol->private_value;
snd_assert(itemlist, return -EINVAL);
/* get callback for selector unit */
static int mixer_ctl_selector_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int val, err;
err = get_cur_ctl_value(cval, 0, &val);
/* put callback for selector unit */
static int mixer_ctl_selector_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kcontrol->private_data, return -EINVAL);
+ usb_mixer_elem_info_t *cval = kcontrol->private_data;
int val, oval, err;
err = get_cur_ctl_value(cval, 0, &oval);
int i, num_ins = 0;
if (kctl->private_data) {
- usb_mixer_elem_info_t *cval = snd_magic_cast(usb_mixer_elem_info_t, kctl->private_data,);
+ usb_mixer_elem_info_t *cval = kctl->private_data;
num_ins = cval->max;
- snd_magic_kfree(cval);
+ kfree(cval);
kctl->private_data = NULL;
}
if (kctl->private_value) {
if (check_ignored_ctl(state, unitid, 0))
return 0;
- cval = snd_magic_kcalloc(usb_mixer_elem_info_t, 0, GFP_KERNEL);
+ cval = kcalloc(1, sizeof(*cval), GFP_KERNEL);
if (! cval) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
return -ENOMEM;
namelist = kmalloc(sizeof(char *) * num_ins, GFP_KERNEL);
if (! namelist) {
snd_printk(KERN_ERR "cannot malloc\n");
- snd_magic_kfree(cval);
+ kfree(cval);
return -ENOMEM;
}
#define MAX_ITEM_NAME_LEN 64
while (--i > 0)
kfree(namelist[i]);
kfree(namelist);
- snd_magic_kfree(cval);
+ kfree(cval);
return -ENOMEM;
}
if (check_input_term(state, desc[5 + i], &iterm) >= 0)
kctl = snd_ctl_new1(&mixer_selectunit_ctl, cval);
if (! kctl) {
snd_printk(KERN_ERR "cannot malloc kcontrol\n");
- snd_magic_kfree(cval);
+ kfree(cval);
return -ENOMEM;
}
kctl->private_value = (unsigned long)namelist;