diff options
author | Tomasz Moń <desowin@gmail.com> | 2011-12-03 15:03:44 +0000 |
---|---|---|
committer | Tomasz Moń <desowin@gmail.com> | 2011-12-03 15:03:44 +0000 |
commit | 5e805f2041db1385113f631de32cc794efd597f3 (patch) | |
tree | 23327153728d6098c8ec78f702fc8b76cfdf26bf | |
parent | 488ee77ea2ee5ac7ce12a42d5d9350f13632f965 (diff) | |
download | rockbox-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
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 | |||
220 | static 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 | |||
233 | static void spi_txrx(unsigned char *buf_tx, unsigned char *buf_rx, int n) | 217 | static 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 | ||
54 | void _backlight_on(void) | 54 | void _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 | ||
41 | void usb_init_device(void) | 41 | void 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(); |