📄 oren_mtd.c
字号:
DBG_PRINT_ERR(FLZONE_MTD,"initMedia:ERROR: Flash returned invalid value in READ_ID_2 sequence \r\n");
return flUnknownMedia ;
}
#endif
flashPtr->type = TC58512_FLASH;
MTD_VARS->bNoOfPlanesBits = 2;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 1 ;
flashPtr->oddPagePPP = 1 ;
break ;
case 0x79: /*** Toshiba 1 GigaBit (128 MByte) ***/
#ifdef ERASED_FLASH
if (IsFlashErased(flashPtr)==FALSE)
#endif
checkStatus (OREN_readID_2_Seq (flashPtr,&bSubType)) ;
flashPtr->subType = (FlashType)(bSubType) ;
#ifndef ERASED_FLASH
if (flashPtr->subType==0x24)
#endif
{ /* MLC CHIP */
MTD_VARS->bFlashType = OREN_MLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 6 ;
MTD_VARS->wUnitsInChip = 4096;
MTD_VARS->bPlaneArraysInChip = 1 ; /* One plane array in MLC */
flashPtr->averageWrite = 1200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Toshiba 128MB (UnitSize=32KB) MLC detected.\r\n");
}
#ifndef ERASED_FLASH
else if (flashPtr->subType==0x20)
{ /* SLC CHIP */
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 8192 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Toshiba 128MB (UnitSize=16KB) SLC detected.\r\n");
}
#endif
#ifndef ERASED_FLASH
else
{
DBG_PRINT_ERR(FLZONE_MTD,"initMedia:ERROR: Flash returned invalid value in READ_ID_2 sequence \r\n");
return flUnknownMedia ;
}
#endif
flashPtr->type = TC58100FT;
MTD_VARS->bNoOfPlanesBits = 2;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 1 ;
flashPtr->oddPagePPP = 1 ;
break ;
case 0xF1: /*** Toshiba 1 GigaBit (128 MB) 8 bit interface 2K page ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 6 ;
MTD_VARS->wUnitsInChip = 1024 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = TC58NVG0S3AFT05 ;
MTD_VARS->bNoOfPlanesBits = 0 ;
MTD_VARS->bAddressBytes = 4 ;
MTD_VARS->bPageSizeBits = 11; /* 2K Page */
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 2;
flashPtr->oddPagePPP = 2;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Toshiba 128MBx8 (UnitSize=128KB) 2K Page detected.\r\n");
break ;
case 0xDA: /*** Toshiba 2 GigaBit (256 MByte) ***/
checkStatus (OREN_enhancedReadID_Seq (flashPtr,bEnhancedData)) ;
if ( ((bEnhancedData[0]==0x81) || (bEnhancedData[0]==0x01)) &&
((bEnhancedData[1]==0x95) || (bEnhancedData[1]==0x15)) &&
((bEnhancedData[2]==0x44) || (bEnhancedData[2]==0xc4)) )
{ /*** 0.13u 2KPage SLC device ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 6 ;
MTD_VARS->wUnitsInChip = 2048 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = TC58NVG1S3AFT05 ;
MTD_VARS->bNoOfPlanesBits = 0 ;
MTD_VARS->bAddressBytes = 5 ;
MTD_VARS->bPageSizeBits = 11; /* 2K Page */
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 2;
flashPtr->oddPagePPP = 2;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Toshiba 256MBx8 (UnitSize=128KB) 2K Page detected.\r\n");
break ;
}
else
{ /*** 0.13u MLC device ***/
MTD_VARS->bFlashType = OREN_MLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 6 ; /* 64 pages */
MTD_VARS->wUnitsInChip = 8192 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->averageWrite = 1200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia : Recongnized an MLC Toshiba 256MB (UnitSize=32KB).\r\n");
}
flashPtr->type = TC58020FT;
MTD_VARS->bNoOfPlanesBits = 2;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 1 ;
flashPtr->oddPagePPP = 1 ;
break ;
case 0xDC: /*** Toshiba 4 GigaBit (512 MByte) ***/
#ifdef ERASED_FLASH
if (IsFlashErased(flashPtr)==FALSE)
#endif
checkStatus (OREN_readID_2_Seq (flashPtr,&bSubType)) ;
flashPtr->subType = (FlashType)(bSubType) ;
#ifndef ERASED_FLASH
if (flashPtr->subType==0x25)
#endif
{ /*** 0.13u MLC device ***/
MTD_VARS->bFlashType = OREN_MLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 6 ; /* 64 pages */
MTD_VARS->wUnitsInChip = 16384 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->averageWrite = 1200 ;
flashPtr->averageErase = 2000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia : Recongnized an MLC Toshiba 512MB (erase Unit of 32KB).\r\n");
}
#ifndef ERASED_FLASH
else
{
DBG_PRINT_ERR(FLZONE_MTD,"initMedia:ERROR: Flash returned invalid value in READ_ID_2 sequence \r\n");
return flUnknownMedia ;
}
#endif
flashPtr->type = TC58020FT;
MTD_VARS->bNoOfPlanesBits = 2;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 1 ;
flashPtr->oddPagePPP = 1 ;
break ;
default : return flUnknownMedia ; /* Undefined Flash */
}
break ;
}
case 0xC1:/*** Infineon chips ***/
{
switch (bDeviceCode)
{
case 0x76: /*** Infineon 128 MegaBit (16 MB) ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 4096 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = TC58256_FLASH ;
MTD_VARS->bNoOfPlanesBits = 0 ;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 5 ;
flashPtr->oddPagePPP = 5 ;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 4000 ;
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Infineon 64MB (UnitSize=16KB) detected.\r\n");
break ;
}
break ;
}
case 0xEC:/*** Samsung chips ***/
{
switch (bDeviceCode)
{
case 0x73: /*** Samsung 128 MegaBit (16 MB) 8 bit interface ***/
case 0x53: /*** Samsung 128 MegaBit (16 MB) 16 bit interface ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 1024 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = KM29V128000_FLASH ;
MTD_VARS->bNoOfPlanesBits = 0 ;
MTD_VARS->bAddressBytes = 3;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 3;
flashPtr->oddPagePPP = 3;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
if (bDeviceCode==0x73)
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 16MBx8 (UnitSize=16KB) detected.\r\n");
}
else
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 16MBx16 (UnitSize=16KB) detected.\r\n");
#ifdef ERASED_FLASH
flashPtr->interleaving = 2 ;
#endif
}
break ;
case 0x75: /*** Samsung 256 MegaBit (32 MB) 8 bit interface ***/
case 0x55: /*** Samsung 256 MegaBit (32 MB) 16 bit interface ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 2048 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = KM29V128000_FLASH ;
MTD_VARS->bNoOfPlanesBits = 0 ;
MTD_VARS->bAddressBytes = 3;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 3;
flashPtr->oddPagePPP = 3;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
if (bDeviceCode==0x75)
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 32MBx8 (UnitSize=16KB) detected.\r\n");
}
else
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 32MBx16 (UnitSize=16KB) detected.\r\n");
#ifdef ERASED_FLASH
flashPtr->interleaving = 2 ;
#endif
}
break ;
case 0x76: /*** Samsung 512 MegaBit (64 MB) 8 bit interface ***/
case 0x56: /*** Samsung 512 MegaBit (64 MB) 16 bit interface ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 4096 ;
MTD_VARS->bPlaneArraysInChip = 1 ;
flashPtr->type = KM29V512000_FLASH ;
MTD_VARS->bNoOfPlanesBits = 0 ; /* The new process has only 1 plane */
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 2;
flashPtr->oddPagePPP = 2;
flashPtr->subType = 0x00 ;
flashPtr->averageWrite = 200 ;
flashPtr->averageErase = 2000 ;
if (bDeviceCode==0x76)
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 64MBx8 (UnitSize=16KB) detected.\r\n");
}
else
{
DBG_PRINT_WRN(FLZONE_MTD,"initMedia:Samsung 64MBx16 (UnitSize=16KB) detected.\r\n");
#ifdef ERASED_FLASH
flashPtr->interleaving = 2 ;
#endif
}
break ;
case 0x79: /*** Samsung 1 GigaBit (128 MB) 8 bit interface with planes ***/
MTD_VARS->bFlashType = OREN_SLC_TYPE ;
MTD_VARS->wPagesPerBlockBits = 5 ;
MTD_VARS->wUnitsInChip = 8192 ;
MTD_VARS->bPlaneArraysInChip = 2 ;
flashPtr->type = KM29V1024000_FLASH ;
MTD_VARS->bNoOfPlanesBits = 2 ;
MTD_VARS->bAddressBytes = 4;
MTD_VARS->bPageSizeBits = 9;
flashPtr->maxEraseCycles = 100000L;
flashPtr->evenPagePPP = 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -