From 49f48fd37edefb4ab911b11d8395ed099d38ab62 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Thu, 12 Oct 2023 17:55:49 +0800 Subject: [PATCH 1/7] media: rockchip: isp: fix image effect for rv1106 4k Change-Id: I122716e3a97fc802c8ca736428a82b0483f88ed9 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/rkisp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 12ed753d8d8b..8e83ff312b49 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -753,6 +753,16 @@ run_next: writel(val, hw->base_addr + ISP3X_DRC_EXPLRATIO); if (hw->unite == ISP_UNITE_TWO) writel(val, hw->base_next_addr + ISP3X_DRC_EXPLRATIO); + val = rkisp_read_reg_cache(dev, ISP3X_YNR_GLOBAL_CTRL); + writel(val, hw->base_addr + ISP3X_YNR_GLOBAL_CTRL); + if (hw->unite == ISP_UNITE_TWO) + writel(val, hw->base_next_addr + ISP3X_YNR_GLOBAL_CTRL); + if (dev->isp_ver == ISP_V21 || dev->isp_ver == ISP_V30) { + val = rkisp_read_reg_cache(dev, ISP3X_CNR_CTRL); + writel(val, hw->base_addr + ISP3X_CNR_CTRL); + if (hw->unite == ISP_UNITE_TWO) + writel(val, hw->base_next_addr + ISP3X_CNR_CTRL); + } } else { /* the frame first running to off mi to save bandwidth */ rkisp_multi_overflow_hdl(dev, false); From b20479e4ad20ed00a4c7ff3cc6100af0c7497514 Mon Sep 17 00:00:00 2001 From: Jianwei Fan Date: Thu, 12 Oct 2023 09:57:26 +0000 Subject: [PATCH 2/7] media: i2c: lt8619c: set default timings when driver probe Change-Id: I6410534620a6485dc903603819119ce1326ec253 Signed-off-by: Jianwei Fan --- drivers/media/i2c/lt8619c.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/media/i2c/lt8619c.c b/drivers/media/i2c/lt8619c.c index 8743797345ba..6255318b799f 100644 --- a/drivers/media/i2c/lt8619c.c +++ b/drivers/media/i2c/lt8619c.c @@ -1727,6 +1727,8 @@ static int lt8619c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct device *dev = &client->dev; + struct v4l2_dv_timings default_timing = + V4L2_DV_BT_CEA_640X480P59_94; struct lt8619c *lt8619c; struct v4l2_subdev *sd; char facing[2]; @@ -1743,6 +1745,7 @@ static int lt8619c_probe(struct i2c_client *client, sd = <8619c->sd; lt8619c->i2c_client = client; + lt8619c->timings = default_timing; lt8619c->cur_mode = &supported_modes[0]; lt8619c->mbus_fmt_code = MEDIA_BUS_FMT_UYVY8_2X8; From 81514e279671a01e34e2a9d9407f5ac99a53b639 Mon Sep 17 00:00:00 2001 From: Lan Honglin Date: Tue, 10 Oct 2023 20:06:31 +0800 Subject: [PATCH 3/7] ARM: dts: rockchip: rv1106-evb-cam: add imx415 Change-Id: I1761b18a6c8065444a11c148ad548127abcdd328 Signed-off-by: Lan Honglin --- arch/arm/boot/dts/rv1106-evb-cam.dtsi | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/arch/arm/boot/dts/rv1106-evb-cam.dtsi b/arch/arm/boot/dts/rv1106-evb-cam.dtsi index 9bc4ef9fae27..30e25864a401 100644 --- a/arch/arm/boot/dts/rv1106-evb-cam.dtsi +++ b/arch/arm/boot/dts/rv1106-evb-cam.dtsi @@ -50,6 +50,11 @@ remote-endpoint = <&sc3338_out>; data-lanes = <1 2>; }; + csi_dphy_input6: endpoint@6 { + reg = <6>; + remote-endpoint = <&imx415_out>; + data-lanes = <1 2 3 4>; + }; }; port@1 { @@ -202,6 +207,28 @@ }; }; }; + + imx415: imx415@1a { + compatible = "sony,imx415"; + status = "okay"; + reg = <0x1a>; + clocks = <&cru MCLK_REF_MIPI0>; + clock-names = "xvclk"; + reset-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_LOW>; + pwdn-gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&mipi_refclk_out0>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + rockchip,camera-module-name = "CMK-OT2022-PX1"; + rockchip,camera-module-lens-name = "IR0147-36IRC-8M-F20"; + port { + imx415_out: endpoint { + remote-endpoint = <&csi_dphy_input6>; + data-lanes = <1 2 3 4>; + }; + }; + }; }; &mipi0_csi2 { From 4bec8d172099940fed332b25dfe91963d03d4363 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Thu, 12 Oct 2023 14:27:28 +0800 Subject: [PATCH 4/7] media: rockchip: vicap add support format of RGB888 with different order Signed-off-by: Zefa Chen Change-Id: I05728f94cadcfaeffd27d72ee78206bd7108d7e9 --- drivers/media/platform/rockchip/cif/capture.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 983d6750bb5e..e45139b21c7a 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -514,6 +514,10 @@ static const struct cif_input_fmt in_fmts[] = { .mbus_code = MEDIA_BUS_FMT_BGR888_1X24, .csi_fmt_val = CSI_WRDDR_TYPE_RGB888, .field = V4L2_FIELD_NONE, + }, { + .mbus_code = MEDIA_BUS_FMT_GBR888_1X24, + .csi_fmt_val = CSI_WRDDR_TYPE_RGB888, + .field = V4L2_FIELD_NONE, }, { .mbus_code = MEDIA_BUS_FMT_RGB565_1X16, .csi_fmt_val = CSI_WRDDR_TYPE_RGB565, @@ -611,6 +615,7 @@ static int rkcif_output_fmt_check(struct rkcif_stream *stream, break; case MEDIA_BUS_FMT_RGB888_1X24: case MEDIA_BUS_FMT_BGR888_1X24: + case MEDIA_BUS_FMT_GBR888_1X24: if (output_fmt->fourcc == V4L2_PIX_FMT_RGB24 || output_fmt->fourcc == V4L2_PIX_FMT_BGR24) ret = 0; @@ -801,6 +806,7 @@ static unsigned char get_data_type(u32 pixelformat, u8 cmd_mode_en, u8 dsi_input return 0x1e; case MEDIA_BUS_FMT_RGB888_1X24: case MEDIA_BUS_FMT_BGR888_1X24: + case MEDIA_BUS_FMT_GBR888_1X24: if (dsi_input) { if (cmd_mode_en) /* dsi command mode*/ return 0x39; @@ -4735,7 +4741,9 @@ static int rkcif_create_dummy_buf(struct rkcif_stream *stream) pad, enum_frame_interval, NULL, &fie); if (!ret) { - if (fie.code == MEDIA_BUS_FMT_RGB888_1X24) + if (fie.code == MEDIA_BUS_FMT_RGB888_1X24 || + fie.code == MEDIA_BUS_FMT_BGR888_1X24 || + fie.code == MEDIA_BUS_FMT_GBR888_1X24) size = fie.width * fie.height * 3; else size = fie.width * fie.height * 2; @@ -4758,7 +4766,9 @@ static int rkcif_create_dummy_buf(struct rkcif_stream *stream) ret = v4l2_subdev_call(dev->terminal_sensor.sd, pad, get_fmt, NULL, &fmt); if (!ret) { - if (fmt.format.code == MEDIA_BUS_FMT_RGB888_1X24) + if (fmt.format.code == MEDIA_BUS_FMT_RGB888_1X24 || + fmt.format.code == MEDIA_BUS_FMT_BGR888_1X24 || + fmt.format.code == MEDIA_BUS_FMT_GBR888_1X24) size = fmt.format.width * fmt.format.height * 3; else size = fmt.format.width * fmt.format.height * 2; From 7a0fb5c1b70dfdb0134d957fb4e773e4aa8462b4 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Mon, 9 Oct 2023 23:25:49 +0800 Subject: [PATCH 5/7] ASoC: rockchip: i2s: Use device_property_* API Compatible for DT and ACPI system. Signed-off-by: Sugar Zhang Change-Id: I8472f725aaa326d9a1aff194c877684195f2d1f0 --- sound/soc/rockchip/rockchip_i2s.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c index 4e27cbd09360..9bc29fdd13c5 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c @@ -938,7 +938,7 @@ static int rockchip_i2s_init_dai(struct rk_i2s_dev *i2s, struct resource *res, i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; i2s->playback_dma_data.maxburst = 8; - if (!of_property_read_u32(node, "rockchip,playback-channels", &val)) { + if (!device_property_read_u32(i2s->dev, "rockchip,playback-channels", &val)) { if (val >= 2 && val <= 8) dai->playback.channels_max = val; } @@ -960,14 +960,14 @@ static int rockchip_i2s_init_dai(struct rk_i2s_dev *i2s, struct resource *res, i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; i2s->capture_dma_data.maxburst = 8; - if (!of_property_read_u32(node, "rockchip,capture-channels", &val)) { + if (!device_property_read_u32(i2s->dev, "rockchip,capture-channels", &val)) { if (val >= 2 && val <= 8) dai->capture.channels_max = val; } } i2s->clk_trcm = I2S_CKR_TRCM_TXRX; - if (!of_property_read_u32(node, "rockchip,clk-trcm", &val)) { + if (!device_property_read_u32(i2s->dev, "rockchip,clk-trcm", &val)) { if (val >= 0 && val <= 2) { i2s->clk_trcm = val << I2S_CKR_TRCM_SHIFT; if (i2s->clk_trcm) @@ -1067,7 +1067,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, i2s); i2s->mclk_calibrate = - of_property_read_bool(node, "rockchip,mclk-calibrate"); + device_property_read_bool(&pdev->dev, "rockchip,mclk-calibrate"); if (i2s->mclk_calibrate) { i2s->mclk_root = devm_clk_get(&pdev->dev, "i2s_clk_root"); if (IS_ERR(i2s->mclk_root)) @@ -1136,7 +1136,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev) goto err_suspend; } - if (of_property_read_bool(node, "rockchip,no-dmaengine")) { + if (device_property_read_bool(&pdev->dev, "rockchip,no-dmaengine")) { dev_info(&pdev->dev, "Used for Multi-DAI\n"); return 0; } From 227f34f48815a2c7c5338751b5db8958a0cbc259 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Fri, 13 Oct 2023 08:59:24 +0800 Subject: [PATCH 6/7] dmaengine: pl330: Fix pos calculation on interleaved dma bytes_requested should use the full buffer size which include ICG(inter-chuck-gap) size. Fixes: 0eba9f8ec037 ("dmaengine: pl330: Add support for interleaved transfer") Signed-off-by: Sugar Zhang Change-Id: Ib0bb5a55abaea306071d96e76d219de942b151b4 --- drivers/dma/pl330.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 0b2b7acf5462..010fbad47dca 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -2924,7 +2924,7 @@ static struct dma_async_tx_descriptor *pl330_prep_interleaved_dma( struct dma_pl330_desc *desc = NULL; struct dma_pl330_chan *pch = to_pchan(chan); dma_addr_t dst = 0, src = 0; - size_t size, src_icg, dst_icg, period_bytes, buffer_bytes; + size_t size, src_icg, dst_icg, period_bytes, buffer_bytes, full_buffer_bytes; size_t nump = 0, numf = 0; if (!xt->numf || !xt->sgl[0].size || xt->frame_size != 1) @@ -2960,17 +2960,19 @@ static struct dma_async_tx_descriptor *pl330_prep_interleaved_dma( desc->rqcfg.dst_inc = 0; src = xt->src_start; dst = pch->fifo_dma; + full_buffer_bytes = (size + src_icg) * numf; } else { desc->rqcfg.src_inc = 0; desc->rqcfg.dst_inc = 1; src = pch->fifo_dma; dst = xt->dst_start; + full_buffer_bytes = (size + dst_icg) * numf; } desc->rqtype = xt->dir; desc->rqcfg.brst_size = pch->burst_sz; desc->rqcfg.brst_len = pch->burst_len; - desc->bytes_requested = buffer_bytes; + desc->bytes_requested = full_buffer_bytes; desc->sgl.size = size; desc->sgl.src_icg = src_icg; desc->sgl.dst_icg = dst_icg; From 28b543390dbd2ddd56f189d59525a383bed2e77d Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Fri, 13 Oct 2023 09:29:48 +0800 Subject: [PATCH 7/7] arm64: configs: rockchip_linux: Update by savedefconfig Signed-off-by: Sugar Zhang Change-Id: Id9d91c28028de621bd404c166e1bf3ea2be60fe9 --- arch/arm64/configs/rockchip_linux_defconfig | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index 0f9a0c62fc3c..da5af4b275b2 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -499,12 +499,6 @@ CONFIG_DMABUF_HEAPS_PAGE_POOL=y CONFIG_DMABUF_HEAPS_SYSTEM=y CONFIG_DMABUF_HEAPS_CMA=y CONFIG_STAGING=y -CONFIG_FIQ_DEBUGGER=y -CONFIG_FIQ_DEBUGGER_NO_SLEEP=y -CONFIG_FIQ_DEBUGGER_CONSOLE=y -CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y -CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y -CONFIG_RK_CONSOLE_THREAD=y CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y CONFIG_COMMON_CLK_PWM=y @@ -538,6 +532,12 @@ CONFIG_ROCKCHIP_SYSTEM_MONITOR=y CONFIG_ROCKCHIP_VENDOR_STORAGE=y CONFIG_ROCKCHIP_MMC_VENDOR_STORAGE=y CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_FIQ_DEBUGGER=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y +CONFIG_RK_CONSOLE_THREAD=y CONFIG_ROCKCHIP_DEBUG=y CONFIG_PM_DEVFREQ=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y