@ -2501,23 +2501,24 @@ out:
}
/**
* onenand_probe - [ OneNAND Interface ] Probe the OneNAND device
* onenand_chip_ probe - [ OneNAND Interface ] Probe the OneNAND chip
* @ param mtd MTD device structure
*
* OneNAND detection method :
* Compare the the values from command with ones from register
*/
static int onenand_probe ( struct mtd_info * mtd )
static int onenand_chip_ probe ( struct mtd_info * mtd )
{
struct onenand_chip * this = mtd - > priv ;
int bram_maf_id , bram_dev_id , maf_id , dev_id , ver_id ;
int density ;
int bram_maf_id , bram_dev_id , maf_id , dev_id ;
int syscfg ;
/* Save system configuration 1 */
syscfg = this - > read_word ( this - > base + ONENAND_REG_SYS_CFG1 ) ;
/* Clear Sync. Burst Read mode to read BootRAM */
this - > write_word ( ( syscfg & ~ ONENAND_SYS_CFG1_SYNC_READ ) , this - > base + ONENAND_REG_SYS_CFG1 ) ;
this - > write_word ( ( syscfg & ~ ONENAND_SYS_CFG1_SYNC_READ ) ,
this - > base + ONENAND_REG_SYS_CFG1 ) ;
/* Send the command for reading device ID from BootRAM */
this - > write_word ( ONENAND_CMD_READID , this - > base + ONENAND_BOOTRAM ) ;
@ -2542,13 +2543,38 @@ static int onenand_probe(struct mtd_info *mtd)
/* Read manufacturer and device IDs from Register */
maf_id = this - > read_word ( this - > base + ONENAND_REG_MANUFACTURER_ID ) ;
dev_id = this - > read_word ( this - > base + ONENAND_REG_DEVICE_ID ) ;
ver_id = this - > read_word ( this - > base + ONENAND_REG_VERSION_ID ) ;
this - > technology = this - > read_word ( this - > base + ONENAND_REG_TECHNOLOGY ) ;
/* Check OneNAND device */
if ( maf_id ! = bram_maf_id | | dev_id ! = bram_dev_id )
return - ENXIO ;
return 0 ;
}
/**
* onenand_probe - [ OneNAND Interface ] Probe the OneNAND device
* @ param mtd MTD device structure
*
* OneNAND detection method :
* Compare the the values from command with ones from register
*/
int onenand_probe ( struct mtd_info * mtd )
{
struct onenand_chip * this = mtd - > priv ;
int maf_id , dev_id , ver_id ;
int density ;
int ret ;
ret = this - > chip_probe ( mtd ) ;
if ( ret )
return ret ;
/* Read manufacturer and device IDs from Register */
maf_id = this - > read_word ( this - > base + ONENAND_REG_MANUFACTURER_ID ) ;
dev_id = this - > read_word ( this - > base + ONENAND_REG_DEVICE_ID ) ;
ver_id = this - > read_word ( this - > base + ONENAND_REG_VERSION_ID ) ;
this - > technology = this - > read_word ( this - > base + ONENAND_REG_TECHNOLOGY ) ;
/* Flash device information */
mtd - > name = onenand_print_device_info ( dev_id , ver_id ) ;
this - > device_id = dev_id ;
@ -2655,6 +2681,9 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
if ( ! this - > write_bufferram )
this - > write_bufferram = onenand_write_bufferram ;
if ( ! this - > chip_probe )
this - > chip_probe = onenand_chip_probe ;
if ( ! this - > block_markbad )
this - > block_markbad = onenand_default_block_markbad ;
if ( ! this - > scan_bbt )