Linux-libre 4.15.7-gnu
[librecmc/linux-libre.git] / drivers / staging / rtlwifi / halmac / halmac_88xx / halmac_8822b / halmac_8822b_phy.c
1 /******************************************************************************
2  *
3  * Copyright(c) 2016  Realtek Corporation.
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  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  *
22  * Larry Finger <Larry.Finger@lwfinger.net>
23  *
24  *****************************************************************************/
25 #include "../halmac_88xx_cfg.h"
26 #include "halmac_8822b_cfg.h"
27
28 /**
29  * ============ip sel item list============
30  * HALMAC_IP_SEL_INTF_PHY
31  *      USB2 : usb2 phy, 1byte value
32  *      USB3 : usb3 phy, 2byte value
33  *      PCIE1 : pcie gen1 mdio, 2byte value
34  *      PCIE2 : pcie gen2 mdio, 2byte value
35  * HALMAC_IP_SEL_MAC
36  *      USB2, USB3, PCIE1, PCIE2 : mac ip, 1byte value
37  * HALMAC_IP_SEL_PCIE_DBI
38  *      USB2 USB3 : none
39  *      PCIE1, PCIE2 : pcie dbi, 1byte value
40  */
41
42 struct halmac_intf_phy_para_ HALMAC_RTL8822B_USB2_PHY[] = {
43         /* {offset, value, ip sel, cut mask, platform mask} */
44         {0xFFFF, 0x00, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_ALL,
45          HALMAC_INTF_PHY_PLATFORM_ALL},
46 };
47
48 struct halmac_intf_phy_para_ HALMAC_RTL8822B_USB3_PHY[] = {
49         /* {offset, value, ip sel, cut mask, platform mask} */
50         {0x0001, 0xA841, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_D,
51          HALMAC_INTF_PHY_PLATFORM_ALL},
52         {0xFFFF, 0x0000, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_ALL,
53          HALMAC_INTF_PHY_PLATFORM_ALL},
54 };
55
56 struct halmac_intf_phy_para_ HALMAC_RTL8822B_PCIE_PHY_GEN1[] = {
57         /* {offset, value, ip sel, cut mask, platform mask} */
58         {0x0001, 0xA841, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
59          HALMAC_INTF_PHY_PLATFORM_ALL},
60         {0x0002, 0x60C6, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
61          HALMAC_INTF_PHY_PLATFORM_ALL},
62         {0x0008, 0x3596, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
63          HALMAC_INTF_PHY_PLATFORM_ALL},
64         {0x0009, 0x321C, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
65          HALMAC_INTF_PHY_PLATFORM_ALL},
66         {0x000A, 0x9623, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
67          HALMAC_INTF_PHY_PLATFORM_ALL},
68         {0x0020, 0x94FF, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
69          HALMAC_INTF_PHY_PLATFORM_ALL},
70         {0x0021, 0xFFCF, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
71          HALMAC_INTF_PHY_PLATFORM_ALL},
72         {0x0026, 0xC006, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
73          HALMAC_INTF_PHY_PLATFORM_ALL},
74         {0x0029, 0xFF0E, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
75          HALMAC_INTF_PHY_PLATFORM_ALL},
76         {0x002A, 0x1840, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
77          HALMAC_INTF_PHY_PLATFORM_ALL},
78         {0xFFFF, 0x0000, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_ALL,
79          HALMAC_INTF_PHY_PLATFORM_ALL},
80 };
81
82 struct halmac_intf_phy_para_ HALMAC_RTL8822B_PCIE_PHY_GEN2[] = {
83         /* {offset, value, ip sel, cut mask, platform mask} */
84         {0x0001, 0xA841, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
85          HALMAC_INTF_PHY_PLATFORM_ALL},
86         {0x0002, 0x60C6, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
87          HALMAC_INTF_PHY_PLATFORM_ALL},
88         {0x0008, 0x3597, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
89          HALMAC_INTF_PHY_PLATFORM_ALL},
90         {0x0009, 0x321C, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
91          HALMAC_INTF_PHY_PLATFORM_ALL},
92         {0x000A, 0x9623, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
93          HALMAC_INTF_PHY_PLATFORM_ALL},
94         {0x0020, 0x94FF, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
95          HALMAC_INTF_PHY_PLATFORM_ALL},
96         {0x0021, 0xFFCF, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
97          HALMAC_INTF_PHY_PLATFORM_ALL},
98         {0x0026, 0xC006, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
99          HALMAC_INTF_PHY_PLATFORM_ALL},
100         {0x0029, 0xFF0E, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
101          HALMAC_INTF_PHY_PLATFORM_ALL},
102         {0x002A, 0x3040, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_C,
103          HALMAC_INTF_PHY_PLATFORM_ALL},
104         {0xFFFF, 0x0000, HALMAC_IP_SEL_INTF_PHY, HALMAC_INTF_PHY_CUT_ALL,
105          HALMAC_INTF_PHY_PLATFORM_ALL},
106 };