Hi Matthias,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on robh/for-next balbi-usb/testing/next
peter.chen-usb/ci-for-usb-next v5.9-rc5 next-20200914]
[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]
url:
https://github.com/0day-ci/linux/commits/Matthias-Kaehlcke/dt-bindings-us...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
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
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
drivers/usb/misc/onboard_usb_hub.c: In function 'onboard_hub_suspend':
> drivers/usb/misc/onboard_usb_hub.c:98:12: error: invalid storage
class for function 'onboard_hub_resume'
98 | static int
onboard_hub_resume(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:98:1: warning: ISO C90 forbids
mixed declarations and code [-Wdeclaration-after-statement]
98 | static int
onboard_hub_resume(struct platform_device *pdev)
| ^~~~~~
> drivers/usb/misc/onboard_usb_hub.c:111:12: error: invalid storage
class for function 'onboard_hub_add_usbdev'
111 | static int
onboard_hub_add_usbdev(struct onboard_hub *hub, struct usb_device *udev)
| ^~~~~~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:128:12: error: invalid storage
class for function 'onboard_hub_remove_usbdev'
128 | static int
onboard_hub_remove_usbdev(struct onboard_hub *hub, struct usb_device *udev)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:150:12: error: invalid storage
class for function 'onboard_hub_probe'
150 | static int
onboard_hub_probe(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:175:12: error: invalid storage
class for function 'onboard_hub_remove'
175 | static int
onboard_hub_remove(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:187:1: warning:
'alias' attribute ignored [-Wattributes]
187 | MODULE_DEVICE_TABLE(of,
onboard_hub_match);
| ^~~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:190:11: error: initializer
element is not constant
190 | .probe = onboard_hub_probe,
| ^~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:190:11: note: (near initialization for
'onboard_hub_driver.probe')
drivers/usb/misc/onboard_usb_hub.c:191:12: error: initializer element is not constant
191 | .remove = onboard_hub_remove,
| ^~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:191:12: note: (near initialization for
'onboard_hub_driver.remove')
drivers/usb/misc/onboard_usb_hub.c:194:12: error: initializer element is not constant
194 | .resume = onboard_hub_resume,
| ^~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:194:12: note: (near initialization for
'onboard_hub_driver.resume')
> drivers/usb/misc/onboard_usb_hub.c:206:28: error: invalid storage
class for function '_find_onboard_hub'
206 | static struct onboard_hub
*_find_onboard_hub(struct device *dev)
| ^~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:232:12: error: invalid storage
class for function 'onboard_hub_usbdev_probe'
232 | static int
onboard_hub_usbdev_probe(struct usb_device *udev)
| ^~~~~~~~~~~~~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:252:13: error: invalid storage
class for function 'onboard_hub_usbdev_disconnect'
252 | static void
onboard_hub_usbdev_disconnect(struct usb_device *udev)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:271:1: warning: 'alias' attribute ignored
[-Wattributes]
271 | MODULE_DEVICE_TABLE(usb, onboard_hub_id_table);
| ^~~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:276:11: error: initializer element is not constant
276 | .probe = onboard_hub_usbdev_probe,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:276:11: note: (near initialization for
'onboard_hub_usbdev_driver.probe')
drivers/usb/misc/onboard_usb_hub.c:277:16: error: initializer element is not constant
277 | .disconnect = onboard_hub_usbdev_disconnect,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:277:16: note: (near initialization for
'onboard_hub_usbdev_driver.disconnect')
> drivers/usb/misc/onboard_usb_hub.c:285:19: error: invalid storage
class for function 'onboard_hub_init'
285 | static int __init
onboard_hub_init(void)
| ^~~~~~~~~~~~~~~~
In file included from drivers/usb/misc/onboard_usb_hub.c:10:
include/linux/module.h:131:42: error: invalid storage class for function
'__inittest'
131 | static inline initcall_t __maybe_unused __inittest(void) \
| ^~~~~~~~~~
include/linux/module.h:122:30: note: in expansion of macro 'module_init'
122 | #define device_initcall(fn) module_init(fn)
| ^~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:295:1: note: in expansion of macro
'device_initcall'
295 | device_initcall(onboard_hub_init);
| ^~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:295:1: warning: 'alias' attribute ignored
[-Wattributes]
> drivers/usb/misc/onboard_usb_hub.c:297:20: error: invalid storage
class for function 'onboard_hub_exit'
297 | static void __exit
onboard_hub_exit(void)
| ^~~~~~~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:297:1: warning: ISO C90 forbids mixed declarations
and code [-Wdeclaration-after-statement]
297 | static void __exit onboard_hub_exit(void)
| ^~~~~~
In file included from drivers/usb/misc/onboard_usb_hub.c:10:
include/linux/module.h:137:42: error: invalid storage class for function
'__exittest'
137 | static inline exitcall_t __maybe_unused __exittest(void) \
| ^~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:302:1: note: in expansion of macro
'module_exit'
302 | module_exit(onboard_hub_exit);
| ^~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:302:1: warning: 'alias' attribute ignored
[-Wattributes]
In file included from include/linux/module.h:21,
from drivers/usb/misc/onboard_usb_hub.c:10:
include/linux/moduleparam.h:24:1: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
24 | static const char __UNIQUE_ID(name)[] \
| ^~~~~~
include/linux/module.h:162:32: note: in expansion of macro '__MODULE_INFO'
162 | #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
| ^~~~~~~~~~~~~
include/linux/module.h:232:32: note: in expansion of macro 'MODULE_INFO'
232 | #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
| ^~~~~~~~~~~
drivers/usb/misc/onboard_usb_hub.c:304:1: note: in expansion of macro
'MODULE_AUTHOR'
304 | MODULE_AUTHOR("Matthias Kaehlcke <mka(a)chromium.org>");
| ^~~~~~~~~~~~~
> drivers/usb/misc/onboard_usb_hub.c:306:1: error: expected
declaration or statement at end of input
306 | MODULE_LICENSE("GPL
v2");
| ^~~~~~~~~~~~~~
At top level:
drivers/usb/misc/onboard_usb_hub.c:68:12: warning: 'onboard_hub_suspend'
defined but not used [-Wunused-function]
68 | static int onboard_hub_suspend(struct platform_device *pdev, pm_message_t msg)
| ^~~~~~~~~~~~~~~~~~~
#
https://github.com/0day-ci/linux/commit/81bbd2f3188c281e1c2f3fccb36d53d6f...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Matthias-Kaehlcke/dt-bindings-usb-Add-binding-for-onboard-USB-hubs/20200915-024225
git checkout 81bbd2f3188c281e1c2f3fccb36d53d6ff3d9a89
vim +/onboard_hub_resume +98 drivers/usb/misc/onboard_usb_hub.c
97
98 static int onboard_hub_resume(struct platform_device *pdev)
99 {
100 struct onboard_hub *hub = dev_get_drvdata(&pdev->dev);
101 int rc = 0;
102
103 if (hub->cfg.power_off_in_suspend &&
!hub->has_wakeup_capable_descendants)
104 rc = onboard_hub_power_on(hub);
105
106 return rc;
107 }
108
109 #endif
110
111 static int onboard_hub_add_usbdev(struct onboard_hub *hub, struct
usb_device *udev)
112 {
113 struct udev_node *node;
114
115 node = devm_kzalloc(hub->dev, sizeof(*node), GFP_KERNEL);
116 if (!node)
117 return -ENOMEM;
118
119 node->udev = udev;
120
121 mutex_lock(&hub->lock);
122 list_add(&node->list, &hub->udev_list);
123 mutex_unlock(&hub->lock);
124
125 return 0;
126 }
127
128 static int onboard_hub_remove_usbdev(struct onboard_hub *hub,
struct usb_device *udev)
129 {
130 struct udev_node *node;
131
132 mutex_lock(&hub->lock);
133
134 list_for_each_entry(node, &hub->udev_list, list) {
135 if (node->udev == udev) {
136 list_del(&node->list);
137 devm_kfree(hub->dev, node);
138 break;
139 }
140 }
141
142 mutex_unlock(&hub->lock);
143
144 if (node == NULL)
145 return -EINVAL;
146
147 return 0;
148 }
149
150 static int onboard_hub_probe(struct platform_device *pdev)
151 {
152 struct device *dev = &pdev->dev;
153 struct onboard_hub *hub;
154
155 hub = devm_kzalloc(dev, sizeof(*hub), GFP_KERNEL);
156 if (!hub)
157 return -ENOMEM;
158
159 hub->vdd = devm_regulator_get(dev, "vdd");
160 if (IS_ERR(hub->vdd))
161 return PTR_ERR(hub->vdd);
162
163 hub->dev = dev;
164 mutex_init(&hub->lock);
165 INIT_LIST_HEAD(&hub->udev_list);
166
167 hub->cfg.power_off_in_suspend = of_property_read_bool(dev->of_node,
"power-off-in-suspend");
168 hub->cfg.wakeup_source = of_property_read_bool(dev->of_node,
"wakeup-source");
169
170 dev_set_drvdata(dev, hub);
171
172 return onboard_hub_power_on(hub);
173 }
174
175 static int onboard_hub_remove(struct platform_device *pdev)
176 {
177 struct onboard_hub *hub = dev_get_drvdata(&pdev->dev);
178
179 return onboard_hub_power_off(hub);
180 }
181
182 static const struct of_device_id onboard_hub_match[] = {
183 { .compatible = "onboard-usb-hub" },
184 { .compatible = "realtek,rts5411" },
185 {}
186 };
187 MODULE_DEVICE_TABLE(of, onboard_hub_match);
188
189 static struct platform_driver onboard_hub_driver = {
190 .probe = onboard_hub_probe,
191 .remove = onboard_hub_remove,
192 #ifdef CONFIG_PM
193 .suspend = onboard_hub_suspend,
194 .resume = onboard_hub_resume,
195 #endif
196 .driver = {
197 .name = "onboard-usb-hub",
198 .of_match_table = onboard_hub_match,
199 },
200 };
201
202 /************************** USB driver **************************/
203
204 #define VENDOR_ID_REALTEK 0x0bda
205
206 static struct onboard_hub *_find_onboard_hub(struct device *dev)
207 {
208 const phandle *ph;
209 struct device_node *np;
210 struct platform_device *pdev;
211
212 ph = of_get_property(dev->of_node, "hub", NULL);
213 if (!ph) {
214 dev_err(dev, "failed to read 'hub' property\n");
215 return ERR_PTR(-EINVAL);
216 }
217
218 np = of_find_node_by_phandle(be32_to_cpu(*ph));
219 if (!np) {
220 dev_err(dev, "failed find device node for onboard hub\n");
221 return ERR_PTR(-EINVAL);
222 }
223
224 pdev = of_find_device_by_node(np);
225 of_node_put(np);
226 if (!pdev)
227 return ERR_PTR(-EPROBE_DEFER);
228
229 return dev_get_drvdata(&pdev->dev);
230 }
231
232 static int onboard_hub_usbdev_probe(struct usb_device *udev)
233 {
234 struct device *dev = &udev->dev;
235 struct onboard_hub *hub;
236
237 /* ignore supported hubs without device tree node */
238 if (!dev->of_node)
239 return -ENODEV;
240
241 hub = _find_onboard_hub(dev);
242 if (IS_ERR(hub))
243 return PTR_ERR(dev);
244
245 dev_set_drvdata(dev, hub);
246
247 onboard_hub_add_usbdev(hub, udev);
248
249 return 0;
250 }
251
252 static void onboard_hub_usbdev_disconnect(struct usb_device
*udev)
253 {
254 struct onboard_hub *hub = dev_get_drvdata(&udev->dev);
255
256 onboard_hub_remove_usbdev(hub, udev);
257
258 put_device(hub->dev);
259 }
260
261 static const struct usb_device_id onboard_hub_id_table[] = {
262 { .idVendor = VENDOR_ID_REALTEK,
263 .idProduct = 0x0411, /* RTS5411 USB 3.0 */
264 .match_flags = USB_DEVICE_ID_MATCH_DEVICE },
265 { .idVendor = VENDOR_ID_REALTEK,
266 .idProduct = 0x5411, /* RTS5411 USB 2.0 */
267 .match_flags = USB_DEVICE_ID_MATCH_DEVICE },
268 {},
269 };
270
271 MODULE_DEVICE_TABLE(usb, onboard_hub_id_table);
272
273 static struct usb_device_driver onboard_hub_usbdev_driver = {
274
275 .name = "onboard-usb-hub",
276 .probe = onboard_hub_usbdev_probe,
277 .disconnect =
onboard_hub_usbdev_disconnect,
278 .generic_subclass = 1,
279 .supports_autosuspend = 1,
280 .id_table = onboard_hub_id_table,
281 };
282
283 /************************** Driver (de)registration **************************/
284
285 static int __init onboard_hub_init(void)
286 {
287 int rc;
288
289 rc = platform_driver_register(&onboard_hub_driver);
290 if (rc)
291 return rc;
292
293 return usb_register_device_driver(&onboard_hub_usbdev_driver, THIS_MODULE);
294 }
295 device_initcall(onboard_hub_init);
296
297 static void __exit onboard_hub_exit(void)
298 {
299 usb_deregister_device_driver(&onboard_hub_usbdev_driver);
300 platform_driver_unregister(&onboard_hub_driver);
301 }
302 module_exit(onboard_hub_exit);
303
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org