summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/as3525/fmradio-i2c-as3525.c
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-05-05 04:06:44 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-05-05 04:06:44 +0000
commita69e1c4a4425a69a920f7a85c45b1ac6de717a07 (patch)
treece44706ae84100064aaeabb7df422280cb5b7853 /firmware/target/arm/as3525/fmradio-i2c-as3525.c
parentaec0af541335731031d879ca491cd46d5ea7ba16 (diff)
downloadrockbox-a69e1c4a4425a69a920f7a85c45b1ac6de717a07.tar.gz
rockbox-a69e1c4a4425a69a920f7a85c45b1ac6de717a07.zip
Fuzev2: FM - tested on 2 different models
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25818 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/fmradio-i2c-as3525.c')
-rw-r--r--firmware/target/arm/as3525/fmradio-i2c-as3525.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/firmware/target/arm/as3525/fmradio-i2c-as3525.c b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
index c86e3f53ab..31d701dc6d 100644
--- a/firmware/target/arm/as3525/fmradio-i2c-as3525.c
+++ b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
@@ -30,6 +30,7 @@
#include "as3525.h"
#include "generic_i2c.h"
#include "fmradio_i2c.h"
+#include "system.h"
#if defined(SANSA_CLIP) || defined(SANSA_C200V2)
#define I2C_SCL_GPIO(x) GPIOB_PIN(x)
@@ -63,6 +64,14 @@
#define I2C_SCL_PIN 6
#define I2C_SDA_PIN 7
+#elif defined(SANSA_FUZEV2)
+#define I2C_SCL_GPIO(x) GPIOB_PIN(x)
+#define I2C_SDA_GPIO(x) GPIOA_PIN(x)
+#define I2C_SCL_GPIO_DIR GPIOB_DIR
+#define I2C_SDA_GPIO_DIR GPIOA_DIR
+#define I2C_SCL_PIN 1
+#define I2C_SDA_PIN 0
+
#else
#error no FM I2C GPIOPIN defines
#endif
@@ -158,13 +167,28 @@ void fmradio_i2c_init(void)
int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count)
{
- return i2c_write_data(fm_i2c_bus, address, -1, buf, count);
+#ifdef SANSA_FUZEV2
+ int s = disable_irq_save();
+ CCU_IO &= ~(1<<12);
+#endif
+ int ret = i2c_write_data(fm_i2c_bus, address, -1, buf, count);
+#ifdef SANSA_FUZEV2
+ CCU_IO |= 1<<12;
+ restore_irq(s);
+#endif
+ return ret;
}
int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count)
{
- return i2c_read_data(fm_i2c_bus, address, -1, buf, count);
+#ifdef SANSA_FUZEV2
+ int s = disable_irq_save();
+ CCU_IO &= ~(1<<12);
+#endif
+ int ret = i2c_read_data(fm_i2c_bus, address, -1, buf, count);
+#ifdef SANSA_FUZEV2
+ CCU_IO |= 1<<12;
+ restore_irq(s);
+#endif
+ return ret;
}
-
-
-