simple changes to the stack
authorBernhard Urban <lewurm@gmx.net>
Tue, 22 Sep 2009 03:58:50 +0000 (05:58 +0200)
committerBernhard Urban <lewurm@gmx.net>
Tue, 22 Sep 2009 04:28:01 +0000 (06:28 +0200)
usb/Makefile
usb/core/core.c
usb/core/core.h
usb/core/usb.c
usb/core/usb.h
usb/drivers/class/storage.c
usb/host/ohci.c
usb/host/ohci.h

index aec92a52c6295c3206249aca75e870a286193ba8..fb7d8bfceb4ed38fcbf7fd80ba471cfb9b3843d3 100644 (file)
@@ -2,7 +2,7 @@
 CFLAGS += -Wno-unused-parameter 
 
 #debug flags; DU = Debug USB
-CFLAGS += -D _DU_OHCI_F #fire @ u/h/ohci.c
+#CFLAGS += -D _DU_OHCI_F #fire @ u/h/ohci.c
 #CFLAGS += -D _DU_OHCI_Q #enqueue @ u/h/ohci.c
 #CFLAGS += -D _DU_OHCI_RH #roothub @ u/h/ohci.c
 CFLAGS += -D _DU_CORE #@ u/c/core.c
index d54b515e868bfc5f4bdb4deedf5c0f374b1733fc..56a0b5763a42b8f4301ad01b6f78c820129a4b48 100644 (file)
@@ -101,29 +101,76 @@ usb_device *usb_add_device()
        dev->epTogl[1] = 0;
        dev->epTogl[2] = 0;
 
-       char buf[64];
+#define LEN 128
+       u8 buf[LEN];
        memset(buf, 0, sizeof(buf));
 
-       /* ask first 8 bytes of device descriptor with this special 
-        * GET Descriptor Request, when device address = 0
-        */
+       s8 ret;
+       u8 dev_desc_size;
+       memset(buf, 0, sizeof(buf));
+       ret = usb_get_dev_desc_simple(dev, buf, sizeof(buf));
+       printf("=============\nbuf: 0x%08X\nafter usb control msg(ret: %d):\n", buf, ret);
+       hexdump(buf, sizeof(buf));
+
+       /* set MaxPacketSize */
+       dev->bMaxPacketSize0 = (u8) buf[7];
+       if(!(u8)buf[7]) {
+               printf("FU\n");
+               return (void*)1;
+       }
+       /* save device descriptor size */
+       dev_desc_size = buf[0];
+
+       u8 address = usb_next_address();
+       ret = usb_set_address(dev, address);
+       dev->address = address;
+       printf("set address to %d\n", dev->address);
+
+       memset(buf, 0, sizeof(buf));
+       ret = usb_get_dev_desc(dev, buf, sizeof(buf), dev_desc_size);
+       printf("=============\nbuf: 0x%08X\nafter usb control msg(ret: %d):\n", buf, ret);
+       hexdump(buf, sizeof(buf));
+
+       dev->bDeviceClass = (u8) buf[4];
+       dev->bDeviceSubClass = (u8) buf[5];
+       dev->bDeviceProtocoll = (u8) buf[6];
+       dev->idVendor = (u16) (buf[9] << 8) | (buf[8]);
+       dev->idProduct = (u16) (buf[11] << 8) | (buf[10]);
+       dev->bcdDevice = (u16) (buf[13] << 8) | (buf[12]);
+
+       printf( "bDeviceClass 0x%02X\n"
+                       "bDeviceSubClass 0x%02X\n"
+                       "bDeviceProtocoll 0x%02X\n"
+                       "idVendor 0x%04X\n"
+                       "idProduct 0x%04X\n"
+                       "bcdDevice 0x%04X\n", dev->bDeviceClass,
+                       dev->bDeviceSubClass, dev->bDeviceProtocoll,
+                       dev->idVendor, dev->idProduct, dev->bcdDevice);
 
        /*
-        * see page 253 in usb_20.pdf
-        * 
-        * bmRequestType = 0x80 = 10000000B
-        * bRequest = GET_DESCRIPTOR
-        * wValue = DEVICE (Descriptor Type)
-        * wIndex = 0
-        * wLength = 64 // in fact just 8 bytes
-        */
-       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, DEVICE << 8, 0, 64, buf, 8, 0);
+       usb_get_descriptor(dev, DEVICE, 0, buf, 8);
+       memset(buf, 0, 8);
+       usb_get_descriptor(dev, DEVICE, 0, buf, size >= buf[0] ? buf[0] : size);
+       */
+#if 0
+       memset(buf, 0, sizeof(buf));
+       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, (DEVICE << 8) | 0, 0, 8, buf, 0);
+       printf("=============\nbuf: 0x%08X\nafter usb control msg:\n", buf);
+       hexdump(buf, sizeof(buf));
+
+       memset(buf, 0, sizeof(buf));
+       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, (DEVICE << 8) | 0, 0, buf[0], buf, 0);
+       printf("=============\nbuf: 0x%08X\nafter usb control msg:\n", buf);
+       hexdump(buf, sizeof(buf));
 
+       memset(buf, 0, sizeof(buf));
+       usb_get_string_simple(dev, 1, buf);
        printf("=============\nbuf: 0x%08X\nafter usb control msg:\n", buf);
        hexdump(buf, sizeof(buf));
+#endif
 
+#if 0
        u8 devdescr_size;
-       u8 address = usb_next_address();
 
        /* setup real ep0 fifo size */
        dev->bMaxPacketSize0 = (u8) buf[7];
@@ -136,6 +183,7 @@ usb_device *usb_add_device()
        devdescr_size = (u8) buf[0];
 
        /* define new adress */
+       memset(buf, 0, sizeof(buf));
        usb_control_msg(dev, 0x00, SET_ADDRESS, address, 0, 0, buf, 8, 0);
        dev->address = address;
        printf("=============\nbuf: 0x%08X\nafter usb control msg:\n", buf);
@@ -144,31 +192,17 @@ usb_device *usb_add_device()
 
 
        /* get complete device descriptor */
-       memset(buf, 0, 64);
+       memset(buf, 0, sizeof(buf));
        usb_control_msg(dev, 0x80, GET_DESCRIPTOR, DEVICE<<8, 0, devdescr_size, buf, 8, 0);
 
        printf("=============\nbuf: 0x%08X\nafter usb control msg:\n", buf);
        hexdump(buf, sizeof(buf));
 
        /* save only really neccessary values for this small usbstack */
-       dev->bDeviceClass = (u8) buf[4];
-       dev->bDeviceSubClass = (u8) buf[5];
-       dev->bDeviceProtocoll = (u8) buf[6];
-       dev->idVendor = (u16) (buf[9] << 8) | (buf[8]);
-       dev->idProduct = (u16) (buf[11] << 8) | (buf[10]);
-       dev->bcdDevice = (u16) (buf[13] << 8) | (buf[12]);
-
-       printf( "bDeviceClass 0x%02X\n"
-                       "bDeviceSubClass 0x%02X\n"
-                       "bDeviceProtocoll 0x%02X\n"
-                       "idVendor 0x%04X\n"
-                       "idProduct 0x%04X\n"
-                       "bcdDevice 0x%04X\n", dev->bDeviceClass, 
-                       dev->bDeviceSubClass, dev->bDeviceProtocoll,
-                       dev->idVendor, dev->idProduct, dev->bcdDevice);
+#endif
 
-#if 1
-       memset(buf, 0, 64);
+#if 0
+       memset(buf, 0, sizeof(buf));
        usb_control_msg(dev, 0x80, GET_DESCRIPTOR, (STRING<<8)|2, 0, 0x1a, buf, 8, 0);
        hexdump(buf, sizeof(buf));
        printf("String Descriptor [1]: ");
@@ -282,8 +316,8 @@ u16 usb_submit_irp(usb_irp *irp)
        usb_transfer_descriptor *td;
        u8 runloop = 1;
        u16 restlength = irp->len;
-       char *td_buf_ptr = irp->buffer;
-       char mybuf[64];
+       u8 *td_buf_ptr = irp->buffer;
+       u8 mybuf[64];
 
        u8 togl = irp->dev->epTogl[(irp->endpoint & 0x7F)];
 
index d48dea700eef83551b88c339b3447195103b8b88..ef8a9348d7f693e89f2ccda71ab156e123ab8a2b 100644 (file)
@@ -114,7 +114,7 @@ struct usb_irp_t {
        u8 epsize;
        u8 type;                                /* control, interrupt, bulk or isochron */
 
-       char * buffer;
+       u8 *buffer;
        u16 len;
 
        //list * td_list;
@@ -135,7 +135,7 @@ struct usb_transfer_descriptor_t {
        u8 iso;
        u8 togl;        
        
-       char * buffer;
+       u8 *buffer;
        u16 actlen;
        
        u8 state;
index 0f85c6370b2217df37241cec6a0461e8416ad03c..a18d471dc1d9e414457d3089b752048b9427e243 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-//wtf??!
-//#ifndef _USB_H_
-//#define _USB_H_
-
-//#include <stdlib.h>
-
 #include "usb.h"
 #include "core.h"
 #include "../host/host.h"
 #include "../usbspec/usb11spec.h"
 #include "../../malloc.h"
+#include "../../string.h"
 
 
 /******************* Device Operations **********************/
@@ -52,7 +47,7 @@
 /**
  * Open a device with verndor- and product-id for a communication.
  */
-usb_device * usb_open(u32 vendor_id, u32 product_id)
+usb_device *usb_open(u32 vendor_id, u32 product_id)
 {
        usb_device* dev;
        element * iterator = core.devices->head;
@@ -72,7 +67,7 @@ usb_device * usb_open(u32 vendor_id, u32 product_id)
 /**
  * Open a device with an class code for a communication.
  */
-usb_device * usb_open_class(u8 class)
+usb_device *usb_open_class(u8 class)
 {
        usb_device* dev;
        element * iterator = core.devices->head;
@@ -87,40 +82,53 @@ usb_device * usb_open_class(u8 class)
        return NULL;
 }
 
-/**
- * Close device after a communication.
+/* Close device after a communication.
  */
-u8 usb_close(usb_device *dev)
+s8 usb_close(usb_device *dev)
 {
 
        return 0;
 }
 
-u8 usb_get_device_descriptor(usb_device *dev, char *buf,u8 size)
+/* ask first 8 bytes of device descriptor with this special 
+ * GET Descriptor Request, when device address = 0
+ */
+s8 usb_get_dev_desc_simple(usb_device *dev, u8 *buf, u8 size)
 {
-
+       if(size < 8) {
+               return -1;
+       }
+       usb_get_descriptor(dev, DEVICE, 0, buf, 8);
        return 0;
 }
 
-u8 usb_set_address(usb_device *dev, u8 address)
+s8 usb_get_dev_desc(usb_device *dev, u8 *buf, u8 size, u8 dev_desc_size)
 {
+       printf("WTF SIZE: %X\n", size>= dev_desc_size ? dev_desc_size : size);
+       usb_get_descriptor(dev, DEVICE, 0, buf, size >= dev_desc_size ? dev_desc_size : size);
+       return 0;
+}
 
+s8 usb_set_address(usb_device *dev, u8 address)
+{
+       u8 buf[64];
+       usb_control_msg(dev, 0x00, SET_ADDRESS, address, 0, 0, buf, 0);
        return 0;
 }
 
-u8 usb_set_configuration(usb_device *dev, u8 configuration)
+s8 usb_set_configuration(usb_device *dev, u8 configuration)
 {
 
        return 0;
 }
 
-u8 usb_set_altinterface(usb_device *dev, u8 alternate)
+s8 usb_set_altinterface(usb_device *dev, u8 alternate)
 {
 
        return 0;
 }
 
-u8 usb_reset(usb_device *dev)
+s8 usb_reset(usb_device *dev)
 {
 
 
@@ -133,7 +141,8 @@ u8 usb_reset(usb_device *dev)
 /**
  * Create a control transfer.
  */
-u8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 index, u16 length,char *buf, u16 size, u16 timeout)
+s8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request,
+               u16 value, u16 index, u16 length, u8 *buf, u16 timeout)
 {
        usb_irp *irp = (usb_irp*)malloc(sizeof(usb_irp));
        irp->dev = dev;
@@ -142,14 +151,14 @@ u8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 i
        irp->epsize = dev->bMaxPacketSize0;
        irp->type = USB_CTRL;
 
-       buf[0]=(char)requesttype;
-       buf[1]=(char)request;
-       buf[2]=(char)(value);
-       buf[3]=(char)(value >> 8);
-       buf[4]=(char)(index);
-       buf[5]=(char)(index >> 8);
-       buf[6]=(char)(length);
-       buf[7]=(char)(length >> 8);
+       buf[0]=(u8)requesttype;
+       buf[1]=(u8)request;
+       buf[2]=(u8)(value);
+       buf[3]=(u8)(value >> 8);
+       buf[4]=(u8)(index);
+       buf[5]=(u8)(index >> 8);
+       buf[6]=(u8)(length);
+       buf[7]=(u8)(length >> 8);
 
        irp->buffer = buf;
        irp->len = length;
@@ -162,22 +171,23 @@ u8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 i
 }
 
 
-u8 usb_get_string(usb_device *dev, u8 index, u8 langid, char *buf, u8 buflen)
+s8 usb_get_string(usb_device *dev, u8 index, u8 langid, u8 *buf, u8 buflen)
 {
 
        return 0;
 }
 
 
-u8 usb_get_string_simple(usb_device *dev, u8 index, char *buf, u8 buflen)
+s8 usb_get_string_simple(usb_device *dev, u8 index, u8 *buf, u8 size)
 {
-
+       usb_get_descriptor(dev, STRING, index, buf, (u8) 8);
+       usb_get_descriptor(dev, STRING, index, buf, size >= buf[0] ? (u8) buf[0] : size);
        return 0;
 }
 
-u8 usb_get_descriptor(usb_device *dev, unsigned char type, unsigned char index, void *buf, u8 size)
+s8 usb_get_descriptor(usb_device *dev, u8 type, u8 index, u8 *buf, u8 size)
 {
-
+       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, (type << 8) | index, 0, size, buf, 0);
        return 0;
 }
 
@@ -187,7 +197,7 @@ u8 usb_get_descriptor(usb_device *dev, unsigned char type, unsigned char index,
 /**
  * Write to an a bulk endpoint.
  */
-u8 usb_bulk_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_bulk_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
        usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp));
        irp->dev = dev;
@@ -210,7 +220,7 @@ u8 usb_bulk_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
 /**
  * Read from an bulk endpoint.
  */
-u8 usb_bulk_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_bulk_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
        usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp));
        //irp->devaddress = dev->address;
@@ -235,7 +245,7 @@ u8 usb_bulk_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
 /**
  * Write to an interrupt endpoint.
  */
-u8 usb_interrupt_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_interrupt_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
 
        return 0;
@@ -244,7 +254,7 @@ u8 usb_interrupt_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
 /**
  * Read from an interrupt endpoint.
  */
-u8 usb_interrupt_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_interrupt_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
 
        return 0;
@@ -256,7 +266,7 @@ u8 usb_interrupt_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
 /**
  * Write to an isochron endpoint.
  */
-u8 usb_isochron_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_isochron_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
 
        return 0;
@@ -265,7 +275,7 @@ u8 usb_isochron_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
 /**
  * Read from an isochron endpoint.
  */
-u8 usb_isochron_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout)
+s8 usb_isochron_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout)
 {
 
 
index 6579b725b2acdab462e2cae90a59b72e485e9ba0..e036619212a7ed3bf0034a7aa0c2f317b9c69cfc 100644 (file)
 usb_device * usb_open(u32 vendor_id, u32 product_id);
 usb_device * usb_open_class(u8 class);
 
-u8 usb_close(usb_device *dev);
+s8 usb_close(usb_device *dev);
 
 
-
-u8 usb_get_device_descriptor(usb_device *dev, char *buf,u8 size);
-u8 usb_set_address(usb_device *dev, u8 address);
-u8 usb_set_configuration(usb_device *dev, u8 configuration);
-u8 usb_set_altinterface(usb_device *dev, u8 alternate);
+s8 usb_get_device_descriptor(usb_device *dev, u8 *buf, u8 buflen);
+s8 usb_set_address(usb_device *dev, u8 address);
+s8 usb_set_configuration(usb_device *dev, u8 configuration);
+s8 usb_set_altinterface(usb_device *dev, u8 alternate);
 
 
 /**
@@ -62,33 +61,30 @@ u8 usb_set_altinterface(usb_device *dev, u8 alternate);
  * it is connected to. Returns 0 on success or < 0 on error.
  */
 
-u8 usb_reset(usb_device *dev);
+s8 usb_reset(usb_device *dev);
 
 
 /******************* Control Transfer **********************/
-
-
-u8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 index, u16 length, char *buf, u16 size, u16 timeout);
-u8 usb_get_string(usb_device *dev, u8 index, u8 langid, char *buf, u8 buflen);
-u8 usb_get_string_simple(usb_device *dev, u8 index, char *buf, u8 buflen);
-u8 usb_get_descriptor(usb_device *dev, unsigned char type, unsigned char index, void *buf, u8 size);
+s8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 index, u16 length, u8 *buf, u16 timeout);
+s8 usb_get_string(usb_device *dev, u8 index, u8 langid, u8 *buf, u8 buflen);
+s8 usb_get_string_simple(usb_device *dev, u8 index, u8 *buf, u8 buflen);
+s8 usb_get_dev_desc_simple(usb_device *dev, u8 *buf, u8 size);
+s8 usb_get_dev_desc(usb_device *dev, u8 *buf, u8 size, u8 dev_desc_size);
+s8 usb_get_descriptor(usb_device *dev, u8 type, u8 index, u8 *buf, u8 size);
 
 
 /******************* Bulk Transfer **********************/
-
-u8 usb_bulk_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
-u8 usb_bulk_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
+s8 usb_bulk_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
+s8 usb_bulk_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
 
 
 /******************* Interrupt Transfer **********************/
-u8 usb_u8errupt_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
-u8 usb_u8errupt_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
+s8 usb_u8errupt_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
+s8 usb_u8errupt_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
 
 
 /******************* Isochron Transfer **********************/
-u8 usb_isochron_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
-u8 usb_isochron_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout);
-
-
+s8 usb_isochron_write(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
+s8 usb_isochron_read(usb_device *dev, u8 ep, u8 *buf, u8 size, u8 timeout);
 
 #endif //_USB_H_
index b8c8ee3a3d5510c1411b055dba50a6bbd639a1e5..5e565527b018db53eaf4f808d696b6c42a8d52ef 100644 (file)
@@ -74,7 +74,7 @@ void usb_storage_probe()
        #endif
  
        /* read interface descriptor for class code */
-       char buf[32];
+       u8 buf[32];
        
        usb_device* dev;
        element * iterator = core.devices->head;
@@ -83,7 +83,7 @@ void usb_storage_probe()
                dev = (usb_device*)iterator->data;
 
                /* get interface descriptor */
-               usb_control_msg(dev, 0x80, GET_DESCRIPTOR,2, 0,  32,buf, 8, 0);
+               usb_control_msg(dev, 0x80, GET_DESCRIPTOR,2, 0, 32, buf, 0);
 
                if(buf[14]==MASS_STORAGE_CLASSCODE){
                        massstorage[massstorage_in_use] = dev;
@@ -125,12 +125,12 @@ void usb_storage_check()
 u8 usb_storage_open(u8 device)
 {
        /* set configuration */
-       char tmp[8];
-       usb_control_msg(massstorage[device], 0x00,SET_CONFIGURATION,0x0100, 0, 0,tmp, 8, 0);
+       u8 tmp[8];
+       usb_control_msg(massstorage[device], 0x00,SET_CONFIGURATION,0x0100, 0, 0, tmp, 0);
 
 
        /* class request */
-       usb_control_msg(massstorage[device], 0xA1,0xFE,0, 0, 1,tmp, 8, 0);
+       usb_control_msg(massstorage[device], 0xA1,0xFE,0, 0, 1,tmp, 0);
 
        /* wait until the stick is complete ready */
        wait_ms(10);
@@ -157,9 +157,9 @@ u8 usb_storage_inquiry(u8 device)
 
        cbw->CBWCB[0]=0x12; // 0x12 = INQUIRY
 
-       usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); 
-       usb_bulk_read(massstorage[device], 1, (char*)cbw, 36, 0); 
-       usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); 
+       usb_bulk_write(massstorage[device], 2, (u8*)cbw, 31, 0); 
+       usb_bulk_read(massstorage[device], 1, (u8*)cbw, 36, 0); 
+       usb_bulk_read(massstorage[device], 1, (u8*)cbw, 13, 0); 
 
        free(cbw);
 
@@ -171,11 +171,11 @@ u8 usb_storage_read_capacity(u8 device)
 {
        /* send cwb "usbc" */
 
-       char tmp[8];
+       u8 tmp[8];
        u8 i;
        usb_storage_cbw  * cbw = (usb_storage_cbw*)malloc(sizeof(usb_storage_cbw));
 
-       usb_control_msg(massstorage[device], 0x02,1,0, 0x8100, 0,tmp, 8, 0);    // 
+       usb_control_msg(massstorage[device], 0x02,1,0, 0x8100, 0,tmp, 0);
 
        cbw->dCBWSignature= 0x43425355;
        cbw->dCBWTag=0x826A6008;
@@ -189,9 +189,9 @@ u8 usb_storage_read_capacity(u8 device)
 
        cbw->CBWCB[0]=0x25; // 0x12 = INQUIRY
 
-       usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); 
-       usb_bulk_read(massstorage[device], 1, (char*)cbw, 8, 0); 
-       usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); 
+       usb_bulk_write(massstorage[device], 2, (u8*)cbw, 31, 0); 
+       usb_bulk_read(massstorage[device], 1, (u8*)cbw, 8, 0); 
+       usb_bulk_read(massstorage[device], 1, (u8*)cbw, 13, 0); 
 
        free(cbw);
 
@@ -202,7 +202,7 @@ u8 usb_storage_read_capacity(u8 device)
 u8 usb_storage_read_sector(u8 device, u32 sector, char * buf)
 {
        /* send cwb "usbc" */
-       char tmpbuf[] = {0x55,0x53,0x42,0x43,0x08,
+       u8 tmpbuf[] = {0x55,0x53,0x42,0x43,0x08,
                0xE0,0x63,0x82,0x00,0x02,
                0x00,0x00,0x80,0x00,0x0A,
                0x28,0x00,0x00,0x00,0x00,
index 3e0e78ba52a197d32f70699e21a013fa06f10fd1..fdc2899c414eee3293968e617141eeedd69072c8 100644 (file)
@@ -187,13 +187,17 @@ static void general_td_fill(struct general_td *dest, const usb_transfer_descript
        dest->flags &= LE(~OHCI_TD_DIRECTION_PID_MASK);
        switch(src->pid) {
                case USB_PID_SETUP:
+#ifdef _DU_OHCI_Q
                        printf("pid_setup\n");
+#endif
                        dest->flags |= LE(OHCI_TD_DIRECTION_PID_SETUP);
                        dest->flags |= LE(OHCI_TD_TOGGLE_0);
                        dest->flags |= LE(OHCI_TD_BUFFER_ROUNDING);
                        break;
                case USB_PID_OUT:
+#ifdef _DU_OHCI_Q
                        printf("pid_out\n");
+#endif
                        dest->flags |= LE(OHCI_TD_DIRECTION_PID_OUT);
                        dest->flags |= LE(OHCI_TD_BUFFER_ROUNDING);
 
@@ -204,11 +208,15 @@ static void general_td_fill(struct general_td *dest, const usb_transfer_descript
                        dest->flags |= LE(OHCI_TD_TOGGLE_1);
                        break;
                case USB_PID_IN:
+#ifdef _DU_OHCI_Q
                        printf("pid_in\n");
+#endif
                        dest->flags |= LE(OHCI_TD_DIRECTION_PID_IN);
                        if(src->maxp > src->actlen) {
                                dest->flags |= LE(OHCI_TD_BUFFER_ROUNDING);
+#ifdef _DU_OHCI_Q
                                printf("round buffer!\n");
+#endif
                        }
                        /*
                         * let the endpoint do the togglestuff!
index 51be9bf31b1100845be2cd70ad47d486beb41b06..845cc63511ba7cf38f914869d4238c3884c243d7 100644 (file)
@@ -65,8 +65,7 @@ Copyright (C) 2009     Sebastian Falbesoner <sebastian.falbesoner@gmail.com>
 /* For initializing controller (mask in an HCFS mode too) */
 #define OHCI_CONTROL_INIT      (3 << 0)
 #define        OHCI_INTR_INIT \
-               (OHCI_INTR_MIE | OHCI_INTR_RHSC | OHCI_INTR_UE \
-               | OHCI_INTR_RD | OHCI_INTR_WDH)
+               (OHCI_INTR_MIE | OHCI_INTR_RHSC | OHCI_INTR_UE)
 
 /* OHCI ROOT HUB REGISTER MASKS */