panel.c 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Test for panel uclass
  4. *
  5. * Copyright (c) 2018 Google, Inc
  6. * Written by Simon Glass <sjg@chromium.org>
  7. */
  8. #include <common.h>
  9. #include <backlight.h>
  10. #include <dm.h>
  11. #include <panel.h>
  12. #include <video.h>
  13. #include <asm/gpio.h>
  14. #include <asm/test.h>
  15. #include <dm/test.h>
  16. #include <power/regulator.h>
  17. #include <test/test.h>
  18. #include <test/ut.h>
  19. /* Basic test of the panel uclass */
  20. static int dm_test_panel(struct unit_test_state *uts)
  21. {
  22. struct udevice *dev, *pwm, *gpio, *reg;
  23. uint period_ns;
  24. uint duty_ns;
  25. bool enable;
  26. bool polarity;
  27. ut_assertok(uclass_first_device_err(UCLASS_PANEL, &dev));
  28. ut_assertok(uclass_first_device_err(UCLASS_PWM, &pwm));
  29. ut_assertok(uclass_get_device(UCLASS_GPIO, 1, &gpio));
  30. ut_assertok(regulator_get_by_platname("VDD_EMMC_1.8V", &reg));
  31. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  32. &enable, &polarity));
  33. ut_asserteq(false, enable);
  34. ut_asserteq(false, regulator_get_enable(reg));
  35. ut_assertok(panel_enable_backlight(dev));
  36. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  37. &enable, &polarity));
  38. ut_asserteq(1000, period_ns);
  39. ut_asserteq(170 * 1000 / 255, duty_ns);
  40. ut_asserteq(true, enable);
  41. ut_asserteq(false, polarity);
  42. ut_asserteq(1, sandbox_gpio_get_value(gpio, 1));
  43. ut_asserteq(true, regulator_get_enable(reg));
  44. ut_assertok(panel_set_backlight(dev, 40));
  45. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  46. &enable, &polarity));
  47. ut_asserteq(64 * 1000 / 255, duty_ns);
  48. ut_assertok(panel_set_backlight(dev, BACKLIGHT_MAX));
  49. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  50. &enable, &polarity));
  51. ut_asserteq(255 * 1000 / 255, duty_ns);
  52. ut_assertok(panel_set_backlight(dev, BACKLIGHT_MIN));
  53. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  54. &enable, &polarity));
  55. ut_asserteq(0 * 1000 / 255, duty_ns);
  56. ut_asserteq(1, sandbox_gpio_get_value(gpio, 1));
  57. ut_assertok(panel_set_backlight(dev, BACKLIGHT_DEFAULT));
  58. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  59. &enable, &polarity));
  60. ut_asserteq(true, enable);
  61. ut_asserteq(170 * 1000 / 255, duty_ns);
  62. ut_assertok(panel_set_backlight(dev, BACKLIGHT_OFF));
  63. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  64. &enable, &polarity));
  65. ut_asserteq(0 * 1000 / 255, duty_ns);
  66. ut_asserteq(0, sandbox_gpio_get_value(gpio, 1));
  67. ut_asserteq(false, regulator_get_enable(reg));
  68. return 0;
  69. }
  70. DM_TEST(dm_test_panel, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);