63 break;
64 }
65 }
66
67 /* S3C2410:查询NAND Flash状态
68 *
69 * 返回值:0 – 忙, 1 – 就绪
70 */
71 static int s3c2410_nand_devready(struct mtd_info *mtd)
72 {
73 S3C2410_NAND * const s3c2410nand = S3C2410_GetBase_NAND();
74
75 return (s3c2410nand->NFSTAT & S3C2410_NFSTAT_READY);
76 }
77
78
79 /* S3C2440:NAND Flash的片选函数 */
80 static void s3c2440_nand_select_chip(struct mtd_info *mtd, int chip)
81 {
82 S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND();
83
84 if (chip == -1) {
85 s3c2440nand->NFCONT |= S3C2440_NFCONT_nFCE;/* 禁止片选信号 */
86 } else {
87 s3c2440nand->NFCONT &= ~S3C2440_NFCONT_nFCE;/* 使能片选信号 */
88 }
89 }
90
91 /* S3C2440:命令和控制函数,与s3c2410_nand_hwcontrol函数类似 */
92 static void s3c2440_nand_hwcontrol(struct mtd_info *mtd, int cmd)
93 {
94 S3C2440_NAND * const s3c2440nand = S3C2440_GetBase_NAND();
95 struct nand_chip *chip = mtd->priv;
96
97 switch (cmd) {
98 case NAND_CTL_SETNCE:
99 case NAND_CTL_CLRNCE:
100 printf("%s: called for NCE\n", __FUNCTION__);
101 break;
102
103 case NAND_CTL_SETCLE:
104 chip->IO_ADDR_W = (void *)&s3c2440nand->NFCMD;
105 break;
106
107 case NAND_CTL_SETALE:
108 chip->IO_ADDR_W = (void *)&s3c2440nand->NFADDR;
109 break;
110
111 /* NAND_CTL_CLRCLE: */
112 /* NAND_CTL_CLRALE: */
113 default:
114 chip->IO_ADDR_W = (void *)&s3c2440nand->NFDATA;
115 break;
116 }
117 }
118
119 /* S3C2440:查询NAND Flash状态
120 *
121 * 返回值:0 – 忙, 1 – 就绪
122 */
123 static int s3c2440_nand_devready(struct mtd_info *mtd)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-28.html
我们应该高调欢迎美舰来参观我们的领海