162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright 2019 NXP. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _DCSS_KMS_H_ 762306a36Sopenharmony_ci#define _DCSS_KMS_H_ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <drm/drm_encoder.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct dcss_plane { 1262306a36Sopenharmony_ci struct drm_plane base; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci int ch_num; 1562306a36Sopenharmony_ci}; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cistruct dcss_crtc { 1862306a36Sopenharmony_ci struct drm_crtc base; 1962306a36Sopenharmony_ci struct drm_crtc_state *state; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci struct dcss_plane *plane[3]; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci int irq; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci bool disable_ctxld_kick_irq; 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistruct dcss_kms_dev { 2962306a36Sopenharmony_ci struct drm_device base; 3062306a36Sopenharmony_ci struct dcss_crtc crtc; 3162306a36Sopenharmony_ci struct drm_encoder encoder; 3262306a36Sopenharmony_ci struct drm_connector *connector; 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss); 3662306a36Sopenharmony_civoid dcss_kms_detach(struct dcss_kms_dev *kms); 3762306a36Sopenharmony_ciint dcss_crtc_init(struct dcss_crtc *crtc, struct drm_device *drm); 3862306a36Sopenharmony_civoid dcss_crtc_deinit(struct dcss_crtc *crtc, struct drm_device *drm); 3962306a36Sopenharmony_cistruct dcss_plane *dcss_plane_init(struct drm_device *drm, 4062306a36Sopenharmony_ci unsigned int possible_crtcs, 4162306a36Sopenharmony_ci enum drm_plane_type type, 4262306a36Sopenharmony_ci unsigned int zpos); 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci#endif 45