
From: Stefan Agner stefan.agner@toradex.com
This series adds NXP's Serial Download Protocol (SDP) support via USB for SPL/U-Boot. It allows to download U-Boot via USB from a (recovered) SPL using the same tools used to download SPL itself (specifically imx_usb, but also sb_loader seems to work).
The idea has been brought up when the first targets started to make use of SPL for DDR initialization, see: https://lists.denx.de/pipermail/u-boot/2015-July/220330.html
The initial SDP implementation (patch 2) requires the payload to have the imx specific headers (hence the move of the imx header file in patch 1).
Patch 3 extends image header support beyond the SDP specification, specifically implements also support for U-Boot headers. This allows to use the same SPL/U-Boot binaries for recovery as used on the regular boot device (SD/eMMC). For that to work also the host side imx_usb tools needed an extension, currently available here:
https://github.com/toradex/imx_loader/tree/imx_usb_batch_mode_refactored
(in case this patchset gets accepted in U-Boot, I plan to push these imx_usb changes upstream as well)
The full patchset allows to download SPL and U-Boot over USB to a target in recovery mode using the same usb_imx utility. Refer to the new README.sdp for details how to use usb_imx in combination with this implementation.
Changes in v2: - Changed function signature of sdp_init/sdp_handle to allow specifying which USB controller should be used. - Use #defines for security mode - Improved types used in format strings - Changed function signature of sdp_init/sdp_handle - Use BOOT_DEVICE_BOARD
Stefan Agner (8): imx: move imximage header to common location usb: gadget: add SDP driver usb: gadget: sdp: extend images compatible for jumps cmd: add sdp command spl: add serial download protocol (SDP) support doc: add Serial Download Protocol documentation apalis/colibri_imx6: use independent USB PID for SPL apalis/colibri_imx6: enable SDP by default
board/toradex/apalis_imx6/apalis_imx6.c | 13 + board/toradex/colibri_imx6/colibri_imx6.c | 13 + cmd/Kconfig | 7 + cmd/Makefile | 1 + cmd/usb_gadget_sdp.c | 50 ++ common/spl/Kconfig | 6 + common/spl/Makefile | 1 + common/spl/spl_sdp.c | 37 ++ configs/apalis_imx6_defconfig | 4 + configs/colibri_imx6_defconfig | 4 + doc/README.sdp | 100 ++++ drivers/usb/gadget/Kconfig | 7 + drivers/usb/gadget/Makefile | 2 + drivers/usb/gadget/f_sdp.c | 737 ++++++++++++++++++++++++++++++ {tools => include}/imximage.h | 0 include/sdp.h | 16 + 16 files changed, 998 insertions(+) create mode 100644 cmd/usb_gadget_sdp.c create mode 100644 common/spl/spl_sdp.c create mode 100644 doc/README.sdp create mode 100644 drivers/usb/gadget/f_sdp.c rename {tools => include}/imximage.h (100%) create mode 100644 include/sdp.h