1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright (C) 2015 Free Electrons 4 * Copyright (C) 2015 NextThing Co 5 * 6 * Maxime Ripard <maxime.ripard@free-electrons.com> 7 */ 8 9 #ifndef _SUN4I_LAYER_H_ 10 #define _SUN4I_LAYER_H_ 11 12 struct sunxi_engine; 13 14 struct sun4i_layer { 15 struct drm_plane plane; 16 struct sun4i_drv *drv; 17 struct sun4i_backend *backend; 18 int id; 19 }; 20 21 struct sun4i_layer_state { 22 struct drm_plane_state state; 23 unsigned int pipe; 24 bool uses_frontend; 25 }; 26 27 static inline struct sun4i_layer * plane_to_sun4i_layer(struct drm_plane * plane)28plane_to_sun4i_layer(struct drm_plane *plane) 29 { 30 return container_of(plane, struct sun4i_layer, plane); 31 } 32 33 static inline struct sun4i_layer_state * state_to_sun4i_layer_state(struct drm_plane_state * state)34state_to_sun4i_layer_state(struct drm_plane_state *state) 35 { 36 return container_of(state, struct sun4i_layer_state, state); 37 } 38 39 struct drm_plane **sun4i_layers_init(struct drm_device *drm, 40 struct sunxi_engine *engine); 41 42 #endif /* _SUN4I_LAYER_H_ */ 43