[U-Boot] [U-BOOT] nand merge problem

xiangfu xiangfu.z at gmail.com
Sun May 31 10:09:35 CEST 2009


zyliu at ingenic.cn wrote:
> Hi, xiangfu
> 
> Maybe the drivers of mtd in linux-2.6.24.3 can be as reference.
> 
> Best Regards
> 
thanks, now it's output :
"nand_get_flash_type: second ID read did not match 43,20 against 84,84"

I will let you know the progress.

now the hwcontrol is
--
static void jz_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
{
	struct nand_chip *this = (struct nand_chip *)(mtd->priv);
        unsigned int nandaddr = (unsigned int)this->IO_ADDR_W;
	if (ctrl & NAND_CTRL_CHANGE) {
		if (ctrl & NAND_CLE)
			nandaddr = nandaddr | 0x00008000;
                else
                        nandaddr = nandaddr & ~0x00008000;
			
		if (ctrl & NAND_ALE)
			this->IO_ADDR_W = (void __iomem *)((unsigned long)(this->IO_ADDR_W) |
0x00010000);
		else
			this->IO_ADDR_W = (void __iomem *)((unsigned long)(this->IO_ADDR_W) &
~0x00010000);
		if (ctrl & NAND_NCE) {
			this->IO_ADDR_W = this->IO_ADDR_R = (void __iomem *)NAND_DATA_PORT1;
			REG_EMC_NFCSR |= EMC_NFCSR_NFCE1;
		} else {
			REG_EMC_NFCSR &= ~EMC_NFCSR_NFCE1;
                        REG_EMC_NFCSR &= ~EMC_NFCSR_NFCE2;
                        REG_EMC_NFCSR &= ~EMC_NFCSR_NFCE3;
                        REG_EMC_NFCSR &= ~EMC_NFCSR_NFCE4;
		}
	}

	this->IO_ADDR_W = (void __iomem *)nandaddr;
        if (cmd != NAND_CMD_NONE)
                writeb(cmd, this->IO_ADDR_W);
}



-- 
Best Regards
Xiangfu Liu

jabber : xiangfu.z at gmail.com
skype  : xiangfu.z


More information about the U-Boot mailing list