[U-Boot] [RFC PATCH 3/3] ARM: atmel: add RNDIS gadget support

Andreas Bießmann andreas.devel at googlemail.com
Wed Sep 4 09:56:29 CEST 2013


Hi Bo,

On 09/04/2013 09:42 AM, Bo Shen wrote:
> Hi Andreas,
> 
> On 9/4/2013 15:32, Andreas Bießmann wrote:
>> Hi Bo, Marek,
>>
>> On 09/04/2013 04:01 AM, Bo Shen wrote:
>>> Hi Marek Vasut,
>>>
>>> On 09/04/2013 09:55 AM, Marek Vasut wrote:
>>>>>> I have considered to put this in driver, however, different Atmel SoC
>>>>>> have different attributes for each endpoint and different number of
>>>>>> endpoint.
>>>>>>
>>>>>> for example;
>>>>>> at91sam9x5: EP("ep1", 1, 1024, 2, 1, 1)
>>>>>> sama5d3x: EP("ep1", 1, 1024, 3, 1, 0)
>>>>>>
>>>>>> So, if I put this in driver, there will be many #ifdef. If newly SoC
>>>>>> added, maybe we will need to add #ifdef again. So, I put it here.
>>>> Can you not pull it into some header file at least? Having it in the
>>>> board file
>>>> will clearly result in duplication.
>>>
>>> OK, I will put it into header file.
>>
>> I'm fine with a header too. But for the records, the mentioned file is
>> _not_ board code but SoC code.
> 
> I will create a header file named atmel_usba_udc.h as other peripheral
> (at91_udc.h is reserved for full speed usb device), and put it under
> "arm/arm/include/asm/arch-at91/", the contents as following, does it OK?
> 
> ---8>---
> /*
>  * Copyright (C) 2005-2013 Atmel Corporation
>  *                         Bo Shen <voice.shen at atmel.com>
>  *
>  * SPDX-License-Identifier:     GPL-2.0+
>  */
> 
> #ifndef __ATMEL_USBA_UDC_H__
> #define __ATMEL_USBA_UDC_H__
> 
> #include <linux/usb/atmel_usba_udc.h>
> 
> #define EP(nam, idx, maxpkt, maxbk, dma, isoc)          \
>         [idx] = {                                       \
>                 .name   = nam,                          \
>                 .index  = idx,                          \
>                 .fifo_size      = maxpkt,               \
>                 .nr_banks       = maxbk,                \
>                 .can_dma        = dma,                  \
>                 .can_isoc       = isoc,                 \
>         }
> 
> #if defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
>         defined(CONFIG_AT91SAM9X5)
> static struct usba_ep_data usba_udc_ep[] = {
>         EP("ep0", 0, 64, 1, 0, 0),
>     ... ...
>         EP("ep6", 6, 1024, 3, 1, 1),
> };
> #elif defined(CONFIG_SAMA5D3)
> static struct usba_ep_data usba_udc_ep[] = {
>         EP("ep0", 0, 64, 1, 0, 0),
>         ..
>         EP("ep15", 15, 1024, 2, 0, 0),
> 
> 
>                   };
> #else
> # error "NO usba_udc_ep defined"
> #endif
> 
> #undef EP
> 
> struct usba_platform_data pdata = {
>         .num_ep = ARRAY_SIZE(usba_udc_ep),
>         .ep     = usba_udc_ep,
> };
> 
> #endif
> ---<8---

I'm fine with that. Was the g45/9X5 defined before or is it new in that
patch?

Best regards

Andreas Bießmann



More information about the U-Boot mailing list