os/kernelhwsrv/brdbootldr/ubootldr/inc/bootldr.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // bootldr\inc\bootldr.h
    15 // 
    16 //
    17 
    18 #ifndef FILE_ID
    19 #error File ID not specified
    20 #endif
    21 
    22 #include "bootloader_variantconfig.h"
    23 
    24 #define BOOTLDR_VERSION_MAJOR 1
    25 #define BOOTLDR_VERSION_MINOR 11
    26 
    27 #ifndef PLATFORM_BUILD
    28 #define PLATFORM_BUILD 0
    29 #endif
    30 
    31 #include <e32std.h>
    32 #include <e32svr.h>
    33 #include <e32cons.h>
    34 #include <f32file.h>
    35 #include <d32comm.h>
    36 
    37 GLREF_C void BootFault(TUint aId, TInt aLine, char aFileName[]);
    38 #define BOOT_FAULT()	BootFault(FILE_ID,__LINE__, __FILE__ )
    39 #define TEST(c)		((void)((c)||(BOOT_FAULT(),0)))
    40 #define CHECK(c)	((void)(((c)==0)||(RDebug::Print(_L("Error %d at line %d\n"),(c),__LINE__),BOOT_FAULT(),0)))
    41 
    42 //#define _DEBUG_CORELDR_  1
    43 
    44 #ifdef _DEBUG_CORELDR_        
    45     #define DEBUG_PRINT(m) PrintToScreen m;	\
    46                            RDebug::Print m;
    47 #else
    48     #define DEBUG_PRINT(m)
    49 #endif    
    50 
    51 #define TROM_LOADER_HEADER_SIZE 0x100
    52 
    53 GLREF_D TInt LoadDrive;
    54 GLREF_D TInt LoadFile;
    55 GLREF_D TInt LoadSize;
    56 GLREF_D TInt ImageSize;
    57 GLREF_D TInt ImageReadProgress;
    58 GLREF_D TBool ImageHeaderPresent;
    59 GLREF_D TBool ImageZip;
    60 GLREF_D TBool LoadToFlash;
    61 GLREF_D TBool FlashBootLoader;
    62 GLREF_D TBuf<256> FileName;
    63 GLREF_D TUint32 RamBootPhys;
    64 GLREF_D TUint32 * ActualDestinationAddress;
    65 GLREF_D TInt SerialDownloadPort;
    66 GLREF_D TBps SerialBaud;
    67 GLREF_D RFile bootFile;
    68 GLREF_D TInt FileSize;
    69 GLREF_D TBool ImageDeflated;
    70 GLREF_D TBool RomLoaderHeaderExists;
    71 GLREF_D TBusLocalDrive LocDrv;
    72 GLREF_D TBool LocDrvChg;
    73 GLREF_D TInt64 LocDrvPos;
    74 
    75 enum TLoadDevice
    76 	{
    77 	ELoadDrive,
    78 	ELoadSerial,
    79 	ELoadUSBMS,
    80 	EBootUSBMS,
    81 	EBootEMMC
    82 	};
    83 
    84 GLREF_D TLoadDevice LoadDevice;
    85 
    86 typedef TInt (*TInputFunc)(TUint8* aDest, TInt& aLength);
    87 GLREF_D TInputFunc InputFunction;
    88 
    89 typedef void (*TCloseInputFunc)();
    90 GLREF_D TCloseInputFunc CloseInputFunction;
    91 
    92 inline TInt ReadInputData(TUint8* aDest, TInt& aLength)
    93 	{ return (*InputFunction)(aDest,aLength); }
    94 inline void CloseInput()
    95 	{ (*CloseInputFunction)(); }
    96 
    97 
    98 GLREF_C TInt LoadDriver(const TDesC& aName, TBool aPdd);
    99 
   100 // Graphical screen methods
   101 GLREF_C void PrintToScreen(TRefByValue<const TDesC> aFmt,...);
   102 GLREF_C void InitDisplay();
   103 GLREF_C void ClearScreen();
   104 GLREF_C void PutChar(TUint aChar);
   105 GLREF_C void PutString(const TDesC& aBuf);
   106 GLREF_C void InitProgressBar(TInt aId, TUint aLimit, const TDesC& aTitle);
   107 GLREF_C void UpdateProgressBar(TInt aId, TUint aProgress);
   108 
   109 // Menu
   110 GLREF_C void StartMenu();
   111 GLREF_C void EnableMenu();
   112 GLREF_C void DisableMenu();
   113 
   114 // Fundamental download methods
   115 GLREF_C void DoDownload();
   116 GLREF_C TInt DoZipDownload(RFile &aBootFile);
   117 GLREF_C TInt DoDeflateDownload();
   118 GLREF_C void Restart(TInt aCode);
   119 
   120 // Media download
   121 GLREF_C TBool SearchDrives();
   122 GLREF_C TInt ReadFromFile(TUint8* aDest, TInt& aLength);
   123 GLREF_C void CloseFile();
   124 GLREF_C TInt GetInnerCompression(TBool &aImageDeflated, TBool &aRomLoaderHeaderExists);
   125 
   126 // Local Drive Raw Access
   127 GLREF_C TBool SearchDrivesRaw();
   128 GLREF_C TInt ReadFromLocalDrive(TUint8* aDest, TInt& aLength);
   129 GLREF_C void CloseLocalDrive();
   130 
   131 // Serial download
   132 GLREF_C TInt InitSerialDownload(TInt aPort);
   133 
   134 // NOR FLASH methods
   135 GLREF_C TInt InitFlashWrite();
   136 GLREF_C void NotifyDataAvailable(TInt aTotalAmount);
   137 GLREF_C void NotifyDownloadComplete();
   138 
   139 // USB Mass Storage download
   140 GLREF_C void TryUSBMS();
   141 GLREF_C TBool StartUSBMS();
   142 
   143 // Variant supplied methods
   144 GLREF_C void VariantInit();
   145 GLREF_C void ReadConfig();
   146 GLREF_C void WriteConfig();
   147 
   148 inline TLinAddr DestinationAddress()
   149 	{ return (TLinAddr)ActualDestinationAddress; }
   150