188 lines
7.7 KiB
Diff
188 lines
7.7 KiB
Diff
From 4e08d0b46eeb6d91d96662ea2158de0365930455 Mon Sep 17 00:00:00 2001
|
|
From: "zhiwei.zhang" <zhiwei.zhang@amlogic.com>
|
|
Date: Mon, 17 Aug 2026 02:42:53 +0000
|
|
Subject: [PATCH 3/3] camera: fix imx290 offline mode [1/1]
|
|
|
|
PD#SWPL-268952
|
|
PD#SWPL-283894
|
|
|
|
Problem:
|
|
1. imx290 offline mode fail on csi-b port.
|
|
2. too many log
|
|
|
|
Solution:
|
|
1. yun tnr alloc buffer with up aligned size.
|
|
2. using dev_dbg for debug log.
|
|
|
|
Verify:
|
|
a9
|
|
|
|
Change-Id: I5c991993040c968aba8d230b44310efbe47d2fd7
|
|
Signed-off-by: zhiwei.zhang <zhiwei.zhang@amlogic.com>
|
|
---
|
|
aml_isp5/driver/isp5/c4-isp-cap.c | 6 ------
|
|
aml_isp5/driver/isp5/c4-isp-core.c | 10 +++++-----
|
|
aml_isp5/driver/isp5/c4-isp-dev.c | 20 ++++++++++++--------
|
|
aml_isp5/driver/isp5/hw/c4-isp-hw.c | 8 ++++----
|
|
aml_isp5/driver/isp5/hw/c4-isp-rdma.c | 6 +++---
|
|
5 files changed, 24 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/aml_isp5/driver/isp5/c4-isp-cap.c b/aml_isp5/driver/isp5/c4-isp-cap.c
|
|
index fa3909d7..b520dbee 100644
|
|
--- a/aml_isp5/driver/isp5/c4-isp-cap.c
|
|
+++ b/aml_isp5/driver/isp5/c4-isp-cap.c
|
|
@@ -694,12 +694,6 @@ static int c4_isp_v4l2_ctrl_init(struct c4_isp_capture *cap)
|
|
v4l2_ctrl_new_custom(hdl, &v4l2_ctrl_output_fps, NULL);
|
|
|
|
cap->vdev.ctrl_handler = hdl;
|
|
- rtn = v4l2_ctrl_handler_setup(cap->vdev.ctrl_handler);
|
|
- if (rtn)
|
|
- {
|
|
- dev_err(cap->isp->dev, "Could not sync v4l2 controls\n");
|
|
- return rtn;
|
|
- }
|
|
|
|
if (hdl->error)
|
|
{
|
|
diff --git a/aml_isp5/driver/isp5/c4-isp-core.c b/aml_isp5/driver/isp5/c4-isp-core.c
|
|
index 2946b6fe..077ab2c0 100644
|
|
--- a/aml_isp5/driver/isp5/c4-isp-core.c
|
|
+++ b/aml_isp5/driver/isp5/c4-isp-core.c
|
|
@@ -452,7 +452,7 @@ static int c4_isp_core_yuvtnr_alloc_buffer(struct c4_isp_core *core,
|
|
size_t size;
|
|
int ret;
|
|
|
|
- size = DIV_ROUND_UP(fmt->width, 4) * DIV_ROUND_UP(fmt->height, 4) * 2;
|
|
+ size = ALIGN(DIV_ROUND_UP(fmt->width, 4), C4_ISP_WMIF_STRIDE_ALIGN_BYTES) * DIV_ROUND_UP(fmt->height, 4) * 2;
|
|
core->bnr_mn.offset = 0;
|
|
ret = c4_isp_core_alloc_buffer(core, &core->bnr_mn, size);
|
|
if (ret) {
|
|
@@ -460,17 +460,17 @@ static int c4_isp_core_yuvtnr_alloc_buffer(struct c4_isp_core *core,
|
|
goto err_bnr_ds4_free_buffer;
|
|
}
|
|
|
|
- size = DIV_ROUND_UP(fmt->width, 16) * DIV_ROUND_UP(fmt->height, 4) * C4_ISP_YUV420_PLNAE0_TARGET;
|
|
- size = ALIGN(size, 16);
|
|
+ size = DIV_ROUND_UP(fmt->width, 16) * C4_ISP_YUV420_PLNAE0_TARGET * 10 / 8;
|
|
+ size = ALIGN(size, C4_ISP_WMIF_STRIDE_ALIGN_BYTES) * DIV_ROUND_UP(fmt->height, 4);
|
|
core->yuvnr_body.offset = size;
|
|
- size += DIV_ROUND_UP(fmt->width, 16) * DIV_ROUND_UP(fmt->height, 8) * C4_ISP_YUV420_PLNAE1_TARGET;
|
|
+ size += ALIGN(DIV_ROUND_UP(fmt->width, 16) * C4_ISP_YUV420_PLNAE1_TARGET * 10 / 8, 64) * DIV_ROUND_UP(fmt->height, 8);
|
|
ret = c4_isp_core_alloc_buffer(core, &core->yuvnr_body, size);
|
|
if (ret) {
|
|
dev_err(core->isp->dev, "Failed to alloc yuvnr body buffer: %d\n", ret);
|
|
goto err_yuvnr_body_free_buffer;
|
|
}
|
|
|
|
- size = DIV_ROUND_UP(fmt->width, 8) * DIV_ROUND_UP(fmt->height, 8) * 2;
|
|
+ size = ALIGN(DIV_ROUND_UP(fmt->width, 8), C4_ISP_WMIF_STRIDE_ALIGN_BYTES) * DIV_ROUND_UP(fmt->height, 8) * 2;
|
|
core->yuvnr_alp.offset = 0;
|
|
ret = c4_isp_core_alloc_buffer(core, &core->yuvnr_alp, size);
|
|
if (ret) {
|
|
diff --git a/aml_isp5/driver/isp5/c4-isp-dev.c b/aml_isp5/driver/isp5/c4-isp-dev.c
|
|
index 2c6518c2..a83920ff 100644
|
|
--- a/aml_isp5/driver/isp5/c4-isp-dev.c
|
|
+++ b/aml_isp5/driver/isp5/c4-isp-dev.c
|
|
@@ -440,11 +440,14 @@ static int c4_isp_rdma_alloc_febe_buffs(struct c4_isp_device *isp)
|
|
|
|
isp->febe_rdma_orig = febe_rdma_orig;
|
|
|
|
- dev_info(isp->dev, "Febe_rdma-(orig/base): 0x%llx, 0x%llx\n",
|
|
- isp->febe_rdma_orig->dma_addr, isp->febe_rdma_base.dma_addr);
|
|
- dev_info(isp->dev, "Febe_rdma-(fdn/init/cfg): 0x%llx, 0x%llx, 0x%llx\n",
|
|
- isp->febe_rdma_fdn.dma_addr, isp->febe_rdma_init.dma_addr,
|
|
- isp->febe_rdma_cfg.dma_addr);
|
|
+ dev_dbg(isp->dev, "Febe_rdma-(orig/base): 0x%llx~0x%llx, 0x%llx~0x%llx\n",
|
|
+ isp->febe_rdma_orig->dma_addr, isp->febe_rdma_orig->dma_addr + C4_FEBE_RDMA_BASE_SIZE,
|
|
+ isp->febe_rdma_base.dma_addr, isp->febe_rdma_base.dma_addr + C4_FEBE_RDMA_BASE_SIZE);
|
|
+
|
|
+ dev_dbg(isp->dev, "Febe_rdma-(fdn/init/cfg): 0x%llx~0x%llx, 0x%llx~0x%llx, 0x%llx~0x%llx\n",
|
|
+ isp->febe_rdma_fdn.dma_addr, isp->febe_rdma_fdn.dma_addr + C4_FEBE_RDMA_FDN_SIZE,
|
|
+ isp->febe_rdma_init.dma_addr, isp->febe_rdma_init.dma_addr + C4_FEBE_RDMA_CFG_SIZE,
|
|
+ isp->febe_rdma_cfg.dma_addr, isp->febe_rdma_cfg.dma_addr + C4_FEBE_RDMA_CFG_SIZE);
|
|
|
|
return 0;
|
|
|
|
@@ -500,9 +503,10 @@ static int c4_isp_rdma_alloc_disp_buffs(struct c4_isp_device *isp)
|
|
|
|
isp->disp_rdma_orig = disp_rdma_orig;
|
|
|
|
- dev_info(isp->dev, "Disp_rdma-(orig/base/init): 0x%llx, 0x%llx, 0x%llx\n",
|
|
- isp->disp_rdma_orig->dma_addr, isp->disp_rdma_base.dma_addr,
|
|
- isp->disp_rdma_init.dma_addr);
|
|
+ dev_dbg(isp->dev, "Disp_rdma-(orig/base/init): 0x%llx~0x%llx, 0x%llx~0x%llx, 0x%llx~0x%llx\n",
|
|
+ isp->disp_rdma_orig->dma_addr, isp->disp_rdma_orig->dma_addr + C4_DISP_RDMA_BASE_SIZE,
|
|
+ isp->disp_rdma_base.dma_addr, isp->disp_rdma_base.dma_addr + C4_DISP_RDMA_INIT_SIZE,
|
|
+ isp->disp_rdma_init.dma_addr, isp->disp_rdma_init.dma_addr + C4_DISP_RDMA_INIT_SIZE);
|
|
|
|
return 0;
|
|
|
|
diff --git a/aml_isp5/driver/isp5/hw/c4-isp-hw.c b/aml_isp5/driver/isp5/hw/c4-isp-hw.c
|
|
index e4a4cc58..16d1da25 100644
|
|
--- a/aml_isp5/driver/isp5/hw/c4-isp-hw.c
|
|
+++ b/aml_isp5/driver/isp5/hw/c4-isp-hw.c
|
|
@@ -1006,12 +1006,12 @@ int c4_isp_calc_dyn_core_tile(struct c4_isp_device *isp,
|
|
core_tile->ovbgn[i] = opp_tile->ovbgn[i];
|
|
core_tile->ovend[i] = opp_tile->ovend[i];
|
|
|
|
- dev_info(isp->dev, "Tile dyn idx %u, in: %u-%u-%u-%u, out: %u-%u-%u-%u\n", i,
|
|
+ dev_dbg(isp->dev, "Tile dyn idx %u, in: %u-%u-%u-%u, out: %u-%u-%u-%u\n", i,
|
|
core_tile->ihbgn[i], core_tile->ihend[i], core_tile->ivbgn[i], core_tile->ivend[i],
|
|
core_tile->ohbgn[i], core_tile->ohend[i], core_tile->ovbgn[i], core_tile->ovend[i]);
|
|
}
|
|
|
|
- dev_info(isp->dev, "Tile dyn ovlp: [%u, %u, %u, %u], hnum %u, vnum %u\n",
|
|
+ dev_dbg(isp->dev, "Tile dyn ovlp: [%u, %u, %u, %u], hnum %u, vnum %u\n",
|
|
core_tile->ovlap[0], core_tile->ovlap[1],
|
|
core_tile->ovlap[2], core_tile->ovlap[3],
|
|
core_tile->hnum, core_tile->vnum);
|
|
@@ -1115,12 +1115,12 @@ void c4_isp_calc_avg_core_tile(struct c4_isp_device *isp,
|
|
core_tile->ovend[i] = fmt->height - 1;
|
|
}
|
|
|
|
- dev_info(isp->dev, "Tile calc index %u, in: %u-%u-%u-%u, out: %u-%u-%u-%u\n", i,
|
|
+ dev_dbg(isp->dev, "Tile calc index %u, in: %u-%u-%u-%u, out: %u-%u-%u-%u\n", i,
|
|
core_tile->ihbgn[i], core_tile->ihend[i], core_tile->ivbgn[i], core_tile->ivend[i],
|
|
core_tile->ohbgn[i], core_tile->ohend[i], core_tile->ovbgn[i], core_tile->ovend[i]);
|
|
}
|
|
|
|
- dev_info(isp->dev, "Tile calc overlap: [%u, %u, %u, %u]\n",
|
|
+ dev_dbg(isp->dev, "Tile calc overlap: [%u, %u, %u, %u]\n",
|
|
core_tile->ovlap[0], core_tile->ovlap[1],
|
|
core_tile->ovlap[2], core_tile->ovlap[3]);
|
|
|
|
diff --git a/aml_isp5/driver/isp5/hw/c4-isp-rdma.c b/aml_isp5/driver/isp5/hw/c4-isp-rdma.c
|
|
index 9b0e494c..fba4b593 100644
|
|
--- a/aml_isp5/driver/isp5/hw/c4-isp-rdma.c
|
|
+++ b/aml_isp5/driver/isp5/hw/c4-isp-rdma.c
|
|
@@ -118,7 +118,7 @@ static void c4_isp_rdma_ipp_init(struct c4_isp_device *isp)
|
|
ipp_rdma_info->rdma_init_cnt = 0;
|
|
ipp_rdma_info->rdma_cfg_cnt = 0;
|
|
|
|
- dev_info(isp->dev, "IPP rdma init\n");
|
|
+ dev_dbg(isp->dev, "IPP rdma init\n");
|
|
}
|
|
|
|
static void c4_isp_rdma_febe_init(struct c4_isp_device *isp)
|
|
@@ -140,7 +140,7 @@ static void c4_isp_rdma_febe_init(struct c4_isp_device *isp)
|
|
isp->febe_rdma_init_reg_cnt = 0;
|
|
isp->febe_rdma_cfg_reg_cnt = 0;
|
|
|
|
- dev_info(isp->dev, "FEBE rdma init\n");
|
|
+ dev_dbg(isp->dev, "FEBE rdma init\n");
|
|
}
|
|
|
|
static void c4_isp_rdma_disp_init(struct c4_isp_device *isp)
|
|
@@ -158,7 +158,7 @@ static void c4_isp_rdma_disp_init(struct c4_isp_device *isp)
|
|
|
|
isp->disp_rdma_init_reg_cnt = 0;
|
|
|
|
- dev_info(isp->dev, "DISP rdma init\n");
|
|
+ dev_dbg(isp->dev, "DISP rdma init\n");
|
|
}
|
|
|
|
static void c4_isp_rdma_enable_cfg_opp(struct c4_isp_device *isp)
|
|
--
|
|
2.43.2
|
|
|