brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · 2c0156b Raw
84 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Copyright (C) STMicroelectronics SA 20144 * Author: Benjamin Gaignard <benjamin.gaignard@st.com> for STMicroelectronics.5 */6 7#ifndef _STI_PLANE_H_8#define _STI_PLANE_H_9 10#include <drm/drm_atomic_helper.h>11 12#define to_sti_plane(x) container_of(x, struct sti_plane, drm_plane)13 14#define STI_PLANE_TYPE_SHIFT 815#define STI_PLANE_TYPE_MASK (~((1 << STI_PLANE_TYPE_SHIFT) - 1))16 17enum sti_plane_type {18	STI_GDP = 1 << STI_PLANE_TYPE_SHIFT,19	STI_VDP = 2 << STI_PLANE_TYPE_SHIFT,20	STI_CUR = 3 << STI_PLANE_TYPE_SHIFT,21	STI_BCK = 4 << STI_PLANE_TYPE_SHIFT22};23 24enum sti_plane_id_of_type {25	STI_ID_0 = 0,26	STI_ID_1 = 1,27	STI_ID_2 = 2,28	STI_ID_3 = 329};30 31enum sti_plane_desc {32	STI_GDP_0       = STI_GDP | STI_ID_0,33	STI_GDP_1       = STI_GDP | STI_ID_1,34	STI_GDP_2       = STI_GDP | STI_ID_2,35	STI_GDP_3       = STI_GDP | STI_ID_3,36	STI_HQVDP_0     = STI_VDP | STI_ID_0,37	STI_CURSOR      = STI_CUR,38	STI_BACK        = STI_BCK39};40 41enum sti_plane_status {42	STI_PLANE_READY,43	STI_PLANE_UPDATED,44	STI_PLANE_DISABLING,45	STI_PLANE_FLUSHING,46	STI_PLANE_DISABLED,47};48 49#define FPS_LENGTH 12850struct sti_fps_info {51	bool output;52	unsigned int curr_frame_counter;53	unsigned int last_frame_counter;54	unsigned int curr_field_counter;55	unsigned int last_field_counter;56	ktime_t	     last_timestamp;57	char fps_str[FPS_LENGTH];58	char fips_str[FPS_LENGTH];59};60 61/**62 * STI plane structure63 *64 * @plane:              drm plane it is bound to (if any)65 * @desc:               plane type & id66 * @status:             to know the status of the plane67 * @fps_info:           frame per second info68 */69struct sti_plane {70	struct drm_plane drm_plane;71	enum sti_plane_desc desc;72	enum sti_plane_status status;73	struct sti_fps_info fps_info;74};75 76const char *sti_plane_to_str(struct sti_plane *plane);77void sti_plane_update_fps(struct sti_plane *plane,78			  bool new_frame,79			  bool new_field);80 81void sti_plane_init_property(struct sti_plane *plane,82			     enum drm_plane_type type);83#endif84