summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-12-09 17:21:16 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-12-09 17:21:16 +0000
commit02184a242edd2e92f5305a29cadd6bc71448875a (patch)
tree965ab0d62a1df33d70da4d879cb67ccfc1007d72 /firmware/target
parent4ae9de5490c06ab06d96d7f5006e77eb69907ed6 (diff)
downloadrockbox-02184a242edd2e92f5305a29cadd6bc71448875a.tar.gz
rockbox-02184a242edd2e92f5305a29cadd6bc71448875a.zip
make fmradio-i2c code from clip more generic, so it works for m200v4 and hopefully all other as3525 targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19370 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/as3525/fmradio-i2c-as3525.c (renamed from firmware/target/arm/as3525/sansa-clip/fmradio-i2c-clip.c)39
1 files changed, 29 insertions, 10 deletions
diff --git a/firmware/target/arm/as3525/sansa-clip/fmradio-i2c-clip.c b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
index e3444b8acf..18f29dbc57 100644
--- a/firmware/target/arm/as3525/sansa-clip/fmradio-i2c-clip.c
+++ b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
@@ -31,57 +31,70 @@
31#include "generic_i2c.h" 31#include "generic_i2c.h"
32#include "fmradio_i2c.h" 32#include "fmradio_i2c.h"
33 33
34#if defined(SANSA_CLIP)
35#define I2C_GPIO(x) GPIOB_PIN(x)
36#define I2C_GPIO_DIR GPIOB_DIR
34#define I2C_SCL_PIN 4 37#define I2C_SCL_PIN 4
35#define I2C_SDA_PIN 5 38#define I2C_SDA_PIN 5
36 39
40#elif defined(SANSA_M200V4)
41#define I2C_GPIO(x) GPIOD_PIN(x)
42#define I2C_GPIO_DIR GPIOD_DIR
43#define I2C_SCL_PIN 7
44#define I2C_SDA_PIN 6
45
46#elif
47#error no FM I2C GPIOPIN defines
48#endif
49
37static void fm_scl_hi(void) 50static void fm_scl_hi(void)
38{ 51{
39 GPIOB_PIN(I2C_SCL_PIN) = 1 << I2C_SCL_PIN; 52 I2C_GPIO(I2C_SCL_PIN) = 1 << I2C_SCL_PIN;
40} 53}
41 54
42static void fm_scl_lo(void) 55static void fm_scl_lo(void)
43{ 56{
44 GPIOB_PIN(I2C_SCL_PIN) = 0; 57 I2C_GPIO(I2C_SCL_PIN) = 0;
45} 58}
46 59
47static void fm_sda_hi(void) 60static void fm_sda_hi(void)
48{ 61{
49 GPIOB_PIN(I2C_SDA_PIN) = 1 << I2C_SDA_PIN; 62 I2C_GPIO(I2C_SDA_PIN) = 1 << I2C_SDA_PIN;
50} 63}
51 64
52static void fm_sda_lo(void) 65static void fm_sda_lo(void)
53{ 66{
54 GPIOB_PIN(I2C_SDA_PIN) = 0; 67 I2C_GPIO(I2C_SDA_PIN) = 0;
55} 68}
56 69
57static void fm_sda_input(void) 70static void fm_sda_input(void)
58{ 71{
59 GPIOB_DIR &= ~(1 << I2C_SDA_PIN); 72 I2C_GPIO_DIR &= ~(1 << I2C_SDA_PIN);
60} 73}
61 74
62static void fm_sda_output(void) 75static void fm_sda_output(void)
63{ 76{
64 GPIOB_DIR |= 1 << I2C_SDA_PIN; 77 I2C_GPIO_DIR |= 1 << I2C_SDA_PIN;
65} 78}
66 79
67static void fm_scl_input(void) 80static void fm_scl_input(void)
68{ 81{
69 GPIOB_DIR &= ~(1 << I2C_SCL_PIN); 82 I2C_GPIO_DIR &= ~(1 << I2C_SCL_PIN);
70} 83}
71 84
72static void fm_scl_output(void) 85static void fm_scl_output(void)
73{ 86{
74 GPIOB_DIR |= 1 << I2C_SCL_PIN; 87 I2C_GPIO_DIR |= 1 << I2C_SCL_PIN;
75} 88}
76 89
77static int fm_sda(void) 90static int fm_sda(void)
78{ 91{
79 return GPIOB_PIN(I2C_SDA_PIN); 92 return I2C_GPIO(I2C_SDA_PIN);
80} 93}
81 94
82static int fm_scl(void) 95static int fm_scl(void)
83{ 96{
84 return GPIOB_PIN(I2C_SCL_PIN); 97 return I2C_GPIO(I2C_SCL_PIN);
85} 98}
86 99
87/* simple and crude delay, used for all delays in the generic i2c driver */ 100/* simple and crude delay, used for all delays in the generic i2c driver */
@@ -96,7 +109,13 @@ static void fm_delay(void)
96 109
97/* interface towards the generic i2c driver */ 110/* interface towards the generic i2c driver */
98static struct i2c_interface fm_i2c_interface = { 111static struct i2c_interface fm_i2c_interface = {
112#if defined(SANSA_CLIP)
99 .address = 0x10 << 1, 113 .address = 0x10 << 1,
114#elif defined(SANSA_M200V4)
115 .address = 0xC0,
116#elif
117#error no fm i2c address defined
118#endif
100 119
101 .scl_hi = fm_scl_hi, 120 .scl_hi = fm_scl_hi,
102 .scl_lo = fm_scl_lo, 121 .scl_lo = fm_scl_lo,