[openfirmware] r1147 - dev/mmc/sdhci

svn at openfirmware.info svn at openfirmware.info
Thu Apr 16 22:51:50 CEST 2009


Author: wmb
Date: 2009-04-16 22:51:50 +0200 (Thu, 16 Apr 2009)
New Revision: 1147

Modified:
   dev/mmc/sdhci/sdhci.fth
Log:
SDHCI - clarified commentary to make it easier to find command numbers


Modified: dev/mmc/sdhci/sdhci.fth
===================================================================
--- dev/mmc/sdhci/sdhci.fth	2009-04-16 20:41:04 UTC (rev 1146)
+++ dev/mmc/sdhci/sdhci.fth	2009-04-16 20:51:50 UTC (rev 1147)
@@ -349,22 +349,22 @@
 d# 16 instance buffer: csd
 headers
 
-: reset-card  ( -- )  0 0 0 cmd  0 to rca  1 ms  ;  \ 0 -
+: reset-card  ( -- )  0 0 0 cmd  0 to rca  1 ms  ;  \ CMD0
 
-: send-op-cond  ( voltage-range -- ocr )  h# 0102 0 cmd  response  ; \ R3
+: send-op-cond  ( voltage-range -- ocr )  h# 0102 0 cmd  response  ; \ CMD1 R3
 
 \ Get card ID; Result is in cid buffer
-: get-all-cids  ( -- )  0 h# 0209 0 cmd  cid get-response136  ;  \ 2 R2
+: get-all-cids  ( -- )  0 h# 0209 0 cmd  cid get-response136  ;  \ CMD2 R2
 
 \ Get relative card address
-: get-rca  ( -- )  0 h# 031a 0 cmd  response  h# ffff0000 and  to rca  ; \ 3 R6 - SD
-: set-rca  ( rca -- )  to rca  rca h# 031a 0 cmd  ; \ 3 R1 - MMC
+: get-rca  ( -- )  0 h# 031a 0 cmd  response  h# ffff0000 and  to rca  ; \ CMD3 R6 - SD
+: set-rca  ( rca -- )  to rca  rca h# 031a 0 cmd  ; \ CMD3 R1 - MMC
 
-: set-dsr  ( -- )  0 h# 0400 0 cmd  ;  \ 4 - UNTESTED
+: set-dsr  ( -- )  0 h# 0400 0 cmd  ;  \ CMD4 - UNTESTED
 
 \ 5 - CMD5 is for SDIO.  It is defined below in the SDIO section.
 
-\ cmd6 (R1) is switch-function.  It can be used to enter high-speed mode
+\ CMD6 (R1) is switch-function.  It can be used to enter high-speed mode
 : switch-function  ( arg -- adr )
    scratch-buf  d# 64  d# 64  (dma-setup)
    h# 063b h# 11 cmd  ( response drop )
@@ -373,24 +373,24 @@
    scratch-buf
 ;
 
-: deselect-card  ( -- )   0   h# 0700 0 cmd  ;  \ 7 - with null RCA
-: select-card    ( -- )   rca h# 071b 0 cmd  ;  \ 7 R1b
+: deselect-card  ( -- )   0   h# 0700 0 cmd  ;  \ CMD7 - with null RCA
+: select-card    ( -- )   rca h# 071b 0 cmd  ;  \ CMD7 R1b
 
-: send-if-cond  ( -- )  h# 1aa h# 081a 0 cmd  ( response h# 1aa <>  if  ." Error"  then )   ;  \ 8 R7 (SD)
+: send-if-cond  ( -- )  h# 1aa h# 081a 0 cmd  ( response h# 1aa <>  if  ." Error"  then )   ;  \ CMD8 R7 (SD)
 
-\ : send-ext-csd  ( adr -- )  0 h# 0812 0 cmd  ;  \ 8 R1 (MMC) Untested - requires data transfer
+\ : send-ext-csd  ( adr -- )  0 h# 0812 0 cmd  ;  \ CMD8 R1 (MMC) Untested - requires data transfer
 
 \ Get Card-specific data
-: get-csd    ( -- )  rca  h# 0909 0 cmd  csd get-response136  ;  \ 9 R2
-: get-cid    ( -- )  rca  h# 0a09 0 cmd  cid get-response136  ;  \ 10 R2 UNTESTED
+: get-csd    ( -- )  rca  h# 0909 0 cmd  csd get-response136  ;  \ CMD9 R2
+: get-cid    ( -- )  rca  h# 0a09 0 cmd  cid get-response136  ;  \ CMD10 R2 UNTESTED
 
-: stop-transmission  ( -- )  rca  h# 0c1b 0 cmd  ;        \ 12 R1b UNTESTED
+: stop-transmission  ( -- )  rca  h# 0c1b 0 cmd  ;        \ CMD12 R1b UNTESTED
 
-: get-status ( -- status )  rca  h# 0d1a 0 cmd  response  ;  \ 13 R1 UNTESTED
+: get-status ( -- status )  rca  h# 0d1a 0 cmd  response  ;  \ CMD13 R1 UNTESTED
 
-: go-inactive  ( -- )  rca  h# 0f00 0 cmd  ;         \ 15 - UNTESTED
+: go-inactive  ( -- )  rca  h# 0f00 0 cmd  ;         \ CMD15 - UNTESTED
 
-: set-blocklen  ( blksize -- )  h# 101a 0 cmd  ;     \ 16 R1 SET_BLOCKLEN
+: set-blocklen  ( blksize -- )  h# 101a 0 cmd  ;     \ CMD16 R1 SET_BLOCKLEN
 
 \ Data transfer mode bits for register 0c (only relevant for reads, writes,
 \ and switch-function)
@@ -401,46 +401,46 @@
 \ 10.0000  direction: 1 for read, 0 for write
 \ 20.0000  multi (set for multiple-block transfers)
 
-: read-single     ( address -- )  h# 113a h# 13 cmd  ;  \ 17 R1 READ_SINGLE_BLOCK
-: read-multiple   ( address -- )  h# 123a h# 37 cmd  ;  \ 18 R1 READ_MULTIPLE
-: write-single    ( address -- )  h# 183a h# 03 cmd  ;  \ 24 R1 WRITE_SINGLE_BLOCK
-: write-multiple  ( address -- )  h# 193a h# 27 cmd  ;  \ 25 R1 WRITE_MULTIPLE
+: read-single     ( address -- )  h# 113a h# 13 cmd  ;  \ CMD17 R1 READ_SINGLE_BLOCK
+: read-multiple   ( address -- )  h# 123a h# 37 cmd  ;  \ CMD18 R1 READ_MULTIPLE
+: write-single    ( address -- )  h# 183a h# 03 cmd  ;  \ CMD24 R1 WRITE_SINGLE_BLOCK
+: write-multiple  ( address -- )  h# 193a h# 27 cmd  ;  \ CMD25 R1 WRITE_MULTIPLE
 
-: program-csd  ( -- )     0  h# 1b1a 0 cmd  ;  \ R1 27 UNTESTED
-: protect     ( group# -- )  h# 1c1b 0 cmd  ;  \ R1b 28 UNTESTED
-: unprotect   ( group# -- )  h# 1d1b 0 cmd  ;  \ R1b 29 UNTESTED
-: protected?  ( group# -- 32-bits )  h# 1e1a cmd  response  ;  \ 30 R1 UNTESTED
+: program-csd  ( -- )     0  h# 1b1a 0 cmd  ;  \ CMD27 R1 UNTESTED
+: protect     ( group# -- )  h# 1c1b 0 cmd  ;  \ CMD28 R1b UNTESTED
+: unprotect   ( group# -- )  h# 1d1b 0 cmd  ;  \ CMD29 R1b UNTESTED
+: protected?  ( group# -- 32-bits )  h# 1e1a cmd  response  ;  \ CMD30 R1 UNTESTED
 
 : erase-blocks  ( block# #blocks -- ) \ UNTESTED
    dup  0=  if  2drop exit  then
    1- bounds        ( last first )
-   h# 201a 0 cmd    ( last )   \ cmd32 - R1
-   h# 211a 0 cmd    ( )        \ cmd33 - R1
-   h# 261b 0 cmd               \ cmd38 - R1b (wait for busy)
+   h# 201a 0 cmd    ( last )   \ CMD32 - R1
+   h# 211a 0 cmd    ( )        \ CMD33 - R1
+   h# 261b 0 cmd               \ CMD38 - R1b (wait for busy)
 ;
 
-\ cmd40 is MMC
+\ CMD40 is MMC
 
 \ See table 4-5 in sandisk spec
-\ : lock/unlock  ( -- ) 0 h# 2a1a 0 cmd  ;  \ 42 R1 LOCK_UNLOCK not sure how it works
+\ : lock/unlock  ( -- ) 0 h# 2a1a 0 cmd  ;  \ CMD42 R1 LOCK_UNLOCK not sure how it works
 
-: app-prefix  ( -- )  rca  h# 371a 0 cmd  ;  \ 55 R1 app-specific command prefix
+: app-prefix  ( -- )  rca  h# 371a 0 cmd  ;  \ CMD55 R1 app-specific command prefix
 
-: set-bus-width  ( mode -- )  app-prefix  h# 61a 0 cmd  ;  \ a6 R1 Set mode
+: set-bus-width  ( mode -- )  app-prefix  h# 61a 0 cmd  ;  \ ACMD6 R1 Set mode
 
-: set-oc ( ocr -- ocr' )  app-prefix  h# 2902 0 cmd  response  ;  \ a41 R3
+: set-oc ( ocr -- ocr' )  app-prefix  h# 2902 0 cmd  response  ;  \ ACMD41 R3
 
 \ This sends back 512 bits in a single data block.
-: app-get-status  ( -- status )  app-prefix  0 h# 0d1a h# 12 cmd  response  ;  \ a13 R1 UNTESTED
+: app-get-status  ( -- status )  app-prefix  0 h# 0d1a h# 12 cmd  response  ;  \ ACMD13 R1 UNTESTED
 
-: get-#write-blocks  ( -- n )  app-prefix  0 h# 161a 0 cmd  response  ;  \ a22 R1 UNTESTED
+: get-#write-blocks  ( -- n )  app-prefix  0 h# 161a 0 cmd  response  ;  \ ACMD22 R1 UNTESTED
 
 \ You might want to turn this off for data transfer, as it controls
 \ a resistor on one of the data lines
-: set-card-detect  ( on/off -- )  app-prefix  h# 2a1a 0 cmd  ;  \ a42 R1 UNTESTED
+: set-card-detect  ( on/off -- )  app-prefix  h# 2a1a 0 cmd  ;  \ ACMD42 R1 UNTESTED
 : get-scr  ( -- adr )
    scratch-buf  d# 8  d# 8  (dma-setup)
-   app-prefix  0 h# 333a h# 11 cmd  ( response drop )  \ a51 R1
+   app-prefix  0 h# 333a h# 11 cmd  ( response drop )  \ ACMD51 R1
    2 wait
    dma-release
    scratch-buf
@@ -451,11 +451,11 @@
 \ We can't set the 10 bit in the cmd register here, because the R4 response
 \ format doesn't echo the command index in the response.
 
-: io-send-op-cond  ( voltage-range -- ocr )  h# 050a 0 cmd  response  ;  \ 5 R4
+: io-send-op-cond  ( voltage-range -- ocr )  h# 050a 0 cmd  response  ;  \ CMD5 R4 (SDIO)
 
 : >io-arg  ( reg# function# -- arg )  7 and  d# 28 lshift   or  ;
 
-\ The following are CMD52 variants
+\ The following are CMD52 (SDIO) variants
 \ Flags: 80:CRC_ERROR  40:ILLEGAL_COMMAND  30:IO_STATE (see spec)
 \        08:ERROR  04:reserved  02:INVALID_FUNCTION#  01:OUT_OF_RANGE
 : io-b@  ( reg# function# -- value flags )
@@ -471,7 +471,7 @@
    response wbsplit
 ;
 
-\ CMD53 - IO_RW_EXTENDED
+\ CMD53 (SDIO) - IO_RW_EXTENDED
 \ These commands - io-{read,write}-{bytes,blocks} will need to be
 \ enclosed in a method like r/w-blocks, in order to set up the DMA hardware.
 




More information about the openfirmware mailing list