diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dfu/Kconfig | 14 | ||||
-rw-r--r-- | drivers/dfu/Makefile | 2 | ||||
-rw-r--r-- | drivers/dfu/dfu_tftp.c | 4 | ||||
-rw-r--r-- | drivers/usb/Kconfig | 1 | ||||
-rw-r--r-- | drivers/usb/gadget/Makefile | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/f_sdp.c | 27 |
6 files changed, 33 insertions, 17 deletions
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig index fa27efbb40..51ab484c2a 100644 --- a/drivers/dfu/Kconfig +++ b/drivers/dfu/Kconfig @@ -1,12 +1,22 @@ menu "DFU support" -config USB_FUNCTION_DFU +config DFU + bool + imply DFU_OVER_USB if USB_GADGET + +config DFU_OVER_USB bool select HASH + depends on USB_GADGET + +config DFU_OVER_TFTP + bool + depends on NET -if CMD_DFU +if DFU config DFU_TFTP bool "DFU via TFTP" + select DFU_OVER_TFTP help This option allows performing update of DFU-managed medium with data sent via TFTP boot. diff --git a/drivers/dfu/Makefile b/drivers/dfu/Makefile index 61f2b71f91..7f35871ddc 100644 --- a/drivers/dfu/Makefile +++ b/drivers/dfu/Makefile @@ -5,7 +5,7 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-$(CONFIG_USB_FUNCTION_DFU) += dfu.o +obj-$(CONFIG_DFU) += dfu.o obj-$(CONFIG_DFU_MMC) += dfu_mmc.o obj-$(CONFIG_DFU_NAND) += dfu_nand.o obj-$(CONFIG_DFU_RAM) += dfu_ram.o diff --git a/drivers/dfu/dfu_tftp.c b/drivers/dfu/dfu_tftp.c index 62bf797dac..f0afbac477 100644 --- a/drivers/dfu/dfu_tftp.c +++ b/drivers/dfu/dfu_tftp.c @@ -38,7 +38,7 @@ int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len, } strsep(&s, "@"); - debug("%s: image name: %s strlen: %d\n", __func__, sb, strlen(sb)); + debug("%s: image name: %s strlen: %zd\n", __func__, sb, strlen(sb)); alt_setting_num = dfu_get_alt(sb); free(sb); @@ -56,7 +56,7 @@ int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len, goto done; } - ret = dfu_write_from_mem_addr(dfu, (void *)addr, len); + ret = dfu_write_from_mem_addr(dfu, (void *)(uintptr_t)addr, len); done: dfu_free_entities(); diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig index 7de41057ca..4fbe172e05 100644 --- a/drivers/usb/Kconfig +++ b/drivers/usb/Kconfig @@ -71,6 +71,7 @@ config USB_STORAGE config USB_KEYBOARD bool "USB Keyboard support" + select SYS_STDIO_DEREGISTER ---help--- Say Y here if you want to use a USB keyboard for U-Boot command line input. diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index ee8bc994c5..748366fb9f 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -26,7 +26,7 @@ obj-$(CONFIG_CI_UDC) += ci_udc.o ifndef CONFIG_SPL_BUILD obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o obj-$(CONFIG_USB_FUNCTION_THOR) += f_thor.o -obj-$(CONFIG_USB_FUNCTION_DFU) += f_dfu.o +obj-$(CONFIG_DFU_OVER_USB) += f_dfu.o obj-$(CONFIG_USB_FUNCTION_MASS_STORAGE) += f_mass_storage.o obj-$(CONFIG_USB_FUNCTION_FASTBOOT) += f_fastboot.o obj-$(CONFIG_USB_FUNCTION_SDP) += f_sdp.o diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c index dd7b9cddb1..43c5cfbb77 100644 --- a/drivers/usb/gadget/f_sdp.c +++ b/drivers/usb/gadget/f_sdp.c @@ -230,6 +230,11 @@ static struct usb_gadget_strings *sdp_generic_strings[] = { NULL, }; +static inline void *sdp_ptr(u32 val) +{ + return (void *)(uintptr_t)val; +} + static void sdp_rx_command_complete(struct usb_ep *ep, struct usb_request *req) { struct f_sdp *sdp = req->context; @@ -238,12 +243,12 @@ static void sdp_rx_command_complete(struct usb_ep *ep, struct usb_request *req) u8 report = data[0]; if (status != 0) { - pr_err("Status: %d", status); + pr_err("Status: %d\n", status); return; } if (report != 1) { - pr_err("Unexpected report %d", report); + pr_err("Unexpected report %d\n", report); return; } @@ -323,12 +328,12 @@ static void sdp_rx_data_complete(struct usb_ep *ep, struct usb_request *req) int datalen = req->length - 1; if (status != 0) { - pr_err("Status: %d", status); + pr_err("Status: %d\n", status); return; } if (report != 2) { - pr_err("Unexpected report %d", report); + pr_err("Unexpected report %d\n", report); return; } @@ -344,7 +349,7 @@ static void sdp_rx_data_complete(struct usb_ep *ep, struct usb_request *req) } if (sdp->state == SDP_STATE_RX_FILE_DATA) { - memcpy((void *)sdp->dnl_address, req->buf + 1, datalen); + memcpy(sdp_ptr(sdp->dnl_address), req->buf + 1, datalen); sdp->dnl_address += datalen; } @@ -361,7 +366,7 @@ static void sdp_rx_data_complete(struct usb_ep *ep, struct usb_request *req) sdp->state = SDP_STATE_TX_SEC_CONF; break; default: - pr_err("Invalid state: %d", sdp->state); + pr_err("Invalid state: %d\n", sdp->state); } } @@ -371,7 +376,7 @@ static void sdp_tx_complete(struct usb_ep *ep, struct usb_request *req) int status = req->status; if (status != 0) { - pr_err("Status: %d", status); + pr_err("Status: %d\n", status); return; } @@ -394,7 +399,7 @@ static void sdp_tx_complete(struct usb_ep *ep, struct usb_request *req) sdp->state = SDP_STATE_IDLE; break; default: - pr_err("Wrong State: %d", sdp->state); + pr_err("Wrong State: %d\n", sdp->state); sdp->state = SDP_STATE_IDLE; break; } @@ -622,7 +627,7 @@ static u32 sdp_jump_imxheader(void *address) } printf("Jumping to 0x%08x\n", headerv2->entry); - entry = (void *)headerv2->entry; + entry = sdp_ptr(headerv2->entry); entry(); /* The image probably never returns hence we won't reach that point */ @@ -665,7 +670,7 @@ static void sdp_handle_in_ep(void) if (datalen > 64) datalen = 64; - memcpy(&data[1], (void *)sdp_func->dnl_address, datalen); + memcpy(&data[1], sdp_ptr(sdp_func->dnl_address), datalen); sdp_func->in_req->length = 65; sdp_func->dnl_bytes_remaining -= datalen; @@ -676,7 +681,7 @@ static void sdp_handle_in_ep(void) break; case SDP_STATE_JUMP: printf("Jumping to header at 0x%08x\n", sdp_func->jmp_address); - status = sdp_jump_imxheader((void *)sdp_func->jmp_address); + status = sdp_jump_imxheader(sdp_ptr(sdp_func->jmp_address)); /* If imx header fails, try some U-Boot specific headers */ if (status) { |