Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only
0002  *
0003  * Copyright © 2018-2020 Intel Corporation
0004  */
0005 
0006 #ifndef __KMB_PLANE_H__
0007 #define __KMB_PLANE_H__
0008 
0009 #include <drm/drm_fourcc.h>
0010 #include <drm/drm_plane.h>
0011 
0012 #define LCD_INT_VL0_ERR ((LAYER0_DMA_FIFO_UNDERFLOW) | \
0013             (LAYER0_DMA_FIFO_OVERFLOW) | \
0014             (LAYER0_DMA_CB_FIFO_OVERFLOW) | \
0015             (LAYER0_DMA_CB_FIFO_UNDERFLOW) | \
0016             (LAYER0_DMA_CR_FIFO_OVERFLOW) | \
0017             (LAYER0_DMA_CR_FIFO_UNDERFLOW))
0018 
0019 #define LCD_INT_VL1_ERR ((LAYER1_DMA_FIFO_UNDERFLOW) | \
0020             (LAYER1_DMA_FIFO_OVERFLOW) | \
0021             (LAYER1_DMA_CB_FIFO_OVERFLOW) | \
0022             (LAYER1_DMA_CB_FIFO_UNDERFLOW) | \
0023             (LAYER1_DMA_CR_FIFO_OVERFLOW) | \
0024             (LAYER1_DMA_CR_FIFO_UNDERFLOW))
0025 
0026 #define LCD_INT_GL0_ERR (LAYER2_DMA_FIFO_OVERFLOW | LAYER2_DMA_FIFO_UNDERFLOW)
0027 #define LCD_INT_GL1_ERR (LAYER3_DMA_FIFO_OVERFLOW | LAYER3_DMA_FIFO_UNDERFLOW)
0028 #define LCD_INT_VL0 (LAYER0_DMA_DONE | LAYER0_DMA_IDLE | LCD_INT_VL0_ERR)
0029 #define LCD_INT_VL1 (LAYER1_DMA_DONE | LAYER1_DMA_IDLE | LCD_INT_VL1_ERR)
0030 #define LCD_INT_GL0 (LAYER2_DMA_DONE | LAYER2_DMA_IDLE | LCD_INT_GL0_ERR)
0031 #define LCD_INT_GL1 (LAYER3_DMA_DONE | LAYER3_DMA_IDLE | LCD_INT_GL1_ERR)
0032 #define LCD_INT_DMA_ERR (LCD_INT_VL0_ERR | LCD_INT_VL1_ERR \
0033         | LCD_INT_GL0_ERR | LCD_INT_GL1_ERR)
0034 
0035 #define POSSIBLE_CRTCS 1
0036 #define to_kmb_plane(x) container_of(x, struct kmb_plane, base_plane)
0037 
0038 #define POSSIBLE_CRTCS      1
0039 #define KMB_MAX_PLANES      2
0040 
0041 enum layer_id {
0042     LAYER_0,
0043     LAYER_1,
0044     LAYER_2,
0045     LAYER_3,
0046     /* KMB_MAX_PLANES */
0047 };
0048 
0049 enum sub_plane_id {
0050     Y_PLANE,
0051     U_PLANE,
0052     V_PLANE,
0053     MAX_SUB_PLANES,
0054 };
0055 
0056 struct kmb_plane {
0057     struct drm_plane base_plane;
0058     unsigned char id;
0059 };
0060 
0061 struct layer_status {
0062     bool disable;
0063     u32 ctrl;
0064 };
0065 
0066 struct disp_cfg {
0067     unsigned int width;
0068     unsigned int height;
0069     unsigned int format;
0070 };
0071 
0072 struct kmb_plane *kmb_plane_init(struct drm_device *drm);
0073 void kmb_plane_destroy(struct drm_plane *plane);
0074 #endif /* __KMB_PLANE_H__ */