mfd:rk616 hdmi: add spdif source select

This commit is contained in:
yzq
2013-04-28 18:05:05 +08:00
parent 20b654aab5
commit 1301b2997b
2 changed files with 15 additions and 6 deletions

View File

@@ -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),

View File

@@ -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);