summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrik Sikken <bertrik@sikken.nl>2008-04-10 22:28:18 +0000
committerBertrik Sikken <bertrik@sikken.nl>2008-04-10 22:28:18 +0000
commit879c074656983784ba76d22c4e7663c42374194c (patch)
tree9588e1a074e9e178a6fd38b3efa9d12b51041334
parent10080b842067a53731b10951da6a0b1c33689e68 (diff)
downloadrockbox-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.c12
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;