hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/platform/rockchip/cif/hw.c
....@@ -23,7 +23,6 @@
2323 #include <media/videobuf2-dma-sg.h>
2424 #include <media/v4l2-fwnode.h>
2525 #include <linux/iommu.h>
26
-#include <dt-bindings/soc/rockchip-system-status.h>
2726 #include <soc/rockchip/rockchip-system-status.h>
2827 #include <linux/io.h>
2928 #include <linux/mfd/syscon.h>
....@@ -699,6 +698,10 @@
699698 [CIF_REG_MIPI_EFFECT_CODE_ID1] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID1),
700699 [CIF_REG_MIPI_EFFECT_CODE_ID2] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID2),
701700 [CIF_REG_MIPI_EFFECT_CODE_ID3] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID3),
701
+ [CIF_REG_MIPI_FRAME_SIZE_ID0] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID0),
702
+ [CIF_REG_MIPI_FRAME_SIZE_ID1] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID1),
703
+ [CIF_REG_MIPI_FRAME_SIZE_ID2] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID2),
704
+ [CIF_REG_MIPI_FRAME_SIZE_ID3] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID3),
702705 [CIF_REG_MIPI_ON_PAD] = CIF_REG(CSI_MIPI0_ON_PAD),
703706
704707 [CIF_REG_GLB_CTRL] = CIF_REG(GLB_CTRL),
....@@ -823,6 +826,10 @@
823826 [CIF_REG_MIPI_EFFECT_CODE_ID1] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID1),
824827 [CIF_REG_MIPI_EFFECT_CODE_ID2] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID2),
825828 [CIF_REG_MIPI_EFFECT_CODE_ID3] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID3),
829
+ [CIF_REG_MIPI_FRAME_SIZE_ID0] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID0),
830
+ [CIF_REG_MIPI_FRAME_SIZE_ID1] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID1),
831
+ [CIF_REG_MIPI_FRAME_SIZE_ID2] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID2),
832
+ [CIF_REG_MIPI_FRAME_SIZE_ID3] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID3),
826833 [CIF_REG_MIPI_ON_PAD] = CIF_REG(CSI_MIPI0_ON_PAD),
827834 [CIF_REG_LVDS_ID0_CTRL0] = CIF_REG(CIF_LVDS0_ID0_CTRL0),
828835 [CIF_REG_LVDS_ID1_CTRL0] = CIF_REG(CIF_LVDS0_ID1_CTRL0),
....@@ -942,6 +949,10 @@
942949 [CIF_REG_MIPI_EFFECT_CODE_ID1] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID1),
943950 [CIF_REG_MIPI_EFFECT_CODE_ID2] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID2),
944951 [CIF_REG_MIPI_EFFECT_CODE_ID3] = CIF_REG(CSI_MIPI0_EFFECT_CODE_ID3),
952
+ [CIF_REG_MIPI_FRAME_SIZE_ID0] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID0),
953
+ [CIF_REG_MIPI_FRAME_SIZE_ID1] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID1),
954
+ [CIF_REG_MIPI_FRAME_SIZE_ID2] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID2),
955
+ [CIF_REG_MIPI_FRAME_SIZE_ID3] = CIF_REG(CSI_MIPI0_FRAME_SIZE_ID3),
945956 [CIF_REG_MIPI_ON_PAD] = CIF_REG(CSI_MIPI0_ON_PAD),
946957
947958 [CIF_REG_GLB_CTRL] = CIF_REG(GLB_CTRL),
....@@ -1538,7 +1549,38 @@
15381549 return 0;
15391550 }
15401551
1552
+static int __maybe_unused rkcif_sleep_suspend(struct device *dev)
1553
+{
1554
+ struct rkcif_hw *cif_hw = dev_get_drvdata(dev);
1555
+
1556
+ if (atomic_read(&cif_hw->power_cnt) == 0)
1557
+ return 0;
1558
+
1559
+ rkcif_disable_sys_clk(cif_hw);
1560
+
1561
+ return pinctrl_pm_select_sleep_state(dev);
1562
+}
1563
+
1564
+static int __maybe_unused rkcif_sleep_resume(struct device *dev)
1565
+{
1566
+ struct rkcif_hw *cif_hw = dev_get_drvdata(dev);
1567
+ int ret;
1568
+
1569
+ if (atomic_read(&cif_hw->power_cnt) == 0)
1570
+ return 0;
1571
+
1572
+ ret = pinctrl_pm_select_default_state(dev);
1573
+ if (ret < 0)
1574
+ return ret;
1575
+ rkcif_enable_sys_clk(cif_hw);
1576
+ rkcif_hw_soft_reset(cif_hw, true);
1577
+
1578
+ return 0;
1579
+}
1580
+
15411581 static const struct dev_pm_ops rkcif_plat_pm_ops = {
1582
+ SET_LATE_SYSTEM_SLEEP_PM_OPS(rkcif_sleep_suspend,
1583
+ rkcif_sleep_resume)
15421584 SET_RUNTIME_PM_OPS(rkcif_runtime_suspend, rkcif_runtime_resume, NULL)
15431585 };
15441586