netifd: update to latest version, fixes resolv.conf writes on interface setting changes
[openwrt.git] / tools / firmware-utils / src / mkzynfw.c
index b6cb7cf..36c176f 100644 (file)
@@ -1,5 +1,4 @@
 /*
- *  $Id$
  *
  *  Copyright (C) 2007-2008 OpenWrt.org
  *  Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
@@ -122,6 +121,9 @@ int num_blocks = 0;
 #define ATHEROS_FLASH_BASE     0xBFC00000
 #define ATHEROS_CODE_START     0x80e00000
 
+#define AR71XX_FLASH_BASE      0xBFC00000
+#define AR71XX_CODE_START      0x81E00000
+
 #define BOARD(n, d, v, m, fb, fs, cs, fo) {            \
        .name = (n), .desc=(d),                         \
        .vendor = (v), .model = (m),                    \
@@ -142,6 +144,15 @@ int num_blocks = 0;
 #define ATHEROSBOARD1(n, d, m, fs) BOARD(n, d, ZYNOS_VENDOR_ID_ZYXEL, m, \
        ATHEROS_FLASH_BASE, fs, ATHEROS_CODE_START, 0x30000)
 
+#define AR71XXBOARD1(n, d, m, fs) {            \
+       .name = (n), .desc=(d),                         \
+       .vendor = (ZYNOS_VENDOR_ID_ZYXEL), .model = (m),                        \
+       .flash_base = (AR71XX_FLASH_BASE), .flash_size = (fs)<<20,      \
+       .code_start = (AR71XX_CODE_START), .romio_offs = (0x40000),             \
+       .bootext_size = 0x30000         \
+       }
+
+
 static struct board_info boards[] = {
        /*
         * Infineon/ADMtek ADM5120 based boards
@@ -216,6 +227,11 @@ static struct board_info boards[] = {
         */
        ATHEROSBOARD1("NBG-318S", "ZyXEL NBG-318S", ZYNOS_MODEL_NBG_318S, 4),
 
+       /*
+        * Atheros ar71xx based boards
+        */
+       AR71XXBOARD1("NBG-460N", "ZyXEL NBG-460N", ZYNOS_MODEL_NBG_460N, 4),
+
        {.name = NULL}
 };
 
@@ -983,12 +999,13 @@ calc_block_offsets(int type, uint32_t *offset)
                        continue;
 
                next_offs = ALIGN(*offset, block->align);
-               avail = board->flash_size - board->romio_offs - next_offs;
-               if (next_offs + block->file_size > avail) {
+               avail = board->flash_size - next_offs;
+               if (block->file_size > avail) {
                        ERR("file %s is too big, offset = %u, size=%u,"
-                               " align = %u", block->file_name,
+                               " avail = %u, align = %u", block->file_name,
                                (unsigned)next_offs,
                                (unsigned)block->file_size,
+                               (unsigned)avail,
                                (unsigned)block->align);
                        res = -1;
                        break;