restore reasonable default port for Linux
[flashkit-mdc.git] / flashkit.c
index 1dc54d9..e6d5785 100644 (file)
@@ -48,7 +48,7 @@ enum dev_cmd {
         CMD_RY = 4,
         CMD_DELAY = 5,
 };
-#define PAR_MODE8  (1 << 4)
+#define PAR_MODE8  (1 << 4)    /* but still drives noth LWR and UWR */
 #define PAR_DEV_ID (1 << 5)
 #define PAR_SINGE  (1 << 6)
 #define PAR_INC    (1 << 7)
@@ -406,17 +406,23 @@ static void read_info(int fd)
 
 static uint32_t get_block_addr(uint32_t addr, uint32_t blk_offset)
 {
-       uint32_t i;
+       uint32_t i, base, faddr;
 
        assert(info.region_cnt);
+       assert(info.size);
+
+       // get a flash address to allow mapper hardware
+       faddr = addr & (info.size - 1);
+       base = addr & ~(info.size - 1);
+
        for (i = 0; i < info.region_cnt; i++) {
-               if (info.region[i].start <= addr
-                   && addr < info.region[i].start + info.region[i].size)
+               if (info.region[i].start <= faddr
+                   && faddr < info.region[i].start + info.region[i].size)
                {
-                       uint32_t blk = (addr - info.region[i].start)
+                       uint32_t blk = (faddr - info.region[i].start)
                                        / info.region[i].block_size
                                        + blk_offset;
-                       return info.region[i].start
+                       return base + info.region[i].start
                                + blk * info.region[i].block_size;
                }
        }
@@ -460,11 +466,18 @@ static FILE *open_prep_read(const char *fname, long *size)
        return f;
 }
 
+static const char *portname =
+#ifdef __APPLE__
+       "/dev/cu.usbserial-AL0254JM";
+#else
+       "/dev/ttyUSB0";
+#endif
+
 static void usage(const char *argv0)
 {
        printf("usage:\n"
                "%s [options]\n"
-               "  -d <ttydevice>      (default /dev/ttyUSB0)\n"
+               "  -d <ttydevice>      (default %s)\n"
                "  -r <file> [size]    dump the cart (default 4MB)\n"
                "  -w <file> [size]    program the flash (def. file size)\n"
                "  -s <file> [size]    simple write (SRAM, etc, def. file size)\n"
@@ -473,7 +486,7 @@ static void usage(const char *argv0)
                "  -8                  8bit flash\n"
                "  -v                  verify written data\n"
                "  -i                  get info about the flash chip\n"
-               , argv0);
+               , argv0, portname);
        exit(1);
 }
 
@@ -498,7 +511,6 @@ static uint8_t g_block2[0x10000];
 
 int main(int argc, char *argv[])
 {
-       const char *portname = "/dev/ttyUSB0";
        const char *fname_w = NULL;
        const char *fname_r = NULL;
        const char *fname_ws = NULL;