xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
4  *
5  * Author: Zorro Liu <zorro.liu@rock-chips.com>
6  */
7 
8 #ifndef _BUF_MANAGE_H_
9 #define _BUF_MANAGE_H_
10 
11 #define BUF_ERROR	(-1)
12 #define BUF_SUCCESS	(0)
13 
14 enum ebc_buf_status {
15 	buf_idle = 0,		//empty buf can be used
16 	buf_user = 1,		//buf get by user
17 	buf_dsp = 2,		//buf on dsp list
18 	buf_osd = 3,		//buf is osd buf
19 	buf_error = 4,
20 };
21 
22 struct ebc_buf_s {
23 	enum ebc_buf_status status; //buffer status.
24 	unsigned long phy_addr; //buffer physical address.
25 	char *virt_addr; //buffer virtual address.
26 	char tid_name[TASK_COMM_LEN];
27 	int buf_mode;
28 	int len; //buffer length
29 	int win_x1;
30 	int win_y1;
31 	int win_x2;
32 	int win_y2;
33 };
34 
35 struct ebc_buf_s *ebc_osd_buf_get(void);
36 struct ebc_buf_s *ebc_osd_buf_clone(void);
37 int ebc_buf_release(struct ebc_buf_s *release_buf);
38 int ebc_remove_from_dsp_buf_list(struct ebc_buf_s *remove_buf);
39 int ebc_add_to_dsp_buf_list(struct ebc_buf_s *dsp_buf);
40 int ebc_get_dsp_list_enum_num(void);
41 struct ebc_buf_s *ebc_dsp_buf_get(void);
42 struct ebc_buf_s *ebc_find_buf_by_phy_addr(unsigned long phy_addr);
43 struct ebc_buf_s *ebc_empty_buf_get(void);
44 unsigned long ebc_phy_buf_base_get(void);
45 char *ebc_virt_buf_base_get(void);
46 int ebc_buf_uninit(void);
47 int ebc_buf_init(unsigned long phy_start, char *mem_start, int men_len, int dest_buf_len, int max_buf_num);
48 #endif
49 
50