From c2290843dfc6fa51e605249cde9607515b9c26e3 Mon Sep 17 00:00:00 2001
From: Philipp Zabel
Date: Tue, 23 Apr 2024 15:23:59 +0200
Subject: [PATCH] etnaviv: Add nn_core_version field to etna_specs
Use the NN_XYDP0 and NN_VIP7 feature flags to determine the NN core
version [1] and store it in etna_specs.
[1] https://github.com/nxp-imx/linux-imx/blob/lf-6.1.36-2.1.0/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware_func.c#L5464-L5465
Signed-off-by: Philipp Zabel
Reviewed-by: Christian Gmeiner
Part-of:
---
src/gallium/drivers/etnaviv/etnaviv_internal.h | 2 ++
src/gallium/drivers/etnaviv/etnaviv_screen.c | 7 +++++++
2 files changed, 9 insertions(+)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h
index 8ef921cca0f..f5d71a6c81b 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_internal.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h
@@ -145,6 +145,8 @@ struct etna_specs {
unsigned num_constants;
/* number of NN cores */
unsigned nn_core_count;
+ /* architecture version of NN cores */
+ unsigned nn_core_version;
/* number of MAD units per NN core */
unsigned nn_mad_per_core;
/* number of TP cores */
diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index 98dfb37aeec..499e3adce83 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -859,6 +859,13 @@ etna_get_specs(struct etna_screen *screen)
screen->specs.on_chip_sram_size = info->npu.on_chip_sram_size;
screen->specs.axi_sram_size = info->npu.axi_sram_size;
screen->specs.nn_zrl_bits = info->npu.nn_zrl_bits;
+
+ if (etna_core_has_feature(info, ETNA_FEATURE_NN_XYDP0))
+ screen->specs.nn_core_version = 8;
+ else if (etna_core_has_feature(info, ETNA_FEATURE_VIP_V7))
+ screen->specs.nn_core_version = 7;
+ else
+ screen->specs.nn_core_version = 6;
}
/* Figure out gross GPU architecture. See rnndb/common.xml for a specific