xref: /linux/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.h (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * shmob_drm_crtc.h  --  SH Mobile DRM CRTCs
4  *
5  * Copyright (C) 2012 Renesas Electronics Corporation
6  *
7  * Laurent Pinchart (laurent.pinchart@ideasonboard.com)
8  */
9 
10 #ifndef __SHMOB_DRM_CRTC_H__
11 #define __SHMOB_DRM_CRTC_H__
12 
13 #include <drm/drm_crtc.h>
14 #include <drm/drm_connector.h>
15 #include <drm/drm_encoder.h>
16 
17 #include <linux/wait.h>
18 
19 #include <video/videomode.h>
20 
21 struct drm_pending_vblank_event;
22 struct shmob_drm_device;
23 struct shmob_drm_format_info;
24 
25 struct shmob_drm_crtc {
26 	struct drm_crtc base;
27 
28 	struct drm_pending_vblank_event *event;
29 	wait_queue_head_t flip_wait;
30 };
31 
32 /* Legacy connector */
33 struct shmob_drm_connector {
34 	struct drm_connector base;
35 	struct drm_encoder *encoder;
36 	const struct videomode *mode;
37 };
38 
39 int shmob_drm_crtc_create(struct shmob_drm_device *sdev);
40 void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc);
41 
42 int shmob_drm_encoder_create(struct shmob_drm_device *sdev);
43 int shmob_drm_connector_create(struct shmob_drm_device *sdev,
44 			       struct drm_encoder *encoder);
45 
46 #endif /* __SHMOB_DRM_CRTC_H__ */
47