1*004e67c2SMario Six // SPDX-License-Identifier: GPL-2.0+ 2*004e67c2SMario Six /* 3*004e67c2SMario Six * (C) Copyright 2018 4*004e67c2SMario Six * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc 5*004e67c2SMario Six */ 6*004e67c2SMario Six 7*004e67c2SMario Six #include <common.h> 8*004e67c2SMario Six #include <dm.h> 9*004e67c2SMario Six #include <dm/test.h> 10*004e67c2SMario Six #include <misc.h> 11*004e67c2SMario Six #include <test/ut.h> 12*004e67c2SMario Six 13*004e67c2SMario Six static int dm_test_misc(struct unit_test_state *uts) 14*004e67c2SMario Six { 15*004e67c2SMario Six struct udevice *dev; 16*004e67c2SMario Six u8 buf[16]; 17*004e67c2SMario Six int id; 18*004e67c2SMario Six ulong last_ioctl; 19*004e67c2SMario Six bool enabled; 20*004e67c2SMario Six 21*004e67c2SMario Six ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "misc-test", &dev)); 22*004e67c2SMario Six 23*004e67c2SMario Six /* Read / write tests */ 24*004e67c2SMario Six ut_assertok(misc_write(dev, 0, "TEST", 4)); 25*004e67c2SMario Six ut_assertok(misc_write(dev, 4, "WRITE", 5)); 26*004e67c2SMario Six ut_assertok(misc_read(dev, 0, buf, 9)); 27*004e67c2SMario Six 28*004e67c2SMario Six ut_assertok(memcmp(buf, "TESTWRITE", 9)); 29*004e67c2SMario Six 30*004e67c2SMario Six /* Call tests */ 31*004e67c2SMario Six 32*004e67c2SMario Six id = 0; 33*004e67c2SMario Six ut_assertok(misc_call(dev, 0, &id, 4, buf, 16)); 34*004e67c2SMario Six ut_assertok(memcmp(buf, "Zero", 4)); 35*004e67c2SMario Six 36*004e67c2SMario Six id = 2; 37*004e67c2SMario Six ut_assertok(misc_call(dev, 0, &id, 4, buf, 16)); 38*004e67c2SMario Six ut_assertok(memcmp(buf, "Two", 3)); 39*004e67c2SMario Six 40*004e67c2SMario Six ut_assertok(misc_call(dev, 1, &id, 4, buf, 16)); 41*004e67c2SMario Six ut_assertok(memcmp(buf, "Forty-two", 9)); 42*004e67c2SMario Six 43*004e67c2SMario Six id = 1; 44*004e67c2SMario Six ut_assertok(misc_call(dev, 1, &id, 4, buf, 16)); 45*004e67c2SMario Six ut_assertok(memcmp(buf, "Forty-one", 9)); 46*004e67c2SMario Six 47*004e67c2SMario Six /* IOCTL tests */ 48*004e67c2SMario Six 49*004e67c2SMario Six ut_assertok(misc_ioctl(dev, 6, NULL)); 50*004e67c2SMario Six /* Read back last issued ioctl */ 51*004e67c2SMario Six ut_assertok(misc_call(dev, 2, NULL, 0, &last_ioctl, 52*004e67c2SMario Six sizeof(last_ioctl))); 53*004e67c2SMario Six ut_asserteq(6, last_ioctl) 54*004e67c2SMario Six 55*004e67c2SMario Six ut_assertok(misc_ioctl(dev, 23, NULL)); 56*004e67c2SMario Six /* Read back last issued ioctl */ 57*004e67c2SMario Six ut_assertok(misc_call(dev, 2, NULL, 0, &last_ioctl, 58*004e67c2SMario Six sizeof(last_ioctl))); 59*004e67c2SMario Six ut_asserteq(23, last_ioctl) 60*004e67c2SMario Six 61*004e67c2SMario Six /* Enable / disable tests */ 62*004e67c2SMario Six 63*004e67c2SMario Six /* Read back enable/disable status */ 64*004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 65*004e67c2SMario Six sizeof(enabled))); 66*004e67c2SMario Six ut_asserteq(true, enabled); 67*004e67c2SMario Six 68*004e67c2SMario Six ut_assertok(misc_set_enabled(dev, false)); 69*004e67c2SMario Six /* Read back enable/disable status */ 70*004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 71*004e67c2SMario Six sizeof(enabled))); 72*004e67c2SMario Six ut_asserteq(false, enabled); 73*004e67c2SMario Six 74*004e67c2SMario Six ut_assertok(misc_set_enabled(dev, true)); 75*004e67c2SMario Six /* Read back enable/disable status */ 76*004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 77*004e67c2SMario Six sizeof(enabled))); 78*004e67c2SMario Six ut_asserteq(true, enabled); 79*004e67c2SMario Six 80*004e67c2SMario Six return 0; 81*004e67c2SMario Six } 82*004e67c2SMario Six 83*004e67c2SMario Six DM_TEST(dm_test_misc, DM_TESTF_SCAN_FDT); 84