2012-09-21 10:07:47 +02:00
# ifndef _IMX_DRM_H_
# define _IMX_DRM_H_
2013-11-03 15:38:09 +00:00
struct device_node ;
2013-04-08 18:04:32 +02:00
struct drm_crtc ;
struct drm_connector ;
struct drm_device ;
2013-11-03 13:28:24 +00:00
struct drm_display_mode ;
2013-04-08 18:04:32 +02:00
struct drm_encoder ;
2012-09-21 10:07:47 +02:00
struct drm_fbdev_cma ;
2013-04-08 18:04:32 +02:00
struct drm_framebuffer ;
2013-11-03 15:38:09 +00:00
struct imx_drm_crtc ;
2013-04-08 18:04:32 +02:00
struct platform_device ;
2012-09-21 10:07:47 +02:00
2013-10-10 16:18:45 +02:00
int imx_drm_crtc_id ( struct imx_drm_crtc * crtc ) ;
2012-09-21 10:07:47 +02:00
struct imx_drm_crtc_helper_funcs {
int ( * enable_vblank ) ( struct drm_crtc * crtc ) ;
void ( * disable_vblank ) ( struct drm_crtc * crtc ) ;
2014-12-21 15:58:19 +00:00
int ( * set_interface_pix_fmt ) ( struct drm_crtc * crtc ,
2013-04-08 18:04:35 +02:00
u32 pix_fmt , int hsync_pin , int vsync_pin ) ;
2012-09-21 10:07:47 +02:00
const struct drm_crtc_helper_funcs * crtc_helper_funcs ;
const struct drm_crtc_funcs * crtc_funcs ;
} ;
2013-11-03 12:26:23 +00:00
int imx_drm_add_crtc ( struct drm_device * drm , struct drm_crtc * crtc ,
2012-09-21 10:07:47 +02:00
struct imx_drm_crtc * * new_crtc ,
const struct imx_drm_crtc_helper_funcs * imx_helper_funcs ,
2014-03-05 10:20:52 +01:00
struct device_node * port ) ;
2012-09-21 10:07:47 +02:00
int imx_drm_remove_crtc ( struct imx_drm_crtc * ) ;
int imx_drm_init_drm ( struct platform_device * pdev ,
int preferred_bpp ) ;
int imx_drm_exit_drm ( void ) ;
int imx_drm_crtc_vblank_get ( struct imx_drm_crtc * imx_drm_crtc ) ;
void imx_drm_crtc_vblank_put ( struct imx_drm_crtc * imx_drm_crtc ) ;
void imx_drm_handle_vblank ( struct imx_drm_crtc * imx_drm_crtc ) ;
void imx_drm_mode_config_init ( struct drm_device * drm ) ;
struct drm_gem_cma_object * imx_drm_fb_get_obj ( struct drm_framebuffer * fb ) ;
2013-11-03 15:52:16 +00:00
int imx_drm_panel_format_pins ( struct drm_encoder * encoder ,
2013-04-08 18:04:35 +02:00
u32 interface_pix_fmt , int hsync_pin , int vsync_pin ) ;
2013-11-03 15:52:16 +00:00
int imx_drm_panel_format ( struct drm_encoder * encoder ,
2012-09-21 10:07:47 +02:00
u32 interface_pix_fmt ) ;
2014-03-05 10:20:52 +01:00
int imx_drm_encoder_get_mux_id ( struct device_node * node ,
struct drm_encoder * encoder ) ;
2013-11-03 14:04:47 +00:00
int imx_drm_encoder_parse_of ( struct drm_device * drm ,
struct drm_encoder * encoder , struct device_node * np ) ;
2012-09-21 10:07:47 +02:00
2013-11-03 13:28:24 +00:00
void imx_drm_connector_destroy ( struct drm_connector * connector ) ;
void imx_drm_encoder_destroy ( struct drm_encoder * encoder ) ;
2013-11-09 11:20:55 +00:00
2012-09-21 10:07:47 +02:00
# endif /* _IMX_DRM_H_ */