Merge branch 'drm-next-4.13' of git://people.freedesktop.org/~agd5f/linux into drm-next
New radeon and amdgpu features for 4.13: - Lots of Vega10 bug fixes - Preliminary Raven support - KIQ support for compute rings - MEC queue management rework from Andres - Audio support for DCE6 - SR-IOV improvements - Improved module parameters for controlling radeon vs amdgpu support for SI and CIK - Bug fixes - General code cleanups [airlied: dropped drmP.h header from one file was needed and build broke] * 'drm-next-4.13' of git://people.freedesktop.org/~agd5f/linux: (362 commits) drm/amdgpu: Fix compiler warnings drm/amdgpu: vm_update_ptes remove code duplication drm/amd/amdgpu: Port VCN over to new SOC15 macros drm/amd/amdgpu: Port PSP v10.0 over to new SOC15 macros drm/amd/amdgpu: Port PSP v3.1 over to new SOC15 macros drm/amd/amdgpu: Port NBIO v7.0 driver over to new SOC15 macros drm/amd/amdgpu: Port NBIO v6.1 driver over to new SOC15 macros drm/amd/amdgpu: Port UVD 7.0 over to new SOC15 macros drm/amd/amdgpu: Port MMHUB over to new SOC15 macros drm/amd/amdgpu: Cleanup gfxhub read-modify-write patterns drm/amd/amdgpu: Port GFXHUB over to new SOC15 macros drm/amd/amdgpu: Add offset variant to SOC15 macros drm/amd/powerplay: add avfs control for Vega10 drm/amdgpu: add virtual display support for raven drm/amdgpu/gfx9: fix compute ring doorbell index drm/amd/amdgpu: Rename KIQ ring to avoid spaces drm/amd/amdgpu: gfx9 tidy ups (v2) drm/amdgpu: add contiguous flag in ucode bo create drm/amdgpu: fix missed gpu info firmware when cache firmware during S3 drm/amdgpu: export test ib debugfs interface ...
This commit is contained in:
@@ -463,89 +463,83 @@ static void vi_detect_hw_virtualization(struct amdgpu_device *adev)
|
||||
}
|
||||
}
|
||||
|
||||
static const struct amdgpu_allowed_register_entry tonga_allowed_read_registers[] = {
|
||||
};
|
||||
|
||||
static const struct amdgpu_allowed_register_entry cz_allowed_read_registers[] = {
|
||||
};
|
||||
|
||||
static const struct amdgpu_allowed_register_entry vi_allowed_read_registers[] = {
|
||||
{mmGRBM_STATUS, false},
|
||||
{mmGRBM_STATUS2, false},
|
||||
{mmGRBM_STATUS_SE0, false},
|
||||
{mmGRBM_STATUS_SE1, false},
|
||||
{mmGRBM_STATUS_SE2, false},
|
||||
{mmGRBM_STATUS_SE3, false},
|
||||
{mmSRBM_STATUS, false},
|
||||
{mmSRBM_STATUS2, false},
|
||||
{mmSRBM_STATUS3, false},
|
||||
{mmSDMA0_STATUS_REG + SDMA0_REGISTER_OFFSET, false},
|
||||
{mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET, false},
|
||||
{mmCP_STAT, false},
|
||||
{mmCP_STALLED_STAT1, false},
|
||||
{mmCP_STALLED_STAT2, false},
|
||||
{mmCP_STALLED_STAT3, false},
|
||||
{mmCP_CPF_BUSY_STAT, false},
|
||||
{mmCP_CPF_STALLED_STAT1, false},
|
||||
{mmCP_CPF_STATUS, false},
|
||||
{mmCP_CPC_BUSY_STAT, false},
|
||||
{mmCP_CPC_STALLED_STAT1, false},
|
||||
{mmCP_CPC_STATUS, false},
|
||||
{mmGB_ADDR_CONFIG, false},
|
||||
{mmMC_ARB_RAMCFG, false},
|
||||
{mmGB_TILE_MODE0, false},
|
||||
{mmGB_TILE_MODE1, false},
|
||||
{mmGB_TILE_MODE2, false},
|
||||
{mmGB_TILE_MODE3, false},
|
||||
{mmGB_TILE_MODE4, false},
|
||||
{mmGB_TILE_MODE5, false},
|
||||
{mmGB_TILE_MODE6, false},
|
||||
{mmGB_TILE_MODE7, false},
|
||||
{mmGB_TILE_MODE8, false},
|
||||
{mmGB_TILE_MODE9, false},
|
||||
{mmGB_TILE_MODE10, false},
|
||||
{mmGB_TILE_MODE11, false},
|
||||
{mmGB_TILE_MODE12, false},
|
||||
{mmGB_TILE_MODE13, false},
|
||||
{mmGB_TILE_MODE14, false},
|
||||
{mmGB_TILE_MODE15, false},
|
||||
{mmGB_TILE_MODE16, false},
|
||||
{mmGB_TILE_MODE17, false},
|
||||
{mmGB_TILE_MODE18, false},
|
||||
{mmGB_TILE_MODE19, false},
|
||||
{mmGB_TILE_MODE20, false},
|
||||
{mmGB_TILE_MODE21, false},
|
||||
{mmGB_TILE_MODE22, false},
|
||||
{mmGB_TILE_MODE23, false},
|
||||
{mmGB_TILE_MODE24, false},
|
||||
{mmGB_TILE_MODE25, false},
|
||||
{mmGB_TILE_MODE26, false},
|
||||
{mmGB_TILE_MODE27, false},
|
||||
{mmGB_TILE_MODE28, false},
|
||||
{mmGB_TILE_MODE29, false},
|
||||
{mmGB_TILE_MODE30, false},
|
||||
{mmGB_TILE_MODE31, false},
|
||||
{mmGB_MACROTILE_MODE0, false},
|
||||
{mmGB_MACROTILE_MODE1, false},
|
||||
{mmGB_MACROTILE_MODE2, false},
|
||||
{mmGB_MACROTILE_MODE3, false},
|
||||
{mmGB_MACROTILE_MODE4, false},
|
||||
{mmGB_MACROTILE_MODE5, false},
|
||||
{mmGB_MACROTILE_MODE6, false},
|
||||
{mmGB_MACROTILE_MODE7, false},
|
||||
{mmGB_MACROTILE_MODE8, false},
|
||||
{mmGB_MACROTILE_MODE9, false},
|
||||
{mmGB_MACROTILE_MODE10, false},
|
||||
{mmGB_MACROTILE_MODE11, false},
|
||||
{mmGB_MACROTILE_MODE12, false},
|
||||
{mmGB_MACROTILE_MODE13, false},
|
||||
{mmGB_MACROTILE_MODE14, false},
|
||||
{mmGB_MACROTILE_MODE15, false},
|
||||
{mmCC_RB_BACKEND_DISABLE, false, true},
|
||||
{mmGC_USER_RB_BACKEND_DISABLE, false, true},
|
||||
{mmGB_BACKEND_MAP, false, false},
|
||||
{mmPA_SC_RASTER_CONFIG, false, true},
|
||||
{mmPA_SC_RASTER_CONFIG_1, false, true},
|
||||
{mmGRBM_STATUS},
|
||||
{mmGRBM_STATUS2},
|
||||
{mmGRBM_STATUS_SE0},
|
||||
{mmGRBM_STATUS_SE1},
|
||||
{mmGRBM_STATUS_SE2},
|
||||
{mmGRBM_STATUS_SE3},
|
||||
{mmSRBM_STATUS},
|
||||
{mmSRBM_STATUS2},
|
||||
{mmSRBM_STATUS3},
|
||||
{mmSDMA0_STATUS_REG + SDMA0_REGISTER_OFFSET},
|
||||
{mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET},
|
||||
{mmCP_STAT},
|
||||
{mmCP_STALLED_STAT1},
|
||||
{mmCP_STALLED_STAT2},
|
||||
{mmCP_STALLED_STAT3},
|
||||
{mmCP_CPF_BUSY_STAT},
|
||||
{mmCP_CPF_STALLED_STAT1},
|
||||
{mmCP_CPF_STATUS},
|
||||
{mmCP_CPC_BUSY_STAT},
|
||||
{mmCP_CPC_STALLED_STAT1},
|
||||
{mmCP_CPC_STATUS},
|
||||
{mmGB_ADDR_CONFIG},
|
||||
{mmMC_ARB_RAMCFG},
|
||||
{mmGB_TILE_MODE0},
|
||||
{mmGB_TILE_MODE1},
|
||||
{mmGB_TILE_MODE2},
|
||||
{mmGB_TILE_MODE3},
|
||||
{mmGB_TILE_MODE4},
|
||||
{mmGB_TILE_MODE5},
|
||||
{mmGB_TILE_MODE6},
|
||||
{mmGB_TILE_MODE7},
|
||||
{mmGB_TILE_MODE8},
|
||||
{mmGB_TILE_MODE9},
|
||||
{mmGB_TILE_MODE10},
|
||||
{mmGB_TILE_MODE11},
|
||||
{mmGB_TILE_MODE12},
|
||||
{mmGB_TILE_MODE13},
|
||||
{mmGB_TILE_MODE14},
|
||||
{mmGB_TILE_MODE15},
|
||||
{mmGB_TILE_MODE16},
|
||||
{mmGB_TILE_MODE17},
|
||||
{mmGB_TILE_MODE18},
|
||||
{mmGB_TILE_MODE19},
|
||||
{mmGB_TILE_MODE20},
|
||||
{mmGB_TILE_MODE21},
|
||||
{mmGB_TILE_MODE22},
|
||||
{mmGB_TILE_MODE23},
|
||||
{mmGB_TILE_MODE24},
|
||||
{mmGB_TILE_MODE25},
|
||||
{mmGB_TILE_MODE26},
|
||||
{mmGB_TILE_MODE27},
|
||||
{mmGB_TILE_MODE28},
|
||||
{mmGB_TILE_MODE29},
|
||||
{mmGB_TILE_MODE30},
|
||||
{mmGB_TILE_MODE31},
|
||||
{mmGB_MACROTILE_MODE0},
|
||||
{mmGB_MACROTILE_MODE1},
|
||||
{mmGB_MACROTILE_MODE2},
|
||||
{mmGB_MACROTILE_MODE3},
|
||||
{mmGB_MACROTILE_MODE4},
|
||||
{mmGB_MACROTILE_MODE5},
|
||||
{mmGB_MACROTILE_MODE6},
|
||||
{mmGB_MACROTILE_MODE7},
|
||||
{mmGB_MACROTILE_MODE8},
|
||||
{mmGB_MACROTILE_MODE9},
|
||||
{mmGB_MACROTILE_MODE10},
|
||||
{mmGB_MACROTILE_MODE11},
|
||||
{mmGB_MACROTILE_MODE12},
|
||||
{mmGB_MACROTILE_MODE13},
|
||||
{mmGB_MACROTILE_MODE14},
|
||||
{mmGB_MACROTILE_MODE15},
|
||||
{mmCC_RB_BACKEND_DISABLE, true},
|
||||
{mmGC_USER_RB_BACKEND_DISABLE, true},
|
||||
{mmGB_BACKEND_MAP, false},
|
||||
{mmPA_SC_RASTER_CONFIG, true},
|
||||
{mmPA_SC_RASTER_CONFIG_1, true},
|
||||
};
|
||||
|
||||
static uint32_t vi_get_register_value(struct amdgpu_device *adev,
|
||||
@@ -647,51 +641,17 @@ static uint32_t vi_get_register_value(struct amdgpu_device *adev,
|
||||
static int vi_read_register(struct amdgpu_device *adev, u32 se_num,
|
||||
u32 sh_num, u32 reg_offset, u32 *value)
|
||||
{
|
||||
const struct amdgpu_allowed_register_entry *asic_register_table = NULL;
|
||||
const struct amdgpu_allowed_register_entry *asic_register_entry;
|
||||
uint32_t size, i;
|
||||
uint32_t i;
|
||||
|
||||
*value = 0;
|
||||
switch (adev->asic_type) {
|
||||
case CHIP_TOPAZ:
|
||||
asic_register_table = tonga_allowed_read_registers;
|
||||
size = ARRAY_SIZE(tonga_allowed_read_registers);
|
||||
break;
|
||||
case CHIP_FIJI:
|
||||
case CHIP_TONGA:
|
||||
case CHIP_POLARIS11:
|
||||
case CHIP_POLARIS10:
|
||||
case CHIP_POLARIS12:
|
||||
case CHIP_CARRIZO:
|
||||
case CHIP_STONEY:
|
||||
asic_register_table = cz_allowed_read_registers;
|
||||
size = ARRAY_SIZE(cz_allowed_read_registers);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (asic_register_table) {
|
||||
for (i = 0; i < size; i++) {
|
||||
asic_register_entry = asic_register_table + i;
|
||||
if (reg_offset != asic_register_entry->reg_offset)
|
||||
continue;
|
||||
if (!asic_register_entry->untouched)
|
||||
*value = vi_get_register_value(adev,
|
||||
asic_register_entry->grbm_indexed,
|
||||
se_num, sh_num, reg_offset);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(vi_allowed_read_registers); i++) {
|
||||
bool indexed = vi_allowed_read_registers[i].grbm_indexed;
|
||||
|
||||
if (reg_offset != vi_allowed_read_registers[i].reg_offset)
|
||||
continue;
|
||||
|
||||
if (!vi_allowed_read_registers[i].untouched)
|
||||
*value = vi_get_register_value(adev,
|
||||
vi_allowed_read_registers[i].grbm_indexed,
|
||||
se_num, sh_num, reg_offset);
|
||||
*value = vi_get_register_value(adev, indexed, se_num, sh_num,
|
||||
reg_offset);
|
||||
return 0;
|
||||
}
|
||||
return -EINVAL;
|
||||
@@ -934,11 +894,6 @@ static int vi_common_early_init(void *handle)
|
||||
(amdgpu_ip_block_mask & (1 << AMD_IP_BLOCK_TYPE_SMC)))
|
||||
smc_enabled = true;
|
||||
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
amdgpu_virt_init_setting(adev);
|
||||
xgpu_vi_mailbox_set_irq_funcs(adev);
|
||||
}
|
||||
|
||||
adev->rev_id = vi_get_rev_id(adev);
|
||||
adev->external_rev_id = 0xFF;
|
||||
switch (adev->asic_type) {
|
||||
@@ -1073,7 +1028,7 @@ static int vi_common_early_init(void *handle)
|
||||
/* rev0 hardware requires workarounds to support PG */
|
||||
adev->pg_flags = 0;
|
||||
if (adev->rev_id != 0x00 || CZ_REV_BRISTOL(adev->pdev->revision)) {
|
||||
adev->pg_flags |=
|
||||
adev->pg_flags |= AMD_PG_SUPPORT_GFX_PG |
|
||||
AMD_PG_SUPPORT_GFX_SMG |
|
||||
AMD_PG_SUPPORT_GFX_PIPELINE |
|
||||
AMD_PG_SUPPORT_CP |
|
||||
@@ -1111,6 +1066,11 @@ static int vi_common_early_init(void *handle)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
amdgpu_virt_init_setting(adev);
|
||||
xgpu_vi_mailbox_set_irq_funcs(adev);
|
||||
}
|
||||
|
||||
/* vi use smc load by default */
|
||||
adev->firmware.load_type = amdgpu_ucode_get_load_type(adev, amdgpu_fw_load_type);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user