All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/7] mtd: cfi_probe: enter Auto Select Mode after filling cfi->cfiq members
@ 2010-03-30 13:34 Guillaume LECERF
  2010-03-30 13:34 ` [PATCH v2 2/7] mtd: cfi_probe: make the addresses used to enter Auto Select Mode variable Guillaume LECERF
                   ` (7 more replies)
  0 siblings, 8 replies; 24+ messages in thread
From: Guillaume LECERF @ 2010-03-30 13:34 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, Artem Bityutskiy

Move the code to enter Auto Select Mode down to be able to use cfi->cfiq
members to add support for chips using alternative sequence / unlock
addresses.

Signed-off-by: Guillaume LECERF <glecerf@gmail.com>
---
 drivers/mtd/chips/cfi_probe.c |   46 +++++++++++++++++++++--------------------
 1 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/drivers/mtd/chips/cfi_probe.c b/drivers/mtd/chips/cfi_probe.c
index e63e674..9b511ef 100644
--- a/drivers/mtd/chips/cfi_probe.c
+++ b/drivers/mtd/chips/cfi_probe.c
@@ -181,29 +181,6 @@ static int __xipram cfi_chip_setup(struct map_info *map,
 	for (i=0; i<(sizeof(struct cfi_ident) + num_erase_regions * 4); i++)
 		((unsigned char *)cfi->cfiq)[i] = cfi_read_query(map,base + (0x10 + i)*ofs_factor);
 
-	/* Note we put the device back into Read Mode BEFORE going into Auto
-	 * Select Mode, as some devices support nesting of modes, others
-	 * don't. This way should always work.
-	 * On cmdset 0001 the writes of 0xaa and 0x55 are not needed, and
-	 * so should be treated as nops or illegal (and so put the device
-	 * back into Read Mode, which is a nop in this case).
-	 */
-	cfi_send_gen_cmd(0xf0,     0, base, map, cfi, cfi->device_type, NULL);
-	cfi_send_gen_cmd(0xaa, 0x555, base, map, cfi, cfi->device_type, NULL);
-	cfi_send_gen_cmd(0x55, 0x2aa, base, map, cfi, cfi->device_type, NULL);
-	cfi_send_gen_cmd(0x90, 0x555, base, map, cfi, cfi->device_type, NULL);
-	cfi->mfr = cfi_read_query16(map, base);
-	cfi->id = cfi_read_query16(map, base + ofs_factor);
-
-	/* Get AMD/Spansion extended JEDEC ID */
-	if (cfi->mfr == CFI_MFR_AMD && (cfi->id & 0xff) == 0x7e)
-		cfi->id = cfi_read_query(map, base + 0xe * ofs_factor) << 8 |
-			  cfi_read_query(map, base + 0xf * ofs_factor);
-
-	/* Put it back into Read Mode */
-	cfi_qry_mode_off(base, map, cfi);
-	xip_allowed(base, map);
-
 	/* Do any necessary byteswapping */
 	cfi->cfiq->P_ID = le16_to_cpu(cfi->cfiq->P_ID);
 
@@ -228,6 +205,29 @@ static int __xipram cfi_chip_setup(struct map_info *map,
 #endif
 	}
 
+	/* Note we put the device back into Read Mode BEFORE going into Auto
+	 * Select Mode, as some devices support nesting of modes, others
+	 * don't. This way should always work.
+	 * On cmdset 0001 the writes of 0xaa and 0x55 are not needed, and
+	 * so should be treated as nops or illegal (and so put the device
+	 * back into Read Mode, which is a nop in this case).
+	 */
+	cfi_send_gen_cmd(0xf0,     0, base, map, cfi, cfi->device_type, NULL);
+	cfi_send_gen_cmd(0xaa, 0x555, base, map, cfi, cfi->device_type, NULL);
+	cfi_send_gen_cmd(0x55, 0x2aa, base, map, cfi, cfi->device_type, NULL);
+	cfi_send_gen_cmd(0x90, 0x555, base, map, cfi, cfi->device_type, NULL);
+	cfi->mfr = cfi_read_query16(map, base);
+	cfi->id = cfi_read_query16(map, base + ofs_factor);
+
+	/* Get AMD/Spansion extended JEDEC ID */
+	if (cfi->mfr == CFI_MFR_AMD && (cfi->id & 0xff) == 0x7e)
+		cfi->id = cfi_read_query(map, base + 0xe * ofs_factor) << 8 |
+			  cfi_read_query(map, base + 0xf * ofs_factor);
+
+	/* Put it back into Read Mode */
+	cfi_qry_mode_off(base, map, cfi);
+	xip_allowed(base, map);
+
 	printk(KERN_INFO "%s: Found %d x%d devices at 0x%x in %d-bit bank\n",
 	       map->name, cfi->interleave, cfi->device_type*8, base,
 	       map->bankwidth*8);

^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2010-04-22  6:13 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-30 13:34 [PATCH v2 1/7] mtd: cfi_probe: enter Auto Select Mode after filling cfi->cfiq members Guillaume LECERF
2010-03-30 13:34 ` [PATCH v2 2/7] mtd: cfi_probe: make the addresses used to enter Auto Select Mode variable Guillaume LECERF
2010-03-30 13:34 ` [PATCH v2 3/7] mtd: cfi_probe: add support for SST 0x0701 vendorname Guillaume LECERF
2010-04-08  9:05   ` Wolfram Sang
2010-04-12  3:36     ` Wolfram Sang
2010-03-30 13:35 ` [PATCH v2 4/7] mtd: cfi_probe: use P_ID_* definitions instead of hardcoded values Guillaume LECERF
2010-03-30 13:35 ` [PATCH v2 5/7] mtd: cfi_cmdset_0002: do not fail on no extended query table as they are both optional Guillaume LECERF
2010-03-30 13:35 ` [PATCH v2 6/7] mtd: cfi_cmdset_0002: add CFI detection for SST 39VF{16, 32}xx chips Guillaume LECERF
2010-04-08  9:12   ` Wolfram Sang
2010-04-12  2:24     ` Wolfram Sang
2010-04-12 16:28       ` Fabio Giovagnini
2010-04-13  0:27         ` Wolfram Sang
2010-04-16 10:17       ` Guillaume LECERF
2010-04-18 23:29         ` Wolfram Sang
2010-04-20  9:44           ` Guillaume LECERF
2010-04-22  6:13             ` Wolfram Sang
2010-04-08 15:21   ` Wolfram Sang
2010-04-08 15:32     ` Guillaume LECERF
2010-04-09  8:55       ` Wolfram Sang
2010-03-30 13:35 ` [PATCH v2 7/7] mtd: cfi_cmdset_0002: add CFI detection for SST 39VF{32, 64}xxB chips Guillaume LECERF
2010-03-31 13:28 ` [PATCH v2 1/7] mtd: cfi_probe: enter Auto Select Mode after filling cfi->cfiq members Artem Bityutskiy
2010-04-02 11:46   ` Guillaume LECERF
2010-04-02 12:11     ` Artem Bityutskiy
2010-04-08  8:59 ` Wolfram Sang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.