124 {
125 S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND();
126
127 return (s3c2440nand->NFSTAT & S3C2440_NFSTAT_READY);
128 }
129
130 /*
131 * Nand flash硬件初始化:
132 * 设置NAND Flash的时序, 使能NAND Flash控制器
133 */
134 static void s3c24x0_nand_inithw(void)
135 {
136 S3C2410_NAND * const s3c2410nand = S3C2410_GetBase_NAND();
137 S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND();
138
139 #define TACLS 0
140 #define TWRPH0 4
141 #define TWRPH1 2
142
143 if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
144 {
145 /* 使能NAND Flash控制器,初始化ECC,使能片选信号,设置时序 */
146 s3c2410nand->NFCONF = (1<<15)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);
147 }
148 else
149 {
150 /* 设置时序 */
151 s3c2440nand->NFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4);
152 /* 初始化ECC,使能NAND Flash控制器,使能片选信号 */
153 s3c2440nand->NFCONT = (1<<4)|(0<<1)|(1<<0);
154 }
155 }
156
157 /*
158 * 被drivers/nand/nand.c调用, 初始化NAND Flash硬件,初始化访问接口函数
159 */
160 void board_nand_init(struct nand_chip *chip)
161 {
162 S3C2410_NAND * const s3c2410nand = S3C2410_GetBase_NAND();
163 S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND();
164
165 s3c24x0_nand_inithw();/* Nand flash硬件初始化 */
166
167 if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410) {
168 chip->IO_ADDR_R = (void *)&s3c2410nand->NFDATA;
169 chip->IO_ADDR_W = (void *)&s3c2410nand->NFDATA;
170 chip->hwcontrol = s3c2410_nand_hwcontrol;
171 chip->dev_ready = s3c2410_nand_devready;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-29.html
调制酒
男同
6现在我用的9