misc.c 2.0 KB

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