[openfirmware] [commit] r3514 - cpu/arm/olpc cpu/x86/pc/olpc dev/olpc/dcon
repository service
svn at openfirmware.info
Tue Jan 8 03:44:19 CET 2013
Author: quozl
Date: Tue Jan 8 03:44:19 2013
New Revision: 3514
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3514
Log:
OLPC XO-4 - rework DCON freeze and unfreeze screen synchronisation, make wait-output global as requested by John.
Modified:
cpu/arm/olpc/suspend.fth
cpu/x86/pc/olpc/disptest.fth
cpu/x86/pc/olpc/gui.fth
dev/olpc/dcon/mmp2dcon.fth
Modified: cpu/arm/olpc/suspend.fth
==============================================================================
--- cpu/arm/olpc/suspend.fth Mon Jan 7 08:05:08 2013 (r3513)
+++ cpu/arm/olpc/suspend.fth Tue Jan 8 03:44:19 2013 (r3514)
@@ -132,11 +132,11 @@
0 value sleep-mask
: screen-sleep
sleep-mask 1 and if \ DCON power down
- dcon-freeze
+ dcon-screen-freeze
else
" dcon-suspend" $call-dcon
+ " sleep" $call-screen
then
- " sleep" $call-screen
" set-ack" $call-ec
\ 0 h# 54 pmua! \ Kill the SDIO 0 clocks - insignificant savings
@@ -156,10 +156,10 @@
then
sleep-mask 2 and 0= if keyboard-power-on then
" clr-ack" $call-ec
- " wake" $call-screen
sleep-mask 1 and if \ DCON power up
- dcon-unfreeze
+ dcon-screen-unfreeze
else
+ " wake" $call-screen
" dcon-resume" $call-dcon
then
;
Modified: cpu/x86/pc/olpc/disptest.fth
==============================================================================
--- cpu/x86/pc/olpc/disptest.fth Mon Jan 7 08:05:08 2013 (r3513)
+++ cpu/x86/pc/olpc/disptest.fth Tue Jan 8 03:44:19 2013 (r3514)
@@ -173,9 +173,9 @@
;
: wait ( -- )
hold-time
- dcon-freeze
+ dcon-screen-freeze
hold-time
- dcon-unfreeze
+ dcon-screen-unfreeze
hold-time2
;
Modified: cpu/x86/pc/olpc/gui.fth
==============================================================================
--- cpu/x86/pc/olpc/gui.fth Mon Jan 7 08:05:08 2013 (r3513)
+++ cpu/x86/pc/olpc/gui.fth Tue Jan 8 03:44:19 2013 (r3514)
@@ -355,9 +355,12 @@
$show ( )
;
-: frozen? ( -- flag ) " vga?" $call-dcon 0= ;
-: dcon-freeze ( -- ) " dcon-freeze" $call-dcon d# 30 ms ;
-: dcon-unfreeze ( -- ) " dcon-unfreeze" $call-dcon d# 30 ms ;
+: frozen? ( -- flag ) " vga?" $call-dcon 0= ;
+: dcon-freeze ( -- ) " dcon-freeze" $call-dcon ;
+: dcon-unfreeze ( -- ) " dcon-unfreeze" $call-dcon ;
+: wait-output ( -- ) " wait-output" $call-dcon ;
+: dcon-screen-freeze ( -- ) " screen-freeze" $call-dcon ;
+: dcon-screen-unfreeze ( -- ) " screen-unfreeze" $call-dcon ;
\ === Stuff moved from security.fth ===
Modified: dev/olpc/dcon/mmp2dcon.fth
==============================================================================
--- dev/olpc/dcon/mmp2dcon.fth Mon Jan 7 08:05:08 2013 (r3513)
+++ dev/olpc/dcon/mmp2dcon.fth Tue Jan 8 03:44:19 2013 (r3514)
@@ -136,9 +136,6 @@
dup vga? = if drop exit then ( source )
dup to vga? ( source )
if
- wait-output \ Wait for the DCON to reach the scan line
- " wake" $call-screen \ Enable video signal from SoC
- d# 25 ms
dcon-load \ Put the DCON in VGA-refreshed mode
d# 25 ms \ Ensure that that DCON sees the DCONLOAD high
else
@@ -151,13 +148,25 @@
\ We got a false ack from the DCON so start over from LOAD state
dcon-load d# 25 ms ( )
repeat ( )
- " sleep" $call-screen
+ d# 25 ms
then
then
;
: dcon-freeze ( -- ) 0 set-source ;
: dcon-unfreeze ( -- ) 1 set-source ;
+: screen-freeze ( -- )
+ dcon-freeze
+ " sleep" $call-screen
+;
+
+: screen-unfreeze ( -- )
+ wait-output \ Wait for the DCON to reach the scan line
+ " wake" $call-screen \ Enable video signal from SoC
+ d# 42 ms \ Synchronisation delay determined empirically
+ dcon-unfreeze
+;
+
\ gx_configure_tft(info);
: try-dcon! ( w reg# -- )
@@ -285,15 +294,20 @@
then
;
-[ifdef] notdef
+\ [ifdef] notdef
: test-dcon-freeze-glitch
- screen-ih remove-output
+ invisible
" gvsr" $call-screen
- begin dcon-freeze dcon-unfreeze key? until key drop
- screen-ih add-output
+ begin
+ " screen-freeze" $call-dcon
+ d# 25 ms
+ " screen-unfreeze" $call-dcon
+ key?
+ until key drop
+ visible
page
;
-[then]
+\ [then]
\ LICENSE_BEGIN
\ Copyright (c) 2010 FirmWorks
More information about the openfirmware
mailing list