[PATCH v2 4/6] test: dm: Add compatible multimatch test
Simon Glass
sjg at chromium.org
Fri Jan 9 12:32:36 CET 2026
Hi Markus,
On Thu, 8 Jan 2026 at 04:17, Markus Schneider-Pargmann (TI.com)
<msp at baylibre.com> wrote:
>
> Add a test for binding of multiple drivers with the same compatible. If
> one of the drivers returns -ENODEV the other one needs to be bound.
>
> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp at baylibre.com>
> ---
> arch/sandbox/dts/test.dts | 4 ++++
> test/dm/core.c | 15 +++++++++++++++
> test/dm/test-driver.c | 25 +++++++++++++++++++++++++
> 3 files changed, 44 insertions(+)
>
Reviewed-by: Simon Glass <simon.glass at canonical.com>
nit below
> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index a2c739a2044c728a96b5f4acbf439a42d7e12fb5..9cc854ffe80e994e34010e299029a7f1756697e0 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -457,6 +457,10 @@
> mux-control-names = "mux0";
> };
>
> + multimatch-test {
> + compatible = "sandbox,multimatch-test";
> + };
> +
> phy_provider0: gen_phy at 0 {
> compatible = "sandbox,phy";
> #phy-cells = <1>;
> diff --git a/test/dm/core.c b/test/dm/core.c
> index 53693f4f7ed7c7265218e4154ebf81a044a3a431..78ee14af228ab20a6639bb076260296adaea2c92 100644
> --- a/test/dm/core.c
> +++ b/test/dm/core.c
> @@ -1410,3 +1410,18 @@ static int dm_test_try_first_device(struct unit_test_state *uts)
> return 0;
> }
> DM_TEST(dm_test_try_first_device, 0);
> +
> +/* Test that all drivers are iterated when bind returns -ENODEV */
> +static int dm_test_multimatch(struct unit_test_state *uts)
> +{
> + struct udevice *dev;
> +
> + ut_assertok(uclass_find_device_by_name(UCLASS_TEST, "multimatch-test",
> + &dev));
> + ut_assertnonnull(dev);
> + ut_asserteq_str("test_multimatch_second", dev->driver->name);
> + ut_asserteq(2, dm_testdrv_op_count[DM_TEST_OP_BIND]);
> +
> + return 0;
> +}
> +DM_TEST(dm_test_multimatch, UTF_SCAN_FDT);
> diff --git a/test/dm/test-driver.c b/test/dm/test-driver.c
> index 759de3a5f77f4b64ea577a293586a737e4623f60..bf953d7814df6a0e6efd6c2a3960a925a3fbe5a7 100644
> --- a/test/dm/test-driver.c
> +++ b/test/dm/test-driver.c
> @@ -197,3 +197,28 @@ U_BOOT_DRIVER(test_act_dma_vital_clk_drv) = {
> .unbind = test_manual_unbind,
> .flags = DM_FLAG_VITAL | DM_FLAG_ACTIVE_DMA,
> };
> +
> +static int test_multimatch_first_bind(struct udevice *dev)
> +{
> + dm_testdrv_op_count[DM_TEST_OP_BIND]++;
<blank line here>
> + return -ENODEV;
> +}
> +
> +static const struct udevice_id test_multimatch_ids[] = {
> + { .compatible = "sandbox,multimatch-test" },
> + { }
> +};
> +
> +U_BOOT_DRIVER(test_multimatch_first) = {
> + .name = "test_multimatch_first",
> + .id = UCLASS_TEST,
> + .of_match = test_multimatch_ids,
> + .bind = test_multimatch_first_bind,
> +};
> +
> +U_BOOT_DRIVER(test_multimatch_second) = {
> + .name = "test_multimatch_second",
> + .id = UCLASS_TEST,
> + .of_match = test_multimatch_ids,
> + .bind = test_manual_bind,
> +};
>
> --
> 2.51.0
>
Regards,
Simon
More information about the U-Boot
mailing list