h->st.gain &= ~( (mask << shift_right) | (mask << shift_left) ); h->st.gain |=  ( (left << shift_left) | (right << shift_right) ); 
left = ucontrol->value.integer.value[0] & mask; if (invert) left = mask - left; h->st.gain &= ~( (mask << shift_left ) ); h->st.gain |= (left << shift_left);  if (shift_left != shift_right) { right = ucontrol->value.integer.value[1] & mask; if (invert) right = mask - right; h->st.gain &= ~( (mask << shift_right) ); h->st.gain |= (right << shift_right); }  
snd_harmony_volume_put(snd_kcontrol_t *kc, 		       snd_ctl_elem_value_t *ucontrol){	harmony_t *h = snd_kcontrol_chip(kc);	int shift_left = (kc->private_value) & 0xff;	int shift_right = (kc->private_value >> 8) & 0xff;	int mask = (kc->private_value >> 16) & 0xff;	int invert = (kc->private_value >> 24) & 0xff;	int left, right;	int old_gain = h->st.gain;	unsigned long flags;		left = ucontrol->value.integer.value[0] & mask;	right = ucontrol->value.integer.value[1] & mask;	if (invert) {		left = mask - left;		right = mask - right;	}		spin_lock_irqsave(&h->mixer_lock, flags);	h->st.gain &= ~( (mask << shift_right) | (mask << shift_left) ); 	h->st.gain |=  ( (left << shift_left) | (right << shift_right) );	snd_harmony_set_new_gain(h);	spin_unlock_irqrestore(&h->mixer_lock, flags);		return (old_gain - h->st.gain);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3a165680168758733b7a9f7fb835954fbe6b91a8/harmony.c/clean/sound/parisc/harmony.c