projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
usb: ums: remove ci_udc special case
[oweals/u-boot.git]
/
drivers
/
usb
/
gadget
/
fotg210.c
diff --git
a/drivers/usb/gadget/fotg210.c
b/drivers/usb/gadget/fotg210.c
index 6e19db15fafeca32818d4be7bfe28fa033c2341b..3acf6a1f41dfd35897d84262871c71f5203e1de3 100644
(file)
--- a/
drivers/usb/gadget/fotg210.c
+++ b/
drivers/usb/gadget/fotg210.c
@@
-245,6
+245,7
@@
static int fotg210_dma(struct fotg210_ep *ep, struct fotg210_request *req)
if (ep->id == 0) {
/* Wait until cx/ep0 fifo empty */
fotg210_cxwait(chip, CXFIFO_CXFIFOE);
if (ep->id == 0) {
/* Wait until cx/ep0 fifo empty */
fotg210_cxwait(chip, CXFIFO_CXFIFOE);
+ udelay(1);
writel(DMAFIFO_CX, ®s->dma_fifo);
} else {
/* Wait until epx fifo empty */
writel(DMAFIFO_CX, ®s->dma_fifo);
} else {
/* Wait until epx fifo empty */
@@
-847,6
+848,13
@@
int usb_gadget_handle_interrupts(void)
/* CX interrupts */
if (gisr & GISR_GRP0) {
st = readl(®s->gisr0);
/* CX interrupts */
if (gisr & GISR_GRP0) {
st = readl(®s->gisr0);
+ /*
+ * Write 1 and then 0 works for both W1C & RW.
+ *
+ * HW v1.11.0+: It's a W1C register (write 1 clear)
+ * HW v1.10.0-: It's a R/W register (write 0 clear)
+ */
+ writel(st & GISR0_CXABORT, ®s->gisr0);
writel(0, ®s->gisr0);
if (st & GISR0_CXERR)
writel(0, ®s->gisr0);
if (st & GISR0_CXERR)
@@
-873,6
+881,13
@@
int usb_gadget_handle_interrupts(void)
/* Device Status Interrupts */
if (gisr & GISR_GRP2) {
st = readl(®s->gisr2);
/* Device Status Interrupts */
if (gisr & GISR_GRP2) {
st = readl(®s->gisr2);
+ /*
+ * Write 1 and then 0 works for both W1C & RW.
+ *
+ * HW v1.11.0+: It's a W1C register (write 1 clear)
+ * HW v1.10.0-: It's a R/W register (write 0 clear)
+ */
+ writel(st, ®s->gisr2);
writel(0, ®s->gisr2);
if (st & GISR2_RESET)
writel(0, ®s->gisr2);
if (st & GISR2_RESET)