summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/imagination/pvr_fw.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/imagination/pvr_fw.c')
-rw-r--r--drivers/gpu/drm/imagination/pvr_fw.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/imagination/pvr_fw.c b/drivers/gpu/drm/imagination/pvr_fw.c
index 962b8cb2119e..b2f8cba77346 100644
--- a/drivers/gpu/drm/imagination/pvr_fw.c
+++ b/drivers/gpu/drm/imagination/pvr_fw.c
@@ -941,7 +941,7 @@ pvr_fw_init(struct pvr_device *pvr_dev)
static const struct pvr_fw_defs *fw_defs[PVR_FW_PROCESSOR_TYPE_COUNT] = {
[PVR_FW_PROCESSOR_TYPE_META] = &pvr_fw_defs_meta,
[PVR_FW_PROCESSOR_TYPE_MIPS] = &pvr_fw_defs_mips,
- [PVR_FW_PROCESSOR_TYPE_RISCV] = NULL,
+ [PVR_FW_PROCESSOR_TYPE_RISCV] = &pvr_fw_defs_riscv,
};
u32 kccb_size_log2 = ROGUE_FWIF_KCCB_NUMCMDS_LOG2_DEFAULT;
@@ -954,13 +954,6 @@ pvr_fw_init(struct pvr_device *pvr_dev)
fw_dev->defs = fw_defs[fw_dev->processor_type];
- /*
- * Not all firmware processor types are currently supported.
- * Once they are, this check can be removed.
- */
- if (!fw_dev->defs)
- return -EINVAL;
-
err = fw_dev->defs->init(pvr_dev);
if (err)
return err;
@@ -1466,6 +1459,15 @@ void pvr_fw_object_get_fw_addr_offset(struct pvr_fw_object *fw_obj, u32 offset,
*fw_addr_out = pvr_dev->fw_dev.defs->get_fw_addr_with_offset(fw_obj, offset);
}
+u64
+pvr_fw_obj_get_gpu_addr(struct pvr_fw_object *fw_obj)
+{
+ struct pvr_device *pvr_dev = to_pvr_device(gem_from_pvr_gem(fw_obj->gem)->dev);
+ struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev;
+
+ return fw_dev->fw_heap_info.gpu_addr + fw_obj->fw_addr_offset;
+}
+
/*
* pvr_fw_hard_reset() - Re-initialise the FW code and data segments, and reset all global FW
* structures