panel.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 <test/ut.h>
  17. #include <power/regulator.h>
  18. /* Basic test of the panel uclass */
  19. static int dm_test_panel(struct unit_test_state *uts)
  20. {
  21. struct udevice *dev, *pwm, *gpio, *reg;
  22. uint period_ns;
  23. uint duty_ns;
  24. bool enable;
  25. bool polarity;
  26. ut_assertok(uclass_first_device_err(UCLASS_PANEL, &dev));
  27. ut_assertok(uclass_first_device_err(UCLASS_PWM, &pwm));
  28. ut_assertok(uclass_get_device(UCLASS_GPIO, 1, &gpio));
  29. ut_assertok(regulator_get_by_platname("VDD_EMMC_1.8V", &reg));
  30. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  31. &enable, &polarity));
  32. ut_asserteq(false, enable);
  33. ut_asserteq(false, regulator_get_enable(reg));
  34. ut_assertok(panel_enable_backlight(dev));
  35. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  36. &enable, &polarity));
  37. ut_asserteq(1000, period_ns);
  38. ut_asserteq(170 * 1000 / 256, duty_ns);
  39. ut_asserteq(true, enable);
  40. ut_asserteq(false, polarity);
  41. ut_asserteq(1, sandbox_gpio_get_value(gpio, 1));
  42. ut_asserteq(true, regulator_get_enable(reg));
  43. ut_assertok(panel_set_backlight(dev, 40));
  44. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  45. &enable, &polarity));
  46. ut_asserteq(64 * 1000 / 256, duty_ns);
  47. ut_assertok(panel_set_backlight(dev, BACKLIGHT_MAX));
  48. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  49. &enable, &polarity));
  50. ut_asserteq(255 * 1000 / 256, duty_ns);
  51. ut_assertok(panel_set_backlight(dev, BACKLIGHT_MIN));
  52. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  53. &enable, &polarity));
  54. ut_asserteq(0 * 1000 / 256, duty_ns);
  55. ut_asserteq(1, sandbox_gpio_get_value(gpio, 1));
  56. ut_assertok(panel_set_backlight(dev, BACKLIGHT_DEFAULT));
  57. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  58. &enable, &polarity));
  59. ut_asserteq(true, enable);
  60. ut_asserteq(170 * 1000 / 256, duty_ns);
  61. ut_assertok(panel_set_backlight(dev, BACKLIGHT_OFF));
  62. ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
  63. &enable, &polarity));
  64. ut_asserteq(0 * 1000 / 256, duty_ns);
  65. ut_asserteq(0, sandbox_gpio_get_value(gpio, 1));
  66. ut_asserteq(false, regulator_get_enable(reg));
  67. return 0;
  68. }
  69. DM_TEST(dm_test_panel, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);