media: i2c: rk628: fix CTS HF2-86 test fail

If sample_flat field is set to 1, there can't be any sound.

Type: Function
Redmine ID: N/A
Associated modifications: N/A
Test: CTS test HF2-86

Change-Id: I8f2ddfa3c5a7578a28c062817c10de2ea43ad164
Signed-off-by: Chen Shunqing <csq@rock-chips.com>
This commit is contained in:
Chen Shunqing
2024-01-19 06:10:31 +00:00
parent 76acb9e640
commit 04406cbc20
3 changed files with 12 additions and 2 deletions

View File

@@ -65,7 +65,7 @@ static const struct regmap_range rk628_hdmirx_readable_ranges[] = {
regmap_reg_range(HDMI_RX_AUD_PLL_CTRL, HDMI_RX_AUD_PLL_CTRL),
regmap_reg_range(HDMI_RX_AUD_CLK_CTRL, HDMI_RX_AUD_CLK_CTRL),
regmap_reg_range(HDMI_RX_AUD_FIFO_CTRL, HDMI_RX_AUD_FIFO_TH),
regmap_reg_range(HDMI_RX_AUD_CHEXTR_CTRL, HDMI_RX_AUD_PAO_CTRL),
regmap_reg_range(HDMI_RX_AUD_CHEXTR_CTRL, HDMI_RX_AUD_SPARE),
regmap_reg_range(HDMI_RX_AUD_FIFO_STS, HDMI_RX_AUD_FIFO_STS),
regmap_reg_range(HDMI_RX_AUDPLL_GEN_CTS, HDMI_RX_AUDPLL_GEN_N),
regmap_reg_range(HDMI_RX_I2CM_PHYG3_DATAI, HDMI_RX_I2CM_PHYG3_DATAI),

View File

@@ -368,7 +368,7 @@ static void rk628_csi_delayed_work_audio_v2(struct work_struct *work)
delayed_work_audio);
struct rk628_audiostate *audio_state = &aif->audio_state;
struct rk628 *rk628 = aif->rk628;
u32 fs_audio;
u32 fs_audio, sample_flat;
int init_state, pre_state, fifo_status, fifo_ints;
unsigned long delay = 500;
@@ -423,6 +423,14 @@ static void rk628_csi_delayed_work_audio_v2(struct work_struct *work)
}
}
audio_state->pre_state = fifo_status;
rk628_i2c_read(rk628, HDMI_RX_AUD_SPARE, &sample_flat);
sample_flat = sample_flat & AUDS_MAS_SAMPLE_FLAT;
if (!sample_flat)
rk628_i2c_update_bits(rk628, GRF_SYSTEM_CON0, SW_I2S_DATA_OEN_MASK, SW_I2S_DATA_OEN(0));
else
rk628_i2c_update_bits(rk628, GRF_SYSTEM_CON0, SW_I2S_DATA_OEN_MASK, SW_I2S_DATA_OEN(1));
exit:
schedule_delayed_work(&aif->delayed_work_audio, msecs_to_jiffies(delay));
}

View File

@@ -190,6 +190,8 @@
#define I2S_32_16(x) UPDATE(x, 0, 0)
#define HDMI_RX_AUD_PAO_CTRL (HDMI_RX_BASE + 0x0264)
#define PAO_RATE(x) UPDATE(x, 17, 16)
#define HDMI_RX_AUD_SPARE (HDMI_RX_BASE + 0x0268)
#define AUDS_MAS_SAMPLE_FLAT GENMASK(7, 4)
#define HDMI_RX_AUD_FIFO_STS (HDMI_RX_BASE + 0x027c)
#define HDMI_RX_AUDPLL_GEN_CTS (HDMI_RX_BASE + 0x0280)
#define HDMI_RX_AUDPLL_GEN_N (HDMI_RX_BASE + 0x0284)