summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flash.h2
-rw-r--r--flashrom.c6
-rw-r--r--ichspi.c9
-rw-r--r--print.c12
-rw-r--r--spi25.c20
5 files changed, 31 insertions, 18 deletions
diff --git a/flash.h b/flash.h
index 7086e01..5ce7e87 100644
--- a/flash.h
+++ b/flash.h
@@ -136,6 +136,8 @@ struct flashchip {
unsigned int size; /* Eraseblock size */
unsigned int count; /* Number of contiguous blocks with that size */
} eraseblocks[NUM_ERASEREGIONS];
+ /* a block_erase function should try to erase one block of size
+ * 'blocklen' at address 'blockaddr' and return 0 on success. */
int (*block_erase) (struct flashchip *flash, unsigned int blockaddr, unsigned int blocklen);
} block_erasers[NUM_ERASEFUNCTIONS];
diff --git a/flashrom.c b/flashrom.c
index 14d5263..e9e6a77 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1312,7 +1312,7 @@ int read_flash_to_file(struct flashchip *flash, char *filename)
goto out_free;
}
- ret = write_buf_to_file(buf, flash->total_size * 1024, filename);
+ ret = write_buf_to_file(buf, size, filename);
out_free:
free(buf);
msg_cinfo("%s.\n", ret ? "FAILED" : "done");
@@ -1489,13 +1489,13 @@ static int check_block_eraser(struct flashchip *flash, int k, int log)
if (!eraser.block_erase && eraser.eraseblocks[0].count) {
if (log)
msg_cdbg("eraseblock layout is known, but matching "
- "block erase function is not implemented. ");
+ "block erase function is not implemented. ");
return 1;
}
if (eraser.block_erase && !eraser.eraseblocks[0].count) {
if (log)
msg_cdbg("block erase function found, but "
- "eraseblock layout is not defined. ");
+ "eraseblock layout is not defined. ");
return 1;
}
return 0;
diff --git a/ichspi.c b/ichspi.c
index 31945de..299cbf3 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -159,9 +159,9 @@ static uint16_t REGREAD8(int X)
return mmio_readb(ich_spibar + X);
}
-#define REGWRITE32(X,Y) mmio_writel(Y, ich_spibar+X)
-#define REGWRITE16(X,Y) mmio_writew(Y, ich_spibar+X)
-#define REGWRITE8(X,Y) mmio_writeb(Y, ich_spibar+X)
+#define REGWRITE32(off,val) mmio_writel(val, ich_spibar+off)
+#define REGWRITE16(off,val) mmio_writew(val, ich_spibar+off)
+#define REGWRITE8(off,val) mmio_writeb(val, ich_spibar+off)
/* Common SPI functions */
static int find_opcode(OPCODES *op, uint8_t opcode);
@@ -856,7 +856,8 @@ static int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt,
if (!ichspi_lock)
opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt);
if (opcode_index == -1) {
- msg_pdbg("Invalid OPCODE 0x%02x\n", cmd);
+ msg_pdbg("Invalid OPCODE 0x%02x, will not execute.\n",
+ cmd);
return SPI_INVALID_OPCODE;
}
}
diff --git a/print.c b/print.c
index c13272a..ac49e03 100644
--- a/print.c
+++ b/print.c
@@ -43,18 +43,18 @@ char *flashbuses_to_text(enum chipbustype bustype)
ret = strcat_realloc(ret, "Non-SPI,");
} else {
if (bustype & CHIP_BUSTYPE_PARALLEL)
- ret = strcat_realloc(ret, "Parallel,");
+ ret = strcat_realloc(ret, "Parallel, ");
if (bustype & CHIP_BUSTYPE_LPC)
- ret = strcat_realloc(ret, "LPC,");
+ ret = strcat_realloc(ret, "LPC, ");
if (bustype & CHIP_BUSTYPE_FWH)
- ret = strcat_realloc(ret, "FWH,");
+ ret = strcat_realloc(ret, "FWH, ");
if (bustype & CHIP_BUSTYPE_SPI)
- ret = strcat_realloc(ret, "SPI,");
+ ret = strcat_realloc(ret, "SPI, ");
if (bustype == CHIP_BUSTYPE_NONE)
- ret = strcat_realloc(ret, "None,");
+ ret = strcat_realloc(ret, "None, ");
}
/* Kill last comma. */
- ret[strlen(ret) - 1] = '\0';
+ ret[strlen(ret) - 2] = '\0';
ret = realloc(ret, strlen(ret) + 1);
return ret;
}
diff --git a/spi25.c b/spi25.c
index ab272c9..0ba1994 100644
--- a/spi25.c
+++ b/spi25.c
@@ -119,8 +119,10 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes)
uint32_t id1;
uint32_t id2;
- if (spi_rdid(readarr, bytes))
+ if (spi_rdid(readarr, bytes)) {
+ msg_cdbg("\n");
return 0;
+ }
if (!oddparity(readarr[0]))
msg_cdbg("RDID byte 0 parity violation. ");
@@ -198,8 +200,10 @@ int probe_spi_rems(struct flashchip *flash)
unsigned char readarr[JEDEC_REMS_INSIZE];
uint32_t id1, id2;
- if (spi_rems(readarr))
+ if (spi_rems(readarr)) {
+ msg_cdbg("\n");
return 0;
+ }
id1 = readarr[0];
id2 = readarr[1];
@@ -254,15 +258,19 @@ int probe_spi_res1(struct flashchip *flash)
return 0;
}
- if (spi_res(readarr, 1))
+ if (spi_res(readarr, 1)) {
+ msg_cdbg("\n");
return 0;
+ }
id2 = readarr[0];
msg_cdbg("%s: id 0x%x\n", __func__, id2);
- if (id2 != flash->model_id)
+ if (id2 != flash->model_id) {
+ msg_cdbg("\n");
return 0;
+ }
/* Print the status register to tell the
* user about possible write protection.
@@ -276,8 +284,10 @@ int probe_spi_res2(struct flashchip *flash)
unsigned char readarr[2];
uint32_t id1, id2;
- if (spi_res(readarr, 2))
+ if (spi_res(readarr, 2)) {
+ msg_cdbg("\n");
return 0;
+ }
id1 = readarr[0];
id2 = readarr[1];
OpenPOWER on IntegriCloud