On Wed, 1 Nov 2006, Felipe Balbi wrote: > Hello all, > > Could anyone help me fix this bug? > > I couldn't figure out what is happening. > > Here's the bug: > drivers/usb/core/hub.c: In function 'usb_new_device': > drivers/usb/core/hub.c:1293: error: invalid storage class for function > '__usb_port_suspend' > drivers/usb/core/hub.c:1294: warning: implicit declaration of function > '__usb_port_suspend' > drivers/usb/core/hub.c: At top level: > drivers/usb/core/hub.c:1567: error: static declaration of > '__usb_port_suspend' follows non-static declaration > drivers/usb/core/hub.c:1294: error: previous implicit declaration of > '__usb_port_suspend' was here > make[3]: *** [drivers/usb/core/hub.o] Error 1 > make[2]: *** [drivers/usb/core] Error 2 > make[1]: *** [drivers/usb] Error 2 > make: *** [drivers] Error 2
Ho, ho! Andrew, I _told_ you this inner declaration of a static function would cause problems! > Here's the source code: > > /* Maybe it can talk to us, though we can't talk to it. > * (Includes HNP test device.) > */ > if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { > static int __usb_port_suspend(struct usb_device *, > int port1); * (line 1293)* > err = __usb_port_suspend(udev, > udev->bus->otg_port); * (line 1294)* > if (err < 0) > dev_dbg(&udev->dev, "HNP fail, %d\n", err); > } > err = -ENODEV; > goto fail; > } The solution is simple. Just take line 1293 (the static function declaration) and move it outside of the usb_new_device() function. Stick it inside the "#ifdef CONFIG_USB_OTG" block just above the function's start. The problem is that gcc 4 doesn't like static function declarations in inner blocks. Earlier versions of gcc didn't mind. Alan Stern ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel