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, ®Value)) != 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, ®Value)) != 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]
