usbip: vudc: Refactor init_vudc_hw() to be more obvious
Current implementation of init_vudc_hw() adds ep0 to ep_list and then after looping through all endpoints removes it from that list. As this may be misleading let's refactor this function and avoid adding and removing ep0 to eplist and place it immediately in correct place. In addition let's remove redundant 0 assignments as ep array is zeroed during allocation. Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com> Acked-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
3e448e13a6
Коммит
b282a118eb
|
@ -549,30 +549,34 @@ static int init_vudc_hw(struct vudc *udc)
|
||||||
sprintf(ep->name, "ep%d%s", num,
|
sprintf(ep->name, "ep%d%s", num,
|
||||||
i ? (is_out ? "out" : "in") : "");
|
i ? (is_out ? "out" : "in") : "");
|
||||||
ep->ep.name = ep->name;
|
ep->ep.name = ep->name;
|
||||||
if (i == 0) {
|
|
||||||
ep->ep.caps.type_control = true;
|
|
||||||
ep->ep.caps.dir_out = true;
|
|
||||||
ep->ep.caps.dir_in = true;
|
|
||||||
} else {
|
|
||||||
ep->ep.caps.type_iso = true;
|
|
||||||
ep->ep.caps.type_int = true;
|
|
||||||
ep->ep.caps.type_bulk = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_out)
|
|
||||||
ep->ep.caps.dir_out = true;
|
|
||||||
else
|
|
||||||
ep->ep.caps.dir_in = true;
|
|
||||||
|
|
||||||
ep->ep.ops = &vep_ops;
|
ep->ep.ops = &vep_ops;
|
||||||
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
|
|
||||||
ep->halted = ep->wedged = ep->already_seen =
|
|
||||||
ep->setup_stage = 0;
|
|
||||||
usb_ep_set_maxpacket_limit(&ep->ep, ~0);
|
usb_ep_set_maxpacket_limit(&ep->ep, ~0);
|
||||||
ep->ep.max_streams = 16;
|
ep->ep.max_streams = 16;
|
||||||
ep->gadget = &udc->gadget;
|
ep->gadget = &udc->gadget;
|
||||||
ep->desc = NULL;
|
|
||||||
INIT_LIST_HEAD(&ep->req_queue);
|
INIT_LIST_HEAD(&ep->req_queue);
|
||||||
|
|
||||||
|
if (i == 0) {
|
||||||
|
/* ep0 */
|
||||||
|
ep->ep.caps.type_control = true;
|
||||||
|
ep->ep.caps.dir_out = true;
|
||||||
|
ep->ep.caps.dir_in = true;
|
||||||
|
|
||||||
|
udc->gadget.ep0 = &ep->ep;
|
||||||
|
} else {
|
||||||
|
/* All other eps */
|
||||||
|
ep->ep.caps.type_iso = true;
|
||||||
|
ep->ep.caps.type_int = true;
|
||||||
|
ep->ep.caps.type_bulk = true;
|
||||||
|
|
||||||
|
if (is_out)
|
||||||
|
ep->ep.caps.dir_out = true;
|
||||||
|
else
|
||||||
|
ep->ep.caps.dir_in = true;
|
||||||
|
|
||||||
|
list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_init(&udc->lock);
|
spin_lock_init(&udc->lock);
|
||||||
|
@ -589,9 +593,6 @@ static int init_vudc_hw(struct vudc *udc)
|
||||||
ud->eh_ops.reset = vudc_device_reset;
|
ud->eh_ops.reset = vudc_device_reset;
|
||||||
ud->eh_ops.unusable = vudc_device_unusable;
|
ud->eh_ops.unusable = vudc_device_unusable;
|
||||||
|
|
||||||
udc->gadget.ep0 = &udc->ep[0].ep;
|
|
||||||
list_del_init(&udc->ep[0].ep.ep_list);
|
|
||||||
|
|
||||||
v_init_timer(udc);
|
v_init_timer(udc);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче