Merge contributed patch to extend support of atxmega.
[bertos.git] / bertos / cpu / avr / drv / i2c_avr.c
index 8e56d13599d24764c57fdbd8984a4801cf78fd66..eb8b8da90d90a6c05aa01935c721014e59947e9b 100644 (file)
@@ -210,52 +210,6 @@ int i2c_builtin_get(bool ack)
        return (int)(uint8_t)TWDR;
 }
 
-
-MOD_DEFINE(i2c);
-
-/**
- * Initialize TWI module.
- */
-void i2c_builtin_init(void)
-{
-       ATOMIC(
-               /*
-                * This is pretty useless according to AVR's datasheet,
-                * but it helps us driving the TWI data lines on boards
-                * where the bus pull-up resistors are missing.  This is
-                * probably due to some unwanted interaction between the
-                * port pin and the TWI lines.
-                */
-#if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281
-               PORTD |= BV(PD0) | BV(PD1);
-               DDRD  |= BV(PD0) | BV(PD1);
-#elif CPU_AVR_ATMEGA8
-               PORTC |= BV(PC4) | BV(PC5);
-               DDRC  |= BV(PC4) | BV(PC5);
-#elif CPU_AVR_ATMEGA32
-               PORTC |= BV(PC1) | BV(PC0);
-               DDRC  |= BV(PC1) | BV(PC0);
-#else
-               #error Unsupported architecture
-#endif
-
-               /*
-                * Set speed:
-                * F = CPU_FREQ / (16 + 2*TWBR * 4^TWPS)
-                */
-               #ifndef CONFIG_I2C_FREQ
-                       #warning Using default value of 300000L for CONFIG_I2C_FREQ
-                       #define CONFIG_I2C_FREQ  300000L /* ~300 kHz */
-               #endif
-               #define TWI_PRESC 1       /* 4 ^ TWPS */
-
-               TWBR = (CPU_FREQ / (2 * CONFIG_I2C_FREQ * TWI_PRESC)) - (8 / TWI_PRESC);
-               TWSR = 0;
-               TWCR = BV(TWEN);
-       );
-       MOD_INIT(i2c);
-}
-
 #endif /* !CONFIG_I2C_DISABLE_OLD_API */
 
 /*
@@ -430,7 +384,7 @@ void i2c_hw_init(I2c *i2c, int dev, uint32_t clock)
                 * probably due to some unwanted interaction between the
                 * port pin and the TWI lines.
                 */
-       #if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281
+       #if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560
                PORTD |= BV(PD0) | BV(PD1);
                DDRD  |= BV(PD0) | BV(PD1);
        #elif CPU_AVR_ATMEGA8