If SDP_WRITE and SDP_JUMP command addr is zero, use CONFIG_SDP_LOADADDR
as default address.

Signed-off-by: Sherry Sun <sherry....@nxp.com>
Signed-off-by: Frank Li <frank...@nxp.com>
---
 drivers/usb/gadget/Kconfig | 4 ++++
 drivers/usb/gadget/f_sdp.c | 6 ++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 26b4d12a09..172a82195b 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -115,6 +115,10 @@ config USB_GADGET_VBUS_DRAW
           This value will be used except for system-specific gadget
           drivers that have more specific information.
 
+config SDP_LOADADDR
+       hex "Default load address at SDP_WRITE and SDP_JUMP"
+       default 0
+
 # Selected by UDC drivers that support high-speed operation.
 config USB_GADGET_DUALSPEED
        bool
diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c
index bcd1c5d47c..841814bc07 100644
--- a/drivers/usb/gadget/f_sdp.c
+++ b/drivers/usb/gadget/f_sdp.c
@@ -276,7 +276,8 @@ static void sdp_rx_command_complete(struct usb_ep *ep, 
struct usb_request *req)
                sdp->error_status = SDP_WRITE_FILE_COMPLETE;
 
                sdp->state = SDP_STATE_RX_FILE_DATA;
-               sdp->dnl_address = be32_to_cpu(cmd->addr);
+               sdp->dnl_address = cmd->addr ? be32_to_cpu(cmd->addr) :
+                                              CONFIG_SDP_LOADADDR;
                sdp->dnl_bytes_remaining = be32_to_cpu(cmd->cnt);
                sdp->dnl_bytes = sdp->dnl_bytes_remaining;
                sdp->next_state = SDP_STATE_IDLE;
@@ -304,7 +305,8 @@ static void sdp_rx_command_complete(struct usb_ep *ep, 
struct usb_request *req)
                sdp->always_send_status = false;
                sdp->error_status = 0;
 
-               sdp->jmp_address = be32_to_cpu(cmd->addr);
+               sdp->jmp_address = cmd->addr ? be32_to_cpu(cmd->addr) :
+                                              CONFIG_SDP_LOADADDR;
                sdp->state = SDP_STATE_TX_SEC_CONF;
                sdp->next_state = SDP_STATE_JUMP;
                break;
-- 
2.17.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to