media: rkisp1: isp: Pass mbus type and flags to rkisp1_config_cif()
To prepare for the removal of the active_sensor field from the rkisp1_device structure, pass the media bus type of flag to the rkisp1_config_cif() function instead of accessing them through active_sensor. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
c4a1d392ac
commit
055972a0f5
|
@ -136,15 +136,14 @@ static void rkisp1_config_ism(struct rkisp1_device *rkisp1)
|
|||
/*
|
||||
* configure ISP blocks with input format, size......
|
||||
*/
|
||||
static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
|
||||
static int rkisp1_config_isp(struct rkisp1_device *rkisp1,
|
||||
enum v4l2_mbus_type mbus_type, u32 mbus_flags)
|
||||
{
|
||||
u32 isp_ctrl = 0, irq_mask = 0, acq_mult = 0, signal = 0;
|
||||
const struct rkisp1_mbus_info *src_fmt, *sink_fmt;
|
||||
struct rkisp1_sensor_async *sensor;
|
||||
struct v4l2_mbus_framefmt *sink_frm;
|
||||
struct v4l2_rect *sink_crop;
|
||||
|
||||
sensor = rkisp1->active_sensor;
|
||||
sink_fmt = rkisp1->isp.sink_fmt;
|
||||
src_fmt = rkisp1->isp.src_fmt;
|
||||
sink_frm = rkisp1_isp_get_pad_fmt(&rkisp1->isp, NULL,
|
||||
|
@ -157,7 +156,7 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
|
|||
if (sink_fmt->pixel_enc == V4L2_PIXEL_ENC_BAYER) {
|
||||
acq_mult = 1;
|
||||
if (src_fmt->pixel_enc == V4L2_PIXEL_ENC_BAYER) {
|
||||
if (sensor->mbus_type == V4L2_MBUS_BT656)
|
||||
if (mbus_type == V4L2_MBUS_BT656)
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT_ITU656;
|
||||
else
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT;
|
||||
|
@ -165,17 +164,17 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
|
|||
rkisp1_write(rkisp1, RKISP1_CIF_ISP_DEMOSAIC,
|
||||
RKISP1_CIF_ISP_DEMOSAIC_TH(0xc));
|
||||
|
||||
if (sensor->mbus_type == V4L2_MBUS_BT656)
|
||||
if (mbus_type == V4L2_MBUS_BT656)
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU656;
|
||||
else
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU601;
|
||||
}
|
||||
} else if (sink_fmt->pixel_enc == V4L2_PIXEL_ENC_YUV) {
|
||||
acq_mult = 2;
|
||||
if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
|
||||
if (mbus_type == V4L2_MBUS_CSI2_DPHY) {
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
|
||||
} else {
|
||||
if (sensor->mbus_type == V4L2_MBUS_BT656)
|
||||
if (mbus_type == V4L2_MBUS_BT656)
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU656;
|
||||
else
|
||||
isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
|
||||
|
@ -185,17 +184,16 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
|
|||
}
|
||||
|
||||
/* Set up input acquisition properties */
|
||||
if (sensor->mbus_type == V4L2_MBUS_BT656 ||
|
||||
sensor->mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
if (sensor->mbus_flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
|
||||
if (mbus_type == V4L2_MBUS_BT656 || mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
if (mbus_flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
|
||||
signal = RKISP1_CIF_ISP_ACQ_PROP_POS_EDGE;
|
||||
}
|
||||
|
||||
if (sensor->mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
if (sensor->mbus_flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
|
||||
if (mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
if (mbus_flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
|
||||
signal |= RKISP1_CIF_ISP_ACQ_PROP_VSYNC_LOW;
|
||||
|
||||
if (sensor->mbus_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
|
||||
if (mbus_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
|
||||
signal |= RKISP1_CIF_ISP_ACQ_PROP_HSYNC_LOW;
|
||||
}
|
||||
|
||||
|
@ -265,17 +263,17 @@ static int rkisp1_config_dvp(struct rkisp1_device *rkisp1)
|
|||
}
|
||||
|
||||
/* Configure MUX */
|
||||
static int rkisp1_config_path(struct rkisp1_device *rkisp1)
|
||||
static int rkisp1_config_path(struct rkisp1_device *rkisp1,
|
||||
enum v4l2_mbus_type mbus_type)
|
||||
{
|
||||
struct rkisp1_sensor_async *sensor = rkisp1->active_sensor;
|
||||
u32 dpcl = rkisp1_read(rkisp1, RKISP1_CIF_VI_DPCL);
|
||||
int ret = 0;
|
||||
|
||||
if (sensor->mbus_type == V4L2_MBUS_BT656 ||
|
||||
sensor->mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
if (mbus_type == V4L2_MBUS_BT656 ||
|
||||
mbus_type == V4L2_MBUS_PARALLEL) {
|
||||
ret = rkisp1_config_dvp(rkisp1);
|
||||
dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_PARALLEL;
|
||||
} else if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
|
||||
} else if (mbus_type == V4L2_MBUS_CSI2_DPHY) {
|
||||
dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_MIPI;
|
||||
}
|
||||
|
||||
|
@ -285,14 +283,15 @@ static int rkisp1_config_path(struct rkisp1_device *rkisp1)
|
|||
}
|
||||
|
||||
/* Hardware configure Entry */
|
||||
static int rkisp1_config_cif(struct rkisp1_device *rkisp1)
|
||||
static int rkisp1_config_cif(struct rkisp1_device *rkisp1,
|
||||
enum v4l2_mbus_type mbus_type, u32 mbus_flags)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = rkisp1_config_isp(rkisp1);
|
||||
ret = rkisp1_config_isp(rkisp1, mbus_type, mbus_flags);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = rkisp1_config_path(rkisp1);
|
||||
ret = rkisp1_config_path(rkisp1, mbus_type);
|
||||
if (ret)
|
||||
return ret;
|
||||
rkisp1_config_ism(rkisp1);
|
||||
|
@ -777,7 +776,8 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable)
|
|||
|
||||
rkisp1->isp.frame_sequence = -1;
|
||||
mutex_lock(&isp->ops_lock);
|
||||
ret = rkisp1_config_cif(rkisp1);
|
||||
ret = rkisp1_config_cif(rkisp1, rkisp1->active_sensor->mbus_type,
|
||||
rkisp1->active_sensor->mbus_flags);
|
||||
if (ret)
|
||||
goto mutex_unlock;
|
||||
|
||||
|
|
Loading…
Reference in New Issue