1 /* 2 * Copyright (c) 2015 MediaTek Inc. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14 #ifndef MTK_DRM_DRV_H 15 #define MTK_DRM_DRV_H 16 17 #include <linux/io.h> 18 #include "mtk_drm_ddp_comp.h" 19 20 #define MAX_CRTC 3 21 #define MAX_CONNECTOR 2 22 23 struct device; 24 struct device_node; 25 struct drm_crtc; 26 struct drm_device; 27 struct drm_fb_helper; 28 struct drm_property; 29 struct regmap; 30 31 struct mtk_mmsys_driver_data { 32 const enum mtk_ddp_comp_id *main_path; 33 unsigned int main_len; 34 const enum mtk_ddp_comp_id *ext_path; 35 unsigned int ext_len; 36 const enum mtk_ddp_comp_id *third_path; 37 unsigned int third_len; 38 39 bool shadow_register; 40 }; 41 42 struct mtk_drm_private { 43 struct drm_device *drm; 44 struct device *dma_dev; 45 46 unsigned int num_pipes; 47 48 struct device_node *mutex_node; 49 struct device *mutex_dev; 50 void __iomem *config_regs; 51 struct device_node *comp_node[DDP_COMPONENT_ID_MAX]; 52 struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX]; 53 const struct mtk_mmsys_driver_data *data; 54 55 struct { 56 struct drm_atomic_state *state; 57 struct work_struct work; 58 struct mutex lock; 59 } commit; 60 61 struct drm_atomic_state *suspend_state; 62 }; 63 64 extern struct platform_driver mtk_ddp_driver; 65 extern struct platform_driver mtk_disp_color_driver; 66 extern struct platform_driver mtk_disp_ovl_driver; 67 extern struct platform_driver mtk_disp_rdma_driver; 68 extern struct platform_driver mtk_dpi_driver; 69 extern struct platform_driver mtk_dsi_driver; 70 extern struct platform_driver mtk_mipi_tx_driver; 71 72 #endif /* MTK_DRM_DRV_H */ 73