[U-Boot] [PATCH 0/3] Hi all,

From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
-- Stefan
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 | 55 +++++++++++++++++++++++++++++-------- common/spl/spl.c | 2 ++ configs/am335x_evm_usbspl_defconfig | 1 + drivers/Makefile | 5 +++- drivers/usb/gadget/Makefile | 9 ++++-- include/configs/dra7xx_evm.h | 1 - scripts/Makefile.spl | 4 --- 8 files changed, 58 insertions(+), 46 deletions(-)

From: Stefan Agner stefan.agner@toradex.com
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.
Fixes: 98136b2f26fa ("spl: Convert spl_ram_load_image() to use linker list")
Signed-off-by: Stefan Agner stefan.agner@toradex.com ---
common/spl/spl.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/common/spl/spl.c b/common/spl/spl.c index bdb165a..63e8215 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -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

From: Stefan Agner stefan.agner@toradex.com
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 if CONFIG_SPL_DFU_SUPPORT is enabled.
Fixes: 6ad6102246d8 ("usb:gadget: Disallow DFU in SPL for now")
Signed-off-by: Stefan Agner stefan.agner@toradex.com
--- Tom, I checked size for am335x_evm_usbspl_defconfig, it stays fine with this patch.
Kconfig | 27 --------------------------- common/spl/Kconfig | 26 ++++++++++++++++++++++++++ drivers/Makefile | 4 ++++ drivers/usb/gadget/Makefile | 8 ++++++-- include/configs/dra7xx_evm.h | 1 - scripts/Makefile.spl | 4 ---- 6 files changed, 36 insertions(+), 34 deletions(-)
diff --git a/Kconfig b/Kconfig index 1263d0b..a759e4d 100644 --- a/Kconfig +++ b/Kconfig @@ -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" diff --git a/common/spl/Kconfig b/common/spl/Kconfig index bb99f1f..54bcba3 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -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 diff --git a/drivers/Makefile b/drivers/Makefile index 761d0b3..38885eb 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -34,6 +34,10 @@ 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_DFU_SUPPORT) += usb/dwc3/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/ diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index acc9964..5b18e8c 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -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 diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h index 798002d..e295a84 100644 --- a/include/configs/dra7xx_evm.h +++ b/include/configs/dra7xx_evm.h @@ -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;" \ diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index e0b0117..e6fec65 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -66,10 +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/ libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/

From: Stefan Agner stefan.agner@toradex.com
Introduce USB Gadget config option. This allows to combine Makefile entries for SPL_USBETH_SUPPORT and SPL_DFU_SUPPORT.
Signed-off-by: Stefan Agner stefan.agner@toradex.com
---
common/spl/Kconfig | 31 +++++++++++++++++++------------ configs/am335x_evm_usbspl_defconfig | 1 + drivers/Makefile | 7 +++---- drivers/usb/gadget/Makefile | 3 ++- 4 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 54bcba3..7d0aec0 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -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. + +config SPL_USBETH_SUPPORT + bool "Support USB Ethernet drivers" + depends on SPL_GADGET_SUPPORT + 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 + depends on SPL_GADGET_SUPPORT select SPL_HASH_SUPPORT help This feature enables the DFU (Device Firmware Upgarde) in SPL with diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig index 8c28e28..fdb6f77 100644 --- a/configs/am335x_evm_usbspl_defconfig +++ b/configs/am335x_evm_usbspl_defconfig @@ -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 diff --git a/drivers/Makefile b/drivers/Makefile index 38885eb..2f8f333 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -33,11 +33,10 @@ 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_USB_DWC3) += usb/dwc3/ +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_DFU_SUPPORT) += usb/dwc3/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/ diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index 5b18e8c..0fbbb7c 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -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

On 11/11/2016 11:18 PM, Stefan Agner wrote:
From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
There are multiple issues: 1) Would be nice if the cover letter had real Subject 2) It's build tested on two boards, people test such disruptive changes using buildman on at least a few architectures (arm/mips/ppc are the usual suspects) 3) It is not acceptable as fixes for 2016.11 because it doesn't seems it was ever boot tested 4) Please send To: U-Boot list 5) Please cull the CC list, it's horrible

Hi Marek,
On 11.11.2016 14:33, Marek Vasut wrote:
On 11/11/2016 11:18 PM, Stefan Agner wrote:
From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
I am sorry, it seems I can't handle patman on friday afternoon :-) Will try to do better next time.
There are multiple issues:
- Would be nice if the cover letter had real Subject
- It's build tested on two boards, people test such disruptive changes
using buildman on at least a few architectures (arm/mips/ppc are the usual suspects)
The changes are not that disruptive as they might seem, but sure, one never knows... Note that the two boards were carefully selected: They are the _only_ ones which actually select the changed configuration options....
Actually dra7xx_evm_defconfig does not even select CONFIG_SPL_DFU_SUPPORT, but git log/mailing list history tells me that this is the board where that configuration has been developed with...
- It is not acceptable as fixes for 2016.11 because it doesn't seems it
was ever boot tested
I don't have any of the two boards :-(
Lukasz, if you could help me out here on the dra7xx_evm I would be glad.
- Please send To: U-Boot list
- Please cull the CC list, it's horrible
Ok, I thought that was desirable, since it is the default when using patman...
-- Stefan

On 11/12/2016 12:47 AM, Stefan Agner wrote:
Hi Marek,
Hi!
On 11.11.2016 14:33, Marek Vasut wrote:
On 11/11/2016 11:18 PM, Stefan Agner wrote:
From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
I am sorry, it seems I can't handle patman on friday afternoon :-) Will try to do better next time.
No problem
There are multiple issues:
- Would be nice if the cover letter had real Subject
- It's build tested on two boards, people test such disruptive changes
using buildman on at least a few architectures (arm/mips/ppc are the usual suspects)
The changes are not that disruptive as they might seem, but sure, one never knows... Note that the two boards were carefully selected: They are the _only_ ones which actually select the changed configuration options....
Actually dra7xx_evm_defconfig does not even select CONFIG_SPL_DFU_SUPPORT, but git log/mailing list history tells me that this is the board where that configuration has been developed with...
OK, got it.
- It is not acceptable as fixes for 2016.11 because it doesn't seems it
was ever boot tested
I don't have any of the two boards :-(
Lukasz, if you could help me out here on the dra7xx_evm I would be glad.
So how did these fixes come to be ?
- Please send To: U-Boot list
- Please cull the CC list, it's horrible
Ok, I thought that was desirable, since it is the default when using patman...
Having 20+ people on CC is not really so anymore ;-)

On 2016-11-12 00:53, Marek Vasut wrote:
On 11/12/2016 12:47 AM, Stefan Agner wrote:
Hi Marek,
Hi!
On 11.11.2016 14:33, Marek Vasut wrote:
On 11/11/2016 11:18 PM, Stefan Agner wrote:
From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
I am sorry, it seems I can't handle patman on friday afternoon :-) Will try to do better next time.
No problem
There are multiple issues:
- Would be nice if the cover letter had real Subject
- It's build tested on two boards, people test such disruptive changes
using buildman on at least a few architectures (arm/mips/ppc are the usual suspects)
The changes are not that disruptive as they might seem, but sure, one never knows... Note that the two boards were carefully selected: They are the _only_ ones which actually select the changed configuration options....
Actually dra7xx_evm_defconfig does not even select CONFIG_SPL_DFU_SUPPORT, but git log/mailing list history tells me that this is the board where that configuration has been developed with...
OK, got it.
- It is not acceptable as fixes for 2016.11 because it doesn't seems it
was ever boot tested
I don't have any of the two boards :-(
Lukasz, if you could help me out here on the dra7xx_evm I would be glad.
So how did these fixes come to be ?
I rebased some patches which I plan to send upstream adding another USB Gadget driver in SPL. I had a hard time to include it to the build system the way it is now so I decided to clean it up a bit...
-- Stefan

On 11/12/2016 07:53 PM, Stefan Agner wrote:
On 2016-11-12 00:53, Marek Vasut wrote:
On 11/12/2016 12:47 AM, Stefan Agner wrote:
Hi Marek,
Hi!
On 11.11.2016 14:33, Marek Vasut wrote:
On 11/11/2016 11:18 PM, Stefan Agner wrote:
From: Stefan Agner stefan.agner@toradex.com
This cleans up the SPL USB Gadget Kconfig and Makfile a bit. The first two patches are actual fixes and we might consider to add them 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 mainly with dra7xx_evm_defconfig (for CONFIG_SPL_DFU_SUPPORT) and am335x_evm_usbspl_defconfig (for CONFIG_SPL_USBETH_SUPPORT)
I am sorry, it seems I can't handle patman on friday afternoon :-) Will try to do better next time.
No problem
There are multiple issues:
- Would be nice if the cover letter had real Subject
- It's build tested on two boards, people test such disruptive changes
using buildman on at least a few architectures (arm/mips/ppc are the usual suspects)
The changes are not that disruptive as they might seem, but sure, one never knows... Note that the two boards were carefully selected: They are the _only_ ones which actually select the changed configuration options....
Actually dra7xx_evm_defconfig does not even select CONFIG_SPL_DFU_SUPPORT, but git log/mailing list history tells me that this is the board where that configuration has been developed with...
OK, got it.
- It is not acceptable as fixes for 2016.11 because it doesn't seems it
was ever boot tested
I don't have any of the two boards :-(
Lukasz, if you could help me out here on the dra7xx_evm I would be glad.
So how did these fixes come to be ?
I rebased some patches which I plan to send upstream adding another USB Gadget driver in SPL. I had a hard time to include it to the build system the way it is now so I decided to clean it up a bit...
Ah cool, thanks for clarifying.
I'm CCing Lukasz, I'll leave the decision whether or not to apply this stuff on him :)
participants (3)
-
Marek Vasut
-
Stefan Agner
-
Stefan Agner