Commit | Line | Data |
---|---|---|
6d62ef3a LP |
1 | /* |
2 | * rcar_du_vsp.h -- R-Car Display Unit VSP-Based Compositor | |
3 | * | |
4 | * Copyright (C) 2015 Renesas Electronics 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_VSP_H__ | |
15 | #define __RCAR_DU_VSP_H__ | |
16 | ||
17 | #include <drm/drmP.h> | |
18 | #include <drm/drm_crtc.h> | |
19 | ||
20 | struct rcar_du_format_info; | |
21 | struct rcar_du_vsp; | |
22 | ||
23 | struct rcar_du_vsp_plane { | |
24 | struct drm_plane plane; | |
25 | struct rcar_du_vsp *vsp; | |
26 | unsigned int index; | |
27 | }; | |
28 | ||
29 | struct rcar_du_vsp { | |
30 | unsigned int index; | |
31 | struct device *vsp; | |
32 | struct rcar_du_device *dev; | |
33 | struct rcar_du_vsp_plane *planes; | |
34 | unsigned int num_planes; | |
35 | }; | |
36 | ||
37 | static inline struct rcar_du_vsp_plane *to_rcar_vsp_plane(struct drm_plane *p) | |
38 | { | |
39 | return container_of(p, struct rcar_du_vsp_plane, plane); | |
40 | } | |
41 | ||
42 | /** | |
43 | * struct rcar_du_vsp_plane_state - Driver-specific plane state | |
44 | * @state: base DRM plane state | |
45 | * @format: information about the pixel format used by the plane | |
46 | * @alpha: value of the plane alpha property | |
85e0a168 | 47 | * @zpos: value of the plane zpos property |
6d62ef3a LP |
48 | */ |
49 | struct rcar_du_vsp_plane_state { | |
50 | struct drm_plane_state state; | |
51 | ||
52 | const struct rcar_du_format_info *format; | |
53 | ||
54 | unsigned int alpha; | |
85e0a168 | 55 | unsigned int zpos; |
6d62ef3a LP |
56 | }; |
57 | ||
58 | static inline struct rcar_du_vsp_plane_state * | |
59 | to_rcar_vsp_plane_state(struct drm_plane_state *state) | |
60 | { | |
61 | return container_of(state, struct rcar_du_vsp_plane_state, state); | |
62 | } | |
63 | ||
64 | #ifdef CONFIG_DRM_RCAR_VSP | |
65 | int rcar_du_vsp_init(struct rcar_du_vsp *vsp); | |
66 | void rcar_du_vsp_enable(struct rcar_du_crtc *crtc); | |
67 | void rcar_du_vsp_disable(struct rcar_du_crtc *crtc); | |
68 | void rcar_du_vsp_atomic_begin(struct rcar_du_crtc *crtc); | |
69 | void rcar_du_vsp_atomic_flush(struct rcar_du_crtc *crtc); | |
70 | #else | |
71 | static inline int rcar_du_vsp_init(struct rcar_du_vsp *vsp) { return 0; }; | |
72 | static inline void rcar_du_vsp_enable(struct rcar_du_crtc *crtc) { }; | |
73 | static inline void rcar_du_vsp_disable(struct rcar_du_crtc *crtc) { }; | |
74 | static inline void rcar_du_vsp_atomic_begin(struct rcar_du_crtc *crtc) { }; | |
75 | static inline void rcar_du_vsp_atomic_flush(struct rcar_du_crtc *crtc) { }; | |
76 | #endif | |
77 | ||
78 | #endif /* __RCAR_DU_VSP_H__ */ |