From 0cb0d5f1ec17e9bd7d17cdb3d67156d80845edb8 Mon Sep 17 00:00:00 2001 From: Chen Shunqing Date: Tue, 1 Aug 2023 07:06:02 +0000 Subject: [PATCH] media: rockchip: hdmirx: fix CTS HF2-86 test fail If sample_flat field is set to 1, there can't be any sound. Change-Id: I56ad87d1165fe7d1cc993f9522c4e6d50c253b80 Signed-off-by: Chen Shunqing --- drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c | 6 +++++- drivers/media/platform/rockchip/hdmirx/rk_hdmirx.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c index 29a096af948b..1390989518f1 100644 --- a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c +++ b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c @@ -3172,7 +3172,7 @@ static void hdmirx_delayed_work_audio(struct work_struct *work) struct rk_hdmirx_dev, delayed_work_audio); struct hdmirx_audiostate *as = &hdmirx_dev->audio_state; - u32 fs_audio, ch_audio; + u32 fs_audio, ch_audio, sample_flat; int cur_state, init_state, pre_state, fifo_status2; unsigned long delay = 200; @@ -3237,6 +3237,10 @@ static void hdmirx_delayed_work_audio(struct work_struct *work) } } as->pre_state = cur_state; + + sample_flat = hdmirx_readl(hdmirx_dev, AUDIO_PROC_STATUS1) & AUD_SAMPLE_FLAT; + hdmirx_update_bits(hdmirx_dev, AUDIO_PROC_CONFIG0, I2S_EN, sample_flat ? 0 : I2S_EN); + exit: schedule_delayed_work_on(hdmirx_dev->bound_cpu, &hdmirx_dev->delayed_work_audio, diff --git a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.h b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.h index a1af89eea681..d49f7c4fe266 100644 --- a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.h +++ b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.h @@ -228,6 +228,7 @@ #define AUDIO_PROC_CONFIG3 0x048c #define AUDIO_PROC_STATUS1 0x0490 #define AUD_SAMPLE_PRESENT GENMASK(20, 17) +#define AUD_SAMPLE_FLAT GENMASK(16, 13) #define SCDC_CONFIG 0x0580 #define HPDLOW BIT(1) #define POWERPROVIDED BIT(0)