Author: wmb Date: Thu Dec 6 23:11:22 2012 New Revision: 3476 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3476
Log: HDMI/EDID - more complicated way of choosing the resolution, in hopes of doing better with monitors that don't declare a native resolution. Also factored .hdmi so the pieces are easier to incorporate into selftest sequences.
Modified: dev/edid.fth
Modified: dev/edid.fth ============================================================================== --- dev/edid.fth Thu Dec 6 22:15:34 2012 (r3475) +++ dev/edid.fth Thu Dec 6 23:11:22 2012 (r3476) @@ -254,17 +254,21 @@ ( 63 ) ," 1080p120" \ 16:9 1920x1080p @ 119.88/120Hz end-string-array
+false value 1080p-support? false value 1080p-native? +false value 720p-native? : .cea-video ( offset size -- ) - false to 1080p-native? + false to 720p-native? false to 1080p-native? false to 1080p-support? ." CEA/HDMI Modes: " bounds ?do i cea@ ( code ) dup h# 80 and if ( code ) ." *" h# 7f and ( index ) + dup d# 4 = if true to 720p-native? then dup d# 16 = if true to 1080p-native? then then ( index ) - short-names count type space ( ) + dup d# 16 = if true to 1080p-support? then + short-names count type space ( ) loop cr ; @@ -342,7 +346,8 @@ loop ; : dump-edid ( adr len -- ) - drop to the-edid + 0= if drop exit then ( adr ) + to the-edid the-edid " "(00ffffffffffff00)" comp if ." Not an EDID" cr exit @@ -352,19 +357,35 @@ .dtds .extensions ; -: .hdmi ( -- ) +\ Wait for an HDMI monitor to be connected +: wait-hdmi ( -- ) " hdmi-present?" $call-screen 0= if ." Connect an HDMI monitor ..." begin " hdmi-present?" $call-screen until cr then +; +: get-hdmi-edid ( -- adr len ) " /hdmi-ddc" open-dev dup if ( ih ) " edid$" 2 pick $call-method ( ih adr len ) rot close-dev ( adr len ) - dump-edid + else + " " then +; +: choose-hdmi-resolution ( -- ) ." Turning on monitor at " - 1080p-native? if ." 1080p" 1080p else ." 720p" 720p then cr + 1080p-native? if ." 1080p" 1080p else \ First choice + 720p-native? if ." 720p" 720p else \ Second choice + 1080p-support? if ." 1080p" 1080p else \ No native, use 1080p if supported + ." 720p" 720p ." (guess)" \ Fallback + then then then + cr +; +: .hdmi ( -- ) + wait-hdmi + get-hdmi-edid dump-edid + choose-hdmi-resolution ;
\ LICENSE_BEGIN