aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@free-electrons.com>2016-11-21 04:03:04 -0500
committerBoris Brezillon <boris.brezillon@free-electrons.com>2016-11-21 05:55:59 -0500
commit8fcfba072420518fda4b2fe00a3f3c9c3e2774e2 (patch)
tree09628a41d1648e468e98c95b5caf0cd0a6583625
parent4d6aecfb7e26d2e8746e2eb1eab5e0fe378065ab (diff)
mtd: nand: tango: Use nand_to_mtd() instead of directly accessing chip->mtd
The nand_to_mtd() helper is here to hide internal mtd_info <-> nand_chip association and ease future refactors. Make use of this helper instead of directly accessing chip->mtd. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Acked-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
-rw-r--r--drivers/mtd/nand/tango_nand.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/mtd/nand/tango_nand.c b/drivers/mtd/nand/tango_nand.c
index 7ed35348993e..ec87516b87f5 100644
--- a/drivers/mtd/nand/tango_nand.c
+++ b/drivers/mtd/nand/tango_nand.c
@@ -171,6 +171,7 @@ static void tango_select_chip(struct mtd_info *mtd, int idx)
171 */ 171 */
172static int check_erased_page(struct nand_chip *chip, u8 *buf) 172static int check_erased_page(struct nand_chip *chip, u8 *buf)
173{ 173{
174 struct mtd_info *mtd = nand_to_mtd(chip);
174 u8 *meta = chip->oob_poi + BBM_SIZE; 175 u8 *meta = chip->oob_poi + BBM_SIZE;
175 u8 *ecc = chip->oob_poi + BBM_SIZE + METADATA_SIZE; 176 u8 *ecc = chip->oob_poi + BBM_SIZE + METADATA_SIZE;
176 const int ecc_size = chip->ecc.bytes; 177 const int ecc_size = chip->ecc.bytes;
@@ -183,7 +184,7 @@ static int check_erased_page(struct nand_chip *chip, u8 *buf)
183 meta, meta_len, 184 meta, meta_len,
184 chip->ecc.strength); 185 chip->ecc.strength);
185 if (res < 0) 186 if (res < 0)
186 chip->mtd.ecc_stats.failed++; 187 mtd->ecc_stats.failed++;
187 188
188 bitflips = max(res, bitflips); 189 bitflips = max(res, bitflips);
189 buf += pkt_size; 190 buf += pkt_size;
@@ -300,26 +301,30 @@ static int tango_write_page(struct mtd_info *mtd, struct nand_chip *chip,
300 301
301static void aux_read(struct nand_chip *chip, u8 **buf, int len, int *pos) 302static void aux_read(struct nand_chip *chip, u8 **buf, int len, int *pos)
302{ 303{
304 struct mtd_info *mtd = nand_to_mtd(chip);
305
303 *pos += len; 306 *pos += len;
304 307
305 if (!*buf) { 308 if (!*buf) {
306 /* skip over "len" bytes */ 309 /* skip over "len" bytes */
307 chip->cmdfunc(&chip->mtd, NAND_CMD_RNDOUT, *pos, -1); 310 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, *pos, -1);
308 } else { 311 } else {
309 tango_read_buf(&chip->mtd, *buf, len); 312 tango_read_buf(mtd, *buf, len);
310 *buf += len; 313 *buf += len;
311 } 314 }
312} 315}
313 316
314static void aux_write(struct nand_chip *chip, const u8 **buf, int len, int *pos) 317static void aux_write(struct nand_chip *chip, const u8 **buf, int len, int *pos)
315{ 318{
319 struct mtd_info *mtd = nand_to_mtd(chip);
320
316 *pos += len; 321 *pos += len;
317 322
318 if (!*buf) { 323 if (!*buf) {
319 /* skip over "len" bytes */ 324 /* skip over "len" bytes */
320 chip->cmdfunc(&chip->mtd, NAND_CMD_SEQIN, *pos, -1); 325 chip->cmdfunc(mtd, NAND_CMD_SEQIN, *pos, -1);
321 } else { 326 } else {
322 tango_write_buf(&chip->mtd, *buf, len); 327 tango_write_buf(mtd, *buf, len);
323 *buf += len; 328 *buf += len;
324 } 329 }
325} 330}
@@ -345,8 +350,9 @@ static void aux_write(struct nand_chip *chip, const u8 **buf, int len, int *pos)
345 */ 350 */
346static void raw_read(struct nand_chip *chip, u8 *buf, u8 *oob) 351static void raw_read(struct nand_chip *chip, u8 *buf, u8 *oob)
347{ 352{
353 struct mtd_info *mtd = nand_to_mtd(chip);
348 u8 *oob_orig = oob; 354 u8 *oob_orig = oob;
349 const int page_size = chip->mtd.writesize; 355 const int page_size = mtd->writesize;
350 const int ecc_size = chip->ecc.bytes; 356 const int ecc_size = chip->ecc.bytes;
351 const int pkt_size = chip->ecc.size; 357 const int pkt_size = chip->ecc.size;
352 int pos = 0; /* position within physical page */ 358 int pos = 0; /* position within physical page */
@@ -371,8 +377,9 @@ static void raw_read(struct nand_chip *chip, u8 *buf, u8 *oob)
371 377
372static void raw_write(struct nand_chip *chip, const u8 *buf, const u8 *oob) 378static void raw_write(struct nand_chip *chip, const u8 *buf, const u8 *oob)
373{ 379{
380 struct mtd_info *mtd = nand_to_mtd(chip);
374 const u8 *oob_orig = oob; 381 const u8 *oob_orig = oob;
375 const int page_size = chip->mtd.writesize; 382 const int page_size = mtd->writesize;
376 const int ecc_size = chip->ecc.bytes; 383 const int ecc_size = chip->ecc.bytes;
377 const int pkt_size = chip->ecc.size; 384 const int pkt_size = chip->ecc.size;
378 int pos = 0; /* position within physical page */ 385 int pos = 0; /* position within physical page */
@@ -522,7 +529,7 @@ static int chip_init(struct device *dev, struct device_node *np)
522 529
523 chip = &tchip->nand_chip; 530 chip = &tchip->nand_chip;
524 ecc = &chip->ecc; 531 ecc = &chip->ecc;
525 mtd = &chip->mtd; 532 mtd = nand_to_mtd(chip);
526 533
527 chip->read_byte = tango_read_byte; 534 chip->read_byte = tango_read_byte;
528 chip->write_buf = tango_write_buf; 535 chip->write_buf = tango_write_buf;
@@ -584,7 +591,7 @@ static int tango_nand_remove(struct platform_device *pdev)
584 591
585 for (cs = 0; cs < MAX_CS; ++cs) { 592 for (cs = 0; cs < MAX_CS; ++cs) {
586 if (nfc->chips[cs]) 593 if (nfc->chips[cs])
587 nand_release(&nfc->chips[cs]->nand_chip.mtd); 594 nand_release(nand_to_mtd(&nfc->chips[cs]->nand_chip));
588 } 595 }
589 596
590 return 0; 597 return 0;