From 9eacb0f92f34bbefe9553088dc4eda9383319834 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Mon, 3 Jun 2024 15:13:22 +0800 Subject: [PATCH 1/3] media: rockchip: isp: fix ldcv irq handle Change-Id: Iabada025762c66e6881472420e1351f5da2510ea Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/capture_v39.c | 8 +++++++- drivers/media/platform/rockchip/isp/regs_v3x.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/capture_v39.c b/drivers/media/platform/rockchip/isp/capture_v39.c index 442ccd28039d..1ed0b0a11ac7 100644 --- a/drivers/media/platform/rockchip/isp/capture_v39.c +++ b/drivers/media/platform/rockchip/isp/capture_v39.c @@ -1814,7 +1814,13 @@ end: void rkisp_stream_ldc_end_v39(struct rkisp_device *dev) { struct rkisp_stream *stream = &dev->cap_dev.stream[RKISP_STREAM_LDC]; + u32 val = rkisp_read(dev, ISP39_LDCV_CTRL, true); + /* ldcv_irq: ldcv enable is frame end other frame input */ + if (val & ISP39_LDCV_MAP_ERROR) { + v4l2_err(&dev->v4l2_dev, "ldcv map data error\n"); + return; + } if (stream->stopping) { if (!dev->hw_dev->is_single) { stream->stopping = false; @@ -1826,7 +1832,7 @@ void rkisp_stream_ldc_end_v39(struct rkisp_device *dev) stream->streaming = false; wake_up(&stream->done); } - } else { + } else if (stream->streaming) { mi_frame_end(stream, FRAME_IRQ); } rkisp_check_idle(dev, ISP_FRAME_LDC); diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h index 31f023918c2f..3ad0ae284b7c 100644 --- a/drivers/media/platform/rockchip/isp/regs_v3x.h +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -2533,6 +2533,8 @@ #define ISP39_LDCV_UV_SWAP BIT(4) #define ISP39_LDCV_LUT_MODE(x) ((x & 0x3) << 24) #define ISP39_LDCV_FORCE_UPD BIT(26) +#define ISP39_LDCV_MAP_ERROR BIT(28) +#define ISP39_LDCV_WORKING BIT(30) #define ISP39_LDCV_EN_SHD BIT(31) /* mi interrupt */ From a66d9bdbbe8d8589db8e666b6fdf8dfe5f5e70bd Mon Sep 17 00:00:00 2001 From: Elaine Zhang Date: Wed, 5 Jun 2024 14:51:46 +0800 Subject: [PATCH 2/3] clk: rockchip: rk3576: export pclk_hdptx_apb For edp and hdmi phy low power mode. Signed-off-by: Elaine Zhang Change-Id: I288be0ffbf50a7ed78614d4813c5d4f8508d7405 --- drivers/clk/rockchip/clk-rk3576.c | 2 ++ include/dt-bindings/clock/rockchip,rk3576-cru.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/clk/rockchip/clk-rk3576.c b/drivers/clk/rockchip/clk-rk3576.c index abbbab4df754..cfc52555ce8f 100644 --- a/drivers/clk/rockchip/clk-rk3576.c +++ b/drivers/clk/rockchip/clk-rk3576.c @@ -1594,6 +1594,8 @@ static struct rockchip_clk_branch rk3576_clk_branches[] __initdata = { RK3576_PMU_CLKGATE_CON(4), 2, GFLAGS), GATE(PCLK_PMUPHY_ROOT, "pclk_pmuphy_root", "pclk_pmu1_root", CLK_IS_CRITICAL, RK3576_PMU_CLKGATE_CON(5), 0, GFLAGS), + GATE(PCLK_HDPTX_APB, "pclk_hdptx_apb", "pclk_pmuphy_root", 0, + RK3576_PMU_CLKGATE_CON(0), 1, GFLAGS), GATE(PCLK_MIPI_DCPHY, "pclk_mipi_dcphy", "pclk_pmuphy_root", 0, RK3576_PMU_CLKGATE_CON(0), 2, GFLAGS), GATE(PCLK_CSIDPHY, "pclk_csidphy", "pclk_pmuphy_root", 0, diff --git a/include/dt-bindings/clock/rockchip,rk3576-cru.h b/include/dt-bindings/clock/rockchip,rk3576-cru.h index 4d262a77aa1f..19d25f082dc5 100644 --- a/include/dt-bindings/clock/rockchip,rk3576-cru.h +++ b/include/dt-bindings/clock/rockchip,rk3576-cru.h @@ -557,6 +557,7 @@ #define CLK_AUDIO_FRAC_1_SRC 555 #define CLK_AUDIO_FRAC_2_SRC 556 #define CLK_AUDIO_FRAC_3_SRC 557 +#define PCLK_HDPTX_APB 558 /* secure clk */ #define CLK_STIMER0_ROOT 600 From f5432bfa9da048aba80d4c3654ce4d2ef7e67060 Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Tue, 11 Jun 2024 15:17:16 +0800 Subject: [PATCH 3/3] arm64: dts: rockchip: rk3576: fix apb clk to PCLK_HDPTX_APB for hdmi The parent clock of PCLK_HDPTX_APB is PCLK_PMUPHY_ROOT, which must be always on. In order to reduce power consumption, replace apb clock PCLK_PMUPHY_ROOT by controllable PCLK_HDPTX_APB in suspend and plug out. Change-Id: I856fa05382ea50a7541195d49941c113bbe3986a Signed-off-by: Algea Cao --- arch/arm64/boot/dts/rockchip/rk3576.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi index 5e906fa3b980..10fbfbeb5639 100644 --- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi @@ -5199,7 +5199,7 @@ hdptxphy_hdmi: hdmiphy@2b000000 { compatible = "rockchip,rk3576-hdptx-phy-hdmi", "rockchip,rk3588-hdptx-phy-hdmi"; reg = <0x0 0x2b000000 0x0 0x2000>; - clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_PMUPHY_ROOT>; + clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_HDPTX_APB>; clock-names = "ref", "apb"; clock-output-names = "clk_hdmiphy_pixel0"; #clock-cells = <0>;