4 * Copyright (C) 2018 Paweł Dembicki <paweldembicki@gmail.com>
6 * This tool is based on mktplinkfw.
7 * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
8 * Copyright (C) 2008,2009 Wang Jian <lark@linux.net.cn>
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the Free
12 * Software Foundation; either version 2 of the License, or (at your option)
16 #ifndef mkdlinkfw_lib_h
17 #define mkdlinkfw_lib_h
19 #define AUH_MAGIC "DLK"
22 #define AUH_HDR_ID 0x4842
23 #define AUH_HDR_VER 0x02
24 #define AUH_SEC_ID 0x04
25 #define AUH_INFO_TYPE 0x04
29 #define STAG_MAGIC 0x2B24
30 #define STAG_CMARK_FACTORY 0xFF
33 #define SCH2_MAGIC 0x2124
41 #define RAM_ENTRY_ADDR 0x80000000
42 #define RAM_LOAD_ADDR 0x80000000
43 #define JBOOT_SIZE 0x10000
45 #define ALL_HEADERS_SIZE (AUH_SIZE + STAG_SIZE + SCH2_SIZE)
46 #define MAX_HEADER_COUNTER 10
47 #define TIMESTAMP_MAGIC 0x35016f00L
52 #define ALIGN(x, a) ({ typeof(a) __a = (a); (((x) + __a - 1) & ~(__a - 1)); })
54 #define ERR(fmt, ...) do { \
56 fprintf(stderr, "[%s] *** error: " fmt "\n", \
57 progname, ## __VA_ARGS__); \
60 #define ERRS(fmt, ...) do { \
63 fprintf(stderr, "[%s] *** error: " fmt ": %s\n", \
64 progname, ## __VA_ARGS__, strerror(save)); \
67 #define DBG(fmt, ...) do { \
68 fprintf(stderr, "[%s] " fmt "\n", progname, ## __VA_ARGS__); \
72 char *file_name
; /* name of the file */
73 uint32_t file_size
; /* length of the file */
76 uint32_t jboot_timestamp(void);
77 uint16_t jboot_checksum(uint16_t start_val
, uint16_t *data
, int size
);
78 int get_file_stat(struct file_info
*fdata
);
79 int read_to_buf(const struct file_info
*fdata
, char *buf
);
80 int pad_jffs2(char *buf
, int currlen
, int maxlen
);
81 int write_fw(const char *ofname
, const char *data
, int len
);
83 #endif /* mkdlinkfw_lib_h */