mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-22 08:13:31 +07:00
drm/amdgpu: rename macro for VCN1.0
Rename RREG32_SOC15_DPG_MODE and WREG32_SOC15_DPG_MODE for VCN1.0 These two macros are used specifically for VCN1.0, therefore rename it from general name to VCN1.0 specific name. Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Reviewed-by: James Zhu <james.zhu@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
14539809bd
commit
914b5f53d0
@ -67,7 +67,7 @@
|
|||||||
/* 1 second timeout */
|
/* 1 second timeout */
|
||||||
#define VCN_IDLE_TIMEOUT msecs_to_jiffies(1000)
|
#define VCN_IDLE_TIMEOUT msecs_to_jiffies(1000)
|
||||||
|
|
||||||
#define RREG32_SOC15_DPG_MODE(ip, inst_idx, reg, mask, sram_sel) \
|
#define RREG32_SOC15_DPG_MODE_1_0(ip, inst_idx, reg, mask, sram_sel) \
|
||||||
({ WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_MASK, mask); \
|
({ WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_MASK, mask); \
|
||||||
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_CTL, \
|
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_CTL, \
|
||||||
UVD_DPG_LMA_CTL__MASK_EN_MASK | \
|
UVD_DPG_LMA_CTL__MASK_EN_MASK | \
|
||||||
@ -77,7 +77,7 @@
|
|||||||
RREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_DATA); \
|
RREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_DATA); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define WREG32_SOC15_DPG_MODE(ip, inst_idx, reg, value, mask, sram_sel) \
|
#define WREG32_SOC15_DPG_MODE_1_0(ip, inst_idx, reg, value, mask, sram_sel) \
|
||||||
do { \
|
do { \
|
||||||
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_DATA, value); \
|
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_DATA, value); \
|
||||||
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_MASK, mask); \
|
WREG32_SOC15(ip, inst_idx, mmUVD_DPG_LMA_MASK, mask); \
|
||||||
|
@ -360,68 +360,68 @@ static void vcn_v1_0_mc_resume_dpg_mode(struct amdgpu_device *adev)
|
|||||||
|
|
||||||
/* cache window 0: fw */
|
/* cache window 0: fw */
|
||||||
if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
|
if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW,
|
||||||
(adev->firmware.ucode[AMDGPU_UCODE_ID_VCN].tmr_mc_addr_lo),
|
(adev->firmware.ucode[AMDGPU_UCODE_ID_VCN].tmr_mc_addr_lo),
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH,
|
||||||
(adev->firmware.ucode[AMDGPU_UCODE_ID_VCN].tmr_mc_addr_hi),
|
(adev->firmware.ucode[AMDGPU_UCODE_ID_VCN].tmr_mc_addr_hi),
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_OFFSET0, 0,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_OFFSET0, 0,
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
} else {
|
} else {
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW,
|
||||||
lower_32_bits(adev->vcn.inst->gpu_addr), 0xFFFFFFFF, 0);
|
lower_32_bits(adev->vcn.inst->gpu_addr), 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH,
|
||||||
upper_32_bits(adev->vcn.inst->gpu_addr), 0xFFFFFFFF, 0);
|
upper_32_bits(adev->vcn.inst->gpu_addr), 0xFFFFFFFF, 0);
|
||||||
offset = size;
|
offset = size;
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_OFFSET0,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_OFFSET0,
|
||||||
AMDGPU_UVD_FIRMWARE_OFFSET >> 3, 0xFFFFFFFF, 0);
|
AMDGPU_UVD_FIRMWARE_OFFSET >> 3, 0xFFFFFFFF, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_SIZE0, size, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_SIZE0, size, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* cache window 1: stack */
|
/* cache window 1: stack */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE1_64BIT_BAR_LOW,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE1_64BIT_BAR_LOW,
|
||||||
lower_32_bits(adev->vcn.inst->gpu_addr + offset), 0xFFFFFFFF, 0);
|
lower_32_bits(adev->vcn.inst->gpu_addr + offset), 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE1_64BIT_BAR_HIGH,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE1_64BIT_BAR_HIGH,
|
||||||
upper_32_bits(adev->vcn.inst->gpu_addr + offset), 0xFFFFFFFF, 0);
|
upper_32_bits(adev->vcn.inst->gpu_addr + offset), 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_OFFSET1, 0,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_OFFSET1, 0,
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_SIZE1, AMDGPU_VCN_STACK_SIZE,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_SIZE1, AMDGPU_VCN_STACK_SIZE,
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* cache window 2: context */
|
/* cache window 2: context */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE2_64BIT_BAR_LOW,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE2_64BIT_BAR_LOW,
|
||||||
lower_32_bits(adev->vcn.inst->gpu_addr + offset + AMDGPU_VCN_STACK_SIZE),
|
lower_32_bits(adev->vcn.inst->gpu_addr + offset + AMDGPU_VCN_STACK_SIZE),
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_VCPU_CACHE2_64BIT_BAR_HIGH,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_VCPU_CACHE2_64BIT_BAR_HIGH,
|
||||||
upper_32_bits(adev->vcn.inst->gpu_addr + offset + AMDGPU_VCN_STACK_SIZE),
|
upper_32_bits(adev->vcn.inst->gpu_addr + offset + AMDGPU_VCN_STACK_SIZE),
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_OFFSET2, 0, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_OFFSET2, 0, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CACHE_SIZE2, AMDGPU_VCN_CONTEXT_SIZE,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CACHE_SIZE2, AMDGPU_VCN_CONTEXT_SIZE,
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* VCN global tiling registers */
|
/* VCN global tiling registers */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_UDEC_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_UDEC_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_UDEC_DB_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_UDEC_DB_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_UDEC_DBW_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_UDEC_DBW_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_UDEC_DBW_UV_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_UDEC_DBW_UV_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_CURR_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_CURR_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_CURR_UV_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_CURR_UV_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_RECON1_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_RECON1_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_RECON1_UV_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_RECON1_UV_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_REF_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_REF_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MIF_REF_UV_ADDR_CONFIG,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MIF_REF_UV_ADDR_CONFIG,
|
||||||
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
adev->gfx.config.gb_addr_config, 0xFFFFFFFF, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -636,9 +636,9 @@ static void vcn_v1_0_clock_gating_dpg_mode(struct amdgpu_device *adev, uint8_t s
|
|||||||
reg_data = 0 << JPEG_CGC_CTRL__DYN_CLOCK_MODE__SHIFT;
|
reg_data = 0 << JPEG_CGC_CTRL__DYN_CLOCK_MODE__SHIFT;
|
||||||
reg_data |= 1 << JPEG_CGC_CTRL__CLK_GATE_DLY_TIMER__SHIFT;
|
reg_data |= 1 << JPEG_CGC_CTRL__CLK_GATE_DLY_TIMER__SHIFT;
|
||||||
reg_data |= 4 << JPEG_CGC_CTRL__CLK_OFF_DELAY__SHIFT;
|
reg_data |= 4 << JPEG_CGC_CTRL__CLK_OFF_DELAY__SHIFT;
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmJPEG_CGC_CTRL, reg_data, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmJPEG_CGC_CTRL, reg_data, 0xFFFFFFFF, sram_sel);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmJPEG_CGC_GATE, 0, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmJPEG_CGC_GATE, 0, 0xFFFFFFFF, sram_sel);
|
||||||
|
|
||||||
/* enable sw clock gating control */
|
/* enable sw clock gating control */
|
||||||
if (adev->cg_flags & AMD_CG_SUPPORT_VCN_MGCG)
|
if (adev->cg_flags & AMD_CG_SUPPORT_VCN_MGCG)
|
||||||
@ -667,16 +667,16 @@ static void vcn_v1_0_clock_gating_dpg_mode(struct amdgpu_device *adev, uint8_t s
|
|||||||
UVD_CGC_CTRL__WCB_MODE_MASK |
|
UVD_CGC_CTRL__WCB_MODE_MASK |
|
||||||
UVD_CGC_CTRL__VCPU_MODE_MASK |
|
UVD_CGC_CTRL__VCPU_MODE_MASK |
|
||||||
UVD_CGC_CTRL__SCPU_MODE_MASK);
|
UVD_CGC_CTRL__SCPU_MODE_MASK);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_CGC_CTRL, reg_data, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_CGC_CTRL, reg_data, 0xFFFFFFFF, sram_sel);
|
||||||
|
|
||||||
/* turn off clock gating */
|
/* turn off clock gating */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_CGC_GATE, 0, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_CGC_GATE, 0, 0xFFFFFFFF, sram_sel);
|
||||||
|
|
||||||
/* turn on SUVD clock gating */
|
/* turn on SUVD clock gating */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_SUVD_CGC_GATE, 1, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_SUVD_CGC_GATE, 1, 0xFFFFFFFF, sram_sel);
|
||||||
|
|
||||||
/* turn on sw mode in UVD_SUVD_CGC_CTRL */
|
/* turn on sw mode in UVD_SUVD_CGC_CTRL */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_SUVD_CGC_CTRL, 0, 0xFFFFFFFF, sram_sel);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_SUVD_CGC_CTRL, 0, 0xFFFFFFFF, sram_sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vcn_1_0_disable_static_power_gating(struct amdgpu_device *adev)
|
static void vcn_1_0_disable_static_power_gating(struct amdgpu_device *adev)
|
||||||
@ -972,14 +972,14 @@ static int vcn_v1_0_start_dpg_mode(struct amdgpu_device *adev)
|
|||||||
tmp = (0xFF << UVD_VCPU_CNTL__PRB_TIMEOUT_VAL__SHIFT);
|
tmp = (0xFF << UVD_VCPU_CNTL__PRB_TIMEOUT_VAL__SHIFT);
|
||||||
tmp |= UVD_VCPU_CNTL__CLK_EN_MASK;
|
tmp |= UVD_VCPU_CNTL__CLK_EN_MASK;
|
||||||
tmp |= UVD_VCPU_CNTL__MIF_WR_LOW_THRESHOLD_BP_MASK;
|
tmp |= UVD_VCPU_CNTL__MIF_WR_LOW_THRESHOLD_BP_MASK;
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_VCPU_CNTL, tmp, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_VCPU_CNTL, tmp, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* disable interupt */
|
/* disable interupt */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MASTINT_EN,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MASTINT_EN,
|
||||||
0, UVD_MASTINT_EN__VCPU_EN_MASK, 0);
|
0, UVD_MASTINT_EN__VCPU_EN_MASK, 0);
|
||||||
|
|
||||||
/* initialize VCN memory controller */
|
/* initialize VCN memory controller */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_CTRL,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_CTRL,
|
||||||
(8 << UVD_LMI_CTRL__WRITE_CLEAN_TIMER__SHIFT) |
|
(8 << UVD_LMI_CTRL__WRITE_CLEAN_TIMER__SHIFT) |
|
||||||
UVD_LMI_CTRL__WRITE_CLEAN_TIMER_EN_MASK |
|
UVD_LMI_CTRL__WRITE_CLEAN_TIMER_EN_MASK |
|
||||||
UVD_LMI_CTRL__DATA_COHERENCY_EN_MASK |
|
UVD_LMI_CTRL__DATA_COHERENCY_EN_MASK |
|
||||||
@ -993,48 +993,48 @@ static int vcn_v1_0_start_dpg_mode(struct amdgpu_device *adev)
|
|||||||
/* swap (8 in 32) RB and IB */
|
/* swap (8 in 32) RB and IB */
|
||||||
lmi_swap_cntl = 0xa;
|
lmi_swap_cntl = 0xa;
|
||||||
#endif
|
#endif
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_SWAP_CNTL, lmi_swap_cntl, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_SWAP_CNTL, lmi_swap_cntl, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MPC_CNTL,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MPC_CNTL,
|
||||||
0x2 << UVD_MPC_CNTL__REPLACEMENT_MODE__SHIFT, 0xFFFFFFFF, 0);
|
0x2 << UVD_MPC_CNTL__REPLACEMENT_MODE__SHIFT, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MPC_SET_MUXA0,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MPC_SET_MUXA0,
|
||||||
((0x1 << UVD_MPC_SET_MUXA0__VARA_1__SHIFT) |
|
((0x1 << UVD_MPC_SET_MUXA0__VARA_1__SHIFT) |
|
||||||
(0x2 << UVD_MPC_SET_MUXA0__VARA_2__SHIFT) |
|
(0x2 << UVD_MPC_SET_MUXA0__VARA_2__SHIFT) |
|
||||||
(0x3 << UVD_MPC_SET_MUXA0__VARA_3__SHIFT) |
|
(0x3 << UVD_MPC_SET_MUXA0__VARA_3__SHIFT) |
|
||||||
(0x4 << UVD_MPC_SET_MUXA0__VARA_4__SHIFT)), 0xFFFFFFFF, 0);
|
(0x4 << UVD_MPC_SET_MUXA0__VARA_4__SHIFT)), 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MPC_SET_MUXB0,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MPC_SET_MUXB0,
|
||||||
((0x1 << UVD_MPC_SET_MUXB0__VARB_1__SHIFT) |
|
((0x1 << UVD_MPC_SET_MUXB0__VARB_1__SHIFT) |
|
||||||
(0x2 << UVD_MPC_SET_MUXB0__VARB_2__SHIFT) |
|
(0x2 << UVD_MPC_SET_MUXB0__VARB_2__SHIFT) |
|
||||||
(0x3 << UVD_MPC_SET_MUXB0__VARB_3__SHIFT) |
|
(0x3 << UVD_MPC_SET_MUXB0__VARB_3__SHIFT) |
|
||||||
(0x4 << UVD_MPC_SET_MUXB0__VARB_4__SHIFT)), 0xFFFFFFFF, 0);
|
(0x4 << UVD_MPC_SET_MUXB0__VARB_4__SHIFT)), 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MPC_SET_MUX,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MPC_SET_MUX,
|
||||||
((0x0 << UVD_MPC_SET_MUX__SET_0__SHIFT) |
|
((0x0 << UVD_MPC_SET_MUX__SET_0__SHIFT) |
|
||||||
(0x1 << UVD_MPC_SET_MUX__SET_1__SHIFT) |
|
(0x1 << UVD_MPC_SET_MUX__SET_1__SHIFT) |
|
||||||
(0x2 << UVD_MPC_SET_MUX__SET_2__SHIFT)), 0xFFFFFFFF, 0);
|
(0x2 << UVD_MPC_SET_MUX__SET_2__SHIFT)), 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
vcn_v1_0_mc_resume_dpg_mode(adev);
|
vcn_v1_0_mc_resume_dpg_mode(adev);
|
||||||
|
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_REG_XX_MASK, 0x10, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_REG_XX_MASK, 0x10, 0xFFFFFFFF, 0);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_RBC_XX_IB_REG_CHECK, 0x3, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_RBC_XX_IB_REG_CHECK, 0x3, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* boot up the VCPU */
|
/* boot up the VCPU */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_SOFT_RESET, 0, 0xFFFFFFFF, 0);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_SOFT_RESET, 0, 0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* enable UMC */
|
/* enable UMC */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_CTRL2,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_CTRL2,
|
||||||
0x1F << UVD_LMI_CTRL2__RE_OFLD_MIF_WR_REQ_NUM__SHIFT,
|
0x1F << UVD_LMI_CTRL2__RE_OFLD_MIF_WR_REQ_NUM__SHIFT,
|
||||||
0xFFFFFFFF, 0);
|
0xFFFFFFFF, 0);
|
||||||
|
|
||||||
/* enable master interrupt */
|
/* enable master interrupt */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_MASTINT_EN,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_MASTINT_EN,
|
||||||
UVD_MASTINT_EN__VCPU_EN_MASK, UVD_MASTINT_EN__VCPU_EN_MASK, 0);
|
UVD_MASTINT_EN__VCPU_EN_MASK, UVD_MASTINT_EN__VCPU_EN_MASK, 0);
|
||||||
|
|
||||||
vcn_v1_0_clock_gating_dpg_mode(adev, 1);
|
vcn_v1_0_clock_gating_dpg_mode(adev, 1);
|
||||||
/* setup mmUVD_LMI_CTRL */
|
/* setup mmUVD_LMI_CTRL */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_LMI_CTRL,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_LMI_CTRL,
|
||||||
(8 << UVD_LMI_CTRL__WRITE_CLEAN_TIMER__SHIFT) |
|
(8 << UVD_LMI_CTRL__WRITE_CLEAN_TIMER__SHIFT) |
|
||||||
UVD_LMI_CTRL__WRITE_CLEAN_TIMER_EN_MASK |
|
UVD_LMI_CTRL__WRITE_CLEAN_TIMER_EN_MASK |
|
||||||
UVD_LMI_CTRL__DATA_COHERENCY_EN_MASK |
|
UVD_LMI_CTRL__DATA_COHERENCY_EN_MASK |
|
||||||
@ -1046,11 +1046,11 @@ static int vcn_v1_0_start_dpg_mode(struct amdgpu_device *adev)
|
|||||||
|
|
||||||
tmp = adev->gfx.config.gb_addr_config;
|
tmp = adev->gfx.config.gb_addr_config;
|
||||||
/* setup VCN global tiling registers */
|
/* setup VCN global tiling registers */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_JPEG_ADDR_CONFIG, tmp, 0xFFFFFFFF, 1);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_JPEG_ADDR_CONFIG, tmp, 0xFFFFFFFF, 1);
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_JPEG_UV_ADDR_CONFIG, tmp, 0xFFFFFFFF, 1);
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_JPEG_UV_ADDR_CONFIG, tmp, 0xFFFFFFFF, 1);
|
||||||
|
|
||||||
/* enable System Interrupt for JRBC */
|
/* enable System Interrupt for JRBC */
|
||||||
WREG32_SOC15_DPG_MODE(UVD, 0, mmUVD_SYS_INT_EN,
|
WREG32_SOC15_DPG_MODE_1_0(UVD, 0, mmUVD_SYS_INT_EN,
|
||||||
UVD_SYS_INT_EN__UVD_JRBC_EN_MASK, 0xFFFFFFFF, 1);
|
UVD_SYS_INT_EN__UVD_JRBC_EN_MASK, 0xFFFFFFFF, 1);
|
||||||
|
|
||||||
/* force RBC into idle state */
|
/* force RBC into idle state */
|
||||||
|
Loading…
Reference in New Issue
Block a user