hpm_sdxc_regs.h 203 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_SDXC_H
  8. #define HPM_SDXC_H
  9. typedef struct {
  10. __RW uint32_t SDMASA; /* 0x0: */
  11. __RW uint32_t BLK_ATTR; /* 0x4: */
  12. __RW uint32_t CMD_ARG; /* 0x8: */
  13. __RW uint32_t CMD_XFER; /* 0xC: */
  14. __R uint32_t RESP[4]; /* 0x10 - 0x1C: */
  15. __RW uint32_t BUF_DATA; /* 0x20: */
  16. __R uint32_t PSTATE; /* 0x24: */
  17. __RW uint32_t PROT_CTRL; /* 0x28: */
  18. __RW uint32_t SYS_CTRL; /* 0x2C: */
  19. __RW uint32_t INT_STAT; /* 0x30: */
  20. __RW uint32_t INT_STAT_EN; /* 0x34: */
  21. __RW uint32_t INT_SIGNAL_EN; /* 0x38: */
  22. __RW uint32_t AC_HOST_CTRL; /* 0x3C: */
  23. __R uint32_t CAPABILITIES1; /* 0x40: */
  24. __R uint32_t CAPABILITIES2; /* 0x44: */
  25. __R uint32_t CURR_CAPABILITIES1; /* 0x48: */
  26. __R uint32_t CURR_CAPABILITIES2; /* 0x4C: */
  27. __W uint32_t FORCE_EVENT; /* 0x50: */
  28. __R uint32_t ADMA_ERR_STAT; /* 0x54: */
  29. __RW uint32_t ADMA_SYS_ADDR; /* 0x58: */
  30. __R uint8_t RESERVED0[4]; /* 0x5C - 0x5F: Reserved */
  31. __R uint16_t PRESET[11]; /* 0x60 - 0x74: */
  32. __R uint8_t RESERVED1[2]; /* 0x76 - 0x77: Reserved */
  33. __RW uint32_t ADMA_ID_ADDR; /* 0x78: */
  34. __R uint8_t RESERVED2[106]; /* 0x7C - 0xE5: Reserved */
  35. __R uint16_t P_EMBEDDED_CNTRL; /* 0xE6: */
  36. __R uint16_t P_VENDOR_SPECIFIC_AREA; /* 0xE8: */
  37. __R uint16_t P_VENDOR2_SPECIFIC_AREA; /* 0xEA: */
  38. __R uint8_t RESERVED3[16]; /* 0xEC - 0xFB: Reserved */
  39. __R uint16_t SLOT_INTR_STATUS; /* 0xFC: */
  40. __R uint8_t RESERVED4[130]; /* 0xFE - 0x17F: Reserved */
  41. __R uint32_t CQVER; /* 0x180: */
  42. __R uint32_t CQCAP; /* 0x184: */
  43. __RW uint32_t CQCFG; /* 0x188: */
  44. __RW uint32_t CQCTL; /* 0x18C: */
  45. __RW uint32_t CQIS; /* 0x190: */
  46. __RW uint32_t CQISE; /* 0x194: */
  47. __RW uint32_t CQISGE; /* 0x198: */
  48. __RW uint32_t CQIC; /* 0x19C: */
  49. __RW uint32_t CQTDLBA; /* 0x1A0: */
  50. __R uint8_t RESERVED5[4]; /* 0x1A4 - 0x1A7: Reserved */
  51. __RW uint32_t CQTDBR; /* 0x1A8: */
  52. __RW uint32_t CQTCN; /* 0x1AC: */
  53. __RW uint32_t CQDQS; /* 0x1B0: */
  54. __RW uint32_t CQDPT; /* 0x1B4: */
  55. __RW uint32_t CQTCLR; /* 0x1B8: */
  56. __R uint8_t RESERVED6[4]; /* 0x1BC - 0x1BF: Reserved */
  57. __RW uint32_t CQSSC1; /* 0x1C0: */
  58. __RW uint32_t CQSSC2; /* 0x1C4: */
  59. __R uint32_t CQCRDCT; /* 0x1C8: */
  60. __R uint8_t RESERVED7[4]; /* 0x1CC - 0x1CF: Reserved */
  61. __RW uint32_t CQRMEM; /* 0x1D0: */
  62. __R uint32_t CQTERRI; /* 0x1D4: */
  63. __R uint32_t CQCRI; /* 0x1D8: */
  64. __R uint32_t CQCRA; /* 0x1DC: */
  65. __R uint8_t RESERVED8[800]; /* 0x1E0 - 0x4FF: Reserved */
  66. __R uint32_t MSHC_VER_ID; /* 0x500: */
  67. __R uint32_t MSHC_VER_TYPE; /* 0x504: */
  68. __R uint8_t RESERVED9[8]; /* 0x508 - 0x50F: Reserved */
  69. __RW uint32_t MBIU_CTRL; /* 0x510: Y */
  70. __R uint8_t RESERVED10[24]; /* 0x514 - 0x52B: Reserved */
  71. __RW uint32_t EMMC_BOOT_CTRL; /* 0x52C: */
  72. __R uint8_t RESERVED11[16]; /* 0x530 - 0x53F: Reserved */
  73. __RW uint32_t AUTO_TUNING_CTRL; /* 0x540: */
  74. __RW uint32_t AUTO_TUNING_STAT; /* 0x544: */
  75. __R uint8_t RESERVED12[10936]; /* 0x548 - 0x2FFF: Reserved */
  76. __RW uint32_t MISC_CTRL0; /* 0x3000: */
  77. __RW uint32_t MISC_CTRL1; /* 0x3004: */
  78. } SDXC_Type;
  79. /* Bitfield definition for register: SDMASA */
  80. /*
  81. * BLOCKCNT_SDMASA (RW)
  82. *
  83. * 32-bit Block Count (SDMA System Address)
  84. * - SDMA System Address (Host Version 4 Enable = 0): This register contains the system memory address for an SDMA transfer in the 32-bit addressing mode.
  85. * When the Host Controller stops an SDMA transfer, this register points to the system address of the next contiguous data position.
  86. * It can be accessed only if no transaction is executing. Reading this register during data transfers may
  87. * return an invalid value.
  88. * - 32-bit Block Count (Host Version 4 Enable = 1): From the Host Controller Version 4.10 specification, this register is redefined as 32-bit Block Count.
  89. * The Host Controller decrements the block count of this register for every block transfer and the data transfer stops when the count reaches zero.
  90. * This register must be accessed when no transaction is executing. Reading this register during data transfers may return invalid value.
  91. * Following are the values for BLOCKCNT_SDMASA:
  92. * - 0xFFFF_FFFF: 4G - 1 Block
  93. * -
  94. * - 0x0000_0002: 2 Blocks
  95. * - 0x0000_0001: 1 Block
  96. * - 0x0000_0000: Stop Count
  97. * Note:
  98. * - For Host Version 4 Enable = 0, the Host driver does not program the system address in this register while operating in ADMA mode.
  99. * The system address must be programmed in the ADMA System Address register.
  100. * - For Host Version 4 Enable = 0, the Host driver programs a non-zero 32-bit block count value in this register when Auto CMD23 is enabled for non-DMA and ADMA modes.
  101. * Auto CMD23 cannot be used with SDMA.
  102. * - This register must be programmed with a non-zero value for data transfer if the 32-bit Block count register is used instead of the 16-bit Block count register.
  103. */
  104. #define SDXC_SDMASA_BLOCKCNT_SDMASA_MASK (0xFFFFFFFFUL)
  105. #define SDXC_SDMASA_BLOCKCNT_SDMASA_SHIFT (0U)
  106. #define SDXC_SDMASA_BLOCKCNT_SDMASA_SET(x) (((uint32_t)(x) << SDXC_SDMASA_BLOCKCNT_SDMASA_SHIFT) & SDXC_SDMASA_BLOCKCNT_SDMASA_MASK)
  107. #define SDXC_SDMASA_BLOCKCNT_SDMASA_GET(x) (((uint32_t)(x) & SDXC_SDMASA_BLOCKCNT_SDMASA_MASK) >> SDXC_SDMASA_BLOCKCNT_SDMASA_SHIFT)
  108. /* Bitfield definition for register: BLK_ATTR */
  109. /*
  110. * BLOCK_CNT (RW)
  111. *
  112. * 16-bit Block Count
  113. * - If the Host Version 4 Enable bit is set 0 or the 16-bit Block Count register is set to non-zero, the 16-bit Block Count register is selected.
  114. * - If the Host Version 4 Enable bit is set 1 and the 16-bit Block Count register is set to zero, the 32-bit Block Count register is selected.
  115. * Following are the values for BLOCK_CNT:
  116. * - 0x0: Stop Count
  117. * - 0x1: 1 Block
  118. * - 0x2: 2 Blocks
  119. * - .
  120. * - 0xFFFF: 65535 Blocks
  121. * Note: For Host Version 4 Enable = 0, this register must be set to 0000h before programming the 32-bit block count register when Auto CMD23 is enabled for non-DMA and ADMA modes.
  122. */
  123. #define SDXC_BLK_ATTR_BLOCK_CNT_MASK (0xFFFF0000UL)
  124. #define SDXC_BLK_ATTR_BLOCK_CNT_SHIFT (16U)
  125. #define SDXC_BLK_ATTR_BLOCK_CNT_SET(x) (((uint32_t)(x) << SDXC_BLK_ATTR_BLOCK_CNT_SHIFT) & SDXC_BLK_ATTR_BLOCK_CNT_MASK)
  126. #define SDXC_BLK_ATTR_BLOCK_CNT_GET(x) (((uint32_t)(x) & SDXC_BLK_ATTR_BLOCK_CNT_MASK) >> SDXC_BLK_ATTR_BLOCK_CNT_SHIFT)
  127. /*
  128. * SDMA_BUF_BDARY (RW)
  129. *
  130. * SDMA Buffer Boundary
  131. * These bits specify the size of contiguous buffer in system memory.
  132. * The SDMA transfer waits at every boundary specified by these fields and the Host Controller generates the DMA interrupt to request the Host Driver to update the SDMA System Address register.
  133. * Values:
  134. * - 0x0 (BYTES_4K): 4K bytes SDMA Buffer Boundary
  135. * - 0x1 (BYTES_8K): 8K bytes SDMA Buffer Boundary
  136. * - 0x2 (BYTES_16K): 16K bytes SDMA Buffer Boundary
  137. * - 0x3 (BYTES_32K): 32K bytes SDMA Buffer Boundary
  138. * - 0x4 (BYTES_64K): 64K bytes SDMA Buffer Boundary
  139. * - 0x5 (BYTES_128K): 128K bytes SDMA Buffer Boundary
  140. * - 0x6 (BYTES_256K): 256K bytes SDMA Buffer Boundary
  141. * - 0x7 (BYTES_512K): 512K bytes SDMA Buffer Boundary
  142. */
  143. #define SDXC_BLK_ATTR_SDMA_BUF_BDARY_MASK (0x7000U)
  144. #define SDXC_BLK_ATTR_SDMA_BUF_BDARY_SHIFT (12U)
  145. #define SDXC_BLK_ATTR_SDMA_BUF_BDARY_SET(x) (((uint32_t)(x) << SDXC_BLK_ATTR_SDMA_BUF_BDARY_SHIFT) & SDXC_BLK_ATTR_SDMA_BUF_BDARY_MASK)
  146. #define SDXC_BLK_ATTR_SDMA_BUF_BDARY_GET(x) (((uint32_t)(x) & SDXC_BLK_ATTR_SDMA_BUF_BDARY_MASK) >> SDXC_BLK_ATTR_SDMA_BUF_BDARY_SHIFT)
  147. /*
  148. * XFER_BLOCK_SIZE (RW)
  149. *
  150. * Transfer Block Size
  151. * These bits specify the block size of data transfers. In case of memory, it is set to 512 bytes. It can be accessed only if no transaction is executing.
  152. * Read operations during transfers may return an invalid value, and write operations are ignored. Following are the values for XFER_BLOCK_SIZE:
  153. * - 0x1: 1 byte
  154. * - 0x2: 2 bytes
  155. * - 0x3: 3 bytes
  156. * - .
  157. * - 0x1FF: 511 byte
  158. * - 0x200: 512 byt es
  159. * - .
  160. * - 0x800: 2048 bytes
  161. * Note: This register must be programmed with a non-zero value for data transfer.
  162. */
  163. #define SDXC_BLK_ATTR_XFER_BLOCK_SIZE_MASK (0xFFFU)
  164. #define SDXC_BLK_ATTR_XFER_BLOCK_SIZE_SHIFT (0U)
  165. #define SDXC_BLK_ATTR_XFER_BLOCK_SIZE_SET(x) (((uint32_t)(x) << SDXC_BLK_ATTR_XFER_BLOCK_SIZE_SHIFT) & SDXC_BLK_ATTR_XFER_BLOCK_SIZE_MASK)
  166. #define SDXC_BLK_ATTR_XFER_BLOCK_SIZE_GET(x) (((uint32_t)(x) & SDXC_BLK_ATTR_XFER_BLOCK_SIZE_MASK) >> SDXC_BLK_ATTR_XFER_BLOCK_SIZE_SHIFT)
  167. /* Bitfield definition for register: CMD_ARG */
  168. /*
  169. * ARGUMNET (RW)
  170. *
  171. * Command Argument
  172. * These bits specify the SD/eMMC command argument that is specified in bits 39-8 of the Command format.
  173. */
  174. #define SDXC_CMD_ARG_ARGUMNET_MASK (0xFFFFFFFFUL)
  175. #define SDXC_CMD_ARG_ARGUMNET_SHIFT (0U)
  176. #define SDXC_CMD_ARG_ARGUMNET_SET(x) (((uint32_t)(x) << SDXC_CMD_ARG_ARGUMNET_SHIFT) & SDXC_CMD_ARG_ARGUMNET_MASK)
  177. #define SDXC_CMD_ARG_ARGUMNET_GET(x) (((uint32_t)(x) & SDXC_CMD_ARG_ARGUMNET_MASK) >> SDXC_CMD_ARG_ARGUMNET_SHIFT)
  178. /* Bitfield definition for register: CMD_XFER */
  179. /*
  180. * CMD_INDEX (RW)
  181. *
  182. * Command Index
  183. * These bits are set to the command number that is specified in bits 45-40 of the Command Format.
  184. */
  185. #define SDXC_CMD_XFER_CMD_INDEX_MASK (0x3F000000UL)
  186. #define SDXC_CMD_XFER_CMD_INDEX_SHIFT (24U)
  187. #define SDXC_CMD_XFER_CMD_INDEX_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_CMD_INDEX_SHIFT) & SDXC_CMD_XFER_CMD_INDEX_MASK)
  188. #define SDXC_CMD_XFER_CMD_INDEX_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_CMD_INDEX_MASK) >> SDXC_CMD_XFER_CMD_INDEX_SHIFT)
  189. /*
  190. * CMD_TYPE (RW)
  191. *
  192. * Command Type
  193. * These bits indicate the command type.
  194. * Note: While issuing Abort CMD using CMD12/CMD52 or reset CMD using CMD0/CMD52, CMD_TYPE field shall be set to 0x3.
  195. * Values:
  196. * 0x3 (ABORT_CMD): Abort
  197. * 0x2 (RESUME_CMD): Resume
  198. * 0x1 (SUSPEND_CMD): Suspend
  199. * 0x0 (NORMAL_CMD): Normal
  200. */
  201. #define SDXC_CMD_XFER_CMD_TYPE_MASK (0xC00000UL)
  202. #define SDXC_CMD_XFER_CMD_TYPE_SHIFT (22U)
  203. #define SDXC_CMD_XFER_CMD_TYPE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_CMD_TYPE_SHIFT) & SDXC_CMD_XFER_CMD_TYPE_MASK)
  204. #define SDXC_CMD_XFER_CMD_TYPE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_CMD_TYPE_MASK) >> SDXC_CMD_XFER_CMD_TYPE_SHIFT)
  205. /*
  206. * DATA_PRESENT_SEL (RW)
  207. *
  208. * Data Present Select
  209. * This bit is set to 1 to indicate that data is present and that the data is transferred using the DAT line. This bit is set to 0 in the following instances:
  210. * Command using the CMD line
  211. * Command with no data transfer but using busy signal on the DAT[0] line
  212. * Resume Command
  213. * Values:
  214. * 0x0 (NO_DATA): No Data Present
  215. * 0x1 (DATA): Data Present
  216. */
  217. #define SDXC_CMD_XFER_DATA_PRESENT_SEL_MASK (0x200000UL)
  218. #define SDXC_CMD_XFER_DATA_PRESENT_SEL_SHIFT (21U)
  219. #define SDXC_CMD_XFER_DATA_PRESENT_SEL_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_DATA_PRESENT_SEL_SHIFT) & SDXC_CMD_XFER_DATA_PRESENT_SEL_MASK)
  220. #define SDXC_CMD_XFER_DATA_PRESENT_SEL_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_DATA_PRESENT_SEL_MASK) >> SDXC_CMD_XFER_DATA_PRESENT_SEL_SHIFT)
  221. /*
  222. * CMD_IDX_CHK_ENABLE (RW)
  223. *
  224. * Command Index Check Enable
  225. * This bit enables the Host Controller to check the index field in the response to verify if it has the same value as the command index.
  226. * If the value is not the same, it is reported as a Command Index error.
  227. * Note:
  228. * Index Check enable must be set to 0 for the command with no response, R2 response, R3 response and R4 response.
  229. * For the tuning command, this bit must always be set to enable the index check.
  230. * Values:
  231. * 0x0 (DISABLED): Disable
  232. * 0x1 (ENABLED): Enable
  233. */
  234. #define SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_MASK (0x100000UL)
  235. #define SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_SHIFT (20U)
  236. #define SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_SHIFT) & SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_MASK)
  237. #define SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_MASK) >> SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_SHIFT)
  238. /*
  239. * CMD_CRC_CHK_ENABLE (RW)
  240. *
  241. * Command CRC Check Enable
  242. * This bit enables the Host Controller to check the CRC field in the response. If an error is detected, it is reported as a Command CRC error.
  243. * Note:
  244. * CRC Check enable must be set to 0 for the command with no response, R3 response, and R4 response.
  245. * For the tuning command, this bit must always be set to 1 to enable the CRC check.
  246. * Values:
  247. * 0x0 (DISABLED): Disable
  248. * 0x1 (ENABLED): Enable
  249. */
  250. #define SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_MASK (0x80000UL)
  251. #define SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_SHIFT (19U)
  252. #define SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_SHIFT) & SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_MASK)
  253. #define SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_MASK) >> SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_SHIFT)
  254. /*
  255. * SUB_CMD_FLAG (RW)
  256. *
  257. * Sub Command Flag
  258. * This bit distinguishes between a main command and a sub command.
  259. * Values:
  260. * 0x0 (MAIN): Main Command
  261. * 0x1 (SUB): Sub Command
  262. */
  263. #define SDXC_CMD_XFER_SUB_CMD_FLAG_MASK (0x40000UL)
  264. #define SDXC_CMD_XFER_SUB_CMD_FLAG_SHIFT (18U)
  265. #define SDXC_CMD_XFER_SUB_CMD_FLAG_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_SUB_CMD_FLAG_SHIFT) & SDXC_CMD_XFER_SUB_CMD_FLAG_MASK)
  266. #define SDXC_CMD_XFER_SUB_CMD_FLAG_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_SUB_CMD_FLAG_MASK) >> SDXC_CMD_XFER_SUB_CMD_FLAG_SHIFT)
  267. /*
  268. * RESP_TYPE_SELECT (RW)
  269. *
  270. * Response Type Select
  271. * This bit indicates the type of response expected from the card.
  272. * Values:
  273. * 0x0 (NO_RESP): No Response
  274. * 0x1 (RESP_LEN_136): Response Length 136
  275. * 0x2 (RESP_LEN_48): Response Length 48
  276. * 0x3 (RESP_LEN_48B): Response Length 48; Check Busy after response
  277. */
  278. #define SDXC_CMD_XFER_RESP_TYPE_SELECT_MASK (0x30000UL)
  279. #define SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT (16U)
  280. #define SDXC_CMD_XFER_RESP_TYPE_SELECT_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT) & SDXC_CMD_XFER_RESP_TYPE_SELECT_MASK)
  281. #define SDXC_CMD_XFER_RESP_TYPE_SELECT_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_RESP_TYPE_SELECT_MASK) >> SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)
  282. /*
  283. * RESP_INT_DISABLE (RW)
  284. *
  285. * Response Interrupt Disable
  286. * The Host Controller supports response check function to avoid overhead of response error check by the Host driver.
  287. * Response types of only R1 and R5 can be checked by the Controller.
  288. * If Host Driver checks the response error, set this bit to 0 and wait for Command Complete Interrupt and then check the response register.
  289. * If the Host Controller checks the response error, set this bit to 1 and set the Response Error Check Enable bit to 1.
  290. * The Command Complete Interrupt is disabled by this bit regardless of the Command Complete Signal Enable.
  291. * Note: During tuning (when the Execute Tuning bit in the Host Control2 register is set), the Command Complete Interrupt is not generated irrespective of the Response Interrupt Disable setting.
  292. * Values:
  293. * - 0x0 (ENABLED): Response Interrupt is enabled
  294. * - 0x1 (DISABLED): Response Interrupt is disabled
  295. */
  296. #define SDXC_CMD_XFER_RESP_INT_DISABLE_MASK (0x100U)
  297. #define SDXC_CMD_XFER_RESP_INT_DISABLE_SHIFT (8U)
  298. #define SDXC_CMD_XFER_RESP_INT_DISABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_RESP_INT_DISABLE_SHIFT) & SDXC_CMD_XFER_RESP_INT_DISABLE_MASK)
  299. #define SDXC_CMD_XFER_RESP_INT_DISABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_RESP_INT_DISABLE_MASK) >> SDXC_CMD_XFER_RESP_INT_DISABLE_SHIFT)
  300. /*
  301. * RESP_ERR_CHK_ENABLE (RW)
  302. *
  303. * Response Error Check Enable
  304. * The Host Controller supports response check function to avoid overhead of response error check by Host driver. Response types of only R1 and R5 can be checked by the Controller.
  305. * If the Host Controller checks the response error, set this bit to 1 and set Response Interrupt Disable to 1. If an error is detected, the Response Error interrupt is generated in the Error Interrupt Status register.
  306. * Note:
  307. * - Response error check must not be enabled for any response type other than R1 and R5.
  308. * - Response check must not be enabled for the tuning command.
  309. * Values:
  310. * - 0x0 (DISABLED): Response Error Check is disabled
  311. * - 0x1 (ENABLED): Response Error Check is enabled
  312. */
  313. #define SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_MASK (0x80U)
  314. #define SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_SHIFT (7U)
  315. #define SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_SHIFT) & SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_MASK)
  316. #define SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_MASK) >> SDXC_CMD_XFER_RESP_ERR_CHK_ENABLE_SHIFT)
  317. /*
  318. * RESP_TYPE (RW)
  319. *
  320. * Response Type R1/R5
  321. * This bit selects either R1 or R5 as a response type when the Response Error Check is selected.
  322. * Error statuses checked in R1:
  323. * OUT_OF_RANGE
  324. * ADDRESS_ERROR
  325. * BLOCK_LEN_ERROR
  326. * WP_VIOLATION
  327. * CARD_IS_LOCKED
  328. * COM_CRC_ERROR
  329. * CARD_ECC_FAILED
  330. * CC_ERROR
  331. * ERROR
  332. * Response Flags checked in R5:
  333. * COM_CRC_ERROR
  334. * ERROR
  335. * FUNCTION_NUMBER
  336. * OUT_OF_RANGE
  337. * Values:
  338. * 0x0 (RESP_R1): R1 (Memory)
  339. * 0x1 (RESP_R5): R5 (SDIO)
  340. */
  341. #define SDXC_CMD_XFER_RESP_TYPE_MASK (0x40U)
  342. #define SDXC_CMD_XFER_RESP_TYPE_SHIFT (6U)
  343. #define SDXC_CMD_XFER_RESP_TYPE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_RESP_TYPE_SHIFT) & SDXC_CMD_XFER_RESP_TYPE_MASK)
  344. #define SDXC_CMD_XFER_RESP_TYPE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_RESP_TYPE_MASK) >> SDXC_CMD_XFER_RESP_TYPE_SHIFT)
  345. /*
  346. * MULTI_BLK_SEL (RW)
  347. *
  348. * Multi/Single Block Select
  349. * This bit is set when issuing multiple-block transfer commands using the DAT line. If this bit is set to 0, it is not necessary to set the Block Count register.
  350. * Values:
  351. * 0x0 (SINGLE): Single Block
  352. * 0x1 (MULTI): Multiple Block
  353. */
  354. #define SDXC_CMD_XFER_MULTI_BLK_SEL_MASK (0x20U)
  355. #define SDXC_CMD_XFER_MULTI_BLK_SEL_SHIFT (5U)
  356. #define SDXC_CMD_XFER_MULTI_BLK_SEL_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_MULTI_BLK_SEL_SHIFT) & SDXC_CMD_XFER_MULTI_BLK_SEL_MASK)
  357. #define SDXC_CMD_XFER_MULTI_BLK_SEL_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_MULTI_BLK_SEL_MASK) >> SDXC_CMD_XFER_MULTI_BLK_SEL_SHIFT)
  358. /*
  359. * DATA_XFER_DIR (RW)
  360. *
  361. * Data Transfer Direction Select
  362. * This bit defines the direction of DAT line data transfers.
  363. * This bit is set to 1 by the Host Driver to transfer data from the SD/eMMC card to the Host Controller and it is set to 0 for all other commands.
  364. * Values:
  365. * 0x1 (READ): Read (Card to Host)
  366. * 0x0 (WRITE): Write (Host to Card)
  367. */
  368. #define SDXC_CMD_XFER_DATA_XFER_DIR_MASK (0x10U)
  369. #define SDXC_CMD_XFER_DATA_XFER_DIR_SHIFT (4U)
  370. #define SDXC_CMD_XFER_DATA_XFER_DIR_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_DATA_XFER_DIR_SHIFT) & SDXC_CMD_XFER_DATA_XFER_DIR_MASK)
  371. #define SDXC_CMD_XFER_DATA_XFER_DIR_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_DATA_XFER_DIR_MASK) >> SDXC_CMD_XFER_DATA_XFER_DIR_SHIFT)
  372. /*
  373. * AUTO_CMD_ENABLE (RW)
  374. *
  375. * Auto Command Enable
  376. * This field determines use of Auto Command functions.
  377. * Note: In SDIO, this field must be set as 00b (Auto Command Disabled).
  378. * Values:
  379. * 0x0 (AUTO_CMD_DISABLED): Auto Command Disabled
  380. * 0x1 (AUTO_CMD12_ENABLED): Auto CMD12 Enable
  381. * 0x2 (AUTO_CMD23_ENABLED): Auto CMD23 Enable
  382. * 0x3 (AUTO_CMD_AUTO_SEL): Auto CMD Auto Sel
  383. */
  384. #define SDXC_CMD_XFER_AUTO_CMD_ENABLE_MASK (0xCU)
  385. #define SDXC_CMD_XFER_AUTO_CMD_ENABLE_SHIFT (2U)
  386. #define SDXC_CMD_XFER_AUTO_CMD_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_AUTO_CMD_ENABLE_SHIFT) & SDXC_CMD_XFER_AUTO_CMD_ENABLE_MASK)
  387. #define SDXC_CMD_XFER_AUTO_CMD_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_AUTO_CMD_ENABLE_MASK) >> SDXC_CMD_XFER_AUTO_CMD_ENABLE_SHIFT)
  388. /*
  389. * BLOCK_COUNT_ENABLE (RW)
  390. *
  391. * Block Count Enable
  392. * This bit is used to enable the Block Count register, which is relevant for multiple block transfers.
  393. * If this bit is set to 0, the Block Count register is disabled, which is useful in executing an infinite transfer.
  394. * The Host Driver must set this bit to 0 when ADMA is used.
  395. * Values:
  396. * 0x1 (ENABLED): Enable
  397. * 0x0 (DISABLED): Disable
  398. */
  399. #define SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_MASK (0x2U)
  400. #define SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_SHIFT (1U)
  401. #define SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_SHIFT) & SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_MASK)
  402. #define SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_MASK) >> SDXC_CMD_XFER_BLOCK_COUNT_ENABLE_SHIFT)
  403. /*
  404. * DMA_ENABLE (RW)
  405. *
  406. * DMA Enable
  407. * This bit enables the DMA functionality. If this bit is set to 1, a DMA operation begins when the Host Driver writes to the Command register.
  408. * You can select one of the DMA modes by using DMA Select in the Host Control 1 register.
  409. * Values:
  410. * 0x1 (ENABLED): DMA Data transfer
  411. * 0x0 (DISABLED): No data transfer or Non-DMA data transfer
  412. */
  413. #define SDXC_CMD_XFER_DMA_ENABLE_MASK (0x1U)
  414. #define SDXC_CMD_XFER_DMA_ENABLE_SHIFT (0U)
  415. #define SDXC_CMD_XFER_DMA_ENABLE_SET(x) (((uint32_t)(x) << SDXC_CMD_XFER_DMA_ENABLE_SHIFT) & SDXC_CMD_XFER_DMA_ENABLE_MASK)
  416. #define SDXC_CMD_XFER_DMA_ENABLE_GET(x) (((uint32_t)(x) & SDXC_CMD_XFER_DMA_ENABLE_MASK) >> SDXC_CMD_XFER_DMA_ENABLE_SHIFT)
  417. /* Bitfield definition for register array: RESP */
  418. /*
  419. * RESP01 (RO)
  420. *
  421. * Command Response
  422. * These bits reflect 39-8 bits of SD/eMMC Response Field.
  423. * Note: For Auto CMD, the 32-bit response (bits 39-8 of the Response Field) is updated in the RESP67_R register.
  424. */
  425. #define SDXC_RESP_RESP01_MASK (0xFFFFFFFFUL)
  426. #define SDXC_RESP_RESP01_SHIFT (0U)
  427. #define SDXC_RESP_RESP01_GET(x) (((uint32_t)(x) & SDXC_RESP_RESP01_MASK) >> SDXC_RESP_RESP01_SHIFT)
  428. /* Bitfield definition for register: BUF_DATA */
  429. /*
  430. * BUF_DATA (RW)
  431. *
  432. * Buffer Data
  433. * These bits enable access to the Host Controller packet buffer.
  434. */
  435. #define SDXC_BUF_DATA_BUF_DATA_MASK (0xFFFFFFFFUL)
  436. #define SDXC_BUF_DATA_BUF_DATA_SHIFT (0U)
  437. #define SDXC_BUF_DATA_BUF_DATA_SET(x) (((uint32_t)(x) << SDXC_BUF_DATA_BUF_DATA_SHIFT) & SDXC_BUF_DATA_BUF_DATA_MASK)
  438. #define SDXC_BUF_DATA_BUF_DATA_GET(x) (((uint32_t)(x) & SDXC_BUF_DATA_BUF_DATA_MASK) >> SDXC_BUF_DATA_BUF_DATA_SHIFT)
  439. /* Bitfield definition for register: PSTATE */
  440. /*
  441. * SUB_CMD_STAT (RO)
  442. *
  443. * Sub Command Status
  444. * This bit is used to distinguish between a main command and a sub command status.
  445. * Values:
  446. * 0x0 (FALSE): Main Command Status
  447. * 0x1 (TRUE): Sub Command Status
  448. */
  449. #define SDXC_PSTATE_SUB_CMD_STAT_MASK (0x10000000UL)
  450. #define SDXC_PSTATE_SUB_CMD_STAT_SHIFT (28U)
  451. #define SDXC_PSTATE_SUB_CMD_STAT_GET(x) (((uint32_t)(x) & SDXC_PSTATE_SUB_CMD_STAT_MASK) >> SDXC_PSTATE_SUB_CMD_STAT_SHIFT)
  452. /*
  453. * CMD_ISSUE_ERR (RO)
  454. *
  455. * Command Not Issued by Error
  456. * This bit is set if a command cannot be issued after setting the command register due to an error except the Auto CMD12 error.
  457. * Values:
  458. * 0x0 (FALSE): No error for issuing a command
  459. * 0x1 (TRUE): Command cannot be issued
  460. */
  461. #define SDXC_PSTATE_CMD_ISSUE_ERR_MASK (0x8000000UL)
  462. #define SDXC_PSTATE_CMD_ISSUE_ERR_SHIFT (27U)
  463. #define SDXC_PSTATE_CMD_ISSUE_ERR_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CMD_ISSUE_ERR_MASK) >> SDXC_PSTATE_CMD_ISSUE_ERR_SHIFT)
  464. /*
  465. * CMD_LINE_LVL (RO)
  466. *
  467. * Command-Line Signal Level
  468. * This bit is used to check the CMD line level to recover from errors and for debugging. These bits reflect the value of the sd_cmd_in signal.
  469. */
  470. #define SDXC_PSTATE_CMD_LINE_LVL_MASK (0x1000000UL)
  471. #define SDXC_PSTATE_CMD_LINE_LVL_SHIFT (24U)
  472. #define SDXC_PSTATE_CMD_LINE_LVL_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CMD_LINE_LVL_MASK) >> SDXC_PSTATE_CMD_LINE_LVL_SHIFT)
  473. /*
  474. * DAT_3_0 (RO)
  475. *
  476. * DAT[3:0] Line Signal Level
  477. * This bit is used to check the DAT line level to recover from errors and for debugging. These bits reflect the value of the sd_dat_in (lower nibble) signal.
  478. */
  479. #define SDXC_PSTATE_DAT_3_0_MASK (0xF00000UL)
  480. #define SDXC_PSTATE_DAT_3_0_SHIFT (20U)
  481. #define SDXC_PSTATE_DAT_3_0_GET(x) (((uint32_t)(x) & SDXC_PSTATE_DAT_3_0_MASK) >> SDXC_PSTATE_DAT_3_0_SHIFT)
  482. /*
  483. * WR_PROTECT_SW_LVL (RO)
  484. *
  485. * Write Protect Switch Pin Level
  486. * This bit is supported only for memory and combo cards. This bit reflects the synchronized value of the card_write_prot signal.
  487. * Values:
  488. * 0x0 (FALSE): Write protected
  489. * 0x1 (TRUE): Write enabled
  490. */
  491. #define SDXC_PSTATE_WR_PROTECT_SW_LVL_MASK (0x80000UL)
  492. #define SDXC_PSTATE_WR_PROTECT_SW_LVL_SHIFT (19U)
  493. #define SDXC_PSTATE_WR_PROTECT_SW_LVL_GET(x) (((uint32_t)(x) & SDXC_PSTATE_WR_PROTECT_SW_LVL_MASK) >> SDXC_PSTATE_WR_PROTECT_SW_LVL_SHIFT)
  494. /*
  495. * CARD_DETECT_PIN_LEVEL (RO)
  496. *
  497. * Card Detect Pin Level
  498. * This bit reflects the inverse synchronized value of the card_detect_n signal.
  499. * Values:
  500. * 0x0 (FALSE): No card present
  501. * 0x1 (TRUE): Card Present
  502. */
  503. #define SDXC_PSTATE_CARD_DETECT_PIN_LEVEL_MASK (0x40000UL)
  504. #define SDXC_PSTATE_CARD_DETECT_PIN_LEVEL_SHIFT (18U)
  505. #define SDXC_PSTATE_CARD_DETECT_PIN_LEVEL_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CARD_DETECT_PIN_LEVEL_MASK) >> SDXC_PSTATE_CARD_DETECT_PIN_LEVEL_SHIFT)
  506. /*
  507. * CARD_STABLE (RO)
  508. *
  509. * Card Stable
  510. * This bit indicates the stability of the Card Detect Pin Level. A card is not detected if this bit is set to 1 and the value of the CARD_INSERTED bit is 0.
  511. * Values:
  512. * 0x0 (FALSE): Reset or Debouncing
  513. * 0x1 (TRUE): No Card or Inserted
  514. */
  515. #define SDXC_PSTATE_CARD_STABLE_MASK (0x20000UL)
  516. #define SDXC_PSTATE_CARD_STABLE_SHIFT (17U)
  517. #define SDXC_PSTATE_CARD_STABLE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CARD_STABLE_MASK) >> SDXC_PSTATE_CARD_STABLE_SHIFT)
  518. /*
  519. * CARD_INSERTED (RO)
  520. *
  521. * Card Inserted
  522. * This bit indicates whether a card has been inserted. The Host Controller debounces this signal so that Host Driver need not wait for it to stabilize.
  523. * Values:
  524. * 0x0 (FALSE): Reset, Debouncing, or No card
  525. * 0x1 (TRUE): Card Inserted
  526. */
  527. #define SDXC_PSTATE_CARD_INSERTED_MASK (0x10000UL)
  528. #define SDXC_PSTATE_CARD_INSERTED_SHIFT (16U)
  529. #define SDXC_PSTATE_CARD_INSERTED_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CARD_INSERTED_MASK) >> SDXC_PSTATE_CARD_INSERTED_SHIFT)
  530. /*
  531. * BUF_RD_ENABLE (RO)
  532. *
  533. * Buffer Read Enable
  534. * This bit is used for non-DMA transfers. This bit is set if valid data exists in the Host buffer.
  535. * Values:
  536. * 0x0 (DISABLED): Read disable
  537. * 0x1 (ENABLED): Read enable
  538. */
  539. #define SDXC_PSTATE_BUF_RD_ENABLE_MASK (0x800U)
  540. #define SDXC_PSTATE_BUF_RD_ENABLE_SHIFT (11U)
  541. #define SDXC_PSTATE_BUF_RD_ENABLE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_BUF_RD_ENABLE_MASK) >> SDXC_PSTATE_BUF_RD_ENABLE_SHIFT)
  542. /*
  543. * BUF_WR_ENABLE (RO)
  544. *
  545. * Buffer Write Enable
  546. * This bit is used for non-DMA transfers. This bit is set if space is available for writing data.
  547. * Values:
  548. * 0x0 (DISABLED): Write disable
  549. * 0x1 (ENABLED): Write enable
  550. */
  551. #define SDXC_PSTATE_BUF_WR_ENABLE_MASK (0x400U)
  552. #define SDXC_PSTATE_BUF_WR_ENABLE_SHIFT (10U)
  553. #define SDXC_PSTATE_BUF_WR_ENABLE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_BUF_WR_ENABLE_MASK) >> SDXC_PSTATE_BUF_WR_ENABLE_SHIFT)
  554. /*
  555. * RD_XFER_ACTIVE (RO)
  556. *
  557. * Read Transfer Active
  558. * This bit indicates whether a read transfer is active for SD/eMMC mode.
  559. * Values:
  560. * 0x0 (INACTIVE): No valid data
  561. * 0x1 (ACTIVE): Transferring data
  562. */
  563. #define SDXC_PSTATE_RD_XFER_ACTIVE_MASK (0x200U)
  564. #define SDXC_PSTATE_RD_XFER_ACTIVE_SHIFT (9U)
  565. #define SDXC_PSTATE_RD_XFER_ACTIVE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_RD_XFER_ACTIVE_MASK) >> SDXC_PSTATE_RD_XFER_ACTIVE_SHIFT)
  566. /*
  567. * WR_XFER_ACTIVE (RO)
  568. *
  569. * Write Transfer Active
  570. * This status indicates whether a write transfer is active for SD/eMMC mode.
  571. * Values:
  572. * 0x0 (INACTIVE): No valid data
  573. * 0x1 (ACTIVE): Transferring data
  574. */
  575. #define SDXC_PSTATE_WR_XFER_ACTIVE_MASK (0x100U)
  576. #define SDXC_PSTATE_WR_XFER_ACTIVE_SHIFT (8U)
  577. #define SDXC_PSTATE_WR_XFER_ACTIVE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_WR_XFER_ACTIVE_MASK) >> SDXC_PSTATE_WR_XFER_ACTIVE_SHIFT)
  578. /*
  579. * DAT_7_4 (RO)
  580. *
  581. * DAT[7:4] Line Signal Level
  582. * This bit is used to check the DAT line level to recover from errors and for debugging. These bits reflect the value of the sd_dat_in (upper nibble) signal.
  583. */
  584. #define SDXC_PSTATE_DAT_7_4_MASK (0xF0U)
  585. #define SDXC_PSTATE_DAT_7_4_SHIFT (4U)
  586. #define SDXC_PSTATE_DAT_7_4_GET(x) (((uint32_t)(x) & SDXC_PSTATE_DAT_7_4_MASK) >> SDXC_PSTATE_DAT_7_4_SHIFT)
  587. /*
  588. * RE_TUNE_REQ (RO)
  589. *
  590. * Re-Tuning Request
  591. * SDXC does not generate retuning request. The software must maintain the Retuning timer.
  592. */
  593. #define SDXC_PSTATE_RE_TUNE_REQ_MASK (0x8U)
  594. #define SDXC_PSTATE_RE_TUNE_REQ_SHIFT (3U)
  595. #define SDXC_PSTATE_RE_TUNE_REQ_GET(x) (((uint32_t)(x) & SDXC_PSTATE_RE_TUNE_REQ_MASK) >> SDXC_PSTATE_RE_TUNE_REQ_SHIFT)
  596. /*
  597. * DAT_LINE_ACTIVE (RO)
  598. *
  599. * DAT Line Active (
  600. * This bit indicates whether one of the DAT lines on the SD/eMMC bus is in use.
  601. * In the case of read transactions, this bit indicates whether a read transfer is executing on the SD/eMMC bus.
  602. * In the case of write transactions, this bit indicates whether a write transfer is executing on the SD/eMMC bus.
  603. * For a command with busy, this status indicates whether the command executing busy is executing on an SD or eMMC bus.
  604. * Values:
  605. * 0x0 (INACTIVE): DAT Line Inactive
  606. * 0x1 (ACTIVE): DAT Line Active
  607. */
  608. #define SDXC_PSTATE_DAT_LINE_ACTIVE_MASK (0x4U)
  609. #define SDXC_PSTATE_DAT_LINE_ACTIVE_SHIFT (2U)
  610. #define SDXC_PSTATE_DAT_LINE_ACTIVE_GET(x) (((uint32_t)(x) & SDXC_PSTATE_DAT_LINE_ACTIVE_MASK) >> SDXC_PSTATE_DAT_LINE_ACTIVE_SHIFT)
  611. /*
  612. * DAT_INHIBIT (RO)
  613. *
  614. * Command Inhibit (DAT)
  615. * This bit is generated if either DAT line active or Read transfer active is set to 1.
  616. * If this bit is set to 0, it indicates that the Host Controller can issue subsequent SD/eMMC commands.
  617. * Values:
  618. * 0x0 (READY): Can issue command which used DAT line
  619. * 0x1 (NOT_READY): Cannot issue command which used DAT line
  620. */
  621. #define SDXC_PSTATE_DAT_INHIBIT_MASK (0x2U)
  622. #define SDXC_PSTATE_DAT_INHIBIT_SHIFT (1U)
  623. #define SDXC_PSTATE_DAT_INHIBIT_GET(x) (((uint32_t)(x) & SDXC_PSTATE_DAT_INHIBIT_MASK) >> SDXC_PSTATE_DAT_INHIBIT_SHIFT)
  624. /*
  625. * CMD_INHIBIT (RO)
  626. *
  627. * Command Inhibit (CMD)
  628. * This bit indicates the following :
  629. * If this bit is set to 0, it indicates that the CMD line is not in use and the Host controller can issue an SD/eMMC command using the CMD line.
  630. * This bit is set when the command register is written. This bit is cleared when the command response is received.
  631. * This bit is not cleared by the response of auto CMD12/23 but cleared by the response of read/write command.
  632. * Values:
  633. * 0x0 (READY): Host Controller is ready to issue a command
  634. * 0x1 (NOT_READY): Host Controller is not ready to issue a command
  635. */
  636. #define SDXC_PSTATE_CMD_INHIBIT_MASK (0x1U)
  637. #define SDXC_PSTATE_CMD_INHIBIT_SHIFT (0U)
  638. #define SDXC_PSTATE_CMD_INHIBIT_GET(x) (((uint32_t)(x) & SDXC_PSTATE_CMD_INHIBIT_MASK) >> SDXC_PSTATE_CMD_INHIBIT_SHIFT)
  639. /* Bitfield definition for register: PROT_CTRL */
  640. /*
  641. * CARD_REMOVAL (RW)
  642. *
  643. * Wakeup Event Enable on SD Card Removal
  644. * This bit enables wakeup event through Card Removal assertion in the Normal Interrupt Status register.
  645. * For the SDIO card, Wake Up Support (FN_WUS) in the Card Information Structure (CIS) register does not affect this bit.
  646. * Values:
  647. * 0x0 (DISABLED): Disable
  648. * 0x1 (ENABLED): Enable
  649. */
  650. #define SDXC_PROT_CTRL_CARD_REMOVAL_MASK (0x4000000UL)
  651. #define SDXC_PROT_CTRL_CARD_REMOVAL_SHIFT (26U)
  652. #define SDXC_PROT_CTRL_CARD_REMOVAL_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_CARD_REMOVAL_SHIFT) & SDXC_PROT_CTRL_CARD_REMOVAL_MASK)
  653. #define SDXC_PROT_CTRL_CARD_REMOVAL_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_CARD_REMOVAL_MASK) >> SDXC_PROT_CTRL_CARD_REMOVAL_SHIFT)
  654. /*
  655. * CARD_INSERT (RW)
  656. *
  657. * Wakeup Event Enable on SD Card Insertion
  658. * This bit enables wakeup event through Card Insertion assertion in the Normal Interrupt Status register.
  659. * FN_WUS (Wake Up Support) in CIS does not affect this bit.
  660. * Values:
  661. * 0x0 (DISABLED): Disable
  662. * 0x1 (ENABLED): Enable
  663. */
  664. #define SDXC_PROT_CTRL_CARD_INSERT_MASK (0x2000000UL)
  665. #define SDXC_PROT_CTRL_CARD_INSERT_SHIFT (25U)
  666. #define SDXC_PROT_CTRL_CARD_INSERT_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_CARD_INSERT_SHIFT) & SDXC_PROT_CTRL_CARD_INSERT_MASK)
  667. #define SDXC_PROT_CTRL_CARD_INSERT_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_CARD_INSERT_MASK) >> SDXC_PROT_CTRL_CARD_INSERT_SHIFT)
  668. /*
  669. * CARD_INT (RW)
  670. *
  671. * Wakeup Event Enable on Card Interrupt
  672. * This bit enables wakeup event through a Card Interrupt assertion in the Normal Interrupt Status register.
  673. * This bit can be set to 1 if FN_WUS (Wake Up Support) in CIS is set to 1.
  674. * Values:
  675. * 0x0 (DISABLED): Disable
  676. * 0x1 (ENABLED): Enable
  677. */
  678. #define SDXC_PROT_CTRL_CARD_INT_MASK (0x1000000UL)
  679. #define SDXC_PROT_CTRL_CARD_INT_SHIFT (24U)
  680. #define SDXC_PROT_CTRL_CARD_INT_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_CARD_INT_SHIFT) & SDXC_PROT_CTRL_CARD_INT_MASK)
  681. #define SDXC_PROT_CTRL_CARD_INT_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_CARD_INT_MASK) >> SDXC_PROT_CTRL_CARD_INT_SHIFT)
  682. /*
  683. * INT_AT_BGAP (RW)
  684. *
  685. * Interrupt At Block Gap
  686. * This bit is valid only in the 4-bit mode of an SDIO card and is used to select a sample point in the interrupt cycle.
  687. * Setting to 1 enables interrupt detection at the block gap for a multiple block transfer.
  688. * Values:
  689. * 0x0 (DISABLE): Disabled
  690. * 0x1 (ENABLE): Enabled
  691. */
  692. #define SDXC_PROT_CTRL_INT_AT_BGAP_MASK (0x80000UL)
  693. #define SDXC_PROT_CTRL_INT_AT_BGAP_SHIFT (19U)
  694. #define SDXC_PROT_CTRL_INT_AT_BGAP_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_INT_AT_BGAP_SHIFT) & SDXC_PROT_CTRL_INT_AT_BGAP_MASK)
  695. #define SDXC_PROT_CTRL_INT_AT_BGAP_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_INT_AT_BGAP_MASK) >> SDXC_PROT_CTRL_INT_AT_BGAP_SHIFT)
  696. /*
  697. * RD_WAIT_CTRL (RW)
  698. *
  699. * Read Wait Control
  700. * This bit is used to enable the read wait protocol to stop read data using DAT[2] line if the card supports read wait.
  701. * Otherwise, the Host Controller has to stop the card clock to hold the read data. In UHS-II mode, Read Wait is disabled.
  702. * Values:
  703. * 0x0 (DISABLE): Disable Read Wait Control
  704. * 0x1 (ENABLE): Enable Read Wait Control
  705. */
  706. #define SDXC_PROT_CTRL_RD_WAIT_CTRL_MASK (0x40000UL)
  707. #define SDXC_PROT_CTRL_RD_WAIT_CTRL_SHIFT (18U)
  708. #define SDXC_PROT_CTRL_RD_WAIT_CTRL_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_RD_WAIT_CTRL_SHIFT) & SDXC_PROT_CTRL_RD_WAIT_CTRL_MASK)
  709. #define SDXC_PROT_CTRL_RD_WAIT_CTRL_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_RD_WAIT_CTRL_MASK) >> SDXC_PROT_CTRL_RD_WAIT_CTRL_SHIFT)
  710. /*
  711. * CONTINUE_REQ (RW)
  712. *
  713. * Continue Request
  714. * This bit is used to restart the transaction, which was stopped using the Stop At Block Gap Request.
  715. * The Host Controller automatically clears this bit when the transaction restarts.
  716. * If stop at block gap request is set to 1, any write to this bit is ignored.
  717. * Values:
  718. * 0x0 (NO_AFFECT): No Affect
  719. * 0x1 (RESTART): Restart
  720. */
  721. #define SDXC_PROT_CTRL_CONTINUE_REQ_MASK (0x20000UL)
  722. #define SDXC_PROT_CTRL_CONTINUE_REQ_SHIFT (17U)
  723. #define SDXC_PROT_CTRL_CONTINUE_REQ_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_CONTINUE_REQ_SHIFT) & SDXC_PROT_CTRL_CONTINUE_REQ_MASK)
  724. #define SDXC_PROT_CTRL_CONTINUE_REQ_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_CONTINUE_REQ_MASK) >> SDXC_PROT_CTRL_CONTINUE_REQ_SHIFT)
  725. /*
  726. * STOP_BG_REQ (RW)
  727. *
  728. * Stop At Block Gap Request
  729. * This bit is used to stop executing read and write transactions at the next block gap for non-DMA, SDMA, and ADMA transfers.
  730. * Values:
  731. * 0x0 (XFER): Transfer
  732. * 0x1 (STOP): Stop
  733. */
  734. #define SDXC_PROT_CTRL_STOP_BG_REQ_MASK (0x10000UL)
  735. #define SDXC_PROT_CTRL_STOP_BG_REQ_SHIFT (16U)
  736. #define SDXC_PROT_CTRL_STOP_BG_REQ_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_STOP_BG_REQ_SHIFT) & SDXC_PROT_CTRL_STOP_BG_REQ_MASK)
  737. #define SDXC_PROT_CTRL_STOP_BG_REQ_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_STOP_BG_REQ_MASK) >> SDXC_PROT_CTRL_STOP_BG_REQ_SHIFT)
  738. /*
  739. * SD_BUS_VOL_VDD1 (RW)
  740. *
  741. * SD Bus Voltage Select for VDD1/eMMC Bus Voltage Select for VDD
  742. * These bits enable the Host Driver to select the voltage level for an SD/eMMC card.
  743. * Before setting this register, the Host Driver checks the Voltage Support bits in the Capabilities register.
  744. * If an unsupported voltage is selected, the Host System does not supply the SD Bus voltage.
  745. * The value set in this field is available on the SDXC output signal (sd_vdd1_sel), which is used by the voltage switching circuitry.
  746. * SD Bus Voltage Select options:
  747. * 0x7 : 3.3V(Typical)
  748. * 0x6 : 3.0V(Typical)
  749. * 0x5 : 1.8V(Typical) for Embedded
  750. * 0x4 : 0x0 - Reserved
  751. * eMMC Bus Voltage Select options:
  752. * 0x7 : 3.3V(Typical)
  753. * 0x6 : 1.8V(Typical)
  754. * 0x5 : 1.2V(Typical)
  755. * 0x4 : 0x0 - Reserved
  756. * Values:
  757. * 0x7 (V_3_3): 3.3V (Typ.)
  758. * 0x6 (V_3_0): 3.0V (Typ.)
  759. * 0x5 (V_1_8): 1.8V (Typ.) for Embedded
  760. * 0x4 (RSVD4): Reserved
  761. * 0x3 (RSVD3): Reserved
  762. * 0x2 (RSVD2): Reserved
  763. * 0x1 (RSVD1): Reserved
  764. * 0x0 (RSVD0): Reserved
  765. */
  766. #define SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_MASK (0xE00U)
  767. #define SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_SHIFT (9U)
  768. #define SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_SHIFT) & SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_MASK)
  769. #define SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_MASK) >> SDXC_PROT_CTRL_SD_BUS_VOL_VDD1_SHIFT)
  770. /*
  771. * SD_BUS_PWR_VDD1 (RW)
  772. *
  773. * SD Bus Power for VDD1
  774. * This bit enables VDD1 power of the card.
  775. * This setting is available on the sd_vdd1_on output of SDXC so that it can be used to control the VDD1 power supply of the card.
  776. * Before setting this bit, the SD Host Driver sets the SD Bus Voltage Select bit. If the Host Controller detects a No Card state, this bit is cleared.
  777. * In SD mode, if this bit is cleared, the Host Controller stops the SD Clock by clearing the SD_CLK_IN bit in the CLK_CTRL_R register.
  778. * Values:
  779. * 0x0 (OFF): Power off
  780. * 0x1 (ON): Power on
  781. */
  782. #define SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_MASK (0x100U)
  783. #define SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_SHIFT (8U)
  784. #define SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_SHIFT) & SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_MASK)
  785. #define SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_MASK) >> SDXC_PROT_CTRL_SD_BUS_PWR_VDD1_SHIFT)
  786. /*
  787. * EXT_DAT_XFER (RW)
  788. *
  789. * Extended Data Transfer Width
  790. * This bit controls 8-bit bus width mode of embedded device.
  791. * Values:
  792. * 0x1 (EIGHT_BIT): 8-bit Bus Width
  793. * 0x0 (DEFAULT): Bus Width is selected by the Data Transfer Width
  794. */
  795. #define SDXC_PROT_CTRL_EXT_DAT_XFER_MASK (0x20U)
  796. #define SDXC_PROT_CTRL_EXT_DAT_XFER_SHIFT (5U)
  797. #define SDXC_PROT_CTRL_EXT_DAT_XFER_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_EXT_DAT_XFER_SHIFT) & SDXC_PROT_CTRL_EXT_DAT_XFER_MASK)
  798. #define SDXC_PROT_CTRL_EXT_DAT_XFER_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_EXT_DAT_XFER_MASK) >> SDXC_PROT_CTRL_EXT_DAT_XFER_SHIFT)
  799. /*
  800. * DMA_SEL (RW)
  801. *
  802. * DMA Select
  803. * This field is used to select the DMA type.
  804. * When Host Version 4 Enable is 1 in Host Control 2 register:
  805. * 0x0 : SDMA is selected
  806. * 0x1 : Reserved
  807. * 0x2 : ADMA2 is selected
  808. * 0x3 : ADMA2 or ADMA3 is selected
  809. * When Host Version 4 Enable is 0 in Host Control 2 register:
  810. * 0x0 : SDMA is selected
  811. * 0x1 : Reserved
  812. * 0x2 : 32-bit Address ADMA2 is selected
  813. * 0x3 : 64-bit Address ADMA2 is selected
  814. * Values:
  815. * 0x0 (SDMA): SDMA is selected
  816. * 0x1 (RSVD_BIT): Reserved
  817. * 0x2 (ADMA2): ADMA2 is selected
  818. * 0x3 (ADMA2_3): ADMA2 or ADMA3 is selected
  819. */
  820. #define SDXC_PROT_CTRL_DMA_SEL_MASK (0x18U)
  821. #define SDXC_PROT_CTRL_DMA_SEL_SHIFT (3U)
  822. #define SDXC_PROT_CTRL_DMA_SEL_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_DMA_SEL_SHIFT) & SDXC_PROT_CTRL_DMA_SEL_MASK)
  823. #define SDXC_PROT_CTRL_DMA_SEL_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_DMA_SEL_MASK) >> SDXC_PROT_CTRL_DMA_SEL_SHIFT)
  824. /*
  825. * HIGH_SPEED_EN (RW)
  826. *
  827. * High Speed Enable
  828. * this bit is used to determine the selection of preset value for High Speed mode.
  829. * Before setting this bit, the Host Driver checks the High Speed Support in the Capabilities register.
  830. * Note: SDXC always outputs the sd_cmd_out and sd_dat_out lines at the rising edge of cclk_tx clock irrespective of this bit.
  831. * Values:
  832. * 0x1 (HIGH_SPEED): High Speed mode
  833. * 0x0 (NORMAL_SPEED): Normal Speed mode
  834. */
  835. #define SDXC_PROT_CTRL_HIGH_SPEED_EN_MASK (0x4U)
  836. #define SDXC_PROT_CTRL_HIGH_SPEED_EN_SHIFT (2U)
  837. #define SDXC_PROT_CTRL_HIGH_SPEED_EN_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_HIGH_SPEED_EN_SHIFT) & SDXC_PROT_CTRL_HIGH_SPEED_EN_MASK)
  838. #define SDXC_PROT_CTRL_HIGH_SPEED_EN_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_HIGH_SPEED_EN_MASK) >> SDXC_PROT_CTRL_HIGH_SPEED_EN_SHIFT)
  839. /*
  840. * DAT_XFER_WIDTH (RW)
  841. *
  842. * Data Transfer Width
  843. * For SD/eMMC mode,this bit selects the data transfer width of the Host Controller.
  844. * The Host Driver sets it to match the data width of the SD/eMMC card. In UHS-II mode, this bit is irrelevant.
  845. * Values:
  846. * 0x1 (FOUR_BIT): 4-bit mode
  847. * 0x0 (ONE_BIT): 1-bit mode
  848. */
  849. #define SDXC_PROT_CTRL_DAT_XFER_WIDTH_MASK (0x2U)
  850. #define SDXC_PROT_CTRL_DAT_XFER_WIDTH_SHIFT (1U)
  851. #define SDXC_PROT_CTRL_DAT_XFER_WIDTH_SET(x) (((uint32_t)(x) << SDXC_PROT_CTRL_DAT_XFER_WIDTH_SHIFT) & SDXC_PROT_CTRL_DAT_XFER_WIDTH_MASK)
  852. #define SDXC_PROT_CTRL_DAT_XFER_WIDTH_GET(x) (((uint32_t)(x) & SDXC_PROT_CTRL_DAT_XFER_WIDTH_MASK) >> SDXC_PROT_CTRL_DAT_XFER_WIDTH_SHIFT)
  853. /* Bitfield definition for register: SYS_CTRL */
  854. /*
  855. * SW_RST_DAT (RW)
  856. *
  857. * Software Reset For DAT line
  858. * This bit is used in SD/eMMC mode and it resets only a part of the data circuit and the DMA circuit is also reset.
  859. * The following registers and bits are cleared by this bit:
  860. * Buffer Data Port register
  861. * -Buffer is cleared and initialized.
  862. * Present state register
  863. * -Buffer Read Enable
  864. * -Buffer Write Enable
  865. * -Read Transfer Active
  866. * -Write Transfer Active
  867. * -DAT Line Active
  868. * -Command Inhibit (DAT)
  869. * Block Gap Control register
  870. * -Continue Request
  871. * -Stop At Block Gap Request
  872. * Normal Interrupt status register
  873. * -Buffer Read Ready
  874. * -Buffer Write Ready
  875. * -DMA Interrupt
  876. * -Block Gap Event
  877. * -Transfer Complete
  878. * In UHS-II mode, this bit shall be set to 0
  879. * Values:
  880. * 0x0 (FALSE): Work
  881. * 0x1 (TRUE): Reset
  882. */
  883. #define SDXC_SYS_CTRL_SW_RST_DAT_MASK (0x4000000UL)
  884. #define SDXC_SYS_CTRL_SW_RST_DAT_SHIFT (26U)
  885. #define SDXC_SYS_CTRL_SW_RST_DAT_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_SW_RST_DAT_SHIFT) & SDXC_SYS_CTRL_SW_RST_DAT_MASK)
  886. #define SDXC_SYS_CTRL_SW_RST_DAT_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_SW_RST_DAT_MASK) >> SDXC_SYS_CTRL_SW_RST_DAT_SHIFT)
  887. /*
  888. * SW_RST_CMD (RW)
  889. *
  890. * Software Reset For CMD line
  891. * This bit resets only a part of the command circuit to be able to issue a command.
  892. * It bit is also used to initialize a UHS-II command circuit.
  893. * This reset is effective only for a command issuing circuit (including response error statuses related to Command Inhibit (CMD) control) and does not affect the data transfer circuit.
  894. * Host Controller can continue data transfer even after this reset is executed while handling subcommand-response errors.
  895. * The following registers and bits are cleared by this bit:
  896. * Present State register : Command Inhibit (CMD) bit
  897. * Normal Interrupt Status register : Command Complete bit
  898. * Error Interrupt Status : Response error statuses related to Command Inhibit (CMD) bit
  899. * Values:
  900. * 0x0 (FALSE): Work
  901. * 0x1 (TRUE): Reset
  902. */
  903. #define SDXC_SYS_CTRL_SW_RST_CMD_MASK (0x2000000UL)
  904. #define SDXC_SYS_CTRL_SW_RST_CMD_SHIFT (25U)
  905. #define SDXC_SYS_CTRL_SW_RST_CMD_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_SW_RST_CMD_SHIFT) & SDXC_SYS_CTRL_SW_RST_CMD_MASK)
  906. #define SDXC_SYS_CTRL_SW_RST_CMD_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_SW_RST_CMD_MASK) >> SDXC_SYS_CTRL_SW_RST_CMD_SHIFT)
  907. /*
  908. * SW_RST_ALL (RW)
  909. *
  910. * Software Reset For All
  911. * This reset affects the entire Host Controller except for the card detection circuit.
  912. * During its initialization, the Host Driver sets this bit to 1 to reset the Host Controller.
  913. * All registers are reset except the capabilities register.
  914. * If this bit is set to 1, the Host Driver must issue reset command and reinitialize the card.
  915. * Values:
  916. * 0x0 (FALSE): Work
  917. * 0x1 (TRUE): Reset
  918. */
  919. #define SDXC_SYS_CTRL_SW_RST_ALL_MASK (0x1000000UL)
  920. #define SDXC_SYS_CTRL_SW_RST_ALL_SHIFT (24U)
  921. #define SDXC_SYS_CTRL_SW_RST_ALL_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_SW_RST_ALL_SHIFT) & SDXC_SYS_CTRL_SW_RST_ALL_MASK)
  922. #define SDXC_SYS_CTRL_SW_RST_ALL_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_SW_RST_ALL_MASK) >> SDXC_SYS_CTRL_SW_RST_ALL_SHIFT)
  923. /*
  924. * TOUT_CNT (RW)
  925. *
  926. * Data Timeout Counter Value.
  927. * This value determines the interval by which DAT line timeouts are detected.
  928. * The Timeout clock frequency is generated by dividing the base clock TMCLK value by this value.
  929. * When setting this register, prevent inadvertent timeout events by clearing the Data Timeout Error Status Enable (in the Error Interrupt Status Enable register).
  930. * The values for these bits are:
  931. * 0xF : Reserved
  932. * 0xE : TMCLK x 2^27
  933. * .........
  934. * 0x1 : TMCLK x 2^14
  935. * 0x0 : TMCLK x 2^13
  936. * Note: During a boot operating in an eMMC mode, an application must configure the boot data timeout value (approximately 1 sec) in this bit.
  937. */
  938. #define SDXC_SYS_CTRL_TOUT_CNT_MASK (0xF0000UL)
  939. #define SDXC_SYS_CTRL_TOUT_CNT_SHIFT (16U)
  940. #define SDXC_SYS_CTRL_TOUT_CNT_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_TOUT_CNT_SHIFT) & SDXC_SYS_CTRL_TOUT_CNT_MASK)
  941. #define SDXC_SYS_CTRL_TOUT_CNT_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_TOUT_CNT_MASK) >> SDXC_SYS_CTRL_TOUT_CNT_SHIFT)
  942. /*
  943. * FREQ_SEL (RW)
  944. *
  945. * SDCLK/RCLK Frequency Select
  946. * These bits are used to select the frequency of the SDCLK signal.
  947. * These bits depend on setting of Preset Value Enable in the Host Control 2 register.
  948. * If Preset Value Enable = 0, these bits are set by the Host Driver.
  949. * If Preset Value Enable = 1, these bits are automatically set to a value specified in one of the Preset Value register.
  950. * The value is reflected on the lower 8-bit of the card_clk_freq_selsignal.
  951. * 10-bit Divided Clock Mode:
  952. * 0x3FF : 1/2046 Divided clock
  953. * ..........
  954. * N : 1/2N Divided Clock
  955. * ..........
  956. * 0x002 : 1/4 Divided Clock
  957. * 0x001 : 1/2 Divided Clock
  958. * 0x000 : Base clock (10MHz - 255 MHz)
  959. * Programmable Clock Mode : Enables the Host System to select a fine grain SD clock frequency:
  960. * 0x3FF : Base clock * M /1024
  961. * ..........
  962. * N-1 : Base clock * M /N
  963. * ..........
  964. * 0x002 : Base clock * M /3
  965. * 0x001 : Base clock * M /2
  966. * 0x000 : Base clock * M
  967. */
  968. #define SDXC_SYS_CTRL_FREQ_SEL_MASK (0xFF00U)
  969. #define SDXC_SYS_CTRL_FREQ_SEL_SHIFT (8U)
  970. #define SDXC_SYS_CTRL_FREQ_SEL_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_FREQ_SEL_SHIFT) & SDXC_SYS_CTRL_FREQ_SEL_MASK)
  971. #define SDXC_SYS_CTRL_FREQ_SEL_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_FREQ_SEL_MASK) >> SDXC_SYS_CTRL_FREQ_SEL_SHIFT)
  972. /*
  973. * UPPER_FREQ_SEL (RW)
  974. *
  975. * These bits specify the upper 2 bits of 10-bit SDCLK/RCLK Frequency Select control.
  976. * The value is reflected on the upper 2 bits of the card_clk_freq_sel signal.
  977. */
  978. #define SDXC_SYS_CTRL_UPPER_FREQ_SEL_MASK (0xC0U)
  979. #define SDXC_SYS_CTRL_UPPER_FREQ_SEL_SHIFT (6U)
  980. #define SDXC_SYS_CTRL_UPPER_FREQ_SEL_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_UPPER_FREQ_SEL_SHIFT) & SDXC_SYS_CTRL_UPPER_FREQ_SEL_MASK)
  981. #define SDXC_SYS_CTRL_UPPER_FREQ_SEL_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_UPPER_FREQ_SEL_MASK) >> SDXC_SYS_CTRL_UPPER_FREQ_SEL_SHIFT)
  982. /*
  983. * CLK_GEN_SELECT (RW)
  984. *
  985. * Clock Generator Select
  986. * This bit is used to select the clock generator mode in SDCLK/RCLK Frequency Select.
  987. * If Preset Value Enable = 0, this bit is set by the Host Driver.
  988. * If Preset Value Enable = 1, this bit is automatically set to a value specified in one of the Preset Value registers.
  989. * The value is reflected on the card_clk_gen_sel signal.
  990. * Values:
  991. * 0x0 (FALSE): Divided Clock Mode
  992. * 0x1 (TRUE): Programmable Clock Mode
  993. */
  994. #define SDXC_SYS_CTRL_CLK_GEN_SELECT_MASK (0x20U)
  995. #define SDXC_SYS_CTRL_CLK_GEN_SELECT_SHIFT (5U)
  996. #define SDXC_SYS_CTRL_CLK_GEN_SELECT_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_CLK_GEN_SELECT_SHIFT) & SDXC_SYS_CTRL_CLK_GEN_SELECT_MASK)
  997. #define SDXC_SYS_CTRL_CLK_GEN_SELECT_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_CLK_GEN_SELECT_MASK) >> SDXC_SYS_CTRL_CLK_GEN_SELECT_SHIFT)
  998. /*
  999. * PLL_ENABLE (RW)
  1000. *
  1001. * PLL Enable
  1002. * This bit is used to activate the PLL (applicable when Host Version 4 Enable = 1).
  1003. * When Host Version 4 Enable = 0, INTERNAL_CLK_EN bit may be used to activate PLL. The value is reflected on the card_clk_en signal.
  1004. * Note: If this bit is not used to to active the PLL when Host Version 4 Enable = 1, it is recommended to set this bit to '1' .
  1005. * Values:
  1006. * 0x0 (FALSE): PLL is in low power mode
  1007. * 0x1 (TRUE): PLL is enabled
  1008. */
  1009. #define SDXC_SYS_CTRL_PLL_ENABLE_MASK (0x8U)
  1010. #define SDXC_SYS_CTRL_PLL_ENABLE_SHIFT (3U)
  1011. #define SDXC_SYS_CTRL_PLL_ENABLE_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_PLL_ENABLE_SHIFT) & SDXC_SYS_CTRL_PLL_ENABLE_MASK)
  1012. #define SDXC_SYS_CTRL_PLL_ENABLE_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_PLL_ENABLE_MASK) >> SDXC_SYS_CTRL_PLL_ENABLE_SHIFT)
  1013. /*
  1014. * SD_CLK_EN (RW)
  1015. *
  1016. * SD/eMMC Clock Enable
  1017. * This bit stops the SDCLK or RCLK when set to 0.
  1018. * The SDCLK/RCLK Frequency Select bit can be changed when this bit is set to 0.
  1019. * The value is reflected on the clk2card_on pin.
  1020. * Values:
  1021. * 0x0 (FALSE): Disable providing SDCLK/RCLK
  1022. * 0x1 (TRUE): Enable providing SDCLK/RCLK
  1023. */
  1024. #define SDXC_SYS_CTRL_SD_CLK_EN_MASK (0x4U)
  1025. #define SDXC_SYS_CTRL_SD_CLK_EN_SHIFT (2U)
  1026. #define SDXC_SYS_CTRL_SD_CLK_EN_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_SD_CLK_EN_SHIFT) & SDXC_SYS_CTRL_SD_CLK_EN_MASK)
  1027. #define SDXC_SYS_CTRL_SD_CLK_EN_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_SD_CLK_EN_MASK) >> SDXC_SYS_CTRL_SD_CLK_EN_SHIFT)
  1028. /*
  1029. * INTERNAL_CLK_STABLE (RW)
  1030. *
  1031. * Internal Clock Stable
  1032. * This bit enables the Host Driver to check the clock stability twice after the Internal Clock Enable bit is set and after the PLL Enable bit is set.
  1033. * This bit reflects the synchronized value of the intclk_stable signal after the Internal Clock Enable bit is set to 1,
  1034. * and also reflects the synchronized value of the card_clk_stable signal after the PLL Enable bit is set to 1.
  1035. * Values:
  1036. * 0x0 (FALSE): Not Ready
  1037. * 0x1 (TRUE): Ready
  1038. */
  1039. #define SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_MASK (0x2U)
  1040. #define SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_SHIFT (1U)
  1041. #define SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_SHIFT) & SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_MASK)
  1042. #define SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_MASK) >> SDXC_SYS_CTRL_INTERNAL_CLK_STABLE_SHIFT)
  1043. /*
  1044. * INTERNAL_CLK_EN (RW)
  1045. *
  1046. * Internal Clock Enable
  1047. * This bit is set to 0 when the Host Driver is not using the Host Controller or the Host Controller awaits a wakeup interrupt.
  1048. * The Host Controller must stop its internal clock to enter a very low power state.
  1049. * However, registers can still be read and written to. The value is reflected on the intclk_en signal.
  1050. * Note: If this bit is not used to control the internal clock (base clock and master clock), it is recommended to set this bit to '1' .
  1051. * Values:
  1052. * 0x0 (FALSE): Stop
  1053. * 0x1 (TRUE): Oscillate
  1054. */
  1055. #define SDXC_SYS_CTRL_INTERNAL_CLK_EN_MASK (0x1U)
  1056. #define SDXC_SYS_CTRL_INTERNAL_CLK_EN_SHIFT (0U)
  1057. #define SDXC_SYS_CTRL_INTERNAL_CLK_EN_SET(x) (((uint32_t)(x) << SDXC_SYS_CTRL_INTERNAL_CLK_EN_SHIFT) & SDXC_SYS_CTRL_INTERNAL_CLK_EN_MASK)
  1058. #define SDXC_SYS_CTRL_INTERNAL_CLK_EN_GET(x) (((uint32_t)(x) & SDXC_SYS_CTRL_INTERNAL_CLK_EN_MASK) >> SDXC_SYS_CTRL_INTERNAL_CLK_EN_SHIFT)
  1059. /* Bitfield definition for register: INT_STAT */
  1060. /*
  1061. * BOOT_ACK_ERR (R/W1C)
  1062. *
  1063. * Boot Acknowledgement Error
  1064. * This bit is set when there is a timeout for boot acknowledgement or when detecting boot ack status having a value other than 010. This is applicable only when boot acknowledgement is expected in eMMC mode.
  1065. * In SD/UHS-II mode, this bit is irrelevant.
  1066. */
  1067. #define SDXC_INT_STAT_BOOT_ACK_ERR_MASK (0x10000000UL)
  1068. #define SDXC_INT_STAT_BOOT_ACK_ERR_SHIFT (28U)
  1069. #define SDXC_INT_STAT_BOOT_ACK_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_BOOT_ACK_ERR_SHIFT) & SDXC_INT_STAT_BOOT_ACK_ERR_MASK)
  1070. #define SDXC_INT_STAT_BOOT_ACK_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_BOOT_ACK_ERR_MASK) >> SDXC_INT_STAT_BOOT_ACK_ERR_SHIFT)
  1071. /*
  1072. * RESP_ERR (R/W1C)
  1073. *
  1074. * Response Error
  1075. * Host Controller Version 4.00 supports response error check function to avoid overhead of response error check by Host Driver during DMA execution.
  1076. * If Response Error Check Enable is set to 1 in the Transfer Mode register, Host Controller Checks R1 or R5 response. If an error is detected in a response, this bit is set to 1.This is applicable in SD/eMMC mode.
  1077. * Values:
  1078. * 0x0 (FALSE): No error
  1079. * 0x1 (TRUE): Error
  1080. */
  1081. #define SDXC_INT_STAT_RESP_ERR_MASK (0x8000000UL)
  1082. #define SDXC_INT_STAT_RESP_ERR_SHIFT (27U)
  1083. #define SDXC_INT_STAT_RESP_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_RESP_ERR_SHIFT) & SDXC_INT_STAT_RESP_ERR_MASK)
  1084. #define SDXC_INT_STAT_RESP_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_RESP_ERR_MASK) >> SDXC_INT_STAT_RESP_ERR_SHIFT)
  1085. /*
  1086. * TUNING_ERR (R/W1C)
  1087. *
  1088. * Tuning Error
  1089. * This bit is set when an unrecoverable error is detected in a tuning circuit except during the tuning procedure
  1090. * (occurrence of an error during tuning procedure is indicated by Sampling Clock Select in the Host Control 2 register).
  1091. * By detecting Tuning Error, Host Driver needs to abort a command executing and perform tuning.
  1092. * To reset tuning circuit, Sampling Clock Select is set to 0 before executing tuning procedure.
  1093. * The Tuning Error is higher priority than the other error interrupts generated during data transfer.
  1094. * By detecting Tuning Error, the Host Driver must discard data transferred by a current read/write command and retry data transfer after the Host Controller retrieved from the tuning circuit error.
  1095. * This is applicable in SD/eMMC mode.
  1096. * Values:
  1097. * 0x0 (FALSE): No error
  1098. * 0x1 (TRUE): Error
  1099. */
  1100. #define SDXC_INT_STAT_TUNING_ERR_MASK (0x4000000UL)
  1101. #define SDXC_INT_STAT_TUNING_ERR_SHIFT (26U)
  1102. #define SDXC_INT_STAT_TUNING_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_TUNING_ERR_SHIFT) & SDXC_INT_STAT_TUNING_ERR_MASK)
  1103. #define SDXC_INT_STAT_TUNING_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_TUNING_ERR_MASK) >> SDXC_INT_STAT_TUNING_ERR_SHIFT)
  1104. /*
  1105. * ADMA_ERR (R/W1C)
  1106. *
  1107. * ADMA Error
  1108. * This bit is set when the Host Controller detects error during ADMA-based data transfer. The error could be due to following reasons:
  1109. * Error response received from System bus (Master I/F)
  1110. * ADMA3,ADMA2 Descriptors invalid
  1111. * CQE Task or Transfer descriptors invalid
  1112. * When the error occurs, the state of the ADMA is saved in the ADMA Error Status register.
  1113. * In eMMC CQE mode:
  1114. * The Host Controller generates this Interrupt when it detects an invalid descriptor data (Valid=0) at the ST_FDS state.
  1115. * ADMA Error State in the ADMA Error Status indicates that an error has occurred in ST_FDS state.
  1116. * The Host Driver may find that Valid bit is not set at the error descriptor.
  1117. * Values:
  1118. * 0x0 (FALSE): No error
  1119. * 0x1 (TRUE): Error
  1120. */
  1121. #define SDXC_INT_STAT_ADMA_ERR_MASK (0x2000000UL)
  1122. #define SDXC_INT_STAT_ADMA_ERR_SHIFT (25U)
  1123. #define SDXC_INT_STAT_ADMA_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_ADMA_ERR_SHIFT) & SDXC_INT_STAT_ADMA_ERR_MASK)
  1124. #define SDXC_INT_STAT_ADMA_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_ADMA_ERR_MASK) >> SDXC_INT_STAT_ADMA_ERR_SHIFT)
  1125. /*
  1126. * AUTO_CMD_ERR (R/W1C)
  1127. *
  1128. * Auto CMD Error
  1129. * This error status is used by Auto CMD12 and Auto CMD23 in SD/eMMC mode.
  1130. * This bit is set when detecting that any of the bits D00 to D05 in Auto CMD Error Status register has changed from 0 to 1.
  1131. * D07 is effective in case of Auto CMD12. Auto CMD Error Status register is valid while this bit is set to 1 and may be cleared by clearing of this bit.
  1132. * Values:
  1133. * 0x0 (FALSE): No error
  1134. * 0x1 (TRUE): Error
  1135. */
  1136. #define SDXC_INT_STAT_AUTO_CMD_ERR_MASK (0x1000000UL)
  1137. #define SDXC_INT_STAT_AUTO_CMD_ERR_SHIFT (24U)
  1138. #define SDXC_INT_STAT_AUTO_CMD_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_AUTO_CMD_ERR_SHIFT) & SDXC_INT_STAT_AUTO_CMD_ERR_MASK)
  1139. #define SDXC_INT_STAT_AUTO_CMD_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_AUTO_CMD_ERR_MASK) >> SDXC_INT_STAT_AUTO_CMD_ERR_SHIFT)
  1140. /*
  1141. * CUR_LMT_ERR (R/W1C)
  1142. *
  1143. * Current Limit Error
  1144. * By setting the SD Bus Power bit in the Power Control register, the Host Controller is requested to supply power for the SD Bus.
  1145. * If the Host Controller supports the Current Limit function, it can be protected from an illegal card by stopping power supply to the card in which case this bit indicates a failure status.
  1146. * A reading of 1 for this bit means that the Host Controller is not supplying power to the SD card due to some failure.
  1147. * A reading of 0 for this bit means that the Host Controller is supplying power and no error has occurred.
  1148. * The Host Controller may require some sampling time to detect the current limit.
  1149. * SDXC Host Controller does not support this function, this bit is always set to 0.
  1150. * Values:
  1151. * 0x0 (FALSE): No error
  1152. * 0x1 (TRUE): Power Fail
  1153. */
  1154. #define SDXC_INT_STAT_CUR_LMT_ERR_MASK (0x800000UL)
  1155. #define SDXC_INT_STAT_CUR_LMT_ERR_SHIFT (23U)
  1156. #define SDXC_INT_STAT_CUR_LMT_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CUR_LMT_ERR_SHIFT) & SDXC_INT_STAT_CUR_LMT_ERR_MASK)
  1157. #define SDXC_INT_STAT_CUR_LMT_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CUR_LMT_ERR_MASK) >> SDXC_INT_STAT_CUR_LMT_ERR_SHIFT)
  1158. /*
  1159. * DATA_END_BIT_ERR (R/W1C)
  1160. *
  1161. * Data End Bit Error
  1162. * This error occurs in SD/eMMC mode either when detecting 0 at the end bit position of read data that uses the DAT line or at the end bit position of the CRC status.
  1163. * Values:
  1164. * 0x0 (FALSE): No error
  1165. * 0x1 (TRUE): Error
  1166. */
  1167. #define SDXC_INT_STAT_DATA_END_BIT_ERR_MASK (0x400000UL)
  1168. #define SDXC_INT_STAT_DATA_END_BIT_ERR_SHIFT (22U)
  1169. #define SDXC_INT_STAT_DATA_END_BIT_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_DATA_END_BIT_ERR_SHIFT) & SDXC_INT_STAT_DATA_END_BIT_ERR_MASK)
  1170. #define SDXC_INT_STAT_DATA_END_BIT_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_DATA_END_BIT_ERR_MASK) >> SDXC_INT_STAT_DATA_END_BIT_ERR_SHIFT)
  1171. /*
  1172. * DATA_CRC_ERR (R/W1C)
  1173. *
  1174. * Data CRC Error
  1175. * This error occurs in SD/eMMC mode when detecting CRC error when transferring read data which uses the DAT line,
  1176. * when detecting the Write CRC status having a value of other than 010 or when write CRC status timeout.
  1177. * Values:
  1178. * 0x0 (FALSE): No error
  1179. * 0x1 (TRUE): Error
  1180. */
  1181. #define SDXC_INT_STAT_DATA_CRC_ERR_MASK (0x200000UL)
  1182. #define SDXC_INT_STAT_DATA_CRC_ERR_SHIFT (21U)
  1183. #define SDXC_INT_STAT_DATA_CRC_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_DATA_CRC_ERR_SHIFT) & SDXC_INT_STAT_DATA_CRC_ERR_MASK)
  1184. #define SDXC_INT_STAT_DATA_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_DATA_CRC_ERR_MASK) >> SDXC_INT_STAT_DATA_CRC_ERR_SHIFT)
  1185. /*
  1186. * DATA_TOUT_ERR (R/W1C)
  1187. *
  1188. * Data Timeout Error
  1189. * This bit is set in SD/eMMC mode when detecting one of the following timeout conditions:
  1190. * Busy timeout for R1b, R5b type
  1191. * Busy timeout after Write CRC status
  1192. * Write CRC Status timeout
  1193. * Read Data timeout
  1194. * Values:
  1195. * 0x0 (FALSE): No error
  1196. * 0x1 (TRUE): Time out
  1197. */
  1198. #define SDXC_INT_STAT_DATA_TOUT_ERR_MASK (0x100000UL)
  1199. #define SDXC_INT_STAT_DATA_TOUT_ERR_SHIFT (20U)
  1200. #define SDXC_INT_STAT_DATA_TOUT_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_DATA_TOUT_ERR_SHIFT) & SDXC_INT_STAT_DATA_TOUT_ERR_MASK)
  1201. #define SDXC_INT_STAT_DATA_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_DATA_TOUT_ERR_MASK) >> SDXC_INT_STAT_DATA_TOUT_ERR_SHIFT)
  1202. /*
  1203. * CMD_IDX_ERR (R/W1C)
  1204. *
  1205. * Command Index Error
  1206. * This bit is set if a Command Index error occurs in the command respons in SD/eMMC mode.
  1207. * Values:
  1208. * 0x0 (FALSE): No error
  1209. * 0x1 (TRUE): Error
  1210. */
  1211. #define SDXC_INT_STAT_CMD_IDX_ERR_MASK (0x80000UL)
  1212. #define SDXC_INT_STAT_CMD_IDX_ERR_SHIFT (19U)
  1213. #define SDXC_INT_STAT_CMD_IDX_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CMD_IDX_ERR_SHIFT) & SDXC_INT_STAT_CMD_IDX_ERR_MASK)
  1214. #define SDXC_INT_STAT_CMD_IDX_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CMD_IDX_ERR_MASK) >> SDXC_INT_STAT_CMD_IDX_ERR_SHIFT)
  1215. /*
  1216. * CMD_END_BIT_ERR (R/W1C)
  1217. *
  1218. * Command End Bit Error
  1219. * This bit is set when detecting that the end bit of a command response is 0 in SD/eMMC mode.
  1220. * Values:
  1221. * 0x0 (FALSE): No error
  1222. * 0x1 (TRUE): End Bit error generated
  1223. */
  1224. #define SDXC_INT_STAT_CMD_END_BIT_ERR_MASK (0x40000UL)
  1225. #define SDXC_INT_STAT_CMD_END_BIT_ERR_SHIFT (18U)
  1226. #define SDXC_INT_STAT_CMD_END_BIT_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CMD_END_BIT_ERR_SHIFT) & SDXC_INT_STAT_CMD_END_BIT_ERR_MASK)
  1227. #define SDXC_INT_STAT_CMD_END_BIT_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CMD_END_BIT_ERR_MASK) >> SDXC_INT_STAT_CMD_END_BIT_ERR_SHIFT)
  1228. /*
  1229. * CMD_CRC_ERR (R/W1C)
  1230. *
  1231. * Command CRC Error
  1232. * Command CRC Error is generated in SD/eMMC mode for following two cases.
  1233. * If a response is returned and the Command Timeout Error is set to 0 (indicating no timeout), this bit is set to 1 when detecting a CRC error in the command response.
  1234. * The Host Controller detects a CMD line conflict by monitoring the CMD line when a command is issued.
  1235. * If the Host Controller drives the CMD line to 1 level,
  1236. * but detects 0 level on the CMD line at the next SD clock edge, then the Host Controller aborts the command (stop driving CMD line) and set this bit to 1.
  1237. * The Command Timeout Error is also set to 1 to distinguish a CMD line conflict.
  1238. * Values:
  1239. * 0x0 (FALSE): No error
  1240. * 0x1 (TRUE): CRC error generated
  1241. */
  1242. #define SDXC_INT_STAT_CMD_CRC_ERR_MASK (0x20000UL)
  1243. #define SDXC_INT_STAT_CMD_CRC_ERR_SHIFT (17U)
  1244. #define SDXC_INT_STAT_CMD_CRC_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CMD_CRC_ERR_SHIFT) & SDXC_INT_STAT_CMD_CRC_ERR_MASK)
  1245. #define SDXC_INT_STAT_CMD_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CMD_CRC_ERR_MASK) >> SDXC_INT_STAT_CMD_CRC_ERR_SHIFT)
  1246. /*
  1247. * CMD_TOUT_ERR (R/W1C)
  1248. *
  1249. * Command Timeout Error
  1250. * In SD/eMMC Mode,this bit is set only if no response is returned within 64 SD clock cycles from the end bit of the command.
  1251. * If the Host Controller detects a CMD line conflict, along with Command CRC Error bit, this bit is set to 1, without waiting for 64 SD/eMMC card clock cycles.
  1252. * Values:
  1253. * 0x0 (FALSE): No error
  1254. * 0x1 (TRUE): Time out
  1255. */
  1256. #define SDXC_INT_STAT_CMD_TOUT_ERR_MASK (0x10000UL)
  1257. #define SDXC_INT_STAT_CMD_TOUT_ERR_SHIFT (16U)
  1258. #define SDXC_INT_STAT_CMD_TOUT_ERR_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CMD_TOUT_ERR_SHIFT) & SDXC_INT_STAT_CMD_TOUT_ERR_MASK)
  1259. #define SDXC_INT_STAT_CMD_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CMD_TOUT_ERR_MASK) >> SDXC_INT_STAT_CMD_TOUT_ERR_SHIFT)
  1260. /*
  1261. * ERR_INTERRUPT (RO)
  1262. *
  1263. * Error Interrupt
  1264. * If any of the bits in the Error Interrupt Status register are set, then this bit is set.
  1265. * Values:
  1266. * 0x0 (FALSE): No Error
  1267. * 0x1 (TRUE): Error
  1268. */
  1269. #define SDXC_INT_STAT_ERR_INTERRUPT_MASK (0x8000U)
  1270. #define SDXC_INT_STAT_ERR_INTERRUPT_SHIFT (15U)
  1271. #define SDXC_INT_STAT_ERR_INTERRUPT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_ERR_INTERRUPT_MASK) >> SDXC_INT_STAT_ERR_INTERRUPT_SHIFT)
  1272. /*
  1273. * CQE_EVENT (R/W1C)
  1274. *
  1275. * Command Queuing Event
  1276. * This status is set if Command Queuing/Crypto related event has occurred in eMMC/SD mode. Read CQHCI's CQIS/CRNQIS register for more details.
  1277. * Values:
  1278. * 0x0 (FALSE): No Event
  1279. * 0x1 (TRUE): Command Queuing Event is detected
  1280. */
  1281. #define SDXC_INT_STAT_CQE_EVENT_MASK (0x4000U)
  1282. #define SDXC_INT_STAT_CQE_EVENT_SHIFT (14U)
  1283. #define SDXC_INT_STAT_CQE_EVENT_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CQE_EVENT_SHIFT) & SDXC_INT_STAT_CQE_EVENT_MASK)
  1284. #define SDXC_INT_STAT_CQE_EVENT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CQE_EVENT_MASK) >> SDXC_INT_STAT_CQE_EVENT_SHIFT)
  1285. /*
  1286. * FX_EVENT (RO)
  1287. *
  1288. * FX Event
  1289. * This status is set when R[14] of response register is set to 1 and Response Type R1/R5 is set to 0 in Transfer Mode register. This interrupt is used with response check function.
  1290. * Values:
  1291. * 0x0 (FALSE): No Event
  1292. * 0x1 (TRUE): FX Event is detected
  1293. */
  1294. #define SDXC_INT_STAT_FX_EVENT_MASK (0x2000U)
  1295. #define SDXC_INT_STAT_FX_EVENT_SHIFT (13U)
  1296. #define SDXC_INT_STAT_FX_EVENT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_FX_EVENT_MASK) >> SDXC_INT_STAT_FX_EVENT_SHIFT)
  1297. /*
  1298. * RE_TUNE_EVENT (RO)
  1299. *
  1300. * Re-tuning Event
  1301. * This bit is set if the Re-Tuning Request changes from 0 to 1. Re-Tuning request is not supported.
  1302. */
  1303. #define SDXC_INT_STAT_RE_TUNE_EVENT_MASK (0x1000U)
  1304. #define SDXC_INT_STAT_RE_TUNE_EVENT_SHIFT (12U)
  1305. #define SDXC_INT_STAT_RE_TUNE_EVENT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_RE_TUNE_EVENT_MASK) >> SDXC_INT_STAT_RE_TUNE_EVENT_SHIFT)
  1306. /*
  1307. * CARD_INTERRUPT (RO)
  1308. *
  1309. * Card Interrupt
  1310. * This bit reflects the synchronized value of:
  1311. * DAT[1] Interrupt Input for SD Mode
  1312. * DAT[2] Interrupt Input for UHS-II Mode
  1313. * Values:
  1314. * 0x0 (FALSE): No Card Interrupt
  1315. * 0x1 (TRUE): Generate Card Interrupt
  1316. */
  1317. #define SDXC_INT_STAT_CARD_INTERRUPT_MASK (0x100U)
  1318. #define SDXC_INT_STAT_CARD_INTERRUPT_SHIFT (8U)
  1319. #define SDXC_INT_STAT_CARD_INTERRUPT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CARD_INTERRUPT_MASK) >> SDXC_INT_STAT_CARD_INTERRUPT_SHIFT)
  1320. /*
  1321. * CARD_REMOVAL (R/W1C)
  1322. *
  1323. * Card Removal
  1324. * This bit is set if the Card Inserted in the Present State register changes from 1 to 0.
  1325. * Values:
  1326. * 0x0 (FALSE): Card state stable or Debouncing
  1327. * 0x1 (TRUE): Card Removed
  1328. */
  1329. #define SDXC_INT_STAT_CARD_REMOVAL_MASK (0x80U)
  1330. #define SDXC_INT_STAT_CARD_REMOVAL_SHIFT (7U)
  1331. #define SDXC_INT_STAT_CARD_REMOVAL_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CARD_REMOVAL_SHIFT) & SDXC_INT_STAT_CARD_REMOVAL_MASK)
  1332. #define SDXC_INT_STAT_CARD_REMOVAL_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CARD_REMOVAL_MASK) >> SDXC_INT_STAT_CARD_REMOVAL_SHIFT)
  1333. /*
  1334. * CARD_INSERTION (R/W1C)
  1335. *
  1336. * Card Insertion
  1337. * This bit is set if the Card Inserted in the Present State register changes from 0 to 1.
  1338. * Values:
  1339. * 0x0 (FALSE): Card state stable or Debouncing
  1340. * 0x1 (TRUE): Card Inserted
  1341. */
  1342. #define SDXC_INT_STAT_CARD_INSERTION_MASK (0x40U)
  1343. #define SDXC_INT_STAT_CARD_INSERTION_SHIFT (6U)
  1344. #define SDXC_INT_STAT_CARD_INSERTION_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CARD_INSERTION_SHIFT) & SDXC_INT_STAT_CARD_INSERTION_MASK)
  1345. #define SDXC_INT_STAT_CARD_INSERTION_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CARD_INSERTION_MASK) >> SDXC_INT_STAT_CARD_INSERTION_SHIFT)
  1346. /*
  1347. * BUF_RD_READY (R/W1C)
  1348. *
  1349. * Buffer Read Ready
  1350. * This bit is set if the Buffer Read Enable changes from 0 to 1.
  1351. * Values:
  1352. * 0x0 (FALSE): Not ready to read buffer
  1353. * 0x1 (TRUE): Ready to read buffer
  1354. */
  1355. #define SDXC_INT_STAT_BUF_RD_READY_MASK (0x20U)
  1356. #define SDXC_INT_STAT_BUF_RD_READY_SHIFT (5U)
  1357. #define SDXC_INT_STAT_BUF_RD_READY_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_BUF_RD_READY_SHIFT) & SDXC_INT_STAT_BUF_RD_READY_MASK)
  1358. #define SDXC_INT_STAT_BUF_RD_READY_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_BUF_RD_READY_MASK) >> SDXC_INT_STAT_BUF_RD_READY_SHIFT)
  1359. /*
  1360. * BUF_WR_READY (R/W1C)
  1361. *
  1362. * Buffer Write Ready
  1363. * This bit is set if the Buffer Write Enable changes from 0 to 1.
  1364. * Values:
  1365. * 0x0 (FALSE): Not ready to write buffer
  1366. * 0x1 (TRUE): Ready to write buffer
  1367. */
  1368. #define SDXC_INT_STAT_BUF_WR_READY_MASK (0x10U)
  1369. #define SDXC_INT_STAT_BUF_WR_READY_SHIFT (4U)
  1370. #define SDXC_INT_STAT_BUF_WR_READY_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_BUF_WR_READY_SHIFT) & SDXC_INT_STAT_BUF_WR_READY_MASK)
  1371. #define SDXC_INT_STAT_BUF_WR_READY_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_BUF_WR_READY_MASK) >> SDXC_INT_STAT_BUF_WR_READY_SHIFT)
  1372. /*
  1373. * DMA_INTERRUPT (R/W1C)
  1374. *
  1375. * DMA Interrupt
  1376. * This bit is set if the Host Controller detects the SDMA Buffer Boundary during transfer.
  1377. * In case of ADMA, by setting the Int field in the descriptor table, the Host controller generates this interrupt.
  1378. * This interrupt is not generated after a Transfer Complete.
  1379. * Values:
  1380. * 0x0 (FALSE): No DMA Interrupt
  1381. * 0x1 (TRUE): DMA Interrupt is generated
  1382. */
  1383. #define SDXC_INT_STAT_DMA_INTERRUPT_MASK (0x8U)
  1384. #define SDXC_INT_STAT_DMA_INTERRUPT_SHIFT (3U)
  1385. #define SDXC_INT_STAT_DMA_INTERRUPT_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_DMA_INTERRUPT_SHIFT) & SDXC_INT_STAT_DMA_INTERRUPT_MASK)
  1386. #define SDXC_INT_STAT_DMA_INTERRUPT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_DMA_INTERRUPT_MASK) >> SDXC_INT_STAT_DMA_INTERRUPT_SHIFT)
  1387. /*
  1388. * BGAP_EVENT (R/W1C)
  1389. *
  1390. * Block Gap Event
  1391. * This bit is set when both read/write transaction is stopped at block gap due to a Stop at Block Gap Request.
  1392. * Values:
  1393. * 0x0 (FALSE): No Block Gap Event
  1394. * 0x1 (TRUE): Transaction stopped at block gap
  1395. */
  1396. #define SDXC_INT_STAT_BGAP_EVENT_MASK (0x4U)
  1397. #define SDXC_INT_STAT_BGAP_EVENT_SHIFT (2U)
  1398. #define SDXC_INT_STAT_BGAP_EVENT_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_BGAP_EVENT_SHIFT) & SDXC_INT_STAT_BGAP_EVENT_MASK)
  1399. #define SDXC_INT_STAT_BGAP_EVENT_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_BGAP_EVENT_MASK) >> SDXC_INT_STAT_BGAP_EVENT_SHIFT)
  1400. /*
  1401. * XFER_COMPLETE (R/W1C)
  1402. *
  1403. * Transfer Complete
  1404. * This bit is set when a read/write transfer and a command with status busy is completed.
  1405. * Values:
  1406. * 0x0 (FALSE): Not complete
  1407. * 0x1 (TRUE): Command execution is completed
  1408. */
  1409. #define SDXC_INT_STAT_XFER_COMPLETE_MASK (0x2U)
  1410. #define SDXC_INT_STAT_XFER_COMPLETE_SHIFT (1U)
  1411. #define SDXC_INT_STAT_XFER_COMPLETE_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_XFER_COMPLETE_SHIFT) & SDXC_INT_STAT_XFER_COMPLETE_MASK)
  1412. #define SDXC_INT_STAT_XFER_COMPLETE_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_XFER_COMPLETE_MASK) >> SDXC_INT_STAT_XFER_COMPLETE_SHIFT)
  1413. /*
  1414. * CMD_COMPLETE (R/W1C)
  1415. *
  1416. * Command Complete
  1417. * In an SD/eMMC Mode, this bit is set when the end bit of a response except for Auto CMD12 and Auto CMD23.
  1418. * This interrupt is not generated when the Response Interrupt Disable in Transfer Mode Register is set to 1.
  1419. * Values:
  1420. * 0x0 (FALSE): No command complete
  1421. * 0x1 (TRUE): Command Complete
  1422. */
  1423. #define SDXC_INT_STAT_CMD_COMPLETE_MASK (0x1U)
  1424. #define SDXC_INT_STAT_CMD_COMPLETE_SHIFT (0U)
  1425. #define SDXC_INT_STAT_CMD_COMPLETE_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_CMD_COMPLETE_SHIFT) & SDXC_INT_STAT_CMD_COMPLETE_MASK)
  1426. #define SDXC_INT_STAT_CMD_COMPLETE_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_CMD_COMPLETE_MASK) >> SDXC_INT_STAT_CMD_COMPLETE_SHIFT)
  1427. /* Bitfield definition for register: INT_STAT_EN */
  1428. /*
  1429. * BOOT_ACK_ERR_STAT_EN (RW)
  1430. *
  1431. * Boot Acknowledgment Error (eMMC Mode only)
  1432. * Setting this bit to 1 enables setting of Boot Acknowledgment Error in Error Interrupt Status register (ERROR_INT_STAT_R).
  1433. * Values:
  1434. * 0x0 (FALSE): Masked
  1435. * 0x1 (TRUE): Enabled
  1436. */
  1437. #define SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_MASK (0x10000000UL)
  1438. #define SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_SHIFT (28U)
  1439. #define SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_MASK)
  1440. #define SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_BOOT_ACK_ERR_STAT_EN_SHIFT)
  1441. /*
  1442. * RESP_ERR_STAT_EN (RW)
  1443. *
  1444. * Response Error Status Enable (SD Mode only)
  1445. * Values:
  1446. * 0x0 (FALSE): Masked
  1447. * 0x1 (TRUE): Enabled
  1448. */
  1449. #define SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_MASK (0x8000000UL)
  1450. #define SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_SHIFT (27U)
  1451. #define SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_MASK)
  1452. #define SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_RESP_ERR_STAT_EN_SHIFT)
  1453. /*
  1454. * TUNING_ERR_STAT_EN (RW)
  1455. *
  1456. * Tuning Error Status Enable (UHS-I Mode only)
  1457. * Values:
  1458. * 0x0 (FALSE): Masked
  1459. * 0x1 (TRUE): Enabled
  1460. */
  1461. #define SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_MASK (0x4000000UL)
  1462. #define SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_SHIFT (26U)
  1463. #define SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_MASK)
  1464. #define SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_TUNING_ERR_STAT_EN_SHIFT)
  1465. /*
  1466. * ADMA_ERR_STAT_EN (RW)
  1467. *
  1468. * ADMA Error Status Enable
  1469. * Values:
  1470. * 0x0 (FALSE): Masked
  1471. * 0x1 (TRUE): Enabled
  1472. */
  1473. #define SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_MASK (0x2000000UL)
  1474. #define SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_SHIFT (25U)
  1475. #define SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_MASK)
  1476. #define SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_ADMA_ERR_STAT_EN_SHIFT)
  1477. /*
  1478. * AUTO_CMD_ERR_STAT_EN (RW)
  1479. *
  1480. * Auto CMD Error Status Enable (SD/eMMC Mode only).
  1481. * Values:
  1482. * 0x0 (FALSE): Masked
  1483. * 0x1 (TRUE): Enabled
  1484. */
  1485. #define SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_MASK (0x1000000UL)
  1486. #define SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_SHIFT (24U)
  1487. #define SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_MASK)
  1488. #define SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_AUTO_CMD_ERR_STAT_EN_SHIFT)
  1489. /*
  1490. * CUR_LMT_ERR_STAT_EN (RW)
  1491. *
  1492. * Current Limit Error Status Enable
  1493. * Values:
  1494. * 0x0 (FALSE): Masked
  1495. * 0x1 (TRUE): Enabled
  1496. */
  1497. #define SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_MASK (0x800000UL)
  1498. #define SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_SHIFT (23U)
  1499. #define SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_MASK)
  1500. #define SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CUR_LMT_ERR_STAT_EN_SHIFT)
  1501. /*
  1502. * DATA_END_BIT_ERR_STAT_EN (RW)
  1503. *
  1504. * Data End Bit Error Status Enable (SD/eMMC Mode only).
  1505. * Values:
  1506. * 0x0 (FALSE): Masked
  1507. * 0x1 (TRUE): Enabled
  1508. */
  1509. #define SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_MASK (0x400000UL)
  1510. #define SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_SHIFT (22U)
  1511. #define SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_MASK)
  1512. #define SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_DATA_END_BIT_ERR_STAT_EN_SHIFT)
  1513. /*
  1514. * DATA_CRC_ERR_STAT_EN (RW)
  1515. *
  1516. * Data CRC Error Status Enable (SD/eMMC Mode only)
  1517. * Values:
  1518. * 0x0 (FALSE): Masked
  1519. * 0x1 (TRUE): Enabled
  1520. */
  1521. #define SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_MASK (0x200000UL)
  1522. #define SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_SHIFT (21U)
  1523. #define SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_MASK)
  1524. #define SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_DATA_CRC_ERR_STAT_EN_SHIFT)
  1525. /*
  1526. * DATA_TOUT_ERR_STAT_EN (RW)
  1527. *
  1528. * Data Timeout Error Status Enable (SD/eMMC Mode only)
  1529. * Values:
  1530. * 0x0 (FALSE): Masked
  1531. * 0x1 (TRUE): Enabled
  1532. */
  1533. #define SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_MASK (0x100000UL)
  1534. #define SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_SHIFT (20U)
  1535. #define SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_MASK)
  1536. #define SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_DATA_TOUT_ERR_STAT_EN_SHIFT)
  1537. /*
  1538. * CMD_IDX_ERR_STAT_EN (RW)
  1539. *
  1540. * Command Index Error Status Enable (SD/eMMC Mode only)
  1541. * Values:
  1542. * 0x0 (FALSE): Masked
  1543. * 0x1 (TRUE): Enabled
  1544. */
  1545. #define SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_MASK (0x80000UL)
  1546. #define SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_SHIFT (19U)
  1547. #define SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_MASK)
  1548. #define SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CMD_IDX_ERR_STAT_EN_SHIFT)
  1549. /*
  1550. * CMD_END_BIT_ERR_STAT_EN (RW)
  1551. *
  1552. * Command End Bit Error Status Enable (SD/eMMC Mode only)
  1553. * Values:
  1554. * 0x0 (FALSE): Masked
  1555. * 0x1 (TRUE): Enabled
  1556. */
  1557. #define SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_MASK (0x40000UL)
  1558. #define SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_SHIFT (18U)
  1559. #define SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_MASK)
  1560. #define SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CMD_END_BIT_ERR_STAT_EN_SHIFT)
  1561. /*
  1562. * CMD_CRC_ERR_STAT_EN (RW)
  1563. *
  1564. * Command CRC Error Status Enable (SD/eMMC Mode only)
  1565. * Values:
  1566. * 0x0 (FALSE): Masked
  1567. * 0x1 (TRUE): Enabled
  1568. */
  1569. #define SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_MASK (0x20000UL)
  1570. #define SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_SHIFT (17U)
  1571. #define SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_MASK)
  1572. #define SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CMD_CRC_ERR_STAT_EN_SHIFT)
  1573. /*
  1574. * CMD_TOUT_ERR_STAT_EN (RW)
  1575. *
  1576. * Command Timeout Error Status Enable (SD/eMMC Mode only).
  1577. * Values:
  1578. * 0x0 (FALSE): Masked
  1579. * 0x1 (TRUE): Enabled
  1580. */
  1581. #define SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_MASK (0x10000UL)
  1582. #define SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_SHIFT (16U)
  1583. #define SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_MASK)
  1584. #define SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CMD_TOUT_ERR_STAT_EN_SHIFT)
  1585. /*
  1586. * CQE_EVENT_STAT_EN (RW)
  1587. *
  1588. * CQE Event Status Enable
  1589. * Values:
  1590. * 0x0 (FALSE): Masked
  1591. * 0x1 (TRUE): Enabled
  1592. */
  1593. #define SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_MASK (0x4000U)
  1594. #define SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_SHIFT (14U)
  1595. #define SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_MASK)
  1596. #define SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CQE_EVENT_STAT_EN_SHIFT)
  1597. /*
  1598. * FX_EVENT_STAT_EN (RW)
  1599. *
  1600. * FX Event Status Enable
  1601. * This bit is added from Version 4.10.
  1602. * Values:
  1603. * 0x0 (FALSE): Masked
  1604. * 0x1 (TRUE): Enabled
  1605. */
  1606. #define SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_MASK (0x2000U)
  1607. #define SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_SHIFT (13U)
  1608. #define SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_MASK)
  1609. #define SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_FX_EVENT_STAT_EN_SHIFT)
  1610. /*
  1611. * RE_TUNE_EVENT_STAT_EN (RW)
  1612. *
  1613. * Re-Tuning Event (UHS-I only) Status Enable
  1614. * Values:
  1615. * 0x0 (FALSE): Masked
  1616. * 0x1 (TRUE): Enabled
  1617. */
  1618. #define SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_MASK (0x1000U)
  1619. #define SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_SHIFT (12U)
  1620. #define SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_MASK)
  1621. #define SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_RE_TUNE_EVENT_STAT_EN_SHIFT)
  1622. /*
  1623. * CARD_INTERRUPT_STAT_EN (RW)
  1624. *
  1625. * Card Interrupt Status Enable
  1626. * If this bit is set to 0, the Host Controller clears the interrupt request to the System.
  1627. * The Card Interrupt detection is stopped when this bit is cleared and restarted when this bit is set to 1.
  1628. * The Host Driver may clear the Card Interrupt Status Enable before servicing the Card Interrupt and may set this bit again after all interrupt requests from the card are cleared to prevent inadvertent interrupts.
  1629. * By setting this bit to 0, interrupt input must be masked by implementation so that the interrupt input is not affected by external signal in any state (for example, floating).
  1630. * Values:
  1631. * 0x0 (FALSE): Masked
  1632. * 0x1 (TRUE): Enabled
  1633. */
  1634. #define SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_MASK (0x100U)
  1635. #define SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_SHIFT (8U)
  1636. #define SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_MASK)
  1637. #define SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CARD_INTERRUPT_STAT_EN_SHIFT)
  1638. /*
  1639. * CARD_REMOVAL_STAT_EN (RW)
  1640. *
  1641. * Card Removal Status Enable
  1642. * Values:
  1643. * 0x0 (FALSE): Masked
  1644. * 0x1 (TRUE): Enabled
  1645. */
  1646. #define SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_MASK (0x80U)
  1647. #define SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_SHIFT (7U)
  1648. #define SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_MASK)
  1649. #define SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CARD_REMOVAL_STAT_EN_SHIFT)
  1650. /*
  1651. * CARD_INSERTION_STAT_EN (RW)
  1652. *
  1653. * Card Insertion Status Enable
  1654. * Values:
  1655. * 0x0 (FALSE): Masked
  1656. * 0x1 (TRUE): Enabled
  1657. */
  1658. #define SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_MASK (0x40U)
  1659. #define SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_SHIFT (6U)
  1660. #define SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_MASK)
  1661. #define SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CARD_INSERTION_STAT_EN_SHIFT)
  1662. /*
  1663. * BUF_RD_READY_STAT_EN (RW)
  1664. *
  1665. * Buffer Read Ready Status Enable
  1666. * Values:
  1667. * 0x0 (FALSE): Masked
  1668. * 0x1 (TRUE): Enabled
  1669. */
  1670. #define SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_MASK (0x20U)
  1671. #define SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_SHIFT (5U)
  1672. #define SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_MASK)
  1673. #define SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_MASK) >> SDXC_INT_STAT_EN_BUF_RD_READY_STAT_EN_SHIFT)
  1674. /*
  1675. * BUF_WR_READY_STAT_EN (RW)
  1676. *
  1677. * Buffer Write Ready Status Enable
  1678. * Values:
  1679. * 0x0 (FALSE): Masked
  1680. * 0x1 (TRUE): Enabled
  1681. */
  1682. #define SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_MASK (0x10U)
  1683. #define SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_SHIFT (4U)
  1684. #define SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_MASK)
  1685. #define SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_MASK) >> SDXC_INT_STAT_EN_BUF_WR_READY_STAT_EN_SHIFT)
  1686. /*
  1687. * DMA_INTERRUPT_STAT_EN (RW)
  1688. *
  1689. * DMA Interrupt Status Enable
  1690. * Values:
  1691. * 0x0 (FALSE): Masked
  1692. * 0x1 (TRUE): Enabled
  1693. */
  1694. #define SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_MASK (0x8U)
  1695. #define SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_SHIFT (3U)
  1696. #define SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_MASK)
  1697. #define SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_DMA_INTERRUPT_STAT_EN_SHIFT)
  1698. /*
  1699. * BGAP_EVENT_STAT_EN (RW)
  1700. *
  1701. * Block Gap Event Status Enable
  1702. * Values:
  1703. * 0x0 (FALSE): Masked
  1704. * 0x1 (TRUE): Enabled
  1705. */
  1706. #define SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_MASK (0x4U)
  1707. #define SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_SHIFT (2U)
  1708. #define SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_MASK)
  1709. #define SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_MASK) >> SDXC_INT_STAT_EN_BGAP_EVENT_STAT_EN_SHIFT)
  1710. /*
  1711. * XFER_COMPLETE_STAT_EN (RW)
  1712. *
  1713. * Transfer Complete Status Enable
  1714. * Values:
  1715. * 0x0 (FALSE): Masked
  1716. * 0x1 (TRUE): Enabled
  1717. */
  1718. #define SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_MASK (0x2U)
  1719. #define SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_SHIFT (1U)
  1720. #define SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_MASK)
  1721. #define SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_MASK) >> SDXC_INT_STAT_EN_XFER_COMPLETE_STAT_EN_SHIFT)
  1722. /*
  1723. * CMD_COMPLETE_STAT_EN (RW)
  1724. *
  1725. * Command Complete Status Enable
  1726. * Values:
  1727. * 0x0 (FALSE): Masked
  1728. * 0x1 (TRUE): Enabled
  1729. */
  1730. #define SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_MASK (0x1U)
  1731. #define SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_SHIFT (0U)
  1732. #define SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_SET(x) (((uint32_t)(x) << SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_SHIFT) & SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_MASK)
  1733. #define SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_GET(x) (((uint32_t)(x) & SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_MASK) >> SDXC_INT_STAT_EN_CMD_COMPLETE_STAT_EN_SHIFT)
  1734. /* Bitfield definition for register: INT_SIGNAL_EN */
  1735. /*
  1736. * BOOT_ACK_ERR_SIGNAL_EN (RW)
  1737. *
  1738. * Boot Acknowledgment Error (eMMC Mode only).
  1739. * Setting this bit to 1 enables generating interrupt signal when Boot Acknowledgement Error in Error Interrupt Status register is set.
  1740. * Values:
  1741. * 0x0 (FALSE): Masked
  1742. * 0x1 (TRUE): Enabled
  1743. */
  1744. #define SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_MASK (0x10000000UL)
  1745. #define SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_SHIFT (28U)
  1746. #define SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_MASK)
  1747. #define SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_BOOT_ACK_ERR_SIGNAL_EN_SHIFT)
  1748. /*
  1749. * RESP_ERR_SIGNAL_EN (RW)
  1750. *
  1751. * Response Error Signal Enable (SD Mode only)
  1752. * Values:
  1753. * 0x0 (FALSE): Masked
  1754. * 0x1 (TRUE): Enabled
  1755. */
  1756. #define SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_MASK (0x8000000UL)
  1757. #define SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_SHIFT (27U)
  1758. #define SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_MASK)
  1759. #define SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_RESP_ERR_SIGNAL_EN_SHIFT)
  1760. /*
  1761. * TUNING_ERR_SIGNAL_EN (RW)
  1762. *
  1763. * Tuning Error Signal Enable (UHS-I Mode only)
  1764. * Values:
  1765. * 0x0 (FALSE): Masked
  1766. * 0x1 (TRUE): Enabled
  1767. */
  1768. #define SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_MASK (0x4000000UL)
  1769. #define SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_SHIFT (26U)
  1770. #define SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_MASK)
  1771. #define SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_TUNING_ERR_SIGNAL_EN_SHIFT)
  1772. /*
  1773. * ADMA_ERR_SIGNAL_EN (RW)
  1774. *
  1775. * ADMA Error Signal Enable
  1776. * Values:
  1777. * 0x0 (FALSE): Masked
  1778. * 0x1 (TRUE): Enabled
  1779. */
  1780. #define SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_MASK (0x2000000UL)
  1781. #define SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_SHIFT (25U)
  1782. #define SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_MASK)
  1783. #define SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_ADMA_ERR_SIGNAL_EN_SHIFT)
  1784. /*
  1785. * AUTO_CMD_ERR_SIGNAL_EN (RW)
  1786. *
  1787. * Auto CMD Error Signal Enable (SD/eMMC Mode only)
  1788. * Values:
  1789. * 0x0 (FALSE): Masked
  1790. * 0x1 (TRUE): Enabled
  1791. */
  1792. #define SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_MASK (0x1000000UL)
  1793. #define SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_SHIFT (24U)
  1794. #define SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_MASK)
  1795. #define SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_AUTO_CMD_ERR_SIGNAL_EN_SHIFT)
  1796. /*
  1797. * CUR_LMT_ERR_SIGNAL_EN (RW)
  1798. *
  1799. * Current Limit Error Signal Enable
  1800. * Values:
  1801. * 0x0 (FALSE): Masked
  1802. * 0x1 (TRUE): Enabled
  1803. */
  1804. #define SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_MASK (0x800000UL)
  1805. #define SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_SHIFT (23U)
  1806. #define SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_MASK)
  1807. #define SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CUR_LMT_ERR_SIGNAL_EN_SHIFT)
  1808. /*
  1809. * DATA_END_BIT_ERR_SIGNAL_EN (RW)
  1810. *
  1811. * Data End Bit Error Signal Enable (SD/eMMC Mode only)
  1812. * Values:
  1813. * 0x0 (FALSE): Masked
  1814. * 0x1 (TRUE): Enabled
  1815. */
  1816. #define SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_MASK (0x400000UL)
  1817. #define SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_SHIFT (22U)
  1818. #define SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_MASK)
  1819. #define SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_DATA_END_BIT_ERR_SIGNAL_EN_SHIFT)
  1820. /*
  1821. * DATA_CRC_ERR_SIGNAL_EN (RW)
  1822. *
  1823. * Data CRC Error Signal Enable (SD/eMMC Mode only)
  1824. * Values:
  1825. * 0x0 (FALSE): Masked
  1826. * 0x1 (TRUE): Enabled
  1827. */
  1828. #define SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_MASK (0x200000UL)
  1829. #define SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_SHIFT (21U)
  1830. #define SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_MASK)
  1831. #define SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_DATA_CRC_ERR_SIGNAL_EN_SHIFT)
  1832. /*
  1833. * DATA_TOUT_ERR_SIGNAL_EN (RW)
  1834. *
  1835. * Data Timeout Error Signal Enable (SD/eMMC Mode only)
  1836. * Values:
  1837. * 0x0 (FALSE): Masked
  1838. * 0x1 (TRUE): Enabled
  1839. */
  1840. #define SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_MASK (0x100000UL)
  1841. #define SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_SHIFT (20U)
  1842. #define SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_MASK)
  1843. #define SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_DATA_TOUT_ERR_SIGNAL_EN_SHIFT)
  1844. /*
  1845. * CMD_IDX_ERR_SIGNAL_EN (RW)
  1846. *
  1847. * Command Index Error Signal Enable (SD/eMMC Mode only)
  1848. * Values:
  1849. * 0x0 (FALSE): No error
  1850. * 0x1 (TRUE): Error
  1851. */
  1852. #define SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_MASK (0x80000UL)
  1853. #define SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_SHIFT (19U)
  1854. #define SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_MASK)
  1855. #define SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CMD_IDX_ERR_SIGNAL_EN_SHIFT)
  1856. /*
  1857. * CMD_END_BIT_ERR_SIGNAL_EN (RW)
  1858. *
  1859. * Command End Bit Error Signal Enable (SD/eMMC Mode only)
  1860. * Values:
  1861. * 0x0 (FALSE): Masked
  1862. * 0x1 (TRUE): Enabled
  1863. */
  1864. #define SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_MASK (0x40000UL)
  1865. #define SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_SHIFT (18U)
  1866. #define SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_MASK)
  1867. #define SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CMD_END_BIT_ERR_SIGNAL_EN_SHIFT)
  1868. /*
  1869. * CMD_CRC_ERR_SIGNAL_EN (RW)
  1870. *
  1871. * Command CRC Error Signal Enable (SD/eMMC Mode only)
  1872. * Values:
  1873. * 0x0 (FALSE): Masked
  1874. * 0x1 (TRUE): Enabled
  1875. */
  1876. #define SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_MASK (0x20000UL)
  1877. #define SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_SHIFT (17U)
  1878. #define SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_MASK)
  1879. #define SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CMD_CRC_ERR_SIGNAL_EN_SHIFT)
  1880. /*
  1881. * CMD_TOUT_ERR_SIGNAL_EN (RW)
  1882. *
  1883. * Command Timeout Error Signal Enable (SD/eMMC Mode only)
  1884. * Values:
  1885. * 0x0 (FALSE): Masked
  1886. * 0x1 (TRUE): Enabled
  1887. */
  1888. #define SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_MASK (0x10000UL)
  1889. #define SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_SHIFT (16U)
  1890. #define SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_MASK)
  1891. #define SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CMD_TOUT_ERR_SIGNAL_EN_SHIFT)
  1892. /*
  1893. * CQE_EVENT_SIGNAL_EN (RW)
  1894. *
  1895. * Command Queuing Engine Event Signal Enable
  1896. * Values:
  1897. * 0x0 (FALSE): Masked
  1898. * 0x1 (TRUE): Enabled
  1899. */
  1900. #define SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_MASK (0x4000U)
  1901. #define SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_SHIFT (14U)
  1902. #define SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_MASK)
  1903. #define SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CQE_EVENT_SIGNAL_EN_SHIFT)
  1904. /*
  1905. * FX_EVENT_SIGNAL_EN (RW)
  1906. *
  1907. * FX Event Signal Enable
  1908. * Values:
  1909. * 0x0 (FALSE): Masked
  1910. * 0x1 (TRUE): Enabled
  1911. */
  1912. #define SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_MASK (0x2000U)
  1913. #define SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_SHIFT (13U)
  1914. #define SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_MASK)
  1915. #define SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_FX_EVENT_SIGNAL_EN_SHIFT)
  1916. /*
  1917. * RE_TUNE_EVENT_SIGNAL_EN (RW)
  1918. *
  1919. * Re-Tuning Event (UHS-I only) Signal Enable.
  1920. * Values:
  1921. * 0x0 (FALSE): Masked
  1922. * 0x1 (TRUE): Enabled
  1923. */
  1924. #define SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_MASK (0x1000U)
  1925. #define SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_SHIFT (12U)
  1926. #define SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_MASK)
  1927. #define SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_RE_TUNE_EVENT_SIGNAL_EN_SHIFT)
  1928. /*
  1929. * CARD_INTERRUPT_SIGNAL_EN (RW)
  1930. *
  1931. * Card Interrupt Signal Enable
  1932. * Values:
  1933. * 0x0 (FALSE): Masked
  1934. * 0x1 (TRUE): Enabled
  1935. */
  1936. #define SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_MASK (0x100U)
  1937. #define SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_SHIFT (8U)
  1938. #define SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_MASK)
  1939. #define SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CARD_INTERRUPT_SIGNAL_EN_SHIFT)
  1940. /*
  1941. * CARD_REMOVAL_SIGNAL_EN (RW)
  1942. *
  1943. * Card Removal Signal Enable
  1944. * Values:
  1945. * 0x0 (FALSE): Masked
  1946. * 0x1 (TRUE): Enabled
  1947. */
  1948. #define SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_MASK (0x80U)
  1949. #define SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_SHIFT (7U)
  1950. #define SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_MASK)
  1951. #define SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CARD_REMOVAL_SIGNAL_EN_SHIFT)
  1952. /*
  1953. * CARD_INSERTION_SIGNAL_EN (RW)
  1954. *
  1955. * Card Insertion Signal Enable
  1956. * Values:
  1957. * 0x0 (FALSE): Masked
  1958. * 0x1 (TRUE): Enabled
  1959. */
  1960. #define SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_MASK (0x40U)
  1961. #define SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_SHIFT (6U)
  1962. #define SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_MASK)
  1963. #define SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CARD_INSERTION_SIGNAL_EN_SHIFT)
  1964. /*
  1965. * BUF_RD_READY_SIGNAL_EN (RW)
  1966. *
  1967. * Buffer Read Ready Signal Enable
  1968. * Values:
  1969. * 0x0 (FALSE): Masked
  1970. * 0x1 (TRUE): Enabled
  1971. */
  1972. #define SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_MASK (0x20U)
  1973. #define SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_SHIFT (5U)
  1974. #define SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_MASK)
  1975. #define SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_BUF_RD_READY_SIGNAL_EN_SHIFT)
  1976. /*
  1977. * BUF_WR_READY_SIGNAL_EN (RW)
  1978. *
  1979. * Buffer Write Ready Signal Enable
  1980. * Values:
  1981. * 0x0 (FALSE): Masked
  1982. * 0x1 (TRUE): Enabled
  1983. */
  1984. #define SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_MASK (0x10U)
  1985. #define SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_SHIFT (4U)
  1986. #define SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_MASK)
  1987. #define SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_BUF_WR_READY_SIGNAL_EN_SHIFT)
  1988. /*
  1989. * DMA_INTERRUPT_SIGNAL_EN (RW)
  1990. *
  1991. * DMA Interrupt Signal Enable
  1992. * Values:
  1993. * 0x0 (FALSE): Masked
  1994. * 0x1 (TRUE): Enabled
  1995. */
  1996. #define SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_MASK (0x8U)
  1997. #define SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_SHIFT (3U)
  1998. #define SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_MASK)
  1999. #define SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_DMA_INTERRUPT_SIGNAL_EN_SHIFT)
  2000. /*
  2001. * BGAP_EVENT_SIGNAL_EN (RW)
  2002. *
  2003. * Block Gap Event Signal Enable
  2004. * Values:
  2005. * 0x0 (FALSE): Masked
  2006. * 0x1 (TRUE): Enabled
  2007. */
  2008. #define SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_MASK (0x4U)
  2009. #define SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_SHIFT (2U)
  2010. #define SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_MASK)
  2011. #define SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_BGAP_EVENT_SIGNAL_EN_SHIFT)
  2012. /*
  2013. * XFER_COMPLETE_SIGNAL_EN (RW)
  2014. *
  2015. * Transfer Complete Signal Enable
  2016. * Values:
  2017. * 0x0 (FALSE): Masked
  2018. * 0x1 (TRUE): Enabled
  2019. */
  2020. #define SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_MASK (0x2U)
  2021. #define SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_SHIFT (1U)
  2022. #define SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_MASK)
  2023. #define SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_XFER_COMPLETE_SIGNAL_EN_SHIFT)
  2024. /*
  2025. * CMD_COMPLETE_SIGNAL_EN (RW)
  2026. *
  2027. * Command Complete Signal Enable
  2028. * Values:
  2029. * 0x0 (FALSE): Masked
  2030. * 0x1 (TRUE): Enabled
  2031. */
  2032. #define SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_MASK (0x1U)
  2033. #define SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_SHIFT (0U)
  2034. #define SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_SET(x) (((uint32_t)(x) << SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_SHIFT) & SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_MASK)
  2035. #define SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_GET(x) (((uint32_t)(x) & SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_MASK) >> SDXC_INT_SIGNAL_EN_CMD_COMPLETE_SIGNAL_EN_SHIFT)
  2036. /* Bitfield definition for register: AC_HOST_CTRL */
  2037. /*
  2038. * PRESET_VAL_ENABLE (RW)
  2039. *
  2040. * Preset Value Enable
  2041. * This bit enables automatic selection of SDCLK frequency and Driver strength Preset Value registers.
  2042. * When Preset Value Enable is set, SDCLK frequency generation (Frequency Select and Clock Generator Select) and the driver strength selection are performed by the controller.
  2043. * These values are selected from set of Preset Value registers based on selected speed mode.
  2044. * Values:
  2045. * 0x0 (FALSE): SDCLK and Driver Strength are controlled by Host Driver
  2046. * 0x1 (TRUE): Automatic Selection by Preset Value are Enabled
  2047. */
  2048. #define SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_MASK (0x80000000UL)
  2049. #define SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_SHIFT (31U)
  2050. #define SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_SHIFT) & SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_MASK)
  2051. #define SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_MASK) >> SDXC_AC_HOST_CTRL_PRESET_VAL_ENABLE_SHIFT)
  2052. /*
  2053. * ASYNC_INT_ENABLE (RW)
  2054. *
  2055. * Asynchronous Interrupt Enable
  2056. * This bit can be set if a card supports asynchronous interrupts and Asynchronous Interrupt Support is set to 1 in the Capabilities register.
  2057. * Values:
  2058. * 0x0 (FALSE): Disabled
  2059. * 0x1 (TRUE): Enabled
  2060. */
  2061. #define SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_MASK (0x40000000UL)
  2062. #define SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_SHIFT (30U)
  2063. #define SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_SHIFT) & SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_MASK)
  2064. #define SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_MASK) >> SDXC_AC_HOST_CTRL_ASYNC_INT_ENABLE_SHIFT)
  2065. /*
  2066. * HOST_VER4_ENABLE (RW)
  2067. *
  2068. * Host Version 4 Enable
  2069. * This bit selects either Version 3.00 compatible mode or Version 4 mode.
  2070. * Functions of following fields are modified for Host Version 4 mode:
  2071. * SDMA Address: SDMA uses ADMA System Address (05Fh-058h) instead of SDMA System Address register (003h-000h)
  2072. * ADMA2/ADMA3 selection: ADMA3 is selected by DMA select in Host Control 1 register
  2073. * 64-bit ADMA Descriptor Size: 128-bit descriptor is used instead of 96-bit descriptor when 64-bit Addressing is set to 1
  2074. * Selection of 32-bit/64-bit System Addressing: Either 32-bit or 64-bit system addressing is selected by 64-bit Addressing bit in this register
  2075. * 32-bit Block Count: SDMA System Address register (003h-000h) is modified to 32-bit Block Count register
  2076. * Note: It is recommended not to program ADMA3 Integrated Descriptor Address registers,
  2077. * UHS-II registers and Command Queuing registers (if applicable) while operating in Host version less than 4 mode (Host Version 4 Enable = 0).
  2078. * Values:
  2079. * 0x0 (FALSE): Version 3.00 compatible mode
  2080. * 0x1 (TRUE): Version 4 mode
  2081. */
  2082. #define SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_MASK (0x10000000UL)
  2083. #define SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_SHIFT (28U)
  2084. #define SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_SHIFT) & SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_MASK)
  2085. #define SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_MASK) >> SDXC_AC_HOST_CTRL_HOST_VER4_ENABLE_SHIFT)
  2086. /*
  2087. * CMD23_ENABLE (RW)
  2088. *
  2089. * CMD23 Enable
  2090. * If the card supports CMD23, this bit is set to 1. This bit is used to select Auto CMD23 or Auto CMD12 for ADMA3 data transfer.
  2091. * Values:
  2092. * 0x0 (FALSE): Auto CMD23 is disabled
  2093. * 0x1 (TRUE): Auto CMD23 is enabled
  2094. */
  2095. #define SDXC_AC_HOST_CTRL_CMD23_ENABLE_MASK (0x8000000UL)
  2096. #define SDXC_AC_HOST_CTRL_CMD23_ENABLE_SHIFT (27U)
  2097. #define SDXC_AC_HOST_CTRL_CMD23_ENABLE_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_CMD23_ENABLE_SHIFT) & SDXC_AC_HOST_CTRL_CMD23_ENABLE_MASK)
  2098. #define SDXC_AC_HOST_CTRL_CMD23_ENABLE_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_CMD23_ENABLE_MASK) >> SDXC_AC_HOST_CTRL_CMD23_ENABLE_SHIFT)
  2099. /*
  2100. * ADMA2_LEN_MODE (RW)
  2101. *
  2102. * ADMA2 Length Mode
  2103. * This bit selects ADMA2 Length mode to be either 16-bit or 26-bit.
  2104. * Values:
  2105. * 0x0 (FALSE): 16-bit Data Length Mode
  2106. * 0x1 (TRUE): 26-bit Data Length Mode
  2107. */
  2108. #define SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_MASK (0x4000000UL)
  2109. #define SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_SHIFT (26U)
  2110. #define SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_SHIFT) & SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_MASK)
  2111. #define SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_MASK) >> SDXC_AC_HOST_CTRL_ADMA2_LEN_MODE_SHIFT)
  2112. /*
  2113. * SAMPLE_CLK_SEL (RW)
  2114. *
  2115. * Sampling Clock Select
  2116. * This bit is used by the Host Controller to select the sampling clock in SD/eMMC mode to receive CMD and DAT.
  2117. * This bit is set by the tuning procedure and is valid after the completion of tuning (when Execute Tuning is cleared).
  2118. * Setting this bit to 1 means that tuning is completed successfully and setting this bit to 0 means that tuning has failed.
  2119. * The value is reflected on the sample_cclk_sel pin.
  2120. * Values:
  2121. * 0x0 (FALSE): Fixed clock is used to sample data
  2122. * 0x1 (TRUE): Tuned clock is used to sample data
  2123. */
  2124. #define SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_MASK (0x800000UL)
  2125. #define SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_SHIFT (23U)
  2126. #define SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_SHIFT) & SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_MASK)
  2127. #define SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_MASK) >> SDXC_AC_HOST_CTRL_SAMPLE_CLK_SEL_SHIFT)
  2128. /*
  2129. * EXEC_TUNING (RW)
  2130. *
  2131. * Execute Tuning
  2132. * This bit is set to 1 to start the tuning procedure in UHS-I/eMMC speed modes and this bit is automatically cleared when tuning procedure is completed.
  2133. * Values:
  2134. * 0x0 (FALSE): Not Tuned or Tuning completed
  2135. * 0x1 (TRUE): Execute Tuning
  2136. */
  2137. #define SDXC_AC_HOST_CTRL_EXEC_TUNING_MASK (0x400000UL)
  2138. #define SDXC_AC_HOST_CTRL_EXEC_TUNING_SHIFT (22U)
  2139. #define SDXC_AC_HOST_CTRL_EXEC_TUNING_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_EXEC_TUNING_SHIFT) & SDXC_AC_HOST_CTRL_EXEC_TUNING_MASK)
  2140. #define SDXC_AC_HOST_CTRL_EXEC_TUNING_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_EXEC_TUNING_MASK) >> SDXC_AC_HOST_CTRL_EXEC_TUNING_SHIFT)
  2141. /*
  2142. * SIGNALING_EN (RW)
  2143. *
  2144. * 1.8V Signaling Enable
  2145. * This bit controls voltage regulator for I/O cell in UHS-I/eMMC speed modes.
  2146. * Setting this bit from 0 to 1 starts changing the signal voltage from 3.3V to 1.8V.
  2147. * Host Controller clears this bit if switching to 1.8 signaling fails. The value is reflected on the uhs1_swvolt_en pin.
  2148. * Note: This bit must be set for all UHS-I speed modes (SDR12/SDR25/SDR50/SDR104/DDR50).
  2149. * Values:
  2150. * 0x0 (V_3_3): 3.3V Signalling
  2151. * 0x1 (V_1_8): 1.8V Signalling
  2152. */
  2153. #define SDXC_AC_HOST_CTRL_SIGNALING_EN_MASK (0x80000UL)
  2154. #define SDXC_AC_HOST_CTRL_SIGNALING_EN_SHIFT (19U)
  2155. #define SDXC_AC_HOST_CTRL_SIGNALING_EN_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_SIGNALING_EN_SHIFT) & SDXC_AC_HOST_CTRL_SIGNALING_EN_MASK)
  2156. #define SDXC_AC_HOST_CTRL_SIGNALING_EN_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_SIGNALING_EN_MASK) >> SDXC_AC_HOST_CTRL_SIGNALING_EN_SHIFT)
  2157. /*
  2158. * UHS_MODE_SEL (RW)
  2159. *
  2160. * UHS Mode/eMMC Speed Mode Select
  2161. * These bits are used to select UHS mode in the SD mode of operation. In eMMC mode, these bits are used to select eMMC Speed mode.
  2162. * UHS Mode (SD/UHS-II mode only):
  2163. * 0x0 (SDR12): SDR12/Legacy
  2164. * 0x1 (SDR25): SDR25/High Speed SDR
  2165. * 0x2 (SDR50): SDR50
  2166. * 0x3 (SDR104): SDR104/HS200
  2167. * 0x4 (DDR50): DDR50/High Speed DDR
  2168. * 0x5 (RSVD5): Reserved
  2169. * 0x6 (RSVD6): Reserved
  2170. * 0x7 (UHS2): UHS-II/HS400
  2171. * eMMC Speed Mode (eMMC mode only):
  2172. * 0x0: Legacy
  2173. * 0x1: High Speed SDR
  2174. * 0x2: Reserved
  2175. * 0x3: HS200
  2176. * 0x4: High Speed DDR
  2177. * 0x5: Reserved
  2178. * 0x6: Reserved
  2179. * 0x7: HS400
  2180. */
  2181. #define SDXC_AC_HOST_CTRL_UHS_MODE_SEL_MASK (0x70000UL)
  2182. #define SDXC_AC_HOST_CTRL_UHS_MODE_SEL_SHIFT (16U)
  2183. #define SDXC_AC_HOST_CTRL_UHS_MODE_SEL_SET(x) (((uint32_t)(x) << SDXC_AC_HOST_CTRL_UHS_MODE_SEL_SHIFT) & SDXC_AC_HOST_CTRL_UHS_MODE_SEL_MASK)
  2184. #define SDXC_AC_HOST_CTRL_UHS_MODE_SEL_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_UHS_MODE_SEL_MASK) >> SDXC_AC_HOST_CTRL_UHS_MODE_SEL_SHIFT)
  2185. /*
  2186. * CMD_NOT_ISSUED_AUTO_CMD12 (RO)
  2187. *
  2188. * Command Not Issued By Auto CMD12 Error
  2189. * If this bit is set to 1, CMD_wo_DAT is not executed due to an Auto CMD12 Error (D04-D01) in this register.
  2190. * This bit is set to 0 when Auto CMD Error is generated by Auto CMD23.
  2191. * Values:
  2192. * 0x1 (TRUE): Not Issued
  2193. * 0x0 (FALSE): No Error
  2194. */
  2195. #define SDXC_AC_HOST_CTRL_CMD_NOT_ISSUED_AUTO_CMD12_MASK (0x80U)
  2196. #define SDXC_AC_HOST_CTRL_CMD_NOT_ISSUED_AUTO_CMD12_SHIFT (7U)
  2197. #define SDXC_AC_HOST_CTRL_CMD_NOT_ISSUED_AUTO_CMD12_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_CMD_NOT_ISSUED_AUTO_CMD12_MASK) >> SDXC_AC_HOST_CTRL_CMD_NOT_ISSUED_AUTO_CMD12_SHIFT)
  2198. /*
  2199. * AUTO_CMD_RESP_ERR (RO)
  2200. *
  2201. * Auto CMD Response Error
  2202. * This bit is set when Response Error Check Enable in the Transfer Mode register is set to 1 and an error is detected in R1 response of either Auto CMD12 or CMD13.
  2203. * This status is ignored if any bit between D00 to D04 is set to 1.
  2204. * Values:
  2205. * 0x1 (TRUE): Error
  2206. * 0x0 (FALSE): No Error
  2207. */
  2208. #define SDXC_AC_HOST_CTRL_AUTO_CMD_RESP_ERR_MASK (0x20U)
  2209. #define SDXC_AC_HOST_CTRL_AUTO_CMD_RESP_ERR_SHIFT (5U)
  2210. #define SDXC_AC_HOST_CTRL_AUTO_CMD_RESP_ERR_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD_RESP_ERR_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD_RESP_ERR_SHIFT)
  2211. /*
  2212. * AUTO_CMD_IDX_ERR (RO)
  2213. *
  2214. * Auto CMD Index Error
  2215. * This bit is set if the command index error occurs in response to a command.
  2216. * Values:
  2217. * 0x1 (TRUE): Error
  2218. * 0x0 (FALSE): No Error
  2219. */
  2220. #define SDXC_AC_HOST_CTRL_AUTO_CMD_IDX_ERR_MASK (0x10U)
  2221. #define SDXC_AC_HOST_CTRL_AUTO_CMD_IDX_ERR_SHIFT (4U)
  2222. #define SDXC_AC_HOST_CTRL_AUTO_CMD_IDX_ERR_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD_IDX_ERR_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD_IDX_ERR_SHIFT)
  2223. /*
  2224. * AUTO_CMD_EBIT_ERR (RO)
  2225. *
  2226. * Auto CMD End Bit Error
  2227. * This bit is set when detecting that the end bit of command response is 0.
  2228. * Values:
  2229. * 0x1 (TRUE): End Bit Error Generated
  2230. * 0x0 (FALSE): No Error
  2231. */
  2232. #define SDXC_AC_HOST_CTRL_AUTO_CMD_EBIT_ERR_MASK (0x8U)
  2233. #define SDXC_AC_HOST_CTRL_AUTO_CMD_EBIT_ERR_SHIFT (3U)
  2234. #define SDXC_AC_HOST_CTRL_AUTO_CMD_EBIT_ERR_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD_EBIT_ERR_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD_EBIT_ERR_SHIFT)
  2235. /*
  2236. * AUTO_CMD_CRC_ERR (RO)
  2237. *
  2238. * Auto CMD CRC Error
  2239. * This bit is set when detecting a CRC error in the command response.
  2240. * Values:
  2241. * 0x1 (TRUE): CRC Error Generated
  2242. * 0x0 (FALSE): No Error
  2243. */
  2244. #define SDXC_AC_HOST_CTRL_AUTO_CMD_CRC_ERR_MASK (0x4U)
  2245. #define SDXC_AC_HOST_CTRL_AUTO_CMD_CRC_ERR_SHIFT (2U)
  2246. #define SDXC_AC_HOST_CTRL_AUTO_CMD_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD_CRC_ERR_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD_CRC_ERR_SHIFT)
  2247. /*
  2248. * AUTO_CMD_TOUT_ERR (RO)
  2249. *
  2250. * Auto CMD Timeout Error
  2251. * This bit is set if no response is returned with 64 SDCLK cycles from the end bit of the command.
  2252. * If this bit is set to 1, error status bits (D04-D01) are meaningless.
  2253. * Values:
  2254. * 0x1 (TRUE): Time out
  2255. * 0x0 (FALSE): No Error
  2256. */
  2257. #define SDXC_AC_HOST_CTRL_AUTO_CMD_TOUT_ERR_MASK (0x2U)
  2258. #define SDXC_AC_HOST_CTRL_AUTO_CMD_TOUT_ERR_SHIFT (1U)
  2259. #define SDXC_AC_HOST_CTRL_AUTO_CMD_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD_TOUT_ERR_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD_TOUT_ERR_SHIFT)
  2260. /*
  2261. * AUTO_CMD12_NOT_EXEC (RO)
  2262. *
  2263. * Auto CMD12 Not Executed
  2264. * If multiple memory block data transfer is not started due to a command error, this bit is not set because it is not necessary to issue an Auto CMD12.
  2265. * Setting this bit to 1 means that the Host Controller cannot issue Auto CMD12 to stop multiple memory block data transfer, due to some error.
  2266. * If this bit is set to 1, error status bits (D04-D01) is meaningless.
  2267. * This bit is set to 0 when Auto CMD Error is generated by Auto CMD23.
  2268. * Values:
  2269. * 0x1 (TRUE): Not Executed
  2270. * 0x0 (FALSE): Executed
  2271. */
  2272. #define SDXC_AC_HOST_CTRL_AUTO_CMD12_NOT_EXEC_MASK (0x1U)
  2273. #define SDXC_AC_HOST_CTRL_AUTO_CMD12_NOT_EXEC_SHIFT (0U)
  2274. #define SDXC_AC_HOST_CTRL_AUTO_CMD12_NOT_EXEC_GET(x) (((uint32_t)(x) & SDXC_AC_HOST_CTRL_AUTO_CMD12_NOT_EXEC_MASK) >> SDXC_AC_HOST_CTRL_AUTO_CMD12_NOT_EXEC_SHIFT)
  2275. /* Bitfield definition for register: CAPABILITIES1 */
  2276. /*
  2277. * SLOT_TYPE_R (RO)
  2278. *
  2279. * Slot Type
  2280. * These bits indicate usage of a slot by a specific Host System.
  2281. * Values:
  2282. * 0x0 (REMOVABLE_SLOT): Removable Card Slot
  2283. * 0x1 (EMBEDDED_SLOT): Embedded Slot for one Device
  2284. * 0x2 (SHARED_SLOT): Shared Bus Slot (SD mode)
  2285. * 0x3 (UHS2_EMBEDDED_SLOT): UHS-II Multiple Embedded Devices
  2286. */
  2287. #define SDXC_CAPABILITIES1_SLOT_TYPE_R_MASK (0xC0000000UL)
  2288. #define SDXC_CAPABILITIES1_SLOT_TYPE_R_SHIFT (30U)
  2289. #define SDXC_CAPABILITIES1_SLOT_TYPE_R_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_SLOT_TYPE_R_MASK) >> SDXC_CAPABILITIES1_SLOT_TYPE_R_SHIFT)
  2290. /*
  2291. * ASYNC_INT_SUPPORT (RO)
  2292. *
  2293. * Asynchronous Interrupt Support (SD Mode only)
  2294. * Values:
  2295. * 0x0 (FALSE): Asynchronous Interrupt Not Supported
  2296. * 0x1 (TRUE): Asynchronous Interrupt Supported
  2297. */
  2298. #define SDXC_CAPABILITIES1_ASYNC_INT_SUPPORT_MASK (0x20000000UL)
  2299. #define SDXC_CAPABILITIES1_ASYNC_INT_SUPPORT_SHIFT (29U)
  2300. #define SDXC_CAPABILITIES1_ASYNC_INT_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_ASYNC_INT_SUPPORT_MASK) >> SDXC_CAPABILITIES1_ASYNC_INT_SUPPORT_SHIFT)
  2301. /*
  2302. * VOLT_18 (RO)
  2303. *
  2304. * Voltage Support for 1.8V
  2305. * Values:
  2306. * 0x0 (FALSE): 1.8V Not Supported
  2307. * 0x1 (TRUE): 1.8V Supported
  2308. */
  2309. #define SDXC_CAPABILITIES1_VOLT_18_MASK (0x4000000UL)
  2310. #define SDXC_CAPABILITIES1_VOLT_18_SHIFT (26U)
  2311. #define SDXC_CAPABILITIES1_VOLT_18_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_VOLT_18_MASK) >> SDXC_CAPABILITIES1_VOLT_18_SHIFT)
  2312. /*
  2313. * VOLT_30 (RO)
  2314. *
  2315. * Voltage Support for SD 3.0V or Embedded 1.2V
  2316. * Values:
  2317. * 0x0 (FALSE): SD 3.0V or Embedded 1.2V Not Supported
  2318. * 0x1 (TRUE): SD 3.0V or Embedded Supported
  2319. */
  2320. #define SDXC_CAPABILITIES1_VOLT_30_MASK (0x2000000UL)
  2321. #define SDXC_CAPABILITIES1_VOLT_30_SHIFT (25U)
  2322. #define SDXC_CAPABILITIES1_VOLT_30_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_VOLT_30_MASK) >> SDXC_CAPABILITIES1_VOLT_30_SHIFT)
  2323. /*
  2324. * VOLT_33 (RO)
  2325. *
  2326. * Voltage Support for 3.3V
  2327. * Values:
  2328. * 0x0 (FALSE): 3.3V Not Supported
  2329. * 0x1 (TRUE): 3.3V Supported
  2330. */
  2331. #define SDXC_CAPABILITIES1_VOLT_33_MASK (0x1000000UL)
  2332. #define SDXC_CAPABILITIES1_VOLT_33_SHIFT (24U)
  2333. #define SDXC_CAPABILITIES1_VOLT_33_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_VOLT_33_MASK) >> SDXC_CAPABILITIES1_VOLT_33_SHIFT)
  2334. /*
  2335. * SUS_RES_SUPPORT (RO)
  2336. *
  2337. * Suspense/Resume Support
  2338. * This bit indicates whether the Host Controller supports Suspend/Resume functionality.
  2339. * If this bit is 0, the Host Driver does not issue either Suspend or Resume commands because the Suspend and Resume mechanism is not supported.
  2340. * Values:
  2341. * 0x0 (FALSE): Not Supported
  2342. * 0x1 (TRUE): Supported
  2343. */
  2344. #define SDXC_CAPABILITIES1_SUS_RES_SUPPORT_MASK (0x800000UL)
  2345. #define SDXC_CAPABILITIES1_SUS_RES_SUPPORT_SHIFT (23U)
  2346. #define SDXC_CAPABILITIES1_SUS_RES_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_SUS_RES_SUPPORT_MASK) >> SDXC_CAPABILITIES1_SUS_RES_SUPPORT_SHIFT)
  2347. /*
  2348. * SDMA_SUPPORT (RO)
  2349. *
  2350. * SDMA Support
  2351. * This bit indicates whether the Host Controller is capable of using SDMA to transfer data between the system memory and the Host Controller directly.
  2352. * Values:
  2353. * 0x0 (FALSE): SDMA not Supported
  2354. * 0x1 (TRUE): SDMA Supported
  2355. */
  2356. #define SDXC_CAPABILITIES1_SDMA_SUPPORT_MASK (0x400000UL)
  2357. #define SDXC_CAPABILITIES1_SDMA_SUPPORT_SHIFT (22U)
  2358. #define SDXC_CAPABILITIES1_SDMA_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_SDMA_SUPPORT_MASK) >> SDXC_CAPABILITIES1_SDMA_SUPPORT_SHIFT)
  2359. /*
  2360. * HIGH_SPEED_SUPPORT (RO)
  2361. *
  2362. * High Speed Support
  2363. * This bit indicates whether the Host Controller and the Host System supports High Speed mode and they can supply the SD Clock frequency from 25 MHz to 50 MHz.
  2364. * Values:
  2365. * 0x0 (FALSE): High Speed not Supported
  2366. * 0x1 (TRUE): High Speed Supported
  2367. */
  2368. #define SDXC_CAPABILITIES1_HIGH_SPEED_SUPPORT_MASK (0x200000UL)
  2369. #define SDXC_CAPABILITIES1_HIGH_SPEED_SUPPORT_SHIFT (21U)
  2370. #define SDXC_CAPABILITIES1_HIGH_SPEED_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_HIGH_SPEED_SUPPORT_MASK) >> SDXC_CAPABILITIES1_HIGH_SPEED_SUPPORT_SHIFT)
  2371. /*
  2372. * ADMA2_SUPPORT (RO)
  2373. *
  2374. * ADMA2 Support
  2375. * This bit indicates whether the Host Controller is capable of using ADMA2.
  2376. * Values:
  2377. * 0x0 (FALSE): ADMA2 not Supported
  2378. * 0x1 (TRUE): ADMA2 Supported
  2379. */
  2380. #define SDXC_CAPABILITIES1_ADMA2_SUPPORT_MASK (0x80000UL)
  2381. #define SDXC_CAPABILITIES1_ADMA2_SUPPORT_SHIFT (19U)
  2382. #define SDXC_CAPABILITIES1_ADMA2_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_ADMA2_SUPPORT_MASK) >> SDXC_CAPABILITIES1_ADMA2_SUPPORT_SHIFT)
  2383. /*
  2384. * EMBEDDED_8_BIT (RO)
  2385. *
  2386. * 8-bit Support for Embedded Device
  2387. * This bit indicates whether the Host Controller is capable of using an 8-bit bus width mode. This bit is not effective when the Slot Type is set to 10b.
  2388. * Values:
  2389. * 0x0 (FALSE): 8-bit Bus Width not Supported
  2390. * 0x1 (TRUE): 8-bit Bus Width Supported
  2391. */
  2392. #define SDXC_CAPABILITIES1_EMBEDDED_8_BIT_MASK (0x40000UL)
  2393. #define SDXC_CAPABILITIES1_EMBEDDED_8_BIT_SHIFT (18U)
  2394. #define SDXC_CAPABILITIES1_EMBEDDED_8_BIT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_EMBEDDED_8_BIT_MASK) >> SDXC_CAPABILITIES1_EMBEDDED_8_BIT_SHIFT)
  2395. /*
  2396. * MAX_BLK_LEN (RO)
  2397. *
  2398. * Maximum Block Length
  2399. * This bit indicates the maximum block size that the Host driver can read and write to the buffer in the Host Controller.
  2400. * The buffer transfers this block size without wait cycles. The transfer block length is always 512 bytes for the SD Memory irrespective of this bit
  2401. * Values:
  2402. * 0x0 (ZERO): 512 Byte
  2403. * 0x1 (ONE): 1024 Byte
  2404. * 0x2 (TWO): 2048 Byte
  2405. * 0x3 (THREE): Reserved
  2406. */
  2407. #define SDXC_CAPABILITIES1_MAX_BLK_LEN_MASK (0x30000UL)
  2408. #define SDXC_CAPABILITIES1_MAX_BLK_LEN_SHIFT (16U)
  2409. #define SDXC_CAPABILITIES1_MAX_BLK_LEN_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_MAX_BLK_LEN_MASK) >> SDXC_CAPABILITIES1_MAX_BLK_LEN_SHIFT)
  2410. /*
  2411. * BASE_CLK_FREQ (RO)
  2412. *
  2413. * Base Clock Frequency for SD clock
  2414. * These bits indicate the base (maximum) clock frequency for the SD Clock. The definition of these bits depend on the Host Controller Version.
  2415. * 6-Bit Base Clock Frequency: This mode is supported by the Host Controller version 1.00 and 2.00.
  2416. * The upper 2 bits are not effective and are always 0. The unit values are 1 MHz. The supported clock range is 10 MHz to 63 MHz.
  2417. * -0x00 : Get information through another method
  2418. * -0x01 : 1 MHz
  2419. * -0x02 : 2 MHz
  2420. * -.............
  2421. * -0x3F : 63 MHz
  2422. * -0x40-0xFF : Not Supported
  2423. * 8-Bit Base Clock Frequency: This mode is supported by the Host Controller version 3.00. The unit values are 1 MHz. The supported clock range is 10 MHz to 255 MHz.
  2424. * -0x00 : Get information through another method
  2425. * -0x01 : 1 MHz
  2426. * -0x02 : 2 MHz
  2427. * -............
  2428. * -0xFF : 255 MHz
  2429. * If the frequency is 16.5 MHz, the larger value is set to 0001001b (17 MHz) because the Host Driver uses this value to calculate the clock divider value and it does not exceed the upper limit of the SD Clock frequency.
  2430. * If these bits are all 0, the Host system has to get information using a different method.
  2431. */
  2432. #define SDXC_CAPABILITIES1_BASE_CLK_FREQ_MASK (0xFF00U)
  2433. #define SDXC_CAPABILITIES1_BASE_CLK_FREQ_SHIFT (8U)
  2434. #define SDXC_CAPABILITIES1_BASE_CLK_FREQ_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_BASE_CLK_FREQ_MASK) >> SDXC_CAPABILITIES1_BASE_CLK_FREQ_SHIFT)
  2435. /*
  2436. * TOUT_CLK_UNIT (RO)
  2437. *
  2438. * Timeout Clock Unit
  2439. * This bit shows the unit of base clock frequency used to detect Data TImeout Error.
  2440. * Values:
  2441. * 0x0 (KHZ): KHz
  2442. * 0x1 (MHZ): MHz
  2443. */
  2444. #define SDXC_CAPABILITIES1_TOUT_CLK_UNIT_MASK (0x80U)
  2445. #define SDXC_CAPABILITIES1_TOUT_CLK_UNIT_SHIFT (7U)
  2446. #define SDXC_CAPABILITIES1_TOUT_CLK_UNIT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_TOUT_CLK_UNIT_MASK) >> SDXC_CAPABILITIES1_TOUT_CLK_UNIT_SHIFT)
  2447. /*
  2448. * TOUT_CLK_FREQ (RO)
  2449. *
  2450. * Timeout Clock Frequency
  2451. * This bit shows the base clock frequency used to detect Data Timeout Error. The Timeout Clock unit defines the unit of timeout clock frequency. It can be KHz or MHz.
  2452. * 0x00 : Get information through another method
  2453. * 0x01 : 1KHz / 1MHz
  2454. * 0x02 : 2KHz / 2MHz
  2455. * 0x03 : 3KHz / 3MHz
  2456. * ...........
  2457. * 0x3F : 63KHz / 63MHz
  2458. */
  2459. #define SDXC_CAPABILITIES1_TOUT_CLK_FREQ_MASK (0x3FU)
  2460. #define SDXC_CAPABILITIES1_TOUT_CLK_FREQ_SHIFT (0U)
  2461. #define SDXC_CAPABILITIES1_TOUT_CLK_FREQ_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES1_TOUT_CLK_FREQ_MASK) >> SDXC_CAPABILITIES1_TOUT_CLK_FREQ_SHIFT)
  2462. /* Bitfield definition for register: CAPABILITIES2 */
  2463. /*
  2464. * VDD2_18V_SUPPORT (RO)
  2465. *
  2466. * 1.8V VDD2 Support
  2467. * This bit indicates support of VDD2 for the Host System.
  2468. * 0x0 (FALSE): 1.8V VDD2 is not Supported
  2469. * 0x1 (TRUE): 1.8V VDD2 is Supported
  2470. */
  2471. #define SDXC_CAPABILITIES2_VDD2_18V_SUPPORT_MASK (0x10000000UL)
  2472. #define SDXC_CAPABILITIES2_VDD2_18V_SUPPORT_SHIFT (28U)
  2473. #define SDXC_CAPABILITIES2_VDD2_18V_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_VDD2_18V_SUPPORT_MASK) >> SDXC_CAPABILITIES2_VDD2_18V_SUPPORT_SHIFT)
  2474. /*
  2475. * ADMA3_SUPPORT (RO)
  2476. *
  2477. * ADMA3 Support
  2478. * This bit indicates whether the Host Controller is capable of using ADMA3.
  2479. * Values:
  2480. * 0x0 (FALSE): ADMA3 not Supported
  2481. * 0x1 (TRUE): ADMA3 Supported
  2482. */
  2483. #define SDXC_CAPABILITIES2_ADMA3_SUPPORT_MASK (0x8000000UL)
  2484. #define SDXC_CAPABILITIES2_ADMA3_SUPPORT_SHIFT (27U)
  2485. #define SDXC_CAPABILITIES2_ADMA3_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_ADMA3_SUPPORT_MASK) >> SDXC_CAPABILITIES2_ADMA3_SUPPORT_SHIFT)
  2486. /*
  2487. * CLK_MUL (RO)
  2488. *
  2489. * Clock Multiplier
  2490. * These bits indicate the clock multiplier of the programmable clock generator. Setting these bits to 0 means that the Host Controller does not support a programmable clock generator.
  2491. * 0x0: Clock Multiplier is not Supported
  2492. * 0x1: Clock Multiplier M = 2
  2493. * 0x2: Clock Multiplier M = 3
  2494. * .........
  2495. * 0xFF: Clock Multiplier M = 256
  2496. */
  2497. #define SDXC_CAPABILITIES2_CLK_MUL_MASK (0xFF0000UL)
  2498. #define SDXC_CAPABILITIES2_CLK_MUL_SHIFT (16U)
  2499. #define SDXC_CAPABILITIES2_CLK_MUL_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_CLK_MUL_MASK) >> SDXC_CAPABILITIES2_CLK_MUL_SHIFT)
  2500. /*
  2501. * RE_TUNING_MODES (RO)
  2502. *
  2503. * Re-Tuning Modes (UHS-I only)
  2504. * These bits select the re-tuning method and limit the maximum data length.
  2505. * Values:
  2506. * 0x0 (MODE1): Timer
  2507. * 0x1 (MODE2): Timer and Re-Tuning Request (Not supported)
  2508. * 0x2 (MODE3): Auto Re-Tuning (for transfer)
  2509. * 0x3 (RSVD_MODE): Reserved
  2510. */
  2511. #define SDXC_CAPABILITIES2_RE_TUNING_MODES_MASK (0xC000U)
  2512. #define SDXC_CAPABILITIES2_RE_TUNING_MODES_SHIFT (14U)
  2513. #define SDXC_CAPABILITIES2_RE_TUNING_MODES_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_RE_TUNING_MODES_MASK) >> SDXC_CAPABILITIES2_RE_TUNING_MODES_SHIFT)
  2514. /*
  2515. * USE_TUNING_SDR50 (RO)
  2516. *
  2517. * Use Tuning for SDR50 (UHS-I only)
  2518. * Values:
  2519. * 0x0 (ZERO): SDR50 does not require tuning
  2520. * 0x1 (ONE): SDR50 requires tuning
  2521. */
  2522. #define SDXC_CAPABILITIES2_USE_TUNING_SDR50_MASK (0x2000U)
  2523. #define SDXC_CAPABILITIES2_USE_TUNING_SDR50_SHIFT (13U)
  2524. #define SDXC_CAPABILITIES2_USE_TUNING_SDR50_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_USE_TUNING_SDR50_MASK) >> SDXC_CAPABILITIES2_USE_TUNING_SDR50_SHIFT)
  2525. /*
  2526. * RETUNE_CNT (RO)
  2527. *
  2528. * Timer Count for Re-Tuning (UHS-I only)
  2529. * 0x0: Re-Tuning Timer disabled
  2530. * 0x1: 1 seconds
  2531. * 0x2: 2 seconds
  2532. * 0x3: 4 seconds
  2533. * ........
  2534. * 0xB: 1024 seconds
  2535. * 0xC: Reserved
  2536. * 0xD: Reserved
  2537. * 0xE: Reserved
  2538. * 0xF: Get information from other source
  2539. */
  2540. #define SDXC_CAPABILITIES2_RETUNE_CNT_MASK (0xF00U)
  2541. #define SDXC_CAPABILITIES2_RETUNE_CNT_SHIFT (8U)
  2542. #define SDXC_CAPABILITIES2_RETUNE_CNT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_RETUNE_CNT_MASK) >> SDXC_CAPABILITIES2_RETUNE_CNT_SHIFT)
  2543. /*
  2544. * DRV_TYPED (RO)
  2545. *
  2546. * Driver Type D Support (UHS-I only)
  2547. * This bit indicates support of Driver Type D for 1.8 Signaling.
  2548. * Values:
  2549. * 0x0 (FALSE): Driver Type D is not supported
  2550. * 0x1 (TRUE): Driver Type D is supported
  2551. */
  2552. #define SDXC_CAPABILITIES2_DRV_TYPED_MASK (0x40U)
  2553. #define SDXC_CAPABILITIES2_DRV_TYPED_SHIFT (6U)
  2554. #define SDXC_CAPABILITIES2_DRV_TYPED_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_DRV_TYPED_MASK) >> SDXC_CAPABILITIES2_DRV_TYPED_SHIFT)
  2555. /*
  2556. * DRV_TYPEC (RO)
  2557. *
  2558. * Driver Type C Support (UHS-I only)
  2559. * This bit indicates support of Driver Type C for 1.8 Signaling.
  2560. * Values:
  2561. * 0x0 (FALSE): Driver Type C is not supported
  2562. * 0x1 (TRUE): Driver Type C is supported
  2563. */
  2564. #define SDXC_CAPABILITIES2_DRV_TYPEC_MASK (0x20U)
  2565. #define SDXC_CAPABILITIES2_DRV_TYPEC_SHIFT (5U)
  2566. #define SDXC_CAPABILITIES2_DRV_TYPEC_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_DRV_TYPEC_MASK) >> SDXC_CAPABILITIES2_DRV_TYPEC_SHIFT)
  2567. /*
  2568. * DRV_TYPEA (RO)
  2569. *
  2570. * Driver Type A Support (UHS-I only)
  2571. * This bit indicates support of Driver Type A for 1.8 Signaling.
  2572. * Values:
  2573. * 0x0 (FALSE): Driver Type A is not supported
  2574. * 0x1 (TRUE): Driver Type A is supported
  2575. */
  2576. #define SDXC_CAPABILITIES2_DRV_TYPEA_MASK (0x10U)
  2577. #define SDXC_CAPABILITIES2_DRV_TYPEA_SHIFT (4U)
  2578. #define SDXC_CAPABILITIES2_DRV_TYPEA_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_DRV_TYPEA_MASK) >> SDXC_CAPABILITIES2_DRV_TYPEA_SHIFT)
  2579. /*
  2580. * UHS2_SUPPORT (RO)
  2581. *
  2582. * UHS-II Support (UHS-II only)
  2583. * This bit indicates whether Host Controller supports UHS-II.
  2584. * Values:
  2585. * 0x0 (FALSE): UHS-II is not supported
  2586. * 0x1 (TRUE): UHS-II is supported
  2587. */
  2588. #define SDXC_CAPABILITIES2_UHS2_SUPPORT_MASK (0x8U)
  2589. #define SDXC_CAPABILITIES2_UHS2_SUPPORT_SHIFT (3U)
  2590. #define SDXC_CAPABILITIES2_UHS2_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_UHS2_SUPPORT_MASK) >> SDXC_CAPABILITIES2_UHS2_SUPPORT_SHIFT)
  2591. /*
  2592. * DDR50_SUPPORT (RO)
  2593. *
  2594. * DDR50 Support (UHS-I only)
  2595. * Values:
  2596. * 0x0 (FALSE): DDR50 is not supported
  2597. * 0x1 (TRUE): DDR50 is supported
  2598. */
  2599. #define SDXC_CAPABILITIES2_DDR50_SUPPORT_MASK (0x4U)
  2600. #define SDXC_CAPABILITIES2_DDR50_SUPPORT_SHIFT (2U)
  2601. #define SDXC_CAPABILITIES2_DDR50_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_DDR50_SUPPORT_MASK) >> SDXC_CAPABILITIES2_DDR50_SUPPORT_SHIFT)
  2602. /*
  2603. * SDR104_SUPPORT (RO)
  2604. *
  2605. * SDR104 Support (UHS-I only)
  2606. * This bit mentions that SDR104 requires tuning.
  2607. * Values:
  2608. * 0x0 (FALSE): SDR104 is not supported
  2609. * 0x1 (TRUE): SDR104 is supported
  2610. */
  2611. #define SDXC_CAPABILITIES2_SDR104_SUPPORT_MASK (0x2U)
  2612. #define SDXC_CAPABILITIES2_SDR104_SUPPORT_SHIFT (1U)
  2613. #define SDXC_CAPABILITIES2_SDR104_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_SDR104_SUPPORT_MASK) >> SDXC_CAPABILITIES2_SDR104_SUPPORT_SHIFT)
  2614. /*
  2615. * SDR50_SUPPORT (RO)
  2616. *
  2617. * SDR50 Support (UHS-I only)
  2618. * This bit indicates that SDR50 is supported. The bit 13 (USE_TUNING_SDR50) indicates whether SDR50 requires tuning or not.
  2619. * Values:
  2620. * 0x0 (FALSE): SDR50 is not supported
  2621. * 0x1 (TRUE): SDR50 is supported
  2622. */
  2623. #define SDXC_CAPABILITIES2_SDR50_SUPPORT_MASK (0x1U)
  2624. #define SDXC_CAPABILITIES2_SDR50_SUPPORT_SHIFT (0U)
  2625. #define SDXC_CAPABILITIES2_SDR50_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CAPABILITIES2_SDR50_SUPPORT_MASK) >> SDXC_CAPABILITIES2_SDR50_SUPPORT_SHIFT)
  2626. /* Bitfield definition for register: CURR_CAPABILITIES1 */
  2627. /*
  2628. * MAX_CUR_18V (RO)
  2629. *
  2630. * Maximum Current for 1.8V
  2631. * This bit specifies the Maximum Current for 1.8V VDD1 power supply for the card.
  2632. * 0: Get information through another method
  2633. * 1: 4mA
  2634. * 2: 8mA
  2635. * 3: 13mA
  2636. * .......
  2637. * 255: 1020mA
  2638. */
  2639. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_18V_MASK (0xFF0000UL)
  2640. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_18V_SHIFT (16U)
  2641. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_18V_GET(x) (((uint32_t)(x) & SDXC_CURR_CAPABILITIES1_MAX_CUR_18V_MASK) >> SDXC_CURR_CAPABILITIES1_MAX_CUR_18V_SHIFT)
  2642. /*
  2643. * MAX_CUR_30V (RO)
  2644. *
  2645. * Maximum Current for 3.0V
  2646. * This bit specifies the Maximum Current for 3.0V VDD1 power supply for the card.
  2647. * 0: Get information through another method
  2648. * 1: 4mA
  2649. * 2: 8mA
  2650. * 3: 13mA
  2651. * .......
  2652. * 255: 1020mA
  2653. */
  2654. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_30V_MASK (0xFF00U)
  2655. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_30V_SHIFT (8U)
  2656. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_30V_GET(x) (((uint32_t)(x) & SDXC_CURR_CAPABILITIES1_MAX_CUR_30V_MASK) >> SDXC_CURR_CAPABILITIES1_MAX_CUR_30V_SHIFT)
  2657. /*
  2658. * MAX_CUR_33V (RO)
  2659. *
  2660. * Maximum Current for 3.3V
  2661. * This bit specifies the Maximum Current for 3.3V VDD1 power supply for the card.
  2662. * 0: Get information through another method
  2663. * 1: 4mA
  2664. * 2: 8mA
  2665. * 3: 13mA
  2666. * .......
  2667. * 255: 1020mA
  2668. */
  2669. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_33V_MASK (0xFFU)
  2670. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_33V_SHIFT (0U)
  2671. #define SDXC_CURR_CAPABILITIES1_MAX_CUR_33V_GET(x) (((uint32_t)(x) & SDXC_CURR_CAPABILITIES1_MAX_CUR_33V_MASK) >> SDXC_CURR_CAPABILITIES1_MAX_CUR_33V_SHIFT)
  2672. /* Bitfield definition for register: CURR_CAPABILITIES2 */
  2673. /*
  2674. * MAX_CUR_VDD2_18V (RO)
  2675. *
  2676. * Maximum Current for 1.8V VDD2
  2677. * This bit specifies the Maximum Current for 1.8V VDD2 power supply for the UHS-II card.
  2678. * 0: Get information through another method
  2679. * 1: 4mA
  2680. * 2: 8mA
  2681. * 3: 13mA
  2682. * .......
  2683. * 255: 1020mA
  2684. */
  2685. #define SDXC_CURR_CAPABILITIES2_MAX_CUR_VDD2_18V_MASK (0xFFU)
  2686. #define SDXC_CURR_CAPABILITIES2_MAX_CUR_VDD2_18V_SHIFT (0U)
  2687. #define SDXC_CURR_CAPABILITIES2_MAX_CUR_VDD2_18V_GET(x) (((uint32_t)(x) & SDXC_CURR_CAPABILITIES2_MAX_CUR_VDD2_18V_MASK) >> SDXC_CURR_CAPABILITIES2_MAX_CUR_VDD2_18V_SHIFT)
  2688. /* Bitfield definition for register: FORCE_EVENT */
  2689. /*
  2690. * FORCE_BOOT_ACK_ERR (WO)
  2691. *
  2692. * Force Event for Boot Ack error
  2693. * Values:
  2694. * 0x0 (FALSE): Not Affected
  2695. * 0x1 (TRUE): Boot ack Error Status is set
  2696. */
  2697. #define SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_MASK (0x10000000UL)
  2698. #define SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_SHIFT (28U)
  2699. #define SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_MASK)
  2700. #define SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_BOOT_ACK_ERR_SHIFT)
  2701. /*
  2702. * FORCE_RESP_ERR (WO)
  2703. *
  2704. * Force Event for Response Error (SD Mode only)
  2705. * Values:
  2706. * 0x0 (FALSE): Not Affected
  2707. * 0x1 (TRUE): Response Error Status is set
  2708. */
  2709. #define SDXC_FORCE_EVENT_FORCE_RESP_ERR_MASK (0x8000000UL)
  2710. #define SDXC_FORCE_EVENT_FORCE_RESP_ERR_SHIFT (27U)
  2711. #define SDXC_FORCE_EVENT_FORCE_RESP_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_RESP_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_RESP_ERR_MASK)
  2712. #define SDXC_FORCE_EVENT_FORCE_RESP_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_RESP_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_RESP_ERR_SHIFT)
  2713. /*
  2714. * FORCE_TUNING_ERR (WO)
  2715. *
  2716. * Force Event for Tuning Error (UHS-I Mode only)
  2717. * Values:
  2718. * 0x0 (FALSE): Not Affected
  2719. * 0x1 (TRUE): Tuning Error Status is set
  2720. */
  2721. #define SDXC_FORCE_EVENT_FORCE_TUNING_ERR_MASK (0x4000000UL)
  2722. #define SDXC_FORCE_EVENT_FORCE_TUNING_ERR_SHIFT (26U)
  2723. #define SDXC_FORCE_EVENT_FORCE_TUNING_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_TUNING_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_TUNING_ERR_MASK)
  2724. #define SDXC_FORCE_EVENT_FORCE_TUNING_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_TUNING_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_TUNING_ERR_SHIFT)
  2725. /*
  2726. * FORCE_ADMA_ERR (WO)
  2727. *
  2728. * Force Event for ADMA Error
  2729. * Values:
  2730. * 0x0 (FALSE): Not Affected
  2731. * 0x1 (TRUE): ADMA Error Status is set
  2732. */
  2733. #define SDXC_FORCE_EVENT_FORCE_ADMA_ERR_MASK (0x2000000UL)
  2734. #define SDXC_FORCE_EVENT_FORCE_ADMA_ERR_SHIFT (25U)
  2735. #define SDXC_FORCE_EVENT_FORCE_ADMA_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_ADMA_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_ADMA_ERR_MASK)
  2736. #define SDXC_FORCE_EVENT_FORCE_ADMA_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_ADMA_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_ADMA_ERR_SHIFT)
  2737. /*
  2738. * FORCE_AUTO_CMD_ERR (WO)
  2739. *
  2740. * Force Event for Auto CMD Error (SD/eMMC Mode only)
  2741. * Values:
  2742. * 0x0 (FALSE): Not Affected
  2743. * 0x1 (TRUE): Auto CMD Error Status is set
  2744. */
  2745. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_MASK (0x1000000UL)
  2746. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_SHIFT (24U)
  2747. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_MASK)
  2748. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_ERR_SHIFT)
  2749. /*
  2750. * FORCE_CUR_LMT_ERR (WO)
  2751. *
  2752. * Force Event for Current Limit Error
  2753. * Values:
  2754. * 0x0 (FALSE): Not Affected
  2755. * 0x1 (TRUE): Current Limit Error Status is set
  2756. */
  2757. #define SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_MASK (0x800000UL)
  2758. #define SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_SHIFT (23U)
  2759. #define SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_MASK)
  2760. #define SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_CUR_LMT_ERR_SHIFT)
  2761. /*
  2762. * FORCE_DATA_END_BIT_ERR (WO)
  2763. *
  2764. * Force Event for Data End Bit Error (SD/eMMC Mode only)
  2765. * Values:
  2766. * 0x0 (FALSE): Not Affected
  2767. * 0x1 (TRUE): Data End Bit Error Status is set
  2768. */
  2769. #define SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_MASK (0x400000UL)
  2770. #define SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_SHIFT (22U)
  2771. #define SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_MASK)
  2772. #define SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_DATA_END_BIT_ERR_SHIFT)
  2773. /*
  2774. * FORCE_DATA_CRC_ERR (WO)
  2775. *
  2776. * Force Event for Data CRC Error (SD/eMMC Mode only)
  2777. * Values:
  2778. * 0x0 (FALSE): Not Affected
  2779. * 0x1 (TRUE): Data CRC Error Status is set
  2780. */
  2781. #define SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_MASK (0x200000UL)
  2782. #define SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_SHIFT (21U)
  2783. #define SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_MASK)
  2784. #define SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_DATA_CRC_ERR_SHIFT)
  2785. /*
  2786. * FORCE_DATA_TOUT_ERR (WO)
  2787. *
  2788. * Force Event for Data Timeout Error (SD/eMMC Mode only)
  2789. * Values:
  2790. * 0x0 (FALSE): Not Affected
  2791. * 0x1 (TRUE): Data Timeout Error Status is set
  2792. */
  2793. #define SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_MASK (0x100000UL)
  2794. #define SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_SHIFT (20U)
  2795. #define SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_MASK)
  2796. #define SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_DATA_TOUT_ERR_SHIFT)
  2797. /*
  2798. * FORCE_CMD_IDX_ERR (WO)
  2799. *
  2800. * Force Event for Command Index Error (SD/eMMC Mode only)
  2801. * Values:
  2802. * 0x0 (FALSE): Not Affected
  2803. * 0x1 (TRUE): Command Index Error Status is set
  2804. */
  2805. #define SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_MASK (0x80000UL)
  2806. #define SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_SHIFT (19U)
  2807. #define SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_MASK)
  2808. #define SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_CMD_IDX_ERR_SHIFT)
  2809. /*
  2810. * FORCE_CMD_END_BIT_ERR (WO)
  2811. *
  2812. * Force Event for Command End Bit Error (SD/eMMC Mode only)
  2813. * Values:
  2814. * 0x0 (FALSE): Not Affected
  2815. * 0x1 (TRUE): Command End Bit Error Status is set
  2816. */
  2817. #define SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_MASK (0x40000UL)
  2818. #define SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_SHIFT (18U)
  2819. #define SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_MASK)
  2820. #define SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_CMD_END_BIT_ERR_SHIFT)
  2821. /*
  2822. * FORCE_CMD_CRC_ERR (WO)
  2823. *
  2824. * Force Event for Command CRC Error (SD/eMMC Mode only)
  2825. * Values:
  2826. * 0x0 (FALSE): Not Affected
  2827. * 0x1 (TRUE): Command CRC Error Status is set
  2828. */
  2829. #define SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_MASK (0x20000UL)
  2830. #define SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_SHIFT (17U)
  2831. #define SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_MASK)
  2832. #define SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_CMD_CRC_ERR_SHIFT)
  2833. /*
  2834. * FORCE_CMD_TOUT_ERR (WO)
  2835. *
  2836. * Force Event for Command Timeout Error (SD/eMMC Mode only)
  2837. * Values:
  2838. * 0x0 (FALSE): Not Affected
  2839. * 0x1 (TRUE): Command Timeout Error Status is set
  2840. */
  2841. #define SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_MASK (0x10000UL)
  2842. #define SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_SHIFT (16U)
  2843. #define SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_MASK)
  2844. #define SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_CMD_TOUT_ERR_SHIFT)
  2845. /*
  2846. * FORCE_CMD_NOT_ISSUED_AUTO_CMD12 (WO)
  2847. *
  2848. * Force Event for Command Not Issued By Auto CMD12 Error
  2849. * Values:
  2850. * 0x1 (TRUE): Command Not Issued By Auto CMD12 Error Status is set
  2851. * 0x0 (FALSE): Not Affected
  2852. */
  2853. #define SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_MASK (0x80U)
  2854. #define SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_SHIFT (7U)
  2855. #define SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_SHIFT) & SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_MASK)
  2856. #define SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_MASK) >> SDXC_FORCE_EVENT_FORCE_CMD_NOT_ISSUED_AUTO_CMD12_SHIFT)
  2857. /*
  2858. * FORCE_AUTO_CMD_RESP_ERR (WO)
  2859. *
  2860. * Force Event for Auto CMD Response Error
  2861. * Values:
  2862. * 0x1 (TRUE): Auto CMD Response Error Status is set
  2863. * 0x0 (FALSE): Not Affected
  2864. */
  2865. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_MASK (0x20U)
  2866. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_SHIFT (5U)
  2867. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_MASK)
  2868. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_RESP_ERR_SHIFT)
  2869. /*
  2870. * FORCE_AUTO_CMD_IDX_ERR (WO)
  2871. *
  2872. * Force Event for Auto CMD Index Error
  2873. * Values:
  2874. * 0x1 (TRUE): Auto CMD Index Error Status is set
  2875. * 0x0 (FALSE): Not Affected
  2876. */
  2877. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_MASK (0x10U)
  2878. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_SHIFT (4U)
  2879. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_MASK)
  2880. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_IDX_ERR_SHIFT)
  2881. /*
  2882. * FORCE_AUTO_CMD_EBIT_ERR (WO)
  2883. *
  2884. * Force Event for Auto CMD End Bit Error
  2885. * Values:
  2886. * 0x1 (TRUE): Auto CMD End Bit Error Status is set
  2887. * 0x0 (FALSE): Not Affected
  2888. */
  2889. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_MASK (0x8U)
  2890. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_SHIFT (3U)
  2891. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_MASK)
  2892. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_EBIT_ERR_SHIFT)
  2893. /*
  2894. * FORCE_AUTO_CMD_CRC_ERR (WO)
  2895. *
  2896. * Force Event for Auto CMD CRC Error
  2897. * Values:
  2898. * 0x1 (TRUE): Auto CMD CRC Error Status is set
  2899. * 0x0 (FALSE): Not Affected
  2900. */
  2901. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_MASK (0x4U)
  2902. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_SHIFT (2U)
  2903. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_MASK)
  2904. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_CRC_ERR_SHIFT)
  2905. /*
  2906. * FORCE_AUTO_CMD_TOUT_ERR (WO)
  2907. *
  2908. * Force Event for Auto CMD Timeout Error
  2909. * Values:
  2910. * 0x1 (TRUE): Auto CMD Timeout Error Status is set
  2911. * 0x0 (FALSE): Not Affected
  2912. */
  2913. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_MASK (0x2U)
  2914. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_SHIFT (1U)
  2915. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_MASK)
  2916. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD_TOUT_ERR_SHIFT)
  2917. /*
  2918. * FORCE_AUTO_CMD12_NOT_EXEC (WO)
  2919. *
  2920. * Force Event for Auto CMD12 Not Executed
  2921. * Values:
  2922. * 0x1 (TRUE): Auto CMD12 Not Executed Status is set
  2923. * 0x0 (FALSE): Not Affected
  2924. */
  2925. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_MASK (0x1U)
  2926. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_SHIFT (0U)
  2927. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_SET(x) (((uint32_t)(x) << SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_SHIFT) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_MASK)
  2928. #define SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_GET(x) (((uint32_t)(x) & SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_MASK) >> SDXC_FORCE_EVENT_FORCE_AUTO_CMD12_NOT_EXEC_SHIFT)
  2929. /* Bitfield definition for register: ADMA_ERR_STAT */
  2930. /*
  2931. * ADMA_LEN_ERR (RO)
  2932. *
  2933. * ADMA Length Mismatch Error States
  2934. * This error occurs in the following instances:
  2935. * While the Block Count Enable is being set, the total data length specified by the Descriptor table is different from that specified by the Block Count and Block Length
  2936. * When the total data length cannot be divided by the block length
  2937. * Values:
  2938. * 0x0 (NO_ERR): No Error
  2939. * 0x1 (ERROR): Error
  2940. */
  2941. #define SDXC_ADMA_ERR_STAT_ADMA_LEN_ERR_MASK (0x4U)
  2942. #define SDXC_ADMA_ERR_STAT_ADMA_LEN_ERR_SHIFT (2U)
  2943. #define SDXC_ADMA_ERR_STAT_ADMA_LEN_ERR_GET(x) (((uint32_t)(x) & SDXC_ADMA_ERR_STAT_ADMA_LEN_ERR_MASK) >> SDXC_ADMA_ERR_STAT_ADMA_LEN_ERR_SHIFT)
  2944. /*
  2945. * ADMA_ERR_STATES (RO)
  2946. *
  2947. * ADMA Error States
  2948. * These bits indicate the state of ADMA when an error occurs during ADMA data transfer.
  2949. * Values:
  2950. * 0x0 (ST_STOP): Stop DMA - SYS_ADR register points to a location next to the error descriptor
  2951. * 0x1 (ST_FDS): Fetch Descriptor - SYS_ADR register points to the error descriptor
  2952. * 0x2 (UNUSED): Never set this state
  2953. * 0x3 (ST_TFR): Transfer Data - SYS_ADR register points to a location next to the error descriptor
  2954. */
  2955. #define SDXC_ADMA_ERR_STAT_ADMA_ERR_STATES_MASK (0x3U)
  2956. #define SDXC_ADMA_ERR_STAT_ADMA_ERR_STATES_SHIFT (0U)
  2957. #define SDXC_ADMA_ERR_STAT_ADMA_ERR_STATES_GET(x) (((uint32_t)(x) & SDXC_ADMA_ERR_STAT_ADMA_ERR_STATES_MASK) >> SDXC_ADMA_ERR_STAT_ADMA_ERR_STATES_SHIFT)
  2958. /* Bitfield definition for register: ADMA_SYS_ADDR */
  2959. /*
  2960. * ADMA_SA (RW)
  2961. *
  2962. * ADMA System Address
  2963. * These bits indicate the lower 32 bits of the ADMA system address.
  2964. * SDMA: If Host Version 4 Enable is set to 1, this register stores the system address of the data location
  2965. * ADMA2: This register stores the byte address of the executing command of the descriptor table
  2966. * ADMA3: This register is set by ADMA3. ADMA2 increments the address of this register that points to the next line, every time a Descriptor line is fetched.
  2967. */
  2968. #define SDXC_ADMA_SYS_ADDR_ADMA_SA_MASK (0xFFFFFFFFUL)
  2969. #define SDXC_ADMA_SYS_ADDR_ADMA_SA_SHIFT (0U)
  2970. #define SDXC_ADMA_SYS_ADDR_ADMA_SA_SET(x) (((uint32_t)(x) << SDXC_ADMA_SYS_ADDR_ADMA_SA_SHIFT) & SDXC_ADMA_SYS_ADDR_ADMA_SA_MASK)
  2971. #define SDXC_ADMA_SYS_ADDR_ADMA_SA_GET(x) (((uint32_t)(x) & SDXC_ADMA_SYS_ADDR_ADMA_SA_MASK) >> SDXC_ADMA_SYS_ADDR_ADMA_SA_SHIFT)
  2972. /* Bitfield definition for register array: PRESET */
  2973. /*
  2974. * CLK_GEN_SEL_VAL (RO)
  2975. *
  2976. * Clock Generator Select Value
  2977. * This bit is effective when the Host Controller supports a programmable clock generator.
  2978. * Values:
  2979. * 0x0 (FALSE): Host Controller Ver2.0 Compatible Clock Generator
  2980. * 0x1 (PROG): Programmable Clock Generator
  2981. */
  2982. #define SDXC_PRESET_CLK_GEN_SEL_VAL_MASK (0x400U)
  2983. #define SDXC_PRESET_CLK_GEN_SEL_VAL_SHIFT (10U)
  2984. #define SDXC_PRESET_CLK_GEN_SEL_VAL_GET(x) (((uint16_t)(x) & SDXC_PRESET_CLK_GEN_SEL_VAL_MASK) >> SDXC_PRESET_CLK_GEN_SEL_VAL_SHIFT)
  2985. /*
  2986. * FREQ_SEL_VAL (RO)
  2987. *
  2988. * SDCLK/RCLK Frequency Select Value
  2989. * 10-bit preset value to be set in SDCLK/RCLK Frequency Select field of the Clock Control register described by a Host System.
  2990. */
  2991. #define SDXC_PRESET_FREQ_SEL_VAL_MASK (0x3FFU)
  2992. #define SDXC_PRESET_FREQ_SEL_VAL_SHIFT (0U)
  2993. #define SDXC_PRESET_FREQ_SEL_VAL_GET(x) (((uint16_t)(x) & SDXC_PRESET_FREQ_SEL_VAL_MASK) >> SDXC_PRESET_FREQ_SEL_VAL_SHIFT)
  2994. /* Bitfield definition for register: ADMA_ID_ADDR */
  2995. /*
  2996. * ADMA_ID_ADDR (RW)
  2997. *
  2998. * ADMA Integrated Descriptor Address
  2999. * These bits indicate the lower 32-bit of the ADMA Integrated Descriptor address.
  3000. * The start address of Integrated Descriptor is set to these register bits.
  3001. * The ADMA3 fetches one Descriptor Address and increments these bits to indicate the next Descriptor address.
  3002. */
  3003. #define SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_MASK (0xFFFFFFFFUL)
  3004. #define SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_SHIFT (0U)
  3005. #define SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_SET(x) (((uint32_t)(x) << SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_SHIFT) & SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_MASK)
  3006. #define SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_GET(x) (((uint32_t)(x) & SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_MASK) >> SDXC_ADMA_ID_ADDR_ADMA_ID_ADDR_SHIFT)
  3007. /* Bitfield definition for register: P_EMBEDDED_CNTRL */
  3008. /*
  3009. * REG_OFFSET_ADDR (RO)
  3010. *
  3011. * Offset Address of Embedded Control register.
  3012. */
  3013. #define SDXC_P_EMBEDDED_CNTRL_REG_OFFSET_ADDR_MASK (0xFFFU)
  3014. #define SDXC_P_EMBEDDED_CNTRL_REG_OFFSET_ADDR_SHIFT (0U)
  3015. #define SDXC_P_EMBEDDED_CNTRL_REG_OFFSET_ADDR_GET(x) (((uint16_t)(x) & SDXC_P_EMBEDDED_CNTRL_REG_OFFSET_ADDR_MASK) >> SDXC_P_EMBEDDED_CNTRL_REG_OFFSET_ADDR_SHIFT)
  3016. /* Bitfield definition for register: P_VENDOR_SPECIFIC_AREA */
  3017. /*
  3018. * REG_OFFSET_ADDR (RO)
  3019. *
  3020. * Base offset Address for Vendor-Specific registers.
  3021. */
  3022. #define SDXC_P_VENDOR_SPECIFIC_AREA_REG_OFFSET_ADDR_MASK (0xFFFU)
  3023. #define SDXC_P_VENDOR_SPECIFIC_AREA_REG_OFFSET_ADDR_SHIFT (0U)
  3024. #define SDXC_P_VENDOR_SPECIFIC_AREA_REG_OFFSET_ADDR_GET(x) (((uint16_t)(x) & SDXC_P_VENDOR_SPECIFIC_AREA_REG_OFFSET_ADDR_MASK) >> SDXC_P_VENDOR_SPECIFIC_AREA_REG_OFFSET_ADDR_SHIFT)
  3025. /* Bitfield definition for register: P_VENDOR2_SPECIFIC_AREA */
  3026. /*
  3027. * REG_OFFSET_ADDR (RO)
  3028. *
  3029. * Base offset Address for Command Queuing registers.
  3030. */
  3031. #define SDXC_P_VENDOR2_SPECIFIC_AREA_REG_OFFSET_ADDR_MASK (0xFFFFU)
  3032. #define SDXC_P_VENDOR2_SPECIFIC_AREA_REG_OFFSET_ADDR_SHIFT (0U)
  3033. #define SDXC_P_VENDOR2_SPECIFIC_AREA_REG_OFFSET_ADDR_GET(x) (((uint16_t)(x) & SDXC_P_VENDOR2_SPECIFIC_AREA_REG_OFFSET_ADDR_MASK) >> SDXC_P_VENDOR2_SPECIFIC_AREA_REG_OFFSET_ADDR_SHIFT)
  3034. /* Bitfield definition for register: SLOT_INTR_STATUS */
  3035. /*
  3036. * INTR_SLOT (RO)
  3037. *
  3038. * Interrupt signal for each Slot
  3039. * These status bits indicate the logical OR of Interrupt signal and Wakeup signal for each slot.
  3040. * A maximum of 8 slots can be defined. If one interrupt signal is associated with multiple slots, the Host Driver can identify the interrupt that is generated by reading these bits.
  3041. * By a power on reset or by setting Software Reset For All bit, the interrupt signals are de-asserted and this status reads 00h.
  3042. * Bit 00: Slot 1
  3043. * Bit 01: Slot 2
  3044. * Bit 02: Slot 3
  3045. * ..........
  3046. * ..........
  3047. * Bit 07: Slot 8
  3048. * Note: MSHC Host Controller support single card slot. This register shall always return 0.
  3049. */
  3050. #define SDXC_SLOT_INTR_STATUS_INTR_SLOT_MASK (0xFFU)
  3051. #define SDXC_SLOT_INTR_STATUS_INTR_SLOT_SHIFT (0U)
  3052. #define SDXC_SLOT_INTR_STATUS_INTR_SLOT_GET(x) (((uint16_t)(x) & SDXC_SLOT_INTR_STATUS_INTR_SLOT_MASK) >> SDXC_SLOT_INTR_STATUS_INTR_SLOT_SHIFT)
  3053. /* Bitfield definition for register: CQVER */
  3054. /*
  3055. * EMMC_VER_MAHOR (RO)
  3056. *
  3057. * This bit indicates the eMMC major version (1st digit left of decimal point) in BCD format.
  3058. */
  3059. #define SDXC_CQVER_EMMC_VER_MAHOR_MASK (0xF00U)
  3060. #define SDXC_CQVER_EMMC_VER_MAHOR_SHIFT (8U)
  3061. #define SDXC_CQVER_EMMC_VER_MAHOR_GET(x) (((uint32_t)(x) & SDXC_CQVER_EMMC_VER_MAHOR_MASK) >> SDXC_CQVER_EMMC_VER_MAHOR_SHIFT)
  3062. /*
  3063. * EMMC_VER_MINOR (RO)
  3064. *
  3065. * This bit indicates the eMMC minor version (1st digit right of decimal point) in BCD format.
  3066. */
  3067. #define SDXC_CQVER_EMMC_VER_MINOR_MASK (0xF0U)
  3068. #define SDXC_CQVER_EMMC_VER_MINOR_SHIFT (4U)
  3069. #define SDXC_CQVER_EMMC_VER_MINOR_GET(x) (((uint32_t)(x) & SDXC_CQVER_EMMC_VER_MINOR_MASK) >> SDXC_CQVER_EMMC_VER_MINOR_SHIFT)
  3070. /*
  3071. * EMMC_VER_SUFFIX (RO)
  3072. *
  3073. * This bit indicates the eMMC version suffix (2nd digit right of decimal point) in BCD format.
  3074. */
  3075. #define SDXC_CQVER_EMMC_VER_SUFFIX_MASK (0xFU)
  3076. #define SDXC_CQVER_EMMC_VER_SUFFIX_SHIFT (0U)
  3077. #define SDXC_CQVER_EMMC_VER_SUFFIX_GET(x) (((uint32_t)(x) & SDXC_CQVER_EMMC_VER_SUFFIX_MASK) >> SDXC_CQVER_EMMC_VER_SUFFIX_SHIFT)
  3078. /* Bitfield definition for register: CQCAP */
  3079. /*
  3080. * CRYPTO_SUPPORT (RO)
  3081. *
  3082. * Crypto Support
  3083. * This bit indicates whether the Host Controller supports cryptographic operations.
  3084. * Values:
  3085. * 0x0 (FALSE): Crypto not Supported
  3086. * 0x1 (TRUE): Crypto Supported
  3087. */
  3088. #define SDXC_CQCAP_CRYPTO_SUPPORT_MASK (0x10000000UL)
  3089. #define SDXC_CQCAP_CRYPTO_SUPPORT_SHIFT (28U)
  3090. #define SDXC_CQCAP_CRYPTO_SUPPORT_GET(x) (((uint32_t)(x) & SDXC_CQCAP_CRYPTO_SUPPORT_MASK) >> SDXC_CQCAP_CRYPTO_SUPPORT_SHIFT)
  3091. /*
  3092. * ITCFMUL (RO)
  3093. *
  3094. * Internal Timer Clock Frequency Multiplier (ITCFMUL)
  3095. * This field indicates the frequency of the clock used for interrupt coalescing timer and for determining the SQS
  3096. * polling period. See ITCFVAL definition for details. Values 0x5 to 0xF are reserved.
  3097. * Values:
  3098. * 0x0 (CLK_1KHz): 1KHz clock
  3099. * 0x1 (CLK_10KHz): 10KHz clock
  3100. * 0x2 (CLK_100KHz): 100KHz clock
  3101. * 0x3 (CLK_1MHz): 1MHz clock
  3102. * 0x4 (CLK_10MHz): 10MHz clock
  3103. */
  3104. #define SDXC_CQCAP_ITCFMUL_MASK (0xF000U)
  3105. #define SDXC_CQCAP_ITCFMUL_SHIFT (12U)
  3106. #define SDXC_CQCAP_ITCFMUL_GET(x) (((uint32_t)(x) & SDXC_CQCAP_ITCFMUL_MASK) >> SDXC_CQCAP_ITCFMUL_SHIFT)
  3107. /*
  3108. * ITCFVAL (RO)
  3109. *
  3110. * Internal Timer Clock Frequency Value (ITCFVAL)
  3111. * This field scales the frequency of the timer clock provided by ITCFMUL. The Final clock frequency of actual timer clock is calculated as ITCFVAL* ITCFMUL.
  3112. */
  3113. #define SDXC_CQCAP_ITCFVAL_MASK (0x3FFU)
  3114. #define SDXC_CQCAP_ITCFVAL_SHIFT (0U)
  3115. #define SDXC_CQCAP_ITCFVAL_GET(x) (((uint32_t)(x) & SDXC_CQCAP_ITCFVAL_MASK) >> SDXC_CQCAP_ITCFVAL_SHIFT)
  3116. /* Bitfield definition for register: CQCFG */
  3117. /*
  3118. * DCMD_EN (RW)
  3119. *
  3120. * This bit indicates to the hardware whether the Task
  3121. * Descriptor in slot #31 of the TDL is a data transfer descriptor or a direct-command descriptor. CQE uses this bit when a task is issued in slot #31, to determine how to decode the Task Descriptor.
  3122. * Values:
  3123. * 0x1 (SLOT31_DCMD_ENABLE): Task descriptor in slot #31 is a DCMD Task Descriptor
  3124. * 0x0 (SLOT31_DCMD_DISABLE): Task descriptor in slot #31 is a data Transfer Task Descriptor
  3125. */
  3126. #define SDXC_CQCFG_DCMD_EN_MASK (0x1000U)
  3127. #define SDXC_CQCFG_DCMD_EN_SHIFT (12U)
  3128. #define SDXC_CQCFG_DCMD_EN_SET(x) (((uint32_t)(x) << SDXC_CQCFG_DCMD_EN_SHIFT) & SDXC_CQCFG_DCMD_EN_MASK)
  3129. #define SDXC_CQCFG_DCMD_EN_GET(x) (((uint32_t)(x) & SDXC_CQCFG_DCMD_EN_MASK) >> SDXC_CQCFG_DCMD_EN_SHIFT)
  3130. /*
  3131. * TASK_DESC_SIZE (RW)
  3132. *
  3133. * Bit Value Description
  3134. * This bit indicates the size of task descriptor used in host memory. This bit can only be configured when Command Queuing Enable bit is 0 (command queuing is disabled).
  3135. * Values:
  3136. * 0x1 (TASK_DESC_128b): Task descriptor size is 128 bits
  3137. * 0x0 (TASK_DESC_64b): Task descriptor size is 64 bit
  3138. */
  3139. #define SDXC_CQCFG_TASK_DESC_SIZE_MASK (0x100U)
  3140. #define SDXC_CQCFG_TASK_DESC_SIZE_SHIFT (8U)
  3141. #define SDXC_CQCFG_TASK_DESC_SIZE_SET(x) (((uint32_t)(x) << SDXC_CQCFG_TASK_DESC_SIZE_SHIFT) & SDXC_CQCFG_TASK_DESC_SIZE_MASK)
  3142. #define SDXC_CQCFG_TASK_DESC_SIZE_GET(x) (((uint32_t)(x) & SDXC_CQCFG_TASK_DESC_SIZE_MASK) >> SDXC_CQCFG_TASK_DESC_SIZE_SHIFT)
  3143. /*
  3144. * CQ_EN (RW)
  3145. *
  3146. */
  3147. #define SDXC_CQCFG_CQ_EN_MASK (0x1U)
  3148. #define SDXC_CQCFG_CQ_EN_SHIFT (0U)
  3149. #define SDXC_CQCFG_CQ_EN_SET(x) (((uint32_t)(x) << SDXC_CQCFG_CQ_EN_SHIFT) & SDXC_CQCFG_CQ_EN_MASK)
  3150. #define SDXC_CQCFG_CQ_EN_GET(x) (((uint32_t)(x) & SDXC_CQCFG_CQ_EN_MASK) >> SDXC_CQCFG_CQ_EN_SHIFT)
  3151. /* Bitfield definition for register: CQCTL */
  3152. /*
  3153. * CLR_ALL_TASKS (RW)
  3154. *
  3155. * Clear all tasks
  3156. * This bit can only be written when the controller is halted. This bit does not clear tasks in the device. The software has to use the CMDQ_TASK_MGMT command to clear device's queue.
  3157. * Values:
  3158. * 0x1 (CLEAR_ALL_TASKS): Clears all the tasks in the controller
  3159. * 0x0 (NO_EFFECT): Programming 0 has no effect
  3160. */
  3161. #define SDXC_CQCTL_CLR_ALL_TASKS_MASK (0x100U)
  3162. #define SDXC_CQCTL_CLR_ALL_TASKS_SHIFT (8U)
  3163. #define SDXC_CQCTL_CLR_ALL_TASKS_SET(x) (((uint32_t)(x) << SDXC_CQCTL_CLR_ALL_TASKS_SHIFT) & SDXC_CQCTL_CLR_ALL_TASKS_MASK)
  3164. #define SDXC_CQCTL_CLR_ALL_TASKS_GET(x) (((uint32_t)(x) & SDXC_CQCTL_CLR_ALL_TASKS_MASK) >> SDXC_CQCTL_CLR_ALL_TASKS_SHIFT)
  3165. /*
  3166. * HALT (RW)
  3167. *
  3168. * Halt request and resume
  3169. * Values:
  3170. * 0x1 (HALT_CQE): Software writes 1 to this bit when it wants to acquire software control over the eMMC bus and to disable CQE from issuing command on the bus.
  3171. * For example, issuing a Discard Task command (CMDQ_TASK_MGMT).
  3172. * When the software writes 1, CQE completes the ongoing task (if any in progress).
  3173. * After the task is completed and the CQE is in idle state, CQE does not issue new commands and indicates to the software by setting this bit to 1.
  3174. * The software can poll on this bit until it is set to 1 and only then send commands on the eMMC bus.
  3175. * 0x0 (RESUME_CQE): Software writes 0 to this bit to exit from the halt state and resume CQE activity
  3176. */
  3177. #define SDXC_CQCTL_HALT_MASK (0x1U)
  3178. #define SDXC_CQCTL_HALT_SHIFT (0U)
  3179. #define SDXC_CQCTL_HALT_SET(x) (((uint32_t)(x) << SDXC_CQCTL_HALT_SHIFT) & SDXC_CQCTL_HALT_MASK)
  3180. #define SDXC_CQCTL_HALT_GET(x) (((uint32_t)(x) & SDXC_CQCTL_HALT_MASK) >> SDXC_CQCTL_HALT_SHIFT)
  3181. /* Bitfield definition for register: CQIS */
  3182. /*
  3183. * TCL (RW)
  3184. *
  3185. * Task cleared interrupt
  3186. * This status bit is asserted (if CQISE.TCL_STE=1) when a task clear operation is completed by CQE.
  3187. * The completed task clear operation is either an individual task clear (by writing CQTCLR) or clearing of all tasks (by writing CQCTL).
  3188. * A value of 1 clears this status bit.
  3189. * Values:
  3190. * 0x1 (SET): TCL Interrupt is set
  3191. * 0x0 (NOTSET): TCL Interrupt is not set
  3192. */
  3193. #define SDXC_CQIS_TCL_MASK (0x8U)
  3194. #define SDXC_CQIS_TCL_SHIFT (3U)
  3195. #define SDXC_CQIS_TCL_SET(x) (((uint32_t)(x) << SDXC_CQIS_TCL_SHIFT) & SDXC_CQIS_TCL_MASK)
  3196. #define SDXC_CQIS_TCL_GET(x) (((uint32_t)(x) & SDXC_CQIS_TCL_MASK) >> SDXC_CQIS_TCL_SHIFT)
  3197. /*
  3198. * RED (RW)
  3199. *
  3200. * Response error detected interrupt
  3201. * This status bit is asserted (if CQISE.RED_STE=1) when a response is received with an error bit set in the device status
  3202. * field. Configure the CQRMEM register to identify device status bit fields that may trigger an interrupt and that are masked.
  3203. * A value of 1 clears this status bit.
  3204. * Values:
  3205. * 0x1 (SET): RED Interrupt is set
  3206. * 0x0 (NOTSET): RED Interrupt is not set
  3207. */
  3208. #define SDXC_CQIS_RED_MASK (0x4U)
  3209. #define SDXC_CQIS_RED_SHIFT (2U)
  3210. #define SDXC_CQIS_RED_SET(x) (((uint32_t)(x) << SDXC_CQIS_RED_SHIFT) & SDXC_CQIS_RED_MASK)
  3211. #define SDXC_CQIS_RED_GET(x) (((uint32_t)(x) & SDXC_CQIS_RED_MASK) >> SDXC_CQIS_RED_SHIFT)
  3212. /*
  3213. * TCC (RW)
  3214. *
  3215. * Task complete interrupt
  3216. * This status bit is asserted (if CQISE.TCC_STE=1) when at least one of the following conditions are met:
  3217. * A task is completed and the INT bit is set in its Task Descriptor
  3218. * Interrupt caused by Interrupt Coalescing logic due to timeout
  3219. * Interrupt Coalescing logic reached the configured threshold
  3220. * A value of 1 clears this status bit
  3221. */
  3222. #define SDXC_CQIS_TCC_MASK (0x2U)
  3223. #define SDXC_CQIS_TCC_SHIFT (1U)
  3224. #define SDXC_CQIS_TCC_SET(x) (((uint32_t)(x) << SDXC_CQIS_TCC_SHIFT) & SDXC_CQIS_TCC_MASK)
  3225. #define SDXC_CQIS_TCC_GET(x) (((uint32_t)(x) & SDXC_CQIS_TCC_MASK) >> SDXC_CQIS_TCC_SHIFT)
  3226. /*
  3227. * HAC (RW)
  3228. *
  3229. * Halt complete interrupt
  3230. * This status bit is asserted (only if CQISE.HAC_STE=1) when halt bit in the CQCTL register transitions from 0 to 1 indicating that the host controller has completed its current ongoing task and has entered halt state.
  3231. * A value of 1 clears this status bit.
  3232. * Values:
  3233. * 0x1 (SET): HAC Interrupt is set
  3234. * 0x0 (NOTSET): HAC Interrupt is not set
  3235. */
  3236. #define SDXC_CQIS_HAC_MASK (0x1U)
  3237. #define SDXC_CQIS_HAC_SHIFT (0U)
  3238. #define SDXC_CQIS_HAC_SET(x) (((uint32_t)(x) << SDXC_CQIS_HAC_SHIFT) & SDXC_CQIS_HAC_MASK)
  3239. #define SDXC_CQIS_HAC_GET(x) (((uint32_t)(x) & SDXC_CQIS_HAC_MASK) >> SDXC_CQIS_HAC_SHIFT)
  3240. /* Bitfield definition for register: CQISE */
  3241. /*
  3242. * TCL_STE (RW)
  3243. *
  3244. * Task cleared interrupt status enable
  3245. * Values:
  3246. * 0x1 (INT_STS_ENABLE): CQIS.TCL is set when its interrupt condition is active
  3247. * 0x0 (INT_STS_DISABLE): CQIS.TCL is disabled
  3248. */
  3249. #define SDXC_CQISE_TCL_STE_MASK (0x8U)
  3250. #define SDXC_CQISE_TCL_STE_SHIFT (3U)
  3251. #define SDXC_CQISE_TCL_STE_SET(x) (((uint32_t)(x) << SDXC_CQISE_TCL_STE_SHIFT) & SDXC_CQISE_TCL_STE_MASK)
  3252. #define SDXC_CQISE_TCL_STE_GET(x) (((uint32_t)(x) & SDXC_CQISE_TCL_STE_MASK) >> SDXC_CQISE_TCL_STE_SHIFT)
  3253. /*
  3254. * RED_STE (RW)
  3255. *
  3256. * Response error detected interrupt status enable
  3257. * Values:
  3258. * 0x1 (INT_STS_ENABLE): CQIS.RED is set when its interrupt condition is active
  3259. * 0x0 (INT_STS_DISABLE): CQIS.RED is disabled
  3260. */
  3261. #define SDXC_CQISE_RED_STE_MASK (0x4U)
  3262. #define SDXC_CQISE_RED_STE_SHIFT (2U)
  3263. #define SDXC_CQISE_RED_STE_SET(x) (((uint32_t)(x) << SDXC_CQISE_RED_STE_SHIFT) & SDXC_CQISE_RED_STE_MASK)
  3264. #define SDXC_CQISE_RED_STE_GET(x) (((uint32_t)(x) & SDXC_CQISE_RED_STE_MASK) >> SDXC_CQISE_RED_STE_SHIFT)
  3265. /*
  3266. * TCC_STE (RW)
  3267. *
  3268. * Task complete interrupt status enable
  3269. * Values:
  3270. * 0x1 (INT_STS_ENABLE): CQIS.TCC is set when its interrupt condition is active
  3271. * 0x0 (INT_STS_DISABLE): CQIS.TCC is disabled
  3272. */
  3273. #define SDXC_CQISE_TCC_STE_MASK (0x2U)
  3274. #define SDXC_CQISE_TCC_STE_SHIFT (1U)
  3275. #define SDXC_CQISE_TCC_STE_SET(x) (((uint32_t)(x) << SDXC_CQISE_TCC_STE_SHIFT) & SDXC_CQISE_TCC_STE_MASK)
  3276. #define SDXC_CQISE_TCC_STE_GET(x) (((uint32_t)(x) & SDXC_CQISE_TCC_STE_MASK) >> SDXC_CQISE_TCC_STE_SHIFT)
  3277. /*
  3278. * HAC_STE (RW)
  3279. *
  3280. * Halt complete interrupt status enable
  3281. * Values:
  3282. * 0x1 (INT_STS_ENABLE): CQIS.HAC is set when its interrupt condition is active
  3283. * 0x0 (INT_STS_DISABLE): CQIS.HAC is disabled
  3284. */
  3285. #define SDXC_CQISE_HAC_STE_MASK (0x1U)
  3286. #define SDXC_CQISE_HAC_STE_SHIFT (0U)
  3287. #define SDXC_CQISE_HAC_STE_SET(x) (((uint32_t)(x) << SDXC_CQISE_HAC_STE_SHIFT) & SDXC_CQISE_HAC_STE_MASK)
  3288. #define SDXC_CQISE_HAC_STE_GET(x) (((uint32_t)(x) & SDXC_CQISE_HAC_STE_MASK) >> SDXC_CQISE_HAC_STE_SHIFT)
  3289. /* Bitfield definition for register: CQISGE */
  3290. /*
  3291. * TCL_SGE (RW)
  3292. *
  3293. * Task cleared interrupt signal enable
  3294. * Values:
  3295. * 0x1 (INT_SIG_ENABLE): CQIS.TCL interrupt signal generation is active
  3296. * 0x0 (INT_SIG_DISABLE): CQIS.TCL interrupt signal generation is disabled
  3297. */
  3298. #define SDXC_CQISGE_TCL_SGE_MASK (0x8U)
  3299. #define SDXC_CQISGE_TCL_SGE_SHIFT (3U)
  3300. #define SDXC_CQISGE_TCL_SGE_SET(x) (((uint32_t)(x) << SDXC_CQISGE_TCL_SGE_SHIFT) & SDXC_CQISGE_TCL_SGE_MASK)
  3301. #define SDXC_CQISGE_TCL_SGE_GET(x) (((uint32_t)(x) & SDXC_CQISGE_TCL_SGE_MASK) >> SDXC_CQISGE_TCL_SGE_SHIFT)
  3302. /*
  3303. * RED_SGE (RW)
  3304. *
  3305. * Response error detected interrupt signal enable
  3306. * Values:
  3307. * 0x1 (INT_SIG_ENABLE): CQIS.RED interrupt signal generation is active
  3308. * 0x0 (INT_SIG_DISABLE): CQIS.RED interrupt signal generation is disabled
  3309. */
  3310. #define SDXC_CQISGE_RED_SGE_MASK (0x4U)
  3311. #define SDXC_CQISGE_RED_SGE_SHIFT (2U)
  3312. #define SDXC_CQISGE_RED_SGE_SET(x) (((uint32_t)(x) << SDXC_CQISGE_RED_SGE_SHIFT) & SDXC_CQISGE_RED_SGE_MASK)
  3313. #define SDXC_CQISGE_RED_SGE_GET(x) (((uint32_t)(x) & SDXC_CQISGE_RED_SGE_MASK) >> SDXC_CQISGE_RED_SGE_SHIFT)
  3314. /*
  3315. * TCC_SGE (RW)
  3316. *
  3317. * Task complete interrupt signal enable
  3318. * Values:
  3319. * 0x1 (INT_SIG_ENABLE): CQIS.TCC interrupt signal generation is active
  3320. * 0x0 (INT_SIG_DISABLE): CQIS.TCC interrupt signal generation is disabled
  3321. */
  3322. #define SDXC_CQISGE_TCC_SGE_MASK (0x2U)
  3323. #define SDXC_CQISGE_TCC_SGE_SHIFT (1U)
  3324. #define SDXC_CQISGE_TCC_SGE_SET(x) (((uint32_t)(x) << SDXC_CQISGE_TCC_SGE_SHIFT) & SDXC_CQISGE_TCC_SGE_MASK)
  3325. #define SDXC_CQISGE_TCC_SGE_GET(x) (((uint32_t)(x) & SDXC_CQISGE_TCC_SGE_MASK) >> SDXC_CQISGE_TCC_SGE_SHIFT)
  3326. /*
  3327. * HAC_SGE (RW)
  3328. *
  3329. * Halt complete interrupt signal enable
  3330. * Values:
  3331. * 0x1 (INT_SIG_ENABLE): CQIS.HAC interrupt signal generation is active
  3332. * 0x0 (INT_SIG_DISABLE): CQIS.HAC interrupt signal generation is disabled
  3333. */
  3334. #define SDXC_CQISGE_HAC_SGE_MASK (0x1U)
  3335. #define SDXC_CQISGE_HAC_SGE_SHIFT (0U)
  3336. #define SDXC_CQISGE_HAC_SGE_SET(x) (((uint32_t)(x) << SDXC_CQISGE_HAC_SGE_SHIFT) & SDXC_CQISGE_HAC_SGE_MASK)
  3337. #define SDXC_CQISGE_HAC_SGE_GET(x) (((uint32_t)(x) & SDXC_CQISGE_HAC_SGE_MASK) >> SDXC_CQISGE_HAC_SGE_SHIFT)
  3338. /* Bitfield definition for register: CQIC */
  3339. /*
  3340. * INTC_EN (RW)
  3341. *
  3342. * Interrupt Coalescing Enable Bit
  3343. * Values:
  3344. * 0x1 (ENABLE_INT_COALESCING): Interrupt coalescing mechanism is active. Interrupts are counted and timed, and coalesced interrupts are generated
  3345. * 0x0 (DISABLE_INT_COALESCING): Interrupt coalescing mechanism is disabled (Default)
  3346. */
  3347. #define SDXC_CQIC_INTC_EN_MASK (0x80000000UL)
  3348. #define SDXC_CQIC_INTC_EN_SHIFT (31U)
  3349. #define SDXC_CQIC_INTC_EN_SET(x) (((uint32_t)(x) << SDXC_CQIC_INTC_EN_SHIFT) & SDXC_CQIC_INTC_EN_MASK)
  3350. #define SDXC_CQIC_INTC_EN_GET(x) (((uint32_t)(x) & SDXC_CQIC_INTC_EN_MASK) >> SDXC_CQIC_INTC_EN_SHIFT)
  3351. /*
  3352. * INTC_STAT (RO)
  3353. *
  3354. * Interrupt Coalescing Status Bit
  3355. * This bit indicates to the software whether any tasks (with INT=0) have completed and counted towards interrupt
  3356. * coalescing (that is, this is set if and only if INTC counter > 0).
  3357. * Values:
  3358. * 0x1 (INTC_ATLEAST1_COMP): At least one INT0 task completion has been counted (INTC counter > 0)
  3359. * 0x0 (INTC_NO_TASK_COMP): INT0 Task completions have not occurred since last counter reset (INTC counter == 0)
  3360. */
  3361. #define SDXC_CQIC_INTC_STAT_MASK (0x100000UL)
  3362. #define SDXC_CQIC_INTC_STAT_SHIFT (20U)
  3363. #define SDXC_CQIC_INTC_STAT_GET(x) (((uint32_t)(x) & SDXC_CQIC_INTC_STAT_MASK) >> SDXC_CQIC_INTC_STAT_SHIFT)
  3364. /*
  3365. * INTC_RST (WO)
  3366. *
  3367. * Counter and Timer Reset
  3368. * When host driver writes 1, the interrupt coalescing timer and counter are reset.
  3369. * Values:
  3370. * 0x1 (ASSERT_INTC_RESET): Interrupt coalescing timer and counter are reset
  3371. * 0x0 (NO_EFFECT): No Effect
  3372. */
  3373. #define SDXC_CQIC_INTC_RST_MASK (0x10000UL)
  3374. #define SDXC_CQIC_INTC_RST_SHIFT (16U)
  3375. #define SDXC_CQIC_INTC_RST_SET(x) (((uint32_t)(x) << SDXC_CQIC_INTC_RST_SHIFT) & SDXC_CQIC_INTC_RST_MASK)
  3376. #define SDXC_CQIC_INTC_RST_GET(x) (((uint32_t)(x) & SDXC_CQIC_INTC_RST_MASK) >> SDXC_CQIC_INTC_RST_SHIFT)
  3377. /*
  3378. * INTC_TH_WEN (WO)
  3379. *
  3380. * Interrupt Coalescing Counter Threshold Write Enable
  3381. * When software writes 1 to this bit, the value INTC_TH is updated with the contents written on the same cycle.
  3382. * Values:
  3383. * 0x1 (WEN_SET): Sets INTC_TH_WEN
  3384. * 0x0 (WEN_CLR): Clears INTC_TH_WEN
  3385. */
  3386. #define SDXC_CQIC_INTC_TH_WEN_MASK (0x8000U)
  3387. #define SDXC_CQIC_INTC_TH_WEN_SHIFT (15U)
  3388. #define SDXC_CQIC_INTC_TH_WEN_SET(x) (((uint32_t)(x) << SDXC_CQIC_INTC_TH_WEN_SHIFT) & SDXC_CQIC_INTC_TH_WEN_MASK)
  3389. #define SDXC_CQIC_INTC_TH_WEN_GET(x) (((uint32_t)(x) & SDXC_CQIC_INTC_TH_WEN_MASK) >> SDXC_CQIC_INTC_TH_WEN_SHIFT)
  3390. /*
  3391. * INTC_TH (WO)
  3392. *
  3393. * Interrupt Coalescing Counter Threshold filed
  3394. * Software uses this field to configure the number of task completions (only tasks with INT=0 in the Task Descriptor), which are required in order to generate an interrupt.
  3395. * Counter Operation: As data transfer tasks with INT=0 complete, they are counted by CQE.
  3396. * The counter is reset by software during the interrupt service routine.
  3397. * The counter stops counting when it reaches the value configured in INTC_TH, and generates interrupt.
  3398. * 0x0: Interrupt coalescing feature disabled
  3399. * 0x1: Interrupt coalescing interrupt generated after 1 task when INT=0 completes
  3400. * 0x2: Interrupt coalescing interrupt generated after 2 tasks when INT=0 completes
  3401. * ........
  3402. * 0x1f: Interrupt coalescing interrupt generated after 31 tasks when INT=0 completes
  3403. * To write to this field, the INTC_TH_WEN bit must be set during the same write operation.
  3404. */
  3405. #define SDXC_CQIC_INTC_TH_MASK (0x1F00U)
  3406. #define SDXC_CQIC_INTC_TH_SHIFT (8U)
  3407. #define SDXC_CQIC_INTC_TH_SET(x) (((uint32_t)(x) << SDXC_CQIC_INTC_TH_SHIFT) & SDXC_CQIC_INTC_TH_MASK)
  3408. #define SDXC_CQIC_INTC_TH_GET(x) (((uint32_t)(x) & SDXC_CQIC_INTC_TH_MASK) >> SDXC_CQIC_INTC_TH_SHIFT)
  3409. /*
  3410. * TOUT_VAL_WEN (WO)
  3411. *
  3412. * When software writes 1 to this bit, the value TOUT_VAL is updated with the contents written on the same cycle.
  3413. * Values:
  3414. * 0x1 (WEN_SET): Sets TOUT_VAL_WEN
  3415. * 0x0 (WEN_CLR): clears TOUT_VAL_WEN
  3416. */
  3417. #define SDXC_CQIC_TOUT_VAL_WEN_MASK (0x80U)
  3418. #define SDXC_CQIC_TOUT_VAL_WEN_SHIFT (7U)
  3419. #define SDXC_CQIC_TOUT_VAL_WEN_SET(x) (((uint32_t)(x) << SDXC_CQIC_TOUT_VAL_WEN_SHIFT) & SDXC_CQIC_TOUT_VAL_WEN_MASK)
  3420. #define SDXC_CQIC_TOUT_VAL_WEN_GET(x) (((uint32_t)(x) & SDXC_CQIC_TOUT_VAL_WEN_MASK) >> SDXC_CQIC_TOUT_VAL_WEN_SHIFT)
  3421. /*
  3422. * TOUT_VAL (RW)
  3423. *
  3424. * Interrupt Coalescing Timeout Value
  3425. * Software uses this field to configure the maximum time allowed between the completion of a task on the bus and the generation of an interrupt.
  3426. * Timer Operation: The timer is reset by software during the interrupt service routine.
  3427. * It starts running when the first data transfer task with INT=0 is completed, after the timer was reset.
  3428. * When the timer reaches the value configured in ICTOVAL field, it generates an interrupt and stops.
  3429. * The timer's unit is equal to 1024 clock periods of the clock whose frequency is specified in the Internal Timer Clock Frequency field CQCAP register.
  3430. * 0x0: Timer is disabled. Timeout-based interrupt is not generated
  3431. * 0x1: Timeout on 01x1024 cycles of timer clock frequency
  3432. * 0x2: Timeout on 02x1024 cycles of timer clock frequency
  3433. * ........
  3434. * 0x7f: Timeout on 127x1024 cycles of timer clock frequency
  3435. * In order to write to this field, the TOUT_VAL_WEN bit must
  3436. * be set at the same write operation.
  3437. */
  3438. #define SDXC_CQIC_TOUT_VAL_MASK (0x7FU)
  3439. #define SDXC_CQIC_TOUT_VAL_SHIFT (0U)
  3440. #define SDXC_CQIC_TOUT_VAL_SET(x) (((uint32_t)(x) << SDXC_CQIC_TOUT_VAL_SHIFT) & SDXC_CQIC_TOUT_VAL_MASK)
  3441. #define SDXC_CQIC_TOUT_VAL_GET(x) (((uint32_t)(x) & SDXC_CQIC_TOUT_VAL_MASK) >> SDXC_CQIC_TOUT_VAL_SHIFT)
  3442. /* Bitfield definition for register: CQTDLBA */
  3443. /*
  3444. * TDLBA (RW)
  3445. *
  3446. * This register stores the LSB bits (31:0) of the byte address of the head of the Task Descriptor List in system memory.
  3447. * The size of the task descriptor list is 32 * (Task Descriptor size + Transfer Descriptor size) as configured by the host driver.
  3448. * This address is set on 1 KB boundary. The lower 10 bits of this register are set to 0 by the software and are ignored by CQE
  3449. */
  3450. #define SDXC_CQTDLBA_TDLBA_MASK (0xFFFFFFFFUL)
  3451. #define SDXC_CQTDLBA_TDLBA_SHIFT (0U)
  3452. #define SDXC_CQTDLBA_TDLBA_SET(x) (((uint32_t)(x) << SDXC_CQTDLBA_TDLBA_SHIFT) & SDXC_CQTDLBA_TDLBA_MASK)
  3453. #define SDXC_CQTDLBA_TDLBA_GET(x) (((uint32_t)(x) & SDXC_CQTDLBA_TDLBA_MASK) >> SDXC_CQTDLBA_TDLBA_SHIFT)
  3454. /* Bitfield definition for register: CQTDBR */
  3455. /*
  3456. * DBR (RW)
  3457. *
  3458. * The software configures TDLBA and TDLBAU, and enable
  3459. * CQE in CQCFG before using this register.
  3460. * Writing 1 to bit n of this register triggers CQE to start processing the task encoded in slot n of the TDL.
  3461. * Writing 0 by the software does not have any impact on the hardware, and does not change the value of the register bit.
  3462. * CQE always processes tasks according to the order submitted to the list by CQTDBR write transactions.
  3463. * CQE processes Data Transfer tasks by reading the Task Descriptor and sending QUEUED_TASK_PARAMS (CMD44) and QUEUED_TASK_ADDRESS (CMD45) commands to
  3464. * the device. CQE processes DCMD tasks (in slot #31, when enabled) by reading the Task Descriptor, and generating the command encoded by its index and argument.
  3465. * The corresponding bit is cleared to 0 by CQE in one of the following events:
  3466. * A task execution is completed (with success or error).
  3467. * The task is cleared using CQTCLR register.
  3468. * All tasks are cleared using CQCTL register.
  3469. * CQE is disabled using CQCFG register.
  3470. * Software may initiate multiple tasks at the same time (batch submission) by writing 1 to multiple bits of this register in the same transaction.
  3471. * In the case of batch submission, CQE processes the tasks in order of the task index, starting with the lowest index.
  3472. * If one or more tasks in the batch are marked with QBR, the ordering of execution is based on said processing order.
  3473. */
  3474. #define SDXC_CQTDBR_DBR_MASK (0xFFFFFFFFUL)
  3475. #define SDXC_CQTDBR_DBR_SHIFT (0U)
  3476. #define SDXC_CQTDBR_DBR_SET(x) (((uint32_t)(x) << SDXC_CQTDBR_DBR_SHIFT) & SDXC_CQTDBR_DBR_MASK)
  3477. #define SDXC_CQTDBR_DBR_GET(x) (((uint32_t)(x) & SDXC_CQTDBR_DBR_MASK) >> SDXC_CQTDBR_DBR_SHIFT)
  3478. /* Bitfield definition for register: CQTCN */
  3479. /*
  3480. * TCN (RW)
  3481. *
  3482. * Task Completion Notification
  3483. * Each of the 32 bits are bit mapped to the 32 tasks.
  3484. * Bit-N(1): Task-N has completed execution (with success or errors)
  3485. * Bit-N(0): Task-N has not completed, could be pending or not submitted.
  3486. * On task completion, software may read this register to know tasks that have completed. After reading this register,
  3487. * software may clear the relevant bit fields by writing 1 to the corresponding bits.
  3488. */
  3489. #define SDXC_CQTCN_TCN_MASK (0xFFFFFFFFUL)
  3490. #define SDXC_CQTCN_TCN_SHIFT (0U)
  3491. #define SDXC_CQTCN_TCN_SET(x) (((uint32_t)(x) << SDXC_CQTCN_TCN_SHIFT) & SDXC_CQTCN_TCN_MASK)
  3492. #define SDXC_CQTCN_TCN_GET(x) (((uint32_t)(x) & SDXC_CQTCN_TCN_MASK) >> SDXC_CQTCN_TCN_SHIFT)
  3493. /* Bitfield definition for register: CQDQS */
  3494. /*
  3495. * DQS (RW)
  3496. *
  3497. * Device Queue Status
  3498. * Each of the 32 bits are bit mapped to the 32 tasks.
  3499. * Bit-N(1): Device has marked task N as ready for execution
  3500. * Bit-N(0): Task-N is not ready for execution. This task could be pending in device or not submitted.
  3501. * Host controller updates this register with response of the Device Queue Status command.
  3502. */
  3503. #define SDXC_CQDQS_DQS_MASK (0xFFFFFFFFUL)
  3504. #define SDXC_CQDQS_DQS_SHIFT (0U)
  3505. #define SDXC_CQDQS_DQS_SET(x) (((uint32_t)(x) << SDXC_CQDQS_DQS_SHIFT) & SDXC_CQDQS_DQS_MASK)
  3506. #define SDXC_CQDQS_DQS_GET(x) (((uint32_t)(x) & SDXC_CQDQS_DQS_MASK) >> SDXC_CQDQS_DQS_SHIFT)
  3507. /* Bitfield definition for register: CQDPT */
  3508. /*
  3509. * DPT (RW)
  3510. *
  3511. * Device-Pending Tasks
  3512. * Each of the 32 bits are bit mapped to the 32 tasks.
  3513. * Bit-N(1): Task-N has been successfully queued into the device and is awaiting execution
  3514. * Bit-N(0): Task-N is not yet queued.
  3515. * Bit n of this register is set if and only if QUEUED_TASK_PARAMS (CMD44) and QUEUED_TASK_ADDRESS (CMD45) were sent for this specific task and if this task has not been executed.
  3516. * The controller sets this bit after receiving a successful response for CMD45. CQE clears this bit after the task has completed execution.
  3517. * Software reads this register in the task-discard procedure to determine if the task is queued in the device
  3518. */
  3519. #define SDXC_CQDPT_DPT_MASK (0xFFFFFFFFUL)
  3520. #define SDXC_CQDPT_DPT_SHIFT (0U)
  3521. #define SDXC_CQDPT_DPT_SET(x) (((uint32_t)(x) << SDXC_CQDPT_DPT_SHIFT) & SDXC_CQDPT_DPT_MASK)
  3522. #define SDXC_CQDPT_DPT_GET(x) (((uint32_t)(x) & SDXC_CQDPT_DPT_MASK) >> SDXC_CQDPT_DPT_SHIFT)
  3523. /* Bitfield definition for register: CQTCLR */
  3524. /*
  3525. * TCLR (RW)
  3526. *
  3527. * Writing 1 to bit n of this register orders CQE to clear a task that the software has previously issued.
  3528. * This bit can only be written when CQE is in Halt state as indicated in CQCFG register Halt bit.
  3529. * When software writes 1 to a bit in this register, CQE updates the value to 1, and starts clearing the data structures related to the task.
  3530. * CQE clears the bit fields (sets a value of 0) in CQTCLR and in CQTDBR once the clear operation is complete.
  3531. * Software must poll on the CQTCLR until it is leared to verify that a clear operation was done.
  3532. */
  3533. #define SDXC_CQTCLR_TCLR_MASK (0xFFFFFFFFUL)
  3534. #define SDXC_CQTCLR_TCLR_SHIFT (0U)
  3535. #define SDXC_CQTCLR_TCLR_SET(x) (((uint32_t)(x) << SDXC_CQTCLR_TCLR_SHIFT) & SDXC_CQTCLR_TCLR_MASK)
  3536. #define SDXC_CQTCLR_TCLR_GET(x) (((uint32_t)(x) & SDXC_CQTCLR_TCLR_MASK) >> SDXC_CQTCLR_TCLR_SHIFT)
  3537. /* Bitfield definition for register: CQSSC1 */
  3538. /*
  3539. * SQSCMD_BLK_CNT (RW)
  3540. *
  3541. * This field indicates when SQS CMD is sent while data transfer is in progress.
  3542. * A value of 'n' indicates that CQE sends status command on the CMD line, during the transfer of data block BLOCK_CNTn, on the data lines, where BLOCK_CNT is the number of blocks in the current transaction.
  3543. * 0x0: SEND_QUEUE_STATUS (CMD13) command is not sent during the transaction. Instead, it is sent only when the data lines are idle.
  3544. * 0x1: SEND_QUEUE_STATUS command is to be sent during the last block of the transaction.
  3545. * 0x2: SEND_QUEUE_STATUS command when last 2 blocks are pending.
  3546. * 0x3: SEND_QUEUE_STATUS command when last 3 blocks are pending.
  3547. * ........
  3548. * 0xf: SEND_QUEUE_STATUS command when last 15 blocks are pending.
  3549. * Should be programmed only when CQCFG.CQ_EN is 0
  3550. */
  3551. #define SDXC_CQSSC1_SQSCMD_BLK_CNT_MASK (0xF0000UL)
  3552. #define SDXC_CQSSC1_SQSCMD_BLK_CNT_SHIFT (16U)
  3553. #define SDXC_CQSSC1_SQSCMD_BLK_CNT_SET(x) (((uint32_t)(x) << SDXC_CQSSC1_SQSCMD_BLK_CNT_SHIFT) & SDXC_CQSSC1_SQSCMD_BLK_CNT_MASK)
  3554. #define SDXC_CQSSC1_SQSCMD_BLK_CNT_GET(x) (((uint32_t)(x) & SDXC_CQSSC1_SQSCMD_BLK_CNT_MASK) >> SDXC_CQSSC1_SQSCMD_BLK_CNT_SHIFT)
  3555. /*
  3556. * SQSCMD_IDLE_TMR (RW)
  3557. *
  3558. * This field configures the polling period to be used when using periodic SEND_QUEUE_STATUS (CMD13) polling.
  3559. * Periodic polling is used when tasks are pending in the device, but no data transfer is in progress.
  3560. * When a SEND_QUEUE_STATUS response indicates that no task is ready for execution, CQE counts the configured time until it issues the next SEND_QUEUE_STATUS.
  3561. * Timer units are clock periods of the clock whose frequency is specified in the Internal Timer Clock Frequency field CQCAP register.
  3562. * The minimum value is 0001h (1 clock period) and the maximum value is FFFFh (65535 clock periods).
  3563. * For example, a CQCAP field value of 0 indicates a 19.2 MHz clock frequency (period = 52.08 ns).
  3564. * If the setting in CQSSC1.CIT is 1000h, the calculated polling period is 4096*52.08 ns= 213.33 us.
  3565. * Should be programmed only when CQCFG.CQ_EN is '0'
  3566. */
  3567. #define SDXC_CQSSC1_SQSCMD_IDLE_TMR_MASK (0xFFFFU)
  3568. #define SDXC_CQSSC1_SQSCMD_IDLE_TMR_SHIFT (0U)
  3569. #define SDXC_CQSSC1_SQSCMD_IDLE_TMR_SET(x) (((uint32_t)(x) << SDXC_CQSSC1_SQSCMD_IDLE_TMR_SHIFT) & SDXC_CQSSC1_SQSCMD_IDLE_TMR_MASK)
  3570. #define SDXC_CQSSC1_SQSCMD_IDLE_TMR_GET(x) (((uint32_t)(x) & SDXC_CQSSC1_SQSCMD_IDLE_TMR_MASK) >> SDXC_CQSSC1_SQSCMD_IDLE_TMR_SHIFT)
  3571. /* Bitfield definition for register: CQSSC2 */
  3572. /*
  3573. * SQSCMD_RCA (RW)
  3574. *
  3575. * This field provides CQE with the contents of the 16-bit RCA field in SEND_QUEUE_STATUS (CMD13) command argument.
  3576. * CQE copies this field to bits 31:16 of the argument when transmitting SEND_ QUEUE_STATUS (CMD13) command.
  3577. */
  3578. #define SDXC_CQSSC2_SQSCMD_RCA_MASK (0xFFFFU)
  3579. #define SDXC_CQSSC2_SQSCMD_RCA_SHIFT (0U)
  3580. #define SDXC_CQSSC2_SQSCMD_RCA_SET(x) (((uint32_t)(x) << SDXC_CQSSC2_SQSCMD_RCA_SHIFT) & SDXC_CQSSC2_SQSCMD_RCA_MASK)
  3581. #define SDXC_CQSSC2_SQSCMD_RCA_GET(x) (((uint32_t)(x) & SDXC_CQSSC2_SQSCMD_RCA_MASK) >> SDXC_CQSSC2_SQSCMD_RCA_SHIFT)
  3582. /* Bitfield definition for register: CQCRDCT */
  3583. /*
  3584. * DCMD_RESP (RO)
  3585. *
  3586. * This register contains the response of the command generated by the last direct command (DCMD) task that was sent.
  3587. * Contents of this register are valid only after bit 31 of CQTDBR register is cleared by the controller.
  3588. */
  3589. #define SDXC_CQCRDCT_DCMD_RESP_MASK (0xFFFFFFFFUL)
  3590. #define SDXC_CQCRDCT_DCMD_RESP_SHIFT (0U)
  3591. #define SDXC_CQCRDCT_DCMD_RESP_GET(x) (((uint32_t)(x) & SDXC_CQCRDCT_DCMD_RESP_MASK) >> SDXC_CQCRDCT_DCMD_RESP_SHIFT)
  3592. /* Bitfield definition for register: CQRMEM */
  3593. /*
  3594. * RESP_ERR_MASK (RW)
  3595. *
  3596. * The bits of this field are bit mapped to the device response.
  3597. * This bit is used as an interrupt mask on the device status filed that is received in R1/R1b responses.
  3598. * 1: When a R1/R1b response is received, with a bit i in the device status set, a RED interrupt is generated.
  3599. * 0: When a R1/R1b response is received, bit i in the device status is ignored.
  3600. * The reset value of this register is set to trigger an interrupt on all "Error" type bits in the device status.
  3601. * Note: Responses to CMD13 (SQS) encode the QSR so that they are ignored by this logic.
  3602. */
  3603. #define SDXC_CQRMEM_RESP_ERR_MASK_MASK (0xFFFFFFFFUL)
  3604. #define SDXC_CQRMEM_RESP_ERR_MASK_SHIFT (0U)
  3605. #define SDXC_CQRMEM_RESP_ERR_MASK_SET(x) (((uint32_t)(x) << SDXC_CQRMEM_RESP_ERR_MASK_SHIFT) & SDXC_CQRMEM_RESP_ERR_MASK_MASK)
  3606. #define SDXC_CQRMEM_RESP_ERR_MASK_GET(x) (((uint32_t)(x) & SDXC_CQRMEM_RESP_ERR_MASK_MASK) >> SDXC_CQRMEM_RESP_ERR_MASK_SHIFT)
  3607. /* Bitfield definition for register: CQTERRI */
  3608. /*
  3609. * TRANS_ERR_TASKID (RO)
  3610. *
  3611. * This field captures the ID of the task that was executed and whose data transfer has errors.
  3612. */
  3613. #define SDXC_CQTERRI_TRANS_ERR_TASKID_MASK (0x1F000000UL)
  3614. #define SDXC_CQTERRI_TRANS_ERR_TASKID_SHIFT (24U)
  3615. #define SDXC_CQTERRI_TRANS_ERR_TASKID_GET(x) (((uint32_t)(x) & SDXC_CQTERRI_TRANS_ERR_TASKID_MASK) >> SDXC_CQTERRI_TRANS_ERR_TASKID_SHIFT)
  3616. /*
  3617. * TRANS_ERR_CMD_INDX (RO)
  3618. *
  3619. * This field captures the index of the command that was executed and whose data transfer has errors.
  3620. */
  3621. #define SDXC_CQTERRI_TRANS_ERR_CMD_INDX_MASK (0x3F0000UL)
  3622. #define SDXC_CQTERRI_TRANS_ERR_CMD_INDX_SHIFT (16U)
  3623. #define SDXC_CQTERRI_TRANS_ERR_CMD_INDX_GET(x) (((uint32_t)(x) & SDXC_CQTERRI_TRANS_ERR_CMD_INDX_MASK) >> SDXC_CQTERRI_TRANS_ERR_CMD_INDX_SHIFT)
  3624. /*
  3625. * RESP_ERR_FIELDS_VALID (RO)
  3626. *
  3627. * This bit is updated when an error is detected while a command transaction was in progress.
  3628. * Values:
  3629. * 0x1 (SET): Response-related error is detected. Check contents of RESP_ERR_TASKID and RESP_ERR_CMD_INDX fields
  3630. * 0x0 (NOT_SET): Ignore contents of RESP_ERR_TASKID and RESP_ERR_CMD_INDX
  3631. */
  3632. #define SDXC_CQTERRI_RESP_ERR_FIELDS_VALID_MASK (0x8000U)
  3633. #define SDXC_CQTERRI_RESP_ERR_FIELDS_VALID_SHIFT (15U)
  3634. #define SDXC_CQTERRI_RESP_ERR_FIELDS_VALID_GET(x) (((uint32_t)(x) & SDXC_CQTERRI_RESP_ERR_FIELDS_VALID_MASK) >> SDXC_CQTERRI_RESP_ERR_FIELDS_VALID_SHIFT)
  3635. /*
  3636. * RESP_ERR_TASKID (RO)
  3637. *
  3638. * This field captures the ID of the task which was executed on the command line when the error occurred.
  3639. */
  3640. #define SDXC_CQTERRI_RESP_ERR_TASKID_MASK (0x1F00U)
  3641. #define SDXC_CQTERRI_RESP_ERR_TASKID_SHIFT (8U)
  3642. #define SDXC_CQTERRI_RESP_ERR_TASKID_GET(x) (((uint32_t)(x) & SDXC_CQTERRI_RESP_ERR_TASKID_MASK) >> SDXC_CQTERRI_RESP_ERR_TASKID_SHIFT)
  3643. /*
  3644. * RESP_ERR_CMD_INDX (RO)
  3645. *
  3646. * This field captures the index of the command that was executed on the command line when the error occurred
  3647. */
  3648. #define SDXC_CQTERRI_RESP_ERR_CMD_INDX_MASK (0x3FU)
  3649. #define SDXC_CQTERRI_RESP_ERR_CMD_INDX_SHIFT (0U)
  3650. #define SDXC_CQTERRI_RESP_ERR_CMD_INDX_GET(x) (((uint32_t)(x) & SDXC_CQTERRI_RESP_ERR_CMD_INDX_MASK) >> SDXC_CQTERRI_RESP_ERR_CMD_INDX_SHIFT)
  3651. /* Bitfield definition for register: CQCRI */
  3652. /*
  3653. * CMD_RESP_INDX (RO)
  3654. *
  3655. * Last Command Response index
  3656. * This field stores the index of the last received command response. Controller updates the value every time a command response is received
  3657. */
  3658. #define SDXC_CQCRI_CMD_RESP_INDX_MASK (0x3FU)
  3659. #define SDXC_CQCRI_CMD_RESP_INDX_SHIFT (0U)
  3660. #define SDXC_CQCRI_CMD_RESP_INDX_GET(x) (((uint32_t)(x) & SDXC_CQCRI_CMD_RESP_INDX_MASK) >> SDXC_CQCRI_CMD_RESP_INDX_SHIFT)
  3661. /* Bitfield definition for register: CQCRA */
  3662. /*
  3663. * CMD_RESP_ARG (RO)
  3664. *
  3665. * Last Command Response argument
  3666. * This field stores the argument of the last received command response. Controller updates the value every time a command response is received.
  3667. */
  3668. #define SDXC_CQCRA_CMD_RESP_ARG_MASK (0xFFFFFFFFUL)
  3669. #define SDXC_CQCRA_CMD_RESP_ARG_SHIFT (0U)
  3670. #define SDXC_CQCRA_CMD_RESP_ARG_GET(x) (((uint32_t)(x) & SDXC_CQCRA_CMD_RESP_ARG_MASK) >> SDXC_CQCRA_CMD_RESP_ARG_SHIFT)
  3671. /* Bitfield definition for register: MSHC_VER_ID */
  3672. /*
  3673. * VER_ID (RO)
  3674. *
  3675. */
  3676. #define SDXC_MSHC_VER_ID_VER_ID_MASK (0xFFFFFFFFUL)
  3677. #define SDXC_MSHC_VER_ID_VER_ID_SHIFT (0U)
  3678. #define SDXC_MSHC_VER_ID_VER_ID_GET(x) (((uint32_t)(x) & SDXC_MSHC_VER_ID_VER_ID_MASK) >> SDXC_MSHC_VER_ID_VER_ID_SHIFT)
  3679. /* Bitfield definition for register: MSHC_VER_TYPE */
  3680. /*
  3681. * VER_TYPE (RO)
  3682. *
  3683. */
  3684. #define SDXC_MSHC_VER_TYPE_VER_TYPE_MASK (0xFFFFFFFFUL)
  3685. #define SDXC_MSHC_VER_TYPE_VER_TYPE_SHIFT (0U)
  3686. #define SDXC_MSHC_VER_TYPE_VER_TYPE_GET(x) (((uint32_t)(x) & SDXC_MSHC_VER_TYPE_VER_TYPE_MASK) >> SDXC_MSHC_VER_TYPE_VER_TYPE_SHIFT)
  3687. /* Bitfield definition for register: MBIU_CTRL */
  3688. /*
  3689. * BURST_INCR16_EN (RW)
  3690. *
  3691. */
  3692. #define SDXC_MBIU_CTRL_BURST_INCR16_EN_MASK (0x8U)
  3693. #define SDXC_MBIU_CTRL_BURST_INCR16_EN_SHIFT (3U)
  3694. #define SDXC_MBIU_CTRL_BURST_INCR16_EN_SET(x) (((uint32_t)(x) << SDXC_MBIU_CTRL_BURST_INCR16_EN_SHIFT) & SDXC_MBIU_CTRL_BURST_INCR16_EN_MASK)
  3695. #define SDXC_MBIU_CTRL_BURST_INCR16_EN_GET(x) (((uint32_t)(x) & SDXC_MBIU_CTRL_BURST_INCR16_EN_MASK) >> SDXC_MBIU_CTRL_BURST_INCR16_EN_SHIFT)
  3696. /*
  3697. * BURST_INCR8_EN (RW)
  3698. *
  3699. */
  3700. #define SDXC_MBIU_CTRL_BURST_INCR8_EN_MASK (0x4U)
  3701. #define SDXC_MBIU_CTRL_BURST_INCR8_EN_SHIFT (2U)
  3702. #define SDXC_MBIU_CTRL_BURST_INCR8_EN_SET(x) (((uint32_t)(x) << SDXC_MBIU_CTRL_BURST_INCR8_EN_SHIFT) & SDXC_MBIU_CTRL_BURST_INCR8_EN_MASK)
  3703. #define SDXC_MBIU_CTRL_BURST_INCR8_EN_GET(x) (((uint32_t)(x) & SDXC_MBIU_CTRL_BURST_INCR8_EN_MASK) >> SDXC_MBIU_CTRL_BURST_INCR8_EN_SHIFT)
  3704. /*
  3705. * BUSRT_INCR4_EN (RW)
  3706. *
  3707. */
  3708. #define SDXC_MBIU_CTRL_BUSRT_INCR4_EN_MASK (0x2U)
  3709. #define SDXC_MBIU_CTRL_BUSRT_INCR4_EN_SHIFT (1U)
  3710. #define SDXC_MBIU_CTRL_BUSRT_INCR4_EN_SET(x) (((uint32_t)(x) << SDXC_MBIU_CTRL_BUSRT_INCR4_EN_SHIFT) & SDXC_MBIU_CTRL_BUSRT_INCR4_EN_MASK)
  3711. #define SDXC_MBIU_CTRL_BUSRT_INCR4_EN_GET(x) (((uint32_t)(x) & SDXC_MBIU_CTRL_BUSRT_INCR4_EN_MASK) >> SDXC_MBIU_CTRL_BUSRT_INCR4_EN_SHIFT)
  3712. /*
  3713. * UNDEFL_INCR_EN (RW)
  3714. *
  3715. */
  3716. #define SDXC_MBIU_CTRL_UNDEFL_INCR_EN_MASK (0x1U)
  3717. #define SDXC_MBIU_CTRL_UNDEFL_INCR_EN_SHIFT (0U)
  3718. #define SDXC_MBIU_CTRL_UNDEFL_INCR_EN_SET(x) (((uint32_t)(x) << SDXC_MBIU_CTRL_UNDEFL_INCR_EN_SHIFT) & SDXC_MBIU_CTRL_UNDEFL_INCR_EN_MASK)
  3719. #define SDXC_MBIU_CTRL_UNDEFL_INCR_EN_GET(x) (((uint32_t)(x) & SDXC_MBIU_CTRL_UNDEFL_INCR_EN_MASK) >> SDXC_MBIU_CTRL_UNDEFL_INCR_EN_SHIFT)
  3720. /* Bitfield definition for register: EMMC_BOOT_CTRL */
  3721. /*
  3722. * BOOT_TOUT_CNT (RW)
  3723. *
  3724. * Boot Ack Timeout Counter Value.
  3725. * This value determines the interval by which boot ack timeout (50 ms) is detected when boot ack is expected during boot operation.
  3726. * 0xF : Reserved
  3727. * 0xE : TMCLK x 2^27
  3728. * ............
  3729. * 0x1 : TMCLK x 2^14
  3730. * 0x0 : TMCLK x 2^13
  3731. */
  3732. #define SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_MASK (0xF0000000UL)
  3733. #define SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_SHIFT (28U)
  3734. #define SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_SHIFT) & SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_MASK)
  3735. #define SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_MASK) >> SDXC_EMMC_BOOT_CTRL_BOOT_TOUT_CNT_SHIFT)
  3736. /*
  3737. * BOOT_ACK_ENABLE (RW)
  3738. *
  3739. * Boot Acknowledge Enable
  3740. * When this bit set, SDXC checks for boot acknowledge start pattern of 0-1-0 during boot operation. This bit is applicable for both mandatory and alternate boot mode.
  3741. * Values:
  3742. * 0x1 (TRUE): Boot Ack enable
  3743. * 0x0 (FALSE): Boot Ack disable
  3744. */
  3745. #define SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_MASK (0x1000000UL)
  3746. #define SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_SHIFT (24U)
  3747. #define SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_SHIFT) & SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_MASK)
  3748. #define SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_MASK) >> SDXC_EMMC_BOOT_CTRL_BOOT_ACK_ENABLE_SHIFT)
  3749. /*
  3750. * VALIDATE_BOOT (WO)
  3751. *
  3752. * Validate Mandatory Boot Enable bit
  3753. * This bit is used to validate the MAN_BOOT_EN bit.
  3754. * Values:
  3755. * 0x1 (TRUE): Validate Mandatory boot enable bit
  3756. * 0x0 (FALSE): Ignore Mandatory boot Enable bit
  3757. */
  3758. #define SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_MASK (0x800000UL)
  3759. #define SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_SHIFT (23U)
  3760. #define SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_SHIFT) & SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_MASK)
  3761. #define SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_MASK) >> SDXC_EMMC_BOOT_CTRL_VALIDATE_BOOT_SHIFT)
  3762. /*
  3763. * MAN_BOOT_EN (RW)
  3764. *
  3765. * Mandatory Boot Enable
  3766. * This bit is used to initiate the mandatory boot operation. The application sets this bit along with VALIDATE_BOOT bit.
  3767. * Writing 0 is ignored. The SDXC clears this bit after the boot transfer is completed or terminated.
  3768. * Values:
  3769. * 0x1 (MAN_BOOT_EN): Mandatory boot enable
  3770. * 0x0 (MAN_BOOT_DIS): Mandatory boot disable
  3771. */
  3772. #define SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_MASK (0x10000UL)
  3773. #define SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_SHIFT (16U)
  3774. #define SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_SHIFT) & SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_MASK)
  3775. #define SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_MASK) >> SDXC_EMMC_BOOT_CTRL_MAN_BOOT_EN_SHIFT)
  3776. /*
  3777. * CQE_PREFETCH_DISABLE (RW)
  3778. *
  3779. * Enable or Disable CQE's PREFETCH feature
  3780. * This field allows Software to disable CQE's data prefetch feature when set to 1.
  3781. * Values:
  3782. * 0x0 (PREFETCH_ENABLE): CQE can Prefetch data for sucessive WRITE transfers and pipeline sucessive READ transfers
  3783. * 0x1 (PREFETCH_DISABLE): Prefetch for WRITE and Pipeline for READ are disabled
  3784. */
  3785. #define SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_MASK (0x400U)
  3786. #define SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_SHIFT (10U)
  3787. #define SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_SHIFT) & SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_MASK)
  3788. #define SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_MASK) >> SDXC_EMMC_BOOT_CTRL_CQE_PREFETCH_DISABLE_SHIFT)
  3789. /*
  3790. * CQE_ALGO_SEL (RW)
  3791. *
  3792. * Scheduler algorithm selected for execution
  3793. * This bit selects the Algorithm used for selecting one of the many ready tasks for execution.
  3794. * Values:
  3795. * 0x0 (PRI_REORDER_PLUS_FCFS): Priority based reordering with FCFS to resolve equal priority tasks
  3796. * 0x1 (FCFS_ONLY): First come First serve, in the order of DBR rings
  3797. */
  3798. #define SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_MASK (0x200U)
  3799. #define SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_SHIFT (9U)
  3800. #define SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_SHIFT) & SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_MASK)
  3801. #define SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_MASK) >> SDXC_EMMC_BOOT_CTRL_CQE_ALGO_SEL_SHIFT)
  3802. /*
  3803. * ENH_STROBE_ENABLE (RW)
  3804. *
  3805. * Enhanced Strobe Enable
  3806. * This bit instructs SDXC to sample the CMD line using data strobe for HS400 mode.
  3807. * Values:
  3808. * 0x1 (ENH_STB_FOR_CMD): CMD line is sampled using data strobe for HS400 mode
  3809. * 0x0 (NO_STB_FOR_CMD): CMD line is sampled using cclk_rx for HS400 mode
  3810. */
  3811. #define SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_MASK (0x100U)
  3812. #define SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_SHIFT (8U)
  3813. #define SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_SHIFT) & SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_MASK)
  3814. #define SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_MASK) >> SDXC_EMMC_BOOT_CTRL_ENH_STROBE_ENABLE_SHIFT)
  3815. /*
  3816. * EMMC_RST_N_OE (RW)
  3817. *
  3818. * Output Enable control for EMMC Device Reset signal PAD
  3819. * control.
  3820. * This field drived sd_rst_n_oe output of SDXC
  3821. * Values:
  3822. * 0x1 (ENABLE): sd_rst_n_oe is 1
  3823. * 0x0 (DISABLE): sd_rst_n_oe is 0
  3824. */
  3825. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_MASK (0x8U)
  3826. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_SHIFT (3U)
  3827. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_SHIFT) & SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_MASK)
  3828. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_MASK) >> SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_OE_SHIFT)
  3829. /*
  3830. * EMMC_RST_N (RW)
  3831. *
  3832. * EMMC Device Reset signal control.
  3833. * This register field controls the sd_rst_n output of SDXC
  3834. * Values:
  3835. * 0x1 (RST_DEASSERT): Reset to eMMC device is deasserted
  3836. * 0x0 (RST_ASSERT): Reset to eMMC device asserted (active low)
  3837. */
  3838. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_MASK (0x4U)
  3839. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_SHIFT (2U)
  3840. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_SHIFT) & SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_MASK)
  3841. #define SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_MASK) >> SDXC_EMMC_BOOT_CTRL_EMMC_RST_N_SHIFT)
  3842. /*
  3843. * DISABLE_DATA_CRC_CHK (RW)
  3844. *
  3845. * Disable Data CRC Check
  3846. * This bit controls masking of CRC16 error for Card Write in eMMC mode.
  3847. * This is useful in bus testing (CMD19) for an eMMC device. In bus testing, an eMMC card does not send CRC status for a block,
  3848. * which may generate CRC error. This CRC error can be masked using this bit during bus testing.
  3849. * Values:
  3850. * 0x1 (DISABLE): DATA CRC check is disabled
  3851. * 0x0 (ENABLE): DATA CRC check is enabled
  3852. */
  3853. #define SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_MASK (0x2U)
  3854. #define SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_SHIFT (1U)
  3855. #define SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_SHIFT) & SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_MASK)
  3856. #define SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_MASK) >> SDXC_EMMC_BOOT_CTRL_DISABLE_DATA_CRC_CHK_SHIFT)
  3857. /*
  3858. * CARD_IS_EMMC (RW)
  3859. *
  3860. * eMMC Card present
  3861. * This bit indicates the type of card connected. An application program this bit based on the card connected to SDXC.
  3862. * Values:
  3863. * 0x1 (EMMC_CARD): Card connected to SDXC is an eMMC card
  3864. * 0x0 (NON_EMMC_CARD): Card connected to SDXCis a non-eMMC card
  3865. */
  3866. #define SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_MASK (0x1U)
  3867. #define SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_SHIFT (0U)
  3868. #define SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_SET(x) (((uint32_t)(x) << SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_SHIFT) & SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_MASK)
  3869. #define SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_GET(x) (((uint32_t)(x) & SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_MASK) >> SDXC_EMMC_BOOT_CTRL_CARD_IS_EMMC_SHIFT)
  3870. /* Bitfield definition for register: AUTO_TUNING_CTRL */
  3871. /*
  3872. * SWIN_TH_VAL (RW)
  3873. *
  3874. * Sampling window threshold value setting
  3875. * The maximum value that can be set here depends on the length of delayline used for tuning. A delayLine with 32 taps
  3876. * can use values from 0x0 to 0x1F.
  3877. * This field is valid only when SWIN_TH_EN is '1'. Should be programmed only when SAMPLE_CLK_SEL is '0'
  3878. * 0x0 : Threshold values is 0x1, windows of length 1 tap and above can be selected as sampling window.
  3879. * 0x1 : Threshold values is 0x2, windows of length 2 taps and above can be selected as sampling window.
  3880. * 0x2 : Threshold values is 0x1, windows of length 3 taps and above can be selected as sampling window.
  3881. * ........
  3882. * 0x1F : Threshold values is 0x1, windows of length 32 taps and above can be selected as sampling window.
  3883. */
  3884. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_MASK (0x7F000000UL)
  3885. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_SHIFT (24U)
  3886. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_SHIFT) & SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_MASK)
  3887. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_MASK) >> SDXC_AUTO_TUNING_CTRL_SWIN_TH_VAL_SHIFT)
  3888. /*
  3889. * POST_CHANGE_DLY (RW)
  3890. *
  3891. * Time taken for phase switching and stable clock output.
  3892. * Specifies the maximum time (in terms of cclk cycles) that the delay line can take to switch its output phase after a change in tuning_cclk_sel or autotuning_cclk_sel.
  3893. * Values:
  3894. * 0x0 (LATENCY_LT_1): Less than 1-cycle latency
  3895. * 0x1 (LATENCY_LT_2): Less than 2-cycle latency
  3896. * 0x2 (LATENCY_LT_3): Less than 3-cycle latency
  3897. * 0x3 (LATENCY_LT_4): Less than 4-cycle latency
  3898. */
  3899. #define SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_MASK (0x180000UL)
  3900. #define SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_SHIFT (19U)
  3901. #define SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_SHIFT) & SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_MASK)
  3902. #define SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_MASK) >> SDXC_AUTO_TUNING_CTRL_POST_CHANGE_DLY_SHIFT)
  3903. /*
  3904. * PRE_CHANGE_DLY (RW)
  3905. *
  3906. * Maximum Latency specification between cclk_tx and cclk_rx.
  3907. * Values:
  3908. * 0x0 (LATENCY_LT_1): Less than 1-cycle latency
  3909. * 0x1 (LATENCY_LT_2): Less than 2-cycle latency
  3910. * 0x2 (LATENCY_LT_3): Less than 3-cycle latency
  3911. * 0x3 (LATENCY_LT_4): Less than 4-cycle latency
  3912. */
  3913. #define SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_MASK (0x60000UL)
  3914. #define SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_SHIFT (17U)
  3915. #define SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_SHIFT) & SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_MASK)
  3916. #define SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_MASK) >> SDXC_AUTO_TUNING_CTRL_PRE_CHANGE_DLY_SHIFT)
  3917. /*
  3918. * TUNE_CLK_STOP_EN (RW)
  3919. *
  3920. * Clock stopping control for Tuning and auto-tuning circuit.
  3921. * When enabled, clock gate control output of SDXC (clk2card_on) is pulled low before changing phase select codes on tuning_cclk_sel and autotuning_cclk_sel.
  3922. * This effectively stops the Device/Card clock, cclk_rx and also drift_cclk_rx. Changing phase code when clocks are stopped ensures glitch free phase switching.
  3923. * Set this bit to 0 if the PHY or delayline can guarantee glitch free switching.
  3924. * Values:
  3925. * 0x1 (ENABLE_CLK_STOPPING): Clocks stopped during phase code change
  3926. * 0x0 (DISABLE_CLK_STOPPING): Clocks not stopped. PHY ensures glitch free phase switching
  3927. */
  3928. #define SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_MASK (0x10000UL)
  3929. #define SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_SHIFT (16U)
  3930. #define SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_SHIFT) & SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_MASK)
  3931. #define SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_MASK) >> SDXC_AUTO_TUNING_CTRL_TUNE_CLK_STOP_EN_SHIFT)
  3932. /*
  3933. * WIN_EDGE_SEL (RW)
  3934. *
  3935. * This field sets the phase for Left and Right edges for drift monitoring. [Left edge offset + Right edge offset] must not be less than total taps of delayLine.
  3936. * 0x0: User selection disabled. Tuning calculated edges are used.
  3937. * 0x1: Right edge Phase is center + 2 stages, Left edge Phase is center - 2 stages.
  3938. * 0x2: Right edge Phase is center + 3 stages, Left edge Phase is center - 3 stagess
  3939. * ...
  3940. * 0xF: Right edge Phase is center + 16 stages, Left edge Phase is center - 16 stages.
  3941. */
  3942. #define SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_MASK (0xF00U)
  3943. #define SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_SHIFT (8U)
  3944. #define SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_SHIFT) & SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_MASK)
  3945. #define SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_MASK) >> SDXC_AUTO_TUNING_CTRL_WIN_EDGE_SEL_SHIFT)
  3946. /*
  3947. * SW_TUNE_EN (RW)
  3948. *
  3949. * This fields enables software-managed tuning flow.
  3950. * Values:
  3951. * 0x1 (SW_TUNING_ENABLE): Software-managed tuning enabled. AT_STAT_R.CENTER_PH_CODE Field is now writable.
  3952. * 0x0 (SW_TUNING_DISABLE): Software-managed tuning disabled
  3953. */
  3954. #define SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_MASK (0x10U)
  3955. #define SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_SHIFT (4U)
  3956. #define SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_SHIFT) & SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_MASK)
  3957. #define SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_MASK) >> SDXC_AUTO_TUNING_CTRL_SW_TUNE_EN_SHIFT)
  3958. /*
  3959. * RPT_TUNE_ERR (RW)
  3960. *
  3961. * Framing errors are not generated when executing tuning.
  3962. * This debug bit allows users to report these errors.
  3963. * Values:
  3964. * 0x1 (DEBUG_ERRORS): Debug mode for reporting framing errors
  3965. * 0x0 (ERRORS_DISABLED): Default mode where as per SDXC no errors are reported.
  3966. */
  3967. #define SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_MASK (0x8U)
  3968. #define SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_SHIFT (3U)
  3969. #define SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_SHIFT) & SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_MASK)
  3970. #define SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_MASK) >> SDXC_AUTO_TUNING_CTRL_RPT_TUNE_ERR_SHIFT)
  3971. /*
  3972. * SWIN_TH_EN (RW)
  3973. *
  3974. * Sampling window Threshold enable
  3975. * Selects the tuning mode
  3976. * Field should be programmed only when SAMPLE_CLK_SEL is '0'
  3977. * Values:
  3978. * 0x1 (THRESHOLD_MODE): Tuning engine selects the first complete sampling window that meets the threshold
  3979. * set by SWIN_TH_VAL field
  3980. * 0x0 (LARGEST_WIN_MODE): Tuning engine sweeps all taps and settles at the largest window
  3981. */
  3982. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_MASK (0x4U)
  3983. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_SHIFT (2U)
  3984. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_SHIFT) & SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_MASK)
  3985. #define SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_MASK) >> SDXC_AUTO_TUNING_CTRL_SWIN_TH_EN_SHIFT)
  3986. /*
  3987. * CI_SEL (RW)
  3988. *
  3989. * Selects the interval when the corrected center phase select code can be driven on tuning_cclk_sel output.
  3990. * Values:
  3991. * 0x0 (WHEN_IN_BLK_GAP): Driven in block gap interval
  3992. * 0x1 (WHEN_IN_IDLE): Driven at the end of the transfer
  3993. */
  3994. #define SDXC_AUTO_TUNING_CTRL_CI_SEL_MASK (0x2U)
  3995. #define SDXC_AUTO_TUNING_CTRL_CI_SEL_SHIFT (1U)
  3996. #define SDXC_AUTO_TUNING_CTRL_CI_SEL_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_CI_SEL_SHIFT) & SDXC_AUTO_TUNING_CTRL_CI_SEL_MASK)
  3997. #define SDXC_AUTO_TUNING_CTRL_CI_SEL_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_CI_SEL_MASK) >> SDXC_AUTO_TUNING_CTRL_CI_SEL_SHIFT)
  3998. /*
  3999. * AT_EN (RW)
  4000. *
  4001. * Setting this bit enables Auto tuning engine. This bit is enabled by default when core is configured with mode3 retuning support.
  4002. * Clear this bit to 0 when core is configured to have Mode3 re-tuning but SW wishes to disable mode3 retuning.
  4003. * This field should be programmed only when CLK_CTRL_R.SD_CLK_EN is 0.
  4004. * Values:
  4005. * 0x1 (AT_ENABLE): AutoTuning is enabled
  4006. * 0x0 (AT_DISABLE): AutoTuning is disabled
  4007. */
  4008. #define SDXC_AUTO_TUNING_CTRL_AT_EN_MASK (0x1U)
  4009. #define SDXC_AUTO_TUNING_CTRL_AT_EN_SHIFT (0U)
  4010. #define SDXC_AUTO_TUNING_CTRL_AT_EN_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_CTRL_AT_EN_SHIFT) & SDXC_AUTO_TUNING_CTRL_AT_EN_MASK)
  4011. #define SDXC_AUTO_TUNING_CTRL_AT_EN_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_CTRL_AT_EN_MASK) >> SDXC_AUTO_TUNING_CTRL_AT_EN_SHIFT)
  4012. /* Bitfield definition for register: AUTO_TUNING_STAT */
  4013. /*
  4014. * L_EDGE_PH_CODE (RO)
  4015. *
  4016. * Left Edge Phase code. Reading this field returns the phase code value used by Auto-tuning engine to sample data on Left edge of sampling window.
  4017. */
  4018. #define SDXC_AUTO_TUNING_STAT_L_EDGE_PH_CODE_MASK (0xFF0000UL)
  4019. #define SDXC_AUTO_TUNING_STAT_L_EDGE_PH_CODE_SHIFT (16U)
  4020. #define SDXC_AUTO_TUNING_STAT_L_EDGE_PH_CODE_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_STAT_L_EDGE_PH_CODE_MASK) >> SDXC_AUTO_TUNING_STAT_L_EDGE_PH_CODE_SHIFT)
  4021. /*
  4022. * R_EDGE_PH_CODE (RO)
  4023. *
  4024. * Right Edge Phase code. Reading this field returns the phase code value used by Auto-tuning engine to sample data on Right edge of sampling window.
  4025. */
  4026. #define SDXC_AUTO_TUNING_STAT_R_EDGE_PH_CODE_MASK (0xFF00U)
  4027. #define SDXC_AUTO_TUNING_STAT_R_EDGE_PH_CODE_SHIFT (8U)
  4028. #define SDXC_AUTO_TUNING_STAT_R_EDGE_PH_CODE_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_STAT_R_EDGE_PH_CODE_MASK) >> SDXC_AUTO_TUNING_STAT_R_EDGE_PH_CODE_SHIFT)
  4029. /*
  4030. * CENTER_PH_CODE (RW)
  4031. *
  4032. * Centered Phase code. Reading this field returns the current value on tuning_cclk_sel output. Setting AT_CTRL_R.SW_TUNE_EN enables software to write to this field and its contents are reflected on tuning_cclk_sel
  4033. */
  4034. #define SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_MASK (0xFFU)
  4035. #define SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_SHIFT (0U)
  4036. #define SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_SET(x) (((uint32_t)(x) << SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_SHIFT) & SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_MASK)
  4037. #define SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_GET(x) (((uint32_t)(x) & SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_MASK) >> SDXC_AUTO_TUNING_STAT_CENTER_PH_CODE_SHIFT)
  4038. /* Bitfield definition for register: MISC_CTRL0 */
  4039. /*
  4040. * CARDCLK_INV_EN (RW)
  4041. *
  4042. * set to invert card_clk, for slow speed card to meet 5ns setup timing.
  4043. * May cause glitch on clock, should be set before enable clk(in core cfg)
  4044. */
  4045. #define SDXC_MISC_CTRL0_CARDCLK_INV_EN_MASK (0x10000000UL)
  4046. #define SDXC_MISC_CTRL0_CARDCLK_INV_EN_SHIFT (28U)
  4047. #define SDXC_MISC_CTRL0_CARDCLK_INV_EN_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL0_CARDCLK_INV_EN_SHIFT) & SDXC_MISC_CTRL0_CARDCLK_INV_EN_MASK)
  4048. #define SDXC_MISC_CTRL0_CARDCLK_INV_EN_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL0_CARDCLK_INV_EN_MASK) >> SDXC_MISC_CTRL0_CARDCLK_INV_EN_SHIFT)
  4049. /*
  4050. * PAD_CLK_SEL_B (RW)
  4051. *
  4052. * set to use internal clock directly, may have timing issue;
  4053. * clr to use clock loopback from pad.
  4054. */
  4055. #define SDXC_MISC_CTRL0_PAD_CLK_SEL_B_MASK (0x20000UL)
  4056. #define SDXC_MISC_CTRL0_PAD_CLK_SEL_B_SHIFT (17U)
  4057. #define SDXC_MISC_CTRL0_PAD_CLK_SEL_B_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL0_PAD_CLK_SEL_B_SHIFT) & SDXC_MISC_CTRL0_PAD_CLK_SEL_B_MASK)
  4058. #define SDXC_MISC_CTRL0_PAD_CLK_SEL_B_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL0_PAD_CLK_SEL_B_MASK) >> SDXC_MISC_CTRL0_PAD_CLK_SEL_B_SHIFT)
  4059. /*
  4060. * FREQ_SEL_SW_EN (RW)
  4061. *
  4062. * set to use FREQ_SEL_SW as card clock divider;
  4063. * clear to use core logic as clock divider.
  4064. */
  4065. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_MASK (0x800U)
  4066. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_SHIFT (11U)
  4067. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_SHIFT) & SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_MASK)
  4068. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_MASK) >> SDXC_MISC_CTRL0_FREQ_SEL_SW_EN_SHIFT)
  4069. /*
  4070. * TMCLK_EN (RW)
  4071. *
  4072. * set to force enable tmclk;
  4073. * clear to use core signal intclk_en to control it
  4074. */
  4075. #define SDXC_MISC_CTRL0_TMCLK_EN_MASK (0x400U)
  4076. #define SDXC_MISC_CTRL0_TMCLK_EN_SHIFT (10U)
  4077. #define SDXC_MISC_CTRL0_TMCLK_EN_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL0_TMCLK_EN_SHIFT) & SDXC_MISC_CTRL0_TMCLK_EN_MASK)
  4078. #define SDXC_MISC_CTRL0_TMCLK_EN_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL0_TMCLK_EN_MASK) >> SDXC_MISC_CTRL0_TMCLK_EN_SHIFT)
  4079. /*
  4080. * FREQ_SEL_SW (RW)
  4081. *
  4082. * software card clock divider, it will be used only when FREQ_SEL_SW_EN is set
  4083. */
  4084. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_MASK (0x3FFU)
  4085. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_SHIFT (0U)
  4086. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL0_FREQ_SEL_SW_SHIFT) & SDXC_MISC_CTRL0_FREQ_SEL_SW_MASK)
  4087. #define SDXC_MISC_CTRL0_FREQ_SEL_SW_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL0_FREQ_SEL_SW_MASK) >> SDXC_MISC_CTRL0_FREQ_SEL_SW_SHIFT)
  4088. /* Bitfield definition for register: MISC_CTRL1 */
  4089. /*
  4090. * CARD_ACTIVE (RW)
  4091. *
  4092. * SW write 1 to start card clock delay counter(delay time is configed by CARD_ACTIVE_PERIOD_SEL).
  4093. * When counter finished, this bit will be cleared by hardware.
  4094. * Write 1 when this bit is 1 will cause unknown result(actually no use except write at exact finish time)
  4095. */
  4096. #define SDXC_MISC_CTRL1_CARD_ACTIVE_MASK (0x80000000UL)
  4097. #define SDXC_MISC_CTRL1_CARD_ACTIVE_SHIFT (31U)
  4098. #define SDXC_MISC_CTRL1_CARD_ACTIVE_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL1_CARD_ACTIVE_SHIFT) & SDXC_MISC_CTRL1_CARD_ACTIVE_MASK)
  4099. #define SDXC_MISC_CTRL1_CARD_ACTIVE_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL1_CARD_ACTIVE_MASK) >> SDXC_MISC_CTRL1_CARD_ACTIVE_SHIFT)
  4100. /*
  4101. * CARD_ACTIVE_PERIOD_SEL (RW)
  4102. *
  4103. * card clock delay config.
  4104. * 00 for 100 cycle; 01 for 74 cycle; 10 for 128 cycle; 11 for 256 cycle
  4105. */
  4106. #define SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_MASK (0x30000000UL)
  4107. #define SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_SHIFT (28U)
  4108. #define SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_SHIFT) & SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_MASK)
  4109. #define SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_MASK) >> SDXC_MISC_CTRL1_CARD_ACTIVE_PERIOD_SEL_SHIFT)
  4110. /*
  4111. * CARDCLK_DLYSEL (RW)
  4112. *
  4113. * for card clock DLL, default 0
  4114. */
  4115. #define SDXC_MISC_CTRL1_CARDCLK_DLYSEL_MASK (0x3F00000UL)
  4116. #define SDXC_MISC_CTRL1_CARDCLK_DLYSEL_SHIFT (20U)
  4117. #define SDXC_MISC_CTRL1_CARDCLK_DLYSEL_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL1_CARDCLK_DLYSEL_SHIFT) & SDXC_MISC_CTRL1_CARDCLK_DLYSEL_MASK)
  4118. #define SDXC_MISC_CTRL1_CARDCLK_DLYSEL_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL1_CARDCLK_DLYSEL_MASK) >> SDXC_MISC_CTRL1_CARDCLK_DLYSEL_SHIFT)
  4119. /*
  4120. * STROBE_DLYSEL (RW)
  4121. *
  4122. * for strobe DLL, default 7taps(1ns)
  4123. */
  4124. #define SDXC_MISC_CTRL1_STROBE_DLYSEL_MASK (0x3F000UL)
  4125. #define SDXC_MISC_CTRL1_STROBE_DLYSEL_SHIFT (12U)
  4126. #define SDXC_MISC_CTRL1_STROBE_DLYSEL_SET(x) (((uint32_t)(x) << SDXC_MISC_CTRL1_STROBE_DLYSEL_SHIFT) & SDXC_MISC_CTRL1_STROBE_DLYSEL_MASK)
  4127. #define SDXC_MISC_CTRL1_STROBE_DLYSEL_GET(x) (((uint32_t)(x) & SDXC_MISC_CTRL1_STROBE_DLYSEL_MASK) >> SDXC_MISC_CTRL1_STROBE_DLYSEL_SHIFT)
  4128. /* RESP register group index macro definition */
  4129. #define SDXC_RESP_RESP01 (0UL)
  4130. #define SDXC_RESP_RESP23 (1UL)
  4131. #define SDXC_RESP_RESP45 (2UL)
  4132. #define SDXC_RESP_RESP67 (3UL)
  4133. /* PRESET register group index macro definition */
  4134. #define SDXC_PRESET_INIT (0UL)
  4135. #define SDXC_PRESET_DS (1UL)
  4136. #define SDXC_PRESET_HS (2UL)
  4137. #define SDXC_PRESET_SDR12 (3UL)
  4138. #define SDXC_PRESET_SDR25 (4UL)
  4139. #define SDXC_PRESET_SDR50 (5UL)
  4140. #define SDXC_PRESET_SDR104 (6UL)
  4141. #define SDXC_PRESET_DDR50 (7UL)
  4142. #define SDXC_PRESET_UHS2 (10UL)
  4143. #endif /* HPM_SDXC_H */