2012-07-02 22:37:47 +08:00
|
|
|
#ifndef __DRM_FB_CMA_HELPER_H__
|
|
|
|
#define __DRM_FB_CMA_HELPER_H__
|
|
|
|
|
|
|
|
struct drm_fbdev_cma;
|
|
|
|
struct drm_gem_cma_object;
|
|
|
|
|
2016-04-28 23:18:35 +08:00
|
|
|
struct drm_fb_helper_surface_size;
|
|
|
|
struct drm_framebuffer_funcs;
|
|
|
|
struct drm_fb_helper_funcs;
|
2012-07-02 22:37:47 +08:00
|
|
|
struct drm_framebuffer;
|
2016-04-28 23:18:35 +08:00
|
|
|
struct drm_fb_helper;
|
2012-07-02 22:37:47 +08:00
|
|
|
struct drm_device;
|
|
|
|
struct drm_file;
|
|
|
|
struct drm_mode_fb_cmd2;
|
2016-11-15 18:55:29 +08:00
|
|
|
struct drm_plane;
|
|
|
|
struct drm_plane_state;
|
2012-07-02 22:37:47 +08:00
|
|
|
|
2016-04-28 23:18:35 +08:00
|
|
|
struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
|
drm: Rely on mode_config data for fb_helper initialization
Instead of receiving the num_crts as a parameter, we can read it
directly from the mode_config structure. I audited the drivers that
invoke this helper and I believe all of them initialize the mode_config
struct accordingly, prior to calling the fb_helper.
I used the following coccinelle hack to make this transformation, except
for the function headers and comment updates. The first and second
rules are split because I couldn't find a way to remove the unused
temporary variables at the same time I removed the parameter.
// <smpl>
@r@
expression A,B,D,E;
identifier C;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)
@@
expression A,B,C,D,E;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)
@@
identifier r.C;
type T;
expression V;
@@
- T C;
<...
when != C
- C = V;
...>
// </smpl>
Changes since v1:
- Rebased on top of the tip of drm-misc-next.
- Remove mention to sti since a proper fix got merged.
Suggested-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170202162640.27261-1-krisman@collabora.co.uk
2017-02-03 00:26:40 +08:00
|
|
|
unsigned int preferred_bpp, unsigned int max_conn_count,
|
|
|
|
const struct drm_framebuffer_funcs *funcs);
|
2012-07-02 22:37:47 +08:00
|
|
|
struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
|
drm: Rely on mode_config data for fb_helper initialization
Instead of receiving the num_crts as a parameter, we can read it
directly from the mode_config structure. I audited the drivers that
invoke this helper and I believe all of them initialize the mode_config
struct accordingly, prior to calling the fb_helper.
I used the following coccinelle hack to make this transformation, except
for the function headers and comment updates. The first and second
rules are split because I couldn't find a way to remove the unused
temporary variables at the same time I removed the parameter.
// <smpl>
@r@
expression A,B,D,E;
identifier C;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)
@@
expression A,B,C,D,E;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)
@@
identifier r.C;
type T;
expression V;
@@
- T C;
<...
when != C
- C = V;
...>
// </smpl>
Changes since v1:
- Rebased on top of the tip of drm-misc-next.
- Remove mention to sti since a proper fix got merged.
Suggested-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170202162640.27261-1-krisman@collabora.co.uk
2017-02-03 00:26:40 +08:00
|
|
|
unsigned int preferred_bpp, unsigned int max_conn_count);
|
2012-07-02 22:37:47 +08:00
|
|
|
void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
|
|
|
|
|
|
|
|
void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
|
|
|
|
void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
|
2016-02-12 09:30:14 +08:00
|
|
|
void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, int state);
|
2017-01-23 02:11:09 +08:00
|
|
|
void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
|
|
|
|
int state);
|
2016-04-28 23:18:35 +08:00
|
|
|
|
|
|
|
void drm_fb_cma_destroy(struct drm_framebuffer *fb);
|
|
|
|
int drm_fb_cma_create_handle(struct drm_framebuffer *fb,
|
|
|
|
struct drm_file *file_priv, unsigned int *handle);
|
2012-07-02 22:37:47 +08:00
|
|
|
|
2016-05-13 02:25:22 +08:00
|
|
|
struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device *dev,
|
|
|
|
struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd,
|
|
|
|
const struct drm_framebuffer_funcs *funcs);
|
2012-07-02 22:37:47 +08:00
|
|
|
struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev,
|
2015-11-12 01:11:29 +08:00
|
|
|
struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd);
|
2012-07-02 22:37:47 +08:00
|
|
|
|
|
|
|
struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
|
|
|
|
unsigned int plane);
|
|
|
|
|
2016-11-14 18:07:31 +08:00
|
|
|
int drm_fb_cma_prepare_fb(struct drm_plane *plane,
|
|
|
|
struct drm_plane_state *state);
|
|
|
|
|
2012-12-11 00:46:43 +08:00
|
|
|
#ifdef CONFIG_DEBUG_FS
|
2016-02-08 20:58:56 +08:00
|
|
|
struct seq_file;
|
|
|
|
|
2012-12-11 00:46:43 +08:00
|
|
|
int drm_fb_cma_debugfs_show(struct seq_file *m, void *arg);
|
|
|
|
#endif
|
|
|
|
|
2012-07-02 22:37:47 +08:00
|
|
|
#endif
|
|
|
|
|