diff options
| author | yiancar <yiangosyiangou@cytanet.com.cy> | 2019-05-16 05:09:36 +0100 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-05-15 21:09:36 -0700 |
| commit | acd3e79add2d47ab664b831936e5b6e71d3b8e15 (patch) | |
| tree | 7fede0ba898a56246cbd02d72378d84c03974f8d /drivers | |
| parent | 8680c50d07604836b0fc7c3f97bd77c7830ea083 (diff) | |
| download | qmk_firmware-acd3e79add2d47ab664b831936e5b6e71d3b8e15.tar.gz qmk_firmware-acd3e79add2d47ab664b831936e5b6e71d3b8e15.zip | |
NK65 Addition (#5865)
* Nk65 initial commit
* Minor fix for compatibility
* Make everything pretty
* Update keyboards/nk65/config.h
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/nk65/readme.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Chmod Dummy
* Update getting_started_introduction.md
* Revert "Update getting_started_introduction.md"
This reverts commit daf446acf7ae4ae00488b389ce04f2cfca708d44.
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/issi/is31fl3733.c | 38 | ||||
| -rw-r--r-- | drivers/issi/is31fl3733.h | 6 |
2 files changed, 22 insertions, 22 deletions
diff --git a/drivers/issi/is31fl3733.c b/drivers/issi/is31fl3733.c index c18ed7ca3..aa247f4e8 100644 --- a/drivers/issi/is31fl3733.c +++ b/drivers/issi/is31fl3733.c | |||
| @@ -75,10 +75,10 @@ uint8_t g_twi_transfer_buffer[20]; | |||
| 75 | // buffers and the transfers in IS31FL3733_write_pwm_buffer() but it's | 75 | // buffers and the transfers in IS31FL3733_write_pwm_buffer() but it's |
| 76 | // probably not worth the extra complexity. | 76 | // probably not worth the extra complexity. |
| 77 | uint8_t g_pwm_buffer[DRIVER_COUNT][192]; | 77 | uint8_t g_pwm_buffer[DRIVER_COUNT][192]; |
| 78 | bool g_pwm_buffer_update_required = false; | 78 | bool g_pwm_buffer_update_required[DRIVER_COUNT] = { false }; |
| 79 | 79 | ||
| 80 | uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 }, { 0 } }; | 80 | uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 }, { 0 } }; |
| 81 | bool g_led_control_registers_update_required = false; | 81 | bool g_led_control_registers_update_required[DRIVER_COUNT] = { false }; |
| 82 | 82 | ||
| 83 | void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ) | 83 | void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ) |
| 84 | { | 84 | { |
| @@ -123,12 +123,13 @@ void IS31FL3733_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer ) | |||
| 123 | } | 123 | } |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | void IS31FL3733_init( uint8_t addr ) | 126 | void IS31FL3733_init( uint8_t addr, uint8_t sync) |
| 127 | { | 127 | { |
| 128 | // In order to avoid the LEDs being driven with garbage data | 128 | // In order to avoid the LEDs being driven with garbage data |
| 129 | // in the LED driver's PWM registers, shutdown is enabled last. | 129 | // in the LED driver's PWM registers, shutdown is enabled last. |
| 130 | // Set up the mode and other settings, clear the PWM registers, | 130 | // Set up the mode and other settings, clear the PWM registers, |
| 131 | // then disable software shutdown. | 131 | // then disable software shutdown. |
| 132 | // Sync is passed so set it according to the datasheet. | ||
| 132 | 133 | ||
| 133 | // Unlock the command register. | 134 | // Unlock the command register. |
| 134 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); | 135 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); |
| @@ -161,7 +162,7 @@ void IS31FL3733_init( uint8_t addr ) | |||
| 161 | // Set global current to maximum. | 162 | // Set global current to maximum. |
| 162 | IS31FL3733_write_register( addr, ISSI_REG_GLOBALCURRENT, 0xFF ); | 163 | IS31FL3733_write_register( addr, ISSI_REG_GLOBALCURRENT, 0xFF ); |
| 163 | // Disable software shutdown. | 164 | // Disable software shutdown. |
| 164 | IS31FL3733_write_register( addr, ISSI_REG_CONFIGURATION, 0x01 ); | 165 | IS31FL3733_write_register( addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01 ); |
| 165 | 166 | ||
| 166 | // Wait 10ms to ensure the device has woken up. | 167 | // Wait 10ms to ensure the device has woken up. |
| 167 | #ifdef __AVR__ | 168 | #ifdef __AVR__ |
| @@ -179,7 +180,7 @@ void IS31FL3733_set_color( int index, uint8_t red, uint8_t green, uint8_t blue ) | |||
| 179 | g_pwm_buffer[led.driver][led.r] = red; | 180 | g_pwm_buffer[led.driver][led.r] = red; |
| 180 | g_pwm_buffer[led.driver][led.g] = green; | 181 | g_pwm_buffer[led.driver][led.g] = green; |
| 181 | g_pwm_buffer[led.driver][led.b] = blue; | 182 | g_pwm_buffer[led.driver][led.b] = blue; |
| 182 | g_pwm_buffer_update_required = true; | 183 | g_pwm_buffer_update_required[led.driver] = true; |
| 183 | } | 184 | } |
| 184 | } | 185 | } |
| 185 | 186 | ||
| @@ -218,35 +219,34 @@ void IS31FL3733_set_led_control_register( uint8_t index, bool red, bool green, b | |||
| 218 | g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); | 219 | g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); |
| 219 | } | 220 | } |
| 220 | 221 | ||
| 221 | g_led_control_registers_update_required = true; | 222 | g_led_control_registers_update_required[led.driver] = true; |
| 222 | 223 | ||
| 223 | } | 224 | } |
| 224 | 225 | ||
| 225 | void IS31FL3733_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ) | 226 | void IS31FL3733_update_pwm_buffers( uint8_t addr, uint8_t index ) |
| 226 | { | 227 | { |
| 227 | if ( g_pwm_buffer_update_required ) | 228 | if ( g_pwm_buffer_update_required[index] ) |
| 228 | { | 229 | { |
| 229 | // Firstly we need to unlock the command register and select PG1 | 230 | // Firstly we need to unlock the command register and select PG1 |
| 230 | IS31FL3733_write_register( addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); | 231 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); |
| 231 | IS31FL3733_write_register( addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM ); | 232 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM ); |
| 232 | 233 | ||
| 233 | IS31FL3733_write_pwm_buffer( addr1, g_pwm_buffer[0] ); | 234 | IS31FL3733_write_pwm_buffer( addr, g_pwm_buffer[index] ); |
| 234 | //IS31FL3733_write_pwm_buffer( addr2, g_pwm_buffer[1] ); | ||
| 235 | } | 235 | } |
| 236 | g_pwm_buffer_update_required = false; | 236 | g_pwm_buffer_update_required[index] = false; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | void IS31FL3733_update_led_control_registers( uint8_t addr1, uint8_t addr2 ) | 239 | void IS31FL3733_update_led_control_registers( uint8_t addr, uint8_t index ) |
| 240 | { | 240 | { |
| 241 | if ( g_led_control_registers_update_required ) | 241 | if ( g_led_control_registers_update_required[index] ) |
| 242 | { | 242 | { |
| 243 | // Firstly we need to unlock the command register and select PG0 | 243 | // Firstly we need to unlock the command register and select PG0 |
| 244 | IS31FL3733_write_register( addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); | 244 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 ); |
| 245 | IS31FL3733_write_register( addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL ); | 245 | IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL ); |
| 246 | for ( int i=0; i<24; i++ ) | 246 | for ( int i=0; i<24; i++ ) |
| 247 | { | 247 | { |
| 248 | IS31FL3733_write_register(addr1, i, g_led_control_registers[0][i] ); | 248 | IS31FL3733_write_register(addr, i, g_led_control_registers[index][i] ); |
| 249 | //IS31FL3733_write_register(addr2, i, g_led_control_registers[1][i] ); | ||
| 250 | } | 249 | } |
| 251 | } | 250 | } |
| 251 | g_led_control_registers_update_required[index] = false; | ||
| 252 | } | 252 | } |
diff --git a/drivers/issi/is31fl3733.h b/drivers/issi/is31fl3733.h index 3d23b188a..e117b2546 100644 --- a/drivers/issi/is31fl3733.h +++ b/drivers/issi/is31fl3733.h | |||
| @@ -32,7 +32,7 @@ typedef struct is31_led { | |||
| 32 | 32 | ||
| 33 | extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; | 33 | extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; |
| 34 | 34 | ||
| 35 | void IS31FL3733_init( uint8_t addr ); | 35 | void IS31FL3733_init( uint8_t addr, uint8_t sync ); |
| 36 | void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ); | 36 | void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ); |
| 37 | void IS31FL3733_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer ); | 37 | void IS31FL3733_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer ); |
| 38 | 38 | ||
| @@ -45,8 +45,8 @@ void IS31FL3733_set_led_control_register( uint8_t index, bool red, bool green, b | |||
| 45 | // (eg. from a timer interrupt). | 45 | // (eg. from a timer interrupt). |
| 46 | // Call this while idle (in between matrix scans). | 46 | // Call this while idle (in between matrix scans). |
| 47 | // If the buffer is dirty, it will update the driver with the buffer. | 47 | // If the buffer is dirty, it will update the driver with the buffer. |
| 48 | void IS31FL3733_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ); | 48 | void IS31FL3733_update_pwm_buffers( uint8_t addr, uint8_t index ); |
| 49 | void IS31FL3733_update_led_control_registers( uint8_t addr1, uint8_t addr2 ); | 49 | void IS31FL3733_update_led_control_registers( uint8_t addr, uint8_t index ); |
| 50 | 50 | ||
| 51 | #define A_1 0x00 | 51 | #define A_1 0x00 |
| 52 | #define A_2 0x01 | 52 | #define A_2 0x01 |
