All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/net/ethernet/davicom/dm9000.c:1684 dm9000_probe() error: we previously assumed 'pdata' could be null (see line 1576)
Date: Wed, 19 Jan 2022 23:46:15 +0800	[thread overview]
Message-ID: <202201192350.uMsraGrb-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 39335 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jakub Kicinski <kuba@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   1d1df41c5a33359a00e919d54eaebfb789711fdc
commit: 4abd7cffc09a38015fa14a22471e3de48a4ca032 ethernet: use eth_hw_addr_set() in unmaintained drivers
date:   3 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 3 months ago
config: microblaze-randconfig-m031-20220119 (https://download.01.org/0day-ci/archive/20220119/202201192350.uMsraGrb-lkp(a)intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/net/ethernet/davicom/dm9000.c:1684 dm9000_probe() error: we previously assumed 'pdata' could be null (see line 1576)

vim +/pdata +1684 drivers/net/ethernet/davicom/dm9000.c

0b8bf1baabe56f drivers/net/ethernet/davicom/dm9000.c Tomasz Figa               2013-05-20  1408  
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1409  /*
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1410   * Search DM9000 board, allocate space and register it
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1411   */
6b6a3e7f65e573 drivers/net/ethernet/davicom/dm9000.c Bill Pemberton            2012-12-03  1412  static int
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1413  dm9000_probe(struct platform_device *pdev)
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1414  {
cd4e2e4b368fd5 drivers/net/ethernet/davicom/dm9000.c Jingoo Han                2013-08-30  1415  	struct dm9000_plat_data *pdata = dev_get_platdata(&pdev->dev);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1416  	struct board_info *db;	/* Point a board information structure */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1417  	struct net_device *ndev;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1418  	struct device *dev = &pdev->dev;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1419  	const unsigned char *mac_src;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1420  	int ret = 0;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1421  	int iosize;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1422  	int i;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1423  	u32 id_val;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1424  	int reset_gpios;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1425  	enum of_gpio_flags flags;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1426  	struct regulator *power;
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1427  	bool inv_mac_addr = false;
4abd7cffc09a38 drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-15  1428  	u8 addr[ETH_ALEN];
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1429  
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1430  	power = devm_regulator_get(dev, "vcc");
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1431  	if (IS_ERR(power)) {
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1432  		if (PTR_ERR(power) == -EPROBE_DEFER)
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1433  			return -EPROBE_DEFER;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1434  		dev_dbg(dev, "no regulator provided\n");
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1435  	} else {
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1436  		ret = regulator_enable(power);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1437  		if (ret != 0) {
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1438  			dev_err(dev,
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1439  				"Failed to enable power regulator: %d\n", ret);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1440  			return ret;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1441  		}
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1442  		dev_dbg(dev, "regulator enabled\n");
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1443  	}
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1444  
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1445  	reset_gpios = of_get_named_gpio_flags(dev->of_node, "reset-gpios", 0,
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1446  					      &flags);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1447  	if (gpio_is_valid(reset_gpios)) {
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1448  		ret = devm_gpio_request_one(dev, reset_gpios, flags,
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1449  					    "dm9000_reset");
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1450  		if (ret) {
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1451  			dev_err(dev, "failed to request reset gpio %d: %d\n",
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1452  				reset_gpios, ret);
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1453  			goto out_regulator_disable;
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1454  		}
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1455  
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1456  		/* According to manual PWRST# Low Period Min 1ms */
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1457  		msleep(2);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1458  		gpio_set_value(reset_gpios, 1);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1459  		/* Needs 3ms to read eeprom when PWRST is deasserted */
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1460  		msleep(4);
7994fe55a4a200 drivers/net/ethernet/davicom/dm9000.c Zubair Lutfullah Kakakhel 2015-01-15  1461  	}
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1462  
0b8bf1baabe56f drivers/net/ethernet/davicom/dm9000.c Tomasz Figa               2013-05-20  1463  	if (!pdata) {
0b8bf1baabe56f drivers/net/ethernet/davicom/dm9000.c Tomasz Figa               2013-05-20  1464  		pdata = dm9000_parse_dt(&pdev->dev);
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1465  		if (IS_ERR(pdata)) {
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1466  			ret = PTR_ERR(pdata);
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1467  			goto out_regulator_disable;
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1468  		}
0b8bf1baabe56f drivers/net/ethernet/davicom/dm9000.c Tomasz Figa               2013-05-20  1469  	}
0b8bf1baabe56f drivers/net/ethernet/davicom/dm9000.c Tomasz Figa               2013-05-20  1470  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1471  	/* Init network device */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1472  	ndev = alloc_etherdev(sizeof(struct board_info));
31457db3750c0b drivers/net/ethernet/davicom/dm9000.c Christophe JAILLET        2021-04-11  1473  	if (!ndev) {
31457db3750c0b drivers/net/ethernet/davicom/dm9000.c Christophe JAILLET        2021-04-11  1474  		ret = -ENOMEM;
31457db3750c0b drivers/net/ethernet/davicom/dm9000.c Christophe JAILLET        2021-04-11  1475  		goto out_regulator_disable;
31457db3750c0b drivers/net/ethernet/davicom/dm9000.c Christophe JAILLET        2021-04-11  1476  	}
9a2f037cdbe840 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1477  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1478  	SET_NETDEV_DEV(ndev, &pdev->dev);
9ef9ac51cc5fa5 drivers/net/dm9000.c                  Ben Dooks                 2005-07-23  1479  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1480  	dev_dbg(&pdev->dev, "dm9000_probe()\n");
9ef9ac51cc5fa5 drivers/net/dm9000.c                  Ben Dooks                 2005-07-23  1481  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1482  	/* setup board info structure */
4cf1653aa90c63 drivers/net/dm9000.c                  Wang Chen                 2008-11-12  1483  	db = netdev_priv(ndev);
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1484  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1485  	db->dev = &pdev->dev;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1486  	db->ndev = ndev;
cf9e60aa69ae6c drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1487  	if (!IS_ERR(power))
cf9e60aa69ae6c drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1488  		db->power_supply = power;
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1489  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1490  	spin_lock_init(&db->lock);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1491  	mutex_init(&db->addr_lock);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1492  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1493  	INIT_DELAYED_WORK(&db->phy_poll, dm9000_poll_work);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1494  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1495  	db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1496  	db->data_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1497  
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1498  	if (!db->addr_res || !db->data_res) {
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1499  		dev_err(db->dev, "insufficient resources addr=%p data=%p\n",
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1500  			db->addr_res, db->data_res);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1501  		ret = -ENOENT;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1502  		goto out;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1503  	}
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1504  
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1505  	ndev->irq = platform_get_irq(pdev, 0);
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1506  	if (ndev->irq < 0) {
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1507  		ret = ndev->irq;
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1508  		goto out;
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1509  	}
b5a099c67a1c36 drivers/net/ethernet/davicom/dm9000.c Robert Jarzmik            2016-02-20  1510  
2e2696223676d5 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1511  	db->irq_wake = platform_get_irq_optional(pdev, 1);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1512  	if (db->irq_wake >= 0) {
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1513  		dev_dbg(db->dev, "wakeup irq %d\n", db->irq_wake);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1514  
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1515  		ret = request_irq(db->irq_wake, dm9000_wol_interrupt,
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1516  				  IRQF_SHARED, dev_name(db->dev), ndev);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1517  		if (ret) {
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1518  			dev_err(db->dev, "cannot get wakeup irq (%d)\n", ret);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1519  		} else {
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1520  
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1521  			/* test to see if irq is really wakeup capable */
dced35aeb0367d drivers/net/dm9000.c                  Thomas Gleixner           2011-03-28  1522  			ret = irq_set_irq_wake(db->irq_wake, 1);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1523  			if (ret) {
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1524  				dev_err(db->dev, "irq %d cannot set wakeup (%d)\n",
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1525  					db->irq_wake, ret);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1526  			} else {
dced35aeb0367d drivers/net/dm9000.c                  Thomas Gleixner           2011-03-28  1527  				irq_set_irq_wake(db->irq_wake, 0);
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1528  				db->wake_supported = 1;
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1529  			}
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1530  		}
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1531  	}
c029f4440fd3f0 drivers/net/dm9000.c                  Ben Dooks                 2009-11-10  1532  
ec282e9225be92 drivers/net/dm9000.c                  Tobias Klauser            2009-09-09  1533  	iosize = resource_size(db->addr_res);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1534  	db->addr_req = request_mem_region(db->addr_res->start, iosize,
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1535  					  pdev->name);
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1536  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1537  	if (db->addr_req == NULL) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1538  		dev_err(db->dev, "cannot claim address reg area\n");
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1539  		ret = -EIO;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1540  		goto out;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1541  	}
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1542  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1543  	db->io_addr = ioremap(db->addr_res->start, iosize);
37d5dca6af6b62 drivers/net/dm9000.c                  Enrico Scholz             2008-05-08  1544  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1545  	if (db->io_addr == NULL) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1546  		dev_err(db->dev, "failed to ioremap address reg\n");
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1547  		ret = -EINVAL;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1548  		goto out;
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1549  	}
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1550  
ec282e9225be92 drivers/net/dm9000.c                  Tobias Klauser            2009-09-09  1551  	iosize = resource_size(db->data_res);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1552  	db->data_req = request_mem_region(db->data_res->start, iosize,
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1553  					  pdev->name);
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1554  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1555  	if (db->data_req == NULL) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1556  		dev_err(db->dev, "cannot claim data reg area\n");
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1557  		ret = -EIO;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1558  		goto out;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1559  	}
9a2f037cdbe840 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1560  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1561  	db->io_data = ioremap(db->data_res->start, iosize);
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1562  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1563  	if (db->io_data == NULL) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1564  		dev_err(db->dev, "failed to ioremap data reg\n");
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1565  		ret = -EINVAL;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1566  		goto out;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1567  	}
9ef9ac51cc5fa5 drivers/net/dm9000.c                  Ben Dooks                 2005-07-23  1568  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1569  	/* fill in parameters for net-dev structure */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1570  	ndev->base_addr = (unsigned long)db->io_addr;
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1571  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1572  	/* ensure at least we have a default set of IO routines */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1573  	dm9000_set_io(db, iosize);
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1574  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1575  	/* check to see if anything is being over-ridden */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24 @1576  	if (pdata != NULL) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1577  		/* check to see if the driver wants to over-ride the
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1578  		 * default IO width */
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1579  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1580  		if (pdata->flags & DM9000_PLATF_8BITONLY)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1581  			dm9000_set_io(db, 1);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1582  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1583  		if (pdata->flags & DM9000_PLATF_16BITONLY)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1584  			dm9000_set_io(db, 2);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1585  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1586  		if (pdata->flags & DM9000_PLATF_32BITONLY)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1587  			dm9000_set_io(db, 4);
89c8b0e6cd3859 drivers/net/dm9000.c                  Ben Dooks                 2008-02-05  1588  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1589  		/* check to see if there are any IO routine
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1590  		 * over-rides */
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1591  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1592  		if (pdata->inblk != NULL)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1593  			db->inblk = pdata->inblk;
9ef9ac51cc5fa5 drivers/net/dm9000.c                  Ben Dooks                 2005-07-23  1594  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1595  		if (pdata->outblk != NULL)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1596  			db->outblk = pdata->outblk;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1597  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1598  		if (pdata->dumpblk != NULL)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1599  			db->dumpblk = pdata->dumpblk;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1600  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1601  		db->flags = pdata->flags;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1602  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1603  
f8dd0ecbb74d4b drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1604  #ifdef CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL
f8dd0ecbb74d4b drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1605  	db->flags |= DM9000_PLATF_SIMPLE_PHY;
f8dd0ecbb74d4b drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1606  #endif
f8dd0ecbb74d4b drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1607  
751bb6fd80b728 drivers/net/ethernet/davicom/dm9000.c Andrew Ruder              2014-06-04  1608  	dm9000_reset(db);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1609  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1610  	/* try multiple times, DM9000 sometimes gets the read wrong */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1611  	for (i = 0; i < 8; i++) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1612  		id_val  = ior(db, DM9000_VIDL);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1613  		id_val |= (u32)ior(db, DM9000_VIDH) << 8;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1614  		id_val |= (u32)ior(db, DM9000_PIDL) << 16;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1615  		id_val |= (u32)ior(db, DM9000_PIDH) << 24;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1616  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1617  		if (id_val == DM9000_ID)
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1618  			break;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1619  		dev_err(db->dev, "read wrong id 0x%08x\n", id_val);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1620  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1621  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1622  	if (id_val != DM9000_ID) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1623  		dev_err(db->dev, "wrong id: 0x%08x\n", id_val);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1624  		ret = -ENODEV;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1625  		goto out;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1626  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1627  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1628  	/* Identify what type of DM9000 we are working on */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1629  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1630  	id_val = ior(db, DM9000_CHIPR);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1631  	dev_dbg(db->dev, "dm9000 revision 0x%02x\n", id_val);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1632  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1633  	switch (id_val) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1634  	case CHIPR_DM9000A:
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1635  		db->type = TYPE_DM9000A;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1636  		break;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1637  	case CHIPR_DM9000B:
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1638  		db->type = TYPE_DM9000B;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1639  		break;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1640  	default:
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1641  		dev_dbg(db->dev, "ID %02x => defaulting to DM9000E\n", id_val);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1642  		db->type = TYPE_DM9000E;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1643  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1644  
5dcc60b7188679 drivers/net/dm9000.c                  Yeasah Pell               2009-07-06  1645  	/* dm9000a/b are capable of hardware checksum offload */
5dcc60b7188679 drivers/net/dm9000.c                  Yeasah Pell               2009-07-06  1646  	if (db->type == TYPE_DM9000A || db->type == TYPE_DM9000B) {
c88fcb3d8265cf drivers/net/dm9000.c                  Michał Mirosław           2011-04-15  1647  		ndev->hw_features = NETIF_F_RXCSUM | NETIF_F_IP_CSUM;
c88fcb3d8265cf drivers/net/dm9000.c                  Michał Mirosław           2011-04-15  1648  		ndev->features |= ndev->hw_features;
5dcc60b7188679 drivers/net/dm9000.c                  Yeasah Pell               2009-07-06  1649  	}
5dcc60b7188679 drivers/net/dm9000.c                  Yeasah Pell               2009-07-06  1650  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1651  	/* from this point we assume that we have found a DM9000 */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1652  
d88106b70178a8 drivers/net/dm9000.c                  Alexander Beregalov       2009-04-15  1653  	ndev->netdev_ops	= &dm9000_netdev_ops;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1654  	ndev->watchdog_timeo	= msecs_to_jiffies(watchdog);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1655  	ndev->ethtool_ops	= &dm9000_ethtool_ops;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1656  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1657  	db->msg_enable       = NETIF_MSG_LINK;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1658  	db->mii.phy_id_mask  = 0x1f;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1659  	db->mii.reg_num_mask = 0x1f;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1660  	db->mii.force_media  = 0;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1661  	db->mii.full_duplex  = 0;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1662  	db->mii.dev	     = ndev;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1663  	db->mii.mdio_read    = dm9000_phy_read;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1664  	db->mii.mdio_write   = dm9000_phy_write;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1665  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1666  	mac_src = "eeprom";
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1667  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1668  	/* try reading the node address from the attached EEPROM */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1669  	for (i = 0; i < 6; i += 2)
4abd7cffc09a38 drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-15  1670  		dm9000_read_eeprom(db, i / 2, addr + i);
4abd7cffc09a38 drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-15  1671  	eth_hw_addr_set(ndev, addr);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1672  
fe414248551e28 drivers/net/dm9000.c                  Laurent Pinchart          2008-07-23  1673  	if (!is_valid_ether_addr(ndev->dev_addr) && pdata != NULL) {
fe414248551e28 drivers/net/dm9000.c                  Laurent Pinchart          2008-07-23  1674  		mac_src = "platform data";
a96d317fb1a30b drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-01  1675  		eth_hw_addr_set(ndev, pdata->dev_addr);
fe414248551e28 drivers/net/dm9000.c                  Laurent Pinchart          2008-07-23  1676  	}
fe414248551e28 drivers/net/dm9000.c                  Laurent Pinchart          2008-07-23  1677  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1678  	if (!is_valid_ether_addr(ndev->dev_addr)) {
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1679  		/* try reading from mac */
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1680  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1681  		mac_src = "chip";
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1682  		for (i = 0; i < 6; i++)
4abd7cffc09a38 drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-15  1683  			addr[i] = ior(db, i + DM9000_PAR);
4abd7cffc09a38 drivers/net/ethernet/davicom/dm9000.c Jakub Kicinski            2021-10-15 @1684  		eth_hw_addr_set(ndev, pdata->dev_addr);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1685  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1686  
85e6b8c5d8be1e drivers/net/dm9000.c                  Ben Dooks                 2011-02-24  1687  	if (!is_valid_ether_addr(ndev->dev_addr)) {
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1688  		inv_mac_addr = true;
f2cedb63df1434 drivers/net/ethernet/davicom/dm9000.c Danny Kukawka             2012-02-15  1689  		eth_hw_addr_random(ndev);
85e6b8c5d8be1e drivers/net/dm9000.c                  Ben Dooks                 2011-02-24  1690  		mac_src = "random";
85e6b8c5d8be1e drivers/net/dm9000.c                  Ben Dooks                 2011-02-24  1691  	}
85e6b8c5d8be1e drivers/net/dm9000.c                  Ben Dooks                 2011-02-24  1692  
85e6b8c5d8be1e drivers/net/dm9000.c                  Ben Dooks                 2011-02-24  1693  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1694  	platform_set_drvdata(pdev, ndev);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1695  	ret = register_netdev(ndev);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1696  
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1697  	if (ret == 0) {
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1698  		if (inv_mac_addr)
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1699  			dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please set using ip\n",
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1700  				 ndev->name);
e174961ca1a0b2 drivers/net/dm9000.c                  Johannes Berg             2008-10-27  1701  		printk(KERN_INFO "%s: dm9000%c at %p,%p IRQ %d MAC: %pM (%s)\n",
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1702  		       ndev->name, dm9000_type_to_char(db->type),
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1703  		       db->io_addr, db->io_data, ndev->irq,
e174961ca1a0b2 drivers/net/dm9000.c                  Johannes Berg             2008-10-27  1704  		       ndev->dev_addr, mac_src);
3274940bd3d870 drivers/net/ethernet/davicom/dm9000.c Harvey Hunt               2016-05-17  1705  	}
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1706  	return 0;
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1707  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1708  out:
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1709  	dev_err(db->dev, "not found (%d).\n", ret);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1710  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1711  	dm9000_release_board(pdev, db);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1712  	free_netdev(ndev);
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1713  
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1714  out_regulator_disable:
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1715  	if (!IS_ERR(power))
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1716  		regulator_disable(power);
ac88c531a5b388 drivers/net/ethernet/davicom/dm9000.c Paul Cercueil             2021-03-07  1717  
f8d79e79a1700f drivers/net/dm9000.c                  Ben Dooks                 2008-06-24  1718  	return ret;
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1719  }
a1365275e745bb drivers/net/dm9000.c                  Sascha Hauer              2005-05-05  1720  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

             reply	other threads:[~2022-01-19 15:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-19 15:46 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-09-08 15:51 drivers/net/ethernet/davicom/dm9000.c:1684 dm9000_probe() error: we previously assumed 'pdata' could be null (see line 1576) kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202201192350.uMsraGrb-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.