Author: wmb Date: Fri Aug 17 19:29:15 2012 New Revision: 3195 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3195
Log: OLPC ARM - moved the DCON driver out of the screen node into a new node underneath an I2C bus node, for ease of Linux driver binding.
Modified: cpu/arm/olpc/1.75/lcdcfg.fth cpu/arm/olpc/lcd.fth dev/olpc/dcon/mmp2dcon.fth
Modified: cpu/arm/olpc/1.75/lcdcfg.fth ============================================================================== --- cpu/arm/olpc/1.75/lcdcfg.fth Fri Aug 17 19:27:24 2012 (r3194) +++ cpu/arm/olpc/1.75/lcdcfg.fth Fri Aug 17 19:29:15 2012 (r3195) @@ -1,7 +1,30 @@ dev /display +new-device + " panel" device-name + " mrvl,dumb-panel" +compatible + + " OLPC DCON panel" model + : +i encode-int encode+ ; + + decimal + 0 0 encode-bytes + \ xres, yres, refresh, clockhz, left, right, top, bottom, hsync, vsync, flags, widthmm, heightmm + 1200 +i 900 +i 50 +i 56,930,000 +i 24 +i 26 +i 5 +i 4 +i 6 +i 3 +i 0 +i 152 +i 115 +i + hex + " linux,timing-modes" property + + " 1200x900@50" " linux,mode-names" string-property + + h# 2000000d " lcd-dumb-ctrl-regval" integer-property + h# 08001100 " lcd-pn-ctrl0-regval" integer-property +finish-device +device-end
[ifdef] has-dcon - fload ${BP}/dev/olpc/dcon/mmp2dcon.fth \ DCON control -[then] +fload ${BP}/dev/olpc/dcon/mmp2dcon.fth \ DCON control
+dev /display/panel + " /dcon" encode-phandle " control-node" property device-end +[then] +
Modified: cpu/arm/olpc/lcd.fth ============================================================================== --- cpu/arm/olpc/lcd.fth Fri Aug 17 19:27:24 2012 (r3194) +++ cpu/arm/olpc/lcd.fth Fri Aug 17 19:29:15 2012 (r3195) @@ -319,9 +319,11 @@ [then]
defer init-panel ' noop to init-panel - defer bright! ' drop to bright! - defer backlight-off ' noop to backlight-off - defer backlight-on ' noop to backlight-on + + \ XXX we really should bounce these through the panel node(s) + : bright! " bright!" $call-dcon ; + : backlight-off " backlight-off" $call-dcon ; + : backlight-on " backlight-on" $call-dcon ;
: display-on init-panel \ Turns on DCON etc
Modified: dev/olpc/dcon/mmp2dcon.fth ============================================================================== --- dev/olpc/dcon/mmp2dcon.fth Fri Aug 17 19:27:24 2012 (r3194) +++ dev/olpc/dcon/mmp2dcon.fth Fri Aug 17 19:29:15 2012 (r3195) @@ -1,58 +1,30 @@ \ See license at end of file -\ " dcon" device-name
-also forth definitions : has-dcon-ram? ( -- flag ) board-revision h# 1b18 = if true exit then board-revision h# 1b48 >= if true exit then false ; -previous definitions
-new-device - " dcon" device-name - " mrvl,dumb-panel" +compatible - " olpc,xo1-dcon" +compatible - " olpc,xo1.75-dcon" +compatible - - " OLPC DCON panel" model - : +i encode-int encode+ ; - - 0 0 encode-bytes - dcon-stat0-gpio# 0 encode-gpio - dcon-stat1-gpio# 0 encode-gpio - dcon-load-gpio# 0 encode-gpio - dcon-irq-gpio# 0 encode-gpio - " gpios" property - - " stat0" encode-string - " stat1" encode-string encode+ - " load" encode-string encode+ - " irq" encode-string encode+ - " gpio-names" property - - " /dcon-i2c" encode-phandle " i2c-parent" property - - decimal - 0 0 encode-bytes - \ xres, yres, refresh, clockhz, left, right, top, bottom, hsync, vsync, flags, widthmm, heightmm - 1200 +i 900 +i 50 +i 56,930,000 +i 24 +i 26 +i 5 +i 4 +i 6 +i 3 +i 0 +i 152 +i 115 +i - hex - " linux,timing-modes" property - - " 1200x900@50" " linux,mode-names" string-property - - h# 2000000d " lcd-dumb-ctrl-regval" integer-property - h# 08001100 " lcd-pn-ctrl0-regval" integer-property -finish-device +0 0 " 1a" " /dcon-i2c" begin-package
-stand-init: - has-dcon-ram? 0= if - " /dcon" find-device - 0 0 " no-freeze" property - device-end - then -; +" dcon" device-name +" olpc,xo1-dcon" +compatible +" olpc,xo1.75-dcon" +compatible +h# 1a 1 reg + +0 0 encode-bytes +dcon-stat0-gpio# 0 encode-gpio +dcon-stat1-gpio# 0 encode-gpio +dcon-load-gpio# 0 encode-gpio +dcon-irq-gpio# 0 encode-gpio +" gpios" property + +" stat0" encode-string +" stat1" encode-string encode+ +" load" encode-string encode+ +" irq" encode-string encode+ +" gpio-names" property
\ DCON internal registers, accessed via I2C \ 0 constant DCON_ID @@ -89,6 +61,7 @@ ;
: smb-init ( -- ) set-dcon-slave smb-on smb-pulses ; +: smb-reset ( -- ) smb-stop 1 ms smb-off 1 ms smb-on ;
: dcon@ ( reg# -- word ) set-dcon-slave smb-word@ ; : dcon! ( word reg# -- ) set-dcon-slave smb-word! ; @@ -161,7 +134,7 @@ \ gx_configure_tft(info);
: try-dcon! ( w reg# -- ) - ['] dcon! catch if 2drop smb-stop 1 ms smb-off 1 ms smb-on then + ['] dcon! catch if 2drop smb-reset then ;
: mode@ ( -- mode ) 1 dcon@ ; @@ -174,16 +147,22 @@ : vsync! ( sync -- ) 7 dcon! ; \ def: h# 403 d# 4,3 : timeout! ( to -- ) 8 dcon! ; \ def: h# ffff : scanint! ( si -- ) 9 dcon! ; \ def: h# 0000 +[ifdef] old-way : dcon-bright! ( level -- ) d# 10 dcon! ; \ def: h# xxxF ' dcon-bright! to bright! -: bright@ ( -- level ) d# 10 dcon@ ; -: brighter ( -- ) bright@ 1+ h# f min bright! ; -: dimmer ( -- ) bright@ 1- 0 max bright! ; - : dcon-backlight-off ( -- ) mode@ 8 invert and mode! ; ' dcon-backlight-off to backlight-off : dcon-backlight-on ( -- ) mode@ 8 or mode! ; ' dcon-backlight-on to backlight-on +[else] +: bright! ( level -- ) d# 10 dcon! ; \ def: h# xxxF +: backlight-off ( -- ) mode@ 8 invert and mode! ; +: backlight-on ( -- ) mode@ 8 or mode! ; +[then] + +: bright@ ( -- level ) d# 10 dcon@ ; +: brighter ( -- ) bright@ 1+ h# f min bright! ; +: dimmer ( -- ) bright@ 1- 0 max bright! ;
\ Color swizzle, AA, no passthrough, backlight : set-color ( color? -- ) @@ -232,19 +211,11 @@ h# f bright! ;
-: video-save - 0 set-source \ Freeze image -; - -: video-restore - smb-init - 1 set-source \ Unfreeze image -; - 0 value dcon-found?
: maybe-set-cmos ( -- ) ;
+[ifdef] old-way : init-dcon ( -- ) smb-init
@@ -253,6 +224,15 @@ \ dcon-enable leaves mode set to 69 - 40:antialias, 20:swizzle, 8:backlight on, 1:passthru off ; ' init-dcon to init-panel +[else] +: open ( -- flag ) + smb-init +\ Unnecessary because CForth has already done it +\ dcon-load dcon-enable ( maybe-set-cmos ) + \ dcon-enable leaves mode set to 69 - 40:antialias, 20:swizzle, 8:backlight on, 1:passthru off + true +; +[then]
: dcon-power-on ( -- ) 1 h# 26 ec-cmd-b! ; : dcon-power-off ( -- ) 0 h# 26 ec-cmd-b! ; @@ -275,6 +255,16 @@ saved-brightness bright! ;
+end-package + +stand-init: + has-dcon-ram? 0= if + " /dcon" find-device + 0 0 " no-freeze" property + device-end + then +; + \ LICENSE_BEGIN \ Copyright (c) 2010 FirmWorks \
openfirmware@openfirmware.info