You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.1 KiB

  1. // Copyright 2022 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "suspend.h"
  4. #include "matrix.h"
  5. // TODO: Move to more correct location
  6. __attribute__((weak)) void matrix_power_up(void) {}
  7. __attribute__((weak)) void matrix_power_down(void) {}
  8. /** \brief Run user level Power down
  9. *
  10. * FIXME: needs doc
  11. */
  12. __attribute__((weak)) void suspend_power_down_user(void) {}
  13. /** \brief Run keyboard level Power down
  14. *
  15. * FIXME: needs doc
  16. */
  17. __attribute__((weak)) void suspend_power_down_kb(void) {
  18. suspend_power_down_user();
  19. }
  20. /** \brief run user level code immediately after wakeup
  21. *
  22. * FIXME: needs doc
  23. */
  24. __attribute__((weak)) void suspend_wakeup_init_user(void) {}
  25. /** \brief run keyboard level code immediately after wakeup
  26. *
  27. * FIXME: needs doc
  28. */
  29. __attribute__((weak)) void suspend_wakeup_init_kb(void) {
  30. suspend_wakeup_init_user();
  31. }
  32. /** \brief suspend wakeup condition
  33. *
  34. * FIXME: needs doc
  35. */
  36. bool suspend_wakeup_condition(void) {
  37. matrix_power_up();
  38. matrix_scan();
  39. matrix_power_down();
  40. for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
  41. if (matrix_get_row(r)) return true;
  42. }
  43. return false;
  44. }