xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rockchip/rockchip_drm_fb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
4  * Author:Mark Yao <mark.yao@rock-chips.com>
5  */
6 
7 #ifndef _ROCKCHIP_DRM_FB_H
8 #define _ROCKCHIP_DRM_FB_H
9 
10 #include "rockchip_drm_gem.h"
11 
12 #define ROCKCHIP_DRM_MODE_LOGO_FB	(1<<31) /* used for kernel logo, follow the define: DRM_MODE_FB_MODIFIERS at drm_mode.h */
13 
14 struct drm_framebuffer *
15 rockchip_drm_framebuffer_init(struct drm_device *dev,
16 			      const struct drm_mode_fb_cmd2 *mode_cmd,
17 			      struct drm_gem_object *obj);
18 void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb);
19 
20 void rockchip_drm_mode_config_init(struct drm_device *dev);
21 struct drm_framebuffer *
22 rockchip_drm_logo_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd,
23 			   struct rockchip_logo *logo);
24 struct drm_framebuffer *
25 rockchip_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd,
26 		  struct drm_gem_object **obj, unsigned int num_planes);
27 
28 #define to_rockchip_logo_fb(x) container_of(x, struct rockchip_drm_logo_fb, fb)
29 
30 struct rockchip_drm_logo_fb {
31 	struct drm_framebuffer fb;
32 	struct rockchip_logo *logo;
33 	struct rockchip_gem_object rk_obj;
34 	/*
35 	 * Used for delayed logo fb release
36 	 */
37 	struct delayed_work destroy_work;
38 };
39 
40 #endif /* _ROCKCHIP_DRM_FB_H */
41