diff options
Diffstat (limited to 'drivers/gpu/drm/tiny/bochs.c')
| -rw-r--r-- | drivers/gpu/drm/tiny/bochs.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c index 8706763af8fb..8d3b7c4fa6a4 100644 --- a/drivers/gpu/drm/tiny/bochs.c +++ b/drivers/gpu/drm/tiny/bochs.c @@ -19,6 +19,7 @@  #include <drm/drm_gem_shmem_helper.h>  #include <drm/drm_managed.h>  #include <drm/drm_module.h> +#include <drm/drm_panic.h>  #include <drm/drm_plane_helper.h>  #include <drm/drm_probe_helper.h> @@ -469,10 +470,28 @@ static void bochs_primary_plane_helper_atomic_update(struct drm_plane *plane,  	bochs_hw_setformat(bochs, fb->format);  } +static int bochs_primary_plane_helper_get_scanout_buffer(struct drm_plane *plane, +							 struct drm_scanout_buffer *sb) +{ +	struct bochs_device *bochs = to_bochs_device(plane->dev); +	struct iosys_map map = IOSYS_MAP_INIT_VADDR_IOMEM(bochs->fb_map); + +	if (plane->state && plane->state->fb) { +		sb->format = plane->state->fb->format; +		sb->width = plane->state->fb->width; +		sb->height = plane->state->fb->height; +		sb->pitch[0] = plane->state->fb->pitches[0]; +		sb->map[0] = map; +		return 0; +	} +	return -ENODEV; +} +  static const struct drm_plane_helper_funcs bochs_primary_plane_helper_funcs = {  	DRM_GEM_SHADOW_PLANE_HELPER_FUNCS,  	.atomic_check = bochs_primary_plane_helper_atomic_check,  	.atomic_update = bochs_primary_plane_helper_atomic_update, +	.get_scanout_buffer = bochs_primary_plane_helper_get_scanout_buffer,  };  static const struct drm_plane_funcs bochs_primary_plane_funcs = {  | 
