logo

qmk_firmware

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

is31fl3236-mono.h (2412B)


  1. // Copyright 2024 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. #include "progmem.h"
  7. #include "util.h"
  8. #define IS31FL3236_REG_SHUTDOWN 0x00
  9. #define IS31FL3236_REG_PWM 0x01
  10. #define IS31FL3236_REG_UPDATE 0x25
  11. #define IS31FL3236_REG_LED_CONTROL 0x26
  12. #define IS31FL3236_REG_GLOBAL_CONTROL 0x4A
  13. #define IS31FL3236_REG_PWM_FREQUENCY 0x4B
  14. #define IS31FL3236_REG_RESET 0x4F
  15. #define IS31FL3236_I2C_ADDRESS_GND 0x3C
  16. #define IS31FL3236_I2C_ADDRESS_SCL 0x3D
  17. #define IS31FL3236_I2C_ADDRESS_SDA 0x3E
  18. #define IS31FL3236_I2C_ADDRESS_VCC 0x3F
  19. #if defined(LED_MATRIX_IS31FL3236)
  20. # define IS31FL3236_LED_COUNT LED_MATRIX_LED_COUNT
  21. #endif
  22. #if defined(IS31FL3236_I2C_ADDRESS_4)
  23. # define IS31FL3236_DRIVER_COUNT 4
  24. #elif defined(IS31FL3236_I2C_ADDRESS_3)
  25. # define IS31FL3236_DRIVER_COUNT 3
  26. #elif defined(IS31FL3236_I2C_ADDRESS_2)
  27. # define IS31FL3236_DRIVER_COUNT 2
  28. #elif defined(IS31FL3236_I2C_ADDRESS_1)
  29. # define IS31FL3236_DRIVER_COUNT 1
  30. #endif
  31. typedef struct is31fl3236_led_t {
  32. uint8_t driver : 2;
  33. uint8_t v;
  34. } PACKED is31fl3236_led_t;
  35. extern const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT];
  36. void is31fl3236_init_drivers(void);
  37. void is31fl3236_init(uint8_t index);
  38. void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data);
  39. void is31fl3236_set_value(int index, uint8_t value);
  40. void is31fl3236_set_value_all(uint8_t value);
  41. void is31fl3236_set_led_control_register(uint8_t index, bool value);
  42. void is31fl3236_update_pwm_buffers(uint8_t index);
  43. void is31fl3236_update_led_control_registers(uint8_t index);
  44. void is31fl3236_flush(void);
  45. #define IS31FL3236_PWM_FREQUENCY_3K_HZ 0b0
  46. #define IS31FL3236_PWM_FREQUENCY_22K_HZ 0b1
  47. #define OUT1 0x00
  48. #define OUT2 0x01
  49. #define OUT3 0x02
  50. #define OUT4 0x03
  51. #define OUT5 0x04
  52. #define OUT6 0x05
  53. #define OUT7 0x06
  54. #define OUT8 0x07
  55. #define OUT9 0x08
  56. #define OUT10 0x09
  57. #define OUT11 0x0A
  58. #define OUT12 0x0B
  59. #define OUT13 0x0C
  60. #define OUT14 0x0D
  61. #define OUT15 0x0E
  62. #define OUT16 0x0F
  63. #define OUT17 0x10
  64. #define OUT18 0x11
  65. #define OUT19 0x12
  66. #define OUT20 0x13
  67. #define OUT21 0x14
  68. #define OUT22 0x15
  69. #define OUT23 0x16
  70. #define OUT24 0x17
  71. #define OUT25 0x18
  72. #define OUT26 0x19
  73. #define OUT27 0x1A
  74. #define OUT28 0x1B
  75. #define OUT29 0x1C
  76. #define OUT30 0x1D
  77. #define OUT31 0x1E
  78. #define OUT32 0x1F
  79. #define OUT33 0x20
  80. #define OUT34 0x21
  81. #define OUT35 0x22
  82. #define OUT36 0x23