[PATCH v4 6/6] config: enable DFU over USB on Raspberry Pi4 boards

Jaehoon Chung
2020-01-28T11:31:14Z

On 1/28/20 8:20 PM, Matthias Brugger wrote:
>
>
> On 02/12/2019 12:11, Marek Szyprowski wrote:
>> Enable support for DFU over USB. This requires to enable USB gadget,
>> DWC2 UDC OTG driver and DFU command. DFU entities are defined for the
>> following firmware objects: u-boot.bin, uboot.env, config.txt, and
>> zImage/Image.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Reviewed-by: Lukasz Majewski <lukma@denx.de>
>> ---
>> configs/rpi_4_32b_defconfig | 11 +++++++++++
>> configs/rpi_4_defconfig | 11 +++++++++++
>
> In the meanwhile we have a third config rpi_arm64_defconfig
>
> does it make sense to add DFU support there too?
> I suppose it works on RPi3 as well. If so, would you mind to send a follow-up patch?

As i know, RPI3's HW doesn't support. SO it doesn't need to apply this patch on RPI3.

Best Regards,
Jaehoon Chung

>
> Regards,
> Matthias
>
>> include/configs/rpi.h | 20 ++++++++++++++++++++
>> 3 files changed, 42 insertions(+)
>>
>> diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
>> index 7ff390cd24..9d0515029c 100644
>> --- a/configs/rpi_4_32b_defconfig
>> +++ b/configs/rpi_4_32b_defconfig
>> @@ -12,6 +12,7 @@ CONFIG_MISC_INIT_R=y
>> # CONFIG_DISPLAY_CPUINFO is not set
>> # CONFIG_DISPLAY_BOARDINFO is not set
>> CONFIG_SYS_PROMPT="U-Boot> "
>> +CONFIG_CMD_DFU=y
>> # CONFIG_CMD_FLASH is not set
>> CONFIG_CMD_GPIO=y
>> CONFIG_CMD_MMC=y
>> @@ -21,6 +22,7 @@ CONFIG_ENV_FAT_INTERFACE="mmc"
>> CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
>> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>> CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
>> +CONFIG_DFU_MMC=y
>> CONFIG_DM_KEYBOARD=y
>> CONFIG_DM_MMC=y
>> CONFIG_MMC_SDHCI=y
>> @@ -28,6 +30,15 @@ CONFIG_MMC_SDHCI_BCM2835=y
>> CONFIG_PINCTRL=y
>> # CONFIG_PINCTRL_GENERIC is not set
>> # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>> +CONFIG_USB=y
>> +CONFIG_DM_USB=y
>> +CONFIG_DM_USB_GADGET=y
>> +CONFIG_USB_GADGET=y
>> +CONFIG_USB_GADGET_MANUFACTURER="FSL"
>> +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
>> +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>> +CONFIG_USB_GADGET_DWC2_OTG=y
>> +CONFIG_USB_GADGET_DOWNLOAD=y
>> CONFIG_DM_VIDEO=y
>> CONFIG_SYS_WHITE_ON_BLACK=y
>> CONFIG_CONSOLE_SCROLL_LINES=10
>> diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
>> index c5089eb9c8..3d660d182a 100644
>> --- a/configs/rpi_4_defconfig
>> +++ b/configs/rpi_4_defconfig
>> @@ -12,6 +12,7 @@ CONFIG_MISC_INIT_R=y
>> # CONFIG_DISPLAY_CPUINFO is not set
>> # CONFIG_DISPLAY_BOARDINFO is not set
>> CONFIG_SYS_PROMPT="U-Boot> "
>> +CONFIG_CMD_DFU=y
>> # CONFIG_CMD_FLASH is not set
>> CONFIG_CMD_GPIO=y
>> CONFIG_CMD_MMC=y
>> @@ -21,6 +22,7 @@ CONFIG_ENV_FAT_INTERFACE="mmc"
>> CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
>> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>> CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
>> +CONFIG_DFU_MMC=y
>> CONFIG_DM_KEYBOARD=y
>> CONFIG_DM_MMC=y
>> CONFIG_MMC_SDHCI=y
>> @@ -28,6 +30,15 @@ CONFIG_MMC_SDHCI_BCM2835=y
>> CONFIG_PINCTRL=y
>> # CONFIG_PINCTRL_GENERIC is not set
>> # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>> +CONFIG_USB=y
>> +CONFIG_DM_USB=y
>> +CONFIG_DM_USB_GADGET=y
>> +CONFIG_USB_GADGET=y
>> +CONFIG_USB_GADGET_MANUFACTURER="FSL"
>> +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
>> +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>> +CONFIG_USB_GADGET_DWC2_OTG=y
>> +CONFIG_USB_GADGET_DOWNLOAD=y
>> CONFIG_DM_VIDEO=y
>> CONFIG_SYS_WHITE_ON_BLACK=y
>> CONFIG_CONSOLE_SCROLL_LINES=10
>> diff --git a/include/configs/rpi.h b/include/configs/rpi.h
>> index 83e258a6b9..b53a4b65d0 100644
>> --- a/include/configs/rpi.h
>> +++ b/include/configs/rpi.h
>> @@ -74,6 +74,25 @@
>> #define CONFIG_TFTP_TSIZE
>> #endif
>>
>> +/* DFU over USB/UDC */
>> +#ifdef CONFIG_CMD_DFU
>> +#define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_1M
>> +#define CONFIG_SYS_DFU_MAX_FILE_SIZE SZ_2M
>> +
>> +#ifdef CONFIG_ARM64
>> +#define KERNEL_FILENAME "Image"
>> +#else
>> +#define KERNEL_FILENAME "zImage"
>> +#endif
>> +
>> +#define ENV_DFU_SETTINGS \
>> + "dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;" \
>> + "config.txt fat 0 1;" \
>> + KERNEL_FILENAME " fat 0 1\0"
>> +#else
>> +#define ENV_DFU_SETTINGS ""
>> +#endif
>> +
>> /* Console configuration */
>> #define CONFIG_SYS_CBSIZE 1024
>>
>> @@ -188,6 +207,7 @@
>> #define CONFIG_EXTRA_ENV_SETTINGS \
>> "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
>> ENV_DEVICE_SETTINGS \
>> + ENV_DFU_SETTINGS \
>> ENV_MEM_LAYOUT_SETTINGS \
>> BOOTENV
>>
>>
>
>