return status;
}
-#ifdef USBF_OBEX_INCLUDED
-
-static void
-obex_old_unbind(struct usb_configuration *c, struct usb_function *f)
-{
- usb_free_all_descriptors(f);
- kfree(func_to_obex(f));
-}
-
-/**
- * obex_bind_config - add a CDC OBEX function to a configuration
- * @c: the configuration to support the CDC OBEX instance
- * @port_num: /dev/ttyGS* port this interface will use
- * Context: single threaded during gadget setup
- *
- * Returns zero on success, else negative errno.
- */
-int __init obex_bind_config(struct usb_configuration *c, u8 port_num)
-{
- struct f_obex *obex;
- int status;
-
- /* allocate and initialize one new instance */
- obex = kzalloc(sizeof *obex, GFP_KERNEL);
- if (!obex)
- return -ENOMEM;
-
- obex->port_num = port_num;
-
- obex->port.connect = obex_connect;
- obex->port.disconnect = obex_disconnect;
-
- obex->port.func.name = "obex";
- /* descriptors are per-instance copies */
- obex->port.func.bind = obex_bind;
- obex->port.func.unbind = obex_old_unbind;
- obex->port.func.set_alt = obex_set_alt;
- obex->port.func.get_alt = obex_get_alt;
- obex->port.func.disable = obex_disable;
-
- status = usb_add_function(c, &obex->port.func);
- if (status)
- kfree(obex);
-
- return status;
-}
-
-#else
-
static inline struct f_serial_opts *to_f_serial_opts(struct config_item *item)
{
return container_of(to_config_group(item), struct f_serial_opts,
}
DECLARE_USB_FUNCTION_INIT(obex, obex_alloc_inst, obex_alloc);
-
-#endif
-
MODULE_AUTHOR("Felipe Balbi");
MODULE_LICENSE("GPL");