drm/radeon/cik: add rlc helpers for DPM
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
84a9d9eeab
commit
a412fce054
|
@ -5587,6 +5587,35 @@ static u32 cik_halt_rlc(struct radeon_device *rdev)
|
|||
return orig;
|
||||
}
|
||||
|
||||
void cik_enter_rlc_safe_mode(struct radeon_device *rdev)
|
||||
{
|
||||
u32 tmp, i, mask;
|
||||
|
||||
tmp = REQ | MESSAGE(MSG_ENTER_RLC_SAFE_MODE);
|
||||
WREG32(RLC_GPR_REG2, tmp);
|
||||
|
||||
mask = GFX_POWER_STATUS | GFX_CLOCK_STATUS;
|
||||
for (i = 0; i < rdev->usec_timeout; i++) {
|
||||
if ((RREG32(RLC_GPM_STAT) & mask) == mask)
|
||||
break;
|
||||
udelay(1);
|
||||
}
|
||||
|
||||
for (i = 0; i < rdev->usec_timeout; i++) {
|
||||
if ((RREG32(RLC_GPR_REG2) & REQ) == 0)
|
||||
break;
|
||||
udelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void cik_exit_rlc_safe_mode(struct radeon_device *rdev)
|
||||
{
|
||||
u32 tmp;
|
||||
|
||||
tmp = REQ | MESSAGE(MSG_EXIT_RLC_SAFE_MODE);
|
||||
WREG32(RLC_GPR_REG2, tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
* cik_rlc_stop - stop the RLC ME
|
||||
*
|
||||
|
|
|
@ -952,6 +952,8 @@
|
|||
|
||||
#define RLC_GPM_STAT 0xC400
|
||||
# define RLC_GPM_BUSY (1 << 0)
|
||||
# define GFX_POWER_STATUS (1 << 1)
|
||||
# define GFX_CLOCK_STATUS (1 << 2)
|
||||
|
||||
#define RLC_PG_CNTL 0xC40C
|
||||
# define GFX_PG_ENABLE (1 << 0)
|
||||
|
@ -1004,6 +1006,13 @@
|
|||
#define RLC_GPM_SCRATCH_ADDR 0xC4B0
|
||||
#define RLC_GPM_SCRATCH_DATA 0xC4B4
|
||||
|
||||
#define RLC_GPR_REG2 0xC4E8
|
||||
#define REQ 0x00000001
|
||||
#define MESSAGE(x) ((x) << 1)
|
||||
#define MESSAGE_MASK 0x0000001e
|
||||
#define MSG_ENTER_RLC_SAFE_MODE 1
|
||||
#define MSG_EXIT_RLC_SAFE_MODE 0
|
||||
|
||||
#define CP_HPD_EOP_BASE_ADDR 0xC904
|
||||
#define CP_HPD_EOP_BASE_ADDR_HI 0xC908
|
||||
#define CP_HPD_EOP_VMID 0xC90C
|
||||
|
|
Loading…
Reference in New Issue