mtk_drm_drv.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2015 MediaTek Inc.
  4. */
  5. #ifndef MTK_DRM_DRV_H
  6. #define MTK_DRM_DRV_H
  7. #include <linux/io.h>
  8. #include "mtk_ddp_comp.h"
  9. #define MAX_CONNECTOR 2
  10. #define DDP_COMPONENT_DRM_OVL_ADAPTOR (DDP_COMPONENT_ID_MAX + 1)
  11. #define DDP_COMPONENT_DRM_ID_MAX (DDP_COMPONENT_DRM_OVL_ADAPTOR + 1)
  12. enum mtk_crtc_path {
  13. CRTC_MAIN,
  14. CRTC_EXT,
  15. CRTC_THIRD,
  16. MAX_CRTC,
  17. };
  18. struct device;
  19. struct device_node;
  20. struct drm_crtc;
  21. struct drm_device;
  22. struct drm_fb_helper;
  23. struct drm_property;
  24. struct regmap;
  25. struct mtk_drm_route {
  26. const unsigned int crtc_id;
  27. const unsigned int route_ddp;
  28. };
  29. struct mtk_mmsys_driver_data {
  30. const unsigned int *main_path;
  31. unsigned int main_len;
  32. const unsigned int *ext_path;
  33. unsigned int ext_len;
  34. const unsigned int *third_path;
  35. unsigned int third_len;
  36. const struct mtk_drm_route *conn_routes;
  37. unsigned int num_conn_routes;
  38. bool shadow_register;
  39. unsigned int mmsys_id;
  40. unsigned int mmsys_dev_num;
  41. u16 max_width;
  42. u16 min_width;
  43. u16 min_height;
  44. };
  45. struct mtk_drm_private {
  46. struct drm_device *drm;
  47. struct device *dma_dev;
  48. bool mtk_drm_bound;
  49. bool drm_master;
  50. struct device *dev;
  51. struct device_node *mutex_node;
  52. struct device *mutex_dev;
  53. struct device *mmsys_dev;
  54. struct device_node *comp_node[DDP_COMPONENT_DRM_ID_MAX];
  55. struct mtk_ddp_comp ddp_comp[DDP_COMPONENT_DRM_ID_MAX];
  56. const struct mtk_mmsys_driver_data *data;
  57. struct drm_atomic_state *suspend_state;
  58. unsigned int mbox_index;
  59. struct mtk_drm_private **all_drm_private;
  60. };
  61. extern struct platform_driver mtk_disp_aal_driver;
  62. extern struct platform_driver mtk_disp_ccorr_driver;
  63. extern struct platform_driver mtk_disp_color_driver;
  64. extern struct platform_driver mtk_disp_gamma_driver;
  65. extern struct platform_driver mtk_disp_merge_driver;
  66. extern struct platform_driver mtk_disp_ovl_adaptor_driver;
  67. extern struct platform_driver mtk_disp_ovl_driver;
  68. extern struct platform_driver mtk_disp_rdma_driver;
  69. extern struct platform_driver mtk_dpi_driver;
  70. extern struct platform_driver mtk_dsi_driver;
  71. extern struct platform_driver mtk_ethdr_driver;
  72. extern struct platform_driver mtk_mdp_rdma_driver;
  73. extern struct platform_driver mtk_padding_driver;
  74. #endif /* MTK_DRM_DRV_H */