From 9a5f8d13069f0f4804265134864086f35140bfbb Mon Sep 17 00:00:00 2001 From: zhengyang Date: Sat, 21 Apr 2012 19:44:03 +0800 Subject: [PATCH] rk30:hdmi: fix a audio channel configuration error. --- drivers/video/rockchip/hdmi/rk30_hdmi_hw.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/hdmi/rk30_hdmi_hw.c b/drivers/video/rockchip/hdmi/rk30_hdmi_hw.c index 6141e03bf5dd..cd29dbc6f30d 100755 --- a/drivers/video/rockchip/hdmi/rk30_hdmi_hw.c +++ b/drivers/video/rockchip/hdmi/rk30_hdmi_hw.c @@ -324,7 +324,16 @@ static void rk30_hdmi_config_aai(void) int rk30_hdmi_config_audio(struct hdmi_audio *audio) { int value, rate, N; - char word_length; + char word_length, channel; + + if(audio->channel < 3) + channel = I2S_CHANNEL_1_2; + else if(audio->channel < 5) + channel = I2S_CHANNEL_3_4; + else if(audio->channel < 7) + channel = I2S_CHANNEL_5_6; + else + channel = I2S_CHANNEL_7_8; switch(audio->rate) { @@ -378,7 +387,7 @@ int rk30_hdmi_config_audio(struct hdmi_audio *audio) //set_audio_if I2S HDMIWrReg(AUDIO_CTRL1, 0x00); //internal CTS, disable down sample, i2s input, disable MCLK HDMIWrReg(AUDIO_CTRL2, 0x40); - HDMIWrReg(I2S_AUDIO_CTRL, v_I2S_MODE(I2S_MODE_STANDARD) | v_I2S_CHANNEL( audio->channel - ((audio->channel%2)? 0 : 1) ) ); + HDMIWrReg(I2S_AUDIO_CTRL, v_I2S_MODE(I2S_MODE_STANDARD) | v_I2S_CHANNEL(channel) ); HDMIWrReg(I2S_INPUT_SWAP, 0x00); //no swap HDMIMskReg(value, AV_CTRL1, m_AUDIO_SAMPLE_RATE, v_AUDIO_SAMPLE_RATE(rate)) HDMIWrReg(SRC_NUM_AUDIO_LEN, word_length); -- 2.34.1