1*94fbbf0fSJean-Jacques Hiblot // SPDX-License-Identifier: GPL-2.0+ 2*94fbbf0fSJean-Jacques Hiblot /* 3*94fbbf0fSJean-Jacques Hiblot * Test for the NOP uclass 4*94fbbf0fSJean-Jacques Hiblot * 5*94fbbf0fSJean-Jacques Hiblot * (C) Copyright 2019 - Texas Instruments Incorporated - http://www.ti.com/ 6*94fbbf0fSJean-Jacques Hiblot * Jean-Jacques Hiblot <jjhiblot@ti.com> 7*94fbbf0fSJean-Jacques Hiblot */ 8*94fbbf0fSJean-Jacques Hiblot 9*94fbbf0fSJean-Jacques Hiblot #include <common.h> 10*94fbbf0fSJean-Jacques Hiblot #include <dm.h> 11*94fbbf0fSJean-Jacques Hiblot #include <dm/ofnode.h> 12*94fbbf0fSJean-Jacques Hiblot #include <dm/lists.h> 13*94fbbf0fSJean-Jacques Hiblot #include <dm/device.h> 14*94fbbf0fSJean-Jacques Hiblot #include <dm/test.h> 15*94fbbf0fSJean-Jacques Hiblot #include <misc.h> 16*94fbbf0fSJean-Jacques Hiblot #include <test/ut.h> 17*94fbbf0fSJean-Jacques Hiblot 18*94fbbf0fSJean-Jacques Hiblot static int noptest_bind(struct udevice *parent) 19*94fbbf0fSJean-Jacques Hiblot { 20*94fbbf0fSJean-Jacques Hiblot ofnode ofnode = dev_read_first_subnode(parent); 21*94fbbf0fSJean-Jacques Hiblot 22*94fbbf0fSJean-Jacques Hiblot while (ofnode_valid(ofnode)) { 23*94fbbf0fSJean-Jacques Hiblot struct udevice *dev; 24*94fbbf0fSJean-Jacques Hiblot const char *bind_flag = ofnode_read_string(ofnode, "bind"); 25*94fbbf0fSJean-Jacques Hiblot 26*94fbbf0fSJean-Jacques Hiblot if (bind_flag && (strcmp(bind_flag, "True") == 0)) 27*94fbbf0fSJean-Jacques Hiblot lists_bind_fdt(parent, ofnode, &dev, false); 28*94fbbf0fSJean-Jacques Hiblot ofnode = dev_read_next_subnode(ofnode); 29*94fbbf0fSJean-Jacques Hiblot } 30*94fbbf0fSJean-Jacques Hiblot 31*94fbbf0fSJean-Jacques Hiblot return 0; 32*94fbbf0fSJean-Jacques Hiblot } 33*94fbbf0fSJean-Jacques Hiblot 34*94fbbf0fSJean-Jacques Hiblot static const struct udevice_id noptest1_ids[] = { 35*94fbbf0fSJean-Jacques Hiblot { 36*94fbbf0fSJean-Jacques Hiblot .compatible = "sandbox,nop_sandbox1", 37*94fbbf0fSJean-Jacques Hiblot }, 38*94fbbf0fSJean-Jacques Hiblot { } 39*94fbbf0fSJean-Jacques Hiblot }; 40*94fbbf0fSJean-Jacques Hiblot 41*94fbbf0fSJean-Jacques Hiblot U_BOOT_DRIVER(noptest_drv1) = { 42*94fbbf0fSJean-Jacques Hiblot .name = "noptest1_drv", 43*94fbbf0fSJean-Jacques Hiblot .of_match = noptest1_ids, 44*94fbbf0fSJean-Jacques Hiblot .id = UCLASS_NOP, 45*94fbbf0fSJean-Jacques Hiblot .bind = noptest_bind, 46*94fbbf0fSJean-Jacques Hiblot }; 47*94fbbf0fSJean-Jacques Hiblot 48*94fbbf0fSJean-Jacques Hiblot static const struct udevice_id noptest2_ids[] = { 49*94fbbf0fSJean-Jacques Hiblot { 50*94fbbf0fSJean-Jacques Hiblot .compatible = "sandbox,nop_sandbox2", 51*94fbbf0fSJean-Jacques Hiblot }, 52*94fbbf0fSJean-Jacques Hiblot { } 53*94fbbf0fSJean-Jacques Hiblot }; 54*94fbbf0fSJean-Jacques Hiblot 55*94fbbf0fSJean-Jacques Hiblot U_BOOT_DRIVER(noptest_drv2) = { 56*94fbbf0fSJean-Jacques Hiblot .name = "noptest2_drv", 57*94fbbf0fSJean-Jacques Hiblot .of_match = noptest2_ids, 58*94fbbf0fSJean-Jacques Hiblot .id = UCLASS_NOP, 59*94fbbf0fSJean-Jacques Hiblot }; 60*94fbbf0fSJean-Jacques Hiblot 61*94fbbf0fSJean-Jacques Hiblot static int dm_test_nop(struct unit_test_state *uts) 62*94fbbf0fSJean-Jacques Hiblot { 63*94fbbf0fSJean-Jacques Hiblot struct udevice *dev; 64*94fbbf0fSJean-Jacques Hiblot 65*94fbbf0fSJean-Jacques Hiblot ut_assertok(uclass_get_device_by_name(UCLASS_NOP, "nop-test_0", &dev)); 66*94fbbf0fSJean-Jacques Hiblot ut_assertok(uclass_get_device_by_name(UCLASS_NOP, "nop-test_1", &dev)); 67*94fbbf0fSJean-Jacques Hiblot ut_asserteq(-ENODEV, 68*94fbbf0fSJean-Jacques Hiblot uclass_get_device_by_name(UCLASS_NOP, "nop-test_2", &dev)); 69*94fbbf0fSJean-Jacques Hiblot 70*94fbbf0fSJean-Jacques Hiblot return 0; 71*94fbbf0fSJean-Jacques Hiblot } 72*94fbbf0fSJean-Jacques Hiblot 73*94fbbf0fSJean-Jacques Hiblot DM_TEST(dm_test_nop, DM_TESTF_FLAT_TREE | DM_TESTF_SCAN_FDT); 74