21 Nov
2007
21 Nov
'07
11:01 a.m.
At Tue, 20 Nov 2007 14:37:46 +0100, Daniel Mack wrote:
--- /dev/null +++ b/sound/usb/caiaq/caiaq-control.c
(snip)
+#ifdef CONFIG_SND_USB_CAIAQ_INPUT +#include <linux/input.h> +#endif
Do you really need ifdef here?
+static int control_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
+{
- struct snd_usb_audio *chip = snd_kcontrol_chip(kcontrol);
- struct snd_usb_caiaqdev *dev = caiaqdev(chip->card);
- int pos = kcontrol->private_value;
- if (pos & CNT_INTVAL) {
dev->control_state[pos & ~CNT_INTVAL]
= ucontrol->value.integer.value[0];
snd_usb_caiaq_send_command(dev, EP1_CMD_DIMM_LEDS,
dev->control_state, sizeof(dev->control_state));
- } else {
if (ucontrol->value.integer.value[0])
dev->control_state[pos / 8] |= 1 << (pos % 8);
else
dev->control_state[pos / 8] &= ~(1 << (pos % 8));
snd_usb_caiaq_send_command(dev, EP1_CMD_WRITE_IO,
dev->control_state, sizeof(dev->control_state));
- }
- return 0;
+}
The put callback is supposed to return 1 if a value is changed. It's no strict requirement, so far, but if this still doesn't follow put a comment like FIXME.
+/*
- 0
- 1 << 1
- 1 << 0 | 1 << 1
- 1 << 0 | 1 << 1 | 1 << 2
- 1 << 0
- 0
- */
What's this? :)
thanks,
Takashi