kmb_plane.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* SPDX-License-Identifier: GPL-2.0-only
  2. *
  3. * Copyright © 2018-2020 Intel Corporation
  4. */
  5. #ifndef __KMB_PLANE_H__
  6. #define __KMB_PLANE_H__
  7. #include <drm/drm_fourcc.h>
  8. #include <drm/drm_plane.h>
  9. #define LCD_INT_VL0_ERR ((LAYER0_DMA_FIFO_UNDERFLOW) | \
  10. (LAYER0_DMA_FIFO_OVERFLOW) | \
  11. (LAYER0_DMA_CB_FIFO_OVERFLOW) | \
  12. (LAYER0_DMA_CB_FIFO_UNDERFLOW) | \
  13. (LAYER0_DMA_CR_FIFO_OVERFLOW) | \
  14. (LAYER0_DMA_CR_FIFO_UNDERFLOW))
  15. #define LCD_INT_VL1_ERR ((LAYER1_DMA_FIFO_UNDERFLOW) | \
  16. (LAYER1_DMA_FIFO_OVERFLOW) | \
  17. (LAYER1_DMA_CB_FIFO_OVERFLOW) | \
  18. (LAYER1_DMA_CB_FIFO_UNDERFLOW) | \
  19. (LAYER1_DMA_CR_FIFO_OVERFLOW) | \
  20. (LAYER1_DMA_CR_FIFO_UNDERFLOW))
  21. #define LCD_INT_GL0_ERR (LAYER2_DMA_FIFO_OVERFLOW | LAYER2_DMA_FIFO_UNDERFLOW)
  22. #define LCD_INT_GL1_ERR (LAYER3_DMA_FIFO_OVERFLOW | LAYER3_DMA_FIFO_UNDERFLOW)
  23. #define LCD_INT_VL0 (LAYER0_DMA_DONE | LAYER0_DMA_IDLE | LCD_INT_VL0_ERR)
  24. #define LCD_INT_VL1 (LAYER1_DMA_DONE | LAYER1_DMA_IDLE | LCD_INT_VL1_ERR)
  25. #define LCD_INT_GL0 (LAYER2_DMA_DONE | LAYER2_DMA_IDLE | LCD_INT_GL0_ERR)
  26. #define LCD_INT_GL1 (LAYER3_DMA_DONE | LAYER3_DMA_IDLE | LCD_INT_GL1_ERR)
  27. #define LCD_INT_DMA_ERR (LCD_INT_VL0_ERR | LCD_INT_VL1_ERR \
  28. | LCD_INT_GL0_ERR | LCD_INT_GL1_ERR)
  29. #define POSSIBLE_CRTCS 1
  30. #define to_kmb_plane(x) container_of(x, struct kmb_plane, base_plane)
  31. #define POSSIBLE_CRTCS 1
  32. #define KMB_MAX_PLANES 2
  33. enum layer_id {
  34. LAYER_0,
  35. LAYER_1,
  36. LAYER_2,
  37. LAYER_3,
  38. /* KMB_MAX_PLANES */
  39. };
  40. enum sub_plane_id {
  41. Y_PLANE,
  42. U_PLANE,
  43. V_PLANE,
  44. MAX_SUB_PLANES,
  45. };
  46. struct kmb_plane {
  47. struct drm_plane base_plane;
  48. unsigned char id;
  49. };
  50. struct layer_status {
  51. bool disable;
  52. u32 ctrl;
  53. };
  54. struct disp_cfg {
  55. unsigned int width;
  56. unsigned int height;
  57. unsigned int format;
  58. };
  59. struct kmb_plane *kmb_plane_init(struct drm_device *drm);
  60. void kmb_plane_destroy(struct drm_plane *plane);
  61. #endif /* __KMB_PLANE_H__ */