http://www.usr.com/support/gpl/USR9107_release1.1.tar.gz
[bcm963xx.git] / userapps / broadcom / cfm / inc / board_api.h
1 /***************************************************************************
2  * Broadcom Corp. Confidential
3  * Copyright 2001 Broadcom Corp. All Rights Reserved.
4  *
5  * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED 
6  * SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. 
7  * YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT 
8  * SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9  *
10  ***************************************************************************
11  * File Name  : board_api.h (adapted from flash_api.h by Yen Tran)
12  *
13  * Created on :  02/20/2002  seanl
14  ***************************************************************************/
15
16 #if !defined(_BOARD_API_H_)
17 #define _BOARD_API_H_
18
19 #if defined(__cplusplus)
20 extern "C" {
21 #endif
22
23 #if !defined(_BOARD_H)
24
25 // for the action in BOARD_IOCTL_PARMS for flash operation
26 typedef enum 
27 {
28     PERSISTENT,
29     NVRAM,
30     BCM_IMAGE_CFE,
31     BCM_IMAGE_FS,
32     BCM_IMAGE_KERNEL,
33     BCM_IMAGE_WHOLE,
34     SCRATCH_PAD,
35     FLASH_SIZE,
36 } BOARD_IOCTL_ACTION;  
37     
38 typedef struct boardIoctParms
39 {
40     char *string;
41     char *buf;
42     int strLen;
43     int offset;
44     BOARD_IOCTL_ACTION  action;        /* flash read/write: nvram, persistent, bcm image */
45     int result;
46 } BOARD_IOCTL_PARMS;
47
48
49 // LED defines 
50 typedef enum
51 {   
52     kLedAdsl,
53     kLedWireless,
54     kLedUsb,
55     kLedHpna,
56     kLedWanData,
57     kLedPPP,
58     kLedVoip,
59     kLedSes,
60     kLedEnd,                // NOTE: Insert the new led name before this one.  Alway stay at the end.
61 } BOARD_LED_NAME;
62
63 typedef enum
64 {
65     kLedStateOff,                        /* turn led off */
66     kLedStateOn,                         /* turn led on */
67     kLedStateFail,                       /* turn led on red */
68     kLedStateBlinkOnce,                  /* blink once, ~100ms and ignore the same call during the 100ms period */
69     kLedStateSlowBlinkContinues,         /* slow blink continues at ~600ms interval */
70     kLedStateFastBlinkContinues,         /* fast blink continues at ~200ms interval */
71 } BOARD_LED_STATE;
72
73
74 /* GPIO Definitions */
75 #define GPIO_BOARD_ID_1             0x0020
76 #define GPIO_BOARD_ID_2             0x0040
77 #define GPIO_BOARD_ID_3             0x0080
78
79 /* Identify BCM96345 board type by checking GPIO bits.
80  * GPIO bit 7 6 5    Board type
81  *          0 0 0    Undefined
82  *          0 0 1    Undefined
83  *          0 1 0    GW
84  *          0 1 1    USB
85  *          1 0 0    R 1.0
86  *          1 0 1    I
87  *          1 1 0    SV
88  *          1 1 1    R 0.0
89  */
90 #define BOARD_ID_BCM9634X_MASK  (GPIO_BOARD_ID_1|GPIO_BOARD_ID_2|GPIO_BOARD_ID_3) 
91 #define BOARD_ID_BCM96345SV     (GPIO_BOARD_ID_2|GPIO_BOARD_ID_3)
92 #define BOARD_ID_BCM96345R00    (GPIO_BOARD_ID_1|GPIO_BOARD_ID_2|GPIO_BOARD_ID_3)
93 #define BOARD_ID_BCM96345I      (GPIO_BOARD_ID_1|GPIO_BOARD_ID_3)
94 #define BOARD_ID_BCM96345R10    (GPIO_BOARD_ID_3)
95 #define BOARD_ID_BCM96345USB    (GPIO_BOARD_ID_1|GPIO_BOARD_ID_2)
96 #define BOARD_ID_BCM96345GW     (GPIO_BOARD_ID_2)
97
98 /* Defines. for board driver */
99 #define BOARD_IOCTL_MAGIC       'B'
100 #define BOARD_DRV_MAJOR          206
101
102 #define BOARD_IOCTL_FLASH_INIT \
103     _IOWR(BOARD_IOCTL_MAGIC, 0, BOARD_IOCTL_PARMS)
104
105 #define BOARD_IOCTL_FLASH_WRITE \
106     _IOWR(BOARD_IOCTL_MAGIC, 1, BOARD_IOCTL_PARMS)
107
108 #define BOARD_IOCTL_FLASH_READ \
109     _IOWR(BOARD_IOCTL_MAGIC, 2, BOARD_IOCTL_PARMS)
110
111 #define BOARD_IOCTL_GET_NR_PAGES \
112     _IOWR(BOARD_IOCTL_MAGIC, 3, BOARD_IOCTL_PARMS)
113
114 #define BOARD_IOCTL_DUMP_ADDR \
115     _IOWR(BOARD_IOCTL_MAGIC, 4, BOARD_IOCTL_PARMS)
116
117 #define BOARD_IOCTL_SET_MEMORY \
118     _IOWR(BOARD_IOCTL_MAGIC, 5, BOARD_IOCTL_PARMS)
119
120 #define BOARD_IOCTL_MIPS_SOFT_RESET \
121     _IOWR(BOARD_IOCTL_MAGIC, 6, BOARD_IOCTL_PARMS)
122
123 #define BOARD_IOCTL_LED_CTRL \
124     _IOWR(BOARD_IOCTL_MAGIC, 7, BOARD_IOCTL_PARMS)
125
126 #define BOARD_IOCTL_GET_ID \
127     _IOWR(BOARD_IOCTL_MAGIC, 8, BOARD_IOCTL_PARMS)
128
129 #define BOARD_IOCTL_GET_MAC_ADDRESS \
130     _IOWR(BOARD_IOCTL_MAGIC, 9, BOARD_IOCTL_PARMS)
131
132 #define BOARD_IOCTL_RELEASE_MAC_ADDRESS \
133     _IOWR(BOARD_IOCTL_MAGIC, 10, BOARD_IOCTL_PARMS)
134
135 #define BOARD_IOCTL_GET_PSI_SIZE \
136     _IOWR(BOARD_IOCTL_MAGIC, 11, BOARD_IOCTL_PARMS)
137
138 #define BOARD_IOCTL_GET_SDRAM_SIZE \
139     _IOWR(BOARD_IOCTL_MAGIC, 12, BOARD_IOCTL_PARMS)
140
141 #define BOARD_IOCTL_GET_ENET_MODE_FLAG \
142     _IOWR(BOARD_IOCTL_MAGIC, 13, BOARD_IOCTL_PARMS)
143
144 #define BOARD_IOCTL_SET_ENET_MODE_FLAG \
145     _IOWR(BOARD_IOCTL_MAGIC, 14, BOARD_IOCTL_PARMS)
146
147 #define BOARD_IOCTL_GET_BOOTLINE \
148     _IOWR(BOARD_IOCTL_MAGIC, 15, BOARD_IOCTL_PARMS)
149
150 #define BOARD_IOCTL_SET_BOOTLINE \
151     _IOWR(BOARD_IOCTL_MAGIC, 16, BOARD_IOCTL_PARMS)
152
153 #define BOARD_IOCTL_GET_BASE_MAC_ADDRESS \
154     _IOWR(BOARD_IOCTL_MAGIC, 17, BOARD_IOCTL_PARMS)
155
156 #define BOARD_IOCTL_GET_CHIP_ID \
157     _IOWR(BOARD_IOCTL_MAGIC, 18, BOARD_IOCTL_PARMS)
158
159 #define BOARD_IOCTL_GET_NUM_ENET \
160     _IOWR(BOARD_IOCTL_MAGIC, 19, BOARD_IOCTL_PARMS)
161
162 #define BOARD_IOCTL_GET_CFE_VER \
163     _IOWR(BOARD_IOCTL_MAGIC, 20, BOARD_IOCTL_PARMS)
164
165 #define BOARD_IOCTL_GET_ENET_CFG \
166     _IOWR(BOARD_IOCTL_MAGIC, 21, BOARD_IOCTL_PARMS)
167     
168 #define BOARD_IOCTL_GET_WLAN_ANT_INUSE \
169     _IOWR(BOARD_IOCTL_MAGIC, 22, BOARD_IOCTL_PARMS)    
170     
171 #define BOARD_IOCTL_SET_TRIGGER_EVENT \
172     _IOWR(BOARD_IOCTL_MAGIC, 23, BOARD_IOCTL_PARMS)        
173
174 #define BOARD_IOCTL_GET_TRIGGER_EVENT \
175     _IOWR(BOARD_IOCTL_MAGIC, 24, BOARD_IOCTL_PARMS) 
176
177 #define BOARD_IOCTL_UNSET_TRIGGER_EVENT \
178     _IOWR(BOARD_IOCTL_MAGIC, 25, BOARD_IOCTL_PARMS) 
179
180 #define BOARD_IOCTL_SET_SES_LED \
181     _IOWR(BOARD_IOCTL_MAGIC, 26, BOARD_IOCTL_PARMS)
182         
183 #define BOARD_IOCTL_GET_CNTRY_SEL \
184     _IOWR(BOARD_IOCTL_MAGIC, 27, BOARD_IOCTL_PARMS)
185
186 #endif
187
188 int sysScratchPadSet(char *tokenId, char *tokBuf, int bufLen);
189 int sysScratchPadGet(char *tokenId, char *tokBuf, int bufLen);
190 int sysPersistentGet(char *string,int strLen,int offset);
191 int sysPersistentSet(char *string,int strLen,int offset);
192 int sysNvRamSet(char *string,int strLen,int offset);
193 int sysNvRamGet(char *string,int strLen,int offset);
194 void sysFlashImageInit(void);
195 int sysFlashImageGet(void *image, int size, int addr,
196     BOARD_IOCTL_ACTION imageType);
197 int sysFlashImageSet(void *image, int size, int addr,
198     BOARD_IOCTL_ACTION imageType);
199 int sysNrPagesGet(void);
200 int sysDumpAddr(char *addr, int len);
201 int sysSetMemory(char *addr, int size, unsigned long value );
202 void sysMipsSoftReset(void);
203 int sysGetBoardIdName(char *name, int length);
204 int sysGetMacAddress( unsigned char *pucaAddr, unsigned long ulId );
205 int sysReleaseMacAddress( unsigned char *pucaAddr );
206 int sysGetSdramSize( void );
207 int sysGetPsiSize( void );
208 int sysGetEnetModeFlag(void);
209 int sysSetEnetModeFlag(unsigned long);
210 int sysGetBootline(char *string,int strLen);
211 int sysSetBootline(char *string,int strLen);
212 void sysLedCtrl(BOARD_LED_NAME, BOARD_LED_STATE);
213 int sysFlashSizeGet(void);
214 int sysGetBaseMacAddress(unsigned char *pucaAddr);
215 int sysGetChipId(void);
216 int sysGetNumEnet(void);
217 int sysGetCFEVersion(char *string, int strLen);
218 int sysGetEnetCfg(char *string, int strLen);
219 int sysGetCountry(char *string, int strLen);
220 #if defined(__cplusplus)
221 }
222 #endif
223
224 #endif /* _BOARD_API_H_ */
225