mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 12:07:12 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									fa8c75028e
								
							
						
					
					
						commit
						449509dddb
					
				@ -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();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user