Simplifies the probe function by a bit and allows removing the _remove
function such that devm now handles all cleanup.
printk gets converted to dev_err as np is now gone.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/rgmii.c | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/rgmii.c b/drivers/net/ethernet/ibm/emac/rgmii.c
index 8c646a5e5c56..d116de4e38a0 100644
--- a/drivers/net/ethernet/ibm/emac/rgmii.c
+++ b/drivers/net/ethernet/ibm/emac/rgmii.c
@@ -216,9 +216,7 @@ void *rgmii_dump_regs(struct platform_device *ofdev, void *buf)
static int rgmii_probe(struct platform_device *ofdev)
{
- struct device_node *np = ofdev->dev.of_node;
struct rgmii_instance *dev;
- struct resource regs;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
GFP_KERNEL);
@@ -228,16 +226,10 @@ static int rgmii_probe(struct platform_device *ofdev)
mutex_init(&dev->lock);
dev->ofdev = ofdev;
- if (of_address_to_resource(np, 0, ®s)) {
- printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- return -ENXIO;
- }
-
- dev->base = (struct rgmii_regs __iomem *)ioremap(regs.start,
- sizeof(struct rgmii_regs));
- if (dev->base == NULL) {
- printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- return -ENOMEM;
+ dev->base = devm_platform_get_resource(ofdev, 0);
+ if (IS_ERR(dev->base)) {
+ dev_err(&ofdev->dev, "can't map device registers");
+ return PTR_ERR(dev->base);
}
/* Check for RGMII flags */
@@ -265,15 +257,6 @@ static int rgmii_probe(struct platform_device *ofdev)
return 0;
}
-static void rgmii_remove(struct platform_device *ofdev)
-{
- struct rgmii_instance *dev = platform_get_drvdata(ofdev);
-
- WARN_ON(dev->users != 0);
-
- iounmap(dev->base);
-}
-
static const struct of_device_id rgmii_match[] =
{
{
@@ -291,7 +274,6 @@ static struct platform_driver rgmii_driver = {
.of_match_table = rgmii_match,
},
.probe = rgmii_probe,
- .remove_new = rgmii_remove,
};
module_platform_driver(rgmii_driver);
--
2.46.2
Hi Rosen,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-ibm-emac-remove-custom-init-exit-functions/20241001-020553
base: net-next/main
patch link: https://lore.kernel.org/r/20240930180036.87598-10-rosenp%40gmail.com
patch subject: [PATCH net-next 09/13] net: ibm: emac: rgmii: devm_platform_get_resource
config: powerpc-canyonlands_defconfig (https://download.01.org/0day-ci/archive/20241001/202410011626.D4gEmLU8-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 7773243d9916f98ba0ffce0c3a960e4aa9f03e81)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241001/202410011626.D4gEmLU8-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/202410011626.D4gEmLU8-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/net/ethernet/ibm/emac/rgmii.c:21:
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:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/powerpc/include/asm/cacheflush.h:7:
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_"
| ~~~~~~~~~~~ ^ ~~~
>> drivers/net/ethernet/ibm/emac/rgmii.c:229:14: error: call to undeclared function 'devm_platform_get_resource'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
229 | dev->base = devm_platform_get_resource(ofdev, 0);
| ^
drivers/net/ethernet/ibm/emac/rgmii.c:229:14: note: did you mean 'platform_get_resource'?
include/linux/platform_device.h:58:25: note: 'platform_get_resource' declared here
58 | extern struct resource *platform_get_resource(struct platform_device *,
| ^
>> drivers/net/ethernet/ibm/emac/rgmii.c:229:12: error: incompatible integer to pointer conversion assigning to 'struct rgmii_regs *' from 'int' [-Wint-conversion]
229 | dev->base = devm_platform_get_resource(ofdev, 0);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 2 errors generated.
vim +/devm_platform_get_resource +229 drivers/net/ethernet/ibm/emac/rgmii.c
215
216
217 static int rgmii_probe(struct platform_device *ofdev)
218 {
219 struct rgmii_instance *dev;
220
221 dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
222 GFP_KERNEL);
223 if (!dev)
224 return -ENOMEM;
225
226 mutex_init(&dev->lock);
227 dev->ofdev = ofdev;
228
> 229 dev->base = devm_platform_get_resource(ofdev, 0);
230 if (IS_ERR(dev->base)) {
231 dev_err(&ofdev->dev, "can't map device registers");
232 return PTR_ERR(dev->base);
233 }
234
235 /* Check for RGMII flags */
236 if (of_property_read_bool(ofdev->dev.of_node, "has-mdio"))
237 dev->flags |= EMAC_RGMII_FLAG_HAS_MDIO;
238
239 /* CAB lacks the right properties, fix this up */
240 if (of_device_is_compatible(ofdev->dev.of_node, "ibm,rgmii-axon"))
241 dev->flags |= EMAC_RGMII_FLAG_HAS_MDIO;
242
243 DBG2(dev, " Boot FER = 0x%08x, SSR = 0x%08x\n",
244 in_be32(&dev->base->fer), in_be32(&dev->base->ssr));
245
246 /* Disable all inputs by default */
247 out_be32(&dev->base->fer, 0);
248
249 printk(KERN_INFO
250 "RGMII %pOF initialized with%s MDIO support\n",
251 ofdev->dev.of_node,
252 (dev->flags & EMAC_RGMII_FLAG_HAS_MDIO) ? "" : "out");
253
254 wmb();
255 platform_set_drvdata(ofdev, dev);
256
257 return 0;
258 }
259
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Rosen,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-ibm-emac-remove-custom-init-exit-functions/20241001-020553
base: net-next/main
patch link: https://lore.kernel.org/r/20240930180036.87598-10-rosenp%40gmail.com
patch subject: [PATCH net-next 09/13] net: ibm: emac: rgmii: devm_platform_get_resource
config: powerpc-fsp2_defconfig (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-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/202410011636.QtBtiUKi-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/ibm/emac/rgmii.c: In function 'rgmii_probe':
>> drivers/net/ethernet/ibm/emac/rgmii.c:229:21: error: implicit declaration of function 'devm_platform_get_resource'; did you mean 'platform_get_resource'? [-Wimplicit-function-declaration]
229 | dev->base = devm_platform_get_resource(ofdev, 0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| platform_get_resource
>> drivers/net/ethernet/ibm/emac/rgmii.c:229:19: error: assignment to 'struct rgmii_regs *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
229 | dev->base = devm_platform_get_resource(ofdev, 0);
| ^
vim +229 drivers/net/ethernet/ibm/emac/rgmii.c
215
216
217 static int rgmii_probe(struct platform_device *ofdev)
218 {
219 struct rgmii_instance *dev;
220
221 dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
222 GFP_KERNEL);
223 if (!dev)
224 return -ENOMEM;
225
226 mutex_init(&dev->lock);
227 dev->ofdev = ofdev;
228
> 229 dev->base = devm_platform_get_resource(ofdev, 0);
230 if (IS_ERR(dev->base)) {
231 dev_err(&ofdev->dev, "can't map device registers");
232 return PTR_ERR(dev->base);
233 }
234
235 /* Check for RGMII flags */
236 if (of_property_read_bool(ofdev->dev.of_node, "has-mdio"))
237 dev->flags |= EMAC_RGMII_FLAG_HAS_MDIO;
238
239 /* CAB lacks the right properties, fix this up */
240 if (of_device_is_compatible(ofdev->dev.of_node, "ibm,rgmii-axon"))
241 dev->flags |= EMAC_RGMII_FLAG_HAS_MDIO;
242
243 DBG2(dev, " Boot FER = 0x%08x, SSR = 0x%08x\n",
244 in_be32(&dev->base->fer), in_be32(&dev->base->ssr));
245
246 /* Disable all inputs by default */
247 out_be32(&dev->base->fer, 0);
248
249 printk(KERN_INFO
250 "RGMII %pOF initialized with%s MDIO support\n",
251 ofdev->dev.of_node,
252 (dev->flags & EMAC_RGMII_FLAG_HAS_MDIO) ? "" : "out");
253
254 wmb();
255 platform_set_drvdata(ofdev, dev);
256
257 return 0;
258 }
259
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Tue, Oct 01, 2024 at 04:24:39PM +0800, kernel test robot wrote: > Hi Rosen, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on net-next/main] > > url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-ibm-emac-remove-custom-init-exit-functions/20241001-020553 > base: net-next/main > patch link: https://lore.kernel.org/r/20240930180036.87598-10-rosenp%40gmail.com > patch subject: [PATCH net-next 09/13] net: ibm: emac: rgmii: devm_platform_get_resource > config: powerpc-fsp2_defconfig (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-lkp@intel.com/config) > compiler: powerpc-linux-gcc (GCC) 14.1.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-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/202410011636.QtBtiUKi-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > drivers/net/ethernet/ibm/emac/rgmii.c: In function 'rgmii_probe': > >> drivers/net/ethernet/ibm/emac/rgmii.c:229:21: error: implicit declaration of function 'devm_platform_get_resource'; did you mean 'platform_get_resource'? [-Wimplicit-function-declaration] > 229 | dev->base = devm_platform_get_resource(ofdev, 0); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > | platform_get_resource Hi Rosen, I'm curious to know where devm_platform_get_resource comes from. In any case, it would need to be present in net-next, when patches that use it are posted, for use of it to be accepted there.
On Tue, Oct 1, 2024 at 6:25 AM Simon Horman <horms@kernel.org> wrote: > > On Tue, Oct 01, 2024 at 04:24:39PM +0800, kernel test robot wrote: > > Hi Rosen, > > > > kernel test robot noticed the following build errors: > > > > [auto build test ERROR on net-next/main] > > > > url: https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/net-ibm-emac-remove-custom-init-exit-functions/20241001-020553 > > base: net-next/main > > patch link: https://lore.kernel.org/r/20240930180036.87598-10-rosenp%40gmail.com > > patch subject: [PATCH net-next 09/13] net: ibm: emac: rgmii: devm_platform_get_resource > > config: powerpc-fsp2_defconfig (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-lkp@intel.com/config) > > compiler: powerpc-linux-gcc (GCC) 14.1.0 > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241001/202410011636.QtBtiUKi-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/202410011636.QtBtiUKi-lkp@intel.com/ > > > > All errors (new ones prefixed by >>): > > > > drivers/net/ethernet/ibm/emac/rgmii.c: In function 'rgmii_probe': > > >> drivers/net/ethernet/ibm/emac/rgmii.c:229:21: error: implicit declaration of function 'devm_platform_get_resource'; did you mean 'platform_get_resource'? [-Wimplicit-function-declaration] > > 229 | dev->base = devm_platform_get_resource(ofdev, 0); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > | platform_get_resource > > Hi Rosen, > > I'm curious to know where devm_platform_get_resource comes from. Lovely typo. > > In any case, it would need to be present in net-next, when patches that use > it are posted, for use of it to be accepted there.
© 2016 - 2026 Red Hat, Inc.