]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/etnaviv: Add a new function to emit a series of states to cmd stream
authorGert Wollny <gert.wollny@collabora.com>
Wed, 19 Nov 2025 16:45:49 +0000 (17:45 +0100)
committerChristian Gmeiner <cgmeiner@igalia.com>
Tue, 6 Jan 2026 15:43:18 +0000 (16:43 +0100)
v2: fix formatting and remove superfluous masking (Lucas)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Tested-by: Marek Vasut <marek.vasut@mailbox.org> # STM32MP255C DHCOS DHSBC
Link: https://patch.msgid.link/20251119164624.9297-4-gert.wollny@collabora.com
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
drivers/gpu/drm/etnaviv/etnaviv_buffer.h

index a5c347c778c1571d3497f49e9b12a03b7c64eac8..9f9eb4d545a24839cc43aa0d997f5fc0d41deaa3 100644 (file)
@@ -36,6 +36,19 @@ static inline void CMD_LOAD_STATE(struct etnaviv_cmdbuf *buffer, u32 reg,
        OUT(buffer, value);
 }
 
+static inline void CMD_LOAD_STATES_START(struct etnaviv_cmdbuf *buffer, u32 reg,
+                                        u32 nvalues)
+{
+       u32 index = reg >> VIV_FE_LOAD_STATE_HEADER_OFFSET__SHR;
+
+       buffer->user_size = ALIGN(buffer->user_size, 8);
+
+       /* write a register via cmd stream */
+       OUT(buffer, VIV_FE_LOAD_STATE_HEADER_OP_LOAD_STATE |
+                           VIV_FE_LOAD_STATE_HEADER_OFFSET(index) |
+                           VIV_FE_LOAD_STATE_HEADER_COUNT(nvalues));
+}
+
 static inline void CMD_END(struct etnaviv_cmdbuf *buffer)
 {
        buffer->user_size = ALIGN(buffer->user_size, 8);