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
|
/*
* Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
* All rights reserved.
*
* 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 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.
*
*
* File: srom.h
*
* Purpose: Implement functions to access eeprom
*
* Author: Jerry Chen
*
* Date: Jan 29, 2003
*
*/
#ifndef __SROM_H__
#define __SROM_H__
#include "ttype.h"
/*--------------------- Export Definitions -------------------------*/
#define EEP_MAX_CONTEXT_SIZE 256
#define CB_EEPROM_READBYTE_WAIT 900 //us
#define W_MAX_I2CRETRY 0x0fff
//
// Contents in the EEPROM
//
#define EEP_OFS_PAR 0x00 // physical address
#define EEP_OFS_ANTENNA 0x16
#define EEP_OFS_RADIOCTL 0x17
#define EEP_OFS_RFTYPE 0x1B // for select RF
#define EEP_OFS_MINCHANNEL 0x1C // Min Channel #
#define EEP_OFS_MAXCHANNEL 0x1D // Max Channel #
#define EEP_OFS_SIGNATURE 0x1E //
#define EEP_OFS_ZONETYPE 0x1F //
#define EEP_OFS_RFTABLE 0x20 // RF POWER TABLE
#define EEP_OFS_PWR_CCK 0x20
#define EEP_OFS_SETPT_CCK 0x21
#define EEP_OFS_PWR_OFDMG 0x23
#define EEP_OFS_SETPT_OFDMG 0x24
#define EEP_OFS_PWR_FORMULA_OST 0x26 //
#define EEP_OFS_MAJOR_VER 0x2E
#define EEP_OFS_MINOR_VER 0x2F
#define EEP_OFS_CCK_PWR_TBL 0x30
#define EEP_OFS_CCK_PWR_dBm 0x3F
#define EEP_OFS_OFDM_PWR_TBL 0x40
#define EEP_OFS_OFDM_PWR_dBm 0x4F
//{{ RobertYu: 20041124
#define EEP_OFS_SETPT_OFDMA 0x4E
#define EEP_OFS_OFDMA_PWR_TBL 0x50
//}}
#define EEP_OFS_OFDMA_PWR_dBm 0xD2
//----------need to remove --------------------
#define EEP_OFS_BBTAB_LEN 0x70 // BB Table Length
#define EEP_OFS_BBTAB_ADR 0x71 // BB Table Offset
#define EEP_OFS_CHECKSUM 0xFF // reserved area for baseband 28h ~ 78h
#define EEP_I2C_DEV_ID 0x50 // EEPROM device address on the I2C bus
//
// Bits in EEP_OFS_ANTENNA
//
#define EEP_ANTENNA_MAIN 0x01
#define EEP_ANTENNA_AUX 0x02
#define EEP_ANTINV 0x04
//
// Bits in EEP_OFS_RADIOCTL
//
#define EEP_RADIOCTL_ENABLE 0x80
#define EEP_RADIOCTL_INV 0x01
/*--------------------- Export Types ------------------------------*/
// AT24C02 eeprom contents
// 2048 bits = 256 bytes = 128 words
//
typedef struct tagSSromReg {
unsigned char abyPAR[6]; // 0x00 (unsigned short)
unsigned short wSUB_VID; // 0x03 (unsigned short)
unsigned short wSUB_SID;
unsigned char byBCFG0; // 0x05 (unsigned short)
unsigned char byBCFG1;
unsigned char byFCR0; // 0x06 (unsigned short)
unsigned char byFCR1;
unsigned char byPMC0; // 0x07 (unsigned short)
unsigned char byPMC1;
unsigned char byMAXLAT; // 0x08 (unsigned short)
unsigned char byMINGNT;
unsigned char byCFG0; // 0x09 (unsigned short)
unsigned char byCFG1;
unsigned short wCISPTR; // 0x0A (unsigned short)
unsigned short wRsv0; // 0x0B (unsigned short)
unsigned short wRsv1; // 0x0C (unsigned short)
unsigned char byBBPAIR; // 0x0D (unsigned short)
unsigned char byRFTYPE;
unsigned char byMinChannel; // 0x0E (unsigned short)
unsigned char byMaxChannel;
unsigned char bySignature; // 0x0F (unsigned short)
unsigned char byCheckSum;
unsigned char abyReserved0[96]; // 0x10 (unsigned short)
unsigned char abyCIS[128]; // 0x80 (unsigned short)
} SSromReg, *PSSromReg;
/*--------------------- Export Macros ------------------------------*/
/*--------------------- Export Classes ----------------------------*/
/*--------------------- Export Variables --------------------------*/
/*--------------------- Export Functions --------------------------*/
unsigned char SROMbyReadEmbedded(unsigned long dwIoBase, unsigned char byContntOffset);
bool SROMbWriteEmbedded(unsigned long dwIoBase, unsigned char byContntOffset, unsigned char byData);
void SROMvRegBitsOn(unsigned long dwIoBase, unsigned char byContntOffset, unsigned char byBits);
void SROMvRegBitsOff(unsigned long dwIoBase, unsigned char byContntOffset, unsigned char byBits);
bool SROMbIsRegBitsOn(unsigned long dwIoBase, unsigned char byContntOffset, unsigned char byTestBits);
bool SROMbIsRegBitsOff(unsigned long dwIoBase, unsigned char byContntOffset, unsigned char byTestBits);
void SROMvReadAllContents(unsigned long dwIoBase, unsigned char *pbyEepromRegs);
void SROMvWriteAllContents(unsigned long dwIoBase, unsigned char *pbyEepromRegs);
void SROMvReadEtherAddress(unsigned long dwIoBase, unsigned char *pbyEtherAddress);
void SROMvWriteEtherAddress(unsigned long dwIoBase, unsigned char *pbyEtherAddress);
void SROMvReadSubSysVenId(unsigned long dwIoBase, unsigned long *pdwSubSysVenId);
bool SROMbAutoLoad (unsigned long dwIoBase);
#endif // __EEPROM_H__
|