Re: [PATCH 2/5] media: mtk-vcodec: avoid unneeded pointer-to-long conversions
From: Mauro Carvalho Chehab
Date: Wed Jun 05 2019 - 15:27:41 EST
Em Tue, 4 Jun 2019 18:37:34 +0900
Alexandre Courbot <acourbot@xxxxxxxxxxxx> escreveu:
> The interface used to communicate with the firmware casts pointers
> into unsigned longs and back again in order to store private
> references, all of this for pointers that remain purely in the kernel.
> Replace these unsigned longs with void pointers to make the code a bit
> sturdier and easier to follow.
>
> Also simplify some interfaces by removing arguments that could be
> infered from others.
This generate lots of sparse warnings:
drivers/media/platform/mtk-vcodec/vdec_drv_if.c:64:32: warning: Using plain integer as NULL pointer
drivers/media/platform/mtk-vcodec/vdec_drv_if.c:87:32: warning: Using plain integer as NULL pointer
drivers/media/platform/mtk-vcodec/vdec_drv_if.c:99:32: warning: Using plain integer as NULL pointer
drivers/media/platform/mtk-vcodec/vdec_drv_if.c:108:27: warning: Using plain integer as NULL pointer
drivers/media/platform/mtk-vcodec/venc_drv_if.c:86:32: warning: Using plain integer as NULL pointer
drivers/media/platform/mtk-vcodec/venc_drv_if.c:95:27: warning: Using plain integer as NULL pointer
Please fix and re-submit.
Regards,
Mauro
>
> Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxxxx>
> ---
> drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h | 2 +-
> .../media/platform/mtk-vcodec/vdec/vdec_h264_if.c | 12 ++++++------
> drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_if.c | 12 ++++++------
> drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c | 12 ++++++------
> drivers/media/platform/mtk-vcodec/vdec_drv_base.h | 8 ++++----
> drivers/media/platform/mtk-vcodec/vdec_drv_if.c | 2 +-
> .../media/platform/mtk-vcodec/venc/venc_h264_if.c | 10 +++++-----
> drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c | 10 +++++-----
> drivers/media/platform/mtk-vcodec/venc_drv_base.h | 8 ++++----
> drivers/media/platform/mtk-vcodec/venc_drv_if.c | 2 +-
> 10 files changed, 39 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h
> index d7b43caf7988..4b10996e6532 100644
> --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h
> +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h
> @@ -268,7 +268,7 @@ struct mtk_vcodec_ctx {
>
> const struct vdec_common_if *dec_if;
> const struct venc_common_if *enc_if;
> - unsigned long drv_handle;
> + void *drv_handle;
>
> struct vdec_pic_info picinfo;
> int dpb_size;
> diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c
> index d725ea54b1c1..0c0660d2560b 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c
> +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c
> @@ -262,7 +262,7 @@ static void get_dpb_size(struct vdec_h264_inst *inst, unsigned int *dpb_sz)
> mtk_vcodec_debug(inst, "sz=%d", *dpb_sz);
> }
>
> -static int vdec_h264_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> +static int vdec_h264_init(struct mtk_vcodec_ctx *ctx)
> {
> struct vdec_h264_inst *inst = NULL;
> int err;
> @@ -291,7 +291,7 @@ static int vdec_h264_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
>
> mtk_vcodec_debug(inst, "H264 Instance >> %p", inst);
>
> - *h_vdec = (unsigned long)inst;
> + ctx->drv_handle = inst;
> return 0;
>
> error_deinit:
> @@ -302,7 +302,7 @@ static int vdec_h264_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> return err;
> }
>
> -static void vdec_h264_deinit(unsigned long h_vdec)
> +static void vdec_h264_deinit(void *h_vdec)
> {
> struct vdec_h264_inst *inst = (struct vdec_h264_inst *)h_vdec;
>
> @@ -327,7 +327,7 @@ static int find_start_code(unsigned char *data, unsigned int data_sz)
> return -1;
> }
>
> -static int vdec_h264_decode(unsigned long h_vdec, struct mtk_vcodec_mem *bs,
> +static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
> struct vdec_fb *fb, bool *res_chg)
> {
> struct vdec_h264_inst *inst = (struct vdec_h264_inst *)h_vdec;
> @@ -447,8 +447,8 @@ static void vdec_h264_get_fb(struct vdec_h264_inst *inst,
> list->count--;
> }
>
> -static int vdec_h264_get_param(unsigned long h_vdec,
> - enum vdec_get_param_type type, void *out)
> +static int vdec_h264_get_param(void *h_vdec, enum vdec_get_param_type type,
> + void *out)
> {
> struct vdec_h264_inst *inst = (struct vdec_h264_inst *)h_vdec;
>
> diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_if.c
> index 8de997875b6b..1e3763881e0d 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_if.c
> +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_if.c
> @@ -383,7 +383,7 @@ static void free_working_buf(struct vdec_vp8_inst *inst)
> inst->vsi->dec.working_buf_dma = 0;
> }
>
> -static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> +static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx)
> {
> struct vdec_vp8_inst *inst;
> int err;
> @@ -414,7 +414,7 @@ static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> get_hw_reg_base(inst);
> mtk_vcodec_debug(inst, "VP8 Instance >> %p", inst);
>
> - *h_vdec = (unsigned long)inst;
> + ctx->drv_handle = inst;
> return 0;
>
> error_deinit:
> @@ -424,7 +424,7 @@ static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> return err;
> }
>
> -static int vdec_vp8_decode(unsigned long h_vdec, struct mtk_vcodec_mem *bs,
> +static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
> struct vdec_fb *fb, bool *res_chg)
> {
> struct vdec_vp8_inst *inst = (struct vdec_vp8_inst *)h_vdec;
> @@ -560,8 +560,8 @@ static void get_crop_info(struct vdec_vp8_inst *inst, struct v4l2_rect *cr)
> cr->left, cr->top, cr->width, cr->height);
> }
>
> -static int vdec_vp8_get_param(unsigned long h_vdec,
> - enum vdec_get_param_type type, void *out)
> +static int vdec_vp8_get_param(void *h_vdec, enum vdec_get_param_type type,
> + void *out)
> {
> struct vdec_vp8_inst *inst = (struct vdec_vp8_inst *)h_vdec;
>
> @@ -594,7 +594,7 @@ static int vdec_vp8_get_param(unsigned long h_vdec,
> return 0;
> }
>
> -static void vdec_vp8_deinit(unsigned long h_vdec)
> +static void vdec_vp8_deinit(void *h_vdec)
> {
> struct vdec_vp8_inst *inst = (struct vdec_vp8_inst *)h_vdec;
>
> diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c
> index 02b65298c87e..589b2fc91da2 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c
> +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c
> @@ -751,7 +751,7 @@ static int validate_vsi_array_indexes(struct vdec_vp9_inst *inst,
> return 0;
> }
>
> -static void vdec_vp9_deinit(unsigned long h_vdec)
> +static void vdec_vp9_deinit(void *h_vdec)
> {
> struct vdec_vp9_inst *inst = (struct vdec_vp9_inst *)h_vdec;
> struct mtk_vcodec_mem *mem;
> @@ -773,7 +773,7 @@ static void vdec_vp9_deinit(unsigned long h_vdec)
> vp9_free_inst(inst);
> }
>
> -static int vdec_vp9_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> +static int vdec_vp9_init(struct mtk_vcodec_ctx *ctx)
> {
> struct vdec_vp9_inst *inst;
>
> @@ -797,7 +797,7 @@ static int vdec_vp9_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> inst->vsi = (struct vdec_vp9_vsi *)inst->vpu.vsi;
> init_all_fb_lists(inst);
>
> - (*h_vdec) = (unsigned long)inst;
> + ctx->drv_handle = inst;
> return 0;
>
> err_deinit_inst:
> @@ -806,7 +806,7 @@ static int vdec_vp9_init(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec)
> return -EINVAL;
> }
>
> -static int vdec_vp9_decode(unsigned long h_vdec, struct mtk_vcodec_mem *bs,
> +static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
> struct vdec_fb *fb, bool *res_chg)
> {
> int ret = 0;
> @@ -963,8 +963,8 @@ static void get_crop_info(struct vdec_vp9_inst *inst, struct v4l2_rect *cr)
> cr->left, cr->top, cr->width, cr->height);
> }
>
> -static int vdec_vp9_get_param(unsigned long h_vdec,
> - enum vdec_get_param_type type, void *out)
> +static int vdec_vp9_get_param(void *h_vdec, enum vdec_get_param_type type,
> + void *out)
> {
> struct vdec_vp9_inst *inst = (struct vdec_vp9_inst *)h_vdec;
> int ret = 0;
> diff --git a/drivers/media/platform/mtk-vcodec/vdec_drv_base.h b/drivers/media/platform/mtk-vcodec/vdec_drv_base.h
> index 014712b1312e..4453f7de9f87 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec_drv_base.h
> +++ b/drivers/media/platform/mtk-vcodec/vdec_drv_base.h
> @@ -13,7 +13,7 @@ struct vdec_common_if {
> * @ctx : [in] mtk v4l2 context
> * @h_vdec : [out] driver handle
> */
> - int (*init)(struct mtk_vcodec_ctx *ctx, unsigned long *h_vdec);
> + int (*init)(struct mtk_vcodec_ctx *ctx);
>
> /**
> * (*decode)() - trigger decode
> @@ -22,7 +22,7 @@ struct vdec_common_if {
> * @fb : [in] frame buffer to store decoded frame
> * @res_chg : [out] resolution change happen
> */
> - int (*decode)(unsigned long h_vdec, struct mtk_vcodec_mem *bs,
> + int (*decode)(void *h_vdec, struct mtk_vcodec_mem *bs,
> struct vdec_fb *fb, bool *res_chg);
>
> /**
> @@ -31,14 +31,14 @@ struct vdec_common_if {
> * @type : [in] input parameter type
> * @out : [out] buffer to store query result
> */
> - int (*get_param)(unsigned long h_vdec, enum vdec_get_param_type type,
> + int (*get_param)(void *h_vdec, enum vdec_get_param_type type,
> void *out);
>
> /**
> * (*deinit)() - deinitialize driver.
> * @h_vdec : [in] driver handle to be deinit
> */
> - void (*deinit)(unsigned long h_vdec);
> + void (*deinit)(void *h_vdec);
> };
>
> #endif
> diff --git a/drivers/media/platform/mtk-vcodec/vdec_drv_if.c b/drivers/media/platform/mtk-vcodec/vdec_drv_if.c
> index 6835cb7d090a..5d8d76d55005 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec_drv_if.c
> +++ b/drivers/media/platform/mtk-vcodec/vdec_drv_if.c
> @@ -34,7 +34,7 @@ int vdec_if_init(struct mtk_vcodec_ctx *ctx, unsigned int fourcc)
>
> mtk_vdec_lock(ctx);
> mtk_vcodec_dec_clock_on(&ctx->dev->pm);
> - ret = ctx->dec_if->init(ctx, &ctx->drv_handle);
> + ret = ctx->dec_if->init(ctx);
> mtk_vcodec_dec_clock_off(&ctx->dev->pm);
> mtk_vdec_unlock(ctx);
>
> diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c
> index 0cf08dd7b6e3..bfe61d5dc1cb 100644
> --- a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c
> +++ b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c
> @@ -452,7 +452,7 @@ static void h264_encode_filler(struct venc_h264_inst *inst, void *buf,
> memset(p, 0xff, size);
> }
>
> -static int h264_enc_init(struct mtk_vcodec_ctx *ctx, unsigned long *handle)
> +static int h264_enc_init(struct mtk_vcodec_ctx *ctx)
> {
> int ret = 0;
> struct venc_h264_inst *inst;
> @@ -478,12 +478,12 @@ static int h264_enc_init(struct mtk_vcodec_ctx *ctx, unsigned long *handle)
> if (ret)
> kfree(inst);
> else
> - (*handle) = (unsigned long)inst;
> + ctx->drv_handle = inst;
>
> return ret;
> }
>
> -static int h264_enc_encode(unsigned long handle,
> +static int h264_enc_encode(void *handle,
> enum venc_start_opt opt,
> struct venc_frm_buf *frm_buf,
> struct mtk_vcodec_mem *bs_buf,
> @@ -578,7 +578,7 @@ static int h264_enc_encode(unsigned long handle,
> return ret;
> }
>
> -static int h264_enc_set_param(unsigned long handle,
> +static int h264_enc_set_param(void *handle,
> enum venc_set_param_type type,
> struct venc_enc_param *enc_prm)
> {
> @@ -631,7 +631,7 @@ static int h264_enc_set_param(unsigned long handle,
> return ret;
> }
>
> -static int h264_enc_deinit(unsigned long handle)
> +static int h264_enc_deinit(void *handle)
> {
> int ret = 0;
> struct venc_h264_inst *inst = (struct venc_h264_inst *)handle;
> diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c
> index 3fb9e0c79b4f..af23367cf1dd 100644
> --- a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c
> +++ b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c
> @@ -318,7 +318,7 @@ static int vp8_enc_encode_frame(struct venc_vp8_inst *inst,
> return ret;
> }
>
> -static int vp8_enc_init(struct mtk_vcodec_ctx *ctx, unsigned long *handle)
> +static int vp8_enc_init(struct mtk_vcodec_ctx *ctx)
> {
> int ret = 0;
> struct venc_vp8_inst *inst;
> @@ -344,12 +344,12 @@ static int vp8_enc_init(struct mtk_vcodec_ctx *ctx, unsigned long *handle)
> if (ret)
> kfree(inst);
> else
> - (*handle) = (unsigned long)inst;
> + ctx->drv_handle = inst;
>
> return ret;
> }
>
> -static int vp8_enc_encode(unsigned long handle,
> +static int vp8_enc_encode(void *handle,
> enum venc_start_opt opt,
> struct venc_frm_buf *frm_buf,
> struct mtk_vcodec_mem *bs_buf,
> @@ -386,7 +386,7 @@ static int vp8_enc_encode(unsigned long handle,
> return ret;
> }
>
> -static int vp8_enc_set_param(unsigned long handle,
> +static int vp8_enc_set_param(void *handle,
> enum venc_set_param_type type,
> struct venc_enc_param *enc_prm)
> {
> @@ -437,7 +437,7 @@ static int vp8_enc_set_param(unsigned long handle,
> return ret;
> }
>
> -static int vp8_enc_deinit(unsigned long handle)
> +static int vp8_enc_deinit(void *handle)
> {
> int ret = 0;
> struct venc_vp8_inst *inst = (struct venc_vp8_inst *)handle;
> diff --git a/drivers/media/platform/mtk-vcodec/venc_drv_base.h b/drivers/media/platform/mtk-vcodec/venc_drv_base.h
> index 2de37b47fe73..be368fcb01e6 100644
> --- a/drivers/media/platform/mtk-vcodec/venc_drv_base.h
> +++ b/drivers/media/platform/mtk-vcodec/venc_drv_base.h
> @@ -13,7 +13,7 @@ struct venc_common_if {
> * @ctx: [in] mtk v4l2 context
> * @handle: [out] driver handle
> */
> - int (*init)(struct mtk_vcodec_ctx *ctx, unsigned long *handle);
> + int (*init)(struct mtk_vcodec_ctx *ctx);
>
> /**
> * (*encode)() - trigger encode
> @@ -23,7 +23,7 @@ struct venc_common_if {
> * @bs_buf: [in] bitstream buffer to store output bitstream
> * @result: [out] encode result
> */
> - int (*encode)(unsigned long handle, enum venc_start_opt opt,
> + int (*encode)(void *handle, enum venc_start_opt opt,
> struct venc_frm_buf *frm_buf,
> struct mtk_vcodec_mem *bs_buf,
> struct venc_done_result *result);
> @@ -34,14 +34,14 @@ struct venc_common_if {
> * @type: [in] parameter type
> * @in: [in] buffer to store the parameter
> */
> - int (*set_param)(unsigned long handle, enum venc_set_param_type type,
> + int (*set_param)(void *handle, enum venc_set_param_type type,
> struct venc_enc_param *in);
>
> /**
> * (*deinit)() - deinitialize driver.
> * @handle: [in] driver handle
> */
> - int (*deinit)(unsigned long handle);
> + int (*deinit)(void *handle);
> };
>
> #endif
> diff --git a/drivers/media/platform/mtk-vcodec/venc_drv_if.c b/drivers/media/platform/mtk-vcodec/venc_drv_if.c
> index 25c1e100f5a1..318af1b4b6e7 100644
> --- a/drivers/media/platform/mtk-vcodec/venc_drv_if.c
> +++ b/drivers/media/platform/mtk-vcodec/venc_drv_if.c
> @@ -31,7 +31,7 @@ int venc_if_init(struct mtk_vcodec_ctx *ctx, unsigned int fourcc)
>
> mtk_venc_lock(ctx);
> mtk_vcodec_enc_clock_on(&ctx->dev->pm);
> - ret = ctx->enc_if->init(ctx, (unsigned long *)&ctx->drv_handle);
> + ret = ctx->enc_if->init(ctx);
> mtk_vcodec_enc_clock_off(&ctx->dev->pm);
> mtk_venc_unlock(ctx);
>
Thanks,
Mauro