|
@@ -108,47 +108,33 @@ int m5mols_start_capture(struct m5mols_info *info)
|
|
|
int ret;
|
|
|
|
|
|
/*
|
|
|
- * Preparing capture. Setting control & interrupt before entering
|
|
|
- * capture mode
|
|
|
- *
|
|
|
- * 1) change to MONITOR mode for operating control & interrupt
|
|
|
- * 2) set controls (considering v4l2_control value & lock 3A)
|
|
|
- * 3) set interrupt
|
|
|
- * 4) change to CAPTURE mode
|
|
|
+ * Synchronize the controls, set the capture frame resolution and color
|
|
|
+ * format. The frame capture is initiated during switching from Monitor
|
|
|
+ * to Capture mode.
|
|
|
*/
|
|
|
ret = m5mols_mode(info, REG_MONITOR);
|
|
|
if (!ret)
|
|
|
ret = m5mols_sync_controls(info);
|
|
|
if (!ret)
|
|
|
- ret = m5mols_lock_3a(info, true);
|
|
|
+ ret = m5mols_write(sd, CAPP_YUVOUT_MAIN, REG_JPEG);
|
|
|
+ if (!ret)
|
|
|
+ ret = m5mols_write(sd, CAPP_MAIN_IMAGE_SIZE, resolution);
|
|
|
if (!ret)
|
|
|
- ret = m5mols_enable_interrupt(sd, REG_INT_CAPTURE);
|
|
|
+ ret = m5mols_lock_3a(info, true);
|
|
|
if (!ret)
|
|
|
ret = m5mols_mode(info, REG_CAPTURE);
|
|
|
if (!ret)
|
|
|
- /* Wait for capture interrupt, after changing capture mode */
|
|
|
+ /* Wait until a frame is captured to ISP internal memory */
|
|
|
ret = m5mols_wait_interrupt(sd, REG_INT_CAPTURE, 2000);
|
|
|
if (!ret)
|
|
|
ret = m5mols_lock_3a(info, false);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
+
|
|
|
/*
|
|
|
- * Starting capture. Setting capture frame count and resolution and
|
|
|
- * the format(available format: JPEG, Bayer RAW, YUV).
|
|
|
- *
|
|
|
- * 1) select single or multi(enable to 25), format, size
|
|
|
- * 2) set interrupt
|
|
|
- * 3) start capture(for main image, now)
|
|
|
- * 4) get information
|
|
|
- * 5) notify file size to v4l2 device(e.g, to s5p-fimc v4l2 device)
|
|
|
+ * Initiate the captured data transfer to a MIPI-CSI receiver.
|
|
|
*/
|
|
|
ret = m5mols_write(sd, CAPC_SEL_FRAME, 1);
|
|
|
- if (!ret)
|
|
|
- ret = m5mols_write(sd, CAPP_YUVOUT_MAIN, REG_JPEG);
|
|
|
- if (!ret)
|
|
|
- ret = m5mols_write(sd, CAPP_MAIN_IMAGE_SIZE, resolution);
|
|
|
- if (!ret)
|
|
|
- ret = m5mols_enable_interrupt(sd, REG_INT_CAPTURE);
|
|
|
if (!ret)
|
|
|
ret = m5mols_write(sd, CAPC_START, REG_CAP_START_MAIN);
|
|
|
if (!ret) {
|