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_ */
}
Esempio n. 2
0
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_ */
}
Esempio n. 3
0
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__) )
}