-------------
SDP in U-Boot
-------------

SDP stands for serial download protocol. It is the protocol used in NXP's
i.MX SoCs ROM Serial Downloader and provides means to download a program
image to the chip over USB and UART serial connection.

The implementation in U-Boot uses the USB Downloader Gadget (g_dnl) to
provide a SDP implementation over USB. This allows to download program
images to the target in SPL/U-Boot using the same protocol/tooling the
SoC's recovery mechanism is using.

The SDP protocol over USB is a USB HID class protocol. USB HID class
protocols allow to access a USB device without OS specific drivers. The
U-Boot implementation has primarly been tested using the open source
imx_loader utility (https://github.com/toradex/imx_loader).

The host side utilities are typically capable to interpret the i.MX
specific image header (see doc/README.imximage). There are extensions
for imx_loader's imx_usb utility which allow to interpret the U-Boot
specific legacy image format (see mkimage(1)). Also the U-Boot side
support beside the i.MX specific header the U-Boot legacy header.

Usage
-----

This implementation can be started in U-Boot using the sdp command
(CONFIG_CMD_USB_SDP) or in SPL if Serial Downloader boot mode has been
detected (CONFIG_SPL_USB_SDP_SUPPORT).

A typical use case is downloading full U-Boot after SPL has been
downloaded through the boot ROM's Serial Downloader. Using boot mode
detection the SPL will run the SDP implementation automatically in
this case:

  # imx_usb SPL

Targets Serial Console:

  Trying to boot from USB SDP
  SDP: initialize...
  SDP: handle requests...

At this point the SPL reenumerated as a new HID device and emulating
the boot ROM's SDP protocol. The USB VID/PID will depend on standard
U-Boot configurations CONFIG_G_DNL_(VENDOR|PRODUCT)_NUM. Make sure
imx_usb is aware of the USB VID/PID for your device by adding a
configuration entry in imx_usb.conf:

  0x1b67:0x4fff, mx6_usb_sdp_spl.conf

And the device specific configuration file mx6_usb_sdp_spl.conf:

  mx6_spl_sdp
  hid,uboot_header,1024,0x910000,0x10000000,1G,0x00900000,0x40000

This allows to download the regular U-Boot with legacy image headers
(u-boot.img) using a second invocation of imx_usb:

  # imx_usb u-boot.img

Furthermore, when U-Boot is running the sdp command can be used to
download and run scripts:

  # imx_usb script.scr

imx_usb configuration files can be also used to download multiple
files and of arbitrary types, e.g.

  mx6_usb_sdp_uboot
  hid,1024,0x10000000,1G,0x00907000,0x31000
  full.itb:load 0x12100000
  boot.scr:load 0x12000000,jump 0x12000000

There is also a batch mode which allows imx_usb to handle multiple
consecutive reenumerations by adding multiple VID/PID specifications
in imx_usb.conf:

  0x15a2:0x0061, mx6_usb_rom.conf, 0x1b67:0x4fff, mx6_usb_sdp_spl.conf

In this mode the file to download (imx_usb job) needs to be specified
in the configuration files.

mx6_usb_rom.conf:

  mx6_qsb
  hid,1024,0x910000,0x10000000,1G,0x00900000,0x40000
  SPL:jump header2

mx6_usb_sdp_spl.conf:

  mx6_spl_sdp
  hid,uboot_header,1024,0x10000000,1G,0x00907000,0x31000
  u-boot.img:jump header2

With that SPL and U-Boot can be downloaded with a single invocation
of imx_usb without arguments:

  # imx_usb
