1.原厂修改msdc代码

This commit is contained in:
payton 2023-12-15 13:46:39 +08:00
parent 260288c3cb
commit 413001226c
7 changed files with 81 additions and 41 deletions

View File

@ -110,11 +110,13 @@ DX_HANDLE Dx_GetObject(UINT32 DxClassType) // Query device object
hDevice = (UINT32)(&gDevEmbMem7); hDevice = (UINT32)(&gDevEmbMem7);
} else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) { } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) {
hDevice = (UINT32)(&gDevEmbMem8); hDevice = (UINT32)(&gDevEmbMem8);
DBG_ERR("DX_TYPE_EMBMEM8 hDevice = %lx\n", hDevice);
} }
#endif #endif
#if !defined(_CARD1_NONE_) #if !defined(_CARD1_NONE_)
if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) { if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) {
hDevice = (UINT32)(&gDevCARD1); hDevice = (UINT32)(&gDevCARD1);
DBG_ERR("DX_TYPE_CARD1 hDevice = %lx\n", hDevice);
} }
#endif #endif
#if !defined(_CARD3_NONE_) #if !defined(_CARD3_NONE_)

View File

@ -6,6 +6,7 @@
#include "DxCommon.h" #include "DxCommon.h"
#include "DxApi.h" #include "DxApi.h"
#include "DrvExt.h" #include "DrvExt.h"
#include "emmc.h"
#if 0 #if 0
#include "Debug.h" #include "Debug.h"
@ -319,22 +320,26 @@ static UINT32 xDrvEmbMemGetcaps(UINT32 DxType, UINT32 CapID, UINT32 Param1)
{ {
UINT32 v = 0; UINT32 v = 0;
if (CapID == STORAGE_CAPS_HANDLE) { if (CapID == STORAGE_CAPS_HANDLE) {
const UINT32 Map[] = { // const UINT32 Map[] = {
STRG_OBJ_FW_RSV1, // STRG_OBJ_FW_RSV1,
STRG_OBJ_FW_RSV2, // STRG_OBJ_FW_RSV2,
STRG_OBJ_FW_RSV3, // STRG_OBJ_FW_RSV3,
STRG_OBJ_FW_RSV4, // STRG_OBJ_FW_RSV4,
STRG_OBJ_FW_RSV5, // STRG_OBJ_FW_RSV5,
STRG_OBJ_FW_RSV6, // STRG_OBJ_FW_RSV6,
STRG_OBJ_FW_RSV7, // STRG_OBJ_FW_RSV7,
STRG_OBJ_PSTORE1, // STRG_OBJ_PSTORE1,
STRG_OBJ_FAT1 // STRG_OBJ_FAT1
}; // };
if (DxType >= sizeof(Map) / sizeof(Map[0])) { // if (DxType >= sizeof(Map) / sizeof(Map[0])) {
DBG_ERR("out of id: %d\r\n", DxType); // DBG_ERR("out of id: %d\r\n", DxType);
return 0; // return 0;
} // }
v = (UINT32)emmc_getStorageObject(STRG_OBJ_FAT1);
DBG_ERR("emmc_getStorageObject = %lx, type = %lu\n", v, ((PSTORAGE_OBJ)v)->uiStrgType);
// v = (UINT32)EMB_GETSTRGOBJ(Map[DxType]); // v = (UINT32)EMB_GETSTRGOBJ(Map[DxType]);
//speical case handle //speical case handle
#if defined(__FREERTOS) #if defined(__FREERTOS)

View File

@ -832,7 +832,7 @@
// 2. enable FS_DX_TYPE_DRIVE_B as DX_TYPE_CARD2 // 2. enable FS_DX_TYPE_DRIVE_B as DX_TYPE_CARD2
// 3. enable FS_MULTI_STRG_FUNC // 3. enable FS_MULTI_STRG_FUNC
// 4. NETWORK = NETWORK_NONE (Both uITRON and eCos) // 4. NETWORK = NETWORK_NONE (Both uITRON and eCos)
#define FS_MULTI_STRG_FUNC DISABLE #define FS_MULTI_STRG_FUNC ENABLE
//MULTI_DRIVE //MULTI_DRIVE
#if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==DISABLE) #if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==DISABLE)
#define FS_DX_TYPE_DRIVE_A USER_DX_TYPE_EMBMEM_FAT #define FS_DX_TYPE_DRIVE_A USER_DX_TYPE_EMBMEM_FAT

View File

@ -315,10 +315,10 @@ void System_OnStrgInit_FS(void)
Pool.addr = mempool_filesys; Pool.addr = mempool_filesys;
#if (FS_MULTI_STRG_FUNC == ENABLE) #if (FS_MULTI_STRG_FUNC == ENABLE)
MEM_RANGE Pool2; MEM_RANGE Pool2;
Pool.Size = POOL_SIZE_FS_BUFFER; Pool.size = POOL_SIZE_FILESYS;
GxStrg_SetConfigEx(0, FILE_CFG_BUF, (UINT32)&Pool); GxStrg_SetConfigEx(0, FILE_CFG_BUF, (UINT32)&Pool);
Pool2.Addr = Pool.Addr + POOL_SIZE_FS_BUFFER; Pool2.addr = Pool.addr + POOL_SIZE_FILESYS;
Pool2.Size = POOL_SIZE_FS_BUFFER; Pool2.size = POOL_SIZE_FILESYS;
GxStrg_SetConfigEx(1, FILE_CFG_BUF, (UINT32)&Pool2); GxStrg_SetConfigEx(1, FILE_CFG_BUF, (UINT32)&Pool2);
#if defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_) #if defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_)
// 3rd is for linux-pstore mounted by filesys // 3rd is for linux-pstore mounted by filesys
@ -380,6 +380,16 @@ void System_OnStrgInit_FS(void)
GxStrg_SetConfigEx(0, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A)); GxStrg_SetConfigEx(0, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A));
#endif #endif
#if (FS_MULTI_STRG_FUNC == ENABLE)
emmc_set_dev_node("/dev/mmcblk1p1"); /* msdc strg obj */
strncpy(mount_path, "/mnt/sd2", sizeof(mount_path) - 1);
mount_path[sizeof(mount_path) - 1] = '\0';
GxStrg_SetConfigEx(1, FILE_CFG_MOUNT_PATH, (UINT32)mount_path);
GxStrg_SetConfigEx(1, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B));
#endif
//#NT#2018/12/18#Philex Lin - begin //#NT#2018/12/18#Philex Lin - begin
// unused now // unused now
#if 0 #if 0
@ -799,22 +809,24 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
// Open DCF // Open DCF
dcfParm.Drive = (stg_id == 0) ? 'A' : 'B'; dcfParm.Drive = (stg_id == 0) ? 'A' : 'B';
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
if (POOL_CNT_DCF_BUFFER !=2) { // if (POOL_CNT_DCF_BUFFER !=2) {
DBG_FATAL("POOL_CNT_DCF_BUFFER be 2 for FS_MULTI_STRG_FUNC.\r\n"); // DBG_FATAL("POOL_CNT_DCF_BUFFER be 2 for FS_MULTI_STRG_FUNC.\r\n");
} else { // } else {
switch(stg_id) { switch(stg_id) {
case 0: case 0:
dcfParm.WorkbuffAddr = dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER)); // dcfParm.WorkbuffAddr = dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER));
dcfParm.WorkbuffAddr = mempool_dcf;
break; break;
case 1: case 1:
dcfParm.WorkbuffAddr = dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER)) + POOL_SIZE_DCF_BUFFER; // dcfParm.WorkbuffAddr = dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER)) + POOL_SIZE_DCF_BUFFER;
dcfParm.WorkbuffAddr = mempool_dcf + POOL_SIZE_DCF_BUFFER;
break; break;
default: default:
DBG_ERR("unknown stg_id=%d\r\n", stg_id); DBG_ERR("unknown stg_id=%d\r\n", stg_id);
dcfParm.WorkbuffAddr = 0; dcfParm.WorkbuffAddr = 0;
break; break;
} }
} // }
#else #else
dcfParm.WorkbuffAddr = mempool_dcf;//dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER)); dcfParm.WorkbuffAddr = mempool_dcf;//dma_getCacheAddr(OS_GetMempoolAddr(POOL_ID_DCF_BUFFER));

View File

@ -185,7 +185,12 @@ void mempool_init(void)
mempool_usbcmd_va = (UINT32)va; mempool_usbcmd_va = (UINT32)va;
#endif #endif
#if (USE_DCF == ENABLE) #if (USE_DCF == ENABLE)
#if (FS_MULTI_STRG_FUNC)
ret = vendor_common_mem_alloc_fixed_pool("dcf", &pa, (void **)&va, POOL_SIZE_DCF_BUFFER * 2, DDR_ID0);
#else
ret = vendor_common_mem_alloc_fixed_pool("dcf", &pa, (void **)&va, POOL_SIZE_DCF_BUFFER, DDR_ID0); ret = vendor_common_mem_alloc_fixed_pool("dcf", &pa, (void **)&va, POOL_SIZE_DCF_BUFFER, DDR_ID0);
#endif
if (ret != HD_OK) { if (ret != HD_OK) {
return; return;
} }

View File

@ -152,10 +152,10 @@ ER AppInit_ModeUSBMSDC(void)
MSDCInfo.msdc_vendor_cb = NULL; MSDCInfo.msdc_vendor_cb = NULL;
//#NT#2016/12/20#Niven Cho -begin //#NT#2016/12/20#Niven Cho -begin
//#NT#MULTI_DRIVE //#NT#MULTI_DRIVE
#if (FS_MULTI_STRG_FUNC == ENABLE) //#if (FS_MULTI_STRG_FUNC == ENABLE)
char *pDxName2 = NULL; // char *pDxName2 = NULL;
DX_HANDLE pStrgDev2 = 0; // DX_HANDLE pStrgDev2 = 0;
#endif //#endif
pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A); pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A);
@ -166,34 +166,42 @@ ER AppInit_ModeUSBMSDC(void)
} }
#endif #endif
#if (FS_MULTI_STRG_FUNC == ENABLE) //#if (FS_MULTI_STRG_FUNC == ENABLE)
pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B); // pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B);
#endif //#endif
MSDCInfo.pStrgHandle[0] = (PSTRG_TAB)Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0); MSDCInfo.pStrgHandle[0] = (PSTRG_TAB)Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0);
if (Dx_GetInfo(pStrgDev, DX_INFO_NAME, &pDxName) != DX_OK) { if (Dx_GetInfo(pStrgDev, DX_INFO_NAME, &pDxName) != DX_OK) {
pDxName = NULL; pDxName = NULL;
} }
DBG_DUMP("===>%s\r\n", pDxName); DBG_DUMP("handle = %lx, open = %lx, pDxName ===>%s, type=%lu, status=%lu\r\n", MSDCInfo.pStrgHandle[0], MSDCInfo.pStrgHandle[0]->Open, pDxName, MSDCInfo.pStrgHandle[0]->uiStrgType, MSDCInfo.pStrgHandle[0]->uiStrgStatus);
#if (FS_MULTI_STRG_FUNC == ENABLE) #if (FS_MULTI_STRG_FUNC == ENABLE)
MSDCInfo.pStrgHandle[1] = pStrgDev2;
char *pDxName2 = NULL;
DX_HANDLE pStrgDev2 = 0;
pStrgDev2 = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B);
MSDCInfo.pStrgHandle[1] = (PSTRG_TAB)Dx_Getcaps(pStrgDev2, STORAGE_CAPS_HANDLE, 0);
if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) { if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) {
pDxName2 = NULL; pDxName2 = NULL;
} }
DBG_DUMP("handle = %lx, open = %lx, pDxName2 ===>%s, type=%lu, status=%lu\r\n", MSDCInfo.pStrgHandle[1], MSDCInfo.pStrgHandle[1]->Open, pDxName2, MSDCInfo.pStrgHandle[1]->uiStrgType, MSDCInfo.pStrgHandle[1]->uiStrgStatus);
#endif #endif
#if (FS_MULTI_STRG_FUNC == ENABLE) //#if (FS_MULTI_STRG_FUNC == ENABLE)
MSDCInfo.pStrgHandle[1] = pStrgDev2; // MSDCInfo.pStrgHandle[1] = pStrgDev2;
//
if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) { // if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) {
pDxName2 = NULL; // pDxName2 = NULL;
} // }
#endif //#endif
#if (FS_MULTI_STRG_FUNC == ENABLE) #if (FS_MULTI_STRG_FUNC == ENABLE)
MSDCInfo.msdc_storage_detCB[0] = (MSDC_StorageDet_CB)DrvCARD_DetStrgCard; MSDCInfo.msdc_storage_detCB[0] = (MSDC_StorageDet_CB)DrvCARD_DetStrgCard;
MSDCInfo.msdc_strgLock_detCB[0] = (MSDC_StrgLockDet_CB)DrvCARD_DetStrgCardWP; MSDCInfo.msdc_strgLock_detCB[0] = (MSDC_StrgLockDet_CB)DrvCARD_DetStrgCardWP;
MSDCInfo.msdc_storage_detCB[1] = NULL; MSDCInfo.msdc_storage_detCB[1] = NULL;
@ -201,6 +209,14 @@ ER AppInit_ModeUSBMSDC(void)
MSDCInfo.msdc_type[0] = MSDC_STRG; MSDCInfo.msdc_type[0] = MSDC_STRG;
MSDCInfo.msdc_type[1] = MSDC_STRG; MSDCInfo.msdc_type[1] = MSDC_STRG;
MSDCInfo.LUNs = 2; MSDCInfo.LUNs = 2;
// MSDCInfo.msdc_storage_detCB[0] = NULL;
// MSDCInfo.msdc_strgLock_detCB[0] = NULL;
// MSDCInfo.pStrgHandle[0] = MSDCInfo.pStrgHandle[1];
// MSDCInfo.msdc_type[0] = MSDC_STRG;
// MSDCInfo.LUNs = 1;
#else #else
if (pDxName == NULL || strcmp(pDxName, "Storage_EmbMem5") == 0) { if (pDxName == NULL || strcmp(pDxName, "Storage_EmbMem5") == 0) {
MSDCInfo.msdc_storage_detCB[0] = NULL; MSDCInfo.msdc_storage_detCB[0] = NULL;

Binary file not shown.