2370 do_command(cam, CPIA_COMMAND_SetSensorFPS,
2371 cam->params.sensorFps.divisor,
2372 cam->params.sensorFps.baserate, 0, 0);
2373
2374 if (cam->cmd_queue & COMMAND_SETFLICKERCTRL)
2375 do_command(cam, CPIA_COMMAND_SetFlickerCtrl,
2376 cam->params.flickerControl.flickerMode,
2377 cam->params.flickerControl.coarseJump,
2378 abs(cam->params.flickerControl.allowableOverExposure),
2379 0);
2380
2381 if (cam->cmd_queue & COMMAND_SETECPTIMING)
2382 do_command(cam, CPIA_COMMAND_SetECPTiming,
2383 cam->params.ecpTiming, 0, 0, 0);
2384
2385 if (cam->cmd_queue & COMMAND_PAUSE)
2386 do_command(cam, CPIA_COMMAND_EndStreamCap, 0, 0, 0, 0);
2387
2388 if (cam->cmd_queue & COMMAND_RESUME)
2389 init_stream_cap(cam);
2390
2391 if (cam->cmd_queue & COMMAND_SETLIGHTS && cam->params.qx3.qx3_detected)
2392 {
2393 int p1 = (cam->params.qx3.bottomlight == 0) << 1;
2394 int p2 = (cam->params.qx3.toplight == 0) << 3;
2395 do_command(cam, CPIA_COMMAND_WriteVCReg, 0x90, 0x8F, 0x50, 0);
2396 do_command(cam, CPIA_COMMAND_WriteMCPort, 2, 0, (p1|p2|0xE0), 0);
2397 }
2398
2399 cam->cmd_queue = COMMAND_NONE;
2400 mutex_unlock(&cam->param_lock);
2401 return;
2402}
2403
2404
2405
2406static void set_flicker(struct cam_params *params, volatile u32 *command_flags,
2407 int on)
2408{
2409
2410#define FIRMWARE_VERSION(x,y) (params->version.firmwareVersion == (x) && \