summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/dm/Makefile1
-rw-r--r--test/dm/ofnode.c54
-rw-r--r--test/dm/video_bridge.c67
-rw-r--r--test/lib/kconfig.c8
-rw-r--r--test/lib/longjmp.c2
5 files changed, 127 insertions, 5 deletions
diff --git a/test/dm/Makefile b/test/dm/Makefile
index e44f3d89e77..3afcc26ca57 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -63,6 +63,7 @@ obj-$(CONFIG_SOUND) += i2s.o
obj-$(CONFIG_CLK_K210_SET_RATE) += k210_pll.o
obj-$(CONFIG_IOMMU) += iommu.o
obj-$(CONFIG_LED) += led.o
+obj-$(CONFIG_VIDEO_BRIDGE_LVDS_CODEC) += video_bridge.o
obj-$(CONFIG_DM_MAILBOX) += mailbox.o
obj-$(CONFIG_DM_MDIO) += mdio.o
obj-$(CONFIG_DM_MDIO_MUX) += mdio_mux.o
diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c
index cc8b444ff9a..0f60c2a6281 100644
--- a/test/dm/ofnode.c
+++ b/test/dm/ofnode.c
@@ -23,6 +23,7 @@
#include <dm/device-internal.h>
#include <dm/lists.h>
#include <dm/of_extra.h>
+#include <dm/ofnode_graph.h>
#include <dm/root.h>
#include <dm/test.h>
#include <dm/uclass-internal.h>
@@ -1651,3 +1652,56 @@ static int dm_test_bool(struct unit_test_state *uts)
return 0;
}
DM_TEST(dm_test_bool, UTF_SCAN_FDT);
+
+/* test all helpers found in drivers/core/ofnode_graph.c */
+static int dm_test_ofnode_graph(struct unit_test_state *uts)
+{
+ /* 3 ports with 5 endpoints (2-1-2) */
+ ofnode graph1 = ofnode_path("/graph1");
+ /* 1 port with 1 endpoint */
+ ofnode graph2 = ofnode_path("/graph2");
+ ofnode node;
+ u32 id;
+
+ ut_asserteq(ofnode_graph_get_endpoint_count(graph1), 5);
+ ut_asserteq(ofnode_graph_get_endpoint_count(graph2), 1);
+
+ ut_asserteq(ofnode_graph_get_port_count(graph1), 3);
+ ut_asserteq(ofnode_graph_get_port_count(graph2), 1);
+
+ /* Request port with reg 2 */
+ node = ofnode_graph_get_port_by_id(graph1, 2);
+ ofnode_read_u32(node, "reg", &id);
+ ut_asserteq(id, 2);
+
+ /* Reqest parent from prev requested endpoint */
+ node = ofnode_graph_get_port_parent(node);
+ ut_asserteq_str(ofnode_get_name(node), "graph1");
+
+ /* Request endpoint under port 1 */
+ node = ofnode_graph_get_endpoint_by_regs(graph1, 1, -1);
+ ut_assert(ofnode_has_property(node, "test-property-0"));
+
+ /* Reqest remote endpoint from graph2 in graph1 */
+ node = ofnode_graph_get_endpoint_by_regs(graph2, -1, -1);
+ node = ofnode_graph_get_remote_endpoint(node);
+ ut_assert(ofnode_has_property(node, "test-property-1"));
+
+ /* Reqest remote parent from graph2 linked endpoint */
+ node = ofnode_graph_get_endpoint_by_regs(graph2, -1, -1);
+ node = ofnode_graph_get_remote_port_parent(node);
+ ut_asserteq_str(ofnode_get_name(node), "graph1");
+
+ /* Reqest remote port from graph2 linked endpoint */
+ node = ofnode_graph_get_endpoint_by_regs(graph2, -1, -1);
+ node = ofnode_graph_get_remote_port(node);
+ ofnode_read_u32(node, "reg", &id);
+ ut_asserteq(id, 2);
+
+ /* Reqest remote parent from graph2 linked endpoint */
+ node = ofnode_graph_get_remote_node(graph2, -1, -1);
+ ut_asserteq_str(ofnode_get_name(node), "graph1");
+
+ return 0;
+}
+DM_TEST(dm_test_ofnode_graph, UTF_SCAN_FDT);
diff --git a/test/dm/video_bridge.c b/test/dm/video_bridge.c
new file mode 100644
index 00000000000..f55a333c0b8
--- /dev/null
+++ b/test/dm/video_bridge.c
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test for video bridge uclass
+ *
+ * Copyright (c) 2025 Svyatoslav Ryhel <clamor95@gmail.com>
+ */
+
+#include <backlight.h>
+#include <dm.h>
+#include <panel.h>
+#include <video.h>
+#include <video_bridge.h>
+#include <asm/gpio.h>
+#include <asm/test.h>
+#include <dm/test.h>
+#include <power/regulator.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+/* Basic test of the video uclass, test is based on driven panel */
+static int dm_test_video_bridge(struct unit_test_state *uts)
+{
+ struct udevice *dev, *pwm, *gpio, *reg;
+ uint period_ns, duty_ns;
+ bool enable, polarity;
+ struct display_timing timing;
+
+ ut_assertok(uclass_first_device_err(UCLASS_VIDEO_BRIDGE, &dev));
+ ut_assertok(uclass_get_device_by_name(UCLASS_PWM, "pwm", &pwm));
+ ut_assertok(uclass_get_device(UCLASS_GPIO, 1, &gpio));
+ ut_assertok(regulator_get_by_platname("VDD_EMMC_1.8V", &reg));
+ ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
+ &enable, &polarity));
+ ut_asserteq(false, enable);
+ ut_asserteq(true, regulator_get_enable(reg));
+
+ /* bridge calls panel_enable_backlight() of panel */
+ ut_assertok(video_bridge_attach(dev));
+ ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
+ &enable, &polarity));
+ ut_asserteq(1000, period_ns);
+ ut_asserteq(170 * 1000 / 255, duty_ns);
+ ut_asserteq(true, enable);
+ ut_asserteq(false, polarity);
+ ut_asserteq(1, sandbox_gpio_get_value(gpio, 1));
+ ut_asserteq(true, regulator_get_enable(reg));
+
+ /* bridge calls panel_set_backlight() of panel */
+ ut_assertok(video_bridge_set_backlight(dev, BACKLIGHT_DEFAULT));
+ ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
+ &enable, &polarity));
+ ut_asserteq(true, enable);
+ ut_asserteq(170 * 1000 / 255, duty_ns);
+
+ /* bridge should be active */
+ ut_assertok(video_bridge_set_active(dev, true));
+
+ /* bridge is internal and has no hotplug gpio */
+ ut_asserteq(-ENOENT, video_bridge_check_attached(dev));
+
+ /* check passing timings and EDID */
+ ut_assertok(video_bridge_get_display_timing(dev, &timing));
+ ut_assertok(video_bridge_read_edid(dev, NULL, 0));
+
+ return 0;
+}
+DM_TEST(dm_test_video_bridge, UTF_SCAN_PDATA | UTF_SCAN_FDT);
diff --git a/test/lib/kconfig.c b/test/lib/kconfig.c
index a3645abf946..2f47af9acf1 100644
--- a/test/lib/kconfig.c
+++ b/test/lib/kconfig.c
@@ -22,10 +22,10 @@ static int lib_test_is_enabled(struct unit_test_state *uts)
ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED));
if (IS_ENABLED(CONFIG_BLOBLIST)) {
- ut_asserteq(0xb000, IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED,
- CONFIG_BLOBLIST_ADDR));
- ut_asserteq(0xb000, CONFIG_IF_ENABLED_INT(BLOBLIST_FIXED,
- BLOBLIST_ADDR));
+ ut_asserteq(0x100, IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED,
+ CONFIG_BLOBLIST_ADDR));
+ ut_asserteq(0x100, CONFIG_IF_ENABLED_INT(BLOBLIST_FIXED,
+ BLOBLIST_ADDR));
}
/*
diff --git a/test/lib/longjmp.c b/test/lib/longjmp.c
index 79d889bdd5f..74c3465b8c2 100644
--- a/test/lib/longjmp.c
+++ b/test/lib/longjmp.c
@@ -5,10 +5,10 @@
* Copyright (c) 2021, Heinrich Schuchardt <xypron.glpk@gmx.de>
*/
+#include <setjmp.h>
#include <test/lib.h>
#include <test/test.h>
#include <test/ut.h>
-#include <asm/setjmp.h>
struct test_jmp_buf {
jmp_buf env;