diff options
| author | Ryan <fauxpark@gmail.com> | 2023-12-06 14:52:18 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-05 19:52:18 -0800 |
| commit | b6fbed3dc345c722b6d667bc3421d3c82e09896b (patch) | |
| tree | cfb27d79da0e333e7834a5190d58af9c203a54c6 /drivers | |
| parent | 8b022cefc54a1e55fd7f6688ac14b7d6f407f178 (diff) | |
LED drivers: change "TWI" to "I2C" (#22617)
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/led/issi/is31fl3218-simple.c | 19 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3218.c | 19 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3731-simple.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3731.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3733-simple.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3733.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3736-simple.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3736.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3737-simple.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3737.c | 21 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3741-simple.c | 27 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3741.c | 27 | ||||
| -rw-r--r-- | drivers/led/issi/is31flcommon.c | 19 | ||||
| -rw-r--r-- | drivers/led/snled27351-simple.c | 21 | ||||
| -rw-r--r-- | drivers/led/snled27351.c | 19 |
15 files changed, 152 insertions, 167 deletions
diff --git a/drivers/led/issi/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c index ce28c51d18..e58b7d8bc0 100644 --- a/drivers/led/issi/is31fl3218-simple.c +++ b/drivers/led/issi/is31fl3218-simple.c | |||
| @@ -28,8 +28,7 @@ | |||
| 28 | # define IS31FL3218_I2C_PERSISTENCE 0 | 28 | # define IS31FL3218_I2C_PERSISTENCE 0 |
| 29 | #endif | 29 | #endif |
| 30 | 30 | ||
| 31 | // Reusable buffer for transfers | 31 | uint8_t i2c_transfer_buffer[20]; |
| 32 | uint8_t g_twi_transfer_buffer[20]; | ||
| 33 | 32 | ||
| 34 | // IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. | 33 | // IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. |
| 35 | uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; | 34 | uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; |
| @@ -39,27 +38,27 @@ uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0}; | |||
| 39 | bool g_led_control_registers_update_required = false; | 38 | bool g_led_control_registers_update_required = false; |
| 40 | 39 | ||
| 41 | void is31fl3218_write_register(uint8_t reg, uint8_t data) { | 40 | void is31fl3218_write_register(uint8_t reg, uint8_t data) { |
| 42 | g_twi_transfer_buffer[0] = reg; | 41 | i2c_transfer_buffer[0] = reg; |
| 43 | g_twi_transfer_buffer[1] = data; | 42 | i2c_transfer_buffer[1] = data; |
| 44 | #if IS31FL3218_I2C_PERSISTENCE > 0 | 43 | #if IS31FL3218_I2C_PERSISTENCE > 0 |
| 45 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { | 44 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { |
| 46 | if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; | 45 | if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; |
| 47 | } | 46 | } |
| 48 | #else | 47 | #else |
| 49 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); | 48 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); |
| 50 | #endif | 49 | #endif |
| 51 | } | 50 | } |
| 52 | 51 | ||
| 53 | void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { | 52 | void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { |
| 54 | g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM; | 53 | i2c_transfer_buffer[0] = IS31FL3218_REG_PWM; |
| 55 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18); | 54 | memcpy(i2c_transfer_buffer + 1, pwm_buffer, 18); |
| 56 | 55 | ||
| 57 | #if IS31FL3218_I2C_PERSISTENCE > 0 | 56 | #if IS31FL3218_I2C_PERSISTENCE > 0 |
| 58 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { | 57 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { |
| 59 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); | 58 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); |
| 60 | } | 59 | } |
| 61 | #else | 60 | #else |
| 62 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); | 61 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); |
| 63 | #endif | 62 | #endif |
| 64 | } | 63 | } |
| 65 | 64 | ||
diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index 39db09d518..9bfdc9c44d 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c | |||
| @@ -28,8 +28,7 @@ | |||
| 28 | # define IS31FL3218_I2C_PERSISTENCE 0 | 28 | # define IS31FL3218_I2C_PERSISTENCE 0 |
| 29 | #endif | 29 | #endif |
| 30 | 30 | ||
| 31 | // Reusable buffer for transfers | 31 | uint8_t i2c_transfer_buffer[20]; |
| 32 | uint8_t g_twi_transfer_buffer[20]; | ||
| 33 | 32 | ||
| 34 | // IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. | 33 | // IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. |
| 35 | uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; | 34 | uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; |
| @@ -39,27 +38,27 @@ uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0}; | |||
| 39 | bool g_led_control_registers_update_required = false; | 38 | bool g_led_control_registers_update_required = false; |
| 40 | 39 | ||
| 41 | void is31fl3218_write_register(uint8_t reg, uint8_t data) { | 40 | void is31fl3218_write_register(uint8_t reg, uint8_t data) { |
| 42 | g_twi_transfer_buffer[0] = reg; | 41 | i2c_transfer_buffer[0] = reg; |
| 43 | g_twi_transfer_buffer[1] = data; | 42 | i2c_transfer_buffer[1] = data; |
| 44 | #if IS31FL3218_I2C_PERSISTENCE > 0 | 43 | #if IS31FL3218_I2C_PERSISTENCE > 0 |
| 45 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { | 44 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { |
| 46 | if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; | 45 | if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; |
| 47 | } | 46 | } |
| 48 | #else | 47 | #else |
| 49 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); | 48 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); |
| 50 | #endif | 49 | #endif |
| 51 | } | 50 | } |
| 52 | 51 | ||
| 53 | void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { | 52 | void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { |
| 54 | g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM; | 53 | i2c_transfer_buffer[0] = IS31FL3218_REG_PWM; |
| 55 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18); | 54 | memcpy(i2c_transfer_buffer + 1, pwm_buffer, 18); |
| 56 | 55 | ||
| 57 | #if IS31FL3218_I2C_PERSISTENCE > 0 | 56 | #if IS31FL3218_I2C_PERSISTENCE > 0 |
| 58 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { | 57 | for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { |
| 59 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); | 58 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); |
| 60 | } | 59 | } |
| 61 | #else | 60 | #else |
| 62 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); | 61 | i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); |
| 63 | #endif | 62 | #endif |
| 64 | } | 63 | } |
| 65 | 64 | ||
diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c index 563d377633..14743717d4 100644 --- a/drivers/led/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c | |||
| @@ -33,8 +33,7 @@ | |||
| 33 | # define IS31FL3731_I2C_PERSISTENCE 0 | 33 | # define IS31FL3731_I2C_PERSISTENCE 0 |
| 34 | #endif | 34 | #endif |
| 35 | 35 | ||
| 36 | // Transfer buffer for TWITransmitData() | 36 | uint8_t i2c_transfer_buffer[20]; |
| 37 | uint8_t g_twi_transfer_buffer[20]; | ||
| 38 | 37 | ||
| 39 | // These buffers match the IS31FL3731 PWM registers 0x24-0xB3. | 38 | // These buffers match the IS31FL3731 PWM registers 0x24-0xB3. |
| 40 | // Storing them like this is optimal for I2C transfers to the registers. | 39 | // Storing them like this is optimal for I2C transfers to the registers. |
| @@ -48,17 +47,17 @@ uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_ | |||
| 48 | bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; | 47 | bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; |
| 49 | 48 | ||
| 50 | void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 49 | void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 51 | g_twi_transfer_buffer[0] = reg; | 50 | i2c_transfer_buffer[0] = reg; |
| 52 | g_twi_transfer_buffer[1] = data; | 51 | i2c_transfer_buffer[1] = data; |
| 53 | 52 | ||
| 54 | #if IS31FL3731_I2C_PERSISTENCE > 0 | 53 | #if IS31FL3731_I2C_PERSISTENCE > 0 |
| 55 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { | 54 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { |
| 56 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) { | 55 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) { |
| 57 | break; | 56 | break; |
| 58 | } | 57 | } |
| 59 | } | 58 | } |
| 60 | #else | 59 | #else |
| 61 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); | 60 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); |
| 62 | #endif | 61 | #endif |
| 63 | } | 62 | } |
| 64 | 63 | ||
| @@ -70,23 +69,23 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 70 | // assumes page 0 is already selected | 69 | // assumes page 0 is already selected |
| 71 | 70 | ||
| 72 | // transmit PWM registers in 9 transfers of 16 bytes | 71 | // transmit PWM registers in 9 transfers of 16 bytes |
| 73 | // g_twi_transfer_buffer[] is 20 bytes | 72 | // i2c_transfer_buffer[] is 20 bytes |
| 74 | 73 | ||
| 75 | // iterate over the pwm_buffer contents at 16 byte intervals | 74 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 76 | for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { | 75 | for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { |
| 77 | // set the first register, e.g. 0x24, 0x34, 0x44, etc. | 76 | // set the first register, e.g. 0x24, 0x34, 0x44, etc. |
| 78 | g_twi_transfer_buffer[0] = 0x24 + i; | 77 | i2c_transfer_buffer[0] = 0x24 + i; |
| 79 | // copy the data from i to i+15 | 78 | // copy the data from i to i+15 |
| 80 | // device will auto-increment register for data after the first byte | 79 | // device will auto-increment register for data after the first byte |
| 81 | // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer | 80 | // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer |
| 82 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 81 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 83 | 82 | ||
| 84 | #if IS31FL3731_I2C_PERSISTENCE > 0 | 83 | #if IS31FL3731_I2C_PERSISTENCE > 0 |
| 85 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { | 84 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { |
| 86 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; | 85 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; |
| 87 | } | 86 | } |
| 88 | #else | 87 | #else |
| 89 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); | 88 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); |
| 90 | #endif | 89 | #endif |
| 91 | } | 90 | } |
| 92 | } | 91 | } |
diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 19176458b7..9a7d0b5eca 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c | |||
| @@ -32,8 +32,7 @@ | |||
| 32 | # define IS31FL3731_I2C_PERSISTENCE 0 | 32 | # define IS31FL3731_I2C_PERSISTENCE 0 |
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
| 35 | // Transfer buffer for TWITransmitData() | 35 | uint8_t i2c_transfer_buffer[20]; |
| 36 | uint8_t g_twi_transfer_buffer[20]; | ||
| 37 | 36 | ||
| 38 | // These buffers match the IS31FL3731 PWM registers 0x24-0xB3. | 37 | // These buffers match the IS31FL3731 PWM registers 0x24-0xB3. |
| 39 | // Storing them like this is optimal for I2C transfers to the registers. | 38 | // Storing them like this is optimal for I2C transfers to the registers. |
| @@ -47,15 +46,15 @@ uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_ | |||
| 47 | bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; | 46 | bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; |
| 48 | 47 | ||
| 49 | void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 48 | void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 50 | g_twi_transfer_buffer[0] = reg; | 49 | i2c_transfer_buffer[0] = reg; |
| 51 | g_twi_transfer_buffer[1] = data; | 50 | i2c_transfer_buffer[1] = data; |
| 52 | 51 | ||
| 53 | #if IS31FL3731_I2C_PERSISTENCE > 0 | 52 | #if IS31FL3731_I2C_PERSISTENCE > 0 |
| 54 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { | 53 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { |
| 55 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break; | 54 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break; |
| 56 | } | 55 | } |
| 57 | #else | 56 | #else |
| 58 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); | 57 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); |
| 59 | #endif | 58 | #endif |
| 60 | } | 59 | } |
| 61 | 60 | ||
| @@ -67,23 +66,23 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 67 | // assumes page 0 is already selected | 66 | // assumes page 0 is already selected |
| 68 | 67 | ||
| 69 | // transmit PWM registers in 9 transfers of 16 bytes | 68 | // transmit PWM registers in 9 transfers of 16 bytes |
| 70 | // g_twi_transfer_buffer[] is 20 bytes | 69 | // i2c_transfer_buffer[] is 20 bytes |
| 71 | 70 | ||
| 72 | // iterate over the pwm_buffer contents at 16 byte intervals | 71 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 73 | for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { | 72 | for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { |
| 74 | // set the first register, e.g. 0x24, 0x34, 0x44, etc. | 73 | // set the first register, e.g. 0x24, 0x34, 0x44, etc. |
| 75 | g_twi_transfer_buffer[0] = 0x24 + i; | 74 | i2c_transfer_buffer[0] = 0x24 + i; |
| 76 | // copy the data from i to i+15 | 75 | // copy the data from i to i+15 |
| 77 | // device will auto-increment register for data after the first byte | 76 | // device will auto-increment register for data after the first byte |
| 78 | // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer | 77 | // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer |
| 79 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 78 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 80 | 79 | ||
| 81 | #if IS31FL3731_I2C_PERSISTENCE > 0 | 80 | #if IS31FL3731_I2C_PERSISTENCE > 0 |
| 82 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { | 81 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { |
| 83 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; | 82 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; |
| 84 | } | 83 | } |
| 85 | #else | 84 | #else |
| 86 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); | 85 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); |
| 87 | #endif | 86 | #endif |
| 88 | } | 87 | } |
| 89 | } | 88 | } |
diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c index 8bdea3827f..805905ebc2 100644 --- a/drivers/led/issi/is31fl3733-simple.c +++ b/drivers/led/issi/is31fl3733-simple.c | |||
| @@ -63,8 +63,7 @@ | |||
| 63 | # define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE | 63 | # define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE |
| 64 | #endif | 64 | #endif |
| 65 | 65 | ||
| 66 | // Transfer buffer for TWITransmitData() | 66 | uint8_t i2c_transfer_buffer[20]; |
| 67 | uint8_t g_twi_transfer_buffer[20]; | ||
| 68 | 67 | ||
| 69 | // These buffers match the IS31FL3733 PWM registers. | 68 | // These buffers match the IS31FL3733 PWM registers. |
| 70 | // The control buffers match the page 0 LED On/Off registers. | 69 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -80,17 +79,17 @@ bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] | |||
| 80 | 79 | ||
| 81 | bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 80 | bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 82 | // If the transaction fails function returns false. | 81 | // If the transaction fails function returns false. |
| 83 | g_twi_transfer_buffer[0] = reg; | 82 | i2c_transfer_buffer[0] = reg; |
| 84 | g_twi_transfer_buffer[1] = data; | 83 | i2c_transfer_buffer[1] = data; |
| 85 | 84 | ||
| 86 | #if IS31FL3733_I2C_PERSISTENCE > 0 | 85 | #if IS31FL3733_I2C_PERSISTENCE > 0 |
| 87 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { | 86 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { |
| 88 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { | 87 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 89 | return false; | 88 | return false; |
| 90 | } | 89 | } |
| 91 | } | 90 | } |
| 92 | #else | 91 | #else |
| 93 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { | 92 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 94 | return false; | 93 | return false; |
| 95 | } | 94 | } |
| 96 | #endif | 95 | #endif |
| @@ -106,24 +105,24 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 106 | // Assumes page 1 is already selected. | 105 | // Assumes page 1 is already selected. |
| 107 | // If any of the transactions fails function returns false. | 106 | // If any of the transactions fails function returns false. |
| 108 | // Transmit PWM registers in 12 transfers of 16 bytes. | 107 | // Transmit PWM registers in 12 transfers of 16 bytes. |
| 109 | // g_twi_transfer_buffer[] is 20 bytes | 108 | // i2c_transfer_buffer[] is 20 bytes |
| 110 | 109 | ||
| 111 | // Iterate over the pwm_buffer contents at 16 byte intervals. | 110 | // Iterate over the pwm_buffer contents at 16 byte intervals. |
| 112 | for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) { | 111 | for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) { |
| 113 | g_twi_transfer_buffer[0] = i; | 112 | i2c_transfer_buffer[0] = i; |
| 114 | // Copy the data from i to i+15. | 113 | // Copy the data from i to i+15. |
| 115 | // Device will auto-increment register for data after the first byte | 114 | // Device will auto-increment register for data after the first byte |
| 116 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. | 115 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. |
| 117 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 116 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 118 | 117 | ||
| 119 | #if IS31FL3733_I2C_PERSISTENCE > 0 | 118 | #if IS31FL3733_I2C_PERSISTENCE > 0 |
| 120 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { | 119 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { |
| 121 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { | 120 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 122 | return false; | 121 | return false; |
| 123 | } | 122 | } |
| 124 | } | 123 | } |
| 125 | #else | 124 | #else |
| 126 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { | 125 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 127 | return false; | 126 | return false; |
| 128 | } | 127 | } |
| 129 | #endif | 128 | #endif |
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index 0f263d949d..f7162a0ce5 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c | |||
| @@ -62,8 +62,7 @@ | |||
| 62 | # define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE | 62 | # define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE |
| 63 | #endif | 63 | #endif |
| 64 | 64 | ||
| 65 | // Transfer buffer for TWITransmitData() | 65 | uint8_t i2c_transfer_buffer[20]; |
| 66 | uint8_t g_twi_transfer_buffer[20]; | ||
| 67 | 66 | ||
| 68 | // These buffers match the IS31FL3733 PWM registers. | 67 | // These buffers match the IS31FL3733 PWM registers. |
| 69 | // The control buffers match the page 0 LED On/Off registers. | 68 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -79,17 +78,17 @@ bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] | |||
| 79 | 78 | ||
| 80 | bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 79 | bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 81 | // If the transaction fails function returns false. | 80 | // If the transaction fails function returns false. |
| 82 | g_twi_transfer_buffer[0] = reg; | 81 | i2c_transfer_buffer[0] = reg; |
| 83 | g_twi_transfer_buffer[1] = data; | 82 | i2c_transfer_buffer[1] = data; |
| 84 | 83 | ||
| 85 | #if IS31FL3733_I2C_PERSISTENCE > 0 | 84 | #if IS31FL3733_I2C_PERSISTENCE > 0 |
| 86 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { | 85 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { |
| 87 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { | 86 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 88 | return false; | 87 | return false; |
| 89 | } | 88 | } |
| 90 | } | 89 | } |
| 91 | #else | 90 | #else |
| 92 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { | 91 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 93 | return false; | 92 | return false; |
| 94 | } | 93 | } |
| 95 | #endif | 94 | #endif |
| @@ -105,24 +104,24 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 105 | // Assumes page 1 is already selected. | 104 | // Assumes page 1 is already selected. |
| 106 | // If any of the transactions fails function returns false. | 105 | // If any of the transactions fails function returns false. |
| 107 | // Transmit PWM registers in 12 transfers of 16 bytes. | 106 | // Transmit PWM registers in 12 transfers of 16 bytes. |
| 108 | // g_twi_transfer_buffer[] is 20 bytes | 107 | // i2c_transfer_buffer[] is 20 bytes |
| 109 | 108 | ||
| 110 | // Iterate over the pwm_buffer contents at 16 byte intervals. | 109 | // Iterate over the pwm_buffer contents at 16 byte intervals. |
| 111 | for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) { | 110 | for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) { |
| 112 | g_twi_transfer_buffer[0] = i; | 111 | i2c_transfer_buffer[0] = i; |
| 113 | // Copy the data from i to i+15. | 112 | // Copy the data from i to i+15. |
| 114 | // Device will auto-increment register for data after the first byte | 113 | // Device will auto-increment register for data after the first byte |
| 115 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. | 114 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. |
| 116 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 115 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 117 | 116 | ||
| 118 | #if IS31FL3733_I2C_PERSISTENCE > 0 | 117 | #if IS31FL3733_I2C_PERSISTENCE > 0 |
| 119 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { | 118 | for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { |
| 120 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { | 119 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 121 | return false; | 120 | return false; |
| 122 | } | 121 | } |
| 123 | } | 122 | } |
| 124 | #else | 123 | #else |
| 125 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { | 124 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { |
| 126 | return false; | 125 | return false; |
| 127 | } | 126 | } |
| 128 | #endif | 127 | #endif |
diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c index 20f8dfd92c..ac5e0fb453 100644 --- a/drivers/led/issi/is31fl3736-simple.c +++ b/drivers/led/issi/is31fl3736-simple.c | |||
| @@ -47,8 +47,7 @@ | |||
| 47 | # define IS31FL3736_GLOBAL_CURRENT 0xFF | 47 | # define IS31FL3736_GLOBAL_CURRENT 0xFF |
| 48 | #endif | 48 | #endif |
| 49 | 49 | ||
| 50 | // Transfer buffer for TWITransmitData() | 50 | uint8_t i2c_transfer_buffer[20]; |
| 51 | uint8_t g_twi_transfer_buffer[20]; | ||
| 52 | 51 | ||
| 53 | // These buffers match the IS31FL3736 PWM registers. | 52 | // These buffers match the IS31FL3736 PWM registers. |
| 54 | // The control buffers match the page 0 LED On/Off registers. | 53 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -63,15 +62,15 @@ uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_ | |||
| 63 | bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; | 62 | bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; |
| 64 | 63 | ||
| 65 | void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 64 | void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 66 | g_twi_transfer_buffer[0] = reg; | 65 | i2c_transfer_buffer[0] = reg; |
| 67 | g_twi_transfer_buffer[1] = data; | 66 | i2c_transfer_buffer[1] = data; |
| 68 | 67 | ||
| 69 | #if IS31FL3736_I2C_PERSISTENCE > 0 | 68 | #if IS31FL3736_I2C_PERSISTENCE > 0 |
| 70 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { | 69 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { |
| 71 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; | 70 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; |
| 72 | } | 71 | } |
| 73 | #else | 72 | #else |
| 74 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); | 73 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); |
| 75 | #endif | 74 | #endif |
| 76 | } | 75 | } |
| 77 | 76 | ||
| @@ -84,22 +83,22 @@ void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 84 | // assumes page 1 is already selected | 83 | // assumes page 1 is already selected |
| 85 | 84 | ||
| 86 | // transmit PWM registers in 12 transfers of 16 bytes | 85 | // transmit PWM registers in 12 transfers of 16 bytes |
| 87 | // g_twi_transfer_buffer[] is 20 bytes | 86 | // i2c_transfer_buffer[] is 20 bytes |
| 88 | 87 | ||
| 89 | // iterate over the pwm_buffer contents at 16 byte intervals | 88 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 90 | for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) { | 89 | for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) { |
| 91 | g_twi_transfer_buffer[0] = i; | 90 | i2c_transfer_buffer[0] = i; |
| 92 | // copy the data from i to i+15 | 91 | // copy the data from i to i+15 |
| 93 | // device will auto-increment register for data after the first byte | 92 | // device will auto-increment register for data after the first byte |
| 94 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer | 93 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer |
| 95 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 94 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 96 | 95 | ||
| 97 | #if IS31FL3736_I2C_PERSISTENCE > 0 | 96 | #if IS31FL3736_I2C_PERSISTENCE > 0 |
| 98 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { | 97 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { |
| 99 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; | 98 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; |
| 100 | } | 99 | } |
| 101 | #else | 100 | #else |
| 102 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); | 101 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); |
| 103 | #endif | 102 | #endif |
| 104 | } | 103 | } |
| 105 | } | 104 | } |
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 530d92cf31..384b815850 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c | |||
| @@ -47,8 +47,7 @@ | |||
| 47 | # define IS31FL3736_GLOBAL_CURRENT 0xFF | 47 | # define IS31FL3736_GLOBAL_CURRENT 0xFF |
| 48 | #endif | 48 | #endif |
| 49 | 49 | ||
| 50 | // Transfer buffer for TWITransmitData() | 50 | uint8_t i2c_transfer_buffer[20]; |
| 51 | uint8_t g_twi_transfer_buffer[20]; | ||
| 52 | 51 | ||
| 53 | // These buffers match the IS31FL3736 PWM registers. | 52 | // These buffers match the IS31FL3736 PWM registers. |
| 54 | // The control buffers match the page 0 LED On/Off registers. | 53 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -63,15 +62,15 @@ uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_ | |||
| 63 | bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; | 62 | bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; |
| 64 | 63 | ||
| 65 | void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 64 | void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 66 | g_twi_transfer_buffer[0] = reg; | 65 | i2c_transfer_buffer[0] = reg; |
| 67 | g_twi_transfer_buffer[1] = data; | 66 | i2c_transfer_buffer[1] = data; |
| 68 | 67 | ||
| 69 | #if IS31FL3736_I2C_PERSISTENCE > 0 | 68 | #if IS31FL3736_I2C_PERSISTENCE > 0 |
| 70 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { | 69 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { |
| 71 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; | 70 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; |
| 72 | } | 71 | } |
| 73 | #else | 72 | #else |
| 74 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); | 73 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); |
| 75 | #endif | 74 | #endif |
| 76 | } | 75 | } |
| 77 | 76 | ||
| @@ -84,22 +83,22 @@ void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 84 | // assumes page 1 is already selected | 83 | // assumes page 1 is already selected |
| 85 | 84 | ||
| 86 | // transmit PWM registers in 12 transfers of 16 bytes | 85 | // transmit PWM registers in 12 transfers of 16 bytes |
| 87 | // g_twi_transfer_buffer[] is 20 bytes | 86 | // i2c_transfer_buffer[] is 20 bytes |
| 88 | 87 | ||
| 89 | // iterate over the pwm_buffer contents at 16 byte intervals | 88 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 90 | for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) { | 89 | for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) { |
| 91 | g_twi_transfer_buffer[0] = i; | 90 | i2c_transfer_buffer[0] = i; |
| 92 | // copy the data from i to i+15 | 91 | // copy the data from i to i+15 |
| 93 | // device will auto-increment register for data after the first byte | 92 | // device will auto-increment register for data after the first byte |
| 94 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer | 93 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer |
| 95 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 94 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 96 | 95 | ||
| 97 | #if IS31FL3736_I2C_PERSISTENCE > 0 | 96 | #if IS31FL3736_I2C_PERSISTENCE > 0 |
| 98 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { | 97 | for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { |
| 99 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; | 98 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; |
| 100 | } | 99 | } |
| 101 | #else | 100 | #else |
| 102 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); | 101 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); |
| 103 | #endif | 102 | #endif |
| 104 | } | 103 | } |
| 105 | } | 104 | } |
diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c index 930a6c9a90..967a102b48 100644 --- a/drivers/led/issi/is31fl3737-simple.c +++ b/drivers/led/issi/is31fl3737-simple.c | |||
| @@ -49,8 +49,7 @@ | |||
| 49 | # define IS31FL3737_GLOBAL_CURRENT 0xFF | 49 | # define IS31FL3737_GLOBAL_CURRENT 0xFF |
| 50 | #endif | 50 | #endif |
| 51 | 51 | ||
| 52 | // Transfer buffer for TWITransmitData() | 52 | uint8_t i2c_transfer_buffer[20]; |
| 53 | uint8_t g_twi_transfer_buffer[20]; | ||
| 54 | 53 | ||
| 55 | // These buffers match the IS31FL3737 PWM registers. | 54 | // These buffers match the IS31FL3737 PWM registers. |
| 56 | // The control buffers match the page 0 LED On/Off registers. | 55 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -66,15 +65,15 @@ uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_ | |||
| 66 | bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; | 65 | bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; |
| 67 | 66 | ||
| 68 | void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 67 | void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 69 | g_twi_transfer_buffer[0] = reg; | 68 | i2c_transfer_buffer[0] = reg; |
| 70 | g_twi_transfer_buffer[1] = data; | 69 | i2c_transfer_buffer[1] = data; |
| 71 | 70 | ||
| 72 | #if IS31FL3737_I2C_PERSISTENCE > 0 | 71 | #if IS31FL3737_I2C_PERSISTENCE > 0 |
| 73 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { | 72 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { |
| 74 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; | 73 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; |
| 75 | } | 74 | } |
| 76 | #else | 75 | #else |
| 77 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); | 76 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); |
| 78 | #endif | 77 | #endif |
| 79 | } | 78 | } |
| 80 | 79 | ||
| @@ -87,22 +86,22 @@ void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 87 | // assumes page 1 is already selected | 86 | // assumes page 1 is already selected |
| 88 | 87 | ||
| 89 | // transmit PWM registers in 12 transfers of 16 bytes | 88 | // transmit PWM registers in 12 transfers of 16 bytes |
| 90 | // g_twi_transfer_buffer[] is 20 bytes | 89 | // i2c_transfer_buffer[] is 20 bytes |
| 91 | 90 | ||
| 92 | // iterate over the pwm_buffer contents at 16 byte intervals | 91 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 93 | for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) { | 92 | for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) { |
| 94 | g_twi_transfer_buffer[0] = i; | 93 | i2c_transfer_buffer[0] = i; |
| 95 | // copy the data from i to i+15 | 94 | // copy the data from i to i+15 |
| 96 | // device will auto-increment register for data after the first byte | 95 | // device will auto-increment register for data after the first byte |
| 97 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer | 96 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer |
| 98 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 97 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 99 | 98 | ||
| 100 | #if IS31FL3737_I2C_PERSISTENCE > 0 | 99 | #if IS31FL3737_I2C_PERSISTENCE > 0 |
| 101 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { | 100 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { |
| 102 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; | 101 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; |
| 103 | } | 102 | } |
| 104 | #else | 103 | #else |
| 105 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); | 104 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); |
| 106 | #endif | 105 | #endif |
| 107 | } | 106 | } |
| 108 | } | 107 | } |
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index fd727e60d3..76d17c2b84 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c | |||
| @@ -49,8 +49,7 @@ | |||
| 49 | # define IS31FL3737_GLOBAL_CURRENT 0xFF | 49 | # define IS31FL3737_GLOBAL_CURRENT 0xFF |
| 50 | #endif | 50 | #endif |
| 51 | 51 | ||
| 52 | // Transfer buffer for TWITransmitData() | 52 | uint8_t i2c_transfer_buffer[20]; |
| 53 | uint8_t g_twi_transfer_buffer[20]; | ||
| 54 | 53 | ||
| 55 | // These buffers match the IS31FL3737 PWM registers. | 54 | // These buffers match the IS31FL3737 PWM registers. |
| 56 | // The control buffers match the page 0 LED On/Off registers. | 55 | // The control buffers match the page 0 LED On/Off registers. |
| @@ -66,15 +65,15 @@ uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_ | |||
| 66 | bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; | 65 | bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; |
| 67 | 66 | ||
| 68 | void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 67 | void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 69 | g_twi_transfer_buffer[0] = reg; | 68 | i2c_transfer_buffer[0] = reg; |
| 70 | g_twi_transfer_buffer[1] = data; | 69 | i2c_transfer_buffer[1] = data; |
| 71 | 70 | ||
| 72 | #if IS31FL3737_I2C_PERSISTENCE > 0 | 71 | #if IS31FL3737_I2C_PERSISTENCE > 0 |
| 73 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { | 72 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { |
| 74 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; | 73 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; |
| 75 | } | 74 | } |
| 76 | #else | 75 | #else |
| 77 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); | 76 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); |
| 78 | #endif | 77 | #endif |
| 79 | } | 78 | } |
| 80 | 79 | ||
| @@ -87,22 +86,22 @@ void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 87 | // assumes page 1 is already selected | 86 | // assumes page 1 is already selected |
| 88 | 87 | ||
| 89 | // transmit PWM registers in 12 transfers of 16 bytes | 88 | // transmit PWM registers in 12 transfers of 16 bytes |
| 90 | // g_twi_transfer_buffer[] is 20 bytes | 89 | // i2c_transfer_buffer[] is 20 bytes |
| 91 | 90 | ||
| 92 | // iterate over the pwm_buffer contents at 16 byte intervals | 91 | // iterate over the pwm_buffer contents at 16 byte intervals |
| 93 | for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) { | 92 | for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) { |
| 94 | g_twi_transfer_buffer[0] = i; | 93 | i2c_transfer_buffer[0] = i; |
| 95 | // copy the data from i to i+15 | 94 | // copy the data from i to i+15 |
| 96 | // device will auto-increment register for data after the first byte | 95 | // device will auto-increment register for data after the first byte |
| 97 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer | 96 | // thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer |
| 98 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); | 97 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16); |
| 99 | 98 | ||
| 100 | #if IS31FL3737_I2C_PERSISTENCE > 0 | 99 | #if IS31FL3737_I2C_PERSISTENCE > 0 |
| 101 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { | 100 | for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { |
| 102 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; | 101 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; |
| 103 | } | 102 | } |
| 104 | #else | 103 | #else |
| 105 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); | 104 | i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); |
| 106 | #endif | 105 | #endif |
| 107 | } | 106 | } |
| 108 | } | 107 | } |
diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c index 6bce71d5f7..db245af4da 100644 --- a/drivers/led/issi/is31fl3741-simple.c +++ b/drivers/led/issi/is31fl3741-simple.c | |||
| @@ -52,8 +52,7 @@ | |||
| 52 | # define IS31FL3741_GLOBAL_CURRENT 0xFF | 52 | # define IS31FL3741_GLOBAL_CURRENT 0xFF |
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | // Transfer buffer for TWITransmitData() | 55 | uint8_t i2c_transfer_buffer[20] = {0xFF}; |
| 56 | uint8_t g_twi_transfer_buffer[20] = {0xFF}; | ||
| 57 | 56 | ||
| 58 | // These buffers match the IS31FL3741 and IS31FL3741A PWM registers. | 57 | // These buffers match the IS31FL3741 and IS31FL3741A PWM registers. |
| 59 | // The scaling buffers match the page 2 and 3 LED On/Off registers. | 58 | // The scaling buffers match the page 2 and 3 LED On/Off registers. |
| @@ -68,15 +67,15 @@ bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false}; | |||
| 68 | uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; | 67 | uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; |
| 69 | 68 | ||
| 70 | void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 69 | void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 71 | g_twi_transfer_buffer[0] = reg; | 70 | i2c_transfer_buffer[0] = reg; |
| 72 | g_twi_transfer_buffer[1] = data; | 71 | i2c_transfer_buffer[1] = data; |
| 73 | 72 | ||
| 74 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 73 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 75 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 74 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 76 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; | 75 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; |
| 77 | } | 76 | } |
| 78 | #else | 77 | #else |
| 79 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); | 78 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); |
| 80 | #endif | 79 | #endif |
| 81 | } | 80 | } |
| 82 | 81 | ||
| @@ -93,34 +92,34 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 93 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1); | 92 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1); |
| 94 | } | 93 | } |
| 95 | 94 | ||
| 96 | g_twi_transfer_buffer[0] = i % 180; | 95 | i2c_transfer_buffer[0] = i % 180; |
| 97 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18); | 96 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 18); |
| 98 | 97 | ||
| 99 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 98 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 100 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 99 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 101 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { | 100 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 102 | return false; | 101 | return false; |
| 103 | } | 102 | } |
| 104 | } | 103 | } |
| 105 | #else | 104 | #else |
| 106 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { | 105 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 107 | return false; | 106 | return false; |
| 108 | } | 107 | } |
| 109 | #endif | 108 | #endif |
| 110 | } | 109 | } |
| 111 | 110 | ||
| 112 | // transfer the left cause the total number is 351 | 111 | // transfer the left cause the total number is 351 |
| 113 | g_twi_transfer_buffer[0] = 162; | 112 | i2c_transfer_buffer[0] = 162; |
| 114 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9); | 113 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + 342, 9); |
| 115 | 114 | ||
| 116 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 115 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 117 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 116 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 118 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { | 117 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 119 | return false; | 118 | return false; |
| 120 | } | 119 | } |
| 121 | } | 120 | } |
| 122 | #else | 121 | #else |
| 123 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { | 122 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 124 | return false; | 123 | return false; |
| 125 | } | 124 | } |
| 126 | #endif | 125 | #endif |
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 3ee75572fa..0575f31254 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c | |||
| @@ -52,8 +52,7 @@ | |||
| 52 | # define IS31FL3741_GLOBAL_CURRENT 0xFF | 52 | # define IS31FL3741_GLOBAL_CURRENT 0xFF |
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | // Transfer buffer for TWITransmitData() | 55 | uint8_t i2c_transfer_buffer[20] = {0xFF}; |
| 56 | uint8_t g_twi_transfer_buffer[20] = {0xFF}; | ||
| 57 | 56 | ||
| 58 | // These buffers match the IS31FL3741 and IS31FL3741A PWM registers. | 57 | // These buffers match the IS31FL3741 and IS31FL3741A PWM registers. |
| 59 | // The scaling buffers match the page 2 and 3 LED On/Off registers. | 58 | // The scaling buffers match the page 2 and 3 LED On/Off registers. |
| @@ -68,15 +67,15 @@ bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false}; | |||
| 68 | uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; | 67 | uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; |
| 69 | 68 | ||
| 70 | void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 69 | void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 71 | g_twi_transfer_buffer[0] = reg; | 70 | i2c_transfer_buffer[0] = reg; |
| 72 | g_twi_transfer_buffer[1] = data; | 71 | i2c_transfer_buffer[1] = data; |
| 73 | 72 | ||
| 74 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 73 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 75 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 74 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 76 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; | 75 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; |
| 77 | } | 76 | } |
| 78 | #else | 77 | #else |
| 79 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); | 78 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); |
| 80 | #endif | 79 | #endif |
| 81 | } | 80 | } |
| 82 | 81 | ||
| @@ -93,34 +92,34 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 93 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1); | 92 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1); |
| 94 | } | 93 | } |
| 95 | 94 | ||
| 96 | g_twi_transfer_buffer[0] = i % 180; | 95 | i2c_transfer_buffer[0] = i % 180; |
| 97 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18); | 96 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 18); |
| 98 | 97 | ||
| 99 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 98 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 100 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 99 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 101 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { | 100 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 102 | return false; | 101 | return false; |
| 103 | } | 102 | } |
| 104 | } | 103 | } |
| 105 | #else | 104 | #else |
| 106 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { | 105 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 107 | return false; | 106 | return false; |
| 108 | } | 107 | } |
| 109 | #endif | 108 | #endif |
| 110 | } | 109 | } |
| 111 | 110 | ||
| 112 | // transfer the left cause the total number is 351 | 111 | // transfer the left cause the total number is 351 |
| 113 | g_twi_transfer_buffer[0] = 162; | 112 | i2c_transfer_buffer[0] = 162; |
| 114 | memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9); | 113 | memcpy(i2c_transfer_buffer + 1, pwm_buffer + 342, 9); |
| 115 | 114 | ||
| 116 | #if IS31FL3741_I2C_PERSISTENCE > 0 | 115 | #if IS31FL3741_I2C_PERSISTENCE > 0 |
| 117 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { | 116 | for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { |
| 118 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { | 117 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 119 | return false; | 118 | return false; |
| 120 | } | 119 | } |
| 121 | } | 120 | } |
| 122 | #else | 121 | #else |
| 123 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { | 122 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { |
| 124 | return false; | 123 | return false; |
| 125 | } | 124 | } |
| 126 | #endif | 125 | #endif |
diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c index d6b9bce93d..048db286b6 100644 --- a/drivers/led/issi/is31flcommon.c +++ b/drivers/led/issi/is31flcommon.c | |||
| @@ -31,8 +31,7 @@ | |||
| 31 | # define ISSI_PERSISTENCE 0 | 31 | # define ISSI_PERSISTENCE 0 |
| 32 | #endif | 32 | #endif |
| 33 | 33 | ||
| 34 | // Transfer buffer for TWITransmitData() | 34 | uint8_t i2c_transfer_buffer[20]; |
| 35 | uint8_t g_twi_transfer_buffer[20]; | ||
| 36 | 35 | ||
| 37 | // These buffers match the PWM & scaling registers. | 36 | // These buffers match the PWM & scaling registers. |
| 38 | // Storing them like this is optimal for I2C transfers to the registers. | 37 | // Storing them like this is optimal for I2C transfers to the registers. |
| @@ -45,15 +44,15 @@ bool g_scaling_buffer_update_required[DRIVER_COUNT] = {false}; | |||
| 45 | // For writing of single register entry | 44 | // For writing of single register entry |
| 46 | void IS31FL_write_single_register(uint8_t addr, uint8_t reg, uint8_t data) { | 45 | void IS31FL_write_single_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 47 | // Set register address and register data ready to write | 46 | // Set register address and register data ready to write |
| 48 | g_twi_transfer_buffer[0] = reg; | 47 | i2c_transfer_buffer[0] = reg; |
| 49 | g_twi_transfer_buffer[1] = data; | 48 | i2c_transfer_buffer[1] = data; |
| 50 | 49 | ||
| 51 | #if ISSI_PERSISTENCE > 0 | 50 | #if ISSI_PERSISTENCE > 0 |
| 52 | for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { | 51 | for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { |
| 53 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; | 52 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; |
| 54 | } | 53 | } |
| 55 | #else | 54 | #else |
| 56 | i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); | 55 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, ISSI_TIMEOUT); |
| 57 | #endif | 56 | #endif |
| 58 | } | 57 | } |
| 59 | 58 | ||
| @@ -64,18 +63,18 @@ bool IS31FL_write_multi_registers(uint8_t addr, uint8_t *source_buffer, uint8_t | |||
| 64 | // Split the buffer into chunks to transfer | 63 | // Split the buffer into chunks to transfer |
| 65 | for (int i = 0; i < buffer_size; i += transfer_size) { | 64 | for (int i = 0; i < buffer_size; i += transfer_size) { |
| 66 | // Set the first entry of transfer buffer to the first register we want to write | 65 | // Set the first entry of transfer buffer to the first register we want to write |
| 67 | g_twi_transfer_buffer[0] = i + start_reg_addr; | 66 | i2c_transfer_buffer[0] = i + start_reg_addr; |
| 68 | // Copy the section of our source buffer into the transfer buffer after first register address | 67 | // Copy the section of our source buffer into the transfer buffer after first register address |
| 69 | memcpy(g_twi_transfer_buffer + 1, source_buffer + i, transfer_size); | 68 | memcpy(i2c_transfer_buffer + 1, source_buffer + i, transfer_size); |
| 70 | 69 | ||
| 71 | #if ISSI_PERSISTENCE > 0 | 70 | #if ISSI_PERSISTENCE > 0 |
| 72 | for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { | 71 | for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { |
| 73 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) { | 72 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) { |
| 74 | return false; | 73 | return false; |
| 75 | } | 74 | } |
| 76 | } | 75 | } |
| 77 | #else | 76 | #else |
| 78 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) { | 77 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) { |
| 79 | return false; | 78 | return false; |
| 80 | } | 79 | } |
| 81 | #endif | 80 | #endif |
diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c index 3906b0eb4b..7b7a82f90f 100644 --- a/drivers/led/snled27351-simple.c +++ b/drivers/led/snled27351-simple.c | |||
| @@ -37,8 +37,7 @@ | |||
| 37 | { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } | 37 | { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | // Transfer buffer for TWITransmitData() | 40 | uint8_t i2c_transfer_buffer[20]; |
| 41 | uint8_t g_twi_transfer_buffer[20]; | ||
| 42 | 41 | ||
| 43 | // These buffers match the SNLED27351 PWM registers. | 42 | // These buffers match the SNLED27351 PWM registers. |
| 44 | // The control buffers match the PG0 LED On/Off registers. | 43 | // The control buffers match the PG0 LED On/Off registers. |
| @@ -54,17 +53,17 @@ bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] | |||
| 54 | 53 | ||
| 55 | bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 54 | bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 56 | // If the transaction fails function returns false. | 55 | // If the transaction fails function returns false. |
| 57 | g_twi_transfer_buffer[0] = reg; | 56 | i2c_transfer_buffer[0] = reg; |
| 58 | g_twi_transfer_buffer[1] = data; | 57 | i2c_transfer_buffer[1] = data; |
| 59 | 58 | ||
| 60 | #if SNLED27351_I2C_PERSISTENCE > 0 | 59 | #if SNLED27351_I2C_PERSISTENCE > 0 |
| 61 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { | 60 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { |
| 62 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { | 61 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
| 63 | return false; | 62 | return false; |
| 64 | } | 63 | } |
| 65 | } | 64 | } |
| 66 | #else | 65 | #else |
| 67 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { | 66 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
| 68 | return false; | 67 | return false; |
| 69 | } | 68 | } |
| 70 | #endif | 69 | #endif |
| @@ -79,26 +78,26 @@ bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 79 | // Assumes PG1 is already selected. | 78 | // Assumes PG1 is already selected. |
| 80 | // If any of the transactions fails function returns false. | 79 | // If any of the transactions fails function returns false. |
| 81 | // Transmit PWM registers in 12 transfers of 16 bytes. | 80 | // Transmit PWM registers in 12 transfers of 16 bytes. |
| 82 | // g_twi_transfer_buffer[] is 20 bytes | 81 | // i2c_transfer_buffer[] is 20 bytes |
| 83 | 82 | ||
| 84 | // Iterate over the pwm_buffer contents at 16 byte intervals. | 83 | // Iterate over the pwm_buffer contents at 16 byte intervals. |
| 85 | for (int i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 16) { | 84 | for (int i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 16) { |
| 86 | g_twi_transfer_buffer[0] = i; | 85 | i2c_transfer_buffer[0] = i; |
| 87 | // Copy the data from i to i+15. | 86 | // Copy the data from i to i+15. |
| 88 | // Device will auto-increment register for data after the first byte | 87 | // Device will auto-increment register for data after the first byte |
| 89 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. | 88 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. |
| 90 | for (int j = 0; j < 16; j++) { | 89 | for (int j = 0; j < 16; j++) { |
| 91 | g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j]; | 90 | i2c_transfer_buffer[1 + j] = pwm_buffer[i + j]; |
| 92 | } | 91 | } |
| 93 | 92 | ||
| 94 | #if SNLED27351_I2C_PERSISTENCE > 0 | 93 | #if SNLED27351_I2C_PERSISTENCE > 0 |
| 95 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { | 94 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { |
| 96 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { | 95 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { |
| 97 | return false; | 96 | return false; |
| 98 | } | 97 | } |
| 99 | } | 98 | } |
| 100 | #else | 99 | #else |
| 101 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { | 100 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { |
| 102 | return false; | 101 | return false; |
| 103 | } | 102 | } |
| 104 | #endif | 103 | #endif |
diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index b22a4af779..d985e4c5f1 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c | |||
| @@ -37,8 +37,7 @@ | |||
| 37 | { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } | 37 | { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | // Transfer buffer for TWITransmitData() | 40 | uint8_t i2c_transfer_buffer[65]; |
| 41 | uint8_t g_twi_transfer_buffer[65]; | ||
| 42 | 41 | ||
| 43 | // These buffers match the SNLED27351 PWM registers. | 42 | // These buffers match the SNLED27351 PWM registers. |
| 44 | // The control buffers match the PG0 LED On/Off registers. | 43 | // The control buffers match the PG0 LED On/Off registers. |
| @@ -54,17 +53,17 @@ bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] | |||
| 54 | 53 | ||
| 55 | bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | 54 | bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
| 56 | // If the transaction fails function returns false. | 55 | // If the transaction fails function returns false. |
| 57 | g_twi_transfer_buffer[0] = reg; | 56 | i2c_transfer_buffer[0] = reg; |
| 58 | g_twi_transfer_buffer[1] = data; | 57 | i2c_transfer_buffer[1] = data; |
| 59 | 58 | ||
| 60 | #if SNLED27351_I2C_PERSISTENCE > 0 | 59 | #if SNLED27351_I2C_PERSISTENCE > 0 |
| 61 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { | 60 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { |
| 62 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { | 61 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
| 63 | return false; | 62 | return false; |
| 64 | } | 63 | } |
| 65 | } | 64 | } |
| 66 | #else | 65 | #else |
| 67 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { | 66 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
| 68 | return false; | 67 | return false; |
| 69 | } | 68 | } |
| 70 | #endif | 69 | #endif |
| @@ -82,22 +81,22 @@ bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | |||
| 82 | 81 | ||
| 83 | // Iterate over the pwm_buffer contents at 64 byte intervals. | 82 | // Iterate over the pwm_buffer contents at 64 byte intervals. |
| 84 | for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 64) { | 83 | for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 64) { |
| 85 | g_twi_transfer_buffer[0] = i; | 84 | i2c_transfer_buffer[0] = i; |
| 86 | // Copy the data from i to i+63. | 85 | // Copy the data from i to i+63. |
| 87 | // Device will auto-increment register for data after the first byte | 86 | // Device will auto-increment register for data after the first byte |
| 88 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. | 87 | // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. |
| 89 | for (uint8_t j = 0; j < 64; j++) { | 88 | for (uint8_t j = 0; j < 64; j++) { |
| 90 | g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j]; | 89 | i2c_transfer_buffer[1 + j] = pwm_buffer[i + j]; |
| 91 | } | 90 | } |
| 92 | 91 | ||
| 93 | #if SNLED27351_I2C_PERSISTENCE > 0 | 92 | #if SNLED27351_I2C_PERSISTENCE > 0 |
| 94 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { | 93 | for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { |
| 95 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { | 94 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { |
| 96 | return false; | 95 | return false; |
| 97 | } | 96 | } |
| 98 | } | 97 | } |
| 99 | #else | 98 | #else |
| 100 | if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { | 99 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { |
| 101 | return false; | 100 | return false; |
| 102 | } | 101 | } |
| 103 | #endif | 102 | #endif |
