#define DEBUG 1
// #define VERBOSE
+#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/delay.h>
switch (status) {
case 0: /* normal completion? */
- if (ep == dev->out_ep) {
+ if (ep == dev->out_ep)
check_read_data (dev, ep, req);
- memset (req->buf, 0x55, req->length);
- } else
+ else
reinit_write_data (dev, ep, req);
break;
if (strcmp (ep->name, EP_IN_NAME) == 0)
reinit_write_data (ep->driver_data, ep, req);
- else
- memset (req->buf, 0x55, req->length);
status = usb_ep_queue (ep, req, gfp_flags);
if (status) {
/*-------------------------------------------------------------------------*/
-static void /* __init_or_exit */
+static void
zero_unbind (struct usb_gadget *gadget)
{
struct zero_dev *dev = get_gadget_data (gadget);
set_gadget_data (gadget, NULL);
}
-static int __init
+static int
zero_bind (struct usb_gadget *gadget)
{
struct zero_dev *dev;
/* ok, we made sense of the hardware ... */
- dev = kzalloc(sizeof(*dev), SLAB_KERNEL);
+ dev = kmalloc (sizeof *dev, SLAB_KERNEL);
if (!dev)
return -ENOMEM;
+ memset (dev, 0, sizeof *dev);
spin_lock_init (&dev->lock);
dev->gadget = gadget;
set_gadget_data (gadget, dev);
loopback_config.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
}
+ if (gadget->is_otg) {
+ otg_descriptor.bmAttributes |= USB_OTG_HNP,
+ source_sink_config.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
+ loopback_config.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
+ }
+
usb_gadget_set_selfpowered (gadget);
init_timer (&dev->resume);
#endif
.function = (char *) longname,
.bind = zero_bind,
- .unbind = __exit_p(zero_unbind),
+ .unbind = zero_unbind,
.setup = zero_setup,
.disconnect = zero_disconnect,