drm/radeon/cik: add rlc helpers for DPM
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
#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
|
||||||
|
|||||||
Reference in New Issue
Block a user