blob: faf56c53df284def80f3b96be854851bb10d11d8 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +02002#ifndef __DRM_FB_CMA_HELPER_H__
3#define __DRM_FB_CMA_HELPER_H__
4
5struct drm_fbdev_cma;
6struct drm_gem_cma_object;
7
Noralf Trønnes199c7712016-04-28 17:18:35 +02008struct drm_fb_helper_surface_size;
9struct drm_framebuffer_funcs;
10struct drm_fb_helper_funcs;
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020011struct drm_framebuffer;
Noralf Trønnes199c7712016-04-28 17:18:35 +020012struct drm_fb_helper;
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020013struct drm_device;
14struct drm_file;
15struct drm_mode_fb_cmd2;
Marek Vasut196594e2016-11-15 11:55:29 +010016struct drm_plane;
17struct drm_plane_state;
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020018
Noralf Trønnes199c7712016-04-28 17:18:35 +020019struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
Gabriel Krisman Bertazie4563f62017-02-02 14:26:40 -020020 unsigned int preferred_bpp, unsigned int max_conn_count,
21 const struct drm_framebuffer_funcs *funcs);
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020022struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
Gabriel Krisman Bertazie4563f62017-02-02 14:26:40 -020023 unsigned int preferred_bpp, unsigned int max_conn_count);
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020024void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
25
26void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
27void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
Liviu Dudaud0a29872017-06-20 11:23:20 +010028void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
Noralf Trønnesa4405b52017-01-22 19:11:09 +010029void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
Liviu Dudaud0a29872017-06-20 11:23:20 +010030 bool state);
Noralf Trønnes199c7712016-04-28 17:18:35 +020031
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020032struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
33 unsigned int plane);
34
Yannick Fertre4636ce92017-04-14 12:13:32 +020035dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
36 struct drm_plane_state *state,
37 unsigned int plane);
38
Rob Clark6f646092012-12-10 10:46:43 -060039#ifdef CONFIG_DEBUG_FS
Maxime Ripard80588a82016-02-08 13:58:56 +010040struct seq_file;
41
Rob Clark6f646092012-12-10 10:46:43 -060042int drm_fb_cma_debugfs_show(struct seq_file *m, void *arg);
43#endif
44
Lars-Peter Clausen2e3b3c42012-07-02 16:37:47 +020045#endif
46