1 /***************************************************************************
2 * Broadcom Corp. Confidential
3 * Copyright 2001 Broadcom Corp. All Rights Reserved.
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.
10 ***************************************************************************
11 * File Name : dev_bcm63xx_flash.h
13 * Created on : 04/18/2002 seanl
14 ***************************************************************************/
16 #if !defined(_DEV_BCM63XX_FLASH_)
17 #define _DEV_BCM63XX_FLASH_
23 #define BLK64K (64*ONEK)
24 #define FLASH63XX_ADDR_BOOT_ROM ((char *) FLASH_BASE)
26 // nvram and psi flash definitions for 45
27 #define FLASH45_BLKS_BOOT_ROM 3
28 #define FLASH45_LENGTH_BOOT_ROM (FLASH45_BLKS_BOOT_ROM * BLK64K)
31 #define FLASH45_IMAGE_START_ADDR (FLASH_BASE + FLASH45_LENGTH_BOOT_ROM)
34 // nvram and psi flash definitions for 5x
35 #define FLASH5X_BLKS_BOOT_ROM 2
36 #define FLASH5X_LENGTH_BOOT_ROM (FLASH5X_BLKS_BOOT_ROM * BLK128K)
39 /*****************************************************************************/
40 /* NVRAM definition */
41 /*****************************************************************************/
42 #define NVRAM_LENGTH ONEK // 1k nvram
43 #define NVRAM_VERSION_NUMBER 1
44 #define NVRAM_VERSION_NUMBER_ADDRESS 0
46 #define NVRAM_BOOTLINE_LEN 256
47 #define NVRAM_BOARD_ID_STRING_LEN 16
48 #define NVRAM_MAC_ADDRESS_LEN 6
49 #define NVRAM_MAC_COUNT_MAX 32
51 #define NVRAM_PSI_MIN_SIZE 1 // min 1k
52 #define NVRAM_PSI_MAX_SIZE 128 // max 128k
53 #define NVRAM_PSI_DEFAULT_6345 15 // default 15k for 6345
54 #define NVRAM_PSI_DEFAULT_635X 127 // default 127k for 635X
55 #define NVRAM_MAC_COUNT_DEFAULT_6345 3
56 #define NVRAM_MAC_COUNT_DEFAULT_635X 5
60 unsigned long ulVersion
;
61 char szBootline
[NVRAM_BOOTLINE_LEN
];
62 char szBoardId
[NVRAM_BOARD_ID_STRING_LEN
];
63 unsigned long ulPsiSize
;
64 unsigned long ulEnetModeFlag
;
65 unsigned long ulNumMacAddrs
;
66 unsigned char ucaBaseMacAddr
[NVRAM_MAC_ADDRESS_LEN
];
68 unsigned long ulCheckSum
;
69 } NVRAM_DATA
, *PNVRAM_DATA
;
72 typedef struct flashaddrinfo
74 int flash_persistent_start_blk
;
75 int flash_persistent_number_blk
;
76 int flash_persistent_length
;
77 unsigned long flash_persistent_blk_offset
;
79 int flash_nvram_start_blk
;
80 int flash_nvram_number_blk
;
81 int flash_nvram_length
;
82 unsigned long flash_nvram_blk_offset
;
83 } FLASH_ADDR_INFO
, *PFLASH_ADDR_INFO
;
85 void kerSysFlashInit(void);
86 void kerSysFlashAddrInfoGet(PFLASH_ADDR_INFO pflash_addr_info
);
87 int kerSysNvRamSet(char *string
,int strLen
,int offset
);
88 int kerSysNvRamGet(char *string
,int strLen
,int offset
);
89 int kerSysBcmImageSet( int flash_start_addr
, char *string
, int size
, int fWholeImage
);
90 void kerSysMipsSoftReset(void);
91 int kerSysErasePsi(void);
92 int kerSysEraseNvRam(void);
93 int kerSysPsiSet(char *string
,int strLen
,int offset
);
94 int kerSysPsiGet(char *string
,int strLen
,int offset
);
95 int kerSysMemoryTypeSet(int flash_start_addr
, char *string
, int size
);
96 int kerSysMemoryTypeGet(void);
97 void dumpHex(unsigned char *start
, int len
);
101 extern BYTE
flash_reset(void);
102 extern int flash_get_numsectors(void);
103 extern BYTE
flash_sector_erase_int(BYTE sector
);
104 extern unsigned char *flash_get_memptr(byte sector
);
105 extern int flash_get_blk(int addr
);
108 #endif /* _DEV_BCM63XX_FLASH_ */