From: Bernhard Urban Date: Tue, 22 Sep 2009 03:58:50 +0000 (+0200) Subject: simple changes to the stack X-Git-Tag: demo0~21 X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=ppcskel.git;a=commitdiff_plain;h=d018be8726c063c417463ff987fbd487b3cf9cad simple changes to the stack --- diff --git a/usb/Makefile b/usb/Makefile index aec92a5..fb7d8bf 100644 --- a/usb/Makefile +++ b/usb/Makefile @@ -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 diff --git a/usb/core/core.c b/usb/core/core.c index d54b515..56a0b57 100644 --- a/usb/core/core.c +++ b/usb/core/core.c @@ -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)]; diff --git a/usb/core/core.h b/usb/core/core.h index d48dea7..ef8a934 100644 --- a/usb/core/core.h +++ b/usb/core/core.h @@ -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; diff --git a/usb/core/usb.c b/usb/core/usb.c index 0f85c63..a18d471 100644 --- a/usb/core/usb.c +++ b/usb/core/usb.c @@ -34,17 +34,12 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -//wtf??! -//#ifndef _USB_H_ -//#define _USB_H_ - -//#include - #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) { diff --git a/usb/core/usb.h b/usb/core/usb.h index 6579b72..e036619 100644 --- a/usb/core/usb.h +++ b/usb/core/usb.h @@ -47,14 +47,13 @@ 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_ diff --git a/usb/drivers/class/storage.c b/usb/drivers/class/storage.c index b8c8ee3..5e56552 100644 --- a/usb/drivers/class/storage.c +++ b/usb/drivers/class/storage.c @@ -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, diff --git a/usb/host/ohci.c b/usb/host/ohci.c index 3e0e78b..fdc2899 100644 --- a/usb/host/ohci.c +++ b/usb/host/ohci.c @@ -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! diff --git a/usb/host/ohci.h b/usb/host/ohci.h index 51be9bf..845cc63 100644 --- a/usb/host/ohci.h +++ b/usb/host/ohci.h @@ -65,8 +65,7 @@ Copyright (C) 2009 Sebastian Falbesoner /* 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 */