jiez | 21 Jun 2012 16:47
Favicon

[5876] trunk/urjtag/src/flash/intel.c: send Read Array command after block erase command and program command for intel flash

Revision 5876 Author jiez Date 2012-06-21 10:47:27 -0400 (Thu, 21 Jun 2012)

Log Message

send Read Array command after block erase command and program command for intel flash This change is for flash chips like STMicroelectronics M58WR032KB.

Modified Paths

Diff

Modified: trunk/urjtag/src/flash/intel.c (5875 => 5876)

--- trunk/urjtag/src/flash/intel.c 2012-06-17 16:04:30 UTC (rev 5875) +++ trunk/urjtag/src/flash/intel.c 2012-06-21 14:47:27 UTC (rev 5876) <at> <at> -199,7 +199,7 <at> <at> } /* Read Array */ - URJ_BUS_WRITE (bus, cfi_array->address + (0 << o), 0x00FF00FF); + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); } static void <at> <at> -250,6 +250,8 <at> <at> while (!((sr = URJ_BUS_READ (bus, cfi_array->address) & 0xFE) & CFI_INTEL_SR_READY)); /* TODO: add timeout */ + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); + switch (sr & ~CFI_INTEL_SR_READY) { case 0: <at> <at> -341,6 +343,8 <at> <at> while (!((sr = URJ_BUS_READ (bus, cfi_array->address) & 0xFE) & CFI_INTEL_SR_READY)); /* TODO: add timeout */ + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); + if (sr != CFI_INTEL_SR_READY) { urj_error_set (URJ_ERROR_FLASH_PROGRAM, <at> <at> -401,6 +405,9 <at> <at> /* poll SR7 == 1 */ while (!((sr = URJ_BUS_READ (bus, cfi_array->address) & 0xFE) & CFI_INTEL_SR_READY)); /* TODO: add timeout */ + + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); + if (sr != CFI_INTEL_SR_READY) { urj_error_set (URJ_ERROR_FLASH_PROGRAM, <at> <at> -461,6 +468,8 <at> <at> while (((sr = URJ_BUS_READ (bus, cfi_array->address) & 0x00FE00FE) & ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)) != ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)); /* TODO: add timeout */ + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); + if (sr != ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)) { urj_error_set (URJ_ERROR_FLASH_ERASE, "sr = 0x%08lX", <at> <at> -525,6 +534,8 <at> <at> while (((sr = URJ_BUS_READ (bus, cfi_array->address) & 0x00FE00FE) & ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)) != ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)); /* TODO: add timeout */ + URJ_BUS_WRITE (bus, cfi_array->address, 0x00FF00FF); + if (sr != ((CFI_INTEL_SR_READY << 16) | CFI_INTEL_SR_READY)) { urj_error_set (URJ_ERROR_FLASH_PROGRAM, "sr = 0x%08lX",
<div>

<div>
Revision <a href="http://blackfin.uclinux.org/gf/project/toolchain/scmsvn/?action=browse&amp;path=/&amp;view=rev&amp;root=toolchain&amp;revision=5876">5876</a>
Author <a href="http://blackfin.uclinux.org/gf/user/jiez/">jiez</a>
Date 2012-06-21 10:47:27 -0400 (Thu, 21 Jun 2012)
<h3>Log Message</h3>
send Read Array command after block erase command and program command for intel flash

This change is for flash chips like STMicroelectronics M58WR032KB.

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkurjtagsrcflashintelc">trunk/urjtag/src/flash/intel.c</a></li>
</ul>
</div>
<div>
<h3>Diff</h3>
<a></a>
<div class="modfile">
<h4>Modified: trunk/urjtag/src/flash/intel.c (5875 =&gt; 5876)</h4>
<span>
<span class="info">--- trunk/urjtag/src/flash/intel.c	2012-06-17 16:04:30 UTC (rev 5875)
+++ trunk/urjtag/src/flash/intel.c	2012-06-21 14:47:27 UTC (rev 5876)
</span><span class="lines"> <at>  <at>  -199,7 +199,7  <at>  <at> 
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     /* Read Array */
</span>-    URJ_BUS_WRITE (bus, cfi_array-&gt;address + (0 &lt;&lt; o), 0x00FF00FF);
+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
<span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void
</span><span class="lines"> <at>  <at>  -250,6 +250,8  <at>  <at> 
</span><span class="cx"> 
</span><span class="cx">     while (!((sr = URJ_BUS_READ (bus, cfi_array-&gt;address) &amp; 0xFE) &amp; CFI_INTEL_SR_READY));     /* TODO: add timeout */
</span><span class="cx"> 
</span>+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
+
<span class="cx">     switch (sr &amp; ~CFI_INTEL_SR_READY)
</span><span class="cx">     {
</span><span class="cx">     case 0:
</span><span class="lines"> <at>  <at>  -341,6 +343,8  <at>  <at> 
</span><span class="cx"> 
</span><span class="cx">     while (!((sr = URJ_BUS_READ (bus, cfi_array-&gt;address) &amp; 0xFE) &amp; CFI_INTEL_SR_READY));     /* TODO: add timeout */
</span><span class="cx"> 
</span>+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
+
<span class="cx">     if (sr != CFI_INTEL_SR_READY)
</span><span class="cx">     {
</span><span class="cx">         urj_error_set (URJ_ERROR_FLASH_PROGRAM,
</span><span class="lines"> <at>  <at>  -401,6 +405,9  <at>  <at> 
</span><span class="cx"> 
</span><span class="cx">     /* poll SR7 == 1 */
</span><span class="cx">     while (!((sr = URJ_BUS_READ (bus, cfi_array-&gt;address) &amp; 0xFE) &amp; CFI_INTEL_SR_READY));     /* TODO: add timeout */
</span>+
+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
+
<span class="cx">     if (sr != CFI_INTEL_SR_READY)
</span><span class="cx">     {
</span><span class="cx">         urj_error_set (URJ_ERROR_FLASH_PROGRAM,
</span><span class="lines"> <at>  <at>  -461,6 +468,8  <at>  <at> 
</span><span class="cx"> 
</span><span class="cx">     while (((sr = URJ_BUS_READ (bus, cfi_array-&gt;address) &amp; 0x00FE00FE) &amp; ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY)) != ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY));    /* TODO: add timeout */
</span><span class="cx"> 
</span>+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
+
<span class="cx">     if (sr != ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY))
</span><span class="cx">     {
</span><span class="cx">         urj_error_set (URJ_ERROR_FLASH_ERASE, "sr = 0x%08lX",
</span><span class="lines"> <at>  <at>  -525,6 +534,8  <at>  <at> 
</span><span class="cx"> 
</span><span class="cx">     while (((sr = URJ_BUS_READ (bus, cfi_array-&gt;address) &amp; 0x00FE00FE) &amp; ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY)) != ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY));    /* TODO: add timeout */
</span><span class="cx"> 
</span>+    URJ_BUS_WRITE (bus, cfi_array-&gt;address, 0x00FF00FF);
+
<span class="cx">     if (sr != ((CFI_INTEL_SR_READY &lt;&lt; 16) | CFI_INTEL_SR_READY))
</span><span class="cx">     {
</span><span class="cx">         urj_error_set (URJ_ERROR_FLASH_PROGRAM, "sr = 0x%08lX",
</span></span>
</div>
</div>

</div>

Gmane