From fec406c7a29f015c7fe1ded881e565a73b1e0d09 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Sun, 28 Oct 2007 14:02:51 +0000 Subject: add some informations about this file git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15344 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/usb/arcotg_dcd.c | 24 +++--------------------- firmware/export/usb_ch9.h | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 21 deletions(-) (limited to 'firmware') diff --git a/firmware/drivers/usb/arcotg_dcd.c b/firmware/drivers/usb/arcotg_dcd.c index fe8ae803c0..c45a790c04 100644 --- a/firmware/drivers/usb/arcotg_dcd.c +++ b/firmware/drivers/usb/arcotg_dcd.c @@ -467,25 +467,17 @@ static void resume_int(void) static void reset_int(void) { - struct timer t; - /* clear device address */ UDC_DEVICEADDR = 0 << 25; /* update usb state */ dcd_controller.usb_state = USB_STATE_DEFAULT; - timer_set(&t, RESET_TIMER); - UDC_ENDPTSETUPSTAT = UDC_ENDPTSETUPSTAT; UDC_ENDPTCOMPLETE = UDC_ENDPTCOMPLETE; - while (UDC_ENDPTPRIME) { /* prime and flush pending transfers */ - if (timer_expired(&t)) { - logf("TIMEOUT->p&f"); - } - } - + /* prime and flush pending transfers */ + while (UDC_ENDPTPRIME); UDC_ENDPTFLUSH = ~0; if ((UDC_PORTSC1 & PORTSCX_PORT_RESET) == 0) { @@ -493,19 +485,9 @@ static void reset_int(void) } /* clear USB Reset status bit */ - UDC_USBSTS = USB_STS_RESET; - - /* wait for port change */ - while ((UDC_USBSTS & USB_STS_PORT_CHANGE) == 0) { - if (timer_expired(&t)) { - logf("TIMEOUT->portchange"); - } - } - - UDC_USBSTS = (1 << 2); + UDC_USBSTS |= USB_STS_RESET; } - /*-------------------------------------------------------------------------*/ /* usb controller ops */ diff --git a/firmware/export/usb_ch9.h b/firmware/export/usb_ch9.h index a40bc4e4ae..b8fe181158 100644 --- a/firmware/export/usb_ch9.h +++ b/firmware/export/usb_ch9.h @@ -21,6 +21,33 @@ * ****************************************************************************/ +/* + * This file holds USB constants and structures that are needed for + * USB device APIs. These are used by the USB device model, which is + * defined in chapter 9 of the USB 2.0 specification and in the + * Wireless USB 1.0 (spread around). + * + * USB 2.0 adds an additional "On The Go" (OTG) mode, which lets systems + * act either as a USB master/host or as a USB slave/device. That means + * the master and slave side APIs benefit from working well together. + * + * There's also "Wireless USB", using low power short range radios for + * peripheral interconnection but otherwise building on the USB framework. + * + * Note all descriptors are declared '__attribute__((packed))' so that: + * + * [a] they never get padded, either internally (USB spec writers + * probably handled that) or externally; + * + * [b] so that accessing bigger-than-a-bytes fields will never + * generate bus errors on any platform, even when the location of + * its descriptor inside a bundle isn't "naturally aligned", and + * + * [c] for consistency, removing all doubt even when it appears to + * someone that the two other points are non-issues for that + * particular descriptor type. + */ + #ifndef _CH9_H_ #define _CH9_H_ -- cgit v1.2.3