hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/media/platform/rockchip/cif/dev.c
....@@ -644,12 +644,16 @@
644644 }
645645 }
646646 if (index < CIF_REG_INDEX_MAX) {
647
- if (index == CIF_REG_DVP_CTRL || reg->offset != 0x0)
647
+ if (index == CIF_REG_DVP_CTRL || reg->offset != 0x0) {
648648 write_cif_reg(base, reg->offset + csi_offset, val);
649
- else
649
+ v4l2_dbg(4, rkcif_debug, &dev->v4l2_dev,
650
+ "write reg[0x%x]:0x%x!!!\n",
651
+ reg->offset + csi_offset, val);
652
+ } else {
650653 v4l2_dbg(1, rkcif_debug, &dev->v4l2_dev,
651654 "write reg[%d]:0x%x failed, maybe useless!!!\n",
652655 index, val);
656
+ }
653657 }
654658 }
655659
....@@ -681,6 +685,9 @@
681685 reg_val = read_cif_reg(base, reg->offset + csi_offset);
682686 reg_val |= val;
683687 write_cif_reg(base, reg->offset + csi_offset, reg_val);
688
+ v4l2_dbg(4, rkcif_debug, &dev->v4l2_dev,
689
+ "write or reg[0x%x]:0x%x!!!\n",
690
+ reg->offset + csi_offset, val);
684691 } else {
685692 v4l2_dbg(1, rkcif_debug, &dev->v4l2_dev,
686693 "write reg[%d]:0x%x with OR failed, maybe useless!!!\n",
....@@ -717,6 +724,9 @@
717724 reg_val = read_cif_reg(base, reg->offset + csi_offset);
718725 reg_val &= val;
719726 write_cif_reg(base, reg->offset + csi_offset, reg_val);
727
+ v4l2_dbg(4, rkcif_debug, &dev->v4l2_dev,
728
+ "write and reg[0x%x]:0x%x!!!\n",
729
+ reg->offset + csi_offset, val);
720730 } else {
721731 v4l2_dbg(1, rkcif_debug, &dev->v4l2_dev,
722732 "write reg[%d]:0x%x with OR failed, maybe useless!!!\n",
....@@ -1561,16 +1571,6 @@
15611571
15621572 if (!completion_done(&dev->cmpl_ntf))
15631573 complete(&dev->cmpl_ntf);
1564
- if (dev->active_sensor &&
1565
- (dev->active_sensor->mbus.type == V4L2_MBUS_CSI2_DPHY ||
1566
- dev->active_sensor->mbus.type == V4L2_MBUS_CSI2_CPHY)) {
1567
- ret = v4l2_subdev_call(dev->active_sensor->sd,
1568
- core, ioctl,
1569
- RKCIF_CMD_SET_CSI_IDX,
1570
- &dev->csi_host_idx);
1571
- if (ret)
1572
- v4l2_err(&dev->v4l2_dev, "set csi idx %d fail\n", dev->csi_host_idx);
1573
- }
15741574 v4l2_info(&dev->v4l2_dev, "Async subdev notifier completed\n");
15751575
15761576 return ret;
....@@ -1940,6 +1940,7 @@
19401940 cif_dev->early_line = 0;
19411941 cif_dev->is_thunderboot = false;
19421942 cif_dev->rdbk_debug = 0;
1943
+ memset(&cif_dev->channels[0].capture_info, 0, sizeof(cif_dev->channels[0].capture_info));
19431944 if (cif_dev->chip_id == CHIP_RV1126_CIF_LITE)
19441945 cif_dev->isr_hdl = rkcif_irq_lite_handler;
19451946
....@@ -1997,6 +1998,17 @@
19971998 cif_dev->csi_host_idx = of_alias_get_id(node, "rkcif_mipi_lvds");
19981999 if (cif_dev->csi_host_idx < 0 || cif_dev->csi_host_idx > 5)
19992000 cif_dev->csi_host_idx = 0;
2001
+ if (cif_dev->hw_dev->is_rk3588s2) {
2002
+ if (cif_dev->csi_host_idx == 0)
2003
+ cif_dev->csi_host_idx = 2;
2004
+ else if (cif_dev->csi_host_idx == 2)
2005
+ cif_dev->csi_host_idx = 4;
2006
+ else if (cif_dev->csi_host_idx == 3)
2007
+ cif_dev->csi_host_idx = 5;
2008
+ v4l2_info(&cif_dev->v4l2_dev, "rk3588s2 attach to mipi%d\n",
2009
+ cif_dev->csi_host_idx);
2010
+ }
2011
+ cif_dev->csi_host_idx_def = cif_dev->csi_host_idx;
20002012 cif_dev->media_dev.dev = dev;
20012013 v4l2_dev = &cif_dev->v4l2_dev;
20022014 v4l2_dev->mdev = &cif_dev->media_dev;
....@@ -2159,7 +2171,9 @@
21592171 if (sysfs_create_group(&pdev->dev.kobj, &dev_attr_grp))
21602172 return -ENODEV;
21612173
2162
- rkcif_attach_hw(cif_dev);
2174
+ ret = rkcif_attach_hw(cif_dev);
2175
+ if (ret)
2176
+ return ret;
21632177
21642178 rkcif_parse_dts(cif_dev);
21652179