spl: USB Gadget cleanup
v3 cover spl: USB Gadget cleanup
From: Stefan Agner <[email protected]>
This patchset cleans up the SPL USB Gadget Kconfig and Makfile. The first two patches are actual fixes and we might consider to add these two for the v2016.11 release. The third one adds a new config option for cleaner structure. I plan to add another USB function with SPL support which is the reason I looked into this...
Build tested using buildman for all boards on powerpc mips and arm. No new errors or warnings:
Building 4 commits for 1072 boards (8 threads, 1 job per thread)
4044 0 244 /4288 P1022DS_NAND
This patchset is probably most interesting for am335x_evm_usbspl_defconfig (CONFIG_SPL_USBETH_SUPPORT) And the board with which SPL DFU support has been introduced dra7xx_evm_defconfig (CONFIG_SPL_DFU_SUPPORT, not set by default)
Due to lack of any of this hardware I did not run the binaries! Since it is mostly Makefile shuffling I don't expect any runtime behavior changes... If anyone (maybe Ravi or Lukasz, afaik you worked on the SPL DFU support for dra7xx_evm) could test the patchset on actual hardware I would be glad!
--
Stefan
Changes in v3:
- Fix depends on SPL_USB_GADGET_SUPPORT and use if statement
Changes in v2:
- Use CONFIG_SPL_RAM_SUPPORT to descide whether to compile the function in first place.
- Leave DWC3 config in top level SPL Makefile (as U-Boot does)
Stefan Agner (3):
spl: add RAM boot device only if it is actually defined
spl: dfu: move DFU Kconfig to SPL Kconfig
spl: add USB Gadget config option
Kconfig | 27 ------------------ common/spl/Kconfig | 57 ++++++++++++++++++++++++++++++------- common/spl/spl.c | 4 ++- configs/am335x_evm_usbspl_defconfig | 1 + drivers/Makefile | 4 ++- drivers/usb/gadget/Makefile | 9 ++++-- include/configs/dra7xx_evm.h | 1 - scripts/Makefile.spl | 5 +--- 8 files changed, 61 insertions(+), 47 deletions(-)
Signature · 1 line
2.10.2
PATCH v3 1/3 spl: add RAM boot device only if it is actually defined
From: Stefan Agner <[email protected]>
Some devices (e.g. dra7xx) support loading to RAM using DFU without having direct boot from RAM support. Make sure the linker list does not contain BOOT_DEVICE_RAM if CONFIG_SPL_RAM_SUPPORT is not enabled.
---
Changes in v3: None
Changes in v2:
- Use CONFIG_SPL_RAM_SUPPORT to descide whether to compile the function in first place.
common/spl/spl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
common/spl/spl.c +3 -1
@@ -174,7 +174,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)# define CONFIG_SPL_LOAD_FIT_ADDRESS 0#endif -#if defined(CONFIG_SPL_RAM_DEVICE ) || defined(CONFIG_SPL_DFU_SUPPORT ) +#if defined(CONFIG_SPL_RAM_SUPPORT ) || defined(CONFIG_SPL_DFU_SUPPORT )static ulong spl_ram_load_read (struct spl_load_info *load,ulong sector,ulong count,void *buf) {
@@ -220,7 +220,9 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,return 0 ; } +#if defined(CONFIG_SPL_RAM_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_RAM , spl_ram_load_image); +#endif #if defined(CONFIG_SPL_DFU_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_DFU , spl_ram_load_image);#endif
Signature · 1 line
2.10.2
PATCH v3 1/3 spl: add RAM boot device only if it is actually defined
Hi Stefan,
Quoted 10 lines
From: Stefan Agner <[email protected]>
Some devices (e.g. dra7xx) support loading to RAM using DFU without having direct boot from RAM support. Make sure the linker list does not contain
BOOT_DEVICE_RAMifCONFIG_SPL_RAM_SUPPORTis not enabled.Fixes 98136b2f26fa ("spl: Convert spl_ram_load_image() to use linkerlist")
Thanks for the patch and sorry for late reply....
Quoted 34 lines
Signed-off-by Stefan Agner <[email protected]>---
Changes in v3: None
Changes in v2:
- UseCONFIG_SPL_RAM_SUPPORTto descide whether to compile the function in first place.common/spl/spl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)common/spl/spl.c +0
-0@@ -174,7 +174,7 @@ __weak void __noreturn
jump_to_image_no_args(struct spl_image_info *spl_image)# defineCONFIG_SPL_LOAD_FIT_ADDRESS0 #endifcommon/spl/spl.c +1
-1-#if defined(CONFIG_SPL_RAM_DEVICE ) || defined(CONFIG_SPL_DFU_SUPPORT ) +#if defined(CONFIG_SPL_RAM_SUPPORT) ||
defined(CONFIG_SPL_DFU_SUPPORT)static ulongspl_ram_load_read(struct spl_load_info *load, ulong sector, ulong count, void *buf)
{common/spl/spl.c +2
-0@@ -220,7 +220,9 @@ static int spl_ram_load_image(structspl_image_info *spl_image, return 0; } +#if defined(CONFIG_SPL_RAM_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_RAM , spl_ram_load_image); +#endif #if defined(CONFIG_SPL_DFU_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_DFU , spl_ram_load_image);#endif
Signature · 5 lines
Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
PATCH v3 1/3 spl: add RAM boot device only if it is actually defined
In reply to Stefan AgnerHi Stefan,
Quoted 25 lines · Stefan Agner
From: Stefan Agner <[email protected]>
Some devices (e.g. dra7xx) support loading to RAM using DFU without having direct boot from RAM support. Make sure the linker list does not contain
BOOT_DEVICE_RAMifCONFIG_SPL_RAM_SUPPORTis not enabled.Fixes 98136b2f26fa ("spl: Convert spl_ram_load_image() to use linker list")Signed-off-by Stefan Agner <[email protected]>---
Changes in v3: None
Changes in v2:
- UseCONFIG_SPL_RAM_SUPPORTto descide whether to compile the function in first place.common/spl/spl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)common/spl/spl.c +0
-0
common/spl/spl.c __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) · line 179
Quoted 7 lines
common/spl/spl.c +1
-1@@ -174,7 +174,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)# define CONFIG_SPL_LOAD_FIT_ADDRESS 0#endif -#if defined(CONFIG_SPL_RAM_DEVICE ) || defined(CONFIG_SPL_DFU_SUPPORT ) +#if defined(CONFIG_SPL_RAM_SUPPORT ) || defined(CONFIG_SPL_DFU_SUPPORT )static ulong spl_ram_load_read (struct spl_load_info *load,ulong sector,ulong count,void *buf)
Can this be moved into its own file?
Quoted 12 lines
common/spl/spl.c +2
-1{@@ -220,7 +220,9 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,return 0 ; } +#if defined(CONFIG_SPL_RAM_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_RAM , spl_ram_load_image); +#endif #if defined(CONFIG_SPL_DFU_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_DFU , spl_ram_load_image);#endif --
Quoted 2 lines
2.10.2
Regards,
Simon
PATCH v3 1/3 spl: add RAM boot device only if it is actually defined
Quoted 31 lines · Simon Glass
Hi Stefan,
Quoted 28 lines · Stefan Agner
From: Stefan Agner <[email protected]>
Some devices (e.g. dra7xx) support loading to RAM using DFU without having direct boot from RAM support. Make sure the linker list does not contain
BOOT_DEVICE_RAMifCONFIG_SPL_RAM_SUPPORTis not enabled.Fixes 98136b2f26fa ("spl: Convert spl_ram_load_image() to use linker list")Signed-off-by Stefan Agner <[email protected]>---
Changes in v3: None
Changes in v2:
- UseCONFIG_SPL_RAM_SUPPORTto descide whether to compile the function in first place.common/spl/spl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)common/spl/spl.c +0
-0@@ -174,7 +174,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)# define CONFIG_SPL_LOAD_FIT_ADDRESS 0#endif
Quoted 2 lines
common/spl/spl.c __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) · line 177
Quoted 2 lines
common/spl/spl.c +1
-1-#if defined(CONFIG_SPL_RAM_DEVICE ) || defined(CONFIG_SPL_DFU_SUPPORT ) +#if defined(CONFIG_SPL_RAM_SUPPORT ) || defined(CONFIG_SPL_DFU_SUPPORT )
I just realized that this patch is wrong, the config option is currently named "CONFIG_SPL_RAM_DEVICE". I will send a v4.
Quoted 5 lines
common/spl/spl.c __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) · line 179
Quoted 2 lines
common/spl/spl.c +0
-0static ulong spl_ram_load_read (struct spl_load_info *load,ulong sector,ulong count,void *buf)Can this be moved into its own file?
Hm, we discussed that on v2:
https://www.mail-archive.com/u-boot at lists.denx.de/msg230689.html
I planned to post a separate patch for that.
For the separate patch, how should I do this? CONFIG_SPL_RAM_DEVICE is still old config, so I guess I would first have to move that to Kconfig.
What is CONFIG_SPL_RAM_DEVICE actually doing? I think it means that the image to boot is already there? (loaded by boot ROM?)
CONFIG_SPL_RAM_SUPPORT "Enable booting directly from RAM" CONFIG_SPL_RAM_DEVICE depends on CONFIG_SPL_RAM_SUPPORT "Image preloaded by ROM"CONFIG_SPL_DFU_SUPPORT depends on CONFIG_SPL_RAM_SUPPORT "Load image via DFU"
--
Stefan
Quoted 17 lines
Quoted 12 lines
common/spl/spl.c +2
-1{@@ -220,7 +220,9 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,return 0 ; } +#if defined(CONFIG_SPL_RAM_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_RAM , spl_ram_load_image); +#endif #if defined(CONFIG_SPL_DFU_SUPPORT )SPL_LOAD_IMAGE_METHOD (0 ,BOOT_DEVICE_DFU , spl_ram_load_image);#endif --Quoted 2 lines
2.10.2
Regards,
Simon
PATCH v3 1/3 spl: add RAM boot device only if it is actually defined
Hi Stefan,
Quoted 46 lines · Stefan Agner
Quoted 31 lines · Simon Glass
Hi Stefan,
Quoted 28 lines · Stefan Agner
From: Stefan Agner <[email protected]>
Some devices (e.g. dra7xx) support loading to RAM using DFU without having direct boot from RAM support. Make sure the linker list does not contain
BOOT_DEVICE_RAMifCONFIG_SPL_RAM_SUPPORTis not enabled.Fixes 98136b2f26fa ("spl: Convert spl_ram_load_image() to use linker list")Signed-off-by Stefan Agner <[email protected]>---
Changes in v3: None
Changes in v2:
- UseCONFIG_SPL_RAM_SUPPORTto descide whether to compile the function in first place.common/spl/spl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)common/spl/spl.c +0
-0@@ -174,7 +174,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)# define CONFIG_SPL_LOAD_FIT_ADDRESS 0#endif Quoted 2 lines
common/spl/spl.c __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) · line 177
Quoted 2 lines
common/spl/spl.c +1
-1-#if defined(CONFIG_SPL_RAM_DEVICE ) || defined(CONFIG_SPL_DFU_SUPPORT ) +#if defined(CONFIG_SPL_RAM_SUPPORT ) || defined(CONFIG_SPL_DFU_SUPPORT )I just realized that this patch is wrong, the config option is currently named "
CONFIG_SPL_RAM_DEVICE". I will send a v4.Quoted 5 lines
common/spl/spl.c __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) · line 179
Quoted 2 lines
common/spl/spl.c +0
-0static ulong spl_ram_load_read (struct spl_load_info *load,ulong sector,ulong count,void *buf)Can this be moved into its own file?
Quoted 7 lines
Hm, we discussed that on v2:
https://www.mail-archive.com/u-boot at lists.denx.de/msg230689.htmlI planned to post a separate patch for that.
For the separate patch, how should I do this?
CONFIG_SPL_RAM_DEVICEis still old config, so I guess I would first have to move that toKconfig.
Yes that would be good.
Quoted 3 lines
What is
CONFIG_SPL_RAM_DEVICEactually doing? I think it means that the image to boot is already there? (loaded by boot ROM?)
Yes I guess so.
Quoted 8 lines
CONFIG_SPL_RAM_SUPPORT"Enable booting directly from RAM"CONFIG_SPL_RAM_DEVICEdepends onCONFIG_SPL_RAM_SUPPORT"Image preloaded by ROM"CONFIG_SPL_DFU_SUPPORTdepends onCONFIG_SPL_RAM_SUPPORT"Load image via DFU"
Regards,
Simon
PATCH v3 2/3 spl: dfu: move DFU Kconfig to SPL Kconfig
In reply to Stefan AgnerFrom: Stefan Agner <[email protected]>
The DFU Kconfig menu entries should be part of the SPL Kconfig file. Also avoid using the top level Makefile by moving the config dependent build artifacts to the driver/ and driver/usb/gadget/ Makfiles.
With that, DFU can be built again in SPL ifCONFIG_SPL_DFU_SUPPORT is enabled.
---
Tom, I checked size for am335x_evm_usbspl_defconfig, it stays fine with this patch.
Changes in v3: None
Changes in v2:
- Leave DWC3 config in top level SPL Makefile (as U-Boot does)
Kconfig | 27 --------------------------- common/spl/Kconfig | 26 ++++++++++++++++++++++++++ drivers/Makefile | 3 +++ drivers/usb/gadget/Makefile | 8 ++++++-- include/configs/dra7xx_evm.h | 1 - scripts/Makefile.spl | 3 --- 6 files changed, 35 insertions(+), 33 deletions(-)
Kconfig +0 -27
@@ -291,33 +291,6 @@ config FIT_IMAGE_POST_PROCESS injected into the FIT creation (i.e. the blobs would have been pre- processed before being added to the FIT image). -config SPL_DFU_SUPPORT - bool "Enable SPL with DFU to load binaries to memory device" - depends on USB - help - Currently the SPL does not have capability to load the - binaries or boot images to boot devices like ram,eMMC,SPI,etc. - This feature enables the DFU (Device Firmware Upgarde) in SPL with - RAM memory device support. The ROM code will load and execute - the SPL built with dfu. The user can load binaries (u-boot/kernel) to - selected device partition from host-pc using dfu-utils. - This feature will be useful to flash the binaries to factory - or bare-metal boards using USB interface. - -choice - bool "DFU device selection" - depends on SPL_DFU_SUPPORT - -config SPL_DFU_RAM - bool "RAM device" - depends on SPL_DFU_SUPPORT - help - select RAM/DDR memory device for loading binary images - (u-boot/kernel) to the selected device partition using - DFU and execute the u-boot/kernel from RAM. - -endchoice - config SYS_CLK_FREQ depends on ARC || ARCH_SUNXI int "CPU clock frequency"
common/spl/Kconfig +26 -0
@@ -497,6 +497,32 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using a configured device. +config SPL_DFU_SUPPORT + bool "Support DFU (Device Firmware Upgarde)" + depends on SPL + select SPL_HASH_SUPPORT + help + This feature enables the DFU (Device Firmware Upgarde) in SPL with + RAM memory device support. The ROM code will load and execute + the SPL built with dfu. The user can load binaries (u-boot/kernel) to + selected device partition from host-pc using dfu-utils. + This feature is useful to flash the binaries to factory or bare-metal + boards using USB interface. + +choice + bool "DFU device selection" + depends on SPL_DFU_SUPPORT + +config SPL_DFU_RAM + bool "RAM device" + depends on SPL_DFU_SUPPORT + help + select RAM/DDR memory device for loading binary images + (u-boot/kernel) to the selected device partition using + DFU and execute the u-boot/kernel from RAM. + +endchoice + config SPL_WATCHDOG_SUPPORT bool "Support watchdog drivers" depends on SPL
drivers/Makefile +3 -0
@@ -34,6 +34,9 @@ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += usb/musb-new/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/udc/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/
drivers/usb/gadget/Makefile +6 -2
@@ -8,6 +8,10 @@ obj-$(CONFIG_USB_GADGET) += epautoconf.o config.o usbstring.o obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o +ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_DFU_SUPPORT) += f_dfu.o +endif + # new USB gadget layer dependencies ifdef CONFIG_USB_GADGET obj-$(CONFIG_USB_GADGET_AT91) += at91_udc.o
@@ -18,13 +22,13 @@ obj-$(CONFIG_USB_GADGET_DWC2_OTG_PHY) += dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o obj-$(CONFIG_CI_UDC) += ci_udc.o obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o -obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o ifndef CONFIG_SPL_BUILD +obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o obj-$(CONFIG_USB_FUNCTION_DFU) += f_dfu.o -endif obj-$(CONFIG_USB_FUNCTION_MASS_STORAGE) += f_mass_storage.o obj-$(CONFIG_USB_FUNCTION_FASTBOOT) += f_fastboot.o endif +endif ifdef CONFIG_USB_ETHER obj-y += ether.o obj-$(CONFIG_USB_ETH_RNDIS) += rndis.o
include/configs/dra7xx_evm.h +0 -1
@@ -133,7 +133,6 @@#undef CONFIG_CMD_BOOTD#ifdef CONFIG_SPL_DFU_SUPPORT #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80200000 -#define CONFIG_SPL_HASH_SUPPORT #define DFU_ALT_INFO_RAM \ "dfu_alt_info_ram=" \ "kernel ram 0x80200000 0x4000000;" \
scripts/Makefile.spl +0 -3
@@ -66,9 +66,6 @@ endif libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/ libs-y += drivers/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/dfu/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/gadget/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/gadget/udc/ libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/dwc3/ libs-y += dts/ libs-y += fs/
Signature · 1 line
2.10.2
PATCH v3 2/3 spl: dfu: move DFU Kconfig to SPL Kconfig
common/spl/Kconfig config SPL_USB_SUPPORT · line 501
Quoted 12 lines · On Dienstag, 15. November 2016 13:02:45 CET Stefan Agner wrote:
From: Stefan Agner <[email protected]>
common/spl/Kconfig +2
-0@@ -497,6 +497,32 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using a configured device. +config SPL_DFU_SUPPORT + bool "Support DFU (Device Firmware Upgarde)"
Typo: Upgrade
common/spl/Kconfig config SPL_USB_SUPPORT · line 505
Quoted 4 lines
common/spl/Kconfig +4
-0+ depends on SPL + select SPL_HASH_SUPPORT + help + This feature enables the DFU (Device Firmware Upgarde) in SPL with
dito
common/spl/Kconfig config SPL_USB_SUPPORT · line 508
Quoted 3 lines
common/spl/Kconfig +3
-0+ RAM memory device support. The ROM code will load and execute + the SPL built with dfu. The user can load binaries (u-boot/kernel) to + selected device partition from host-pc using dfu-utils.
a selected /or/ partitions
common/spl/Kconfig config SPL_USB_SUPPORT · line 511
Quoted 3 lines
common/spl/Kconfig +3
-0+ This feature is useful to flash the binaries to factory or bare-metal + boards using USB interface. +
Kind regards,
Stefan
PATCH v3 2/3 spl: dfu: move DFU Kconfig to SPL Kconfig
In reply to Stefan AgnerHi Stefan,
Quoted 7 lines
From: Stefan Agner <[email protected]>
The DFU
Kconfigmenu entries should be part of the SPLKconfigfile. Also avoid using the top levelMakefileby moving the config dependent build artifacts to the driver/ and driver/usb/gadget/ Makfiles.
Quoted 7 lines
With that, DFU can be built again in SPL if
CONFIG_SPL_DFU_SUPPORTis enabled.Fixes 6ad6102246d8 ("usb:gadget: Disallow DFU in SPL for now")Signed-off-by Stefan Agner <[email protected]>Reviewed-by Simon Glass <[email protected]>
Quoted 172 lines
---
Tom, I checked size foram335x_evm_usbspl_defconfig, it stays fine with this patch.Changes in v3: None
Changes in v2:
- Leave DWC3 config in top level SPLMakefile(as U-Boot does)Kconfig | 27 --------------------------- common/spl/Kconfig | 26 ++++++++++++++++++++++++++ drivers/Makefile | 3 +++ drivers/usb/gadget/Makefile | 8 ++++++-- include/configs/dra7xx_evm.h | 1 - scripts/Makefile.spl | 3 --- 6 files changed, 35 insertions(+), 33 deletions(-)Kconfig +0
-0@@ -291,33 +291,6 @@ config FIT_IMAGE_POST_PROCESS injected into the FIT creation (i.e. the blobs would havebeen pre- processed before being added to the FIT image).
Kconfig +0
-6-config SPL_DFU_SUPPORT - bool "Enable SPL with DFU to load binaries to memory device" - depends on USB - help - Currently the SPL does not have capability to load the - binaries or boot images to boot devices likeram,eMMC,SPI,etc.
Kconfig +0
-1- This feature enables the DFU (Device Firmware Upgarde) inSPL with
Kconfig +0
-1- RAM memory device support. The ROM code will load andexecute
Kconfig +0
-1- the SPL built with dfu. The user can load binaries(u-boot/kernel) to
Kconfig +0
-2- selected device partition from host-pc using dfu-utils. - This feature will be useful to flash the binaries tofactory
Kconfig +0
-16- or bare-metal boards using USB interface. - -choice - bool "DFU device selection" - depends on SPL_DFU_SUPPORT - -config SPL_DFU_RAM - bool "RAM device" - depends on SPL_DFU_SUPPORT - help - select RAM/DDR memory device for loading binary images - (u-boot/kernel) to the selected device partition using - DFU and execute the u-boot/kernel from RAM. - -endchoice - config SYS_CLK_FREQ depends on ARC || ARCH_SUNXI int "CPU clock frequency"common/spl/Kconfig +0
-0@@ -497,6 +497,32 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using aconfigured device.
common/spl/Kconfig +6
-0+config SPL_DFU_SUPPORT + bool "Support DFU (Device Firmware Upgarde)" + depends on SPL + select SPL_HASH_SUPPORT + help + This feature enables the DFU (Device Firmware Upgarde) inSPL with
common/spl/Kconfig +1
-0+ RAM memory device support. The ROM code will load andexecute
common/spl/Kconfig +1
-0+ the SPL built with dfu. The user can load binaries(u-boot/kernel) to
common/spl/Kconfig +2
-0+ selected device partition from host-pc using dfu-utils. + This feature is useful to flash the binaries to factory orbare-metal
common/spl/Kconfig +16
-0+ boards using USB interface. + +choice + bool "DFU device selection" + depends on SPL_DFU_SUPPORT + +config SPL_DFU_RAM + bool "RAM device" + depends on SPL_DFU_SUPPORT + help + select RAM/DDR memory device for loading binary images + (u-boot/kernel) to the selected device partition using + DFU and execute the u-boot/kernel from RAM. + +endchoice + config SPL_WATCHDOG_SUPPORT bool "Support watchdog drivers" depends on SPLdrivers/Makefile +3
-0@@ -34,6 +34,9 @@ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += usb/musb-new/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/udc/ +obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/drivers/usb/gadget/Makefile +4
-0@@ -8,6 +8,10 @@ obj-$(CONFIG_USB_GADGET) += epautoconf.o config.o usbstring.o obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o +ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_DFU_SUPPORT) += f_dfu.o +endif + # new USB gadget layer dependencies ifdef CONFIG_USB_GADGET obj-$(CONFIG_USB_GADGET_AT91) += at91_udc.o@@ -18,13 +22,13 @@ obj-$(CONFIG_USB_GADGET_DWC2_OTG_PHY) +=dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o
obj-$(CONFIG_CI_UDC) += ci_udc.o
obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.odrivers/usb/gadget/Makefile +2
-2-obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o ifndef CONFIG_SPL_BUILD +obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o obj-$(CONFIG_USB_FUNCTION_DFU) += f_dfu.o -endif obj-$(CONFIG_USB_FUNCTION_MASS_STORAGE) += f_mass_storage.o obj-$(CONFIG_USB_FUNCTION_FASTBOOT) += f_fastboot.o endif +endif ifdef CONFIG_USB_ETHER obj-y += ether.o obj-$(CONFIG_USB_ETH_RNDIS) += rndis.o(quoted diff) +0
-0
b/include/configs/dra7xx_evm.hindex 798002d..e295a84 100644include/configs/dra7xx_evm.h +0
-1@@ -133,7 +133,6 @@#undef CONFIG_CMD_BOOTD#ifdef CONFIG_SPL_DFU_SUPPORT #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80200000 -#define CONFIG_SPL_HASH_SUPPORT #define DFU_ALT_INFO_RAM \ "dfu_alt_info_ram=" \ "kernel ram 0x80200000 0x4000000;" \scripts/Makefile.spl +0
-3@@ -66,9 +66,6 @@ endif libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/ libs-y += drivers/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/dfu/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/gadget/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/gadget/udc/ libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/dwc3/ libs-y += dts/ libs-y += fs/
Signature · 5 lines
Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
PATCH v3 3/3 spl: add USB Gadget config option
In reply to Stefan AgnerFrom: Stefan Agner <[email protected]>
Introduce USB Gadget config option. This allows to combine Makefile entries for SPL_USBETH_SUPPORT and SPL_DFU_SUPPORT.
---
Changes in v3:
- Fix depends on SPL_USB_GADGET_SUPPORT and use if statement
Changes in v2: None
common/spl/Kconfig | 33 +++++++++++++++++++++------------ configs/am335x_evm_usbspl_defconfig | 1 + drivers/Makefile | 5 ++--- drivers/usb/gadget/Makefile | 3 ++- scripts/Makefile.spl | 2 +- 5 files changed, 27 insertions(+), 17 deletions(-)
common/spl/Kconfig +21 -12
@@ -465,17 +465,6 @@ config SPL_SPI_SUPPORT enable SPI drivers that are needed for other purposes also, such as a SPI PMIC. -config SPL_USBETH_SUPPORT - bool "Support USB Ethernet drivers" - depends on SPL - help - Enable access to the USB network subsystem and associated - drivers in SPL. This permits SPL to load U-Boot over a - USB-connected Ethernet link (such as a USB Ethernet dongle) rather - than from an onboard peripheral. Environment support is required - since the network stack uses a number of environment variables. - See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT. - config SPL_USB_HOST_SUPPORT bool "Support USB host drivers" depends on SPL
@@ -497,9 +486,27 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using a configured device. +config SPL_USB_GADGET_SUPPORT + bool "Suppport USB Gadget drivers" + depends on SPL + help + Enable USB Gadget API which allows to enable USB device functions + in SPL. + +if SPL_USB_GADGET_SUPPORT + +config SPL_USBETH_SUPPORT + bool "Support USB Ethernet drivers" + help + Enable access to the USB network subsystem and associated + drivers in SPL. This permits SPL to load U-Boot over a + USB-connected Ethernet link (such as a USB Ethernet dongle) rather + than from an onboard peripheral. Environment support is required + since the network stack uses a number of environment variables. + See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT. + config SPL_DFU_SUPPORT bool "Support DFU (Device Firmware Upgarde)" - depends on SPL select SPL_HASH_SUPPORT help This feature enables the DFU (Device Firmware Upgarde) in SPL with
@@ -523,6 +530,8 @@ config SPL_DFU_RAM endchoice +endif + config SPL_WATCHDOG_SUPPORT bool "Support watchdog drivers" depends on SPL
configs/am335x_evm_usbspl_defconfig +1 -0
@@ -12,6 +12,7 @@ CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_MUSB_NEW_SUPPORT=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_OS_BOOT=y +CONFIG_SPL_GADGET_SUPPORT=y CONFIG_SPL_USBETH_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y
drivers/Makefile +2 -3
@@ -33,9 +33,8 @@ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += usb/musb-new/ -obj-$(CONFIG_SPL_USBETH_SUPPORT) += usb/gadget/ -obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/ -obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/udc/ +obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/udc/ obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/
drivers/usb/gadget/Makefile +2 -1
@@ -9,6 +9,7 @@ obj-$(CONFIG_USB_GADGET) += epautoconf.o config.o usbstring.o obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += g_dnl.o obj-$(CONFIG_SPL_DFU_SUPPORT) += f_dfu.o endif
@@ -21,8 +22,8 @@ obj-$(CONFIG_USB_GADGET_DWC2_OTG) += dwc2_udc_otg.o obj-$(CONFIG_USB_GADGET_DWC2_OTG_PHY) += dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o obj-$(CONFIG_CI_UDC) += ci_udc.o -obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o ifndef CONFIG_SPL_BUILD +obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o obj-$(CONFIG_USB_FUNCTION_DFU) += f_dfu.o obj-$(CONFIG_USB_FUNCTION_MASS_STORAGE) += f_mass_storage.o
scripts/Makefile.spl +1 -1
@@ -66,7 +66,7 @@ endif libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/ libs-y += drivers/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/dwc3/ +libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/dwc3/ libs-y += dts/ libs-y += fs/ libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/
Signature · 1 line
2.10.2
PATCH v3 3/3 spl: add USB Gadget config option
Hi Stefan,
Quoted 6 lines
From: Stefan Agner <[email protected]>
Introduce USB Gadget config option. This allows to combine
Makefileentries forSPL_USBETH_SUPPORTandSPL_DFU_SUPPORT.Signed-off-by Stefan Agner <[email protected]>
Thanks for the patch.
Quoted 145 lines
---
Changes in v3:
- Fix depends onSPL_USB_GADGET_SUPPORTand use if statementChanges in v2: None
common/spl/Kconfig | 33 +++++++++++++++++++++------------ configs/am335x_evm_usbspl_defconfig | 1 + drivers/Makefile | 5 ++--- drivers/usb/gadget/Makefile | 3 ++- scripts/Makefile.spl | 2 +- 5 files changed, 27 insertions(+), 17 deletions(-)common/spl/Kconfig +0
-0@@ -465,17 +465,6 @@ config SPL_SPI_SUPPORT enable SPI drivers that are needed for other purposesalso, such as a SPI PMIC.
common/spl/Kconfig +0
-7-config SPL_USBETH_SUPPORT - bool "Support USB Ethernet drivers" - depends on SPL - help - Enable access to the USB network subsystem and associated - drivers in SPL. This permits SPL to load U-Boot over a - USB-connected Ethernet link (such as a USB Ethernetdongle) rather
common/spl/Kconfig +0
-1- than from an onboard peripheral. Environment support isrequired
common/spl/Kconfig +0
-1- since the network stack uses a number of environmentvariables.
common/spl/Kconfig +0
-2- See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT. - config SPL_USB_HOST_SUPPORT bool "Support USB host drivers" depends on SPL@@ -497,9 +486,27 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using aconfigured device.
common/spl/Kconfig +5
-0+config SPL_USB_GADGET_SUPPORT + bool "Suppport USB Gadget drivers" + depends on SPL + help + Enable USB Gadget API which allows to enable USB devicefunctions
common/spl/Kconfig +10
-0+ in SPL. + +if SPL_USB_GADGET_SUPPORT + +config SPL_USBETH_SUPPORT + bool "Support USB Ethernet drivers" + help + Enable access to the USB network subsystem and associated + drivers in SPL. This permits SPL to load U-Boot over a + USB-connected Ethernet link (such as a USB Ethernetdongle) rather
common/spl/Kconfig +1
-0+ than from an onboard peripheral. Environment support isrequired
common/spl/Kconfig +1
-0+ since the network stack uses a number of environmentvariables.
common/spl/Kconfig +2
-1+ See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT. + config SPL_DFU_SUPPORT bool "Support DFU (Device Firmware Upgarde)" - depends on SPL select SPL_HASH_SUPPORT help This feature enables the DFU (Device Firmware Upgarde) inSPL with @@ -523,6 +530,8 @@ config
SPL_DFU_RAMendchoice
common/spl/Kconfig +2
-0+endif + config SPL_WATCHDOG_SUPPORT bool "Support watchdog drivers" depends on SPL(quoted diff) +0
-0b/configs/am335x_evm_usbspl_defconfig index 8c28e28..fdb6f77 100644
configs/am335x_evm_usbspl_defconfig +1
-0@@ -12,6 +12,7 @@ CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_MUSB_NEW_SUPPORT=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_OS_BOOT=y +CONFIG_SPL_GADGET_SUPPORT=y CONFIG_SPL_USBETH_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=ydrivers/Makefile +2
-3@@ -33,9 +33,8 @@ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_USBETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += usb/musb-new/ -obj-$(CONFIG_SPL_USBETH_SUPPORT) += usb/gadget/ -obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/ -obj-$(CONFIG_SPL_DFU_SUPPORT) += usb/gadget/udc/ +obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/ +obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/udc/ obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/drivers/usb/gadget/Makefile +0
-0@@ -9,6 +9,7 @@ obj-$(CONFIG_USB_GADGET) += epautoconf.o config.ousbstring.o obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o
ifdefCONFIG_SPL_BUILDdrivers/usb/gadget/Makefile +2
-1+obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += g_dnl.o obj-$(CONFIG_SPL_DFU_SUPPORT) += f_dfu.o endif@@ -21,8 +22,8 @@ obj-$(CONFIG_USB_GADGET_DWC2_OTG) += dwc2_udc_otg.o obj-$(CONFIG_USB_GADGET_DWC2_OTG_PHY) += dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o obj-$(CONFIG_CI_UDC) += ci_udc.o -obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o ifndef CONFIG_SPL_BUILD +obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o obj-$(CONFIG_USB_FUNCTION_DFU) += f_dfu.o obj-$(CONFIG_USB_FUNCTION_MASS_STORAGE) += f_mass_storage.oscripts/Makefile.spl +1
-1@@ -66,7 +66,7 @@ endif libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/ libs-y += drivers/ -libs-$(CONFIG_SPL_DFU_SUPPORT) += drivers/usb/dwc3/ +libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/dwc3/ libs-y += dts/ libs-y += fs/ libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/
Signature · 5 lines
Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
B
v3 cover spl: USB Gadget cleanup
In reply to Stefan AgnerHi Stefan
Quoted 6 lines
From: Stefan Agner <[email protected]>
This patchset cleans up the SPL USB Gadget
Kconfigand Makfile.
The first two patches are actual fixes and we might consider to add these two for the v2016.11 release. The third one adds a new config option >for cleaner structure. I plan to add another USB function with SPL support which is the reason I looked into this...
Quoted 8 lines
Build tested using buildman for all boards on powerpc mips and arm. No new errors or warnings:
Building 4 commits for 1072 boards (8 threads, 1 job per thread)
4044 0 244 /4288P1022DS_NANDThis patchset is probably most interesting for
am335x_evm_usbspl_defconfig(CONFIG_SPL_USBETH_SUPPORT) And the board with which SPL >DFU support has been introduceddra7xx_evm_defconfig(CONFIG_SPL_DFU_SUPPORT, not set by default)Due to lack of any of this hardware I did not run the binaries!
Since it is mostlyMakefileshuffling I don't expect any runtime behavior changes... If anyone (maybe Ravi or Lukasz, afaik you worked on the SPL >DFU support fordra7xx_evm) could test the patchset on actual hardware I would be glad!
I have test verified on dra7xx platform. Looks good to me. Thanks.
Regards
Ravi