drm/ast: cursor: Add helpers for computing location in video memory

The ast drivers stores the cursor image at the end of the video memory.
Add helpers to calculate the offset and size.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250305163207.267650-5-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann
2025-03-05 17:30:43 +01:00
parent a958c7f13b
commit 4ee3229bbe
2 changed files with 20 additions and 2 deletions

View File

@@ -45,6 +45,21 @@
#define AST_HWC_SIGNATURE_HOTSPOTX 0x14
#define AST_HWC_SIGNATURE_HOTSPOTY 0x18
static unsigned long ast_cursor_vram_size(void)
{
return AST_HWC_SIZE + AST_HWC_SIGNATURE_SIZE;
}
long ast_cursor_vram_offset(struct ast_device *ast)
{
unsigned long size = ast_cursor_vram_size();
if (size > ast->vram_size)
return -EINVAL;
return PAGE_ALIGN_DOWN(ast->vram_size - size);
}
static u32 ast_cursor_calculate_checksum(const void *src, unsigned int width, unsigned int height)
{
u32 csum = 0;
@@ -276,7 +291,7 @@ int ast_cursor_plane_init(struct ast_device *ast)
struct drm_plane *cursor_plane = &ast_plane->base;
size_t size;
void __iomem *vaddr;
u64 offset;
long offset;
int ret;
/*
@@ -290,7 +305,9 @@ int ast_cursor_plane_init(struct ast_device *ast)
return -ENOMEM;
vaddr = ast->vram + ast->vram_fb_available - size;
offset = ast->vram_fb_available - size;
offset = ast_cursor_vram_offset(ast);
if (offset < 0)
return offset;
ret = ast_plane_init(dev, ast_plane, vaddr, offset, size,
0x01, &ast_cursor_plane_funcs,

View File

@@ -432,6 +432,7 @@ int ast_vga_output_init(struct ast_device *ast);
int ast_sil164_output_init(struct ast_device *ast);
/* ast_cursor.c */
long ast_cursor_vram_offset(struct ast_device *ast);
int ast_cursor_plane_init(struct ast_device *ast);
/* ast dp501 */