2012-07-02 18:37:47 +04: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 18:18:35 +03:00
struct drm_fb_helper_surface_size ;
struct drm_framebuffer_funcs ;
struct drm_fb_helper_funcs ;
2012-07-02 18:37:47 +04:00
struct drm_framebuffer ;
2016-04-28 18:18:35 +03:00
struct drm_fb_helper ;
2012-07-02 18:37:47 +04:00
struct drm_device ;
struct drm_file ;
struct drm_mode_fb_cmd2 ;
2016-11-15 13:55:29 +03:00
struct drm_plane ;
struct drm_plane_state ;
2012-07-02 18:37:47 +04:00
2016-04-28 18:18:35 +03: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-02 19:26:40 +03:00
unsigned int preferred_bpp , unsigned int max_conn_count ,
const struct drm_framebuffer_funcs * funcs ) ;
2012-07-02 18:37:47 +04: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-02 19:26:40 +03:00
unsigned int preferred_bpp , unsigned int max_conn_count ) ;
2012-07-02 18:37:47 +04: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 04:30:14 +03:00
void drm_fbdev_cma_set_suspend ( struct drm_fbdev_cma * fbdev_cma , int state ) ;
2017-01-22 21:11:09 +03:00
void drm_fbdev_cma_set_suspend_unlocked ( struct drm_fbdev_cma * fbdev_cma ,
int state ) ;
2016-04-28 18:18:35 +03: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 18:37:47 +04:00
2016-05-12 21:25:22 +03: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 18:37:47 +04:00
struct drm_framebuffer * drm_fb_cma_create ( struct drm_device * dev ,
2015-11-11 20:11:29 +03:00
struct drm_file * file_priv , const struct drm_mode_fb_cmd2 * mode_cmd ) ;
2012-07-02 18:37:47 +04:00
struct drm_gem_cma_object * drm_fb_cma_get_gem_obj ( struct drm_framebuffer * fb ,
unsigned int plane ) ;
2017-04-14 13:13:32 +03:00
dma_addr_t drm_fb_cma_get_gem_addr ( struct drm_framebuffer * fb ,
struct drm_plane_state * state ,
unsigned int plane ) ;
2016-11-14 13:07:31 +03:00
int drm_fb_cma_prepare_fb ( struct drm_plane * plane ,
struct drm_plane_state * state ) ;
2012-12-10 20:46:43 +04:00
# ifdef CONFIG_DEBUG_FS
2016-02-08 15:58:56 +03:00
struct seq_file ;
2012-12-10 20:46:43 +04:00
int drm_fb_cma_debugfs_show ( struct seq_file * m , void * arg ) ;
# endif
2012-07-02 18:37:47 +04:00
# endif