Evo MR3 updates
/drivers/media/video/msm/msm_vfe8x_proc.c
blob:869abe5c99ebf4e5c1808a3c5b85e47eb4255a8b -> blob:7d6f83d95e99a7acfa92526f8879817fb431cbda
--- drivers/media/video/msm/msm_vfe8x_proc.c
+++ drivers/media/video/msm/msm_vfe8x_proc.c
@@ -366,7 +366,8 @@ static void vfe_write_lens_roll_off_tabl
writel(data, ctrl->vfebase + VFE_DMI_DATA_LO);
data = (((uint32_t) (*initB)) & 0x0000FFFF) |
- (((uint32_t) (*initGr)) << 16);
+ /* 20101011: fix mesh LSC */
+ (((uint32_t) (*initGb)) << 16);
initB++;
initGb++;
@@ -379,13 +380,17 @@ static void vfe_write_lens_roll_off_tabl
/* pack and write delta table */
for (i = 0; i < VFE_ROLL_OFF_DELTA_TABLE_SIZE; i++) {
- data = *pDeltaR | (*pDeltaGr << 16);
+ /* 20101011: fix mesh LSC */
+ data = (((int32_t)(*pDeltaR)) & 0x0000FFFF) |
+ (((int32_t)(*pDeltaGr))<<16);
pDeltaR++;
pDeltaGr++;
writel(data, ctrl->vfebase + VFE_DMI_DATA_LO);
+ /* 20101011: fix mesh LSC */
+ data = (((int32_t)(*pDeltaB)) & 0x0000FFFF) |
+ (((int32_t)(*pDeltaGb))<<16);
- data = *pDeltaB | (*pDeltaGb << 16);
pDeltaB++;
pDeltaGb++;
@@ -1790,6 +1795,8 @@ static void vfe_process_output_path_irq(
}
}
+static int preview_skipframe;
+#define FRAME_SKIP 2
static void __vfe_do_tasklet(struct isr_queue_cmd *qcmd)
{
if (qcmd->vfeInterruptStatus.regUpdateIrq) {
@@ -1799,6 +1806,7 @@ static void __vfe_do_tasklet(struct isr_
if (qcmd->vfeInterruptStatus.resetAckIrq) {
CDBG("%s: process resetAckIrq\n", __func__);
+ preview_skipframe = 0;
vfe_process_reset_irq();
}
@@ -1817,7 +1825,11 @@ static void __vfe_do_tasklet(struct isr_
/* next, check output path related interrupts. */
if (qcmd->vfeInterruptStatus.anyOutputPathIrqs) {
CDBG("irq: anyOutputPathIrqs\n");
- vfe_process_output_path_irq(&qcmd->vfeInterruptStatus);
+ if(preview_skipframe > FRAME_SKIP ||
+ ctrl->vfeOperationMode == VFE_START_OPERATION_MODE_SNAPSHOT)
+ vfe_process_output_path_irq(&qcmd->vfeInterruptStatus);
+ else
+ preview_skipframe ++;
}
if (qcmd->vfeInterruptStatus.afPingpongIrq)