65 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (C) 2019-2022 Bootlin4 * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>5 */6 7#ifndef _LOGICVC_LAYER_H_8#define _LOGICVC_LAYER_H_9 10#include <linux/of.h>11#include <linux/types.h>12#include <drm/drm_plane.h>13 14#define LOGICVC_LAYER_COLORSPACE_RGB 015#define LOGICVC_LAYER_COLORSPACE_YUV 116 17#define LOGICVC_LAYER_ALPHA_LAYER 018#define LOGICVC_LAYER_ALPHA_PIXEL 119 20struct logicvc_layer_buffer_setup {21 u8 buffer_sel;22 u16 voffset;23 u16 hoffset;24};25 26struct logicvc_layer_config {27 u32 colorspace;28 u32 depth;29 u32 alpha_mode;30 u32 base_offset;31 u32 buffer_offset;32 bool primary;33};34 35struct logicvc_layer_formats {36 u32 colorspace;37 u32 depth;38 bool alpha;39 uint32_t *formats;40};41 42struct logicvc_layer {43 struct logicvc_layer_config config;44 struct logicvc_layer_formats *formats;45 struct device_node *of_node;46 47 struct drm_plane drm_plane;48 struct list_head list;49 u32 index;50};51 52int logicvc_layer_buffer_find_setup(struct logicvc_drm *logicvc,53 struct logicvc_layer *layer,54 struct drm_plane_state *state,55 struct logicvc_layer_buffer_setup *setup);56struct logicvc_layer *logicvc_layer_get_from_index(struct logicvc_drm *logicvc,57 u32 index);58struct logicvc_layer *logicvc_layer_get_from_type(struct logicvc_drm *logicvc,59 enum drm_plane_type type);60struct logicvc_layer *logicvc_layer_get_primary(struct logicvc_drm *logicvc);61void logicvc_layers_attach_crtc(struct logicvc_drm *logicvc);62int logicvc_layers_init(struct logicvc_drm *logicvc);63 64#endif65