usb: gadget: f_obex: use bind_deactivated flag
Use bind_deactivated flag instead of calling usb_function_deactivate() in function bind(). Field 'can_activate' in struct f_obex is no longer needed as setting 'bind_deactivated' flag makes us sure, that the function will be binded only if deactivation can be performed successfully. Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
f277bf27cf
commit
4cfbd95232
|
@ -37,7 +37,6 @@ struct f_obex {
|
||||||
u8 data_id;
|
u8 data_id;
|
||||||
u8 cur_alt;
|
u8 cur_alt;
|
||||||
u8 port_num;
|
u8 port_num;
|
||||||
u8 can_activate;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct f_obex *func_to_obex(struct usb_function *f)
|
static inline struct f_obex *func_to_obex(struct usb_function *f)
|
||||||
|
@ -268,9 +267,6 @@ static void obex_connect(struct gserial *g)
|
||||||
struct usb_composite_dev *cdev = g->func.config->cdev;
|
struct usb_composite_dev *cdev = g->func.config->cdev;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!obex->can_activate)
|
|
||||||
return;
|
|
||||||
|
|
||||||
status = usb_function_activate(&g->func);
|
status = usb_function_activate(&g->func);
|
||||||
if (status)
|
if (status)
|
||||||
dev_dbg(&cdev->gadget->dev,
|
dev_dbg(&cdev->gadget->dev,
|
||||||
|
@ -284,9 +280,6 @@ static void obex_disconnect(struct gserial *g)
|
||||||
struct usb_composite_dev *cdev = g->func.config->cdev;
|
struct usb_composite_dev *cdev = g->func.config->cdev;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!obex->can_activate)
|
|
||||||
return;
|
|
||||||
|
|
||||||
status = usb_function_deactivate(&g->func);
|
status = usb_function_deactivate(&g->func);
|
||||||
if (status)
|
if (status)
|
||||||
dev_dbg(&cdev->gadget->dev,
|
dev_dbg(&cdev->gadget->dev,
|
||||||
|
@ -378,17 +371,6 @@ static int obex_bind(struct usb_configuration *c, struct usb_function *f)
|
||||||
if (status)
|
if (status)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* Avoid letting this gadget enumerate until the userspace
|
|
||||||
* OBEX server is active.
|
|
||||||
*/
|
|
||||||
status = usb_function_deactivate(f);
|
|
||||||
if (status < 0)
|
|
||||||
WARNING(cdev, "obex ttyGS%d: can't prevent enumeration, %d\n",
|
|
||||||
obex->port_num, status);
|
|
||||||
else
|
|
||||||
obex->can_activate = true;
|
|
||||||
|
|
||||||
|
|
||||||
dev_dbg(&cdev->gadget->dev, "obex ttyGS%d: %s speed IN/%s OUT/%s\n",
|
dev_dbg(&cdev->gadget->dev, "obex ttyGS%d: %s speed IN/%s OUT/%s\n",
|
||||||
obex->port_num,
|
obex->port_num,
|
||||||
gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
|
gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
|
||||||
|
@ -529,6 +511,7 @@ static struct usb_function *obex_alloc(struct usb_function_instance *fi)
|
||||||
obex->port.func.get_alt = obex_get_alt;
|
obex->port.func.get_alt = obex_get_alt;
|
||||||
obex->port.func.disable = obex_disable;
|
obex->port.func.disable = obex_disable;
|
||||||
obex->port.func.free_func = obex_free;
|
obex->port.func.free_func = obex_free;
|
||||||
|
obex->port.func.bind_deactivated = true;
|
||||||
|
|
||||||
return &obex->port.func;
|
return &obex->port.func;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue