logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

backlight_driver_common.c (1504B)


  1. #include "backlight.h"
  2. #include "backlight_driver_common.h"
  3. #include "gpio.h"
  4. #include "util.h"
  5. #if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
  6. # error "Backlight pin/pins not defined. Please configure."
  7. #endif
  8. #if defined(BACKLIGHT_PINS)
  9. static const pin_t backlight_pins[] = BACKLIGHT_PINS;
  10. # ifndef BACKLIGHT_LED_COUNT
  11. # define BACKLIGHT_LED_COUNT ARRAY_SIZE(backlight_pins)
  12. # endif
  13. # define FOR_EACH_LED(x) \
  14. for (uint8_t i = 0; i < BACKLIGHT_LED_COUNT; i++) { \
  15. pin_t backlight_pin = backlight_pins[i]; \
  16. { x } \
  17. }
  18. #else
  19. // we support only one backlight pin
  20. static const pin_t backlight_pin = BACKLIGHT_PIN;
  21. # define FOR_EACH_LED(x) x
  22. #endif
  23. static inline void backlight_on(pin_t backlight_pin) {
  24. #if BACKLIGHT_ON_STATE == 0
  25. gpio_write_pin_low(backlight_pin);
  26. #else
  27. gpio_write_pin_high(backlight_pin);
  28. #endif
  29. }
  30. static inline void backlight_off(pin_t backlight_pin) {
  31. #if BACKLIGHT_ON_STATE == 0
  32. gpio_write_pin_high(backlight_pin);
  33. #else
  34. gpio_write_pin_low(backlight_pin);
  35. #endif
  36. }
  37. void backlight_pins_init(void) {
  38. // Setup backlight pin as output and output to off state.
  39. FOR_EACH_LED(gpio_set_pin_output(backlight_pin); backlight_off(backlight_pin);)
  40. }
  41. void backlight_pins_on(void) {
  42. FOR_EACH_LED(backlight_on(backlight_pin);)
  43. }
  44. void backlight_pins_off(void) {
  45. FOR_EACH_LED(backlight_off(backlight_pin);)
  46. }