suspend.c 1.6 KB

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