1b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/******************************************************************************
2b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
3b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
5b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * This program is free software; you can redistribute it and/or modify it
6b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * under the terms of version 2 of the GNU General Public License as
7b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * published by the Free Software Foundation.
8b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
9b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT
10b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * more details.
13b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
14b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * You should have received a copy of the GNU General Public License along with
15b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * this program; if not, write to the Free Software Foundation, Inc.,
16b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
18b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger *
19b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger ******************************************************************************/
20b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#ifndef __HAL_VERSION_DEF_H__
21b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define __HAL_VERSION_DEF_H__
22b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
23b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerenum HAL_IC_TYPE {
24b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8192S	=	0,
25b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8188C	=	1,
26b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8192C	=	2,
27b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8192D	=	3,
28b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8723A	=	4,
29b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8188E	=	5,
30b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8881A	=	6,
31b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8812A	=	7,
32b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8821A	=	8,
33b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8723B	=	9,
34b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_8192E	=	10,
35b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
36b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
37b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerenum HAL_CHIP_TYPE {
38b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	TEST_CHIP	=	0,
39b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	NORMAL_CHIP	=	1,
40b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	FPGA		=	2,
41b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
42b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
43b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerenum HAL_CUT_VERSION {
44b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	A_CUT_VERSION	=	0,
45b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	B_CUT_VERSION	=	1,
46b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	C_CUT_VERSION	=	2,
47b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	D_CUT_VERSION	=	3,
48b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	E_CUT_VERSION	=	4,
49b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	F_CUT_VERSION	=	5,
50b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	G_CUT_VERSION	=	6,
51b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
52b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
53b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerenum HAL_VENDOR {
54b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_VENDOR_TSMC	=	0,
55b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	CHIP_VENDOR_UMC		=	1,
56b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
57b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
58b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerenum HAL_RF_TYPE {
59b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_1T1R	=	0,
60b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_1T2R	=	1,
61b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_2T2R	=	2,
62b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_2T3R	=	3,
63b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_2T4R	=	4,
64b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_3T3R	=	5,
65b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_3T4R	=	6,
66b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	RF_TYPE_4T4R	=	7,
67b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
68b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
69b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Fingerstruct HAL_VERSION {
70b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	enum HAL_IC_TYPE	ICType;
71b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	enum HAL_CHIP_TYPE	ChipType;
72b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	enum HAL_CUT_VERSION	CUTVersion;
73b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	enum HAL_VENDOR		VendorType;
74b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	enum HAL_RF_TYPE	RFType;
75b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	u8			ROMVer;
76b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger};
77b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
78b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/*  Get element */
79b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_IC_TYPE(version)	(((version).ICType))
80b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_CHIP_TYPE(version)	(((version).ChipType))
81b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_RF_TYPE(version)	(((version).RFType))
82b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_MANUFACTUER(version)	(((version).VendorType))
83b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_CUT_VERSION(version)	(((version).CUTVersion))
84b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define GET_CVID_ROM_VERSION(version)	(((version).ROMVer) & ROM_VERSION_MASK)
85b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
86b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* Common Macro. -- */
87b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* HAL_VERSION VersionID */
88b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
89b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/*  HAL_IC_TYPE_E */
90b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_81XXC(version)				\
91b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(((GET_CVID_IC_TYPE(version) == CHIP_8192C) ||	\
92b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	 (GET_CVID_IC_TYPE(version) == CHIP_8188C)) ? true : false)
93b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_8723_SERIES(version)				\
94b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_IC_TYPE(version) == CHIP_8723A) ? true : false)
95b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92D(version)					\
96b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_IC_TYPE(version) == CHIP_8192D) ? true : false)
97b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_8188E(version)				\
98b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_IC_TYPE(version) == CHIP_8188E) ? true : false)
99b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
100b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* HAL_CHIP_TYPE_E */
101b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_TEST_CHIP(version)				\
102b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CHIP_TYPE(version) == TEST_CHIP) ? true : false)
103b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_NORMAL_CHIP(version)				\
104b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CHIP_TYPE(version) == NORMAL_CHIP) ? true : false)
105b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
106b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* HAL_CUT_VERSION_E */
107b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_A_CUT(version)				\
108b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CUT_VERSION(version) == A_CUT_VERSION) ? true : false)
109b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_B_CUT(version)				\
110b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CUT_VERSION(version) == B_CUT_VERSION) ? true : false)
111b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_C_CUT(version)				\
112b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CUT_VERSION(version) == C_CUT_VERSION) ? true : false)
113b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_D_CUT(version)				\
114b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CUT_VERSION(version) == D_CUT_VERSION) ? true : false)
115b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_E_CUT(version)				\
116b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CUT_VERSION(version) == E_CUT_VERSION) ? true : false)
117b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
118b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
119b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* HAL_VENDOR_E */
120b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_CHIP_VENDOR_TSMC(version)			\
121b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_TSMC) ? true : false)
122b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_CHIP_VENDOR_UMC(version)			\
123b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_UMC) ? true : false)
124b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
125b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* HAL_RF_TYPE_E */
126b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_1T1R(version)				\
127b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_RF_TYPE(version) == RF_TYPE_1T1R) ? true : false)
128b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_1T2R(version)				\
129b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R) ? true : false)
130b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_2T2R(version)				\
131b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R) ? true : false)
132b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
133b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger/* Chip version Macro. -- */
134b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_81XXC_TEST_CHIP(version)			\
135b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_81XXC(version) && (!IS_NORMAL_CHIP(version))) ? true : false)
136b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
137b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92C_SERIAL(version)				\
138b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_81XXC(version) && IS_2T2R(version)) ? true : false)
139b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_81xxC_VENDOR_UMC_A_CUT(version)		\
140b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(IS_81XXC(version) ? (IS_CHIP_VENDOR_UMC(version) ?	\
141b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(IS_A_CUT(version) ? true : false) : false) : false)
142b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_81xxC_VENDOR_UMC_B_CUT(version)		\
143b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(IS_81XXC(version) ? (IS_CHIP_VENDOR_UMC(version) ?	\
144b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(IS_B_CUT(version) ? true : false) : false) : false)
145b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_81xxC_VENDOR_UMC_C_CUT(version)		\
146b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	(IS_81XXC(version) ? (IS_CHIP_VENDOR_UMC(version) ? \
147b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	 (IS_C_CUT(version) ? true : false) : false) : false)
148b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
149b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_NORMAL_CHIP92D(version)			\
150b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_92D(version)) ?				\
151b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((GET_CVID_CHIP_TYPE(version) == NORMAL_CHIP) ? true : false) : false)
152b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
153b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92D_SINGLEPHY(version)			\
154b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_92D(version)) ? (IS_2T2R(version) ? true : false) : false)
155b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92D_C_CUT(version)				\
156b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_92D(version)) ? (IS_C_CUT(version) ? true : false) : false)
157b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92D_D_CUT(version)				\
158b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_92D(version)) ? (IS_D_CUT(version) ? true : false) : false)
159b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_92D_E_CUT(version)				\
160b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_92D(version)) ? (IS_E_CUT(version) ? true : false) : false)
161b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
162b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_8723A_A_CUT(version)				\
163b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_8723_SERIES(version)) ? (IS_A_CUT(version) ? true : false) : false)
164b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#define IS_8723A_B_CUT(version)				\
165b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger	((IS_8723_SERIES(version)) ? (IS_B_CUT(version) ? true : false) : false)
166b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger
167b1da99bbf28fb4f7e5cdcaec4e723e0913f222ffLarry Finger#endif
168