drm/ast: Add cursor-plane data structure
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 9 Feb 2021 13:46:28 +0000 (14:46 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 17 Feb 2021 11:40:09 +0000 (12:40 +0100)
Cursor state is currently located throughout struct ast_private. Having
struct ast_cursor_plane as dedicated data structure for cursors helps to
organize the modesetting code.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210209134632.12157-7-tzimmermann@suse.de
drivers/gpu/drm/ast/ast_drv.h
drivers/gpu/drm/ast/ast_mode.c

index 2761fa5..9eefd3f 100644 (file)
@@ -81,6 +81,9 @@ enum ast_tx_chip {
 #define AST_DRAM_4Gx16   7
 #define AST_DRAM_8Gx16   8
 
+/*
+ * Cursor plane
+ */
 
 #define AST_MAX_HWC_WIDTH      64
 #define AST_MAX_HWC_HEIGHT     64
@@ -99,6 +102,20 @@ enum ast_tx_chip {
 #define AST_HWC_SIGNATURE_HOTSPOTX     0x14
 #define AST_HWC_SIGNATURE_HOTSPOTY     0x18
 
+struct ast_cursor_plane {
+       struct drm_plane base;
+};
+
+static inline struct ast_cursor_plane *
+to_ast_cursor_plane(struct drm_plane *plane)
+{
+       return container_of(plane, struct ast_cursor_plane, base);
+}
+
+/*
+ * Connector with i2c channel
+ */
+
 struct ast_i2c_chan {
        struct i2c_adapter adapter;
        struct drm_device *dev;
@@ -116,6 +133,10 @@ to_ast_connector(struct drm_connector *connector)
        return container_of(connector, struct ast_connector, base);
 }
 
+/*
+ * Device
+ */
+
 struct ast_private {
        struct drm_device base;
 
@@ -136,7 +157,7 @@ struct ast_private {
        } cursor;
 
        struct drm_plane primary_plane;
-       struct drm_plane cursor_plane;
+       struct ast_cursor_plane cursor_plane;
        struct drm_crtc crtc;
        struct drm_encoder encoder;
        struct ast_connector connector;
index 968ee0c..9dc70aa 100644 (file)
@@ -932,7 +932,8 @@ static const struct drm_plane_funcs ast_cursor_plane_funcs = {
 static int ast_cursor_plane_init(struct ast_private *ast)
 {
        struct drm_device *dev = &ast->base;
-       struct drm_plane *cursor_plane = &ast->cursor_plane;
+       struct ast_cursor_plane *ast_cursor_plane = &ast->cursor_plane;
+       struct drm_plane *cursor_plane = &ast_cursor_plane->base;
        size_t size, i;
        struct drm_gem_vram_object *gbo;
        int ret;
@@ -1178,7 +1179,7 @@ static int ast_crtc_init(struct drm_device *dev)
        int ret;
 
        ret = drm_crtc_init_with_planes(dev, crtc, &ast->primary_plane,
-                                       &ast->cursor_plane, &ast_crtc_funcs,
+                                       &ast->cursor_plane.base, &ast_crtc_funcs,
                                        NULL);
        if (ret)
                return ret;