kernel/eka/drivers/medmmc/toc.h
author hgs
Tue, 02 Nov 2010 15:29:23 +0000
changeset 300 1d28c8722707
parent 202 9aca3be14c27
permissions -rw-r--r--
201043_09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
202
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     2
// All rights reserved.
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     7
//
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     8
// Initial Contributors:
9aca3be14c27 201027_08
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    10
//
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    11
// Contributors:
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    12
//
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    13
// Description:
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    14
// TOC Partition Management for Embedded MMC devices
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    15
// 
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    16
//
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    17
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    18
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    19
#ifndef __EMMC_TOC_H__
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    20
#define __EMMC_TOC_H__
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    21
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    22
#include <emmcptn.h>
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    23
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    24
// TOC item
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    25
const TUint  KMaxItemNameLen = 12;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    26
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    27
struct STocItem
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    28
    {
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    29
    TUint32 iStart;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    30
    TUint32 iSize;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    31
    TUint32 iFlags;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    32
    TUint32 iAlign;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    33
    TUint32 iLoadAddress;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    34
    TText8  iFileName[KMaxItemNameLen];
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    35
	};
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    36
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    37
//- Constants ---------------------------------------------------------------
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    38
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    39
const TUint32 KTocStartSector       = 1280; // TOC starts from 0xA0000 / 0x200
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    40
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    41
const TText8  KTocRofsName[]        = "SOS-ROFS";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    42
const TText8  KTocRofsName1[]       = "SOS+ROFS"; 
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    43
const TText8  KTocRofsExtName[]     = "SOS-ROFX";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    44
const TText8  KTocRofsGeneric[]     = "ROFS";  
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    45
const TText8  KTocRomGeneric[]      = "SOS+CORE";  
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    46
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    47
const TText8  KTocCps[]             = "SOS-CPS";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    48
const TText8  KTocRofsExtGeneric[]  = "ROFX";    
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    49
const TText8  KTocSwap[]            = "SOS-SWAP";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    50
const TText8  KTocUserName[]        = "SOS-USER";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    51
const TText8  KTocCrashLog[]        = "SOS-CRASH";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    52
const TText8  KTocToc[]             = "TOC";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    53
const TText8  KTocSosToc[]          = "SOS-TOC";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    54
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    55
const TUint8  KMaxNbrOfTocItems     = 16;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    56
const TUint8  KXMaxNbrOfTocItems    = 16;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    57
const TUint32 KEndOfToc             = 0xFFFFFFFFUL;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    58
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    59
const TText8  KTocRofs1Generic[]    = "ROFS1";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    60
const TText8  KTocRofs2Generic[]    = "ROFS2";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    61
const TText8  KTocRofs3Generic[]    = "ROFS3"; 
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    62
const TText8  KTocRofs4Generic[]    = "ROFS4";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    63
const TText8  KTocRofs5Generic[]    = "ROFS5";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    64
const TText8  KTocRofs6Generic[]    = "ROFS6";
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    65
const TUint   KNoOfROFSPartitions   = 6;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    66
9aca3be14c27 201027_08
hgs
parents:
diff changeset
    67
const TInt    KSectorShift          = 9;
300
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    68
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    69
// Version Info const and enums
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    70
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    71
enum
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    72
     {
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    73
     EHalGroupNandMedia = 28
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    74
     };
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    75
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    76
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    77
 /**
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    78
     The number of nand media attributes.
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    79
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    80
     It is simply defined by its position in the enumeration.
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    81
 */ 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    82
 enum TNandMediaHalFunction
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    83
     {
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    84
     EEraseBlockSize=1,           /// nand device block size
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    85
     EIsEraseNeedBeforeWrite,     /// erase command is mandatory before write
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    86
     EAtomicWriteSize,            /// minimal size of data what can be written
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    87
     
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    88
     EGetVersionInfoItems=0x10,   ///  total amount of items in version info structure
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    89
     EGetVersionInfo              ///  get version info structure array from media driver
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    90
     };
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    91
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    92
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    93
 /**
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    94
     The nand media devices enumeration.
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    95
 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    96
 */ 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    97
 enum 
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    98
     {
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
    99
     ENandMediaDevice1=1          /// nand device1
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   100
     };
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   101
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   102
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   103
const TUint8  KMaxSectionItems     = 32;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   104
const TUint8  KMaxSectionNameLen   = 12;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   105
const TUint8  KMaxVersionInfoLen   = 28;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   106
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   107
const TUint32 KImageHeaderMagic    = 0x31DEEAE8UL;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   108
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   109
// Image header always located after BB5_CommonHeader
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   110
const TUint32  KImageHeaderOffset  = 0x3D0;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   111
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   112
struct TVersionInfoItem
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   113
     {
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   114
     TText8  iSectionName[KMaxSectionNameLen];
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   115
     TUint32 iSectionMaxSize;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   116
     TUint32 iImageCompressedSize;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   117
     TUint32 iImageSize;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   118
     TText8  iVersion[KMaxVersionInfoLen];
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   119
     };
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   120
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   121
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   122
// Image header
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   123
// It is added after BB5_Common_Header
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   124
struct TImageHeader
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   125
     {
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   126
     TUint32 iMagic;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   127
     TUint32 iImageCompressedSize;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   128
     TUint32 iImageSize;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   129
     TUint32 iLoadAddress;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   130
     TUint32 iReserved;
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   131
     TText8  iVersion[KMaxVersionInfoLen];
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   132
     };
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   133
1d28c8722707 201043_09
hgs
parents: 202
diff changeset
   134
202
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   135
/**
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   136
TOC access for kernel side clients.
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   137
*/
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   138
class Toc
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   139
    {
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   140
    public:
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   141
        /**
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   142
         *  Search entry in TOC with aName as part of ItemName.
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   143
         *  @return KErrNone if successful 
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   144
         */
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   145
        TInt GetItemByName(const TText8* aName, STocItem& aItem);
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   146
		
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   147
	public:
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   148
		/**	Array for keep whole TOC */
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   149
		STocItem iTOC[KMaxNbrOfTocItems];
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   150
				
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   151
		/** Offset of TOC from beginning*/
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   152
		TUint32  iTocStartSector;
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   153
    };
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   154
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   155
#endif // __EMMC_TOC_H__
9aca3be14c27 201027_08
hgs
parents:
diff changeset
   156