drm/v3d: client ranges from axi_ids are different with V3D 7.1

The client mask has been reduced from 8 bits on V3D 4.1 to 7 bits
on V3D 7.1, so the ranges for each client are not compatible.

On V3D 7.1, the CSD client can also report MMU errors.
Therefore, add its AXI ID to the IDs list.

Fixes: 0ad5bc1ce4 ("drm/v3d: fix up register addresses for V3D 7.x")
Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Link: https://lore.kernel.org/r/20250425122522.18425-2-jmcasanova@igalia.com
Signed-off-by: Maíra Canal <mcanal@igalia.com>
This commit is contained in:
Jose Maria Casanova Crespo 2025-04-25 14:25:08 +02:00 committed by Maíra Canal
parent d0e4c65370
commit a22e0051f9
No known key found for this signature in database
GPG Key ID: 3FF30E8A7688FAAA

View File

@ -199,12 +199,33 @@ v3d_hub_irq(int irq, void *arg)
{0xA0, 0xA1, "TFU"},
{0xC0, 0xE0, "MMU"},
{0xE0, 0xE1, "GMP"},
}, v3d71_axi_ids[] = {
{0x00, 0x30, "L2T"},
{0x30, 0x38, "CLE"},
{0x38, 0x39, "PTB"},
{0x39, 0x3A, "PSE"},
{0x3A, 0x3B, "CSD"},
{0x40, 0x60, "TLB"},
{0x60, 0x70, "MMU"},
{0x7C, 0x7E, "TFU"},
{0x7F, 0x80, "GMP"},
};
const char *client = "?";
V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL));
if (v3d->ver >= V3D_GEN_41) {
if (v3d->ver >= V3D_GEN_71) {
size_t i;
axi_id = axi_id & 0x7F;
for (i = 0; i < ARRAY_SIZE(v3d71_axi_ids); i++) {
if (axi_id >= v3d71_axi_ids[i].begin &&
axi_id < v3d71_axi_ids[i].end) {
client = v3d71_axi_ids[i].client;
break;
}
}
} else if (v3d->ver >= V3D_GEN_41) {
size_t i;
axi_id = axi_id & 0xFF;