Files
Linux_Drivers/u-boot-2021.10/drivers/jpeg/mm.h
wangliang.wang 607778300c [uboot] Upgrade the MMF SDK from V4.0.0 to V4.1.0
1. add cv181x functions
	2. Delete some useless files and add .gitignore

Change-Id: Iea2b2fa43b5a1152e5e99fb32b88f8d2c249251a
2023-03-10 20:42:30 +08:00

71 lines
1.5 KiB
C

#ifndef __JPU_VIDEO_MEMORY_MANAGEMENT_H__
#define __JPU_VIDEO_MEMORY_MANAGEMENT_H__
typedef struct _jmem_info_struct {
unsigned long total_pages;
unsigned long alloc_pages;
unsigned long free_pages;
unsigned long page_size;
} jmem_info_t;
#if defined(WIN32) || defined(WIN64)
#if (_MSC_VER == 1200)
typedef _int64 vmem_key_t;
#else
typedef unsigned long long vmem_key_t;
#endif
#else
typedef unsigned long long vmem_key_t;
#endif
#define VMEM_PAGE_SIZE (16 * 1024)
#define MAKE_KEY(_a, _b) (((vmem_key_t)(_a)) << 32 | (_b))
#define KEY_TO_VALUE(_key) ((_key) >> 32)
typedef struct page_struct {
int pageno;
unsigned long addr;
int used;
int alloc_pages;
int first_pageno;
} page_t;
typedef struct avl_node_struct {
vmem_key_t key;
int height;
page_t *page;
struct avl_node_struct *left;
struct avl_node_struct *right;
} avl_node_t;
typedef struct _jpeg_mm_struct {
avl_node_t *free_tree;
avl_node_t *alloc_tree;
page_t *page_list;
int num_pages;
unsigned long base_addr;
unsigned long mem_size;
void *mutex;
int free_page_count;
int alloc_page_count;
} jpeg_mm_t;
#if defined(__cplusplus)
extern "C" {
#endif
extern int jmem_init(jpeg_mm_t *mm, unsigned long addr, unsigned long size);
extern int jmem_exit(jpeg_mm_t *mm);
extern unsigned long jmem_alloc(jpeg_mm_t *mm, unsigned int size, unsigned long pid);
extern int jmem_free(jpeg_mm_t *mm, unsigned long ptr, unsigned long pid);
extern int jmem_get_info(jpeg_mm_t *mm, jmem_info_t *info);
#if defined(__cplusplus)
}
#endif
#endif /* __JPU_VIDEO_MEMORY_MANAGEMENT_H__ */