From 48e920d5d77b5df577d0dc8596f3a46108eca3d2 Mon Sep 17 00:00:00 2001 From: Cheng Wang Date: Wed, 7 Aug 2024 05:46:03 +0000 Subject: [PATCH] frc: fix pps adjust abnormal [1/1] PD#SWPL-180857 Problem: fix pps adjust abnormal Solution: fix pps adjust abnormal Verify: T5M Change-Id: Ib563424eeb1c923bbe4887512a3468339446bf19 Signed-off-by: Cheng Wang --- drivers/media/frc/frc_drv.c | 2 ++ drivers/media/frc/frc_drv.h | 5 +++-- drivers/media/frc/frc_proc.c | 12 +++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/media/frc/frc_drv.c b/drivers/media/frc/frc_drv.c index 1bec1f296..020803b6c 100644 --- a/drivers/media/frc/frc_drv.c +++ b/drivers/media/frc/frc_drv.c @@ -1148,6 +1148,8 @@ static void frc_drv_initial(struct frc_dev_s *devp) devp->disable_h_size = FRC_DISABLE_H_SIZE; devp->disable_v_size = FRC_DISABLE_V_SIZE; + devp->in_sts.high_freq_en = 1; //pps ajd default open + if (get_chip_type() == ID_T3X) { devp->in_sts.boot_timestamp_en = 1; devp->vpu_byp_frc_reg_addr = VIU_FRC_MISC; diff --git a/drivers/media/frc/frc_drv.h b/drivers/media/frc/frc_drv.h index cb490e3ac..ebb0d7460 100644 --- a/drivers/media/frc/frc_drv.h +++ b/drivers/media/frc/frc_drv.h @@ -130,13 +130,14 @@ // frc_20240626 frc cursor control debug // frc_20240704 fix frc clk latency err // frc_20240709 frc add crc debug -// frc_2024-0708 frc adaptive n2m in t5m +// frc_20240708 frc adaptive n2m in t5m // frc_20240711 fix secure mode close frc abnormal // frc_20240729 open frc when slt test // frc_20240814 clr CTRL7 before frc enable // frc_20240815 frc handles NULL pointer call +// frc_20240819 t5m dlg modify n2m to 1:1 -#define FRC_FW_VER "2024-0819 t5m dlg modify n2m to 1:1" +#define FRC_FW_VER "2024-0902 fix pps adjust abnormal (need test)" #define FRC_KERDRV_VER 3500 #define FRC_DEVNO 1 diff --git a/drivers/media/frc/frc_proc.c b/drivers/media/frc/frc_proc.c index 572aa0f62..0406018e5 100644 --- a/drivers/media/frc/frc_proc.c +++ b/drivers/media/frc/frc_proc.c @@ -74,6 +74,7 @@ MODULE_PARM_DESC(sec_flag, "frc debug flag"); u32 secure_tee_handle; static int char_flash_check; +static int notify_frc_signal_to_amvideo(int *char_flash_check); void frc_fw_initial(struct frc_dev_s *devp) { @@ -1233,6 +1234,15 @@ void frc_input_vframe_handle(struct frc_dev_s *devp, struct vframe_s *vf, pr_frc(2, "secure chg reopen\n"); } + /* + * bug, close char-flash(pps adjust) when no_input is true + */ + if (devp->frc_sts.state != FRC_STATE_ENABLE && char_flash_check) { + char_flash_check = 0; + devp->in_sts.high_freq_flash = char_flash_check; + notify_frc_signal_to_amvideo(&char_flash_check); + } + if (!no_input && devp->frc_sts.auto_ctrl && devp->clk_state != FRC_CLOCK_NOR && devp->clk_state != FRC_CLOCK_XXX2NOR) { @@ -2420,7 +2430,7 @@ void frc_char_flash_check(void) if (!devp || !devp->probe_ok || !devp->fw_data) return; - if (devp->in_sts.high_freq_en) { + if (!devp->in_sts.high_freq_en) { if (devp->in_sts.high_freq_flash) { char_flash_check = 0; devp->in_sts.high_freq_flash = char_flash_check;