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);
} else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) {
hDevice = (UINT32)(&gDevEmbMem8);
DBG_ERR("DX_TYPE_EMBMEM8 hDevice = %lx\n", hDevice);
}
#endif
#if !defined(_CARD1_NONE_)
if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) {
hDevice = (UINT32)(&gDevCARD1);
DBG_ERR("DX_TYPE_CARD1 hDevice = %lx\n", hDevice);
}
#endif
#if !defined(_CARD3_NONE_)

View File

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

View File

@ -832,7 +832,7 @@
// 2. enable FS_DX_TYPE_DRIVE_B as DX_TYPE_CARD2
// 3. enable FS_MULTI_STRG_FUNC
// 4. NETWORK = NETWORK_NONE (Both uITRON and eCos)
#define FS_MULTI_STRG_FUNC DISABLE
#define FS_MULTI_STRG_FUNC ENABLE
//MULTI_DRIVE
#if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==DISABLE)
#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;
#if (FS_MULTI_STRG_FUNC == ENABLE)
MEM_RANGE Pool2;
Pool.Size = POOL_SIZE_FS_BUFFER;
Pool.size = POOL_SIZE_FILESYS;
GxStrg_SetConfigEx(0, FILE_CFG_BUF, (UINT32)&Pool);
Pool2.Addr = Pool.Addr + POOL_SIZE_FS_BUFFER;
Pool2.Size = POOL_SIZE_FS_BUFFER;
Pool2.addr = Pool.addr + POOL_SIZE_FILESYS;
Pool2.size = POOL_SIZE_FILESYS;
GxStrg_SetConfigEx(1, FILE_CFG_BUF, (UINT32)&Pool2);
#if defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_)
// 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));
#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
// unused now
#if 0
@ -799,22 +809,24 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
// Open DCF
dcfParm.Drive = (stg_id == 0) ? 'A' : 'B';
#if (FS_MULTI_STRG_FUNC)
if (POOL_CNT_DCF_BUFFER !=2) {
DBG_FATAL("POOL_CNT_DCF_BUFFER be 2 for FS_MULTI_STRG_FUNC.\r\n");
} else {
// if (POOL_CNT_DCF_BUFFER !=2) {
// DBG_FATAL("POOL_CNT_DCF_BUFFER be 2 for FS_MULTI_STRG_FUNC.\r\n");
// } else {
switch(stg_id) {
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;
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;
default:
DBG_ERR("unknown stg_id=%d\r\n", stg_id);
dcfParm.WorkbuffAddr = 0;
break;
}
}
// }
#else
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;
#endif
#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);
#endif
if (ret != HD_OK) {
return;
}

View File

@ -152,10 +152,10 @@ ER AppInit_ModeUSBMSDC(void)
MSDCInfo.msdc_vendor_cb = NULL;
//#NT#2016/12/20#Niven Cho -begin
//#NT#MULTI_DRIVE
#if (FS_MULTI_STRG_FUNC == ENABLE)
char *pDxName2 = NULL;
DX_HANDLE pStrgDev2 = 0;
#endif
//#if (FS_MULTI_STRG_FUNC == ENABLE)
// char *pDxName2 = NULL;
// DX_HANDLE pStrgDev2 = 0;
//#endif
pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A);
@ -166,34 +166,42 @@ ER AppInit_ModeUSBMSDC(void)
}
#endif
#if (FS_MULTI_STRG_FUNC == ENABLE)
pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B);
#endif
//#if (FS_MULTI_STRG_FUNC == ENABLE)
// pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B);
//#endif
MSDCInfo.pStrgHandle[0] = (PSTRG_TAB)Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0);
if (Dx_GetInfo(pStrgDev, DX_INFO_NAME, &pDxName) != DX_OK) {
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)
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) {
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
#if (FS_MULTI_STRG_FUNC == ENABLE)
MSDCInfo.pStrgHandle[1] = pStrgDev2;
if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) {
pDxName2 = NULL;
}
#endif
//#if (FS_MULTI_STRG_FUNC == ENABLE)
// MSDCInfo.pStrgHandle[1] = pStrgDev2;
//
// if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) {
// pDxName2 = NULL;
// }
//#endif
#if (FS_MULTI_STRG_FUNC == ENABLE)
MSDCInfo.msdc_storage_detCB[0] = (MSDC_StorageDet_CB)DrvCARD_DetStrgCard;
MSDCInfo.msdc_strgLock_detCB[0] = (MSDC_StrgLockDet_CB)DrvCARD_DetStrgCardWP;
MSDCInfo.msdc_storage_detCB[1] = NULL;
@ -201,6 +209,14 @@ ER AppInit_ModeUSBMSDC(void)
MSDCInfo.msdc_type[0] = MSDC_STRG;
MSDCInfo.msdc_type[1] = MSDC_STRG;
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
if (pDxName == NULL || strcmp(pDxName, "Storage_EmbMem5") == 0) {
MSDCInfo.msdc_storage_detCB[0] = NULL;

Binary file not shown.