diff options
-rw-r--r-- | bootloader/main-pp.c | 13 | ||||
-rw-r--r-- | firmware/target/arm/samsung/yh925/lcd-yh925.c | 12 |
2 files changed, 24 insertions, 1 deletions
diff --git a/bootloader/main-pp.c b/bootloader/main-pp.c index c213a65121..ef0e199e3a 100644 --- a/bootloader/main-pp.c +++ b/bootloader/main-pp.c | |||
@@ -47,6 +47,11 @@ | |||
47 | #include "usb.h" | 47 | #include "usb.h" |
48 | #include "usb_drv.h" | 48 | #include "usb_drv.h" |
49 | #endif | 49 | #endif |
50 | #if defined(SAMSUNG_YH925) | ||
51 | /* this function (in lcd-yh925.c) resets the screen orientation for the OF | ||
52 | * for use with dualbooting */ | ||
53 | void lcd_reset(void); | ||
54 | #endif | ||
50 | 55 | ||
51 | /* Show the Rockbox logo - in show_logo.c */ | 56 | /* Show the Rockbox logo - in show_logo.c */ |
52 | extern int show_logo(void); | 57 | extern int show_logo(void); |
@@ -575,7 +580,7 @@ void* main(void) | |||
575 | The rest of the loading is done in crt0.S. | 580 | The rest of the loading is done in crt0.S. |
576 | 1) First try reading from the hidden partition (on Sansa only). | 581 | 1) First try reading from the hidden partition (on Sansa only). |
577 | 2) Next try a decrypted mi4 file in /System/OF.mi4 | 582 | 2) Next try a decrypted mi4 file in /System/OF.mi4 |
578 | 3) Finally, try a raw firmware binary in /System/OF.mi4. It should be | 583 | 3) Finally, try a raw firmware binary in /System/OF.bin. It should be |
579 | a mi4 firmware decrypted and header stripped using mi4code. | 584 | a mi4 firmware decrypted and header stripped using mi4code. |
580 | */ | 585 | */ |
581 | printf("Loading original firmware..."); | 586 | printf("Loading original firmware..."); |
@@ -615,6 +620,9 @@ void* main(void) | |||
615 | printf("Can't load /System/OF.mi4"); | 620 | printf("Can't load /System/OF.mi4"); |
616 | printf(strerror(rc)); | 621 | printf(strerror(rc)); |
617 | } else { | 622 | } else { |
623 | #if defined(SAMSUNG_YH925) | ||
624 | lcd_reset(); | ||
625 | #endif | ||
618 | return (void*)loadbuffer; | 626 | return (void*)loadbuffer; |
619 | } | 627 | } |
620 | 628 | ||
@@ -624,6 +632,9 @@ void* main(void) | |||
624 | printf("Can't load /System/OF.bin"); | 632 | printf("Can't load /System/OF.bin"); |
625 | printf(strerror(rc)); | 633 | printf(strerror(rc)); |
626 | } else { | 634 | } else { |
635 | #if defined(SAMSUNG_YH925) | ||
636 | lcd_reset(); | ||
637 | #endif | ||
627 | return (void*)loadbuffer; | 638 | return (void*)loadbuffer; |
628 | } | 639 | } |
629 | 640 | ||
diff --git a/firmware/target/arm/samsung/yh925/lcd-yh925.c b/firmware/target/arm/samsung/yh925/lcd-yh925.c index edeef49d40..7509deff36 100644 --- a/firmware/target/arm/samsung/yh925/lcd-yh925.c +++ b/firmware/target/arm/samsung/yh925/lcd-yh925.c | |||
@@ -190,6 +190,18 @@ void lcd_set_flip(bool flip) | |||
190 | lcd_write_reg(R_ENTRY_MODE, 0x1028); | 190 | lcd_write_reg(R_ENTRY_MODE, 0x1028); |
191 | } | 191 | } |
192 | 192 | ||
193 | /* Reset the LCD prior to booting the OF */ | ||
194 | #ifdef BOOTLOADER | ||
195 | void lcd_reset(void) | ||
196 | { | ||
197 | lcd_write_reg(R_DRV_OUTPUT_CONTROL, 0x0315); | ||
198 | lcd_write_reg(R_ENTRY_MODE, 0x1028); | ||
199 | lcd_write_reg(R_HORIZ_RAM_ADDR_POS, 0x7f00); | ||
200 | lcd_write_reg(R_VERT_RAM_ADDR_POS, 0xaf10); | ||
201 | lcd_write_reg(R_RAM_ADDR_SET, 0x0000); | ||
202 | } | ||
203 | #endif | ||
204 | |||
193 | /* LCD init */ | 205 | /* LCD init */ |
194 | void lcd_init_device(void) | 206 | void lcd_init_device(void) |
195 | { | 207 | { |