]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/gpu/drm/rcar-du/rcar_du_kms.h
drm: Renesas R-Car Display Unit DRM driver
[karo-tx-linux.git] / drivers / gpu / drm / rcar-du / rcar_du_kms.h
1 /*
2  * rcar_du_kms.h  --  R-Car Display Unit Mode Setting
3  *
4  * Copyright (C) 2013 Renesas Corporation
5  *
6  * Contact: 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 __RCAR_DU_KMS_H__
15 #define __RCAR_DU_KMS_H__
16
17 #include <linux/types.h>
18
19 #include <drm/drm_crtc.h>
20
21 struct rcar_du_device;
22
23 struct rcar_du_format_info {
24         u32 fourcc;
25         unsigned int bpp;
26         unsigned int planes;
27         unsigned int pnmr;
28         unsigned int edf;
29 };
30
31 struct rcar_du_encoder {
32         struct drm_encoder encoder;
33         unsigned int output;
34 };
35
36 #define to_rcar_encoder(e) \
37         container_of(e, struct rcar_du_encoder, encoder)
38
39 struct rcar_du_connector {
40         struct drm_connector connector;
41         struct rcar_du_encoder *encoder;
42 };
43
44 #define to_rcar_connector(c) \
45         container_of(c, struct rcar_du_connector, connector)
46
47 const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc);
48
49 struct drm_encoder *
50 rcar_du_connector_best_encoder(struct drm_connector *connector);
51 void rcar_du_encoder_mode_prepare(struct drm_encoder *encoder);
52 void rcar_du_encoder_mode_set(struct drm_encoder *encoder,
53                               struct drm_display_mode *mode,
54                               struct drm_display_mode *adjusted_mode);
55 void rcar_du_encoder_mode_commit(struct drm_encoder *encoder);
56
57 int rcar_du_modeset_init(struct rcar_du_device *rcdu);
58
59 #endif /* __RCAR_DU_KMS_H__ */