| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919 |
- //*****************************************************************************
- //
- // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
- //
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions
- // are met:
- //
- // Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- //
- // Redistributions in binary form must reproduce the above copyright
- // notice, this list of conditions and the following disclaimer in the
- // documentation and/or other materials provided with the
- // distribution.
- //
- // Neither the name of Texas Instruments Incorporated nor the names of
- // its contributors may be used to endorse or promote products derived
- // from this software without specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- //
- //*****************************************************************************
- #ifndef __HW_MMCHS_H__
- #define __HW_MMCHS_H__
- //*****************************************************************************
- //
- // The following are defines for the MMCHS register offsets.
- //
- //*****************************************************************************
- #define MMCHS_O_HL_REV 0x00000000 // IP Revision Identifier (X.Y.R)
- // Used by software to track
- // features bugs and compatibility
- #define MMCHS_O_HL_HWINFO 0x00000004 // Information about the IP
- // module's hardware configuration
- // i.e. typically the module's HDL
- // generics (if any). Actual field
- // format and encoding is up to the
- // module's designer to decide.
- #define MMCHS_O_HL_SYSCONFIG 0x00000010 // Clock management configuration
- #define MMCHS_O_SYSCONFIG 0x00000110 // System Configuration Register
- // This register allows controlling
- // various parameters of the OCP
- // interface.
- #define MMCHS_O_SYSSTATUS 0x00000114 // System Status Register This
- // register provides status
- // information about the module
- // excluding the interrupt status
- // information
- #define MMCHS_O_CSRE 0x00000124 // Card status response error This
- // register enables the host
- // controller to detect card status
- // errors of response type R1 R1b
- // for all cards and of R5 R5b and
- // R6 response for cards types SD or
- // SDIO. When a bit MMCHS_CSRE[i] is
- // set to 1 if the corresponding bit
- // at the same position in the
- // response MMCHS_RSP0[i] is set to
- // 1 the host controller indicates a
- // card error (MMCHS_STAT[CERR])
- // interrupt status to avoid the
- // host driver reading the response
- // register (MMCHS_RSP0). Note: No
- // automatic card error detection
- // for autoCMD12 is implemented; the
- // host system has to check
- // autoCMD12 response register
- // (MMCHS_RESP76) for possible card
- // errors.
- #define MMCHS_O_SYSTEST 0x00000128 // System Test register This
- // register is used to control the
- // signals that connect to I/O pins
- // when the module is configured in
- // system test (SYSTEST) mode for
- // boundary connectivity
- // verification. Note: In SYSTEST
- // mode a write into MMCHS_CMD
- // register will not start a
- // transfer. The buffer behaves as a
- // stack accessible only by the
- // local host (push and pop
- // operations). In this mode the
- // Transfer Block Size
- // (MMCHS_BLK[BLEN]) and the Blocks
- // count for current transfer
- // (MMCHS_BLK[NBLK]) are needed to
- // generate a Buffer write ready
- // interrupt (MMCHS_STAT[BWR]) or a
- // Buffer read ready interrupt
- // (MMCHS_STAT[BRR]) and DMA
- // requests if enabled.
- #define MMCHS_O_CON 0x0000012C // Configuration register This
- // register is used: - to select the
- // functional mode or the SYSTEST
- // mode for any card. - to send an
- // initialization sequence to any
- // card. - to enable the detection
- // on DAT[1] of a card interrupt for
- // SDIO cards only. and also to
- // configure : - specific data and
- // command transfers for MMC cards
- // only. - the parameters related to
- // the card detect and write protect
- // input signals.
- #define MMCHS_O_PWCNT 0x00000130 // Power counter register This
- // register is used to program a mmc
- // counter to delay command
- // transfers after activating the
- // PAD power this value depends on
- // PAD characteristics and voltage.
- #define MMCHS_O_BLK 0x00000204 // Transfer Length Configuration
- // register MMCHS_BLK[BLEN] is the
- // block size register.
- // MMCHS_BLK[NBLK] is the block
- // count register. This register
- // shall be used for any card.
- #define MMCHS_O_ARG 0x00000208 // Command argument Register This
- // register contains command
- // argument specified as bit 39-8 of
- // Command-Format These registers
- // must be initialized prior to
- // sending the command itself to the
- // card (write action into the
- // register MMCHS_CMD register).
- // Only exception is for a command
- // index specifying stuff bits in
- // arguments making a write
- // unnecessary.
- #define MMCHS_O_CMD 0x0000020C // Command and transfer mode
- // register MMCHS_CMD[31:16] = the
- // command register MMCHS_CMD[15:0]
- // = the transfer mode. This
- // register configures the data and
- // command transfers. A write into
- // the most significant byte send
- // the command. A write into
- // MMCHS_CMD[15:0] registers during
- // data transfer has no effect. This
- // register shall be used for any
- // card. Note: In SYSTEST mode a
- // write into MMCHS_CMD register
- // will not start a transfer.
- #define MMCHS_O_RSP10 0x00000210 // Command response[31:0] Register
- // This 32-bit register holds bits
- // positions [31:0] of command
- // response type
- // R1/R1b/R2/R3/R4/R5/R5b/R6
- #define MMCHS_O_RSP32 0x00000214 // Command response[63:32] Register
- // This 32-bit register holds bits
- // positions [63:32] of command
- // response type R2
- #define MMCHS_O_RSP54 0x00000218 // Command response[95:64] Register
- // This 32-bit register holds bits
- // positions [95:64] of command
- // response type R2
- #define MMCHS_O_RSP76 0x0000021C // Command response[127:96]
- // Register This 32-bit register
- // holds bits positions [127:96] of
- // command response type R2
- #define MMCHS_O_DATA 0x00000220 // Data Register This register is
- // the 32-bit entry point of the
- // buffer for read or write data
- // transfers. The buffer size is
- // 32bits x256(1024 bytes). Bytes
- // within a word are stored and read
- // in little endian format. This
- // buffer can be used as two 512
- // byte buffers to transfer data
- // efficiently without reducing the
- // throughput. Sequential and
- // contiguous access is necessary to
- // increment the pointer correctly.
- // Random or skipped access is not
- // allowed. In little endian if the
- // local host accesses this register
- // byte-wise or 16bit-wise the least
- // significant byte (bits [7:0])
- // must always be written/read
- // first. The update of the buffer
- // address is done on the most
- // significant byte write for full
- // 32-bit DATA register or on the
- // most significant byte of the last
- // word of block transfer. Example
- // 1: Byte or 16-bit access
- // Mbyteen[3:0]=0001 (1-byte) =>
- // Mbyteen[3:0]=0010 (1-byte) =>
- // Mbyteen[3:0]=1100 (2-bytes) OK
- // Mbyteen[3:0]=0001 (1-byte) =>
- // Mbyteen[3:0]=0010 (1-byte) =>
- // Mbyteen[3:0]=0100 (1-byte) OK
- // Mbyteen[3:0]=0001 (1-byte) =>
- // Mbyteen[3:0]=0010 (1-byte) =>
- // Mbyteen[3:0]=1000 (1-byte) Bad
- #define MMCHS_O_PSTATE 0x00000224 // Present state register The Host
- // can get status of the Host
- // Controller from this 32-bit read
- // only register.
- #define MMCHS_O_HCTL 0x00000228 // Control register This register
- // defines the host controls to set
- // power wakeup and transfer
- // parameters. MMCHS_HCTL[31:24] =
- // Wakeup control MMCHS_HCTL[23:16]
- // = Block gap control
- // MMCHS_HCTL[15:8] = Power control
- // MMCHS_HCTL[7:0] = Host control
- #define MMCHS_O_SYSCTL 0x0000022C // SD system control register This
- // register defines the system
- // controls to set software resets
- // clock frequency management and
- // data timeout. MMCHS_SYSCTL[31:24]
- // = Software resets
- // MMCHS_SYSCTL[23:16] = Timeout
- // control MMCHS_SYSCTL[15:0] =
- // Clock control
- #define MMCHS_O_STAT 0x00000230 // Interrupt status register The
- // interrupt status regroups all the
- // status of the module internal
- // events that can generate an
- // interrupt. MMCHS_STAT[31:16] =
- // Error Interrupt Status
- // MMCHS_STAT[15:0] = Normal
- // Interrupt Status
- #define MMCHS_O_IE 0x00000234 // Interrupt SD enable register
- // This register allows to
- // enable/disable the module to set
- // status bits on an event-by-event
- // basis. MMCHS_IE[31:16] = Error
- // Interrupt Status Enable
- // MMCHS_IE[15:0] = Normal Interrupt
- // Status Enable
- #define MMCHS_O_ISE 0x00000238 // Interrupt signal enable register
- // This register allows to
- // enable/disable the module
- // internal sources of status on an
- // event-by-event basis.
- // MMCHS_ISE[31:16] = Error
- // Interrupt Signal Enable
- // MMCHS_ISE[15:0] = Normal
- // Interrupt Signal Enable
- #define MMCHS_O_AC12 0x0000023C // Auto CMD12 Error Status Register
- // The host driver may determine
- // which of the errors cases related
- // to Auto CMD12 has occurred by
- // checking this MMCHS_AC12 register
- // when an Auto CMD12 Error
- // interrupt occurs. This register
- // is valid only when Auto CMD12 is
- // enabled (MMCHS_CMD[ACEN]) and
- // Auto CMD12Error (MMCHS_STAT[ACE])
- // is set to 1. Note: These bits are
- // automatically reset when starting
- // a new adtc command with data.
- #define MMCHS_O_CAPA 0x00000240 // Capabilities register This
- // register lists the capabilities
- // of the MMC/SD/SDIO host
- // controller.
- #define MMCHS_O_CUR_CAPA 0x00000248 // Maximum current capabilities
- // Register This register indicates
- // the maximum current capability
- // for each voltage. The value is
- // meaningful if the voltage support
- // is set in the capabilities
- // register (MMCHS_CAPA).
- // Initialization of this register
- // (via a write access to this
- // register) depends on the system
- // capabilities. The host driver
- // shall not modify this register
- // after the initilaization. This
- // register is only reinitialized by
- // a hard reset (via RESETN signal)
- #define MMCHS_O_FE 0x00000250 // Force Event Register for Error
- // Interrupt status The force Event
- // Register is not a physically
- // implemented register. Rather it
- // is an address at which the Error
- // Interrupt Status register can be
- // written. The effect of a write to
- // this address will be reflected in
- // the Error Interrupt Status
- // Register if corresponding bit of
- // the Error Interrupt Status Enable
- // Register is set.
- #define MMCHS_O_ADMAES 0x00000254 // ADMA Error Status Register When
- // ADMA Error Interrupt is occurred
- // the ADMA Error States field in
- // this register holds the ADMA
- // state and the ADMA System Address
- // Register holds the address around
- // the error descriptor. For
- // recovering the error the Host
- // Driver requires the ADMA state to
- // identify the error descriptor
- // address as follows: ST_STOP:
- // Previous location set in the ADMA
- // System Address register is the
- // error descriptor address ST_FDS:
- // Current location set in the ADMA
- // System Address register is the
- // error descriptor address ST_CADR:
- // This sate is never set because do
- // not generate ADMA error in this
- // state. ST_TFR: Previous location
- // set in the ADMA System Address
- // register is the error descriptor
- // address In case of write
- // operation the Host Driver should
- // use ACMD22 to get the number of
- // written block rather than using
- // this information since unwritten
- // data may exist in the Host
- // Controller. The Host Controller
- // generates the ADMA Error
- // Interrupt when it detects invalid
- // descriptor data (Valid=0) at the
- // ST_FDS state. In this case ADMA
- // Error State indicates that an
- // error occurs at ST_FDS state. The
- // Host Driver may find that the
- // Valid bit is not set in the error
- // descriptor.
- #define MMCHS_O_ADMASAL 0x00000258 // ADMA System address Low bits
- #define MMCHS_O_REV 0x000002FC // Versions Register This register
- // contains the hard coded RTL
- // vendor revision number the
- // version number of SD
- // specification compliancy and a
- // slot status bit. MMCHS_REV[31:16]
- // = Host controller version
- // MMCHS_REV[15:0] = Slot Interrupt
- // Status
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_HL_REV register.
- //
- //******************************************************************************
- #define MMCHS_HL_REV_SCHEME_M 0xC0000000
- #define MMCHS_HL_REV_SCHEME_S 30
- #define MMCHS_HL_REV_FUNC_M 0x0FFF0000 // Function indicates a software
- // compatible module family. If
- // there is no level of software
- // compatibility a new Func number
- // (and hence REVISION) should be
- // assigned.
- #define MMCHS_HL_REV_FUNC_S 16
- #define MMCHS_HL_REV_R_RTL_M 0x0000F800 // RTL Version (R) maintained by IP
- // design owner. RTL follows a
- // numbering such as X.Y.R.Z which
- // are explained in this table. R
- // changes ONLY when: (1) PDS
- // uploads occur which may have been
- // due to spec changes (2) Bug fixes
- // occur (3) Resets to '0' when X or
- // Y changes. Design team has an
- // internal 'Z' (customer invisible)
- // number which increments on every
- // drop that happens due to DV and
- // RTL updates. Z resets to 0 when R
- // increments.
- #define MMCHS_HL_REV_R_RTL_S 11
- #define MMCHS_HL_REV_X_MAJOR_M 0x00000700 // Major Revision (X) maintained by
- // IP specification owner. X changes
- // ONLY when: (1) There is a major
- // feature addition. An example
- // would be adding Master Mode to
- // Utopia Level2. The Func field (or
- // Class/Type in old PID format)
- // will remain the same. X does NOT
- // change due to: (1) Bug fixes (2)
- // Change in feature parameters.
- #define MMCHS_HL_REV_X_MAJOR_S 8
- #define MMCHS_HL_REV_CUSTOM_M 0x000000C0
- #define MMCHS_HL_REV_CUSTOM_S 6
- #define MMCHS_HL_REV_Y_MINOR_M 0x0000003F // Minor Revision (Y) maintained by
- // IP specification owner. Y changes
- // ONLY when: (1) Features are
- // scaled (up or down). Flexibility
- // exists in that this feature
- // scalability may either be
- // represented in the Y change or a
- // specific register in the IP that
- // indicates which features are
- // exactly available. (2) When
- // feature creeps from Is-Not list
- // to Is list. But this may not be
- // the case once it sees silicon; in
- // which case X will change. Y does
- // NOT change due to: (1) Bug fixes
- // (2) Typos or clarifications (3)
- // major functional/feature
- // change/addition/deletion. Instead
- // these changes may be reflected
- // via R S X as applicable. Spec
- // owner maintains a
- // customer-invisible number 'S'
- // which changes due to: (1)
- // Typos/clarifications (2) Bug
- // documentation. Note that this bug
- // is not due to a spec change but
- // due to implementation.
- // Nevertheless the spec tracks the
- // IP bugs. An RTL release (say for
- // silicon PG1.1) that occurs due to
- // bug fix should document the
- // corresponding spec number (X.Y.S)
- // in its release notes.
- #define MMCHS_HL_REV_Y_MINOR_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_HL_HWINFO register.
- //
- //******************************************************************************
- #define MMCHS_HL_HWINFO_RETMODE 0x00000040
- #define MMCHS_HL_HWINFO_MEM_SIZE_M \
- 0x0000003C
- #define MMCHS_HL_HWINFO_MEM_SIZE_S 2
- #define MMCHS_HL_HWINFO_MERGE_MEM \
- 0x00000002
- #define MMCHS_HL_HWINFO_MADMA_EN \
- 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the
- // MMCHS_O_HL_SYSCONFIG register.
- //
- //******************************************************************************
- #define MMCHS_HL_SYSCONFIG_STANDBYMODE_M \
- 0x00000030 // Configuration of the local
- // initiator state management mode.
- // By definition initiator may
- // generate read/write transaction
- // as long as it is out of STANDBY
- // state. 0x0 Force-standby mode:
- // local initiator is
- // unconditionally placed in standby
- // state.Backup mode for debug only.
- // 0x1 No-standby mode: local
- // initiator is unconditionally
- // placed out of standby
- // state.Backup mode for debug only.
- // 0x2 Smart-standby mode: local
- // initiator standby status depends
- // on local conditions i.e. the
- // module's functional requirement
- // from the initiator.IP module
- // shall not generate
- // (initiator-related) wakeup
- // events. 0x3 "Smart-Standby
- // wakeup-capable mode: local
- // initiator standby status depends
- // on local conditions i.e. the
- // module's functional requirement
- // from the initiator. IP module may
- // generate (master-related) wakeup
- // events when in standby state.Mode
- // is only relevant if the
- // appropriate IP module ""mwakeup""
- // output is implemented."
- #define MMCHS_HL_SYSCONFIG_STANDBYMODE_S 4
- #define MMCHS_HL_SYSCONFIG_IDLEMODE_M \
- 0x0000000C // Configuration of the local
- // target state management mode. By
- // definition target can handle
- // read/write transaction as long as
- // it is out of IDLE state. 0x0
- // Force-idle mode: local target's
- // idle state follows (acknowledges)
- // the system's idle requests
- // unconditionally i.e. regardless
- // of the IP module's internal
- // requirements.Backup mode for
- // debug only. 0x1 No-idle mode:
- // local target never enters idle
- // state.Backup mode for debug only.
- // 0x2 Smart-idle mode: local
- // target's idle state eventually
- // follows (acknowledges) the
- // system's idle requests depending
- // on the IP module's internal
- // requirements.IP module shall not
- // generate (IRQ- or
- // DMA-request-related) wakeup
- // events. 0x3 "Smart-idle
- // wakeup-capable mode: local
- // target's idle state eventually
- // follows (acknowledges) the
- // system's idle requests depending
- // on the IP module's internal
- // requirements.IP module may
- // generate (IRQ- or
- // DMA-request-related) wakeup
- // events when in idle state.Mode is
- // only relevant if the appropriate
- // IP module ""swakeup"" output(s)
- // is (are) implemented."
- #define MMCHS_HL_SYSCONFIG_IDLEMODE_S 2
- #define MMCHS_HL_SYSCONFIG_FREEEMU \
- 0x00000002 // Sensitivity to emulation (debug)
- // suspend input signal.
- // Functionality NOT implemented in
- // MMCHS. 0 IP module is sensitive
- // to emulation suspend 1 IP module
- // is not sensitive to emulation
- // suspend
- #define MMCHS_HL_SYSCONFIG_SOFTRESET \
- 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_SYSCONFIG register.
- //
- //******************************************************************************
- #define MMCHS_SYSCONFIG_STANDBYMODE_M \
- 0x00003000 // Master interface power
- // Management standby/wait control.
- // The bit field is only useful when
- // generic parameter MADMA_EN
- // (Master ADMA enable) is set as
- // active otherwise it is a read
- // only register read a '0'. 0x0
- // Force-standby. Mstandby is forced
- // unconditionnaly. 0x1 No-standby.
- // Mstandby is never asserted. 0x2
- // Smart-standby mode: local
- // initiator standby status depends
- // on local conditions i.e. the
- // module's functional requirement
- // from the initiator.IP module
- // shall not generate
- // (initiator-related) wakeup
- // events. 0x3 Smart-Standby
- // wakeup-capable mode: "local
- // initiator standby status depends
- // on local conditions i.e. the
- // module's functional requirement
- // from the initiator. IP module may
- // generate (master-related) wakeup
- // events when in standby state.Mode
- // is only relevant if the
- // appropriate IP module ""mwakeup""
- // output is implemented."
- #define MMCHS_SYSCONFIG_STANDBYMODE_S 12
- #define MMCHS_SYSCONFIG_CLOCKACTIVITY_M \
- 0x00000300 // Clocks activity during wake up
- // mode period. Bit8: OCP interface
- // clock Bit9: Functional clock 0x0
- // OCP and Functional clock may be
- // switched off. 0x1 OCP clock is
- // maintained. Functional clock may
- // be switched-off. 0x2 Functional
- // clock is maintained. OCP clock
- // may be switched-off. 0x3 OCP and
- // Functional clocks are maintained.
- #define MMCHS_SYSCONFIG_CLOCKACTIVITY_S 8
- #define MMCHS_SYSCONFIG_SIDLEMODE_M \
- 0x00000018 // Power management 0x0 If an idle
- // request is detected the MMCHS
- // acknowledges it unconditionally
- // and goes in Inactive mode.
- // Interrupt and DMA requests are
- // unconditionally de-asserted. 0x1
- // If an idle request is detected
- // the request is ignored and the
- // module keeps on behaving
- // normally. 0x2 Smart-idle mode:
- // local target's idle state
- // eventually follows (acknowledges)
- // the system's idle requests
- // depending on the IP module's
- // internal requirements.IP module
- // shall not generate (IRQ- or
- // DMA-request-related) wakeup
- // events. 0x3 Smart-idle
- // wakeup-capable mode: "local
- // target's idle state eventually
- // follows (acknowledges) the
- // system's idle requests depending
- // on the IP module's internal
- // requirements.IP module may
- // generate (IRQ- or
- // DMA-request-related) wakeup
- // events when in idle state.Mode is
- // only relevant if the appropriate
- // IP module ""swakeup"" output(s)
- // is (are) implemented."
- #define MMCHS_SYSCONFIG_SIDLEMODE_S 3
- #define MMCHS_SYSCONFIG_ENAWAKEUP \
- 0x00000004 // Wakeup feature control 0 Wakeup
- // capability is disabled 1 Wakeup
- // capability is enabled
- #define MMCHS_SYSCONFIG_SOFTRESET \
- 0x00000002
- #define MMCHS_SYSCONFIG_AUTOIDLE \
- 0x00000001 // Internal Clock gating strategy 0
- // Clocks are free-running 1
- // Automatic clock gating strategy
- // is applied based on the OCP and
- // MMC interface activity
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_SYSSTATUS register.
- //
- //******************************************************************************
- #define MMCHS_SYSSTATUS_RESETDONE \
- 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_CSRE register.
- //
- //******************************************************************************
- #define MMCHS_CSRE_CSRE_M 0xFFFFFFFF // Card status response error
- #define MMCHS_CSRE_CSRE_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_SYSTEST register.
- //
- //******************************************************************************
- #define MMCHS_SYSTEST_OBI 0x00010000
- #define MMCHS_SYSTEST_SDCD 0x00008000
- #define MMCHS_SYSTEST_SDWP 0x00004000
- #define MMCHS_SYSTEST_WAKD 0x00002000
- #define MMCHS_SYSTEST_SSB 0x00001000
- #define MMCHS_SYSTEST_D7D 0x00000800
- #define MMCHS_SYSTEST_D6D 0x00000400
- #define MMCHS_SYSTEST_D5D 0x00000200
- #define MMCHS_SYSTEST_D4D 0x00000100
- #define MMCHS_SYSTEST_D3D 0x00000080
- #define MMCHS_SYSTEST_D2D 0x00000040
- #define MMCHS_SYSTEST_D1D 0x00000020
- #define MMCHS_SYSTEST_D0D 0x00000010
- #define MMCHS_SYSTEST_DDIR 0x00000008
- #define MMCHS_SYSTEST_CDAT 0x00000004
- #define MMCHS_SYSTEST_CDIR 0x00000002
- #define MMCHS_SYSTEST_MCKD 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_CON register.
- //
- //******************************************************************************
- #define MMCHS_CON_SDMA_LNE 0x00200000 // Slave DMA Level/Edge Request:
- // The waveform of the DMA request
- // can be configured either edge
- // sensitive with early de-assertion
- // on first access to MMCHS_DATA
- // register or late de-assertion
- // request remains active until last
- // allowed data written into
- // MMCHS_DATA. 0 Slave DMA edge
- // sensitive Early DMA de-assertion
- // 1 Slave DMA level sensitive Late
- // DMA de-assertion
- #define MMCHS_CON_DMA_MNS 0x00100000 // DMA Master or Slave selection:
- // When this bit is set and the
- // controller is configured to use
- // the DMA Ocp master interface is
- // used to get datas from system
- // using ADMA2 procedure (direct
- // access to the memory).This option
- // is only available if generic
- // parameter MADMA_EN is asserted to
- // '1'. 0 The controller is slave on
- // data transfers with system. 1 The
- // controller is master on data
- // exchange with system controller
- // must be configured as using DMA.
- #define MMCHS_CON_DDR 0x00080000 // Dual Data Rate mode: When this
- // register is set the controller
- // uses both clock edge to emit or
- // receive data. Odd bytes are
- // transmitted on falling edges and
- // even bytes are transmitted on
- // rise edges. It only applies on
- // Data bytes and CRC Start end bits
- // and CRC status are kept full
- // cycle. This bit field is only
- // meaningful and active for even
- // clock divider ratio of
- // MMCHS_SYSCTL[CLKD] it is
- // insensitive to MMCHS_HCTL[HSPE]
- // setting. 0 Standard mode : data
- // are transmitted on a single edge
- // depending on MMCHS_HCTRL[HSPE]. 1
- // Data Bytes and CRC are
- // transmitted on both edge.
- #define MMCHS_CON_BOOT_CF0 0x00040000
- #define MMCHS_CON_BOOT_ACK 0x00020000 // Book acknowledge received: When
- // this bit is set the controller
- // should receive a boot status on
- // DAT0 line after next command
- // issued. If no status is received
- // a data timeout will be generated.
- // 0 No acknowledge to be received 1
- // A boot status will be received on
- // DAT0 line after issuing a
- // command.
- #define MMCHS_CON_CLKEXTFREE 0x00010000 // External clock free running:
- // This register is used to maintain
- // card clock out of transfer
- // transaction to enable slave
- // module for example to generate a
- // synchronous interrupt on DAT[1].
- // The Clock will be maintain only
- // if MMCHS_SYSCTL[CEN] is set. 0
- // External card clock is cut off
- // outside active transaction
- // period. 1 External card clock is
- // maintain even out of active
- // transaction period only if
- // MMCHS_SYSCTL[CEN] is set.
- #define MMCHS_CON_PADEN 0x00008000 // Control Power for MMC Lines:
- // This register is only useful when
- // MMC PADs contain power saving
- // mechanism to minimize its leakage
- // power. It works as a GPIO that
- // directly control the ACTIVE pin
- // of PADs. Excepted for DAT[1] the
- // signal is also combine outside
- // the module with the dedicated
- // power control MMCHS_CON[CTPL]
- // bit. 0 ADPIDLE module pin is not
- // forced it is automatically
- // generated by the MMC fsms. 1
- // ADPIDLE module pin is forced to
- // active state.
- #define MMCHS_CON_OBIE 0x00004000 // Out-of-Band Interrupt Enable MMC
- // cards only: This bit enables the
- // detection of Out-of-Band
- // Interrupt on MMCOBI input pin.
- // The usage of the Out-of-Band
- // signal (OBI) is optional and
- // depends on the system
- // integration. 0 Out-of-Band
- // interrupt detection disabled 1
- // Out-of-Band interrupt detection
- // enabled
- #define MMCHS_CON_OBIP 0x00002000 // Out-of-Band Interrupt Polarity
- // MMC cards only: This bit selects
- // the active level of the
- // out-of-band interrupt coming from
- // MMC cards. The usage of the
- // Out-of-Band signal (OBI) is
- // optional and depends on the
- // system integration. 0 active high
- // level 1 active low level
- #define MMCHS_CON_CEATA 0x00001000 // CE-ATA control mode MMC cards
- // compliant with CE-ATA:By default
- // this bit is set to 0. It is use
- // to indicate that next commands
- // are considered as specific CE-ATA
- // commands that potentially use
- // 'command completion' features. 0
- // Standard MMC/SD/SDIO mode. 1
- // CE-ATA mode next commands are
- // considered as CE-ATA commands.
- #define MMCHS_CON_CTPL 0x00000800 // Control Power for DAT[1] line
- // MMC and SD cards: By default this
- // bit is set to 0 and the host
- // controller automatically disables
- // all the input buffers outside of
- // a transaction to minimize the
- // leakage current. SDIO cards: When
- // this bit is set to 1 the host
- // controller automatically disables
- // all the input buffers except the
- // buffer of DAT[1] outside of a
- // transaction in order to detect
- // asynchronous card interrupt on
- // DAT[1] line and minimize the
- // leakage current of the buffers. 0
- // Disable all the input buffers
- // outside of a transaction. 1
- // Disable all the input buffers
- // except the buffer of DAT[1]
- // outside of a transaction.
- #define MMCHS_CON_DVAL_M 0x00000600 // Debounce filter value All cards
- // This register is used to define a
- // debounce period to filter the
- // card detect input signal (SDCD).
- // The usage of the card detect
- // input signal (SDCD) is optional
- // and depends on the system
- // integration and the type of the
- // connector housing that
- // accommodates the card. 0x0 33 us
- // debounce period 0x1 231 us
- // debounce period 0x2 1 ms debounce
- // period 0x3 84 ms debounce period
- #define MMCHS_CON_DVAL_S 9
- #define MMCHS_CON_WPP 0x00000100 // Write protect polarity For SD
- // and SDIO cards only This bit
- // selects the active level of the
- // write protect input signal
- // (SDWP). The usage of the write
- // protect input signal (SDWP) is
- // optional and depends on the
- // system integration and the type
- // of the connector housing that
- // accommodates the card. 0 active
- // high level 1 active low level
- #define MMCHS_CON_CDP 0x00000080 // Card detect polarity All cards
- // This bit selects the active level
- // of the card detect input signal
- // (SDCD). The usage of the card
- // detect input signal (SDCD) is
- // optional and depends on the
- // system integration and the type
- // of the connector housing that
- // accommodates the card. 0 active
- // high level 1 active low level
- #define MMCHS_CON_MIT 0x00000040 // MMC interrupt command Only for
- // MMC cards. This bit must be set
- // to 1 when the next write access
- // to the command register
- // (MMCHS_CMD) is for writing a MMC
- // interrupt command (CMD40)
- // requiring the command timeout
- // detection to be disabled for the
- // command response. 0 Command
- // timeout enabled 1 Command timeout
- // disabled
- #define MMCHS_CON_DW8 0x00000020 // 8-bit mode MMC select For
- // SD/SDIO cards this bit must be
- // set to 0. For MMC card this bit
- // must be set following a valid
- // SWITCH command (CMD6) with the
- // correct value and extend CSD
- // index written in the argument.
- // Prior to this command the MMC
- // card configuration register (CSD
- // and EXT_CSD) must be verified for
- // compliancy with MMC standard
- // specification 4.x (see section
- // 3.6). 0 1-bit or 4-bit Data width
- // (DAT[0] used MMC SD cards) 1
- // 8-bit Data width (DAT[7:0] used
- // MMC cards)
- #define MMCHS_CON_MODE 0x00000010 // Mode select All cards These bits
- // select between Functional mode
- // and SYSTEST mode. 0 Functional
- // mode. Transfers to the
- // MMC/SD/SDIO cards follow the card
- // protocol. MMC clock is enabled.
- // MMC/SD transfers are operated
- // under the control of the CMD
- // register. 1 SYSTEST mode The
- // signal pins are configured as
- // general-purpose input/output and
- // the 1024-byte buffer is
- // configured as a stack memory
- // accessible only by the local host
- // or system DMA. The pins retain
- // their default type (input output
- // or in-out). SYSTEST mode is
- // operated under the control of the
- // SYSTEST register.
- #define MMCHS_CON_STR 0x00000008 // Stream command Only for MMC
- // cards. This bit must be set to 1
- // only for the stream data
- // transfers (read or write) of the
- // adtc commands. Stream read is a
- // class 1 command (CMD11:
- // READ_DAT_UNTIL_STOP). Stream
- // write is a class 3 command
- // (CMD20: WRITE_DAT_UNTIL_STOP). 0
- // Block oriented data transfer 1
- // Stream oriented data transfer
- #define MMCHS_CON_HR 0x00000004 // Broadcast host response Only for
- // MMC cards. This register is used
- // to force the host to generate a
- // 48-bit response for bc command
- // type. "It can be used to
- // terminate the interrupt mode by
- // generating a CMD40 response by
- // the core (see section 4.3
- // ""Interrupt Mode"" in the MMC [1]
- // specification). In order to have
- // the host response to be generated
- // in open drain mode the register
- // MMCHS_CON[OD] must be set to 1."
- // When MMCHS_CON[CEATA] is set to 1
- // and MMCHS_ARG set to 0x00000000
- // when writing 0x00000000 into
- // MMCHS_CMD register the host
- // controller performs a 'command
- // completion signal disable' token
- // i.e. CMD line held to '0' during
- // 47 cycles followed by a 1. 0 The
- // host does not generate a 48-bit
- // response instead of a command. 1
- // The host generates a 48-bit
- // response instead of a command or
- // a command completion signal
- // disable token.
- #define MMCHS_CON_INIT 0x00000002 // Send initialization stream All
- // cards. When this bit is set to 1
- // and the card is idle an
- // initialization sequence is sent
- // to the card. "An initialization
- // sequence consists of setting the
- // CMD line to 1 during 80 clock
- // cycles. The initialisation
- // sequence is mandatory - but it is
- // not required to do it through
- // this bit - this bit makes it
- // easier. Clock divider
- // (MMCHS_SYSCTL[CLKD]) should be
- // set to ensure that 80 clock
- // periods are greater than 1ms.
- // (see section 9.3 ""Power-Up"" in
- // the MMC card specification [1] or
- // section 6.4 in the SD card
- // specification [2])." Note: in
- // this mode there is no command
- // sent to the card and no response
- // is expected 0 The host does not
- // send an initialization sequence.
- // 1 The host sends an
- // initialization sequence.
- #define MMCHS_CON_OD 0x00000001 // Card open drain mode. Only for
- // MMC cards. This bit must be set
- // to 1 for MMC card commands 1 2 3
- // and 40 and if the MMC card bus is
- // operating in open-drain mode
- // during the response phase to the
- // command sent. Typically during
- // card identification mode when the
- // card is either in idle ready or
- // ident state. It is also necessary
- // to set this bit to 1 for a
- // broadcast host response (see
- // Broadcast host response register
- // MMCHS_CON[HR]) 0 No Open Drain 1
- // Open Drain or Broadcast host
- // response
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_PWCNT register.
- //
- //******************************************************************************
- #define MMCHS_PWCNT_PWRCNT_M 0x0000FFFF // Power counter register. This
- // register is used to introduce a
- // delay between the PAD ACTIVE pin
- // assertion and the command issued.
- // 0x0000 No additional delay added
- // 0x0001 TCF delay (card clock
- // period) 0x0002 TCF x 2 delay
- // (card clock period) 0xFFFE TCF x
- // 65534 delay (card clock period)
- // 0xFFFF TCF x 65535 delay (card
- // clock period)
- #define MMCHS_PWCNT_PWRCNT_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_BLK register.
- //
- //******************************************************************************
- #define MMCHS_BLK_NBLK_M 0xFFFF0000 // Blocks count for current
- // transfer This register is enabled
- // when Block count Enable
- // (MMCHS_CMD[BCE]) is set to 1 and
- // is valid only for multiple block
- // transfers. Setting the block
- // count to 0 results no data blocks
- // being transferred. Note: The host
- // controller decrements the block
- // count after each block transfer
- // and stops when the count reaches
- // zero. This register can be
- // accessed only if no transaction
- // is executing (i.e after a
- // transaction has stopped). Read
- // operations during transfers may
- // return an invalid value and write
- // operation will be ignored. In
- // suspend context the number of
- // blocks yet to be transferred can
- // be determined by reading this
- // register. When restoring transfer
- // context prior to issuing a Resume
- // command The local host shall
- // restore the previously saved
- // block count. 0x0000 Stop count
- // 0x0001 1 block 0x0002 2 blocks
- // 0xFFFF 65535 blocks
- #define MMCHS_BLK_NBLK_S 16
- #define MMCHS_BLK_BLEN_M 0x00000FFF // Transfer Block Size. This
- // register specifies the block size
- // for block data transfers. Read
- // operations during transfers may
- // return an invalid value and write
- // operations are ignored. When a
- // CMD12 command is issued to stop
- // the transfer a read of the BLEN
- // field after transfer completion
- // (MMCHS_STAT[TC] set to 1) will
- // not return the true byte number
- // of data length while the stop
- // occurs but the value written in
- // this register before transfer is
- // launched. 0x000 No data transfer
- // 0x001 1 byte block length 0x002 2
- // bytes block length 0x003 3 bytes
- // block length 0x1FF 511 bytes
- // block length 0x200 512 bytes
- // block length 0x7FF 2047 bytes
- // block length 0x800 2048 bytes
- // block length
- #define MMCHS_BLK_BLEN_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_ARG register.
- //
- //******************************************************************************
- #define MMCHS_ARG_ARG_M 0xFFFFFFFF // Command argument bits [31:0]
- #define MMCHS_ARG_ARG_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_CMD register.
- //
- //******************************************************************************
- #define MMCHS_CMD_INDX_M 0x3F000000 // Command index Binary encoded
- // value from 0 to 63 specifying the
- // command number send to card 0x00
- // CMD0 or ACMD0 0x01 CMD1 or ACMD1
- // 0x02 CMD2 or ACMD2 0x03 CMD3 or
- // ACMD3 0x04 CMD4 or ACMD4 0x05
- // CMD5 or ACMD5 0x06 CMD6 or ACMD6
- // 0x07 CMD7 or ACMD7 0x08 CMD8 or
- // ACMD8 0x09 CMD9 or ACMD9 0x0A
- // CMD10 or ACMD10 0x0B CMD11 or
- // ACMD11 0x0C CMD12 or ACMD12 0x0D
- // CMD13 or ACMD13 0x0E CMD14 or
- // ACMD14 0x0F CMD15 or ACMD15 0x10
- // CMD16 or ACMD16 0x11 CMD17 or
- // ACMD17 0x12 CMD18 or ACMD18 0x13
- // CMD19 or ACMD19 0x14 CMD20 or
- // ACMD20 0x15 CMD21 or ACMD21 0x16
- // CMD22 or ACMD22 0x17 CMD23 or
- // ACMD23 0x18 CMD24 or ACMD24 0x19
- // CMD25 or ACMD25 0x1A CMD26 or
- // ACMD26 0x1B CMD27 or ACMD27 0x1C
- // CMD28 or ACMD28 0x1D CMD29 or
- // ACMD29 0x1E CMD30 or ACMD30 0x1F
- // CMD31 or ACMD31 0x20 CMD32 or
- // ACMD32 0x21 CMD33 or ACMD33 0x22
- // CMD34 or ACMD34 0x23 CMD35 or
- // ACMD35 0x24 CMD36 or ACMD36 0x25
- // CMD37 or ACMD37 0x26 CMD38 or
- // ACMD38 0x27 CMD39 or ACMD39 0x28
- // CMD40 or ACMD40 0x29 CMD41 or
- // ACMD41 0x2A CMD42 or ACMD42 0x2B
- // CMD43 or ACMD43 0x2C CMD44 or
- // ACMD44 0x2D CMD45 or ACMD45 0x2E
- // CMD46 or ACMD46 0x2F CMD47 or
- // ACMD47 0x30 CMD48 or ACMD48 0x31
- // CMD49 or ACMD49 0x32 CMD50 or
- // ACMD50 0x33 CMD51 or ACMD51 0x34
- // CMD52 or ACMD52 0x35 CMD53 or
- // ACMD53 0x36 CMD54 or ACMD54 0x37
- // CMD55 or ACMD55 0x38 CMD56 or
- // ACMD56 0x39 CMD57 or ACMD57 0x3A
- // CMD58 or ACMD58 0x3B CMD59 or
- // ACMD59 0x3C CMD60 or ACMD60 0x3D
- // CMD61 or ACMD61 0x3E CMD62 or
- // ACMD62 0x3F CMD63 or ACMD63
- #define MMCHS_CMD_INDX_S 24
- #define MMCHS_CMD_CMD_TYPE_M 0x00C00000 // Command type This register
- // specifies three types of special
- // command: Suspend Resume and
- // Abort. These bits shall be set to
- // 00b for all other commands. 0x0
- // Others Commands 0x1 "CMD52 for
- // writing ""Bus Suspend"" in CCCR"
- // 0x2 "CMD52 for writing ""Function
- // Select"" in CCCR" 0x3 "Abort
- // command CMD12 CMD52 for writing
- // "" I/O Abort"" in CCCR"
- #define MMCHS_CMD_CMD_TYPE_S 22
- #define MMCHS_CMD_DP 0x00200000 // Data present select This
- // register indicates that data is
- // present and DAT line shall be
- // used. It must be set to 0 in the
- // following conditions: - command
- // using only CMD line - command
- // with no data transfer but using
- // busy signal on DAT[0] - Resume
- // command 0 Command with no data
- // transfer 1 Command with data
- // transfer
- #define MMCHS_CMD_CICE 0x00100000 // Command Index check enable This
- // bit must be set to 1 to enable
- // index check on command response
- // to compare the index field in the
- // response against the index of the
- // command. If the index is not the
- // same in the response as in the
- // command it is reported as a
- // command index error
- // (MMCHS_STAT[CIE] set to1) Note:
- // The register CICE cannot be
- // configured for an Auto CMD12 then
- // index check is automatically
- // checked when this command is
- // issued. 0 Index check disable 1
- // Index check enable
- #define MMCHS_CMD_CCCE 0x00080000 // Command CRC check enable This
- // bit must be set to 1 to enable
- // CRC7 check on command response to
- // protect the response against
- // transmission errors on the bus.
- // If an error is detected it is
- // reported as a command CRC error
- // (MMCHS_STAT[CCRC] set to 1).
- // Note: The register CCCE cannot be
- // configured for an Auto CMD12 and
- // then CRC check is automatically
- // checked when this command is
- // issued. 0 CRC7 check disable 1
- // CRC7 check enable
- #define MMCHS_CMD_RSP_TYPE_M 0x00030000 // Response type This bits defines
- // the response type of the command
- // 0x0 No response 0x1 Response
- // Length 136 bits 0x2 Response
- // Length 48 bits 0x3 Response
- // Length 48 bits with busy after
- // response
- #define MMCHS_CMD_RSP_TYPE_S 16
- #define MMCHS_CMD_MSBS 0x00000020 // Multi/Single block select This
- // bit must be set to 1 for data
- // transfer in case of multi block
- // command. For any others command
- // this bit shall be set to 0. 0
- // Single block. If this bit is 0 it
- // is not necessary to set the
- // register MMCHS_BLK[NBLK]. 1 Multi
- // block. When Block Count is
- // disabled (MMCHS_CMD[BCE] is set
- // to 0) in Multiple block transfers
- // (MMCHS_CMD[MSBS] is set to 1) the
- // module can perform infinite
- // transfer.
- #define MMCHS_CMD_DDIR 0x00000010 // Data transfer Direction Select
- // This bit defines either data
- // transfer will be a read or a
- // write. 0 Data Write (host to
- // card) 1 Data Read (card to host)
- #define MMCHS_CMD_ACEN 0x00000004 // Auto CMD12 Enable SD card only.
- // When this bit is set to 1 the
- // host controller issues a CMD12
- // automatically after the transfer
- // completion of the last block. The
- // Host Driver shall not set this
- // bit to issue commands that do not
- // require CMD12 to stop data
- // transfer. In particular secure
- // commands do not require CMD12. 0
- // Auto CMD12 disable 1 Auto CMD12
- // enable or CCS detection enabled.
- #define MMCHS_CMD_BCE 0x00000002 // Block Count Enable Multiple
- // block transfers only. This bit is
- // used to enable the block count
- // register (MMCHS_BLK[NBLK]). When
- // Block Count is disabled
- // (MMCHS_CMD[BCE] is set to 0) in
- // Multiple block transfers
- // (MMCHS_CMD[MSBS] is set to 1) the
- // module can perform infinite
- // transfer. 0 Block count disabled
- // for infinite transfer. 1 Block
- // count enabled for multiple block
- // transfer with known number of
- // blocks
- #define MMCHS_CMD_DE 0x00000001 // DMA Enable This bit is used to
- // enable DMA mode for host data
- // access. 0 DMA mode disable 1 DMA
- // mode enable
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_RSP10 register.
- //
- //******************************************************************************
- #define MMCHS_RSP10_RSP1_M 0xFFFF0000 // Command Response [31:16]
- #define MMCHS_RSP10_RSP1_S 16
- #define MMCHS_RSP10_RSP0_M 0x0000FFFF // Command Response [15:0]
- #define MMCHS_RSP10_RSP0_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_RSP32 register.
- //
- //******************************************************************************
- #define MMCHS_RSP32_RSP3_M 0xFFFF0000 // Command Response [63:48]
- #define MMCHS_RSP32_RSP3_S 16
- #define MMCHS_RSP32_RSP2_M 0x0000FFFF // Command Response [47:32]
- #define MMCHS_RSP32_RSP2_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_RSP54 register.
- //
- //******************************************************************************
- #define MMCHS_RSP54_RSP5_M 0xFFFF0000 // Command Response [95:80]
- #define MMCHS_RSP54_RSP5_S 16
- #define MMCHS_RSP54_RSP4_M 0x0000FFFF // Command Response [79:64]
- #define MMCHS_RSP54_RSP4_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_RSP76 register.
- //
- //******************************************************************************
- #define MMCHS_RSP76_RSP7_M 0xFFFF0000 // Command Response [127:112]
- #define MMCHS_RSP76_RSP7_S 16
- #define MMCHS_RSP76_RSP6_M 0x0000FFFF // Command Response [111:96]
- #define MMCHS_RSP76_RSP6_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_DATA register.
- //
- //******************************************************************************
- #define MMCHS_DATA_DATA_M 0xFFFFFFFF // Data Register [31:0] In
- // functional mode (MMCHS_CON[MODE]
- // set to the default value 0) A
- // read access to this register is
- // allowed only when the buffer read
- // enable status is set to 1
- // (MMCHS_PSTATE[BRE]) otherwise a
- // bad access (MMCHS_STAT[BADA]) is
- // signaled. A write access to this
- // register is allowed only when the
- // buffer write enable status is set
- // to 1(MMCHS_STATE[BWE]) otherwise
- // a bad access (MMCHS_STAT[BADA])
- // is signaled and the data is not
- // written.
- #define MMCHS_DATA_DATA_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_PSTATE register.
- //
- //******************************************************************************
- #define MMCHS_PSTATE_CLEV 0x01000000
- #define MMCHS_PSTATE_DLEV_M 0x00F00000 // DAT[3:0] line signal level
- // DAT[3] => bit 23 DAT[2] => bit 22
- // DAT[1] => bit 21 DAT[0] => bit 20
- // This status is used to check DAT
- // line level to recover from errors
- // and for debugging. This is
- // especially useful in detecting
- // the busy signal level from
- // DAT[0]. The value of these
- // registers after reset depends on
- // the DAT lines level at that time.
- #define MMCHS_PSTATE_DLEV_S 20
- #define MMCHS_PSTATE_WP 0x00080000
- #define MMCHS_PSTATE_CDPL 0x00040000
- #define MMCHS_PSTATE_CSS 0x00020000
- #define MMCHS_PSTATE_CINS 0x00010000
- #define MMCHS_PSTATE_BRE 0x00000800
- #define MMCHS_PSTATE_BWE 0x00000400
- #define MMCHS_PSTATE_RTA 0x00000200
- #define MMCHS_PSTATE_WTA 0x00000100
- #define MMCHS_PSTATE_DLA 0x00000004
- #define MMCHS_PSTATE_DATI 0x00000002
- #define MMCHS_PSTATE_CMDI 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_HCTL register.
- //
- //******************************************************************************
- #define MMCHS_HCTL_OBWE 0x08000000 // Wakeup event enable for
- // 'Out-of-Band' Interrupt. This bit
- // enables wakeup events for
- // 'Out-of-Band' assertion. Wakeup
- // is generated if the wakeup
- // feature is enabled
- // (MMCHS_SYSCONFIG[ENAWAKEUP]). The
- // write to this register is ignored
- // when MMCHS_CON[OBIE] is not set.
- // 0 Disable wakeup on 'Out-of-Band'
- // Interrupt 1 Enable wakeup on
- // 'Out-of-Band' Interrupt
- #define MMCHS_HCTL_REM 0x04000000 // Wakeup event enable on SD card
- // removal This bit enables wakeup
- // events for card removal
- // assertion. Wakeup is generated if
- // the wakeup feature is enabled
- // (MMCHS_SYSCONFIG[ENAWAKEUP]). 0
- // Disable wakeup on card removal 1
- // Enable wakeup on card removal
- #define MMCHS_HCTL_INS 0x02000000 // Wakeup event enable on SD card
- // insertion This bit enables wakeup
- // events for card insertion
- // assertion. Wakeup is generated if
- // the wakeup feature is enabled
- // (MMCHS_SYSCONFIG[ENAWAKEUP]). 0
- // Disable wakeup on card insertion
- // 1 Enable wakeup on card insertion
- #define MMCHS_HCTL_IWE 0x01000000 // Wakeup event enable on SD card
- // interrupt This bit enables wakeup
- // events for card interrupt
- // assertion. Wakeup is generated if
- // the wakeup feature is enabled
- // (MMCHS_SYSCONFIG[ENAWAKEUP]). 0
- // Disable wakeup on card interrupt
- // 1 Enable wakeup on card interrupt
- #define MMCHS_HCTL_IBG 0x00080000 // Interrupt block at gap This bit
- // is valid only in 4-bit mode of
- // SDIO card to enable interrupt
- // detection in the interrupt cycle
- // at block gap for a multiple block
- // transfer. For MMC cards and for
- // SD card this bit should be set to
- // 0. 0 Disable interrupt detection
- // at the block gap in 4-bit mode 1
- // Enable interrupt detection at the
- // block gap in 4-bit mode
- #define MMCHS_HCTL_RWC 0x00040000 // Read wait control The read wait
- // function is optional only for
- // SDIO cards. If the card supports
- // read wait this bit must be
- // enabled then requesting a stop at
- // block gap (MMCHS_HCTL[SBGR])
- // generates a read wait period
- // after the current end of block.
- // Be careful if read wait is not
- // supported it may cause a conflict
- // on DAT line. 0 Disable Read Wait
- // Control. Suspend/Resume cannot be
- // supported. 1 Enable Read Wait
- // Control
- #define MMCHS_HCTL_CR 0x00020000 // Continue request This bit is
- // used to restart a transaction
- // that was stopped by requesting a
- // stop at block gap
- // (MMCHS_HCTL[SBGR]). Set this bit
- // to 1 restarts the transfer. The
- // bit is automatically set to 0 by
- // the host controller when transfer
- // has restarted i.e DAT line is
- // active (MMCHS_PSTATE[DLA]) or
- // transferring data
- // (MMCHS_PSTATE[WTA]). The Stop at
- // block gap request must be
- // disabled (MMCHS_HCTL[SBGR]=0)
- // before setting this bit. 0 No
- // affect 1 transfer restart
- #define MMCHS_HCTL_SBGR 0x00010000 // Stop at block gap request This
- // bit is used to stop executing a
- // transaction at the next block
- // gap. The transfer can restart
- // with a continue request
- // (MMHS_HCTL[CR]) or during a
- // suspend/resume sequence. In case
- // of read transfer the card must
- // support read wait control. In
- // case of write transfer the host
- // driver shall set this bit after
- // all block data written. Until the
- // transfer completion
- // (MMCHS_STAT[TC] set to 1) the
- // host driver shall leave this bit
- // set to 1. If this bit is set the
- // local host shall not write to the
- // data register (MMCHS_DATA). 0
- // Transfer mode 1 Stop at block gap
- #define MMCHS_HCTL_SDVS_M 0x00000E00 // SD bus voltage select All cards.
- // The host driver should set to
- // these bits to select the voltage
- // level for the card according to
- // the voltage supported by the
- // system (MMCHS_CAPA[VS18VS30VS33])
- // before starting a transfer. 0x5
- // 1.8V (Typical) 0x6 3.0V (Typical)
- // 0x7 3.3V (Typical)
- #define MMCHS_HCTL_SDVS_S 9
- #define MMCHS_HCTL_SDBP 0x00000100 // SD bus power Before setting this
- // bit the host driver shall select
- // the SD bus voltage
- // (MMCHS_HCTL[SDVS]). If the host
- // controller detects the No card
- // state this bit is automatically
- // set to 0. If the module is power
- // off a write in the command
- // register (MMCHS_CMD) will not
- // start the transfer. A write to
- // this bit has no effect if the
- // selected SD bus voltage
- // MMCHS_HCTL[SDVS] is not supported
- // according to capability register
- // (MMCHS_CAPA[VS*]). 0 Power off 1
- // Power on
- #define MMCHS_HCTL_CDSS 0x00000080 // Card Detect Signal Selection
- // This bit selects source for the
- // card detection.When the source
- // for the card detection is
- // switched the interrupt should be
- // disabled during the switching
- // period by clearing the Interrupt
- // Status/Signal Enable register in
- // order to mask unexpected
- // interrupt being caused by the
- // glitch. The Interrupt
- // Status/Signal Enable should be
- // disabled during over the period
- // of debouncing. 0 SDCD# is
- // selected (for normal use) 1 The
- // Card Detect Test Level is
- // selected (for test purpose)
- #define MMCHS_HCTL_CDTL 0x00000040 // Card Detect Test Level: This bit
- // is enabled while the Card Detect
- // Signal Selection is set to 1 and
- // it indicates card inserted or
- // not. 0 No Card 1 Card Inserted
- #define MMCHS_HCTL_DMAS_M 0x00000018 // DMA Select Mode: One of
- // supported DMA modes can be
- // selected. The host driver shall
- // check support of DMA modes by
- // referring the Capabilities
- // register. Use of selected DMA is
- // determined by DMA Enable of the
- // Transfer Mode register. This
- // register is only meaningful when
- // MADMA_EN is set to 1. When
- // MADMA_EN is set to 0 the bit
- // field is read only and returned
- // value is 0. 0x0 Reserved 0x1
- // Reserved 0x2 32-bit Address ADMA2
- // is selected 0x3 Reserved
- #define MMCHS_HCTL_DMAS_S 3
- #define MMCHS_HCTL_HSPE 0x00000004 // High Speed Enable: Before
- // setting this bit the Host Driver
- // shall check the High Speed
- // Support in the Capabilities
- // register. If this bit is set to 0
- // (default) the Host Controller
- // outputs CMD line and DAT lines at
- // the falling edge of the SD Clock.
- // If this bit is set to 1 the Host
- // Controller outputs CMD line and
- // DAT lines at the rising edge of
- // the SD Clock.This bit shall not
- // be set when dual data rate mode
- // is activated in MMCHS_CON[DDR]. 0
- // Normal speed mode 1 High speed
- // mode
- #define MMCHS_HCTL_DTW 0x00000002 // Data transfer width For MMC card
- // this bit must be set following a
- // valid SWITCH command (CMD6) with
- // the correct value and extend CSD
- // index written in the argument.
- // Prior to this command the MMC
- // card configuration register (CSD
- // and EXT_CSD) must be verified for
- // compliance with MMC standard
- // specification 4.x (see section
- // 3.6). This register has no effect
- // when the MMC 8-bit mode is
- // selected (register MMCHS_CON[DW8]
- // set to1 ) For SD/SDIO cards this
- // bit must be set following a valid
- // SET_BUS_WIDTH command (ACMD6)
- // with the value written in bit 1
- // of the argument. Prior to this
- // command the SD card configuration
- // register (SCR) must be verified
- // for the supported bus width by
- // the SD card. 0 1-bit Data width
- // (DAT[0] used) 1 4-bit Data width
- // (DAT[3:0] used)
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_SYSCTL register.
- //
- //******************************************************************************
- #define MMCHS_SYSCTL_SRD 0x04000000 // Software reset for DAT line This
- // bit is set to 1 for reset and
- // released to 0 when completed. DAT
- // finite state machine in both
- // clock domain are also reset. Here
- // below are the registers cleared
- // by MMCHS_SYSCTL[SRD]: #VALUE! -
- // MMCHS_PSTATE: BRE BWE RTA WTA DLA
- // and DATI - MMCHS_HCTL: SBGR and
- // CR - MMCHS_STAT: BRR BWR BGE and
- // TC OCP and MMC buffer data
- // management is reinitialized. 0
- // Reset completed 1 Software reset
- // for DAT line
- #define MMCHS_SYSCTL_SRC 0x02000000 // Software reset for CMD line This
- // bit is set to 1 for reset and
- // released to 0 when completed. CMD
- // finite state machine in both
- // clock domain are also reset. Here
- // below the registers cleared by
- // MMCHS_SYSCTL[SRC]: -
- // MMCHS_PSTATE: CMDI - MMCHS_STAT:
- // CC OCP and MMC command status
- // management is reinitialized. 0
- // Reset completed 1 Software reset
- // for CMD line
- #define MMCHS_SYSCTL_SRA 0x01000000 // Software reset for all This bit
- // is set to 1 for reset and
- // released to 0 when completed.
- // This reset affects the entire
- // host controller except for the
- // card detection circuit and
- // capabilities registers. 0 Reset
- // completed 1 Software reset for
- // all the design
- #define MMCHS_SYSCTL_DTO_M 0x000F0000 // Data timeout counter value and
- // busy timeout. This value
- // determines the interval by which
- // DAT lines timeouts are detected.
- // The host driver needs to set this
- // bitfield based on - the maximum
- // read access time (NAC) (Refer to
- // the SD Specification Part1
- // Physical Layer) - the data read
- // access time values (TAAC and
- // NSAC) in the card specific data
- // register (CSD) of the card - the
- // timeout clock base frequency
- // (MMCHS_CAPA[TCF]). If the card
- // does not respond within the
- // specified number of cycles a data
- // timeout error occurs
- // (MMCHS_STA[DTO]). The
- // MMCHS_SYSCTL[DTO] register is
- // also used to check busy duration
- // to generate busy timeout for
- // commands with busy response or
- // for busy programming during a
- // write command. Timeout on CRC
- // status is generated if no CRC
- // token is present after a block
- // write. 0x0 TCF x 2^13 0x1 TCF x
- // 2^14 0xE TCF x 2^27 0xF Reserved
- #define MMCHS_SYSCTL_DTO_S 16
- #define MMCHS_SYSCTL_CLKD_M 0x0000FFC0 // Clock frequency select These
- // bits define the ratio between a
- // reference clock frequency (system
- // dependant) and the output clock
- // frequency on the CLK pin of
- // either the memory card (MMC SD or
- // SDIO). 0x000 Clock Ref bypass
- // 0x001 Clock Ref bypass 0x002
- // Clock Ref / 2 0x003 Clock Ref / 3
- // 0x3FF Clock Ref / 1023
- #define MMCHS_SYSCTL_CLKD_S 6
- #define MMCHS_SYSCTL_CEN 0x00000004 // Clock enable This bit controls
- // if the clock is provided to the
- // card or not. 0 The clock is not
- // provided to the card . Clock
- // frequency can be changed . 1 The
- // clock is provided to the card and
- // can be automatically gated when
- // MMCHS_SYSCONFIG[AUTOIDLE] is set
- // to 1 (default value) . The host
- // driver shall wait to set this bit
- // to 1 until the Internal clock is
- // stable (MMCHS_SYSCTL[ICS]).
- #define MMCHS_SYSCTL_ICS 0x00000002
- #define MMCHS_SYSCTL_ICE 0x00000001 // Internal clock enable This
- // register controls the internal
- // clock activity. In very low power
- // state the internal clock is
- // stopped. Note: The activity of
- // the debounce clock (used for
- // wakeup events) and the OCP clock
- // (used for reads and writes to the
- // module register map) are not
- // affected by this register. 0 The
- // internal clock is stopped (very
- // low power state). 1 The internal
- // clock oscillates and can be
- // automatically gated when
- // MMCHS_SYSCONFIG[AUTOIDLE] is set
- // to 1 (default value) .
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_STAT register.
- //
- //******************************************************************************
- #define MMCHS_STAT_BADA 0x20000000
- #define MMCHS_STAT_CERR 0x10000000
- #define MMCHS_STAT_ADMAE 0x02000000
- #define MMCHS_STAT_ACE 0x01000000
- #define MMCHS_STAT_DEB 0x00400000
- #define MMCHS_STAT_DCRC 0x00200000
- #define MMCHS_STAT_DTO 0x00100000
- #define MMCHS_STAT_CIE 0x00080000
- #define MMCHS_STAT_CEB 0x00040000
- #define MMCHS_STAT_CCRC 0x00020000
- #define MMCHS_STAT_CTO 0x00010000
- #define MMCHS_STAT_ERRI 0x00008000
- #define MMCHS_STAT_BSR 0x00000400
- #define MMCHS_STAT_OBI 0x00000200
- #define MMCHS_STAT_CIRQ 0x00000100
- #define MMCHS_STAT_CREM 0x00000080
- #define MMCHS_STAT_CINS 0x00000040
- #define MMCHS_STAT_BRR 0x00000020
- #define MMCHS_STAT_BWR 0x00000010
- #define MMCHS_STAT_DMA 0x00000008
- #define MMCHS_STAT_BGE 0x00000004
- #define MMCHS_STAT_TC 0x00000002
- #define MMCHS_STAT_CC 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_IE register.
- //
- //******************************************************************************
- #define MMCHS_IE_BADA_ENABLE 0x20000000 // Bad access to data space
- // Interrupt Enable 0 Masked 1
- // Enabled
- #define MMCHS_IE_CERR_ENABLE 0x10000000 // Card error interrupt Enable 0
- // Masked 1 Enabled
- #define MMCHS_IE_ADMAE_ENABLE 0x02000000 // ADMA error Interrupt Enable 0
- // Masked 1 Enabled
- #define MMCHS_IE_ACE_ENABLE 0x01000000 // Auto CMD12 error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_DEB_ENABLE 0x00400000 // Data end bit error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_DCRC_ENABLE 0x00200000 // Data CRC error Interrupt Enable
- // 0 Masked 1 Enabled
- #define MMCHS_IE_DTO_ENABLE 0x00100000 // Data timeout error Interrupt
- // Enable 0 The data timeout
- // detection is deactivated. The
- // host controller provides the
- // clock to the card until the card
- // sends the data or the transfer is
- // aborted. 1 The data timeout
- // detection is enabled.
- #define MMCHS_IE_CIE_ENABLE 0x00080000 // Command index error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_CEB_ENABLE 0x00040000 // Command end bit error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_CCRC_ENABLE 0x00020000 // Command CRC error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_CTO_ENABLE 0x00010000 // Command timeout error Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_NULL 0x00008000 // Fixed to 0 The host driver shall
- // control error interrupts using
- // the Error Interrupt Signal Enable
- // register. Writes to this bit are
- // ignored
- #define MMCHS_IE_BSR_ENABLE 0x00000400 // Boot status interrupt Enable A
- // write to this register when
- // MMCHS_CON[BOOT_ACK] is set to 0x0
- // is ignored. 0 Masked 1 Enabled
- #define MMCHS_IE_OBI_ENABLE 0x00000200 // Out-of-Band interrupt Enable A
- // write to this register when
- // MMCHS_CON[OBIE] is set to '0' is
- // ignored. 0 Masked 1 Enabled
- #define MMCHS_IE_CIRQ_ENABLE 0x00000100 // Card interrupt Enable A clear of
- // this bit also clears the
- // corresponding status bit. During
- // 1-bit mode if the interrupt
- // routine doesn't remove the source
- // of a card interrupt in the SDIO
- // card the status bit is reasserted
- // when this bit is set to 1. 0
- // Masked 1 Enabled
- #define MMCHS_IE_CREM_ENABLE 0x00000080 // Card removal Interrupt Enable 0
- // Masked 1 Enabled
- #define MMCHS_IE_CINS_ENABLE 0x00000040 // Card insertion Interrupt Enable
- // 0 Masked 1 Enabled
- #define MMCHS_IE_BRR_ENABLE 0x00000020 // Buffer Read Ready Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_BWR_ENABLE 0x00000010 // Buffer Write Ready Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_DMA_ENABLE 0x00000008 // DMA interrupt Enable 0 Masked 1
- // Enabled
- #define MMCHS_IE_BGE_ENABLE 0x00000004 // Block Gap Event Interrupt Enable
- // 0 Masked 1 Enabled
- #define MMCHS_IE_TC_ENABLE 0x00000002 // Transfer completed Interrupt
- // Enable 0 Masked 1 Enabled
- #define MMCHS_IE_CC_ENABLE 0x00000001 // Command completed Interrupt
- // Enable 0 Masked 1 Enabled
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_ISE register.
- //
- //******************************************************************************
- #define MMCHS_ISE_BADA_SIGEN 0x20000000 // Bad access to data space signal
- // status Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CERR_SIGEN 0x10000000 // Card error interrupt signal
- // status Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_ADMAE_SIGEN 0x02000000 // ADMA error signal status Enable
- // 0 Masked 1 Enabled
- #define MMCHS_ISE_ACE_SIGEN 0x01000000 // Auto CMD12 error signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_DEB_SIGEN 0x00400000 // Data end bit error signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_DCRC_SIGEN 0x00200000 // Data CRC error signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_DTO_SIGEN 0x00100000 // Data timeout error signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CIE_SIGEN 0x00080000 // Command index error signal
- // status Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CEB_SIGEN 0x00040000 // Command end bit error signal
- // status Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CCRC_SIGEN 0x00020000 // Command CRC error signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CTO_SIGEN 0x00010000 // Command timeout error signal
- // status Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_NULL 0x00008000 // Fixed to 0 The host driver shall
- // control error interrupts using
- // the Error Interrupt Signal Enable
- // register. Writes to this bit are
- // ignored
- #define MMCHS_ISE_BSR_SIGEN 0x00000400 // Boot status signal status
- // EnableA write to this register
- // when MMCHS_CON[BOOT_ACK] is set
- // to 0x0 is ignored. 0 Masked 1
- // Enabled
- #define MMCHS_ISE_OBI_SIGEN 0x00000200 // Out-Of-Band Interrupt signal
- // status Enable A write to this
- // register when MMCHS_CON[OBIE] is
- // set to '0' is ignored. 0 Masked 1
- // Enabled
- #define MMCHS_ISE_CIRQ_SIGEN 0x00000100 // Card interrupt signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CREM_SIGEN 0x00000080 // Card removal signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CINS_SIGEN 0x00000040 // Card insertion signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_BRR_SIGEN 0x00000020 // Buffer Read Ready signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_BWR_SIGEN 0x00000010 // Buffer Write Ready signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_DMA_SIGEN 0x00000008 // DMA interrupt Signal status
- // enable 0 Masked 1 Enabled
- #define MMCHS_ISE_BGE_SIGEN 0x00000004 // Black Gap Event signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_TC_SIGEN 0x00000002 // Transfer completed signal status
- // Enable 0 Masked 1 Enabled
- #define MMCHS_ISE_CC_SIGEN 0x00000001 // Command completed signal status
- // Enable 0 Masked 1 Enabled
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_AC12 register.
- //
- //******************************************************************************
- #define MMCHS_AC12_CNI 0x00000080
- #define MMCHS_AC12_ACIE 0x00000010
- #define MMCHS_AC12_ACEB 0x00000008
- #define MMCHS_AC12_ACCE 0x00000004
- #define MMCHS_AC12_ACTO 0x00000002
- #define MMCHS_AC12_ACNE 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_CAPA register.
- //
- //******************************************************************************
- #define MMCHS_CAPA_BIT64 0x10000000
- #define MMCHS_CAPA_VS18 0x04000000
- #define MMCHS_CAPA_VS30 0x02000000
- #define MMCHS_CAPA_VS33 0x01000000
- #define MMCHS_CAPA_SRS 0x00800000
- #define MMCHS_CAPA_DS 0x00400000
- #define MMCHS_CAPA_HSS 0x00200000
- #define MMCHS_CAPA_AD2S 0x00080000
- #define MMCHS_CAPA_MBL_M 0x00030000
- #define MMCHS_CAPA_MBL_S 16
- #define MMCHS_CAPA_BCF_M 0x00003F00
- #define MMCHS_CAPA_BCF_S 8
- #define MMCHS_CAPA_TCU 0x00000080
- #define MMCHS_CAPA_TCF_M 0x0000003F
- #define MMCHS_CAPA_TCF_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_CUR_CAPA register.
- //
- //******************************************************************************
- #define MMCHS_CUR_CAPA_CUR_1V8_M \
- 0x00FF0000
- #define MMCHS_CUR_CAPA_CUR_1V8_S 16
- #define MMCHS_CUR_CAPA_CUR_3V0_M \
- 0x0000FF00
- #define MMCHS_CUR_CAPA_CUR_3V0_S 8
- #define MMCHS_CUR_CAPA_CUR_3V3_M \
- 0x000000FF
- #define MMCHS_CUR_CAPA_CUR_3V3_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_FE register.
- //
- //******************************************************************************
- #define MMCHS_FE_FE_BADA 0x20000000
- #define MMCHS_FE_FE_CERR 0x10000000
- #define MMCHS_FE_FE_ADMAE 0x02000000
- #define MMCHS_FE_FE_ACE 0x01000000
- #define MMCHS_FE_FE_DEB 0x00400000
- #define MMCHS_FE_FE_DCRC 0x00200000
- #define MMCHS_FE_FE_DTO 0x00100000
- #define MMCHS_FE_FE_CIE 0x00080000
- #define MMCHS_FE_FE_CEB 0x00040000
- #define MMCHS_FE_FE_CCRC 0x00020000
- #define MMCHS_FE_FE_CTO 0x00010000
- #define MMCHS_FE_FE_CNI 0x00000080
- #define MMCHS_FE_FE_ACIE 0x00000010
- #define MMCHS_FE_FE_ACEB 0x00000008
- #define MMCHS_FE_FE_ACCE 0x00000004
- #define MMCHS_FE_FE_ACTO 0x00000002
- #define MMCHS_FE_FE_ACNE 0x00000001
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_ADMAES register.
- //
- //******************************************************************************
- #define MMCHS_ADMAES_LME 0x00000004 // ADMA Length Mismatch Error: (1)
- // While Block Count Enable being
- // set the total data length
- // specified by the Descriptor table
- // is different from that specified
- // by the Block Count and Block
- // Length. (2) Total data length can
- // not be divided by the block
- // length. 0 No Error 1 Error
- #define MMCHS_ADMAES_AES_M 0x00000003 // ADMA Error State his field
- // indicates the state of ADMA when
- // error is occurred during ADMA
- // data transfer. "This field never
- // indicates ""10"" because ADMA
- // never stops in this state." 0x0
- // ST_STOP (Stop DMA)Contents of
- // SYS_SDR register 0x1 ST_STOP
- // (Stop DMA)Points the error
- // descriptor 0x2 Never set this
- // state(Not used) 0x3 ST_TFR
- // (Transfer Data)Points the next of
- // the error descriptor
- #define MMCHS_ADMAES_AES_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_ADMASAL register.
- //
- //******************************************************************************
- #define MMCHS_ADMASAL_ADMA_A32B_M \
- 0xFFFFFFFF // ADMA System address 32 bits.This
- // register holds byte address of
- // executing command of the
- // Descriptor table. 32-bit Address
- // Descriptor uses lower 32-bit of
- // this register. At the start of
- // ADMA the Host Driver shall set
- // start address of the Descriptor
- // table. The ADMA increments this
- // register address which points to
- // next line when every fetching a
- // Descriptor line. When the ADMA
- // Error Interrupt is generated this
- // register shall hold valid
- // Descriptor address depending on
- // the ADMA state. The Host Driver
- // shall program Descriptor Table on
- // 32-bit boundary and set 32-bit
- // boundary address to this
- // register. ADMA2 ignores lower
- // 2-bit of this register and
- // assumes it to be 00b.
- #define MMCHS_ADMASAL_ADMA_A32B_S 0
- //******************************************************************************
- //
- // The following are defines for the bit fields in the MMCHS_O_REV register.
- //
- //******************************************************************************
- #define MMCHS_REV_VREV_M 0xFF000000 // Vendor Version Number: IP
- // revision [7:4] Major revision
- // [3:0] Minor revision Examples:
- // 0x10 for 1.0 0x21 for 2.1
- #define MMCHS_REV_VREV_S 24
- #define MMCHS_REV_SREV_M 0x00FF0000
- #define MMCHS_REV_SREV_S 16
- #define MMCHS_REV_SIS 0x00000001 // Slot Interrupt Status This
- // status bit indicates the inverted
- // state of interrupt signal for the
- // module. By a power on reset or by
- // setting a software reset for all
- // (MMCHS_HCTL[SRA]) the interrupt
- // signal shall be de-asserted and
- // this status shall read 0.
- #endif // __HW_MMCHS_H__
|