From e4e51d9b4a38cbbcf3f755c6f2f04dadb962cab0 Mon Sep 17 00:00:00 2001 From: ChuanHu Sun Date: Thu, 5 Sep 2024 16:16:56 +0800 Subject: [PATCH] media: i2c: cam-tb-setup: add more cmdline parameters for dual camera Signed-off-by: ChuanHu Sun Change-Id: Ic6026d0587e684a089f47dfef5b13c073954f399 --- drivers/media/i2c/cam-tb-setup.c | 140 ++++-------------- drivers/media/i2c/cam-tb-setup.h | 42 +++--- drivers/media/platform/rockchip/cif/capture.c | 2 +- 3 files changed, 48 insertions(+), 136 deletions(-) diff --git a/drivers/media/i2c/cam-tb-setup.c b/drivers/media/i2c/cam-tb-setup.c index c33b954708a3..56b2553ebc98 100644 --- a/drivers/media/i2c/cam-tb-setup.c +++ b/drivers/media/i2c/cam-tb-setup.c @@ -6,116 +6,36 @@ #include #include "cam-tb-setup.h" -static u32 rk_cam_w; -static u32 rk_cam_h; -static u32 rk_cam_hdr; -static u32 rk_cam_fps; -static u32 rk_cam_skip_frame_interval; -static int __init rk_cam_w_setup(char *str) -{ - int ret = 0; - unsigned long val = 0; +#define DEFINE_CAM_TB_PARAM(para) \ +static u32 para; \ +static int __init para##_setup(char *str) \ +{ \ + int ret = 0; \ + unsigned long val = 0; \ + ret = kstrtoul(str, 0, &val); \ + if (!ret) \ + para = (u32)val; \ + else \ + pr_err("get "#para" fail\n"); \ + return 0; \ +} \ +u32 get_##para(void) \ +{ \ + return para; \ +} \ +EXPORT_SYMBOL(get_##para); \ +__setup(#para"=", para##_setup) - ret = kstrtoul(str, 0, &val); - if (!ret) - rk_cam_w = (u32)val; - else - pr_err("get rk_cam_w fail\n"); +DEFINE_CAM_TB_PARAM(rk_cam_w); +DEFINE_CAM_TB_PARAM(rk_cam_h); +DEFINE_CAM_TB_PARAM(rk_cam_hdr); +DEFINE_CAM_TB_PARAM(rk_cam_fps); +DEFINE_CAM_TB_PARAM(rk_cam1_max_fps); +DEFINE_CAM_TB_PARAM(rk_cam2_w); +DEFINE_CAM_TB_PARAM(rk_cam2_h); +DEFINE_CAM_TB_PARAM(rk_cam2_hdr); +DEFINE_CAM_TB_PARAM(rk_cam2_fps); +DEFINE_CAM_TB_PARAM(rk_cam2_max_fps); +DEFINE_CAM_TB_PARAM(rk_cam_skip); - return 0; -} - -u32 get_rk_cam_w(void) -{ - return rk_cam_w; -} -EXPORT_SYMBOL(get_rk_cam_w); - -static int __init rk_cam_h_setup(char *str) -{ - int ret = 0; - unsigned long val = 0; - - ret = kstrtoul(str, 0, &val); - if (!ret) - rk_cam_h = (u32)val; - else - pr_err("get rk_cam_h fail\n"); - - return 0; -} - -u32 get_rk_cam_h(void) -{ - return rk_cam_h; -} -EXPORT_SYMBOL(get_rk_cam_h); - -static int __init rk_cam_hdr_setup(char *str) -{ - int ret = 0; - unsigned long val = 0; - - ret = kstrtoul(str, 0, &val); - if (!ret) - rk_cam_hdr = (u32)val; - else - pr_err("get rk_cam_hdr fail\n"); - - return 0; -} - -u32 get_rk_cam_hdr(void) -{ - return rk_cam_hdr; -} -EXPORT_SYMBOL(get_rk_cam_hdr); - -static int __init __maybe_unused rk_cam_fps_setup(char *str) -{ - int ret = 0; - unsigned long val = 0; - - ret = kstrtoul(str, 0, &val); - if (!ret) - rk_cam_fps = (u32)val; - else - pr_err("get rk_cam_fps fail\n"); - - return 0; -} - -u32 get_rk_cam_fps(void) -{ - return rk_cam_fps; -} -EXPORT_SYMBOL(get_rk_cam_fps); - -static int __init __maybe_unused rk_cam_skip_frame_interval_setup(char *str) -{ - int ret = 0; - unsigned long val = 0; - - ret = kstrtoul(str, 0, &val); - if (!ret) { - rk_cam_skip_frame_interval = (u32)val; - } else { - rk_cam_skip_frame_interval = 0; - pr_err("get rk_cam_skip_frame_interval fail\n"); - } - - return 0; -} - -u32 get_rk_cam_skip_frame_interval(void) -{ - return rk_cam_skip_frame_interval; -} -EXPORT_SYMBOL(get_rk_cam_skip_frame_interval); - -__setup("rk_cam_w=", rk_cam_w_setup); -__setup("rk_cam_h=", rk_cam_h_setup); -__setup("rk_cam_hdr=", rk_cam_hdr_setup); -__setup("rk_cam_fps=", rk_cam_fps_setup); -__setup("rk_cam_skip=", rk_cam_skip_frame_interval_setup); diff --git a/drivers/media/i2c/cam-tb-setup.h b/drivers/media/i2c/cam-tb-setup.h index b0f39795b1c3..b9a62301e57b 100644 --- a/drivers/media/i2c/cam-tb-setup.h +++ b/drivers/media/i2c/cam-tb-setup.h @@ -3,36 +3,28 @@ #ifndef CAM_TB_SETUP_H #define CAM_TB_SETUP_H - #include #ifdef CONFIG_VIDEO_ROCKCHIP_THUNDER_BOOT_SETUP -u32 get_rk_cam_w(void); -u32 get_rk_cam_h(void); -u32 get_rk_cam_hdr(void); -u32 get_rk_cam_fps(void); -u32 get_rk_cam_skip_frame_interval(void); +#define EXTERN_CAM_TB_PARAM(para) u32 get_##para(void) #else -static inline u32 get_rk_cam_w(void) -{ - return 0; -} -static inline u32 get_rk_cam_h(void) -{ - return 0; -} -static inline u32 get_rk_cam_hdr(void) -{ - return 0; -} -static inline u32 get_rk_cam_fps(void) -{ - return 0; -} -static inline u32 get_rk_cam_skip_frame_interval(void) -{ - return 0; +#define EXTERN_CAM_TB_PARAM(para) \ +static inline u32 get_##para(void) \ +{ \ + return 0; \ } #endif +EXTERN_CAM_TB_PARAM(rk_cam_w); +EXTERN_CAM_TB_PARAM(rk_cam_h); +EXTERN_CAM_TB_PARAM(rk_cam_hdr); +EXTERN_CAM_TB_PARAM(rk_cam_fps); +EXTERN_CAM_TB_PARAM(rk_cam1_max_fps); +EXTERN_CAM_TB_PARAM(rk_cam2_w); +EXTERN_CAM_TB_PARAM(rk_cam2_h); +EXTERN_CAM_TB_PARAM(rk_cam2_hdr); +EXTERN_CAM_TB_PARAM(rk_cam2_fps); +EXTERN_CAM_TB_PARAM(rk_cam2_max_fps); +EXTERN_CAM_TB_PARAM(rk_cam_skip); + #endif diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 1bbf0a98968d..52ee5fef3f31 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -8288,7 +8288,7 @@ void rkcif_stream_init(struct rkcif_device *dev, u32 id) init_completion(&stream->stop_complete); init_completion(&stream->start_complete); stream->is_wait_stop_complete = false; - stream->thunderboot_skip_interval = get_rk_cam_skip_frame_interval(); + stream->thunderboot_skip_interval = get_rk_cam_skip(); atomic_set(&stream->sub_stream_buf_cnt, 0); spin_lock_init(&stream->fence_lock); rkcif_fence_context_init(&stream->fence_ctx);