diff --git a/arch/arm/boot/dts/rv1126b-evb2-v10-tb-400w-emmc.dts b/arch/arm/boot/dts/rv1126b-evb2-v10-tb-400w-emmc.dts index 105bdd87ad4b..f73405db10a7 100644 --- a/arch/arm/boot/dts/rv1126b-evb2-v10-tb-400w-emmc.dts +++ b/arch/arm/boot/dts/rv1126b-evb2-v10-tb-400w-emmc.dts @@ -74,8 +74,8 @@ &rkisp_thunderboot { /* reg's offset MUST match with RTOS */ /* - * vicap, capture raw10, ceil(w*10/8/256)*256*h *4(buf num) - * e.g. 2688x1520: 0x14c8000 + * vicap, capture raw10, ceil(w*10/8/256)*256*h *4(buf num) + sizeof(rkisp_thunderboot_resmem_head) + * e.g. 2688x1520: 0x14c80000 + 0x9000 */ - reg = <0x41320000 0x14c8000>; + reg = <0x41320000 0x14d1000>; }; diff --git a/arch/arm/boot/dts/rv1126b-thunder-boot.dtsi b/arch/arm/boot/dts/rv1126b-thunder-boot.dtsi index b66d0d5f6d18..c16aa894e0cb 100644 --- a/arch/arm/boot/dts/rv1126b-thunder-boot.dtsi +++ b/arch/arm/boot/dts/rv1126b-thunder-boot.dtsi @@ -19,7 +19,8 @@ <&cru CLK_CORE_ISP>, <&cru ISP0CLK_VICAP>, <&cru ACLK_VICAP>, <&cru HCLK_VICAP>, <&cru DCLK_VICAP>, <&cru ISP0CLK_VICAP>, - <&cru PCLK_CSI2HOST0>, <&cru PCLK_CSI2HOST1>, + <&cru PCLK_CSI2HOST0>, + <&cru DCLK_CSI2HOST0>, <&cru CLK_I2C4>, <&cru PCLK_I2C4>; clock-names = "clk_hpmcu", "pclk_hpmcu_intmux", "pclk_hpmcu_mailbox", @@ -29,7 +30,8 @@ "clk_isp_core", "clk_isp_core_vicap", "aclk_cif","hclk_cif", "dclk_cif", "isp0clk_cif", - "pclk_csi2host0", "pclk_csi2host1", + "pclk_csi2host0", + "dclk_csi2host0", "clk_i2c4", "pclk_i2c4"; }; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 3d5a47bc1bf3..df1b5beced33 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -101,7 +101,7 @@ static const struct mvrr_const_val const_hdmi720p60_6000 = { .vtotal_fixed = 750, }; -/** +/* * @vrefresh_khz: qms-vrr target refresh rate is 59.94Hz * @vtotal_fixed: When switch to target refresh rate, vtotal is 750 * @bit_len: frac_array's bit length diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index b7c25cd59bdb..6402b28d80f3 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -1819,8 +1819,8 @@ static int __maybe_unused rk_iommu_resume(struct device *dev) static const struct dev_pm_ops rk_iommu_pm_ops = { SET_RUNTIME_PM_OPS(rk_iommu_suspend, rk_iommu_resume, NULL) - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, - pm_runtime_force_resume) + LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, + pm_runtime_force_resume) }; static struct rk_iommu_ops iommu_data_ops_v1 = { diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 3c9e996d2386..e5d691085789 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -10120,7 +10120,7 @@ static long rkcif_ioctl_default(struct file *file, void *fh, mutex_unlock(&stream->cifdev->stream_lock); } stream_param->frame_num = dev->stream[0].frame_idx - 1; - if (!dev->is_rtt_suspend) { + if (!dev->is_rtt_suspend && stream_param->resume_mode != -1) { dev->resume_mode = stream_param->resume_mode; v4l2_dbg(3, rkcif_debug, &dev->v4l2_dev, "set resume mode %d\n", dev->resume_mode); diff --git a/drivers/media/platform/rockchip/cif/subdev-itf.c b/drivers/media/platform/rockchip/cif/subdev-itf.c index 88c75c033cdd..cad599f5831e 100644 --- a/drivers/media/platform/rockchip/cif/subdev-itf.c +++ b/drivers/media/platform/rockchip/cif/subdev-itf.c @@ -342,10 +342,15 @@ static void sditf_free_buf(struct sditf_priv *priv) if (priv->hdr_cfg.hdr_mode == HDR_X2) { rkcif_free_rx_buf(&cif_dev->stream[0], cif_dev->stream[0].rx_buf_num); rkcif_free_rx_buf(&cif_dev->stream[1], cif_dev->stream[1].rx_buf_num); + cif_dev->rdbk_rx_buf[RDBK_L] = NULL; + cif_dev->rdbk_rx_buf[RDBK_M] = NULL; } else if (priv->hdr_cfg.hdr_mode == HDR_X3) { rkcif_free_rx_buf(&cif_dev->stream[0], cif_dev->stream[0].rx_buf_num); rkcif_free_rx_buf(&cif_dev->stream[1], cif_dev->stream[1].rx_buf_num); rkcif_free_rx_buf(&cif_dev->stream[2], cif_dev->stream[2].rx_buf_num); + cif_dev->rdbk_rx_buf[RDBK_L] = NULL; + cif_dev->rdbk_rx_buf[RDBK_M] = NULL; + cif_dev->rdbk_rx_buf[RDBK_S] = NULL; } else { rkcif_free_rx_buf(&cif_dev->stream[0], cif_dev->stream[0].rx_buf_num); } diff --git a/include/uapi/linux/rkcif-config.h b/include/uapi/linux/rkcif-config.h index 57c8b536caae..f37179abf92b 100644 --- a/include/uapi/linux/rkcif-config.h +++ b/include/uapi/linux/rkcif-config.h @@ -129,6 +129,12 @@ struct rkcif_csi_info { int dphy_vendor[RKCIF_MAX_CSI_NUM]; }; +/* + * function: to quick start or stop stream + * on(input): to start or stop stream + * frame_num(output): for aiq to record frame number after stop stream + * resume_mode(input): set resume_mode to driver for AOV, set -1 for other case + */ struct rkcif_quick_stream_param { int on; __u32 frame_num; diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c index ce832212b0be..8b42006a71b0 100644 --- a/sound/soc/rockchip/rockchip_i2s_tdm.c +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -3294,6 +3294,11 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev) i2s_tdm->frame_width = 64; i2s_tdm->clk_trcm = TRCM_TXRX; + if (!of_property_read_u32(node, "rockchip,clk-trcm", &val)) { + if (val >= 0 && val <= 2) + i2s_tdm->clk_trcm = val; + dev_warn(i2s_tdm->dev, "Deprecated property 'rockchip,clk-trcm', please use 'rockchip,trcm-sync-tx/rx-only' in DT\n"); + } if (of_property_read_bool(node, "rockchip,trcm-sync-tx-only")) i2s_tdm->clk_trcm = TRCM_TX; if (of_property_read_bool(node, "rockchip,trcm-sync-rx-only")) {