diff options
Diffstat (limited to 'firmware/target/arm/as3525')
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525v2.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c index 165c0e4723..c18c579456 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.c +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c | |||
@@ -485,7 +485,7 @@ static void handle_ep_in_int(int ep) | |||
485 | /* works even for EP0 */ | 485 | /* works even for EP0 */ |
486 | int size = (DIEPTSIZ(ep) & DEPTSIZ_xfersize_bits); | 486 | int size = (DIEPTSIZ(ep) & DEPTSIZ_xfersize_bits); |
487 | int transfered = endpoint->len - size; | 487 | int transfered = endpoint->len - size; |
488 | logf("len=%d reg=%ld xfer=%d", endpoint->len, size, transfered); | 488 | logf("len=%d reg=%d xfer=%d", endpoint->len, size, transfered); |
489 | /* handle EP0 state if necessary, | 489 | /* handle EP0 state if necessary, |
490 | * this is a ack if length is 0 */ | 490 | * this is a ack if length is 0 */ |
491 | if(ep == 0) | 491 | if(ep == 0) |
@@ -748,8 +748,8 @@ static int usb_drv_transfer(int ep, void *ptr, int len, bool dir_in, bool blocki | |||
748 | logf("usb-drv: xfer EP%d, len=%d, dir_in=%d, blocking=%d", ep, | 748 | logf("usb-drv: xfer EP%d, len=%d, dir_in=%d, blocking=%d", ep, |
749 | len, dir_in, blocking); | 749 | len, dir_in, blocking); |
750 | 750 | ||
751 | /* mask the usb interrupt to avoid any race */ | 751 | /* disable interrupts to avoid any race */ |
752 | VIC_INT_EN_CLEAR = INTERRUPT_USB; | 752 | int oldlevel = disable_irq_save(); |
753 | 753 | ||
754 | volatile unsigned long *epctl = dir_in ? &DIEPCTL(ep) : &DOEPCTL(ep); | 754 | volatile unsigned long *epctl = dir_in ? &DIEPCTL(ep) : &DOEPCTL(ep); |
755 | volatile unsigned long *eptsiz = dir_in ? &DIEPTSIZ(ep) : &DOEPTSIZ(ep); | 755 | volatile unsigned long *eptsiz = dir_in ? &DIEPTSIZ(ep) : &DOEPTSIZ(ep); |
@@ -792,8 +792,8 @@ static int usb_drv_transfer(int ep, void *ptr, int len, bool dir_in, bool blocki | |||
792 | 792 | ||
793 | DEPCTL |= DEPCTL_epena | DEPCTL_cnak; | 793 | DEPCTL |= DEPCTL_epena | DEPCTL_cnak; |
794 | 794 | ||
795 | /* unmask the usb interrupt */ | 795 | /* restore interrupts */ |
796 | VIC_INT_ENABLE = INTERRUPT_USB; | 796 | restore_irq(oldlevel); |
797 | 797 | ||
798 | if(blocking) | 798 | if(blocking) |
799 | { | 799 | { |