[openfirmware] [commit] r1978 - dev/olpc/kb3700
repository service
svn at openfirmware.info
Thu Oct 14 02:38:38 CEST 2010
Author: wmb
Date: Thu Oct 14 02:38:38 2010
New Revision: 1978
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1978
Log:
Fixed a typo in dev/olpc/kb3700/spicmd.fth
Modified:
dev/olpc/kb3700/spicmd.fth
Modified: dev/olpc/kb3700/spicmd.fth
==============================================================================
--- dev/olpc/kb3700/spicmd.fth Wed Oct 13 09:42:47 2010 (r1977)
+++ dev/olpc/kb3700/spicmd.fth Thu Oct 14 02:38:38 2010 (r1978)
@@ -51,18 +51,53 @@
then
;
-0 value ssp-base
+h# d4037000 value ssp-base \ Default to SSP3
: ssp-sscr0 ( -- adr ) ssp-base ;
: ssp-sscr1 ( -- adr ) ssp-base la1+ ;
: ssp-sssr ( -- adr ) ssp-base 2 la+ ;
: ssp-ssdr ( -- adr ) ssp-base 4 la+ ;
+: enable ( -- )
+ h# 87 ssp-sscr0 rl! \ Enable, 8-bit data, SPI normal mode
+;
+: disable ( -- )
+ h# 07 ssp-sscr0 rl! \ 8-bit data, SPI normal mode
+;
+\ Switch to master mode, for testing
+: master ( -- )
+ disable
+ h# 0000.0000 ssp-sscr1 rl! \ master mode
+ enable
+;
+
+: ssp1-clk-on 7 h# d4015050 l! 3 h# d4015050 l! ;
+: ssp2-clk-on 7 h# d4015054 l! 3 h# d4015052 l! ;
+: ssp3-clk-on 7 h# d4015058 l! 3 h# d4015058 l! ;
+: ssp4-clk-on 7 h# d401505c l! 3 h# d401505c l! ;
+
+: wb ( byte -- ) ssp-ssdr rl! ;
+: rb ( -- byte ) ssp-ssdr rl@ . ;
+
+\ Wait until the CSS (Clock Synchronization Status) bit is 0
+: wait-clk-sync ( -- )
+ begin ssp-sssr rl@ h# 400.0000 and 0= until
+;
+
+\ Choose alternate function 4 (SSP3) for the pins we use
+: select-ssp3-pins
+ h# c4 h# d401e170 rl! \ GPIO74
+ h# c4 h# d401e174 rl! \ GPIO75
+ h# c4 h# d401e178 rl! \ GPIO76
+ h# c4 h# d401e17c rl! \ GPIO77
+;
: init-ssp-in-slave-mode ( -- )
- 7 h# d4015058 l! 3 h# d4015058 l! \ Enable clock to SSP3
+ select-ssp3-pins
+ ssp3-clk-on
h# 07 ssp-sscr0 rl! \ 8-bit data, SPI normal mode
- h# 1380.0000 ssp-sscr1 rl! \ SCFR=1, slave mode, rx w/o tx
+ h# 1380.0000 ssp-sscr1 rl! \ SCFR=1, slave mode, Rx w/o Tx
\ The enable bit must be set last, after all configuration is done
h# 87 ssp-sscr0 rl! \ Enable, 8-bit data, SPI normal mode
+ wait-clk-sync
;
: set-ssp-receive-w/o-transmit ( -- )
ssp-sscr1 rl@ h# 0080.0000 or ssp-sscr1 rl!
@@ -79,14 +114,17 @@
ssp-sssr rl@ d# 12 rshift h# f and ssp-rx-threshold =
;
+\ Set the direction on the ACK and CMD GPIOs
+d# 78 constant cmd-gpio#
+d# 79 constant ack-gpio#
: init-ec-spi-gpios ( -- )
- d# 78 gpio-dir-out
- d# 79 gpio-dir-out
+ cmd-gpio# gpio-dir-out
+ ack-gpio# gpio-dir-out
;
-: clr-cmd ( -- ) d# 78 gpio-clr ;
-: set-cmd ( -- ) d# 78 gpio-set ;
-: clr-ack ( -- ) d# 79 gpio-clr ;
-: set-ack ( -- ) d# 79 gpio-set ;
+: clr-cmd ( -- ) cmd-gpio# gpio-clr ;
+: set-cmd ( -- ) cmd-gpio# gpio-set ;
+: clr-ack ( -- ) ack-gpio# gpio-clr ;
+: set-ack ( -- ) ack-gpio# gpio-set ;
: pulse-ack ( -- ) clr-ack set-ack ;
0 value ec-spi-cmd-done \ 0 - still waiting, 1 - successful send, 2 - timeout
More information about the openfirmware
mailing list