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 {
BYTE abyPAR[6]; // 0x00 (WORD)
WORD wSUB_VID; // 0x03 (WORD)
WORD wSUB_SID;
BYTE byBCFG0; // 0x05 (WORD)
BYTE byBCFG1;
BYTE byFCR0; // 0x06 (WORD)
BYTE byFCR1;
BYTE byPMC0; // 0x07 (WORD)
BYTE byPMC1;
BYTE byMAXLAT; // 0x08 (WORD)
BYTE byMINGNT;
BYTE byCFG0; // 0x09 (WORD)
BYTE byCFG1;
WORD wCISPTR; // 0x0A (WORD)
WORD wRsv0; // 0x0B (WORD)
WORD wRsv1; // 0x0C (WORD)
BYTE byBBPAIR; // 0x0D (WORD)
BYTE byRFTYPE;
BYTE byMinChannel; // 0x0E (WORD)
BYTE byMaxChannel;
BYTE bySignature; // 0x0F (WORD)
BYTE byCheckSum;
BYTE abyReserved0[96]; // 0x10 (WORD)
BYTE abyCIS[128]; // 0x80 (WORD)
} SSromReg, *PSSromReg;
/*--------------------- Export Macros ------------------------------*/
/*--------------------- Export Classes ----------------------------*/
/*--------------------- Export Variables --------------------------*/
/*--------------------- Export Functions --------------------------*/
BYTE SROMbyReadEmbedded(DWORD_PTR dwIoBase, BYTE byContntOffset);
BOOL SROMbWriteEmbedded(DWORD_PTR dwIoBase, BYTE byContntOffset, BYTE byData);
void SROMvRegBitsOn(DWORD_PTR dwIoBase, BYTE byContntOffset, BYTE byBits);
void SROMvRegBitsOff(DWORD_PTR dwIoBase, BYTE byContntOffset, BYTE byBits);
BOOL SROMbIsRegBitsOn(DWORD_PTR dwIoBase, BYTE byContntOffset, BYTE byTestBits);
BOOL SROMbIsRegBitsOff(DWORD_PTR dwIoBase, BYTE byContntOffset, BYTE byTestBits);
void SROMvReadAllContents(DWORD_PTR dwIoBase, PBYTE pbyEepromRegs);
void SROMvWriteAllContents(DWORD_PTR dwIoBase, PBYTE pbyEepromRegs);
void SROMvReadEtherAddress(DWORD_PTR dwIoBase, PBYTE pbyEtherAddress);
void SROMvWriteEtherAddress(DWORD_PTR dwIoBase, PBYTE pbyEtherAddress);
void SROMvReadSubSysVenId(DWORD_PTR dwIoBase, PDWORD pdwSubSysVenId);
BOOL SROMbAutoLoad (DWORD_PTR dwIoBase);
#endif // __EEPROM_H__
|