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