An active cursor plane requires a valid display mode. Change the commit_tail callback, so that it sets up the CRTC's mode before updating planes.
Unified · Split
| @@ -1068,6 +1068,11 @@ static int ast_connector_init(struct drm_device *dev) · 1067 unmodified lines | |||
| 1068 | * Mode config | 1068 | * Mode config |
| 1069 | */ | 1069 | */ |
| 1070 | 1070 | ||
| 1071 | static const struct drm_mode_config_helper_funcs | ||
| 1072 | ast_mode_config_helper_funcs = { | ||
| 1073 | .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm, | ||
| 1074 | }; | ||
| 1075 | |||
| 1071 | static const struct drm_mode_config_funcs ast_mode_config_funcs = { | 1076 | static const struct drm_mode_config_funcs ast_mode_config_funcs = { |
| 1072 | .fb_create = drm_gem_fb_create, | 1077 | .fb_create = drm_gem_fb_create, |
| 1073 | .mode_valid = drm_vram_helper_mode_valid, | 1078 | .mode_valid = drm_vram_helper_mode_valid, |
| @@ -1107,6 +1112,8 @@ int ast_mode_config_init(struct ast_private *ast) · 33 unmodified lines | |||
| 1107 | dev->mode_config.max_height = 1200; | 1112 | dev->mode_config.max_height = 1200; |
| 1108 | } | 1113 | } |
| 1109 | 1114 | ||
| 1115 | dev->mode_config.helper_private = &ast_mode_config_helper_funcs; | ||
| 1116 | |||
| 1110 | memset(&ast->primary_plane, 0, sizeof(ast->primary_plane)); | 1117 | memset(&ast->primary_plane, 0, sizeof(ast->primary_plane)); |
| 1111 | ret = drm_universal_plane_init(dev, &ast->primary_plane, 0x01, | 1118 | ret = drm_universal_plane_init(dev, &ast->primary_plane, 0x01, |
| 1112 | &ast_primary_plane_funcs, | 1119 | &ast_primary_plane_funcs, |