sdk-hwV1.3/lichee/melis-v3.0/source/include/melis/ekernel/drivers/sys_mems.h

134 lines
4.6 KiB
C
Raw Normal View History

2024-05-07 10:09:20 +00:00
/*
*********************************************************************************************************
* ePOS
* the Easy Portable/Player Operation System
* mems sub-system
*
* (c) Copyright 1992-2006, Jean J. Labrosse, Weston, FL
* All Rights Reserved
*
* File : mems.h
* By : Steven.ZGJ
* Version : V1.00
*********************************************************************************************************
*/
#ifndef _SYS_MEMS_H_
#define _SYS_MEMS_H_
#include <ktype.h>
#include <csp_dram_para.h>
//**********************************************************************************************************
//* define level 0( system level)
//************************************************
#define MEMS_domain_user 0x0f
#define MEMS_domain_system 0x0f
#define MEMS_domain_client 0x0e
typedef enum
{
CSP_SRAM_ZONE_NULL = 0x00,
CSP_SRAM_ZONE_BOOT, /* <20><>ʹ<EFBFBD>õ<EFBFBD>ģ<EFBFBD><C4A3>Ϊ: BOOT<4F><54>NORMAL. ע<><D7A2>:OS<4F><53><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNORMAL */
CSP_SRAM_ZONE_C, /* <20><>ʹ<EFBFBD>õ<EFBFBD>ģ<EFBFBD><C4A3>Ϊ: CPU_DMA<4D><41>VE */
CSP_SRAM_ZONE_ICACHE, /* not used */
CSP_SRAM_ZONE_DCACHE, /* not used */
CSP_SRAM_ZONE_MAX_NR
} csp_sram_zone_id_t;
//------Module--------------------------------------
typedef enum
{
CSP_SRAM_MODULE_NULL = 0x00,
CSP_SRAM_MODULE_BOOT, /* bootģ<74><C4A3> : zone c1,c2,c3<63><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
CSP_SRAM_MODULE_NORMAL, /* normalģ<6C><C4A3>: zone c1(CPU_DMA/VE),zone c2(DE_FE),zone c3(DE_BE) */
CSP_SRAM_MODULE_CPU_DMA,
CSP_SRAM_MODULE_VE,
CSP_SRAM_MODULE_MAX_NR
} csp_sram_module_t;
typedef enum __SRAM_REQ_MODE
{
SRAM_REQ_MODE_WAIT = 0, //request sram block in wait mode
SRAM_REQ_MODE_NWAIT = 1, //request sram block in none-wait mode
SRAM_REQ_MODE_
} csp_sram_req_mode_e;
typedef struct sram_zone_info
{
csp_sram_zone_id_t zone_id;
uint32_t reserved; //uint32_t zone_size;
} csp_sram_zone_info_t;
typedef struct __SRAM_BLK_NODE
{
intptr_t *pLock; //sram block lock
csp_sram_zone_id_t zone_id; //sram block id
csp_sram_module_t module; //sram map
int32_t bUse; //flag to mark if the sram block is free
} csp_sram_blk_node_t;
typedef struct __SRAM_BLK_MANAGER
{
csp_sram_blk_node_t *pBlkLst; //sram block node list
int32_t nBlkCnt; //sram block count
} csp_sram_blk_manager;
typedef struct __SYS_MEM_CFG
{
intptr_t *task_prio;
intptr_t *task_sem;
uint8_t task_flag;
uint32_t bw_num;
uint32_t bw_total;
uint32_t bw_max;
uint32_t bw_average;
//define parameter for switch work mode and user mode
int32_t vid_flag ;
int32_t pic_flag ;
int32_t tv_flag ;
} __sys_mem_cfg_t;
typedef enum __DRAM_ACCESS_CMD
{
DRAM_ACCESS_DISABLE_REQ = 0, /* dram请求禁止访问 */
DRAM_ACCESS_DISABLE_CANCEL, /* dram取消禁止访问 */
DRAM_ACCESS_
} __dram_access_cmd_t;
typedef enum __DRAM_WORK_MODE
{
DRAM_WORK_MODE_LCD, /* 当前为LCD工作模式<E6A8A1><E5BC8F>? 需要配置DRAM参数满足系统平均带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_TV, /* 当前为TV工作模式<E6A8A1><E5BC8F>? 需要配置DRAM参数满足系统瞬时带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_TV_480P, /* 当前为TV 480P工作模式需要配置DRAM参数满足系统瞬时带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_TV_576P, /* 当前为TV 720P工作模式需要配置DRAM参数满足系统瞬时带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_TV_720P, /* 当前为TV 720P工作模式需要配置DRAM参数满足系统瞬时带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_TV_1080P, /* 当前为TV 1080P工作模式需要配置DRAM参数满足系统瞬时带宽需<E5AEBD><E99C80>?*/
DRAM_WORK_MODE_
} __dram_work_mode_t;
typedef enum __DRAM_USER_MODE
{
DRAM_USER_MODE_NONE = 0,
DRAM_USER_MODE_VIDEO,
DRAM_USER_MODE_MUSIC,
DRAM_USER_MODE_PICTURE,
DRAM_USER_MODE_ENCODER,
DRAM_USER_MODE_
} __dram_user_mode_t;
//************************************************
// 函数定义
__s32 MEM_EnableDramSelfFresh(void);
__s32 MEM_DisableDramSelfFresh(__u32 nDrmClk);
__s32 MEM_DisableDramAcess(void);
__s32 MEM_EnableDramAcess(void);
//**********************************************************************************************************
#endif /* _KRNL_H_ */