net: wireless: rockchip_wlan: add rtl8723bs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / include / drv_types_pci.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \r
5  * This program is free software; you can redistribute it and/or modify it\r
6  * under the terms of version 2 of the GNU General Public License as\r
7  * published by the Free Software Foundation.\r
8  *\r
9  * This program is distributed in the hope that it will be useful, but WITHOUT\r
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
12  * more details.\r
13  *\r
14  * You should have received a copy of the GNU General Public License along with\r
15  * this program; if not, write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
17  *\r
18  *\r
19  ******************************************************************************/\r
20 #ifndef __DRV_TYPES_PCI_H__\r
21 #define __DRV_TYPES_PCI_H__\r
22 \r
23 \r
24 #ifdef PLATFORM_LINUX\r
25 #include <linux/pci.h>\r
26 #endif\r
27 \r
28 \r
29 #define INTEL_VENDOR_ID                         0x8086\r
30 #define SIS_VENDOR_ID                                   0x1039\r
31 #define ATI_VENDOR_ID                                   0x1002\r
32 #define ATI_DEVICE_ID                                   0x7914\r
33 #define AMD_VENDOR_ID                                   0x1022\r
34 \r
35 #define PCI_MAX_BRIDGE_NUMBER                   255\r
36 #define PCI_MAX_DEVICES                         32\r
37 #define PCI_MAX_FUNCTION                                8\r
38 \r
39 #define PCI_CONF_ADDRESS                                0x0CF8   // PCI Configuration Space Address \r
40 #define PCI_CONF_DATA                                   0x0CFC   // PCI Configuration Space Data \r
41 \r
42 #define PCI_CLASS_BRIDGE_DEV                    0x06\r
43 #define PCI_SUBCLASS_BR_PCI_TO_PCI      0x04\r
44 \r
45 #define         PCI_CAPABILITY_ID_PCI_EXPRESS   0x10\r
46 \r
47 #define U1DONTCARE                                      0xFF    \r
48 #define U2DONTCARE                                      0xFFFF  \r
49 #define U4DONTCARE                                      0xFFFFFFFF\r
50 \r
51 #define PCI_VENDER_ID_REALTEK           0x10ec\r
52 \r
53 #define HAL_HW_PCI_8180_DEVICE_ID               0x8180\r
54 #define HAL_HW_PCI_8185_DEVICE_ID               0x8185  //8185 or 8185b\r
55 #define HAL_HW_PCI_8188_DEVICE_ID               0x8188  //8185b         \r
56 #define HAL_HW_PCI_8198_DEVICE_ID               0x8198  //8185b         \r
57 #define HAL_HW_PCI_8190_DEVICE_ID               0x8190  //8190\r
58 #define HAL_HW_PCI_8723E_DEVICE_ID              0x8723  //8723E\r
59 #define HAL_HW_PCI_8192_DEVICE_ID               0x8192  //8192 PCI-E\r
60 #define HAL_HW_PCI_8192SE_DEVICE_ID             0x8192  //8192 SE\r
61 #define HAL_HW_PCI_8174_DEVICE_ID               0x8174  //8192 SE \r
62 #define HAL_HW_PCI_8173_DEVICE_ID               0x8173  //8191 SE Crab\r
63 #define HAL_HW_PCI_8172_DEVICE_ID               0x8172  //8191 SE RE\r
64 #define HAL_HW_PCI_8171_DEVICE_ID               0x8171  //8191 SE Unicron\r
65 #define HAL_HW_PCI_0045_DEVICE_ID                       0x0045  //8190 PCI for Ceraga\r
66 #define HAL_HW_PCI_0046_DEVICE_ID                       0x0046  //8190 Cardbus for Ceraga\r
67 #define HAL_HW_PCI_0044_DEVICE_ID                       0x0044  //8192e PCIE for Ceraga\r
68 #define HAL_HW_PCI_0047_DEVICE_ID                       0x0047  //8192e Express Card for Ceraga\r
69 #define HAL_HW_PCI_700F_DEVICE_ID                       0x700F\r
70 #define HAL_HW_PCI_701F_DEVICE_ID                       0x701F\r
71 #define HAL_HW_PCI_DLINK_DEVICE_ID              0x3304\r
72 #define HAL_HW_PCI_8188EE_DEVICE_ID             0x8179\r
73 \r
74 #define HAL_MEMORY_MAPPED_IO_RANGE_8190PCI              0x1000     //8190 support 16 pages of IO registers\r
75 #define HAL_HW_PCI_REVISION_ID_8190PCI                  0x00\r
76 #define HAL_MEMORY_MAPPED_IO_RANGE_8192PCIE     0x4000  //8192 support 16 pages of IO registers\r
77 #define HAL_HW_PCI_REVISION_ID_8192PCIE                 0x01\r
78 #define HAL_MEMORY_MAPPED_IO_RANGE_8192SE               0x4000  //8192 support 16 pages of IO registers\r
79 #define HAL_HW_PCI_REVISION_ID_8192SE                   0x10\r
80 #define HAL_HW_PCI_REVISION_ID_8192CE                   0x1\r
81 #define HAL_MEMORY_MAPPED_IO_RANGE_8192CE               0x4000  //8192 support 16 pages of IO registers\r
82 #define HAL_HW_PCI_REVISION_ID_8192DE                   0x0\r
83 #define HAL_MEMORY_MAPPED_IO_RANGE_8192DE               0x4000  //8192 support 16 pages of IO registers\r
84 \r
85 enum pci_bridge_vendor {\r
86         PCI_BRIDGE_VENDOR_INTEL = 0x0,//0b'0000,0001\r
87         PCI_BRIDGE_VENDOR_ATI, //= 0x02,//0b'0000,0010\r
88         PCI_BRIDGE_VENDOR_AMD, //= 0x04,//0b'0000,0100\r
89         PCI_BRIDGE_VENDOR_SIS ,//= 0x08,//0b'0000,1000\r
90         PCI_BRIDGE_VENDOR_UNKNOWN, //= 0x40,//0b'0100,0000\r
91         PCI_BRIDGE_VENDOR_MAX ,//= 0x80\r
92 } ;\r
93 \r
94 // copy this data structor defination from MSDN SDK\r
95 typedef struct _PCI_COMMON_CONFIG {\r
96         u16     VendorID;\r
97         u16     DeviceID;\r
98         u16     Command;\r
99         u16     Status;\r
100         u8      RevisionID;\r
101         u8      ProgIf;\r
102         u8      SubClass;\r
103         u8      BaseClass;\r
104         u8      CacheLineSize;\r
105         u8      LatencyTimer;\r
106         u8      HeaderType;\r
107         u8      BIST;\r
108 \r
109         union {\r
110         struct _PCI_HEADER_TYPE_0 {\r
111                 u32     BaseAddresses[6];\r
112                 u32     CIS;\r
113                 u16     SubVendorID;\r
114                 u16     SubSystemID;\r
115                 u32     ROMBaseAddress;\r
116                 u8      CapabilitiesPtr;\r
117                 u8      Reserved1[3];\r
118                 u32     Reserved2;\r
119 \r
120                 u8      InterruptLine;\r
121                 u8      InterruptPin;\r
122                 u8      MinimumGrant;\r
123                 u8      MaximumLatency;\r
124         } type0;\r
125 #if 0\r
126         struct _PCI_HEADER_TYPE_1 {\r
127                 ULONG BaseAddresses[PCI_TYPE1_ADDRESSES];\r
128                 UCHAR PrimaryBusNumber;\r
129                 UCHAR SecondaryBusNumber;\r
130                 UCHAR SubordinateBusNumber;\r
131                 UCHAR SecondaryLatencyTimer;\r
132                 UCHAR IOBase;\r
133                 UCHAR IOLimit;\r
134                 USHORT SecondaryStatus;\r
135                 USHORT MemoryBase;\r
136                 USHORT MemoryLimit;\r
137                 USHORT PrefetchableMemoryBase;\r
138                 USHORT PrefetchableMemoryLimit;\r
139                 ULONG PrefetchableMemoryBaseUpper32;\r
140                 ULONG PrefetchableMemoryLimitUpper32;\r
141                 USHORT IOBaseUpper;\r
142                 USHORT IOLimitUpper;\r
143                 ULONG Reserved2;\r
144                 ULONG ExpansionROMBase;\r
145                 UCHAR InterruptLine;\r
146                 UCHAR InterruptPin;\r
147                 USHORT BridgeControl;\r
148         } type1;\r
149 \r
150         struct _PCI_HEADER_TYPE_2 {\r
151                 ULONG BaseAddress;\r
152                 UCHAR CapabilitiesPtr;\r
153                 UCHAR Reserved2;\r
154                 USHORT SecondaryStatus;\r
155                 UCHAR PrimaryBusNumber;\r
156                 UCHAR CardbusBusNumber;\r
157                 UCHAR SubordinateBusNumber;\r
158                 UCHAR CardbusLatencyTimer;\r
159                 ULONG MemoryBase0;\r
160                 ULONG MemoryLimit0;\r
161                 ULONG MemoryBase1;\r
162                 ULONG MemoryLimit1;\r
163                 USHORT IOBase0_LO;\r
164                 USHORT IOBase0_HI;\r
165                 USHORT IOLimit0_LO;\r
166                 USHORT IOLimit0_HI;\r
167                 USHORT IOBase1_LO;\r
168                 USHORT IOBase1_HI;\r
169                 USHORT IOLimit1_LO;\r
170                 USHORT IOLimit1_HI;\r
171                 UCHAR InterruptLine;\r
172                 UCHAR InterruptPin;\r
173                 USHORT BridgeControl;\r
174                 USHORT SubVendorID;\r
175                 USHORT SubSystemID;\r
176                 ULONG LegacyBaseAddress;\r
177                 UCHAR Reserved3[56];\r
178                 ULONG SystemControl;\r
179                 UCHAR MultiMediaControl;\r
180                 UCHAR GeneralStatus;\r
181                 UCHAR Reserved4[2];\r
182                 UCHAR GPIO0Control;\r
183                 UCHAR GPIO1Control;\r
184                 UCHAR GPIO2Control;\r
185                 UCHAR GPIO3Control;\r
186                 ULONG IRQMuxRouting;\r
187                 UCHAR RetryStatus;\r
188                 UCHAR CardControl;\r
189                 UCHAR DeviceControl;\r
190                 UCHAR Diagnostic;\r
191         } type2;\r
192 #endif\r
193         } u;\r
194 \r
195         u8      DeviceSpecific[108];\r
196 } PCI_COMMON_CONFIG , *PPCI_COMMON_CONFIG;\r
197 \r
198 typedef struct _RT_PCI_CAPABILITIES_HEADER {\r
199     u8   CapabilityID;\r
200     u8   Next;\r
201 } RT_PCI_CAPABILITIES_HEADER, *PRT_PCI_CAPABILITIES_HEADER;\r
202 \r
203 struct pci_priv{\r
204         BOOLEAN         pci_clk_req;\r
205         \r
206         u8      pciehdr_offset;\r
207         //  PCIeCap is only differece between B-cut and C-cut.\r
208         //  Configuration Space offset 72[7:4] \r
209         //  0: A/B cut \r
210         //  1: C cut and later.\r
211         u8      pcie_cap;\r
212         u8      linkctrl_reg;\r
213         \r
214         u8      busnumber;\r
215         u8      devnumber;      \r
216         u8      funcnumber;     \r
217 \r
218         u8      pcibridge_busnum;\r
219         u8      pcibridge_devnum;\r
220         u8      pcibridge_funcnum;\r
221         u8      pcibridge_vendor;\r
222         u16     pcibridge_vendorid;\r
223         u16     pcibridge_deviceid;\r
224         u8      pcibridge_pciehdr_offset;\r
225         u8      pcibridge_linkctrlreg;  \r
226 \r
227         u8      amd_l1_patch;\r
228 };\r
229 \r
230 typedef struct _RT_ISR_CONTENT\r
231 {\r
232         union{\r
233                 u32                     IntArray[2];\r
234                 u32                     IntReg4Byte;\r
235                 u16                     IntReg2Byte;\r
236         };\r
237 }RT_ISR_CONTENT, *PRT_ISR_CONTENT;\r
238 \r
239 //#define RegAddr(addr)           (addr + 0xB2000000UL)\r
240 //some platform macros will def here\r
241 static inline void NdisRawWritePortUlong(u32 port,  u32 val)            \r
242 {\r
243         outl(val, port);\r
244         //writel(val, (u8 *)RegAddr(port));     \r
245 }\r
246 \r
247 static inline void NdisRawWritePortUchar(u32 port,  u8 val)\r
248 {\r
249         outb(val, port);\r
250         //writeb(val, (u8 *)RegAddr(port));\r
251 }\r
252 \r
253 static inline void NdisRawReadPortUchar(u32 port, u8 *pval)\r
254 {\r
255         *pval = inb(port);\r
256         //*pval = readb((u8 *)RegAddr(port));\r
257 }\r
258 \r
259 static inline void NdisRawReadPortUshort(u32 port, u16 *pval)\r
260 {\r
261         *pval = inw(port);\r
262         //*pval = readw((u8 *)RegAddr(port));\r
263 }\r
264 \r
265 static inline void NdisRawReadPortUlong(u32 port, u32 *pval)\r
266 {\r
267         *pval = inl(port);\r
268         //*pval = readl((u8 *)RegAddr(port));\r
269 }\r
270 \r
271 \r
272 #endif\r
273 \r