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 - 2024 Red Hat, Inc.