aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2018-02-23 13:04:48 -0500
committerTom Rini <trini@konsulko.com>2018-02-23 13:04:48 -0500
commit1c124d379dbb78a93495202749efe952fbddba1c (patch)
tree0a402df7f30b79cc9321061b778eb56ca0a5cea9 /drivers
parent9ab81fcc8a0181cc19b8234d0e7632bd09c27c83 (diff)
parentb0cce3f90f546da0c1e0dda5abcaf05d81078b0d (diff)
downloadu-boot-1c124d379dbb78a93495202749efe952fbddba1c.zip
u-boot-1c124d379dbb78a93495202749efe952fbddba1c.tar.gz
u-boot-1c124d379dbb78a93495202749efe952fbddba1c.tar.bz2
Merge git://git.denx.de/u-boot-usb
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dfu/Kconfig14
-rw-r--r--drivers/dfu/Makefile2
-rw-r--r--drivers/dfu/dfu_tftp.c4
-rw-r--r--drivers/usb/Kconfig1
-rw-r--r--drivers/usb/gadget/Makefile2
-rw-r--r--drivers/usb/gadget/f_sdp.c27
6 files changed, 33 insertions, 17 deletions
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index fa27efb..51ab484 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 61f2b71..7f35871 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 62bf797..f0afbac 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 7de4105..4fbe172 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 ee8bc99..748366f 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 dd7b9cd..43c5cfb 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) {