]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
sysinfo: add sysinfo_get_and_detect() helper
authorNora Schiffer <nora.schiffer@ew.tq-group.com>
Tue, 2 Jun 2026 11:57:50 +0000 (13:57 +0200)
committerFabio Estevam <festevam@gmail.com>
Fri, 5 Jun 2026 15:56:32 +0000 (12:56 -0300)
sysinfo_detect() is commonly called after sysinfo_get(). Make the API a
bit more convenient to use by introducing a helper.

Signed-off-by: Nora Schiffer <nora.schiffer@ew.tq-group.com>
Signed-off-by: Alexander Feilke <alexander.feilke@ew.tq-group.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/sysinfo/sysinfo-uclass.c
include/sysinfo.h
test/dm/sysinfo.c

index bf0f664e8dc323b6436795013046934c6d020102..d18a168614ef0c723e915b1396b6fe25a4a15e04 100644 (file)
@@ -42,6 +42,16 @@ int sysinfo_detect(struct udevice *dev)
        return ret;
 }
 
+int sysinfo_get_and_detect(struct udevice **devp)
+{
+       int ret = sysinfo_get(devp);
+
+       if (!ret)
+               ret = sysinfo_detect(*devp);
+
+       return ret;
+}
+
 int sysinfo_get_fit_loadable(struct udevice *dev, int index, const char *type,
                             const char **strp)
 {
index 54eb64a204a306254319e1b507a343d049dd314d..7ca396b2ee4ca8c93bfd7c783d1a03b3c16ceac7 100644 (file)
@@ -373,6 +373,18 @@ int sysinfo_get_data_by_index(struct udevice *dev, int id, int index,
  */
 int sysinfo_get(struct udevice **devp);
 
+/**
+ * sysinfo_get_and_detect() - Get the sysinfo device and detect it.
+ *
+ * @devp:      Pointer to structure to receive the sysinfo device.
+ *
+ * This is a convenience wrapper around sysinfo_get() followed by
+ * sysinfo_detect()
+ *
+ * Return: 0 if OK, -ve on error.
+ */
+int sysinfo_get_and_detect(struct udevice **devp);
+
 /**
  * sysinfo_get_fit_loadable - Get the name of an image to load from FIT
  * This function can be used to provide the image names based on runtime
@@ -438,6 +450,11 @@ static inline int sysinfo_get(struct udevice **devp)
        return -ENOSYS;
 }
 
+static inline int sysinfo_get_and_detect(struct udevice **devp)
+{
+       return -ENOSYS;
+}
+
 static inline int sysinfo_get_fit_loadable(struct udevice *dev, int index,
                                           const char *type, const char **strp)
 {
index 14ebe6b42e7ac7ae654f544ddf4cd6a7137814bb..611f2e98d14bbb02528e3bdb0462e3dca15312a9 100644 (file)
@@ -66,3 +66,19 @@ static int dm_test_sysinfo(struct unit_test_state *uts)
        return 0;
 }
 DM_TEST(dm_test_sysinfo, UTF_SCAN_PDATA | UTF_SCAN_FDT);
+
+static int dm_test_sysinfo_get_and_detect(struct unit_test_state *uts)
+{
+       struct udevice *sysinfo;
+       bool called_detect = false;
+
+       ut_assertok(sysinfo_get_and_detect(&sysinfo));
+       ut_assert(sysinfo);
+
+       ut_assertok(sysinfo_get_bool(sysinfo, BOOL_CALLED_DETECT,
+                                    &called_detect));
+       ut_assert(called_detect);
+
+       return 0;
+}
+DM_TEST(dm_test_sysinfo_get_and_detect, UTF_SCAN_PDATA | UTF_SCAN_FDT);