MODULE_DESCRIPTION("Universal routines for AK4531 codec");
MODULE_LICENSE("GPL");
-#define chip_t ak4531_t
-
static void snd_ak4531_proc_init(snd_card_t * card, ak4531_t * ak4531);
/*
}
ucontrol->value.integer.value[0] = val;
return 0;
-}
+}
static int snd_ak4531_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
ak4531->write(ak4531, reg, ak4531->regs[reg] = val);
spin_unlock_irqrestore(&ak4531->reg_lock, flags);
return change;
-}
+}
#define AK4531_DOUBLE(xname, xindex, left_reg, right_reg, left_shift, right_shift, mask, invert) \
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xindex, \
ucontrol->value.integer.value[0] = left;
ucontrol->value.integer.value[1] = right;
return 0;
-}
+}
static int snd_ak4531_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
}
spin_unlock_irqrestore(&ak4531->reg_lock, flags);
return change;
-}
+}
#define AK4531_INPUT_SW(xname, xindex, reg1, reg2, left_shift, right_shift) \
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xindex, \
ucontrol->value.integer.value[3] = (ak4531->regs[reg2] >> right_shift) & 1;
spin_unlock_irqrestore(&ak4531->reg_lock, flags);
return 0;
-}
+}
static int snd_ak4531_put_input_sw(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
ak4531->write(ak4531, reg2, ak4531->regs[reg2] = val2);
spin_unlock_irqrestore(&ak4531->reg_lock, flags);
return change;
-}
-
-#define AK4531_CONTROLS (sizeof(snd_ak4531_controls)/sizeof(snd_kcontrol_new_t))
+}
static snd_kcontrol_new_t snd_ak4531_controls[] = {
if (ak4531) {
if (ak4531->private_free)
ak4531->private_free(ak4531);
- snd_magic_kfree(ak4531);
+ kfree(ak4531);
}
return 0;
}
static int snd_ak4531_dev_free(snd_device_t *device)
{
- ak4531_t *ak4531 = snd_magic_cast(ak4531_t, device->device_data, return -ENXIO);
+ ak4531_t *ak4531 = device->device_data;
return snd_ak4531_free(ak4531);
}
snd_assert(rak4531 != NULL, return -EINVAL);
*rak4531 = NULL;
snd_assert(card != NULL && _ak4531 != NULL, return -EINVAL);
- ak4531 = snd_magic_kcalloc(ak4531_t, 0, GFP_KERNEL);
+ ak4531 = kcalloc(1, sizeof(*ak4531), GFP_KERNEL);
if (ak4531 == NULL)
return -ENOMEM;
*ak4531 = *_ak4531;
continue;
ak4531->write(ak4531, idx, ak4531->regs[idx] = snd_ak4531_initial_map[idx]); /* recording source is mixer */
}
- for (idx = 0; idx < AK4531_CONTROLS; idx++) {
+ for (idx = 0; idx < ARRAY_SIZE(snd_ak4531_controls); idx++) {
if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_ak4531_controls[idx], ak4531))) < 0) {
snd_ak4531_free(ak4531);
return err;
static void snd_ak4531_proc_read(snd_info_entry_t *entry,
snd_info_buffer_t * buffer)
{
- ak4531_t *ak4531 = snd_magic_cast(ak4531_t, entry->private_data, return);
+ ak4531_t *ak4531 = entry->private_data;
snd_iprintf(buffer, "Asahi Kasei AK4531\n\n");
snd_iprintf(buffer, "Recording source : %s\n"