0001
0002
0003
0004
0005
0006 #ifndef MTK_DRM_DRV_H
0007 #define MTK_DRM_DRV_H
0008
0009 #include <linux/io.h>
0010 #include "mtk_drm_ddp_comp.h"
0011
0012 #define MAX_CRTC 3
0013 #define MAX_CONNECTOR 2
0014
0015 struct device;
0016 struct device_node;
0017 struct drm_crtc;
0018 struct drm_device;
0019 struct drm_fb_helper;
0020 struct drm_property;
0021 struct regmap;
0022
0023 struct mtk_mmsys_driver_data {
0024 const resource_size_t io_start;
0025 const enum mtk_ddp_comp_id *main_path;
0026 unsigned int main_len;
0027 const enum mtk_ddp_comp_id *ext_path;
0028 unsigned int ext_len;
0029 const enum mtk_ddp_comp_id *third_path;
0030 unsigned int third_len;
0031
0032 bool shadow_register;
0033 };
0034
0035 struct mtk_mmsys_match_data {
0036 unsigned short num_drv_data;
0037 const struct mtk_mmsys_driver_data *drv_data[];
0038 };
0039
0040 struct mtk_drm_private {
0041 struct drm_device *drm;
0042 struct device *dma_dev;
0043
0044 unsigned int num_pipes;
0045
0046 struct device_node *mutex_node;
0047 struct device *mutex_dev;
0048 struct device *mmsys_dev;
0049 struct device_node *comp_node[DDP_COMPONENT_ID_MAX];
0050 struct mtk_ddp_comp ddp_comp[DDP_COMPONENT_ID_MAX];
0051 const struct mtk_mmsys_driver_data *data;
0052 struct drm_atomic_state *suspend_state;
0053 };
0054
0055 extern struct platform_driver mtk_disp_aal_driver;
0056 extern struct platform_driver mtk_disp_ccorr_driver;
0057 extern struct platform_driver mtk_disp_color_driver;
0058 extern struct platform_driver mtk_disp_gamma_driver;
0059 extern struct platform_driver mtk_disp_merge_driver;
0060 extern struct platform_driver mtk_disp_ovl_driver;
0061 extern struct platform_driver mtk_disp_rdma_driver;
0062 extern struct platform_driver mtk_dpi_driver;
0063 extern struct platform_driver mtk_dsi_driver;
0064 extern struct platform_driver mtk_mdp_rdma_driver;
0065
0066 #endif