diff options
Diffstat (limited to 'firmware/target/arm/i2c-pp.c')
-rw-r--r-- | firmware/target/arm/i2c-pp.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/firmware/target/arm/i2c-pp.c b/firmware/target/arm/i2c-pp.c index 175e2effd1..44713407df 100644 --- a/firmware/target/arm/i2c-pp.c +++ b/firmware/target/arm/i2c-pp.c | |||
@@ -196,6 +196,29 @@ int i2c_readbyte(unsigned int dev_addr, int addr) | |||
196 | return (int)data; | 196 | return (int)data; |
197 | } | 197 | } |
198 | 198 | ||
199 | int i2c_sendbytes(unsigned int addr, int len, const unsigned char *data) | ||
200 | { | ||
201 | int i, n; | ||
202 | |||
203 | mutex_lock(&i2c_mtx); | ||
204 | |||
205 | i = 0; | ||
206 | while (len > 0) | ||
207 | { | ||
208 | n = (len < 4) ? len : 4; | ||
209 | |||
210 | if (pp_i2c_send_bytes(addr, n, (unsigned char *)(data + i)) < 0) | ||
211 | break; | ||
212 | |||
213 | len -= n; | ||
214 | i += n; | ||
215 | } | ||
216 | |||
217 | mutex_unlock(&i2c_mtx); | ||
218 | |||
219 | return i; | ||
220 | } | ||
221 | |||
199 | int pp_i2c_send(unsigned int addr, int data0, int data1) | 222 | int pp_i2c_send(unsigned int addr, int data0, int data1) |
200 | { | 223 | { |
201 | int retval; | 224 | int retval; |
@@ -234,7 +257,14 @@ void i2c_init(void) | |||
234 | 257 | ||
235 | #if CONFIG_I2C == I2C_PP5020 | 258 | #if CONFIG_I2C == I2C_PP5020 |
236 | outl(0x0, 0x600060a4); | 259 | outl(0x0, 0x600060a4); |
260 | #if defined(PHILIPS_HDD1630) | ||
261 | outl(inl(0x600060a4) | 0x20, 0x600060a4); | ||
262 | outl(inl(0x7000c020) | 0x3, 0x7000c020); | ||
263 | outl(0x55, 0x7000c02c); | ||
264 | outl(0x54, 0x7000c030); | ||
265 | #else | ||
237 | outl(0x80 | (0 << 8), 0x600060a4); | 266 | outl(0x80 | (0 << 8), 0x600060a4); |
267 | #endif | ||
238 | #elif CONFIG_I2C == I2C_PP5024 | 268 | #elif CONFIG_I2C == I2C_PP5024 |
239 | #if defined(SANSA_E200) || defined(PHILIPS_SA9200) | 269 | #if defined(SANSA_E200) || defined(PHILIPS_SA9200) |
240 | /* Sansa OF sets this to 0x20 first, communicates with the AS3514 | 270 | /* Sansa OF sets this to 0x20 first, communicates with the AS3514 |