CC: [email protected]
TO: Frank Wunderlich <[email protected]>

tree:   https://github.com/frank-w/BPI-R2-4.14 5.17-prepare
head:   184c5d6eb630c7813afa7d0b061daf73b5fe342b
commit: 763d02319f60ea15e7af71c8222bbe099d39fa7f [4/13] net: phy: add rtl8367 
reduced phy driver
:::::: branch date: 11 days ago
:::::: commit date: 2 weeks ago
config: riscv-randconfig-c006-20220207 
(https://download.01.org/0day-ci/archive/20220209/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
0d8850ae2cae85d49bea6ae0799fa41c7202c05c)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://github.com/frank-w/BPI-R2-4.14/commit/763d02319f60ea15e7af71c8222bbe099d39fa7f
        git remote add frank-w-bpi-r2-4.14 
https://github.com/frank-w/BPI-R2-4.14
        git fetch --no-tags frank-w-bpi-r2-4.14 5.17-prepare
        git checkout 763d02319f60ea15e7af71c8222bbe099d39fa7f
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/usb/serial/ir-usb.c:209:2: warning: Value stored to 'rates' is never 
read [clang-analyzer-deadcode.DeadStores]
           rates = le16_to_cpu(irda_desc->wBaudRate);
           ^
   drivers/usb/serial/ir-usb.c:209:2: note: Value stored to 'rates' is never 
read
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/media/i2c/adv7170.c:361:3: warning: Value stored to 'i' is never 
read [clang-analyzer-deadcode.DeadStores]
                   i = adv7170_write(sd, 0x07, TR0MODE | TR0RST);
                   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/adv7170.c:361:3: note: Value stored to 'i' is never read
                   i = adv7170_write(sd, 0x07, TR0MODE | TR0RST);
                   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/adv7170.c:362:3: warning: Value stored to 'i' is never 
read [clang-analyzer-deadcode.DeadStores]
                   i = adv7170_write(sd, 0x07, TR0MODE);
                   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/adv7170.c:362:3: note: Value stored to 'i' is never read
                   i = adv7170_write(sd, 0x07, TR0MODE);
                   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c:157:2: warning: Value 
stored to 'tsf' is never read [clang-analyzer-deadcode.DeadStores]
           tsf = (u64)dw0 << 32 | dw1;
           ^     ~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c:157:2: note: Value 
stored to 'tsf' is never read
           tsf = (u64)dw0 << 32 | dw1;
           ^     ~~~~~~~~~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   drivers/net/phy/mscc/mscc_ptp.c:1446:2: warning: Value stored to 'val' is 
never read [clang-analyzer-deadcode.DeadStores]
           val = vsc85xx_ts_read_csr(phydev, PROCESSOR, 
MSCC_PHY_PTP_VERSION_CODE);
           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/mscc/mscc_ptp.c:1446:2: note: Value stored to 'val' is never 
read
           val = vsc85xx_ts_read_csr(phydev, PROCESSOR, 
MSCC_PHY_PTP_VERSION_CODE);
           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
>> drivers/net/phy/rtl8367s_mdio.c:409:5: warning: Value stored to 'type' is 
>> never read [clang-analyzer-deadcode.DeadStores]
       type = 0;
       ^      ~
   drivers/net/phy/rtl8367s_mdio.c:409:5: note: Value stored to 'type' is never 
read
       type = 0;
       ^      ~
   drivers/net/phy/rtl8367s_mdio.c:766:40: warning: The left operand of '<<' is 
a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
       reg_data |= pPortAbility->mstfault << 9;
                                          ^
   drivers/net/phy/rtl8367s_mdio.c:2391:6: note: Assuming 'mdio' is non-null
           if (!mdio)
               ^~~~~
   drivers/net/phy/rtl8367s_mdio.c:2391:2: note: Taking false branch
           if (!mdio)
           ^
   drivers/net/phy/rtl8367s_mdio.c:2396:6: note: Assuming 'mdio_bus' is non-null
           if (!mdio_bus)
               ^~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:2396:2: note: Taking false branch
           if (!mdio_bus)
           ^
   drivers/net/phy/rtl8367s_mdio.c:2401:6: note: Assuming 'gsw' is non-null
           if (!gsw)
               ^~~~
   drivers/net/phy/rtl8367s_mdio.c:2401:2: note: Taking false branch
           if (!gsw)
           ^
   drivers/net/phy/rtl8367s_mdio.c:2409:7: note: 'ret' is 0
           if (!ret)
                ^~~
   drivers/net/phy/rtl8367s_mdio.c:2409:2: note: Taking true branch
           if (!ret)
           ^
   drivers/net/phy/rtl8367s_mdio.c:2416:6: note: Assuming field 'reset_pin' is 
>= 0
           if (gsw->reset_pin < 0)
               ^~~~~~~~~~~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:2416:2: note: Taking false branch
           if (gsw->reset_pin < 0)
           ^
   drivers/net/phy/rtl8367s_mdio.c:2421:2: note: Calling 'init_gsw'
           init_gsw(gsw);
           ^~~~~~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:2349:2: note: Taking true branch
           if (rtl8367s_hw_init(gsw))
           ^
   drivers/net/phy/rtl8367s_mdio.c:2350:3: note: Loop condition is false.  
Exiting loop
                   printk("RTL8367RB Switch Init Failure !!!\n");
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:392:34: note: expanded from macro 
'__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/net/phy/rtl8367s_mdio.c:2355:6: note: Assuming 'ret' is 0
           if (!ret && (!strcasecmp(pm, "rgmii,rgmii")))
               ^~~~
   drivers/net/phy/rtl8367s_mdio.c:2355:6: note: Left side of '&&' is true
   drivers/net/phy/rtl8367s_mdio.c:2355:2: note: Taking true branch
           if (!ret && (!strcasecmp(pm, "rgmii,rgmii")))
           ^
   drivers/net/phy/rtl8367s_mdio.c:2358:3: note: Loop condition is false.  
Exiting loop
                   printk(KERN_ALERT "DEBUG: Passed %s %d 
rgmii+rgmii\n",__FUNCTION__,__LINE__);
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:392:34: note: expanded from macro 
'__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/net/phy/rtl8367s_mdio.c:2359:3: note: Calling 
'set_rtl8367s_rgmii_ep0'
                   set_rtl8367s_rgmii_ep0(gsw);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:2319:2: note: Calling 
'rtk_port_macForceLinkExt_set'
           rtk_port_macForceLinkExt_set(EXT_PORT0, mode, &mac_cfg);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:1270:5: note: Assuming 'init_state' is equal 
to INIT_COMPLETED
       RTK_CHK_INIT_STATE();
       ^
   drivers/net/phy/rtl8367s_mdio.h:361:6: note: expanded from macro 
'RTK_CHK_INIT_STATE'
                   if(init_state != INIT_COMPLETED)        \
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/rtl8367s_mdio.c:1270:5: note: Taking false branch
       RTK_CHK_INIT_STATE();
       ^
   drivers/net/phy/rtl8367s_mdio.h:361:3: note: expanded from macro 
'RTK_CHK_INIT_STATE'
                   if(init_state != INIT_COMPLETED)        \
                   ^
   drivers/net/phy/rtl8367s_mdio.c:1270:5: note: Loop condition is false.  
Exiting loop
       RTK_CHK_INIT_STATE();
       ^
   drivers/net/phy/rtl8367s_mdio.h:359:2: note: expanded from macro 
'RTK_CHK_INIT_STATE'
           do                                              \
           ^
   drivers/net/phy/rtl8367s_mdio.c:1273:5: note: Taking false branch

vim +/type +409 drivers/net/phy/rtl8367s_mdio.c

763d02319f60ea Frank Wunderlich 2022-01-15  377  
763d02319f60ea Frank Wunderlich 2022-01-15  378  /* rtl8367c_setAsicPortExtMode 
 Set external interface mode configuration */
763d02319f60ea Frank Wunderlich 2022-01-15  379  static ret_t 
rtl8367c_setAsicPortExtMode(rtk_uint32 id, rtk_uint32 mode)
763d02319f60ea Frank Wunderlich 2022-01-15  380  {
763d02319f60ea Frank Wunderlich 2022-01-15  381      ret_t   retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  382      rtk_uint32 i, regValue, 
type, option;
763d02319f60ea Frank Wunderlich 2022-01-15  383      rtk_uint32 idx;
763d02319f60ea Frank Wunderlich 2022-01-15  384      rtk_uint32 redData[][2] =  
 { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x21A2, 0x0482}, {0x6960, 0x0483}, 
{0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  385      rtk_uint32 redDataSB[][2] 
= { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x31A2, 0x0482}, {0x6960, 0x0483}, 
{0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  386      rtk_uint32 redData1[][2] = 
 { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  387      rtk_uint32 redData5[][2] = 
 { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  388      rtk_uint32 redData6[][2] = 
 { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  389      rtk_uint32 redData8[][2] = 
 { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  390      rtk_uint32 redData9[][2] = 
 { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  391      rtk_uint32 redDataHB[][2] 
= { {0x82F0, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x7960, 0x0503}, 
{0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, 
{0x83F2, 0x002E} };
763d02319f60ea Frank Wunderlich 2022-01-15  392  
763d02319f60ea Frank Wunderlich 2022-01-15  393      if(id >= RTL8367C_EXTNO)
763d02319f60ea Frank Wunderlich 2022-01-15  394          return 
RT_ERR_OUT_OF_RANGE;
763d02319f60ea Frank Wunderlich 2022-01-15  395  
763d02319f60ea Frank Wunderlich 2022-01-15  396      if(mode >= EXT_END)
763d02319f60ea Frank Wunderlich 2022-01-15  397          return 
RT_ERR_OUT_OF_RANGE;
763d02319f60ea Frank Wunderlich 2022-01-15  398  
763d02319f60ea Frank Wunderlich 2022-01-15  399      /* magic number*/
763d02319f60ea Frank Wunderlich 2022-01-15  400      if((retVal = 
rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  401          return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  402      /* Chip num */
763d02319f60ea Frank Wunderlich 2022-01-15  403      if((retVal = 
rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  404          return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  405  
763d02319f60ea Frank Wunderlich 2022-01-15  406      if((retVal = 
rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  407          return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  408  
763d02319f60ea Frank Wunderlich 2022-01-15 @409      type = 0;
763d02319f60ea Frank Wunderlich 2022-01-15  410  
763d02319f60ea Frank Wunderlich 2022-01-15  411      switch (regValue)
763d02319f60ea Frank Wunderlich 2022-01-15  412      {
763d02319f60ea Frank Wunderlich 2022-01-15  413          case 0x0276:
763d02319f60ea Frank Wunderlich 2022-01-15  414          case 0x0597:
763d02319f60ea Frank Wunderlich 2022-01-15  415          case 0x6367:
763d02319f60ea Frank Wunderlich 2022-01-15  416              type = 1;
763d02319f60ea Frank Wunderlich 2022-01-15  417              break;
763d02319f60ea Frank Wunderlich 2022-01-15  418          case 0x0652:
763d02319f60ea Frank Wunderlich 2022-01-15  419          case 0x6368:
763d02319f60ea Frank Wunderlich 2022-01-15  420              type = 2;
763d02319f60ea Frank Wunderlich 2022-01-15  421              break;
763d02319f60ea Frank Wunderlich 2022-01-15  422          case 0x0801:
763d02319f60ea Frank Wunderlich 2022-01-15  423          case 0x6511:
763d02319f60ea Frank Wunderlich 2022-01-15  424              type = 3;
763d02319f60ea Frank Wunderlich 2022-01-15  425              break;
763d02319f60ea Frank Wunderlich 2022-01-15  426          default:
763d02319f60ea Frank Wunderlich 2022-01-15  427              return 
RT_ERR_FAILED;
763d02319f60ea Frank Wunderlich 2022-01-15  428      }
763d02319f60ea Frank Wunderlich 2022-01-15  429  
763d02319f60ea Frank Wunderlich 2022-01-15  430  
763d02319f60ea Frank Wunderlich 2022-01-15  431      if (1==type)
763d02319f60ea Frank Wunderlich 2022-01-15  432      {
763d02319f60ea Frank Wunderlich 2022-01-15  433          if((mode == 
EXT_1000X_100FX) || (mode == EXT_1000X) || (mode == EXT_100FX))
763d02319f60ea Frank Wunderlich 2022-01-15  434          {
763d02319f60ea Frank Wunderlich 2022-01-15  435              if((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 5, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  436                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  437  
763d02319f60ea Frank Wunderlich 2022-01-15  438              if((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 7, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  439                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  440  
763d02319f60ea Frank Wunderlich 2022-01-15  441              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  442                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  443  
763d02319f60ea Frank Wunderlich 2022-01-15  444              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, 
RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  445                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  446  
763d02319f60ea Frank Wunderlich 2022-01-15  447              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, 
RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  448                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  449  
763d02319f60ea Frank Wunderlich 2022-01-15  450              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  451                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  452  /*
763d02319f60ea Frank Wunderlich 2022-01-15  453              if(mode == 
EXT_1000X_100FX)
763d02319f60ea Frank Wunderlich 2022-01-15  454              {
763d02319f60ea Frank Wunderlich 2022-01-15  455                  for(idx = 0; 
idx < FIBER2_AUTO_INIT_SIZE; idx++)
763d02319f60ea Frank Wunderlich 2022-01-15  456                  {
763d02319f60ea Frank Wunderlich 2022-01-15  457                      if 
((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_Auto[idx])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  458                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  459                  }
763d02319f60ea Frank Wunderlich 2022-01-15  460              }
763d02319f60ea Frank Wunderlich 2022-01-15  461  
763d02319f60ea Frank Wunderlich 2022-01-15  462              if(mode == 
EXT_1000X)
763d02319f60ea Frank Wunderlich 2022-01-15  463              {
763d02319f60ea Frank Wunderlich 2022-01-15  464                  for(idx = 0; 
idx < FIBER2_1G_INIT_SIZE; idx++)
763d02319f60ea Frank Wunderlich 2022-01-15  465                  {
763d02319f60ea Frank Wunderlich 2022-01-15  466                      if 
((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_1G[idx])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  467                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  468                  }
763d02319f60ea Frank Wunderlich 2022-01-15  469              }
763d02319f60ea Frank Wunderlich 2022-01-15  470  
763d02319f60ea Frank Wunderlich 2022-01-15  471              if(mode == 
EXT_100FX)
763d02319f60ea Frank Wunderlich 2022-01-15  472              {
763d02319f60ea Frank Wunderlich 2022-01-15  473                  for(idx = 0; 
idx < FIBER2_100M_INIT_SIZE; idx++)
763d02319f60ea Frank Wunderlich 2022-01-15  474                  {
763d02319f60ea Frank Wunderlich 2022-01-15  475                      if 
((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_100M[idx])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  476                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  477                  }
763d02319f60ea Frank Wunderlich 2022-01-15  478              }
763d02319f60ea Frank Wunderlich 2022-01-15  479  */
763d02319f60ea Frank Wunderlich 2022-01-15  480              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  481                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  482  
763d02319f60ea Frank Wunderlich 2022-01-15  483              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, 
RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  484                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  485  
763d02319f60ea Frank Wunderlich 2022-01-15  486              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  487                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  488          }
763d02319f60ea Frank Wunderlich 2022-01-15  489  
763d02319f60ea Frank Wunderlich 2022-01-15  490          if(mode == EXT_GMII)
763d02319f60ea Frank Wunderlich 2022-01-15  491          {
763d02319f60ea Frank Wunderlich 2022-01-15  492              if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_EXT0_RGMXF, RTL8367C_EXT0_RGTX_INV_OFFSET, 
1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  493                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  494  
763d02319f60ea Frank Wunderlich 2022-01-15  495              if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_EXT1_RGMXF, RTL8367C_EXT1_RGTX_INV_OFFSET, 
1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  496                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  497  
763d02319f60ea Frank Wunderlich 2022-01-15  498              if( (retVal = 
rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, 
RTL8367C_EXT1_GMII_TX_DELAY_MASK, 5)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  499                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  500  
763d02319f60ea Frank Wunderlich 2022-01-15  501              if( (retVal = 
rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, 
RTL8367C_EXT0_GMII_TX_DELAY_MASK, 6)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  502                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  503          }
763d02319f60ea Frank Wunderlich 2022-01-15  504  
763d02319f60ea Frank Wunderlich 2022-01-15  505          /* Serdes reset */
763d02319f60ea Frank Wunderlich 2022-01-15  506          if( (mode == 
EXT_TMII_MAC) || (mode == EXT_TMII_PHY) )
763d02319f60ea Frank Wunderlich 2022-01-15  507          {
763d02319f60ea Frank Wunderlich 2022-01-15  508              if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  509                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  510          }
763d02319f60ea Frank Wunderlich 2022-01-15  511          else
763d02319f60ea Frank Wunderlich 2022-01-15  512          {
763d02319f60ea Frank Wunderlich 2022-01-15  513              if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  514                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  515          }
763d02319f60ea Frank Wunderlich 2022-01-15  516  
763d02319f60ea Frank Wunderlich 2022-01-15  517          if( (mode == 
EXT_SGMII) || (mode == EXT_HSGMII) )
763d02319f60ea Frank Wunderlich 2022-01-15  518          {
763d02319f60ea Frank Wunderlich 2022-01-15  519              if(id != 1)
763d02319f60ea Frank Wunderlich 2022-01-15  520                  return 
RT_ERR_PORT_ID;
763d02319f60ea Frank Wunderlich 2022-01-15  521  
763d02319f60ea Frank Wunderlich 2022-01-15  522              if((retVal = 
rtl8367c_setAsicReg(0x13C0, 0x0249)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  523                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  524  
763d02319f60ea Frank Wunderlich 2022-01-15  525              if((retVal = 
rtl8367c_getAsicReg(0x13C1, &option)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  526                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  527  
763d02319f60ea Frank Wunderlich 2022-01-15  528              if((retVal = 
rtl8367c_setAsicReg(0x13C0, 0x0000)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  529                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  530          }
763d02319f60ea Frank Wunderlich 2022-01-15  531  
763d02319f60ea Frank Wunderlich 2022-01-15  532          if(mode == EXT_SGMII)
763d02319f60ea Frank Wunderlich 2022-01-15  533          {
763d02319f60ea Frank Wunderlich 2022-01-15  534              if(option == 0)
763d02319f60ea Frank Wunderlich 2022-01-15  535              {
763d02319f60ea Frank Wunderlich 2022-01-15  536                  for(i = 0; i 
<= 7; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  537                  {
763d02319f60ea Frank Wunderlich 2022-01-15  538                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  539                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  540  
763d02319f60ea Frank Wunderlich 2022-01-15  541                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  542                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  543  
763d02319f60ea Frank Wunderlich 2022-01-15  544                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  545                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  546                  }
763d02319f60ea Frank Wunderlich 2022-01-15  547              }
763d02319f60ea Frank Wunderlich 2022-01-15  548              else
763d02319f60ea Frank Wunderlich 2022-01-15  549              {
763d02319f60ea Frank Wunderlich 2022-01-15  550                  for(i = 0; i 
<= 7; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  551                  {
763d02319f60ea Frank Wunderlich 2022-01-15  552                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataSB[i][0])) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  553                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  554  
763d02319f60ea Frank Wunderlich 2022-01-15  555                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataSB[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  556                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  557  
763d02319f60ea Frank Wunderlich 2022-01-15  558                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  559                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  560                  }
763d02319f60ea Frank Wunderlich 2022-01-15  561              }
763d02319f60ea Frank Wunderlich 2022-01-15  562          }
763d02319f60ea Frank Wunderlich 2022-01-15  563  
763d02319f60ea Frank Wunderlich 2022-01-15  564          if(mode == EXT_HSGMII)
763d02319f60ea Frank Wunderlich 2022-01-15  565          {
763d02319f60ea Frank Wunderlich 2022-01-15  566              if(option == 0)
763d02319f60ea Frank Wunderlich 2022-01-15  567              {
763d02319f60ea Frank Wunderlich 2022-01-15  568                  if( (retVal = 
rtl8367c_setAsicReg(0x13c2, 0x0249)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  569                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  570  
763d02319f60ea Frank Wunderlich 2022-01-15  571                  if( (retVal = 
rtl8367c_getAsicReg(0x1301, &regValue)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  572                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  573  
763d02319f60ea Frank Wunderlich 2022-01-15  574                  if( (retVal = 
rtl8367c_setAsicReg(0x13c2, 0x0000)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  575                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  576  
763d02319f60ea Frank Wunderlich 2022-01-15  577                  if ( 
((regValue & 0x00F0) >> 4) == 0x0001)
763d02319f60ea Frank Wunderlich 2022-01-15  578                  {
763d02319f60ea Frank Wunderlich 2022-01-15  579                      for(i = 0; 
i <= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  580                      {
763d02319f60ea Frank Wunderlich 2022-01-15  581                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData1[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  582                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  583  
763d02319f60ea Frank Wunderlich 2022-01-15  584                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData1[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  585                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  586  
763d02319f60ea Frank Wunderlich 2022-01-15  587                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  588                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  589                      }
763d02319f60ea Frank Wunderlich 2022-01-15  590                  }
763d02319f60ea Frank Wunderlich 2022-01-15  591                  else if ( 
((regValue & 0x00F0) >> 4) == 0x0005)
763d02319f60ea Frank Wunderlich 2022-01-15  592                  {
763d02319f60ea Frank Wunderlich 2022-01-15  593                      for(i = 0; 
i <= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  594                      {
763d02319f60ea Frank Wunderlich 2022-01-15  595                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData5[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  596                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  597  
763d02319f60ea Frank Wunderlich 2022-01-15  598                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData5[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  599                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  600  
763d02319f60ea Frank Wunderlich 2022-01-15  601                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  602                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  603                      }
763d02319f60ea Frank Wunderlich 2022-01-15  604                  }
763d02319f60ea Frank Wunderlich 2022-01-15  605                  else if ( 
((regValue & 0x00F0) >> 4) == 0x0006)
763d02319f60ea Frank Wunderlich 2022-01-15  606                  {
763d02319f60ea Frank Wunderlich 2022-01-15  607                      for(i = 0; 
i <= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  608                      {
763d02319f60ea Frank Wunderlich 2022-01-15  609                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData6[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  610                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  611  
763d02319f60ea Frank Wunderlich 2022-01-15  612                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData6[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  613                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  614  
763d02319f60ea Frank Wunderlich 2022-01-15  615                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  616                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  617                      }
763d02319f60ea Frank Wunderlich 2022-01-15  618                  }
763d02319f60ea Frank Wunderlich 2022-01-15  619                  else if ( 
((regValue & 0x00F0) >> 4) == 0x0008)
763d02319f60ea Frank Wunderlich 2022-01-15  620                  {
763d02319f60ea Frank Wunderlich 2022-01-15  621                      for(i = 0; 
i <= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  622                      {
763d02319f60ea Frank Wunderlich 2022-01-15  623                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData8[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  624                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  625  
763d02319f60ea Frank Wunderlich 2022-01-15  626                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData8[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  627                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  628  
763d02319f60ea Frank Wunderlich 2022-01-15  629                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  630                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  631                      }
763d02319f60ea Frank Wunderlich 2022-01-15  632                  }
763d02319f60ea Frank Wunderlich 2022-01-15  633                  else if ( 
((regValue & 0x00F0) >> 4) == 0x0009)
763d02319f60ea Frank Wunderlich 2022-01-15  634                  {
763d02319f60ea Frank Wunderlich 2022-01-15  635                      for(i = 0; 
i <= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  636                      {
763d02319f60ea Frank Wunderlich 2022-01-15  637                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData9[i][0])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  638                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  639  
763d02319f60ea Frank Wunderlich 2022-01-15  640                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData9[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  641                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  642  
763d02319f60ea Frank Wunderlich 2022-01-15  643                          if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  644                              
return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  645                      }
763d02319f60ea Frank Wunderlich 2022-01-15  646                  }
763d02319f60ea Frank Wunderlich 2022-01-15  647              }
763d02319f60ea Frank Wunderlich 2022-01-15  648              else
763d02319f60ea Frank Wunderlich 2022-01-15  649              {
763d02319f60ea Frank Wunderlich 2022-01-15  650                  for(i = 0; i 
<= 8; i++)
763d02319f60ea Frank Wunderlich 2022-01-15  651                  {
763d02319f60ea Frank Wunderlich 2022-01-15  652                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataHB[i][0])) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  653                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  654  
763d02319f60ea Frank Wunderlich 2022-01-15  655                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataHB[i][1])) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  656                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  657  
763d02319f60ea Frank Wunderlich 2022-01-15  658                      if( 
(retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  659                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  660                  }
763d02319f60ea Frank Wunderlich 2022-01-15  661              }
763d02319f60ea Frank Wunderlich 2022-01-15  662          }
763d02319f60ea Frank Wunderlich 2022-01-15  663  
763d02319f60ea Frank Wunderlich 2022-01-15  664          /* Only one ext port 
should care SGMII setting */
763d02319f60ea Frank Wunderlich 2022-01-15  665          if(id == 1)
763d02319f60ea Frank Wunderlich 2022-01-15  666          {
763d02319f60ea Frank Wunderlich 2022-01-15  667  
763d02319f60ea Frank Wunderlich 2022-01-15  668              if(mode == 
EXT_SGMII)
763d02319f60ea Frank Wunderlich 2022-01-15  669              {
763d02319f60ea Frank Wunderlich 2022-01-15  670                  if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  671                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  672  
763d02319f60ea Frank Wunderlich 2022-01-15  673                  if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  674                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  675              }
763d02319f60ea Frank Wunderlich 2022-01-15  676              else if(mode == 
EXT_HSGMII)
763d02319f60ea Frank Wunderlich 2022-01-15  677              {
763d02319f60ea Frank Wunderlich 2022-01-15  678                  if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  679                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  680  
763d02319f60ea Frank Wunderlich 2022-01-15  681                  if( (retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  682                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  683              }
763d02319f60ea Frank Wunderlich 2022-01-15  684              else
763d02319f60ea Frank Wunderlich 2022-01-15  685              {
763d02319f60ea Frank Wunderlich 2022-01-15  686  
763d02319f60ea Frank Wunderlich 2022-01-15  687                  if((mode != 
EXT_1000X_100FX) && (mode != EXT_1000X) && (mode != EXT_100FX))
763d02319f60ea Frank Wunderlich 2022-01-15  688                  {
763d02319f60ea Frank Wunderlich 2022-01-15  689                      if( 
(retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  690                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  691  
763d02319f60ea Frank Wunderlich 2022-01-15  692                      if( 
(retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, 
RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  693                          return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  694                  }
763d02319f60ea Frank Wunderlich 2022-01-15  695              }
763d02319f60ea Frank Wunderlich 2022-01-15  696          }
763d02319f60ea Frank Wunderlich 2022-01-15  697  
763d02319f60ea Frank Wunderlich 2022-01-15  698          if(0 == id || 1 == id)
763d02319f60ea Frank Wunderlich 2022-01-15  699          {
763d02319f60ea Frank Wunderlich 2022-01-15  700              if((retVal = 
rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT, 
RTL8367C_SELECT_GMII_0_MASK << (id * RTL8367C_SELECT_GMII_1_OFFSET), mode)) != 
RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  701                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  702          }
763d02319f60ea Frank Wunderlich 2022-01-15  703          else
763d02319f60ea Frank Wunderlich 2022-01-15  704          {
763d02319f60ea Frank Wunderlich 2022-01-15  705              if((retVal = 
rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1, 
RTL8367C_SELECT_GMII_2_MASK, mode)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  706                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  707          }
763d02319f60ea Frank Wunderlich 2022-01-15  708  
763d02319f60ea Frank Wunderlich 2022-01-15  709          /* Serdes not reset */
763d02319f60ea Frank Wunderlich 2022-01-15  710          if( (mode == 
EXT_SGMII) || (mode == EXT_HSGMII) )
763d02319f60ea Frank Wunderlich 2022-01-15  711          {
763d02319f60ea Frank Wunderlich 2022-01-15  712              if( (retVal = 
rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x7106)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  713                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  714  
763d02319f60ea Frank Wunderlich 2022-01-15  715              if( (retVal = 
rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, 0x0003)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  716                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  717  
763d02319f60ea Frank Wunderlich 2022-01-15  718              if( (retVal = 
rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  719                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  720          }
763d02319f60ea Frank Wunderlich 2022-01-15  721  
763d02319f60ea Frank Wunderlich 2022-01-15  722          if( (mode == 
EXT_SGMII) || (mode == EXT_HSGMII) )
763d02319f60ea Frank Wunderlich 2022-01-15  723          {
763d02319f60ea Frank Wunderlich 2022-01-15  724              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  725                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  726  
763d02319f60ea Frank Wunderlich 2022-01-15  727              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, 
RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  728                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  729  
763d02319f60ea Frank Wunderlich 2022-01-15  730              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, 
RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  731                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  732  
763d02319f60ea Frank Wunderlich 2022-01-15  733              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  734                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  735  
763d02319f60ea Frank Wunderlich 2022-01-15  736              for(idx = 0; idx < 
SGMII_INIT_SIZE; idx++)
763d02319f60ea Frank Wunderlich 2022-01-15  737              {
763d02319f60ea Frank Wunderlich 2022-01-15  738                  if ((retVal = 
rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Sgmii_Init[idx])) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  739                      return 
retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  740              }
763d02319f60ea Frank Wunderlich 2022-01-15  741  
763d02319f60ea Frank Wunderlich 2022-01-15  742              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  743                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  744  
763d02319f60ea Frank Wunderlich 2022-01-15  745              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, 
RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  746                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  747  
763d02319f60ea Frank Wunderlich 2022-01-15  748              if ((retVal = 
rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) 
!= RT_ERR_OK)
763d02319f60ea Frank Wunderlich 2022-01-15  749                  return retVal;
763d02319f60ea Frank Wunderlich 2022-01-15  750          }
763d02319f60ea Frank Wunderlich 2022-01-15  751      }
763d02319f60ea Frank Wunderlich 2022-01-15  752  
763d02319f60ea Frank Wunderlich 2022-01-15  753      return RT_ERR_OK;
763d02319f60ea Frank Wunderlich 2022-01-15  754  }
763d02319f60ea Frank Wunderlich 2022-01-15  755  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to