xref: /openbmc/linux/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.h (revision 9f771739a04919226081a107167596de75108fbb)
1*11696c5eSBiju Das /* SPDX-License-Identifier: GPL-2.0+ */
2*11696c5eSBiju Das /*
3*11696c5eSBiju Das  * shmob_drm_crtc.h  --  SH Mobile DRM CRTCs
4*11696c5eSBiju Das  *
5*11696c5eSBiju Das  * Copyright (C) 2012 Renesas Electronics Corporation
6*11696c5eSBiju Das  *
7*11696c5eSBiju Das  * Laurent Pinchart (laurent.pinchart@ideasonboard.com)
8*11696c5eSBiju Das  */
9*11696c5eSBiju Das 
10*11696c5eSBiju Das #ifndef __SHMOB_DRM_CRTC_H__
11*11696c5eSBiju Das #define __SHMOB_DRM_CRTC_H__
12*11696c5eSBiju Das 
13*11696c5eSBiju Das #include <drm/drm_crtc.h>
14*11696c5eSBiju Das #include <drm/drm_connector.h>
15*11696c5eSBiju Das #include <drm/drm_encoder.h>
16*11696c5eSBiju Das 
17*11696c5eSBiju Das struct backlight_device;
18*11696c5eSBiju Das struct drm_pending_vblank_event;
19*11696c5eSBiju Das struct shmob_drm_device;
20*11696c5eSBiju Das struct shmob_drm_format_info;
21*11696c5eSBiju Das 
22*11696c5eSBiju Das struct shmob_drm_crtc {
23*11696c5eSBiju Das 	struct drm_crtc crtc;
24*11696c5eSBiju Das 
25*11696c5eSBiju Das 	struct drm_pending_vblank_event *event;
26*11696c5eSBiju Das 	int dpms;
27*11696c5eSBiju Das 
28*11696c5eSBiju Das 	const struct shmob_drm_format_info *format;
29*11696c5eSBiju Das 	unsigned long dma[2];
30*11696c5eSBiju Das 	unsigned int line_size;
31*11696c5eSBiju Das 	bool started;
32*11696c5eSBiju Das };
33*11696c5eSBiju Das 
34*11696c5eSBiju Das struct shmob_drm_encoder {
35*11696c5eSBiju Das 	struct drm_encoder encoder;
36*11696c5eSBiju Das 	int dpms;
37*11696c5eSBiju Das };
38*11696c5eSBiju Das 
39*11696c5eSBiju Das struct shmob_drm_connector {
40*11696c5eSBiju Das 	struct drm_connector connector;
41*11696c5eSBiju Das 	struct drm_encoder *encoder;
42*11696c5eSBiju Das 
43*11696c5eSBiju Das 	struct backlight_device *backlight;
44*11696c5eSBiju Das };
45*11696c5eSBiju Das 
46*11696c5eSBiju Das int shmob_drm_crtc_create(struct shmob_drm_device *sdev);
47*11696c5eSBiju Das void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc);
48*11696c5eSBiju Das void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc);
49*11696c5eSBiju Das void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc);
50*11696c5eSBiju Das 
51*11696c5eSBiju Das int shmob_drm_encoder_create(struct shmob_drm_device *sdev);
52*11696c5eSBiju Das int shmob_drm_connector_create(struct shmob_drm_device *sdev,
53*11696c5eSBiju Das 			       struct drm_encoder *encoder);
54*11696c5eSBiju Das 
55*11696c5eSBiju Das #endif /* __SHMOB_DRM_CRTC_H__ */
56