Thread (5 messages) flat view 5 messages, 4 authors, 2026-08-13

Re: [PATCH net-next v8] net: phy: Add driver for Motorcomm Quad 2.5GbE phy

From: kernel test robot <hidden>
Date: 2026-08-13 20:44:24
Also in: lkml, oe-kbuild-all

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/202608140410.QYqocPyD-lkp@intel.com/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 [off-list ref]
| Closes: https://lore.kernel.org/oe-kbuild-all/202608140410.QYqocPyD-lkp@intel.com/ (local)

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help