]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
expo: Store the console in the expo
authorSimon Glass <sjg@chromium.org>
Thu, 1 Jun 2023 16:22:34 +0000 (10:22 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 14 Jul 2023 16:54:51 +0000 (12:54 -0400)
Rather than finding this each time, keep a pointer to it. This simplifies
the code a little.

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

index 05950a1760383d86536803a79a4fe5ca948454b9..cd1b1a3de50c0a487b7e5bcc0cd6b7d4ceda92bb 100644 (file)
@@ -83,7 +83,16 @@ const char *expo_get_str(struct expo *exp, uint id)
 
 int expo_set_display(struct expo *exp, struct udevice *dev)
 {
+       struct udevice *cons;
+       int ret;
+
+       ret = device_find_first_child_by_uclass(dev, UCLASS_VIDEO_CONSOLE,
+                                               &cons);
+       if (ret)
+               return log_msg_ret("con", ret);
+
        exp->display = dev;
+       exp->cons = cons;
 
        return 0;
 }
index d2f77c008cf73f834efdac45165b791f27bc66c0..7e9ba047f2d435d1a1e2b64db18e327d76e4b82b 100644 (file)
@@ -278,16 +278,10 @@ static int scene_obj_render(struct scene_obj *obj, bool text_mode)
 {
        struct scene *scn = obj->scene;
        struct expo *exp = scn->expo;
-       struct udevice *cons, *dev = exp->display;
+       struct udevice *dev = exp->display;
+       struct udevice *cons = text_mode ? NULL : exp->cons;
        int x, y, ret;
 
-       cons = NULL;
-       if (!text_mode) {
-               ret = device_find_first_child_by_uclass(dev,
-                                                       UCLASS_VIDEO_CONSOLE,
-                                                       &cons);
-       }
-
        x = obj->x;
        y = obj->y;
 
index 8827f4b0b45ff434ce95b1d7a329bf67c66a328a..06f5629e03f89112260e1e17ac7b8c28fb9126f8 100644 (file)
@@ -50,6 +50,7 @@ struct expo_action {
  *
  * @name: Name of the expo (allocated)
  * @display: Display to use (`UCLASS_VIDEO`), or NULL to use text mode
+ * @cons: Console to use (`UCLASS_VIDEO_CONSOLE`), or NULL to use text mode
  * @scene_id: Current scene ID (0 if none)
  * @next_id: Next ID number to use, for automatic allocation
  * @action: Action selected by user. At present only one is supported, with the
@@ -62,6 +63,7 @@ struct expo_action {
 struct expo {
        char *name;
        struct udevice *display;
+       struct udevice *cons;
        uint scene_id;
        uint next_id;
        struct expo_action action;