blob: e5bd109c4c3861fd7adb5b0bc3fa25c6559afcff [file] [log] [blame]
Laurent Pinchart51c13272012-04-26 13:53:59 +02001/*
2 * shmob_drm_crtc.h -- SH Mobile DRM CRTCs
3 *
4 * Copyright (C) 2012 Renesas Corporation
5 *
6 * Laurent Pinchart (laurent.pinchart@ideasonboard.com)
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 */
13
14#ifndef __SHMOB_DRM_CRTC_H__
15#define __SHMOB_DRM_CRTC_H__
16
17#include <drm/drmP.h>
18#include <drm/drm_crtc.h>
19
20struct backlight_device;
21struct shmob_drm_device;
22
23struct shmob_drm_crtc {
24 struct drm_crtc crtc;
25
26 struct drm_pending_vblank_event *event;
27 int dpms;
28
29 const struct shmob_drm_format_info *format;
30 void *cache;
31 unsigned long dma[2];
32 unsigned int line_size;
33 bool started;
34};
35
36struct shmob_drm_encoder {
37 struct drm_encoder encoder;
38 int dpms;
39};
40
41struct shmob_drm_connector {
42 struct drm_connector connector;
43 struct drm_encoder *encoder;
44
45 struct backlight_device *backlight;
46};
47
48int shmob_drm_crtc_create(struct shmob_drm_device *sdev);
49void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev, bool enable);
50void shmob_drm_crtc_cancel_page_flip(struct shmob_drm_crtc *scrtc,
51 struct drm_file *file);
52void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc);
53void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc);
54void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc);
55
56int shmob_drm_encoder_create(struct shmob_drm_device *sdev);
57int shmob_drm_connector_create(struct shmob_drm_device *sdev,
58 struct drm_encoder *encoder);
59
60#endif /* __SHMOB_DRM_CRTC_H__ */