1/******************************************************************************
2 *
3 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17 *
18 *
19 ******************************************************************************/
20#ifndef __RTL871X_EEPROM_H__
21#define __RTL871X_EEPROM_H__
22
23#include "osdep_service.h"
24
25#define	RTL8712_EEPROM_ID		0x8712
26#define	EEPROM_MAX_SIZE			256
27#define	CLOCK_RATE			50	/*100us*/
28
29/*- EEPROM opcodes*/
30#define EEPROM_READ_OPCODE		06
31#define EEPROM_WRITE_OPCODE		05
32#define EEPROM_ERASE_OPCODE		07
33#define EEPROM_EWEN_OPCODE		19      /* Erase/write enable*/
34#define EEPROM_EWDS_OPCODE		16      /* Erase/write disable*/
35
36#define	EEPROM_CID_DEFAULT		0x0
37#define	EEPROM_CID_ALPHA		0x1
38#define	EEPROM_CID_Senao		0x3
39#define	EEPROM_CID_NetCore		0x5
40#define	EEPROM_CID_CAMEO		0X8
41#define	EEPROM_CID_SITECOM		0x9
42#define	EEPROM_CID_COREGA		0xB
43#define	EEPROM_CID_EDIMAX_BELKIN	0xC
44#define	EEPROM_CID_SERCOMM_BELKIN	0xE
45#define	EEPROM_CID_CAMEO1		0xF
46#define	EEPROM_CID_WNC_COREGA		0x12
47#define	EEPROM_CID_CLEVO		0x13
48#define	EEPROM_CID_WHQL			0xFE
49
50enum RT_CUSTOMER_ID {
51	RT_CID_DEFAULT = 0,
52	RT_CID_8187_ALPHA0 = 1,
53	RT_CID_8187_SERCOMM_PS = 2,
54	RT_CID_8187_HW_LED = 3,
55	RT_CID_8187_NETGEAR = 4,
56	RT_CID_WHQL = 5,
57	RT_CID_819x_CAMEO  = 6,
58	RT_CID_819x_RUNTOP = 7,
59	RT_CID_819x_Senao = 8,
60	RT_CID_TOSHIBA = 9,
61	RT_CID_819x_Netcore = 10,
62	RT_CID_Nettronix = 11,
63	RT_CID_DLINK = 12,
64	RT_CID_PRONET = 13,
65	RT_CID_COREGA = 14,
66	RT_CID_819x_ALPHA = 15,
67	RT_CID_819x_Sitecom = 16,
68	RT_CID_CCX = 17,
69	RT_CID_819x_Lenovo = 18,
70	RT_CID_819x_QMI = 19,
71	RT_CID_819x_Edimax_Belkin = 20,
72	RT_CID_819x_Sercomm_Belkin = 21,
73	RT_CID_819x_CAMEO1 = 22,
74	RT_CID_819x_MSI = 23,
75	RT_CID_819x_Acer = 24,
76	RT_CID_819x_AzWave_ASUS = 25,
77	RT_CID_819x_AzWave = 26,
78	RT_CID_819x_WNC_COREGA = 27,
79	RT_CID_819x_CLEVO = 28,
80};
81
82struct eeprom_priv {
83	u8 bautoload_fail_flag;
84	u8 bempty;
85	u8 sys_config;
86	u8 mac_addr[6];
87	u8 config0;
88	u16 channel_plan;
89	u8 country_string[3];
90	u8 tx_power_b[15];
91	u8 tx_power_g[15];
92	u8 tx_power_a[201];
93	u8 efuse_eeprom_data[EEPROM_MAX_SIZE];
94	enum RT_CUSTOMER_ID CustomerID;
95};
96
97void r8712_eeprom_write16(struct _adapter *padapter, u16 reg, u16 data);
98u16 r8712_eeprom_read16(struct _adapter *padapter, u16 reg);
99
100#endif  /*__RTL871X_EEPROM_H__*/
101
102