[openfirmware] [commit] r2789 - cpu/arm/olpc

repository service svn at openfirmware.info
Sat Dec 31 21:01:46 CET 2011


Author: wmb
Date: Sat Dec 31 21:01:45 2011
New Revision: 2789
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2789

Log:
OLPC XO-3 - exc7200 touchscreen driver - made the X and Y axis inversion controllable by a "TI" mfg-data tag, by default not inverted, to handle the fact that the real XO touchscreen is not inverted, but a few of the development touchscreens are inverted.

Modified:
   cpu/arm/olpc/exc7200-touchscreen.fth

Modified: cpu/arm/olpc/exc7200-touchscreen.fth
==============================================================================
--- cpu/arm/olpc/exc7200-touchscreen.fth	Wed Dec 28 11:10:39 2011	(r2788)
+++ cpu/arm/olpc/exc7200-touchscreen.fth	Sat Dec 31 21:01:45 2011	(r2789)
@@ -7,6 +7,8 @@
 
 0 value screen-w
 0 value screen-h
+0 instance value invert-x?
+0 instance value invert-y?
 
 : dimensions  ( -- w h )  screen-w  screen-h  ;
 
@@ -19,11 +21,11 @@
 : invert-y  ( y -- y' )  touchscreen-max-y swap -  ;
 
 : scale-x  ( x -- x' )
-   invert-x
+   invert-x?  if  invert-x  then
    screen-w touchscreen-max-x */
 ;
 : scale-y  ( y -- y' )
-   invert-y
+   invert-y?  if  invert-y  then
    screen-h touchscreen-max-y */
 ;
 
@@ -252,6 +254,21 @@
    \ Read once to prime the interrupt
    d# 10 " get" $call-parent  4drop 4drop 2drop
    " dimensions" $call-screen  to screen-h  to screen-w
+
+   \ The "TI" tag controls the inverson of X and Y axes.
+   \ If the tag is missing, axes are not inverted.  If present
+   \ and the value contains either of the letters x or y, the
+   \ corresponding axis is inverted.  This is primarily for
+   \ development, using prototype touchscreens.
+   " TI" find-tag  if     ( adr len )
+      begin  dup  while   ( adr len )
+         over c@  upc  [char] x =  if  true to invert-x?  then
+         over c@  upc  [char] y =  if  true to invert-y?  then
+         1 /string        ( adr' len' )
+      repeat              ( adr len )
+      2drop               ( )
+   then                   ( )
+
    flush
 ;
 



More information about the openfirmware mailing list