[U-Boot] No NAND device found!!! Freescale MPC8544+SAMSUNG 1GB Nand Flash , please help!

duckycool duckycool at gmail.com
Thu Sep 17 01:40:01 CEST 2009


Hi Anton,
   Thank you, I have done a lot trial and error but still in vain.
   I'm using u-boot-2009.06-rc3.
   This is my /board/freescale/mpc8544board/nand.c below, as to nand_base.c
and fsl_upm.c I didn't change change anything.

=========================== nand.c ====================================
/*
 * Initialize UPM for NAND flash access.
 */
static void nand_upm_setup (volatile ccsr_lbc_t *lbc)
{
	int i=0;

	static uint UPMATable[] = {
		0x0fffff00, 0x0ffcfc00, 0x0ffcfc00, 0xfffffc04,
		0xfffffc01, 0xfffffc00, 0xfffffc00, 0xfffffc01,
		0x0ffffc00, 0x0ffcfc80, 0x0ffdfc00, 0x0ffffc04,
		0x0ffcfc00, 0x0ffdfc00, 0x0ffffc04, 0x0ffcfc00,
		0x0ffdfc00, 0x0ffffc04, 0x0ffcfc00, 0x0ffdfc00,
		0x0ffffc84, 0xfffffc00, 0xfffffc01, 0xfffffc01,
		0xfffffc20, 0x0fe33c00, 0x0fa33c00, 0x0ff77c05,
		0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01,
		0x0feffc80, 0x0faffc00, 0x0ffffc04, 0x0feffc00,
		0x0faffc00, 0x0ffffc04, 0x0feffc00, 0x0faffc00,
		0x0ffffc04, 0x0feffc00, 0x0faffc00, 0x0ffffc84,
		0xfffffc01, 0xfffffc00, 0xfffffc00, 0xfffffc01,
		0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
		0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
		0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01,
		0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01 
	};
    
	lbc->mamr = 0x10000000; //op=10

	for(i=0;i<64;i++)
	{
		lbc->mdr = UPMATable[i];

		printf("lbc->mdr is 0x%08x \n", lbc->mdr);

		*(char *)(0xff000000) = 0x0; //dummy write
	}
	lbc->mamr = 0x00000000; //normal

	while (lbc->mamr !=0x00000000); //wait MAMR finish writting
	printf("ram array is done\n");

	return;
}

static struct fsl_upm_nand fun = {
	.width = 8,
	.upm_cmd_offset = 0x08,
	.upm_addr_offset = 0x10,
	.upm_mar_chip_offset = CONFIG_SYS_NAND_CS_DIST,
	.chip_offset = CONFIG_SYS_NAND_CS_DIST,
	.chip_delay = NAND_BIG_DELAY_US,  //per spec, 25 us
	.wait_flags = FSL_UPM_WAIT_RUN_PATTERN | FSL_UPM_WAIT_WRITE_BUFFER,
};


int board_nand_init (struct nand_chip *nand)
{
	volatile ccsr_lbc_t *lbc = (void *)(CONFIG_SYS_MPC85xx_LBC_ADDR);
	debug("board_nand_init begin \n");

	nand_upm_setup (lbc);
	nand->options = NAND_SAMSUNG_LP_OPTIONS ;

	fun.upm.io_addr = nand->IO_ADDR_R;
	fun.upm.mxmr = (void __iomem *)&lbc->mamr;
	fun.upm.mdr = (void __iomem *)&lbc->mdr;
	fun.upm.mar = (void __iomem *)&lbc->mar;

	debug("fun.upm.io_addr is 0x%08x \n", fun.upm.io_addr );
	debug("fun.upm.mxmr is 0x%08x \n", fun.upm.mxmr );
	debug("fun.upm.mdr is 0x%08x \n", fun.upm.mdr );
	debug("fun.upm.mar is 0x%08x \n", fun.upm.mar );

	return fsl_upm_nand_init (nand, &fun);
}

=======================================================================

     Any hint ? Please help !
     Thanks.
   

Anton Vorontsov-2 wrote:
> 
> On Wed, Sep 16, 2009 at 11:55:12PM +0800, Bin Meng wrote:
>> On Wed, Sep 16, 2009 at 5:40 AM, duckycool <duckycool at gmail.com> wrote:
>> >
>> >   Correction, the nand flash is K9F8G08U0M.
>> >
>> 
>> K9F8G08U0M is a 4KB page size NAND flash.
>> Freescale eLBC NAND flash controller does not support 4KB page size.
> 
> MPC8544 doesn't have eLBC, so its LBC can't speak NAND directly,
> only via UPM (user-programmable machine). And with UPM we can
> support any NAND flashes.
> 
> As for the original problem, it could be anything: schematics (I assume
> it's custom 8544 board), timings setup (OR/BR), or UPM array problem.
> 
> Unfortunately it's hard to debug these sort of things without logic
> analyzer, so if you don't have one, I'd suggest to play
> 'trial & error' game.
> 
> Cc'ing Wolfgang Grandegger though, maybe he has better ideas.
> 
> -- 
> Anton Vorontsov
> email: cbouatmailru at gmail.com
> irc://irc.freenode.net/bd2
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> 
> 

-- 
View this message in context: http://www.nabble.com/No-NAND-device-found%21%21%21-Freescale-MPC8544%2BSAMSUNG-1GB-Nand-Flash-%2C-please-help%21-tp25455541p25482840.html
Sent from the Uboot - Users mailing list archive at Nabble.com.



More information about the U-Boot mailing list