rendered paste bodyIndex: flashrom-ich5-sst49lf004a/jedec.c
===================================================================
--- flashrom-ich5-sst49lf004a/jedec.c (revision 3332)
+++ flashrom-ich5-sst49lf004a/jedec.c (working copy)
@@ -42,7 +42,8 @@
tmp1 = *dst & 0x40;
- while (i++ < 0xFFFFFFF) {
+ //while (i++ < 0xFFFFFFF) {
+ while (i++ < 0x07ffffff) {
tmp2 = *dst & 0x40;
if (tmp1 == tmp2) {
break;
@@ -58,7 +59,8 @@
data &= 0x80;
- while (i++ < 0xFFFFFFF) {
+ //while (i++ < 0xFFFFFFF) {
+ while (i++ < 0x07ffffff) {
tmp = *dst & 0x80;
if (tmp == data) {
break;
@@ -95,15 +97,16 @@
/* Issue JEDEC Product ID Entry command */
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0x90;
/* Older chips may need up to 100 us to respond. The ATMEL 29C020
* needs 10 ms according to the data sheet, but it has been tested
* to work reliably with 20 us. Allow a factor of 2 safety margin.
*/
- myusec_delay(40);
+ //myusec_delay(40);
+ myusec_delay(150); /* 150 nanoseconds delay */
/* Read product ID */
id1 = *(volatile uint8_t *)bios;
@@ -125,11 +128,12 @@
/* Issue JEDEC Product ID Exit command */
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0xF0;
- myusec_delay(40);
+ //myusec_delay(40);
+ myusec_delay(150); /* 150 nanoseconds delay */
printf_debug("%s: id1 0x%x, id2 0x%x", __FUNCTION__, largeid1, largeid2);
if (!oddparity(id1))
@@ -145,18 +149,18 @@
{
/* Issue the Sector Erase command */
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0x80;
- myusec_delay(10);
-
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + page) = 0x30;
- myusec_delay(10);
+ //myusec_delay(10);
+ usleep(25); /* 25 milliseconds delay */
/* wait for Toggle bit ready */
toggle_ready_jedec(bios);
@@ -168,18 +172,19 @@
{
/* Issue the Sector Erase command */
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0x80;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + block) = 0x50;
- myusec_delay(10);
+ //myusec_delay(10);
+ usleep(25); /* 25 milliseconds delay */
/* wait for Toggle bit ready */
toggle_ready_jedec(bios);
@@ -193,18 +198,19 @@
/* Issue the JEDEC Chip Erase command */
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0x80;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
- myusec_delay(10);
+ //myusec_delay(10);
*(volatile uint8_t *)(bios + 0x5555) = 0x10;
- myusec_delay(10);
+ //myusec_delay(10);
+ usleep(100); /* 100 milliseconds delay */
toggle_ready_jedec(bios);
Index: flashrom-ich5-sst49lf004a/flashchips.c
===================================================================
--- flashrom-ich5-sst49lf004a/flashchips.c (revision 3332)
+++ flashrom-ich5-sst49lf004a/flashchips.c (working copy)
@@ -85,7 +85,7 @@
// assume similar to 004B, ignoring data sheet
{"SST", "SST49LF002A/B", SST_ID, SST_49LF002A, 256, 16 * 1024, TEST_UNTESTED, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
{"SST", "SST49LF003A/B", SST_ID, SST_49LF003A, 384, 64 * 1024, TEST_UNTESTED, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
- {"SST", "SST49LF004A/B", SST_ID, SST_49LF004A, 512, 64 * 1024, TEST_UNTESTED, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
+ {"SST", "SST49LF004A/B", SST_ID, SST_49LF004A, 512, 4096, TEST_UNTESTED, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
{"SST", "SST49LF004C", SST_ID, SST_49LF004C, 512, 4 * 1024, TEST_UNTESTED, probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
{"SST", "SST49LF008A", SST_ID, SST_49LF008A, 1024, 64 * 1024, TEST_UNTESTED, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
{"SST", "SST49LF008C", SST_ID, SST_49LF008C, 1024, 4 * 1024, TEST_UNTESTED, probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},