2019-05-27 08:55:21 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2016-01-04 18:36:34 +01:00
/*
* Copyright ( c ) 2015 MediaTek Inc .
*/
# ifndef MTK_DRM_DRV_H
# define MTK_DRM_DRV_H
# include <linux/io.h>
# include "mtk_drm_ddp_comp.h"
2018-06-20 16:19:30 +08:00
# define MAX_CRTC 3
2016-01-04 18:36:34 +01:00
# define MAX_CONNECTOR 2
struct device ;
struct device_node ;
struct drm_crtc ;
struct drm_device ;
struct drm_fb_helper ;
struct drm_property ;
struct regmap ;
2017-03-31 19:30:30 +08:00
struct mtk_mmsys_driver_data {
const enum mtk_ddp_comp_id * main_path ;
unsigned int main_len ;
const enum mtk_ddp_comp_id * ext_path ;
unsigned int ext_len ;
2018-06-20 16:19:30 +08:00
const enum mtk_ddp_comp_id * third_path ;
unsigned int third_len ;
2017-03-31 19:30:31 +08:00
bool shadow_register ;
2017-03-31 19:30:30 +08:00
} ;
2016-01-04 18:36:34 +01:00
struct mtk_drm_private {
struct drm_device * drm ;
struct device * dma_dev ;
unsigned int num_pipes ;
struct device_node * mutex_node ;
struct device * mutex_dev ;
void __iomem * config_regs ;
struct device_node * comp_node [ DDP_COMPONENT_ID_MAX ] ;
struct mtk_ddp_comp * ddp_comp [ DDP_COMPONENT_ID_MAX ] ;
2017-03-31 19:30:30 +08:00
const struct mtk_mmsys_driver_data * data ;
2016-01-04 18:36:34 +01:00
struct {
struct drm_atomic_state * state ;
struct work_struct work ;
struct mutex lock ;
} commit ;
struct drm_atomic_state * suspend_state ;
2019-07-29 14:33:35 +09:00
bool dma_parms_allocated ;
2016-01-04 18:36:34 +01:00
} ;
extern struct platform_driver mtk_ddp_driver ;
2017-06-16 22:02:16 +08:00
extern struct platform_driver mtk_disp_color_driver ;
2016-01-04 18:36:34 +01:00
extern struct platform_driver mtk_disp_ovl_driver ;
extern struct platform_driver mtk_disp_rdma_driver ;
2016-01-04 18:36:36 +01:00
extern struct platform_driver mtk_dpi_driver ;
2016-01-04 18:36:35 +01:00
extern struct platform_driver mtk_dsi_driver ;
extern struct platform_driver mtk_mipi_tx_driver ;
2016-01-04 18:36:34 +01:00
# endif /* MTK_DRM_DRV_H */