• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/firmware-utils/src/zynos.h

  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