suspend.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "matrix.h"
  2. #include "i2c_master.h"
  3. #include "led_matrix.h"
  4. #include "suspend.h"
  5. /** \brief Suspend idle
  6. *
  7. * FIXME: needs doc
  8. */
  9. void suspend_idle(uint8_t time) { /* Note: Not used anywhere currently */ }
  10. /** \brief Run user level Power down
  11. *
  12. * FIXME: needs doc
  13. */
  14. __attribute__((weak)) void suspend_power_down_user(void) {}
  15. /** \brief Run keyboard level Power down
  16. *
  17. * FIXME: needs doc
  18. */
  19. __attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); }
  20. /** \brief Suspend power down
  21. *
  22. * FIXME: needs doc
  23. */
  24. void suspend_power_down(void) {
  25. #ifdef RGB_MATRIX_ENABLE
  26. I2C3733_Control_Set(0); // Disable LED driver
  27. #endif
  28. suspend_power_down_kb();
  29. }
  30. __attribute__((weak)) void matrix_power_up(void) {}
  31. __attribute__((weak)) void matrix_power_down(void) {}
  32. bool suspend_wakeup_condition(void) {
  33. matrix_power_up();
  34. matrix_scan();
  35. matrix_power_down();
  36. for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
  37. if (matrix_get_row(r)) return true;
  38. }
  39. return false;
  40. }
  41. /** \brief run user level code immediately after wakeup
  42. *
  43. * FIXME: needs doc
  44. */
  45. __attribute__((weak)) void suspend_wakeup_init_user(void) {}
  46. /** \brief run keyboard level code immediately after wakeup
  47. *
  48. * FIXME: needs doc
  49. */
  50. __attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); }
  51. /** \brief run immediately after wakeup
  52. *
  53. * FIXME: needs doc
  54. */
  55. void suspend_wakeup_init(void) {
  56. #ifdef RGB_MATRIX_ENABLE
  57. # ifdef USE_MASSDROP_CONFIGURATOR
  58. if (led_enabled) {
  59. I2C3733_Control_Set(1);
  60. }
  61. # else
  62. I2C3733_Control_Set(1);
  63. # endif
  64. #endif
  65. suspend_wakeup_init_kb();
  66. }