[U-Boot] [PATCH 1/3] zynqmp: usb: Add usb dwc3 driver support for zynqmp

Michal Simek monstr at monstr.eu
Wed Aug 12 12:24:12 CEST 2015


On 08/04/2015 09:33 AM, Siva Durga Prasad Paladugu wrote:
> Added usb dwc3 driver support for zynqmp
> this also supports the DFU and LTHOR to download
> the linux images on to RAM and cen be booted from
> those linux images.
> 
> Signed-off-by: Siva Durga Prasad Paladugu <sivadur at xilinx.com>
> ---
>  arch/arm/cpu/armv8/zynqmp/Kconfig           |    3 ++
>  arch/arm/include/asm/arch-zynqmp/hardware.h |    3 ++
>  board/xilinx/zynqmp/zynqmp.c                |   27 +++++++++++++++++
>  configs/xilinx_zynqmp_ep_defconfig          |    1 +
>  include/configs/xilinx_zynqmp.h             |   41 +++++++++++++++++++++++++-
>  5 files changed, 73 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig b/arch/arm/cpu/armv8/zynqmp/Kconfig
> index c8fcfb6..9a19dfa 100644
> --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> @@ -20,4 +20,7 @@ config SYS_SOC
>  config SYS_CONFIG_NAME
>  	default "xilinx_zynqmp_ep" if TARGET_ZYNQMP_EP
>  
> +config ZYNQMP_USB
> +	bool "Configure ZynqMP USB"
> +
>  endif
> diff --git a/arch/arm/include/asm/arch-zynqmp/hardware.h b/arch/arm/include/asm/arch-zynqmp/hardware.h
> index 7640eab..8c041c0 100644
> --- a/arch/arm/include/asm/arch-zynqmp/hardware.h
> +++ b/arch/arm/include/asm/arch-zynqmp/hardware.h
> @@ -27,6 +27,9 @@
>  
>  #define ZYNQMP_SATA_BASEADDR	0xFD0C0000
>  
> +#define ZYNQMP_USB0_XHCI_BASEADDR	0xFE200000
> +#define ZYNQMP_USB1_XHCI_BASEADDR	0xFE300000
> +
>  #define ZYNQMP_CRL_APB_BASEADDR	0xFF5E0000
>  #define ZYNQMP_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT	0x1000000
>  
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index 70d9c2c..d105bb4 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -12,6 +12,8 @@
>  #include <asm/arch/hardware.h>
>  #include <asm/arch/sys_proto.h>
>  #include <asm/io.h>
> +#include <usb.h>
> +#include <dwc3-uboot.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -137,3 +139,28 @@ int checkboard(void)
>  	return 0;
>  }
>  
> +#ifdef CONFIG_USB_DWC3
> +static struct dwc3_device dwc3_device_data = {
> +	.maximum_speed = USB_SPEED_HIGH,
> +	.base = ZYNQMP_USB0_XHCI_BASEADDR,
> +	.dr_mode = USB_DR_MODE_PERIPHERAL,
> +	.index = 0,
> +};
> +
> +int usb_gadget_handle_interrupts(void)
> +{
> +	dwc3_uboot_handle_interrupt(0);
> +	return 0;
> +}
> +
> +int board_usb_init(int index, enum usb_init_type init)
> +{
> +	return dwc3_uboot_init(&dwc3_device_data);
> +}
> +
> +int board_usb_cleanup(int index, enum usb_init_type init)
> +{
> +	dwc3_uboot_exit(index);
> +	return 0;
> +}
> +#endif
> diff --git a/configs/xilinx_zynqmp_ep_defconfig b/configs/xilinx_zynqmp_ep_defconfig
> index fda44ea..efc1bbe 100644
> --- a/configs/xilinx_zynqmp_ep_defconfig
> +++ b/configs/xilinx_zynqmp_ep_defconfig
> @@ -16,3 +16,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynqmp-ep"
>  CONFIG_CMD_TIME=y
>  CONFIG_CMD_TIMER=y
>  CONFIG_SYS_TEXT_BASE=0x8000000
> +CONFIG_ZYNQMP_USB=y
> diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
> index 68853b6..927c917 100644
> --- a/include/configs/xilinx_zynqmp.h
> +++ b/include/configs/xilinx_zynqmp.h
> @@ -49,7 +49,7 @@
>  #define COUNTER_FREQUENCY		4000000
>  
>  /* Size of malloc() pool */
> -#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 0x400000)
> +#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 0x2000000)
>  
>  /* Serial setup */
>  #if defined(CONFIG_ZYNQMP_DCC)
> @@ -108,13 +108,50 @@
>  /* Miscellaneous configurable options */
>  #define CONFIG_SYS_LOAD_ADDR		0x8000000
>  
> +#if defined(CONFIG_ZYNQMP_USB)
> +#define CONFIG_USB_DWC3
> +#define CONFIG_USB_DWC3_GADGET
> +
> +#define CONFIG_USB_GADGET
> +#define CONFIG_USB_GADGET_DUALSPEED
> +#define CONFIG_USB_GADGET_VBUS_DRAW	2
> +#define CONFIG_USBDOWNLOAD_GADGET
> +#define CONFIG_SYS_DFU_DATA_BUF_SIZE	0x1800000
> +#define DFU_DEFAULT_POLL_TIMEOUT	300
> +#define CONFIG_DFU_FUNCTION
> +#define CONFIG_DFU_RAM
> +#define CONFIG_G_DNL_VENDOR_NUM		0x03FD
> +#define CONFIG_G_DNL_PRODUCT_NUM	0x0300
> +#define CONFIG_G_DNL_MANUFACTURER	"Xilinx"
> +#define CONFIG_USB_CABLE_CHECK
> +#define CONFIG_CMD_DFU
> +#define CONFIG_CMD_THOR_DOWNLOAD
> +#define CONFIG_THOR_FUNCTION
> +#define CONFIG_THOR_RESET_OFF
> +#define DFU_ALT_INFO_RAM \
> +	"dfu_ram_info=" \
> +	"set dfu_alt_info " \
> +	"Image ram 0x200000 0x1800000\\\\;" \
> +	"system.dtb ram 0x7000000 0x40000\0" \
> +	"dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
> +	"thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
> +
> +#define DFU_ALT_INFO  \
> +		DFU_ALT_INFO_RAM
> +#endif
> +
> +#if !defined(DFU_ALT_INFO)
> +# define DFU_ALT_INFO
> +#endif
> +
>  /* Initial environment variables */
>  #define CONFIG_EXTRA_ENV_SETTINGS \
>  	"kernel_addr=0x80000\0" \
>  	"fdt_addr=0x7000000\0" \
>  	"fdt_high=0x10000000\0" \
>  	"sdboot=mmcinfo && load mmc 0:0 $fdt_addr system.dtb && " \
> -		"load mmc 0:0 $kernel_addr Image && booti $kernel_addr - $fdt_addr\0"
> +		"load mmc 0:0 $kernel_addr Image && booti $kernel_addr - $fdt_addr\0" \
> +	DFU_ALT_INFO
>  
>  #define CONFIG_BOOTARGS		"setenv bootargs console=ttyPS0,${baudrate} " \
>  				"earlycon=cdns,mmio,0xff000000,${baudrate}n8"
> 

Applied.

Thanks,
Michal


-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150812/a22a1980/attachment.sig>


More information about the U-Boot mailing list