diff --git a/firmware/SOURCES b/firmware/SOURCES index 06b4ce0765..937bb0bfb6 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -79,8 +79,8 @@ drivers/fmradio_i2c.c tuner_philips.c #endif #endif -#if CONFIG_I2C == I2C_H100 -drivers/i2c-h100.c +#if CONFIG_I2C == I2C_COLDFIRE +drivers/i2c-coldfire.c #else drivers/i2c.c #endif diff --git a/firmware/drivers/i2c-h100.c b/firmware/drivers/i2c-coldfire.c similarity index 93% rename from firmware/drivers/i2c-h100.c rename to firmware/drivers/i2c-coldfire.c index c50cd7ed0a..5b4f4a1830 100644 --- a/firmware/drivers/i2c-h100.c +++ b/firmware/drivers/i2c-coldfire.c @@ -21,7 +21,7 @@ #include "kernel.h" #include "debug.h" #include "system.h" -#include "i2c-h100.h" +#include "i2c-coldfire.h" #define I2C_DEVICE_1 ((volatile unsigned char *)&MADR) #define I2C_DEVICE_2 ((volatile unsigned char *)&MADR2) @@ -37,6 +37,7 @@ static volatile unsigned char *i2c_get_addr(int device); void i2c_init(void) { +#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) /* Audio Codec */ MADR = 0x6c; /* iRiver firmware uses this addr */ MBDR = 0; /* iRiver firmware does this */ @@ -48,22 +49,21 @@ void i2c_init(void) MBDR2 = 0; MBCR2 = IEN; #endif + +#endif } void i2c_close(void) { MBCR = 0; - -#if 0 MBCR2 = 0; -#endif } /** * Writes bytes to the selected device. * - * Use device=1 for bus 1 at 0x40000280 (Audio Codec) - * Use device=2 for bus 2 at 0x80000440 (Tuner ?) + * Use device=1 for bus 1 at 0x40000280 + * Use device=2 for bus 2 at 0x80000440 * * Returns number of bytes successfully send or -1 if START failed */ @@ -106,33 +106,33 @@ int i2c_write_byte(int device, unsigned char data) /* Wait for bus busy */ while (!(regs[O_MBSR] & IBB) && count < MAX_LOOP) { - yield(); + yield(); count++; } - + if (count >= MAX_LOOP) return -1; count = 0; - + /* Wait for interrupt flag */ while (!(regs[O_MBSR] & IFF) && count < MAX_LOOP) { yield(); - count++; + count++; } if (count >= MAX_LOOP) return -2; regs[O_MBSR] &= ~IFF; /* Clear interrupt flag */ - + if (!(regs[O_MBSR] & ICF)) /* Check that transfer is complete */ - return -3; + return -3; if (regs[O_MBSR] & RXAK) /* Check that the byte has been ACKed */ return -4; - + return 0; } @@ -142,14 +142,14 @@ int i2c_gen_start(int device) { volatile unsigned char *regs = i2c_get_addr(device); long count = 0; - + /* Wait for bus to become free */ while ((regs[O_MBSR] & IBB) && (count < MAX_LOOP)) { yield(); count++; } - + if (count >= MAX_LOOP) return -1; @@ -169,6 +169,6 @@ volatile unsigned char *i2c_get_addr(int device) { if (device == 1) return I2C_DEVICE_1; - - return I2C_DEVICE_2; + + return I2C_DEVICE_2; } diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h index e33b985509..6bd94a2f95 100644 --- a/firmware/export/config-h100.h +++ b/firmware/export/config-h100.h @@ -52,7 +52,8 @@ /* Define this if you have a Motorola SCF5249 */ #define CONFIG_CPU MCF5249 -#define CONFIG_I2C I2C_H100 +/* Define this if you want to use coldfire's i2c interface */ +#define CONFIG_I2C I2C_COLDFIRE #define HAVE_UDA1380 diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h index 9b93eae070..2ddf821533 100644 --- a/firmware/export/config-h120.h +++ b/firmware/export/config-h120.h @@ -48,7 +48,8 @@ /* Define this if you have a Motorola SCF5249 */ #define CONFIG_CPU MCF5249 -#define CONFIG_I2C I2C_H100 +/* Define this if you want to use coldfire's i2c interface */ +#define CONFIG_I2C I2C_COLDFIRE #define HAVE_UDA1380 diff --git a/firmware/export/config-h300.h b/firmware/export/config-h300.h index be6511cb2f..251b6912b3 100644 --- a/firmware/export/config-h300.h +++ b/firmware/export/config-h300.h @@ -44,7 +44,8 @@ /* Define this if you have a Motorola SCF5249 */ #define CONFIG_CPU MCF5249 -#define CONFIG_I2C I2C_H100 +/* Define this if you want to use coldfire's i2c interface */ +#define CONFIG_I2C I2C_COLDFIRE #define HAVE_UDA1380 diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h index 7cdc861435..e2a170af66 100644 --- a/firmware/export/config-iaudiox5.h +++ b/firmware/export/config-iaudiox5.h @@ -42,10 +42,11 @@ #ifndef SIMULATOR -/* Define this if you have a Motorola SCF5249 */ +/* Define this if you have a Motorola SCF5250 */ #define CONFIG_CPU MCF5250 -#define CONFIG_I2C I2C_IAUDIO +/* Define this if you want to use coldfire's i2c interface */ +#define CONFIG_I2C I2C_COLDFIRE #define HAVE_TLV320 diff --git a/firmware/export/config.h b/firmware/export/config.h index 6b77f0dfc1..16e235d1ba 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -81,8 +81,7 @@ #define I2C_PLAYREC 0 /* Archos Player/Recorder style */ #define I2C_ONDIO 1 /* Ondio style */ #define I2C_GMINI 2 /* Gmini style */ -#define I2C_H100 3 /* iRiver h100 style */ -#define I2C_IAUDIO 4 /* iAuido style */ +#define I2C_COLDFIRE 3 /* Coldfire style */ /* CONFIG_LED */ #define LED_REAL 1 /* SW controlled LED (Archos recorders, player, Gmini) */ diff --git a/firmware/export/i2c-h100.h b/firmware/export/i2c-coldfire.h similarity index 96% rename from firmware/export/i2c-h100.h rename to firmware/export/i2c-coldfire.h index 5647b502db..d4a5781116 100644 --- a/firmware/export/i2c-h100.h +++ b/firmware/export/i2c-coldfire.h @@ -18,13 +18,13 @@ ****************************************************************************/ /* - * Driver for MCF5249's I2C interface + * Driver for MCF52xx's I2C interface * 2005-02-17 hubble@mochine.com * */ -#ifndef _I2C_H100_H -#define _I2C_H100_H +#ifndef _I2C_COLDFIRE_H +#define _I2C_COLDFIRE_H void i2c_init(void); int i2c_write(int device, unsigned char *buf, int count);