common: Move autoprobe out to board init

Rather than doing autoprobe within the driver model code, move it out to
the board-init code. This makes it clear that it is a separate step from
binding devices.

For now this is always done twice, before and after relocation, but we
should discuss whether it might be possible to drop the post-relocation
probe.

For boards with SPL, the autoprobe is still done there as well.

Note that with this change, autoprobe happens after the
EVT_DM_POST_INIT_R/F events are sent, rather than before.

Link: https://lore.kernel.org/u-boot/20240626235717.272219-1-marex@denx.de/

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/common/board_f.c b/common/board_f.c
index d2c24d4..6c5c3bf 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -826,6 +826,10 @@
 	if (ret)
 		return ret;
 
+	ret = dm_autoprobe();
+	if (ret)
+		return ret;
+
 	if (IS_ENABLED(CONFIG_TIMER_EARLY)) {
 		ret = dm_timer_init();
 		if (ret)
diff --git a/common/board_r.c b/common/board_r.c
index f63c6ae..179259b 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -250,7 +250,7 @@
 	if (ret)
 		return ret;
 
-	return 0;
+	return dm_autoprobe();
 }
 #endif
 
diff --git a/common/spl/spl.c b/common/spl/spl.c
index ad31a2f..02269ff 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -500,6 +500,10 @@
 			debug("dm_init_and_scan() returned error %d\n", ret);
 			return ret;
 		}
+
+		ret = dm_autoprobe();
+		if (ret)
+			return ret;
 	}
 
 	return 0;