usb: gadget: sdp: use CONFIG_SDP_LOADADDR as default load address
authorFrank Li <Frank.Li@nxp.com>
Wed, 29 Apr 2020 02:35:11 +0000 (10:35 +0800)
committerStefano Babic <sbabic@denx.de>
Sun, 3 May 2020 13:31:34 +0000 (15:31 +0200)
If SDP_WRITE and SDP_JUMP addr is zero, use CONFIG_SDP_LOADADDR
as default address

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/usb/gadget/Kconfig
drivers/usb/gadget/f_sdp.c

index 58ca82d4de6f71341f76a7478dd56fff55f5f6fc..46aa3fe95438d1bdb46608ac0ccb453796aef8c8 100644 (file)
@@ -122,6 +122,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
index 50836db4a04563bc634269165fb1789dee177e0f..1732a3acf10056495a1ccb3504e28418154664b2 100644 (file)
@@ -276,7 +276,7 @@ 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 +304,7 @@ 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;