In case anything errors out during the SDP transfer, detach the controller instead of bailing out right away. This way, the controller can be reattached on next attempt.
Signed-off-by: Marek Vasut <[email protected]> --- Cc: Angus Ainslie <[email protected]> Cc: Dmitrii Merkurev <[email protected]> Cc: Eddie Cai <[email protected]> Cc: Kever Yang <[email protected]> Cc: Lukasz Majewski <[email protected]> Cc: Miquel Raynal <[email protected]> Cc: Mattijs Korpershoek <[email protected]> Cc: Nishanth Menon <[email protected]> Cc: Patrice Chotard <[email protected]> Cc: Patrick Delaunay <[email protected]> Cc: Philipp Tomsich <[email protected]> Cc: Simon Glass <[email protected]> Cc: Stefan Roese <[email protected]> Cc: [email protected] --- common/spl/spl_sdp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/common/spl/spl_sdp.c b/common/spl/spl_sdp.c index cc4fb4f7cca..f6b99c1af5a 100644 --- a/common/spl/spl_sdp.c +++ b/common/spl/spl_sdp.c @@ -25,13 +25,13 @@ static int spl_sdp_load_image(struct spl_image_info *spl_image, ret = g_dnl_register("usb_dnl_sdp"); if (ret) { pr_err("SDP dnl register failed: %d\n", ret); - return ret; + goto err_detach; } ret = sdp_init(controller_index); if (ret) { pr_err("SDP init failed: %d\n", ret); - return -ENODEV; + goto err_detach; } /* @@ -42,6 +42,7 @@ static int spl_sdp_load_image(struct spl_image_info *spl_image, ret = spl_sdp_handle(controller_index, spl_image, bootdev); debug("SDP ended\n"); +err_detach: usb_gadget_release(controller_index); return ret; } -- 2.40.1

