[PATCH v4 0/6] Raspberry Pi4: add support for DFU over USB

Matthias Brugger
2020-01-28T11:11:25Z

On 27/01/2020 23:36, Lukasz Majewski wrote:
> Hi Matthias,
>
> Do you plan to pull this patch series to RPI repository?
>
> I'm asking as it contains some DFU related patches (Acked already by
> me), which I would like to see pulled in this merge window.
>

Yes I was waiting on the first to patches for FAT as Tom asked to add a test. So
I'm reluctant to take these two. I can take the rest of the series though.

Regards,
Matthias

> Thanks in advance for your help :-)
>
>> Hi All!
>>
>> This patchset enables support for DFU over USB protocol on Raspberry
>> Pi4 board. The board has DWC2 UDC controller connected to the USB-C
>> power connector. Enabling DFU on it, make the u-boot development much
>> more convenient, as one no longer needs to swap SD-card between RPi4
>> board and host machine to update the u-boot binary.
>>
>> Patches are based on current 'master' u-boot branch. They were tested
>> on the 2019-07-10-raspbian-buster-lite.img sd-card image with the
>> following lines added to config.txt:
>> dtoverlay=dwc2,dr_mode=peripheral
>> dtparam=i2c_arm=on
>> dtparam=spi=on
>> enable_uart=1
>> uart_2ndstage=1
>> kernel=u-boot.bin
>>
>> To enable DFU, one has to enter follwing command:
>> # dfu 0 mmc 0
>>
>> During the development of this feature I've encountered a serious bugs
>> in FAT write code. Over-writing discontiguous files always caused
>> serious filesystem corruption. This was especially anoying, because
>> the system environment is kept on FAT volume in uboot.env file, so
>> 'saveenv' basically corrupted the boot partiting on the second call.
>> Another bunch of the issues in the FAT write code has been revealed
>> while removing predefined file size limit in DFU MMC code and then
>> running sandbox tests.
>>
>> I hope that my fixes for FAT code will be helpful for non-RPi users
>> too.
>>
>> Best regards
>> Marek Szyprowski
>> Samsung R&D Institute Poland
>>
>>
>> Changelog:
>>
>> v4:
>> - rechecked the FAT related fixes, it turned out that much simpler
>> patch fixes both issues discovered while working on DFU support;
>> added simple sandbox based tests reveleaing the issue and showing
>> correctness of the fix
>> - rebased patches onto current u-boot's master branch: 4b19b89ca4a8
>> ("Merge tag 'rpi-next-2020.01' of https://github.com/mbgg/u-boot")
>>
>> v3: https://patchwork.ozlabs.org/cover/1200793/
>> - fixed one more FAT issue revealed by sandbox tests
>>
>> v3: (patch 6/6 posted separately):
>> https://patchwork.ozlabs.org/patch/1195645/
>> - fixed non-RPi4 builds (missing #else ENV_DFU_SETTINGS def)
>> - removed config.txt entity (not needed in uboot-based boot)
>> - switched arm64 kernel filename to 'Image'
>>
>> v2: https://patchwork.ozlabs.org/cover/1166589/
>> - added changes to rpi_4_defconfig too (arm64 version)
>> - extended DFU entity list by confix.txt, cmdline.txt and Image.gz
>> - fixed missing '\0' at the end of dfu_alt_info env
>> - added reviewed-by tags
>> - added patches for DFU MMC to remove file size limit
>> - added patch for fat write to fix issues on non-zero file offset
>> (revealed by previous patch)
>>
>> v1: https://patchwork.ozlabs.org/cover/1162770/
>> - initial version
>>
>>
>> Patch summary:
>>
>> Marek Szyprowski (6):
>> fat: write: fix broken write to fragmented files
>> fat: write: adjust data written in each partial write
>> dfu: mmc: rearrange the code
>> dfu: mmc: remove file size limit for io operations
>> usb: dwc2_udc_otg: add bcm2835 SoC (Raspberry Pi4) support
>> config: enable DFU over USB on Raspberry Pi4 boards
>>
>> configs/rpi_4_32b_defconfig | 11 +++
>> configs/rpi_4_defconfig | 11 +++
>> drivers/dfu/dfu_mmc.c | 93
>> +++++++++++++--------- drivers/usb/gadget/dwc2_udc_otg.c |
>> 2 + drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c | 12 +--
>> fs/fat/fat_write.c | 8 +-
>> include/configs/rpi.h | 20 +++++
>> 7 files changed, 112 insertions(+), 45 deletions(-)
>>
>
>
>
>
> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
>