[openfirmware] [commit] r3234 - in cpu/arm: mmp2 olpc
repository service
svn at openfirmware.info
Wed Aug 29 02:10:05 CEST 2012
Author: wmb
Date: Wed Aug 29 02:10:05 2012
New Revision: 3234
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3234
Log:
OLPC ARM - Moved the board-specific code to create I2C device nodes into OLPC-specific files.
Added:
cpu/arm/olpc/gpio-i2c.fth
cpu/arm/olpc/twsi-i2c.fth
Modified:
cpu/arm/mmp2/gpio.fth
cpu/arm/mmp2/twsi.fth
cpu/arm/olpc/build-fw.fth
Modified: cpu/arm/mmp2/gpio.fth
==============================================================================
--- cpu/arm/mmp2/gpio.fth Tue Aug 28 18:25:56 2012 (r3233)
+++ cpu/arm/mmp2/gpio.fth Wed Aug 29 02:10:05 2012 (r3234)
@@ -77,52 +77,3 @@
h# 104 make-gpio-mux-node
h# 108 make-gpio-mux-node
end-package
-
-: encode-gpio ( propval$ gpio# low? -- propval$' )
- >r >r ( propval$ r: low? gpio# )
- " /gpio" encode-phandle encode+ ( propval$' r: low? gpio# )
- r> encode-int encode+ ( propval$' r: low? )
- r> encode-int encode+ ( propval$' )
-;
-
-: gpio-property ( gpionum low? gpioname$ -- )
- 2>r 2>r ( r: gpioname$ gpionum low? )
- 0 0 encode-bytes ( propval$ r: gpioname$ gpionum low? )
- 2r> encode-gpio ( propval$' r: gpioname$ )
- 2r> property ( )
-;
-
-dev /
- new-device
- " camera-i2c" device-name
- " i2c-gpio" +compatible
- 1 " #address-cells" integer-property
- 1 " #size-cells" integer-property
- : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;
- : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;
- : open ( -- flag ) true ;
- : close ( -- ) ;
-
-
- 0 0 encode-bytes
- cam-sda-gpio# 0 encode-gpio
- cam-scl-gpio# 0 encode-gpio
- " gpios" property
- finish-device
-
- new-device
- " dcon-i2c" device-name
- " i2c-gpio" +compatible
- 1 " #address-cells" integer-property
- 1 " #size-cells" integer-property
- : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;
- : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;
- : open ( -- flag ) true ;
- : close ( -- ) ;
-
- 0 0 encode-bytes
- dcon-sda-gpio# 0 encode-gpio
- dcon-scl-gpio# 0 encode-gpio
- " gpios" property
- finish-device
-device-end
Modified: cpu/arm/mmp2/twsi.fth
==============================================================================
--- cpu/arm/mmp2/twsi.fth Tue Aug 28 18:25:56 2012 (r3233)
+++ cpu/arm/mmp2/twsi.fth Wed Aug 29 02:10:05 2012 (r3234)
@@ -163,62 +163,6 @@
: twsi-b! ( byte reg -- ) 2 twsi-out ;
[ifdef] begin-package
-: make-twsi-node ( baseadr clock# irq# muxed-irq? fast? unit# -- )
- root-device
- new-device
- " linux,unit#" integer-property
- " i2c" name
- " mrvl,mmp-twsi" +compatible ( baseadr clock# irq# muxed-irq? fast? )
- if 0 0 " mrvl,i2c-fast-mode" property then ( baseadr clock# irq# muxed-irq? )
- if
- " /interrupt-controller/interrupt-controller at 158" encode-phandle " interrupt-parent" property
- then ( baseadr clock# irq# )
- " interrupts" integer-property ( baseadr clock# )
- " /apbc" encode-phandle rot encode-int encode+ " clocks" property
-
- h# 1000 reg ( )
- 1 " #address-cells" integer-property
- 1 " #size-cells" integer-property
- " : open true ; : close ;" evaluate
- " : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;" evaluate
- " : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;" evaluate
- finish-device
- device-end
-;
-
-\ baseadr clk irq mux? fast? unit#
- h# d4011000 1 7 false true 2 make-twsi-node \ TWSI1
- h# d4031000 2 0 true true 3 make-twsi-node \ TWSI2
-\ h# d4032000 3 1 true true N make-twsi-node \ TWSI3
- h# d4033000 4 2 true true 5 make-twsi-node \ TWSI4
-\ h# d4038000 d# 30 3 true true N make-twsi-node \ TWSI5
- h# d4034000 d# 31 4 true true 4 make-twsi-node \ TWSI6
-
-
-[ifdef] soon-olpc-cl2 \ this breaks cl4-a1 boards, which ofw calls cl2.
-0 0 " 30" " /i2c at d4033000" begin-package \ TWSI4
- " touchscreen" name
- " raydium_ts" +compatible
- my-address my-space 1 reg
-end-package
-[else]
-0 0 " 50" " /i2c at d4033000" begin-package \ TWSI4
- " touchscreen" name
- " zforce" +compatible
- my-address my-space 1 reg
- touch-rst-gpio# 1 " reset-gpios" gpio-property
- touch-tck-gpio# 1 " test-gpios" gpio-property
- touch-hd-gpio# 1 " hd-gpios" gpio-property
- touch-int-gpio# 1 " dr-gpios" gpio-property
-end-package
-[then]
-
-0 0 " 19" " /i2c at d4034000" begin-package \ TWSI6
- " accelerometer" name
- " lis3lv02d" +compatible
- my-address my-space 1 reg
-end-package
-
0 0 " " " /" begin-package
" twsi" name
Modified: cpu/arm/olpc/build-fw.fth
==============================================================================
--- cpu/arm/olpc/build-fw.fth Tue Aug 28 18:25:56 2012 (r3233)
+++ cpu/arm/olpc/build-fw.fth Wed Aug 29 02:10:05 2012 (r3234)
@@ -102,6 +102,9 @@
fload ${BP}/cpu/arm/mmp2/watchdog.fth \ reset-all using watchdog timer
+fload ${BP}/cpu/arm/olpc/gpio-i2c.fth
+fload ${BP}/cpu/arm/olpc/twsi-i2c.fth
+
0 0 " d4018000" " /" begin-package \ UART3
fload ${BP}/cpu/arm/mmp2/uart.fth
" /apbc" encode-phandle d# 12 encode-int encode+ " clocks" property
Added: cpu/arm/olpc/gpio-i2c.fth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/gpio-i2c.fth Wed Aug 29 02:10:05 2012 (r3234)
@@ -0,0 +1,78 @@
+purpose: Device tree nodes for I2C buses implemented with GPIOs
+
+: encode-gpio ( propval$ gpio# low? -- propval$' )
+ >r >r ( propval$ r: low? gpio# )
+ " /gpio" encode-phandle encode+ ( propval$' r: low? gpio# )
+ r> encode-int encode+ ( propval$' r: low? )
+ r> encode-int encode+ ( propval$' )
+;
+
+: gpio-property ( gpionum low? gpioname$ -- )
+ 2>r 2>r ( r: gpioname$ gpionum low? )
+ 0 0 encode-bytes ( propval$ r: gpioname$ gpionum low? )
+ 2r> encode-gpio ( propval$' r: gpioname$ )
+ 2r> property ( )
+;
+
+: make-sensor-node ( name$ i2c-addr -- )
+ " /camera-i2c" find-device ( name$ i2c-addr )
+ new-device ( name$ i2c-addr )
+ 1 reg ( name$ )
+ +compatible ( )
+ " image-sensor" device-name
+ 0 0 encode-bytes
+ cam-pwr-gpio# 0 encode-gpio
+ cam-rst-gpio# 0 encode-gpio
+ " gpios" property
+ finish-device
+ device-end
+;
+
+dev /
+ new-device
+ " camera-i2c" device-name
+ " i2c-gpio" +compatible
+ 1 " #address-cells" integer-property
+ 1 " #size-cells" integer-property
+ : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;
+ : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;
+ : open ( -- flag ) true ;
+ : close ( -- ) ;
+
+ 0 0 encode-bytes
+ cam-sda-gpio# 0 encode-gpio
+ cam-scl-gpio# 0 encode-gpio
+ " gpios" property
+
+ new-device
+ " image-sensor" device-name
+
+ \ The reg and compatible properties are set by probing, based on the actual
+ \ image sensor encountered. For example:
+ \ h# 21 1 reg
+ \ " omnivision,ov7670" +compatible
+
+ 0 0 encode-bytes
+ cam-pwr-gpio# 0 encode-gpio
+ cam-rst-gpio# 0 encode-gpio
+ " gpios" property
+
+ finish-device
+ finish-device
+
+ new-device
+ " dcon-i2c" device-name
+ " i2c-gpio" +compatible
+ 1 " #address-cells" integer-property
+ 1 " #size-cells" integer-property
+ : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;
+ : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;
+ : open ( -- flag ) true ;
+ : close ( -- ) ;
+
+ 0 0 encode-bytes
+ dcon-sda-gpio# 0 encode-gpio
+ dcon-scl-gpio# 0 encode-gpio
+ " gpios" property
+ finish-device
+device-end
Added: cpu/arm/olpc/twsi-i2c.fth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/twsi-i2c.fth Wed Aug 29 02:10:05 2012 (r3234)
@@ -0,0 +1,57 @@
+purpose: Device tree nodes for board-specific I2C buses implemented by TWSI hardware
+
+: make-twsi-node ( baseadr clock# irq# muxed-irq? fast? unit# -- )
+ root-device
+ new-device
+ " linux,unit#" integer-property
+ " i2c" name
+ " mrvl,mmp-twsi" +compatible ( baseadr clock# irq# muxed-irq? fast? )
+ if 0 0 " mrvl,i2c-fast-mode" property then ( baseadr clock# irq# muxed-irq? )
+ if
+ " /interrupt-controller/interrupt-controller at 158" encode-phandle " interrupt-parent" property
+ then ( baseadr clock# irq# )
+ " interrupts" integer-property ( baseadr clock# )
+ " /apbc" encode-phandle rot encode-int encode+ " clocks" property
+
+ h# 1000 reg ( )
+ 1 " #address-cells" integer-property
+ 1 " #size-cells" integer-property
+ " : open true ; : close ;" evaluate
+ " : encode-unit ( phys.. -- str ) push-hex (u.) pop-base ;" evaluate
+ " : decode-unit ( str -- phys.. ) push-hex $number if 0 then pop-base ;" evaluate
+ finish-device
+ device-end
+;
+
+\ baseadr clk irq mux? fast? unit#
+ h# d4011000 1 7 false true 2 make-twsi-node \ TWSI1
+ h# d4031000 2 0 true true 3 make-twsi-node \ TWSI2
+\ h# d4032000 3 1 true true N make-twsi-node \ TWSI3
+ h# d4033000 4 2 true true 5 make-twsi-node \ TWSI4
+\ h# d4038000 d# 30 3 true true N make-twsi-node \ TWSI5
+ h# d4034000 d# 31 4 true true 4 make-twsi-node \ TWSI6
+
+
+[ifdef] soon-olpc-cl2 \ this breaks cl4-a1 boards, which ofw calls cl2.
+0 0 " 30" " /i2c at d4033000" begin-package \ TWSI4
+ " touchscreen" name
+ " raydium_ts" +compatible
+ my-address my-space 1 reg
+end-package
+[else]
+0 0 " 50" " /i2c at d4033000" begin-package \ TWSI4
+ " touchscreen" name
+ " zforce" +compatible
+ my-address my-space 1 reg
+ touch-rst-gpio# 1 " reset-gpios" gpio-property
+ touch-tck-gpio# 1 " test-gpios" gpio-property
+ touch-hd-gpio# 1 " hd-gpios" gpio-property
+ touch-int-gpio# 1 " dr-gpios" gpio-property
+end-package
+[then]
+
+0 0 " 19" " /i2c at d4034000" begin-package \ TWSI6
+ " accelerometer" name
+ " lis3lv02d" +compatible
+ my-address my-space 1 reg
+end-package
More information about the openfirmware
mailing list