Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(c) 2024 Realtek Corporation. All rights reserved
3 : : */
4 : :
5 : : #include "../r8169_ethdev.h"
6 : : #include "../r8169_hw.h"
7 : : #include "../r8169_phy.h"
8 : : #include "rtl8125cp_mcu.h"
9 : :
10 : : /* For RTL8125CP, CFG_METHOD_58 */
11 : :
12 : : /* ------------------------------------MAC 8125CP------------------------------------- */
13 : :
14 : : void
15 : 0 : rtl_set_mac_mcu_8125cp_1(struct rtl_hw *hw)
16 : : {
17 : : u16 entry_cnt;
18 : : static const u16 mcu_patch_code[] = {
19 : : 0xE010, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xE01E, 0xE020, 0xE022,
20 : : 0xE024, 0xE026, 0xE028, 0xE02A, 0xE02C, 0xE02E, 0xE030, 0xC104, 0xC202,
21 : : 0xBA00, 0x2438, 0xD116, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
22 : : 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
23 : : 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
24 : : 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
25 : : 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
26 : : 0xC602, 0xBE00, 0x0000, 0x7023, 0x0019, 0x031A, 0x0E20
27 : : };
28 : :
29 : : entry_cnt = ARRAY_SIZE(mcu_patch_code);
30 : :
31 : : /* Get BIN mac mcu patch code version */
32 : 0 : hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
33 : : entry_cnt);
34 : :
35 [ # # ]: 0 : if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
36 : 0 : rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
37 : :
38 : 0 : rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
39 : 0 : rtl_mac_ocp_write(hw, 0xFC28, 0x2436);
40 : 0 : rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
41 : 0 : }
42 : :
43 : : /* ------------------------------------PHY 8125CP------------------------------------- */
44 : :
45 : : static const u16 phy_mcu_ram_code_8125cp_1_1[] = {
46 : : 0xa436, 0x8023, 0xa438, 0x2300, 0xa436, 0xB82E, 0xa438, 0x0001,
47 : : 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012,
48 : : 0xa438, 0x07f8, 0xa436, 0xA014, 0xa438, 0xcc01, 0xa438, 0x2166,
49 : : 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
50 : : 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x021c,
51 : : 0xa436, 0xA154, 0xa438, 0x2170, 0xa436, 0xA156, 0xa438, 0x3fff,
52 : : 0xa436, 0xA158, 0xa438, 0x3fff, 0xa436, 0xA15A, 0xa438, 0x3fff,
53 : : 0xa436, 0xA15C, 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff,
54 : : 0xa436, 0xA160, 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x0003,
55 : : 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000,
56 : : 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800,
57 : : 0xa438, 0x801b, 0xa438, 0x1800, 0xa438, 0x802b, 0xa438, 0x1800,
58 : : 0xa438, 0x8031, 0xa438, 0x1800, 0xa438, 0x8037, 0xa438, 0x1800,
59 : : 0xa438, 0x8085, 0xa438, 0x1800, 0xa438, 0x8085, 0xa438, 0x1800,
60 : : 0xa438, 0x8085, 0xa438, 0x800a, 0xa438, 0x8530, 0xa438, 0x0c03,
61 : : 0xa438, 0x1502, 0xa438, 0x8d10, 0xa438, 0x9503, 0xa438, 0xd700,
62 : : 0xa438, 0x6050, 0xa438, 0xaa20, 0xa438, 0x1800, 0xa438, 0x0d53,
63 : : 0xa438, 0xd707, 0xa438, 0x40f6, 0xa438, 0x8901, 0xa438, 0xd704,
64 : : 0xa438, 0x6091, 0xa438, 0x8306, 0xa438, 0x8b02, 0xa438, 0x8290,
65 : : 0xa438, 0x1000, 0xa438, 0x0e4d, 0xa438, 0x1000, 0xa438, 0x1277,
66 : : 0xa438, 0xd704, 0xa438, 0x7e77, 0xa438, 0x1800, 0xa438, 0x0dc5,
67 : : 0xa438, 0xd700, 0xa438, 0x4063, 0xa438, 0x1800, 0xa438, 0x0d15,
68 : : 0xa438, 0x1800, 0xa438, 0x0d18, 0xa438, 0xd700, 0xa438, 0x6063,
69 : : 0xa438, 0x1800, 0xa438, 0x0ca6, 0xa438, 0x1800, 0xa438, 0x0ca7,
70 : : 0xa438, 0xd700, 0xa438, 0x6123, 0xa438, 0x1000, 0xa438, 0x1224,
71 : : 0xa438, 0xcd84, 0xa438, 0xd706, 0xa438, 0x6159, 0xa438, 0xd700,
72 : : 0xa438, 0x611c, 0xa438, 0xfff9, 0xa438, 0x1000, 0xa438, 0x1224,
73 : : 0xa438, 0xcd84, 0xa438, 0xd700, 0xa438, 0x605c, 0xa438, 0xfffb,
74 : : 0xa438, 0xcd8a, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd706,
75 : : 0xa438, 0x6679, 0xa438, 0xd700, 0xa438, 0x663d, 0xa438, 0xd707,
76 : : 0xa438, 0x5f16, 0xa438, 0xd700, 0xa438, 0x5ed0, 0xa438, 0xd700,
77 : : 0xa438, 0x6043, 0xa438, 0xfff3, 0xa438, 0x0c3f, 0xa438, 0x0635,
78 : : 0xa438, 0xa120, 0xa438, 0x8410, 0xa438, 0x800a, 0xa438, 0x8290,
79 : : 0xa438, 0x8306, 0xa438, 0x8b06, 0xa438, 0x8364, 0xa438, 0xcd87,
80 : : 0xa438, 0xa502, 0xa438, 0x8502, 0xa438, 0xa220, 0xa438, 0xa310,
81 : : 0xa438, 0xa340, 0xa438, 0xa00a, 0xa438, 0x0c06, 0xa438, 0x0102,
82 : : 0xa438, 0xa240, 0xa438, 0xa290, 0xa438, 0x8320, 0xa438, 0xa304,
83 : : 0xa438, 0xab02, 0xa438, 0xa404, 0xa438, 0xd1c7, 0xa438, 0xd045,
84 : : 0xa438, 0xd700, 0xa438, 0x605b, 0xa438, 0xfffe, 0xa438, 0xa320,
85 : : 0xa438, 0x1000, 0xa438, 0x1224, 0xa438, 0xd706, 0xa438, 0x5fb5,
86 : : 0xa438, 0x0c3f, 0xa438, 0x062d, 0xa438, 0x8120, 0xa438, 0xcd88,
87 : : 0xa438, 0xd700, 0xa438, 0x605d, 0xa438, 0xfffa, 0xa438, 0xcd8b,
88 : : 0xa438, 0x1000, 0xa438, 0x1224, 0xa438, 0xd706, 0xa438, 0x5f99,
89 : : 0xa438, 0x1800, 0xa438, 0x0c9e, 0xa436, 0xA10E, 0xa438, 0xffff,
90 : : 0xa436, 0xA10C, 0xa438, 0xffff, 0xa436, 0xA10A, 0xa438, 0xffff,
91 : : 0xa436, 0xA108, 0xa438, 0x0c89, 0xa436, 0xA106, 0xa438, 0x0ca2,
92 : : 0xa436, 0xA104, 0xa438, 0x0d13, 0xa436, 0xA102, 0xa438, 0x0dbf,
93 : : 0xa436, 0xA100, 0xa438, 0x0d52, 0xa436, 0xA110, 0xa438, 0x001f,
94 : : 0xa436, 0xb87c, 0xa438, 0x85bd, 0xa436, 0xb87e, 0xa438, 0xaf85,
95 : : 0xa438, 0xd5af, 0xa438, 0x85fb, 0xa438, 0xaf86, 0xa438, 0x24af,
96 : : 0xa438, 0x8624, 0xa438, 0xaf86, 0xa438, 0x24af, 0xa438, 0x8624,
97 : : 0xa438, 0xaf86, 0xa438, 0x24af, 0xa438, 0x8624, 0xa438, 0xac28,
98 : : 0xa438, 0x0bd4, 0xa438, 0x0294, 0xa438, 0xbf85, 0xa438, 0xf802,
99 : : 0xa438, 0x61c2, 0xa438, 0xae09, 0xa438, 0xd414, 0xa438, 0x50bf,
100 : : 0xa438, 0x85f8, 0xa438, 0x0261, 0xa438, 0xc2bf, 0xa438, 0x60de,
101 : : 0xa438, 0x0261, 0xa438, 0xe1bf, 0xa438, 0x80cf, 0xa438, 0xaf24,
102 : : 0xa438, 0xe8f0, 0xa438, 0xac52, 0xa438, 0xef79, 0xa438, 0xf705,
103 : : 0xa438, 0xeeff, 0xa438, 0xd200, 0xa438, 0xbf86, 0xa438, 0x22d7,
104 : : 0xa438, 0xc201, 0xa438, 0x87d4, 0xa438, 0x0001, 0xa438, 0x025a,
105 : : 0xa438, 0x0abf, 0xa438, 0x8623, 0xa438, 0xd7c2, 0xa438, 0xcc17,
106 : : 0xa438, 0xd400, 0xa438, 0x0102, 0xa438, 0x5a0a, 0xa438, 0xf605,
107 : : 0xa438, 0xaf33, 0xa438, 0x78ff, 0xa438, 0xff00, 0xa436, 0xb85e,
108 : : 0xa438, 0x24e5, 0xa436, 0xb860, 0xa438, 0x3376, 0xa436, 0xb862,
109 : : 0xa438, 0xffff, 0xa436, 0xb864, 0xa438, 0xffff, 0xa436, 0xb886,
110 : : 0xa438, 0xffff, 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a,
111 : : 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838,
112 : : 0xa438, 0x0003, 0xb820, 0x0010, 0xB82E, 0x0000, 0xa436, 0x8023,
113 : : 0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF
114 : : };
115 : :
116 : : static void
117 : : rtl_real_set_phy_mcu_8125cp_1_1(struct rtl_hw *hw)
118 : : {
119 : 0 : rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8125cp_1_1,
120 : : ARRAY_SIZE(phy_mcu_ram_code_8125cp_1_1));
121 : : }
122 : :
123 : : void
124 : 0 : rtl_set_phy_mcu_8125cp_1(struct rtl_hw *hw)
125 : : {
126 : 0 : rtl_set_phy_mcu_patch_request(hw);
127 : :
128 : : rtl_real_set_phy_mcu_8125cp_1_1(hw);
129 : :
130 : 0 : rtl_clear_phy_mcu_patch_request(hw);
131 : 0 : }
|