
22 Feb
2012
22 Feb
'12
3:37 p.m.
At Wed, 22 Feb 2012 14:07:14 +0100, Torsten Schenk wrote:
-static void usb6fire_control_master_vol_update(struct control_runtime *rt) +static void usb6fire_control_output_vol_update(struct control_runtime *rt) { struct comm_runtime *comm_rt = rt->chip->comm;
- if (comm_rt) {
/* set volume */
comm_rt->write8(comm_rt, 0x12, 0x0f, 180 - rt->master_vol);
/* unmute */
comm_rt->write8(comm_rt, 0x12, 0x0e, 0x00);
- }
- int i;
- if (comm_rt)
for (i = 0; i < 6; i++)
comm_rt->write8(comm_rt, 0x12, 0x0f + i,
180 - rt->output_vol[i]);
}
Would be better to update only the affected channel, but it's just a minor thing. Not need to change at this time.
-static struct __devinitdata snd_kcontrol_new elements[] = { +static struct __devinitdata snd_kcontrol_new vol_elements[] = { { .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "Master Playback Volume",
.index = 0,
.name = "Analog Playback Volume",
.index = 1,
The index should start also from zero.
@@ -310,6 +365,39 @@ {} };
+static int usb6fire_control_add_virtual(
- struct control_runtime *rt,
- struct snd_card *card,
- char *name,
- struct snd_kcontrol_new *elems)
+{
- int ret;
- int i;
- struct snd_kcontrol *vmaster = snd_ctl_make_virtual_master(name, NULL);
Pass tlv_output here.
thanks,
Takashi