| /*********************************************************************** | |
| * Copyright (C) 2016, ZTE Corporation. | |
| * | |
| * File Name: nvparam_drv.h | |
| * File Mark: | |
| * Description: | |
| * Others: | |
| * Version: v1.0 | |
| * Author: wangxia | |
| * Date: 2016-03-12 | |
| * | |
| * History 1: | |
| * Date: | |
| * Version: | |
| * Author: | |
| * Modification: | |
| * History 2: | |
| **********************************************************************/ | |
| #ifndef NVPARAM_DRV_H | |
| #define NVPARAM_DRV_H | |
| /************************************************************************** | |
| * Include files * | |
| **************************************************************************/ | |
| #include "RWNvConfig.h" | |
| #include "NvParam_tsc.h" | |
| /************************************************************************** | |
| * Macro * | |
| **************************************************************************/ | |
| #define DRV_NV_ADDR OS_FLASH_DRV_RW_NONFAC_BASE_ADDR | |
| #define DRV_NV_SIZE OS_FLASH_DRV_RW_NONFAC_SIZE /*16K*/ | |
| /*===================================================================================================================== | |
| |----------------|----------------|---------------|--------------|----------------|-----------------|-----------------| | |
| | public(256B) | system(3K) | platfor(3K) | highspeed(4K)| peripheral(3K) | audio(1K) | reserved(1.75K) | | |
| |----------------|----------------|---------------|--------------|----------------|-----------------|-----------------| | |
| =======================================================================================================================*/ | |
| #define DRV_PUB_NV_ADDR DRV_NV_ADDR | |
| #define DRV_PUB_NV_SIZE (256) | |
| #define DRV_SYS_NV_ADDR (DRV_PUB_NV_ADDR + DRV_PUB_NV_SIZE) | |
| #define DRV_SYS_NV_SIZE (3 * 1024) | |
| #define DRV_PLAT_NV_ADDR (DRV_SYS_NV_ADDR + DRV_SYS_NV_SIZE) | |
| #define DRV_PLAT_NV_SIZE (3 * 1024) | |
| #define DRV_HS_PERI_NV_ADDR (DRV_PLAT_NV_ADDR + DRV_PLAT_NV_SIZE) | |
| #define DRV_HS_PERI_NV_SIZE (4 * 1024) | |
| #define DRV_PERI_NV_ADDR (DRV_HS_PERI_NV_ADDR + DRV_HS_PERI_NV_SIZE) | |
| #define DRV_PERI_NV_SIZE (3 * 1024) | |
| #define DRV_AUDIO_NV_ADDR (DRV_PERI_NV_ADDR + DRV_PERI_NV_SIZE) | |
| #define DRV_AUDIO_NV_SIZE (1 * 1024) | |
| #define DRV_RSVD_NV_ADDR (DRV_AUDIO_NV_ADDR + DRV_AUDIO_NV_SIZE) | |
| #define DRV_RSVD_NV_SIZE (1 * 1024 + 768) | |
| #define DRV_TOTAL_NV_SIZE (DRV_PUB_NV_SIZE+DRV_SYS_NV_SIZE+DRV_PLAT_NV_SIZE+DRV_HS_PERI_NV_SIZE+DRV_PERI_NV_SIZE+DRV_AUDIO_NV_SIZE+DRV_RSVD_NV_SIZE) | |
| /* user interface */ | |
| #define DRV_PUB_NV_ITEM_ADDR(x) (DRV_PUB_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PubData*)(0x0))->x))) | |
| #define DRV_PUB_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_PubData*)(0x0))->x)) | |
| #define DRV_SYS_NV_ITEM_ADDR(x) (DRV_SYS_NV_ADDR + (UINT32)(&(((T_ZDrvNv_SysData*)(0x0))->x))) | |
| #define DRV_SYS_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_SysData*)(0x0))->x)) | |
| #define DRV_PLAT_NV_ITEM_ADDR(x) (DRV_PLAT_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PlatData*)(0x0))->x))) | |
| #define DRV_PLAT_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_PlatData*)(0x0))->x)) | |
| #define DRV_HS_PERI_NV_ITEM_ADDR(x) (DRV_HS_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_HSPeriData*)(0x0))->x))) | |
| #define DDRV_HS_PER_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_HSPeriData*)(0x0))->x)) | |
| #define DRV_PER_NV_ITEM_ADDR(x) (DRV_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PeriData*)(0x0))->x))) | |
| #define DRV_PER_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_PeriData*)(0x0))->x)) | |
| #define DRV_AUDIO_NV_ITEM_ADDR(x) (DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_ZDrvNv_AudioData*)(0x0))->x))) | |
| #define DRV_AUDIO_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_AudioData*)(0x0))->x)) | |
| #define OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR (OS_FLASH_DRV_RW_NONFAC_BASE_ADDR + 15360) | |
| #define OS_FLASH_VOICE_DRV_NONFAC_SIZE 1024 | |
| #if DRV_TOTAL_NV_SIZE > (OS_FLASH_DRV_RW_NONFAC_SIZE) | |
| #error "error drv nv config!!!" | |
| #endif | |
| /**************************************************************************** | |
| * Types | |
| ****************************************************************************/ | |
| /****************************************************** | |
| * Drv NV Config | |
| ******************************************************/ | |
| /*********************************** | |
| 1. public nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_PubData | |
| { | |
| /* 0x00 */ CHAR chipName[16]; | |
| /* 0x10 */ CHAR prjName[16]; | |
| /* 0x20 */ CHAR externalVer[16]; | |
| /* 0x30 */ CHAR internalVer[16]; | |
| /* 0x40 */ CHAR releaseTime[16]; | |
| /* 0x50 */ UINT8 productType; | |
| /* 0x51 */ UINT8 reserved[DRV_PUB_NV_SIZE - 0x51]; | |
| } __attribute__ ((packed)) T_ZDrvNv_PubData; | |
| /*********************************** | |
| 2. system group nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_SysData | |
| { | |
| /* 0x000 */ T_SYS_NV_TSC_CONFIG tsc_config; | |
| UINT8 reserved0[12]; | |
| /* 0x70 */ UINT32 buck1OnoffFlag; | |
| /* 0x74 */ UINT32 wdtSwitch; | |
| /* 0x78 */ UINT32 wdtPriority; | |
| /* 0x7C */ UINT8 uiccmodeSwitch; | |
| /* 0x7D */ UINT8 uiccPreSwitch; | |
| /* 0x7E */ UINT8 uicc1modeSwitch; | |
| /* 0x7F */ UINT8 uicc1PreSwitch; | |
| /* 0x80 */ UINT8 ishpnotsupported; | |
| UINT8 reserved[DRV_SYS_NV_SIZE - 129]; | |
| } __attribute__ ((packed)) T_ZDrvNv_SysData; | |
| /*********************************** | |
| 3. platform group nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_PlatData | |
| { | |
| UINT8 reserved[DRV_PLAT_NV_SIZE]; | |
| } __attribute__ ((packed)) T_ZDrvNv_PlatData; | |
| /*********************************** | |
| 4. hign-speed peripheral group nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_HSPeriData | |
| { | |
| UINT8 reserved[DRV_HS_PERI_NV_SIZE]; | |
| } __attribute__ ((packed)) T_ZDrvNv_HSPeriData; | |
| /*********************************** | |
| 5. common peripheral group nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_PeriData | |
| { | |
| UINT8 bat_det; | |
| UINT8 reserved[DRV_PERI_NV_SIZE-1]; | |
| } __attribute__ ((packed)) T_ZDrvNv_PeriData; | |
| /*********************************** | |
| 6. audio group nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrvNv_AudioData | |
| { | |
| UINT8 reserved[DRV_AUDIO_NV_SIZE]; | |
| } __attribute__ ((packed)) T_ZDrvNv_AudioData; | |
| /*********************************** | |
| 7. all driver_used nv_data | |
| ************************************/ | |
| typedef struct _T_ZDrv_NvData | |
| { | |
| /* 0x0000 */ T_ZDrvNv_PubData pubData; | |
| /* 0x0100 */ T_ZDrvNv_SysData sysData; | |
| /* 0x0D00 */ T_ZDrvNv_PlatData platData; | |
| /* 0x1900 */ T_ZDrvNv_HSPeriData HSPeriData; | |
| /* 0x2900 */ T_ZDrvNv_PeriData periData; | |
| /* 0x3500 */ T_ZDrvNv_AudioData audioData; | |
| /* 0x3900 */ UINT8 reserved[DRV_RSVD_NV_SIZE]; | |
| } T_ZDrv_NvData; | |
| /****************************************************** | |
| * check struct size | |
| ******************************************************/ | |
| static inline CHAR zDrvNv_CheckTypeSize(void) | |
| { \ | |
| CHAR __dummy1[(sizeof(T_ZDrv_NvData)==DRV_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy2[(sizeof(T_ZDrvNv_PubData)==DRV_PUB_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy3[(sizeof(T_ZDrvNv_SysData)==DRV_SYS_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy4[(sizeof(T_ZDrvNv_PlatData)==DRV_PLAT_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy5[(sizeof(T_ZDrvNv_HSPeriData)==DRV_HS_PERI_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy6[(sizeof(T_ZDrvNv_PeriData)==DRV_PERI_NV_SIZE)?1:-1]={0}; \ | |
| CHAR __dummy7[(sizeof(T_ZDrvNv_AudioData)==DRV_AUDIO_NV_SIZE)?1:-1]={0}; \ | |
| return (__dummy1[0]+__dummy2[0]+__dummy3[0]+__dummy4[0]+__dummy5[0]+__dummy6[0]+__dummy7[0]); \ | |
| } | |
| /****************************************************** | |
| * old struct | |
| ******************************************************/ | |
| #if 0 | |
| typedef struct _T_Sys_Drv_Nv_Data | |
| { | |
| T_SYS_NV_TSC_CONFIG tsc_config; | |
| UINT8 reserved[6]; | |
| UINT32 wdtSwitch; | |
| }T_Sys_Drv_Nv_Data; | |
| #endif | |
| typedef struct _T_Drv_Nv_Data | |
| { | |
| UINT32 VpData[1024];//add by lvwenhua for voice 2013.12.6 | |
| }T_Drv_Nv_Data; | |
| #define DRV_NV_ITEM_ADDRESS(x) (DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_Drv_Nv_Data*)(0x0))->x))) | |
| //flag use 32byte | |
| typedef struct _T_Audio_NvFlag | |
| { | |
| UINT8 isVpConfigInitOn; | |
| UINT8 isVpParamInNv; | |
| UINT8 isUseSlicCodec; | |
| UINT8 isUseVoiceProc;//4 UINT8 isUseNXP; | |
| UINT8 isUseCodecDsp; | |
| UINT8 isUseNvWrite; | |
| UINT8 isCloseVpBufferBak; | |
| UINT8 isUseTdm;//8 | |
| UINT8 isUseRxDtmfDet; | |
| UINT8 isUseTxDtmfDet; | |
| UINT8 isUseRxMixData; | |
| UINT8 isUseTxMixData;//12 | |
| UINT8 isUseEcall; //13 | |
| UINT8 isUseVoiceBuffer; //14 0 not use,1 use | |
| UINT8 selVoiceBufferType; //15 0 single core, 1 dual core | |
| UINT8 reserved[17];//32-15 | |
| } T_Audio_NvFlag; | |
| #endif | |