From 29456f7b6b0e87888341d7c0902aeee68cc63fe9 Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Mon, 14 Jun 2021 14:08:30 -0700 Subject: [PATCH] It's alive!!!! i2c2 that is! --- keyboards/moonlander/cirque_tm040040.c | 17 ++++++++-------- keyboards/moonlander/i2c2_master.c | 20 +++++++++---------- keyboards/moonlander/i2c2_master.h | 4 ++-- keyboards/moonlander/mcuconf.h | 2 +- .../boards/QMK_PROTON_C/configs/mcuconf.h | 2 +- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/keyboards/moonlander/cirque_tm040040.c b/keyboards/moonlander/cirque_tm040040.c index 6944c30fa2..99b42b9804 100644 --- a/keyboards/moonlander/cirque_tm040040.c +++ b/keyboards/moonlander/cirque_tm040040.c @@ -1,5 +1,5 @@ // Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license -#include "i2c_master.h" +#include "i2c2_master.h" #include "cirque_tm040040.h" #include "pointing_device.h" @@ -71,6 +71,7 @@ void pointing_device_task(void) { /* Pinnacle-based TM040040 Functions */ void pointing_device_init(void) { + i2c2_init(); // Host clears SW_CC flag Pinnacle_ClearFlags(); @@ -185,19 +186,19 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) { uint8_t cmdByte = READ_MASK | address; // Form the READ command byte // uint8_t i = 0; - i2c_start(SLAVE_ADDR << 1); - i2c_writeReg(SLAVE_ADDR << 1, cmdByte, NULL, 0, I2C_TIMEOUT); - i2c_readReg(SLAVE_ADDR << 1, cmdByte, data, count, I2C_TIMEOUT); - i2c_stop(); + i2c2_start(SLAVE_ADDR << 1); + i2c2_writeReg(SLAVE_ADDR << 1, cmdByte, NULL, 0, I2C_TIMEOUT); + i2c2_readReg(SLAVE_ADDR << 1, cmdByte, data, count, I2C_TIMEOUT); + i2c2_stop(); } // Writes single-byte to
void RAP_Write(uint8_t address, uint8_t data) { uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte - i2c_start(SLAVE_ADDR << 1); - i2c_writeReg(SLAVE_ADDR << 1, cmdByte, &data, sizeof(data), I2C_TIMEOUT); - i2c_stop(); + i2c2_start(SLAVE_ADDR << 1); + i2c2_writeReg(SLAVE_ADDR << 1, cmdByte, &data, sizeof(data), I2C_TIMEOUT); + i2c2_stop(); } /* Logical Scaling Functions */ diff --git a/keyboards/moonlander/i2c2_master.c b/keyboards/moonlander/i2c2_master.c index 5301c1949c..6e99a2e2e4 100644 --- a/keyboards/moonlander/i2c2_master.c +++ b/keyboards/moonlander/i2c2_master.c @@ -79,27 +79,27 @@ __attribute__((weak)) void i2c2_init(void) { i2c_status_t i2c2_start(uint8_t address) { i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); + i2cStart(&I2C2_DRIVER, &i2cconfig); return I2C_STATUS_SUCCESS; } i2c_status_t i2c2_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); + i2cStart(&I2C2_DRIVER, &i2cconfig); + msg_t status = i2cMasterTransmitTimeout(&I2C2_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); return chibios_to_qmk(&status); } i2c_status_t i2c2_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); + i2cStart(&I2C2_DRIVER, &i2cconfig); + msg_t status = i2cMasterReceiveTimeout(&I2C2_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); return chibios_to_qmk(&status); } i2c_status_t i2c2_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { i2c_address = devaddr; - i2cStart(&I2C_DRIVER, &i2cconfig); + i2cStart(&I2C2_DRIVER, &i2cconfig); uint8_t complete_packet[length + 1]; for (uint8_t i = 0; i < length; i++) { @@ -107,15 +107,15 @@ i2c_status_t i2c2_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data } complete_packet[0] = regaddr; - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C2_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); return chibios_to_qmk(&status); } i2c_status_t i2c2_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) { i2c_address = devaddr; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); + i2cStart(&I2C2_DRIVER, &i2cconfig); + msg_t status = i2cMasterTransmitTimeout(&I2C2_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); return chibios_to_qmk(&status); } -void i2c2_stop(void) { i2cStop(&I2C_DRIVER); } +void i2c2_stop(void) { i2cStop(&I2C2_DRIVER); } diff --git a/keyboards/moonlander/i2c2_master.h b/keyboards/moonlander/i2c2_master.h index 1bfe38e813..70f330c709 100644 --- a/keyboards/moonlander/i2c2_master.h +++ b/keyboards/moonlander/i2c2_master.h @@ -77,8 +77,8 @@ # endif #endif -#ifndef I2C_DRIVER -# define I2C_DRIVER I2CD2 +#ifndef I2C2_DRIVER +# define I2C2_DRIVER I2CD2 #endif #ifdef USE_GPIOV1 diff --git a/keyboards/moonlander/mcuconf.h b/keyboards/moonlander/mcuconf.h index d73e2a41a4..ec706bbcb1 100644 --- a/keyboards/moonlander/mcuconf.h +++ b/keyboards/moonlander/mcuconf.h @@ -23,7 +23,7 @@ // for future hardware #undef STM32_I2C_USE_I2C2 -#define STM32_I2C_USE_I2C2 TRUE +#define STM32_I2C_USE_I2C2 TRUE #undef STM32_I2C_I2C2_IRQ_PRIORITY #define STM32_I2C_I2C2_IRQ_PRIORITY 12 diff --git a/platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h b/platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h index 4d7b586c08..a4511a0f05 100644 --- a/platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h +++ b/platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h @@ -159,7 +159,7 @@ * I2C driver system settings. */ #define STM32_I2C_USE_I2C1 TRUE -#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_USE_I2C2 TRUE #define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_I2C1_IRQ_PRIORITY 10 #define STM32_I2C_I2C2_IRQ_PRIORITY 10