[U-Boot] [UBOOT RFC PATCH 09/13] common: cmd_dfu: add an API that takes controller index for handling interrupts

Kishon Vijay Abraham I kishon at ti.com
Tue Aug 19 18:09:41 CEST 2014


Hi,

On Tuesday 19 August 2014 02:23 PM, Lukasz Majewski wrote:
> Hi Kishon,
> 
>> Since there can be multiple USB controllers in the system,
>> usb_gadget_handle_interrupts should take controller index as
>> arguments.
> 
> The controller index is passed in the ums/dfu/thor command. Then PHY
> subsystem is properly configured.
> Since we only handle one USB controller transmission at a time (u-boot
> doesn't use interrupts - we only pool) the
> usb_gadget_handle_interrupts() was enough for our purpose.

yeah, if we have only one USB controller in the system, controller index is not
needed.

-Kishon
> 
> To start transmission from other usb controller you need to end current
> transmission and then invoke modified command with different controller
> number.
> 
> It would be enough to extend
> usb_gadget_handle_interrupts() to accept controller index argument
> (only six boards use it - it shall be easy to modify them all). 
> 
>> However such an API can only be added in board file so
>> added board_usb_gadget_handle_interrupts().
>> usb_gadget_handle_interrupts() should be deprecated.
>>
>> Signed-off-by: Kishon Vijay Abraham I <kishon at ti.com>
>> ---
>>  common/cmd_dfu.c | 1 +
>>  include/usb.h    | 7 +++++++
>>  2 files changed, 8 insertions(+)
>>
>> diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c
>> index 1e7d50c..f27ba52 100644
>> --- a/common/cmd_dfu.c
>> +++ b/common/cmd_dfu.c
>> @@ -52,6 +52,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int
>> argc, char * const argv[]) goto exit;
>>  
>>  		usb_gadget_handle_interrupts();
>> +		board_usb_gadget_handle_interrupts(controller_index);
> 
> NAK, for the reason stated above. 
> 
>>  	}
>>  exit:
>>  	g_dnl_unregister();
>> diff --git a/include/usb.h b/include/usb.h
>> index d9fedee..26c6462 100644
>> --- a/include/usb.h
>> +++ b/include/usb.h
>> @@ -197,6 +197,13 @@ int board_usb_init(int index, enum usb_init_type
>> init); */
>>  int board_usb_cleanup(int index, enum usb_init_type init);
>>  
>> +/*
>> + * Can be use to handle interrupts from a specific controller.
>> + *
>> + * @index index of the USB controller
>> + */
>> +int board_usb_gadget_handle_interrupts(int index);
>> +
>>  #ifdef CONFIG_USB_STORAGE
>>  
>>  #define USB_MAX_STOR_DEV 5
> 
> 
> 


More information about the U-Boot mailing list