Re: [PATCH net-next v8] net: phy: Add driver for Motorcomm Quad 2.5GbE phy
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
Hi Kyle, kernel test robot noticed the following build warnings: [auto build test WARNING on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Kyle-Switch/net-phy-Add-driver-for-Motorcomm-Quad-2-5GbE-phy/20260812-155449 base: net-next/main patch link: https://lore.kernel.org/r/20260801035236.3560015-1-kyle.switch%40motor-comm.com patch subject: [PATCH net-next v8] net: phy: Add driver for Motorcomm Quad 2.5GbE phy config: i386-randconfig-141 (https://download.01.org/0day-ci/archive/20260814/[email protected]/config) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 smatch: v0.5.0-9187-g5189e3fb If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ smatch warnings: drivers/net/phy/motorcomm.c:1450 yt8824_extern_config_sds_init_paged() warn: unsigned 'data' is never less than zero. drivers/net/phy/motorcomm.c:1673 yt8824_internal_config_init_paged() warn: missing error code? 'ret' vim +/data +1450 drivers/net/phy/motorcomm.c 1220 1221 /** 1222 * yt8824_extern_config_sds_init_paged() - config external phy8824 sds init 1223 * @phydev: target phy_device struct 1224 * 1225 * 1226 * Returns: 0 or negative errno code 1227 */ 1228 static int yt8824_extern_config_sds_init_paged(struct phy_device *phydev) 1229 { 1230 struct yt8824_shared_priv *shared_priv; 1231 int ret = 0, old_page; 1232 int val_1, val_2, val_3, tmp; 1233 u16 data = 0; 1234 int port; 1235 1236 shared_priv = phy_package_get_priv(phydev); 1237 port = phydev->mdio.addr - shared_priv->offset; 1238 if (port < 0) 1239 return -EINVAL; 1240 old_page = phy_select_page(phydev, YT8824_RSSR_USXGMII_SPACE); 1241 if (old_page < 0) 1242 goto err_restore_page; 1243 1244 /* read efuse */ 1245 val_1 = ytphy_read_top_ext(phydev, 0xa13e); 1246 if (val_1 < 0) 1247 goto err_restore_page; 1248 1249 val_2 = ytphy_read_top_ext(phydev, 0xa13f); 1250 if (val_2 < 0) 1251 goto err_restore_page; 1252 1253 val_3 = ytphy_read_top_ext(phydev, 0xa140); 1254 if (val_3 < 0) 1255 goto err_restore_page; 1256 1257 if (port == 0) { 1258 /* Serdes optimization */ 1259 ret = ytphy_write_ext(phydev, 0x04be, 0x000d); 1260 if (ret < 0) 1261 goto err_restore_page; 1262 1263 ret = ytphy_write_ext(phydev, 0x049f, 0x7ded); 1264 if (ret < 0) 1265 goto err_restore_page; 1266 1267 ret = ytphy_write_ext(phydev, 0x04a9, 0x009f); 1268 if (ret < 0) 1269 goto err_restore_page; 1270 1271 /* analog CDR */ 1272 ret = ytphy_write_ext(phydev, 0x0406, 0x0800); 1273 if (ret < 0) 1274 goto err_restore_page; 1275 1276 /* optimized VCO */ 1277 ret = ytphy_write_ext(phydev, 0x0438, 0x9024); 1278 if (ret < 0) 1279 goto err_restore_page; 1280 1281 ret = ytphy_write_ext(phydev, 0x0439, 0x00c0); 1282 if (ret < 0) 1283 goto err_restore_page; 1284 1285 /* optimized PLL lock */ 1286 ret = ytphy_read_ext(phydev, 0x0429); 1287 if (ret < 0) 1288 goto err_restore_page; 1289 1290 ret &= ~(BIT(13) | BIT(12)); 1291 tmp = (val_1 & (BIT(7) | BIT(6))) >> 6; 1292 ret |= (tmp << 12); 1293 ret = ytphy_write_ext(phydev, 0x0429, ret); 1294 if (ret < 0) 1295 goto err_restore_page; 1296 1297 ret = ytphy_read_ext(phydev, 0x0441); 1298 if (ret < 0) 1299 goto err_restore_page; 1300 1301 ret &= ~(BIT(1) | BIT(0)); 1302 tmp = (val_1 & (BIT(5) | BIT(4))) >> 4; 1303 ret |= tmp; 1304 ret = ytphy_write_ext(phydev, 0x0441, ret); 1305 if (ret < 0) 1306 goto err_restore_page; 1307 1308 ret = ytphy_read_ext(phydev, 0x042b); 1309 if (ret < 0) 1310 goto err_restore_page; 1311 1312 ret &= ~(BIT(13) | BIT(12)); 1313 tmp = (val_3 & (BIT(1) | BIT(0))); 1314 ret |= (tmp << 12); 1315 ret = ytphy_write_ext(phydev, 0x042b, ret); 1316 if (ret < 0) 1317 goto err_restore_page; 1318 1319 ret = ytphy_write_ext(phydev, 0x043a, 0x1006); 1320 if (ret < 0) 1321 goto err_restore_page; 1322 1323 ret = ytphy_write_ext(phydev, 0x042a, 0xf070); 1324 if (ret < 0) 1325 goto err_restore_page; 1326 1327 /* cable length threshold */ 1328 ret = ytphy_write_ext(phydev, 0x0491, 0x007f); 1329 if (ret < 0) 1330 goto err_restore_page; 1331 1332 ret = ytphy_write_ext(phydev, 0x0492, 0x7f7f); 1333 if (ret < 0) 1334 goto err_restore_page; 1335 1336 /* Serdes training threshold */ 1337 ret = ytphy_write_ext(phydev, 0x0454, 0x0f14); 1338 if (ret < 0) 1339 goto err_restore_page; 1340 1341 ret = ytphy_write_ext(phydev, 0x0497, 0x0a44); 1342 if (ret < 0) 1343 goto err_restore_page; 1344 1345 /* digital eye diagram of SerDes */ 1346 ret = ytphy_write_ext(phydev, 0x04cd, 0x0000); 1347 if (ret < 0) 1348 goto err_restore_page; 1349 1350 /* Serdes LDO */ 1351 ret = ytphy_read_ext(phydev, 0x04b5); 1352 if (ret < 0) 1353 goto err_restore_page; 1354 1355 ret &= ~(BIT(6) | BIT(5) | BIT(4)); 1356 tmp = (val_2 & (BIT(4) | BIT(3) | BIT(2))) >> 2; 1357 ret |= (tmp << 4); 1358 ret = ytphy_write_ext(phydev, 0x04b5, ret); 1359 if (ret < 0) 1360 goto err_restore_page; 1361 1362 ret = ytphy_read_ext(phydev, 0x04b4); 1363 if (ret < 0) 1364 goto err_restore_page; 1365 1366 ret &= ~(BIT(10) | BIT(9) | BIT(8)); 1367 tmp = (val_2 & (BIT(7) | BIT(6) | BIT(5))) >> 5; 1368 ret |= (tmp << 8); 1369 ret = ytphy_write_ext(phydev, 0x04b4, ret); 1370 if (ret < 0) 1371 goto err_restore_page; 1372 1373 /* optimized Serdes RX */ 1374 ret = ytphy_write_ext(phydev, 0x04af, 0x45e3); 1375 if (ret < 0) 1376 goto err_restore_page; 1377 1378 ret = ytphy_write_ext(phydev, 0x048a, 0x0fff); 1379 if (ret < 0) 1380 goto err_restore_page; 1381 1382 ret = ytphy_write_ext(phydev, 0x0408, 0x7c00); 1383 if (ret < 0) 1384 goto err_restore_page; 1385 1386 ret = ytphy_write_ext(phydev, 0x04d6, 0x007f); 1387 if (ret < 0) 1388 goto err_restore_page; 1389 1390 ret = ytphy_write_ext(phydev, 0x044f, 0xff08); 1391 if (ret < 0) 1392 goto err_restore_page; 1393 1394 /* optimized Serdes TX */ 1395 ret = ytphy_write_ext(phydev, 0x048e, 0x7d00); 1396 if (ret < 0) 1397 goto err_restore_page; 1398 1399 ret = ytphy_write_ext(phydev, 0x000d, 0x0606); 1400 if (ret < 0) 1401 goto err_restore_page; 1402 1403 /* Serdes manual config */ 1404 ret = ytphy_write_ext(phydev, 0x04b0, 0x0804); 1405 if (ret < 0) 1406 goto err_restore_page; 1407 1408 ret = ytphy_write_ext(phydev, 0x04b1, 0x7074); 1409 if (ret < 0) 1410 goto err_restore_page; 1411 1412 ret = ytphy_write_ext(phydev, 0x04af, 0x45e7); 1413 if (ret < 0) 1414 goto err_restore_page; 1415 1416 /* restart calibration */ 1417 ret = ytphy_write_ext(phydev, 0x0003, 0x5603); 1418 if (ret < 0) 1419 goto err_restore_page; 1420 1421 ret = ytphy_write_ext(phydev, 0x0492, 0x7fff); 1422 if (ret < 0) 1423 goto err_restore_page; 1424 1425 ret = ytphy_write_ext(phydev, 0x0492, 0x7f7f); 1426 if (ret < 0) 1427 goto err_restore_page; 1428 1429 ret = ytphy_write_ext(phydev, 0x2000, 0x0040); 1430 if (ret < 0) 1431 goto err_restore_page; 1432 1433 ret = ytphy_write_ext(phydev, 0x2000, 0x0000); 1434 if (ret < 0) 1435 goto err_restore_page; 1436 } 1437 1438 /* TX preamble padded to 8; RX IPG always > 8 */ 1439 ret = __phy_read(phydev, MII_RESV1); 1440 if (ret < 0) 1441 goto err_restore_page; 1442 ret &= ~YT8824_SDS_CFG_MIN_PRE_MASK; 1443 ret |= YT8824_SDS_TX_PRE_PADDING; 1444 ret |= YT8824_SDS_EN_FILL_PRE; 1445 ret = __phy_write(phydev, MII_RESV1, ret); 1446 if (ret < 0) 1447 goto err_restore_page; 1448 1449 data = __phy_read(phydev, MII_BMCR); > 1450 if (data < 0) 1451 goto err_restore_page; 1452 data |= BMCR_RESET; 1453 data |= BMCR_ANENABLE; 1454 ret = __phy_write(phydev, MII_BMCR, data); 1455 if (ret < 0) 1456 goto err_restore_page; 1457 1458 err_restore_page: 1459 return phy_restore_page(phydev, old_page, ret); 1460 } 1461 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki