diff --git a/Makefile b/Makefile index 4f518ae4a61689be8f416b027aba8cd60e804488..3a0077911a8edaa79115609157b0a331855ec2f5 100644 --- a/Makefile +++ b/Makefile @@ -273,6 +273,10 @@ ifdef CONFIG_driver_softi2c COMMON_FLAGS += -DDRIVER_SOFTI2C endif +ifdef CONFIG_meta_driver_hardware_i2c + COMMON_FLAGS += -DDRIVER_HARDWARE_I2C +endif + ifdef CONFIG_lib_inflate CXX_TARGETS += src/lib/inflate.cc endif diff --git a/include/driver/soft_i2c.h b/include/driver/soft_i2c.h index 05fbce6cee87f1621bda3e68821fe03b97521fef..b581a382816c14a635bf787a25f68cebabc579c4 100644 --- a/include/driver/soft_i2c.h +++ b/include/driver/soft_i2c.h @@ -35,6 +35,8 @@ class SoftI2C { unsigned char rx_len, unsigned char *rx_buf); }; +#ifndef DRIVER_HARDWARE_I2C extern SoftI2C i2c; +#endif #endif diff --git a/src/app/i2cdetect/main.cc b/src/app/i2cdetect/main.cc index fb6f54c8db2852ee3092cd4e7dd072711735ad22..95a34bbb10ce0e91ef48c8727d2f115ce52ddd34 100644 --- a/src/app/i2cdetect/main.cc +++ b/src/app/i2cdetect/main.cc @@ -6,9 +6,10 @@ #include "arch.h" #include "driver/gpio.h" #include "driver/stdout.h" -#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C) +#ifdef DRIVER_HARDWARE_I2C #include "driver/i2c.h" -#else +#endif +#ifdef DRIVER_SOFTI2C #include "driver/soft_i2c.h" #endif diff --git a/src/arch/arduino-nano/Kconfig b/src/arch/arduino-nano/Kconfig index ab25a8f89ecf5a9a4afa3dc7a7300981849fa128..ce9a9873014dab48a2b4ce39288782aafa7d9161 100644 --- a/src/arch/arduino-nano/Kconfig +++ b/src/arch/arduino-nano/Kconfig @@ -16,7 +16,7 @@ select meta_driver_adc config arch_arduino_nano_driver_i2c bool "I2C" -depends on !driver_softi2c +select meta_driver_hardware_i2c select meta_driver_i2c config arch_arduino_nano_driver_neopixel diff --git a/src/arch/blinkenrocket/Kconfig b/src/arch/blinkenrocket/Kconfig index ead54f96220d7fd8741af6bde700b2f1edc7b663..c9b04a590bbc6bd786c79fee55f744a7816cf9d3 100644 --- a/src/arch/blinkenrocket/Kconfig +++ b/src/arch/blinkenrocket/Kconfig @@ -3,7 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 config arch_blinkenrocket_driver_i2c bool "I2C" -depends on !driver_softi2c +select meta_driver_hardware_i2c select meta_driver_i2c config arch_blinkenrocket_driver_uptime diff --git a/src/arch/msp430fr5969lp/Kconfig b/src/arch/msp430fr5969lp/Kconfig index 70fb3e4958bf94537c7406149e53a37a62da23ca..80d74e4bb916fab030c32a0dc4505e4c44233a8b 100644 --- a/src/arch/msp430fr5969lp/Kconfig +++ b/src/arch/msp430fr5969lp/Kconfig @@ -11,7 +11,7 @@ select meta_driver_counter config arch_msp430fr5969lp_driver_i2c bool "I2C on eUSCI_B0" -depends on !driver_softi2c +select meta_driver_hardware_i2c select meta_driver_i2c ## broken diff --git a/src/arch/msp430fr5994lp/Kconfig b/src/arch/msp430fr5994lp/Kconfig index abbfcabe32278518dc0b03327a7394bc1174ff56..0c97499b89257cbfaf7880c14b30ecba216f334f 100644 --- a/src/arch/msp430fr5994lp/Kconfig +++ b/src/arch/msp430fr5994lp/Kconfig @@ -11,7 +11,7 @@ select meta_driver_counter config arch_msp430fr5994lp_driver_i2c bool "I2C on eUSCI_B1" -depends on !driver_softi2c +select meta_driver_hardware_i2c select meta_driver_i2c ## broken diff --git a/src/driver/Kconfig b/src/driver/Kconfig index dbf70e03d388ef77bb9046ddb09337f71adb96f5..0b1b98be04eb7dc511f478cca62b69a6ae582251 100644 --- a/src/driver/Kconfig +++ b/src/driver/Kconfig @@ -6,6 +6,8 @@ config meta_driver_adc bool config meta_driver_counter bool +config meta_driver_hardware_i2c +bool config meta_driver_i2c bool config meta_driver_neopixel diff --git a/src/driver/soft_i2c.cc b/src/driver/soft_i2c.cc index 975fa2eca4e23710a7473596559774570bfeaae2..8b87e9385c734bdda2d62b171abf5883bffade49 100644 --- a/src/driver/soft_i2c.cc +++ b/src/driver/soft_i2c.cc @@ -235,6 +235,8 @@ ON_TIMER_INTERRUPT_head ON_TIMER_INTERRUPT_tail #endif +#ifndef DRIVER_HARDWARE_I2C + #if SOFTI2C_PULLUP_EXTERNAL #ifdef MULTIPASS_ARCH_msp430fr5969lp SoftI2C i2c(GPIO::p1_6, GPIO::p1_7, GPIO::p1_4, GPIO::p1_5); @@ -258,3 +260,5 @@ SoftI2C i2c(GPIO::p5_0, GPIO::p5_1); SoftI2C i2c(GPIO::px00, GPIO::px01); #endif /* MULTIPASS_ARCH_* */ #endif /* !SOFTI2C_PULLUP_EXTERNAL */ + +#endif /* !DRIVER_HARDWARE_I2C */