aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGraham Moore <grmoore@opensource.altera.com>2015-07-21 10:39:31 -0400
committerBrian Norris <computersforpeace@gmail.com>2015-09-29 14:44:59 -0400
commit271707b1d817f5104e02b2bd1bab43f0c8759418 (patch)
tree39cee6aba8d527a6ad9ff3751acaa729a855bcdd
parent9c07d094bbfe3d09e4c3e01a81cd1399bd23b268 (diff)
mtd: nand: denali: max_banks calculation changed in revision 5.1
Read Denali hardware revision number and use it to calculate max_banks, The encoding of max_banks changed in Denali revision 5.1. Signed-off-by: Graham Moore <grmoore@opensource.altera.com> [Brian: parentheses around macro arg] Signed-off-by: Brian Norris <computersforpeace@gmail.com>
-rw-r--r--drivers/mtd/nand/denali.c11
-rw-r--r--drivers/mtd/nand/denali.h2
2 files changed, 12 insertions, 1 deletions
diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
index 7b6186ffe3ac..43c0771c587c 100644
--- a/drivers/mtd/nand/denali.c
+++ b/drivers/mtd/nand/denali.c
@@ -458,8 +458,17 @@ static void find_valid_banks(struct denali_nand_info *denali)
458static void detect_max_banks(struct denali_nand_info *denali) 458static void detect_max_banks(struct denali_nand_info *denali)
459{ 459{
460 uint32_t features = ioread32(denali->flash_reg + FEATURES); 460 uint32_t features = ioread32(denali->flash_reg + FEATURES);
461 /*
462 * Read the revision register, so we can calculate the max_banks
463 * properly: the encoding changed from rev 5.0 to 5.1
464 */
465 u32 revision = MAKE_COMPARABLE_REVISION(
466 ioread32(denali->flash_reg + REVISION));
461 467
462 denali->max_banks = 2 << (features & FEATURES__N_BANKS); 468 if (revision < REVISION_5_1)
469 denali->max_banks = 2 << (features & FEATURES__N_BANKS);
470 else
471 denali->max_banks = 1 << (features & FEATURES__N_BANKS);
463} 472}
464 473
465static void detect_partition_feature(struct denali_nand_info *denali) 474static void detect_partition_feature(struct denali_nand_info *denali)
diff --git a/drivers/mtd/nand/denali.h b/drivers/mtd/nand/denali.h
index 145bf88930e8..4b12cd302819 100644
--- a/drivers/mtd/nand/denali.h
+++ b/drivers/mtd/nand/denali.h
@@ -178,6 +178,8 @@
178 178
179#define REVISION 0x370 179#define REVISION 0x370
180#define REVISION__VALUE 0xffff 180#define REVISION__VALUE 0xffff
181#define MAKE_COMPARABLE_REVISION(x) swab16((x) & REVISION__VALUE)
182#define REVISION_5_1 0x00000501
181 183
182#define ONFI_DEVICE_FEATURES 0x380 184#define ONFI_DEVICE_FEATURES 0x380
183#define ONFI_DEVICE_FEATURES__VALUE 0x003f 185#define ONFI_DEVICE_FEATURES__VALUE 0x003f