2024-03-06 12:19:25

by Yunfei Dong

[permalink] [raw]
Subject: [PATCH v2] media: mediatek: vcodec: support 36 bits physical address

The physical address on the MT8188 platform is larger than 32 bits,
change the type from unsigned int to dma_addr_t to be able to access
the high bits of the address.

Signed-off-by: Yunfei Dong <[email protected]>
---
compare with v1:
- change address type from unsigned long to dma_addr_t
- change vp8 address type
---
.../media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c | 2 +-
.../mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
index 19407f9bc773..987b3d71b662 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
@@ -449,7 +449,7 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
inst->frm_cnt, y_fb_dma, c_fb_dma, fb);

inst->cur_fb = fb;
- dec->bs_dma = (unsigned long)bs->dma_addr;
+ dec->bs_dma = (uint64_t)bs->dma_addr;
dec->bs_sz = bs->size;
dec->cur_y_fb_dma = y_fb_dma;
dec->cur_c_fb_dma = c_fb_dma;
diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
index cf48d09b78d7..eea709d93820 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
@@ -1074,7 +1074,7 @@ static int vdec_vp9_slice_setup_tile_buffer(struct vdec_vp9_slice_instance *inst
unsigned int mi_row;
unsigned int mi_col;
unsigned int offset;
- unsigned int pa;
+ dma_addr_t pa;
unsigned int size;
struct vdec_vp9_slice_tiles *tiles;
unsigned char *pos;
@@ -1109,7 +1109,7 @@ static int vdec_vp9_slice_setup_tile_buffer(struct vdec_vp9_slice_instance *inst
pos = va + offset;
end = va + bs->size;
/* truncated */
- pa = (unsigned int)bs->dma_addr + offset;
+ pa = bs->dma_addr + offset;
tb = instance->tile.va;
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
--
2.18.0



Subject: Re: [PATCH v2] media: mediatek: vcodec: support 36 bits physical address

Il 06/03/24 13:19, Yunfei Dong ha scritto:
> The physical address on the MT8188 platform is larger than 32 bits,
> change the type from unsigned int to dma_addr_t to be able to access
> the high bits of the address.
>
> Signed-off-by: Yunfei Dong <[email protected]>

Reviewed-by: AngeloGioacchino Del Regno <[email protected]>

> ---
> compare with v1:
> - change address type from unsigned long to dma_addr_t
> - change vp8 address type
> ---
> .../media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c | 2 +-
> .../mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
> index 19407f9bc773..987b3d71b662 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_if.c
> @@ -449,7 +449,7 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
> inst->frm_cnt, y_fb_dma, c_fb_dma, fb);
>
> inst->cur_fb = fb;
> - dec->bs_dma = (unsigned long)bs->dma_addr;
> + dec->bs_dma = (uint64_t)bs->dma_addr;
> dec->bs_sz = bs->size;
> dec->cur_y_fb_dma = y_fb_dma;
> dec->cur_c_fb_dma = c_fb_dma;
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> index cf48d09b78d7..eea709d93820 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> @@ -1074,7 +1074,7 @@ static int vdec_vp9_slice_setup_tile_buffer(struct vdec_vp9_slice_instance *inst
> unsigned int mi_row;
> unsigned int mi_col;
> unsigned int offset;
> - unsigned int pa;
> + dma_addr_t pa;
> unsigned int size;
> struct vdec_vp9_slice_tiles *tiles;
> unsigned char *pos;
> @@ -1109,7 +1109,7 @@ static int vdec_vp9_slice_setup_tile_buffer(struct vdec_vp9_slice_instance *inst
> pos = va + offset;
> end = va + bs->size;
> /* truncated */
> - pa = (unsigned int)bs->dma_addr + offset;
> + pa = bs->dma_addr + offset;
> tb = instance->tile.va;
> for (i = 0; i < rows; i++) {
> for (j = 0; j < cols; j++) {