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

Bo Shen voice.shen at atmel.com
Tue May 14 03:23:00 CEST 2013


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.

> Best regards,
> Marek Vasut

Best Regards,
Bo Shen



More information about the U-Boot mailing list