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 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel