summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/ast/ast_post.h
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2025-07-06 18:26:42 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2025-07-09 14:36:21 +0200
commiteb104c69db707ce0208f753a897dadd39f51342f (patch)
tree62ccac24b63aa647958d376fe1f9fb2f90d680e4 /drivers/gpu/drm/ast/ast_post.h
parentf28f15e6d009c029a28eebc10944362346e34554 (diff)
drm/ast: Handle known struct ast_dramstruct with helpers
Most of struct ast_dramstruct stores hardware state. Some index values have known or special meaning. The known values are - 0xffff - Terminal entry in the array - 0xff00 - Delays the programming for usecs - 0x0004 - Sets the type of DRAM Add constants and helper macros for these cases. Also add a helper macro for testing. Update Gen1 and Gen2+ accordingly. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com> Link: https://lore.kernel.org/r/20250706162816.211552-8-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/ast/ast_post.h')
-rw-r--r--drivers/gpu/drm/ast/ast_post.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/ast/ast_post.h b/drivers/gpu/drm/ast/ast_post.h
index 3a55c32a7eb7..44136856952f 100644
--- a/drivers/gpu/drm/ast/ast_post.h
+++ b/drivers/gpu/drm/ast/ast_post.h
@@ -3,6 +3,7 @@
#ifndef AST_POST_H
#define AST_POST_H
+#include <linux/limits.h>
#include <linux/types.h>
struct ast_device;
@@ -13,6 +14,27 @@ struct ast_dramstruct {
u32 data;
};
+/* hardware fields */
+#define __AST_DRAMSTRUCT_DRAM_TYPE 0x0004
+
+/* control commands */
+#define __AST_DRAMSTRUCT_UDELAY 0xff00
+#define __AST_DRAMSTRUCT_INVALID 0xffff
+
+#define __AST_DRAMSTRUCT_INDEX(_name) \
+ (__AST_DRAMSTRUCT_ ## _name)
+
+#define AST_DRAMSTRUCT_INIT(_name, _value) \
+ { __AST_DRAMSTRUCT_INDEX(_name), (_value) }
+
+#define AST_DRAMSTRUCT_UDELAY(_usecs) \
+ AST_DRAMSTRUCT_INIT(UDELAY, _usecs)
+#define AST_DRAMSTRUCT_INVALID \
+ AST_DRAMSTRUCT_INIT(INVALID, U32_MAX)
+
+#define AST_DRAMSTRUCT_IS(_entry, _name) \
+ ((_entry)->index == __AST_DRAMSTRUCT_INDEX(_name))
+
u32 __ast_mindwm(void __iomem *regs, u32 r);
void __ast_moutdwm(void __iomem *regs, u32 r, u32 v);