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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.