]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
expo: Add a function to prepare a cedit
authorSimon Glass <sjg@chromium.org>
Mon, 14 Aug 2023 22:40:27 +0000 (16:40 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 25 Aug 2023 17:54:33 +0000 (13:54 -0400)
Split out the code which prepares the cedit for use, so we can call it
from a test.

Add a log category while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/cedit.c
include/cedit.h

index 2d16086bad63b0e6b534d96f415dfca12cd78d9d..6c10b21145418b628a2b8dd6fcb2582ce558ec98 100644 (file)
@@ -6,6 +6,8 @@
  * Written by Simon Glass <sjg@chromium.org>
  */
 
+#define LOG_CATEGORY LOGC_EXPO
+
 #include <common.h>
 #include <cedit.h>
 #include <cli.h>
@@ -47,18 +49,15 @@ int cedit_arange(struct expo *exp, struct video_priv *vpriv, uint scene_id)
        return 0;
 }
 
-int cedit_run(struct expo *exp)
+int cedit_prepare(struct expo *exp, struct video_priv **vid_privp,
+                 struct scene **scnp)
 {
-       struct cli_ch_state s_cch, *cch = &s_cch;
        struct video_priv *vid_priv;
-       uint scene_id;
        struct udevice *dev;
        struct scene *scn;
-       bool done;
+       uint scene_id;
        int ret;
 
-       cli_ch_init(cch);
-
        /* For now we only support a video console */
        ret = uclass_first_device_err(UCLASS_VIDEO, &dev);
        if (ret)
@@ -93,6 +92,27 @@ int cedit_run(struct expo *exp)
        if (ret)
                return log_msg_ret("dim", ret);
 
+       *vid_privp = vid_priv;
+       *scnp = scn;
+
+       return scene_id;
+}
+
+int cedit_run(struct expo *exp)
+{
+       struct cli_ch_state s_cch, *cch = &s_cch;
+       struct video_priv *vid_priv;
+       uint scene_id;
+       struct scene *scn;
+       bool done;
+       int ret;
+
+       cli_ch_init(cch);
+       ret = cedit_prepare(exp, &vid_priv, &scn);
+       if (ret < 0)
+               return log_msg_ret("prep", ret);
+       scene_id = ret;
+
        done = false;
        do {
                struct expo_action act;
index 21de12dfe7a9721fe5faf1318452e4adca3fedec..851d8e83564a9933af7442b109d7a00e5226330c 100644 (file)
@@ -8,6 +8,7 @@
 #define __CEDIT_H
 
 struct expo;
+struct scene;
 struct video_priv;
 
 /**
@@ -30,4 +31,18 @@ int cedit_arange(struct expo *exp, struct video_priv *vid_priv, uint scene_id);
  */
 int cedit_run(struct expo *exp);
 
+/**
+ * cedit_prepare() - Prepare to run a cedit
+ *
+ * Set up the video device, select the first scene and highlight the first item.
+ * This ensures that all menus have a selected item.
+ *
+ * @exp: Expo to use
+ * @vid_privp: Set to private data for the video device
+ * @scnp: Set to the first scene
+ * Return: scene ID of first scene if OK, -ve on error
+ */
+int cedit_prepare(struct expo *exp, struct video_priv **vid_privp,
+                 struct scene **scnp);
+
 #endif /* __CEDIT_H */