- rename serprog_delay parameter to usecs
- fix code style, (output) formatting issues and comments
- sp_docommand: remove unnecessary malloc+memcpy and fix formatting

Signed-off-by: Stefan Tauner <[email protected]>
---
 programmer.h         |    5 ++-
 serprog-protocol.txt |    2 +-
 serprog.c            |   72 +++++++++++++++++++++++++------------------------
 3 files changed, 41 insertions(+), 38 deletions(-)

diff --git a/programmer.h b/programmer.h
index 1b7f591..6e78738 100644
--- a/programmer.h
+++ b/programmer.h
@@ -609,9 +609,10 @@ int serprog_init(void);
 void serprog_chip_writeb(uint8_t val, chipaddr addr);
 uint8_t serprog_chip_readb(const chipaddr addr);
 void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len);
-void serprog_delay(int delay);
+void serprog_delay(int usecs);
 int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt,
-                       const unsigned char *writearr, unsigned char *readarr);
+                            const unsigned char *writearr,
+                            unsigned char *readarr);
 int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int 
len);
 #endif
 
diff --git a/serprog-protocol.txt b/serprog-protocol.txt
index 06e3bac..b22d1b2 100644
--- a/serprog-protocol.txt
+++ b/serprog-protocol.txt
@@ -19,7 +19,7 @@ COMMAND       Description                     Parameters      
                Return Value
 0x05   Query supported bustypes        none                            ACK + 
8-bit flags (as per flashrom) / NAK
 0x06   Query connected address lines   none                            ACK + 
8bit line count / NAK
 0x07   Query operation buffer size     none                            ACK + 
16bit size / NAK
-0x08   Query write-n maximum data len  none                            ACK + 
24bit maximum length / NAK
+0x08   Query maximum write-n length    none                            ACK + 
24bit length (0==2^24) / NAK
 0x09   Read byte                       24-bit addr                     ACK + 
BYTE / NAK
 0x0A   Read n bytes                    24-bit addr + 24-bit length     ACK + 
length bytes / NAK
 0x0B   Initialize operation buffer     none                            ACK / 
NAK
diff --git a/serprog.c b/serprog.c
index 915eb5b..182edd1 100644
--- a/serprog.c
+++ b/serprog.c
@@ -38,7 +38,7 @@
 #include "programmer.h"
 #include "chipdrivers.h"
 
-#define MSGHEADER "serprog:"
+#define MSGHEADER "serprog: "
 
 /*
  * FIXME: This prototype was added to help reduce diffs for the shutdown
@@ -204,7 +204,7 @@ static void sp_synchronize(void)
                        return;
                }
        }
-       msg_perr("Error: cannot synchronize protocol\n"
+       msg_perr("Error: cannot synchronize protocol "
                "- check communications and reset device?\n");
        exit(1);
 }
@@ -220,32 +220,27 @@ static int sp_check_commandavail(uint8_t command)
 static int sp_automatic_cmdcheck(uint8_t cmd)
 {
        if ((sp_check_avail_automatic) && (sp_check_commandavail(cmd) == 0)) {
-               msg_pdbg("Warning: Automatic command availability check"
-                               " failed for cmd %d - wont execute cmd\n",cmd);
+               msg_pdbg("Warning: Automatic command availability check failed "
+                        "for cmd 0x%x - wont execute cmd\n", cmd);
                return 1;
                }
        return 0;
 }
 
 static int sp_docommand(uint8_t command, uint32_t parmlen,
-                            uint8_t * params, uint32_t retlen, void *retparms)
+                       uint8_t *params, uint32_t retlen, void *retparms)
 {
-       unsigned char *sendpacket;
        unsigned char c;
        if (sp_automatic_cmdcheck(command))
                return 1;
-       sendpacket = malloc(1 + parmlen);
-       if (!sendpacket)
-               sp_die("Error: cannot malloc command buffer");
-       sendpacket[0] = command;
-       memcpy(&(sendpacket[1]), params, parmlen);
-       if (write(sp_fd, sendpacket, 1 + parmlen) != (1 + parmlen)) {
-               sp_die("Error: cannot write command");
-       }
-       free(sendpacket);
+       if (write(sp_fd, &command, 1) != 1)
+               sp_die("Error: cannot write op code");
+       if (write(sp_fd, params, parmlen) != (parmlen))
+               sp_die("Error: cannot write parameters");
        if (read(sp_fd, &c, 1) != 1)
                sp_die("Error: cannot read from device");
-       if (c == S_NAK) return 1;
+       if (c == S_NAK)
+               return 1;
        if (c != S_ACK) {
                msg_perr("Error: invalid response 0x%02X from device\n",c);
                exit(1);
@@ -256,8 +251,8 @@ static int sp_docommand(uint8_t command, uint32_t parmlen,
                        int r;
                        r = read(sp_fd, retparms + rd_bytes,
                                 retlen - rd_bytes);
-                       if (r <= 0) sp_die
-                                   ("Error: cannot read return parameters");
+                       if (r <= 0)
+                               sp_die("Error: cannot read return parameters");
                        rd_bytes += r;
                } while (rd_bytes != retlen);
        }
@@ -404,12 +399,12 @@ int serprog_init(void)
        msg_pdbg(MSGHEADER "Synchronized\n");
 
        if (sp_docommand(S_CMD_Q_IFACE, 0, NULL, 2, &iface)) {
-               msg_perr("Error: NAK to Query Interface version\n");
+               msg_perr("Error: NAK to query interface version\n");
                exit(1);
        }
 
        if (iface != 1) {
-               msg_perr("Error: Unknown interface version %d\n", iface);
+               msg_perr("Error: Unknown interface version: %d\n", iface);
                exit(1);
        }
 
@@ -428,6 +423,11 @@ int serprog_init(void)
                c = BUS_NONSPI; /* A reasonable default for now. */
        }
        buses_supported = c;
+       msg_pdbg(MSGHEADER "Bus support: parallel=%s, LPC=%s, FWH=%s, SPI=%s\n",
+                (c & CHIP_BUSTYPE_PARALLEL) ? "on" : "off",
+                (c & CHIP_BUSTYPE_LPC) ? "on" : "off",
+                (c & CHIP_BUSTYPE_FWH) ? "on" : "off",
+                (c & CHIP_BUSTYPE_SPI) ? "on" : "off");
        /* Check for the minimum operational set of commands. */
        if (buses_supported & BUS_SPI) {
                uint8_t bt = BUS_SPI;
@@ -538,12 +538,12 @@ int serprog_init(void)
                strcpy((char *)pgmname, "(unknown)");
        }
        pgmname[16] = 0;
-       msg_pinfo(MSGHEADER "Programmer name \"%s\"\n", pgmname);
+       msg_pinfo(MSGHEADER "Programmer name is \"%s\"\n", pgmname);
 
        if (sp_docommand(S_CMD_Q_SERBUF, 0, NULL, 2, &sp_device_serbuf_size)) {
                msg_perr("Warning: NAK to query serial buffer size\n");
        }
-       msg_pdbg(MSGHEADER "serial buffer size %d\n",
+       msg_pdbg(MSGHEADER "Serial buffer size is %d\n",
                     sp_device_serbuf_size);
 
        if (sp_check_commandavail(S_CMD_O_INIT)) {
@@ -564,7 +564,7 @@ int serprog_init(void)
                        msg_perr("Warning: NAK to query operation buffer "
                                 "size\n");
                }
-               msg_pdbg(MSGHEADER "operation buffer size %d\n",
+               msg_pdbg(MSGHEADER "operation buffer size is %d\n",
                         sp_device_opbuf_size);
        }
 
@@ -581,7 +581,7 @@ static void sp_pass_writen(void)
 {
        unsigned char header[7];
        msg_pspew(MSGHEADER "Passing write-n bytes=%d addr=0x%x\n",
-                    sp_write_n_bytes, sp_write_n_addr);
+                 sp_write_n_bytes, sp_write_n_addr);
        if (sp_streamed_transmit_bytes >=
            (7 + sp_write_n_bytes + sp_device_serbuf_size))
                sp_flush_stream();
@@ -735,30 +735,32 @@ void serprog_chip_readn(uint8_t * buf, const chipaddr 
addr, size_t len)
 {
        size_t lenm = len;
        chipaddr addrm = addr;
-       while ((sp_max_read_n)&&(lenm > sp_max_read_n)) {
-               sp_do_read_n(&(buf[addrm-addr]),addrm,sp_max_read_n);
+       while ((sp_max_read_n != 0) && (lenm > sp_max_read_n)) {
+               sp_do_read_n(&(buf[addrm-addr]), addrm, sp_max_read_n);
                addrm += sp_max_read_n;
                lenm -= sp_max_read_n;
        }
-       if (lenm) sp_do_read_n(&(buf[addrm-addr]),addrm,lenm);
+       if (lenm)
+               sp_do_read_n(&(buf[addrm-addr]), addrm, lenm);
 }
 
-void serprog_delay(int delay)
+void serprog_delay(int usecs)
 {
        unsigned char buf[4];
-       msg_pspew("%s\n", __func__);
+       msg_pspew("%s usecs=%d\n", __func__, usecs);
        if (!sp_check_commandavail(S_CMD_O_DELAY)) {
-               internal_delay(delay);
-               msg_pdbg("Note: serprog_delay used, but the programmer doesnt 
support delay\n");
+               msg_pdbg("Note: using internal_delay, because the attached "
+                        "programmer does not support the delay opcode.\n");
+               internal_delay(usecs);
                return;
        }
        if ((sp_max_write_n) && (sp_write_n_bytes))
                sp_pass_writen();
        sp_check_opbuf_usage(5);
-       buf[0] = ((delay >> 0) & 0xFF);
-       buf[1] = ((delay >> 8) & 0xFF);
-       buf[2] = ((delay >> 16) & 0xFF);
-       buf[3] = ((delay >> 24) & 0xFF);
+       buf[0] = ((usecs >> 0) & 0xFF);
+       buf[1] = ((usecs >> 8) & 0xFF);
+       buf[2] = ((usecs >> 16) & 0xFF);
+       buf[3] = ((usecs >> 24) & 0xFF);
        sp_stream_buffer_op(S_CMD_O_DELAY, 4, buf);
        sp_opbuf_usage += 5;
        sp_prev_was_write = 0;
-- 
1.7.1


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to