From e585d5246b7391d35a5dc4b1ce2f79a310570f5e Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 10 Apr 2021 11:09:57 +0200 Subject: Allow software and hardware i2c to be used together (e.g. on different pins) --- src/app/i2cdetect/main.cc | 5 +++-- src/arch/arduino-nano/Kconfig | 2 +- src/arch/blinkenrocket/Kconfig | 2 +- src/arch/msp430fr5969lp/Kconfig | 2 +- src/arch/msp430fr5994lp/Kconfig | 2 +- src/driver/Kconfig | 2 ++ src/driver/soft_i2c.cc | 4 ++++ 7 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/app/i2cdetect/main.cc b/src/app/i2cdetect/main.cc index fb6f54c..95a34bb 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 ab25a8f..ce9a987 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 ead54f9..c9b04a5 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 70fb3e4..80d74e4 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 abbfcab..0c97499 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 dbf70e0..0b1b98b 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 975fa2e..8b87e93 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 */ -- cgit v1.2.3