diff --git a/demos/ARM7-AT91SAM7S-FATFS-GCC/halconf.h b/demos/ARM7-AT91SAM7S-FATFS-GCC/halconf.h
index bafc9df7a..813ce0084 100644
--- a/demos/ARM7-AT91SAM7S-FATFS-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7S-FATFS-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-AT91SAM7S-GCC/halconf.h b/demos/ARM7-AT91SAM7S-GCC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARM7-AT91SAM7S-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7S-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-AT91SAM7X-FATFS-GCC/halconf.h b/demos/ARM7-AT91SAM7X-FATFS-GCC/halconf.h
index bafc9df7a..813ce0084 100644
--- a/demos/ARM7-AT91SAM7X-FATFS-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7X-FATFS-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-AT91SAM7X-GCC/halconf.h b/demos/ARM7-AT91SAM7X-GCC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARM7-AT91SAM7X-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7X-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/halconf.h b/demos/ARM7-AT91SAM7X-LWIP-GCC/halconf.h
index 268525a61..26b8e09bf 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-AT91SAM7X-UIP-GCC/halconf.h b/demos/ARM7-AT91SAM7X-UIP-GCC/halconf.h
index 268525a61..26b8e09bf 100644
--- a/demos/ARM7-AT91SAM7X-UIP-GCC/halconf.h
+++ b/demos/ARM7-AT91SAM7X-UIP-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-LPC214x-FATFS-GCC/halconf.h b/demos/ARM7-LPC214x-FATFS-GCC/halconf.h
index bafc9df7a..813ce0084 100644
--- a/demos/ARM7-LPC214x-FATFS-GCC/halconf.h
+++ b/demos/ARM7-LPC214x-FATFS-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-LPC214x-G++/halconf.h b/demos/ARM7-LPC214x-G++/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARM7-LPC214x-G++/halconf.h
+++ b/demos/ARM7-LPC214x-G++/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARM7-LPC214x-GCC/halconf.h b/demos/ARM7-LPC214x-GCC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARM7-LPC214x-GCC/halconf.h
+++ b/demos/ARM7-LPC214x-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM0-LPC1114-LPCXPRESSO/halconf.h b/demos/ARMCM0-LPC1114-LPCXPRESSO/halconf.h
index 479c87021..5a1f55434 100644
--- a/demos/ARMCM0-LPC1114-LPCXPRESSO/halconf.h
+++ b/demos/ARMCM0-LPC1114-LPCXPRESSO/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM3-LPC1343-LPCXPRESSO/halconf.h b/demos/ARMCM3-LPC1343-LPCXPRESSO/halconf.h
index 479c87021..5a1f55434 100644
--- a/demos/ARMCM3-LPC1343-LPCXPRESSO/halconf.h
+++ b/demos/ARMCM3-LPC1343-LPCXPRESSO/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM3-STM32F100-DISCOVERY/halconf.h b/demos/ARMCM3-STM32F100-DISCOVERY/halconf.h
index 10c78a7ba..8ffbc97ee 100644
--- a/demos/ARMCM3-STM32F100-DISCOVERY/halconf.h
+++ b/demos/ARMCM3-STM32F100-DISCOVERY/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM3-STM32F103-FATFS-GCC/halconf.h b/demos/ARMCM3-STM32F103-FATFS-GCC/halconf.h
index bafc9df7a..813ce0084 100644
--- a/demos/ARMCM3-STM32F103-FATFS-GCC/halconf.h
+++ b/demos/ARMCM3-STM32F103-FATFS-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM3-STM32F103/halconf.h b/demos/ARMCM3-STM32F103/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARMCM3-STM32F103/halconf.h
+++ b/demos/ARMCM3-STM32F103/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/ARMCM3-STM32F107-GCC/halconf.h b/demos/ARMCM3-STM32F107-GCC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/ARMCM3-STM32F107-GCC/halconf.h
+++ b/demos/ARMCM3-STM32F107-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/AVR-AT90CANx-GCC/halconf.h b/demos/AVR-AT90CANx-GCC/halconf.h
index e355d7bbc..bb3684d51 100644
--- a/demos/AVR-AT90CANx-GCC/halconf.h
+++ b/demos/AVR-AT90CANx-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/AVR-ATmega128-GCC/halconf.h b/demos/AVR-ATmega128-GCC/halconf.h
index e355d7bbc..bb3684d51 100644
--- a/demos/AVR-ATmega128-GCC/halconf.h
+++ b/demos/AVR-ATmega128-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/MSP430-MSP430x1611-GCC/halconf.h b/demos/MSP430-MSP430x1611-GCC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/MSP430-MSP430x1611-GCC/halconf.h
+++ b/demos/MSP430-MSP430x1611-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/PPC-SPC563-GCC/halconf.h b/demos/PPC-SPC563-GCC/halconf.h
index 2e37f10ed..6a723f430 100644
--- a/demos/PPC-SPC563-GCC/halconf.h
+++ b/demos/PPC-SPC563-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/Posix-GCC/halconf.h b/demos/Posix-GCC/halconf.h
index 30695a2a3..4849a183a 100644
--- a/demos/Posix-GCC/halconf.h
+++ b/demos/Posix-GCC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/STM8L-STM8L152-DISCOVERY-STVD/demo/halconf.h b/demos/STM8L-STM8L152-DISCOVERY-STVD/demo/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/STM8L-STM8L152-DISCOVERY-STVD/demo/halconf.h
+++ b/demos/STM8L-STM8L152-DISCOVERY-STVD/demo/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/halconf.h b/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/halconf.h
+++ b/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/STM8S-STM8S208-RC/halconf.h b/demos/STM8S-STM8S208-RC/halconf.h
index 890f3896b..73544218f 100644
--- a/demos/STM8S-STM8S208-RC/halconf.h
+++ b/demos/STM8S-STM8S208-RC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/demos/Win32-MinGW/halconf.h b/demos/Win32-MinGW/halconf.h
index 30695a2a3..4849a183a 100644
--- a/demos/Win32-MinGW/halconf.h
+++ b/demos/Win32-MinGW/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/os/hal/dox/i2c.dox b/os/hal/dox/i2c.dox
deleted file mode 100644
index 151c7a66e..000000000
--- a/os/hal/dox/i2c.dox
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-/**
- * @defgroup I2C I2C Driver
- * @brief Generic I2C Driver.
- * @details This module implements a generic I2C driver.
- * @pre In order to use the I2C driver the @p HAL_USE_I2C option
- * must be enabled in @p halconf.h.
- *
- * @section i2c_1 Driver State Machine
- * The driver implements a state machine internally, not all the driver
- * functionalities can be used in any moment, any transition not explicitly
- * shown in the following diagram has to be considered an error and shall
- * be captured by an assertion (if enabled).
- * @if LATEX_PDF
- * @else
- * @endif
- *
- * The driver is not thread safe for performance reasons, if you need to access
- * the I2C bus from multiple thread then use the @p i2cAcquireBus() and
- * @p i2cReleaseBus() APIs in order to gain exclusive access.
- *
- * @ingroup IO
- */
diff --git a/os/hal/include/i2c.h b/os/hal/include/i2c.h
deleted file mode 100644
index 01d3739e8..000000000
--- a/os/hal/include/i2c.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-/**
- * @file i2c.h
- * @brief I2C Driver macros and structures.
- *
- * @addtogroup I2C
- * @{
- */
-
-#ifndef _I2C_H_
-#define _I2C_H_
-
-#if HAL_USE_I2C || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver constants. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver pre-compile time settings. */
-/*===========================================================================*/
-
-/**
- * @brief Enables the mutual exclusion APIs on the I2C bus.
- */
-#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define I2C_USE_MUTUAL_EXCLUSION TRUE
-#endif
-
-/*===========================================================================*/
-/* Derived constants and error checks. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver data structures and types. */
-/*===========================================================================*/
-
-/**
- * @brief Driver state machine possible states.
- */
-typedef enum {
- I2C_UNINIT = 0, /**< Not initialized. */
- I2C_STOP = 1, /**< Stopped. */
- I2C_READY = 2, /**< Ready. */
- I2C_MREADY = 3, /**< START and address sent. */
- I2C_MTRANSMIT = 4, /**< Master transmitting. */
- I2C_MRECEIVE = 5, /**< Master receiving. */
- I2C_MERROR = 6 /**< Error condition. */
-} i2cstate_t;
-
-#include "i2c_lld.h"
-
-/*===========================================================================*/
-/* Driver macros. */
-/*===========================================================================*/
-
-/**
- * @brief Read mode.
- */
-#define I2C_READ 1
-
-/**
- * @brief Write mode.
- */
-#define I2C_WRITE 0
-
-/**
- * @brief Seven bits addresses header builder.
- *
- * @param[in] addr seven bits address value
- * @param[in] rw read/write flag
- *
- * @return A 16 bit value representing the header, the most
- * significant byte is always zero.
- */
-#define I2C_ADDR7(addr, rw) (uint16_t)((addr) << 1 | (rw))
-
-
-/**
- * @brief Ten bits addresses header builder.
- *
- * @param[in] addr ten bits address value
- * @param[in] rw read/write flag
- *
- * @return A 16 bit value representing the header, the most
- * significant byte is the first one to be transmitted.
- */
-#define I2C_ADDR10(addr, rw) \
- (uint16_t)(0xF000 | \
- (((addr) & 0x0300) << 1) | \
- (((rw) << 8)) | \
- ((addr) & 0x00FF))
-
-/*===========================================================================*/
-/* External declarations. */
-/*===========================================================================*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- void i2cInit(void);
- void i2cObjectInit(I2CDriver *i2cp);
- void i2cStart(I2CDriver *i2cp, const I2CConfig *config);
- void i2cStop(I2CDriver *i2cp);
- void i2cMasterStartI(I2CDriver *i2cp,
- uint16_t header,
- i2ccallback_t callback);
- void i2cMasterStopI(I2CDriver *i2cp, i2ccallback_t callback);
- void i2cMasterRestartI(I2CDriver *i2cp, i2ccallback_t callback);
- void i2cMasterTransmitI(I2CDriver *i2cp, size_t n, const uint8_t *txbuf,
- i2ccallback_t callback);
- void i2cMasterReceiveI(I2CDriver *i2cp, size_t n, uint8_t *rxbuf,
- i2ccallback_t callback);
-#if I2C_USE_MUTUAL_EXCLUSION
- void i2cAcquireBus(I2CDriver *i2cp);
- void i2cReleaseBus(I2CDriver *i2cp);
-#endif /* I2C_USE_MUTUAL_EXCLUSION */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* HAL_USE_I2C */
-
-#endif /* _I2C_H_ */
-
-/** @} */
diff --git a/os/hal/src/i2c.c b/os/hal/src/i2c.c
deleted file mode 100644
index 2b5971b6f..000000000
--- a/os/hal/src/i2c.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-/**
- * @file i2c.c
- * @brief I2C Driver code.
- *
- * @addtogroup I2C
- * @{
- */
-
-#include "ch.h"
-#include "hal.h"
-
-#if HAL_USE_I2C || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver exported variables. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local variables. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/**
- * @brief I2C Driver initialization.
- * @note This function is implicitly invoked by @p halInit(), there is
- * no need to explicitly initialize the driver.
- *
- * @init
- */
-void i2cInit(void) {
-
- i2c_lld_init();
-}
-
-/**
- * @brief Initializes the standard part of a @p I2CDriver structure.
- *
- * @param[out] i2cp pointer to the @p I2CDriver object
- *
- * @init
- */
-void i2cObjectInit(I2CDriver *i2cp) {
-
- i2cp->i2c_state = I2C_STOP;
- i2cp->i2c_config = NULL;
-#if defined(I2C_DRIVER_EXT_INIT_HOOK)
- I2C_DRIVER_EXT_INIT_HOOK(i2cp);
-#endif
-}
-
-/**
- * @brief Configures and activates the I2C peripheral.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] config pointer to the @p I2CConfig object
- *
- * @api
- */
-void i2cStart(I2CDriver *i2cp, const I2CConfig *config) {
-
- chDbgCheck((i2cp != NULL) && (config != NULL), "i2cStart");
-
- chSysLock();
- chDbgAssert((i2cp->i2c_state == I2C_STOP) || (i2cp->i2c_state == I2C_READY),
- "i2cStart(), #1",
- "invalid state");
- i2cp->i2c_config = config;
- i2c_lld_start(i2cp);
- i2cp->i2c_state = I2C_READY;
- chSysUnlock();
-}
-
-/**
- * @brief Deactivates the I2C peripheral.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @api
- */
-void i2cStop(I2CDriver *i2cp) {
-
- chDbgCheck(i2cp != NULL, "i2cStop");
-
- chSysLock();
- chDbgAssert((i2cp->i2c_state == I2C_STOP) || (i2cp->i2c_state == I2C_READY),
- "i2cStop(), #1",
- "invalid state");
- i2c_lld_stop(i2cp);
- i2cp->i2c_state = I2C_STOP;
- chSysUnlock();
-}
-
-/**
- * @brief Initiates a master bus transaction.
- * @details This function sends a start bit followed by an one or two bytes
- * header.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] header transaction header
- * @param[in] callback operation complete callback
- *
- * @iclass
- */
-void i2cMasterStartI(I2CDriver *i2cp,
- uint16_t header,
- i2ccallback_t callback) {
-
- chDbgCheck((i2cp != NULL) && (callback != NULL), "i2cMasterStartI");
- chDbgAssert(i2cp->i2c_state == I2C_READY,
- "i2cMasterStartI(), #1", "invalid state");
-
- i2cp->id_callback = callback;
- i2c_lld_master_start(i2cp, header);
-}
-
-/**
- * @brief Terminates a master bus transaction.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] callback operation complete callback
- *
- * @iclass
- */
-void i2cMasterStopI(I2CDriver *i2cp, i2ccallback_t callback) {
-
- chDbgCheck((i2cp != NULL) && (callback != NULL), "i2cMasterStopI");
- chDbgAssert(i2cp->i2c_state == I2C_MREADY,
- "i2cMasterStopI(), #1", "invalid state");
-
- i2cp->id_callback = callback;
- i2c_lld_master_stop(i2cp);
-}
-
-
-/**
- * @brief Sends a restart bit.
- * @details Restart bits are required by some types of I2C transactions.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] callback operation complete callback
- *
- * @iclass
- */
-void i2cMasterRestartI(I2CDriver *i2cp, i2ccallback_t callback) {
-
- chDbgCheck((i2cp != NULL) && (callback != NULL), "i2cMasterRestartI");
- chDbgAssert(i2cp->i2c_state == I2C_MREADY,
- "i2cMasterRestartI(), #1", "invalid state");
-
- i2cp->id_callback = callback;
- i2c_lld_master_restart(i2cp);
-}
-
-/**
- * @brief Master transmission.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] n number of bytes to be transmitted
- * @param[in] txbuf transmit data buffer pointer
- * @param[in] callback operation complete callback
- *
- * @iclass
- */
-void i2cMasterTransmitI(I2CDriver *i2cp, size_t n, const uint8_t *txbuf,
- i2ccallback_t callback) {
-
- chDbgCheck((i2cp != NULL) && (n > 0) &&
- (txbuf != NULL) && (callback != NULL), "i2cMasterTransmitI");
- chDbgAssert(i2cp->i2c_state == I2C_MREADY,
- "i2cMasterTransmitI(), #1", "invalid state");
-
- i2cp->id_callback = callback;
- i2c_lld_master_transmit(i2cp, n, txbuf);
-}
-
-/**
- * @brief Master receive.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] n number of bytes to be transmitted
- * @param[in] rxbuf receive data buffer pointer
- * @param[in] callback operation complete callback
- *
- * @iclass
- */
-void i2cMasterReceiveI(I2CDriver *i2cp, size_t n, uint8_t *rxbuf,
- i2ccallback_t callback) {
-
- chDbgCheck((i2cp != NULL) && (n > 0) &&
- (rxbuf != NULL) && (callback != NULL), "i2cMasterReceiveI");
- chDbgAssert(i2cp->i2c_state == I2C_MREADY,
- "i2cMasterReceiveI(), #1", "invalid state");
-
- i2cp->id_callback = callback;
- i2c_lld_master_receive(i2cp, n, rxbuf);
-}
-
-#if I2C_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__)
-/**
- * @brief Gains exclusive access to the I2C bus.
- * @details This function tries to gain ownership to the I2C bus, if the bus
- * is already being used then the invoking thread is queued.
- * @pre In order to use this function the option @p I2C_USE_MUTUAL_EXCLUSION
- * must be enabled.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @api
- *
- */
-void i2cAcquireBus(I2CDriver *i2cp) {
-
- chDbgCheck(i2cp != NULL, "i2cAcquireBus");
-
-#if CH_USE_MUTEXES
- chMtxLock(&i2cp->id_mutex);
-#elif CH_USE_SEMAPHORES
- chSemWait(&i2cp->id_semaphore);
-#endif
-}
-
-/**
- * @brief Releases exclusive access to the I2C bus.
- * @pre In order to use this function the option @p I2C_USE_MUTUAL_EXCLUSION
- * must be enabled.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @api
- */
-void i2cReleaseBus(I2CDriver *i2cp) {
-
- chDbgCheck(i2cp != NULL, "i2cReleaseBus");
-
-#if CH_USE_MUTEXES
- (void)i2cp;
- chMtxUnlock();
-#elif CH_USE_SEMAPHORES
- chSemSignal(&i2cp->id_semaphore);
-#endif
-}
-#endif /* I2C_USE_MUTUAL_EXCLUSION */
-
-#endif /* HAL_USE_I2C */
-
-/** @} */
diff --git a/os/hal/templates/halconf.h b/os/hal/templates/halconf.h
index a1840f977..8499abb6e 100644
--- a/os/hal/templates/halconf.h
+++ b/os/hal/templates/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN TRUE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/os/hal/templates/i2c_lld.c b/os/hal/templates/i2c_lld.c
deleted file mode 100644
index d41f693ab..000000000
--- a/os/hal/templates/i2c_lld.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-/**
- * @file templates/i2c_lld.c
- * @brief I2C Driver subsystem low level driver source template.
- *
- * @addtogroup I2C
- * @{
- */
-
-#include "ch.h"
-#include "hal.h"
-
-#if HAL_USE_I2C || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver exported variables. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local variables. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver interrupt handlers. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/**
- * @brief Low level I2C driver initialization.
- *
- * @notapi
- */
-void i2c_lld_init(void) {
-
-}
-
-/**
- * @brief Configures and activates the I2C peripheral.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @notapi
- */
-void i2c_lld_start(I2CDriver *i2cp) {
-
- if (i2cp->i2c_state == I2C_STOP) {
- /* Clock activation.*/
- }
- /* Configuration.*/
-}
-
-/**
- * @brief Deactivates the I2C peripheral.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @notapi
- */
-void i2c_lld_stop(I2CDriver *i2cp) {
-
-}
-
-/**
- * @brief Initiates a master bus transaction.
- * @details This function sends a start bit followed by an one or two bytes
- * header.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] header transaction header
- *
- * @notapi
- */
-void i2c_lld_master_start(I2CDriver *i2cp, uint16_t header) {
-
-}
-
-/**
- * @brief Terminates a master bus transaction.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @notapi
- */
-void i2c_lld_master_stop(I2CDriver *i2cp) {
-
-}
-
-/**
- * @brief Sends a restart bit.
- * @details Restart bits are required by some types of I2C transactions.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- *
- * @notapi
- */
-void i2c_lld_master_restart(I2CDriver *i2cp) {
-
-}
-
-/**
- * @brief Master transmission.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] n number of bytes to be transmitted
- * @param[in] txbuf transmit data buffer pointer
- *
- * @notapi
- */
-void i2c_lld_master_transmit(I2CDriver *i2cp, size_t n,
- const uint8_t *txbuf) {
-
-}
-
-/**
- * @brief Master receive.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] n number of bytes to be transmitted
- * @param[in] rxbuf receive data buffer pointer
- *
- * @notapi
- */
-void i2c_lld_master_receive(I2CDriver *i2cp, size_t n, uint8_t *rxbuf) {
-
-}
-
-#endif /* HAL_USE_I2C */
-
-/** @} */
diff --git a/os/hal/templates/i2c_lld.h b/os/hal/templates/i2c_lld.h
deleted file mode 100644
index ea2b1a61e..000000000
--- a/os/hal/templates/i2c_lld.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-/**
- * @file templates/i2c_lld.h
- * @brief I2C Driver subsystem low level driver header template.
- *
- * @addtogroup I2C
- * @{
- */
-
-#ifndef _I2C_LLD_H_
-#define _I2C_LLD_H_
-
-#if HAL_USE_I2C || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver constants. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver pre-compile time settings. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Derived constants and error checks. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver data structures and types. */
-/*===========================================================================*/
-
-
-/**
- * @brief Type of a structure representing an I2C driver.
- */
-typedef struct I2CDriver I2CDriver;
-
-/**
- * @brief I2C completion callback type.
- *
- * @param[in] i2cp pointer to the @p I2CDriver object
- * @param[in] sts operation status
- */
-typedef void (*i2ccallback_t)(I2CDriver *i2cp, i2cstatus_t sts);
-
-/**
- * @brief Driver configuration structure.
- * @note Implementations may extend this structure to contain more,
- * architecture dependent, fields.
- */
-typedef struct {
- /** @brief I2C bus bit rate.*/
- uint32_t ic_speed;
- /* End of the mandatory fields.*/
-} I2CConfig;
-
-/**
- * @brief Structure representing an I2C driver.
- * @note Implementations may extend this structure to contain more,
- * architecture dependent, fields.
- */
-struct I2CDriver {
- /** @brief Driver state.*/
- i2cstate_t id_state;
- /** @brief Current configuration data.*/
- const I2CConfig *id_config;
- /** @brief Current callback.*/
- i2ccallback_t id_callback;
-#if defined(I2C_DRIVER_EXT_FIELDS)
- I2C_DRIVER_EXT_FIELDS
-#endif
- /* End of the mandatory fields.*/
-};
-
-/*===========================================================================*/
-/* Driver macros. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* External declarations. */
-/*===========================================================================*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- void i2c_lld_init(void);
- void i2c_lld_start(I2CDriver *i2cp);
- void i2c_lld_stop(I2CDriver *i2cp);
- void i2c_lld_master_start(I2CDriver *i2cp, uint16_t header);
- void i2c_lld_master_stop(I2CDriver *i2cp);
- void i2c_lld_master_restart(I2CDriver *i2cp);
- void i2c_lld_master_transmit(I2CDriver *i2cp, size_t n,
- const uint8_t *txbuf);
- void i2c_lld_master_receive(I2CDriver *i2cp, size_t n, uint8_t *rxbuf);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* HAL_USE_I2C */
-
-#endif /* _I2C_LLD_H_ */
-
-/** @} */
diff --git a/test/coverage/halconf.h b/test/coverage/halconf.h
index f9ce1975c..f2b2ce15e 100644
--- a/test/coverage/halconf.h
+++ b/test/coverage/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM32/ADC/halconf.h b/testhal/STM32/ADC/halconf.h
index 79cc81ed9..b4c06baea 100644
--- a/testhal/STM32/ADC/halconf.h
+++ b/testhal/STM32/ADC/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM32/CAN/halconf.h b/testhal/STM32/CAN/halconf.h
index 10ecca545..30fe9aa7b 100644
--- a/testhal/STM32/CAN/halconf.h
+++ b/testhal/STM32/CAN/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN TRUE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM32/PWM/halconf.h b/testhal/STM32/PWM/halconf.h
index 9a5d3c0b8..ddcab8564 100644
--- a/testhal/STM32/PWM/halconf.h
+++ b/testhal/STM32/PWM/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM32/SPI/halconf.h b/testhal/STM32/SPI/halconf.h
index 610db1d06..88b3c2fea 100644
--- a/testhal/STM32/SPI/halconf.h
+++ b/testhal/STM32/SPI/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM32/UART/halconf.h b/testhal/STM32/UART/halconf.h
index d358005e7..58623e216 100644
--- a/testhal/STM32/UART/halconf.h
+++ b/testhal/STM32/UART/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/
diff --git a/testhal/STM8S/SPI/demo/halconf.h b/testhal/STM8S/SPI/demo/halconf.h
index 610db1d06..88b3c2fea 100644
--- a/testhal/STM8S/SPI/demo/halconf.h
+++ b/testhal/STM8S/SPI/demo/halconf.h
@@ -54,13 +54,6 @@
#define HAL_USE_CAN FALSE
#endif
-/**
- * @brief Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C FALSE
-#endif
-
/**
* @brief Enables the MAC subsystem.
*/