gspca pac7302/pac7311: separate dq_callback
PATCH 9/21 gspca pac7302/pac7311: separate dq_callback
From: Márton Németh <[email protected]>
Separate the dq_callback function. Remove the run-time decision for PAC7302 and PAC7311 sensors.
Signed-off-by Márton Németh <[email protected]>
Cc Thomas Kaiser <[email protected]>
Cc Theodore Kilgore <[email protected]>
Cc Kyle Guinn <[email protected]>
---
drivers/media/video/gspca/pac7311.c +33 -19
@@ -820,7 +820,7 @@ static void pac7311_sd_stop0(struct gspc/* Include pac common sof detection functions */ #include "pac_common.h" -static void do_autogain (struct gspca_dev *gspca_dev) +static void pac7302_do_autogain (struct gspca_dev *gspca_dev) {struct sd *sd = (struct sd *) gspca_dev;int avg_lum =atomic_read (&sd->avg_lum);
@@ -829,22 +829,36 @@ static void do_autogain(struct gspca_devif (avg_lum ==-1 )return ; -if (sd->sensor ==SENSOR_PAC7302 ) { - desired_lum =270 + sd->brightness *4 ; -/* Hack hack, with the 7202 the first exposure step is -pretty large, so if we're about to make the first -exposure increase make the deadzone large to avoid -oscilating */ -if (desired_lum > avg_lum && sd->gain ==GAIN_DEF && - sd->exposure >EXPOSURE_DEF && - sd->exposure <42 ) - deadzone =90 ; -else - deadzone =30 ; - }else { - desired_lum =200 ; - deadzone =20 ; - } + desired_lum =270 + sd->brightness *4 ; +/* Hack hack, with the 7202 the first exposure step is +pretty large, so if we're about to make the first +exposure increase make the deadzone large to avoid +oscilating */ +if (desired_lum > avg_lum && sd->gain ==GAIN_DEF && + sd->exposure >EXPOSURE_DEF && + sd->exposure <42 ) + deadzone =90 ; +else + deadzone =30 ; + +if (sd->autogain_ignore_frames >0 ) + sd->autogain_ignore_frames--; +else if (gspca_auto_gain_n_exposure (gspca_dev, avg_lum, desired_lum, + deadzone,GAIN_KNEE ,EXPOSURE_KNEE )) + sd->autogain_ignore_frames =PAC_AUTOGAIN_IGNORE_FRAMES ; +} + +static void pac7311_do_autogain (struct gspca_dev *gspca_dev) +{ +struct sd *sd = (struct sd *) gspca_dev; +int avg_lum =atomic_read (&sd->avg_lum); +int desired_lum, deadzone; + +if (avg_lum ==-1 ) +return ; + + desired_lum =200 ; + deadzone =20 ;if (sd->autogain_ignore_frames >0 ) sd->autogain_ignore_frames--;
@@ -1180,7 +1194,7 @@ static struct sd_desc pac7302_sd_desc = .stopN = pac7302_sd_stopN, .stop0 = pac7302_sd_stop0, .pkt_scan = pac7302_sd_pkt_scan, - .dq_callback = do_autogain, + .dq_callback = pac7302_do_autogain, };/* sub-driver description for pac7311 */
@@ -1194,7 +1208,7 @@ static struct sd_desc pac7311_sd_desc = .stopN = pac7311_sd_stopN, .stop0 = pac7311_sd_stop0, .pkt_scan = pac7311_sd_pkt_scan, - .dq_callback = do_autogain, + .dq_callback = pac7311_do_autogain, };/* -- module initialisation -- */