X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=src%2Fmkzynfw.c;h=ccbabfe7f20b2bfb3155eaa053b6e1dff3b8d15a;hb=d3633fda3462a734ea20dd3046778baefe7418e8;hp=9018ea10845bf9da59830c7b0b7486c54693cfd1;hpb=3a5c67fc3afea25c0abcd3fdd36b256b2aeeb72d;p=project%2Ffirmware-utils.git diff --git a/src/mkzynfw.c b/src/mkzynfw.c index 9018ea1..ccbabfe 100644 --- a/src/mkzynfw.c +++ b/src/mkzynfw.c @@ -27,6 +27,7 @@ #if defined(__CYGWIN__) # include #endif +#include #include "zynos.h" @@ -121,6 +122,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), \ @@ -141,6 +145,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 @@ -215,6 +228,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} }; @@ -670,7 +688,7 @@ write_out_file(FILE *outfile, char *name, size_t len, struct csum_state *css) FILE *f; int res; - DBG(2, "writing out file, name=%s, len=%d", + DBG(2, "writing out file, name=%s, len=%zu", name, len); errno = 0; @@ -971,7 +989,7 @@ calc_block_offsets(int type, uint32_t *offset) uint32_t avail; int i, res; - DBG(1,"calculating block offsets, starting with %lu", + DBG(1,"calculating block offsets, starting with %" PRIu32, *offset); res = 0; @@ -982,12 +1000,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; + 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;