mfd:rk616 hdmi: add spdif source select
authoryzq <yzq@rock-chips.com>
Sun, 28 Apr 2013 10:05:05 +0000 (18:05 +0800)
committeryzq <yzq@rock-chips.com>
Sun, 28 Apr 2013 10:07:03 +0000 (18:07 +0800)
drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.h
drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c

index 7cc85ccce3a0ade62c3d0ce0cead26c9eb492790..9a61738043df0df025d42c99a26212d42e051c8c 100755 (executable)
@@ -9,6 +9,11 @@
 #else
 #define HDMI_SOURCE_DEFAULT HDMI_SOURCE_LCDC0
 #endif
+enum{
+       INPUT_IIS,
+       INPUT_SPDIF
+};
+#define HDMI_CODEC_SOURCE_SELECT INPUT_SPDIF
 
 extern void rk616_hdmi_control_output(int enable);
 extern int rk616_hdmi_register_hdcp_callbacks(void (*hdcp_cb)(void),
index d9df536c66776b9597bc746d1722b4a8b0ae0161..6f6b286ba6561e2c9a113af746fc5f41b0a4b423 100755 (executable)
@@ -353,12 +353,16 @@ static int rk616_hdmi_config_audio(struct hdmi_audio *audio)
                        return -ENOENT;
        }
 
-       //set_audio source I2S
-       HDMIWrReg(AUDIO_CTRL1, 0x00); //internal CTS, disable down sample, i2s input, disable MCLK
-       HDMIWrReg(AUDIO_SAMPLE_RATE, rate);
-       HDMIWrReg(AUDIO_I2S_MODE, v_I2S_MODE(I2S_STANDARD) | v_I2S_CHANNEL(channel) );  
-       HDMIWrReg(AUDIO_I2S_MAP, 0x00); 
-       HDMIWrReg(AUDIO_I2S_SWAPS_SPDIF, 0); // no swap 
+       if(HDMI_CODEC_SOURCE_SELECT == INPUT_IIS){
+               //set_audio source I2S
+               HDMIWrReg(AUDIO_SAMPLE_RATE, rate);
+               HDMIWrReg(AUDIO_I2S_MODE, v_I2S_MODE(I2S_STANDARD) | v_I2S_CHANNEL(channel) );  
+               HDMIWrReg(AUDIO_I2S_MAP, 0x00); 
+               HDMIWrReg(AUDIO_I2S_SWAPS_SPDIF, 0); // no swap 
+       }else{
+               HDMIWrReg(AUDIO_CTRL1, 0x08); //internal CTS, disable down sample, i2s input, disable MCLK
+               HDMIWrReg(AUDIO_I2S_SWAPS_SPDIF, 0); // no swap 
+       }
                
     //Set N value
     HDMIWrReg(AUDIO_N_H, (N >> 16) & 0x0F);