Hi Lukasz

>> +++ b/common/dfu.c
>> @@ -0,0 +1,88 @@
>> +/*
>> + * dfu.c -- dfu command

>Please write:

>dfu.c -- common dfu command code

Ok. 

>> + *
>> + * Copyright (C) 2015
>> + * Lukasz Majewski <l.majew...@majess.pl>
>> + *
>> + * Copyright (C) 2012 Samsung Electronics
>> + * authors: Andrzej Pietrasiewicz <andrze...@samsung.com>
>> + *      Lukasz Majewski <l.majew...@samsung.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0+
>> + */
>> +
>> +#include <common.h>
>> +#include <watchdog.h>
>> +#include <dfu.h>
>> +#include <console.h>
>> +#include <g_dnl.h>
>> +#include <usb.h>
>> +#include <net.h>
>> +
>> +int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget) {
>> +    bool dfu_reset = false;
>> +    int ret, i = 0;
>> +
>> +    board_usb_init(usbctrl_index, USB_INIT_DEVICE);
>> +    g_dnl_clear_detach();
>> +    g_dnl_register(usb_dnl_gadget);
>> +    while (1) {
>> +            if (g_dnl_detach()) {
>> +                    /*
>> +                     * Check if USB bus reset is performed after
>> detach,
>> +                     * which indicates that -R switch has been
>> passed to
>> +                     * dfu-util. In this case reboot the device
>> +                     */
>> +                    if (dfu_usb_get_reset()) {
>> +                            dfu_reset = true;
>> +                            goto exit;
>> +                    }
>> +
>> +                    /*
>> +                     * This extra number of
>> usb_gadget_handle_interrupts()
>> +                     * calls is necessary to assure correct
>> transmission
>> +                     * completion with dfu-util
>> +                     */
>> +                    if (++i == 10000)
>> +                            goto exit;
>> +            }
>> +
>> +            if (ctrlc())
>> +                    goto exit;
>> +
>> +            if (dfu_get_defer_flush()) {
>> +                    /*
>> +                     * Call to usb_gadget_handle_interrupts() is
>> necessary
>> +                     * to act on ZLP OUT transaction from HOST
>> PC after
>> +                     * transmitting the whole file.
>> +                     *
>> +                     * If this ZLP OUT packet is NAK'ed, the
>> HOST libusb
>> +                     * function fails after timeout (by default
>> it is set to
>> +                     * 5 seconds). In such situation the
>> dfu-util program
>> +                     * exits with error message.
>> +                     */
>> +                    usb_gadget_handle_interrupts(usbctrl_index);
>> +                    ret = dfu_flush(dfu_get_defer_flush(), NULL,
>> 0, 0);
>> +                    dfu_set_defer_flush(NULL);
>> +                    if (ret) {
>> +                            error("Deferred dfu_flush()
>> failed!");
>> +                            goto exit;
>> +                    }
>> +            }
>> +
>> +            WATCHDOG_RESET();
>> +            usb_gadget_handle_interrupts(usbctrl_index);
>> +    }
>> +exit:
>> +    g_dnl_unregister();
>> +    board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
>> +
>> +    if (dfu_reset)
>> +            run_command("reset", 0);
>> +
>> +    g_dnl_clear_detach();
>> +
>> +    return ret;
>> +}
>> +
>> diff --git a/include/g_dnl.h b/include/g_dnl.h index ba49f1f..bd29a9f 
>> 100644
>> --- a/include/g_dnl.h
>> +++ b/include/g_dnl.h
>> @@ -43,5 +43,6 @@ void g_dnl_set_serialnumber(char *);  bool 
>> g_dnl_detach(void);  void g_dnl_trigger_detach(void);  void 
>> g_dnl_clear_detach(void);
>> +int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget);
>>  
>>  #endif /* __G_DOWNLOAD_H_ */


Regards
Ravi
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to