1004e67c2SMario Six // SPDX-License-Identifier: GPL-2.0+ 2004e67c2SMario Six /* 3004e67c2SMario Six * (C) Copyright 2018 4004e67c2SMario Six * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc 5004e67c2SMario Six */ 6004e67c2SMario Six 7004e67c2SMario Six #include <common.h> 8004e67c2SMario Six #include <dm.h> 9004e67c2SMario Six #include <dm/test.h> 10004e67c2SMario Six #include <misc.h> 11004e67c2SMario Six #include <test/ut.h> 12004e67c2SMario Six 13004e67c2SMario Six static int dm_test_misc(struct unit_test_state *uts) 14004e67c2SMario Six { 15004e67c2SMario Six struct udevice *dev; 16004e67c2SMario Six u8 buf[16]; 17004e67c2SMario Six int id; 18004e67c2SMario Six ulong last_ioctl; 19004e67c2SMario Six bool enabled; 20004e67c2SMario Six 21004e67c2SMario Six ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "misc-test", &dev)); 22004e67c2SMario Six 23004e67c2SMario Six /* Read / write tests */ 24*8729b1aeSSimon Glass ut_asserteq(4, misc_write(dev, 0, "TEST", 4)); 25*8729b1aeSSimon Glass ut_asserteq(5, misc_write(dev, 4, "WRITE", 5)); 26*8729b1aeSSimon Glass ut_asserteq(9, misc_read(dev, 0, buf, 9)); 27004e67c2SMario Six 28004e67c2SMario Six ut_assertok(memcmp(buf, "TESTWRITE", 9)); 29004e67c2SMario Six 30004e67c2SMario Six /* Call tests */ 31004e67c2SMario Six 32004e67c2SMario Six id = 0; 33004e67c2SMario Six ut_assertok(misc_call(dev, 0, &id, 4, buf, 16)); 34004e67c2SMario Six ut_assertok(memcmp(buf, "Zero", 4)); 35004e67c2SMario Six 36004e67c2SMario Six id = 2; 37004e67c2SMario Six ut_assertok(misc_call(dev, 0, &id, 4, buf, 16)); 38004e67c2SMario Six ut_assertok(memcmp(buf, "Two", 3)); 39004e67c2SMario Six 40004e67c2SMario Six ut_assertok(misc_call(dev, 1, &id, 4, buf, 16)); 41004e67c2SMario Six ut_assertok(memcmp(buf, "Forty-two", 9)); 42004e67c2SMario Six 43004e67c2SMario Six id = 1; 44004e67c2SMario Six ut_assertok(misc_call(dev, 1, &id, 4, buf, 16)); 45004e67c2SMario Six ut_assertok(memcmp(buf, "Forty-one", 9)); 46004e67c2SMario Six 47004e67c2SMario Six /* IOCTL tests */ 48004e67c2SMario Six 49004e67c2SMario Six ut_assertok(misc_ioctl(dev, 6, NULL)); 50004e67c2SMario Six /* Read back last issued ioctl */ 51004e67c2SMario Six ut_assertok(misc_call(dev, 2, NULL, 0, &last_ioctl, 52004e67c2SMario Six sizeof(last_ioctl))); 53004e67c2SMario Six ut_asserteq(6, last_ioctl) 54004e67c2SMario Six 55004e67c2SMario Six ut_assertok(misc_ioctl(dev, 23, NULL)); 56004e67c2SMario Six /* Read back last issued ioctl */ 57004e67c2SMario Six ut_assertok(misc_call(dev, 2, NULL, 0, &last_ioctl, 58004e67c2SMario Six sizeof(last_ioctl))); 59004e67c2SMario Six ut_asserteq(23, last_ioctl) 60004e67c2SMario Six 61004e67c2SMario Six /* Enable / disable tests */ 62004e67c2SMario Six 63004e67c2SMario Six /* Read back enable/disable status */ 64004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 65004e67c2SMario Six sizeof(enabled))); 66004e67c2SMario Six ut_asserteq(true, enabled); 67004e67c2SMario Six 68004e67c2SMario Six ut_assertok(misc_set_enabled(dev, false)); 69004e67c2SMario Six /* Read back enable/disable status */ 70004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 71004e67c2SMario Six sizeof(enabled))); 72004e67c2SMario Six ut_asserteq(false, enabled); 73004e67c2SMario Six 74004e67c2SMario Six ut_assertok(misc_set_enabled(dev, true)); 75004e67c2SMario Six /* Read back enable/disable status */ 76004e67c2SMario Six ut_assertok(misc_call(dev, 3, NULL, 0, &enabled, 77004e67c2SMario Six sizeof(enabled))); 78004e67c2SMario Six ut_asserteq(true, enabled); 79004e67c2SMario Six 80004e67c2SMario Six return 0; 81004e67c2SMario Six } 82004e67c2SMario Six 83004e67c2SMario Six DM_TEST(dm_test_misc, DM_TESTF_SCAN_FDT); 84