aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2011-12-02 14:00:12 -0500
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-01-09 13:13:05 -0500
commitb604436cb06626363f0da357759797a5e1894baf (patch)
tree15058785e489587a36ca4c40614e86d33f12ce4a /drivers/mtd
parent3538c56329936c78f7d356889908790006d0124c (diff)
mtd: docg3: fixes and cleanups
This patch takes into account checkpatch, sparse and ECC comments. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/devices/docg3.c26
-rw-r--r--drivers/mtd/devices/docg3.h3
2 files changed, 15 insertions, 14 deletions
diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c
index f7490a014e78..2a32072c7908 100644
--- a/drivers/mtd/devices/docg3.c
+++ b/drivers/mtd/devices/docg3.c
@@ -61,7 +61,7 @@
61 * 61 *
62 */ 62 */
63 63
64static unsigned int reliable_mode = 0; 64static unsigned int reliable_mode;
65module_param(reliable_mode, uint, 0); 65module_param(reliable_mode, uint, 0);
66MODULE_PARM_DESC(reliable_mode, "Set the docg3 mode (0=normal MLC, 1=fast, " 66MODULE_PARM_DESC(reliable_mode, "Set the docg3 mode (0=normal MLC, 1=fast, "
67 "2=reliable) : MLC normal operations are in normal mode"); 67 "2=reliable) : MLC normal operations are in normal mode");
@@ -546,7 +546,7 @@ out:
546 * @len: the number of bytes covered by the ECC (BCH covered) 546 * @len: the number of bytes covered by the ECC (BCH covered)
547 * 547 *
548 * The function does initialize the hardware ECC engine to compute the Hamming 548 * The function does initialize the hardware ECC engine to compute the Hamming
549 * ECC (on 1 byte) and the BCH Syndroms (on 7 bytes). 549 * ECC (on 1 byte) and the BCH hardware ECC (on 7 bytes).
550 * 550 *
551 * Return 0 if succeeded, -EIO on error 551 * Return 0 if succeeded, -EIO on error
552 */ 552 */
@@ -567,13 +567,13 @@ static int doc_read_page_ecc_init(struct docg3 *docg3, int len)
567 * @len: the number of bytes covered by the ECC (BCH covered) 567 * @len: the number of bytes covered by the ECC (BCH covered)
568 * 568 *
569 * The function does initialize the hardware ECC engine to compute the Hamming 569 * The function does initialize the hardware ECC engine to compute the Hamming
570 * ECC (on 1 byte) and the BCH Syndroms (on 7 bytes). 570 * ECC (on 1 byte) and the BCH hardware ECC (on 7 bytes).
571 * 571 *
572 * Return 0 if succeeded, -EIO on error 572 * Return 0 if succeeded, -EIO on error
573 */ 573 */
574static int doc_write_page_ecc_init(struct docg3 *docg3, int len) 574static int doc_write_page_ecc_init(struct docg3 *docg3, int len)
575{ 575{
576 doc_writew(docg3, !DOC_ECCCONF0_READ_MODE 576 doc_writew(docg3, DOC_ECCCONF0_WRITE_MODE
577 | DOC_ECCCONF0_BCH_ENABLE | DOC_ECCCONF0_HAMMING_ENABLE 577 | DOC_ECCCONF0_BCH_ENABLE | DOC_ECCCONF0_HAMMING_ENABLE
578 | (len & DOC_ECCCONF0_DATA_BYTES_MASK), 578 | (len & DOC_ECCCONF0_DATA_BYTES_MASK),
579 DOC_ECCCONF0); 579 DOC_ECCCONF0);
@@ -614,7 +614,7 @@ static void doc_hamming_ecc_init(struct docg3 *docg3, int nb_bytes)
614} 614}
615 615
616/** 616/**
617 * doc_correct_data - Fix if need be read data from flash 617 * doc_ecc_bch_fix_data - Fix if need be read data from flash
618 * @docg3: the device 618 * @docg3: the device
619 * @buf: the buffer of read data (512 + 7 + 1 bytes) 619 * @buf: the buffer of read data (512 + 7 + 1 bytes)
620 * @hwecc: the hardware calculated ECC. 620 * @hwecc: the hardware calculated ECC.
@@ -761,16 +761,16 @@ static void doc_write_page_putbytes(struct docg3 *docg3, int len,
761} 761}
762 762
763/** 763/**
764 * doc_get_hw_bch_syndroms - Get hardware calculated BCH syndroms 764 * doc_get_bch_hw_ecc - Get hardware calculated BCH ECC
765 * @docg3: the device 765 * @docg3: the device
766 * @syns: the array of 7 integers where the syndroms will be stored 766 * @hwecc: the array of 7 integers where the hardware ecc will be stored
767 */ 767 */
768static void doc_get_hw_bch_syndroms(struct docg3 *docg3, u8 *syns) 768static void doc_get_bch_hw_ecc(struct docg3 *docg3, u8 *hwecc)
769{ 769{
770 int i; 770 int i;
771 771
772 for (i = 0; i < DOC_ECC_BCH_SIZE; i++) 772 for (i = 0; i < DOC_ECC_BCH_SIZE; i++)
773 syns[i] = doc_register_readb(docg3, DOC_BCH_SYNDROM(i)); 773 hwecc[i] = doc_register_readb(docg3, DOC_BCH_HW_ECC(i));
774} 774}
775 775
776/** 776/**
@@ -904,7 +904,7 @@ static int doc_read_oob(struct mtd_info *mtd, loff_t from,
904 doc_read_page_getbytes(docg3, DOC_LAYOUT_OOB_SIZE - nboob, 904 doc_read_page_getbytes(docg3, DOC_LAYOUT_OOB_SIZE - nboob,
905 NULL, 0); 905 NULL, 0);
906 906
907 doc_get_hw_bch_syndroms(docg3, hwecc); 907 doc_get_bch_hw_ecc(docg3, hwecc);
908 eccconf1 = doc_register_readb(docg3, DOC_ECCCONF1); 908 eccconf1 = doc_register_readb(docg3, DOC_ECCCONF1);
909 909
910 if (nboob >= DOC_LAYOUT_OOB_SIZE) { 910 if (nboob >= DOC_LAYOUT_OOB_SIZE) {
@@ -1248,7 +1248,7 @@ static int doc_write_page(struct docg3 *docg3, loff_t to, const u_char *buf,
1248 const u_char *oob, int autoecc) 1248 const u_char *oob, int autoecc)
1249{ 1249{
1250 int block0, block1, page, ret, ofs = 0; 1250 int block0, block1, page, ret, ofs = 0;
1251 u8 syn[DOC_ECC_BCH_SIZE], hamming; 1251 u8 hwecc[DOC_ECC_BCH_SIZE], hamming;
1252 1252
1253 doc_dbg("doc_write_page(to=%lld)\n", to); 1253 doc_dbg("doc_write_page(to=%lld)\n", to);
1254 calc_block_sector(to, &block0, &block1, &page, &ofs, docg3->reliable); 1254 calc_block_sector(to, &block0, &block1, &page, &ofs, docg3->reliable);
@@ -1278,8 +1278,8 @@ static int doc_write_page(struct docg3 *docg3, loff_t to, const u_char *buf,
1278 &hamming); 1278 &hamming);
1279 doc_delay(docg3, 2); 1279 doc_delay(docg3, 2);
1280 1280
1281 doc_get_hw_bch_syndroms(docg3, syn); 1281 doc_get_bch_hw_ecc(docg3, hwecc);
1282 doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_BCH_SZ, syn); 1282 doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_BCH_SZ, hwecc);
1283 doc_delay(docg3, 2); 1283 doc_delay(docg3, 2);
1284 1284
1285 doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_UNUSED_SZ, oob); 1285 doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_UNUSED_SZ, oob);
diff --git a/drivers/mtd/devices/docg3.h b/drivers/mtd/devices/docg3.h
index a349915da77d..db0da436b493 100644
--- a/drivers/mtd/devices/docg3.h
+++ b/drivers/mtd/devices/docg3.h
@@ -115,7 +115,7 @@
115#define DOC_ECCCONF1 0x1042 115#define DOC_ECCCONF1 0x1042
116#define DOC_ECCPRESET 0x1044 116#define DOC_ECCPRESET 0x1044
117#define DOC_HAMMINGPARITY 0x1046 117#define DOC_HAMMINGPARITY 0x1046
118#define DOC_BCH_SYNDROM(idx) (0x1048 + (idx << 0)) 118#define DOC_BCH_HW_ECC(idx) (0x1048 + idx)
119 119
120#define DOC_PROTECTION 0x1056 120#define DOC_PROTECTION 0x1056
121#define DOC_DPS0_KEY 0x105c 121#define DOC_DPS0_KEY 0x105c
@@ -193,6 +193,7 @@
193/* 193/*
194 * Flash register : DOC_ECCCONF0 194 * Flash register : DOC_ECCCONF0
195 */ 195 */
196#define DOC_ECCCONF0_WRITE_MODE 0x0000
196#define DOC_ECCCONF0_READ_MODE 0x8000 197#define DOC_ECCCONF0_READ_MODE 0x8000
197#define DOC_ECCCONF0_AUTO_ECC_ENABLE 0x4000 198#define DOC_ECCCONF0_AUTO_ECC_ENABLE 0x4000
198#define DOC_ECCCONF0_HAMMING_ENABLE 0x1000 199#define DOC_ECCCONF0_HAMMING_ENABLE 0x1000