Commit 271707b1 authored by Graham Moore's avatar Graham Moore Committed by Brian Norris
Browse files

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: default avatarGraham Moore <grmoore@opensource.altera.com>
[Brian: parentheses around macro arg]
Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
parent 9c07d094
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -458,8 +458,17 @@ static void find_valid_banks(struct denali_nand_info *denali)
static void detect_max_banks(struct denali_nand_info *denali)
static void detect_max_banks(struct denali_nand_info *denali)
{
{
	uint32_t features = ioread32(denali->flash_reg + FEATURES);
	uint32_t features = ioread32(denali->flash_reg + FEATURES);
	/*
	 * Read the revision register, so we can calculate the max_banks
	 * properly: the encoding changed from rev 5.0 to 5.1
	 */
	u32 revision = MAKE_COMPARABLE_REVISION(
				ioread32(denali->flash_reg + REVISION));


	if (revision < REVISION_5_1)
		denali->max_banks = 2 << (features & FEATURES__N_BANKS);
		denali->max_banks = 2 << (features & FEATURES__N_BANKS);
	else
		denali->max_banks = 1 << (features & FEATURES__N_BANKS);
}
}


static void detect_partition_feature(struct denali_nand_info *denali)
static void detect_partition_feature(struct denali_nand_info *denali)
+2 −0
Original line number Original line Diff line number Diff line
@@ -178,6 +178,8 @@


#define REVISION				0x370
#define REVISION				0x370
#define     REVISION__VALUE				0xffff
#define     REVISION__VALUE				0xffff
#define MAKE_COMPARABLE_REVISION(x)		swab16((x) & REVISION__VALUE)
#define REVISION_5_1				0x00000501


#define ONFI_DEVICE_FEATURES			0x380
#define ONFI_DEVICE_FEATURES			0x380
#define     ONFI_DEVICE_FEATURES__VALUE			0x003f
#define     ONFI_DEVICE_FEATURES__VALUE			0x003f