[openfirmware] [commit] r2034 - cpu/arm/olpc/1.75 dev/mmc/sdhci

repository service svn at openfirmware.info
Tue Nov 23 23:37:53 CET 2010


Author: wmb
Date: Tue Nov 23 23:37:52 2010
New Revision: 2034
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2034

Log:
SDHCI - solidified support for SDHCI version 3 clock divisor layout and made 50 MHz operation work reasonably well for XO-1.75.

Modified:
   cpu/arm/olpc/1.75/sdhci.fth
   dev/mmc/sdhci/sdhci.fth

Modified: cpu/arm/olpc/1.75/sdhci.fth
==============================================================================
--- cpu/arm/olpc/1.75/sdhci.fth	Tue Nov 23 23:34:45 2010	(r2033)
+++ cpu/arm/olpc/1.75/sdhci.fth	Tue Nov 23 23:37:52 2010	(r2034)
@@ -5,16 +5,9 @@
    fload ${BP}/cpu/arm/olpc/1.75/sdregs.fth
    fload ${BP}/dev/mmc/sdhci/sdhci.fth
 
-   true to avoid-high-speed?
+\   true to avoid-high-speed?
 
    hex
-   \ The new clock divisor layout is low 8 bits in [15:8] and high 2 bits in [7:6]
-   \ The resulting 10-bit value is multiplied by 2 to form the divisor for the
-   \ 200 MHz base clock.
-   patch 403  103 card-clock-25    \ n is 4, divisor is 8, clk is 25 MHz
-   patch 203  003 card-clock-50    \ n is 2, divisor is 4, clk is 50 MHz
-   patch 043 8003 card-clock-slow  \ n is h# 100 (high 2 bits in [7:6], for divisor of 512 from 200 MHz clock
-
    : olpc-card-inserted?  ( -- flag )
       slot 1 =  if  d# 31 gpio-pin@ 0=  else  true  then
    ;

Modified: dev/mmc/sdhci/sdhci.fth
==============================================================================
--- dev/mmc/sdhci/sdhci.fth	Tue Nov 23 23:34:45 2010	(r2033)
+++ dev/mmc/sdhci/sdhci.fth	Tue Nov 23 23:37:52 2010	(r2034)
@@ -135,20 +135,24 @@
 : card-clock-on   ( -- )  h# 2c cw@  4 or  h# 2c cw!  ;
 : card-clock-off  ( -- )  h# 2c cw@  4 invert and  h# 2c cw!  ;
 
+: sdhci-version3?  ( -- flag )  h# fe cw@  h# ff and  2 >=  ;
 : card-clock-slow  ( -- )  \ Less than 400 kHz, for init
    card-clock-off
-   h# 8003 h# 2c cw!   \ Set divisor to 2^128, leaving internal clock on
+   \ Set divisor, leaving internal clock on
+   sdhci-version3?  if  h# 43  else  h# 8001  then  h# 2c cw!
    card-clock-on
 ;
 
 : card-clock-25  ( -- )
    card-clock-off
-   h# 103 h# 2c cw!   \ Set divisor to 2^1, leaving internal clock on
+   \ Set divisor, leaving internal clock on
+   sdhci-version3?  if  h# 403  else  h# 103  then  h# 2c cw!
    card-clock-on
 ;
 : card-clock-50  ( -- )
    card-clock-off
-   h# 003     \ division = 2^0, clocks on
+   \ Set divisor, leaving internal clock on
+   sdhci-version3?  if  h# 203  else  h# 001  then
 
    ?cafe-fpga-quirk
 
@@ -659,6 +663,7 @@
 
    \ Ask if high-speed is supported
    h# 00ff.fff1 switch-function d# 13 + c@  2  and  if   \ cmd6
+      2 ms
       h# 80ff.fff1 switch-function drop   \ Perform the switch  cmd6
       \ Bump the host controller clock
       host-high-speed  \ Changes the clock edge



More information about the openfirmware mailing list