suspend.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. I2C3733_Control_Set(0); //Disable LED driver
  34. suspend_power_down_kb();
  35. }
  36. __attribute__ ((weak)) void matrix_power_up(void) {}
  37. __attribute__ ((weak)) void matrix_power_down(void) {}
  38. bool suspend_wakeup_condition(void) {
  39. matrix_power_up();
  40. matrix_scan();
  41. matrix_power_down();
  42. for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
  43. if (matrix_get_row(r)) return true;
  44. }
  45. return false;
  46. }
  47. /** \brief run user level code immediately after wakeup
  48. *
  49. * FIXME: needs doc
  50. */
  51. __attribute__ ((weak))
  52. void suspend_wakeup_init_user(void) {
  53. }
  54. /** \brief run keyboard level code immediately after wakeup
  55. *
  56. * FIXME: needs doc
  57. */
  58. __attribute__ ((weak))
  59. void suspend_wakeup_init_kb(void) {
  60. suspend_wakeup_init_user();
  61. }
  62. /** \brief run immediately after wakeup
  63. *
  64. * FIXME: needs doc
  65. */
  66. void suspend_wakeup_init(void) {
  67. /* If LEDs are set to enabled, enable the hardware */
  68. if (led_enabled) {
  69. I2C3733_Control_Set(1);
  70. }
  71. suspend_wakeup_init_kb();
  72. }