Commit a412fce0 authored by Alex Deucher's avatar Alex Deucher

drm/radeon/cik: add rlc helpers for DPM

Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 84a9d9ee
...@@ -5587,6 +5587,35 @@ static u32 cik_halt_rlc(struct radeon_device *rdev) ...@@ -5587,6 +5587,35 @@ static u32 cik_halt_rlc(struct radeon_device *rdev)
return orig; 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 * cik_rlc_stop - stop the RLC ME
* *
......
...@@ -952,6 +952,8 @@ ...@@ -952,6 +952,8 @@
#define RLC_GPM_STAT 0xC400 #define RLC_GPM_STAT 0xC400
# define RLC_GPM_BUSY (1 << 0) # define RLC_GPM_BUSY (1 << 0)
# define GFX_POWER_STATUS (1 << 1)
# define GFX_CLOCK_STATUS (1 << 2)
#define RLC_PG_CNTL 0xC40C #define RLC_PG_CNTL 0xC40C
# define GFX_PG_ENABLE (1 << 0) # define GFX_PG_ENABLE (1 << 0)
...@@ -1004,6 +1006,13 @@ ...@@ -1004,6 +1006,13 @@
#define RLC_GPM_SCRATCH_ADDR 0xC4B0 #define RLC_GPM_SCRATCH_ADDR 0xC4B0
#define RLC_GPM_SCRATCH_DATA 0xC4B4 #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 0xC904
#define CP_HPD_EOP_BASE_ADDR_HI 0xC908 #define CP_HPD_EOP_BASE_ADDR_HI 0xC908
#define CP_HPD_EOP_VMID 0xC90C #define CP_HPD_EOP_VMID 0xC90C
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment