diff options
author | JiebingLi <jiebing.li@intel.com> | 2010-08-05 09:18:05 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:21:18 -0400 |
commit | 3eed298ffa94d77901cfda269c4368de83d133fb (patch) | |
tree | 5ce6a3f29765102563d3222d28e0966813b7af8f /drivers/usb/gadget/langwell_udc.c | |
parent | 5f81f4b0c0a3db9e46a0e8041d7721117ac41956 (diff) |
USB: langwell: USB Client Endpoint initialization
Endpoint software structure initialization
Signed-off-by: JiebingLi <jiebing.li@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/langwell_udc.c')
-rw-r--r-- | drivers/usb/gadget/langwell_udc.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c index 8b332dd21dcd..599ad8a1f5fe 100644 --- a/drivers/usb/gadget/langwell_udc.c +++ b/drivers/usb/gadget/langwell_udc.c | |||
@@ -242,11 +242,13 @@ static void ep0_reset(struct langwell_udc *dev) | |||
242 | ep->dqh->dqh_ios = 1; | 242 | ep->dqh->dqh_ios = 1; |
243 | ep->dqh->dqh_mpl = EP0_MAX_PKT_SIZE; | 243 | ep->dqh->dqh_mpl = EP0_MAX_PKT_SIZE; |
244 | 244 | ||
245 | /* FIXME: enable ep0-in HW zero length termination select */ | 245 | /* enable ep0-in HW zero length termination select */ |
246 | if (is_in(ep)) | 246 | if (is_in(ep)) |
247 | ep->dqh->dqh_zlt = 0; | 247 | ep->dqh->dqh_zlt = 0; |
248 | ep->dqh->dqh_mult = 0; | 248 | ep->dqh->dqh_mult = 0; |
249 | 249 | ||
250 | ep->dqh->dtd_next = DTD_TERM; | ||
251 | |||
250 | /* configure ep0 control registers */ | 252 | /* configure ep0 control registers */ |
251 | ep_reset(&dev->ep[0], 0, i, USB_ENDPOINT_XFER_CONTROL); | 253 | ep_reset(&dev->ep[0], 0, i, USB_ENDPOINT_XFER_CONTROL); |
252 | } | 254 | } |
@@ -268,7 +270,7 @@ static int langwell_ep_enable(struct usb_ep *_ep, | |||
268 | struct langwell_ep *ep; | 270 | struct langwell_ep *ep; |
269 | u16 max = 0; | 271 | u16 max = 0; |
270 | unsigned long flags; | 272 | unsigned long flags; |
271 | int retval = 0; | 273 | int i, retval = 0; |
272 | unsigned char zlt, ios = 0, mult = 0; | 274 | unsigned char zlt, ios = 0, mult = 0; |
273 | 275 | ||
274 | ep = container_of(_ep, struct langwell_ep, ep); | 276 | ep = container_of(_ep, struct langwell_ep, ep); |
@@ -354,12 +356,6 @@ static int langwell_ep_enable(struct usb_ep *_ep, | |||
354 | 356 | ||
355 | spin_lock_irqsave(&dev->lock, flags); | 357 | spin_lock_irqsave(&dev->lock, flags); |
356 | 358 | ||
357 | /* configure endpoint capabilities in dQH */ | ||
358 | ep->dqh->dqh_ios = ios; | ||
359 | ep->dqh->dqh_mpl = cpu_to_le16(max); | ||
360 | ep->dqh->dqh_zlt = zlt; | ||
361 | ep->dqh->dqh_mult = mult; | ||
362 | |||
363 | ep->ep.maxpacket = max; | 359 | ep->ep.maxpacket = max; |
364 | ep->desc = desc; | 360 | ep->desc = desc; |
365 | ep->stopped = 0; | 361 | ep->stopped = 0; |
@@ -371,6 +367,15 @@ static int langwell_ep_enable(struct usb_ep *_ep, | |||
371 | /* configure endpoint control registers */ | 367 | /* configure endpoint control registers */ |
372 | ep_reset(ep, ep->ep_num, is_in(ep), ep->ep_type); | 368 | ep_reset(ep, ep->ep_num, is_in(ep), ep->ep_type); |
373 | 369 | ||
370 | /* configure endpoint capabilities in dQH */ | ||
371 | i = ep->ep_num * 2 + is_in(ep); | ||
372 | ep->dqh = &dev->ep_dqh[i]; | ||
373 | ep->dqh->dqh_ios = ios; | ||
374 | ep->dqh->dqh_mpl = cpu_to_le16(max); | ||
375 | ep->dqh->dqh_zlt = zlt; | ||
376 | ep->dqh->dqh_mult = mult; | ||
377 | ep->dqh->dtd_next = DTD_TERM; | ||
378 | |||
374 | dev_dbg(&dev->pdev->dev, "enabled %s (ep%d%s-%s), max %04x\n", | 379 | dev_dbg(&dev->pdev->dev, "enabled %s (ep%d%s-%s), max %04x\n", |
375 | _ep->name, | 380 | _ep->name, |
376 | ep->ep_num, | 381 | ep->ep_num, |
@@ -1430,8 +1435,6 @@ static int eps_reinit(struct langwell_udc *dev) | |||
1430 | 1435 | ||
1431 | INIT_LIST_HEAD(&ep->queue); | 1436 | INIT_LIST_HEAD(&ep->queue); |
1432 | list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); | 1437 | list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); |
1433 | |||
1434 | ep->dqh = &dev->ep_dqh[i]; | ||
1435 | } | 1438 | } |
1436 | 1439 | ||
1437 | dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__); | 1440 | dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__); |