media: rockchip: vicap support config complete frame of toisp

Change-Id: I1bea6eb816acbd382f11650e7e736b6a0a65132c
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
This commit is contained in:
Zefa Chen
2025-07-08 09:09:42 +08:00
parent 9a86c24f4d
commit e66c0f380b
3 changed files with 24 additions and 9 deletions

View File

@@ -4763,9 +4763,9 @@ static int rkcif_csi_channel_set_v1(struct rkcif_stream *stream,
return 0;
}
val = rkcif_read_register(dev, CIF_REG_GLB_CTRL);
if (stream->sw_dbg_en) {
rkcif_write_register_and(dev, CIF_REG_GLB_CTRL,
~(u32)BIT(16));
val &= ~BIT(16);
v4l2_subdev_call(dev->active_sensor->sd,
core, ioctl,
RKCIF_CMD_SET_PPI_DATA_DEBUG,
@@ -4776,18 +4776,23 @@ static int rkcif_csi_channel_set_v1(struct rkcif_stream *stream,
RKCIF_CMD_SET_PPI_DATA_DEBUG,
&stream->sw_dbg_en);
}
if (dev->chip_id == CHIP_RK3588_CIF ||
dev->chip_id == CHIP_RV1106_CIF ||
dev->chip_id == CHIP_RK3562_CIF) {
val = GLB_RESET_IDI_EN_RK3588;
val |= GLB_RESET_IDI_EN_RK3588;
} else if (dev->chip_id == CHIP_RK3576_CIF) {
val = GLB_RESET_IDI_EN_RK3576;
val |= GLB_RESET_IDI_EN_RK3576;
val |= rkcif_get_split_dphy_mask_rk3576(dev);
} else if (dev->chip_id == CHIP_RV1103B_CIF) {
val = rkcif_get_split_dphy_mask_rv1103b(dev);
val |= rkcif_get_split_dphy_mask_rv1103b(dev);
}
rkcif_write_register_or(dev, CIF_REG_GLB_CTRL, val);
if (dev->chip_id == CHIP_RV1103B_CIF) {
if (rkcif_frm_toisp_protect)
val &= ~BIT(28);
else
val |= BIT(28);
}
rkcif_write_register(dev, CIF_REG_GLB_CTRL, val);
if (dev->terminal_sensor.hdmi_input_en) {
if (dev->chip_id == CHIP_RK3562_CIF ||
@@ -5075,8 +5080,13 @@ static int rkcif_csi_channel_set_rv1126b(struct rkcif_stream *stream,
CSI_DISABLE_CAPTURE);
return 0;
}
val = rkcif_get_split_mask_rv1126b(dev);
rkcif_write_register_or(dev, CIF_REG_GLB_CTRL, val);
val = rkcif_read_register(dev, CIF_REG_GLB_CTRL);
val |= rkcif_get_split_mask_rv1126b(dev);
if (rkcif_frm_toisp_protect)
val &= ~BIT(28);
else
val |= BIT(28);
rkcif_write_register(dev, CIF_REG_GLB_CTRL, val);
rkcif_write_register_and(dev, CIF_REG_MIPI_LVDS_INTSTAT,
~(CSI_START_INTSTAT(channel->id) |
CSI_DMA_END_INTSTAT(channel->id) |

View File

@@ -36,6 +36,10 @@ int rkcif_debug;
module_param_named(debug, rkcif_debug, int, 0644);
MODULE_PARM_DESC(debug, "Debug level (0-1)");
bool rkcif_frm_toisp_protect = true;
module_param_named(toisp_protect, rkcif_frm_toisp_protect, bool, 0644);
MODULE_PARM_DESC(toisp_protect, "frame protect of toisp");
static char rkcif_version[RKCIF_VERNO_LEN];
module_param_string(version, rkcif_version, RKCIF_VERNO_LEN, 0444);
MODULE_PARM_DESC(version, "version number");

View File

@@ -232,6 +232,7 @@ struct rkcif_tools_buffer {
};
extern int rkcif_debug;
extern bool rkcif_frm_toisp_protect;
/*
* struct rkcif_sensor_info - Sensor infomations