u32 v_sat_value; 
u32 v_sat_value; 
static int set_control(struct cx88_core *core, struct v4l2_control *ctl){	/* struct cx88_core *core = dev->core; */	struct cx88_ctrl *c = NULL;        u32 v_sat_value;	u32 value;	int i;	for (i = 0; i < CX8800_CTLS; i++)		if (cx8800_ctls[i].v.id == ctl->id)			c = &cx8800_ctls[i];	if (NULL == c)		return -EINVAL;	if (ctl->value < c->v.minimum)		ctl->value = c->v.minimum;	if (ctl->value > c->v.maximum)		ctl->value = c->v.maximum;	switch (ctl->id) {	case V4L2_CID_AUDIO_BALANCE:		value = (ctl->value < 0x40) ? (0x40 - ctl->value) : ctl->value;		break;	case V4L2_CID_AUDIO_VOLUME:		value = 0x3f - (ctl->value & 0x3f);		break;	case V4L2_CID_SATURATION:		/* special v_sat handling */		v_sat_value = ctl->value - (0x7f - 0x5a);		if (v_sat_value > 0xff)			v_sat_value = 0xff;		if (v_sat_value < 0x00)			v_sat_value = 0x00;		cx_andor(MO_UV_SATURATION, 0xff00, v_sat_value << 8);		/* fall through to default route for u_sat */	default:		value = ((ctl->value - c->off) << c->shift) & c->mask;		break;	}	dprintk(1,"set_control id=0x%X reg=0x%x val=0x%x%s\n",		ctl->id, c->reg, value, c->sreg ? " [shadowed]" : "");	if (c->sreg) {		cx_sandor(c->sreg, c->reg, c->mask, value);	} else {		cx_andor(c->reg, c->mask, value);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4ac97914c6c35f6bf132071c718e034d0846b9f5/cx88-video.c/buggy/drivers/media/video/cx88/cx88-video.c