suspend.c 1.7 KB

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