1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright 2019 NXP. 4 */ 5 6 #ifndef _DCSS_KMS_H_ 7 #define _DCSS_KMS_H_ 8 9 #include <drm/drm_encoder.h> 10 11 struct dcss_plane { 12 struct drm_plane base; 13 14 int ch_num; 15 }; 16 17 struct dcss_crtc { 18 struct drm_crtc base; 19 struct drm_crtc_state *state; 20 21 struct dcss_plane *plane[3]; 22 23 int irq; 24 25 bool disable_ctxld_kick_irq; 26 }; 27 28 struct dcss_kms_dev { 29 struct drm_device base; 30 struct dcss_crtc crtc; 31 struct drm_encoder encoder; 32 struct drm_connector *connector; 33 }; 34 35 struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss); 36 void dcss_kms_detach(struct dcss_kms_dev *kms); 37 void dcss_kms_shutdown(struct dcss_kms_dev *kms); 38 int dcss_crtc_init(struct dcss_crtc *crtc, struct drm_device *drm); 39 void dcss_crtc_deinit(struct dcss_crtc *crtc, struct drm_device *drm); 40 struct dcss_plane *dcss_plane_init(struct drm_device *drm, 41 unsigned int possible_crtcs, 42 enum drm_plane_type type, 43 unsigned int zpos); 44 45 #endif 46