Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 306249
b: refs/heads/master
c: b43883d
h: refs/heads/master
i:
  306247: 663eebc
v: v3
  • Loading branch information
Laurent Pinchart authored and Mauro Carvalho Chehab committed May 8, 2012
1 parent 6bcdfcd commit a04883e
Show file tree
Hide file tree
Showing 6 changed files with 7 additions and 50 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a32f2f90543853449f0e49eaf885e8d24d5809a7
refs/heads/master: b43883d659aa3f3aced5e400538b200341e910e0
8 changes: 0 additions & 8 deletions trunk/drivers/media/video/omap3isp/isp.c
Original file line number Diff line number Diff line change
Expand Up @@ -785,14 +785,6 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe,
}
}

/* Frame number propagation. In continuous streaming mode the number
* is incremented in the frame start ISR. In mem-to-mem mode
* singleshot is used and frame start IRQs are not available.
* Thus we have to increment the number here.
*/
if (pipe->do_propagation && mode == ISP_PIPELINE_STREAM_SINGLESHOT)
atomic_inc(&pipe->frame_number);

return 0;
}

Expand Down
3 changes: 3 additions & 0 deletions trunk/drivers/media/video/omap3isp/ispccdc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1410,6 +1410,9 @@ static void ccdc_hs_vs_isr(struct isp_ccdc_device *ccdc)
struct video_device *vdev = ccdc->subdev.devnode;
struct v4l2_event event;

/* Frame number propagation */
atomic_inc(&pipe->frame_number);

memset(&event, 0, sizeof(event));
event.type = V4L2_EVENT_FRAME_SYNC;
event.u.frame_sync.frame_sequence = atomic_read(&pipe->frame_number);
Expand Down
23 changes: 0 additions & 23 deletions trunk/drivers/media/video/omap3isp/ispccp2.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ static void ccp2_pwr_cfg(struct isp_ccp2_device *ccp2)
static void ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
{
struct isp_device *isp = to_isp_device(ccp2);
struct isp_pipeline *pipe = to_isp_pipeline(&ccp2->subdev.entity);
int i;

if (enable && ccp2->vdds_csib)
Expand All @@ -178,19 +177,6 @@ static void ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
ISPCCP2_CTRL_MODE | ISPCCP2_CTRL_IF_EN,
enable ? (ISPCCP2_CTRL_MODE | ISPCCP2_CTRL_IF_EN) : 0);

/* For frame count propagation */
if (pipe->do_propagation) {
/* We may want the Frame Start IRQ from LC0 */
if (enable)
isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2,
ISPCCP2_LC01_IRQENABLE,
ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ);
else
isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCP2,
ISPCCP2_LC01_IRQENABLE,
ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ);
}

if (!enable && ccp2->vdds_csib)
regulator_disable(ccp2->vdds_csib);
}
Expand Down Expand Up @@ -350,7 +336,6 @@ static void ccp2_lcx_config(struct isp_ccp2_device *ccp2,
ISPCCP2_LC01_IRQSTATUS_LC0_CRC_IRQ |
ISPCCP2_LC01_IRQSTATUS_LC0_FSP_IRQ |
ISPCCP2_LC01_IRQSTATUS_LC0_FW_IRQ |
ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ |
ISPCCP2_LC01_IRQSTATUS_LC0_FSC_IRQ |
ISPCCP2_LC01_IRQSTATUS_LC0_SSC_IRQ;

Expand Down Expand Up @@ -613,14 +598,6 @@ void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2)
if (omap3isp_module_sync_is_stopping(&ccp2->wait, &ccp2->stopping))
return;

/* Frame number propagation */
if (lcx_irqstatus & ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ) {
struct isp_pipeline *pipe =
to_isp_pipeline(&ccp2->subdev.entity);
if (pipe->do_propagation)
atomic_inc(&pipe->frame_number);
}

/* Handle queued buffers on frame end interrupts */
if (lcm_irqstatus & ISPCCP2_LCM_IRQSTATUS_EOF_IRQ)
ccp2_isr_buffer(ccp2);
Expand Down
20 changes: 3 additions & 17 deletions trunk/drivers/media/video/omap3isp/ispcsi2.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,21 +378,17 @@ static void csi2_timing_config(struct isp_device *isp,
static void csi2_irq_ctx_set(struct isp_device *isp,
struct isp_csi2_device *csi2, int enable)
{
u32 reg = ISPCSI2_CTX_IRQSTATUS_FE_IRQ;
int i;

if (csi2->use_fs_irq)
reg |= ISPCSI2_CTX_IRQSTATUS_FS_IRQ;

for (i = 0; i < 8; i++) {
isp_reg_writel(isp, reg, csi2->regs1,
isp_reg_writel(isp, ISPCSI2_CTX_IRQSTATUS_FE_IRQ, csi2->regs1,
ISPCSI2_CTX_IRQSTATUS(i));
if (enable)
isp_reg_set(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i),
reg);
ISPCSI2_CTX_IRQSTATUS_FE_IRQ);
else
isp_reg_clr(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i),
reg);
ISPCSI2_CTX_IRQSTATUS_FE_IRQ);
}
}

Expand Down Expand Up @@ -690,14 +686,6 @@ static void csi2_isr_ctx(struct isp_csi2_device *csi2,
status = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n));
isp_reg_writel(isp, status, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n));

/* Propagate frame number */
if (status & ISPCSI2_CTX_IRQSTATUS_FS_IRQ) {
struct isp_pipeline *pipe =
to_isp_pipeline(&csi2->subdev.entity);
if (pipe->do_propagation)
atomic_inc(&pipe->frame_number);
}

if (!(status & ISPCSI2_CTX_IRQSTATUS_FE_IRQ))
return;

Expand Down Expand Up @@ -1047,14 +1035,12 @@ static int csi2_set_stream(struct v4l2_subdev *sd, int enable)
{
struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd);
struct isp_device *isp = csi2->isp;
struct isp_pipeline *pipe = to_isp_pipeline(&csi2->subdev.entity);
struct isp_video *video_out = &csi2->video_out;

switch (enable) {
case ISP_PIPELINE_STREAM_CONTINUOUS:
if (omap3isp_csiphy_acquire(csi2->phy) < 0)
return -ENODEV;
csi2->use_fs_irq = pipe->do_propagation;
if (csi2->output & CSI2_OUTPUT_MEMORY)
omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CSI2A_WRITE);
csi2_configure(csi2);
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/media/video/omap3isp/ispcsi2.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ struct isp_csi2_device {
u32 output; /* output to CCDC, memory or both? */
bool dpcm_decompress;
unsigned int frame_skip;
bool use_fs_irq;

struct isp_csiphy *phy;
struct isp_csi2_ctx_cfg contexts[ISP_CSI2_MAX_CTX_NUM + 1];
Expand Down

0 comments on commit a04883e

Please sign in to comment.