xref: /rk3399_rockchip-uboot/common/spl/spl_sdp.c (revision 1a4f6af8bfd44c8ae6e87a81ff125eed47042cc5)
1a3774c1cSStefan Agner /*
2a3774c1cSStefan Agner  * (C) Copyright 2016 Toradex
3a3774c1cSStefan Agner  * Author: Stefan Agner <stefan.agner@toradex.com>
4a3774c1cSStefan Agner  *
5a3774c1cSStefan Agner  * SPDX-License-Identifier:	GPL-2.0+
6a3774c1cSStefan Agner  */
7a3774c1cSStefan Agner 
8a3774c1cSStefan Agner #include <common.h>
9a3774c1cSStefan Agner #include <spl.h>
10a3774c1cSStefan Agner #include <usb.h>
11a3774c1cSStefan Agner #include <g_dnl.h>
12a3774c1cSStefan Agner #include <sdp.h>
13a3774c1cSStefan Agner 
14a3774c1cSStefan Agner DECLARE_GLOBAL_DATA_PTR;
15a3774c1cSStefan Agner 
spl_sdp_load_image(struct spl_image_info * spl_image,struct spl_boot_device * bootdev)16a3774c1cSStefan Agner static int spl_sdp_load_image(struct spl_image_info *spl_image,
17a3774c1cSStefan Agner 			      struct spl_boot_device *bootdev)
18a3774c1cSStefan Agner {
19a3774c1cSStefan Agner 	int ret;
20a3774c1cSStefan Agner 	const int controller_index = 0;
21a3774c1cSStefan Agner 
22a3774c1cSStefan Agner 	g_dnl_clear_detach();
23a3774c1cSStefan Agner 	g_dnl_register("usb_dnl_sdp");
24a3774c1cSStefan Agner 
25a3774c1cSStefan Agner 	ret = sdp_init(controller_index);
26a3774c1cSStefan Agner 	if (ret) {
278e33586eSAndre Heider 		pr_err("SDP init failed: %d\n", ret);
28a3774c1cSStefan Agner 		return -ENODEV;
29a3774c1cSStefan Agner 	}
30a3774c1cSStefan Agner 
31*e7093b51SFrieder Schrempf 	/*
32*e7093b51SFrieder Schrempf 	 * This command either loads a legacy image, jumps and never returns,
33*e7093b51SFrieder Schrempf 	 * or it loads a FIT image and returns it to be handled by the SPL
34*e7093b51SFrieder Schrempf 	 * code.
35*e7093b51SFrieder Schrempf 	 */
36*e7093b51SFrieder Schrempf 	ret = spl_sdp_handle(controller_index, spl_image);
37*e7093b51SFrieder Schrempf 	debug("SDP ended\n");
38a3774c1cSStefan Agner 
39*e7093b51SFrieder Schrempf 	return ret;
40a3774c1cSStefan Agner }
41a3774c1cSStefan Agner SPL_LOAD_IMAGE_METHOD("USB SDP", 0, BOOT_DEVICE_BOARD, spl_sdp_load_image);
42