Hi,
On Thu, Jan 24, 2013 at 04:25:24PM +0800, victor yeo wrote:
> Hi,
>
> >> > 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.
> >
> > #define IO_OFFSET 0x55000000
> > #define __IO_ADDRESS(x) ((x) + IO_OFFSET)
> >
> > #define IO_ADDRESS(pa) IOMEM(__IO_ADDRESS(pa))
> >
> > #ifdef IOMEM // Override asm/io.h
> > #undef IOMEM
> > #endif // IOMEM
> > #ifdef __ASSEMBLER__
> > #define IOMEM(x) x
> > #else
> > #define IOMEM(x) ((void __force __iomem *)(x))
> > #endif
> >
> > none of this should be in the driver.
>
> this can be removed.
>
> >> > Also, you shouldn't requeue the request yourself, gadget driver owns the
> >> > request.
> >> which request do i requeue? please kindly point that out. Thanks!
> >
> > look at your code. Look what you do after you call complete.
>
> is it this code? i will remove the redundant code after complete.
>
> ka_ep_p->req.complete(&ka_ep_p->ep, &req->req);
> if (num == 0) {
> ka_ep_p->req.length = 0;
> usb_ep_queue(&ka_ep_p->ep, &req->req, 0);
> ka_ep_p->desc = &ep0_in_desc;
> }you should delete the request from your list. Whatever you do, has to be undone. > i read the net2272.c, the net2272_enable() is called by gadget driver > enable_endpoint(). When i run the gadget driver, enable_endpoint() is > called for fsg->bulk_in and fsg->bulk_out. The enable_endpoint() of > fsg->intr_in is not called because transport_is_cbi() is false. So > how can the endpoint 0 be enabled? endpoint 0 has to be always enabled by the UDC driver. Gadget driver expects endpoint 0 to be ready. -- balbi
signature.asc
Description: Digital signature
