/*
- * $Id$
*
- * Copyright (C) 2007 OpenWrt.org
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 OpenWrt.org
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
*
- * This code was based on the information of the ZyXEL's firmware
- * image format written by Kolja Waschk, can be found at:
+ * This code was based on the information of the ZyXEL's firmware
+ * image format written by Kolja Waschk, can be found at:
* http://www.ixo.de/info/zyxel_uclinux
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
*/
#ifndef _ZYNOS_H
#define _ZYNOS_H
-
#define BOOTBASE_NAME_LEN 32
#define BOOTBASE_MAC_LEN 6
#define BOOTBASE_FEAT_LEN 22
+#define BOOTEXT_DEF_SIZE 0x18000
+
struct zyn_bootbase_info {
char vendor[BOOTBASE_NAME_LEN]; /* Vendor name */
char model[BOOTBASE_NAME_LEN]; /* Model name */
uint32_t bootext_addr; /* absolute address of the Boot Extension */
- uint32_t res0;
+ uint16_t res0; /* reserved/unknown */
+ uint8_t sys_type; /* system type */
+ uint8_t res1; /* reserved/unknown */
uint16_t model_id; /* model id */
uint8_t feat_other[BOOTBASE_FEAT_LEN]; /* other feature bits */
uint8_t feat_main; /* main feature bits */
- uint8_t res1; /* unknown/unused */
+ uint8_t res2; /* reserved/unknown */
uint8_t mac[BOOTBASE_MAC_LEN]; /* mac address */
uint8_t country; /* default country code */
uint8_t dbgflag; /* debug flag */
#define ROMBIN_FLAG_04 0x04
#define ROMBIN_FLAG_08 0x08
#define ROMBIN_FLAG_10 0x10
-#define ROMBIN_FLAG_20 0x20
-#define ROMBIN_FLAG_40 0x40
+#define ROMBIN_FLAG_CCSUM 0x20 /* compressed checksum is valid */
+#define ROMBIN_FLAG_OCSUM 0x40 /* original checksum is valid */
#define ROMBIN_FLAG_COMPRESSED 0x80 /* the binary is compressed */
/* Object types */
} __attribute__((packed));
/*
- * Board IDs (in big-endian format)
+ * Vendor IDs
+ */
+#define ZYNOS_VENDOR_ID_ZYXEL 0
+#define ZYNOS_VENDOR_ID_NETGEAR 1
+#define ZYNOS_VENDOR_ID_DLINK 2
+#define ZYNOS_VENDOR_ID_03 3
+#define ZYNOS_VENDOR_ID_LUCENT 4
+#define ZYNOS_VENDOR_ID_O2 10
+
+/*
+ * Model IDs (in big-endian format)
*/
#define MID(x) (((x) & 0xFF) << 8) | (((x) & 0xFF00) >> 8)
-/*
- * Infineon/ADMtek ADM5120 based models
+/*
+ * Infineon/ADMtek ADM5120 based models
*/
#define ZYNOS_MODEL_ES_2024A MID( 221)
#define ZYNOS_MODEL_ES_2024PWR MID( 4097)
#define ZYNOS_MODEL_P_335U MID(56479)
#define ZYNOS_MODEL_P_335WT ZYNOS_MODEL_P_335
-/*
- * Texas Instruments AR7 based models
+/*
+ * Texas Instruments AR7 based models
*/
#define ZYNOS_MODEL_P_2602H_61C MID( 3229)
#define ZYNOS_MODEL_P_2602H_63C MID( 3485)
#define ZYNOS_MODEL_P_2602HW_61C /* n.a. */
#define ZYNOS_MODEL_P_2602HW_63 /* n.a. */
#define ZYNOS_MODEL_P_2602HW_63C ZYNOS_MODEL_P_2602H_63C
-#define ZYNOS_MODEL_P_2602HW_D1A /* n.a. */
+#define ZYNOS_MODEL_P_2602HW_D1A MID( 6301)
#define ZYNOS_MODEL_P_2602HW_D3A /* n.a. */
#define ZYNOS_MODEL_P_2602HWL_61 MID( 1181)
#define ZYNOS_MODEL_P_2602HWL_61C ZYNOS_MODEL_P_2602H_61C
#define ZYNOS_MODEL_P_2602HWL_63C ZYNOS_MODEL_P_2602H_63C
-#define ZYNOS_MODEL_P_2602HWL_D1A MID( 6301)
+#define ZYNOS_MODEL_P_2602HWL_D1A ZYNOS_MODEL_P_2602HW_D1A
#define ZYNOS_MODEL_P_2602HWL_D3A MID( 7581)
+#define ZYNOS_MODEL_P_2602HWN_D7A MID(30464)
#define ZYNOS_MODEL_P_2602HWNLI_D7A MID( 6813)
#define ZYNOS_MODEL_P_2602R_61 MID( 2205)
#define ZYNOS_MODEL_P_662HW_D1 MID(10394)
#define ZYNOS_MODEL_P_662HW_D3 MID(12954)
+/* OEM boards */
+#define ZYNOS_MODEL_O2SURF ZYNOS_MODEL_P_2602HWN_D7A
+
+/* Atheros AR2318 based boards */
+#define ZYNOS_MODEL_NBG_318S MID(59392)
+
+/* Atheros AR71xx based boards */
+#define ZYNOS_MODEL_NBG_460N MID(61441)
+
#endif /* _ZYNOS_H */