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 <[email protected]> > --- > 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
signature.asc
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

