1.1.6移植笔记(初级篇)(9)

        /* Enable NAND flash controller, Initialize ECC, enable chip select, Set flash memory timing */ 

        s3c2410nand->NFCONF = (1<<15)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); 

    } 

    else 

    { 

        /* Set flash memory timing */ 

        s3c2440nand->NFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4); 

        /* Initialize ECC, enable chip select, NAND flash controller enable */ 

        s3c2440nand->NFCONT = (1<<4)|(0<<1)|(1<<0); 

    } 

 

/* 

 * Called by drivers/nand/nand.c, initialize the interface of nand flash 

 */ 

void board_nand_init(struct nand_chip *chip) 

    S3C2410_NAND * const s3c2410nand = S3C2410_GetBase_NAND(); 

    S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND(); 

 

    s3c24x0_nand_inithw(); 

 

    if (0) { 

        chip->IO_ADDR_R    = (void *)&s3c2410nand->NFDATA; 

        chip->IO_ADDR_W    = (void *)&s3c2410nand->NFDATA; 

        chip->hwcontrol    = s3c2410_nand_hwcontrol; 

        chip->dev_ready    = s3c2410_nand_devready; 

        chip->select_chip  = s3c2410_nand_select_chip; 

        chip->options      = 0; 

    } else { 

        chip->IO_ADDR_R    = (void *)&s3c2440nand->NFDATA; 

        chip->IO_ADDR_W    = (void *)&s3c2440nand->NFDATA; 

        chip->hwcontrol    = s3c2440_nand_hwcontrol; 

        chip->dev_ready    = s3c2440_nand_devready; 

        chip->select_chip  = s3c2440_nand_select_chip; 

        chip->options      = 0; 

    } 

 

    chip->eccmode       = NAND_ECC_SOFT; 

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5192f09a4a43c65b3eaf648136b55d4c.html