From 87cd5efe036f3b4bbbaf35661ab931bba0d6cc6c Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Tue, 10 Oct 2023 11:17:08 +0800 Subject: [PATCH 1/7] video: rockchip: rga3: add running log for rga_mm Change-Id: I8b5be45051d3908cde229068006f32a214ed83c0 Signed-off-by: Yu Qiaowei --- drivers/video/rockchip/rga3/rga_mm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/video/rockchip/rga3/rga_mm.c b/drivers/video/rockchip/rga3/rga_mm.c index d261833b3ace..80a7bb3396ca 100644 --- a/drivers/video/rockchip/rga3/rga_mm.c +++ b/drivers/video/rockchip/rga3/rga_mm.c @@ -1482,6 +1482,11 @@ static void rga_mm_put_buffer(struct rga_mm *mm, if (rga_mm_sync_dma_sg_for_cpu(internal_buffer, job, dir)) pr_err("sync sgt for cpu error!\n"); + if (DEBUGGER_EN(MM)) { + pr_info("handle[%d] put info:\n", (int)internal_buffer->handle); + rga_mm_dump_buffer(internal_buffer); + } + mutex_lock(&mm->lock); kref_put(&internal_buffer->refcount, rga_mm_kref_release_buffer); mutex_unlock(&mm->lock); @@ -2028,6 +2033,12 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer, kref_get(&internal_buffer->refcount); mutex_unlock(&mm->lock); + + if (DEBUGGER_EN(MM)) { + pr_info("import existing buffer:\n"); + rga_mm_dump_buffer(internal_buffer); + } + return internal_buffer->handle; } From 4d0c0e51b6002818a5d4785147081d778ee77d64 Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Thu, 19 Oct 2023 09:50:14 +0800 Subject: [PATCH 2/7] video: rockchip: rga3: debug log "MSG" supports multi-tasking mode Change-Id: I43346bf1ec7670d2b6b07b58c233b696157ca8ef Signed-off-by: Yu Qiaowei --- drivers/video/rockchip/rga3/rga_drv.c | 5 ----- drivers/video/rockchip/rga3/rga_job.c | 9 ++++++++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/video/rockchip/rga3/rga_drv.c b/drivers/video/rockchip/rga3/rga_drv.c index 226fb773760d..9309989358ca 100644 --- a/drivers/video/rockchip/rga3/rga_drv.c +++ b/drivers/video/rockchip/rga3/rga_drv.c @@ -885,11 +885,6 @@ static long rga_ioctl_blit(unsigned long arg, uint32_t cmd, struct rga_session * /* In the BLIT_SYNC/BLIT_ASYNC command, in_fence_fd needs to be set. */ request->acquire_fence_fd = rga_req->in_fence_fd; - if (DEBUGGER_EN(MSG)) { - pr_info("Blit mode: request id = %d", user_request.id); - rga_cmd_print_debug_info(rga_req); - } - ret = rga_request_submit(request); if (ret < 0) { pr_err("request[%d] submit failed!\n", user_request.id); diff --git a/drivers/video/rockchip/rga3/rga_job.c b/drivers/video/rockchip/rga3/rga_job.c index 647fc2bd643c..0093aa2f7c2f 100644 --- a/drivers/video/rockchip/rga3/rga_job.c +++ b/drivers/video/rockchip/rga3/rga_job.c @@ -820,7 +820,14 @@ int rga_request_commit(struct rga_request *request) struct rga_job *job; for (i = 0; i < request->task_count; i++) { - job = rga_job_commit(&(request->task_list[i]), request); + struct rga_req *req = &(request->task_list[i]); + + if (DEBUGGER_EN(MSG)) { + pr_info("commit request[%d] task[%d]:\n", request->id, i); + rga_cmd_print_debug_info(req); + } + + job = rga_job_commit(req, request); if (IS_ERR(job)) { pr_err("request[%d] task[%d] job_commit failed.\n", request->id, i); rga_request_release_abort(request, PTR_ERR(job)); From fb117a895c2e6c92525828ab2cc96a78590d23db Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Tue, 10 Oct 2023 11:19:40 +0800 Subject: [PATCH 3/7] video: rockchip: rga3: fix multi-process import virtual address error When different processes import buffers, the same virtual address may exist, so current needs to be used for judgment. Change-Id: If522075de57d4e4fb02dbf5dfcaca4f23fb22de9 Signed-off-by: Yu Qiaowei --- drivers/video/rockchip/rga3/rga_mm.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/video/rockchip/rga3/rga_mm.c b/drivers/video/rockchip/rga3/rga_mm.c index 80a7bb3396ca..94b54d45af08 100644 --- a/drivers/video/rockchip/rga3/rga_mm.c +++ b/drivers/video/rockchip/rga3/rga_mm.c @@ -842,7 +842,8 @@ static int rga_mm_handle_remove(int id, void *ptr, void *data) static struct rga_internal_buffer * rga_mm_lookup_external(struct rga_mm *mm_session, - struct rga_external_buffer *external_buffer) + struct rga_external_buffer *external_buffer, + struct mm_struct *current_mm) { int id; struct dma_buf *dma_buf = NULL; @@ -875,8 +876,12 @@ rga_mm_lookup_external(struct rga_mm *mm_session, continue; if (temp_buffer->virt_addr->addr == external_buffer->memory) { - output_buffer = temp_buffer; - break; + if (temp_buffer->current_mm == current_mm) { + output_buffer = temp_buffer; + break; + } + + continue; } } @@ -2028,7 +2033,7 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer, mutex_lock(&mm->lock); /* first, Check whether to rga_mm */ - internal_buffer = rga_mm_lookup_external(mm, external_buffer); + internal_buffer = rga_mm_lookup_external(mm, external_buffer, current->mm); if (!IS_ERR_OR_NULL(internal_buffer)) { kref_get(&internal_buffer->refcount); From f025d7a1608bc9bf06a097bebf7c40d2ea6d7d73 Mon Sep 17 00:00:00 2001 From: Mingwei Yan Date: Tue, 10 Oct 2023 10:27:45 +0800 Subject: [PATCH 4/7] media: rockchip: isp: fix rv1106g3 4k can't cmsk rightmost Signed-off-by: Mingwei Yan Change-Id: If8b6691ea891da869a7a3ce3734d957001a6ae8e --- drivers/media/platform/rockchip/isp/rkisp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 28fcad71b7ab..dedea22b876f 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -1482,7 +1482,7 @@ static void rkisp_config_cmsk_dual(struct rkisp_device *dev, left.win[0].win_en &= ~BIT(i); left.win[1].win_en &= ~BIT(i); left.win[2].win_en &= ~BIT(i); - right.win[i].h_offs = right.win[i].h_offs - w; + right.win[i].h_offs = h_offs - w + RKMOUDLE_UNITE_EXTEND_PIXEL; } else { /* cmsk window at dual isp */ left.win[i].h_size = ALIGN(w - h_offs, 8); From b4cc9257e2caf024a7ccc355778f9c25329a693c Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Thu, 19 Oct 2023 19:33:32 +0800 Subject: [PATCH 5/7] arm64: dts: rockchip: rk3562-amp: use ap core CPU3 rpmsg as default Signed-off-by: Steven Liu Change-Id: If2e244e68b1d74e97d9e19b2d6086abf629e2ab4 --- arch/arm64/boot/dts/rockchip/rk3562-amp.dtsi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3562-amp.dtsi b/arch/arm64/boot/dts/rockchip/rk3562-amp.dtsi index 58c9df9d44e6..0cf505c7ee30 100644 --- a/arch/arm64/boot/dts/rockchip/rk3562-amp.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3562-amp.dtsi @@ -17,7 +17,7 @@ pinctrl-0 = <&uart7m1_xfer>; amp-cpu-aff-maskbits = /bits/ 64 <0x0 0x1 0x1 0x2 0x2 0x4 0x3 0x8>; - amp-irqs = /bits/ 64 ; + amp-irqs = /bits/ 64 ; status = "okay"; }; @@ -57,7 +57,8 @@ mbox-names = "rpmsg-rx", "rpmsg-tx"; mboxes = <&mailbox 0 &mailbox 3>; rockchip,vdev-nums = <1>; - rockchip,link-id = <0x04>; + /* CPU3: link-id 0x03; MCU: link-id 0x04; */ + rockchip,link-id = <0x03>; reg = <0x0 0x7c00000 0x0 0x20000>; memory-region = <&rpmsg_dma_reserved>; From 46ea26ef0deef6bedd432c3a079a3e53c502f24e Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Thu, 19 Oct 2023 15:07:29 +0800 Subject: [PATCH 6/7] ASoC: rockchip: sai: Fix warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [W=1] sound/soc/rockchip/rockchip_sai.c:883:29: warning: ‘tsft_enum’ defined but not used [-Wunused-const-variable=] Change-Id: Ifd7fa236cf8fecc9dd570c9aa5f1a812bc4a64ea Signed-off-by: Sugar Zhang --- sound/soc/rockchip/rockchip_sai.c | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sound/soc/rockchip/rockchip_sai.c b/sound/soc/rockchip/rockchip_sai.c index f415ebbdbbef..c2dce3e27aaf 100644 --- a/sound/soc/rockchip/rockchip_sai.c +++ b/sound/soc/rockchip/rockchip_sai.c @@ -881,39 +881,39 @@ static const char * const tpaths_text[] = { "From PATH0", "From PATH1", "From PATH2", "From PATH3" }; /* TXCR */ -static SOC_ENUM_SINGLE_DECL(tsft_enum, SAI_TXCR, 22, edge_shift_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused tsft_enum, SAI_TXCR, 22, edge_shift_text); static const struct soc_enum tx_lanes_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(tx_lanes_text), tx_lanes_text); -static SOC_ENUM_SINGLE_DECL(tsjm_enum, SAI_TXCR, 19, sjm_text); -static SOC_ENUM_SINGLE_DECL(tfbm_enum, SAI_TXCR, 18, fbm_text); -static SOC_ENUM_SINGLE_DECL(tvdj_enum, SAI_TXCR, 10, vdj_text); -static SOC_ENUM_SINGLE_DECL(tsbw_enum, SAI_TXCR, 5, sbw_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused tsjm_enum, SAI_TXCR, 19, sjm_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused tfbm_enum, SAI_TXCR, 18, fbm_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused tvdj_enum, SAI_TXCR, 10, vdj_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused tsbw_enum, SAI_TXCR, 5, sbw_text); /* FSCR */ -static SOC_ENUM_SINGLE_DECL(edge_enum, SAI_FSCR, 24, edge_text); -static const struct soc_enum fpw_enum = +static SOC_ENUM_SINGLE_DECL(__maybe_unused edge_enum, SAI_FSCR, 24, edge_text); +static const struct soc_enum __maybe_unused fpw_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(fpw_text), fpw_text); -static const struct soc_enum fw_ratio_enum = +static const struct soc_enum __maybe_unused fw_ratio_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(fw_ratio_text), fw_ratio_text); /* RXCR */ -static SOC_ENUM_SINGLE_DECL(rsft_enum, SAI_RXCR, 22, edge_shift_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused rsft_enum, SAI_RXCR, 22, edge_shift_text); static const struct soc_enum rx_lanes_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(rx_lanes_text), rx_lanes_text); -static SOC_ENUM_SINGLE_DECL(rsjm_enum, SAI_RXCR, 19, sjm_text); -static SOC_ENUM_SINGLE_DECL(rfbm_enum, SAI_RXCR, 18, fbm_text); -static SOC_ENUM_SINGLE_DECL(rvdj_enum, SAI_RXCR, 10, vdj_text); -static SOC_ENUM_SINGLE_DECL(rsbw_enum, SAI_RXCR, 5, sbw_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused rsjm_enum, SAI_RXCR, 19, sjm_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused rfbm_enum, SAI_RXCR, 18, fbm_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused rvdj_enum, SAI_RXCR, 10, vdj_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused rsbw_enum, SAI_RXCR, 5, sbw_text); /* MONO_CR */ static SOC_ENUM_SINGLE_DECL(rmono_switch, SAI_MONO_CR, 1, mono_text); static SOC_ENUM_SINGLE_DECL(tmono_switch, SAI_MONO_CR, 0, mono_text); /* CKR */ -static const struct soc_enum mss_switch = +static const struct soc_enum __maybe_unused mss_switch = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(mss_text), mss_text); -static SOC_ENUM_SINGLE_DECL(sp_switch, SAI_CKR, 1, ckp_text); -static SOC_ENUM_SINGLE_DECL(fp_switch, SAI_CKR, 0, ckp_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused sp_switch, SAI_CKR, 1, ckp_text); +static SOC_ENUM_SINGLE_DECL(__maybe_unused fp_switch, SAI_CKR, 0, ckp_text); /* PATH_SEL */ static SOC_ENUM_SINGLE_DECL(lp3_enum, SAI_PATH_SEL, 28, lpx_text); From 657e562238236b025e092455c42ba24cf95b5840 Mon Sep 17 00:00:00 2001 From: Su Yuefu Date: Sat, 14 Oct 2023 17:58:40 +0800 Subject: [PATCH 7/7] media: i2c: os02k10 support normal boot Signed-off-by: Su Yuefu Change-Id: I2caf6c044e2090854bfc217b930bced9ae9c93ae --- drivers/media/i2c/os02k10.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/os02k10.c b/drivers/media/i2c/os02k10.c index 398805307dae..16df5d5972e3 100644 --- a/drivers/media/i2c/os02k10.c +++ b/drivers/media/i2c/os02k10.c @@ -47,7 +47,7 @@ #define OS02K10_XVCLK_FREQ 24000000 -#define CHIP_ID 0x530243 +#define CHIP_ID 0x005302 #define OS02K10_REG_CHIP_ID 0x300a #define OS02K10_REG_CTRL_MODE 0x0100 @@ -2095,11 +2095,11 @@ static int os02k10_probe(struct i2c_client *client, return -EINVAL; } - os02k10->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS); + os02k10->reset_gpio = devm_gpiod_get(dev, "reset", os02k10->is_thunderboot ? GPIOD_ASIS : GPIOD_OUT_LOW); if (IS_ERR(os02k10->reset_gpio)) dev_warn(dev, "Failed to get reset-gpios\n"); - os02k10->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS); + os02k10->pwdn_gpio = devm_gpiod_get(dev, "pwdn", os02k10->is_thunderboot ? GPIOD_ASIS : GPIOD_OUT_LOW); if (IS_ERR(os02k10->pwdn_gpio)) dev_warn(dev, "Failed to get pwdn-gpios\n");