Date: | 2009-12-01 07:54:57 (11 years 1 month ago) |
---|---|
Author: | xiangfu |
Commit: | d15ef47a9ccd5d6a001af4dfaa2a50f57e514853 |
Message: | 050-nand.patch |
Files: |
drivers/mtd/nand/Kconfig (1 diff) drivers/mtd/nand/Makefile (1 diff) drivers/mtd/nand/nand_base.c (2 diffs) |
Change Details
drivers/mtd/nand/Kconfig | ||
---|---|---|
452 | 452 | help |
453 | 453 | Enables support for NAND Flash chips wired onto Socrates board. |
454 | 454 | |
455 | config MTD_NAND_JZ4740 | |
456 | tristate "Support NAND Flash device on Jz4740 board" | |
457 | depends on SOC_JZ4740 | |
458 | help | |
459 | Support NAND Flash device on Jz4740 board | |
460 | ||
455 | 461 | endif # MTD_NAND |
drivers/mtd/nand/Makefile | ||
---|---|---|
40 | 40 | obj-$(CONFIG_MTD_NAND_MXC) += mxc_nand.o |
41 | 41 | obj-$(CONFIG_MTD_NAND_SOCRATES) += socrates_nand.o |
42 | 42 | obj-$(CONFIG_MTD_NAND_TXX9NDFMC) += txx9ndfmc.o |
43 | obj-$(CONFIG_MTD_NAND_JZ4740) += jz4740_nand.o | |
43 | 44 | |
44 | 45 | nand-objs := nand_base.o nand_bbt.o |
drivers/mtd/nand/nand_base.c | ||
---|---|---|
953 | 953 | uint8_t *ecc_calc = chip->buffers->ecccalc; |
954 | 954 | uint8_t *ecc_code = chip->buffers->ecccode; |
955 | 955 | uint32_t *eccpos = chip->ecc.layout->eccpos; |
956 | ||
957 | for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { | |
958 | chip->ecc.hwctl(mtd, NAND_ECC_READ); | |
959 | chip->read_buf(mtd, p, eccsize); | |
960 | chip->ecc.calculate(mtd, p, &ecc_calc[i]); | |
961 | } | |
962 | chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); | |
956 | int stat; | |
963 | 957 | |
964 | 958 | for (i = 0; i < chip->ecc.total; i++) |
965 | 959 | ecc_code[i] = chip->oob_poi[eccpos[i]]; |
966 | 960 | |
967 | eccsteps = chip->ecc.steps; | |
968 | p = buf; | |
969 | ||
970 | for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { | |
971 | int stat; | |
972 | 961 | |
962 | for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { | |
963 | chip->ecc.hwctl(mtd, NAND_ECC_READ); | |
964 | chip->read_buf(mtd, p, eccsize); | |
973 | 965 | stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); |
974 | 966 | if (stat < 0) |
975 | 967 | mtd->ecc_stats.failed++; |
976 | 968 | else |
977 | 969 | mtd->ecc_stats.corrected += stat; |
978 | 970 | } |
971 | ||
979 | 972 | return 0; |
980 | 973 | } |
981 | 974 | |
... | ... | |
1125 | 1118 | bufpoi = aligned ? buf : chip->buffers->databuf; |
1126 | 1119 | |
1127 | 1120 | if (likely(sndcmd)) { |
1121 | chip->cmdfunc(mtd, NAND_CMD_READOOB, 0x00, page); | |
1122 | chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); | |
1128 | 1123 | chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page); |
1129 | 1124 | sndcmd = 0; |
1130 | 1125 | } |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9