@ -139,6 +139,13 @@ MODULE_FIRMWARE("amdgpu/polaris10_mec.bin");
MODULE_FIRMWARE ( " amdgpu/polaris10_mec2.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris10_rlc.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_ce.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_pfp.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_me.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_mec.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_mec2.bin " ) ;
MODULE_FIRMWARE ( " amdgpu/polaris12_rlc.bin " ) ;
static const struct amdgpu_gds_reg_offset amdgpu_gds_reg_offset [ ] =
{
{ mmGDS_VMID0_BASE , mmGDS_VMID0_SIZE , mmGDS_GWS_VMID0 , mmGDS_OA_VMID0 } ,
@ -689,6 +696,7 @@ static void gfx_v8_0_init_golden_registers(struct amdgpu_device *adev)
( const u32 ) ARRAY_SIZE ( tonga_golden_common_all ) ) ;
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
amdgpu_program_register_sequence ( adev ,
golden_settings_polaris11_a11 ,
( const u32 ) ARRAY_SIZE ( golden_settings_polaris11_a11 ) ) ;
@ -903,6 +911,9 @@ static int gfx_v8_0_init_microcode(struct amdgpu_device *adev)
case CHIP_POLARIS10 :
chip_name = " polaris10 " ;
break ;
case CHIP_POLARIS12 :
chip_name = " polaris12 " ;
break ;
case CHIP_STONEY :
chip_name = " stoney " ;
break ;
@ -1768,6 +1779,7 @@ static int gfx_v8_0_gpu_early_init(struct amdgpu_device *adev)
gb_addr_config = TONGA_GB_ADDR_CONFIG_GOLDEN ;
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
ret = amdgpu_atombios_get_gfx_info ( adev ) ;
if ( ret )
return ret ;
@ -2682,6 +2694,7 @@ static void gfx_v8_0_tiling_mode_table_init(struct amdgpu_device *adev)
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
modearray [ 0 ] = ( ARRAY_MODE ( ARRAY_2D_TILED_THIN1 ) |
PIPE_CONFIG ( ADDR_SURF_P4_16x16 ) |
TILE_SPLIT ( ADDR_SURF_TILE_SPLIT_64B ) |
@ -3503,6 +3516,7 @@ gfx_v8_0_raster_config(struct amdgpu_device *adev, u32 *rconf, u32 *rconf1)
* rconf1 | = 0x0 ;
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
* rconf | = RB_MAP_PKR0 ( 2 ) | RB_XSEL2 ( 1 ) | SE_MAP ( 2 ) |
SE_XSEL ( 1 ) | SE_YSEL ( 1 ) ;
* rconf1 | = 0x0 ;
@ -4021,7 +4035,8 @@ static void gfx_v8_0_init_pg(struct amdgpu_device *adev)
cz_enable_cp_power_gating ( adev , true ) ;
else
cz_enable_cp_power_gating ( adev , false ) ;
} else if ( adev - > asic_type = = CHIP_POLARIS11 ) {
} else if ( ( adev - > asic_type = = CHIP_POLARIS11 ) | |
( adev - > asic_type = = CHIP_POLARIS12 ) ) {
gfx_v8_0_init_csb ( adev ) ;
gfx_v8_0_init_save_restore_list ( adev ) ;
gfx_v8_0_enable_save_restore_machine ( adev ) ;
@ -4095,7 +4110,8 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev)
RLC_CGCG_CGLS_CTRL__CGLS_EN_MASK ) ;
WREG32 ( mmRLC_CGCG_CGLS_CTRL , tmp ) ;
if ( adev - > asic_type = = CHIP_POLARIS11 | |
adev - > asic_type = = CHIP_POLARIS10 ) {
adev - > asic_type = = CHIP_POLARIS10 | |
adev - > asic_type = = CHIP_POLARIS12 ) {
tmp = RREG32 ( mmRLC_CGCG_CGLS_CTRL_3D ) ;
tmp & = ~ 0x3 ;
WREG32 ( mmRLC_CGCG_CGLS_CTRL_3D , tmp ) ;
@ -4283,6 +4299,7 @@ static int gfx_v8_0_cp_gfx_start(struct amdgpu_device *adev)
amdgpu_ring_write ( ring , 0x0000002A ) ;
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
amdgpu_ring_write ( ring , 0x16000012 ) ;
amdgpu_ring_write ( ring , 0x00000000 ) ;
break ;
@ -4664,7 +4681,8 @@ static int gfx_v8_0_cp_compute_resume(struct amdgpu_device *adev)
( adev - > asic_type = = CHIP_FIJI ) | |
( adev - > asic_type = = CHIP_STONEY ) | |
( adev - > asic_type = = CHIP_POLARIS11 ) | |
( adev - > asic_type = = CHIP_POLARIS10 ) ) {
( adev - > asic_type = = CHIP_POLARIS10 ) | |
( adev - > asic_type = = CHIP_POLARIS12 ) ) {
WREG32 ( mmCP_MEC_DOORBELL_RANGE_LOWER ,
AMDGPU_DOORBELL_KIQ < < 2 ) ;
WREG32 ( mmCP_MEC_DOORBELL_RANGE_UPPER ,
@ -4700,7 +4718,8 @@ static int gfx_v8_0_cp_compute_resume(struct amdgpu_device *adev)
mqd - > cp_hqd_persistent_state = tmp ;
if ( adev - > asic_type = = CHIP_STONEY | |
adev - > asic_type = = CHIP_POLARIS11 | |
adev - > asic_type = = CHIP_POLARIS10 ) {
adev - > asic_type = = CHIP_POLARIS10 | |
adev - > asic_type = = CHIP_POLARIS12 ) {
tmp = RREG32 ( mmCP_ME1_PIPE3_INT_CNTL ) ;
tmp = REG_SET_FIELD ( tmp , CP_ME1_PIPE3_INT_CNTL , GENERIC2_INT_ENABLE , 1 ) ;
WREG32 ( mmCP_ME1_PIPE3_INT_CNTL , tmp ) ;
@ -5279,7 +5298,8 @@ static int gfx_v8_0_late_init(void *handle)
static void gfx_v8_0_enable_gfx_static_mg_power_gating ( struct amdgpu_device * adev ,
bool enable )
{
if ( adev - > asic_type = = CHIP_POLARIS11 )
if ( ( adev - > asic_type = = CHIP_POLARIS11 ) | |
( adev - > asic_type = = CHIP_POLARIS12 ) )
/* Send msg to SMU via Powerplay */
amdgpu_set_powergating_state ( adev ,
AMD_IP_BLOCK_TYPE_SMC ,
@ -5353,6 +5373,7 @@ static int gfx_v8_0_set_powergating_state(void *handle,
gfx_v8_0_enable_gfx_dynamic_mg_power_gating ( adev , false ) ;
break ;
case CHIP_POLARIS11 :
case CHIP_POLARIS12 :
if ( ( adev - > pg_flags & AMD_PG_SUPPORT_GFX_SMG ) & & enable )
gfx_v8_0_enable_gfx_static_mg_power_gating ( adev , true ) ;
else