162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Copyright © 2018-2020 Intel Corporation 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef __KMB_PLANE_H__ 762306a36Sopenharmony_ci#define __KMB_PLANE_H__ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <drm/drm_fourcc.h> 1062306a36Sopenharmony_ci#include <drm/drm_plane.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define LCD_INT_VL0_ERR ((LAYER0_DMA_FIFO_UNDERFLOW) | \ 1362306a36Sopenharmony_ci (LAYER0_DMA_FIFO_OVERFLOW) | \ 1462306a36Sopenharmony_ci (LAYER0_DMA_CB_FIFO_OVERFLOW) | \ 1562306a36Sopenharmony_ci (LAYER0_DMA_CB_FIFO_UNDERFLOW) | \ 1662306a36Sopenharmony_ci (LAYER0_DMA_CR_FIFO_OVERFLOW) | \ 1762306a36Sopenharmony_ci (LAYER0_DMA_CR_FIFO_UNDERFLOW)) 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define LCD_INT_VL1_ERR ((LAYER1_DMA_FIFO_UNDERFLOW) | \ 2062306a36Sopenharmony_ci (LAYER1_DMA_FIFO_OVERFLOW) | \ 2162306a36Sopenharmony_ci (LAYER1_DMA_CB_FIFO_OVERFLOW) | \ 2262306a36Sopenharmony_ci (LAYER1_DMA_CB_FIFO_UNDERFLOW) | \ 2362306a36Sopenharmony_ci (LAYER1_DMA_CR_FIFO_OVERFLOW) | \ 2462306a36Sopenharmony_ci (LAYER1_DMA_CR_FIFO_UNDERFLOW)) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#define LCD_INT_GL0_ERR (LAYER2_DMA_FIFO_OVERFLOW | LAYER2_DMA_FIFO_UNDERFLOW) 2762306a36Sopenharmony_ci#define LCD_INT_GL1_ERR (LAYER3_DMA_FIFO_OVERFLOW | LAYER3_DMA_FIFO_UNDERFLOW) 2862306a36Sopenharmony_ci#define LCD_INT_VL0 (LAYER0_DMA_DONE | LAYER0_DMA_IDLE | LCD_INT_VL0_ERR) 2962306a36Sopenharmony_ci#define LCD_INT_VL1 (LAYER1_DMA_DONE | LAYER1_DMA_IDLE | LCD_INT_VL1_ERR) 3062306a36Sopenharmony_ci#define LCD_INT_GL0 (LAYER2_DMA_DONE | LAYER2_DMA_IDLE | LCD_INT_GL0_ERR) 3162306a36Sopenharmony_ci#define LCD_INT_GL1 (LAYER3_DMA_DONE | LAYER3_DMA_IDLE | LCD_INT_GL1_ERR) 3262306a36Sopenharmony_ci#define LCD_INT_DMA_ERR (LCD_INT_VL0_ERR | LCD_INT_VL1_ERR \ 3362306a36Sopenharmony_ci | LCD_INT_GL0_ERR | LCD_INT_GL1_ERR) 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define POSSIBLE_CRTCS 1 3662306a36Sopenharmony_ci#define to_kmb_plane(x) container_of(x, struct kmb_plane, base_plane) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci#define POSSIBLE_CRTCS 1 3962306a36Sopenharmony_ci#define KMB_MAX_PLANES 2 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cienum layer_id { 4262306a36Sopenharmony_ci LAYER_0, 4362306a36Sopenharmony_ci LAYER_1, 4462306a36Sopenharmony_ci LAYER_2, 4562306a36Sopenharmony_ci LAYER_3, 4662306a36Sopenharmony_ci /* KMB_MAX_PLANES */ 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cienum sub_plane_id { 5062306a36Sopenharmony_ci Y_PLANE, 5162306a36Sopenharmony_ci U_PLANE, 5262306a36Sopenharmony_ci V_PLANE, 5362306a36Sopenharmony_ci MAX_SUB_PLANES, 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cistruct kmb_plane { 5762306a36Sopenharmony_ci struct drm_plane base_plane; 5862306a36Sopenharmony_ci unsigned char id; 5962306a36Sopenharmony_ci}; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cistruct layer_status { 6262306a36Sopenharmony_ci bool disable; 6362306a36Sopenharmony_ci u32 ctrl; 6462306a36Sopenharmony_ci}; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_cistruct disp_cfg { 6762306a36Sopenharmony_ci unsigned int width; 6862306a36Sopenharmony_ci unsigned int height; 6962306a36Sopenharmony_ci unsigned int format; 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistruct kmb_plane *kmb_plane_init(struct drm_device *drm); 7362306a36Sopenharmony_civoid kmb_plane_destroy(struct drm_plane *plane); 7462306a36Sopenharmony_ci#endif /* __KMB_PLANE_H__ */ 75