X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Fi2c.h;h=d934497bc684d470df6d0f572425c30d55130210;hb=39184f9b190fdcfec2f17aad6f0de8b2edf04a02;hp=661c87f29a0b3d19301a966ccb9a10638c274551;hpb=ad8557379602c34775a573758c9b222723af0b60;p=bertos.git diff --git a/bertos/drv/i2c.h b/bertos/drv/i2c.h index 661c87f2..d934497b 100644 --- a/bertos/drv/i2c.h +++ b/bertos/drv/i2c.h @@ -37,6 +37,7 @@ * $WIZ$ module_name = "i2c" * $WIZ$ module_configuration = "bertos/cfg/cfg_i2c.h" * $WIZ$ module_hw = "bertos/hw/hw_i2c_bitbang.h" + * $WIZ$ module_depends = "i2c_bitbang" * $WIZ$ module_supports = "not atmega103 and not atmega168 and not at91" */ @@ -63,14 +64,14 @@ #define i2c_start_r(args...) PP_CAT(i2c_start_r ## _, COUNT_PARMS(args)) (args) #endif + +#if !CONFIG_I2C_DISABLE_OLD_API /** * I2C Backends. * Sometimes your cpu does not have a builtin * i2c driver or you don't want, for some reason, to * use that. * With this you can choose, at compile time, which backend to use. - * - * $WIZ$ i2c_backend = "I2C_BACKEND_BUILTIN", "I2C_BACKEND_BITBANG" */ #define I2C_BACKEND_BUILTIN 0 ///< Uses cpu builtin i2c driver #define I2C_BACKEND_BITBANG 1 ///< Uses emulated bitbang driver @@ -107,6 +108,10 @@ bool i2c_bitbang_put(uint8_t _data); int i2c_bitbang_get(bool ack); /*\}*/ +#ifndef CONFIG_I2C_BACKEND +#define CONFIG_I2C_BACKEND I2C_BACKEND_BUILTIN +#endif + #if CONFIG_I2C_BACKEND == I2C_BACKEND_BUILTIN #define i2c_init_0 i2c_builtin_init #define i2c_start_w_1 i2c_builtin_start_w @@ -129,6 +134,7 @@ int i2c_bitbang_get(bool ack); bool i2c_send(const void *_buf, size_t count); bool i2c_recv(void *_buf, size_t count); +#endif /* * I2c new api @@ -321,13 +327,7 @@ INLINE int i2c_error(I2c *i2c) return err; } -INLINE void i2c_init_3(I2c *i2c, int dev, uint32_t clock) -{ - if (dev > I2C_BITBANG0) - i2c_hw_bitbangInit(i2c, dev); - else - i2c_hw_init(i2c, dev, clock); +#define i2c_init_3(i2c, dev, clock) (dev > I2C_BITBANG0) ? i2c_hw_bitbangInit(i2c, dev) : i2c_hw_init(i2c, dev, clock) -} #endif