mirror of
https://github.com/torvalds/linux.git
synced 2026-10-26 20:46:02 +01:00
drm/panthor: Add support for Mali-Gx15 family of GPUs
Mali-Gx15 introduces a new GPU_FEATURES register that provides information about GPU-wide supported features. The register value will be passed on to userspace via gpu_info. Additionally, Mali-Gx15 presents an 'Immortalis' naming variant depending on the shader core count and presence of Ray Intersection feature support. This patch adds: - support for correctly identifying the model names for Mali-Gx15 GPUs. - arch 11.8 FW binary support Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Liviu Dudau <liviu.dudau@arm.com> Signed-off-by: Karunika Choo <karunika.choo@arm.com> Signed-off-by: Steven Price <steven.price@arm.com> Link: https://lore.kernel.org/r/20250807162633.3666310-5-karunika.choo@arm.com
This commit is contained in:
parent
2c0d0a81c0
commit
3b1dc21d6d
|
|
@ -1404,3 +1404,4 @@ int panthor_fw_init(struct panthor_device *ptdev)
|
|||
MODULE_FIRMWARE("arm/mali/arch10.8/mali_csffw.bin");
|
||||
MODULE_FIRMWARE("arm/mali/arch10.10/mali_csffw.bin");
|
||||
MODULE_FIRMWARE("arm/mali/arch10.12/mali_csffw.bin");
|
||||
MODULE_FIRMWARE("arm/mali/arch11.8/mali_csffw.bin");
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ static char *get_gpu_model_name(struct panthor_device *ptdev)
|
|||
const u32 gpu_id = ptdev->gpu_info.gpu_id;
|
||||
const u32 product_id = GPU_PROD_ID_MAKE(GPU_ARCH_MAJOR(gpu_id),
|
||||
GPU_PROD_MAJOR(gpu_id));
|
||||
const bool ray_intersection = !!(ptdev->gpu_info.gpu_features &
|
||||
GPU_FEATURES_RAY_INTERSECTION);
|
||||
const u8 shader_core_count = hweight64(ptdev->gpu_info.shader_present);
|
||||
|
||||
switch (product_id) {
|
||||
case GPU_PROD_ID_MAKE(10, 2):
|
||||
|
|
@ -23,6 +26,15 @@ static char *get_gpu_model_name(struct panthor_device *ptdev)
|
|||
return "Mali-G310";
|
||||
case GPU_PROD_ID_MAKE(10, 7):
|
||||
return "Mali-G610";
|
||||
case GPU_PROD_ID_MAKE(11, 2):
|
||||
if (shader_core_count > 10 && ray_intersection)
|
||||
return "Mali-G715-Immortalis";
|
||||
else if (shader_core_count >= 7)
|
||||
return "Mali-G715";
|
||||
|
||||
fallthrough;
|
||||
case GPU_PROD_ID_MAKE(11, 3):
|
||||
return "Mali-G615";
|
||||
}
|
||||
|
||||
return "(Unknown Mali GPU)";
|
||||
|
|
@ -53,6 +65,9 @@ static void panthor_gpu_info_init(struct panthor_device *ptdev)
|
|||
ptdev->gpu_info.shader_present = gpu_read64(ptdev, GPU_SHADER_PRESENT);
|
||||
ptdev->gpu_info.tiler_present = gpu_read64(ptdev, GPU_TILER_PRESENT);
|
||||
ptdev->gpu_info.l2_present = gpu_read64(ptdev, GPU_L2_PRESENT);
|
||||
|
||||
/* Introduced in arch 11.x */
|
||||
ptdev->gpu_info.gpu_features = gpu_read64(ptdev, GPU_FEATURES);
|
||||
}
|
||||
|
||||
static void panthor_hw_info_init(struct panthor_device *ptdev)
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@
|
|||
#define GPU_PWR_OVERRIDE0 0x54
|
||||
#define GPU_PWR_OVERRIDE1 0x58
|
||||
|
||||
#define GPU_FEATURES 0x60
|
||||
#define GPU_FEATURES_RAY_INTERSECTION BIT(2)
|
||||
|
||||
#define GPU_TIMESTAMP_OFFSET 0x88
|
||||
#define GPU_CYCLE_COUNT 0x90
|
||||
#define GPU_TIMESTAMP 0x98
|
||||
|
|
|
|||
|
|
@ -327,6 +327,9 @@ struct drm_panthor_gpu_info {
|
|||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @gpu_features: Bitmask describing supported GPU-wide features */
|
||||
__u64 gpu_features;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user