]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
Applied changes to USB support taken from uLan project (http://ulan.sourceforge.net/).
authorpisa <sojkam1@fel.cvut.cz>
Mon, 8 Aug 2005 07:25:00 +0000 (07:25 +0000)
committerpisa <sojkam1@fel.cvut.cz>
Mon, 8 Aug 2005 07:25:00 +0000 (07:25 +0000)
darcs-hash:20050808072547-a67a6-340dbc3c82717521cf2502354aeb95f682f543ef.gz

libs4c/usb/base/Makefile.omk
libs4c/usb/base/usb/usbdebug.h
libs4c/usb/base/usbdebug.c
libs4c/usb/more/Makefile.omk
libs4c/usb/more/usb/usb_loader.h
libs4c/usb/more/usb_stdreq.c
libs4c/usb/pdiusb/Makefile.omk
libs4c/usb/pdiusb/pdi.c
libs4c/usb/pdiusb/pdiusb.c
libs4c/usb/pdiusb/usb/pdi.h
libs4c/usb/pdiusb/usb/pdiusb.h

index 19b27191fb570d36fc27c134b05070f3b1a40a64..c522d2bbda76b3f8fb69114001b6180d91ecf6eb 100644 (file)
@@ -1,8 +1,11 @@
+default_CONFIG = CONFIG_USB_BASE=y
+
+ifeq ($(CONFIG_USB_BASE),y) 
 lib_LIBRARIES = usbbase
 
 #shared_LIBRARIES = 
 
-#include_HEADERS  = usb.h usb_spec.h usbdebug.h usb_stdreq.h
+#include_HEADERS  = 
 
 nobase_include_HEADERS = usb/usb.h usb/usb_spec.h usb/usb_stdreq.h usb/usbdebug.h
 
@@ -10,4 +13,7 @@ usbbase_SOURCES = usb.c usbdebug.c
 
 #lib_LOADLIBES = 
 #bin_PROGRAMS = 
+endif #CONFIG_USB_BASE
+
+
 
index a5967e9b897cc4dc8b09c50774ca2c34bbeafe4e..c81adf52e0ffcf49d95602a596aea68b56577a44 100644 (file)
 #define DEBUG_LEVEL_HIGH    3
 #define DEBUG_LEVEL_VERBOSE 4
 
-
+#ifndef DEBUG_STATIC_LEVEL
 /* Global static debug level */
 #define DEBUG_STATIC_LEVEL     DEBUG_LEVEL_NONE
+#endif
 
 /* If it is defined, current global debug level is
    in 'global_debug_level' variable. Otherwise will
    usage : usb_debug_print( DEBUG_LEVEL_MEDIUM,("i=%d",i));
 */
 #define usb_debug_print( _lvl_, _prnargs_)      \
-  do {                                      \
-    if ( usb_debug_level >= _lvl_) {     \
+  do {                                          \
+    if ( usb_debug_level >= _lvl_) {            \
       usb_printf _prnargs_;                     \
-    }                                       \
+    }                                           \
   } while(0)
 
 /* usb_debug_info( printargs) print debug info always
    usage : usb_debug_info( "debug info");
 */
-#define usb_debug_info usb_printf  /* !!! tohle musi byt jinak !!! */
+#define usb_debug_info usb_printf  /* FIXME: this is not correct */
 
 #else /* DEBUG */
   #define usb_debug_print( _lvl_, _prnargs_)
index bb8ba938d0b6803dbe84111b9e703f28a1c3653d..48bee80d8128b3124796eefb4d13d820fc421bec 100644 (file)
@@ -4,14 +4,6 @@
 #include <usb/usbdebug.h>
 #include <usb/usb_spec.h>
 
-
-void usb_debug_set_level(int level) {
- #if defined(DEBUG_USE_DYNAMIC_LEVEL) && defined(DEBUG)
-  usb_debug_level = level;
- #endif /*DEBUG_USE_DYNAMIC_LEVEL*/
-}
-
-
 #ifdef DEBUG
 
 /* debug can be enabled in run-time */
@@ -22,6 +14,13 @@ void usb_debug_set_level(int level) {
 /*************************************************************
  *** Debug infos
  *************************************************************/
+
+  void usb_debug_set_level(int level) {
+   #if defined(DEBUG_USE_DYNAMIC_LEVEL) /* use dynamic debug level */
+    usb_debug_level = level;
+   #endif  
+  }
+
   
   char *usb_debug_get_req_recipient( char rqt) {
     switch ( rqt & USB_RECIPIENT) {
@@ -70,5 +69,8 @@ void usb_debug_set_level(int level) {
     }
     return "UNKNOWN";
   }
-  
+
+#else /*DEBUG*/  
+  void usb_debug_set_level(int level) {
+  }
 #endif /* DEBUG */
index b551a132bc1b08b0398c93a60661c0a2f62a6c5a..8c2146c2fbfc2fd9d31358b3aafc575a040d6ab3 100644 (file)
@@ -1,3 +1,6 @@
+default_CONFIG = CONFIG_USB_MORE=y
+
+ifeq ($(CONFIG_USB_MORE),y) 
 lib_LIBRARIES = usbmore
 
 #shared_LIBRARIES = 
@@ -9,3 +12,5 @@ usbmore_SOURCES = usb_stdreq.c
 #lib_LOADLIBES = 
 #bin_PROGRAMS = 
 
+endif #CONFIG_USB_MORE
+
index 447018deeadf7aa800df8a476de8af033d02c525..7b7fddb0457d7ecfab217975bd72602af34cc162 100644 (file)
 // wLength - data or length of data
 
 //int usb_msp430_loader(usb_ep_t *ep, USB_DEVICE_REQUEST *dreq);
-/*int usb_msp430_loader(struct usb_device_t *udev);*/
-int usb_msc1210_loader(usb_device_t *udev);
-
-#if 0 /* msp430 */
-int jtag_check_init(int force);
-#endif /* msc1210 */
+int usb_native_loader(struct usb_device_t *udev);
 
 #endif /*_USB_LOADER_H*/
index 8e945ae9dbaf49c5c6a103385a5687a71a698d5d..89ac24a58090f02655e463a63829444b8cbcc9eb 100644 (file)
@@ -16,7 +16,7 @@
   // ****************************
   int usb_stdreq_get_status( usb_device_t *udev)
   {
-    unsigned char c, endp, buf[2] = { 0, 0};
+    unsigned char c, buf[2] = { 0, 0};
     unsigned char epid = (unsigned char) udev->request.wIndex;
 
     usb_debug_print( DEBUG_LEVEL_HIGH, ("GetStatus\n"));
       case USB_RECIPIENT_INTERFACE:
         break;
       case USB_RECIPIENT_ENDPOINT:
-        endp = ( unsigned char)( epid & PDI_CNT_EP);
-        if ( epid & ( unsigned char) USB_ENDPOINT_DIRECTION_MASK)
-          c = pdiSelectEp( endp * 2 + 1); // endpoint in
+        if ( epid & USB_ENDPOINT_DIRECTION_MASK)
+          c = pdiSelectEp(pdiEp2Idx(epid)); // endpoint in
         else
-          c = pdiSelectEp( endp * 2);     // endpoint Out
+          c = pdiSelectEp(pdiEp2Idx(epid));     // endpoint Out
           #ifdef PDIUSBD12
           buf[0] = (( c & PDI_SELEP_STALL) == PDI_SELEP_STALL);
           #else
@@ -50,8 +49,8 @@
 
   int usb_stdreq_clear_feature( usb_device_t *udev)
   {
-    unsigned char endp;
     USB_DEVICE_REQUEST *dreq = &(udev->request);
+    unsigned char epid = (unsigned char) dreq->wIndex;
 
     usb_debug_print( DEBUG_LEVEL_HIGH, ("ClearFeature\n"));
     switch( dreq->bmRequestType & USB_RECIPIENT) {
         break;
       case USB_RECIPIENT_ENDPOINT:
         if ( dreq->wValue == USB_FEATURE_ENDPOINT_STALL) {
-          endp = ( unsigned char)( dreq->wIndex & PDI_CNT_EP);
-          if ( dreq->wIndex & ( unsigned char) USB_ENDPOINT_DIRECTION_MASK)
-            pdiSetEpStatus( endp * 2 + 1, 0); // clear TX stall for IN on EPn
+          if ( epid & USB_ENDPOINT_DIRECTION_MASK)
+            pdiSetEpStatus(pdiEp2Idx(epid), 0); // clear TX stall for IN on EPn
           else
-            pdiSetEpStatus( endp * 2, 0);     // clear RX stall for OUT on EPn
+            pdiSetEpStatus(pdiEp2Idx(epid), 0); // clear RX stall for OUT on EPn
           usb_udev_ack_setup( udev);
           return USB_COMPLETE_OK;
         }
@@ -79,8 +77,8 @@
 
   int usb_stdreq_set_feature( usb_device_t *udev)
   {
-    unsigned char endp;
     USB_DEVICE_REQUEST *dreq = &(udev->request);
+    unsigned char epid = (unsigned char) dreq->wIndex;
 
     usb_debug_print( DEBUG_LEVEL_HIGH, ("SetFeature\n"));
     switch( dreq->bmRequestType & USB_RECIPIENT) {
         break;
       case USB_RECIPIENT_ENDPOINT:
         if ( dreq->wValue == USB_FEATURE_ENDPOINT_STALL) {
-          endp = ( unsigned char)( dreq->wIndex & PDI_CNT_EP);
-          if ( dreq->wIndex & ( unsigned char) USB_ENDPOINT_DIRECTION_MASK)
-            pdiSetEpStatus( endp * 2 + 1, 1); // set TX stall for IN on EPn
+          if ( epid & USB_ENDPOINT_DIRECTION_MASK)
+            pdiSetEpStatus( pdiEp2Idx(epid), 1); // set TX stall for IN on EPn
           else
-            pdiSetEpStatus( endp * 2, 1);     // set RX stall for OUT on EPn
+            pdiSetEpStatus( pdiEp2Idx(epid), 1);     // set RX stall for OUT on EPn
           usb_udev_ack_setup( udev);
           return USB_COMPLETE_OK;
         }
index dbae3c5dcf5e30e7be559bddeb57728591341ed3..41e84f989dfd086e8421e6c06ebc9a961d05b914 100644 (file)
@@ -1,13 +1,10 @@
-lib_LIBRARIES = usbpdi
-
-#shared_LIBRARIES = 
+default_CONFIG = CONFIG_USB_PDIUSB=y
 
-#include_HEADERS  = usb.h usb_spec.h usbdebug.h usb_stdreq.h
+ifeq ($(CONFIG_USB_PDIUSB),y) 
+lib_LIBRARIES = usbpdi
 
 nobase_include_HEADERS = usb/pdi.h usb/pdiusb.h
 
 usbpdi_SOURCES = pdi.c pdiusb.c
-
-#lib_LOADLIBES = 
-#bin_PROGRAMS = 
-
+#usbpdi_SOURCES +=  pdi4rtems.c
+endif #CONFIG_USB_PDIUSB
index 901e0467141191dc963c3e7f5e252faf1b178acd..3229d360b54476fc699f9d0d6f0ea4d528b1cf4b 100644 (file)
@@ -82,7 +82,7 @@ if ( LastInt) {
     usb_debug_print( DEBUG_LEVEL_HIGH, ("PDI Int=0x%04X\n", LastInt));
     
     if ( LastInt & PDI_INT_BUSRESET) {                 // D12 - Bus reset reached
-      /*pdiInitChipState();*/
+      pdiInitChipState();
       udev->flags |= USB_FLAG_BUS_RESET;
       ret = 1;
     } else {
index 0ae306e2b9297f79ac506530deb330f4d9002a9e..280717ce19a95ace829a53fda3aaebcd208a58f0 100644 (file)
@@ -14,7 +14,8 @@
 #if __BYTE_ORDER == __BIG_ENDIAN
   #include <byteswap.h>
 #endif
-#include "usb/pdiusb.h"
+#include <usb/pdiusb.h>
+#include <usb/usb_spec.h>
 
   #ifdef PDI_CMD_RWD_INTERNAL
    #ifndef PDIUSBD12
     pdiSendCommand( PDI_CMD_SET_CHNG_BITS);
     pdiWriteData( 1, &byBits);
   }
-
+  
 #endif
 
 
                PDI_MODE_SOFT_CONNECT | PDI_MODE_SINGLE_FNC | PDI_CLOCK_12M);
  }
 #endif
+
+/*********************************************************/
+
+ static const unsigned char epin2idx[]={
+   PDI_EP0_IN,
+   PDI_EP1_IN,
+  #if PDI_CNT_EP > 1
+   PDI_EP2_IN,
+  #if PDI_CNT_EP > 2
+   PDI_EP3_IN,
+  #endif
+  #endif
+ };
+
+ static const unsigned char epout2idx[]={
+   PDI_EP0_OUT,
+   PDI_EP1_OUT,
+  #if PDI_CNT_EP > 1
+   PDI_EP2_OUT,
+  #if PDI_CNT_EP > 2
+   PDI_EP3_OUT,
+  #endif
+  #endif
+ };
+
+ // pdiEp2Idx
+ // convert endpoint number to pdi index number
+ unsigned char pdiEp2Idx(unsigned char ep) {
+   if(ep & USB_ENDPOINT_DIRECTION_MASK)
+     return epin2idx[ep & 0xf];
+   else
+     return epout2idx[ep & 0xf];
+ }
+
  /*********************************************************/
  /*********************************************************/
index cdd7795efc41f6edfa1bf62cc321268f6a48cb8a..21bb5dbec5f0a5f31d07f896490156c68af4a956 100644 (file)
@@ -9,7 +9,8 @@
 
   #include <usb/usb.h>
  
-  int usb_pdi_init( usb_device_t *udev) REENTRANT_SIGN;
+//  int usb_pdi_init( usb_device_t *udev) REENTRANT_SIGN;
+  int usb_pdi_init( usb_device_t *udev);
   
   #ifdef USB_PDI_DIRECT_FNC
     #define USB_PDI_EXPORT_FNC
index cb7fd259cc7cf1363b517b3b2e11478d71272cf1..f006cb83ae443371bdfe650a67b6ce0e9c4910a9 100644 (file)
 #else
  void pdiAckSetupFncControl( unsigned char Fnc);
 #endif
-             
+
+unsigned char pdiEp2Idx(unsigned char ep);
+
 /*********************************************************/
 #endif // from _PDI_ERROR_NO_CONTINUE
 /*********************************************************/