LCOV - code coverage report
Current view: top level - drivers/net/r8169/base - rtl8125bp_mcu.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 34 0.0 %
Date: 2025-07-01 21:32:37 Functions: 0 3 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 4 0.0 %

           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 "rtl8125bp_mcu.h"
       9                 :            : 
      10                 :            : /* For RTL8125BP, CFG_METHOD_54,55 */
      11                 :            : 
      12                 :            : /* ------------------------------------MAC 8125BP------------------------------------- */
      13                 :            : 
      14                 :            : void
      15                 :          0 : rtl_set_mac_mcu_8125bp_1(struct rtl_hw *hw)
      16                 :            : {
      17                 :            :         u16 entry_cnt;
      18                 :            :         static const u16 mcu_patch_code[] = {
      19                 :            :                 0xE010, 0xE014, 0xE027, 0xE04A, 0xE04D, 0xE050, 0xE052, 0xE054, 0xE056,
      20                 :            :                 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xE064, 0x1BC8, 0x46EB,
      21                 :            :                 0xC302, 0xBB00, 0x0F14, 0xC211, 0x400A, 0xF00A, 0xC20F, 0x400A, 0xF007,
      22                 :            :                 0x73A4, 0xC20C, 0x400A, 0xF102, 0x48B0, 0x9B20, 0x1B00, 0x9BA0, 0xC602,
      23                 :            :                 0xBE00, 0x4364, 0xE6E0, 0xE6E2, 0xC01C, 0xB406, 0x1000, 0xF016, 0xC61F,
      24                 :            :                 0x400E, 0xF012, 0x218E, 0x25BE, 0x1300, 0xF007, 0x7340, 0xC618, 0x400E,
      25                 :            :                 0xF102, 0x48B0, 0x8320, 0xB400, 0x2402, 0x1000, 0xF003, 0x7342, 0x8322,
      26                 :            :                 0xB000, 0xE007, 0x7322, 0x9B42, 0x7320, 0x9B40, 0x0300, 0x0300, 0xB006,
      27                 :            :                 0xC302, 0xBB00, 0x413E, 0xE6E0, 0xC01C, 0x49D1, 0xC602, 0xBE00, 0x3F94,
      28                 :            :                 0x49D1, 0xC602, 0xBE00, 0x4030, 0xC602, 0xBE00, 0x3FDA, 0xC102, 0xB900,
      29                 :            :                 0x401A, 0xC102, 0xB900, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, 0xBE00,
      30                 :            :                 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
      31                 :            :                 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
      32                 :            :                 0x0000, 0x6936, 0x0A18, 0x0C02, 0x0D21
      33                 :            :         };
      34                 :            : 
      35                 :            :         entry_cnt = ARRAY_SIZE(mcu_patch_code);
      36                 :            : 
      37                 :            :         /* Get BIN mac mcu patch code version */
      38                 :          0 :         hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
      39                 :            :                                                                     entry_cnt);
      40                 :            : 
      41         [ #  # ]:          0 :         if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
      42                 :          0 :                 rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
      43                 :            : 
      44                 :          0 :         rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
      45                 :            : 
      46                 :          0 :         rtl_mac_ocp_write(hw, 0xFC28, 0x0f10);
      47                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2A, 0x435c);
      48                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2C, 0x4112);
      49                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2E, 0x3F92);
      50                 :          0 :         rtl_mac_ocp_write(hw, 0xFC30, 0x402E);
      51                 :          0 :         rtl_mac_ocp_write(hw, 0xFC32, 0x3FD6);
      52                 :          0 :         rtl_mac_ocp_write(hw, 0xFC34, 0x4018);
      53                 :            : 
      54                 :          0 :         rtl_mac_ocp_write(hw, 0xFC48, 0x007F);
      55                 :          0 : }
      56                 :            : 
      57                 :            : void
      58                 :          0 : rtl_set_mac_mcu_8125bp_2(struct rtl_hw *hw)
      59                 :            : {
      60                 :            :         u16 entry_cnt;
      61                 :            :         static const u16 mcu_patch_code[] = {
      62                 :            :                 0xE010, 0xE033, 0xE046, 0xE04A, 0xE04D, 0xE050, 0xE052, 0xE054, 0xE056,
      63                 :            :                 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xE064, 0xB406, 0x1000,
      64                 :            :                 0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, 0x1300, 0xF007, 0x7340,
      65                 :            :                 0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, 0x2402, 0x1000, 0xF003,
      66                 :            :                 0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, 0x7320, 0x9B40, 0x0300,
      67                 :            :                 0x0300, 0xB006, 0xC302, 0xBB00, 0x4168, 0xE6E0, 0xC01C, 0xC211, 0x400A,
      68                 :            :                 0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, 0x48B0,
      69                 :            :                 0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4392, 0xE6E0, 0xE6E2, 0xC01C,
      70                 :            :                 0x4166, 0x9CF6, 0xC002, 0xB800, 0x143C, 0x49D1, 0xC602, 0xBE00, 0x3FC4,
      71                 :            :                 0x49D1, 0xC602, 0xBE00, 0x405A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
      72                 :            :                 0x0000, 0xC102, 0xB900, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, 0xBE00,
      73                 :            :                 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
      74                 :            :                 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
      75                 :            :                 0x0000, 0x6936, 0x0B18, 0x0C02, 0x0D22
      76                 :            :         };
      77                 :            : 
      78                 :            :         entry_cnt = ARRAY_SIZE(mcu_patch_code);
      79                 :            : 
      80                 :            :         /* Get BIN mac mcu patch code version */
      81                 :          0 :         hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
      82                 :            :                                                                     entry_cnt);
      83                 :            : 
      84         [ #  # ]:          0 :         if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
      85                 :          0 :                 rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
      86                 :            : 
      87                 :          0 :         rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
      88                 :            : 
      89                 :          0 :         rtl_mac_ocp_write(hw, 0xFC28, 0x413C);
      90                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2A, 0x438A);
      91                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2C, 0x143A);
      92                 :          0 :         rtl_mac_ocp_write(hw, 0xFC2E, 0x3FC2);
      93                 :          0 :         rtl_mac_ocp_write(hw, 0xFC30, 0x4058);
      94                 :            : 
      95                 :          0 :         rtl_mac_ocp_write(hw, 0xFC48, 0x001F);
      96                 :          0 : }
      97                 :            : 
      98                 :            : /* ------------------------------------PHY 8125BP--------------------------------------- */
      99                 :            : 
     100                 :            : static const u16 phy_mcu_ram_code_8125bp_1_1[] = {
     101                 :            :         0xa436, 0x8024, 0xa438, 0x3600, 0xa436, 0xB82E, 0xa438, 0x0001,
     102                 :            :         0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012,
     103                 :            :         0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010,
     104                 :            :         0xa438, 0x1800, 0xa438, 0x8014, 0xa438, 0x1800, 0xa438, 0x8018,
     105                 :            :         0xa438, 0x1800, 0xa438, 0x801c, 0xa438, 0x1800, 0xa438, 0x8020,
     106                 :            :         0xa438, 0x1800, 0xa438, 0x8024, 0xa438, 0x1800, 0xa438, 0x8028,
     107                 :            :         0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0xdb20, 0xa438, 0xd501,
     108                 :            :         0xa438, 0x1800, 0xa438, 0x034c, 0xa438, 0xdb10, 0xa438, 0xd501,
     109                 :            :         0xa438, 0x1800, 0xa438, 0x032c, 0xa438, 0x8620, 0xa438, 0xa480,
     110                 :            :         0xa438, 0x1800, 0xa438, 0x1cfe, 0xa438, 0xbf40, 0xa438, 0xd703,
     111                 :            :         0xa438, 0x1800, 0xa438, 0x0ce9, 0xa438, 0x9c10, 0xa438, 0x9f40,
     112                 :            :         0xa438, 0x1800, 0xa438, 0x137a, 0xa438, 0x9f20, 0xa438, 0x9f40,
     113                 :            :         0xa438, 0x1800, 0xa438, 0x16c4, 0xa436, 0xA026, 0xa438, 0xffff,
     114                 :            :         0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, 0xa438, 0x16c3,
     115                 :            :         0xa436, 0xA020, 0xa438, 0x1379, 0xa436, 0xA006, 0xa438, 0x0ce8,
     116                 :            :         0xa436, 0xA004, 0xa438, 0x1cfd, 0xa436, 0xA002, 0xa438, 0x032b,
     117                 :            :         0xa436, 0xA000, 0xa438, 0x034b, 0xa436, 0xA008, 0xa438, 0x3f00,
     118                 :            :         0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000,
     119                 :            :         0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800,
     120                 :            :         0xa438, 0x8018, 0xa438, 0x1800, 0xa438, 0x8021, 0xa438, 0x1800,
     121                 :            :         0xa438, 0x802b, 0xa438, 0x1800, 0xa438, 0x8055, 0xa438, 0x1800,
     122                 :            :         0xa438, 0x805a, 0xa438, 0x1800, 0xa438, 0x805e, 0xa438, 0x1800,
     123                 :            :         0xa438, 0x8062, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xcb11,
     124                 :            :         0xa438, 0xd1b9, 0xa438, 0xd05b, 0xa438, 0x0000, 0xa438, 0x1800,
     125                 :            :         0xa438, 0x0284, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd700,
     126                 :            :         0xa438, 0x5fb4, 0xa438, 0x5f95, 0xa438, 0x0000, 0xa438, 0x0000,
     127                 :            :         0xa438, 0x1800, 0xa438, 0x02b7, 0xa438, 0x0000, 0xa438, 0x0000,
     128                 :            :         0xa438, 0xcb21, 0xa438, 0x1000, 0xa438, 0x0b34, 0xa438, 0xd71f,
     129                 :            :         0xa438, 0x5f5e, 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x0322,
     130                 :            :         0xa438, 0xd700, 0xa438, 0xd113, 0xa438, 0xd040, 0xa438, 0x1000,
     131                 :            :         0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd700,
     132                 :            :         0xa438, 0x6065, 0xa438, 0xd122, 0xa438, 0xf002, 0xa438, 0xd122,
     133                 :            :         0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0b53, 0xa438, 0xa008,
     134                 :            :         0xa438, 0xd704, 0xa438, 0x4052, 0xa438, 0xa002, 0xa438, 0xd704,
     135                 :            :         0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0x1000, 0xa438, 0x0a57,
     136                 :            :         0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb9b, 0xa438, 0xd110,
     137                 :            :         0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0c01, 0xa438, 0x1000,
     138                 :            :         0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x801a,
     139                 :            :         0xa438, 0x1000, 0xa438, 0x0a57, 0xa438, 0xd704, 0xa438, 0x7fb9,
     140                 :            :         0xa438, 0x1800, 0xa438, 0x088d, 0xa438, 0xcb62, 0xa438, 0xd700,
     141                 :            :         0xa438, 0x8880, 0xa438, 0x1800, 0xa438, 0x06cb, 0xa438, 0xbe02,
     142                 :            :         0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe04,
     143                 :            :         0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe08,
     144                 :            :         0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa436, 0xA10E,
     145                 :            :         0xa438, 0x802a, 0xa436, 0xA10C, 0xa438, 0x8026, 0xa436, 0xA10A,
     146                 :            :         0xa438, 0x8022, 0xa436, 0xA108, 0xa438, 0x06ca, 0xa436, 0xA106,
     147                 :            :         0xa438, 0x086f, 0xa436, 0xA104, 0xa438, 0x0321, 0xa436, 0xA102,
     148                 :            :         0xa438, 0x02b5, 0xa436, 0xA100, 0xa438, 0x0283, 0xa436, 0xA110,
     149                 :            :         0xa438, 0x001f, 0xb820, 0x0010, 0xb82e, 0x0000, 0xa436, 0x8024,
     150                 :            :         0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF
     151                 :            : };
     152                 :            : 
     153                 :            : static const u16 phy_mcu_ram_code_8125bp_1_2[] = {
     154                 :            :         0xb892, 0x0000, 0xb88e, 0xC201, 0xb890, 0x2C01, 0xb890, 0xCD02,
     155                 :            :         0xb890, 0x0602, 0xb890, 0x5502, 0xb890, 0xB903, 0xb890, 0x3303,
     156                 :            :         0xb890, 0xC204, 0xb890, 0x6605, 0xb890, 0x1F05, 0xb890, 0xEE06,
     157                 :            :         0xb890, 0xD207, 0xb890, 0xCC08, 0xb890, 0xDA09, 0xb890, 0xFF0B,
     158                 :            :         0xb890, 0x380C, 0xb890, 0x87F3, 0xb88e, 0xC27F, 0xb890, 0x2B66,
     159                 :            :         0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666,
     160                 :            :         0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x66C2,
     161                 :            :         0xb88e, 0xC26F, 0xb890, 0x751D, 0xb890, 0x1D1F, 0xb890, 0x2022,
     162                 :            :         0xb890, 0x2325, 0xb890, 0x2627, 0xb890, 0x2829, 0xb890, 0x2929,
     163                 :            :         0xb890, 0x2A2A, 0xb890, 0x2B66, 0xB820, 0x0000, 0xFFFF, 0xFFFF
     164                 :            : };
     165                 :            : 
     166                 :            : static void
     167                 :            : rtl_real_set_phy_mcu_8125bp_1_1(struct rtl_hw *hw)
     168                 :            : {
     169                 :          0 :         rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8125bp_1_1,
     170                 :            :                                  ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_1));
     171                 :            : }
     172                 :            : 
     173                 :            : static void
     174                 :            : rtl_real_set_phy_mcu_8125bp_1_2(struct rtl_hw *hw)
     175                 :            : {
     176                 :          0 :         rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8125bp_1_2,
     177                 :            :                                  ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_2));
     178                 :            : }
     179                 :            : 
     180                 :            : void
     181                 :          0 : rtl_set_phy_mcu_8125bp_1(struct rtl_hw *hw)
     182                 :            : {
     183                 :          0 :         rtl_set_phy_mcu_patch_request(hw);
     184                 :            : 
     185                 :            :         rtl_real_set_phy_mcu_8125bp_1_1(hw);
     186                 :            : 
     187                 :          0 :         rtl_clear_phy_mcu_patch_request(hw);
     188                 :            : 
     189                 :          0 :         rtl_set_phy_mcu_patch_request(hw);
     190                 :            : 
     191                 :            :         rtl_real_set_phy_mcu_8125bp_1_2(hw);
     192                 :            : 
     193                 :          0 :         rtl_clear_phy_mcu_patch_request(hw);
     194                 :          0 : }

Generated by: LCOV version 1.14