diff options
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 | |||
37 | static void fm_scl_hi(void) | 50 | static 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 | ||
42 | static void fm_scl_lo(void) | 55 | static 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 | ||
47 | static void fm_sda_hi(void) | 60 | static 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 | ||
52 | static void fm_sda_lo(void) | 65 | static 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 | ||
57 | static void fm_sda_input(void) | 70 | static 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 | ||
62 | static void fm_sda_output(void) | 75 | static 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 | ||
67 | static void fm_scl_input(void) | 80 | static 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 | ||
72 | static void fm_scl_output(void) | 85 | static 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 | ||
77 | static int fm_sda(void) | 90 | static int fm_sda(void) |
78 | { | 91 | { |
79 | return GPIOB_PIN(I2C_SDA_PIN); | 92 | return I2C_GPIO(I2C_SDA_PIN); |
80 | } | 93 | } |
81 | 94 | ||
82 | static int fm_scl(void) | 95 | static 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 */ |
98 | static struct i2c_interface fm_i2c_interface = { | 111 | static 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, |