From 3be108d22e6a7a19994c0def72c6b0b00d611c7c Mon Sep 17 00:00:00 2001 From: "changhuang.liang" Date: Fri, 1 Jul 2022 15:01:34 +0800 Subject: [PATCH] v4l2: modify pmu interface --- arch/riscv/boot/dts/starfive/jh7110.dtsi | 1 + .../media/platform/starfive/v4l2_driver/stf_vin_hw_ops.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi index 7f07996..72246a7 100755 --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi @@ -813,6 +813,7 @@ "rst_pixel_clk_if1", "rst_pixel_clk_if2", "rst_pixel_clk_if3", "rst_m31dphy_hw", "rst_m31dphy_b09_always_on", "rst_isp_top_n", "rst_isp_top_axi"; + starfive,aon-syscon = <&aon_syscon 0x00>; power-domains = <&pwrc JH7110_PD_ISP>; /* irq nr: vin, isp, isp_csi, isp_scd, isp_csiline */ interrupts = <92 87 88 89 90>; diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_vin_hw_ops.c b/drivers/media/platform/starfive/v4l2_driver/stf_vin_hw_ops.c index 13fa96f..93ee30d 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_vin_hw_ops.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_vin_hw_ops.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include static void vin_intr_clear(void __iomem *sysctrl_base) { @@ -216,8 +216,15 @@ static irqreturn_t stf_vin_isp_irq_csiline_handler(int irq, void *priv) static int stf_vin_top_clk_init(struct stf_vin2_dev *vin_dev) { struct stfcamss *stfcamss = vin_dev->stfcamss; + int ret; - starfive_power_domain_set(POWER_DOMAIN_ISP, 1); + pm_runtime_enable(stfcamss->dev); + ret = pm_runtime_get_sync(stfcamss->dev); + if (ret < 0) { + dev_err(stfcamss->dev, + "vin_clk_init: failed to get pm runtime: %d\n", ret); + return ret; + } if (!__clk_is_enabled(stfcamss->sys_clk[STFCLK_NOC_BUS_CLK_ISP_AXI].clk)) clk_prepare_enable(stfcamss->sys_clk[STFCLK_NOC_BUS_CLK_ISP_AXI].clk); @@ -241,7 +248,8 @@ static int stf_vin_top_clk_deinit(struct stf_vin2_dev *vin_dev) clk_disable_unprepare(stfcamss->sys_clk[STFCLK_ISP_AXI].clk); clk_disable_unprepare(stfcamss->sys_clk[STFCLK_ISPCORE_2X].clk); - starfive_power_domain_set(POWER_DOMAIN_ISP, 0); + pm_runtime_put_sync(stfcamss->dev); + pm_runtime_disable(stfcamss->dev); return 0; } -- 2.7.4