Index: firmware/target/arm/usb-s3c6400x.c =================================================================== --- firmware/target/arm/usb-s3c6400x.c (Revision 24214) +++ firmware/target/arm/usb-s3c6400x.c (Arbeitskopie) @@ -50,6 +50,7 @@ static struct ep_type endpoints[5]; static struct usb_ctrlrequest ctrlreq USB_DEVBSS_ATTR; +static unsigned char dummy_data[32] USB_DEVBSS_ATTR; int usb_drv_port_speed(void) { @@ -291,7 +292,7 @@ DOEPCTL(ep) |= 0x8000; /* EPx OUT ACTIVE */ int blocksize = usb_drv_port_speed() ? 512 : 64; int packets = (length + blocksize - 1) / blocksize; - if (!length) DIEPTSIZ(ep) = 1 << 19; /* one empty packet */ + if (!length) DOEPTSIZ(ep) = 1 << 19; /* one empty packet */ else DOEPTSIZ(ep) = length | (packets << 19); DOEPDMA(ep) = (uint32_t)ptr; clean_dcache(); @@ -316,6 +317,7 @@ int usb_drv_recv(int endpoint, void* ptr, int length) { + if(ptr==NULL) ptr = dummy_data; ep_recv(endpoint & 0x7f, ptr, length); return 0; }