xref: /linux/drivers/gpu/drm/sysfb/drm_sysfb_helper.h (revision 559d105f3ad3f0e8bd9d2c2fbdfe93391fae2602)
1b5626f6fSThomas Zimmermann /* SPDX-License-Identifier: GPL-2.0-only */
2b5626f6fSThomas Zimmermann 
3b5626f6fSThomas Zimmermann #ifndef DRM_SYSFB_HELPER_H
4b5626f6fSThomas Zimmermann #define DRM_SYSFB_HELPER_H
5b5626f6fSThomas Zimmermann 
6b5626f6fSThomas Zimmermann #include <linux/container_of.h>
7b5626f6fSThomas Zimmermann #include <linux/iosys-map.h>
8b5626f6fSThomas Zimmermann 
9b5626f6fSThomas Zimmermann #include <drm/drm_device.h>
10b5626f6fSThomas Zimmermann #include <drm/drm_modes.h>
11b5626f6fSThomas Zimmermann 
12b5626f6fSThomas Zimmermann struct drm_format_info;
13b5626f6fSThomas Zimmermann 
14333376e9SThomas Zimmermann struct drm_display_mode drm_sysfb_mode(unsigned int width,
15333376e9SThomas Zimmermann 				       unsigned int height,
16333376e9SThomas Zimmermann 				       unsigned int width_mm,
17333376e9SThomas Zimmermann 				       unsigned int height_mm);
18333376e9SThomas Zimmermann 
19b5626f6fSThomas Zimmermann /*
20b5626f6fSThomas Zimmermann  * Device
21b5626f6fSThomas Zimmermann  */
22b5626f6fSThomas Zimmermann 
23b5626f6fSThomas Zimmermann struct drm_sysfb_device {
24b5626f6fSThomas Zimmermann 	struct drm_device dev;
25b5626f6fSThomas Zimmermann 
26b5626f6fSThomas Zimmermann 	/* hardware settings */
27b5626f6fSThomas Zimmermann 	struct drm_display_mode fb_mode;
28b5626f6fSThomas Zimmermann 	const struct drm_format_info *fb_format;
29b5626f6fSThomas Zimmermann 	unsigned int fb_pitch;
30b5626f6fSThomas Zimmermann 
31b5626f6fSThomas Zimmermann 	/* hardware-framebuffer kernel address */
32b5626f6fSThomas Zimmermann 	struct iosys_map fb_addr;
33b5626f6fSThomas Zimmermann };
34b5626f6fSThomas Zimmermann 
35b5626f6fSThomas Zimmermann static inline struct drm_sysfb_device *to_drm_sysfb_device(struct drm_device *dev)
36b5626f6fSThomas Zimmermann {
37b5626f6fSThomas Zimmermann 	return container_of(dev, struct drm_sysfb_device, dev);
38b5626f6fSThomas Zimmermann }
39b5626f6fSThomas Zimmermann 
40*559d105fSThomas Zimmermann /*
41*559d105fSThomas Zimmermann  * Mode config
42*559d105fSThomas Zimmermann  */
43*559d105fSThomas Zimmermann 
44*559d105fSThomas Zimmermann #define DRM_SYSFB_MODE_CONFIG_FUNCS \
45*559d105fSThomas Zimmermann 	.fb_create = drm_gem_fb_create_with_dirty, \
46*559d105fSThomas Zimmermann 	.atomic_check = drm_atomic_helper_check, \
47*559d105fSThomas Zimmermann 	.atomic_commit = drm_atomic_helper_commit
48*559d105fSThomas Zimmermann 
49b5626f6fSThomas Zimmermann #endif
50