Hi Florian, I love your patch! Yet something to improve: [auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Florian-Fainelli/of-mdio-Fall-back-to-mdiobus_register-with-np-is-NULL/20180516-203317 config: arm-omap2plus_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All error/warnings (new ones prefixed by >>): drivers/net//ethernet/ti/davinci_mdio.c: In function 'davinci_mdio_probe': >> drivers/net//ethernet/ti/davinci_mdio.c:457:12: error: invalid storage class for function 'davinci_mdio_remove' static int davinci_mdio_remove(struct platform_device *pdev) ^~~~~~~~~~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:457:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static int davinci_mdio_remove(struct platform_device *pdev) ^~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:471:12: error: invalid storage class for function 'davinci_mdio_runtime_suspend' static int davinci_mdio_runtime_suspend(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:485:12: error: invalid storage class for function 'davinci_mdio_runtime_resume' static int davinci_mdio_runtime_resume(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:495:12: error: invalid storage class for function 'davinci_mdio_suspend' static int davinci_mdio_suspend(struct device *dev) ^~~~~~~~~~~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:512:12: error: invalid storage class for function 'davinci_mdio_resume' static int davinci_mdio_resume(struct device *dev) ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/device.h:23:0, from include/linux/platform_device.h:14, from drivers/net//ethernet/ti/davinci_mdio.c:29: >> drivers/net//ethernet/ti/davinci_mdio.c:527:21: error: initializer element is not constant SET_RUNTIME_PM_OPS(davinci_mdio_runtime_suspend, ^ include/linux/pm.h:354:21: note: in definition of macro 'SET_RUNTIME_PM_OPS' .runtime_suspend = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:527:21: note: (near initialization for 'davinci_mdio_pm_ops.runtime_suspend') SET_RUNTIME_PM_OPS(davinci_mdio_runtime_suspend, ^ include/linux/pm.h:354:21: note: in definition of macro 'SET_RUNTIME_PM_OPS' .runtime_suspend = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:528:7: error: initializer element is not constant davinci_mdio_runtime_resume, NULL) ^ include/linux/pm.h:355:20: note: in definition of macro 'SET_RUNTIME_PM_OPS' .runtime_resume = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:528:7: note: (near initialization for 'davinci_mdio_pm_ops.runtime_resume') davinci_mdio_runtime_resume, NULL) ^ include/linux/pm.h:355:20: note: in definition of macro 'SET_RUNTIME_PM_OPS' .runtime_resume = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:330:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .suspend_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: note: (near initialization for 'davinci_mdio_pm_ops.suspend_late') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:330:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .suspend_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:331:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .resume_early = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.resume_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:331:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .resume_early = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:332:17: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .freeze_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: note: (near initialization for 'davinci_mdio_pm_ops.freeze_late') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:332:17: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .freeze_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:333:16: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .thaw_early = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.thaw_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:333:16: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .thaw_early = resume_fn, \ ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:334:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .poweroff_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:31: note: (near initialization for 'davinci_mdio_pm_ops.poweroff_late') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:334:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .poweroff_late = suspend_fn, \ ^~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:335:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .restore_early = resume_fn, ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.restore_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:335:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .restore_early = resume_fn, ^~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:539:12: error: initializer element is not constant .remove = davinci_mdio_remove, ^~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:539:12: note: (near initialization for 'davinci_mdio_driver.remove') >> drivers/net//ethernet/ti/davinci_mdio.c:542:19: error: invalid storage class for function 'davinci_mdio_init' static int __init davinci_mdio_init(void) ^~~~~~~~~~~~~~~~~ In file included from include/linux/printk.h:6:0, from include/linux/kernel.h:14, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/net//ethernet/ti/davinci_mdio.c:27: drivers/net//ethernet/ti/davinci_mdio.c:546:17: error: initializer element is not constant device_initcall(davinci_mdio_init); ^ include/linux/init.h:172:58: note: in definition of macro '__define_initcall' __attribute__((__section__(".initcall" #id ".init"))) = fn; ^~ >> drivers/net//ethernet/ti/davinci_mdio.c:546:1: note: in expansion of macro 'device_initcall' device_initcall(davinci_mdio_init); ^~~~~~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:548:20: error: invalid storage class for function 'davinci_mdio_exit' static void __exit davinci_mdio_exit(void) ^~~~~~~~~~~~~~~~~ drivers/net//ethernet/ti/davinci_mdio.c:548:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static void __exit davinci_mdio_exit(void) ^~~~~~ In file included from include/linux/printk.h:6:0, from include/linux/kernel.h:14, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/net//ethernet/ti/davinci_mdio.c:27: drivers/net//ethernet/ti/davinci_mdio.c:552:13: error: initializer element is not constant module_exit(davinci_mdio_exit); ^ include/linux/init.h:209:50: note: in definition of macro '__exitcall' static exitcall_t __exitcall_##fn __exit_call = fn ^~ >> drivers/net//ethernet/ti/davinci_mdio.c:552:1: note: in expansion of macro 'module_exit' module_exit(davinci_mdio_exit); ^~~~~~~~~~~ In file included from include/linux/module.h:18:0, from drivers/net//ethernet/ti/davinci_mdio.c:27: >> include/linux/moduleparam.h:28:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] struct __UNIQUE_ID(name) {} ^ include/linux/module.h:161:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:199:34: note: in expansion of macro 'MODULE_INFO' #define MODULE_LICENSE(_license) MODULE_INFO(license, _license) ^~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:554:1: note: in expansion of macro 'MODULE_LICENSE' MODULE_LICENSE("GPL"); ^~~~~~~~~~~~~~ In file included from <command-line>:0:0: >> include/linux/compiler-gcc.h:193:45: error: expected declaration or statement at end of input #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^ include/linux/compiler_types.h:52:23: note: in definition of macro '___PASTE' #define ___PASTE(a,b) a##b ^ include/linux/compiler-gcc.h:193:29: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/compiler_types.h:53:22: note: in expansion of macro '___PASTE' #define __PASTE(a,b) ___PASTE(a,b) ^~~~~~~~ include/linux/compiler-gcc.h:193:37: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/moduleparam.h:28:10: note: in expansion of macro '__UNIQUE_ID' struct __UNIQUE_ID(name) {} ^~~~~~~~~~~ include/linux/module.h:161:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:208:42: note: in expansion of macro 'MODULE_INFO' #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) ^~~~~~~~~~~ >> drivers/net//ethernet/ti/davinci_mdio.c:555:1: note: in expansion of macro 'MODULE_DESCRIPTION' MODULE_DESCRIPTION("DaVinci MDIO driver"); ^~~~~~~~~~~~~~~~~~ At top level: drivers/net//ethernet/ti/davinci_mdio.c:357:12: warning: 'davinci_mdio_probe' defined but not used [-Wunused-function] static int davinci_mdio_probe(struct platform_device *pdev) ^~~~~~~~~~~~~~~~~~ -- include/linux/pm.h:331:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .resume_early = resume_fn, \ ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.resume_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:331:18: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .resume_early = resume_fn, \ ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:31: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:332:17: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .freeze_late = suspend_fn, \ ^~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:31: note: (near initialization for 'davinci_mdio_pm_ops.freeze_late') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:332:17: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .freeze_late = suspend_fn, \ ^~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:53: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:333:16: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .thaw_early = resume_fn, \ ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.thaw_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:333:16: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .thaw_early = resume_fn, \ ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:31: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:334:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .poweroff_late = suspend_fn, \ ^~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:31: note: (near initialization for 'davinci_mdio_pm_ops.poweroff_late') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:334:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .poweroff_late = suspend_fn, \ ^~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:53: error: initializer element is not constant SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:335:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .restore_early = resume_fn, ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:529:53: note: (near initialization for 'davinci_mdio_pm_ops.restore_early') SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) ^ include/linux/pm.h:335:19: note: in definition of macro 'SET_LATE_SYSTEM_SLEEP_PM_OPS' .restore_early = resume_fn, ^~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:539:12: error: initializer element is not constant .remove = davinci_mdio_remove, ^~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:539:12: note: (near initialization for 'davinci_mdio_driver.remove') drivers/net/ethernet/ti/davinci_mdio.c:542:19: error: invalid storage class for function 'davinci_mdio_init' static int __init davinci_mdio_init(void) ^~~~~~~~~~~~~~~~~ In file included from include/linux/printk.h:6:0, from include/linux/kernel.h:14, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/net/ethernet/ti/davinci_mdio.c:27: drivers/net/ethernet/ti/davinci_mdio.c:546:17: error: initializer element is not constant device_initcall(davinci_mdio_init); ^ include/linux/init.h:172:58: note: in definition of macro '__define_initcall' __attribute__((__section__(".initcall" #id ".init"))) = fn; ^~ drivers/net/ethernet/ti/davinci_mdio.c:546:1: note: in expansion of macro 'device_initcall' device_initcall(davinci_mdio_init); ^~~~~~~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:548:20: error: invalid storage class for function 'davinci_mdio_exit' static void __exit davinci_mdio_exit(void) ^~~~~~~~~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:548:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static void __exit davinci_mdio_exit(void) ^~~~~~ In file included from include/linux/printk.h:6:0, from include/linux/kernel.h:14, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/net/ethernet/ti/davinci_mdio.c:27: drivers/net/ethernet/ti/davinci_mdio.c:552:13: error: initializer element is not constant module_exit(davinci_mdio_exit); ^ include/linux/init.h:209:50: note: in definition of macro '__exitcall' static exitcall_t __exitcall_##fn __exit_call = fn ^~ drivers/net/ethernet/ti/davinci_mdio.c:552:1: note: in expansion of macro 'module_exit' module_exit(davinci_mdio_exit); ^~~~~~~~~~~ In file included from include/linux/module.h:18:0, from drivers/net/ethernet/ti/davinci_mdio.c:27: >> include/linux/moduleparam.h:28:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] struct __UNIQUE_ID(name) {} ^ include/linux/module.h:161:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:199:34: note: in expansion of macro 'MODULE_INFO' #define MODULE_LICENSE(_license) MODULE_INFO(license, _license) ^~~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:554:1: note: in expansion of macro 'MODULE_LICENSE' MODULE_LICENSE("GPL"); ^~~~~~~~~~~~~~ In file included from <command-line>:0:0: >> include/linux/compiler-gcc.h:193:45: error: expected declaration or statement at end of input #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^ include/linux/compiler_types.h:52:23: note: in definition of macro '___PASTE' #define ___PASTE(a,b) a##b ^ include/linux/compiler-gcc.h:193:29: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/compiler_types.h:53:22: note: in expansion of macro '___PASTE' #define __PASTE(a,b) ___PASTE(a,b) ^~~~~~~~ include/linux/compiler-gcc.h:193:37: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/moduleparam.h:28:10: note: in expansion of macro '__UNIQUE_ID' struct __UNIQUE_ID(name) {} ^~~~~~~~~~~ include/linux/module.h:161:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:208:42: note: in expansion of macro 'MODULE_INFO' #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) ^~~~~~~~~~~ drivers/net/ethernet/ti/davinci_mdio.c:555:1: note: in expansion of macro 'MODULE_DESCRIPTION' MODULE_DESCRIPTION("DaVinci MDIO driver"); ^~~~~~~~~~~~~~~~~~ At top level: drivers/net/ethernet/ti/davinci_mdio.c:357:12: warning: 'davinci_mdio_probe' defined but not used [-Wunused-function] static int davinci_mdio_probe(struct platform_device *pdev) ^~~~~~~~~~~~~~~~~~ vim +/davinci_mdio_remove +457 drivers/net//ethernet/ti/davinci_mdio.c f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 456 e38921d4 drivers/net/ethernet/ti/davinci_mdio.c Bill Pemberton 2012-12-03 @457 static int davinci_mdio_remove(struct platform_device *pdev) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 458 { 84ce22df drivers/net/ethernet/ti/davinci_mdio.c Libo Chen 2013-08-19 459 struct davinci_mdio_data *data = platform_get_drvdata(pdev); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 460 50d0636e drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2014-04-30 461 if (data->bus) b27393ae drivers/net/ethernet/ti/davinci_mdio.c Bin Liu 2012-08-30 462 mdiobus_unregister(data->bus); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 463 8ea63bba drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 464 pm_runtime_dont_use_autosuspend(&pdev->dev); 8e476d9d drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2012-07-17 465 pm_runtime_disable(&pdev->dev); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 466 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 467 return 0; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 468 } f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 469 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 470 #ifdef CONFIG_PM 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 @471 static int davinci_mdio_runtime_suspend(struct device *dev) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 472 { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 473 struct davinci_mdio_data *data = dev_get_drvdata(dev); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 474 u32 ctrl; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 475 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 476 /* shutdown the scan state machine */ f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 477 ctrl = __raw_readl(&data->regs->control); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 478 ctrl &= ~CONTROL_ENABLE; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 479 __raw_writel(ctrl, &data->regs->control); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 480 wait_for_idle(data); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 481 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 482 return 0; 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 483 } 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 484 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 @485 static int davinci_mdio_runtime_resume(struct device *dev) 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 486 { 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 487 struct davinci_mdio_data *data = dev_get_drvdata(dev); 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 488 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 489 davinci_mdio_enable(data); 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 490 return 0; 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 491 } 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 492 #endif 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 493 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 494 #ifdef CONFIG_PM_SLEEP 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 @495 static int davinci_mdio_suspend(struct device *dev) 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 496 { 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 497 struct davinci_mdio_data *data = dev_get_drvdata(dev); 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 498 int ret = 0; 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 499 8ea63bba drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 500 data->active_in_suspend = !pm_runtime_status_suspended(dev); 8ea63bba drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 501 if (data->active_in_suspend) 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 502 ret = pm_runtime_force_suspend(dev); 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 503 if (ret < 0) 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 504 return ret; 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 505 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 506 /* Select sleep pin state */ 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 507 pinctrl_pm_select_sleep_state(dev); 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 508 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 509 return 0; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 510 } f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 511 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @512 static int davinci_mdio_resume(struct device *dev) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 513 { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 514 struct davinci_mdio_data *data = dev_get_drvdata(dev); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 515 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 516 /* Select default pin state */ 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 517 pinctrl_pm_select_default_state(dev); 5c0e3580 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2013-06-06 518 8ea63bba drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 519 if (data->active_in_suspend) 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 520 pm_runtime_force_resume(dev); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 521 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 522 return 0; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 523 } 2f5c54ce drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2015-02-27 524 #endif f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 525 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 526 static const struct dev_pm_ops davinci_mdio_pm_ops = { 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 @527 SET_RUNTIME_PM_OPS(davinci_mdio_runtime_suspend, 651652aa drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2016-06-24 528 davinci_mdio_runtime_resume, NULL) 2f5c54ce drivers/net/ethernet/ti/davinci_mdio.c Grygorii Strashko 2015-02-27 529 SET_LATE_SYSTEM_SLEEP_PM_OPS(davinci_mdio_suspend, davinci_mdio_resume) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 530 }; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 531 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 532 static struct platform_driver davinci_mdio_driver = { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 533 .driver = { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 534 .name = "davinci_mdio", f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 535 .pm = &davinci_mdio_pm_ops, ec03e6a8 drivers/net/ethernet/ti/davinci_mdio.c Mugunthan V N 2012-08-06 536 .of_match_table = of_match_ptr(davinci_mdio_of_mtable), f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 537 }, f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 538 .probe = davinci_mdio_probe, e38921d4 drivers/net/ethernet/ti/davinci_mdio.c Bill Pemberton 2012-12-03 @539 .remove = davinci_mdio_remove, f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 540 }; f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 541 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @542 static int __init davinci_mdio_init(void) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 543 { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 544 return platform_driver_register(&davinci_mdio_driver); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 545 } f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @546 device_initcall(davinci_mdio_init); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 547 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @548 static void __exit davinci_mdio_exit(void) f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 549 { f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 550 platform_driver_unregister(&davinci_mdio_driver); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 551 } f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @552 module_exit(davinci_mdio_exit); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 553 f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @554 MODULE_LICENSE("GPL"); f20136eb drivers/net/davinci_mdio.c Cyril Chemparathy 2010-09-15 @555 MODULE_DESCRIPTION("DaVinci MDIO driver"); :::::: The code at line 457 was first introduced by commit :::::: e38921d4dd7d2f052c1c2344fac307463c3b8d2d net/davinci_emac: remove __dev* attributes :::::: TO: Bill Pemberton <wfp5p@xxxxxxxxxxxx> :::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip