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

Bo Shen voice.shen at atmel.com
Wed Sep 4 09:42:49 CEST 2013


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---

> Best regards
>
> Andreas Bießmann
>

Best Regards,
Bo Shen


More information about the U-Boot mailing list