diff options
author | Bertrik Sikken <bertrik@sikken.nl> | 2008-04-10 22:28:18 +0000 |
---|---|---|
committer | Bertrik Sikken <bertrik@sikken.nl> | 2008-04-10 22:28:18 +0000 |
commit | 879c074656983784ba76d22c4e7663c42374194c (patch) | |
tree | 9588e1a074e9e178a6fd38b3efa9d12b51041334 | |
parent | 10080b842067a53731b10951da6a0b1c33689e68 (diff) | |
download | rockbox-879c074656983784ba76d22c4e7663c42374194c.tar.gz rockbox-879c074656983784ba76d22c4e7663c42374194c.zip |
Properly clear clear-on-write bits in the PP502x USB controller
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17066 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/target/arm/usb-drv-pp502x.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/firmware/target/arm/usb-drv-pp502x.c b/firmware/target/arm/usb-drv-pp502x.c index 62addc164e..af7628f992 100644 --- a/firmware/target/arm/usb-drv-pp502x.c +++ b/firmware/target/arm/usb-drv-pp502x.c | |||
@@ -428,7 +428,7 @@ void usb_drv_int(void) | |||
428 | 428 | ||
429 | /* usb transaction interrupt */ | 429 | /* usb transaction interrupt */ |
430 | if (status & USBSTS_INT) { | 430 | if (status & USBSTS_INT) { |
431 | REG_USBSTS |= USBSTS_INT; | 431 | REG_USBSTS = USBSTS_INT; |
432 | 432 | ||
433 | /* a control packet? */ | 433 | /* a control packet? */ |
434 | if (REG_ENDPTSETUPSTAT & EPSETUP_STATUS_EP0) { | 434 | if (REG_ENDPTSETUPSTAT & EPSETUP_STATUS_EP0) { |
@@ -441,20 +441,20 @@ void usb_drv_int(void) | |||
441 | 441 | ||
442 | /* error interrupt */ | 442 | /* error interrupt */ |
443 | if (status & USBSTS_ERR) { | 443 | if (status & USBSTS_ERR) { |
444 | REG_USBSTS |= USBSTS_ERR; | 444 | REG_USBSTS = USBSTS_ERR; |
445 | logf("usb error int"); | 445 | logf("usb error int"); |
446 | } | 446 | } |
447 | 447 | ||
448 | /* reset interrupt */ | 448 | /* reset interrupt */ |
449 | if (status & USBSTS_RESET) { | 449 | if (status & USBSTS_RESET) { |
450 | REG_USBSTS |= USBSTS_RESET; | 450 | REG_USBSTS = USBSTS_RESET; |
451 | bus_reset(); | 451 | bus_reset(); |
452 | usb_core_bus_reset(); /* tell mom */ | 452 | usb_core_bus_reset(); /* tell mom */ |
453 | } | 453 | } |
454 | 454 | ||
455 | /* port change */ | 455 | /* port change */ |
456 | if (status & USBSTS_PORT_CHANGE) { | 456 | if (status & USBSTS_PORT_CHANGE) { |
457 | REG_USBSTS |= USBSTS_PORT_CHANGE; | 457 | REG_USBSTS = USBSTS_PORT_CHANGE; |
458 | } | 458 | } |
459 | } | 459 | } |
460 | 460 | ||
@@ -688,7 +688,7 @@ static void control_received(void) | |||
688 | tmp[1] = qh_array[0].setup_buffer[1]; | 688 | tmp[1] = qh_array[0].setup_buffer[1]; |
689 | 689 | ||
690 | /* acknowledge packet recieved */ | 690 | /* acknowledge packet recieved */ |
691 | REG_ENDPTSETUPSTAT |= EPSETUP_STATUS_EP0; | 691 | REG_ENDPTSETUPSTAT = EPSETUP_STATUS_EP0; |
692 | 692 | ||
693 | /* Stop pending control transfers */ | 693 | /* Stop pending control transfers */ |
694 | for(i=0;i<2;i++) { | 694 | for(i=0;i<2;i++) { |
@@ -706,7 +706,7 @@ static void transfer_completed(void) | |||
706 | { | 706 | { |
707 | int ep; | 707 | int ep; |
708 | unsigned int mask = REG_ENDPTCOMPLETE; | 708 | unsigned int mask = REG_ENDPTCOMPLETE; |
709 | REG_ENDPTCOMPLETE |= mask; | 709 | REG_ENDPTCOMPLETE = mask; |
710 | 710 | ||
711 | for (ep=0; ep<NUM_ENDPOINTS; ep++) { | 711 | for (ep=0; ep<NUM_ENDPOINTS; ep++) { |
712 | int dir; | 712 | int dir; |