aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-06-01 10:22:34 -0600
committerTom Rini <trini@konsulko.com>2023-07-14 12:54:51 -0400
commit42b18494bdaf677c4726ef47a839b16a1a3daba2 (patch)
treeb07140ea3d5819b6b4ce904f6506dc0462e7d944
parent0ab4f91a107832692781a367a1ef2173af75f108 (diff)
downloadu-boot-42b18494bdaf677c4726ef47a839b16a1a3daba2.zip
u-boot-42b18494bdaf677c4726ef47a839b16a1a3daba2.tar.gz
u-boot-42b18494bdaf677c4726ef47a839b16a1a3daba2.tar.bz2
expo: Store the console in the expo
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>
-rw-r--r--boot/expo.c9
-rw-r--r--boot/scene.c10
-rw-r--r--include/expo.h2
3 files changed, 13 insertions, 8 deletions
diff --git a/boot/expo.c b/boot/expo.c
index 05950a1..cd1b1a3 100644
--- a/boot/expo.c
+++ b/boot/expo.c
@@ -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;
}
diff --git a/boot/scene.c b/boot/scene.c
index d2f77c0..7e9ba04 100644
--- a/boot/scene.c
+++ b/boot/scene.c
@@ -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;
diff --git a/include/expo.h b/include/expo.h
index 8827f4b..06f5629 100644
--- a/include/expo.h
+++ b/include/expo.h
@@ -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;