162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2015 MediaTek Inc. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef MTK_DRM_DRV_H 762306a36Sopenharmony_ci#define MTK_DRM_DRV_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/io.h> 1062306a36Sopenharmony_ci#include "mtk_drm_ddp_comp.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define MAX_CRTC 3 1362306a36Sopenharmony_ci#define MAX_CONNECTOR 2 1462306a36Sopenharmony_ci#define DDP_COMPONENT_DRM_OVL_ADAPTOR (DDP_COMPONENT_ID_MAX + 1) 1562306a36Sopenharmony_ci#define DDP_COMPONENT_DRM_ID_MAX (DDP_COMPONENT_DRM_OVL_ADAPTOR + 1) 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cistruct device; 1862306a36Sopenharmony_cistruct device_node; 1962306a36Sopenharmony_cistruct drm_crtc; 2062306a36Sopenharmony_cistruct drm_device; 2162306a36Sopenharmony_cistruct drm_fb_helper; 2262306a36Sopenharmony_cistruct drm_property; 2362306a36Sopenharmony_cistruct regmap; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistruct mtk_mmsys_driver_data { 2662306a36Sopenharmony_ci const unsigned int *main_path; 2762306a36Sopenharmony_ci unsigned int main_len; 2862306a36Sopenharmony_ci const unsigned int *ext_path; 2962306a36Sopenharmony_ci unsigned int ext_len; 3062306a36Sopenharmony_ci const unsigned int *third_path; 3162306a36Sopenharmony_ci unsigned int third_len; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci bool shadow_register; 3462306a36Sopenharmony_ci unsigned int mmsys_id; 3562306a36Sopenharmony_ci unsigned int mmsys_dev_num; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct mtk_drm_private { 3962306a36Sopenharmony_ci struct drm_device *drm; 4062306a36Sopenharmony_ci struct device *dma_dev; 4162306a36Sopenharmony_ci bool mtk_drm_bound; 4262306a36Sopenharmony_ci bool drm_master; 4362306a36Sopenharmony_ci struct device *dev; 4462306a36Sopenharmony_ci struct device_node *mutex_node; 4562306a36Sopenharmony_ci struct device *mutex_dev; 4662306a36Sopenharmony_ci struct device *mmsys_dev; 4762306a36Sopenharmony_ci struct device_node *comp_node[DDP_COMPONENT_DRM_ID_MAX]; 4862306a36Sopenharmony_ci struct mtk_ddp_comp ddp_comp[DDP_COMPONENT_DRM_ID_MAX]; 4962306a36Sopenharmony_ci const struct mtk_mmsys_driver_data *data; 5062306a36Sopenharmony_ci struct drm_atomic_state *suspend_state; 5162306a36Sopenharmony_ci unsigned int mbox_index; 5262306a36Sopenharmony_ci struct mtk_drm_private **all_drm_private; 5362306a36Sopenharmony_ci}; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciextern struct platform_driver mtk_disp_aal_driver; 5662306a36Sopenharmony_ciextern struct platform_driver mtk_disp_ccorr_driver; 5762306a36Sopenharmony_ciextern struct platform_driver mtk_disp_color_driver; 5862306a36Sopenharmony_ciextern struct platform_driver mtk_disp_gamma_driver; 5962306a36Sopenharmony_ciextern struct platform_driver mtk_disp_merge_driver; 6062306a36Sopenharmony_ciextern struct platform_driver mtk_disp_ovl_adaptor_driver; 6162306a36Sopenharmony_ciextern struct platform_driver mtk_disp_ovl_driver; 6262306a36Sopenharmony_ciextern struct platform_driver mtk_disp_rdma_driver; 6362306a36Sopenharmony_ciextern struct platform_driver mtk_dpi_driver; 6462306a36Sopenharmony_ciextern struct platform_driver mtk_dsi_driver; 6562306a36Sopenharmony_ciextern struct platform_driver mtk_ethdr_driver; 6662306a36Sopenharmony_ciextern struct platform_driver mtk_mdp_rdma_driver; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci#endif /* MTK_DRM_DRV_H */ 69