Hi, >> >> Here are the last two setup data and CBW data received. the >> >> get_next_command() is not called when CBW data is received. the >> >> bulk_out_complete() wakes up the thread, however, get_next_command() >> >> still sleeps. i do not see where req->length is checked in gadget >> >> driver. >> >> >> >> g_file_storage gadget: ep0-setup, length 8: >> >> 00000000: 00 09 01 00 00 00 00 00 >> >> g_file_storage gadget: set configuration >> >> g_file_storage gadget: ep0-setup, length 8: >> >> 00000000: a1 fe 00 00 00 00 01 00 >> >> g_file_storage gadget: get max LUN >> >> g_file_storage gadget: ep0-in, length 1: >> >> 00000000: 00 >> >> g_file_storage gadget: bulk-out, length 31: >> >> 00000000: 55 53 42 43 a8 48 ed 86 24 00 00 00 80 00 06 12 >> >> 00000010: 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 >> >> g_file_storage gadget: bulk_out_complete --> 0, 31/0 >> > >> > file_storage uses bulk_out_intended_length. >> > >> > You're on your own, to be fair, using a really old kernel, you never >> > posted your UDC driver for review, so you need to fix it all up by >> > yourself. >> > >> > Read the code, add prints, look at other UDC drivers. g_file_storage is >> > next to perfect and proven to work with many, many different setups. >> >> Here is my UDC driver code. I use a kthread to poll the hardware >> register EP0 and EP1 interrupt. I removed the HW register access code. > > you should an interrupt handler to handle interrupts from your device. > Also, there are way too many mistakes on your driver, run checkpatch.pl, > compile it with sparse, don't hardcode addresses, don't reimplement a > bunch of infrastructure the kernel already gives you and check your > list_head usage! I have run checkpatch.pl and read the linux/usb/gadget.h. The Soc interrupt controller has problem, so i use a kernel thread to read from USB controller directly. > don't reimplement a bunch of infrastructure the kernel already gives you i don't understand this. please kindly show an example. > Also, you shouldn't requeue the request yourself, gadget driver owns the > request. which request do i requeue? please kindly point that out. Thanks! victor -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html