void Initialize_FDD_tables(void) { #if ( !defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_) ) /* Initialize MTD data table */ mtdflash.Signature = ~((kal_uint32)&LayoutInfo); #ifdef __MTK_TARGET__ mtdflash.BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS); #endif LayoutInfo.BankInfo = BankInfo; LayoutInfo.TotalBlks = NOR_TOTAL_BLOCKS; LayoutInfo.BlkSize = NOR_BLOCK_SIZE; LayoutInfo.PageSize = NOR_PAGE_SIZE; LayoutInfo.TotalLSMT= NOR_TOTAL_LSMT; mtdflash.LayoutInfo = (NORLayoutInfo *)&LayoutInfo; /* Initialize FDD data table */ FlashDriveData.MTDDriver = &NORFlashMtd; FlashDriveData.MTDData = &mtdflash; FlashDriveData.LBM = NOR_LBM; FlashDriveData.LSMG = NOR_LSMG; FlashDriveData.AvailInBlk = NOR_AvailInBlk; FlashDriveData.InvalidInBlk = NOR_InvaildInBlk; FlashDriveData.InvalidEntryInTblBlk = NOR_InvalidEntryInTblBlk; FlashDriveData.MSTABLE_ENTRY_NUM = MS_TABLE_ENTRY_NUM; FlashDriveData.MSTable.LogPageID = LogPageID; FlashDriveData.MSTable.NewEntryID = NewEntryID; FlashDriveData.MSTable.OldEntryID = OldEntryID; #if (NOR_SYSDRV_SECTORS==0) #if (NOR_PARTITION_SECTORS==0) FlashDriveData.SecondPartitionSectors = 0xffffffff; #else // (NOR_PARTITION_SECTORS==0) FlashDriveData.SecondPartitionSectors = 0xfe000000 | NOR_PARTITION_SECTORS; #endif // (NOR_PARTITION_SECTORS==0) #else // (NOR_SYSDRV_SECTORS==0) FlashDriveData.SecondPartitionSectors = NOR_SYSDRV_SECTORS; #endif // (NOR_SYSDRV_SECTORS==0) FlashDriveData.SetTblBlks = NOR_TOTAL_TABLE_BLOCKS; FlashDriveData.Buffer = FDMBuffer; FlashDriveData.CopyBuffer = CopyBuffer; #ifndef __INTEL_SIBLEY__ FlashDriveData.ReclaimBlock = nNOR_ReclaimBlock; #else FlashDriveData.ReclaimBlock = nSIB_ReclaimBlock; #endif /* __INTEL_SIBLEY__ */ #endif /* !__FS_SYSDRV_ON_NAND__ && !_NAND_FLASH_BOOTING_ */ }
void Custom_NOR_Init(void) { #if (!(defined(__FS_SYSDRV_ON_NAND__) || defined( _NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__))) && !defined(__RAMDISK__) #if (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__)) CMEM_Init_FullDriver(); #else // (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__)) EntireDiskMtdData.Signature = ~((kal_uint32)EntireDiskRegionInfo); #if defined(__UBL__) if(EMI_QueryIsRemapped()) EntireDiskMtdData.BaseAddr = (BYTE *)0x10000000; else EntireDiskMtdData.BaseAddr = (BYTE *)0; #else EntireDiskMtdData.BaseAddr = (BYTE *)INT_RetrieveFlashBaseAddr(); #endif EntireDiskMtdData.RegionInfo = (FlashRegionInfo *)EntireDiskRegionInfo; EntireDiskDriveData.DiskSize = NOR_FLASH_SIZE; EntireDiskDriveData.MTDDriver = &NORFlashMtd; EntireDiskDriveData.MTDData = &EntireDiskMtdData; EntireDiskDriveData.is_mount = KAL_FALSE; #endif // (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__)) #endif /* !__FS_SYSDRV_ON_NAND__ && !_NAND_FLASH_BOOTING_ */ }
void Initialize_FDD_tables(void) { #if ( !defined(__FS_SYSDRV_ON_NAND__) && defined(_NOR_FLASH_BOOTING_)) /* Initialize MTD data table */ mtdflash.Signature = ~((kal_uint32)RegionInfo); #ifdef __MTK_TARGET__ #if defined(__SMART_PHONE_PLATFORM__) && !defined(__SMART_PHONE_MODEM__) mtdflash.BaseAddr = (kal_uint8 *)ram_disk; #else mtdflash.BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS); #endif #endif /* __MTK_TARGET__ */ mtdflash.RegionInfo = (FlashRegionInfo *)RegionInfo; #if defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) && (defined(__MULTI_BANK_NOR_DEVICE__) || defined(__ARM9_MMU__) || defined(__ARM11_MMU__)) mtdflash.BankInfo = (FlashBankInfo*)BankInfo; #endif /* Initialize FDD data table */ FlashDriveData.MTDDriver = &NORFlashMtd; FlashDriveData.MTDData = &mtdflash; FlashDriveData.AvailSectorsInBlock = AVAILSECTORS; FlashDriveData.ValidSectorsInBlock = VALIDSECTORS; FlashDriveData.SectorMap = (BYTE*)SectorMap; FlashDriveData.PartitionSectors = NOR_PARTITION_SECTORS; FlashDriveData.Buffer = FDMBuffer; FlashDriveData.MSTABLE_ENTRY_NUM = MS_TABLE_ENTRY_NUM; FlashDriveData.MSEntryTable = MSEntryTable; #if defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) FlashDriveData.queueSize = SNOR_ERASE_QUEUE_SIZE; /* align page buffer size for iteration */ #if defined(__PAGE_BUFFER_PROGRAM__) && ! (defined(__SPANSION_VS_R__) || defined(__SPANSION_VS_R64__)) PAGE_BUFFER_SIZE = BUFFER_PROGRAM_ITERATION_LENGTH; #endif /* __PAGE_BUFFER_PROGRAM__ */ /* initialize address look up table */ memset(mtdflash.lookup_tbl, 0xFF, sizeof(NOR_AddrLookup)*LOOKUP_TABLE_SIZE*2); #else /* !__SINGLE_BANK_NOR_FLASH_SUPPORT__ */ /* The reserved unit is 0.5 block.*/ FlashDriveData.SystemDriveReservedUnits = (kal_uint32)(NOR_SYSTEM_DRIVE_RESERVED_BLOCK * 2); #endif /* __SINGLE_BANK_NOR_FLASH_SUPPORT__ */ #ifdef __NOR_SUPPORT_RAW_DISK__ mtdFlashDisk[0].Signature = ~((kal_uint32)Disk0RegionInfo); mtdFlashDisk[0].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK0_BASE_ADDRESS); mtdFlashDisk[0].RegionInfo = (FlashRegionInfo *)Disk0RegionInfo; #if defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) memset(mtdFlashDisk[0].lookup_tbl, 0xFF, sizeof(NOR_AddrLookup)*LOOKUP_TABLE_SIZE*2); #endif FlashDiskDriveData[0].DiskSize = NOR_BOOTING_NOR_DISK0_SIZE; FlashDiskDriveData[0].MTDDriver = &NORFlashMtd; FlashDiskDriveData[0].MTDData = &mtdFlashDisk[0]; #if (NOR_BOOTING_NOR_DISK_NUM > 1) mtdFlashDisk[1].Signature = ~((kal_uint32)Disk1RegionInfo); mtdFlashDisk[1].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK1_BASE_ADDRESS); mtdFlashDisk[1].RegionInfo = (FlashRegionInfo *)Disk1RegionInfo; #if defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) memset(mtdFlashDisk[1].lookup_tbl, 0xFF, sizeof(NOR_AddrLookup)*LOOKUP_TABLE_SIZE*2); #endif FlashDiskDriveData[1].DiskSize = NOR_BOOTING_NOR_DISK1_SIZE; FlashDiskDriveData[1].MTDDriver = &NORFlashMtd; FlashDiskDriveData[1].MTDData = &mtdFlashDisk[1]; #endif // NOR_BOOTING_NOR_DISK_NUM > 1 #endif // __NOR_SUPPORT_RAW_DISK__ #ifdef __FOTA_DM__ FlashDriveData.FlashInfo.baseUnlockBlock = INVALID_BLOCK_INDEX; FlashDriveData.FlashInfo.endUnlockBlock = INVALID_BLOCK_INDEX; #endif #ifdef __BASIC_LOAD_FLASH_TEST__ #ifdef __INTEL_SIBLEY__ LocateSector_ext = SIB_LocateSector; #else LocateSector_ext = LocateSector; #endif //__INTEL_SIBLEY__ #endif //__BASIC_LOAD_FLASH_TEST__ #endif /* !__FS_SYSDRV_ON_NAND__ && _NOR_FLASH_BOOTING_ */ #if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) ) { kal_uint32 DiskIndex; for (DiskIndex=0; DiskIndex<NAND_DISK_NUM; DiskIndex++) { #if (defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__)) if(DiskIndex==RAW_DISK_INDEX){ NANDFlashDriveData[0].NAND_FDMData.DiskIndex = RAW_DISK_INDEX; } #else NANDFlashDriveData[DiskIndex].NAND_FDMData.DiskIndex = DiskIndex; #endif switch (DiskIndex) { case 0: NFB_BASE_ADDRESS[0] = NAND_BOOTING_NAND_FS_DISK0_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[0] = NAND_BOOTING_NAND_FS_DISK0_SIZE; FS_DISK_REPLACE_RATIO[0] = NAND_BOOTING_NAND_FS_DISK0_REPLACE_RATIO; break; #if (NAND_DISK_NUM > 1) case 1: NFB_BASE_ADDRESS[1] = NAND_BOOTING_NAND_FS_DISK1_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[1] = NAND_BOOTING_NAND_FS_DISK1_SIZE; FS_DISK_REPLACE_RATIO[1] = NAND_BOOTING_NAND_FS_DISK1_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 1 */ #if (NAND_DISK_NUM > 2) case 2: NFB_BASE_ADDRESS[2] = NAND_BOOTING_NAND_FS_DISK2_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[2] = NAND_BOOTING_NAND_FS_DISK2_SIZE; FS_DISK_REPLACE_RATIO[2] = NAND_BOOTING_NAND_FS_DISK2_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 2 */ #if (NAND_DISK_NUM > 3) case 3: NFB_BASE_ADDRESS[3] = NAND_BOOTING_NAND_FS_DISK3_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[3] = NAND_BOOTING_NAND_FS_DISK3_SIZE; FS_DISK_REPLACE_RATIO[3] = NAND_BOOTING_NAND_FS_DISK3_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 3 */ #if (NAND_DISK_NUM > 4) case 4: NFB_BASE_ADDRESS[4] = NAND_BOOTING_NAND_FS_DISK4_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[4] = NAND_BOOTING_NAND_FS_DISK4_SIZE; FS_DISK_REPLACE_RATIO[4] = NAND_BOOTING_NAND_FS_DISK4_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 4 */ #if (NAND_DISK_NUM > 5) case 5: NFB_BASE_ADDRESS[5] = NAND_BOOTING_NAND_FS_DISK5_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[5] = NAND_BOOTING_NAND_FS_DISK5_SIZE; FS_DISK_REPLACE_RATIO[5] = NAND_BOOTING_NAND_FS_DISK5_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 5 */ #if (NAND_DISK_NUM > 6) case 6: NFB_BASE_ADDRESS[6] = NAND_BOOTING_NAND_FS_DISK6_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[6] = NAND_BOOTING_NAND_FS_DISK6_SIZE; FS_DISK_REPLACE_RATIO[6] = NAND_BOOTING_NAND_FS_DISK6_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 6 */ #if (NAND_DISK_NUM > 7) case 7: NFB_BASE_ADDRESS[7] = NAND_BOOTING_NAND_FS_DISK7_BASE_ADDRESS; NFB_ALLOCATED_FAT_SPACE[7] = NAND_BOOTING_NAND_FS_DISK7_SIZE; FS_DISK_REPLACE_RATIO[7] = NAND_BOOTING_NAND_FS_DISK7_REPLACE_RATIO; break; #endif /* NAND_DISK_NUM > 7 */ } } } #if ( defined(__NANDFDM_TOTAL_BBM__)) NFB_REPLACE_BASE_ADDRESS = NAND_BOOTING_NAND_FS_REPLACE_BASE_ADDRESS; NFB_REPLACE_SPACE = NAND_BOOTING_NAND_FS_REPLACE_SIZE; NAND_BRMT_Info.ParameterReady = KAL_FALSE; NAND_BRMT_Info.NoReplace = KAL_FALSE; NAND_BRMT_Info.BRMT_Addr = 0; NAND_BRMT_Info.CurSectorInRAM = 0xff; #endif #endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) ) }