162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2015 Free Electrons 462306a36Sopenharmony_ci * Copyright (C) 2015 NextThing Co 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Maxime Ripard <maxime.ripard@free-electrons.com> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _SUN4I_LAYER_H_ 1062306a36Sopenharmony_ci#define _SUN4I_LAYER_H_ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct sunxi_engine; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistruct sun4i_layer { 1562306a36Sopenharmony_ci struct drm_plane plane; 1662306a36Sopenharmony_ci struct sun4i_drv *drv; 1762306a36Sopenharmony_ci struct sun4i_backend *backend; 1862306a36Sopenharmony_ci int id; 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct sun4i_layer_state { 2262306a36Sopenharmony_ci struct drm_plane_state state; 2362306a36Sopenharmony_ci unsigned int pipe; 2462306a36Sopenharmony_ci bool uses_frontend; 2562306a36Sopenharmony_ci}; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistatic inline struct sun4i_layer * 2862306a36Sopenharmony_ciplane_to_sun4i_layer(struct drm_plane *plane) 2962306a36Sopenharmony_ci{ 3062306a36Sopenharmony_ci return container_of(plane, struct sun4i_layer, plane); 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistatic inline struct sun4i_layer_state * 3462306a36Sopenharmony_cistate_to_sun4i_layer_state(struct drm_plane_state *state) 3562306a36Sopenharmony_ci{ 3662306a36Sopenharmony_ci return container_of(state, struct sun4i_layer_state, state); 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistruct drm_plane **sun4i_layers_init(struct drm_device *drm, 4062306a36Sopenharmony_ci struct sunxi_engine *engine); 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#endif /* _SUN4I_LAYER_H_ */ 43