diff options
| -rw-r--r-- | arch/arm/cpu/armv7/at91/sama5d3_devices.c | 12 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/at91_common.h | 1 | ||||
| -rw-r--r-- | board/atmel/sama5d3xek/sama5d3xek.c | 13 | ||||
| -rw-r--r-- | include/configs/sama5d3xek.h | 8 | 
4 files changed, 34 insertions, 0 deletions
| diff --git a/arch/arm/cpu/armv7/at91/sama5d3_devices.c b/arch/arm/cpu/armv7/at91/sama5d3_devices.c index e55e1c660..51f0a6dff 100644 --- a/arch/arm/cpu/armv7/at91/sama5d3_devices.c +++ b/arch/arm/cpu/armv7/at91/sama5d3_devices.c @@ -202,3 +202,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 9f54fddce..abcb97d10 100644 --- a/arch/arm/include/asm/arch-at91/at91_common.h +++ b/arch/arm/include/asm/arch-at91/at91_common.h @@ -19,6 +19,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 97caf64d4..b0965ef21 100644 --- a/board/atmel/sama5d3xek/sama5d3xek.c +++ b/board/atmel/sama5d3xek/sama5d3xek.c @@ -21,6 +21,10 @@  #include <net.h>  #include <netdev.h> +#ifdef CONFIG_USB_GADGET_ATMEL_USBA +#include <asm/arch/atmel_usba_udc.h> +#endif +  DECLARE_GLOBAL_DATA_PTR;  /* ------------------------------------------------------------------------- */ @@ -170,6 +174,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 @@ -221,6 +228,12 @@ int board_eth_init(bd_t *bis)  	if (has_gmac())  		rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC, 0x00);  #endif +#ifdef CONFIG_USB_GADGET_ATMEL_USBA +	usba_udc_probe(&pdata); +#ifdef CONFIG_USB_ETH_RNDIS +	usb_eth_initialize(bis); +#endif +#endif  	return rc;  } diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h index 76fa500ed..79c00684d 100644 --- a/include/configs/sama5d3xek.h +++ b/include/configs/sama5d3xek.h @@ -162,6 +162,14 @@  #define CONFIG_USB_STORAGE  #endif +/* USB device */ +#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_USB_GADGET_ATMEL_USBA +#define CONFIG_USB_ETHER +#define CONFIG_USB_ETH_RNDIS +#define CONFIG_USBNET_MANUFACTURER      "Atmel SAMA5D3xEK" +  #if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)  #define CONFIG_CMD_FAT  #endif |