This adds initial support for VI asics. This includes Iceland, Tonga, and Carrizo. Our inital focus as been Carrizo, so there are still gaps in support for Tonga and Iceland, notably power management. Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Jammy Zhou <Jammy.Zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright 2014 Advanced Micro Devices, Inc.
 | 
						|
 *
 | 
						|
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
						|
 * copy of this software and associated documentation files (the "Software"),
 | 
						|
 * to deal in the Software without restriction, including without limitation
 | 
						|
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
						|
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
						|
 * Software is furnished to do so, subject to the following conditions:
 | 
						|
 *
 | 
						|
 * The above copyright notice and this permission notice shall be included in
 | 
						|
 * all copies or substantial portions of the Software.
 | 
						|
 *
 | 
						|
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
						|
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
 | 
						|
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 | 
						|
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
						|
 * OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
 *
 | 
						|
 */
 | 
						|
#ifndef __CZ_SMC_H__
 | 
						|
#define __CZ_SMC_H__
 | 
						|
 | 
						|
#define MAX_NUM_FIRMWARE                        8
 | 
						|
#define MAX_NUM_SCRATCH                         11
 | 
						|
#define CZ_SCRATCH_SIZE_NONGFX_CLOCKGATING      1024
 | 
						|
#define CZ_SCRATCH_SIZE_NONGFX_GOLDENSETTING    2048
 | 
						|
#define CZ_SCRATCH_SIZE_SDMA_METADATA           1024
 | 
						|
#define CZ_SCRATCH_SIZE_IH                      ((2*256+1)*4)
 | 
						|
 | 
						|
enum cz_scratch_entry {
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_SDMA0 = 0,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_SDMA1,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_CP_CE,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_CP_PFP,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_CP_ME,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT2,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_GMCON_RENG,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_RLC_G,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_RLC_SCRATCH,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_RLC_SRM_ARAM,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_RLC_SRM_DRAM,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_DMCU_ERAM,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_DMCU_IRAM,
 | 
						|
	CZ_SCRATCH_ENTRY_UCODE_ID_POWER_PROFILING,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_SDMA_HALT,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_SYS_CLOCKGATING,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_SDMA_RING_REGS,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_NONGFX_REINIT,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_SDMA_START,
 | 
						|
	CZ_SCRATCH_ENTRY_DATA_ID_IH_REGISTERS,
 | 
						|
	CZ_SCRATCH_ENTRY_SMU8_FUSION_CLKTABLE
 | 
						|
};
 | 
						|
 | 
						|
struct cz_buffer_entry {
 | 
						|
	uint32_t	data_size;
 | 
						|
	uint32_t	mc_addr_low;
 | 
						|
	uint32_t	mc_addr_high;
 | 
						|
	void		*kaddr;
 | 
						|
	enum cz_scratch_entry firmware_ID;
 | 
						|
};
 | 
						|
 | 
						|
struct cz_register_index_data_pair {
 | 
						|
	uint32_t	offset;
 | 
						|
	uint32_t	value;
 | 
						|
};
 | 
						|
 | 
						|
struct cz_ih_meta_data {
 | 
						|
	uint32_t	command;
 | 
						|
	struct cz_register_index_data_pair register_index_value_pair[1];
 | 
						|
};
 | 
						|
 | 
						|
struct cz_smu_private_data {
 | 
						|
	uint8_t		driver_buffer_length;
 | 
						|
	uint8_t		scratch_buffer_length;
 | 
						|
	uint16_t	toc_entry_used_count;
 | 
						|
	uint16_t 	toc_entry_initialize_index;
 | 
						|
	uint16_t	toc_entry_power_profiling_index;
 | 
						|
	uint16_t	toc_entry_aram;
 | 
						|
	uint16_t	toc_entry_ih_register_restore_task_index;
 | 
						|
	uint16_t	toc_entry_clock_table;
 | 
						|
	uint16_t	ih_register_restore_task_size;
 | 
						|
	uint16_t	smu_buffer_used_bytes;
 | 
						|
 | 
						|
	struct cz_buffer_entry  toc_buffer;
 | 
						|
	struct cz_buffer_entry  smu_buffer;
 | 
						|
	struct cz_buffer_entry  driver_buffer[MAX_NUM_FIRMWARE];
 | 
						|
	struct cz_buffer_entry  scratch_buffer[MAX_NUM_SCRATCH];
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |