Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] gspca - sonixb: Update inactive flags to reflect autogain setting

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Hans de Goede and committed by
Mauro Carvalho Chehab
f0baad86 f51a8caa

+12 -2
+12 -2
drivers/media/video/gspca/sonixb.c
··· 209 209 .step = 1, 210 210 #define AUTOGAIN_DEF 1 211 211 .default_value = AUTOGAIN_DEF, 212 - .flags = 0, 212 + .flags = V4L2_CTRL_FLAG_UPDATE 213 213 }, 214 214 .set = sd_setautogain, 215 215 }, ··· 1008 1008 struct sd *sd = (struct sd *) gspca_dev; 1009 1009 int avg_lum = atomic_read(&sd->avg_lum); 1010 1010 1011 - if (avg_lum == -1 || !sd->ctrls[AUTOGAIN].val) 1011 + if ((gspca_dev->ctrl_dis & (1 << AUTOGAIN)) || 1012 + avg_lum == -1 || !sd->ctrls[AUTOGAIN].val) 1012 1013 return; 1013 1014 1014 1015 if (sd->autogain_ignore_frames > 0) { ··· 1063 1062 sd->bridge = id->driver_info & 0xff; 1064 1063 1065 1064 gspca_dev->ctrl_dis = sensor_data[sd->sensor].ctrl_dis; 1065 + #if AUTOGAIN_DEF 1066 + if (!(gspca_dev->ctrl_dis & (1 << AUTOGAIN))) 1067 + gspca_dev->ctrl_inac = (1 << GAIN) | (1 << EXPOSURE); 1068 + #endif 1066 1069 1067 1070 cam = &gspca_dev->cam; 1068 1071 cam->ctrls = sd->ctrls; ··· 1404 1399 setgain(gspca_dev); 1405 1400 } 1406 1401 } 1402 + 1403 + if (sd->ctrls[AUTOGAIN].val) 1404 + gspca_dev->ctrl_inac = (1 << GAIN) | (1 << EXPOSURE); 1405 + else 1406 + gspca_dev->ctrl_inac = 0; 1407 1407 1408 1408 return 0; 1409 1409 }