aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/vt6655/srom.h
blob: 1df58c516ddc94a9f6ad1bd7ff000fe76e8243ec (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
/*
 * 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__