2019-05-29 07:17:56 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2014-08-22 18:36:26 +08:00
/*
* Copyright ( C ) Fuzhou Rockchip Electronics Co . Ltd
* Author : Mark Yao < mark . yao @ rock - chips . com >
*
* based on exynos_drm_drv . h
*/
# ifndef _ROCKCHIP_DRM_DRV_H
# define _ROCKCHIP_DRM_DRV_H
# include <drm/drm_fb_helper.h>
2015-11-30 18:22:42 +08:00
# include <drm/drm_atomic_helper.h>
2014-08-22 18:36:26 +08:00
# include <drm/drm_gem.h>
# include <linux/module.h>
# include <linux/component.h>
# define ROCKCHIP_MAX_FB_BUFFER 3
# define ROCKCHIP_MAX_CONNECTOR 2
# define ROCKCHIP_MAX_CRTC 2
struct drm_device ;
struct drm_connector ;
2016-06-24 10:13:31 +08:00
struct iommu_domain ;
2014-08-22 18:36:26 +08:00
2016-04-20 10:41:42 +08:00
struct rockchip_crtc_state {
struct drm_crtc_state base ;
int output_type ;
int output_mode ;
2018-04-23 12:49:57 +02:00
int output_bpc ;
2018-10-01 14:38:45 +02:00
int output_flags ;
2016-04-20 10:41:42 +08:00
} ;
# define to_rockchip_crtc_state(s) \
container_of ( s , struct rockchip_crtc_state , base )
2014-08-22 18:36:26 +08:00
/*
* Rockchip drm private structure .
*
* @ crtc : array of enabled CRTCs , used to map from " pipe " to drm_crtc .
* @ num_pipe : number of pipes for this device .
2017-05-31 10:14:23 +08:00
* @ mm_lock : protect drm_mm on multi - threads .
2014-08-22 18:36:26 +08:00
*/
struct rockchip_drm_private {
struct drm_fb_helper fbdev_helper ;
struct drm_gem_object * fbdev_bo ;
2016-06-24 10:13:31 +08:00
struct iommu_domain * domain ;
struct mutex mm_lock ;
struct drm_mm mm ;
2016-07-24 14:57:44 +08:00
struct list_head psr_list ;
2018-03-05 23:22:54 +01:00
struct mutex psr_list_lock ;
2014-08-22 18:36:26 +08:00
} ;
int rockchip_drm_dma_attach_device ( struct drm_device * drm_dev ,
struct device * dev ) ;
void rockchip_drm_dma_detach_device ( struct drm_device * drm_dev ,
struct device * dev ) ;
2017-04-27 14:54:17 +08:00
int rockchip_drm_wait_vact_end ( struct drm_crtc * crtc , unsigned int mstimeout ) ;
2016-07-24 14:57:40 +08:00
2018-08-30 23:12:05 +02:00
int rockchip_drm_endpoint_is_subdriver ( struct device_node * ep ) ;
2017-03-22 11:21:20 +08:00
extern struct platform_driver cdn_dp_driver ;
extern struct platform_driver dw_hdmi_rockchip_pltfm_driver ;
2018-10-01 14:38:43 +02:00
extern struct platform_driver dw_mipi_dsi_rockchip_driver ;
2017-03-22 11:21:20 +08:00
extern struct platform_driver inno_hdmi_driver ;
extern struct platform_driver rockchip_dp_driver ;
2017-09-02 19:28:54 +08:00
extern struct platform_driver rockchip_lvds_driver ;
2017-03-22 11:21:20 +08:00
extern struct platform_driver vop_platform_driver ;
2019-03-30 10:56:36 +01:00
extern struct platform_driver rk3066_hdmi_driver ;
2014-08-22 18:36:26 +08:00
# endif /* _ROCKCHIP_DRM_DRV_H_ */