Commit 42e547ef authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu/powerplay: add core support for pre-SOC15 baco

This adds core support for BACO on pre-vega asics.
Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5d934ac0
......@@ -79,6 +79,25 @@ static bool baco_cmd_handler(struct pp_hwmgr *hwmgr, u32 command, u32 reg, u32 m
return ret;
}
bool baco_program_registers(struct pp_hwmgr *hwmgr,
const struct baco_cmd_entry *entry,
const u32 array_size)
{
u32 i, reg = 0;
for (i = 0; i < array_size; i++) {
if ((entry[i].cmd == CMD_WRITE) ||
(entry[i].cmd == CMD_READMODIFYWRITE) ||
(entry[i].cmd == CMD_WAITFOR))
reg = entry[i].reg_offset;
if (!baco_cmd_handler(hwmgr, entry[i].cmd, reg, entry[i].mask,
entry[i].shift, entry[i].val, entry[i].timeout))
return false;
}
return true;
}
bool soc15_baco_program_registers(struct pp_hwmgr *hwmgr,
const struct soc15_baco_cmd_entry *entry,
const u32 array_size)
......
......@@ -33,6 +33,15 @@ enum baco_cmd_type {
CMD_DELAY_US,
};
struct baco_cmd_entry {
enum baco_cmd_type cmd;
uint32_t reg_offset;
uint32_t mask;
uint32_t shift;
uint32_t timeout;
uint32_t val;
};
struct soc15_baco_cmd_entry {
enum baco_cmd_type cmd;
uint32_t hwip;
......@@ -44,6 +53,10 @@ struct soc15_baco_cmd_entry {
uint32_t timeout;
uint32_t val;
};
extern bool baco_program_registers(struct pp_hwmgr *hwmgr,
const struct baco_cmd_entry *entry,
const u32 array_size);
extern bool soc15_baco_program_registers(struct pp_hwmgr *hwmgr,
const struct soc15_baco_cmd_entry *entry,
const u32 array_size);
......
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