[U-Boot] Question: issues for usb keyboard work with OHCI HCD

Marek Vasut marex at denx.de
Tue May 14 17:54:30 CEST 2013


Dear Benoît Thébaudeau,

> Hi Marek,
> 
> On Tuesday, May 14, 2013 4:13:33 AM, Marek Vasut wrote:
> > Dear Bo Shen,
> > 
> > > Hi Marek,
> > > 
> > > On 5/13/2013 23:12, Marek Vasut wrote:
> > > > Dear Bo Shen,
> > > > 
> > > >> Hi All,
> > > >> 
> > > >> On 5/6/2013 11:01, Bo Shen wrote:
> > > >>> Hi Marek,
> > > >>> 
> > > >>> On 5/3/2013 21:40, Marek Vasut wrote:
> > > >>>> Dear Bo Shen,
> > > >>>> 
> > > >>>>> Hi All,
> > > >>>>> 
> > > >>>>>      Now, I test usb host support with Atmel boards, for example,
> > > >>>>> 
> > > >>>>> at91sam9x5ek board.
> > > >>>>> 
> > > >>>>>      When test OHCI USB host with usb keyboard. I meet the
> > > >>>>>      following
> > > >>>>> 
> > > >>>>> issue.
> > > >>>>> --->8---
> > > >>>>> U-Boot 2013.04-dirty (May 03 2013 - 11:00:34)
> > > >>>>> 
> > > >>>>> CPU: AT91SAM9G35
> > > >>>>> Crystal frequency:       12 MHz
> > > >>>>> CPU clock        :      400 MHz
> > > >>>>> Master clock     :  133.333 MHz
> > > >>>>> DRAM:  128 MiB
> > > >>>>> WARNING: Caches not enabled
> > > >>>>> NAND:  256 MiB
> > > >>>>> MMC:   mci: 0
> > > >>>>> In:    serial
> > > >>>>> Out:   serial
> > > >>>>> Err:   serial
> > > >>>>> Net:   macb0
> > > >>>>> Hit any key to stop autoboot:  0
> > > >>>>> U-Boot> usb start
> > > >>>>> (Re)start USB...
> > > >>>>> USB0:   scanning bus 0 for devices... 2 USB Device(s) found
> > > >>>>> 
> > > >>>>>           scanning usb for storage devices... 0 Storage Device(s)
> > > >>>>>           found
> > > >>>>> 
> > > >>>>> U-Boot> setenv stdin usbkbd
> > > >>>>> U-Boot> ERROR: sohci_submit_job: ENOMEM
> > > >>>>> ERROR: sohci_submit_job failed
> > > >>>>> ... ...
> > > >>>>> (repeat to print these two error line)
> > > >>>> 
> > > >>>> So the USB subsystem is leaking memory? Or do you only have too
> > > >>>> small MALLOC
> > > >>>> area?
> > > >>> 
> > > >>> I am not sure whether USB subsystem is leaking memory. I am digging
> > > >>> it.
> > > >>> 
> > > >>> This issue is not relative with MALLOC area.
> > > >>> This issue come out when all ptd[i].usb_dev (the maximum value of i
> > > >>> is 64) is not NULL. Each time to call td_alloc, it will check
> > > >>> whether ptd[i].usb_dev is NULL (i from 0 to 63), if not find one
> > > >>> of ptd[i].usb_dev is NULL, then report ENOMEM.
> > > >> 
> > > >> All clue for this issue?
> > > > 
> > > > I assume you mean the TDs are all used up then? Are they not free'd ?
> > > 
> > > Yes, that's true, all TDs are used. Nowhere free them, so I use
> > > urb_free_priv() to free urb in sohci_return_job() instead of
> > > td_submit_job(), then it works well.
> > 
> > Benoit, you were the last one to plumb in it, right?
> 
> No. That was for EHCI, not OHCI.

Hmmm ... I don't have any OHCI device. Bo, maybe you can try tracing it and 
fixing it?

Best regards,
Marek Vasut


More information about the U-Boot mailing list