aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/chibios/i2c_master.c8
-rw-r--r--drivers/chibios/i2c_master.h9
-rw-r--r--drivers/oled/oled_driver.c10
-rw-r--r--drivers/oled/oled_driver.h4
-rw-r--r--keyboards/handwired/onekey/teensy_32/config.h6
-rw-r--r--keyboards/handwired/onekey/teensy_32/halconf.h2
-rw-r--r--keyboards/handwired/onekey/teensy_32/mcuconf.h6
-rw-r--r--keyboards/handwired/onekey/teensy_lc/config.h6
-rw-r--r--keyboards/handwired/onekey/teensy_lc/halconf.h2
-rw-r--r--keyboards/handwired/onekey/teensy_lc/mcuconf.h6
-rw-r--r--tmk_core/common/chibios/chibios_config.h7
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 @@
32static uint8_t i2c_address; 32static uint8_t i2c_address;
33 33
34static const I2CConfig i2cconfig = { 34static 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
154typedef enum { 158typedef 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