diff gsm-fw/bsp/flashchipinit.S @ 857:2768b4339275

a flash chip init/reset function added to Application_Initialize(), see the comments in gsm-fw/bsp/flashchipinit.S
author Space Falcon <falcon@ivan.Harhan.ORG>
date Fri, 01 May 2015 16:27:59 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/bsp/flashchipinit.S	Fri May 01 16:27:59 2015 +0000
@@ -0,0 +1,46 @@
+/*
+ * TI's TCS211 firmware is designed to autodetect the flash chip type for
+ * its FFS, selecting different FFS configurations depending on what flash
+ * chip is found.  In our FreeCalypso fw we fix our FFS configuration at
+ * compile time instead (for us it's more a matter of either mimicking or
+ * working around what the previous firmwares on our target devices do),
+ * so we have no "proper" place for flash chip type autodetection logic in
+ * our fw architecture.
+ *
+ * However, the following function (to be executed out of IRAM) mimics the
+ * sequence of flash chip accesses performed by TCS211's flash chip type
+ * autodetection function.  It was added in a stray hope that it might fix
+ * the perplexing crash behavior we see when booting on a GTA02 modem that
+ * is "hot", i.e., powered off and then back on without giving it a long
+ * time to "cool".
+ */
+
+	.code 32
+	.text
+
+	.globl	flash_chip_init
+flash_chip_init:
+	ldr	r1, =0x0300AAAA
+	ldr	r2, =0x03005555
+	ldr	r3, =0x03000000
+/* read ID mode sequence */
+	mov	r0, #0xAA
+	strh	r0, [r1]
+	mov	r0, #0x55
+	strh	r0, [r2]
+	mov	r0, #0x90
+	strh	r0, [r1]
+/* dummy reads */
+	ldrh	r0, [r3, #0]
+	ldrh	r0, [r3, #2]
+/* Intel reset command */
+	mov	r0, #0xFF
+	strh	r0, [r3]
+/* AMD reset sequence */
+	mov	r0, #0xAA
+	strh	r0, [r1]
+	mov	r0, #0x55
+	strh	r0, [r2]
+	mov	r0, #0xF0
+	strh	r0, [r1]
+	bx	lr