1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * 4 * Copyright (C) 2007-2008 OpenWrt.org 5 * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org> 6 * 7 * This code was based on the information of the ZyXEL's firmware 8 * image format written by Kolja Waschk, can be found at: 9 * http://www.ixo.de/info/zyxel_uclinux 10 */ 11 12 #ifndef _ZYNOS_H 13 #define _ZYNOS_H 14 15 #define BOOTBASE_NAME_LEN 32 16 #define BOOTBASE_MAC_LEN 6 17 #define BOOTBASE_FEAT_LEN 22 18 19 #define BOOTEXT_DEF_SIZE 0x18000 20 21 struct zyn_bootbase_info { 22 char vendor[BOOTBASE_NAME_LEN]; /* Vendor name */ 23 char model[BOOTBASE_NAME_LEN]; /* Model name */ 24 uint32_t bootext_addr; /* absolute address of the Boot Extension */ 25 uint16_t res0; /* reserved/unknown */ 26 uint8_t sys_type; /* system type */ 27 uint8_t res1; /* reserved/unknown */ 28 uint16_t model_id; /* model id */ 29 uint8_t feat_other[BOOTBASE_FEAT_LEN]; /* other feature bits */ 30 uint8_t feat_main; /* main feature bits */ 31 uint8_t res2; /* reserved/unknown */ 32 uint8_t mac[BOOTBASE_MAC_LEN]; /* mac address */ 33 uint8_t country; /* default country code */ 34 uint8_t dbgflag; /* debug flag */ 35 } __attribute__((packed)); 36 37 #define ROMBIN_SIG_LEN 3 38 #define ROMBIN_VER_LEN 15 39 40 struct zyn_rombin_hdr { 41 uint32_t addr; /* load address of the object */ 42 uint16_t res0; /* unknown/unused */ 43 char sig[ROMBIN_SIG_LEN]; /* magic, must be "SIG" */ 44 uint8_t type; /* type of the object */ 45 uint32_t osize; /* size of the uncompressed data */ 46 uint32_t csize; /* size of the compressed data */ 47 uint8_t flags; /* various flags */ 48 uint8_t res1; /* unknown/unused */ 49 uint16_t ocsum; /* csum of the uncompressed data */ 50 uint16_t ccsum; /* csum of the compressed data */ 51 char ver[ROMBIN_VER_LEN]; 52 uint32_t mmap_addr; /* address of the Memory Map Table*/ 53 uint32_t res2; /* unknown/unused*/ 54 uint8_t res3; /* unknown/unused*/ 55 } __attribute__((packed)); 56 57 #define ROMBIN_SIGNATURE "SIG" 58 59 /* Rombin flag bits */ 60 #define ROMBIN_FLAG_01 0x01 61 #define ROMBIN_FLAG_02 0x02 62 #define ROMBIN_FLAG_04 0x04 63 #define ROMBIN_FLAG_08 0x08 64 #define ROMBIN_FLAG_10 0x10 65 #define ROMBIN_FLAG_CCSUM 0x20 /* compressed checksum is valid */ 66 #define ROMBIN_FLAG_OCSUM 0x40 /* original checksum is valid */ 67 #define ROMBIN_FLAG_COMPRESSED 0x80 /* the binary is compressed */ 68 69 /* Object types */ 70 #define OBJECT_TYPE_ROMIMG 0x01 71 #define OBJECT_TYPE_ROMBOOT 0x02 72 #define OBJECT_TYPE_BOOTEXT 0x03 73 #define OBJECT_TYPE_ROMBIN 0x04 74 #define OBJECT_TYPE_ROMDIR 0x05 75 #define OBJECT_TYPE_6 0x06 76 #define OBJECT_TYPE_ROMMAP 0x07 77 #define OBJECT_TYPE_RAM 0x80 78 #define OBJECT_TYPE_RAMCODE 0x81 79 #define OBJECT_TYPE_RAMBOOT 0x82 80 81 /* 82 * Memory Map Table header 83 */ 84 struct zyn_mmt_hdr { 85 uint16_t count; 86 uint32_t user_start; 87 uint32_t user_end; 88 uint16_t csum; 89 uint8_t res[12]; 90 } __attribute__((packed)); 91 92 #define OBJECT_NAME_LEN 8 93 94 struct zyn_mmt_item { 95 uint8_t type; /* type of the object */ 96 uint8_t name[OBJECT_NAME_LEN]; /* name of the object */ 97 uint8_t res0; /* unused/unknown */ 98 uint32_t addr; 99 uint32_t size; /* size of the object */ 100 uint8_t res1[3]; /* unused/unknown */ 101 uint8_t type2; 102 } __attribute__((packed)); 103 104 /* 105 * Vendor IDs 106 */ 107 #define ZYNOS_VENDOR_ID_ZYXEL 0 108 #define ZYNOS_VENDOR_ID_NETGEAR 1 109 #define ZYNOS_VENDOR_ID_DLINK 2 110 #define ZYNOS_VENDOR_ID_03 3 111 #define ZYNOS_VENDOR_ID_LUCENT 4 112 #define ZYNOS_VENDOR_ID_O2 10 113 114 /* 115 * Model IDs (in big-endian format) 116 */ 117 #define MID(x) (((x) & 0xFF) << 8) | (((x) & 0xFF00) >> 8) 118 119 /* 120 * Infineon/ADMtek ADM5120 based models 121 */ 122 #define ZYNOS_MODEL_ES_2024A MID( 221) 123 #define ZYNOS_MODEL_ES_2024PWR MID( 4097) 124 #define ZYNOS_MODEL_ES_2108 MID(61952) 125 #define ZYNOS_MODEL_ES_2108_F MID(44801) 126 #define ZYNOS_MODEL_ES_2108_G MID(62208) 127 #define ZYNOS_MODEL_ES_2108_LC MID(64512) 128 #define ZYNOS_MODEL_ES_2108PWR MID(62464) 129 #define ZYNOS_MODEL_HS_100 MID(61855) 130 #define ZYNOS_MODEL_HS_100W ZYNOS_MODEL_HS_100 131 #define ZYNOS_MODEL_P_334 MID(62879) 132 #define ZYNOS_MODEL_P_334U MID(56735) 133 #define ZYNOS_MODEL_P_334W MID(62367) 134 #define ZYNOS_MODEL_P_334WH MID(57344) 135 #define ZYNOS_MODEL_P_334WHD MID(57600) 136 #define ZYNOS_MODEL_P_334WT MID(61343) 137 #define ZYNOS_MODEL_P_335 MID(60831) 138 #define ZYNOS_MODEL_P_335PLUS MID( 9472) 139 #define ZYNOS_MODEL_P_335U MID(56479) 140 #define ZYNOS_MODEL_P_335WT ZYNOS_MODEL_P_335 141 142 /* 143 * Texas Instruments AR7 based models 144 */ 145 #define ZYNOS_MODEL_P_2602H_61C MID( 3229) 146 #define ZYNOS_MODEL_P_2602H_63C MID( 3485) 147 #define ZYNOS_MODEL_P_2602H_D1A /* n.a. */ 148 #define ZYNOS_MODEL_P_2602H_D3A /* n.a. */ 149 #define ZYNOS_MODEL_P_2602HW_61C /* n.a. */ 150 #define ZYNOS_MODEL_P_2602HW_63 /* n.a. */ 151 #define ZYNOS_MODEL_P_2602HW_63C ZYNOS_MODEL_P_2602H_63C 152 #define ZYNOS_MODEL_P_2602HW_D1A MID( 6301) 153 #define ZYNOS_MODEL_P_2602HW_D3A /* n.a. */ 154 #define ZYNOS_MODEL_P_2602HWL_61 MID( 1181) 155 #define ZYNOS_MODEL_P_2602HWL_61C ZYNOS_MODEL_P_2602H_61C 156 #define ZYNOS_MODEL_P_2602HWL_63C ZYNOS_MODEL_P_2602H_63C 157 #define ZYNOS_MODEL_P_2602HWL_D1A ZYNOS_MODEL_P_2602HW_D1A 158 #define ZYNOS_MODEL_P_2602HWL_D3A MID( 7581) 159 #define ZYNOS_MODEL_P_2602HWN_D7A MID(30464) 160 #define ZYNOS_MODEL_P_2602HWNLI_D7A MID( 6813) 161 162 #define ZYNOS_MODEL_P_2602R_61 MID( 2205) 163 #define ZYNOS_MODEL_P_2602R_63 MID( 3997) 164 #define ZYNOS_MODEL_P_2602R_D1A /* n.a. */ 165 #define ZYNOS_MODEL_P_2602R_D3A /* n.a. */ 166 #define ZYNOS_MODEL_P_2602RL_D1A MID( 6045) 167 #define ZYNOS_MODEL_P_2602RL_D3A MID( 7069) 168 169 #define ZYNOS_MODEL_P_660H_61 MID(19346) 170 #define ZYNOS_MODEL_P_660H_63 MID(22162) 171 #define ZYNOS_MODEL_P_660H_67 /* n.a. */ 172 #define ZYNOS_MODEL_P_660H_D1 MID( 7066) 173 #define ZYNOS_MODEL_P_660H_D3 MID(13210) 174 175 #define ZYNOS_MODEL_P_660HW_61 ZYNOS_MODEL_P_660H_61 176 #define ZYNOS_MODEL_P_660HW_63 ZYNOS_MODEL_P_660H_63 177 #define ZYNOS_MODEL_P_660HW_67 ZYNOS_MODEL_P_660HW_63 178 #define ZYNOS_MODEL_P_660HW_D1 MID( 9114) 179 #define ZYNOS_MODEL_P_660HW_D3 MID(12698) 180 181 #define ZYNOS_MODEL_P_660R_61 MID(20882) 182 #define ZYNOS_MODEL_P_660R_61C MID( 1178) 183 #define ZYNOS_MODEL_P_660R_63 MID(21138) 184 #define ZYNOS_MODEL_P_660R_63C MID( 922) 185 #define ZYNOS_MODEL_P_660R_67 ZYNOS_MODEL_P_660R_63 186 #define ZYNOS_MODEL_P_660R_67C /* n.a. */ 187 #define ZYNOS_MODEL_P_660R_D1 MID( 7322) 188 #define ZYNOS_MODEL_P_660R_D3 MID(10138) 189 190 #define ZYNOS_MODEL_P_661H_61 MID(19346) 191 #define ZYNOS_MODEL_P_661H_63 MID( 1946) 192 #define ZYNOS_MODEL_P_661H_D1 MID(10650) 193 #define ZYNOS_MODEL_P_661H_D3 MID(12442) 194 195 #define ZYNOS_MODEL_P_661HW_61 ZYNOS_MODEL_P_661H_61 196 #define ZYNOS_MODEL_P_661HW_63 ZYNOS_MODEL_P_661H_63 197 #define ZYNOS_MODEL_P_661HW_D1 MID(10906) 198 #define ZYNOS_MODEL_P_661HW_D3 MID(14746) 199 200 #define ZYNOS_MODEL_P_662H_61 MID(22418) 201 #define ZYNOS_MODEL_P_662H_63 /* n.a. */ 202 #define ZYNOS_MODEL_P_662H_67 /* n.a. */ 203 #define ZYNOS_MODEL_P_662H_D1 /* n.a. */ 204 #define ZYNOS_MODEL_P_662H_D3 /* n.a. */ 205 206 #define ZYNOS_MODEL_P_662HW_61 /* n.a. */ 207 #define ZYNOS_MODEL_P_662HW_63 MID(22674) 208 #define ZYNOS_MODEL_P_662HW_67 /* n.a. */ 209 #define ZYNOS_MODEL_P_662HW_D1 MID(10394) 210 #define ZYNOS_MODEL_P_662HW_D3 MID(12954) 211 212 /* OEM boards */ 213 #define ZYNOS_MODEL_O2SURF ZYNOS_MODEL_P_2602HWN_D7A 214 215 /* Atheros AR2318 based boards */ 216 #define ZYNOS_MODEL_NBG_318S MID(59392) 217 218 /* Atheros AR71xx based boards */ 219 #define ZYNOS_MODEL_NBG_460N MID(61441) 220 221 #endif /* _ZYNOS_H */ 222
This page was automatically generated by LXR 0.3.1. • OpenWrt