small fix

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@153 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
shirait 2007-07-02 04:54:15 +00:00
parent 89ecd85df0
commit 08109c64b6
2 changed files with 19 additions and 12 deletions

View File

@ -61,9 +61,9 @@ static int nand_calculated_fat_params = 0;
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
static関数 static関数
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static void sdi_get_CHS_params( void); static BOOL sdi_get_CHS_params( void);
static u32 sdi_get_ceil( u32 cval, u32 mval); static u32 sdi_get_ceil( u32 cval, u32 mval);
static void sdi_get_nom( u32 min_nom); static BOOL sdi_get_nom( u32 min_nom);
static void sdi_get_fatparams( void); static void sdi_get_fatparams( void);
static void sdi_build_partition_table( void); static void sdi_build_partition_table( void);
@ -225,9 +225,13 @@ int nandRtfsCtrl( int driveno, int opcode, void* pargs)
if( nand_calculated_fat_params == 0) { if( nand_calculated_fat_params == 0) {
i_sdmcCalcSize(); //TODO:sdmc_current_specを構造体に入れること i_sdmcCalcSize(); //TODO:sdmc_current_specを構造体に入れること
sdi_get_CHS_params(); //最初に呼ぶこと if( sdi_get_CHS_params() == FALSE) { //<2F>Å<EFBFBD>ÉŒÄÔ±Æ
return( -1);
}
sdi_get_fatparams(); sdi_get_fatparams();
sdi_get_nom( NAND_RAW_SECTORS); if( sdi_get_nom( NAND_RAW_SECTORS) == FALSE) {
return( -1);
}
nand_calculated_fat_params = 1; nand_calculated_fat_params = 1;
} }
@ -386,7 +390,7 @@ BOOL nandRtfsAttach( int driveno, int partition_no)
/*SD File System Specification(仕様書)に基づいた値を出す*/ /*SD File System Specification(仕様書)に基づいた値を出す*/
static void sdi_get_CHS_params( void) static BOOL sdi_get_CHS_params( void)
{ {
u16 i; u16 i;
int mbytes; int mbytes;
@ -405,8 +409,7 @@ static void sdi_get_CHS_params( void)
} }
/*容量破綻チェック*/ /*容量破綻チェック*/
if( cumulative_capacity >= sdmc_current_spec.memory_capacity) { if( cumulative_capacity >= sdmc_current_spec.memory_capacity) {
OS_TPrintf( "INVALID PARAMETER ERROR!\n"); return( FALSE);
while( 1) {};
} }
/*最終パーティションは残りのセクタ全部*/ /*最終パーティションは残りのセクタ全部*/
@ -516,6 +519,7 @@ static void sdi_get_CHS_params( void)
i, NandFatSpec[i].memory_capacity, i, NandFatSpec[i].memory_capacity,
NandFatSpec[i].adjusted_memory_capacity); NandFatSpec[i].adjusted_memory_capacity);
} }
return( TRUE);
} }
@ -527,7 +531,7 @@ static u32 sdi_get_ceil( u32 cval, u32 mval)
/*マスターブートセクタのセクタ数を返す*/ /*マスターブートセクタのセクタ数を返す*/
static void sdi_get_nom( u32 MIN_NOM) static BOOL sdi_get_nom( u32 MIN_NOM)
{ {
u32 RSC[4]; u32 RSC[4];
u32 TS[4]; u32 TS[4];
@ -606,6 +610,9 @@ static void sdi_get_nom( u32 MIN_NOM)
NandFatSpec[i].NOM += NandFatSpec[i].BU; NandFatSpec[i].NOM += NandFatSpec[i].BU;
} }
do { do {
if( NandFatSpec[i].NOM >= sdmc_current_spec.memory_capacity) {
return( FALSE);
}
MAX = ((TS[i] - NandFatSpec[i].NOM - NandFatSpec[i].SSA) / SC) + 1; MAX = ((TS[i] - NandFatSpec[i].NOM - NandFatSpec[i].SSA) / SC) + 1;
SFdash = sdi_get_ceil( (2+(MAX-1)) * NandFatSpec[i].FATBITS, SS*8); SFdash = sdi_get_ceil( (2+(MAX-1)) * NandFatSpec[i].FATBITS, SS*8);
if( SFdash > NandFatSpec[i].SF) { if( SFdash > NandFatSpec[i].SF) {
@ -630,7 +637,7 @@ static void sdi_get_nom( u32 MIN_NOM)
i, NandFatSpec[i].NOM, NandFatSpec[i].SSA, NandFatSpec[i].begin_sect); i, NandFatSpec[i].NOM, NandFatSpec[i].SSA, NandFatSpec[i].begin_sect);
} }
return; return( TRUE);
} }
/*FATのビット数を返す*/ /*FATのビット数を返す*/

View File

@ -305,9 +305,9 @@ NAND_FLASH_FORMAT_START:
/*--- パーティション構成をセクタ単位にしてライブラリに要求 ---*/ /*--- パーティション構成をセクタ単位にしてライブラリに要求 ---*/
for( i=0; i<4; i++) { for( i=0; i<5; i++) {
partition_MB_size[i] *= ((1024 * 1024) / 512); partition_MB_size[i] *= ((1024 * 1024) / 512);
PRINTDEBUG( "p%d : %d\n", i, partition_MB_size[i]); // PRINTDEBUG( "p%d : %d\n", i, partition_MB_size[i]);
} }
nandSetFormatRequest( nand_fat_partition_num, partition_MB_size); nandSetFormatRequest( nand_fat_partition_num, partition_MB_size);
/*------------------------------------------------------------*/ /*------------------------------------------------------------*/
@ -338,7 +338,7 @@ NAND_FLASH_FORMAT_START:
/*--- MBR書き込み、パーティション0フォーマット ---*/ /*--- MBR書き込み、パーティション0フォーマット ---*/
if( !rtfs_pc_get_media_parms( (byte*)"F:", &geometry)) { if( !rtfs_pc_get_media_parms( (byte*)"F:", &geometry)) {
PRINTDEBUG( "pc_get_media_parms failed\n"); PRINTDEBUG( "Invalid parameter. (size over)\n");
goto NAND_FLASH_FORMAT_END; goto NAND_FLASH_FORMAT_END;
} }