summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-12-30 10:18:39 -0600
committerTom Rini <[email protected]>2025-12-30 11:23:00 -0600
commit5652ccc86a3272c2da568dda2d22abf4107e993a (patch)
tree3de91858e8526929f6bfcc2df1aefb5e0986feaa /cmd
parent4df43f4474dca5575666efbc2303c50ddbb3c689 (diff)
parent5e9b0b56ad8c2a4289b2b506ad3d0f3acd0d20ba (diff)
Merge patch series "video: display: refactor display_read_timing to avoid code duplication"
Julien Stephan <[email protected]> says: Commit 2dcf143398ad ("dm: video: Repurpose the 'displayport' uclass to 'display'") left the display_read_edid() function unused by mistake. This series addresses that oversight and introduces a new useful cmd. Patch 1: - Refactors display_read_timing() to use the existing display_read_edid() function, eliminating redundant code. - Marks display_read_edid() as static since it is not used outside of the file. Patch 2: - Adds a new read_edid command, which can be very useful for debugging or developing new display drivers. - As this command uses display_read_edid(), the function is made non-static again. Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'cmd')
-rw-r--r--cmd/Kconfig6
-rw-r--r--cmd/Makefile1
-rw-r--r--cmd/read_edid.c38
3 files changed, 45 insertions, 0 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig
index f1e84ff02c3..b71ac554c0b 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1692,6 +1692,12 @@ config CMD_READ
help
Provides low-level access to the data in a partition.
+config CMD_READ_EDID
+ bool "read_edid - Read display EDID"
+ depends on DISPLAY
+ help
+ Read and parse edid from connected display device.
+
config CMD_REMOTEPROC
bool "remoteproc"
depends on REMOTEPROC
diff --git a/cmd/Makefile b/cmd/Makefile
index 642042cfe00..4cd13d4fa6e 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -157,6 +157,7 @@ obj-$(CONFIG_CMD_WOL) += wol.o
obj-$(CONFIG_CMD_QFW) += qfw.o
obj-$(CONFIG_CMD_READ) += read.o
obj-$(CONFIG_CMD_WRITE) += read.o
+obj-$(CONFIG_CMD_READ_EDID) += read_edid.o
obj-$(CONFIG_CMD_REGINFO) += reginfo.o
obj-$(CONFIG_CMD_REMOTEPROC) += remoteproc.o
obj-$(CONFIG_CMD_RNG) += rng.o
diff --git a/cmd/read_edid.c b/cmd/read_edid.c
new file mode 100644
index 00000000000..428dddca8bb
--- /dev/null
+++ b/cmd/read_edid.c
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2025 BayLibre, SAS
+ */
+
+#include <command.h>
+#include <dm.h>
+#include <display.h>
+#include <edid.h>
+
+static int do_read_edid(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[])
+{
+ struct udevice *dev;
+ int ret;
+ u8 edid[EDID_EXT_SIZE];
+
+ /* Get the first display device (UCLASS_DISPLAY) */
+ ret = uclass_first_device_err(UCLASS_DISPLAY, &dev);
+ if (ret) {
+ printf("Cannot get display device: %d\n", ret);
+ return CMD_RET_FAILURE;
+ }
+
+ ret = display_read_edid(dev, edid, EDID_EXT_SIZE);
+ if (ret) {
+ printf("Cannot read edid: %d\n", ret);
+ return CMD_RET_FAILURE;
+ }
+
+ edid_print_info((struct edid1_info *)edid);
+
+ return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(read_edid, 1, 0, do_read_edid,
+ "Read and print EDID from display",
+ ""
+);