hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/platform/rockchip/isp1/rkisp1.c
....@@ -155,10 +155,15 @@
155155 return -ENODEV;
156156
157157 sensor = sd_to_sensor(dev, sensor_sd);
158
- ret = v4l2_subdev_call(sensor->sd, video, g_mbus_config,
159
- &sensor->mbus);
158
+ if (!sensor)
159
+ return -ENODEV;
160
+
161
+ ret = v4l2_subdev_call(sensor->sd, pad, get_mbus_config,
162
+ 0, &sensor->mbus);
160163 if (ret && ret != -ENOIOCTLCMD)
161164 return ret;
165
+
166
+ sensor->fmt.pad = 0;
162167 sensor->fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
163168 ret = v4l2_subdev_call(sensor->sd, pad, get_fmt,
164169 &sensor->cfg, &sensor->fmt);
....@@ -327,7 +332,8 @@
327332 acq_prop = CIF_ISP_ACQ_PROP_DMA_RGB;
328333 } else if (in_fmt->fmt_type == FMT_YUV) {
329334 acq_mult = 2;
330
- if (sensor && sensor->mbus.type == V4L2_MBUS_CSI2) {
335
+ if (sensor && (sensor->mbus.type == V4L2_MBUS_CSI2_DPHY ||
336
+ sensor->mbus.type == V4L2_MBUS_CCP2)) {
331337 isp_ctrl = CIF_ISP_CTRL_ISP_MODE_ITU601;
332338 } else {
333339 if (sensor && sensor->mbus.type == V4L2_MBUS_BT656)
....@@ -595,7 +601,7 @@
595601 ret = rkisp1_config_dvp(dev);
596602 dpcl |= CIF_VI_DPCL_IF_SEL_PARALLEL;
597603 dev->isp_inp = INP_DVP;
598
- } else if (sensor && sensor->mbus.type == V4L2_MBUS_CSI2) {
604
+ } else if (sensor && sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
599605 ret = rkisp1_config_mipi(dev);
600606 dpcl |= CIF_VI_DPCL_IF_SEL_MIPI;
601607 dev->isp_inp = INP_CSI;
....@@ -822,7 +828,7 @@
822828 dev->stream[RKISP1_STREAM_MP].streaming);
823829
824830 /* Activate MIPI */
825
- if (sensor && sensor->mbus.type == V4L2_MBUS_CSI2) {
831
+ if (sensor && sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
826832 #if RKISP1_RK3326_USE_OLDMIPI
827833 if (dev->isp_ver == ISP_V13) {
828834 #else
....@@ -1250,6 +1256,8 @@
12501256 const struct ispsd_in_fmt *in_fmt;
12511257
12521258 in_fmt = find_in_fmt(mf->code);
1259
+ if (!in_fmt)
1260
+ goto err;
12531261 isp_sd->in_fmt = *in_fmt;
12541262 isp_sd->in_frm = *mf;
12551263 } else if (fmt->pad == RKISP1_ISP_PAD_SOURCE_PATH) {
....@@ -1257,6 +1265,8 @@
12571265
12581266 /* Ignore width/height */
12591267 out_fmt = find_out_fmt(mf->code);
1268
+ if (!out_fmt)
1269
+ goto err;
12601270 isp_sd->out_fmt = *out_fmt;
12611271 /*
12621272 * It is quantization for output,
....@@ -1476,7 +1486,7 @@
14761486 }
14771487 } else {
14781488 rkisp1_config_clk(isp_dev, on);
1479
- ret = pm_runtime_put(isp_dev->dev);
1489
+ ret = pm_runtime_put_sync(isp_dev->dev);
14801490 if (ret < 0)
14811491 return ret;
14821492 }
....@@ -1763,7 +1773,7 @@
17631773 if (isp_mis & CIF_ISP_V_START) {
17641774 if (dev->stream[RKISP1_STREAM_SP].interlaced) {
17651775 /* 0 = ODD 1 = EVEN */
1766
- if (dev->active_sensor->mbus.type == V4L2_MBUS_CSI2) {
1776
+ if (dev->active_sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
17671777 void __iomem *addr = NULL;
17681778
17691779 if (dev->isp_ver == ISP_V10 ||