summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2011-12-03 15:03:44 +0000
committerTomasz Moń <desowin@gmail.com>2011-12-03 15:03:44 +0000
commit5e805f2041db1385113f631de32cc794efd597f3 (patch)
tree23327153728d6098c8ec78f702fc8b76cfdf26bf
parent488ee77ea2ee5ac7ce12a42d5d9350f13632f965 (diff)
downloadrockbox-5e805f2041db1385113f631de32cc794efd597f3.tar.gz
rockbox-5e805f2041db1385113f631de32cc794efd597f3.zip
Sansa Connect: Fix GIO initialization and screen wakeup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31119 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c29
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c7
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c8
-rw-r--r--firmware/target/arm/tms320dm320/system-dm320.c9
4 files changed, 28 insertions, 25 deletions
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
index 870aa523cf..036b7db127 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
@@ -214,22 +214,6 @@ static void parse_button_state(unsigned char *buf)
214#endif 214#endif
215} 215}
216 216
217/* HID Slave Select - GIO14 */
218#define HID_SS (1<<14)
219
220static inline void select_hid(bool on)
221{
222 if (on == true)
223 {
224 /* SS is active low */
225 IO_GIO_BITCLR0 = HID_SS;
226 }
227 else
228 {
229 IO_GIO_BITSET0 = HID_SS;
230 }
231}
232
233static void spi_txrx(unsigned char *buf_tx, unsigned char *buf_rx, int n) 217static void spi_txrx(unsigned char *buf_tx, unsigned char *buf_rx, int n)
234{ 218{
235 int i; 219 int i;
@@ -239,7 +223,6 @@ static void spi_txrx(unsigned char *buf_tx, unsigned char *buf_rx, int n)
239 223
240 bitset16(&IO_CLK_MOD2, CLK_MOD2_SIF1); 224 bitset16(&IO_CLK_MOD2, CLK_MOD2_SIF1);
241 IO_SERIAL1_TX_ENABLE = 0x0001; 225 IO_SERIAL1_TX_ENABLE = 0x0001;
242 select_hid(true);
243 226
244 for (i = 0; i<n; i++) 227 for (i = 0; i<n; i++)
245 { 228 {
@@ -254,10 +237,10 @@ static void spi_txrx(unsigned char *buf_tx, unsigned char *buf_rx, int n)
254 if (buf_rx != NULL) 237 if (buf_rx != NULL)
255 buf_rx[i] = rxdata & 0xFF; 238 buf_rx[i] = rxdata & 0xFF;
256 239
257 udelay(100); 240 /* seems to be unneccessary */
241 //udelay(100);
258 } 242 }
259 243
260 select_hid(false);
261 IO_SERIAL1_TX_ENABLE = 0; 244 IO_SERIAL1_TX_ENABLE = 0;
262 bitclr16(&IO_CLK_MOD2, CLK_MOD2_SIF1); 245 bitclr16(&IO_CLK_MOD2, CLK_MOD2_SIF1);
263 246
@@ -280,14 +263,16 @@ void avr_hid_init(void)
280{ 263{
281 /* 264 /*
282 setup alternate GIO functions: 265 setup alternate GIO functions:
283 GIO29 - SIF1 Enable 266 GIO29 - SIF1 Enable (Directly connected to AVR's SS)
284 GIO30 - SIF1 Clock 267 GIO30 - SIF1 Clock
285 GIO31 - SIF1 Data In 268 GIO31 - SIF1 Data In
286 GIO32 - SIF1 Data Out 269 GIO32 - SIF1 Data Out
287 */ 270 */
288 IO_GIO_FSEL2 = (IO_GIO_FSEL2 & 0x00FF) | 0xAA00; 271 IO_GIO_FSEL2 = (IO_GIO_FSEL2 & 0x00FF) | 0xAA00;
289 272 /* GIO29, GIO30 - outputs, GIO31 - input */
290 bitclr16(&IO_GIO_DIR0, HID_SS); /* set GIO14 as output */ 273 IO_GIO_DIR1 = (IO_GIO_DIR1 & ~((1 << 13) | (1 << 14))) | (1 << 15);
274 /* GIO32 - output */
275 bitclr16(&IO_GIO_DIR2, (1 << 0));
291 276
292 /* RATE = 219 (0xDB) -> 200 kHz */ 277 /* RATE = 219 (0xDB) -> 200 kHz */
293 IO_SERIAL1_MODE = 0x6DB; 278 IO_SERIAL1_MODE = 0x6DB;
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c
index b7989849d7..50301c0237 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c
@@ -53,6 +53,13 @@ static void _backlight_write_brightness(int brightness)
53 53
54void _backlight_on(void) 54void _backlight_on(void)
55{ 55{
56#ifdef HAVE_LCD_SLEEP
57 if (!lcd_active())
58 {
59 lcd_awake();
60 lcd_update();
61 }
62#endif
56 /* set GIO34 as PWM1 */ 63 /* set GIO34 as PWM1 */
57 IO_GIO_FSEL3 = (IO_GIO_FSEL3 & 0xFFF3) | (1 << 2); 64 IO_GIO_FSEL3 = (IO_GIO_FSEL3 & 0xFFF3) | (1 << 2);
58 65
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c
index ab42beb2b4..979b1b9eb2 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c
@@ -40,6 +40,14 @@ int usb_detect(void)
40 40
41void usb_init_device(void) 41void usb_init_device(void)
42{ 42{
43 /* set TNETV USB nreset high */
44 IO_GIO_DIR0 &= ~(1 << 7);
45 IO_GIO_BITSET0 = (1 << 7);
46
47 /* set VLYNQ port functions */
48 IO_GIO_FSEL1 = 0xAAAA;
49 IO_GIO_FSEL2 = (IO_GIO_FSEL2 & 0xFFF0) | 0xA;
50
43 return; 51 return;
44} 52}
45 53
diff --git a/firmware/target/arm/tms320dm320/system-dm320.c b/firmware/target/arm/tms320dm320/system-dm320.c
index 029aecc610..37d06f4343 100644
--- a/firmware/target/arm/tms320dm320/system-dm320.c
+++ b/firmware/target/arm/tms320dm320/system-dm320.c
@@ -344,7 +344,10 @@ void system_init(void)
344 IO_TIMER2_TMMD = CONFIG_TIMER2_TMMD_STOP; 344 IO_TIMER2_TMMD = CONFIG_TIMER2_TMMD_STOP;
345 IO_TIMER3_TMMD = CONFIG_TIMER3_TMMD_STOP; 345 IO_TIMER3_TMMD = CONFIG_TIMER3_TMMD_STOP;
346 346
347#ifndef SANSA_CONNECT
348 /* UART1 is not used on Sansa Connect - don't power it up */
347 uart_init(); 349 uart_init();
350#endif
348 spi_init(); 351 spi_init();
349 352
350#ifdef MROBE_500 353#ifdef MROBE_500
@@ -359,9 +362,9 @@ void system_init(void)
359#endif 362#endif
360 363
361#ifdef SANSA_CONNECT 364#ifdef SANSA_CONNECT
362 /* keep WIFI CS low to save power */ 365 /* keep WIFI CS and reset high to save power */
363 IO_GIO_DIR0 &= ~(1 << 4); 366 IO_GIO_DIR0 &= ~((1 << 4) /* CS */ | (1 << 3) /* reset */);
364 IO_GIO_BITCLR0 = (1 << 4); 367 IO_GIO_BITSET0 = (1 << 4) | (1 << 3);
365 368
366 i2c_init(); 369 i2c_init();
367 avr_hid_init(); 370 avr_hid_init();