|
在移植UBOOT的时候,到NAND FLASH这块,看了很多人的资料,有如下疑问:
首先请看源码:
#define S3C2440_ADDR_NALE 0x8
#define S3C2440_ADDR_NCLE 0x0c
static void s3c2440_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
{
struct nand_chip *chip = mtd->priv;
struct s3c2440_nand *nand = s3c2440_get_base_nand();
debugX(1, "hwcontrol(): 0x%02x 0x%02x\n", cmd, ctrl);
if (ctrl & NAND_CTRL_CHANGE) {
ulong IO_ADDR_W = (ulong)nand;
if (!(ctrl & NAND_CLE))
IO_ADDR_W |= S3C2440_ADDR_NCLE;
if (!(ctrl & NAND_ALE))
IO_ADDR_W |= S3C2440_ADDR_NALE;
if (ctrl & NAND_NCE)
writel(readl(&nand->NFCONT) & ~S3C2440_NFCONT_nFCE, &nand->NFCONT);
else
writel(readl(&nand->NFCONT) | S3C2440_NFCONT_nFCE, &nand->NFCONT);
}
if (cmd != NAND_CMD_NONE)
writeb(cmd, &nand->NFCMMD);
}
以上是我看了别人的资料改的,但有些不明白是:
1、那两个宏的值是根据什么得来的?
2、那两个宏的值怎么赋值给了NAND FLASH的控制寄存器NFCONF。
我用的是TQ2440的板子,NAND FLASH是K9F1208U0C,向各位兄弟们请教了!谢谢。。。
|
|