diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c index aac2db22e..5a39261e8 100755 --- a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c @@ -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_) diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c index 2b7db0400..798863ccd 100755 --- a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxStorage_EmbMem.c @@ -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) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 545c4002c..c6f5d7eb7 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -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 diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index fe53925ff..43b30e0e7 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -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)); diff --git a/code/application/source/cardv/SrcCode/System/sys_mempool.c b/code/application/source/cardv/SrcCode/System/sys_mempool.c index c8908bedf..b70bbf66f 100755 --- a/code/application/source/cardv/SrcCode/System/sys_mempool.c +++ b/code/application/source/cardv/SrcCode/System/sys_mempool.c @@ -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; } diff --git a/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c b/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c index 1b9fe6c41..5835176fd 100755 --- a/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c @@ -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; diff --git a/code/lib/source/libstrg/libstrg.a b/code/lib/source/libstrg/libstrg.a index 109d84f93..1176143ab 100644 Binary files a/code/lib/source/libstrg/libstrg.a and b/code/lib/source/libstrg/libstrg.a differ