Skip to content

Commit 23fd03a

Browse files
committed
drm/ast: Remove vaddr field from struct ast_plane
The vaddr field in struct ast_plane serves no purpose. Its value can be calculated easily from the VRAM base plus the plane offset. Do so and remove the field. In ast_primary_plane_helper_get_scanout_buffer(), remove the test for vaddr being NULL. This cannot legally happen. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com> Link: https://lore.kernel.org/r/20250324094520.192974-3-tzimmermann@suse.de
1 parent 7cce65f commit 23fd03a

3 files changed

Lines changed: 17 additions & 14 deletions

File tree

drivers/gpu/drm/ast/ast_cursor.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ static u32 ast_cursor_calculate_checksum(const void *src, unsigned int width, un
9191
static void ast_set_cursor_image(struct ast_device *ast, const u8 *src,
9292
unsigned int width, unsigned int height)
9393
{
94-
u8 __iomem *dst = ast->cursor_plane.base.vaddr;
94+
u8 __iomem *dst = ast_plane_vaddr(&ast->cursor_plane.base);
9595
u32 csum;
9696

9797
csum = ast_cursor_calculate_checksum(src, width, height);
@@ -193,7 +193,7 @@ static void ast_cursor_plane_helper_atomic_update(struct drm_plane *plane,
193193
struct ast_device *ast = to_ast_device(plane->dev);
194194
struct drm_rect damage;
195195
u64 dst_off = ast_plane->offset;
196-
u8 __iomem *dst = ast_plane->vaddr; /* TODO: Use mapping abstraction properly */
196+
u8 __iomem *dst = ast_plane_vaddr(ast_plane); /* TODO: Use mapping abstraction properly */
197197
u8 __iomem *sig = dst + AST_HWC_SIZE; /* TODO: Use mapping abstraction properly */
198198
unsigned int offset_x, offset_y;
199199
u16 x, y;
@@ -291,17 +291,15 @@ int ast_cursor_plane_init(struct ast_device *ast)
291291
struct ast_plane *ast_plane = &ast_cursor_plane->base;
292292
struct drm_plane *cursor_plane = &ast_plane->base;
293293
unsigned long size;
294-
void __iomem *vaddr;
295294
long offset;
296295
int ret;
297296

298297
size = ast_cursor_vram_size();
299298
offset = ast_cursor_vram_offset(ast);
300299
if (offset < 0)
301300
return offset;
302-
vaddr = ast->vram + offset;
303301

304-
ret = ast_plane_init(dev, ast_plane, vaddr, offset, size,
302+
ret = ast_plane_init(dev, ast_plane, offset, size,
305303
0x01, &ast_cursor_plane_funcs,
306304
ast_cursor_plane_formats, ARRAY_SIZE(ast_cursor_plane_formats),
307305
NULL, DRM_PLANE_TYPE_CURSOR);

drivers/gpu/drm/ast/ast_drv.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ enum ast_config_mode {
122122
struct ast_plane {
123123
struct drm_plane base;
124124

125-
void __iomem *vaddr;
126125
u64 offset;
127126
unsigned long size;
128127
};
@@ -443,11 +442,12 @@ int ast_astdp_output_init(struct ast_device *ast);
443442
/* ast_mode.c */
444443
int ast_mode_config_init(struct ast_device *ast);
445444
int ast_plane_init(struct drm_device *dev, struct ast_plane *ast_plane,
446-
void __iomem *vaddr, u64 offset, unsigned long size,
445+
u64 offset, unsigned long size,
447446
uint32_t possible_crtcs,
448447
const struct drm_plane_funcs *funcs,
449448
const uint32_t *formats, unsigned int format_count,
450449
const uint64_t *format_modifiers,
451450
enum drm_plane_type type);
451+
void __iomem *ast_plane_vaddr(struct ast_plane *ast);
452452

453453
#endif

drivers/gpu/drm/ast/ast_mode.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ static void ast_wait_for_vretrace(struct ast_device *ast)
457457
*/
458458

459459
int ast_plane_init(struct drm_device *dev, struct ast_plane *ast_plane,
460-
void __iomem *vaddr, u64 offset, unsigned long size,
460+
u64 offset, unsigned long size,
461461
uint32_t possible_crtcs,
462462
const struct drm_plane_funcs *funcs,
463463
const uint32_t *formats, unsigned int format_count,
@@ -466,7 +466,6 @@ int ast_plane_init(struct drm_device *dev, struct ast_plane *ast_plane,
466466
{
467467
struct drm_plane *plane = &ast_plane->base;
468468

469-
ast_plane->vaddr = vaddr;
470469
ast_plane->offset = offset;
471470
ast_plane->size = size;
472471

@@ -475,6 +474,13 @@ int ast_plane_init(struct drm_device *dev, struct ast_plane *ast_plane,
475474
type, NULL);
476475
}
477476

477+
void __iomem *ast_plane_vaddr(struct ast_plane *ast_plane)
478+
{
479+
struct ast_device *ast = to_ast_device(ast_plane->base.dev);
480+
481+
return ast->vram + ast_plane->offset;
482+
}
483+
478484
/*
479485
* Primary plane
480486
*/
@@ -521,7 +527,7 @@ static void ast_handle_damage(struct ast_plane *ast_plane, struct iosys_map *src
521527
struct drm_framebuffer *fb,
522528
const struct drm_rect *clip)
523529
{
524-
struct iosys_map dst = IOSYS_MAP_INIT_VADDR_IOMEM(ast_plane->vaddr);
530+
struct iosys_map dst = IOSYS_MAP_INIT_VADDR_IOMEM(ast_plane_vaddr(ast_plane));
525531

526532
iosys_map_incr(&dst, drm_fb_clip_offset(fb->pitches[0], fb->format, clip));
527533
drm_fb_memcpy(&dst, fb->pitches, src, fb, clip);
@@ -594,12 +600,12 @@ static int ast_primary_plane_helper_get_scanout_buffer(struct drm_plane *plane,
594600
{
595601
struct ast_plane *ast_plane = to_ast_plane(plane);
596602

597-
if (plane->state && plane->state->fb && ast_plane->vaddr) {
603+
if (plane->state && plane->state->fb) {
598604
sb->format = plane->state->fb->format;
599605
sb->width = plane->state->fb->width;
600606
sb->height = plane->state->fb->height;
601607
sb->pitch[0] = plane->state->fb->pitches[0];
602-
iosys_map_set_vaddr_iomem(&sb->map[0], ast_plane->vaddr);
608+
iosys_map_set_vaddr_iomem(&sb->map[0], ast_plane_vaddr(ast_plane));
603609
return 0;
604610
}
605611
return -ENODEV;
@@ -626,12 +632,11 @@ static int ast_primary_plane_init(struct ast_device *ast)
626632
struct drm_device *dev = &ast->base;
627633
struct ast_plane *ast_primary_plane = &ast->primary_plane;
628634
struct drm_plane *primary_plane = &ast_primary_plane->base;
629-
void __iomem *vaddr = ast->vram;
630635
u64 offset = ast_fb_vram_offset();
631636
unsigned long size = ast_fb_vram_size(ast);
632637
int ret;
633638

634-
ret = ast_plane_init(dev, ast_primary_plane, vaddr, offset, size,
639+
ret = ast_plane_init(dev, ast_primary_plane, offset, size,
635640
0x01, &ast_primary_plane_funcs,
636641
ast_primary_plane_formats, ARRAY_SIZE(ast_primary_plane_formats),
637642
NULL, DRM_PLANE_TYPE_PRIMARY);

0 commit comments

Comments
 (0)