All pastes #1021264 Raw Edit

Unnamed

public text v1 · immutable
#1021264 ·published 2008-05-17 20:10 UTC
rendered paste body
Index: 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},