summaryrefslogtreecommitdiffstats
path: root/cfe/cfe/arch/mips/board/bcm63xx_ram/include/bcm63xx_util.h
blob: 273b9c790525b8c0f43a2ff0aac41c53b7f07798 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/***************************************************************************
 * Broadcom Corp. Confidential
 * Copyright 2001, 2002 Broadcom Corp. All Rights Reserved.
 *
 * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED 
 * SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. 
 * YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT 
 * SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
 *
 ***************************************************************************
 * File Name  : bcm63xx_util.h 
 *
 * Created on :  04/18/2002  seanl
 ***************************************************************************/

#if !defined(_BCM63XX_UTIL_H_)
#define _BCM63XX_UTIL_H_

#include "lib_types.h"
#include "lib_string.h"
#include "lib_queue.h"
#include "lib_malloc.h"
#include "lib_printf.h"
#include "cfe_iocb.h"
#include "cfe_device.h"
#include "cfe_console.h"
#include "cfe_devfuncs.h"
#include "cfe_timer.h"
#include "cfe_ioctl.h"
#include "cfe_error.h"
#include "env_subr.h"
#include "ui_command.h"
#include "cfe.h"
#include "net_ebuf.h"
#include "net_ether.h"
#include "net_api.h"
#include "cfe_fileops.h"
#include "bsp_config.h"
#include "cfe_mem.h"
#include "cfe_loader.h"
#include "addrspace.h"

#include "dev_bcm63xx_flash.h"
#include "bcm_hwdefs.h"
#include "bcmTag.h"
#include "boardparms.h"
#include "boardparms_voice.h"
#include "bcm_map.h"

extern unsigned long cfe_sdramsize;

#define NAND_FLASH_BOOT_IMAGE_NAME      "vmlinux.lz"

#define BOARD_IMAGE_DOWNLOAD_ADDRESS    \
    ((cfe_sdramsize > 0x00800000) ? 0x80800000 : 0x80000000) 
#define BOARD_IMAGE_DOWNLOAD_SIZE       \
    ((cfe_sdramsize > 0x00800000) ? cfe_sdramsize - 0x00800000 : 0x00400000) 

#define MAX_PROMPT_LEN      50         // assume no one wants to type more than 50 chars 
#define MAX_MAC_STR_LEN     19         // mac address string 18+1 in regular format   
#define PROMPT_DEFINE_LEN   2
#define MASK_LEN            8           // vxworks like ffffff00

typedef struct 
{
   char* promptName;
   char* errorPrompt;
   char  promptDefine[PROMPT_DEFINE_LEN];
   char  parameter[MAX_PROMPT_LEN];
   int   maxValueLength;
   int   (*func)(char *);
   int   enabled;
} PARAMETER_SETTING, *PPARAMETER_SETTING;

#define IP_PROMPT           "Invalid ip address. eg. 192.168.1.200[:ffffff00]"
#define RUN_FROM_PROMPT     "f = jump to flash; h = tftpd from host"
#define HOST_FN_PROMPT      "eg. vmlinux" 
#define FLASH_FN_PROMPT     "eg. bcm963xx_fs_kernel"
#define BOOT_DELAY_PROMPT   "range 0-9, 0=forever prompt"
#define BOOT_PARTITION_PROMPT "1 = latest image, 2 = previous image"
#define AFE_PROMPT           "Invalid AFE ID eg. 0x10608100"

// error input prompts
#define BOARDID_STR_PROMPT   "Invalid board ID"
#define MAC_CT_PROMPT        "Invalid MAC addresses number: 1 - 32"
#define MAC_ADDR_PROMPT      "Invalid MAC address format:  eg. 12:34:56:ab:cd:ef or 123456abcdef"
#define PSI_SIZE_PROMPT      "Invalid PSI size: (1-64) Kbytes"
#define BACKUP_PSI_PROMPT    "Enable Backup PSI (0 or 1)"
#define SYSLOG_SIZE_PROMPT   "Invalid System Log size: (0-256) Kbytes"
#define CPU_TP_PROMPT        "Invalid thread number: [0|1]"
#define GPON_SN_PROMPT       "Invalid GPON Serial Number"
#define GPON_PW_PROMPT       "Invalid GPON Password"
#define WPS_DEVICE_PIN_PROMPT       "Invalid WPS Device Pin"

// bootline definition:
// Space is the deliminator of the parameters.  Currently supports following parameters:
// t=xxx.xxx.xxx.xxx h=xxx.xxx.xxx.xxx g=xxx.xxx.xxx.xxx  r=f/h (run from flash or host)
// f=vmlinux (if r=h) i=bcm963xx_fs_kernel d=3 (default delay, range 0-9, 0=forever prompt)

#define BOOT_IP_LEN         18  // "t=xxx.xxx.xxx.xxx"
#define BOOT_FILENAME_LEN   50	// "f=vmlinux"

typedef struct				
{
    char boardIp[BOOT_IP_LEN];
    char boardMask[BOOT_IP_LEN];        // set for the board only and ignore for the host/gw. fmt :ffffff00
    char hostIp[BOOT_IP_LEN];
    char gatewayIp[BOOT_IP_LEN];
    char runFrom;
    char hostFileName[BOOT_FILENAME_LEN];
    char flashFileName[BOOT_FILENAME_LEN];
    int  bootDelay;
    char bootPartition;
} BOOT_INFO, *PBOOT_INFO;

#define LED_OFF 0
#define LED_ON  1

extern void getBootLine(void);
extern void setDefaultBootline(void);
extern int printSysInfo(void);
extern int changeBootLine(void);
extern int changeAfeId(void);
extern void dumpHex(unsigned char *start, int len);
extern BOOT_INFO bootInfo;
extern void enet_init(void);
extern int verifyTag(PFILE_TAG pTag, int verbose);
extern int flashImage(unsigned char *ptr);
extern int  writeWholeImage(unsigned char *ptr, int size);

/* Foxconn add start by Cliff Wang, 03/23/2010 */
extern int bcm63xx_run(int breakIntoCfe);
/* Foxconn add end by Cliff Wang, 03/23/2010 */

extern int getPartitionFromTag( PFILE_TAG pTag );
extern PFILE_TAG getTagFromPartition(int imageNumber);
extern PFILE_TAG getBootImageTag(void);
extern int parsexdigit(char str);
extern int setDefaultBoardParam(void);	/* Bob added to set default board parameters, 11/01/2010 */
extern int setBoardParam(void);
extern int setGponBoardParam(void);
extern int setWpsDevicePinBoardParam(void);
extern int setVoiceBoardParam(void);
extern int getBoardParam(void);
extern void displayBoardParam(void);
extern int processPrompt(PPARAMETER_SETTING promptPtr, int promptCt);
extern UINT32 getCrc32(unsigned char *pdata, UINT32 size, UINT32 crc);
extern int yesno(void);
extern int bcm63xx_cfe_rawload(cfe_loadargs_t *la);
extern int bcm63xx_cfe_elfload(cfe_loadargs_t *la);
extern void setGpio (unsigned short led_gpio, unsigned short led_state);
extern void setLed ( unsigned short led, unsigned short led_state );
extern void setAllLedsOff(void);
extern void setPowerOnLedOn(void);
extern void setBreakIntoCfeLed(void);
extern void softReset(void);
extern void validateNandPartTbl(PNVRAM_DATA pNvramData);
extern void writeNvramData(PNVRAM_DATA pNvramData);
extern int readNvramData(PNVRAM_DATA pNvramData);

/* Foxconn add start by Jenny Zhao, 07/02/2008*/
extern int nmrp_led_toggle(void);
extern int power_led_toggle(int state);
extern int verify_board_id(char *buf);
/* Foxconn add end by Jenny Zhao, 07/02/2008*/
#endif // _BCM63XX_UTIL_H_