mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
sunxi: musb: Implement dfu_usb_get_reset()
This is necessary to distinguish between the "dfu-util --detach" and the "dfu-util --reset" requests. The default weak implementation of dfu_usb_get_reset() unconditionally reboots the device, but we want to be able to continue the boot.scr execution after writing the kernel, fdt and ramdisk to RAM via DFU. Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
2a909c5f7a
commit
6047a3a9c9
1 changed files with 12 additions and 0 deletions
|
@ -165,6 +165,17 @@ static void USBC_ConfigFIFO_Base(void)
|
|||
writel(reg_value, SUNXI_SRAMC_BASE + 0x04);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* Needed for the DFU polling magic
|
||||
******************************************************************************/
|
||||
|
||||
static u8 last_int_usb;
|
||||
|
||||
bool dfu_usb_get_reset(void)
|
||||
{
|
||||
return !!(last_int_usb & MUSB_INTR_RESET);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* MUSB Glue code
|
||||
******************************************************************************/
|
||||
|
@ -176,6 +187,7 @@ static irqreturn_t sunxi_musb_interrupt(int irq, void *__hci)
|
|||
|
||||
/* read and flush interrupts */
|
||||
musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB);
|
||||
last_int_usb = musb->int_usb;
|
||||
if (musb->int_usb)
|
||||
musb_writeb(musb->mregs, MUSB_INTRUSB, musb->int_usb);
|
||||
musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX);
|
||||
|
|
Loading…
Reference in a new issue