d1e3e5b941a4e1a683e86cf7deffb95cb86c73a9
[openwrt.git] / target / linux / adm5120 / files-2.6.28 / arch / mips / include / asm / mach-adm5120 / prom / zynos.h
1 /*
2  *  ZyNOS (ZyXEL's Networking OS) definitions
3  *
4  *  Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org>
5  *
6  *  This program is free software; you can redistribute it and/or modify it
7  *  under the terms of the GNU General Public License version 2 as published
8  *  by the Free Software Foundation.
9  *
10  */
11
12 #ifndef _ZYNOS_H
13 #define _ZYNOS_H
14
15 #define ZYNOS_NAME_LEN          32
16 #define ZYNOS_FEAT_BYTES        22
17 #define ZYNOS_MAC_LEN           6
18
19 struct zynos_board_info {
20         unsigned char   vendor[ZYNOS_NAME_LEN];
21         unsigned char   product[ZYNOS_NAME_LEN];
22         u32             bootext_addr;
23         u32             res0;
24         u16             board_id;
25         u8              res1[6];
26         u8              feat_other[ZYNOS_FEAT_BYTES];
27         u8              feat_main;
28         u8              res2;
29         u8              mac[ZYNOS_MAC_LEN];
30         u8              country;
31         u8              dbgflag;
32 } __attribute__ ((packed));
33
34 /*
35  * Vendor IDs
36  */
37 #define ZYNOS_VENDOR_ID_ZYXEL   0
38 #define ZYNOS_VENDOR_ID_NETGEAR 1
39 #define ZYNOS_VENDOR_ID_DLINK   2
40 #define ZYNOS_VENDOR_ID_OTHER   3
41 #define ZYNOS_VENDOR_ID_LUCENT  4
42
43 /*
44  * Vendor names
45  */
46 #define ZYNOS_VENDOR_DLINK      "D-Link"
47 #define ZYNOS_VENDOR_LUCENT     "LUCENT"
48 #define ZYNOS_VENDOR_NETGEAR    "NetGear"
49 #define ZYNOS_VENDOR_ZYXEL      "ZyXEL"
50
51 /*
52  * Board IDs (big-endian)
53  */
54 #define ZYNOS_BOARD_ES2108      0x00F2  /* Ethernet Switch 2108 */
55 #define ZYNOS_BOARD_ES2108F     0x01AF  /* Ethernet Switch 2108-F */
56 #define ZYNOS_BOARD_ES2108G     0x00F3  /* Ethernet Switch 2108-G */
57 #define ZYNOS_BOARD_ES2108LC    0x00FC  /* Ethernet Switch 2108-LC */
58 #define ZYNOS_BOARD_ES2108PWR   0x00F4  /* Ethernet Switch 2108PWR */
59 #define ZYNOS_BOARD_HS100       0x9FF1  /* HomeSafe 100/100W */
60 #define ZYNOS_BOARD_P334        0x9FF5  /* Prestige 334 */
61 #define ZYNOS_BOARD_P334U       0x9FDD  /* Prestige 334U */
62 #define ZYNOS_BOARD_P334W       0x9FF3  /* Prestige 334W */
63 #define ZYNOS_BOARD_P334WH      0x00E0  /* Prestige 334WH */
64 #define ZYNOS_BOARD_P334WHD     0x00E1  /* Prestige 334WHD */
65 #define ZYNOS_BOARD_P334WT      0x9FEF  /* Prestige 334WT */
66 #define ZYNOS_BOARD_P334WT_ALT  0x9F02  /* Prestige 334WT alternative*/
67 #define ZYNOS_BOARD_P335        0x9FED  /* Prestige 335/335WT */
68 #define ZYNOS_BOARD_P335PLUS    0x0025  /* Prestige 335Plus */
69 #define ZYNOS_BOARD_P335U       0x9FDC  /* Prestige 335U */
70
71 /*
72  * Some magic numbers (big-endian)
73  */
74 #define ZYNOS_MAGIC_DBGAREA1    0x48646267      /* "Hdbg" */
75 #define ZYNOS_MAGIC_DBGAREA2    0x61726561      /* "area" */
76
77 struct bootbase_info {
78         u16             vendor_id;
79         u16             board_id;
80         u8              mac[6];
81 };
82
83 extern struct bootbase_info bootbase_info;
84 extern int bootbase_present(void) __init;
85
86 #endif /* _ZYNOS_H */