Add an identity entry for the VIP9000 NPU found in the Allwinner T527, as used on the Orange Pi 4A. Match model 0x9000, revision 0x9003, product 0x05090009, customer 0x10000016 and ECO 0x06000000.
Provide the core counts, limits and feature masks for this variant instead of relying on the register-based fallback. It has six NN cores and one shader core. Include SECURITY_AHB in minor_features10. The corresponding vip9000nano-si+ entry in the Orange Pi BSP feature database advertises both SECURITY and SECURITY_AHB. This lets the existing capability check select ETNA_SEC_KERNEL without a model-specific security override. Validated on an Orange Pi 4A with a 6.18.38-based kernel and patched Mesa/Teflon. Full quantized MobileNet inference completes with identical NN intermediate and final outputs to the vendor BSP. Two additional runs without per-operation instrumentation complete without a hang. The Mesa fixes are separate from this hardware database addition. Signed-off-by: Phong LE <[email protected]> --- This entry combines the locally tested T527 HWDB addition and the SECURITY_AHB correction. Prepared against torvalds/linux 6812ce4e4379ffc99c52401ec28f0d7ffbc36206 (etnaviv_hwdb.c). Hardware testing used the local 6.18.38-based tree, not this upstream revision. Vendor reference: Orange Pi T527 BSP, bsp/drivers/npu/aw_nna_galcore/hal/inc/gc_feature_database.h, entry vip9000nano-si+, customer 0x10000016. The SECURITY and SECURITY_AHB fields are both set to 1. Test details: 5,043,689 NN output elements and all 1,001 final output values match the captured BSP reference. This tests one model/input; it does not validate every reported capability or the graphics paths. drivers/gpu/drm/etnaviv/etnaviv_hwdb.c | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c index 32d710baf17f..4df463ef6e60 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c @@ -292,6 +292,38 @@ static const struct etnaviv_chip_identity etnaviv_chip_identities[] = { .minor_features10 = 0x108048c0, .minor_features11 = 0x00000010, }, + { + .model = 0x9000, + .revision = 0x9003, + .product_id = 0x5090009, + .customer_id = 0x10000016, + .eco_id = 0x6000000, + .stream_count = 8, + .register_max = 64, + .thread_count = 256, + .shader_core_count = 1, + .nn_core_count = 6, + .vertex_cache_size = 16, + .vertex_output_buffer_size = 1024, + .pixel_pipes = 1, + .instruction_count = 512, + .num_constants = 320, + .buffer_size = 0, + .varyings_count = 16, + .features = 0xe0287cac, + .minor_features0 = 0xc1799eff, + .minor_features1 = 0xfefbfadb, + .minor_features2 = 0xeb9d6fbf, + .minor_features3 = 0xedfffced, + .minor_features4 = 0xd30dafc7, + .minor_features5 = 0x7b5ac333, + .minor_features6 = 0xf239c400, + .minor_features7 = 0xffffe9bf, + .minor_features8 = 0x2003dfce, + .minor_features9 = 0x01081841, + .minor_features10 = 0x01004048, + .minor_features11 = 0x00010000, + }, }; bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu) base-commit: af32da41b0327b9c6a37856ba82b6760d6c8d10e -- 2.43.0
