intel_audio_dump: add support for Valleyview

This patch adds support for dumping audio registers of Valleyview,
by reusing Ironlake code with a different base address and pipe number.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Reviewed-by: Haihao Xiang <haihao.xiang@intel.com>
This commit is contained in:
Mengdong Lin 2014-03-03 17:03:02 -05:00 committed by Xiang, Haihao
parent fa8c75028e
commit 449509dddb

View File

@ -1748,7 +1748,7 @@ static void dump_aud_hdmi_status(void)
}
/*
* IronLake display registers
* Display registers of Ironlake and Valleyview
*/
#undef DP_CTL_B
#undef DP_CTL_C
@ -1758,10 +1758,15 @@ static void dump_aud_hdmi_status(void)
#define DP_CTL_C 0x4200
#define DP_CTL_D 0x4300
/* ILK HDMI port ctrl */
#define HDMI_CTL_B 0x1140
#define HDMI_CTL_C 0x1150
#define HDMI_CTL_D 0x1160
/* VLV HDMI port ctrl */
#define SDVO_HDMI_CTL_B 0x1140
#define SDVO_HDMI_CTL_C 0x1160
static void dump_dp_port_ctrl(int port)
{
uint32_t dword;
@ -1787,9 +1792,14 @@ static void dump_hdmi_port_ctrl(int port)
int port_ctrl;
char prefix[MAX_PREFIX_SIZE];
sprintf(prefix, "HDMI%c", 'B' + port - PORT_B);
if (IS_VALLEYVIEW(devid)) {
sprintf(prefix, "SDVO/HDMI%c", 'B' + port - PORT_B);
port_ctrl = disp_reg_base + SDVO_HDMI_CTL_B + (port - PORT_B) * 0x20;
} else {
sprintf(prefix, "HDMI%c ", 'B' + port - PORT_B);
port_ctrl = disp_reg_base + HDMI_CTL_B + (port - PORT_B) * 0x10;
}
port_ctrl = disp_reg_base + HDMI_CTL_B + (port - PORT_B) * 0x10;
dword = INREG(port_ctrl);
printf("%s HDMI_Enable\t\t\t\t\t%u\n", prefix, !!(dword & SDVO_ENABLE));
printf("%s Transcoder_Select\t\t\t\t%s\n", prefix, BIT(dword, 30) ? "Transcoder B" : "Transcoder A");
@ -1807,14 +1817,24 @@ static void dump_ironlake(void)
{
uint32_t dword;
set_reg_base(0xe0000, 0x2000);
if (!IS_VALLEYVIEW(devid))
set_reg_base(0xe0000, 0x2000); /* ironlake */
else
set_reg_base(0x60000 + VLV_DISPLAY_BASE, 0x2000);
if (!IS_VALLEYVIEW(devid)) {
dump_disp_reg(HDMI_CTL_B, "sDVO/HDMI Port B Control");
dump_disp_reg(HDMI_CTL_C, "HDMI Port C Control");
dump_disp_reg(HDMI_CTL_D, "HDMI Port D Control");
} else {
dump_disp_reg(SDVO_HDMI_CTL_B, "sDVO/HDMI Port B Control");
dump_disp_reg(SDVO_HDMI_CTL_C, "sDVO/HDMI Port C Control");
}
dump_disp_reg(HDMI_CTL_B, "sDVO/HDMI Port B Control");
dump_disp_reg(HDMI_CTL_C, "HDMI Port C Control");
dump_disp_reg(HDMI_CTL_D, "HDMI Port D Control");
dump_disp_reg(DP_CTL_B, "DisplayPort B Control Register");
dump_disp_reg(DP_CTL_C, "DisplayPort C Control Register");
dump_disp_reg(DP_CTL_D, "DisplayPort D Control Register");
if (!IS_VALLEYVIEW(devid))
dump_disp_reg(DP_CTL_D, "DisplayPort D Control Register");
dump_aud_reg(AUD_CONFIG_A, "Audio Configuration - Transcoder A");
dump_aud_reg(AUD_CONFIG_B, "Audio Configuration - Transcoder B");
@ -1849,11 +1869,13 @@ static void dump_ironlake(void)
dump_hdmi_port_ctrl(PORT_B);
dump_hdmi_port_ctrl(PORT_C);
dump_hdmi_port_ctrl(PORT_D);
if (!IS_VALLEYVIEW(devid))
dump_hdmi_port_ctrl(PORT_D);
dump_dp_port_ctrl(PORT_B);
dump_dp_port_ctrl(PORT_C);
dump_dp_port_ctrl(PORT_D);
if (!IS_VALLEYVIEW(devid))
dump_dp_port_ctrl(PORT_D);
dump_aud_config(PIPE_A);
dump_aud_config(PIPE_B);
@ -2250,7 +2272,10 @@ int main(int argc, char **argv)
else
intel_get_mmio(pci_dev);
if (IS_BROADWELL(devid) || IS_HASWELL(devid)) {
if (IS_VALLEYVIEW(devid)) {
printf("Valleyview audio registers:\n\n");
dump_ironlake();
} else if (IS_BROADWELL(devid) || IS_HASWELL(devid)) {
printf("%s audio registers:\n\n",
IS_BROADWELL(devid) ? "Broadwell" : "Haswell");
dump_hsw_plus();