drivers/net/can/m_can/m_can_platform.c | 13 +++------- drivers/net/can/sja1000/sja1000_platform.c | 15 +++-------- drivers/net/dsa/hirschmann/hellcreek.c | 18 +++---------- drivers/net/ethernet/atheros/ag71xx.c | 13 ++++------ drivers/net/ethernet/broadcom/bcm63xx_enet.c | 6 ++--- drivers/net/ethernet/freescale/xgmac_mdio.c | 12 +++------ drivers/net/ethernet/marvell/mvmdio.c | 12 +++------ .../net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 ++++------- .../ethernet/microchip/lan966x/lan966x_main.c | 16 +++--------- drivers/net/ethernet/renesas/rswitch.c | 9 +------ drivers/net/ethernet/renesas/rtsn.c | 10 ++------ drivers/net/ethernet/renesas/sh_eth.c | 25 +++---------------- drivers/net/mdio/mdio-bcm-unimac.c | 11 +++----- drivers/net/mdio/mdio-ipq4019.c | 7 ++---- drivers/net/mdio/mdio-ipq8064.c | 6 +---- drivers/net/mdio/mdio-mux-bcm6368.c | 11 +++----- drivers/net/mdio/mdio-octeon.c | 25 +++---------------- 17 files changed, 50 insertions(+), 173 deletions(-)
resource aquisition and ioremap can be performed in one step.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/can/m_can/m_can_platform.c | 13 +++-------
drivers/net/can/sja1000/sja1000_platform.c | 15 +++--------
drivers/net/dsa/hirschmann/hellcreek.c | 18 +++----------
drivers/net/ethernet/atheros/ag71xx.c | 13 ++++------
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 6 ++---
drivers/net/ethernet/freescale/xgmac_mdio.c | 12 +++------
drivers/net/ethernet/marvell/mvmdio.c | 12 +++------
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 ++++-------
.../ethernet/microchip/lan966x/lan966x_main.c | 16 +++---------
drivers/net/ethernet/renesas/rswitch.c | 9 +------
drivers/net/ethernet/renesas/rtsn.c | 10 ++------
drivers/net/ethernet/renesas/sh_eth.c | 25 +++----------------
drivers/net/mdio/mdio-bcm-unimac.c | 11 +++-----
drivers/net/mdio/mdio-ipq4019.c | 7 ++----
drivers/net/mdio/mdio-ipq8064.c | 6 +----
drivers/net/mdio/mdio-mux-bcm6368.c | 11 +++-----
drivers/net/mdio/mdio-octeon.c | 25 +++----------------
17 files changed, 50 insertions(+), 173 deletions(-)
diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c
index b832566efda0..dfc0d2834b50 100644
--- a/drivers/net/can/m_can/m_can_platform.c
+++ b/drivers/net/can/m_can/m_can_platform.c
@@ -79,7 +79,6 @@ static int m_can_plat_probe(struct platform_device *pdev)
{
struct m_can_classdev *mcan_class;
struct m_can_plat_priv *priv;
- struct resource *res;
void __iomem *addr;
void __iomem *mram_addr;
struct phy *transceiver;
@@ -112,15 +111,9 @@ static int m_can_plat_probe(struct platform_device *pdev)
}
/* message ram could be shared */
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "message_ram");
- if (!res) {
- ret = -ENODEV;
- goto probe_fail;
- }
-
- mram_addr = devm_ioremap(&pdev->dev, res->start, resource_size(res));
- if (!mram_addr) {
- ret = -ENOMEM;
+ mram_addr = devm_platform_ioremap_resource_byname(pdev, "message_ram");
+ if (IS_ERR(mram_addr)) {
+ ret = PTR_ERR(mram_addr);
goto probe_fail;
}
diff --git a/drivers/net/can/sja1000/sja1000_platform.c b/drivers/net/can/sja1000/sja1000_platform.c
index c42ebe9da55a..2d555f854008 100644
--- a/drivers/net/can/sja1000/sja1000_platform.c
+++ b/drivers/net/can/sja1000/sja1000_platform.c
@@ -230,18 +230,9 @@ static int sp_probe(struct platform_device *pdev)
return -ENODEV;
}
- res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res_mem)
- return -ENODEV;
-
- if (!devm_request_mem_region(&pdev->dev, res_mem->start,
- resource_size(res_mem), DRV_NAME))
- return -EBUSY;
-
- addr = devm_ioremap(&pdev->dev, res_mem->start,
- resource_size(res_mem));
- if (!addr)
- return -ENOMEM;
+ addr = devm_platform_get_and_ioremap_resource(pdev, 0, &res_mem);
+ if (IS_ERR(addr))
+ return PTR_ERR(addr);
if (of) {
irq = platform_get_irq(pdev, 0);
diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c
index 283ec5a6e23c..940c4fa6a924 100644
--- a/drivers/net/dsa/hirschmann/hellcreek.c
+++ b/drivers/net/dsa/hirschmann/hellcreek.c
@@ -1932,7 +1932,6 @@ static int hellcreek_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct hellcreek *hellcreek;
- struct resource *res;
int ret, i;
hellcreek = devm_kzalloc(dev, sizeof(*hellcreek), GFP_KERNEL);
@@ -1982,23 +1981,12 @@ static int hellcreek_probe(struct platform_device *pdev)
hellcreek->dev = dev;
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tsn");
- if (!res) {
- dev_err(dev, "No memory region provided!\n");
- return -ENODEV;
- }
-
- hellcreek->base = devm_ioremap_resource(dev, res);
+ hellcreek->base = devm_platform_ioremap_resource_byname(pdev, "tsn");
if (IS_ERR(hellcreek->base))
return PTR_ERR(hellcreek->base);
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ptp");
- if (!res) {
- dev_err(dev, "No PTP memory region provided!\n");
- return -ENODEV;
- }
-
- hellcreek->ptp_base = devm_ioremap_resource(dev, res);
+ hellcreek->ptp_base =
+ devm_platform_ioremap_resource_byname(pdev, "ptp");
if (IS_ERR(hellcreek->ptp_base))
return PTR_ERR(hellcreek->ptp_base);
diff --git a/drivers/net/ethernet/atheros/ag71xx.c b/drivers/net/ethernet/atheros/ag71xx.c
index 3d4c3d8698e2..928d27b51b2a 100644
--- a/drivers/net/ethernet/atheros/ag71xx.c
+++ b/drivers/net/ethernet/atheros/ag71xx.c
@@ -1798,15 +1798,16 @@ static int ag71xx_probe(struct platform_device *pdev)
if (!ndev)
return -ENOMEM;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res)
- return -EINVAL;
-
dcfg = of_device_get_match_data(&pdev->dev);
if (!dcfg)
return -EINVAL;
ag = netdev_priv(ndev);
+
+ ag->mac_base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ if (IS_ERR(ag->mac_base))
+ return PTR_ERR(ag->mac_base);
+
ag->mac_idx = -1;
for (i = 0; i < ARRAY_SIZE(ar71xx_addr_ar7100); i++) {
if (ar71xx_addr_ar7100[i] == res->start)
@@ -1836,10 +1837,6 @@ static int ag71xx_probe(struct platform_device *pdev)
return dev_err_probe(&pdev->dev, PTR_ERR(ag->mac_reset),
"missing mac reset");
- ag->mac_base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(ag->mac_base))
- return PTR_ERR(ag->mac_base);
-
/* ensure that HW is in manual polling mode before interrupts are
* activated. Otherwise ag71xx_interrupt might call napi_schedule
* before it is initialized by netif_napi_add.
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 65e3a0656a4c..420317abe3d2 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -2646,16 +2646,14 @@ static int bcm_enetsw_probe(struct platform_device *pdev)
struct bcm_enet_priv *priv;
struct net_device *dev;
struct bcm63xx_enetsw_platform_data *pd;
- struct resource *res_mem;
int ret, irq_rx, irq_tx;
if (!bcm_enet_shared_base[0])
return -EPROBE_DEFER;
- res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
irq_rx = platform_get_irq(pdev, 0);
irq_tx = platform_get_irq(pdev, 1);
- if (!res_mem || irq_rx < 0)
+ if (irq_rx < 0)
return -ENODEV;
dev = alloc_etherdev(sizeof(*priv));
@@ -2688,7 +2686,7 @@ static int bcm_enetsw_probe(struct platform_device *pdev)
if (ret)
goto out;
- priv->base = devm_ioremap_resource(&pdev->dev, res_mem);
+ priv->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(priv->base)) {
ret = PTR_ERR(priv->base);
goto out;
diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c
index 65dc07d0df0f..688720e48396 100644
--- a/drivers/net/ethernet/freescale/xgmac_mdio.c
+++ b/drivers/net/ethernet/freescale/xgmac_mdio.c
@@ -381,11 +381,6 @@ static int xgmac_mdio_probe(struct platform_device *pdev)
* subdevice areas. Therefore, MDIO cannot claim exclusive access to
* this register area.
*/
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
- dev_err(&pdev->dev, "could not obtain address\n");
- return -EINVAL;
- }
bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(struct mdio_fsl_priv));
if (!bus)
@@ -400,10 +395,9 @@ static int xgmac_mdio_probe(struct platform_device *pdev)
snprintf(bus->id, MII_BUS_ID_SIZE, "%pa", &res->start);
priv = bus->priv;
- priv->mdio_base = devm_ioremap(&pdev->dev, res->start,
- resource_size(res));
- if (!priv->mdio_base)
- return -ENOMEM;
+ priv->mdio_base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(priv->mdio_base))
+ return PTR_ERR(priv->mdio_base);
/* For both ACPI and DT cases, endianness of MDIO controller
* needs to be specified using "little-endian" property.
diff --git a/drivers/net/ethernet/marvell/mvmdio.c b/drivers/net/ethernet/marvell/mvmdio.c
index 3f4447e68888..ad1dddfa6ea8 100644
--- a/drivers/net/ethernet/marvell/mvmdio.c
+++ b/drivers/net/ethernet/marvell/mvmdio.c
@@ -291,12 +291,6 @@ static int orion_mdio_probe(struct platform_device *pdev)
type = (uintptr_t)device_get_match_data(&pdev->dev);
- r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!r) {
- dev_err(&pdev->dev, "No SMI register address given\n");
- return -ENODEV;
- }
-
bus = devm_mdiobus_alloc_size(&pdev->dev,
sizeof(struct orion_mdio_dev));
if (!bus)
@@ -319,10 +313,10 @@ static int orion_mdio_probe(struct platform_device *pdev)
bus->parent = &pdev->dev;
dev = bus->priv;
- dev->regs = devm_ioremap(&pdev->dev, r->start, resource_size(r));
- if (!dev->regs) {
+ dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &r);
+ if (IS_ERR(dev->regs)) {
dev_err(&pdev->dev, "Unable to remap SMI register\n");
- return -ENODEV;
+ return PTR_ERR(dev->regs);
}
init_waitqueue_head(&dev->smi_busy_wait);
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 571631a30320..faf853edc0db 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7425,21 +7425,17 @@ static int mvpp2_init(struct platform_device *pdev, struct mvpp2 *priv)
static int mvpp2_get_sram(struct platform_device *pdev,
struct mvpp2 *priv)
{
- struct resource *res;
void __iomem *base;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
- if (!res) {
+ base = devm_platform_ioremap_resource(pdev, 2);
+ if (IS_ERR(base)) {
if (has_acpi_companion(&pdev->dev))
dev_warn(&pdev->dev, "ACPI is too old, Flow control not supported\n");
else
- dev_warn(&pdev->dev, "DT is too old, Flow control not supported\n");
- return 0;
- }
-
- base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(base))
+ dev_warn(&pdev->dev,
+ "DT is too old, Flow control not supported\n");
return PTR_ERR(base);
+ }
priv->cm3_base = base;
return 0;
diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
index 3234a960fcc3..375e9a68b9a9 100644
--- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
+++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
@@ -77,20 +77,12 @@ static int lan966x_create_targets(struct platform_device *pdev,
* this.
*/
for (idx = 0; idx < IO_RANGES; idx++) {
- iores[idx] = platform_get_resource(pdev, IORESOURCE_MEM,
- idx);
- if (!iores[idx]) {
- dev_err(&pdev->dev, "Invalid resource\n");
- return -EINVAL;
- }
-
- begin[idx] = devm_ioremap(&pdev->dev,
- iores[idx]->start,
- resource_size(iores[idx]));
- if (!begin[idx]) {
+ begin[idx] = devm_platform_get_and_ioremap_resource(
+ pdev, idx, &iores[idx]);
+ if (IS_ERR(begin[idx])) {
dev_err(&pdev->dev, "Unable to get registers: %s\n",
iores[idx]->name);
- return -ENOMEM;
+ return PTR_ERR(begin[idx]);
}
}
diff --git a/drivers/net/ethernet/renesas/rswitch.c b/drivers/net/ethernet/renesas/rswitch.c
index 8d18dae4d8fb..8ef52fc46a01 100644
--- a/drivers/net/ethernet/renesas/rswitch.c
+++ b/drivers/net/ethernet/renesas/rswitch.c
@@ -2046,15 +2046,8 @@ static int renesas_eth_sw_probe(struct platform_device *pdev)
{
const struct soc_device_attribute *attr;
struct rswitch_private *priv;
- struct resource *res;
int ret;
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "secure_base");
- if (!res) {
- dev_err(&pdev->dev, "invalid resource\n");
- return -EINVAL;
- }
-
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
@@ -2074,7 +2067,7 @@ static int renesas_eth_sw_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);
priv->pdev = pdev;
- priv->addr = devm_ioremap_resource(&pdev->dev, res);
+ priv->addr = devm_platform_ioremap_resource_byname(pdev, "secure_base");
if (IS_ERR(priv->addr))
return PTR_ERR(priv->addr);
diff --git a/drivers/net/ethernet/renesas/rtsn.c b/drivers/net/ethernet/renesas/rtsn.c
index 6b3f7fca8d15..bfe08facc707 100644
--- a/drivers/net/ethernet/renesas/rtsn.c
+++ b/drivers/net/ethernet/renesas/rtsn.c
@@ -1297,14 +1297,8 @@ static int rtsn_probe(struct platform_device *pdev)
ndev->netdev_ops = &rtsn_netdev_ops;
ndev->ethtool_ops = &rtsn_ethtool_ops;
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gptp");
- if (!res) {
- dev_err(&pdev->dev, "Can't find gptp resource\n");
- ret = -EINVAL;
- goto error_free;
- }
-
- priv->ptp_priv->addr = devm_ioremap_resource(&pdev->dev, res);
+ priv->ptp_priv->addr =
+ devm_platform_ioremap_resource_byname(pdev, "gptp");
if (IS_ERR(priv->ptp_priv->addr)) {
ret = PTR_ERR(priv->ptp_priv->addr);
goto error_free;
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 8887b8921009..d9a2cba60a11 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -3349,31 +3349,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
if (mdp->cd->tsu) {
int port = pdev->id < 0 ? 0 : pdev->id % 2;
- struct resource *rtsu;
- rtsu = platform_get_resource(pdev, IORESOURCE_MEM, 1);
- if (!rtsu) {
- dev_err(&pdev->dev, "no TSU resource\n");
- ret = -ENODEV;
- goto out_release;
- }
- /* We can only request the TSU region for the first port
- * of the two sharing this TSU for the probe to succeed...
- */
- if (port == 0 &&
- !devm_request_mem_region(&pdev->dev, rtsu->start,
- resource_size(rtsu),
- dev_name(&pdev->dev))) {
- dev_err(&pdev->dev, "can't request TSU resource.\n");
- ret = -EBUSY;
- goto out_release;
- }
/* ioremap the TSU registers */
- mdp->tsu_addr = devm_ioremap(&pdev->dev, rtsu->start,
- resource_size(rtsu));
- if (!mdp->tsu_addr) {
+ mdp->tsu_addr = devm_platform_ioremap_resource(pdev, 1);
+ if (IS_ERR(mdp->tsu_addr)) {
dev_err(&pdev->dev, "TSU region ioremap() failed.\n");
- ret = -ENOMEM;
+ ret = PTR_ERR(mdp->tsu_addr);
goto out_release;
}
mdp->port = port;
diff --git a/drivers/net/mdio/mdio-bcm-unimac.c b/drivers/net/mdio/mdio-bcm-unimac.c
index 074d96328f41..9796294d465a 100644
--- a/drivers/net/mdio/mdio-bcm-unimac.c
+++ b/drivers/net/mdio/mdio-bcm-unimac.c
@@ -239,7 +239,6 @@ static int unimac_mdio_probe(struct platform_device *pdev)
struct unimac_mdio_priv *priv;
struct device_node *np;
struct mii_bus *bus;
- struct resource *r;
int ret;
np = pdev->dev.of_node;
@@ -248,17 +247,13 @@ static int unimac_mdio_probe(struct platform_device *pdev)
if (!priv)
return -ENOMEM;
- r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!r)
- return -EINVAL;
-
/* Just ioremap, as this MDIO block is usually integrated into an
* Ethernet MAC controller register range
*/
- priv->base = devm_ioremap(&pdev->dev, r->start, resource_size(r));
- if (!priv->base) {
+ priv->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(priv->base)) {
dev_err(&pdev->dev, "failed to remap register\n");
- return -ENOMEM;
+ return PTR_ERR(priv->base);
}
if (of_property_read_u32(np, "clock-frequency", &priv->clk_freq))
diff --git a/drivers/net/mdio/mdio-ipq4019.c b/drivers/net/mdio/mdio-ipq4019.c
index dd3ed2d6430b..725e5c13d212 100644
--- a/drivers/net/mdio/mdio-ipq4019.c
+++ b/drivers/net/mdio/mdio-ipq4019.c
@@ -256,7 +256,7 @@ static int ipq_mdio_reset(struct mii_bus *bus)
/* To indicate CMN_PLL that ethernet_ldo has been ready if platform resource 1
* is specified in the device tree.
*/
- if (priv->eth_ldo_rdy) {
+ if (!IS_ERR(priv->eth_ldo_rdy)) {
val = readl(priv->eth_ldo_rdy);
val |= BIT(0);
writel(val, priv->eth_ldo_rdy);
@@ -327,7 +327,6 @@ static int ipq4019_mdio_probe(struct platform_device *pdev)
{
struct ipq4019_mdio_data *priv;
struct mii_bus *bus;
- struct resource *res;
int ret;
bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*priv));
@@ -351,9 +350,7 @@ static int ipq4019_mdio_probe(struct platform_device *pdev)
/* The platform resource is provided on the chipset IPQ5018 */
/* This resource is optional */
- res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
- if (res)
- priv->eth_ldo_rdy = devm_ioremap_resource(&pdev->dev, res);
+ priv->eth_ldo_rdy = devm_platform_ioremap_resource(pdev, 1);
bus->name = "ipq4019_mdio";
bus->read = ipq4019_mdio_read_c22;
diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c
index 6253a9ab8b69..716b22e9b93c 100644
--- a/drivers/net/mdio/mdio-ipq8064.c
+++ b/drivers/net/mdio/mdio-ipq8064.c
@@ -111,15 +111,11 @@ ipq8064_mdio_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
struct ipq8064_mdio *priv;
- struct resource res;
struct mii_bus *bus;
void __iomem *base;
int ret;
- if (of_address_to_resource(np, 0, &res))
- return -ENOMEM;
-
- base = devm_ioremap(&pdev->dev, res.start, resource_size(&res));
+ base = devm_platform_ioremap_resource(pdev, 0);
if (!base)
return -ENOMEM;
diff --git a/drivers/net/mdio/mdio-mux-bcm6368.c b/drivers/net/mdio/mdio-mux-bcm6368.c
index 476f8b72d020..fa369ff7d45c 100644
--- a/drivers/net/mdio/mdio-mux-bcm6368.c
+++ b/drivers/net/mdio/mdio-mux-bcm6368.c
@@ -90,7 +90,6 @@ static int bcm6368_mdiomux_probe(struct platform_device *pdev)
{
struct bcm6368_mdiomux_desc *md;
struct mii_bus *bus;
- struct resource *res;
int rc;
md = devm_kzalloc(&pdev->dev, sizeof(*md), GFP_KERNEL);
@@ -98,18 +97,14 @@ static int bcm6368_mdiomux_probe(struct platform_device *pdev)
return -ENOMEM;
md->dev = &pdev->dev;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res)
- return -EINVAL;
-
/*
* Just ioremap, as this MDIO block is usually integrated into an
* Ethernet MAC controller register range
*/
- md->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
- if (!md->base) {
+ md->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(md->base)) {
dev_err(&pdev->dev, "failed to ioremap register\n");
- return -ENOMEM;
+ return PTR_ERR(md->base);
}
md->mii_bus = devm_mdiobus_alloc(&pdev->dev);
diff --git a/drivers/net/mdio/mdio-octeon.c b/drivers/net/mdio/mdio-octeon.c
index 2beb83154d39..cb53dccbde1a 100644
--- a/drivers/net/mdio/mdio-octeon.c
+++ b/drivers/net/mdio/mdio-octeon.c
@@ -17,37 +17,20 @@ static int octeon_mdiobus_probe(struct platform_device *pdev)
{
struct cavium_mdiobus *bus;
struct mii_bus *mii_bus;
- struct resource *res_mem;
- resource_size_t mdio_phys;
- resource_size_t regsize;
union cvmx_smix_en smi_en;
- int err = -ENOENT;
+ int err;
mii_bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*bus));
if (!mii_bus)
return -ENOMEM;
- res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (res_mem == NULL) {
- dev_err(&pdev->dev, "found no memory resource\n");
- return -ENXIO;
- }
-
bus = mii_bus->priv;
bus->mii_bus = mii_bus;
- mdio_phys = res_mem->start;
- regsize = resource_size(res_mem);
- if (!devm_request_mem_region(&pdev->dev, mdio_phys, regsize,
- res_mem->name)) {
- dev_err(&pdev->dev, "request_mem_region failed\n");
- return -ENXIO;
- }
-
- bus->register_base = devm_ioremap(&pdev->dev, mdio_phys, regsize);
- if (!bus->register_base) {
+ bus->register_base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(bus->register_base)) {
dev_err(&pdev->dev, "dev_ioremap failed\n");
- return -ENOMEM;
+ return PTR_ERR(bus->register_base);
}
smi_en.u64 = 0;
--
2.47.0
Hi Rosen, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-modernize-ioremap-in-probe/20241110-073751 base: net-next/main patch link: https://lore.kernel.org/r/20241109233641.8313-1-rosenp%40gmail.com patch subject: [PATCH] net: modernize ioremap in probe config: arm-randconfig-r071-20241110 (https://download.01.org/0day-ci/archive/20241111/202411110835.tTxOya6U-lkp@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 14.2.0 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 <lkp@intel.com> | Reported-by: Dan Carpenter <dan.carpenter@linaro.org> | Closes: https://lore.kernel.org/r/202411110835.tTxOya6U-lkp@intel.com/ smatch warnings: drivers/net/ethernet/freescale/xgmac_mdio.c:395 xgmac_mdio_probe() error: uninitialized symbol 'res'. vim +/res +395 drivers/net/ethernet/freescale/xgmac_mdio.c 33897cc869eef8 Bill Pemberton 2012-12-03 371 static int xgmac_mdio_probe(struct platform_device *pdev) 9f35a7342cff0b Timur Tabi 2012-08-20 372 { ac53c26433b51f Marcin Wojtas 2021-06-25 373 struct fwnode_handle *fwnode; 73ee5442978b2d Shaohui Xie 2015-03-16 374 struct mdio_fsl_priv *priv; 15e7064e879335 Calvin Johnson 2021-06-11 375 struct resource *res; 15e7064e879335 Calvin Johnson 2021-06-11 376 struct mii_bus *bus; 9f35a7342cff0b Timur Tabi 2012-08-20 377 int ret; 9f35a7342cff0b Timur Tabi 2012-08-20 378 229f4bb47512ec Calvin Johnson 2020-06-22 379 /* In DPAA-1, MDIO is one of the many FMan sub-devices. The FMan 229f4bb47512ec Calvin Johnson 2020-06-22 380 * defines a register space that spans a large area, covering all the 229f4bb47512ec Calvin Johnson 2020-06-22 381 * subdevice areas. Therefore, MDIO cannot claim exclusive access to 229f4bb47512ec Calvin Johnson 2020-06-22 382 * this register area. 229f4bb47512ec Calvin Johnson 2020-06-22 383 */ 9f35a7342cff0b Timur Tabi 2012-08-20 384 1d14eb15dc2c39 Tobias Waldekranz 2022-01-26 385 bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(struct mdio_fsl_priv)); 9f35a7342cff0b Timur Tabi 2012-08-20 386 if (!bus) 9f35a7342cff0b Timur Tabi 2012-08-20 387 return -ENOMEM; 9f35a7342cff0b Timur Tabi 2012-08-20 388 9f35a7342cff0b Timur Tabi 2012-08-20 389 bus->name = "Freescale XGMAC MDIO Bus"; c0fc8e6dcee40c Andrew Lunn 2023-01-09 390 bus->read = xgmac_mdio_read_c22; c0fc8e6dcee40c Andrew Lunn 2023-01-09 391 bus->write = xgmac_mdio_write_c22; c0fc8e6dcee40c Andrew Lunn 2023-01-09 392 bus->read_c45 = xgmac_mdio_read_c45; c0fc8e6dcee40c Andrew Lunn 2023-01-09 393 bus->write_c45 = xgmac_mdio_write_c45; 9f35a7342cff0b Timur Tabi 2012-08-20 394 bus->parent = &pdev->dev; 229f4bb47512ec Calvin Johnson 2020-06-22 @395 snprintf(bus->id, MII_BUS_ID_SIZE, "%pa", &res->start); ^^^ res isn't initialized. 9f35a7342cff0b Timur Tabi 2012-08-20 396 73ee5442978b2d Shaohui Xie 2015-03-16 397 priv = bus->priv; 865bbb2945a161 Rosen Penev 2024-11-09 398 priv->mdio_base = devm_platform_ioremap_resource(pdev, 0); 865bbb2945a161 Rosen Penev 2024-11-09 399 if (IS_ERR(priv->mdio_base)) 865bbb2945a161 Rosen Penev 2024-11-09 400 return PTR_ERR(priv->mdio_base); 9f35a7342cff0b Timur Tabi 2012-08-20 401 15e7064e879335 Calvin Johnson 2021-06-11 402 /* For both ACPI and DT cases, endianness of MDIO controller 15e7064e879335 Calvin Johnson 2021-06-11 403 * needs to be specified using "little-endian" property. 15e7064e879335 Calvin Johnson 2021-06-11 404 */ 229f4bb47512ec Calvin Johnson 2020-06-22 405 priv->is_little_endian = device_property_read_bool(&pdev->dev, 07bf2e11ad0586 Julia Lawall 2016-08-05 406 "little-endian"); 73ee5442978b2d Shaohui Xie 2015-03-16 407 6198c722019774 Tobias Waldekranz 2022-01-18 408 priv->has_a009885 = device_property_read_bool(&pdev->dev, 6198c722019774 Tobias Waldekranz 2022-01-18 409 "fsl,erratum-a009885"); 229f4bb47512ec Calvin Johnson 2020-06-22 410 priv->has_a011043 = device_property_read_bool(&pdev->dev, 1d3ca681b9d957 Madalin Bucur 2020-01-22 411 "fsl,erratum-a011043"); 1d3ca681b9d957 Madalin Bucur 2020-01-22 412 909bea73485fab Tobias Waldekranz 2022-01-26 413 xgmac_mdio_set_suppress_preamble(bus); 909bea73485fab Tobias Waldekranz 2022-01-26 414 dd8f467eda72cd Tobias Waldekranz 2022-01-26 415 ret = xgmac_mdio_set_mdc_freq(bus); dd8f467eda72cd Tobias Waldekranz 2022-01-26 416 if (ret) dd8f467eda72cd Tobias Waldekranz 2022-01-26 417 return ret; dd8f467eda72cd Tobias Waldekranz 2022-01-26 418 105b0468d7b2e6 zhaoxiao 2022-08-18 419 fwnode = dev_fwnode(&pdev->dev); ac53c26433b51f Marcin Wojtas 2021-06-25 420 if (is_of_node(fwnode)) ac53c26433b51f Marcin Wojtas 2021-06-25 421 ret = of_mdiobus_register(bus, to_of_node(fwnode)); ac53c26433b51f Marcin Wojtas 2021-06-25 422 else if (is_acpi_node(fwnode)) ac53c26433b51f Marcin Wojtas 2021-06-25 423 ret = acpi_mdiobus_register(bus, fwnode); ac53c26433b51f Marcin Wojtas 2021-06-25 424 else ac53c26433b51f Marcin Wojtas 2021-06-25 425 ret = -EINVAL; 9f35a7342cff0b Timur Tabi 2012-08-20 426 if (ret) { 9f35a7342cff0b Timur Tabi 2012-08-20 427 dev_err(&pdev->dev, "cannot register MDIO bus\n"); 9f35a7342cff0b Timur Tabi 2012-08-20 428 return ret; 9f35a7342cff0b Timur Tabi 2012-08-20 429 } 9f35a7342cff0b Timur Tabi 2012-08-20 430 1d14eb15dc2c39 Tobias Waldekranz 2022-01-26 431 platform_set_drvdata(pdev, bus); 9f35a7342cff0b Timur Tabi 2012-08-20 432 9f35a7342cff0b Timur Tabi 2012-08-20 433 return 0; 9f35a7342cff0b Timur Tabi 2012-08-20 434 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
Hi Rosen, kernel test robot noticed the following build warnings: [auto build test WARNING on net-next/main] [also build test WARNING on next-20241108] [cannot apply to mkl-can-next/testing net/main linus/master v6.12-rc6] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-modernize-ioremap-in-probe/20241110-073751 base: net-next/main patch link: https://lore.kernel.org/r/20241109233641.8313-1-rosenp%40gmail.com patch subject: [PATCH] net: modernize ioremap in probe config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20241111/202411110419.EQz0nIvL-lkp@intel.com/config) compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241111/202411110419.EQz0nIvL-lkp@intel.com/reproduce) 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 <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202411110419.EQz0nIvL-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from drivers/net/ethernet/freescale/xgmac_mdio.c:16: In file included from include/linux/acpi_mdio.h:9: In file included from include/linux/phy.h:16: In file included from include/linux/ethtool.h:18: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:10: In file included from include/linux/mm.h:2213: include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ In file included from drivers/net/ethernet/freescale/xgmac_mdio.c:16: In file included from include/linux/acpi_mdio.h:9: In file included from include/linux/phy.h:16: In file included from include/linux/ethtool.h:18: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:14: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 548 | val = __raw_readb(PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) | ^ In file included from drivers/net/ethernet/freescale/xgmac_mdio.c:16: In file included from include/linux/acpi_mdio.h:9: In file included from include/linux/phy.h:16: In file included from include/linux/ethtool.h:18: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:14: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu' 35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) | ^ In file included from drivers/net/ethernet/freescale/xgmac_mdio.c:16: In file included from include/linux/acpi_mdio.h:9: In file included from include/linux/phy.h:16: In file included from include/linux/ethtool.h:18: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:14: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 585 | __raw_writeb(value, PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ >> drivers/net/ethernet/freescale/xgmac_mdio.c:395:45: warning: variable 'res' is uninitialized when used here [-Wuninitialized] 395 | snprintf(bus->id, MII_BUS_ID_SIZE, "%pa", &res->start); | ^~~ drivers/net/ethernet/freescale/xgmac_mdio.c:375:22: note: initialize the variable 'res' to silence this warning 375 | struct resource *res; | ^ | = NULL 8 warnings generated. vim +/res +395 drivers/net/ethernet/freescale/xgmac_mdio.c 909bea73485fab5 Tobias Waldekranz 2022-01-26 370 33897cc869eef8b Bill Pemberton 2012-12-03 371 static int xgmac_mdio_probe(struct platform_device *pdev) 9f35a7342cff0be Timur Tabi 2012-08-20 372 { ac53c26433b51f1 Marcin Wojtas 2021-06-25 373 struct fwnode_handle *fwnode; 73ee5442978b2dd Shaohui Xie 2015-03-16 374 struct mdio_fsl_priv *priv; 15e7064e8793352 Calvin Johnson 2021-06-11 375 struct resource *res; 15e7064e8793352 Calvin Johnson 2021-06-11 376 struct mii_bus *bus; 9f35a7342cff0be Timur Tabi 2012-08-20 377 int ret; 9f35a7342cff0be Timur Tabi 2012-08-20 378 229f4bb47512ece Calvin Johnson 2020-06-22 379 /* In DPAA-1, MDIO is one of the many FMan sub-devices. The FMan 229f4bb47512ece Calvin Johnson 2020-06-22 380 * defines a register space that spans a large area, covering all the 229f4bb47512ece Calvin Johnson 2020-06-22 381 * subdevice areas. Therefore, MDIO cannot claim exclusive access to 229f4bb47512ece Calvin Johnson 2020-06-22 382 * this register area. 229f4bb47512ece Calvin Johnson 2020-06-22 383 */ 9f35a7342cff0be Timur Tabi 2012-08-20 384 1d14eb15dc2c396 Tobias Waldekranz 2022-01-26 385 bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(struct mdio_fsl_priv)); 9f35a7342cff0be Timur Tabi 2012-08-20 386 if (!bus) 9f35a7342cff0be Timur Tabi 2012-08-20 387 return -ENOMEM; 9f35a7342cff0be Timur Tabi 2012-08-20 388 9f35a7342cff0be Timur Tabi 2012-08-20 389 bus->name = "Freescale XGMAC MDIO Bus"; c0fc8e6dcee40cf Andrew Lunn 2023-01-09 390 bus->read = xgmac_mdio_read_c22; c0fc8e6dcee40cf Andrew Lunn 2023-01-09 391 bus->write = xgmac_mdio_write_c22; c0fc8e6dcee40cf Andrew Lunn 2023-01-09 392 bus->read_c45 = xgmac_mdio_read_c45; c0fc8e6dcee40cf Andrew Lunn 2023-01-09 393 bus->write_c45 = xgmac_mdio_write_c45; 9f35a7342cff0be Timur Tabi 2012-08-20 394 bus->parent = &pdev->dev; 229f4bb47512ece Calvin Johnson 2020-06-22 @395 snprintf(bus->id, MII_BUS_ID_SIZE, "%pa", &res->start); 9f35a7342cff0be Timur Tabi 2012-08-20 396 73ee5442978b2dd Shaohui Xie 2015-03-16 397 priv = bus->priv; 865bbb2945a1614 Rosen Penev 2024-11-09 398 priv->mdio_base = devm_platform_ioremap_resource(pdev, 0); 865bbb2945a1614 Rosen Penev 2024-11-09 399 if (IS_ERR(priv->mdio_base)) 865bbb2945a1614 Rosen Penev 2024-11-09 400 return PTR_ERR(priv->mdio_base); 9f35a7342cff0be Timur Tabi 2012-08-20 401 15e7064e8793352 Calvin Johnson 2021-06-11 402 /* For both ACPI and DT cases, endianness of MDIO controller 15e7064e8793352 Calvin Johnson 2021-06-11 403 * needs to be specified using "little-endian" property. 15e7064e8793352 Calvin Johnson 2021-06-11 404 */ 229f4bb47512ece Calvin Johnson 2020-06-22 405 priv->is_little_endian = device_property_read_bool(&pdev->dev, 07bf2e11ad05868 Julia Lawall 2016-08-05 406 "little-endian"); 73ee5442978b2dd Shaohui Xie 2015-03-16 407 6198c722019774d Tobias Waldekranz 2022-01-18 408 priv->has_a009885 = device_property_read_bool(&pdev->dev, 6198c722019774d Tobias Waldekranz 2022-01-18 409 "fsl,erratum-a009885"); 229f4bb47512ece Calvin Johnson 2020-06-22 410 priv->has_a011043 = device_property_read_bool(&pdev->dev, 1d3ca681b9d9575 Madalin Bucur 2020-01-22 411 "fsl,erratum-a011043"); 1d3ca681b9d9575 Madalin Bucur 2020-01-22 412 909bea73485fab5 Tobias Waldekranz 2022-01-26 413 xgmac_mdio_set_suppress_preamble(bus); 909bea73485fab5 Tobias Waldekranz 2022-01-26 414 dd8f467eda72cda Tobias Waldekranz 2022-01-26 415 ret = xgmac_mdio_set_mdc_freq(bus); dd8f467eda72cda Tobias Waldekranz 2022-01-26 416 if (ret) dd8f467eda72cda Tobias Waldekranz 2022-01-26 417 return ret; dd8f467eda72cda Tobias Waldekranz 2022-01-26 418 105b0468d7b2e67 zhaoxiao 2022-08-18 419 fwnode = dev_fwnode(&pdev->dev); ac53c26433b51f1 Marcin Wojtas 2021-06-25 420 if (is_of_node(fwnode)) ac53c26433b51f1 Marcin Wojtas 2021-06-25 421 ret = of_mdiobus_register(bus, to_of_node(fwnode)); ac53c26433b51f1 Marcin Wojtas 2021-06-25 422 else if (is_acpi_node(fwnode)) ac53c26433b51f1 Marcin Wojtas 2021-06-25 423 ret = acpi_mdiobus_register(bus, fwnode); ac53c26433b51f1 Marcin Wojtas 2021-06-25 424 else ac53c26433b51f1 Marcin Wojtas 2021-06-25 425 ret = -EINVAL; 9f35a7342cff0be Timur Tabi 2012-08-20 426 if (ret) { 9f35a7342cff0be Timur Tabi 2012-08-20 427 dev_err(&pdev->dev, "cannot register MDIO bus\n"); 9f35a7342cff0be Timur Tabi 2012-08-20 428 return ret; 9f35a7342cff0be Timur Tabi 2012-08-20 429 } 9f35a7342cff0be Timur Tabi 2012-08-20 430 1d14eb15dc2c396 Tobias Waldekranz 2022-01-26 431 platform_set_drvdata(pdev, bus); 9f35a7342cff0be Timur Tabi 2012-08-20 432 9f35a7342cff0be Timur Tabi 2012-08-20 433 return 0; 9f35a7342cff0be Timur Tabi 2012-08-20 434 } 9f35a7342cff0be Timur Tabi 2012-08-20 435 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
> resource aquisition and ioremap can be performed in one step. Will another imperative wording become helpful for an improved change description? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.12-rc6#n94 Regards, Markus
© 2016 - 2024 Red Hat, Inc.