|
@@ -93,7 +93,7 @@ psp_v3_1_get_fw_type(struct amdgpu_firmware_info *ucode, enum psp_gfx_fw_type *t
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_init_microcode(struct psp_context *psp)
|
|
|
+static int psp_v3_1_init_microcode(struct psp_context *psp)
|
|
|
{
|
|
|
struct amdgpu_device *adev = psp->adev;
|
|
|
const char *chip_name;
|
|
@@ -161,7 +161,7 @@ out:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_bootloader_load_sysdrv(struct psp_context *psp)
|
|
|
+static int psp_v3_1_bootloader_load_sysdrv(struct psp_context *psp)
|
|
|
{
|
|
|
int ret;
|
|
|
uint32_t psp_gfxdrv_command_reg = 0;
|
|
@@ -202,7 +202,7 @@ int psp_v3_1_bootloader_load_sysdrv(struct psp_context *psp)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
|
|
|
+static int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
|
|
|
{
|
|
|
int ret;
|
|
|
unsigned int psp_gfxdrv_command_reg = 0;
|
|
@@ -243,7 +243,8 @@ int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_prep_cmd_buf(struct amdgpu_firmware_info *ucode, struct psp_gfx_cmd_resp *cmd)
|
|
|
+static int psp_v3_1_prep_cmd_buf(struct amdgpu_firmware_info *ucode,
|
|
|
+ struct psp_gfx_cmd_resp *cmd)
|
|
|
{
|
|
|
int ret;
|
|
|
uint64_t fw_mem_mc_addr = ucode->mc_addr;
|
|
@@ -262,7 +263,8 @@ int psp_v3_1_prep_cmd_buf(struct amdgpu_firmware_info *ucode, struct psp_gfx_cmd
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_ring_init(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
+static int psp_v3_1_ring_init(struct psp_context *psp,
|
|
|
+ enum psp_ring_type ring_type)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
struct psp_ring *ring;
|
|
@@ -287,7 +289,8 @@ int psp_v3_1_ring_init(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_ring_create(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
+static int psp_v3_1_ring_create(struct psp_context *psp,
|
|
|
+ enum psp_ring_type ring_type)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
unsigned int psp_ring_reg = 0;
|
|
@@ -318,7 +321,8 @@ int psp_v3_1_ring_create(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_ring_stop(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
+static int psp_v3_1_ring_stop(struct psp_context *psp,
|
|
|
+ enum psp_ring_type ring_type)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
struct psp_ring *ring;
|
|
@@ -341,7 +345,8 @@ int psp_v3_1_ring_stop(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
+static int psp_v3_1_ring_destroy(struct psp_context *psp,
|
|
|
+ enum psp_ring_type ring_type)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
struct psp_ring *ring = &psp->km_ring;
|
|
@@ -358,10 +363,10 @@ int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_cmd_submit(struct psp_context *psp,
|
|
|
- struct amdgpu_firmware_info *ucode,
|
|
|
- uint64_t cmd_buf_mc_addr, uint64_t fence_mc_addr,
|
|
|
- int index)
|
|
|
+static int psp_v3_1_cmd_submit(struct psp_context *psp,
|
|
|
+ struct amdgpu_firmware_info *ucode,
|
|
|
+ uint64_t cmd_buf_mc_addr, uint64_t fence_mc_addr,
|
|
|
+ int index)
|
|
|
{
|
|
|
unsigned int psp_write_ptr_reg = 0;
|
|
|
struct psp_gfx_rb_frame * write_frame = psp->km_ring.ring_mem;
|
|
@@ -410,9 +415,9 @@ int psp_v3_1_cmd_submit(struct psp_context *psp,
|
|
|
|
|
|
static int
|
|
|
psp_v3_1_sram_map(struct amdgpu_device *adev,
|
|
|
- unsigned int *sram_offset, unsigned int *sram_addr_reg_offset,
|
|
|
- unsigned int *sram_data_reg_offset,
|
|
|
- enum AMDGPU_UCODE_ID ucode_id)
|
|
|
+ unsigned int *sram_offset, unsigned int *sram_addr_reg_offset,
|
|
|
+ unsigned int *sram_data_reg_offset,
|
|
|
+ enum AMDGPU_UCODE_ID ucode_id)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
|
|
@@ -495,9 +500,9 @@ psp_v3_1_sram_map(struct amdgpu_device *adev,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-bool psp_v3_1_compare_sram_data(struct psp_context *psp,
|
|
|
- struct amdgpu_firmware_info *ucode,
|
|
|
- enum AMDGPU_UCODE_ID ucode_type)
|
|
|
+static bool psp_v3_1_compare_sram_data(struct psp_context *psp,
|
|
|
+ struct amdgpu_firmware_info *ucode,
|
|
|
+ enum AMDGPU_UCODE_ID ucode_type)
|
|
|
{
|
|
|
int err = 0;
|
|
|
unsigned int fw_sram_reg_val = 0;
|
|
@@ -530,7 +535,7 @@ bool psp_v3_1_compare_sram_data(struct psp_context *psp,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-bool psp_v3_1_smu_reload_quirk(struct psp_context *psp)
|
|
|
+static bool psp_v3_1_smu_reload_quirk(struct psp_context *psp)
|
|
|
{
|
|
|
struct amdgpu_device *adev = psp->adev;
|
|
|
uint32_t reg;
|
|
@@ -541,7 +546,7 @@ bool psp_v3_1_smu_reload_quirk(struct psp_context *psp)
|
|
|
return (reg & MP1_FIRMWARE_FLAGS__INTERRUPTS_ENABLED_MASK) ? true : false;
|
|
|
}
|
|
|
|
|
|
-int psp_v3_1_mode1_reset(struct psp_context *psp)
|
|
|
+static int psp_v3_1_mode1_reset(struct psp_context *psp)
|
|
|
{
|
|
|
int ret;
|
|
|
uint32_t offset;
|
|
@@ -574,3 +579,23 @@ int psp_v3_1_mode1_reset(struct psp_context *psp)
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+static const struct psp_funcs psp_v3_1_funcs = {
|
|
|
+ .init_microcode = psp_v3_1_init_microcode,
|
|
|
+ .bootloader_load_sysdrv = psp_v3_1_bootloader_load_sysdrv,
|
|
|
+ .bootloader_load_sos = psp_v3_1_bootloader_load_sos,
|
|
|
+ .prep_cmd_buf = psp_v3_1_prep_cmd_buf,
|
|
|
+ .ring_init = psp_v3_1_ring_init,
|
|
|
+ .ring_create = psp_v3_1_ring_create,
|
|
|
+ .ring_stop = psp_v3_1_ring_stop,
|
|
|
+ .ring_destroy = psp_v3_1_ring_destroy,
|
|
|
+ .cmd_submit = psp_v3_1_cmd_submit,
|
|
|
+ .compare_sram_data = psp_v3_1_compare_sram_data,
|
|
|
+ .smu_reload_quirk = psp_v3_1_smu_reload_quirk,
|
|
|
+ .mode1_reset = psp_v3_1_mode1_reset,
|
|
|
+};
|
|
|
+
|
|
|
+void psp_v3_1_set_psp_funcs(struct psp_context *psp)
|
|
|
+{
|
|
|
+ psp->funcs = &psp_v3_1_funcs;
|
|
|
+}
|