Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 303819
b: refs/heads/master
c: 71225be
h: refs/heads/master
i:
  303817: 24aad6d
  303815: 9fb4e3b
v: v3
  • Loading branch information
Lukasz Majewski authored and Felipe Balbi committed May 4, 2012
1 parent b3c5930 commit cfa55a8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fc9a731ed0ef7138432f0f14981710aea8e83320
refs/heads/master: 71225beeeba2bde80aac02fadb5c197389fa12e4
21 changes: 19 additions & 2 deletions trunk/drivers/usb/gadget/s3c-hsotg.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ struct s3c_hsotg_ep {
* @ep0_buff: Buffer for EP0 reply data, if needed.
* @ctrl_buff: Buffer for EP0 control requests.
* @ctrl_req: Request for EP0 control packets.
* @setup: NAK management for EP0 SETUP
* @eps: The endpoints being supplied to the gadget framework
*/
struct s3c_hsotg {
Expand All @@ -173,6 +174,7 @@ struct s3c_hsotg {
u8 ctrl_buff[8];

struct usb_gadget gadget;
unsigned int setup;
struct s3c_hsotg_ep eps[];
};

Expand Down Expand Up @@ -696,7 +698,8 @@ static void s3c_hsotg_start_req(struct s3c_hsotg *hsotg,
}

length = ureq->length - ureq->actual;

dev_dbg(hsotg->dev, "ureq->length:%d ureq->actual:%d\n",
ureq->length, ureq->actual);
if (0)
dev_dbg(hsotg->dev,
"REQ buf %p len %d dma 0x%08x noi=%d zp=%d snok=%d\n",
Expand Down Expand Up @@ -762,7 +765,15 @@ static void s3c_hsotg_start_req(struct s3c_hsotg *hsotg,

ctrl |= S3C_DxEPCTL_EPEna; /* ensure ep enabled */
ctrl |= S3C_DxEPCTL_USBActEp;
ctrl |= S3C_DxEPCTL_CNAK; /* clear NAK set by core */

dev_dbg(hsotg->dev, "setup req:%d\n", hsotg->setup);

/* For Setup request do not clear NAK */
if (hsotg->setup && index == 0)
hsotg->setup = 0;
else
ctrl |= S3C_DxEPCTL_CNAK; /* clear NAK set by core */


dev_dbg(hsotg->dev, "%s: DxEPCTL=0x%08x\n", __func__, ctrl);
writel(ctrl, hsotg->regs + epctrl_reg);
Expand Down Expand Up @@ -1527,6 +1538,12 @@ static void s3c_hsotg_handle_outdone(struct s3c_hsotg *hsotg,
if (req->actual < req->length && size_left == 0) {
s3c_hsotg_start_req(hsotg, hs_ep, hs_req, true);
return;
} else if (epnum == 0) {
/*
* After was_setup = 1 =>
* set CNAK for non Setup requests
*/
hsotg->setup = was_setup ? 0 : 1;
}

if (req->actual < req->length && req->short_not_ok) {
Expand Down

0 comments on commit cfa55a8

Please sign in to comment.