Skip to content

Commit

Permalink
usb: gadget: s3c-hsotg: fix interrupt configuration in dedicated-fifo…
Browse files Browse the repository at this point in the history
… mode

In dedicated-fifo mode TxFIFOEmpty interrupt should be asserted when TxFIFO
for this endpoint is completly empty, so NPTxFEmpLvl and PTxFEmpLvl bits are
set in GAHBCFG register.
In DIEPMSK register INTknTXFEmpMsk is set, becouse it's needed to indicate
FIFO Empty state.

Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Robert Baldyga authored and Felipe Balbi committed Oct 15, 2013
1 parent bd9ef7b commit 8acc829
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions drivers/usb/gadget/s3c-hsotg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2304,15 +2304,19 @@ static void s3c_hsotg_core_init(struct s3c_hsotg *hsotg)
GAHBCFG_HBstLen_Incr4,
hsotg->regs + GAHBCFG);
else
writel(GAHBCFG_GlblIntrEn, hsotg->regs + GAHBCFG);
writel(((hsotg->dedicated_fifos) ? (GAHBCFG_NPTxFEmpLvl |
GAHBCFG_PTxFEmpLvl) : 0) |
GAHBCFG_GlblIntrEn,
hsotg->regs + GAHBCFG);

/*
* Enabling INTknTXFEmpMsk here seems to be a big mistake, we end
* up being flooded with interrupts if the host is polling the
* endpoint to try and read data.
* If INTknTXFEmpMsk is enabled, it's important to disable ep interrupts
* when we have no data to transfer. Otherwise we get being flooded by
* interrupts.
*/

writel(((hsotg->dedicated_fifos) ? DIEPMSK_TxFIFOEmpty : 0) |
writel(((hsotg->dedicated_fifos) ? DIEPMSK_TxFIFOEmpty |
DIEPMSK_INTknTXFEmpMsk : 0) |
DIEPMSK_EPDisbldMsk | DIEPMSK_XferComplMsk |
DIEPMSK_TimeOUTMsk | DIEPMSK_AHBErrMsk |
DIEPMSK_INTknEPMisMsk,
Expand Down

0 comments on commit 8acc829

Please sign in to comment.