GNU Linux-libre 4.19.268-gnu1
[releases.git] / drivers / gpu / drm / sun4i / sun4i_layer.h
1 /*
2  * Copyright (C) 2015 Free Electrons
3  * Copyright (C) 2015 NextThing Co
4  *
5  * Maxime Ripard <maxime.ripard@free-electrons.com>
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of
10  * the License, or (at your option) any later version.
11  */
12
13 #ifndef _SUN4I_LAYER_H_
14 #define _SUN4I_LAYER_H_
15
16 struct sunxi_engine;
17
18 struct sun4i_layer {
19         struct drm_plane        plane;
20         struct sun4i_drv        *drv;
21         struct sun4i_backend    *backend;
22         int                     id;
23 };
24
25 struct sun4i_layer_state {
26         struct drm_plane_state  state;
27         unsigned int            pipe;
28         bool                    uses_frontend;
29 };
30
31 static inline struct sun4i_layer *
32 plane_to_sun4i_layer(struct drm_plane *plane)
33 {
34         return container_of(plane, struct sun4i_layer, plane);
35 }
36
37 static inline struct sun4i_layer_state *
38 state_to_sun4i_layer_state(struct drm_plane_state *state)
39 {
40         return container_of(state, struct sun4i_layer_state, state);
41 }
42
43 struct drm_plane **sun4i_layers_init(struct drm_device *drm,
44                                      struct sunxi_engine *engine);
45
46 #endif /* _SUN4I_LAYER_H_ */