usb: gadget: dummy-hcd: add ep capabilities support
Convert endpoint configuration to new capabilities model. Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
b079dd6156
Коммит
7a3b8e7098
|
@ -127,23 +127,87 @@ static inline struct dummy_request *usb_request_to_dummy_request
|
|||
|
||||
static const char ep0name[] = "ep0";
|
||||
|
||||
static const char *const ep_name[] = {
|
||||
ep0name, /* everyone has ep0 */
|
||||
static const struct {
|
||||
const char *name;
|
||||
const struct usb_ep_caps caps;
|
||||
} ep_info[] = {
|
||||
#define EP_INFO(_name, _caps) \
|
||||
{ \
|
||||
.name = _name, \
|
||||
.caps = _caps, \
|
||||
}
|
||||
|
||||
/* everyone has ep0 */
|
||||
EP_INFO(ep0name,
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_CONTROL, USB_EP_CAPS_DIR_ALL)),
|
||||
/* act like a pxa250: fifteen fixed function endpoints */
|
||||
"ep1in-bulk", "ep2out-bulk", "ep3in-iso", "ep4out-iso", "ep5in-int",
|
||||
"ep6in-bulk", "ep7out-bulk", "ep8in-iso", "ep9out-iso", "ep10in-int",
|
||||
"ep11in-bulk", "ep12out-bulk", "ep13in-iso", "ep14out-iso",
|
||||
"ep15in-int",
|
||||
|
||||
EP_INFO("ep1in-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep2out-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep3in-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep4out-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep5in-int",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_INT, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep6in-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep7out-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep8in-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep9out-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep10in-int",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_INT, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep11in-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep12out-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep13in-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep14out-iso",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep15in-int",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_INT, USB_EP_CAPS_DIR_IN)),
|
||||
/* or like sa1100: two fixed function endpoints */
|
||||
"ep1out-bulk", "ep2in-bulk",
|
||||
|
||||
EP_INFO("ep1out-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep2in-bulk",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_IN)),
|
||||
/* and now some generic EPs so we have enough in multi config */
|
||||
"ep3out", "ep4in", "ep5out", "ep6out", "ep7in", "ep8out", "ep9in",
|
||||
"ep10out", "ep11out", "ep12in", "ep13out", "ep14in", "ep15out",
|
||||
EP_INFO("ep3out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep4in",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep5out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep6out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep7in",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep8out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep9in",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep10out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep11out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep12in",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep13out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
EP_INFO("ep14in",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
|
||||
EP_INFO("ep15out",
|
||||
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
|
||||
|
||||
#undef EP_INFO
|
||||
};
|
||||
#define DUMMY_ENDPOINTS ARRAY_SIZE(ep_name)
|
||||
|
||||
#define DUMMY_ENDPOINTS ARRAY_SIZE(ep_info)
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
|
@ -938,9 +1002,10 @@ static void init_dummy_udc_hw(struct dummy *dum)
|
|||
for (i = 0; i < DUMMY_ENDPOINTS; i++) {
|
||||
struct dummy_ep *ep = &dum->ep[i];
|
||||
|
||||
if (!ep_name[i])
|
||||
if (!ep_info[i].name)
|
||||
break;
|
||||
ep->ep.name = ep_name[i];
|
||||
ep->ep.name = ep_info[i].name;
|
||||
ep->ep.caps = ep_info[i].caps;
|
||||
ep->ep.ops = &dummy_ep_ops;
|
||||
list_add_tail(&ep->ep.ep_list, &dum->gadget.ep_list);
|
||||
ep->halted = ep->wedged = ep->already_seen =
|
||||
|
@ -1684,7 +1749,7 @@ static void dummy_timer(unsigned long _dum_hcd)
|
|||
}
|
||||
|
||||
for (i = 0; i < DUMMY_ENDPOINTS; i++) {
|
||||
if (!ep_name[i])
|
||||
if (!ep_info[i].name)
|
||||
break;
|
||||
dum->ep[i].already_seen = 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче