diff options
| -rw-r--r-- | drivers/chibios/i2c_master.c | 8 | ||||
| -rw-r--r-- | drivers/chibios/i2c_master.h | 9 | ||||
| -rw-r--r-- | drivers/oled/oled_driver.c | 10 | ||||
| -rw-r--r-- | drivers/oled/oled_driver.h | 4 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_32/config.h | 6 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_32/halconf.h | 2 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_32/mcuconf.h | 6 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_lc/config.h | 6 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_lc/halconf.h | 2 | ||||
| -rw-r--r-- | keyboards/handwired/onekey/teensy_lc/mcuconf.h | 6 | ||||
| -rw-r--r-- | tmk_core/common/chibios/chibios_config.h | 7 |
11 files changed, 54 insertions, 12 deletions
diff --git a/drivers/chibios/i2c_master.c b/drivers/chibios/i2c_master.c index ede915fa4..4bd8e2af7 100644 --- a/drivers/chibios/i2c_master.c +++ b/drivers/chibios/i2c_master.c | |||
| @@ -32,7 +32,9 @@ | |||
| 32 | static uint8_t i2c_address; | 32 | static uint8_t i2c_address; |
| 33 | 33 | ||
| 34 | static const I2CConfig i2cconfig = { | 34 | static const I2CConfig i2cconfig = { |
| 35 | #ifdef USE_I2CV1 | 35 | #if defined(USE_I2CV1_CONTRIB) |
| 36 | I2C1_CLOCK_SPEED, | ||
| 37 | #elif defined(USE_I2CV1) | ||
| 36 | I2C1_OPMODE, | 38 | I2C1_OPMODE, |
| 37 | I2C1_CLOCK_SPEED, | 39 | I2C1_CLOCK_SPEED, |
| 38 | I2C1_DUTY_CYCLE, | 40 | I2C1_DUTY_CYCLE, |
| @@ -62,8 +64,8 @@ __attribute__((weak)) void i2c_init(void) { | |||
| 62 | 64 | ||
| 63 | chThdSleepMilliseconds(10); | 65 | chThdSleepMilliseconds(10); |
| 64 | #if defined(USE_GPIOV1) | 66 | #if defined(USE_GPIOV1) |
| 65 | palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); | 67 | palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE); |
| 66 | palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); | 68 | palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE); |
| 67 | #else | 69 | #else |
| 68 | palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); | 70 | palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); |
| 69 | palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); | 71 | palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); |
diff --git a/drivers/chibios/i2c_master.h b/drivers/chibios/i2c_master.h index 3d3891289..b3e234e16 100644 --- a/drivers/chibios/i2c_master.h +++ b/drivers/chibios/i2c_master.h | |||
| @@ -81,7 +81,14 @@ | |||
| 81 | # define I2C_DRIVER I2CD1 | 81 | # define I2C_DRIVER I2CD1 |
| 82 | #endif | 82 | #endif |
| 83 | 83 | ||
| 84 | #ifndef USE_GPIOV1 | 84 | #ifdef USE_GPIOV1 |
| 85 | # ifndef I2C1_SCL_PAL_MODE | ||
| 86 | # define I2C1_SCL_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN | ||
| 87 | # endif | ||
| 88 | # ifndef I2C1_SDA_PAL_MODE | ||
| 89 | # define I2C1_SDA_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN | ||
| 90 | # endif | ||
| 91 | #else | ||
| 85 | // The default PAL alternate modes are used to signal that the pins are used for I2C | 92 | // The default PAL alternate modes are used to signal that the pins are used for I2C |
| 86 | # ifndef I2C1_SCL_PAL_MODE | 93 | # ifndef I2C1_SCL_PAL_MODE |
| 87 | # define I2C1_SCL_PAL_MODE 4 | 94 | # define I2C1_SCL_PAL_MODE 4 |
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 977b70178..f1990567f 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c | |||
| @@ -82,14 +82,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 82 | #define I2C_CMD 0x00 | 82 | #define I2C_CMD 0x00 |
| 83 | #define I2C_DATA 0x40 | 83 | #define I2C_DATA 0x40 |
| 84 | #if defined(__AVR__) | 84 | #if defined(__AVR__) |
| 85 | // already defined on ARM | 85 | # define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) |
| 86 | # define I2C_TIMEOUT 100 | ||
| 87 | # define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | ||
| 88 | #else // defined(__AVR__) | 86 | #else // defined(__AVR__) |
| 89 | # define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | 87 | # define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) |
| 90 | #endif // defined(__AVR__) | 88 | #endif // defined(__AVR__) |
| 91 | #define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | 89 | #define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) |
| 92 | #define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, I2C_TIMEOUT) | 90 | #define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT) |
| 93 | 91 | ||
| 94 | #define HAS_FLAGS(bits, flags) ((bits & flags) == flags) | 92 | #define HAS_FLAGS(bits, flags) ((bits & flags) == flags) |
| 95 | 93 | ||
diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index af6e5a2b6..5c21c0cc8 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h | |||
| @@ -150,6 +150,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 150 | # endif | 150 | # endif |
| 151 | #endif | 151 | #endif |
| 152 | 152 | ||
| 153 | #if !defined(OLED_I2C_TIMEOUT) | ||
| 154 | # define OLED_I2C_TIMEOUT 100 | ||
| 155 | #endif | ||
| 156 | |||
| 153 | // OLED Rotation enum values are flags | 157 | // OLED Rotation enum values are flags |
| 154 | typedef enum { | 158 | typedef enum { |
| 155 | OLED_ROTATION_0 = 0, | 159 | OLED_ROTATION_0 = 0, |
diff --git a/keyboards/handwired/onekey/teensy_32/config.h b/keyboards/handwired/onekey/teensy_32/config.h index 0d82a0578..a4839135a 100644 --- a/keyboards/handwired/onekey/teensy_32/config.h +++ b/keyboards/handwired/onekey/teensy_32/config.h | |||
| @@ -22,3 +22,9 @@ | |||
| 22 | #define MATRIX_COL_PINS { D5 } | 22 | #define MATRIX_COL_PINS { D5 } |
| 23 | #define MATRIX_ROW_PINS { B2 } | 23 | #define MATRIX_ROW_PINS { B2 } |
| 24 | #define UNUSED_PINS | 24 | #define UNUSED_PINS |
| 25 | |||
| 26 | // i2c_master defines | ||
| 27 | #define I2C1_SCL 0 // A2 on pinout = B0 | ||
| 28 | #define I2C1_SDA 1 // A3 on pinout = B1 | ||
| 29 | #define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 | ||
| 30 | #define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 | ||
diff --git a/keyboards/handwired/onekey/teensy_32/halconf.h b/keyboards/handwired/onekey/teensy_32/halconf.h index 16f32117d..de0f29ce6 100644 --- a/keyboards/handwired/onekey/teensy_32/halconf.h +++ b/keyboards/handwired/onekey/teensy_32/halconf.h | |||
| @@ -79,7 +79,7 @@ | |||
| 79 | * @brief Enables the I2C subsystem. | 79 | * @brief Enables the I2C subsystem. |
| 80 | */ | 80 | */ |
| 81 | #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) | 81 | #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) |
| 82 | #define HAL_USE_I2C FALSE | 82 | #define HAL_USE_I2C TRUE |
| 83 | #endif | 83 | #endif |
| 84 | 84 | ||
| 85 | /** | 85 | /** |
diff --git a/keyboards/handwired/onekey/teensy_32/mcuconf.h b/keyboards/handwired/onekey/teensy_32/mcuconf.h index 13a9e3333..327f5c9aa 100644 --- a/keyboards/handwired/onekey/teensy_32/mcuconf.h +++ b/keyboards/handwired/onekey/teensy_32/mcuconf.h | |||
| @@ -42,4 +42,10 @@ | |||
| 42 | * 5 for Teensy 3.x */ | 42 | * 5 for Teensy 3.x */ |
| 43 | #define KINETIS_USB_USB0_IRQ_PRIORITY 5 | 43 | #define KINETIS_USB_USB0_IRQ_PRIORITY 5 |
| 44 | 44 | ||
| 45 | /* | ||
| 46 | * I2C driver settings | ||
| 47 | */ | ||
| 48 | #define KINETIS_I2C_USE_I2C0 TRUE | ||
| 49 | #define KINETIS_I2C_I2C0_PRIORITY 4 | ||
| 50 | |||
| 45 | #endif /* _MCUCONF_H_ */ | 51 | #endif /* _MCUCONF_H_ */ |
diff --git a/keyboards/handwired/onekey/teensy_lc/config.h b/keyboards/handwired/onekey/teensy_lc/config.h index 0d82a0578..a4839135a 100644 --- a/keyboards/handwired/onekey/teensy_lc/config.h +++ b/keyboards/handwired/onekey/teensy_lc/config.h | |||
| @@ -22,3 +22,9 @@ | |||
| 22 | #define MATRIX_COL_PINS { D5 } | 22 | #define MATRIX_COL_PINS { D5 } |
| 23 | #define MATRIX_ROW_PINS { B2 } | 23 | #define MATRIX_ROW_PINS { B2 } |
| 24 | #define UNUSED_PINS | 24 | #define UNUSED_PINS |
| 25 | |||
| 26 | // i2c_master defines | ||
| 27 | #define I2C1_SCL 0 // A2 on pinout = B0 | ||
| 28 | #define I2C1_SDA 1 // A3 on pinout = B1 | ||
| 29 | #define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 | ||
| 30 | #define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 | ||
diff --git a/keyboards/handwired/onekey/teensy_lc/halconf.h b/keyboards/handwired/onekey/teensy_lc/halconf.h index 16f32117d..de0f29ce6 100644 --- a/keyboards/handwired/onekey/teensy_lc/halconf.h +++ b/keyboards/handwired/onekey/teensy_lc/halconf.h | |||
| @@ -79,7 +79,7 @@ | |||
| 79 | * @brief Enables the I2C subsystem. | 79 | * @brief Enables the I2C subsystem. |
| 80 | */ | 80 | */ |
| 81 | #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) | 81 | #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) |
| 82 | #define HAL_USE_I2C FALSE | 82 | #define HAL_USE_I2C TRUE |
| 83 | #endif | 83 | #endif |
| 84 | 84 | ||
| 85 | /** | 85 | /** |
diff --git a/keyboards/handwired/onekey/teensy_lc/mcuconf.h b/keyboards/handwired/onekey/teensy_lc/mcuconf.h index ea576df5b..f73bec3dc 100644 --- a/keyboards/handwired/onekey/teensy_lc/mcuconf.h +++ b/keyboards/handwired/onekey/teensy_lc/mcuconf.h | |||
| @@ -42,4 +42,10 @@ | |||
| 42 | * 5 for Teensy 3.x */ | 42 | * 5 for Teensy 3.x */ |
| 43 | #define KINETIS_USB_USB0_IRQ_PRIORITY 2 | 43 | #define KINETIS_USB_USB0_IRQ_PRIORITY 2 |
| 44 | 44 | ||
| 45 | /* | ||
| 46 | * I2C driver settings | ||
| 47 | */ | ||
| 48 | #define KINETIS_I2C_USE_I2C0 TRUE | ||
| 49 | #define KINETIS_I2C_I2C0_PRIORITY 4 | ||
| 50 | |||
| 45 | #endif /* _MCUCONF_H_ */ | 51 | #endif /* _MCUCONF_H_ */ |
diff --git a/tmk_core/common/chibios/chibios_config.h b/tmk_core/common/chibios/chibios_config.h index 272529608..1dd979f6a 100644 --- a/tmk_core/common/chibios/chibios_config.h +++ b/tmk_core/common/chibios/chibios_config.h | |||
| @@ -22,3 +22,10 @@ | |||
| 22 | #if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX) | 22 | #if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX) |
| 23 | # define USE_I2CV1 | 23 | # define USE_I2CV1 |
| 24 | #endif | 24 | #endif |
| 25 | |||
| 26 | // teensy | ||
| 27 | #if defined(K20x) || defined(KL2x) | ||
| 28 | # define USE_I2CV1 | ||
| 29 | # define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed | ||
| 30 | # define USE_GPIOV1 | ||
| 31 | #endif | ||
