media: ti-vpe: cal: Fold PPI enable in CAMERARX .s_stream()
To further decouple the context and CAMERARX components, move the call to cal_camerarx_ppi_enable() from cal_start_streaming() to the CAMERARX .s_stream() operation. The DMA destination address has to be set before starting the CAMERARX, which is desirable anyway. cal_camerarx_ppi_disable() will be addressed separately. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Benoit Parrot <bparrot@ti.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
75c80311ed
commit
172ba79daf
@ -256,6 +256,20 @@ static void cal_camerarx_disable_irqs(struct cal_camerarx *phy)
|
||||
cal_write(phy->cal, CAL_CSI2_COMPLEXIO_IRQENABLE(phy->instance), 0);
|
||||
}
|
||||
|
||||
static void cal_camerarx_ppi_enable(struct cal_camerarx *phy)
|
||||
{
|
||||
cal_write(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
CAL_CSI2_PPI_CTRL_FRAME_MASK);
|
||||
cal_write_field(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
1, CAL_CSI2_PPI_CTRL_IF_EN_MASK);
|
||||
}
|
||||
|
||||
void cal_camerarx_ppi_disable(struct cal_camerarx *phy)
|
||||
{
|
||||
cal_write_field(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
0, CAL_CSI2_PPI_CTRL_IF_EN_MASK);
|
||||
}
|
||||
|
||||
static int cal_camerarx_start(struct cal_camerarx *phy)
|
||||
{
|
||||
s64 external_rate;
|
||||
@ -384,6 +398,9 @@ static int cal_camerarx_start(struct cal_camerarx *phy)
|
||||
* implemented.
|
||||
*/
|
||||
|
||||
/* Finally, enable the PHY Protocol Interface (PPI). */
|
||||
cal_camerarx_ppi_enable(phy);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -455,20 +472,6 @@ void cal_camerarx_i913_errata(struct cal_camerarx *phy)
|
||||
camerarx_write(phy, CAL_CSI2_PHY_REG10, reg10);
|
||||
}
|
||||
|
||||
void cal_camerarx_ppi_enable(struct cal_camerarx *phy)
|
||||
{
|
||||
cal_write(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
CAL_CSI2_PPI_CTRL_FRAME_MASK);
|
||||
cal_write_field(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
1, CAL_CSI2_PPI_CTRL_IF_EN_MASK);
|
||||
}
|
||||
|
||||
void cal_camerarx_ppi_disable(struct cal_camerarx *phy)
|
||||
{
|
||||
cal_write_field(phy->cal, CAL_CSI2_PPI_CTRL(phy->instance),
|
||||
0, CAL_CSI2_PPI_CTRL_IF_EN_MASK);
|
||||
}
|
||||
|
||||
static int cal_camerarx_regmap_init(struct cal_dev *cal,
|
||||
struct cal_camerarx *phy)
|
||||
{
|
||||
|
@ -517,15 +517,13 @@ static int cal_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||
cal_ctx_csi2_config(ctx);
|
||||
cal_ctx_pix_proc_config(ctx);
|
||||
cal_ctx_wr_dma_config(ctx);
|
||||
cal_ctx_wr_dma_addr(ctx, addr);
|
||||
cal_ctx_enable_irqs(ctx);
|
||||
|
||||
ret = v4l2_subdev_call(&ctx->phy->subdev, video, s_stream, 1);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
cal_ctx_wr_dma_addr(ctx, addr);
|
||||
cal_camerarx_ppi_enable(ctx->phy);
|
||||
|
||||
if (cal_debug >= 4)
|
||||
cal_quickdump_regs(ctx->cal);
|
||||
|
||||
|
@ -262,7 +262,6 @@ const struct cal_format_info *cal_format_by_code(u32 code);
|
||||
void cal_quickdump_regs(struct cal_dev *cal);
|
||||
|
||||
void cal_camerarx_disable(struct cal_camerarx *phy);
|
||||
void cal_camerarx_ppi_enable(struct cal_camerarx *phy);
|
||||
void cal_camerarx_ppi_disable(struct cal_camerarx *phy);
|
||||
void cal_camerarx_i913_errata(struct cal_camerarx *phy);
|
||||
struct cal_camerarx *cal_camerarx_create(struct cal_dev *cal,
|
||||
|
Loading…
Reference in New Issue
Block a user