
Dear Bo Shen,
Add RNDIS gadget support to test atmel usba udc driver
Signed-off-by: Bo Shen voice.shen@atmel.com
arch/arm/cpu/armv7/at91/sama5d3_devices.c | 12 ++++++ arch/arm/include/asm/arch-at91/at91_common.h | 1 + board/atmel/sama5d3xek/sama5d3xek.c | 51 ++++++++++++++++++++++++++ include/configs/sama5d3xek.h | 8 ++++ 4 files changed, 72 insertions(+)
diff --git a/arch/arm/cpu/armv7/at91/sama5d3_devices.c b/arch/arm/cpu/armv7/at91/sama5d3_devices.c index 4a3fca5..12c6d08 100644 --- a/arch/arm/cpu/armv7/at91/sama5d3_devices.c +++ b/arch/arm/cpu/armv7/at91/sama5d3_devices.c @@ -178,3 +178,15 @@ void at91_lcd_hw_init(void) at91_periph_clk_enable(ATMEL_ID_LCDC); } #endif
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA +void at91_udp_hw_init(void) +{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- /* Enable UPLL clock */
- writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr);
- /* Enable UDPHS clock */
- at91_periph_clk_enable(ATMEL_ID_UDPHS);
+} +#endif diff --git a/arch/arm/include/asm/arch-at91/at91_common.h b/arch/arm/include/asm/arch-at91/at91_common.h index d659702..7acc1b0 100644 --- a/arch/arm/include/asm/arch-at91/at91_common.h +++ b/arch/arm/include/asm/arch-at91/at91_common.h @@ -18,6 +18,7 @@ void at91_serial2_hw_init(void); void at91_seriald_hw_init(void); void at91_spi0_hw_init(unsigned long cs_mask); void at91_spi1_hw_init(unsigned long cs_mask); +void at91_udp_hw_init(void); void at91_uhp_hw_init(void); void at91_lcd_hw_init(void);
diff --git a/board/atmel/sama5d3xek/sama5d3xek.c b/board/atmel/sama5d3xek/sama5d3xek.c index 4a309ad..161e8ed 100644 --- a/board/atmel/sama5d3xek/sama5d3xek.c +++ b/board/atmel/sama5d3xek/sama5d3xek.c @@ -20,6 +20,10 @@ #include <net.h> #include <netdev.h>
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA +#include <linux/usb/atmel_usba_udc.h> +#endif
DECLARE_GLOBAL_DATA_PTR;
/*
*/ @@ -169,6 +173,9 @@ int board_init(void) #ifdef CONFIG_CMD_USB sama5d3xek_usb_hw_init(); #endif +#ifdef CONFIG_USB_GADGET_ATMEL_USBA
- at91_udp_hw_init();
+#endif #ifdef CONFIG_GENERIC_ATMEL_MCI sama5d3xek_mci_hw_init(); #endif @@ -193,6 +200,44 @@ int dram_init(void) return 0; }
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA +#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, \
- }
+static struct usba_ep_data usba_udc_ep[] = {
- EP("ep0", 0, 64, 1, 0, 0),
- EP("ep1", 1, 1024, 3, 1, 0),
- EP("ep2", 2, 1024, 3, 1, 0),
- EP("ep3", 3, 1024, 2, 1, 0),
- EP("ep4", 4, 1024, 2, 1, 0),
- EP("ep5", 5, 1024, 2, 1, 0),
- EP("ep6", 6, 1024, 2, 1, 0),
- EP("ep7", 7, 1024, 2, 1, 0),
- EP("ep8", 8, 1024, 2, 0, 0),
- EP("ep9", 9, 1024, 2, 0, 0),
- EP("ep10", 10, 1024, 2, 0, 0),
- EP("ep11", 11, 1024, 2, 0, 0),
- EP("ep12", 12, 1024, 2, 0, 0),
- EP("ep13", 13, 1024, 2, 0, 0),
- EP("ep14", 14, 1024, 2, 0, 0),
- EP("ep15", 15, 1024, 2, 0, 0),
+};
Can this not be part of the driver itself ?