aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authoryiancar <yiangosyiangou@cytanet.com.cy>2019-05-16 05:09:36 +0100
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-05-15 21:09:36 -0700
commitacd3e79add2d47ab664b831936e5b6e71d3b8e15 (patch)
tree7fede0ba898a56246cbd02d72378d84c03974f8d /drivers
parent8680c50d07604836b0fc7c3f97bd77c7830ea083 (diff)
downloadqmk_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.c38
-rw-r--r--drivers/issi/is31fl3733.h6
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.
77uint8_t g_pwm_buffer[DRIVER_COUNT][192]; 77uint8_t g_pwm_buffer[DRIVER_COUNT][192];
78bool g_pwm_buffer_update_required = false; 78bool g_pwm_buffer_update_required[DRIVER_COUNT] = { false };
79 79
80uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 }, { 0 } }; 80uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 }, { 0 } };
81bool g_led_control_registers_update_required = false; 81bool g_led_control_registers_update_required[DRIVER_COUNT] = { false };
82 82
83void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ) 83void 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
126void IS31FL3733_init( uint8_t addr ) 126void 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
225void IS31FL3733_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ) 226void 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
239void IS31FL3733_update_led_control_registers( uint8_t addr1, uint8_t addr2 ) 239void 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
33extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; 33extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
34 34
35void IS31FL3733_init( uint8_t addr ); 35void IS31FL3733_init( uint8_t addr, uint8_t sync );
36void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data ); 36void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data );
37void IS31FL3733_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer ); 37void 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.
48void IS31FL3733_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ); 48void IS31FL3733_update_pwm_buffers( uint8_t addr, uint8_t index );
49void IS31FL3733_update_led_control_registers( uint8_t addr1, uint8_t addr2 ); 49void 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