FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/bsp/flashchipinit.S @ 923:10b4bed10192
gsm-fw/L1: fix for the DSP patch corruption bug
The L1 code we got from the LoCosto fw contains a feature for DSP CPU load
measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier
DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the
code dealing with that feature is conditionalized as #if (DSP >= 38),
but one spot was missed, and the MCU code was writing into an API word
dealing with this feature. In TCS211 this DSP API word happens to be
used by the DSP code patch, hence that write was corrupting the patched
DSP code.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 19 Oct 2015 17:13:56 +0000 |
parents | 2768b4339275 |
children |
rev | line source |
---|---|
857
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * TI's TCS211 firmware is designed to autodetect the flash chip type for |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 * its FFS, selecting different FFS configurations depending on what flash |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 * chip is found. In our FreeCalypso fw we fix our FFS configuration at |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 * compile time instead (for us it's more a matter of either mimicking or |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 * working around what the previous firmwares on our target devices do), |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 * so we have no "proper" place for flash chip type autodetection logic in |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 * our fw architecture. |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 * |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 * However, the following function (to be executed out of IRAM) mimics the |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 * sequence of flash chip accesses performed by TCS211's flash chip type |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 * autodetection function. It was added in a stray hope that it might fix |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 * the perplexing crash behavior we see when booting on a GTA02 modem that |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 * is "hot", i.e., powered off and then back on without giving it a long |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 * time to "cool". |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 */ |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 .code 32 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 .text |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 .globl flash_chip_init |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 flash_chip_init: |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 ldr r1, =0x0300AAAA |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 ldr r2, =0x03005555 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 ldr r3, =0x03000000 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 /* read ID mode sequence */ |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 mov r0, #0xAA |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 strh r0, [r1] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 mov r0, #0x55 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 strh r0, [r2] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 mov r0, #0x90 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 strh r0, [r1] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 /* dummy reads */ |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 ldrh r0, [r3, #0] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 ldrh r0, [r3, #2] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 /* Intel reset command */ |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 mov r0, #0xFF |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 strh r0, [r3] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 /* AMD reset sequence */ |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 mov r0, #0xAA |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 strh r0, [r1] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 mov r0, #0x55 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 strh r0, [r2] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 mov r0, #0xF0 |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 strh r0, [r1] |
2768b4339275
a flash chip init/reset function added to Application_Initialize(),
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 bx lr |