Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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 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)
{
	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);
	else
		denali->max_banks = 1 << (features & FEATURES__N_BANKS);
}

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

#define REVISION				0x370
#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__VALUE			0x003f