at91sam9g45.h 573 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213
  1. // ----------------------------------------------------------------------------
  2. // ATMEL Microcontroller Software Support - ROUSSET -
  3. // ----------------------------------------------------------------------------
  4. // Copyright (c) 2008, Atmel Corporation
  5. //
  6. // All rights reserved.
  7. //
  8. // Redistribution and use in source and binary forms, with or without
  9. // modification, are permitted provided that the following conditions are met:
  10. //
  11. // - Redistributions of source code must retain the above copyright notice,
  12. // this list of conditions and the disclaimer below.
  13. //
  14. // Atmel's name may not be used to endorse or promote products derived from
  15. // this software without specific prior written permission.
  16. //
  17. // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
  18. // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  19. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
  20. // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
  21. // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  22. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
  23. // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  24. // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  25. // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  26. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. // ----------------------------------------------------------------------------
  28. // File Name : AT91SAM9G45.h
  29. // Object : AT91SAM9G45 definitions
  30. // Generated : AT91 SW Application Group 06/25/2009 (10:53:08)
  31. //
  32. // CVS Reference : /AT91SAM9G45.pl/1.1/Wed May 20 12:05:51 2009//
  33. // CVS Reference : /SYS_SAM9264.pl/1.2/Tue Oct 2 12:19:30 2007//
  34. // CVS Reference : /HMATRIX2_SAM9G45.pl/1.1/Wed May 20 09:31:20 2009//
  35. // CVS Reference : /PMC_SAM9264.pl/1.9/Thu Nov 29 09:55:11 2007//
  36. // CVS Reference : /HDDRSDRC2_6304B.pl/1.1/Thu Oct 11 10:44:49 2007//
  37. // CVS Reference : /EBI_SAM9260.pl/1.1/Fri Sep 30 12:12:14 2005//
  38. // CVS Reference : /HSMC3_SAM9264.pl/1.1/Wed Oct 10 09:39:31 2007//
  39. // CVS Reference : /HECC_6143A.pl/1.1/Wed Feb 9 17:16:57 2005//
  40. // CVS Reference : /SFR_SAM9264.pl/1.4/Fri Feb 29 14:02:55 2008//
  41. // CVS Reference : /AIC_6075A.pl/1.1/Mon Jul 12 17:04:01 2004//
  42. // CVS Reference : /PDC_6074C.pl/1.2/Thu Feb 3 09:02:11 2005//
  43. // CVS Reference : /DBGU_6059D.pl/1.1/Mon Jan 31 13:54:41 2005//
  44. // CVS Reference : /PIO_SAM9264.pl/1.1/Wed Oct 10 09:38:26 2007//
  45. // CVS Reference : /RSTC_6098A.pl/1.4/Fri Oct 17 13:27:55 2008//
  46. // CVS Reference : /SHDWC_6122A.pl/1.3/Wed Oct 6 14:16:58 2004//
  47. // CVS Reference : /RTTC_6081A.pl/1.2/Thu Nov 4 13:57:22 2004//
  48. // CVS Reference : /PITC_6079A.pl/1.2/Thu Nov 4 13:56:22 2004//
  49. // CVS Reference : /WDTC_6080A.pl/1.3/Thu Nov 4 13:58:52 2004//
  50. // CVS Reference : /TC_6082A.pl/1.8/Fri Oct 17 13:27:58 2008//
  51. // CVS Reference : /MCI_6101F.pl/1.3/Fri Jan 23 09:15:32 2009//
  52. // CVS Reference : /TWI_6061B.pl/1.3/Fri Oct 17 13:27:59 2008//
  53. // CVS Reference : /US_6089J.pl/1.3/Fri Oct 17 13:27:59 2008//
  54. // CVS Reference : /SSC_6078B.pl/1.3/Fri Oct 17 13:27:57 2008//
  55. // CVS Reference : /SPI_6088D.pl/1.3/Fri May 20 14:23:02 2005//
  56. // CVS Reference : /AC97C_XXXX.pl/1.3/Tue Feb 22 17:08:27 2005//
  57. // CVS Reference : /PWM_6044D.pl/1.2/Tue May 10 12:39:09 2005//
  58. // CVS Reference : /LCDC_6063A.pl/1.6/Tue Jan 20 16:29:59 2009//
  59. // CVS Reference : /HDMA_SAM9264.pl/1.2/Thu Sep 13 11:48:30 2007//
  60. // CVS Reference : /UDPHS_SAM9_7ept6dma4iso.pl/1.4/Tue Jun 24 13:05:14 2008//
  61. // CVS Reference : /TSC_SAM9264.pl/1.2/Thu Jun 25 08:43:26 2009//
  62. // CVS Reference : /RTC_1245D.pl/1.3/Fri Sep 17 14:01:31 2004//
  63. // CVS Reference : /EMACB_SAM9264.pl/1.1/Tue Sep 25 12:07:23 2007//
  64. // CVS Reference : /uhphs_ohci.pl/1.1/Fri Jun 22 14:20:34 2007//
  65. // CVS Reference : /uhphs_ehci.pl/1.3/Tue Jul 17 07:50:29 2007//
  66. // CVS Reference : /ISI_SAM9264.pl/1.2/Wed Sep 3 08:30:55 2008//
  67. // CVS Reference : /TRNG_xxxxx.pl/1.1/Wed Jul 18 12:02:58 2007//
  68. // ----------------------------------------------------------------------------
  69. #ifndef AT91SAM9G45_H
  70. #define AT91SAM9G45_H
  71. #ifndef __ASSEMBLY__
  72. typedef volatile unsigned int AT91C_REG;// Hardware register definition
  73. #define AT91C_CAST(a) (a)
  74. #else
  75. #define AT91C_CAST(a)
  76. #endif
  77. //------------------------------------------------------------------------------
  78. // Definitions
  79. //------------------------------------------------------------------------------
  80. //for CPSR
  81. #define ARM_MODE_ABT 0x17
  82. #define ARM_MODE_FIQ 0x11
  83. #define ARM_MODE_IRQ 0x12
  84. #define ARM_MODE_SVC 0x13
  85. #define ARM_MODE_SYS 0x1F
  86. #define ARM_MODE_UND 0x1b
  87. #define ARM_MODE_USR 0x10
  88. #define ARM_MODE_MASK 0x1F
  89. #define I_BIT 0x80
  90. #define F_BIT 0x40
  91. #define T_BIT 0x20
  92. // *****************************************************************************
  93. // SOFTWARE API DEFINITION FOR SPECIAL FUNCTION REGISTER
  94. // *****************************************************************************
  95. #ifndef __ASSEMBLY__
  96. typedef struct _AT91S_SFR {
  97. AT91C_REG SFR_EMA; // memory Extra Margin Adjustment control
  98. AT91C_REG SFR_DDRCFG; // DDR2 SSTL18 control
  99. AT91C_REG SFR_DDRDELAY; // DDR2 controller clock delay
  100. AT91C_REG SFR_EBIDELAY; // EBI DDR controller clock delay
  101. AT91C_REG SFR_UTMICFG; // UTMI Software Reset, and OHCI suspend interrupt control
  102. AT91C_REG SFR_INT; // OHCI suspend Interrupt status
  103. } AT91S_SFR, *AT91PS_SFR;
  104. #else
  105. #define SFR_EMA (AT91C_CAST(AT91C_REG *) 0x00000000) // (SFR_EMA) memory Extra Margin Adjustment control
  106. #define SFR_DDRCFG (AT91C_CAST(AT91C_REG *) 0x00000004) // (SFR_DDRCFG) DDR2 SSTL18 control
  107. #define SFR_DDRDELAY (AT91C_CAST(AT91C_REG *) 0x00000008) // (SFR_DDRDELAY) DDR2 controller clock delay
  108. #define SFR_EBIDELAY (AT91C_CAST(AT91C_REG *) 0x0000000C) // (SFR_EBIDELAY) EBI DDR controller clock delay
  109. #define SFR_UTMICFG (AT91C_CAST(AT91C_REG *) 0x00000010) // (SFR_UTMICFG) UTMI Software Reset, and OHCI suspend interrupt control
  110. #define SFR_OHCI_SUSP_INT (AT91C_CAST(AT91C_REG *) 0x00000014) // (SFR_OHCI_SUSP_INT) OHCI suspend Interrupt status
  111. #endif
  112. // -------- SFR_EMA : (SFR Offset: 0x0) memory Extra Margin Adjustment control register --------
  113. #define AT91C_SFR_RAM_EMA (0x7 << 0) // (SFR) SRAM EMA
  114. #define AT91C_SFR_RAM_EMA_0 (0x0) // (SFR) Normal Mode
  115. #define AT91C_SFR_RAM_EMA_1 (0x1) // (SFR) DEBUG MODE 1
  116. #define AT91C_SFR_RAM_EMA_2 (0x2) // (SFR) DEBUG MODE 2
  117. #define AT91C_SFR_RAM_EMA_3 (0x3) // (SFR) DEBUG MODE 3
  118. #define AT91C_SFR_RAM_EMA_4 (0x4) // (SFR) DEBUG MODE 4
  119. #define AT91C_SFR_RAM_EMA_5 (0x5) // (SFR) DEBUG MODE 5
  120. #define AT91C_SFR_RAM_EMA_6 (0x6) // (SFR) DEBUG MODE 6
  121. #define AT91C_SFR_RAM_EMA_7 (0x7) // (SFR) DEBUG MODE 7
  122. #define AT91C_SFR_DPRAM_EMA (0x7 << 4) // (SFR) SRAM EMA
  123. #define AT91C_SFR_DPRAM_EMA_0 (0x0 << 4) // (SFR) Normal Mode
  124. #define AT91C_SFR_DPRAM_EMA_1 (0x1 << 4) // (SFR) DEBUG MODE 1
  125. #define AT91C_SFR_DPRAM_EMA_2 (0x2 << 4) // (SFR) DEBUG MODE 2
  126. #define AT91C_SFR_DPRAM_EMA_3 (0x3 << 4) // (SFR) DEBUG MODE 3
  127. #define AT91C_SFR_DPRAM_EMA_4 (0x4 << 4) // (SFR) DEBUG MODE 4
  128. #define AT91C_SFR_DPRAM_EMA_5 (0x5 << 4) // (SFR) DEBUG MODE 5
  129. #define AT91C_SFR_DPRAM_EMA_6 (0x6 << 4) // (SFR) DEBUG MODE 6
  130. #define AT91C_SFR_DPRAM_EMA_7 (0x7 << 4) // (SFR) DEBUG MODE 7
  131. #define AT91C_SFR_RF_EMA (0x7 << 8) // (SFR) SRAM EMA
  132. #define AT91C_SFR_RF_EMA_0 (0x0 << 8) // (SFR) Normal Mode
  133. #define AT91C_SFR_RF_EMA_1 (0x1 << 8) // (SFR) DEBUG MODE 1
  134. #define AT91C_SFR_RF_EMA_2 (0x2 << 8) // (SFR) DEBUG MODE 2
  135. #define AT91C_SFR_RF_EMA_3 (0x3 << 8) // (SFR) DEBUG MODE 3
  136. #define AT91C_SFR_RF_EMA_4 (0x4 << 8) // (SFR) DEBUG MODE 4
  137. #define AT91C_SFR_RF_EMA_5 (0x5 << 8) // (SFR) DEBUG MODE 5
  138. #define AT91C_SFR_RF_EMA_6 (0x6 << 8) // (SFR) DEBUG MODE 6
  139. #define AT91C_SFR_RF_EMA_7 (0x7 << 8) // (SFR) DEBUG MODE 7
  140. #define AT91C_SFR_DPRF_EMA (0x7 << 12) // (SFR) SRAM EMA
  141. #define AT91C_SFR_DPRF_EMA_0 (0x0 << 12) // (SFR) Normal Mode
  142. #define AT91C_SFR_DPRF_EMA_1 (0x1 << 12) // (SFR) DEBUG MODE 1
  143. #define AT91C_SFR_DPRF_EMA_2 (0x2 << 12) // (SFR) DEBUG MODE 2
  144. #define AT91C_SFR_DPRF_EMA_3 (0x3 << 12) // (SFR) DEBUG MODE 3
  145. #define AT91C_SFR_DPRF_EMA_4 (0x4 << 12) // (SFR) DEBUG MODE 4
  146. #define AT91C_SFR_DPRF_EMA_5 (0x5 << 12) // (SFR) DEBUG MODE 5
  147. #define AT91C_SFR_DPRF_EMA_6 (0x6 << 12) // (SFR) DEBUG MODE 6
  148. #define AT91C_SFR_DPRF_EMA_7 (0x7 << 12) // (SFR) DEBUG MODE 7
  149. #define AT91C_SFR_ROM_EMA (0x7 << 16) // (SFR) SRAM EMA
  150. #define AT91C_SFR_ROM_EMA_0 (0x0 << 16) // (SFR) Normal Mode
  151. #define AT91C_SFR_ROM_EMA_1 (0x1 << 16) // (SFR) DEBUG MODE 1
  152. #define AT91C_SFR_ROM_EMA_2 (0x2 << 16) // (SFR) DEBUG MODE 2
  153. #define AT91C_SFR_ROM_EMA_3 (0x3 << 16) // (SFR) DEBUG MODE 3
  154. #define AT91C_SFR_ROM_EMA_4 (0x4 << 16) // (SFR) DEBUG MODE 4
  155. #define AT91C_SFR_ROM_EMA_5 (0x5 << 16) // (SFR) DEBUG MODE 5
  156. #define AT91C_SFR_ROM_EMA_6 (0x6 << 16) // (SFR) DEBUG MODE 6
  157. #define AT91C_SFR_ROM_EMA_7 (0x7 << 16) // (SFR) DEBUG MODE 7
  158. // -------- SFR_DDRCFG : (SFR Offset: 0x4) DDR2 SSTL18 control register --------
  159. #define AT91C_SFR_DDRCFG_SSTL (0x1 << 0) // (SFR) Control DDR2 pads SSTL mode control
  160. #define AT91C_SFR_DDRCFG_SSTL_NORMAL (0x0) // (SFR) Force pads in SSTL18 mode when DDR2 is connected
  161. #define AT91C_SFR_DDRCFG_SSTL_COMPATIBLE (0x1) // (SFR) LVCMOS level (compatible SSTL18)
  162. #define AT91C_SFR_DDRCFG_CLKDELAY (0x1 << 8) // (SFR) Control DDR2 pads clocks delay on clk, dqs0, dqs1
  163. #define AT91C_SFR_DDRCFG_CLKDELAY_HARD (0x0 << 8) // (SFR) Fixed by hardware
  164. #define AT91C_SFR_DDRCFG_CLKDELAY_SOFT (0x1 << 8) // (SFR) Software must write correct delay value
  165. // -------- SFR_DDRDELAY : (SFR Offset: 0x8) DDR2 controller clock delay --------
  166. #define AT91C_SFR_DDRDELAY_CLK (0xFF << 0) // (SFR) Control CLK clock delay
  167. #define AT91C_SFR_DDRDELAY_CLK_0 (0x0) // (SFR) minimum delay
  168. #define AT91C_SFR_DDRDELAY_CLK_1 (0x1) // (SFR)
  169. #define AT91C_SFR_DDRDELAY_CLK_2 (0x2) // (SFR)
  170. #define AT91C_SFR_DDRDELAY_CLK_3 (0x3) // (SFR)
  171. #define AT91C_SFR_DDRDELAY_CLK_4 (0x4) // (SFR)
  172. #define AT91C_SFR_DDRDELAY_CLK_5 (0x5) // (SFR)
  173. #define AT91C_SFR_DDRDELAY_CLK_6 (0x6) // (SFR)
  174. #define AT91C_SFR_DDRDELAY_CLK_7 (0x7) // (SFR)
  175. #define AT91C_SFR_DDRDELAY_CLK_8 (0x8) // (SFR)
  176. #define AT91C_SFR_DDRDELAY_CLK_9 (0x9) // (SFR)
  177. #define AT91C_SFR_DDRDELAY_CLK_10 (0xA) // (SFR)
  178. #define AT91C_SFR_DDRDELAY_CLK_11 (0xB) // (SFR)
  179. #define AT91C_SFR_DDRDELAY_CLK_12 (0xC) // (SFR)
  180. #define AT91C_SFR_DDRDELAY_CLK_13 (0xD) // (SFR)
  181. #define AT91C_SFR_DDRDELAY_CLK_14 (0xE) // (SFR)
  182. #define AT91C_SFR_DDRDELAY_CLK_15 (0xF) // (SFR)
  183. #define AT91C_SFR_DDRDELAY_CLK_16 (0x10) // (SFR)
  184. #define AT91C_SFR_DDRDELAY_DQS0 (0xFF << 8) // (SFR) Control DQS0 clock delay
  185. #define AT91C_SFR_DDRDELAY_DQS0_0 (0x0 << 8) // (SFR) minimum delay
  186. #define AT91C_SFR_DDRDELAY_DQS0_1 (0x1 << 8) // (SFR)
  187. #define AT91C_SFR_DDRDELAY_DQS0_2 (0x2 << 8) // (SFR)
  188. #define AT91C_SFR_DDRDELAY_DQS0_3 (0x3 << 8) // (SFR)
  189. #define AT91C_SFR_DDRDELAY_DQS0_4 (0x4 << 8) // (SFR)
  190. #define AT91C_SFR_DDRDELAY_DQS0_5 (0x5 << 8) // (SFR)
  191. #define AT91C_SFR_DDRDELAY_DQS0_6 (0x6 << 8) // (SFR)
  192. #define AT91C_SFR_DDRDELAY_DQS0_7 (0x7 << 8) // (SFR)
  193. #define AT91C_SFR_DDRDELAY_DQS0_8 (0x8 << 8) // (SFR)
  194. #define AT91C_SFR_DDRDELAY_DQS0_9 (0x9 << 8) // (SFR)
  195. #define AT91C_SFR_DDRDELAY_DQS0_10 (0xA << 8) // (SFR)
  196. #define AT91C_SFR_DDRDELAY_DQS0_11 (0xB << 8) // (SFR)
  197. #define AT91C_SFR_DDRDELAY_DQS0_12 (0xC << 8) // (SFR)
  198. #define AT91C_SFR_DDRDELAY_DQS0_13 (0xD << 8) // (SFR)
  199. #define AT91C_SFR_DDRDELAY_DQS0_14 (0xE << 8) // (SFR)
  200. #define AT91C_SFR_DDRDELAY_DQS0_15 (0xF << 8) // (SFR)
  201. #define AT91C_SFR_DDRDELAY_DQS0_16 (0x10 << 8) // (SFR)
  202. #define AT91C_SFR_DDRDELAY_DQS1 (0xFF << 16) // (SFR) Control DQS1 clock delay
  203. #define AT91C_SFR_DDRDELAY_DQS1_0 (0x0 << 16) // (SFR) minimum delay
  204. #define AT91C_SFR_DDRDELAY_DQS1_1 (0x1 << 16) // (SFR)
  205. #define AT91C_SFR_DDRDELAY_DQS1_2 (0x2 << 16) // (SFR)
  206. #define AT91C_SFR_DDRDELAY_DQS1_3 (0x3 << 16) // (SFR)
  207. #define AT91C_SFR_DDRDELAY_DQS1_4 (0x4 << 16) // (SFR)
  208. #define AT91C_SFR_DDRDELAY_DQS1_5 (0x5 << 16) // (SFR)
  209. #define AT91C_SFR_DDRDELAY_DQS1_6 (0x6 << 16) // (SFR)
  210. #define AT91C_SFR_DDRDELAY_DQS1_7 (0x7 << 16) // (SFR)
  211. #define AT91C_SFR_DDRDELAY_DQS1_8 (0x8 << 16) // (SFR)
  212. #define AT91C_SFR_DDRDELAY_DQS1_9 (0x9 << 16) // (SFR)
  213. #define AT91C_SFR_DDRDELAY_DQS1_10 (0xA << 16) // (SFR)
  214. #define AT91C_SFR_DDRDELAY_DQS1_11 (0xB << 16) // (SFR)
  215. #define AT91C_SFR_DDRDELAY_DQS1_12 (0xC << 16) // (SFR)
  216. #define AT91C_SFR_DDRDELAY_DQS1_13 (0xD << 16) // (SFR)
  217. #define AT91C_SFR_DDRDELAY_DQS1_14 (0xE << 16) // (SFR)
  218. #define AT91C_SFR_DDRDELAY_DQS1_15 (0xF << 16) // (SFR)
  219. #define AT91C_SFR_DDRDELAY_DQS1_16 (0x10 << 16) // (SFR)
  220. // -------- SFR_EBIDELAY : (SFR Offset: 0xc) EBI DDR controller clock delay --------
  221. #define AT91C_SFR_EBIDELAY_CLK (0xFF << 0) // (SFR) Control CLK clock delay
  222. #define AT91C_SFR_EBIDELAY_CLK_0 (0x0) // (SFR) minimum delay
  223. #define AT91C_SFR_EBIDELAY_CLK_1 (0x1) // (SFR)
  224. #define AT91C_SFR_EBIDELAY_CLK_2 (0x2) // (SFR)
  225. #define AT91C_SFR_EBIDELAY_CLK_3 (0x3) // (SFR)
  226. #define AT91C_SFR_EBIDELAY_CLK_4 (0x4) // (SFR)
  227. #define AT91C_SFR_EBIDELAY_CLK_5 (0x5) // (SFR)
  228. #define AT91C_SFR_EBIDELAY_CLK_6 (0x6) // (SFR)
  229. #define AT91C_SFR_EBIDELAY_CLK_7 (0x7) // (SFR)
  230. #define AT91C_SFR_EBIDELAY_CLK_8 (0x8) // (SFR)
  231. #define AT91C_SFR_EBIDELAY_CLK_9 (0x9) // (SFR)
  232. #define AT91C_SFR_EBIDELAY_CLK_10 (0xA) // (SFR)
  233. #define AT91C_SFR_EBIDELAY_CLK_11 (0xB) // (SFR)
  234. #define AT91C_SFR_EBIDELAY_CLK_12 (0xC) // (SFR)
  235. #define AT91C_SFR_EBIDELAY_CLK_13 (0xD) // (SFR)
  236. #define AT91C_SFR_EBIDELAY_CLK_14 (0xE) // (SFR)
  237. #define AT91C_SFR_EBIDELAY_CLK_15 (0xF) // (SFR)
  238. #define AT91C_SFR_EBIDELAY_CLK_16 (0x10) // (SFR)
  239. #define AT91C_SFR_EBIDELAY_DQS0 (0xFF << 8) // (SFR) Control DQS0 clock delay
  240. #define AT91C_SFR_EBIDELAY_DQS0_0 (0x0 << 8) // (SFR) minimum delay
  241. #define AT91C_SFR_EBIDELAY_DQS0_1 (0x1 << 8) // (SFR)
  242. #define AT91C_SFR_EBIDELAY_DQS0_2 (0x2 << 8) // (SFR)
  243. #define AT91C_SFR_EBIDELAY_DQS0_3 (0x3 << 8) // (SFR)
  244. #define AT91C_SFR_EBIDELAY_DQS0_4 (0x4 << 8) // (SFR)
  245. #define AT91C_SFR_EBIDELAY_DQS0_5 (0x5 << 8) // (SFR)
  246. #define AT91C_SFR_EBIDELAY_DQS0_6 (0x6 << 8) // (SFR)
  247. #define AT91C_SFR_EBIDELAY_DQS0_7 (0x7 << 8) // (SFR)
  248. #define AT91C_SFR_EBIDELAY_DQS0_8 (0x8 << 8) // (SFR)
  249. #define AT91C_SFR_EBIDELAY_DQS0_9 (0x9 << 8) // (SFR)
  250. #define AT91C_SFR_EBIDELAY_DQS0_10 (0xA << 8) // (SFR)
  251. #define AT91C_SFR_EBIDELAY_DQS0_11 (0xB << 8) // (SFR)
  252. #define AT91C_SFR_EBIDELAY_DQS0_12 (0xC << 8) // (SFR)
  253. #define AT91C_SFR_EBIDELAY_DQS0_13 (0xD << 8) // (SFR)
  254. #define AT91C_SFR_EBIDELAY_DQS0_14 (0xE << 8) // (SFR)
  255. #define AT91C_SFR_EBIDELAY_DQS0_15 (0xF << 8) // (SFR)
  256. #define AT91C_SFR_EBIDELAY_DQS0_16 (0x10 << 8) // (SFR)
  257. #define AT91C_SFR_EBIDELAY_DQS1 (0xFF << 16) // (SFR) Control DQS1 clock delay
  258. #define AT91C_SFR_EBIDELAY_DQS1_0 (0x0 << 16) // (SFR) minimum delay
  259. #define AT91C_SFR_EBIDELAY_DQS1_1 (0x1 << 16) // (SFR)
  260. #define AT91C_SFR_EBIDELAY_DQS1_2 (0x2 << 16) // (SFR)
  261. #define AT91C_SFR_EBIDELAY_DQS1_3 (0x3 << 16) // (SFR)
  262. #define AT91C_SFR_EBIDELAY_DQS1_4 (0x4 << 16) // (SFR)
  263. #define AT91C_SFR_EBIDELAY_DQS1_5 (0x5 << 16) // (SFR)
  264. #define AT91C_SFR_EBIDELAY_DQS1_6 (0x6 << 16) // (SFR)
  265. #define AT91C_SFR_EBIDELAY_DQS1_7 (0x7 << 16) // (SFR)
  266. #define AT91C_SFR_EBIDELAY_DQS1_8 (0x8 << 16) // (SFR)
  267. #define AT91C_SFR_EBIDELAY_DQS1_9 (0x9 << 16) // (SFR)
  268. #define AT91C_SFR_EBIDELAY_DQS1_10 (0xA << 16) // (SFR)
  269. #define AT91C_SFR_EBIDELAY_DQS1_11 (0xB << 16) // (SFR)
  270. #define AT91C_SFR_EBIDELAY_DQS1_12 (0xC << 16) // (SFR)
  271. #define AT91C_SFR_EBIDELAY_DQS1_13 (0xD << 16) // (SFR)
  272. #define AT91C_SFR_EBIDELAY_DQS1_14 (0xE << 16) // (SFR)
  273. #define AT91C_SFR_EBIDELAY_DQS1_15 (0xF << 16) // (SFR)
  274. #define AT91C_SFR_EBIDELAY_DQS1_16 (0x10 << 16) // (SFR)
  275. // -------- SFR_UTMICFG : (SFR Offset: 0x10) UTMI Software Reset --------
  276. #define AT91C_SFR_UTMICFG_PORT0 (0x1 << 0) // (SFR) UTMI Software Reset port 0
  277. #define AT91C_SFR_UTMICFG_PORT1 (0x1 << 1) // (SFR) UTMI Software Reset port 1
  278. #define AT91C_SFR_UTMICFG_OHCI_SUSP_INT_ENABLE (0x1 << 2) // (SFR) OHCI Suspend Interrupt enable
  279. // -------- SFR_OHCI_SUSP_INT : (SFR Offset: 0x14) OHCI suspend Interrupt status --------
  280. #define AT91C_SFR_OHCI_SUSP_INT_STATUS (0x3 << 0) // (SFR) OHCI suspend Interrupt status
  281. #define AT91C_SFR_OHCI_SUSP_INT_STATUS_PORT0 (0x1) // (SFR) OHCI suspend Interrupt status for port 0
  282. #define AT91C_SFR_OHCI_SUSP_INT_STATUS_PORT1 (0x2) // (SFR) OHCI suspend Interrupt status for port 1
  283. // *****************************************************************************
  284. // SOFTWARE API DEFINITION FOR System Peripherals
  285. // *****************************************************************************
  286. #ifndef __ASSEMBLY__
  287. typedef struct _AT91S_SYS {
  288. AT91C_REG Reserved0[3904]; //
  289. AT91C_REG SYS_RSTC_RCR; // Reset Control Register
  290. AT91C_REG SYS_RSTC_RSR; // Reset Status Register
  291. AT91C_REG SYS_RSTC_RMR; // Reset Mode Register
  292. AT91C_REG Reserved1[1]; //
  293. AT91C_REG SYS_SHDWC_SHCR; // Shut Down Control Register
  294. AT91C_REG SYS_SHDWC_SHMR; // Shut Down Mode Register
  295. AT91C_REG SYS_SHDWC_SHSR; // Shut Down Status Register
  296. AT91C_REG Reserved2[1]; //
  297. AT91C_REG SYS_RTTC0_RTMR; // Real-time Mode Register
  298. AT91C_REG SYS_RTTC0_RTAR; // Real-time Alarm Register
  299. AT91C_REG SYS_RTTC0_RTVR; // Real-time Value Register
  300. AT91C_REG SYS_RTTC0_RTSR; // Real-time Status Register
  301. AT91C_REG SYS_PITC_PIMR; // Period Interval Mode Register
  302. AT91C_REG SYS_PITC_PISR; // Period Interval Status Register
  303. AT91C_REG SYS_PITC_PIVR; // Period Interval Value Register
  304. AT91C_REG SYS_PITC_PIIR; // Period Interval Image Register
  305. AT91C_REG SYS_WDTC_WDCR; // Watchdog Control Register
  306. AT91C_REG SYS_WDTC_WDMR; // Watchdog Mode Register
  307. AT91C_REG SYS_WDTC_WDSR; // Watchdog Status Register
  308. AT91C_REG Reserved3[1]; //
  309. AT91C_REG SYS_SLCKSEL; // Slow Clock Selection Register
  310. AT91C_REG Reserved4[3]; //
  311. AT91C_REG SYS_GPBR[4]; // General Purpose Register
  312. AT91C_REG Reserved5[16]; //
  313. AT91C_REG RTC_CR; // Control Register
  314. AT91C_REG RTC_MR; // Mode Register
  315. AT91C_REG RTC_TIMR; // Time Register
  316. AT91C_REG RTC_CALR; // Calendar Register
  317. AT91C_REG RTC_TIMALR; // Time Alarm Register
  318. AT91C_REG RTC_CALALR; // Calendar Alarm Register
  319. AT91C_REG RTC_SR; // Status Register
  320. AT91C_REG RTC_SCCR; // Status Clear Command Register
  321. AT91C_REG RTC_IER; // Interrupt Enable Register
  322. AT91C_REG RTC_IDR; // Interrupt Disable Register
  323. AT91C_REG RTC_IMR; // Interrupt Mask Register
  324. AT91C_REG RTC_VER; // Valid Entry Register
  325. AT91C_REG Reserved6[7]; //
  326. AT91C_REG SYS_RSTC_VER; // Version Register
  327. } AT91S_SYS, *AT91PS_SYS;
  328. #else
  329. #define SLCKSEL (AT91C_CAST(AT91C_REG *) 0x00003D50) // (SLCKSEL) Slow Clock Selection Register
  330. #define GPBR (AT91C_CAST(AT91C_REG *) 0x00003D60) // (GPBR) General Purpose Register
  331. #endif
  332. // -------- SLCKSEL : (SYS Offset: 0x3d50) Slow Clock Selection Register --------
  333. #define AT91C_SLCKSEL_RCEN (0x1 << 0) // (SYS) Enable Internal RC Oscillator
  334. #define AT91C_SLCKSEL_OSC32EN (0x1 << 1) // (SYS) Enable External Oscillator
  335. #define AT91C_SLCKSEL_OSC32BYP (0x1 << 2) // (SYS) Bypass External Oscillator
  336. #define AT91C_SLCKSEL_OSCSEL (0x1 << 3) // (SYS) OSC Selection
  337. // -------- GPBR : (SYS Offset: 0x3d60) GPBR General Purpose Register --------
  338. #define AT91C_GPBR_GPRV (0x0 << 0) // (SYS) General Purpose Register Value
  339. // *****************************************************************************
  340. // SOFTWARE API DEFINITION FOR External Bus Interface
  341. // *****************************************************************************
  342. #ifndef __ASSEMBLY__
  343. typedef struct _AT91S_EBI {
  344. AT91C_REG EBI_DUMMY; // Dummy register - Do not use
  345. } AT91S_EBI, *AT91PS_EBI;
  346. #else
  347. #define EBI_DUMMY (AT91C_CAST(AT91C_REG *) 0x00000000) // (EBI_DUMMY) Dummy register - Do not use
  348. #endif
  349. // *****************************************************************************
  350. // SOFTWARE API DEFINITION FOR DDR2/SDRAM Controller
  351. // *****************************************************************************
  352. #ifndef __ASSEMBLY__
  353. typedef struct _AT91S_HDDRSDRC2 {
  354. AT91C_REG HDDRSDRC2_MR; // Mode Register
  355. AT91C_REG HDDRSDRC2_RTR; // Refresh Timer Register
  356. AT91C_REG HDDRSDRC2_CR; // Configuration Register
  357. AT91C_REG HDDRSDRC2_T0PR; // Timing0 Register
  358. AT91C_REG HDDRSDRC2_T1PR; // Timing1 Register
  359. AT91C_REG HDDRSDRC2_T2PR; // Timing2 Register
  360. AT91C_REG HDDRSDRC2_T3PR; // Timing3 Register
  361. AT91C_REG HDDRSDRC2_LPR; // Low-power Register
  362. AT91C_REG HDDRSDRC2_MDR; // Memory Device Register
  363. AT91C_REG HDDRSDRC2_DLL; // DLL Information Register
  364. AT91C_REG HDDRSDRC2_VER; // DLL Version Register
  365. AT91C_REG HDDRSDRC2_HS; // High Speed Register
  366. AT91C_REG HDDRSDRC2_DELAY1; // Pad delay1 Register
  367. AT91C_REG HDDRSDRC2_DELAY2; // Pad delay2 Register
  368. AT91C_REG HDDRSDRC2_DELAY3; // Pad delay3 Register
  369. AT91C_REG HDDRSDRC2_DELAY4; // Pad delay4 Register
  370. AT91C_REG HDDRSDRC2_DELAY5; // Pad delay5 Register
  371. AT91C_REG HDDRSDRC2_DELAY6; // Pad delay6 Register
  372. AT91C_REG HDDRSDRC2_DELAY7; // Pad delay7 Register
  373. AT91C_REG HDDRSDRC2_DELAY8; // Pad delay8 Register
  374. AT91C_REG Reserved0[37]; //
  375. AT91C_REG HDDRSDRC2_WPCR; // High Speed Register
  376. AT91C_REG HDDRSDRC2_WPSR; // High Speed Register
  377. AT91C_REG Reserved1[4]; //
  378. AT91C_REG HDDRSDRC2_VERSION; // Version Register
  379. } AT91S_HDDRSDRC2, *AT91PS_HDDRSDRC2;
  380. #else
  381. #define HDDRSDRC2_MR (AT91C_CAST(AT91C_REG *) 0x00000000) // (HDDRSDRC2_MR) Mode Register
  382. #define HDDRSDRC2_RTR (AT91C_CAST(AT91C_REG *) 0x00000004) // (HDDRSDRC2_RTR) Refresh Timer Register
  383. #define HDDRSDRC2_CR (AT91C_CAST(AT91C_REG *) 0x00000008) // (HDDRSDRC2_CR) Configuration Register
  384. #define HDDRSDRC2_T0PR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (HDDRSDRC2_T0PR) Timing0 Register
  385. #define HDDRSDRC2_T1PR (AT91C_CAST(AT91C_REG *) 0x00000010) // (HDDRSDRC2_T1PR) Timing1 Register
  386. #define HDDRSDRC2_T2PR (AT91C_CAST(AT91C_REG *) 0x00000014) // (HDDRSDRC2_T2PR) Timing2 Register
  387. #define HDDRSDRC2_T3PR (AT91C_CAST(AT91C_REG *) 0x00000018) // (HDDRSDRC2_T3PR) Timing3 Register
  388. #define HDDRSDRC2_LPR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (HDDRSDRC2_LPR) Low-power Register
  389. #define HDDRSDRC2_MDR (AT91C_CAST(AT91C_REG *) 0x00000020) // (HDDRSDRC2_MDR) Memory Device Register
  390. #define HDDRSDRC2_DLL (AT91C_CAST(AT91C_REG *) 0x00000024) // (HDDRSDRC2_DLL) DLL Information Register
  391. #define HDDRSDRC2_DLL_VER (AT91C_CAST(AT91C_REG *) 0x00000028) // (HDDRSDRC2_DLL_VER) DLL Version Register
  392. #define HDDRSDRC2_HS (AT91C_CAST(AT91C_REG *) 0x0000002C) // (HDDRSDRC2_HS) High Speed Register
  393. #define HDDRSDRC2_DELAY1 (AT91C_CAST(AT91C_REG *) 0x00000030) // (HDDRSDRC2_DELAY1) Pad delay1 Register
  394. #define HDDRSDRC2_DELAY2 (AT91C_CAST(AT91C_REG *) 0x00000034) // (HDDRSDRC2_DELAY2) Pad delay2 Register
  395. #define HDDRSDRC2_DELAY3 (AT91C_CAST(AT91C_REG *) 0x00000038) // (HDDRSDRC2_DELAY3) Pad delay3 Register
  396. #define HDDRSDRC2_DELAY4 (AT91C_CAST(AT91C_REG *) 0x0000003C) // (HDDRSDRC2_DELAY4) Pad delay4 Register
  397. #define HDDRSDRC2_DELAY5 (AT91C_CAST(AT91C_REG *) 0x00000040) // (HDDRSDRC2_DELAY5) Pad delay5 Register
  398. #define HDDRSDRC2_DELAY6 (AT91C_CAST(AT91C_REG *) 0x00000044) // (HDDRSDRC2_DELAY6) Pad delay6 Register
  399. #define HDDRSDRC2_DELAY7 (AT91C_CAST(AT91C_REG *) 0x00000048) // (HDDRSDRC2_DELAY7) Pad delay7 Register
  400. #define HDDRSDRC2_DELAY8 (AT91C_CAST(AT91C_REG *) 0x0000004C) // (HDDRSDRC2_DELAY8) Pad delay8 Register
  401. #define HDDRSDRC2_WPCR (AT91C_CAST(AT91C_REG *) 0x000000E4) // (HDDRSDRC2_WPCR) High Speed Register
  402. #define HDDRSDRC2_WPSR (AT91C_CAST(AT91C_REG *) 0x000000E8) // (HDDRSDRC2_WPSR) High Speed Register
  403. #define HDDRSDRC2_VERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (HDDRSDRC2_VERSION) Version Register
  404. #endif
  405. // -------- HDDRSDRC2_MR : (HDDRSDRC2 Offset: 0x0) Mode Register --------
  406. #define AT91C_DDRC2_MODE (0x7 << 0) // (HDDRSDRC2) DDR/SDRAM Command Mode
  407. #define AT91C_DDRC2_MODE_NORMAL_CMD (0x0) // (HDDRSDRC2) Normal Mode
  408. #define AT91C_DDRC2_MODE_NOP_CMD (0x1) // (HDDRSDRC2) Issue a NOP Command at every access
  409. #define AT91C_DDRC2_MODE_PRCGALL_CMD (0x2) // (HDDRSDRC2) Issue a All Banks Precharge Command at every access
  410. #define AT91C_DDRC2_MODE_LMR_CMD (0x3) // (HDDRSDRC2) Issue a Load Mode Register at every access
  411. #define AT91C_DDRC2_MODE_RFSH_CMD (0x4) // (HDDRSDRC2) Issue a Refresh
  412. #define AT91C_DDRC2_MODE_EXT_LMR_CMD (0x5) // (HDDRSDRC2) Issue an Extended Load Mode Register
  413. #define AT91C_DDRC2_MODE_DEEP_CMD (0x6) // (HDDRSDRC2) Enter Deep Power Mode
  414. #define AT91C_DDRC2_MODE_Reserved (0x7) // (HDDRSDRC2) Reserved value
  415. // -------- HDDRSDRC2_RTR : (HDDRSDRC2 Offset: 0x4) Refresh Timer Register --------
  416. #define AT91C_DDRC2_COUNT (0xFFF << 0) // (HDDRSDRC2) Refresh Timer Count
  417. // -------- HDDRSDRC2_CR : (HDDRSDRC2 Offset: 0x8) Configuration Register --------
  418. #define AT91C_DDRC2_NC (0x3 << 0) // (HDDRSDRC2) Number of Column Bits
  419. #define AT91C_DDRC2_NC_DDR9_SDR8 (0x0) // (HDDRSDRC2) DDR 9 Bits | SDR 8 Bits
  420. #define AT91C_DDRC2_NC_DDR10_SDR9 (0x1) // (HDDRSDRC2) DDR 10 Bits | SDR 9 Bits
  421. #define AT91C_DDRC2_NC_DDR11_SDR10 (0x2) // (HDDRSDRC2) DDR 11 Bits | SDR 10 Bits
  422. #define AT91C_DDRC2_NC_DDR12_SDR11 (0x3) // (HDDRSDRC2) DDR 12 Bits | SDR 11 Bits
  423. #define AT91C_DDRC2_NR (0x3 << 2) // (HDDRSDRC2) Number of Row Bits
  424. #define AT91C_DDRC2_NR_11 (0x0 << 2) // (HDDRSDRC2) 11 Bits
  425. #define AT91C_DDRC2_NR_12 (0x1 << 2) // (HDDRSDRC2) 12 Bits
  426. #define AT91C_DDRC2_NR_13 (0x2 << 2) // (HDDRSDRC2) 13 Bits
  427. #define AT91C_DDRC2_NR_14 (0x3 << 2) // (HDDRSDRC2) 14 Bits
  428. #define AT91C_DDRC2_CAS (0x7 << 4) // (HDDRSDRC2) CAS Latency
  429. #define AT91C_DDRC2_CAS_2 (0x2 << 4) // (HDDRSDRC2) 2 cycles (DDR1/SDR)
  430. #define AT91C_DDRC2_CAS_3 (0x3 << 4) // (HDDRSDRC2) 3 cycles (DDR2/DDR1/SDR)
  431. #define AT91C_DDRC2_CAS_4 (0x4 << 4) // (HDDRSDRC2) 4 cycles (DDR2)
  432. #define AT91C_DDRC2_CAS_2_5 (0x6 << 4) // (HDDRSDRC2) 2.5 cycles (DDR1)
  433. #define AT91C_DDRC2_DLL (0x1 << 7) // (HDDRSDRC2) DLL Reset
  434. #define AT91C_DDRC2_DLL_RESET_DISABLED (0x0 << 7) // (HDDRSDRC2) DLL normal mode
  435. #define AT91C_DDRC2_DLL_RESET_ENABLED (0x1 << 7) // (HDDRSDRC2) Reset DLL
  436. #define AT91C_DDRC2_DIC_DS (0x1 << 8) // (HDDRSDRC2) Output driver impedance control
  437. #define AT91C_DDRC2_OCD (0x7 << 12) // (HDDRSDRC2) Off chip driver
  438. #define AT91C_DDRC2_OCD_EXIT (0x0 << 12) // (HDDRSDRC2) Exit OCD calibration mode.
  439. #define AT91C_DDRC2_OCD_DEFAULT (0x7 << 12) // (HDDRSDRC2) Program OCD calibration default value.
  440. #define AT91C_DDRC2_DQMS (0x1 << 16) // (HDDRSDRC2) Data Mask share
  441. #define AT91C_DDRC2_DQMS_NOT_SHARED (0x0 << 16) // (HDDRSDRC2) Used DQM bits are not shared
  442. #define AT91C_DDRC2_DQMS_SHARED (0x1 << 16) // (HDDRSDRC2) Used DQM bits are shared
  443. #define AT91C_DDRC2_ENRDM (0x1 << 17) // (HDDRSDRC2) DQS/DATA phase error correction
  444. #define AT91C_DDRC2_ENRDM_OFF (0x0 << 17) // (HDDRSDRC2) phase error correction disabled
  445. #define AT91C_DDRC2_ENRDM_ON (0x1 << 17) // (HDDRSDRC2) phase error correction enabled
  446. // -------- HDDRSDRC2_T0PR : (HDDRSDRC2 Offset: 0xc) Timing0 Register --------
  447. #define AT91C_DDRC2_TRAS (0xF << 0) // (HDDRSDRC2) Active to precharge delay
  448. #define AT91C_DDRC2_TRAS_0 (0x0) // (HDDRSDRC2) Value : 0
  449. #define AT91C_DDRC2_TRAS_1 (0x1) // (HDDRSDRC2) Value : 1
  450. #define AT91C_DDRC2_TRAS_2 (0x2) // (HDDRSDRC2) Value : 2
  451. #define AT91C_DDRC2_TRAS_3 (0x3) // (HDDRSDRC2) Value : 3
  452. #define AT91C_DDRC2_TRAS_4 (0x4) // (HDDRSDRC2) Value : 4
  453. #define AT91C_DDRC2_TRAS_5 (0x5) // (HDDRSDRC2) Value : 5
  454. #define AT91C_DDRC2_TRAS_6 (0x6) // (HDDRSDRC2) Value : 6
  455. #define AT91C_DDRC2_TRAS_7 (0x7) // (HDDRSDRC2) Value : 7
  456. #define AT91C_DDRC2_TRAS_8 (0x8) // (HDDRSDRC2) Value : 8
  457. #define AT91C_DDRC2_TRAS_9 (0x9) // (HDDRSDRC2) Value : 9
  458. #define AT91C_DDRC2_TRAS_10 (0xA) // (HDDRSDRC2) Value : 10
  459. #define AT91C_DDRC2_TRAS_11 (0xB) // (HDDRSDRC2) Value : 11
  460. #define AT91C_DDRC2_TRAS_12 (0xC) // (HDDRSDRC2) Value : 12
  461. #define AT91C_DDRC2_TRAS_13 (0xD) // (HDDRSDRC2) Value : 13
  462. #define AT91C_DDRC2_TRAS_14 (0xE) // (HDDRSDRC2) Value : 14
  463. #define AT91C_DDRC2_TRAS_15 (0xF) // (HDDRSDRC2) Value : 15
  464. #define AT91C_DDRC2_TRCD (0xF << 4) // (HDDRSDRC2) Row to column delay
  465. #define AT91C_DDRC2_TRCD_0 (0x0 << 4) // (HDDRSDRC2) Value : 0
  466. #define AT91C_DDRC2_TRCD_1 (0x1 << 4) // (HDDRSDRC2) Value : 1
  467. #define AT91C_DDRC2_TRCD_2 (0x2 << 4) // (HDDRSDRC2) Value : 2
  468. #define AT91C_DDRC2_TRCD_3 (0x3 << 4) // (HDDRSDRC2) Value : 3
  469. #define AT91C_DDRC2_TRCD_4 (0x4 << 4) // (HDDRSDRC2) Value : 4
  470. #define AT91C_DDRC2_TRCD_5 (0x5 << 4) // (HDDRSDRC2) Value : 5
  471. #define AT91C_DDRC2_TRCD_6 (0x6 << 4) // (HDDRSDRC2) Value : 6
  472. #define AT91C_DDRC2_TRCD_7 (0x7 << 4) // (HDDRSDRC2) Value : 7
  473. #define AT91C_DDRC2_TRCD_8 (0x8 << 4) // (HDDRSDRC2) Value : 8
  474. #define AT91C_DDRC2_TRCD_9 (0x9 << 4) // (HDDRSDRC2) Value : 9
  475. #define AT91C_DDRC2_TRCD_10 (0xA << 4) // (HDDRSDRC2) Value : 10
  476. #define AT91C_DDRC2_TRCD_11 (0xB << 4) // (HDDRSDRC2) Value : 11
  477. #define AT91C_DDRC2_TRCD_12 (0xC << 4) // (HDDRSDRC2) Value : 12
  478. #define AT91C_DDRC2_TRCD_13 (0xD << 4) // (HDDRSDRC2) Value : 13
  479. #define AT91C_DDRC2_TRCD_14 (0xE << 4) // (HDDRSDRC2) Value : 14
  480. #define AT91C_DDRC2_TRCD_15 (0xF << 4) // (HDDRSDRC2) Value : 15
  481. #define AT91C_DDRC2_TWR (0xF << 8) // (HDDRSDRC2) Write recovery delay
  482. #define AT91C_DDRC2_TWR_0 (0x0 << 8) // (HDDRSDRC2) Value : 0
  483. #define AT91C_DDRC2_TWR_1 (0x1 << 8) // (HDDRSDRC2) Value : 1
  484. #define AT91C_DDRC2_TWR_2 (0x2 << 8) // (HDDRSDRC2) Value : 2
  485. #define AT91C_DDRC2_TWR_3 (0x3 << 8) // (HDDRSDRC2) Value : 3
  486. #define AT91C_DDRC2_TWR_4 (0x4 << 8) // (HDDRSDRC2) Value : 4
  487. #define AT91C_DDRC2_TWR_5 (0x5 << 8) // (HDDRSDRC2) Value : 5
  488. #define AT91C_DDRC2_TWR_6 (0x6 << 8) // (HDDRSDRC2) Value : 6
  489. #define AT91C_DDRC2_TWR_7 (0x7 << 8) // (HDDRSDRC2) Value : 7
  490. #define AT91C_DDRC2_TWR_8 (0x8 << 8) // (HDDRSDRC2) Value : 8
  491. #define AT91C_DDRC2_TWR_9 (0x9 << 8) // (HDDRSDRC2) Value : 9
  492. #define AT91C_DDRC2_TWR_10 (0xA << 8) // (HDDRSDRC2) Value : 10
  493. #define AT91C_DDRC2_TWR_11 (0xB << 8) // (HDDRSDRC2) Value : 11
  494. #define AT91C_DDRC2_TWR_12 (0xC << 8) // (HDDRSDRC2) Value : 12
  495. #define AT91C_DDRC2_TWR_13 (0xD << 8) // (HDDRSDRC2) Value : 13
  496. #define AT91C_DDRC2_TWR_14 (0xE << 8) // (HDDRSDRC2) Value : 14
  497. #define AT91C_DDRC2_TWR_15 (0xF << 8) // (HDDRSDRC2) Value : 15
  498. #define AT91C_DDRC2_TRC (0xF << 12) // (HDDRSDRC2) Row cycle delay
  499. #define AT91C_DDRC2_TRC_0 (0x0 << 12) // (HDDRSDRC2) Value : 0
  500. #define AT91C_DDRC2_TRC_1 (0x1 << 12) // (HDDRSDRC2) Value : 1
  501. #define AT91C_DDRC2_TRC_2 (0x2 << 12) // (HDDRSDRC2) Value : 2
  502. #define AT91C_DDRC2_TRC_3 (0x3 << 12) // (HDDRSDRC2) Value : 3
  503. #define AT91C_DDRC2_TRC_4 (0x4 << 12) // (HDDRSDRC2) Value : 4
  504. #define AT91C_DDRC2_TRC_5 (0x5 << 12) // (HDDRSDRC2) Value : 5
  505. #define AT91C_DDRC2_TRC_6 (0x6 << 12) // (HDDRSDRC2) Value : 6
  506. #define AT91C_DDRC2_TRC_7 (0x7 << 12) // (HDDRSDRC2) Value : 7
  507. #define AT91C_DDRC2_TRC_8 (0x8 << 12) // (HDDRSDRC2) Value : 8
  508. #define AT91C_DDRC2_TRC_9 (0x9 << 12) // (HDDRSDRC2) Value : 9
  509. #define AT91C_DDRC2_TRC_10 (0xA << 12) // (HDDRSDRC2) Value : 10
  510. #define AT91C_DDRC2_TRC_11 (0xB << 12) // (HDDRSDRC2) Value : 11
  511. #define AT91C_DDRC2_TRC_12 (0xC << 12) // (HDDRSDRC2) Value : 12
  512. #define AT91C_DDRC2_TRC_13 (0xD << 12) // (HDDRSDRC2) Value : 13
  513. #define AT91C_DDRC2_TRC_14 (0xE << 12) // (HDDRSDRC2) Value : 14
  514. #define AT91C_DDRC2_TRC_15 (0xF << 12) // (HDDRSDRC2) Value : 15
  515. #define AT91C_DDRC2_TRP (0xF << 16) // (HDDRSDRC2) Row precharge delay
  516. #define AT91C_DDRC2_TRP_0 (0x0 << 16) // (HDDRSDRC2) Value : 0
  517. #define AT91C_DDRC2_TRP_1 (0x1 << 16) // (HDDRSDRC2) Value : 1
  518. #define AT91C_DDRC2_TRP_2 (0x2 << 16) // (HDDRSDRC2) Value : 2
  519. #define AT91C_DDRC2_TRP_3 (0x3 << 16) // (HDDRSDRC2) Value : 3
  520. #define AT91C_DDRC2_TRP_4 (0x4 << 16) // (HDDRSDRC2) Value : 4
  521. #define AT91C_DDRC2_TRP_5 (0x5 << 16) // (HDDRSDRC2) Value : 5
  522. #define AT91C_DDRC2_TRP_6 (0x6 << 16) // (HDDRSDRC2) Value : 6
  523. #define AT91C_DDRC2_TRP_7 (0x7 << 16) // (HDDRSDRC2) Value : 7
  524. #define AT91C_DDRC2_TRP_8 (0x8 << 16) // (HDDRSDRC2) Value : 8
  525. #define AT91C_DDRC2_TRP_9 (0x9 << 16) // (HDDRSDRC2) Value : 9
  526. #define AT91C_DDRC2_TRP_10 (0xA << 16) // (HDDRSDRC2) Value : 10
  527. #define AT91C_DDRC2_TRP_11 (0xB << 16) // (HDDRSDRC2) Value : 11
  528. #define AT91C_DDRC2_TRP_12 (0xC << 16) // (HDDRSDRC2) Value : 12
  529. #define AT91C_DDRC2_TRP_13 (0xD << 16) // (HDDRSDRC2) Value : 13
  530. #define AT91C_DDRC2_TRP_14 (0xE << 16) // (HDDRSDRC2) Value : 14
  531. #define AT91C_DDRC2_TRP_15 (0xF << 16) // (HDDRSDRC2) Value : 15
  532. #define AT91C_DDRC2_TRRD (0xF << 20) // (HDDRSDRC2) Active bankA to Active bankB
  533. #define AT91C_DDRC2_TRRD_0 (0x0 << 20) // (HDDRSDRC2) Value : 0
  534. #define AT91C_DDRC2_TRRD_1 (0x1 << 20) // (HDDRSDRC2) Value : 1
  535. #define AT91C_DDRC2_TRRD_2 (0x2 << 20) // (HDDRSDRC2) Value : 2
  536. #define AT91C_DDRC2_TRRD_3 (0x3 << 20) // (HDDRSDRC2) Value : 3
  537. #define AT91C_DDRC2_TRRD_4 (0x4 << 20) // (HDDRSDRC2) Value : 4
  538. #define AT91C_DDRC2_TRRD_5 (0x5 << 20) // (HDDRSDRC2) Value : 5
  539. #define AT91C_DDRC2_TRRD_6 (0x6 << 20) // (HDDRSDRC2) Value : 6
  540. #define AT91C_DDRC2_TRRD_7 (0x7 << 20) // (HDDRSDRC2) Value : 7
  541. #define AT91C_DDRC2_TRRD_8 (0x8 << 20) // (HDDRSDRC2) Value : 8
  542. #define AT91C_DDRC2_TRRD_9 (0x9 << 20) // (HDDRSDRC2) Value : 9
  543. #define AT91C_DDRC2_TRRD_10 (0xA << 20) // (HDDRSDRC2) Value : 10
  544. #define AT91C_DDRC2_TRRD_11 (0xB << 20) // (HDDRSDRC2) Value : 11
  545. #define AT91C_DDRC2_TRRD_12 (0xC << 20) // (HDDRSDRC2) Value : 12
  546. #define AT91C_DDRC2_TRRD_13 (0xD << 20) // (HDDRSDRC2) Value : 13
  547. #define AT91C_DDRC2_TRRD_14 (0xE << 20) // (HDDRSDRC2) Value : 14
  548. #define AT91C_DDRC2_TRRD_15 (0xF << 20) // (HDDRSDRC2) Value : 15
  549. #define AT91C_DDRC2_TWTR (0x1 << 24) // (HDDRSDRC2) Internal write to read delay
  550. #define AT91C_DDRC2_TWTR_0 (0x0 << 24) // (HDDRSDRC2) Value : 0
  551. #define AT91C_DDRC2_TWTR_1 (0x1 << 24) // (HDDRSDRC2) Value : 1
  552. #define AT91C_DDRC2_TMRD (0xF << 28) // (HDDRSDRC2) Load mode register command to active or refresh command
  553. #define AT91C_DDRC2_TMRD_0 (0x0 << 28) // (HDDRSDRC2) Value : 0
  554. #define AT91C_DDRC2_TMRD_1 (0x1 << 28) // (HDDRSDRC2) Value : 1
  555. #define AT91C_DDRC2_TMRD_2 (0x2 << 28) // (HDDRSDRC2) Value : 2
  556. #define AT91C_DDRC2_TMRD_3 (0x3 << 28) // (HDDRSDRC2) Value : 3
  557. #define AT91C_DDRC2_TMRD_4 (0x4 << 28) // (HDDRSDRC2) Value : 4
  558. #define AT91C_DDRC2_TMRD_5 (0x5 << 28) // (HDDRSDRC2) Value : 5
  559. #define AT91C_DDRC2_TMRD_6 (0x6 << 28) // (HDDRSDRC2) Value : 6
  560. #define AT91C_DDRC2_TMRD_7 (0x7 << 28) // (HDDRSDRC2) Value : 7
  561. #define AT91C_DDRC2_TMRD_8 (0x8 << 28) // (HDDRSDRC2) Value : 8
  562. #define AT91C_DDRC2_TMRD_9 (0x9 << 28) // (HDDRSDRC2) Value : 9
  563. #define AT91C_DDRC2_TMRD_10 (0xA << 28) // (HDDRSDRC2) Value : 10
  564. #define AT91C_DDRC2_TMRD_11 (0xB << 28) // (HDDRSDRC2) Value : 11
  565. #define AT91C_DDRC2_TMRD_12 (0xC << 28) // (HDDRSDRC2) Value : 12
  566. #define AT91C_DDRC2_TMRD_13 (0xD << 28) // (HDDRSDRC2) Value : 13
  567. #define AT91C_DDRC2_TMRD_14 (0xE << 28) // (HDDRSDRC2) Value : 14
  568. #define AT91C_DDRC2_TMRD_15 (0xF << 28) // (HDDRSDRC2) Value : 15
  569. // -------- HDDRSDRC2_T1PR : (HDDRSDRC2 Offset: 0x10) Timing1 Register --------
  570. #define AT91C_DDRC2_TRFC (0x1F << 0) // (HDDRSDRC2) row cycle delay
  571. #define AT91C_DDRC2_TRFC_0 (0x0) // (HDDRSDRC2) Value : 0
  572. #define AT91C_DDRC2_TRFC_1 (0x1) // (HDDRSDRC2) Value : 1
  573. #define AT91C_DDRC2_TRFC_2 (0x2) // (HDDRSDRC2) Value : 2
  574. #define AT91C_DDRC2_TRFC_3 (0x3) // (HDDRSDRC2) Value : 3
  575. #define AT91C_DDRC2_TRFC_4 (0x4) // (HDDRSDRC2) Value : 4
  576. #define AT91C_DDRC2_TRFC_5 (0x5) // (HDDRSDRC2) Value : 5
  577. #define AT91C_DDRC2_TRFC_6 (0x6) // (HDDRSDRC2) Value : 6
  578. #define AT91C_DDRC2_TRFC_7 (0x7) // (HDDRSDRC2) Value : 7
  579. #define AT91C_DDRC2_TRFC_8 (0x8) // (HDDRSDRC2) Value : 8
  580. #define AT91C_DDRC2_TRFC_9 (0x9) // (HDDRSDRC2) Value : 9
  581. #define AT91C_DDRC2_TRFC_10 (0xA) // (HDDRSDRC2) Value : 10
  582. #define AT91C_DDRC2_TRFC_11 (0xB) // (HDDRSDRC2) Value : 11
  583. #define AT91C_DDRC2_TRFC_12 (0xC) // (HDDRSDRC2) Value : 12
  584. #define AT91C_DDRC2_TRFC_13 (0xD) // (HDDRSDRC2) Value : 13
  585. #define AT91C_DDRC2_TRFC_14 (0xE) // (HDDRSDRC2) Value : 14
  586. #define AT91C_DDRC2_TRFC_15 (0xF) // (HDDRSDRC2) Value : 15
  587. #define AT91C_DDRC2_TRFC_16 (0x10) // (HDDRSDRC2) Value : 16
  588. #define AT91C_DDRC2_TRFC_17 (0x11) // (HDDRSDRC2) Value : 17
  589. #define AT91C_DDRC2_TRFC_18 (0x12) // (HDDRSDRC2) Value : 18
  590. #define AT91C_DDRC2_TRFC_19 (0x13) // (HDDRSDRC2) Value : 19
  591. #define AT91C_DDRC2_TRFC_20 (0x14) // (HDDRSDRC2) Value : 20
  592. #define AT91C_DDRC2_TRFC_21 (0x15) // (HDDRSDRC2) Value : 21
  593. #define AT91C_DDRC2_TRFC_22 (0x16) // (HDDRSDRC2) Value : 22
  594. #define AT91C_DDRC2_TRFC_23 (0x17) // (HDDRSDRC2) Value : 23
  595. #define AT91C_DDRC2_TRFC_24 (0x18) // (HDDRSDRC2) Value : 24
  596. #define AT91C_DDRC2_TRFC_25 (0x19) // (HDDRSDRC2) Value : 25
  597. #define AT91C_DDRC2_TRFC_26 (0x1A) // (HDDRSDRC2) Value : 26
  598. #define AT91C_DDRC2_TRFC_27 (0x1B) // (HDDRSDRC2) Value : 27
  599. #define AT91C_DDRC2_TRFC_28 (0x1C) // (HDDRSDRC2) Value : 28
  600. #define AT91C_DDRC2_TRFC_29 (0x1D) // (HDDRSDRC2) Value : 29
  601. #define AT91C_DDRC2_TRFC_30 (0x1E) // (HDDRSDRC2) Value : 30
  602. #define AT91C_DDRC2_TRFC_31 (0x1F) // (HDDRSDRC2) Value : 31
  603. #define AT91C_DDRC2_TXSNR (0xFF << 8) // (HDDRSDRC2) Exit self refresh delay to Read command
  604. #define AT91C_DDRC2_TXSNR_0 (0x0 << 8) // (HDDRSDRC2) Value : 0
  605. #define AT91C_DDRC2_TXSNR_8 (0x8 << 8) // (HDDRSDRC2) Value : 8
  606. #define AT91C_DDRC2_TXSNR_16 (0x10 << 8) // (HDDRSDRC2) Value : 16
  607. #define AT91C_DDRC2_TXSNR_32 (0x20 << 8) // (HDDRSDRC2) Value : 32
  608. #define AT91C_DDRC2_TXSNR_48 (0x30 << 8) // (HDDRSDRC2) Value : 48
  609. #define AT91C_DDRC2_TXSNR_64 (0x40 << 8) // (HDDRSDRC2) Value : 64
  610. #define AT91C_DDRC2_TXSNR_80 (0x50 << 8) // (HDDRSDRC2) Value : 80
  611. #define AT91C_DDRC2_TXSNR_96 (0x60 << 8) // (HDDRSDRC2) Value : 96
  612. #define AT91C_DDRC2_TXSNR_112 (0x70 << 8) // (HDDRSDRC2) Value : 112
  613. #define AT91C_DDRC2_TXSNR_128 (0x80 << 8) // (HDDRSDRC2) Value : 128
  614. #define AT91C_DDRC2_TXSNR_144 (0x90 << 8) // (HDDRSDRC2) Value : 144
  615. #define AT91C_DDRC2_TXSNR_160 (0xA0 << 8) // (HDDRSDRC2) Value : 160
  616. #define AT91C_DDRC2_TXSNR_176 (0xB0 << 8) // (HDDRSDRC2) Value : 176
  617. #define AT91C_DDRC2_TXSNR_192 (0xC0 << 8) // (HDDRSDRC2) Value : 192
  618. #define AT91C_DDRC2_TXSNR_208 (0xD0 << 8) // (HDDRSDRC2) Value : 208
  619. #define AT91C_DDRC2_TXSNR_224 (0xE0 << 8) // (HDDRSDRC2) Value : 224
  620. #define AT91C_DDRC2_TXSNR_240 (0xF0 << 8) // (HDDRSDRC2) Value : 240
  621. #define AT91C_DDRC2_TXSNR_255 (0xFF << 8) // (HDDRSDRC2) Value : 255
  622. #define AT91C_DDRC2_TXSRD (0xFF << 16) // (HDDRSDRC2) Exit self refresh delay to Read command
  623. #define AT91C_DDRC2_TXSRD_0 (0x0 << 16) // (HDDRSDRC2) Value : 0
  624. #define AT91C_DDRC2_TXSRD_8 (0x8 << 16) // (HDDRSDRC2) Value : 8
  625. #define AT91C_DDRC2_TXSRD_16 (0x10 << 16) // (HDDRSDRC2) Value : 16
  626. #define AT91C_DDRC2_TXSRD_32 (0x20 << 16) // (HDDRSDRC2) Value : 32
  627. #define AT91C_DDRC2_TXSRD_48 (0x30 << 16) // (HDDRSDRC2) Value : 48
  628. #define AT91C_DDRC2_TXSRD_64 (0x40 << 16) // (HDDRSDRC2) Value : 64
  629. #define AT91C_DDRC2_TXSRD_80 (0x50 << 16) // (HDDRSDRC2) Value : 80
  630. #define AT91C_DDRC2_TXSRD_96 (0x60 << 16) // (HDDRSDRC2) Value : 96
  631. #define AT91C_DDRC2_TXSRD_112 (0x70 << 16) // (HDDRSDRC2) Value : 112
  632. #define AT91C_DDRC2_TXSRD_128 (0x80 << 16) // (HDDRSDRC2) Value : 128
  633. #define AT91C_DDRC2_TXSRD_144 (0x90 << 16) // (HDDRSDRC2) Value : 144
  634. #define AT91C_DDRC2_TXSRD_160 (0xA0 << 16) // (HDDRSDRC2) Value : 160
  635. #define AT91C_DDRC2_TXSRD_176 (0xB0 << 16) // (HDDRSDRC2) Value : 176
  636. #define AT91C_DDRC2_TXSRD_192 (0xC0 << 16) // (HDDRSDRC2) Value : 192
  637. #define AT91C_DDRC2_TXSRD_208 (0xD0 << 16) // (HDDRSDRC2) Value : 208
  638. #define AT91C_DDRC2_TXSRD_224 (0xE0 << 16) // (HDDRSDRC2) Value : 224
  639. #define AT91C_DDRC2_TXSRD_240 (0xF0 << 16) // (HDDRSDRC2) Value : 240
  640. #define AT91C_DDRC2_TXSRD_255 (0xFF << 16) // (HDDRSDRC2) Value : 255
  641. #define AT91C_DDRC2_TXP (0xF << 24) // (HDDRSDRC2) Exit Power-down delay to first command
  642. #define AT91C_DDRC2_TXP_0 (0x0 << 24) // (HDDRSDRC2) Value : 0
  643. #define AT91C_DDRC2_TXP_1 (0x1 << 24) // (HDDRSDRC2) Value : 1
  644. #define AT91C_DDRC2_TXP_2 (0x2 << 24) // (HDDRSDRC2) Value : 2
  645. #define AT91C_DDRC2_TXP_3 (0x3 << 24) // (HDDRSDRC2) Value : 3
  646. #define AT91C_DDRC2_TXP_4 (0x4 << 24) // (HDDRSDRC2) Value : 4
  647. #define AT91C_DDRC2_TXP_5 (0x5 << 24) // (HDDRSDRC2) Value : 5
  648. #define AT91C_DDRC2_TXP_6 (0x6 << 24) // (HDDRSDRC2) Value : 6
  649. #define AT91C_DDRC2_TXP_7 (0x7 << 24) // (HDDRSDRC2) Value : 7
  650. #define AT91C_DDRC2_TXP_8 (0x8 << 24) // (HDDRSDRC2) Value : 8
  651. #define AT91C_DDRC2_TXP_9 (0x9 << 24) // (HDDRSDRC2) Value : 9
  652. #define AT91C_DDRC2_TXP_10 (0xA << 24) // (HDDRSDRC2) Value : 10
  653. #define AT91C_DDRC2_TXP_11 (0xB << 24) // (HDDRSDRC2) Value : 11
  654. #define AT91C_DDRC2_TXP_12 (0xC << 24) // (HDDRSDRC2) Value : 12
  655. #define AT91C_DDRC2_TXP_13 (0xD << 24) // (HDDRSDRC2) Value : 13
  656. #define AT91C_DDRC2_TXP_14 (0xE << 24) // (HDDRSDRC2) Value : 14
  657. #define AT91C_DDRC2_TXP_15 (0xF << 24) // (HDDRSDRC2) Value : 15
  658. // -------- HDDRSDRC2_T2PR : (HDDRSDRC2 Offset: 0x14) Timing2 Register --------
  659. #define AT91C_DDRC2_TXARD (0xF << 0) // (HDDRSDRC2) Exit active power down delay to read command in 'Fast Exit' mode.
  660. #define AT91C_DDRC2_TXARD_0 (0x0) // (HDDRSDRC2) Value : 0
  661. #define AT91C_DDRC2_TXARD_1 (0x1) // (HDDRSDRC2) Value : 1
  662. #define AT91C_DDRC2_TXARD_2 (0x2) // (HDDRSDRC2) Value : 2
  663. #define AT91C_DDRC2_TXARD_3 (0x3) // (HDDRSDRC2) Value : 3
  664. #define AT91C_DDRC2_TXARD_4 (0x4) // (HDDRSDRC2) Value : 4
  665. #define AT91C_DDRC2_TXARD_5 (0x5) // (HDDRSDRC2) Value : 5
  666. #define AT91C_DDRC2_TXARD_6 (0x6) // (HDDRSDRC2) Value : 6
  667. #define AT91C_DDRC2_TXARD_7 (0x7) // (HDDRSDRC2) Value : 7
  668. #define AT91C_DDRC2_TXARD_8 (0x8) // (HDDRSDRC2) Value : 8
  669. #define AT91C_DDRC2_TXARD_9 (0x9) // (HDDRSDRC2) Value : 9
  670. #define AT91C_DDRC2_TXARD_10 (0xA) // (HDDRSDRC2) Value : 10
  671. #define AT91C_DDRC2_TXARD_11 (0xB) // (HDDRSDRC2) Value : 11
  672. #define AT91C_DDRC2_TXARD_12 (0xC) // (HDDRSDRC2) Value : 12
  673. #define AT91C_DDRC2_TXARD_13 (0xD) // (HDDRSDRC2) Value : 13
  674. #define AT91C_DDRC2_TXARD_14 (0xE) // (HDDRSDRC2) Value : 14
  675. #define AT91C_DDRC2_TXARD_15 (0xF) // (HDDRSDRC2) Value : 15
  676. #define AT91C_DDRC2_TXARDS (0xF << 4) // (HDDRSDRC2) Exit active power down delay to read command in 'Slow Exit' mode.
  677. #define AT91C_DDRC2_TXARDS_0 (0x0 << 4) // (HDDRSDRC2) Value : 0
  678. #define AT91C_DDRC2_TXARDS_1 (0x1 << 4) // (HDDRSDRC2) Value : 1
  679. #define AT91C_DDRC2_TXARDS_2 (0x2 << 4) // (HDDRSDRC2) Value : 2
  680. #define AT91C_DDRC2_TXARDS_3 (0x3 << 4) // (HDDRSDRC2) Value : 3
  681. #define AT91C_DDRC2_TXARDS_4 (0x4 << 4) // (HDDRSDRC2) Value : 4
  682. #define AT91C_DDRC2_TXARDS_5 (0x5 << 4) // (HDDRSDRC2) Value : 5
  683. #define AT91C_DDRC2_TXARDS_6 (0x6 << 4) // (HDDRSDRC2) Value : 6
  684. #define AT91C_DDRC2_TXARDS_7 (0x7 << 4) // (HDDRSDRC2) Value : 7
  685. #define AT91C_DDRC2_TXARDS_8 (0x8 << 4) // (HDDRSDRC2) Value : 8
  686. #define AT91C_DDRC2_TXARDS_9 (0x9 << 4) // (HDDRSDRC2) Value : 9
  687. #define AT91C_DDRC2_TXARDS_10 (0xA << 4) // (HDDRSDRC2) Value : 10
  688. #define AT91C_DDRC2_TXARDS_11 (0xB << 4) // (HDDRSDRC2) Value : 11
  689. #define AT91C_DDRC2_TXARDS_12 (0xC << 4) // (HDDRSDRC2) Value : 12
  690. #define AT91C_DDRC2_TXARDS_13 (0xD << 4) // (HDDRSDRC2) Value : 13
  691. #define AT91C_DDRC2_TXARDS_14 (0xE << 4) // (HDDRSDRC2) Value : 14
  692. #define AT91C_DDRC2_TXARDS_15 (0xF << 4) // (HDDRSDRC2) Value : 15
  693. #define AT91C_DDRC2_TRPA (0xF << 8) // (HDDRSDRC2) Row precharge all delay
  694. #define AT91C_DDRC2_TRPA_0 (0x0 << 8) // (HDDRSDRC2) Value : 0
  695. #define AT91C_DDRC2_TRPA_1 (0x1 << 8) // (HDDRSDRC2) Value : 1
  696. #define AT91C_DDRC2_TRPA_2 (0x2 << 8) // (HDDRSDRC2) Value : 2
  697. #define AT91C_DDRC2_TRPA_3 (0x3 << 8) // (HDDRSDRC2) Value : 3
  698. #define AT91C_DDRC2_TRPA_4 (0x4 << 8) // (HDDRSDRC2) Value : 4
  699. #define AT91C_DDRC2_TRPA_5 (0x5 << 8) // (HDDRSDRC2) Value : 5
  700. #define AT91C_DDRC2_TRPA_6 (0x6 << 8) // (HDDRSDRC2) Value : 6
  701. #define AT91C_DDRC2_TRPA_7 (0x7 << 8) // (HDDRSDRC2) Value : 7
  702. #define AT91C_DDRC2_TRPA_8 (0x8 << 8) // (HDDRSDRC2) Value : 8
  703. #define AT91C_DDRC2_TRPA_9 (0x9 << 8) // (HDDRSDRC2) Value : 9
  704. #define AT91C_DDRC2_TRPA_10 (0xA << 8) // (HDDRSDRC2) Value : 10
  705. #define AT91C_DDRC2_TRPA_11 (0xB << 8) // (HDDRSDRC2) Value : 11
  706. #define AT91C_DDRC2_TRPA_12 (0xC << 8) // (HDDRSDRC2) Value : 12
  707. #define AT91C_DDRC2_TRPA_13 (0xD << 8) // (HDDRSDRC2) Value : 13
  708. #define AT91C_DDRC2_TRPA_14 (0xE << 8) // (HDDRSDRC2) Value : 14
  709. #define AT91C_DDRC2_TRPA_15 (0xF << 8) // (HDDRSDRC2) Value : 15
  710. #define AT91C_DDRC2_TRTP (0x7 << 12) // (HDDRSDRC2) Read to Precharge delay
  711. #define AT91C_DDRC2_TRTP_0 (0x0 << 12) // (HDDRSDRC2) Value : 0
  712. #define AT91C_DDRC2_TRTP_1 (0x1 << 12) // (HDDRSDRC2) Value : 1
  713. #define AT91C_DDRC2_TRTP_2 (0x2 << 12) // (HDDRSDRC2) Value : 2
  714. #define AT91C_DDRC2_TRTP_3 (0x3 << 12) // (HDDRSDRC2) Value : 3
  715. #define AT91C_DDRC2_TRTP_4 (0x4 << 12) // (HDDRSDRC2) Value : 4
  716. #define AT91C_DDRC2_TRTP_5 (0x5 << 12) // (HDDRSDRC2) Value : 5
  717. #define AT91C_DDRC2_TRTP_6 (0x6 << 12) // (HDDRSDRC2) Value : 6
  718. #define AT91C_DDRC2_TRTP_7 (0x7 << 12) // (HDDRSDRC2) Value : 7
  719. // -------- HDDRSDRC2_T3PR : (HDDRSDRC2 Offset: 0x18) Timing3 Register --------
  720. #define AT91C_DDRC2_TANPD (0xF << 0) // (HDDRSDRC2) ODT to power down entry
  721. #define AT91C_DDRC2_TANPD_0 (0x0) // (HDDRSDRC2) Value : 0
  722. #define AT91C_DDRC2_TANPD_1 (0x1) // (HDDRSDRC2) Value : 1
  723. #define AT91C_DDRC2_TANPD_2 (0x2) // (HDDRSDRC2) Value : 2
  724. #define AT91C_DDRC2_TANPD_3 (0x3) // (HDDRSDRC2) Value : 3
  725. #define AT91C_DDRC2_TANPD_4 (0x4) // (HDDRSDRC2) Value : 4
  726. #define AT91C_DDRC2_TANPD_5 (0x5) // (HDDRSDRC2) Value : 5
  727. #define AT91C_DDRC2_TANPD_6 (0x6) // (HDDRSDRC2) Value : 6
  728. #define AT91C_DDRC2_TANPD_7 (0x7) // (HDDRSDRC2) Value : 7
  729. #define AT91C_DDRC2_TANPD_8 (0x8) // (HDDRSDRC2) Value : 8
  730. #define AT91C_DDRC2_TANPD_9 (0x9) // (HDDRSDRC2) Value : 9
  731. #define AT91C_DDRC2_TANPD_10 (0xA) // (HDDRSDRC2) Value : 10
  732. #define AT91C_DDRC2_TANPD_11 (0xB) // (HDDRSDRC2) Value : 11
  733. #define AT91C_DDRC2_TANPD_12 (0xC) // (HDDRSDRC2) Value : 12
  734. #define AT91C_DDRC2_TANPD_13 (0xD) // (HDDRSDRC2) Value : 13
  735. #define AT91C_DDRC2_TANPD_14 (0xE) // (HDDRSDRC2) Value : 14
  736. #define AT91C_DDRC2_TANPD_15 (0xF) // (HDDRSDRC2) Value : 15
  737. #define AT91C_DDRC2_TAXPD (0xF << 4) // (HDDRSDRC2) ODT power down exit
  738. #define AT91C_DDRC2_TAXPD_0 (0x0 << 4) // (HDDRSDRC2) Value : 0
  739. #define AT91C_DDRC2_TAXPD_1 (0x1 << 4) // (HDDRSDRC2) Value : 1
  740. #define AT91C_DDRC2_TAXPD_2 (0x2 << 4) // (HDDRSDRC2) Value : 2
  741. #define AT91C_DDRC2_TAXPD_3 (0x3 << 4) // (HDDRSDRC2) Value : 3
  742. #define AT91C_DDRC2_TAXPD_4 (0x4 << 4) // (HDDRSDRC2) Value : 4
  743. #define AT91C_DDRC2_TAXPD_5 (0x5 << 4) // (HDDRSDRC2) Value : 5
  744. #define AT91C_DDRC2_TAXPD_6 (0x6 << 4) // (HDDRSDRC2) Value : 6
  745. #define AT91C_DDRC2_TAXPD_7 (0x7 << 4) // (HDDRSDRC2) Value : 7
  746. #define AT91C_DDRC2_TAXPD_8 (0x8 << 4) // (HDDRSDRC2) Value : 8
  747. #define AT91C_DDRC2_TAXPD_9 (0x9 << 4) // (HDDRSDRC2) Value : 9
  748. #define AT91C_DDRC2_TAXPD_10 (0xA << 4) // (HDDRSDRC2) Value : 10
  749. #define AT91C_DDRC2_TAXPD_11 (0xB << 4) // (HDDRSDRC2) Value : 11
  750. #define AT91C_DDRC2_TAXPD_12 (0xC << 4) // (HDDRSDRC2) Value : 12
  751. #define AT91C_DDRC2_TAXPD_13 (0xD << 4) // (HDDRSDRC2) Value : 13
  752. #define AT91C_DDRC2_TAXPD_14 (0xE << 4) // (HDDRSDRC2) Value : 14
  753. #define AT91C_DDRC2_TAXPD_15 (0xF << 4) // (HDDRSDRC2) Value : 15
  754. #define AT91C_DDRC2_TAOFPD (0xF << 8) // (HDDRSDRC2) ODT turn off in power down mode
  755. #define AT91C_DDRC2_TAOFPD_0 (0x0 << 8) // (HDDRSDRC2) Value : 0
  756. #define AT91C_DDRC2_TAOFPD_1 (0x1 << 8) // (HDDRSDRC2) Value : 1
  757. #define AT91C_DDRC2_TAOFPD_2 (0x2 << 8) // (HDDRSDRC2) Value : 2
  758. #define AT91C_DDRC2_TAOFPD_3 (0x3 << 8) // (HDDRSDRC2) Value : 3
  759. #define AT91C_DDRC2_TAOFPD_4 (0x4 << 8) // (HDDRSDRC2) Value : 4
  760. #define AT91C_DDRC2_TAOFPD_5 (0x5 << 8) // (HDDRSDRC2) Value : 5
  761. #define AT91C_DDRC2_TAOFPD_6 (0x6 << 8) // (HDDRSDRC2) Value : 6
  762. #define AT91C_DDRC2_TAOFPD_7 (0x7 << 8) // (HDDRSDRC2) Value : 7
  763. #define AT91C_DDRC2_TAOFPD_8 (0x8 << 8) // (HDDRSDRC2) Value : 8
  764. #define AT91C_DDRC2_TAOFPD_9 (0x9 << 8) // (HDDRSDRC2) Value : 9
  765. #define AT91C_DDRC2_TAOFPD_10 (0xA << 8) // (HDDRSDRC2) Value : 10
  766. #define AT91C_DDRC2_TAOFPD_11 (0xB << 8) // (HDDRSDRC2) Value : 11
  767. #define AT91C_DDRC2_TAOFPD_12 (0xC << 8) // (HDDRSDRC2) Value : 12
  768. #define AT91C_DDRC2_TAOFPD_13 (0xD << 8) // (HDDRSDRC2) Value : 13
  769. #define AT91C_DDRC2_TAOFPD_14 (0xE << 8) // (HDDRSDRC2) Value : 14
  770. #define AT91C_DDRC2_TAOFPD_15 (0xF << 8) // (HDDRSDRC2) Value : 15
  771. #define AT91C_DDRC2_TAOFD (0xF << 12) // (HDDRSDRC2) ODT turn off delay
  772. #define AT91C_DDRC2_TAOFD_0 (0x0 << 12) // (HDDRSDRC2) Value : 0
  773. #define AT91C_DDRC2_TAOFD_1 (0x1 << 12) // (HDDRSDRC2) Value : 1
  774. #define AT91C_DDRC2_TAOFD_2 (0x2 << 12) // (HDDRSDRC2) Value : 2
  775. #define AT91C_DDRC2_TAOFD_3 (0x3 << 12) // (HDDRSDRC2) Value : 3
  776. #define AT91C_DDRC2_TAOFD_4 (0x4 << 12) // (HDDRSDRC2) Value : 4
  777. #define AT91C_DDRC2_TAOFD_5 (0x5 << 12) // (HDDRSDRC2) Value : 5
  778. #define AT91C_DDRC2_TAOFD_6 (0x6 << 12) // (HDDRSDRC2) Value : 6
  779. #define AT91C_DDRC2_TAOFD_7 (0x7 << 12) // (HDDRSDRC2) Value : 7
  780. #define AT91C_DDRC2_TAOFD_8 (0x8 << 12) // (HDDRSDRC2) Value : 8
  781. #define AT91C_DDRC2_TAOFD_9 (0x9 << 12) // (HDDRSDRC2) Value : 9
  782. #define AT91C_DDRC2_TAOFD_10 (0xA << 12) // (HDDRSDRC2) Value : 10
  783. #define AT91C_DDRC2_TAOFD_11 (0xB << 12) // (HDDRSDRC2) Value : 11
  784. #define AT91C_DDRC2_TAOFD_12 (0xC << 12) // (HDDRSDRC2) Value : 12
  785. #define AT91C_DDRC2_TAOFD_13 (0xD << 12) // (HDDRSDRC2) Value : 13
  786. #define AT91C_DDRC2_TAOFD_14 (0xE << 12) // (HDDRSDRC2) Value : 14
  787. #define AT91C_DDRC2_TAOFD_15 (0xF << 12) // (HDDRSDRC2) Value : 15
  788. #define AT91C_DDRC2_TAONPD (0xF << 16) // (HDDRSDRC2) ODT turn on in power down mode
  789. #define AT91C_DDRC2_TAONPD_0 (0x0 << 16) // (HDDRSDRC2) Value : 0
  790. #define AT91C_DDRC2_TAONPD_1 (0x1 << 16) // (HDDRSDRC2) Value : 1
  791. #define AT91C_DDRC2_TAONPD_2 (0x2 << 16) // (HDDRSDRC2) Value : 2
  792. #define AT91C_DDRC2_TAONPD_3 (0x3 << 16) // (HDDRSDRC2) Value : 3
  793. #define AT91C_DDRC2_TAONPD_4 (0x4 << 16) // (HDDRSDRC2) Value : 4
  794. #define AT91C_DDRC2_TAONPD_5 (0x5 << 16) // (HDDRSDRC2) Value : 5
  795. #define AT91C_DDRC2_TAONPD_6 (0x6 << 16) // (HDDRSDRC2) Value : 6
  796. #define AT91C_DDRC2_TAONPD_7 (0x7 << 16) // (HDDRSDRC2) Value : 7
  797. #define AT91C_DDRC2_TAONPD_8 (0x8 << 16) // (HDDRSDRC2) Value : 8
  798. #define AT91C_DDRC2_TAONPD_9 (0x9 << 16) // (HDDRSDRC2) Value : 9
  799. #define AT91C_DDRC2_TAONPD_10 (0xA << 16) // (HDDRSDRC2) Value : 10
  800. #define AT91C_DDRC2_TAONPD_11 (0xB << 16) // (HDDRSDRC2) Value : 11
  801. #define AT91C_DDRC2_TAONPD_12 (0xC << 16) // (HDDRSDRC2) Value : 12
  802. #define AT91C_DDRC2_TAONPD_13 (0xD << 16) // (HDDRSDRC2) Value : 13
  803. #define AT91C_DDRC2_TAONPD_14 (0xE << 16) // (HDDRSDRC2) Value : 14
  804. #define AT91C_DDRC2_TAONPD_15 (0xF << 16) // (HDDRSDRC2) Value : 15
  805. // -------- HDDRSDRC2_LPR : (HDDRSDRC2 Offset: 0x1c) --------
  806. #define AT91C_DDRC2_LPCB (0x3 << 0) // (HDDRSDRC2) Low-power Command Bit
  807. #define AT91C_DDRC2_LPCB_DISABLED (0x0) // (HDDRSDRC2) Low-power Feature is inhibited: no power-down, self refresh and Deep power mode are issued to the SDRAM device.
  808. #define AT91C_DDRC2_LPCB_SELFREFRESH (0x1) // (HDDRSDRC2) The DDRSDRAMC Controller issues a Self Refresh Command to the SDRAM device, the clock(s) is/are de-activated and the CKE signal is set low. The SDRAM device leaves the self refresh mode when accessed and enters it after the access.
  809. #define AT91C_DDRC2_LPCB_POWERDOWN (0x2) // (HDDRSDRC2) The HDDRSDRC2 Controller issues a Power-down Command to the SDRAM device after each access, the CKE signal is set low. The SDRAM device leaves the power-down mode when accessed and enters it after the access.
  810. #define AT91C_DDRC2_LPCB_DEEP_PWD (0x3) // (HDDRSDRC2) The HDDRSDRC2 Controller issues a Deep Power-down Command to the Mobile SDRAM device. This mode is unique to Mobile SDRAM devices
  811. #define AT91C_DDRC2_CLK_FR (0x1 << 2) // (HDDRSDRC2) Clock frozen Command Bit
  812. #define AT91C_DDRC2_CLK_FR_DISABLED (0x0 << 2) // (HDDRSDRC2) Low-power Feature is inhibited: no power-down, self refresh and Deep power mode are issued to the SDRAM device.
  813. #define AT91C_DDRC2_CLK_FR_SELFREFRESH (0x1 << 2) // (HDDRSDRC2) The DDRSDRAMC Controller issues a Self Refresh Command to the SDRAM device, the clock(s) is/are de-activated and the CKE signal is set low. The SDRAM device leaves the self refresh mode when accessed and enters it after the access.
  814. #define AT91C_DDRC2_CLK_FR_POWERDOWN (0x2 << 2) // (HDDRSDRC2) The HDDRSDRC2 Controller issues a Power-down Command to the SDRAM device after each access, the CKE signal is set low. The SDRAM device leaves the power-down mode when accessed and enters it after the access.
  815. #define AT91C_DDRC2_CLK_FR_DEEP_PWD (0x3 << 2) // (HDDRSDRC2) The HDDRSDRC2 Controller issues a Deep Power-down Command to the Mobile SDRAM device. This mode is unique to Mobile SDRAM devices
  816. #define AT91C_DDRC2_PASR (0x7 << 4) // (HDDRSDRC2) Partial Array Self Refresh
  817. #define AT91C_ (0x0 << 8) // (HDDRSDRC2)
  818. #define AT91C_DDRC2_DS (0x3 << 10) // (HDDRSDRC2) Drive strength
  819. #define AT91C_DDRC2_TIMEOUT (0x3 << 12) // (HDDRSDRC2) low-power mode delay
  820. #define AT91C_DDRC2_TIMEOUT_0 (0x0 << 12) // (HDDRSDRC2) The SDRAM controller activates the SDRAM low-power mode immediately after the end of the last transfer.
  821. #define AT91C_DDRC2_TIMEOUT_64 (0x1 << 12) // (HDDRSDRC2) The SDRAM controller activates the SDRAM low-power mode 64 clock cycles after the end of the last transfer.
  822. #define AT91C_DDRC2_TIMEOUT_128 (0x2 << 12) // (HDDRSDRC2) The SDRAM controller activates the SDRAM low-power mode 128 clock cycles after the end of the last transfer.
  823. #define AT91C_DDRC2_TIMEOUT_Reserved (0x3 << 12) // (HDDRSDRC2) Reserved
  824. #define AT91C_DDRC2_ADPE (0x1 << 16) // (HDDRSDRC2) Active Power Down Exit time
  825. #define AT91C_DDRC2_ADPE_FAST (0x0 << 16) // (HDDRSDRC2) Fast Exit
  826. #define AT91C_DDRC2_ADPE_SLOW (0x1 << 16) // (HDDRSDRC2) Slow Exit
  827. // -------- HDDRSDRC2_MDR : (HDDRSDRC2 Offset: 0x20) Memory Device Register --------
  828. #define AT91C_DDRC2_MD (0x7 << 0) // (HDDRSDRC2) memory device
  829. #define AT91C_DDRC2_MD_SDR_SDRAM (0x0) // (HDDRSDRC2) SDR SDRAM
  830. #define AT91C_DDRC2_MD_LP_SDR_SDRAM (0x1) // (HDDRSDRC2) Low Power SDR SDRAM
  831. #define AT91C_DDRC2_MD_DDR_SDRAM (0x2) // (HDDRSDRC2) DDR SDRAM
  832. #define AT91C_DDRC2_MD_LP_DDR_SDRAM (0x3) // (HDDRSDRC2) Low Power DDR SDRAM
  833. #define AT91C_DDRC2_MD_DDR2_SDRAM (0x6) // (HDDRSDRC2) DDR2 SDRAM
  834. #define AT91C_DDRC2_DBW (0x1 << 4) // (HDDRSDRC2) Data Bus Width
  835. #define AT91C_DDRC2_DBW_32_BITS (0x0 << 4) // (HDDRSDRC2) 32 Bits datas bus
  836. #define AT91C_DDRC2_DBW_16_BITS (0x1 << 4) // (HDDRSDRC2) 16 Bits datas bus
  837. // -------- HDDRSDRC2_DLL : (HDDRSDRC2 Offset: 0x24) DLL Information Register --------
  838. #define AT91C_DDRC2_MDINC (0x1 << 0) // (HDDRSDRC2) DLL Master Delay Increment
  839. #define AT91C_DDRC2_MDDEC (0x1 << 1) // (HDDRSDRC2) DLL Master Delay Decrement
  840. #define AT91C_DDRC2_MDOVF (0x1 << 2) // (HDDRSDRC2) DLL Master Delay Overflow Flag
  841. #define AT91C_DDRC2_SDCOVF (0x1 << 3) // (HDDRSDRC2) DLL Slave Delay Correction Overflow Flag
  842. #define AT91C_DDRC2_SDCUDF (0x1 << 4) // (HDDRSDRC2) DLL Slave Delay Correction Underflow Flag
  843. #define AT91C_DDRC2_SDERF (0x1 << 5) // (HDDRSDRC2) DLL Slave Delay Correction Error Flag
  844. #define AT91C_DDRC2_MDVAL (0xFF << 8) // (HDDRSDRC2) DLL Master Delay Value
  845. #define AT91C_DDRC2_SDVAL (0xFF << 16) // (HDDRSDRC2) DLL Slave Delay Value
  846. #define AT91C_DDRC2_SDCVAL (0xFF << 24) // (HDDRSDRC2) DLL Slave Delay Correction Value
  847. // -------- HDDRSDRC2_HS : (HDDRSDRC2 Offset: 0x2c) High Speed Register --------
  848. #define AT91C_DDRC2_DA (0x1 << 0) // (HDDRSDRC2) Decode cycle
  849. #define AT91C_DDRC2_NO_OPT (0x1 << 1) // (HDDRSDRC2) Disable optimization
  850. #define AT91C_DDRC2_NO_ANT (0x1 << 2) // (HDDRSDRC2) Disable Anticipated read
  851. #define AT91C_DDRC2_RES_DQS (0x1 << 3) // (HDDRSDRC2) Reset DQS Active
  852. // -------- HDDRSDRC2_DELAY1 : (HDDRSDRC2 Offset: 0x30) Pad delay1 Register --------
  853. #define AT91C_DDRC2_DELAY (0xF << 0) // (HDDRSDRC2) Pad delay value
  854. // -------- HDDRSDRC2_DELAY2 : (HDDRSDRC2 Offset: 0x34) Pad delay2 Register --------
  855. // -------- HDDRSDRC2_DELAY3 : (HDDRSDRC2 Offset: 0x38) Pad delay3 Register --------
  856. // -------- HDDRSDRC2_DELAY4 : (HDDRSDRC2 Offset: 0x3c) Pad delay4 Register --------
  857. // -------- HDDRSDRC2_DELAY5 : (HDDRSDRC2 Offset: 0x40) Pad delay5 Register --------
  858. // -------- HDDRSDRC2_DELAY6 : (HDDRSDRC2 Offset: 0x44) Pad delay6 Register --------
  859. // -------- HDDRSDRC2_DELAY7 : (HDDRSDRC2 Offset: 0x48) Pad delay7 Register --------
  860. // -------- HDDRSDRC2_DELAY8 : (HDDRSDRC2 Offset: 0x4c) Pad delay8 Register --------
  861. // -------- HDDRSDRC2_WPCR : (HDDRSDRC2 Offset: 0xe4) Write Protect Control Register --------
  862. #define AT91C_DDRC2_WPEN (0x1 << 0) // (HDDRSDRC2) write protect enable
  863. #define AT91C_DDRC2_WPKEY (0xFFFFFF << 8) // (HDDRSDRC2) write protect key
  864. // -------- HDDRSDRC2_WPSR : (HDDRSDRC2 Offset: 0xe8) Write Protect Status Register --------
  865. #define AT91C_DDRC2_WPVS (0x1 << 0) // (HDDRSDRC2) write protect violation status
  866. #define AT91C_DDRC2_WPSRC (0xFFFF << 8) // (HDDRSDRC2) write protect source address
  867. // *****************************************************************************
  868. // SOFTWARE API DEFINITION FOR Static Memory Controller Interface
  869. // *****************************************************************************
  870. #ifndef __ASSEMBLY__
  871. typedef struct _AT91S_SMC {
  872. AT91C_REG SMC_SETUP0; // Setup Register for CS 0
  873. AT91C_REG SMC_PULSE0; // Pulse Register for CS 0
  874. AT91C_REG SMC_CYCLE0; // Cycle Register for CS 0
  875. AT91C_REG SMC_CTRL0; // Control Register for CS 0
  876. AT91C_REG SMC_SETUP1; // Setup Register for CS 1
  877. AT91C_REG SMC_PULSE1; // Pulse Register for CS 1
  878. AT91C_REG SMC_CYCLE1; // Cycle Register for CS 1
  879. AT91C_REG SMC_CTRL1; // Control Register for CS 1
  880. AT91C_REG SMC_SETUP2; // Setup Register for CS 2
  881. AT91C_REG SMC_PULSE2; // Pulse Register for CS 2
  882. AT91C_REG SMC_CYCLE2; // Cycle Register for CS 2
  883. AT91C_REG SMC_CTRL2; // Control Register for CS 2
  884. AT91C_REG SMC_SETUP3; // Setup Register for CS 3
  885. AT91C_REG SMC_PULSE3; // Pulse Register for CS 3
  886. AT91C_REG SMC_CYCLE3; // Cycle Register for CS 3
  887. AT91C_REG SMC_CTRL3; // Control Register for CS 3
  888. AT91C_REG SMC_SETUP4; // Setup Register for CS 4
  889. AT91C_REG SMC_PULSE4; // Pulse Register for CS 4
  890. AT91C_REG SMC_CYCLE4; // Cycle Register for CS 4
  891. AT91C_REG SMC_CTRL4; // Control Register for CS 4
  892. AT91C_REG SMC_SETUP5; // Setup Register for CS 5
  893. AT91C_REG SMC_PULSE5; // Pulse Register for CS 5
  894. AT91C_REG SMC_CYCLE5; // Cycle Register for CS 5
  895. AT91C_REG SMC_CTRL5; // Control Register for CS 5
  896. AT91C_REG SMC_SETUP6; // Setup Register for CS 6
  897. AT91C_REG SMC_PULSE6; // Pulse Register for CS 6
  898. AT91C_REG SMC_CYCLE6; // Cycle Register for CS 6
  899. AT91C_REG SMC_CTRL6; // Control Register for CS 6
  900. AT91C_REG SMC_SETUP7; // Setup Register for CS 7
  901. AT91C_REG SMC_PULSE7; // Pulse Register for CS 7
  902. AT91C_REG SMC_CYCLE7; // Cycle Register for CS 7
  903. AT91C_REG SMC_CTRL7; // Control Register for CS 7
  904. AT91C_REG Reserved0[16]; //
  905. AT91C_REG SMC_DELAY1; // SMC Delay Control Register
  906. AT91C_REG SMC_DELAY2; // SMC Delay Control Register
  907. AT91C_REG SMC_DELAY3; // SMC Delay Control Register
  908. AT91C_REG SMC_DELAY4; // SMC Delay Control Register
  909. AT91C_REG SMC_DELAY5; // SMC Delay Control Register
  910. AT91C_REG SMC_DELAY6; // SMC Delay Control Register
  911. AT91C_REG SMC_DELAY7; // SMC Delay Control Register
  912. AT91C_REG SMC_DELAY8; // SMC Delay Control Register
  913. } AT91S_SMC, *AT91PS_SMC;
  914. #else
  915. #define SETUP0 (AT91C_CAST(AT91C_REG *) 0x00000000) // (SETUP0) Setup Register for CS 0
  916. #define PULSE0 (AT91C_CAST(AT91C_REG *) 0x00000004) // (PULSE0) Pulse Register for CS 0
  917. #define CYCLE0 (AT91C_CAST(AT91C_REG *) 0x00000008) // (CYCLE0) Cycle Register for CS 0
  918. #define CTRL0 (AT91C_CAST(AT91C_REG *) 0x0000000C) // (CTRL0) Control Register for CS 0
  919. #define SETUP1 (AT91C_CAST(AT91C_REG *) 0x00000010) // (SETUP1) Setup Register for CS 1
  920. #define PULSE1 (AT91C_CAST(AT91C_REG *) 0x00000014) // (PULSE1) Pulse Register for CS 1
  921. #define CYCLE1 (AT91C_CAST(AT91C_REG *) 0x00000018) // (CYCLE1) Cycle Register for CS 1
  922. #define CTRL1 (AT91C_CAST(AT91C_REG *) 0x0000001C) // (CTRL1) Control Register for CS 1
  923. #define SETUP2 (AT91C_CAST(AT91C_REG *) 0x00000020) // (SETUP2) Setup Register for CS 2
  924. #define PULSE2 (AT91C_CAST(AT91C_REG *) 0x00000024) // (PULSE2) Pulse Register for CS 2
  925. #define CYCLE2 (AT91C_CAST(AT91C_REG *) 0x00000028) // (CYCLE2) Cycle Register for CS 2
  926. #define CTRL2 (AT91C_CAST(AT91C_REG *) 0x0000002C) // (CTRL2) Control Register for CS 2
  927. #define SETUP3 (AT91C_CAST(AT91C_REG *) 0x00000030) // (SETUP3) Setup Register for CS 3
  928. #define PULSE3 (AT91C_CAST(AT91C_REG *) 0x00000034) // (PULSE3) Pulse Register for CS 3
  929. #define CYCLE3 (AT91C_CAST(AT91C_REG *) 0x00000038) // (CYCLE3) Cycle Register for CS 3
  930. #define CTRL3 (AT91C_CAST(AT91C_REG *) 0x0000003C) // (CTRL3) Control Register for CS 3
  931. #define SETUP4 (AT91C_CAST(AT91C_REG *) 0x00000040) // (SETUP4) Setup Register for CS 4
  932. #define PULSE4 (AT91C_CAST(AT91C_REG *) 0x00000044) // (PULSE4) Pulse Register for CS 4
  933. #define CYCLE4 (AT91C_CAST(AT91C_REG *) 0x00000048) // (CYCLE4) Cycle Register for CS 4
  934. #define CTRL4 (AT91C_CAST(AT91C_REG *) 0x0000004C) // (CTRL4) Control Register for CS 4
  935. #define SETUP5 (AT91C_CAST(AT91C_REG *) 0x00000050) // (SETUP5) Setup Register for CS 5
  936. #define PULSE5 (AT91C_CAST(AT91C_REG *) 0x00000054) // (PULSE5) Pulse Register for CS 5
  937. #define CYCLE5 (AT91C_CAST(AT91C_REG *) 0x00000058) // (CYCLE5) Cycle Register for CS 5
  938. #define CTRL5 (AT91C_CAST(AT91C_REG *) 0x0000005C) // (CTRL5) Control Register for CS 5
  939. #define SETUP6 (AT91C_CAST(AT91C_REG *) 0x00000060) // (SETUP6) Setup Register for CS 6
  940. #define PULSE6 (AT91C_CAST(AT91C_REG *) 0x00000064) // (PULSE6) Pulse Register for CS 6
  941. #define CYCLE6 (AT91C_CAST(AT91C_REG *) 0x00000068) // (CYCLE6) Cycle Register for CS 6
  942. #define CTRL6 (AT91C_CAST(AT91C_REG *) 0x0000006C) // (CTRL6) Control Register for CS 6
  943. #define SETUP7 (AT91C_CAST(AT91C_REG *) 0x00000070) // (SETUP7) Setup Register for CS 7
  944. #define PULSE7 (AT91C_CAST(AT91C_REG *) 0x00000074) // (PULSE7) Pulse Register for CS 7
  945. #define CYCLE7 (AT91C_CAST(AT91C_REG *) 0x00000078) // (CYCLE7) Cycle Register for CS 7
  946. #define CTRL7 (AT91C_CAST(AT91C_REG *) 0x0000007C) // (CTRL7) Control Register for CS 7
  947. #define DELAY1 (AT91C_CAST(AT91C_REG *) 0x000000C0) // (DELAY1) SMC Delay Control Register
  948. #define DELAY2 (AT91C_CAST(AT91C_REG *) 0x000000C4) // (DELAY2) SMC Delay Control Register
  949. #define DELAY3 (AT91C_CAST(AT91C_REG *) 0x000000C8) // (DELAY3) SMC Delay Control Register
  950. #define DELAY4 (AT91C_CAST(AT91C_REG *) 0x000000CC) // (DELAY4) SMC Delay Control Register
  951. #define DELAY5 (AT91C_CAST(AT91C_REG *) 0x000000D0) // (DELAY5) SMC Delay Control Register
  952. #define DELAY6 (AT91C_CAST(AT91C_REG *) 0x000000D4) // (DELAY6) SMC Delay Control Register
  953. #define DELAY7 (AT91C_CAST(AT91C_REG *) 0x000000D8) // (DELAY7) SMC Delay Control Register
  954. #define DELAY8 (AT91C_CAST(AT91C_REG *) 0x000000DC) // (DELAY8) SMC Delay Control Register
  955. #endif
  956. // -------- SMC_SETUP : (SMC Offset: 0x0) Setup Register for CS x --------
  957. #define AT91C_SMC_NWESETUP (0x3F << 0) // (SMC) NWE Setup Length
  958. #define AT91C_SMC_NCSSETUPWR (0x3F << 8) // (SMC) NCS Setup Length in WRite Access
  959. #define AT91C_SMC_NRDSETUP (0x3F << 16) // (SMC) NRD Setup Length
  960. #define AT91C_SMC_NCSSETUPRD (0x3F << 24) // (SMC) NCS Setup Length in ReaD Access
  961. // -------- SMC_PULSE : (SMC Offset: 0x4) Pulse Register for CS x --------
  962. #define AT91C_SMC_NWEPULSE (0x7F << 0) // (SMC) NWE Pulse Length
  963. #define AT91C_SMC_NCSPULSEWR (0x7F << 8) // (SMC) NCS Pulse Length in WRite Access
  964. #define AT91C_SMC_NRDPULSE (0x7F << 16) // (SMC) NRD Pulse Length
  965. #define AT91C_SMC_NCSPULSERD (0x7F << 24) // (SMC) NCS Pulse Length in ReaD Access
  966. // -------- SMC_CYC : (SMC Offset: 0x8) Cycle Register for CS x --------
  967. #define AT91C_SMC_NWECYCLE (0x1FF << 0) // (SMC) Total Write Cycle Length
  968. #define AT91C_SMC_NRDCYCLE (0x1FF << 16) // (SMC) Total Read Cycle Length
  969. // -------- SMC_CTRL : (SMC Offset: 0xc) Control Register for CS x --------
  970. #define AT91C_SMC_READMODE (0x1 << 0) // (SMC) Read Mode
  971. #define AT91C_SMC_WRITEMODE (0x1 << 1) // (SMC) Write Mode
  972. #define AT91C_SMC_NWAITM (0x3 << 4) // (SMC) NWAIT Mode
  973. #define AT91C_SMC_NWAITM_NWAIT_DISABLE (0x0 << 4) // (SMC) External NWAIT disabled.
  974. #define AT91C_SMC_NWAITM_NWAIT_ENABLE_FROZEN (0x2 << 4) // (SMC) External NWAIT enabled in frozen mode.
  975. #define AT91C_SMC_NWAITM_NWAIT_ENABLE_READY (0x3 << 4) // (SMC) External NWAIT enabled in ready mode.
  976. #define AT91C_SMC_BAT (0x1 << 8) // (SMC) Byte Access Type
  977. #define AT91C_SMC_BAT_BYTE_SELECT (0x0 << 8) // (SMC) Write controled by ncs, nbs0, nbs1, nbs2, nbs3. Read controled by ncs, nrd, nbs0, nbs1, nbs2, nbs3.
  978. #define AT91C_SMC_BAT_BYTE_WRITE (0x1 << 8) // (SMC) Write controled by ncs, nwe0, nwe1, nwe2, nwe3. Read controled by ncs and nrd.
  979. #define AT91C_SMC_DBW (0x3 << 12) // (SMC) Data Bus Width
  980. #define AT91C_SMC_DBW_WIDTH_EIGTH_BITS (0x0 << 12) // (SMC) 8 bits.
  981. #define AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS (0x1 << 12) // (SMC) 16 bits.
  982. #define AT91C_SMC_DBW_WIDTH_THIRTY_TWO_BITS (0x2 << 12) // (SMC) 32 bits.
  983. #define AT91C_SMC_TDF (0xF << 16) // (SMC) Data Float Time.
  984. #define AT91C_SMC_TDFEN (0x1 << 20) // (SMC) TDF Enabled.
  985. #define AT91C_SMC_PMEN (0x1 << 24) // (SMC) Page Mode Enabled.
  986. #define AT91C_SMC_PS (0x3 << 28) // (SMC) Page Size
  987. #define AT91C_SMC_PS_SIZE_FOUR_BYTES (0x0 << 28) // (SMC) 4 bytes.
  988. #define AT91C_SMC_PS_SIZE_EIGHT_BYTES (0x1 << 28) // (SMC) 8 bytes.
  989. #define AT91C_SMC_PS_SIZE_SIXTEEN_BYTES (0x2 << 28) // (SMC) 16 bytes.
  990. #define AT91C_SMC_PS_SIZE_THIRTY_TWO_BYTES (0x3 << 28) // (SMC) 32 bytes.
  991. // -------- SMC_SETUP : (SMC Offset: 0x10) Setup Register for CS x --------
  992. // -------- SMC_PULSE : (SMC Offset: 0x14) Pulse Register for CS x --------
  993. // -------- SMC_CYC : (SMC Offset: 0x18) Cycle Register for CS x --------
  994. // -------- SMC_CTRL : (SMC Offset: 0x1c) Control Register for CS x --------
  995. // -------- SMC_SETUP : (SMC Offset: 0x20) Setup Register for CS x --------
  996. // -------- SMC_PULSE : (SMC Offset: 0x24) Pulse Register for CS x --------
  997. // -------- SMC_CYC : (SMC Offset: 0x28) Cycle Register for CS x --------
  998. // -------- SMC_CTRL : (SMC Offset: 0x2c) Control Register for CS x --------
  999. // -------- SMC_SETUP : (SMC Offset: 0x30) Setup Register for CS x --------
  1000. // -------- SMC_PULSE : (SMC Offset: 0x34) Pulse Register for CS x --------
  1001. // -------- SMC_CYC : (SMC Offset: 0x38) Cycle Register for CS x --------
  1002. // -------- SMC_CTRL : (SMC Offset: 0x3c) Control Register for CS x --------
  1003. // -------- SMC_SETUP : (SMC Offset: 0x40) Setup Register for CS x --------
  1004. // -------- SMC_PULSE : (SMC Offset: 0x44) Pulse Register for CS x --------
  1005. // -------- SMC_CYC : (SMC Offset: 0x48) Cycle Register for CS x --------
  1006. // -------- SMC_CTRL : (SMC Offset: 0x4c) Control Register for CS x --------
  1007. // -------- SMC_SETUP : (SMC Offset: 0x50) Setup Register for CS x --------
  1008. // -------- SMC_PULSE : (SMC Offset: 0x54) Pulse Register for CS x --------
  1009. // -------- SMC_CYC : (SMC Offset: 0x58) Cycle Register for CS x --------
  1010. // -------- SMC_CTRL : (SMC Offset: 0x5c) Control Register for CS x --------
  1011. // -------- SMC_SETUP : (SMC Offset: 0x60) Setup Register for CS x --------
  1012. // -------- SMC_PULSE : (SMC Offset: 0x64) Pulse Register for CS x --------
  1013. // -------- SMC_CYC : (SMC Offset: 0x68) Cycle Register for CS x --------
  1014. // -------- SMC_CTRL : (SMC Offset: 0x6c) Control Register for CS x --------
  1015. // -------- SMC_SETUP : (SMC Offset: 0x70) Setup Register for CS x --------
  1016. // -------- SMC_PULSE : (SMC Offset: 0x74) Pulse Register for CS x --------
  1017. // -------- SMC_CYC : (SMC Offset: 0x78) Cycle Register for CS x --------
  1018. // -------- SMC_CTRL : (SMC Offset: 0x7c) Control Register for CS x --------
  1019. // *****************************************************************************
  1020. // SOFTWARE API DEFINITION FOR AHB Matrix Interface
  1021. // *****************************************************************************
  1022. #ifndef __ASSEMBLY__
  1023. typedef struct _AT91S_MATRIX {
  1024. AT91C_REG MATRIX_MCFG0; // Master Configuration Register 0 : ARM-I
  1025. AT91C_REG MATRIX_MCFG1; // Master Configuration Register 1 ; ARM-D
  1026. AT91C_REG MATRIX_MCFG2; // Master Configuration Register 2 : pdc
  1027. AT91C_REG MATRIX_MCFG3; // Master Configuration Register 3 : USB Host OHCI
  1028. AT91C_REG MATRIX_MCFG4; // Master Configuration Register 4 : DMA0
  1029. AT91C_REG MATRIX_MCFG5; // Master Configuration Register 5 : DMA1
  1030. AT91C_REG MATRIX_MCFG6; // Master Configuration Register 6 : hisi
  1031. AT91C_REG MATRIX_MCFG7; // Master Configuration Register 7 : lcdc
  1032. AT91C_REG MATRIX_MCFG8; // Master Configuration Register 8 : eMAC
  1033. AT91C_REG MATRIX_MCFG9; // Master Configuration Register 9 : USB Device
  1034. AT91C_REG MATRIX_MCFG10; // Master Configuration Register 10 : USB Host EHCI
  1035. AT91C_REG Reserved0[5]; //
  1036. AT91C_REG MATRIX_SCFG0; // Slave Configuration Register 0 : SRAM S0
  1037. AT91C_REG MATRIX_SCFG1; // Slave Configuration Register 1 : SRAM S1
  1038. AT91C_REG MATRIX_SCFG2; // Slave Configuration Register 2 : SRAM S2
  1039. AT91C_REG MATRIX_SCFG3; // Slave Configuration Register 3 : SRAM S3
  1040. AT91C_REG MATRIX_SCFG4; // Slave Configuration Register 4 ; ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1041. AT91C_REG MATRIX_SCFG5; // Slave Configuration Register 5 : DDR2 S0
  1042. AT91C_REG MATRIX_SCFG6; // Slave Configuration Register 6 : DDR2 S1
  1043. AT91C_REG MATRIX_SCFG7; // Slave Configuration Register 7 : DDR2 S2
  1044. AT91C_REG Reserved1[8]; //
  1045. AT91C_REG MATRIX_PRAS0; // PRAS0 : SRAM S0
  1046. AT91C_REG MATRIX_PRBS0; // PRBS0 : SRAM S0
  1047. AT91C_REG MATRIX_PRAS1; // PRAS1 : SRAM S1
  1048. AT91C_REG MATRIX_PRBS1; // PRBS1 : SRAM S1
  1049. AT91C_REG MATRIX_PRAS2; // PRAS2 : SRAM S2
  1050. AT91C_REG MATRIX_PRBS2; // PRBS2 : SRAM S2
  1051. AT91C_REG MATRIX_PRAS3; // PRAS3 : SRAM S3
  1052. AT91C_REG MATRIX_PRBS3; // PRBS3 : SRAM S3
  1053. AT91C_REG MATRIX_PRAS4; // PRAS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1054. AT91C_REG MATRIX_PRBS4; // PRBS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1055. AT91C_REG MATRIX_PRAS5; // PRAS5 : DDR2 S0
  1056. AT91C_REG MATRIX_PRBS5; // PRBS5 : DDR2 S0
  1057. AT91C_REG MATRIX_PRAS6; // PRAS6 : DDR2 S1
  1058. AT91C_REG MATRIX_PRBS6; // PRBS6 : DDR2 S1
  1059. AT91C_REG MATRIX_PRAS7; // PRAS7 : DDR2 S2
  1060. AT91C_REG MATRIX_PRBS7; // PRBS7 : DDR2 S2
  1061. AT91C_REG Reserved2[16]; //
  1062. AT91C_REG MATRIX_MRCR; // Master Remap Control Register
  1063. AT91C_REG Reserved3[3]; //
  1064. AT91C_REG MATRIX_TCMR; // Bus Matrix TCM Configuration Register
  1065. AT91C_REG Reserved4[1]; //
  1066. AT91C_REG MATRIX_DDRMPR; // DDR Multi-Port Register
  1067. AT91C_REG Reserved5[3]; //
  1068. AT91C_REG MATRIX_EBICSA; // EBI Chip Select Assignment Register
  1069. AT91C_REG Reserved6[46]; //
  1070. AT91C_REG MATRIX_WRPROTEN; // Write Protection Control Register
  1071. AT91C_REG MATRIX_WRPROTST; // Write Protection Status Register
  1072. } AT91S_MATRIX, *AT91PS_MATRIX;
  1073. #else
  1074. #define MATRIX_MCFG0 (AT91C_CAST(AT91C_REG *) 0x00000000) // (MATRIX_MCFG0) Master Configuration Register 0 : ARM-I
  1075. #define MATRIX_MCFG1 (AT91C_CAST(AT91C_REG *) 0x00000004) // (MATRIX_MCFG1) Master Configuration Register 1 ; ARM-D
  1076. #define MATRIX_MCFG2 (AT91C_CAST(AT91C_REG *) 0x00000008) // (MATRIX_MCFG2) Master Configuration Register 2 : pdc
  1077. #define MATRIX_MCFG3 (AT91C_CAST(AT91C_REG *) 0x0000000C) // (MATRIX_MCFG3) Master Configuration Register 3 : USB Host OHCI
  1078. #define MATRIX_MCFG4 (AT91C_CAST(AT91C_REG *) 0x00000010) // (MATRIX_MCFG4) Master Configuration Register 4 : DMA0
  1079. #define MATRIX_MCFG5 (AT91C_CAST(AT91C_REG *) 0x00000014) // (MATRIX_MCFG5) Master Configuration Register 5 : DMA1
  1080. #define MATRIX_MCFG6 (AT91C_CAST(AT91C_REG *) 0x00000018) // (MATRIX_MCFG6) Master Configuration Register 6 : hisi
  1081. #define MATRIX_MCFG7 (AT91C_CAST(AT91C_REG *) 0x0000001C) // (MATRIX_MCFG7) Master Configuration Register 7 : lcdc
  1082. #define MATRIX_MCFG8 (AT91C_CAST(AT91C_REG *) 0x00000020) // (MATRIX_MCFG8) Master Configuration Register 8 : eMAC
  1083. #define MATRIX_MCFG9 (AT91C_CAST(AT91C_REG *) 0x00000024) // (MATRIX_MCFG9) Master Configuration Register 9 : USB Device
  1084. #define MATRIX_MCFG10 (AT91C_CAST(AT91C_REG *) 0x00000028) // (MATRIX_MCFG10) Master Configuration Register 10 : USB Host EHCI
  1085. #define MATRIX_SCFG0 (AT91C_CAST(AT91C_REG *) 0x00000040) // (MATRIX_SCFG0) Slave Configuration Register 0 : SRAM S0
  1086. #define MATRIX_SCFG1 (AT91C_CAST(AT91C_REG *) 0x00000044) // (MATRIX_SCFG1) Slave Configuration Register 1 : SRAM S1
  1087. #define MATRIX_SCFG2 (AT91C_CAST(AT91C_REG *) 0x00000048) // (MATRIX_SCFG2) Slave Configuration Register 2 : SRAM S2
  1088. #define MATRIX_SCFG3 (AT91C_CAST(AT91C_REG *) 0x0000004C) // (MATRIX_SCFG3) Slave Configuration Register 3 : SRAM S3
  1089. #define MATRIX_SCFG4 (AT91C_CAST(AT91C_REG *) 0x00000050) // (MATRIX_SCFG4) Slave Configuration Register 4 ; ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1090. #define MATRIX_SCFG5 (AT91C_CAST(AT91C_REG *) 0x00000054) // (MATRIX_SCFG5) Slave Configuration Register 5 : DDR2 S0
  1091. #define MATRIX_SCFG6 (AT91C_CAST(AT91C_REG *) 0x00000058) // (MATRIX_SCFG6) Slave Configuration Register 6 : DDR2 S1
  1092. #define MATRIX_SCFG7 (AT91C_CAST(AT91C_REG *) 0x0000005C) // (MATRIX_SCFG7) Slave Configuration Register 7 : DDR2 S2
  1093. #define MATRIX_PRAS0 (AT91C_CAST(AT91C_REG *) 0x00000080) // (MATRIX_PRAS0) PRAS0 : SRAM S0
  1094. #define MATRIX_PRBS0 (AT91C_CAST(AT91C_REG *) 0x00000084) // (MATRIX_PRBS0) PRBS0 : SRAM S0
  1095. #define MATRIX_PRAS1 (AT91C_CAST(AT91C_REG *) 0x00000088) // (MATRIX_PRAS1) PRAS1 : SRAM S1
  1096. #define MATRIX_PRBS1 (AT91C_CAST(AT91C_REG *) 0x0000008C) // (MATRIX_PRBS1) PRBS1 : SRAM S1
  1097. #define MATRIX_PRAS2 (AT91C_CAST(AT91C_REG *) 0x00000090) // (MATRIX_PRAS2) PRAS2 : SRAM S2
  1098. #define MATRIX_PRBS2 (AT91C_CAST(AT91C_REG *) 0x00000094) // (MATRIX_PRBS2) PRBS2 : SRAM S2
  1099. #define MATRIX_PRAS3 (AT91C_CAST(AT91C_REG *) 0x00000098) // (MATRIX_PRAS3) PRAS3 : SRAM S3
  1100. #define MATRIX_PRBS3 (AT91C_CAST(AT91C_REG *) 0x0000009C) // (MATRIX_PRBS3) PRBS3 : SRAM S3
  1101. #define MATRIX_PRAS4 (AT91C_CAST(AT91C_REG *) 0x000000A0) // (MATRIX_PRAS4) PRAS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1102. #define MATRIX_PRBS4 (AT91C_CAST(AT91C_REG *) 0x000000A4) // (MATRIX_PRBS4) PRBS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  1103. #define MATRIX_PRAS5 (AT91C_CAST(AT91C_REG *) 0x000000A8) // (MATRIX_PRAS5) PRAS5 : DDR2 S0
  1104. #define MATRIX_PRBS5 (AT91C_CAST(AT91C_REG *) 0x000000AC) // (MATRIX_PRBS5) PRBS5 : DDR2 S0
  1105. #define MATRIX_PRAS6 (AT91C_CAST(AT91C_REG *) 0x000000B0) // (MATRIX_PRAS6) PRAS6 : DDR2 S1
  1106. #define MATRIX_PRBS6 (AT91C_CAST(AT91C_REG *) 0x000000B4) // (MATRIX_PRBS6) PRBS6 : DDR2 S1
  1107. #define MATRIX_PRAS7 (AT91C_CAST(AT91C_REG *) 0x000000B8) // (MATRIX_PRAS7) PRAS7 : DDR2 S2
  1108. #define MATRIX_PRBS7 (AT91C_CAST(AT91C_REG *) 0x000000BC) // (MATRIX_PRBS7) PRBS7 : DDR2 S2
  1109. #define MATRIX_MRCR (AT91C_CAST(AT91C_REG *) 0x00000100) // (MATRIX_MRCR) Master Remap Control Register
  1110. #define HMATRIX_CCFG_TCMR (AT91C_CAST(AT91C_REG *) 0x00000110) // (HMATRIX_CCFG_TCMR) Bus Matrix TCM Configuration Register
  1111. #define HMATRIX_CCFG_DDRMPR (AT91C_CAST(AT91C_REG *) 0x00000118) // (HMATRIX_CCFG_DDRMPR) DDR Multi-Port Register
  1112. #define HMATRIX_CCFG_EBICSA (AT91C_CAST(AT91C_REG *) 0x00000128) // (HMATRIX_CCFG_EBICSA) EBI Chip Select Assignment Register
  1113. #define MATRIX_WRPROTEN (AT91C_CAST(AT91C_REG *) 0x000001E4) // (MATRIX_WRPROTEN) Write Protection Control Register
  1114. #define MATRIX_WRPROTST (AT91C_CAST(AT91C_REG *) 0x000001E8) // (MATRIX_WRPROTST) Write Protection Status Register
  1115. #endif
  1116. // -------- MATRIX_MCFG0 : (MATRIX Offset: 0x0) Master Configuration Register ARM-I --------
  1117. #define AT91C_MATRIX_ULBT (0x7 << 0) // (MATRIX) Undefined Length Burst Type
  1118. // -------- MATRIX_MCFG1 : (MATRIX Offset: 0x4) Master Configuration Register ARM-D --------
  1119. // -------- MATRIX_MCFG2 : (MATRIX Offset: 0x8) Master Configuration Register PDC --------
  1120. // -------- MATRIX_MCFG3 : (MATRIX Offset: 0xc) Master Configuration Register USB Host OHCI --------
  1121. // -------- MATRIX_MCFG4 : (MATRIX Offset: 0x10) Master Configuration Register DMA0 --------
  1122. // -------- MATRIX_MCFG5 : (MATRIX Offset: 0x14) Master Configuration Register DMA1 --------
  1123. // -------- MATRIX_MCFG6 : (MATRIX Offset: 0x18) Master Configuration Register HISI --------
  1124. // -------- MATRIX_MCFG7 : (MATRIX Offset: 0x1c) Master Configuration Register LCD --------
  1125. // -------- MATRIX_MCFG8 : (MATRIX Offset: 0x20) Master Configuration Register EMAC --------
  1126. // -------- MATRIX_MCFG9 : (MATRIX Offset: 0x24) Master Configuration Register USB Device --------
  1127. // -------- MATRIX_MCFG10 : (MATRIX Offset: 0x28) Master Configuration Register USB Host EHCI --------
  1128. // -------- MATRIX_SCFG0 : (MATRIX Offset: 0x40) Slave Configuration Register 0 --------
  1129. #define AT91C_MATRIX_SLOT_CYCLE (0xFF << 0) // (MATRIX) Maximum Number of Allowed Cycles for a Burst
  1130. #define AT91C_MATRIX_DEFMSTR_TYPE (0x3 << 16) // (MATRIX) Default Master Type
  1131. #define AT91C_MATRIX_DEFMSTR_TYPE_NO_DEFMSTR (0x0 << 16) // (MATRIX) No Default Master. At the end of current slave access, if no other master request is pending, the slave is deconnected from all masters. This results in having a one cycle latency for the first transfer of a burst.
  1132. #define AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR (0x1 << 16) // (MATRIX) Last Default Master. At the end of current slave access, if no other master request is pending, the slave stay connected with the last master having accessed it. This results in not having the one cycle latency when the last master re-trying access on the slave.
  1133. #define AT91C_MATRIX_DEFMSTR_TYPE_FIXED_DEFMSTR (0x2 << 16) // (MATRIX) Fixed Default Master. At the end of current slave access, if no other master request is pending, the slave connects with fixed which number is in FIXED_DEFMSTR field. This results in not having the one cycle latency when the fixed master re-trying access on the slave.
  1134. #define AT91C_MATRIX_FIXED_DEFMSTR0 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1135. #define AT91C_MATRIX_FIXED_DEFMSTR0_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1136. #define AT91C_MATRIX_FIXED_DEFMSTR0_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1137. #define AT91C_MATRIX_FIXED_DEFMSTR0_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1138. #define AT91C_MATRIX_FIXED_DEFMSTR0_UHPHS_OHCI (0x3 << 18) // (MATRIX) USB Host OHCI Master is Default Master
  1139. #define AT91C_MATRIX_FIXED_DEFMSTR0_DMA0 (0x4 << 18) // (MATRIX) DMA0 Master is Default Master
  1140. #define AT91C_MATRIX_FIXED_DEFMSTR0_DMA1 (0x5 << 18) // (MATRIX) DMA1 Master is Default Master
  1141. #define AT91C_MATRIX_FIXED_DEFMSTR0_ISI (0x6 << 18) // (MATRIX) ISI Master is Default Master
  1142. #define AT91C_MATRIX_FIXED_DEFMSTR0_EMAC (0x8 << 18) // (MATRIX) EMAC Master is Default Master
  1143. #define AT91C_MATRIX_FIXED_DEFMSTR0_UDPHS (0x9 << 18) // (MATRIX) USB Device Master is Default Master
  1144. #define AT91C_MATRIX_FIXED_DEFMSTR0_UHPHS_EHCI (0xA << 18) // (MATRIX) USB Host EHCI Master is Default Master
  1145. #define AT91C_MATRIX_ARBT (0x3 << 24) // (MATRIX) Arbitration Type
  1146. // -------- MATRIX_SCFG1 : (MATRIX Offset: 0x44) Slave Configuration Register 1 --------
  1147. #define AT91C_MATRIX_FIXED_DEFMSTR1 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1148. #define AT91C_MATRIX_FIXED_DEFMSTR1_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1149. #define AT91C_MATRIX_FIXED_DEFMSTR1_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1150. #define AT91C_MATRIX_FIXED_DEFMSTR1_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1151. #define AT91C_MATRIX_FIXED_DEFMSTR1_ISI (0x6 << 18) // (MATRIX) ISI Master is Default Master
  1152. #define AT91C_MATRIX_FIXED_DEFMSTR1_UDPHS (0x9 << 18) // (MATRIX) USB Device Master is Default Master
  1153. // -------- MATRIX_SCFG2 : (MATRIX Offset: 0x48) Slave Configuration Register 2 --------
  1154. #define AT91C_MATRIX_FIXED_DEFMSTR2 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1155. #define AT91C_MATRIX_FIXED_DEFMSTR2_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1156. #define AT91C_MATRIX_FIXED_DEFMSTR2_VDEC (0xB << 18) // (MATRIX) Video Decoder Master is Default Master
  1157. // -------- MATRIX_SCFG3 : (MATRIX Offset: 0x4c) Slave Configuration Register 3 --------
  1158. #define AT91C_MATRIX_FIXED_DEFMSTR3 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1159. #define AT91C_MATRIX_FIXED_DEFMSTR3_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1160. #define AT91C_MATRIX_FIXED_DEFMSTR3_LCD (0x7 << 18) // (MATRIX) LCD Master is Default Master
  1161. // -------- MATRIX_SCFG4 : (MATRIX Offset: 0x50) Slave Configuration Register 4 --------
  1162. #define AT91C_MATRIX_FIXED_DEFMSTR4 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1163. #define AT91C_MATRIX_FIXED_DEFMSTR4_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1164. #define AT91C_MATRIX_FIXED_DEFMSTR4_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1165. #define AT91C_MATRIX_FIXED_DEFMSTR4_UHPHS_OHCI (0x3 << 18) // (MATRIX) USB Host OHCI Master is Default Master
  1166. #define AT91C_MATRIX_FIXED_DEFMSTR4_DMA0 (0x4 << 18) // (MATRIX) DMA0 Master is Default Master
  1167. #define AT91C_MATRIX_FIXED_DEFMSTR4_DMA1 (0x5 << 18) // (MATRIX) DMA1 Master is Default Master
  1168. #define AT91C_MATRIX_FIXED_DEFMSTR4_ISI (0x6 << 18) // (MATRIX) ISI Master is Default Master
  1169. #define AT91C_MATRIX_FIXED_DEFMSTR4_EMAC (0x8 << 18) // (MATRIX) EMAC Master is Default Master
  1170. #define AT91C_MATRIX_FIXED_DEFMSTR4_UDPHS (0x9 << 18) // (MATRIX) USB Device Master is Default Master
  1171. #define AT91C_MATRIX_FIXED_DEFMSTR4_UHPHS_EHCI (0xA << 18) // (MATRIX) USB Host EHCI Master is Default Master
  1172. // -------- MATRIX_SCFG5 : (MATRIX Offset: 0x54) Slave Configuration Register 5 --------
  1173. #define AT91C_MATRIX_FIXED_DEFMSTR5 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1174. #define AT91C_MATRIX_FIXED_DEFMSTR5_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1175. #define AT91C_MATRIX_FIXED_DEFMSTR5_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1176. #define AT91C_MATRIX_FIXED_DEFMSTR5_UHPHS_OHCI (0x3 << 18) // (MATRIX) USB Host OHCI Master is Default Master
  1177. #define AT91C_MATRIX_FIXED_DEFMSTR5_DMA0 (0x4 << 18) // (MATRIX) DMA0 Master is Default Master
  1178. #define AT91C_MATRIX_FIXED_DEFMSTR5_DMA1 (0x5 << 18) // (MATRIX) DMA1 Master is Default Master
  1179. #define AT91C_MATRIX_FIXED_DEFMSTR5_ISI (0x6 << 18) // (MATRIX) ISI Master is Default Master
  1180. #define AT91C_MATRIX_FIXED_DEFMSTR5_EMAC (0x8 << 18) // (MATRIX) EMAC Master is Default Master
  1181. #define AT91C_MATRIX_FIXED_DEFMSTR5_UDPHS (0x9 << 18) // (MATRIX) USB Device Master is Default Master
  1182. #define AT91C_MATRIX_FIXED_DEFMSTR5_UHPHS_EHCI (0xA << 18) // (MATRIX) USB Host EHCI Master is Default Master
  1183. // -------- MATRIX_SCFG6 : (MATRIX Offset: 0x58) Slave Configuration Register 6 --------
  1184. #define AT91C_MATRIX_FIXED_DEFMSTR6 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1185. #define AT91C_MATRIX_FIXED_DEFMSTR6_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1186. #define AT91C_MATRIX_FIXED_DEFMSTR6_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1187. #define AT91C_MATRIX_FIXED_DEFMSTR6_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1188. #define AT91C_MATRIX_FIXED_DEFMSTR6_UHPHS_OHCI (0x3 << 18) // (MATRIX) USB Host OHCI Master is Default Master
  1189. #define AT91C_MATRIX_FIXED_DEFMSTR6_DMA0 (0x4 << 18) // (MATRIX) DMA0 Master is Default Master
  1190. #define AT91C_MATRIX_FIXED_DEFMSTR6_DMA1 (0x5 << 18) // (MATRIX) DMA1 Master is Default Master
  1191. #define AT91C_MATRIX_FIXED_DEFMSTR6_ISI (0x6 << 18) // (MATRIX) ISI Master is Default Master
  1192. #define AT91C_MATRIX_FIXED_DEFMSTR6_LCD (0x7 << 18) // (MATRIX) LCD Master is Default Master
  1193. #define AT91C_MATRIX_FIXED_DEFMSTR6_EMAC (0x8 << 18) // (MATRIX) EMAC Master is Default Master
  1194. #define AT91C_MATRIX_FIXED_DEFMSTR6_UDPHS (0x9 << 18) // (MATRIX) USB Device Master is Default Master
  1195. #define AT91C_MATRIX_FIXED_DEFMSTR6_UHPHS_EHCI (0xA << 18) // (MATRIX) USB Host EHCI Master is Default Master
  1196. #define AT91C_MATRIX_FIXED_DEFMSTR6_VDEC (0xB << 18) // (MATRIX) Video Decoder Master is Default Master
  1197. // -------- MATRIX_SCFG7 : (MATRIX Offset: 0x5c) Slave Configuration Register 7 --------
  1198. #define AT91C_MATRIX_FIXED_DEFMSTR7 (0xF << 18) // (MATRIX) Fixed Index of Default Master
  1199. #define AT91C_MATRIX_FIXED_DEFMSTR7_ARM926I (0x0 << 18) // (MATRIX) ARM926EJ-S Instruction Master is Default Master
  1200. #define AT91C_MATRIX_FIXED_DEFMSTR7_ARM926D (0x1 << 18) // (MATRIX) ARM926EJ-S Data Master is Default Master
  1201. #define AT91C_MATRIX_FIXED_DEFMSTR7_PDC (0x2 << 18) // (MATRIX) PDC Master is Default Master
  1202. #define AT91C_MATRIX_FIXED_DEFMSTR7_DMA0 (0x4 << 18) // (MATRIX) DMA0 Master is Default Master
  1203. #define AT91C_MATRIX_FIXED_DEFMSTR7_DMA1 (0x5 << 18) // (MATRIX) DMA1 Master is Default Master
  1204. // -------- MATRIX_PRAS0 : (MATRIX Offset: 0x80) PRAS0 Register --------
  1205. #define AT91C_MATRIX_M0PR (0x3 << 0) // (MATRIX) ARM926EJ-S Instruction priority
  1206. #define AT91C_MATRIX_M1PR (0x3 << 4) // (MATRIX) ARM926EJ-S Data priority
  1207. #define AT91C_MATRIX_M2PR (0x3 << 8) // (MATRIX) PDC priority
  1208. #define AT91C_MATRIX_M3PR (0x3 << 12) // (MATRIX) USB Host OHCI priority
  1209. #define AT91C_MATRIX_M4PR (0x3 << 16) // (MATRIX) DMA0 priority
  1210. #define AT91C_MATRIX_M5PR (0x3 << 20) // (MATRIX) DMA1 priority
  1211. #define AT91C_MATRIX_M6PR (0x3 << 24) // (MATRIX) ISI priority
  1212. #define AT91C_MATRIX_M7PR (0x3 << 28) // (MATRIX) LCD priority
  1213. // -------- MATRIX_PRBS0 : (MATRIX Offset: 0x84) PRBS0 Register --------
  1214. #define AT91C_MATRIX_M8PR (0x3 << 0) // (MATRIX) EMAC priority
  1215. #define AT91C_MATRIX_M9PR (0x3 << 4) // (MATRIX) USB Device priority
  1216. #define AT91C_MATRIX_M10PR (0x3 << 8) // (MATRIX) USB Host EHCI priority
  1217. #define AT91C_MATRIX_M11PR (0x3 << 12) // (MATRIX) Video Decoder priority
  1218. // -------- MATRIX_PRAS1 : (MATRIX Offset: 0x88) PRAS1 Register --------
  1219. // -------- MATRIX_PRBS1 : (MATRIX Offset: 0x8c) PRBS1 Register --------
  1220. // -------- MATRIX_PRAS2 : (MATRIX Offset: 0x90) PRAS2 Register --------
  1221. // -------- MATRIX_PRBS2 : (MATRIX Offset: 0x94) PRBS2 Register --------
  1222. // -------- MATRIX_PRAS3 : (MATRIX Offset: 0x98) PRAS3 Register --------
  1223. // -------- MATRIX_PRBS3 : (MATRIX Offset: 0x9c) PRBS3 Register --------
  1224. // -------- MATRIX_PRAS4 : (MATRIX Offset: 0xa0) PRAS4 Register --------
  1225. // -------- MATRIX_PRBS4 : (MATRIX Offset: 0xa4) PRBS4 Register --------
  1226. // -------- MATRIX_PRAS5 : (MATRIX Offset: 0xa8) PRAS5 Register --------
  1227. // -------- MATRIX_PRBS5 : (MATRIX Offset: 0xac) PRBS5 Register --------
  1228. // -------- MATRIX_PRAS6 : (MATRIX Offset: 0xb0) PRAS6 Register --------
  1229. // -------- MATRIX_PRBS6 : (MATRIX Offset: 0xb4) PRBS6 Register --------
  1230. // -------- MATRIX_PRAS7 : (MATRIX Offset: 0xb8) PRAS7 Register --------
  1231. // -------- MATRIX_PRBS7 : (MATRIX Offset: 0xbc) PRBS7 Register --------
  1232. // -------- MATRIX_MRCR : (MATRIX Offset: 0x100) MRCR Register --------
  1233. #define AT91C_MATRIX_RCA926I (0x1 << 0) // (MATRIX) Remap Command Bit for ARM926EJ-S Instruction
  1234. #define AT91C_MATRIX_RCA926D (0x1 << 1) // (MATRIX) Remap Command Bit for ARM926EJ-S Data
  1235. #define AT91C_MATRIX_RCB2 (0x1 << 2) // (MATRIX) Remap Command Bit for PDC
  1236. #define AT91C_MATRIX_RCB3 (0x1 << 3) // (MATRIX) Remap Command Bit for USB Host OHCI
  1237. #define AT91C_MATRIX_RCB4 (0x1 << 4) // (MATRIX) Remap Command Bit for DMA0
  1238. #define AT91C_MATRIX_RCB5 (0x1 << 5) // (MATRIX) Remap Command Bit for DMA1
  1239. #define AT91C_MATRIX_RCB6 (0x1 << 6) // (MATRIX) Remap Command Bit for ISI
  1240. #define AT91C_MATRIX_RCB7 (0x1 << 7) // (MATRIX) Remap Command Bit for LCD
  1241. #define AT91C_MATRIX_RCB8 (0x1 << 8) // (MATRIX) Remap Command Bit for EMAC
  1242. #define AT91C_MATRIX_RCB9 (0x1 << 9) // (MATRIX) Remap Command Bit for USB Device
  1243. #define AT91C_MATRIX_RCB10 (0x1 << 10) // (MATRIX) Remap Command Bit for USB Host EHCI
  1244. #define AT91C_MATRIX_RCB11 (0x1 << 11) // (MATRIX) Remap Command Bit for Video Decoder
  1245. // -------- HMATRIX_CCFG_TCMR : (MATRIX Offset: 0x110) TCMR Register --------
  1246. #define AT91C_ITCM_SIZE (0xF << 0) // (MATRIX) Size of ITCM enabled memory block
  1247. #define AT91C_ITCM_SIZE_0KB (0x0) // (MATRIX) 0 KB (No ITCM Memory)
  1248. #define AT91C_ITCM_SIZE_32KB (0x6) // (MATRIX) 32 KB
  1249. #define AT91C_DTCM_SIZE (0xF << 4) // (MATRIX) Size of DTCM enabled memory block
  1250. #define AT91C_DTCM_SIZE_0KB (0x0 << 4) // (MATRIX) 0 KB (No DTCM Memory)
  1251. #define AT91C_DTCM_SIZE_32KB (0x6 << 4) // (MATRIX) 32 KB
  1252. #define AT91C_DTCM_SIZE_64KB (0x7 << 4) // (MATRIX) 64 KB
  1253. #define AT91C_TCM_NWS (0x1 << 11) // (MATRIX) TCM Wait State
  1254. #define AT91C_TCM_NWS_NO_WS (0x0 << 11) // (MATRIX) NO WAIT STATE : 0 WS
  1255. #define AT91C_TCM_NWS_ONE_WS (0x1 << 11) // (MATRIX) 1 WS activated (only for RATIO 3:1 or 4:1
  1256. // -------- HMATRIX_CCFG_DDRMPR : (MATRIX Offset: 0x118) DDR Multi-Port Register --------
  1257. #define AT91C_DDRMP_DIS (0x1 << 0) // (MATRIX) DDR Multi-Port Disable
  1258. // -------- HMATRIX_CCFG_EBICSA : (MATRIX Offset: 0x128) CCFG_EBICSA Register --------
  1259. #define AT91C_EBI_CS1A (0x1 << 1) // (MATRIX) EBI Chip Select 1 Assignment
  1260. #define AT91C_EBI_CS1A_SMC (0x0 << 1) // (MATRIX) Chip Select 1 is assigned to the Static Memory Controller.
  1261. #define AT91C_EBI_CS1A_SDRAMC (0x1 << 1) // (MATRIX) Chip Select 1 is assigned to the SDRAM Controller.
  1262. #define AT91C_EBI_CS3A (0x1 << 3) // (MATRIX) EBI Chip Select 3 Assignment
  1263. #define AT91C_EBI_CS3A_SMC (0x0 << 3) // (MATRIX) Chip Select 3 is only assigned to the Static Memory Controller and NCS3 behaves as defined by the SMC.
  1264. #define AT91C_EBI_CS3A_SM (0x1 << 3) // (MATRIX) Chip Select 3 is assigned to the Static Memory Controller and the SmartMedia Logic is activated.
  1265. #define AT91C_EBI_CS4A (0x1 << 4) // (MATRIX) EBI Chip Select 4 Assignment
  1266. #define AT91C_EBI_CS4A_SMC (0x0 << 4) // (MATRIX) Chip Select 4 is only assigned to the Static Memory Controller and NCS4 behaves as defined by the SMC.
  1267. #define AT91C_EBI_CS4A_CF (0x1 << 4) // (MATRIX) Chip Select 4 is assigned to the Static Memory Controller and the CompactFlash Logic (first slot) is activated.
  1268. #define AT91C_EBI_CS5A (0x1 << 5) // (MATRIX) EBI Chip Select 5 Assignment
  1269. #define AT91C_EBI_CS5A_SMC (0x0 << 5) // (MATRIX) Chip Select 5 is only assigned to the Static Memory Controller and NCS5 behaves as defined by the SMC
  1270. #define AT91C_EBI_CS5A_CF (0x1 << 5) // (MATRIX) Chip Select 5 is assigned to the Static Memory Controller and the CompactFlash Logic (second slot) is activated.
  1271. #define AT91C_EBI_DBPUC (0x1 << 8) // (MATRIX) EBI Data Bus Pull-Up Configuration
  1272. #define AT91C_EBI_DRIVE (0x3 << 16) // (MATRIX) EBI I/O Drive Configuration
  1273. #define AT91C_EBI_DRIVE_18RD (0x0 << 16) // (MATRIX) optimized for 1.8V powered memories with Reduced Drive
  1274. #define AT91C_EBI_DRIVE_33RD (0x1 << 16) // (MATRIX) optimized for 3.3V powered memories with Reduced Drive
  1275. #define AT91C_EBI_DRIVE_18ND (0x2 << 16) // (MATRIX) optimized for 1.8V powered memories with Normal Drive
  1276. #define AT91C_EBI_DRIVE_33ND (0x3 << 16) // (MATRIX) optimized for 3.3V powered memories with Normal Drive
  1277. #define AT91C_DDR_DRIVE (0x1 << 18) // (MATRIX) DDR2 dedicated port I/O slew rate selection
  1278. // -------- MATRIX_WRPROTEN : (MATRIX Offset: 0x1e4) Write Protection Control Register --------
  1279. #define AT91C_MATRIX_WRPROT (0x1 << 0) // (MATRIX) Enable/Disable Write Protection of HMATRIX2 configuration registers (requires key)
  1280. #define AT91C_MATRIX_WRPROT_DISABLE (0x0) // (MATRIX) Disable Write Protection of HMATRIX2 configuration registers
  1281. #define AT91C_MATRIX_WRPROT_ENABLE (0x1) // (MATRIX) Enable Write Protection of HMATRIX2 configuration registers
  1282. // -------- MATRIX_WRPROTST : (MATRIX Offset: 0x1e8) Write Protection Status Register --------
  1283. #define AT91C_MATRIX_WRPROT_VIOLATION (0x1 << 0) // (MATRIX) Violation of Write Protection of HMATRIX2 configuration registers
  1284. #define AT91C_MATRIX_WRPROT_VIOLATION_UNDETECTED (0x0) // (MATRIX) No violation of Write Protection of HMATRIX2 configuration registers
  1285. #define AT91C_MATRIX_WRPROT_VIOLATION_DETECTED (0x1) // (MATRIX) Violation of Write Protection of HMATRIX2 configuration registers
  1286. #define AT91C_MATRIX_WRPROT_VIOLATION_OFFSET (0x1FF << 8) // (MATRIX) Offset where violation of Write Protection of HMATRIX2 configuration registers is detected
  1287. // *****************************************************************************
  1288. // SOFTWARE API DEFINITION FOR Advanced Interrupt Controller
  1289. // *****************************************************************************
  1290. #ifndef __ASSEMBLY__
  1291. typedef struct _AT91S_AIC {
  1292. AT91C_REG AIC_SMR[32]; // Source Mode Register
  1293. AT91C_REG AIC_SVR[32]; // Source Vector Register
  1294. AT91C_REG AIC_IVR; // IRQ Vector Register
  1295. AT91C_REG AIC_FVR; // FIQ Vector Register
  1296. AT91C_REG AIC_ISR; // Interrupt Status Register
  1297. AT91C_REG AIC_IPR; // Interrupt Pending Register
  1298. AT91C_REG AIC_IMR; // Interrupt Mask Register
  1299. AT91C_REG AIC_CISR; // Core Interrupt Status Register
  1300. AT91C_REG Reserved0[2]; //
  1301. AT91C_REG AIC_IECR; // Interrupt Enable Command Register
  1302. AT91C_REG AIC_IDCR; // Interrupt Disable Command Register
  1303. AT91C_REG AIC_ICCR; // Interrupt Clear Command Register
  1304. AT91C_REG AIC_ISCR; // Interrupt Set Command Register
  1305. AT91C_REG AIC_EOICR; // End of Interrupt Command Register
  1306. AT91C_REG AIC_SPU; // Spurious Vector Register
  1307. AT91C_REG AIC_DCR; // Debug Control Register (Protect)
  1308. AT91C_REG Reserved1[1]; //
  1309. AT91C_REG AIC_FFER; // Fast Forcing Enable Register
  1310. AT91C_REG AIC_FFDR; // Fast Forcing Disable Register
  1311. AT91C_REG AIC_FFSR; // Fast Forcing Status Register
  1312. } AT91S_AIC, *AT91PS_AIC;
  1313. #else
  1314. #define AIC_SMR (AT91C_CAST(AT91C_REG *) 0x00000000) // (AIC_SMR) Source Mode Register
  1315. #define AIC_SVR (AT91C_CAST(AT91C_REG *) 0x00000080) // (AIC_SVR) Source Vector Register
  1316. #define AIC_IVR (AT91C_CAST(AT91C_REG *) 0x00000100) // (AIC_IVR) IRQ Vector Register
  1317. #define AIC_FVR (AT91C_CAST(AT91C_REG *) 0x00000104) // (AIC_FVR) FIQ Vector Register
  1318. #define AIC_ISR (AT91C_CAST(AT91C_REG *) 0x00000108) // (AIC_ISR) Interrupt Status Register
  1319. #define AIC_IPR (AT91C_CAST(AT91C_REG *) 0x0000010C) // (AIC_IPR) Interrupt Pending Register
  1320. #define AIC_IMR (AT91C_CAST(AT91C_REG *) 0x00000110) // (AIC_IMR) Interrupt Mask Register
  1321. #define AIC_CISR (AT91C_CAST(AT91C_REG *) 0x00000114) // (AIC_CISR) Core Interrupt Status Register
  1322. #define AIC_IECR (AT91C_CAST(AT91C_REG *) 0x00000120) // (AIC_IECR) Interrupt Enable Command Register
  1323. #define AIC_IDCR (AT91C_CAST(AT91C_REG *) 0x00000124) // (AIC_IDCR) Interrupt Disable Command Register
  1324. #define AIC_ICCR (AT91C_CAST(AT91C_REG *) 0x00000128) // (AIC_ICCR) Interrupt Clear Command Register
  1325. #define AIC_ISCR (AT91C_CAST(AT91C_REG *) 0x0000012C) // (AIC_ISCR) Interrupt Set Command Register
  1326. #define AIC_EOICR (AT91C_CAST(AT91C_REG *) 0x00000130) // (AIC_EOICR) End of Interrupt Command Register
  1327. #define AIC_SPU (AT91C_CAST(AT91C_REG *) 0x00000134) // (AIC_SPU) Spurious Vector Register
  1328. #define AIC_DCR (AT91C_CAST(AT91C_REG *) 0x00000138) // (AIC_DCR) Debug Control Register (Protect)
  1329. #define AIC_FFER (AT91C_CAST(AT91C_REG *) 0x00000140) // (AIC_FFER) Fast Forcing Enable Register
  1330. #define AIC_FFDR (AT91C_CAST(AT91C_REG *) 0x00000144) // (AIC_FFDR) Fast Forcing Disable Register
  1331. #define AIC_FFSR (AT91C_CAST(AT91C_REG *) 0x00000148) // (AIC_FFSR) Fast Forcing Status Register
  1332. #endif
  1333. // -------- AIC_SMR : (AIC Offset: 0x0) Control Register --------
  1334. #define AT91C_AIC_PRIOR (0x7 << 0) // (AIC) Priority Level
  1335. #define AT91C_AIC_PRIOR_LOWEST (0x0) // (AIC) Lowest priority level
  1336. #define AT91C_AIC_PRIOR_HIGHEST (0x7) // (AIC) Highest priority level
  1337. #define AT91C_AIC_SRCTYPE (0x3 << 5) // (AIC) Interrupt Source Type
  1338. #define AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE (0x0 << 5) // (AIC) Internal Sources Code Label Level Sensitive
  1339. #define AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED (0x1 << 5) // (AIC) Internal Sources Code Label Edge triggered
  1340. #define AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL (0x2 << 5) // (AIC) External Sources Code Label High-level Sensitive
  1341. #define AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE (0x3 << 5) // (AIC) External Sources Code Label Positive Edge triggered
  1342. // -------- AIC_CISR : (AIC Offset: 0x114) AIC Core Interrupt Status Register --------
  1343. #define AT91C_AIC_NFIQ (0x1 << 0) // (AIC) NFIQ Status
  1344. #define AT91C_AIC_NIRQ (0x1 << 1) // (AIC) NIRQ Status
  1345. // -------- AIC_DCR : (AIC Offset: 0x138) AIC Debug Control Register (Protect) --------
  1346. #define AT91C_AIC_DCR_PROT (0x1 << 0) // (AIC) Protection Mode
  1347. #define AT91C_AIC_DCR_GMSK (0x1 << 1) // (AIC) General Mask
  1348. // *****************************************************************************
  1349. // SOFTWARE API DEFINITION FOR Peripheral DMA Controller
  1350. // *****************************************************************************
  1351. #ifndef __ASSEMBLY__
  1352. typedef struct _AT91S_PDC {
  1353. AT91C_REG PDC_RPR; // Receive Pointer Register
  1354. AT91C_REG PDC_RCR; // Receive Counter Register
  1355. AT91C_REG PDC_TPR; // Transmit Pointer Register
  1356. AT91C_REG PDC_TCR; // Transmit Counter Register
  1357. AT91C_REG PDC_RNPR; // Receive Next Pointer Register
  1358. AT91C_REG PDC_RNCR; // Receive Next Counter Register
  1359. AT91C_REG PDC_TNPR; // Transmit Next Pointer Register
  1360. AT91C_REG PDC_TNCR; // Transmit Next Counter Register
  1361. AT91C_REG PDC_PTCR; // PDC Transfer Control Register
  1362. AT91C_REG PDC_PTSR; // PDC Transfer Status Register
  1363. } AT91S_PDC, *AT91PS_PDC;
  1364. #else
  1365. #define PDC_RPR (AT91C_CAST(AT91C_REG *) 0x00000000) // (PDC_RPR) Receive Pointer Register
  1366. #define PDC_RCR (AT91C_CAST(AT91C_REG *) 0x00000004) // (PDC_RCR) Receive Counter Register
  1367. #define PDC_TPR (AT91C_CAST(AT91C_REG *) 0x00000008) // (PDC_TPR) Transmit Pointer Register
  1368. #define PDC_TCR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (PDC_TCR) Transmit Counter Register
  1369. #define PDC_RNPR (AT91C_CAST(AT91C_REG *) 0x00000010) // (PDC_RNPR) Receive Next Pointer Register
  1370. #define PDC_RNCR (AT91C_CAST(AT91C_REG *) 0x00000014) // (PDC_RNCR) Receive Next Counter Register
  1371. #define PDC_TNPR (AT91C_CAST(AT91C_REG *) 0x00000018) // (PDC_TNPR) Transmit Next Pointer Register
  1372. #define PDC_TNCR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (PDC_TNCR) Transmit Next Counter Register
  1373. #define PDC_PTCR (AT91C_CAST(AT91C_REG *) 0x00000020) // (PDC_PTCR) PDC Transfer Control Register
  1374. #define PDC_PTSR (AT91C_CAST(AT91C_REG *) 0x00000024) // (PDC_PTSR) PDC Transfer Status Register
  1375. #endif
  1376. // -------- PDC_PTCR : (PDC Offset: 0x20) PDC Transfer Control Register --------
  1377. #define AT91C_PDC_RXTEN (0x1 << 0) // (PDC) Receiver Transfer Enable
  1378. #define AT91C_PDC_RXTDIS (0x1 << 1) // (PDC) Receiver Transfer Disable
  1379. #define AT91C_PDC_TXTEN (0x1 << 8) // (PDC) Transmitter Transfer Enable
  1380. #define AT91C_PDC_TXTDIS (0x1 << 9) // (PDC) Transmitter Transfer Disable
  1381. // -------- PDC_PTSR : (PDC Offset: 0x24) PDC Transfer Status Register --------
  1382. // *****************************************************************************
  1383. // SOFTWARE API DEFINITION FOR Debug Unit
  1384. // *****************************************************************************
  1385. #ifndef __ASSEMBLY__
  1386. typedef struct _AT91S_DBGU {
  1387. AT91C_REG DBGU_CR; // Control Register
  1388. AT91C_REG DBGU_MR; // Mode Register
  1389. AT91C_REG DBGU_IER; // Interrupt Enable Register
  1390. AT91C_REG DBGU_IDR; // Interrupt Disable Register
  1391. AT91C_REG DBGU_IMR; // Interrupt Mask Register
  1392. AT91C_REG DBGU_CSR; // Channel Status Register
  1393. AT91C_REG DBGU_RHR; // Receiver Holding Register
  1394. AT91C_REG DBGU_THR; // Transmitter Holding Register
  1395. AT91C_REG DBGU_BRGR; // Baud Rate Generator Register
  1396. AT91C_REG Reserved0[7]; //
  1397. AT91C_REG DBGU_CIDR; // Chip ID Register
  1398. AT91C_REG DBGU_EXID; // Chip ID Extension Register
  1399. AT91C_REG DBGU_FNTR; // Force NTRST Register
  1400. AT91C_REG Reserved1[45]; //
  1401. AT91C_REG DBGU_RPR; // Receive Pointer Register
  1402. AT91C_REG DBGU_RCR; // Receive Counter Register
  1403. AT91C_REG DBGU_TPR; // Transmit Pointer Register
  1404. AT91C_REG DBGU_TCR; // Transmit Counter Register
  1405. AT91C_REG DBGU_RNPR; // Receive Next Pointer Register
  1406. AT91C_REG DBGU_RNCR; // Receive Next Counter Register
  1407. AT91C_REG DBGU_TNPR; // Transmit Next Pointer Register
  1408. AT91C_REG DBGU_TNCR; // Transmit Next Counter Register
  1409. AT91C_REG DBGU_PTCR; // PDC Transfer Control Register
  1410. AT91C_REG DBGU_PTSR; // PDC Transfer Status Register
  1411. } AT91S_DBGU, *AT91PS_DBGU;
  1412. #else
  1413. #define DBGU_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (DBGU_CR) Control Register
  1414. #define DBGU_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (DBGU_MR) Mode Register
  1415. #define DBGU_IER (AT91C_CAST(AT91C_REG *) 0x00000008) // (DBGU_IER) Interrupt Enable Register
  1416. #define DBGU_IDR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (DBGU_IDR) Interrupt Disable Register
  1417. #define DBGU_IMR (AT91C_CAST(AT91C_REG *) 0x00000010) // (DBGU_IMR) Interrupt Mask Register
  1418. #define DBGU_CSR (AT91C_CAST(AT91C_REG *) 0x00000014) // (DBGU_CSR) Channel Status Register
  1419. #define DBGU_RHR (AT91C_CAST(AT91C_REG *) 0x00000018) // (DBGU_RHR) Receiver Holding Register
  1420. #define DBGU_THR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (DBGU_THR) Transmitter Holding Register
  1421. #define DBGU_BRGR (AT91C_CAST(AT91C_REG *) 0x00000020) // (DBGU_BRGR) Baud Rate Generator Register
  1422. #define DBGU_CIDR (AT91C_CAST(AT91C_REG *) 0x00000040) // (DBGU_CIDR) Chip ID Register
  1423. #define DBGU_EXID (AT91C_CAST(AT91C_REG *) 0x00000044) // (DBGU_EXID) Chip ID Extension Register
  1424. #define DBGU_FNTR (AT91C_CAST(AT91C_REG *) 0x00000048) // (DBGU_FNTR) Force NTRST Register
  1425. #endif
  1426. // -------- DBGU_CR : (DBGU Offset: 0x0) Debug Unit Control Register --------
  1427. #define AT91C_US_RSTRX (0x1 << 2) // (DBGU) Reset Receiver
  1428. #define AT91C_US_RSTTX (0x1 << 3) // (DBGU) Reset Transmitter
  1429. #define AT91C_US_RXEN (0x1 << 4) // (DBGU) Receiver Enable
  1430. #define AT91C_US_RXDIS (0x1 << 5) // (DBGU) Receiver Disable
  1431. #define AT91C_US_TXEN (0x1 << 6) // (DBGU) Transmitter Enable
  1432. #define AT91C_US_TXDIS (0x1 << 7) // (DBGU) Transmitter Disable
  1433. #define AT91C_US_RSTSTA (0x1 << 8) // (DBGU) Reset Status Bits
  1434. // -------- DBGU_MR : (DBGU Offset: 0x4) Debug Unit Mode Register --------
  1435. #define AT91C_US_PAR (0x7 << 9) // (DBGU) Parity type
  1436. #define AT91C_US_PAR_EVEN (0x0 << 9) // (DBGU) Even Parity
  1437. #define AT91C_US_PAR_ODD (0x1 << 9) // (DBGU) Odd Parity
  1438. #define AT91C_US_PAR_SPACE (0x2 << 9) // (DBGU) Parity forced to 0 (Space)
  1439. #define AT91C_US_PAR_MARK (0x3 << 9) // (DBGU) Parity forced to 1 (Mark)
  1440. #define AT91C_US_PAR_NONE (0x4 << 9) // (DBGU) No Parity
  1441. #define AT91C_US_PAR_MULTI_DROP (0x6 << 9) // (DBGU) Multi-drop mode
  1442. #define AT91C_US_CHMODE (0x3 << 14) // (DBGU) Channel Mode
  1443. #define AT91C_US_CHMODE_NORMAL (0x0 << 14) // (DBGU) Normal Mode: The USART channel operates as an RX/TX USART.
  1444. #define AT91C_US_CHMODE_AUTO (0x1 << 14) // (DBGU) Automatic Echo: Receiver Data Input is connected to the TXD pin.
  1445. #define AT91C_US_CHMODE_LOCAL (0x2 << 14) // (DBGU) Local Loopback: Transmitter Output Signal is connected to Receiver Input Signal.
  1446. #define AT91C_US_CHMODE_REMOTE (0x3 << 14) // (DBGU) Remote Loopback: RXD pin is internally connected to TXD pin.
  1447. // -------- DBGU_IER : (DBGU Offset: 0x8) Debug Unit Interrupt Enable Register --------
  1448. #define AT91C_US_RXRDY (0x1 << 0) // (DBGU) RXRDY Interrupt
  1449. #define AT91C_US_TXRDY (0x1 << 1) // (DBGU) TXRDY Interrupt
  1450. #define AT91C_US_ENDRX (0x1 << 3) // (DBGU) End of Receive Transfer Interrupt
  1451. #define AT91C_US_ENDTX (0x1 << 4) // (DBGU) End of Transmit Interrupt
  1452. #define AT91C_US_OVRE (0x1 << 5) // (DBGU) Overrun Interrupt
  1453. #define AT91C_US_FRAME (0x1 << 6) // (DBGU) Framing Error Interrupt
  1454. #define AT91C_US_PARE (0x1 << 7) // (DBGU) Parity Error Interrupt
  1455. #define AT91C_US_TXEMPTY (0x1 << 9) // (DBGU) TXEMPTY Interrupt
  1456. #define AT91C_US_TXBUFE (0x1 << 11) // (DBGU) TXBUFE Interrupt
  1457. #define AT91C_US_RXBUFF (0x1 << 12) // (DBGU) RXBUFF Interrupt
  1458. #define AT91C_US_COMM_TX (0x1 << 30) // (DBGU) COMM_TX Interrupt
  1459. #define AT91C_US_COMM_RX (0x1 << 31) // (DBGU) COMM_RX Interrupt
  1460. // -------- DBGU_IDR : (DBGU Offset: 0xc) Debug Unit Interrupt Disable Register --------
  1461. // -------- DBGU_IMR : (DBGU Offset: 0x10) Debug Unit Interrupt Mask Register --------
  1462. // -------- DBGU_CSR : (DBGU Offset: 0x14) Debug Unit Channel Status Register --------
  1463. // -------- DBGU_FNTR : (DBGU Offset: 0x48) Debug Unit FORCE_NTRST Register --------
  1464. #define AT91C_US_FORCE_NTRST (0x1 << 0) // (DBGU) Force NTRST in JTAG
  1465. // *****************************************************************************
  1466. // SOFTWARE API DEFINITION FOR Parallel Input Output Controler
  1467. // *****************************************************************************
  1468. #ifndef __ASSEMBLY__
  1469. typedef struct _AT91S_PIO {
  1470. AT91C_REG PIO_PER; // PIO Enable Register
  1471. AT91C_REG PIO_PDR; // PIO Disable Register
  1472. AT91C_REG PIO_PSR; // PIO Status Register
  1473. AT91C_REG Reserved0[1]; //
  1474. AT91C_REG PIO_OER; // Output Enable Register
  1475. AT91C_REG PIO_ODR; // Output Disable Registerr
  1476. AT91C_REG PIO_OSR; // Output Status Register
  1477. AT91C_REG Reserved1[1]; //
  1478. AT91C_REG PIO_IFER; // Input Filter Enable Register
  1479. AT91C_REG PIO_IFDR; // Input Filter Disable Register
  1480. AT91C_REG PIO_IFSR; // Input Filter Status Register
  1481. AT91C_REG Reserved2[1]; //
  1482. AT91C_REG PIO_SODR; // Set Output Data Register
  1483. AT91C_REG PIO_CODR; // Clear Output Data Register
  1484. AT91C_REG PIO_ODSR; // Output Data Status Register
  1485. AT91C_REG PIO_PDSR; // Pin Data Status Register
  1486. AT91C_REG PIO_IER; // Interrupt Enable Register
  1487. AT91C_REG PIO_IDR; // Interrupt Disable Register
  1488. AT91C_REG PIO_IMR; // Interrupt Mask Register
  1489. AT91C_REG PIO_ISR; // Interrupt Status Register
  1490. AT91C_REG PIO_MDER; // Multi-driver Enable Register
  1491. AT91C_REG PIO_MDDR; // Multi-driver Disable Register
  1492. AT91C_REG PIO_MDSR; // Multi-driver Status Register
  1493. AT91C_REG Reserved3[1]; //
  1494. AT91C_REG PIO_PPUDR; // Pull-up Disable Register
  1495. AT91C_REG PIO_PPUER; // Pull-up Enable Register
  1496. AT91C_REG PIO_PPUSR; // Pull-up Status Register
  1497. AT91C_REG Reserved4[1]; //
  1498. AT91C_REG PIO_ASR; // Select A Register
  1499. AT91C_REG PIO_BSR; // Select B Register
  1500. AT91C_REG PIO_ABSR; // AB Select Status Register
  1501. AT91C_REG Reserved5[9]; //
  1502. AT91C_REG PIO_OWER; // Output Write Enable Register
  1503. AT91C_REG PIO_OWDR; // Output Write Disable Register
  1504. AT91C_REG PIO_OWSR; // Output Write Status Register
  1505. AT91C_REG Reserved6[1]; //
  1506. AT91C_REG PIO_SLEWRATE1; // PIO Slewrate Control Register
  1507. AT91C_REG Reserved7[3]; //
  1508. AT91C_REG PIO_DELAY1; // PIO Delay Control Register
  1509. AT91C_REG PIO_DELAY2; // PIO Delay Control Register
  1510. AT91C_REG PIO_DELAY3; // PIO Delay Control Register
  1511. AT91C_REG PIO_DELAY4; // PIO Delay Control Register
  1512. AT91C_REG Reserved8[11]; //
  1513. AT91C_REG PIO_VERSION; // PIO Version Register
  1514. } AT91S_PIO, *AT91PS_PIO;
  1515. #else
  1516. #define PIO_PER (AT91C_CAST(AT91C_REG *) 0x00000000) // (PIO_PER) PIO Enable Register
  1517. #define PIO_PDR (AT91C_CAST(AT91C_REG *) 0x00000004) // (PIO_PDR) PIO Disable Register
  1518. #define PIO_PSR (AT91C_CAST(AT91C_REG *) 0x00000008) // (PIO_PSR) PIO Status Register
  1519. #define PIO_OER (AT91C_CAST(AT91C_REG *) 0x00000010) // (PIO_OER) Output Enable Register
  1520. #define PIO_ODR (AT91C_CAST(AT91C_REG *) 0x00000014) // (PIO_ODR) Output Disable Registerr
  1521. #define PIO_OSR (AT91C_CAST(AT91C_REG *) 0x00000018) // (PIO_OSR) Output Status Register
  1522. #define PIO_IFER (AT91C_CAST(AT91C_REG *) 0x00000020) // (PIO_IFER) Input Filter Enable Register
  1523. #define PIO_IFDR (AT91C_CAST(AT91C_REG *) 0x00000024) // (PIO_IFDR) Input Filter Disable Register
  1524. #define PIO_IFSR (AT91C_CAST(AT91C_REG *) 0x00000028) // (PIO_IFSR) Input Filter Status Register
  1525. #define PIO_SODR (AT91C_CAST(AT91C_REG *) 0x00000030) // (PIO_SODR) Set Output Data Register
  1526. #define PIO_CODR (AT91C_CAST(AT91C_REG *) 0x00000034) // (PIO_CODR) Clear Output Data Register
  1527. #define PIO_ODSR (AT91C_CAST(AT91C_REG *) 0x00000038) // (PIO_ODSR) Output Data Status Register
  1528. #define PIO_PDSR (AT91C_CAST(AT91C_REG *) 0x0000003C) // (PIO_PDSR) Pin Data Status Register
  1529. #define PIO_IER (AT91C_CAST(AT91C_REG *) 0x00000040) // (PIO_IER) Interrupt Enable Register
  1530. #define PIO_IDR (AT91C_CAST(AT91C_REG *) 0x00000044) // (PIO_IDR) Interrupt Disable Register
  1531. #define PIO_IMR (AT91C_CAST(AT91C_REG *) 0x00000048) // (PIO_IMR) Interrupt Mask Register
  1532. #define PIO_ISR (AT91C_CAST(AT91C_REG *) 0x0000004C) // (PIO_ISR) Interrupt Status Register
  1533. #define PIO_MDER (AT91C_CAST(AT91C_REG *) 0x00000050) // (PIO_MDER) Multi-driver Enable Register
  1534. #define PIO_MDDR (AT91C_CAST(AT91C_REG *) 0x00000054) // (PIO_MDDR) Multi-driver Disable Register
  1535. #define PIO_MDSR (AT91C_CAST(AT91C_REG *) 0x00000058) // (PIO_MDSR) Multi-driver Status Register
  1536. #define PIO_PPUDR (AT91C_CAST(AT91C_REG *) 0x00000060) // (PIO_PPUDR) Pull-up Disable Register
  1537. #define PIO_PPUER (AT91C_CAST(AT91C_REG *) 0x00000064) // (PIO_PPUER) Pull-up Enable Register
  1538. #define PIO_PPUSR (AT91C_CAST(AT91C_REG *) 0x00000068) // (PIO_PPUSR) Pull-up Status Register
  1539. #define PIO_ASR (AT91C_CAST(AT91C_REG *) 0x00000070) // (PIO_ASR) Select A Register
  1540. #define PIO_BSR (AT91C_CAST(AT91C_REG *) 0x00000074) // (PIO_BSR) Select B Register
  1541. #define PIO_ABSR (AT91C_CAST(AT91C_REG *) 0x00000078) // (PIO_ABSR) AB Select Status Register
  1542. #define PIO_OWER (AT91C_CAST(AT91C_REG *) 0x000000A0) // (PIO_OWER) Output Write Enable Register
  1543. #define PIO_OWDR (AT91C_CAST(AT91C_REG *) 0x000000A4) // (PIO_OWDR) Output Write Disable Register
  1544. #define PIO_OWSR (AT91C_CAST(AT91C_REG *) 0x000000A8) // (PIO_OWSR) Output Write Status Register
  1545. #define SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0x000000B0) // (SLEWRATE1) PIO Slewrate Control Register
  1546. #define PIO_VERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (PIO_VERSION) PIO Version Register
  1547. #endif
  1548. // *****************************************************************************
  1549. // SOFTWARE API DEFINITION FOR Power Management Controller V610
  1550. // *****************************************************************************
  1551. #ifndef __ASSEMBLY__
  1552. typedef struct _AT91S_PMC {
  1553. AT91C_REG PMC_SCER; // System Clock Enable Register
  1554. AT91C_REG PMC_SCDR; // System Clock Disable Register
  1555. AT91C_REG PMC_SCSR; // System Clock Status Register
  1556. AT91C_REG Reserved0[1]; //
  1557. AT91C_REG PMC_PCER; // Peripheral Clock Enable Register
  1558. AT91C_REG PMC_PCDR; // Peripheral Clock Disable Register
  1559. AT91C_REG PMC_PCSR; // Peripheral Clock Status Register
  1560. AT91C_REG PMC_UCKR; // UTMI Clock Configuration Register
  1561. AT91C_REG PMC_MOR; // Main Oscillator Register
  1562. AT91C_REG PMC_MCFR; // Main Clock Frequency Register
  1563. AT91C_REG PMC_PLLAR; // PLL A Register
  1564. AT91C_REG Reserved1[1]; //
  1565. AT91C_REG PMC_MCKR; // Master Clock Register
  1566. AT91C_REG Reserved2[1]; //
  1567. AT91C_REG PMC_USB; // USB clock register
  1568. AT91C_REG Reserved3[1]; //
  1569. AT91C_REG PMC_PCKR[2]; // Programmable Clock 0 Register
  1570. AT91C_REG Reserved4[6]; //
  1571. AT91C_REG PMC_IER; // Interrupt Enable Register
  1572. AT91C_REG PMC_IDR; // Interrupt Disable Register
  1573. AT91C_REG PMC_SR; // Status Register
  1574. AT91C_REG PMC_IMR; // Interrupt Mask Register
  1575. AT91C_REG Reserved5[4]; //
  1576. AT91C_REG PMC_PLLICPR; // PLL Charge Pump Current Register
  1577. AT91C_REG Reserved6[26]; //
  1578. AT91C_REG PMC_ADDRSIZE; //
  1579. AT91C_REG PMC_NAME1; //
  1580. AT91C_REG PMC_NAME2; //
  1581. AT91C_REG PMC_FEATURES; //
  1582. AT91C_REG PMC_VERSION; //
  1583. } AT91S_PMC, *AT91PS_PMC;
  1584. #else
  1585. #define PMC_SCER (AT91C_CAST(AT91C_REG *) 0x00000000) // (PMC_SCER) System Clock Enable Register
  1586. #define PMC_SCDR (AT91C_CAST(AT91C_REG *) 0x00000004) // (PMC_SCDR) System Clock Disable Register
  1587. #define PMC_SCSR (AT91C_CAST(AT91C_REG *) 0x00000008) // (PMC_SCSR) System Clock Status Register
  1588. #define PMC_PCER (AT91C_CAST(AT91C_REG *) 0x00000010) // (PMC_PCER) Peripheral Clock Enable Register
  1589. #define PMC_PCDR (AT91C_CAST(AT91C_REG *) 0x00000014) // (PMC_PCDR) Peripheral Clock Disable Register
  1590. #define PMC_PCSR (AT91C_CAST(AT91C_REG *) 0x00000018) // (PMC_PCSR) Peripheral Clock Status Register
  1591. #define CKGR_UCKR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (CKGR_UCKR) UTMI Clock Configuration Register
  1592. #define CKGR_MOR (AT91C_CAST(AT91C_REG *) 0x00000020) // (CKGR_MOR) Main Oscillator Register
  1593. #define CKGR_MCFR (AT91C_CAST(AT91C_REG *) 0x00000024) // (CKGR_MCFR) Main Clock Frequency Register
  1594. #define CKGR_PLLAR (AT91C_CAST(AT91C_REG *) 0x00000028) // (CKGR_PLLAR) PLL A Register
  1595. #define PMC_MCKR (AT91C_CAST(AT91C_REG *) 0x00000030) // (PMC_MCKR) Master Clock Register
  1596. #define PMC_USB (AT91C_CAST(AT91C_REG *) 0x00000038) // (PMC_USB) USB clock register
  1597. #define PMC_PCKR (AT91C_CAST(AT91C_REG *) 0x00000040) // (PMC_PCKR) Programmable Clock 0 Register
  1598. #define PMC_IER (AT91C_CAST(AT91C_REG *) 0x00000060) // (PMC_IER) Interrupt Enable Register
  1599. #define PMC_IDR (AT91C_CAST(AT91C_REG *) 0x00000064) // (PMC_IDR) Interrupt Disable Register
  1600. #define PMC_SR (AT91C_CAST(AT91C_REG *) 0x00000068) // (PMC_SR) Status Register
  1601. #define PMC_IMR (AT91C_CAST(AT91C_REG *) 0x0000006C) // (PMC_IMR) Interrupt Mask Register
  1602. #define PMC_PLLICPR (AT91C_CAST(AT91C_REG *) 0x00000080) // (PMC_PLLICPR) PLL Charge Pump Current Register
  1603. #define PMC_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (PMC_ADDRSIZE)
  1604. #define PMC_NAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (PMC_NAME1)
  1605. #define PMC_NAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (PMC_NAME2)
  1606. #define PMC_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (PMC_FEATURES)
  1607. #define PMC_VERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (PMC_VERSION)
  1608. #endif
  1609. // -------- PMC_SCER : (PMC Offset: 0x0) System Clock Enable Register --------
  1610. #define AT91C_PMC_DDR (0x1 << 2) // (PMC) DDR controller Clock2x
  1611. #define AT91C_PMC_UHP (0x1 << 6) // (PMC) USB Host Port Clock
  1612. #define AT91C_PMC_UDP (0x1 << 7) // (PMC) USB Device Port Clock
  1613. #define AT91C_PMC_PCK0 (0x1 << 8) // (PMC) Programmable Clock Output
  1614. #define AT91C_PMC_PCK1 (0x1 << 9) // (PMC) Programmable Clock Output
  1615. // -------- PMC_SCDR : (PMC Offset: 0x4) System Clock Disable Register --------
  1616. #define AT91C_PMC_PCK (0x1 << 0) // (PMC) Processor Clock
  1617. // -------- PMC_SCSR : (PMC Offset: 0x8) System Clock Status Register --------
  1618. // -------- CKGR_UCKR : (PMC Offset: 0x1c) UTMI Clock Configuration Register --------
  1619. #define AT91C_CKGR_UPLLEN (0x1 << 16) // (PMC) UTMI PLL Enable
  1620. #define AT91C_CKGR_UPLLEN_DISABLED (0x0 << 16) // (PMC) The UTMI PLL is disabled
  1621. #define AT91C_CKGR_UPLLEN_ENABLED (0x1 << 16) // (PMC) The UTMI PLL is enabled
  1622. #define AT91C_CKGR_PLLCOUNT (0xF << 20) // (PMC) UTMI Oscillator Start-up Time
  1623. #define AT91C_CKGR_BIASEN (0x1 << 24) // (PMC) UTMI BIAS Enable
  1624. #define AT91C_CKGR_BIASEN_DISABLED (0x0 << 24) // (PMC) The UTMI BIAS is disabled
  1625. #define AT91C_CKGR_BIASEN_ENABLED (0x1 << 24) // (PMC) The UTMI BIAS is enabled
  1626. #define AT91C_CKGR_BIASCOUNT (0xF << 28) // (PMC) UTMI BIAS Start-up Time
  1627. // -------- CKGR_MOR : (PMC Offset: 0x20) Main Oscillator Register --------
  1628. #define AT91C_CKGR_MOSCEN (0x1 << 0) // (PMC) Main Oscillator Enable
  1629. #define AT91C_CKGR_OSCBYPASS (0x1 << 1) // (PMC) Main Oscillator Bypass
  1630. #define AT91C_CKGR_OSCOUNT (0xFF << 8) // (PMC) Main Oscillator Start-up Time
  1631. // -------- CKGR_MCFR : (PMC Offset: 0x24) Main Clock Frequency Register --------
  1632. #define AT91C_CKGR_MAINF (0xFFFF << 0) // (PMC) Main Clock Frequency
  1633. #define AT91C_CKGR_MAINRDY (0x1 << 16) // (PMC) Main Clock Ready
  1634. // -------- CKGR_PLLAR : (PMC Offset: 0x28) PLL A Register --------
  1635. #define AT91C_CKGR_DIVA (0xFF << 0) // (PMC) Divider A Selected
  1636. #define AT91C_CKGR_DIVA_0 (0x0) // (PMC) Divider A output is 0
  1637. #define AT91C_CKGR_DIVA_BYPASS (0x1) // (PMC) Divider A is bypassed
  1638. #define AT91C_CKGR_PLLACOUNT (0x3F << 8) // (PMC) PLL A Counter
  1639. #define AT91C_CKGR_OUTA (0x3 << 14) // (PMC) PLL A Output Frequency Range
  1640. #define AT91C_CKGR_OUTA_0 (0x0 << 14) // (PMC) Please refer to the PLLA datasheet
  1641. #define AT91C_CKGR_OUTA_1 (0x1 << 14) // (PMC) Please refer to the PLLA datasheet
  1642. #define AT91C_CKGR_OUTA_2 (0x2 << 14) // (PMC) Please refer to the PLLA datasheet
  1643. #define AT91C_CKGR_OUTA_3 (0x3 << 14) // (PMC) Please refer to the PLLA datasheet
  1644. #define AT91C_CKGR_MULA (0xFF << 16) // (PMC) PLL A Multiplier
  1645. #define AT91C_CKGR_SRCA (0x1 << 29) // (PMC)
  1646. // -------- PMC_MCKR : (PMC Offset: 0x30) Master Clock Register --------
  1647. #define AT91C_PMC_CSS (0x3 << 0) // (PMC) Programmable Clock Selection
  1648. #define AT91C_PMC_CSS_SLOW_CLK (0x0) // (PMC) Slow Clock is selected
  1649. #define AT91C_PMC_CSS_MAIN_CLK (0x1) // (PMC) Main Clock is selected
  1650. #define AT91C_PMC_CSS_PLLA_CLK (0x2) // (PMC) Clock from PLL A is selected
  1651. #define AT91C_PMC_CSS_UPLL_CLK (0x3) // (PMC) Clock from UTMI PLL is selected
  1652. #define AT91C_PMC_PRES (0x7 << 2) // (PMC) Programmable Clock Prescaler
  1653. #define AT91C_PMC_PRES_CLK (0x0 << 2) // (PMC) Selected clock
  1654. #define AT91C_PMC_PRES_CLK_2 (0x1 << 2) // (PMC) Selected clock divided by 2
  1655. #define AT91C_PMC_PRES_CLK_4 (0x2 << 2) // (PMC) Selected clock divided by 4
  1656. #define AT91C_PMC_PRES_CLK_8 (0x3 << 2) // (PMC) Selected clock divided by 8
  1657. #define AT91C_PMC_PRES_CLK_16 (0x4 << 2) // (PMC) Selected clock divided by 16
  1658. #define AT91C_PMC_PRES_CLK_32 (0x5 << 2) // (PMC) Selected clock divided by 32
  1659. #define AT91C_PMC_PRES_CLK_64 (0x6 << 2) // (PMC) Selected clock divided by 64
  1660. #define AT91C_PMC_MDIV (0x3 << 8) // (PMC) Master Clock Division
  1661. #define AT91C_PMC_MDIV_1 (0x0 << 8) // (PMC) Processor clock = Master Clock ; DDR Clock = Master Clock
  1662. #define AT91C_PMC_MDIV_2 (0x1 << 8) // (PMC) Processor clock = 2 * Master Clock ; DDR Clock = 2 * Master Clock
  1663. #define AT91C_PMC_MDIV_4 (0x2 << 8) // (PMC) Processor clock = 4 * Master Clock ; DDR Clock = 2 * Master Clock
  1664. #define AT91C_PMC_MDIV_3 (0x3 << 8) // (PMC) Processor clock = 3 * Master Clock ; DDR Clock = 2 * Master Clock
  1665. #define AT91C_PMC_PLLADIV2 (0x1 << 12) // (PMC) PLLA divisor by 2
  1666. #define AT91C_PMC_PLLADIV2_1 (0x0 << 12) // (PMC) PLLA clock frequency is divided by 1
  1667. #define AT91C_PMC_PLLADIV2_2 (0x1 << 12) // (PMC) PLLA clock frequency is divided by 2
  1668. // -------- PMC_USB : (PMC Offset: 0x38) USB Clock Register --------
  1669. #define AT91C_PMC_USBS (0x1 << 0) // (PMC) USBS
  1670. #define AT91C_PMC_USBS_USB_PLLA (0x0) // (PMC) USB Clock Input is PLLA
  1671. #define AT91C_PMC_USBS_USB_UPLL (0x1) // (PMC) USB Clock Input is UPLL
  1672. #define AT91C_PMC_USBDIV (0xF << 8) // (PMC) USBDIV
  1673. #define AT91C_PMC_USBDIV_1 (0x0 << 8) // (PMC) USB Clock divided by 1
  1674. #define AT91C_PMC_USBDIV_2 (0x1 << 8) // (PMC) USB Clock divided by 2
  1675. #define AT91C_PMC_USBDIV_3 (0x2 << 8) // (PMC) USB Clock divided by 3
  1676. #define AT91C_PMC_USBDIV_4 (0x3 << 8) // (PMC) USB Clock divided by 4
  1677. #define AT91C_PMC_USBDIV_5 (0x4 << 8) // (PMC) USB Clock divided by 5
  1678. #define AT91C_PMC_USBDIV_6 (0x5 << 8) // (PMC) USB Clock divided by 6
  1679. #define AT91C_PMC_USBDIV_7 (0x6 << 8) // (PMC) USB Clock divided by 7
  1680. #define AT91C_PMC_USBDIV_8 (0x7 << 8) // (PMC) USB Clock divided by 8
  1681. #define AT91C_PMC_USBDIV_9 (0x8 << 8) // (PMC) USB Clock divided by 9
  1682. #define AT91C_PMC_USBDIV_10 (0x9 << 8) // (PMC) USB Clock divided by 10
  1683. #define AT91C_PMC_USBDIV_11 (0xA << 8) // (PMC) USB Clock divided by 11
  1684. #define AT91C_PMC_USBDIV_12 (0xB << 8) // (PMC) USB Clock divided by 12
  1685. #define AT91C_PMC_USBDIV_13 (0xC << 8) // (PMC) USB Clock divided by 13
  1686. #define AT91C_PMC_USBDIV_14 (0xD << 8) // (PMC) USB Clock divided by 14
  1687. #define AT91C_PMC_USBDIV_15 (0xE << 8) // (PMC) USB Clock divided by 15
  1688. #define AT91C_PMC_USBDIV_16 (0xF << 8) // (PMC) USB Clock divided by 16
  1689. // -------- PMC_PCKR : (PMC Offset: 0x40) Programmable Clock 0 Register --------
  1690. #define AT91C_PMC_CLKSRC_SLCKMCK (0x0)
  1691. #define AT91C_PMC_CLKSRC_MAINCK (0x1)
  1692. #define AT91C_PMC_CLKSRC_PCK (0x2)
  1693. #define AT91C_PMC_CLKSRC_UPLLCK (0x3)
  1694. #define AT91C_PMC_PRESCALER_1 (0x0<<2)
  1695. #define AT91C_PMC_PRESCALER_2 (0x1<<2)
  1696. #define AT91C_PMC_PRESCALER_4 (0x2<<2)
  1697. #define AT91C_PMC_PRESCALER_8 (0x3<<2)
  1698. #define AT91C_PMC_PRESCALER_16 (0x4<<2)
  1699. #define AT91C_PMC_PRESCALER_32 (0x5<<2)
  1700. #define AT91C_PMC_PRESCALER_64 (0x6<<2)
  1701. #define AT91C_PMC_SLCKMCK (0x1 << 8) // (PMC) Programmable Clock Prescaler
  1702. #define AT91C_PMC_SLCKMCK_SLCK (0x0 << 8) // (PMC) Slow Clock selected
  1703. #define AT91C_PMC_SLCKMCK_MCK (0x1 << 8) // (PMC) Master Clock selected
  1704. // -------- PMC_IER : (PMC Offset: 0x60) PMC Interrupt Enable Register --------
  1705. #define AT91C_PMC_MOSCS (0x1 << 0) // (PMC) MOSC Status/Enable/Disable/Mask
  1706. #define AT91C_PMC_LOCKA (0x1 << 1) // (PMC) PLL A Status/Enable/Disable/Mask
  1707. #define AT91C_PMC_MCKRDY (0x1 << 3) // (PMC) Master Clock Status/Enable/Disable/Mask
  1708. #define AT91C_PMC_LOCKU (0x1 << 6) // (PMC) PLL UTMI Status/Enable/Disable/Mask
  1709. #define AT91C_PMC_PCK0RDY (0x1 << 8) // (PMC) PCK0_RDY Status/Enable/Disable/Mask
  1710. #define AT91C_PMC_PCK1RDY (0x1 << 9) // (PMC) PCK1_RDY Status/Enable/Disable/Mask
  1711. // -------- PMC_IDR : (PMC Offset: 0x64) PMC Interrupt Disable Register --------
  1712. // -------- PMC_SR : (PMC Offset: 0x68) PMC Status Register --------
  1713. // -------- PMC_IMR : (PMC Offset: 0x6c) PMC Interrupt Mask Register --------
  1714. // -------- PMC_PLLICPR : (PMC Offset: 0x80) PLL Charge Pump Current Register --------
  1715. #define AT91C_PMC_ICPPLLA (0xF << 0) // (PMC) PLLA charge pump current setting
  1716. #define AT91C_PMC_ICPPLLA_0 (0x0) // (PMC) 595-800 MHz
  1717. #define AT91C_PMC_ICPPLLA_1 (0x1) // (PMC) 395-600 MHz
  1718. #define AT91C_PMC_REALLOCK (0x1 << 7) // (PMC) PLLs use real lock signals when 1
  1719. #define AT91C_PMC_IPLLA (0xF << 8) // (PMC) PLLA special setting
  1720. #define AT91C_PMC_IPLLA_0 (0x0 << 8) // (PMC) Internal LFT
  1721. #define AT91C_PMC_IPLLA_1 (0x1 << 8) // (PMC) External LFT
  1722. // -------- PMC_FEATURES : (PMC Offset: 0xf8) --------
  1723. #define AT91C_PMC_CFGAHBCLK (0x1 << 0) // (PMC)
  1724. #define AT91C_PMC_CFGAHBCLK_0 (0x0) // (PMC)
  1725. #define AT91C_PMC_CFGAHBCLK_1 (0x1) // (PMC)
  1726. #define AT91C_PMC_HCLKEN (0x1 << 1) // (PMC)
  1727. #define AT91C_PMC_HCLKEN_0 (0x0 << 1) // (PMC)
  1728. #define AT91C_PMC_HCLKEN_1 (0x1 << 1) // (PMC)
  1729. #define AT91C_PMC_PERMCLK (0x1 << 2) // (PMC)
  1730. #define AT91C_PMC_PERMCLK_0 (0x0 << 2) // (PMC)
  1731. #define AT91C_PMC_PERMCLK_1 (0x1 << 2) // (PMC)
  1732. #define AT91C_PMC_CORE2 (0x1 << 3) // (PMC)
  1733. #define AT91C_PMC_CORE2_0 (0x0 << 3) // (PMC)
  1734. #define AT91C_PMC_CORE2_1 (0x1 << 3) // (PMC)
  1735. #define AT91C_PMC_USBDEVCK (0x1 << 4) // (PMC)
  1736. #define AT91C_PMC_USBDEVCK_0 (0x0 << 4) // (PMC)
  1737. #define AT91C_PMC_USBDEVCK_1 (0x1 << 4) // (PMC)
  1738. #define AT91C_PMC_USBHOSTCK (0x1 << 5) // (PMC)
  1739. #define AT91C_PMC_USBHOSTCK_0 (0x0 << 5) // (PMC)
  1740. #define AT91C_PMC_USBHOSTCK_1 (0x1 << 5) // (PMC)
  1741. #define AT91C_PMC_USBOTGCK (0x1 << 6) // (PMC)
  1742. #define AT91C_PMC_USBOTGCK_0 (0x0 << 6) // (PMC)
  1743. #define AT91C_PMC_USBOTGCK_1 (0x1 << 6) // (PMC)
  1744. #define AT91C_PMC_UHSYNRST (0x1 << 7) // (PMC)
  1745. #define AT91C_PMC_UHSYNRST_0 (0x0 << 7) // (PMC)
  1746. #define AT91C_PMC_UHSYNRST_1 (0x1 << 7) // (PMC)
  1747. #define AT91C_PMC_UOSYNRST (0x1 << 8) // (PMC)
  1748. #define AT91C_PMC_UOSYNRST_0 (0x0 << 8) // (PMC)
  1749. #define AT91C_PMC_UOSYNRST_1 (0x1 << 8) // (PMC)
  1750. #define AT91C_PMC_PLLENPOL (0x1 << 9) // (PMC)
  1751. #define AT91C_PMC_PLLENPOL_0 (0x0 << 9) // (PMC)
  1752. #define AT91C_PMC_PLLENPOL_1 (0x1 << 9) // (PMC)
  1753. #define AT91C_PMC_BIASREG (0x1 << 10) // (PMC)
  1754. #define AT91C_PMC_BIASREG_0 (0x0 << 10) // (PMC)
  1755. #define AT91C_PMC_BIASREG_1 (0x1 << 10) // (PMC)
  1756. #define AT91C_PMC_OUTPLL (0x1 << 11) // (PMC)
  1757. #define AT91C_PMC_OUTPLL_0 (0x0 << 11) // (PMC)
  1758. #define AT91C_PMC_OUTPLL_1 (0x1 << 11) // (PMC)
  1759. #define AT91C_PMC_OUTCURR (0x1 << 12) // (PMC)
  1760. #define AT91C_PMC_OUTCURR_0 (0x0 << 12) // (PMC)
  1761. #define AT91C_PMC_OUTCURR_1 (0x1 << 12) // (PMC)
  1762. #define AT91C_PMC_FWUP (0x1 << 13) // (PMC)
  1763. #define AT91C_PMC_FWUP_0 (0x0 << 13) // (PMC)
  1764. #define AT91C_PMC_FWUP_1 (0x1 << 13) // (PMC)
  1765. #define AT91C_PMC_SELMAINCLK (0x1 << 14) // (PMC)
  1766. #define AT91C_PMC_SELMAINCLK_0 (0x0 << 14) // (PMC)
  1767. #define AT91C_PMC_SELMAINCLK_1 (0x1 << 14) // (PMC)
  1768. #define AT91C_PMC_RSTCLKM (0x1 << 15) // (PMC)
  1769. #define AT91C_PMC_RSTCLKM_0 (0x0 << 15) // (PMC)
  1770. #define AT91C_PMC_RSTCLKM_1 (0x1 << 15) // (PMC)
  1771. #define AT91C_PMC_NB_PERIPH_CLOCK (0xFF << 16) // (PMC)
  1772. // -------- PMC_VERSION : (PMC Offset: 0xfc) --------
  1773. #define AT91C_PMC_Version (0xFFFF << 0) // (PMC)
  1774. #define AT91C_PMC_Version_0 (0x0) // (PMC)
  1775. #define AT91C_PMC_Version_1 (0x1) // (PMC)
  1776. #define AT91C_PMC_MFN (0x7 << 16) // (PMC)
  1777. #define AT91C_PMC_MFN_0 (0x0 << 16) // (PMC)
  1778. #define AT91C_PMC_MFN_1 (0x1 << 16) // (PMC)
  1779. // *****************************************************************************
  1780. // SOFTWARE API DEFINITION FOR Clock Generator Controler
  1781. // *****************************************************************************
  1782. #ifndef __ASSEMBLY__
  1783. typedef struct _AT91S_CKGR {
  1784. AT91C_REG CKGR_UCKR; // UTMI Clock Configuration Register
  1785. AT91C_REG CKGR_MOR; // Main Oscillator Register
  1786. AT91C_REG CKGR_MCFR; // Main Clock Frequency Register
  1787. AT91C_REG CKGR_PLLAR; // PLL A Register
  1788. } AT91S_CKGR, *AT91PS_CKGR;
  1789. #else
  1790. #endif
  1791. // -------- CKGR_UCKR : (CKGR Offset: 0x0) UTMI Clock Configuration Register --------
  1792. // -------- CKGR_MOR : (CKGR Offset: 0x4) Main Oscillator Register --------
  1793. // -------- CKGR_MCFR : (CKGR Offset: 0x8) Main Clock Frequency Register --------
  1794. // -------- CKGR_PLLAR : (CKGR Offset: 0xc) PLL A Register --------
  1795. // *****************************************************************************
  1796. // SOFTWARE API DEFINITION FOR Reset Controller Interface
  1797. // *****************************************************************************
  1798. #ifndef __ASSEMBLY__
  1799. typedef struct _AT91S_RSTC {
  1800. AT91C_REG RSTC_RCR; // Reset Control Register
  1801. AT91C_REG RSTC_RSR; // Reset Status Register
  1802. AT91C_REG RSTC_RMR; // Reset Mode Register
  1803. AT91C_REG Reserved0[60]; //
  1804. AT91C_REG RSTC_VER; // Version Register
  1805. } AT91S_RSTC, *AT91PS_RSTC;
  1806. #else
  1807. #define RSTC_RCR (AT91C_CAST(AT91C_REG *) 0x00000000) // (RSTC_RCR) Reset Control Register
  1808. #define RSTC_RSR (AT91C_CAST(AT91C_REG *) 0x00000004) // (RSTC_RSR) Reset Status Register
  1809. #define RSTC_RMR (AT91C_CAST(AT91C_REG *) 0x00000008) // (RSTC_RMR) Reset Mode Register
  1810. #define RSTC_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (RSTC_VER) Version Register
  1811. #endif
  1812. // -------- RSTC_RCR : (RSTC Offset: 0x0) Reset Control Register --------
  1813. #define AT91C_RSTC_PROCRST (0x1 << 0) // (RSTC) Processor Reset
  1814. #define AT91C_RSTC_ICERST (0x1 << 1) // (RSTC) ICE Interface Reset
  1815. #define AT91C_RSTC_PERRST (0x1 << 2) // (RSTC) Peripheral Reset
  1816. #define AT91C_RSTC_EXTRST (0x1 << 3) // (RSTC) External Reset
  1817. #define AT91C_RSTC_KEY (0xA5 << 24) // (RSTC) Password, 8 bits
  1818. // -------- RSTC_RSR : (RSTC Offset: 0x4) Reset Status Register --------
  1819. #define AT91C_RSTC_URSTS (0x1 << 0) // (RSTC) User Reset Status
  1820. #define AT91C_RSTC_RSTTYP (0x7 << 8) // (RSTC) Reset Type
  1821. #define AT91C_RSTC_RSTTYP_GENERAL (0x0 << 8) // (RSTC) General reset. Both VDDCORE and VDDBU rising.
  1822. #define AT91C_RSTC_RSTTYP_WAKEUP (0x1 << 8) // (RSTC) WakeUp Reset. VDDCORE rising.
  1823. #define AT91C_RSTC_RSTTYP_WATCHDOG (0x2 << 8) // (RSTC) Watchdog Reset. Watchdog overflow occured.
  1824. #define AT91C_RSTC_RSTTYP_SOFTWARE (0x3 << 8) // (RSTC) Software Reset. Processor reset required by the software.
  1825. #define AT91C_RSTC_RSTTYP_USER (0x4 << 8) // (RSTC) User Reset. NRST pin detected low.
  1826. #define AT91C_RSTC_NRSTL (0x1 << 16) // (RSTC) NRST pin level
  1827. #define AT91C_RSTC_SRCMP (0x1 << 17) // (RSTC) Software Reset Command in Progress.
  1828. // -------- RSTC_RMR : (RSTC Offset: 0x8) Reset Mode Register --------
  1829. #define AT91C_RSTC_URSTEN (0x1 << 0) // (RSTC) User Reset Enable
  1830. #define AT91C_RSTC_URSTIEN (0x1 << 4) // (RSTC) User Reset Interrupt Enable
  1831. #define AT91C_RSTC_ERSTL (0xF << 8) // (RSTC) User Reset Enable
  1832. // *****************************************************************************
  1833. // SOFTWARE API DEFINITION FOR Shut Down Controller Interface
  1834. // *****************************************************************************
  1835. #ifndef __ASSEMBLY__
  1836. typedef struct _AT91S_SHDWC {
  1837. AT91C_REG SHDWC_SHCR; // Shut Down Control Register
  1838. AT91C_REG SHDWC_SHMR; // Shut Down Mode Register
  1839. AT91C_REG SHDWC_SHSR; // Shut Down Status Register
  1840. } AT91S_SHDWC, *AT91PS_SHDWC;
  1841. #else
  1842. #define SHDWC_SHCR (AT91C_CAST(AT91C_REG *) 0x00000000) // (SHDWC_SHCR) Shut Down Control Register
  1843. #define SHDWC_SHMR (AT91C_CAST(AT91C_REG *) 0x00000004) // (SHDWC_SHMR) Shut Down Mode Register
  1844. #define SHDWC_SHSR (AT91C_CAST(AT91C_REG *) 0x00000008) // (SHDWC_SHSR) Shut Down Status Register
  1845. #endif
  1846. // -------- SHDWC_SHCR : (SHDWC Offset: 0x0) Shut Down Control Register --------
  1847. #define AT91C_SHDWC_SHDW (0x1 << 0) // (SHDWC) Processor Reset
  1848. #define AT91C_SHDWC_KEY (0xA5 << 24) // (SHDWC) Shut down KEY Password
  1849. // -------- SHDWC_SHMR : (SHDWC Offset: 0x4) Shut Down Mode Register --------
  1850. #define AT91C_SHDWC_WKMODE0 (0x3 << 0) // (SHDWC) Wake Up 0 Mode Selection
  1851. #define AT91C_SHDWC_WKMODE0_NONE (0x0) // (SHDWC) None. No detection is performed on the wake up input.
  1852. #define AT91C_SHDWC_WKMODE0_HIGH (0x1) // (SHDWC) High Level.
  1853. #define AT91C_SHDWC_WKMODE0_LOW (0x2) // (SHDWC) Low Level.
  1854. #define AT91C_SHDWC_WKMODE0_ANYLEVEL (0x3) // (SHDWC) Any level change.
  1855. #define AT91C_SHDWC_CPTWK0 (0xF << 4) // (SHDWC) Counter On Wake Up 0
  1856. #define AT91C_SHDWC_WKMODE1 (0x3 << 8) // (SHDWC) Wake Up 1 Mode Selection
  1857. #define AT91C_SHDWC_WKMODE1_NONE (0x0 << 8) // (SHDWC) None. No detection is performed on the wake up input.
  1858. #define AT91C_SHDWC_WKMODE1_HIGH (0x1 << 8) // (SHDWC) High Level.
  1859. #define AT91C_SHDWC_WKMODE1_LOW (0x2 << 8) // (SHDWC) Low Level.
  1860. #define AT91C_SHDWC_WKMODE1_ANYLEVEL (0x3 << 8) // (SHDWC) Any level change.
  1861. #define AT91C_SHDWC_CPTWK1 (0xF << 12) // (SHDWC) Counter On Wake Up 1
  1862. #define AT91C_SHDWC_RTTWKEN (0x1 << 16) // (SHDWC) Real Time Timer Wake Up Enable
  1863. #define AT91C_SHDWC_RTCWKEN (0x1 << 17) // (SHDWC) Real Time Clock Wake Up Enable
  1864. // -------- SHDWC_SHSR : (SHDWC Offset: 0x8) Shut Down Status Register --------
  1865. #define AT91C_SHDWC_WAKEUP0 (0x1 << 0) // (SHDWC) Wake Up 0 Status
  1866. #define AT91C_SHDWC_WAKEUP1 (0x1 << 1) // (SHDWC) Wake Up 1 Status
  1867. #define AT91C_SHDWC_FWKUP (0x1 << 2) // (SHDWC) Force Wake Up Status
  1868. #define AT91C_SHDWC_RTTWK (0x1 << 16) // (SHDWC) Real Time Timer wake Up
  1869. #define AT91C_SHDWC_RTCWK (0x1 << 17) // (SHDWC) Real Time Clock wake Up
  1870. // *****************************************************************************
  1871. // SOFTWARE API DEFINITION FOR Real Time Timer Controller Interface
  1872. // *****************************************************************************
  1873. #ifndef __ASSEMBLY__
  1874. typedef struct _AT91S_RTTC {
  1875. AT91C_REG RTTC_RTMR; // Real-time Mode Register
  1876. AT91C_REG RTTC_RTAR; // Real-time Alarm Register
  1877. AT91C_REG RTTC_RTVR; // Real-time Value Register
  1878. AT91C_REG RTTC_RTSR; // Real-time Status Register
  1879. } AT91S_RTTC, *AT91PS_RTTC;
  1880. #else
  1881. #define RTTC_RTMR (AT91C_CAST(AT91C_REG *) 0x00000000) // (RTTC_RTMR) Real-time Mode Register
  1882. #define RTTC_RTAR (AT91C_CAST(AT91C_REG *) 0x00000004) // (RTTC_RTAR) Real-time Alarm Register
  1883. #define RTTC_RTVR (AT91C_CAST(AT91C_REG *) 0x00000008) // (RTTC_RTVR) Real-time Value Register
  1884. #define RTTC_RTSR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (RTTC_RTSR) Real-time Status Register
  1885. #endif
  1886. // -------- RTTC_RTMR : (RTTC Offset: 0x0) Real-time Mode Register --------
  1887. #define AT91C_RTTC_RTPRES (0xFFFF << 0) // (RTTC) Real-time Timer Prescaler Value
  1888. #define AT91C_RTTC_ALMIEN (0x1 << 16) // (RTTC) Alarm Interrupt Enable
  1889. #define AT91C_RTTC_RTTINCIEN (0x1 << 17) // (RTTC) Real Time Timer Increment Interrupt Enable
  1890. #define AT91C_RTTC_RTTRST (0x1 << 18) // (RTTC) Real Time Timer Restart
  1891. // -------- RTTC_RTAR : (RTTC Offset: 0x4) Real-time Alarm Register --------
  1892. #define AT91C_RTTC_ALMV (0x0 << 0) // (RTTC) Alarm Value
  1893. // -------- RTTC_RTVR : (RTTC Offset: 0x8) Current Real-time Value Register --------
  1894. #define AT91C_RTTC_CRTV (0x0 << 0) // (RTTC) Current Real-time Value
  1895. // -------- RTTC_RTSR : (RTTC Offset: 0xc) Real-time Status Register --------
  1896. #define AT91C_RTTC_ALMS (0x1 << 0) // (RTTC) Real-time Alarm Status
  1897. #define AT91C_RTTC_RTTINC (0x1 << 1) // (RTTC) Real-time Timer Increment
  1898. // *****************************************************************************
  1899. // SOFTWARE API DEFINITION FOR Periodic Interval Timer Controller Interface
  1900. // *****************************************************************************
  1901. #ifndef __ASSEMBLY__
  1902. typedef struct _AT91S_PITC {
  1903. AT91C_REG PITC_PIMR; // Period Interval Mode Register
  1904. AT91C_REG PITC_PISR; // Period Interval Status Register
  1905. AT91C_REG PITC_PIVR; // Period Interval Value Register
  1906. AT91C_REG PITC_PIIR; // Period Interval Image Register
  1907. } AT91S_PITC, *AT91PS_PITC;
  1908. #else
  1909. #define PITC_PIMR (AT91C_CAST(AT91C_REG *) 0x00000000) // (PITC_PIMR) Period Interval Mode Register
  1910. #define PITC_PISR (AT91C_CAST(AT91C_REG *) 0x00000004) // (PITC_PISR) Period Interval Status Register
  1911. #define PITC_PIVR (AT91C_CAST(AT91C_REG *) 0x00000008) // (PITC_PIVR) Period Interval Value Register
  1912. #define PITC_PIIR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (PITC_PIIR) Period Interval Image Register
  1913. #endif
  1914. // -------- PITC_PIMR : (PITC Offset: 0x0) Periodic Interval Mode Register --------
  1915. #define AT91C_PITC_PIV (0xFFFFF << 0) // (PITC) Periodic Interval Value
  1916. #define AT91C_PITC_PITEN (0x1 << 24) // (PITC) Periodic Interval Timer Enabled
  1917. #define AT91C_PITC_PITIEN (0x1 << 25) // (PITC) Periodic Interval Timer Interrupt Enable
  1918. // -------- PITC_PISR : (PITC Offset: 0x4) Periodic Interval Status Register --------
  1919. #define AT91C_PITC_PITS (0x1 << 0) // (PITC) Periodic Interval Timer Status
  1920. // -------- PITC_PIVR : (PITC Offset: 0x8) Periodic Interval Value Register --------
  1921. #define AT91C_PITC_CPIV (0xFFFFF << 0) // (PITC) Current Periodic Interval Value
  1922. #define AT91C_PITC_PICNT ((unsigned int)0xFFF << 20) // (PITC) Periodic Interval Counter
  1923. // -------- PITC_PIIR : (PITC Offset: 0xc) Periodic Interval Image Register --------
  1924. // *****************************************************************************
  1925. // SOFTWARE API DEFINITION FOR Watchdog Timer Controller Interface
  1926. // *****************************************************************************
  1927. #ifndef __ASSEMBLY__
  1928. typedef struct _AT91S_WDTC {
  1929. AT91C_REG WDTC_WDCR; // Watchdog Control Register
  1930. AT91C_REG WDTC_WDMR; // Watchdog Mode Register
  1931. AT91C_REG WDTC_WDSR; // Watchdog Status Register
  1932. } AT91S_WDTC, *AT91PS_WDTC;
  1933. #else
  1934. #define WDTC_WDCR (AT91C_CAST(AT91C_REG *) 0x00000000) // (WDTC_WDCR) Watchdog Control Register
  1935. #define WDTC_WDMR (AT91C_CAST(AT91C_REG *) 0x00000004) // (WDTC_WDMR) Watchdog Mode Register
  1936. #define WDTC_WDSR (AT91C_CAST(AT91C_REG *) 0x00000008) // (WDTC_WDSR) Watchdog Status Register
  1937. #endif
  1938. // -------- WDTC_WDCR : (WDTC Offset: 0x0) Periodic Interval Image Register --------
  1939. #define AT91C_WDTC_WDRSTT (0x1 << 0) // (WDTC) Watchdog Restart
  1940. #define AT91C_WDTC_KEY (0xFF << 24) // (WDTC) Watchdog KEY Password
  1941. // -------- WDTC_WDMR : (WDTC Offset: 0x4) Watchdog Mode Register --------
  1942. #define AT91C_WDTC_WDV (0xFFF << 0) // (WDTC) Watchdog Timer Restart
  1943. #define AT91C_WDTC_WDFIEN (0x1 << 12) // (WDTC) Watchdog Fault Interrupt Enable
  1944. #define AT91C_WDTC_WDRSTEN (0x1 << 13) // (WDTC) Watchdog Reset Enable
  1945. #define AT91C_WDTC_WDRPROC (0x1 << 14) // (WDTC) Watchdog Timer Restart
  1946. #define AT91C_WDTC_WDDIS (0x1 << 15) // (WDTC) Watchdog Disable
  1947. #define AT91C_WDTC_WDD (0xFFF << 16) // (WDTC) Watchdog Delta Value
  1948. #define AT91C_WDTC_WDDBGHLT (0x1 << 28) // (WDTC) Watchdog Debug Halt
  1949. #define AT91C_WDTC_WDIDLEHLT (0x1 << 29) // (WDTC) Watchdog Idle Halt
  1950. // -------- WDTC_WDSR : (WDTC Offset: 0x8) Watchdog Status Register --------
  1951. #define AT91C_WDTC_WDUNF (0x1 << 0) // (WDTC) Watchdog Underflow
  1952. #define AT91C_WDTC_WDERR (0x1 << 1) // (WDTC) Watchdog Error
  1953. // *****************************************************************************
  1954. // SOFTWARE API DEFINITION FOR Real-time Clock Alarm and Parallel Load Interface
  1955. // *****************************************************************************
  1956. #ifndef __ASSEMBLY__
  1957. typedef struct _AT91S_RTC {
  1958. AT91C_REG RTC_CR; // Control Register
  1959. AT91C_REG RTC_MR; // Mode Register
  1960. AT91C_REG RTC_TIMR; // Time Register
  1961. AT91C_REG RTC_CALR; // Calendar Register
  1962. AT91C_REG RTC_TIMALR; // Time Alarm Register
  1963. AT91C_REG RTC_CALALR; // Calendar Alarm Register
  1964. AT91C_REG RTC_SR; // Status Register
  1965. AT91C_REG RTC_SCCR; // Status Clear Command Register
  1966. AT91C_REG RTC_IER; // Interrupt Enable Register
  1967. AT91C_REG RTC_IDR; // Interrupt Disable Register
  1968. AT91C_REG RTC_IMR; // Interrupt Mask Register
  1969. AT91C_REG RTC_VER; // Valid Entry Register
  1970. } AT91S_RTC, *AT91PS_RTC;
  1971. #else
  1972. #define RTC_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (RTC_CR) Control Register
  1973. #define RTC_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (RTC_MR) Mode Register
  1974. #define RTC_TIMR (AT91C_CAST(AT91C_REG *) 0x00000008) // (RTC_TIMR) Time Register
  1975. #define RTC_CALR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (RTC_CALR) Calendar Register
  1976. #define RTC_TIMALR (AT91C_CAST(AT91C_REG *) 0x00000010) // (RTC_TIMALR) Time Alarm Register
  1977. #define RTC_CALALR (AT91C_CAST(AT91C_REG *) 0x00000014) // (RTC_CALALR) Calendar Alarm Register
  1978. #define RTC_SR (AT91C_CAST(AT91C_REG *) 0x00000018) // (RTC_SR) Status Register
  1979. #define RTC_SCCR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (RTC_SCCR) Status Clear Command Register
  1980. #define RTC_IER (AT91C_CAST(AT91C_REG *) 0x00000020) // (RTC_IER) Interrupt Enable Register
  1981. #define RTC_IDR (AT91C_CAST(AT91C_REG *) 0x00000024) // (RTC_IDR) Interrupt Disable Register
  1982. #define RTC_IMR (AT91C_CAST(AT91C_REG *) 0x00000028) // (RTC_IMR) Interrupt Mask Register
  1983. #define RTC_VER (AT91C_CAST(AT91C_REG *) 0x0000002C) // (RTC_VER) Valid Entry Register
  1984. #endif
  1985. // -------- RTC_CR : (RTC Offset: 0x0) RTC Control Register --------
  1986. #define AT91C_RTC_UPDTIM (0x1 << 0) // (RTC) Update Request Time Register
  1987. #define AT91C_RTC_UPDCAL (0x1 << 1) // (RTC) Update Request Calendar Register
  1988. #define AT91C_RTC_TIMEVSEL (0x3 << 8) // (RTC) Time Event Selection
  1989. #define AT91C_RTC_TIMEVSEL_MINUTE (0x0 << 8) // (RTC) Minute change.
  1990. #define AT91C_RTC_TIMEVSEL_HOUR (0x1 << 8) // (RTC) Hour change.
  1991. #define AT91C_RTC_TIMEVSEL_DAY24 (0x2 << 8) // (RTC) Every day at midnight.
  1992. #define AT91C_RTC_TIMEVSEL_DAY12 (0x3 << 8) // (RTC) Every day at noon.
  1993. #define AT91C_RTC_CALEVSEL (0x3 << 16) // (RTC) Calendar Event Selection
  1994. #define AT91C_RTC_CALEVSEL_WEEK (0x0 << 16) // (RTC) Week change (every Monday at time 00:00:00).
  1995. #define AT91C_RTC_CALEVSEL_MONTH (0x1 << 16) // (RTC) Month change (every 01 of each month at time 00:00:00).
  1996. #define AT91C_RTC_CALEVSEL_YEAR (0x2 << 16) // (RTC) Year change (every January 1 at time 00:00:00).
  1997. // -------- RTC_MR : (RTC Offset: 0x4) RTC Mode Register --------
  1998. #define AT91C_RTC_HRMOD (0x1 << 0) // (RTC) 12-24 hour Mode
  1999. // -------- RTC_TIMR : (RTC Offset: 0x8) RTC Time Register --------
  2000. #define AT91C_RTC_SEC (0x7F << 0) // (RTC) Current Second
  2001. #define AT91C_RTC_MIN (0x7F << 8) // (RTC) Current Minute
  2002. #define AT91C_RTC_HOUR (0x3F << 16) // (RTC) Current Hour
  2003. #define AT91C_RTC_AMPM (0x1 << 22) // (RTC) Ante Meridiem, Post Meridiem Indicator
  2004. // -------- RTC_CALR : (RTC Offset: 0xc) RTC Calendar Register --------
  2005. #define AT91C_RTC_CENT (0x3F << 0) // (RTC) Current Century
  2006. #define AT91C_RTC_YEAR (0xFF << 8) // (RTC) Current Year
  2007. #define AT91C_RTC_MONTH (0x1F << 16) // (RTC) Current Month
  2008. #define AT91C_RTC_DAY (0x7 << 21) // (RTC) Current Day
  2009. #define AT91C_RTC_DATE (0x3F << 24) // (RTC) Current Date
  2010. // -------- RTC_TIMALR : (RTC Offset: 0x10) RTC Time Alarm Register --------
  2011. #define AT91C_RTC_SECEN (0x1 << 7) // (RTC) Second Alarm Enable
  2012. #define AT91C_RTC_MINEN (0x1 << 15) // (RTC) Minute Alarm
  2013. #define AT91C_RTC_HOUREN (0x1 << 23) // (RTC) Current Hour
  2014. // -------- RTC_CALALR : (RTC Offset: 0x14) RTC Calendar Alarm Register --------
  2015. #define AT91C_RTC_MONTHEN (0x1 << 23) // (RTC) Month Alarm Enable
  2016. #define AT91C_RTC_DATEEN (0x1 << 31) // (RTC) Date Alarm Enable
  2017. // -------- RTC_SR : (RTC Offset: 0x18) RTC Status Register --------
  2018. #define AT91C_RTC_ACKUPD (0x1 << 0) // (RTC) Acknowledge for Update
  2019. #define AT91C_RTC_ALARM (0x1 << 1) // (RTC) Alarm Flag
  2020. #define AT91C_RTC_SECEV (0x1 << 2) // (RTC) Second Event
  2021. #define AT91C_RTC_TIMEV (0x1 << 3) // (RTC) Time Event
  2022. #define AT91C_RTC_CALEV (0x1 << 4) // (RTC) Calendar event
  2023. // -------- RTC_SCCR : (RTC Offset: 0x1c) RTC Status Clear Command Register --------
  2024. // -------- RTC_IER : (RTC Offset: 0x20) RTC Interrupt Enable Register --------
  2025. // -------- RTC_IDR : (RTC Offset: 0x24) RTC Interrupt Disable Register --------
  2026. // -------- RTC_IMR : (RTC Offset: 0x28) RTC Interrupt Mask Register --------
  2027. // -------- RTC_VER : (RTC Offset: 0x2c) RTC Valid Entry Register --------
  2028. #define AT91C_RTC_NVTIM (0x1 << 0) // (RTC) Non valid Time
  2029. #define AT91C_RTC_NVCAL (0x1 << 1) // (RTC) Non valid Calendar
  2030. #define AT91C_RTC_NVTIMALR (0x1 << 2) // (RTC) Non valid time Alarm
  2031. #define AT91C_RTC_NVCALALR (0x1 << 3) // (RTC) Nonvalid Calendar Alarm
  2032. // *****************************************************************************
  2033. // SOFTWARE API DEFINITION FOR Timer Counter Channel Interface
  2034. // *****************************************************************************
  2035. #ifndef __ASSEMBLY__
  2036. typedef struct _AT91S_TC {
  2037. AT91C_REG TC_CCR; // Channel Control Register
  2038. AT91C_REG TC_CMR; // Channel Mode Register (Capture Mode / Waveform Mode)
  2039. AT91C_REG Reserved0[2]; //
  2040. AT91C_REG TC_CV; // Counter Value
  2041. AT91C_REG TC_RA; // Register A
  2042. AT91C_REG TC_RB; // Register B
  2043. AT91C_REG TC_RC; // Register C
  2044. AT91C_REG TC_SR; // Status Register
  2045. AT91C_REG TC_IER; // Interrupt Enable Register
  2046. AT91C_REG TC_IDR; // Interrupt Disable Register
  2047. AT91C_REG TC_IMR; // Interrupt Mask Register
  2048. } AT91S_TC, *AT91PS_TC;
  2049. #else
  2050. #define TC_CCR (AT91C_CAST(AT91C_REG *) 0x00000000) // (TC_CCR) Channel Control Register
  2051. #define TC_CMR (AT91C_CAST(AT91C_REG *) 0x00000004) // (TC_CMR) Channel Mode Register (Capture Mode / Waveform Mode)
  2052. #define TC_CV (AT91C_CAST(AT91C_REG *) 0x00000010) // (TC_CV) Counter Value
  2053. #define TC_RA (AT91C_CAST(AT91C_REG *) 0x00000014) // (TC_RA) Register A
  2054. #define TC_RB (AT91C_CAST(AT91C_REG *) 0x00000018) // (TC_RB) Register B
  2055. #define TC_RC (AT91C_CAST(AT91C_REG *) 0x0000001C) // (TC_RC) Register C
  2056. #define TC_SR (AT91C_CAST(AT91C_REG *) 0x00000020) // (TC_SR) Status Register
  2057. #define TC_IER (AT91C_CAST(AT91C_REG *) 0x00000024) // (TC_IER) Interrupt Enable Register
  2058. #define TC_IDR (AT91C_CAST(AT91C_REG *) 0x00000028) // (TC_IDR) Interrupt Disable Register
  2059. #define TC_IMR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (TC_IMR) Interrupt Mask Register
  2060. #endif
  2061. // -------- TC_CCR : (TC Offset: 0x0) TC Channel Control Register --------
  2062. #define AT91C_TC_CLKEN (0x1 << 0) // (TC) Counter Clock Enable Command
  2063. #define AT91C_TC_CLKDIS (0x1 << 1) // (TC) Counter Clock Disable Command
  2064. #define AT91C_TC_SWTRG (0x1 << 2) // (TC) Software Trigger Command
  2065. // -------- TC_CMR : (TC Offset: 0x4) TC Channel Mode Register: Capture Mode / Waveform Mode --------
  2066. #define AT91C_TC_CLKS (0x7 << 0) // (TC) Clock Selection
  2067. #define AT91C_TC_CLKS_TIMER_DIV1_CLOCK (0x0) // (TC) Clock selected: TIMER_DIV1_CLOCK
  2068. #define AT91C_TC_CLKS_TIMER_DIV2_CLOCK (0x1) // (TC) Clock selected: TIMER_DIV2_CLOCK
  2069. #define AT91C_TC_CLKS_TIMER_DIV3_CLOCK (0x2) // (TC) Clock selected: TIMER_DIV3_CLOCK
  2070. #define AT91C_TC_CLKS_TIMER_DIV4_CLOCK (0x3) // (TC) Clock selected: TIMER_DIV4_CLOCK
  2071. #define AT91C_TC_CLKS_TIMER_DIV5_CLOCK (0x4) // (TC) Clock selected: TIMER_DIV5_CLOCK
  2072. #define AT91C_TC_CLKS_XC0 (0x5) // (TC) Clock selected: XC0
  2073. #define AT91C_TC_CLKS_XC1 (0x6) // (TC) Clock selected: XC1
  2074. #define AT91C_TC_CLKS_XC2 (0x7) // (TC) Clock selected: XC2
  2075. #define AT91C_TC_CLKI (0x1 << 3) // (TC) Clock Invert
  2076. #define AT91C_TC_BURST (0x3 << 4) // (TC) Burst Signal Selection
  2077. #define AT91C_TC_BURST_NONE (0x0 << 4) // (TC) The clock is not gated by an external signal
  2078. #define AT91C_TC_BURST_XC0 (0x1 << 4) // (TC) XC0 is ANDed with the selected clock
  2079. #define AT91C_TC_BURST_XC1 (0x2 << 4) // (TC) XC1 is ANDed with the selected clock
  2080. #define AT91C_TC_BURST_XC2 (0x3 << 4) // (TC) XC2 is ANDed with the selected clock
  2081. #define AT91C_TC_CPCSTOP (0x1 << 6) // (TC) Counter Clock Stopped with RC Compare
  2082. #define AT91C_TC_LDBSTOP (0x1 << 6) // (TC) Counter Clock Stopped with RB Loading
  2083. #define AT91C_TC_CPCDIS (0x1 << 7) // (TC) Counter Clock Disable with RC Compare
  2084. #define AT91C_TC_LDBDIS (0x1 << 7) // (TC) Counter Clock Disabled with RB Loading
  2085. #define AT91C_TC_ETRGEDG (0x3 << 8) // (TC) External Trigger Edge Selection
  2086. #define AT91C_TC_ETRGEDG_NONE (0x0 << 8) // (TC) Edge: None
  2087. #define AT91C_TC_ETRGEDG_RISING (0x1 << 8) // (TC) Edge: rising edge
  2088. #define AT91C_TC_ETRGEDG_FALLING (0x2 << 8) // (TC) Edge: falling edge
  2089. #define AT91C_TC_ETRGEDG_BOTH (0x3 << 8) // (TC) Edge: each edge
  2090. #define AT91C_TC_EEVTEDG (0x3 << 8) // (TC) External Event Edge Selection
  2091. #define AT91C_TC_EEVTEDG_NONE (0x0 << 8) // (TC) Edge: None
  2092. #define AT91C_TC_EEVTEDG_RISING (0x1 << 8) // (TC) Edge: rising edge
  2093. #define AT91C_TC_EEVTEDG_FALLING (0x2 << 8) // (TC) Edge: falling edge
  2094. #define AT91C_TC_EEVTEDG_BOTH (0x3 << 8) // (TC) Edge: each edge
  2095. #define AT91C_TC_EEVT (0x3 << 10) // (TC) External Event Selection
  2096. #define AT91C_TC_EEVT_TIOB (0x0 << 10) // (TC) Signal selected as external event: TIOB TIOB direction: input
  2097. #define AT91C_TC_EEVT_XC0 (0x1 << 10) // (TC) Signal selected as external event: XC0 TIOB direction: output
  2098. #define AT91C_TC_EEVT_XC1 (0x2 << 10) // (TC) Signal selected as external event: XC1 TIOB direction: output
  2099. #define AT91C_TC_EEVT_XC2 (0x3 << 10) // (TC) Signal selected as external event: XC2 TIOB direction: output
  2100. #define AT91C_TC_ABETRG (0x1 << 10) // (TC) TIOA or TIOB External Trigger Selection
  2101. #define AT91C_TC_ENETRG (0x1 << 12) // (TC) External Event Trigger enable
  2102. #define AT91C_TC_WAVESEL (0x3 << 13) // (TC) Waveform Selection
  2103. #define AT91C_TC_WAVESEL_UP (0x0 << 13) // (TC) UP mode without atomatic trigger on RC Compare
  2104. #define AT91C_TC_WAVESEL_UPDOWN (0x1 << 13) // (TC) UPDOWN mode without automatic trigger on RC Compare
  2105. #define AT91C_TC_WAVESEL_UP_AUTO (0x2 << 13) // (TC) UP mode with automatic trigger on RC Compare
  2106. #define AT91C_TC_WAVESEL_UPDOWN_AUTO (0x3 << 13) // (TC) UPDOWN mode with automatic trigger on RC Compare
  2107. #define AT91C_TC_CPCTRG (0x1 << 14) // (TC) RC Compare Trigger Enable
  2108. #define AT91C_TC_WAVE (0x1 << 15) // (TC)
  2109. #define AT91C_TC_ACPA (0x3 << 16) // (TC) RA Compare Effect on TIOA
  2110. #define AT91C_TC_ACPA_NONE (0x0 << 16) // (TC) Effect: none
  2111. #define AT91C_TC_ACPA_SET (0x1 << 16) // (TC) Effect: set
  2112. #define AT91C_TC_ACPA_CLEAR (0x2 << 16) // (TC) Effect: clear
  2113. #define AT91C_TC_ACPA_TOGGLE (0x3 << 16) // (TC) Effect: toggle
  2114. #define AT91C_TC_LDRA (0x3 << 16) // (TC) RA Loading Selection
  2115. #define AT91C_TC_LDRA_NONE (0x0 << 16) // (TC) Edge: None
  2116. #define AT91C_TC_LDRA_RISING (0x1 << 16) // (TC) Edge: rising edge of TIOA
  2117. #define AT91C_TC_LDRA_FALLING (0x2 << 16) // (TC) Edge: falling edge of TIOA
  2118. #define AT91C_TC_LDRA_BOTH (0x3 << 16) // (TC) Edge: each edge of TIOA
  2119. #define AT91C_TC_ACPC (0x3 << 18) // (TC) RC Compare Effect on TIOA
  2120. #define AT91C_TC_ACPC_NONE (0x0 << 18) // (TC) Effect: none
  2121. #define AT91C_TC_ACPC_SET (0x1 << 18) // (TC) Effect: set
  2122. #define AT91C_TC_ACPC_CLEAR (0x2 << 18) // (TC) Effect: clear
  2123. #define AT91C_TC_ACPC_TOGGLE (0x3 << 18) // (TC) Effect: toggle
  2124. #define AT91C_TC_LDRB (0x3 << 18) // (TC) RB Loading Selection
  2125. #define AT91C_TC_LDRB_NONE (0x0 << 18) // (TC) Edge: None
  2126. #define AT91C_TC_LDRB_RISING (0x1 << 18) // (TC) Edge: rising edge of TIOA
  2127. #define AT91C_TC_LDRB_FALLING (0x2 << 18) // (TC) Edge: falling edge of TIOA
  2128. #define AT91C_TC_LDRB_BOTH (0x3 << 18) // (TC) Edge: each edge of TIOA
  2129. #define AT91C_TC_AEEVT (0x3 << 20) // (TC) External Event Effect on TIOA
  2130. #define AT91C_TC_AEEVT_NONE (0x0 << 20) // (TC) Effect: none
  2131. #define AT91C_TC_AEEVT_SET (0x1 << 20) // (TC) Effect: set
  2132. #define AT91C_TC_AEEVT_CLEAR (0x2 << 20) // (TC) Effect: clear
  2133. #define AT91C_TC_AEEVT_TOGGLE (0x3 << 20) // (TC) Effect: toggle
  2134. #define AT91C_TC_ASWTRG (0x3 << 22) // (TC) Software Trigger Effect on TIOA
  2135. #define AT91C_TC_ASWTRG_NONE (0x0 << 22) // (TC) Effect: none
  2136. #define AT91C_TC_ASWTRG_SET (0x1 << 22) // (TC) Effect: set
  2137. #define AT91C_TC_ASWTRG_CLEAR (0x2 << 22) // (TC) Effect: clear
  2138. #define AT91C_TC_ASWTRG_TOGGLE (0x3 << 22) // (TC) Effect: toggle
  2139. #define AT91C_TC_BCPB (0x3 << 24) // (TC) RB Compare Effect on TIOB
  2140. #define AT91C_TC_BCPB_NONE (0x0 << 24) // (TC) Effect: none
  2141. #define AT91C_TC_BCPB_SET (0x1 << 24) // (TC) Effect: set
  2142. #define AT91C_TC_BCPB_CLEAR (0x2 << 24) // (TC) Effect: clear
  2143. #define AT91C_TC_BCPB_TOGGLE (0x3 << 24) // (TC) Effect: toggle
  2144. #define AT91C_TC_BCPC (0x3 << 26) // (TC) RC Compare Effect on TIOB
  2145. #define AT91C_TC_BCPC_NONE (0x0 << 26) // (TC) Effect: none
  2146. #define AT91C_TC_BCPC_SET (0x1 << 26) // (TC) Effect: set
  2147. #define AT91C_TC_BCPC_CLEAR (0x2 << 26) // (TC) Effect: clear
  2148. #define AT91C_TC_BCPC_TOGGLE (0x3 << 26) // (TC) Effect: toggle
  2149. #define AT91C_TC_BEEVT (0x3 << 28) // (TC) External Event Effect on TIOB
  2150. #define AT91C_TC_BEEVT_NONE (0x0 << 28) // (TC) Effect: none
  2151. #define AT91C_TC_BEEVT_SET (0x1 << 28) // (TC) Effect: set
  2152. #define AT91C_TC_BEEVT_CLEAR (0x2 << 28) // (TC) Effect: clear
  2153. #define AT91C_TC_BEEVT_TOGGLE (0x3 << 28) // (TC) Effect: toggle
  2154. #define AT91C_TC_BSWTRG (0x3 << 30) // (TC) Software Trigger Effect on TIOB
  2155. #define AT91C_TC_BSWTRG_NONE (0x0 << 30) // (TC) Effect: none
  2156. #define AT91C_TC_BSWTRG_SET (0x1 << 30) // (TC) Effect: set
  2157. #define AT91C_TC_BSWTRG_CLEAR (0x2 << 30) // (TC) Effect: clear
  2158. #define AT91C_TC_BSWTRG_TOGGLE (0x3 << 30) // (TC) Effect: toggle
  2159. // -------- TC_SR : (TC Offset: 0x20) TC Channel Status Register --------
  2160. #define AT91C_TC_COVFS (0x1 << 0) // (TC) Counter Overflow
  2161. #define AT91C_TC_LOVRS (0x1 << 1) // (TC) Load Overrun
  2162. #define AT91C_TC_CPAS (0x1 << 2) // (TC) RA Compare
  2163. #define AT91C_TC_CPBS (0x1 << 3) // (TC) RB Compare
  2164. #define AT91C_TC_CPCS (0x1 << 4) // (TC) RC Compare
  2165. #define AT91C_TC_LDRAS (0x1 << 5) // (TC) RA Loading
  2166. #define AT91C_TC_LDRBS (0x1 << 6) // (TC) RB Loading
  2167. #define AT91C_TC_ETRGS (0x1 << 7) // (TC) External Trigger
  2168. #define AT91C_TC_CLKSTA (0x1 << 16) // (TC) Clock Enabling
  2169. #define AT91C_TC_MTIOA (0x1 << 17) // (TC) TIOA Mirror
  2170. #define AT91C_TC_MTIOB (0x1 << 18) // (TC) TIOA Mirror
  2171. // -------- TC_IER : (TC Offset: 0x24) TC Channel Interrupt Enable Register --------
  2172. // -------- TC_IDR : (TC Offset: 0x28) TC Channel Interrupt Disable Register --------
  2173. // -------- TC_IMR : (TC Offset: 0x2c) TC Channel Interrupt Mask Register --------
  2174. // *****************************************************************************
  2175. // SOFTWARE API DEFINITION FOR Timer Counter Interface
  2176. // *****************************************************************************
  2177. #ifndef __ASSEMBLY__
  2178. typedef struct _AT91S_TCB {
  2179. AT91S_TC TCB_TC0; // TC Channel 0
  2180. AT91C_REG Reserved0[4]; //
  2181. AT91S_TC TCB_TC1; // TC Channel 1
  2182. AT91C_REG Reserved1[4]; //
  2183. AT91S_TC TCB_TC2; // TC Channel 2
  2184. AT91C_REG Reserved2[4]; //
  2185. AT91C_REG TCB_BCR; // TC Block Control Register
  2186. AT91C_REG TCB_BMR; // TC Block Mode Register
  2187. AT91C_REG Reserved3[9]; //
  2188. AT91C_REG TCB_ADDRSIZE; // TC ADDRSIZE REGISTER
  2189. AT91C_REG TCB_IPNAME1; // TC IPNAME1 REGISTER
  2190. AT91C_REG TCB_IPNAME2; // TC IPNAME2 REGISTER
  2191. AT91C_REG TCB_FEATURES; // TC FEATURES REGISTER
  2192. AT91C_REG TCB_VER; // Version Register
  2193. } AT91S_TCB, *AT91PS_TCB;
  2194. #else
  2195. #define TCB_BCR (AT91C_CAST(AT91C_REG *) 0x000000C0) // (TCB_BCR) TC Block Control Register
  2196. #define TCB_BMR (AT91C_CAST(AT91C_REG *) 0x000000C4) // (TCB_BMR) TC Block Mode Register
  2197. #define TC_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (TC_ADDRSIZE) TC ADDRSIZE REGISTER
  2198. #define TC_IPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (TC_IPNAME1) TC IPNAME1 REGISTER
  2199. #define TC_IPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (TC_IPNAME2) TC IPNAME2 REGISTER
  2200. #define TC_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (TC_FEATURES) TC FEATURES REGISTER
  2201. #define TC_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (TC_VER) Version Register
  2202. #endif
  2203. // -------- TCB_BCR : (TCB Offset: 0xc0) TC Block Control Register --------
  2204. #define AT91C_TCB_SYNC (0x1 << 0) // (TCB) Synchro Command
  2205. // -------- TCB_BMR : (TCB Offset: 0xc4) TC Block Mode Register --------
  2206. #define AT91C_TCB_TC0XC0S (0x3 << 0) // (TCB) External Clock Signal 0 Selection
  2207. #define AT91C_TCB_TC0XC0S_TCLK0 (0x0) // (TCB) TCLK0 connected to XC0
  2208. #define AT91C_TCB_TC0XC0S_NONE (0x1) // (TCB) None signal connected to XC0
  2209. #define AT91C_TCB_TC0XC0S_TIOA1 (0x2) // (TCB) TIOA1 connected to XC0
  2210. #define AT91C_TCB_TC0XC0S_TIOA2 (0x3) // (TCB) TIOA2 connected to XC0
  2211. #define AT91C_TCB_TC1XC1S (0x3 << 2) // (TCB) External Clock Signal 1 Selection
  2212. #define AT91C_TCB_TC1XC1S_TCLK1 (0x0 << 2) // (TCB) TCLK1 connected to XC1
  2213. #define AT91C_TCB_TC1XC1S_NONE (0x1 << 2) // (TCB) None signal connected to XC1
  2214. #define AT91C_TCB_TC1XC1S_TIOA0 (0x2 << 2) // (TCB) TIOA0 connected to XC1
  2215. #define AT91C_TCB_TC1XC1S_TIOA2 (0x3 << 2) // (TCB) TIOA2 connected to XC1
  2216. #define AT91C_TCB_TC2XC2S (0x3 << 4) // (TCB) External Clock Signal 2 Selection
  2217. #define AT91C_TCB_TC2XC2S_TCLK2 (0x0 << 4) // (TCB) TCLK2 connected to XC2
  2218. #define AT91C_TCB_TC2XC2S_NONE (0x1 << 4) // (TCB) None signal connected to XC2
  2219. #define AT91C_TCB_TC2XC2S_TIOA0 (0x2 << 4) // (TCB) TIOA0 connected to XC2
  2220. #define AT91C_TCB_TC2XC2S_TIOA1 (0x3 << 4) // (TCB) TIOA2 connected to XC2
  2221. // *****************************************************************************
  2222. // SOFTWARE API DEFINITION FOR Multimedia Card Interface
  2223. // *****************************************************************************
  2224. #ifndef __ASSEMBLY__
  2225. typedef struct _AT91S_MCI {
  2226. AT91C_REG MCI_CR; // MCI Control Register
  2227. AT91C_REG MCI_MR; // MCI Mode Register
  2228. AT91C_REG MCI_DTOR; // MCI Data Timeout Register
  2229. AT91C_REG MCI_SDCR; // MCI SD/SDIO Card Register
  2230. AT91C_REG MCI_ARGR; // MCI Argument Register
  2231. AT91C_REG MCI_CMDR; // MCI Command Register
  2232. AT91C_REG MCI_BLKR; // MCI Block Register
  2233. AT91C_REG MCI_CSTOR; // MCI Completion Signal Timeout Register
  2234. AT91C_REG MCI_RSPR[4]; // MCI Response Register
  2235. AT91C_REG MCI_RDR; // MCI Receive Data Register
  2236. AT91C_REG MCI_TDR; // MCI Transmit Data Register
  2237. AT91C_REG Reserved0[2]; //
  2238. AT91C_REG MCI_SR; // MCI Status Register
  2239. AT91C_REG MCI_IER; // MCI Interrupt Enable Register
  2240. AT91C_REG MCI_IDR; // MCI Interrupt Disable Register
  2241. AT91C_REG MCI_IMR; // MCI Interrupt Mask Register
  2242. AT91C_REG MCI_DMA; // MCI DMA Configuration Register
  2243. AT91C_REG MCI_CFG; // MCI Configuration Register
  2244. AT91C_REG Reserved1[35]; //
  2245. AT91C_REG MCI_WPCR; // MCI Write Protection Control Register
  2246. AT91C_REG MCI_WPSR; // MCI Write Protection Status Register
  2247. AT91C_REG MCI_ADDRSIZE; // MCI ADDRSIZE REGISTER
  2248. AT91C_REG MCI_IPNAME1; // MCI IPNAME1 REGISTER
  2249. AT91C_REG MCI_IPNAME2; // MCI IPNAME2 REGISTER
  2250. AT91C_REG MCI_FEATURES; // MCI FEATURES REGISTER
  2251. AT91C_REG MCI_VER; // MCI VERSION REGISTER
  2252. AT91C_REG MCI_RPR; // Receive Pointer Register
  2253. AT91C_REG MCI_RCR; // Receive Counter Register
  2254. AT91C_REG MCI_TPR; // Transmit Pointer Register
  2255. AT91C_REG MCI_TCR; // Transmit Counter Register
  2256. AT91C_REG MCI_RNPR; // Receive Next Pointer Register
  2257. AT91C_REG MCI_RNCR; // Receive Next Counter Register
  2258. AT91C_REG MCI_TNPR; // Transmit Next Pointer Register
  2259. AT91C_REG MCI_TNCR; // Transmit Next Counter Register
  2260. AT91C_REG MCI_PTCR; // PDC Transfer Control Register
  2261. AT91C_REG MCI_PTSR; // PDC Transfer Status Register
  2262. AT91C_REG Reserved2[54]; //
  2263. AT91C_REG MCI_FIFO; // MCI FIFO Aperture Register
  2264. } AT91S_MCI, *AT91PS_MCI;
  2265. #else
  2266. #define MCI_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (MCI_CR) MCI Control Register
  2267. #define MCI_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (MCI_MR) MCI Mode Register
  2268. #define MCI_DTOR (AT91C_CAST(AT91C_REG *) 0x00000008) // (MCI_DTOR) MCI Data Timeout Register
  2269. #define MCI_SDCR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (MCI_SDCR) MCI SD/SDIO Card Register
  2270. #define MCI_ARGR (AT91C_CAST(AT91C_REG *) 0x00000010) // (MCI_ARGR) MCI Argument Register
  2271. #define MCI_CMDR (AT91C_CAST(AT91C_REG *) 0x00000014) // (MCI_CMDR) MCI Command Register
  2272. #define MCI_BLKR (AT91C_CAST(AT91C_REG *) 0x00000018) // (MCI_BLKR) MCI Block Register
  2273. #define MCI_CSTOR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (MCI_CSTOR) MCI Completion Signal Timeout Register
  2274. #define MCI_RSPR (AT91C_CAST(AT91C_REG *) 0x00000020) // (MCI_RSPR) MCI Response Register
  2275. #define MCI_RDR (AT91C_CAST(AT91C_REG *) 0x00000030) // (MCI_RDR) MCI Receive Data Register
  2276. #define MCI_TDR (AT91C_CAST(AT91C_REG *) 0x00000034) // (MCI_TDR) MCI Transmit Data Register
  2277. #define MCI_SR (AT91C_CAST(AT91C_REG *) 0x00000040) // (MCI_SR) MCI Status Register
  2278. #define MCI_IER (AT91C_CAST(AT91C_REG *) 0x00000044) // (MCI_IER) MCI Interrupt Enable Register
  2279. #define MCI_IDR (AT91C_CAST(AT91C_REG *) 0x00000048) // (MCI_IDR) MCI Interrupt Disable Register
  2280. #define MCI_IMR (AT91C_CAST(AT91C_REG *) 0x0000004C) // (MCI_IMR) MCI Interrupt Mask Register
  2281. #define MCI_DMA (AT91C_CAST(AT91C_REG *) 0x00000050) // (MCI_DMA) MCI DMA Configuration Register
  2282. #define MCI_CFG (AT91C_CAST(AT91C_REG *) 0x00000054) // (MCI_CFG) MCI Configuration Register
  2283. #define MCI_WPCR (AT91C_CAST(AT91C_REG *) 0x000000E4) // (MCI_WPCR) MCI Write Protection Control Register
  2284. #define MCI_WPSR (AT91C_CAST(AT91C_REG *) 0x000000E8) // (MCI_WPSR) MCI Write Protection Status Register
  2285. #define MCI_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (MCI_ADDRSIZE) MCI ADDRSIZE REGISTER
  2286. #define MCI_IPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (MCI_IPNAME1) MCI IPNAME1 REGISTER
  2287. #define MCI_IPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (MCI_IPNAME2) MCI IPNAME2 REGISTER
  2288. #define MCI_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (MCI_FEATURES) MCI FEATURES REGISTER
  2289. #define MCI_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (MCI_VER) MCI VERSION REGISTER
  2290. #define MCI_FIFO (AT91C_CAST(AT91C_REG *) 0x00000200) // (MCI_FIFO) MCI FIFO Aperture Register
  2291. #endif
  2292. // -------- MCI_CR : (MCI Offset: 0x0) MCI Control Register --------
  2293. #define AT91C_MCI_MCIEN (0x1 << 0) // (MCI) Multimedia Interface Enable
  2294. #define AT91C_MCI_MCIEN_0 (0x0) // (MCI) No effect
  2295. #define AT91C_MCI_MCIEN_1 (0x1) // (MCI) Enable the MultiMedia Interface if MCIDIS is 0
  2296. #define AT91C_MCI_MCIDIS (0x1 << 1) // (MCI) Multimedia Interface Disable
  2297. #define AT91C_MCI_MCIDIS_0 (0x0 << 1) // (MCI) No effect
  2298. #define AT91C_MCI_MCIDIS_1 (0x1 << 1) // (MCI) Disable the MultiMedia Interface
  2299. #define AT91C_MCI_PWSEN (0x1 << 2) // (MCI) Power Save Mode Enable
  2300. #define AT91C_MCI_PWSEN_0 (0x0 << 2) // (MCI) No effect
  2301. #define AT91C_MCI_PWSEN_1 (0x1 << 2) // (MCI) Enable the Power-saving mode if PWSDIS is 0.
  2302. #define AT91C_MCI_PWSDIS (0x1 << 3) // (MCI) Power Save Mode Disable
  2303. #define AT91C_MCI_PWSDIS_0 (0x0 << 3) // (MCI) No effect
  2304. #define AT91C_MCI_PWSDIS_1 (0x1 << 3) // (MCI) Disable the Power-saving mode.
  2305. #define AT91C_MCI_IOWAITEN (0x1 << 4) // (MCI) SDIO Read Wait Enable
  2306. #define AT91C_MCI_IOWAITEN_0 (0x0 << 4) // (MCI) No effect
  2307. #define AT91C_MCI_IOWAITEN_1 (0x1 << 4) // (MCI) Enables the SDIO Read Wait Operation.
  2308. #define AT91C_MCI_IOWAITDIS (0x1 << 5) // (MCI) SDIO Read Wait Disable
  2309. #define AT91C_MCI_IOWAITDIS_0 (0x0 << 5) // (MCI) No effect
  2310. #define AT91C_MCI_IOWAITDIS_1 (0x1 << 5) // (MCI) Disables the SDIO Read Wait Operation.
  2311. #define AT91C_MCI_SWRST (0x1 << 7) // (MCI) MCI Software reset
  2312. #define AT91C_MCI_SWRST_0 (0x0 << 7) // (MCI) No effect
  2313. #define AT91C_MCI_SWRST_1 (0x1 << 7) // (MCI) Resets the MCI
  2314. // -------- MCI_MR : (MCI Offset: 0x4) MCI Mode Register --------
  2315. #define AT91C_MCI_CLKDIV (0xFF << 0) // (MCI) Clock Divider
  2316. #define AT91C_MCI_PWSDIV (0x7 << 8) // (MCI) Power Saving Divider
  2317. #define AT91C_MCI_RDPROOF (0x1 << 11) // (MCI) Read Proof Enable
  2318. #define AT91C_MCI_RDPROOF_DISABLE (0x0 << 11) // (MCI) Disables Read Proof
  2319. #define AT91C_MCI_RDPROOF_ENABLE (0x1 << 11) // (MCI) Enables Read Proof
  2320. #define AT91C_MCI_WRPROOF (0x1 << 12) // (MCI) Write Proof Enable
  2321. #define AT91C_MCI_WRPROOF_DISABLE (0x0 << 12) // (MCI) Disables Write Proof
  2322. #define AT91C_MCI_WRPROOF_ENABLE (0x1 << 12) // (MCI) Enables Write Proof
  2323. #define AT91C_MCI_PDCFBYTE (0x1 << 13) // (MCI) PDC Force Byte Transfer
  2324. #define AT91C_MCI_PDCFBYTE_DISABLE (0x0 << 13) // (MCI) Disables PDC Force Byte Transfer
  2325. #define AT91C_MCI_PDCFBYTE_ENABLE (0x1 << 13) // (MCI) Enables PDC Force Byte Transfer
  2326. #define AT91C_MCI_PDCPADV (0x1 << 14) // (MCI) PDC Padding Value
  2327. #define AT91C_MCI_PDCMODE (0x1 << 15) // (MCI) PDC Oriented Mode
  2328. #define AT91C_MCI_PDCMODE_DISABLE (0x0 << 15) // (MCI) Disables PDC Transfer
  2329. #define AT91C_MCI_PDCMODE_ENABLE (0x1 << 15) // (MCI) Enables PDC Transfer
  2330. #define AT91C_MCI_BLKLEN (0xFFFF << 16) // (MCI) Data Block Length
  2331. // -------- MCI_DTOR : (MCI Offset: 0x8) MCI Data Timeout Register --------
  2332. #define AT91C_MCI_DTOCYC (0xF << 0) // (MCI) Data Timeout Cycle Number
  2333. #define AT91C_MCI_DTOMUL (0x7 << 4) // (MCI) Data Timeout Multiplier
  2334. #define AT91C_MCI_DTOMUL_1 (0x0 << 4) // (MCI) DTOCYC x 1
  2335. #define AT91C_MCI_DTOMUL_16 (0x1 << 4) // (MCI) DTOCYC x 16
  2336. #define AT91C_MCI_DTOMUL_128 (0x2 << 4) // (MCI) DTOCYC x 128
  2337. #define AT91C_MCI_DTOMUL_256 (0x3 << 4) // (MCI) DTOCYC x 256
  2338. #define AT91C_MCI_DTOMUL_1024 (0x4 << 4) // (MCI) DTOCYC x 1024
  2339. #define AT91C_MCI_DTOMUL_4096 (0x5 << 4) // (MCI) DTOCYC x 4096
  2340. #define AT91C_MCI_DTOMUL_65536 (0x6 << 4) // (MCI) DTOCYC x 65536
  2341. #define AT91C_MCI_DTOMUL_1048576 (0x7 << 4) // (MCI) DTOCYC x 1048576
  2342. // -------- MCI_SDCR : (MCI Offset: 0xc) MCI SD Card Register --------
  2343. #define AT91C_MCI_SCDSEL (0x3 << 0) // (MCI) SD Card/SDIO Selector
  2344. #define AT91C_MCI_SCDSEL_SLOTA (0x0) // (MCI) Slot A selected
  2345. #define AT91C_MCI_SCDSEL_SLOTB (0x1) // (MCI) Slot B selected
  2346. #define AT91C_MCI_SCDSEL_SLOTC (0x2) // (MCI) Slot C selected
  2347. #define AT91C_MCI_SCDSEL_SLOTD (0x3) // (MCI) Slot D selected
  2348. #define AT91C_MCI_SCDBUS (0x3 << 6) // (MCI) SDCard/SDIO Bus Width
  2349. #define AT91C_MCI_SCDBUS_1BIT (0x0 << 6) // (MCI) 1-bit data bus
  2350. #define AT91C_MCI_SCDBUS_4BITS (0x2 << 6) // (MCI) 4-bits data bus
  2351. #define AT91C_MCI_SCDBUS_8BITS (0x3 << 6) // (MCI) 8-bits data bus
  2352. // -------- MCI_CMDR : (MCI Offset: 0x14) MCI Command Register --------
  2353. #define AT91C_MCI_CMDNB (0x3F << 0) // (MCI) Command Number
  2354. #define AT91C_MCI_RSPTYP (0x3 << 6) // (MCI) Response Type
  2355. #define AT91C_MCI_RSPTYP_NO (0x0 << 6) // (MCI) No response
  2356. #define AT91C_MCI_RSPTYP_48 (0x1 << 6) // (MCI) 48-bit response
  2357. #define AT91C_MCI_RSPTYP_136 (0x2 << 6) // (MCI) 136-bit response
  2358. #define AT91C_MCI_RSPTYP_R1B (0x3 << 6) // (MCI) R1b response
  2359. #define AT91C_MCI_SPCMD (0x7 << 8) // (MCI) Special CMD
  2360. #define AT91C_MCI_SPCMD_NONE (0x0 << 8) // (MCI) Not a special CMD
  2361. #define AT91C_MCI_SPCMD_INIT (0x1 << 8) // (MCI) Initialization CMD
  2362. #define AT91C_MCI_SPCMD_SYNC (0x2 << 8) // (MCI) Synchronized CMD
  2363. #define AT91C_MCI_SPCMD_CE_ATA (0x3 << 8) // (MCI) CE-ATA Completion Signal disable CMD
  2364. #define AT91C_MCI_SPCMD_IT_CMD (0x4 << 8) // (MCI) Interrupt command
  2365. #define AT91C_MCI_SPCMD_IT_REP (0x5 << 8) // (MCI) Interrupt response
  2366. #define AT91C_MCI_OPDCMD (0x1 << 11) // (MCI) Open Drain Command
  2367. #define AT91C_MCI_OPDCMD_PUSHPULL (0x0 << 11) // (MCI) Push/pull command
  2368. #define AT91C_MCI_OPDCMD_OPENDRAIN (0x1 << 11) // (MCI) Open drain command
  2369. #define AT91C_MCI_MAXLAT (0x1 << 12) // (MCI) Maximum Latency for Command to respond
  2370. #define AT91C_MCI_MAXLAT_5 (0x0 << 12) // (MCI) 5 cycles maximum latency
  2371. #define AT91C_MCI_MAXLAT_64 (0x1 << 12) // (MCI) 64 cycles maximum latency
  2372. #define AT91C_MCI_TRCMD (0x3 << 16) // (MCI) Transfer CMD
  2373. #define AT91C_MCI_TRCMD_NO (0x0 << 16) // (MCI) No transfer
  2374. #define AT91C_MCI_TRCMD_START (0x1 << 16) // (MCI) Start transfer
  2375. #define AT91C_MCI_TRCMD_STOP (0x2 << 16) // (MCI) Stop transfer
  2376. #define AT91C_MCI_TRDIR (0x1 << 18) // (MCI) Transfer Direction
  2377. #define AT91C_MCI_TRDIR_WRITE (0x0 << 18) // (MCI) Write
  2378. #define AT91C_MCI_TRDIR_READ (0x1 << 18) // (MCI) Read
  2379. #define AT91C_MCI_TRTYP (0x7 << 19) // (MCI) Transfer Type
  2380. #define AT91C_MCI_TRTYP_BLOCK (0x0 << 19) // (MCI) MMC/SDCard Single Block Transfer type
  2381. #define AT91C_MCI_TRTYP_MULTIPLE (0x1 << 19) // (MCI) MMC/SDCard Multiple Block transfer type
  2382. #define AT91C_MCI_TRTYP_STREAM (0x2 << 19) // (MCI) MMC Stream transfer type
  2383. #define AT91C_MCI_TRTYP_SDIO_BYTE (0x4 << 19) // (MCI) SDIO Byte transfer type
  2384. #define AT91C_MCI_TRTYP_SDIO_BLOCK (0x5 << 19) // (MCI) SDIO Block transfer type
  2385. #define AT91C_MCI_IOSPCMD (0x3 << 24) // (MCI) SDIO Special Command
  2386. #define AT91C_MCI_IOSPCMD_NONE (0x0 << 24) // (MCI) NOT a special command
  2387. #define AT91C_MCI_IOSPCMD_SUSPEND (0x1 << 24) // (MCI) SDIO Suspend Command
  2388. #define AT91C_MCI_IOSPCMD_RESUME (0x2 << 24) // (MCI) SDIO Resume Command
  2389. #define AT91C_MCI_ATACS (0x1 << 26) // (MCI) ATA with command completion signal
  2390. #define AT91C_MCI_ATACS_NORMAL (0x0 << 26) // (MCI) normal operation mode
  2391. #define AT91C_MCI_ATACS_COMPLETION (0x1 << 26) // (MCI) completion signal is expected within MCI_CSTOR
  2392. // -------- MCI_BLKR : (MCI Offset: 0x18) MCI Block Register --------
  2393. #define AT91C_MCI_BCNT (0xFFFF << 0) // (MCI) MMC/SDIO Block Count / SDIO Byte Count
  2394. // -------- MCI_CSTOR : (MCI Offset: 0x1c) MCI Completion Signal Timeout Register --------
  2395. #define AT91C_MCI_CSTOCYC (0xF << 0) // (MCI) Completion Signal Timeout Cycle Number
  2396. #define AT91C_MCI_CSTOMUL (0x7 << 4) // (MCI) Completion Signal Timeout Multiplier
  2397. #define AT91C_MCI_CSTOMUL_1 (0x0 << 4) // (MCI) CSTOCYC x 1
  2398. #define AT91C_MCI_CSTOMUL_16 (0x1 << 4) // (MCI) CSTOCYC x 16
  2399. #define AT91C_MCI_CSTOMUL_128 (0x2 << 4) // (MCI) CSTOCYC x 128
  2400. #define AT91C_MCI_CSTOMUL_256 (0x3 << 4) // (MCI) CSTOCYC x 256
  2401. #define AT91C_MCI_CSTOMUL_1024 (0x4 << 4) // (MCI) CSTOCYC x 1024
  2402. #define AT91C_MCI_CSTOMUL_4096 (0x5 << 4) // (MCI) CSTOCYC x 4096
  2403. #define AT91C_MCI_CSTOMUL_65536 (0x6 << 4) // (MCI) CSTOCYC x 65536
  2404. #define AT91C_MCI_CSTOMUL_1048576 (0x7 << 4) // (MCI) CSTOCYC x 1048576
  2405. // -------- MCI_SR : (MCI Offset: 0x40) MCI Status Register --------
  2406. #define AT91C_MCI_CMDRDY (0x1 << 0) // (MCI) Command Ready flag
  2407. #define AT91C_MCI_RXRDY (0x1 << 1) // (MCI) RX Ready flag
  2408. #define AT91C_MCI_TXRDY (0x1 << 2) // (MCI) TX Ready flag
  2409. #define AT91C_MCI_BLKE (0x1 << 3) // (MCI) Data Block Transfer Ended flag
  2410. #define AT91C_MCI_DTIP (0x1 << 4) // (MCI) Data Transfer in Progress flag
  2411. #define AT91C_MCI_NOTBUSY (0x1 << 5) // (MCI) Data Line Not Busy flag
  2412. #define AT91C_MCI_ENDRX (0x1 << 6) // (MCI) End of RX Buffer flag
  2413. #define AT91C_MCI_ENDTX (0x1 << 7) // (MCI) End of TX Buffer flag
  2414. #define AT91C_MCI_SDIOIRQA (0x1 << 8) // (MCI) SDIO Interrupt for Slot A
  2415. #define AT91C_MCI_SDIOIRQB (0x1 << 9) // (MCI) SDIO Interrupt for Slot B
  2416. #define AT91C_MCI_SDIOIRQC (0x1 << 10) // (MCI) SDIO Interrupt for Slot C
  2417. #define AT91C_MCI_SDIOIRQD (0x1 << 11) // (MCI) SDIO Interrupt for Slot D
  2418. #define AT91C_MCI_SDIOWAIT (0x1 << 12) // (MCI) SDIO Read Wait operation flag
  2419. #define AT91C_MCI_CSRCV (0x1 << 13) // (MCI) CE-ATA Completion Signal flag
  2420. #define AT91C_MCI_RXBUFF (0x1 << 14) // (MCI) RX Buffer Full flag
  2421. #define AT91C_MCI_TXBUFE (0x1 << 15) // (MCI) TX Buffer Empty flag
  2422. #define AT91C_MCI_RINDE (0x1 << 16) // (MCI) Response Index Error flag
  2423. #define AT91C_MCI_RDIRE (0x1 << 17) // (MCI) Response Direction Error flag
  2424. #define AT91C_MCI_RCRCE (0x1 << 18) // (MCI) Response CRC Error flag
  2425. #define AT91C_MCI_RENDE (0x1 << 19) // (MCI) Response End Bit Error flag
  2426. #define AT91C_MCI_RTOE (0x1 << 20) // (MCI) Response Time-out Error flag
  2427. #define AT91C_MCI_DCRCE (0x1 << 21) // (MCI) data CRC Error flag
  2428. #define AT91C_MCI_DTOE (0x1 << 22) // (MCI) Data timeout Error flag
  2429. #define AT91C_MCI_CSTOE (0x1 << 23) // (MCI) Completion Signal timeout Error flag
  2430. #define AT91C_MCI_BLKOVRE (0x1 << 24) // (MCI) DMA Block Overrun Error flag
  2431. #define AT91C_MCI_DMADONE (0x1 << 25) // (MCI) DMA Transfer Done flag
  2432. #define AT91C_MCI_FIFOEMPTY (0x1 << 26) // (MCI) FIFO Empty flag
  2433. #define AT91C_MCI_XFRDONE (0x1 << 27) // (MCI) Transfer Done flag
  2434. #define AT91C_MCI_OVRE (0x1 << 30) // (MCI) Overrun flag
  2435. #define AT91C_MCI_UNRE (0x1 << 31) // (MCI) Underrun flag
  2436. // -------- MCI_IER : (MCI Offset: 0x44) MCI Interrupt Enable Register --------
  2437. // -------- MCI_IDR : (MCI Offset: 0x48) MCI Interrupt Disable Register --------
  2438. // -------- MCI_IMR : (MCI Offset: 0x4c) MCI Interrupt Mask Register --------
  2439. // -------- MCI_DMA : (MCI Offset: 0x50) MCI DMA Configuration Register --------
  2440. #define AT91C_MCI_OFFSET (0x3 << 0) // (MCI) DMA Write Buffer Offset
  2441. #define AT91C_MCI_CHKSIZE (0x7 << 4) // (MCI) DMA Channel Read/Write Chunk Size
  2442. #define AT91C_MCI_CHKSIZE_1 (0x0 << 4) // (MCI) Number of data transferred is 1
  2443. #define AT91C_MCI_CHKSIZE_4 (0x1 << 4) // (MCI) Number of data transferred is 4
  2444. #define AT91C_MCI_CHKSIZE_8 (0x2 << 4) // (MCI) Number of data transferred is 8
  2445. #define AT91C_MCI_CHKSIZE_16 (0x3 << 4) // (MCI) Number of data transferred is 16
  2446. #define AT91C_MCI_CHKSIZE_32 (0x4 << 4) // (MCI) Number of data transferred is 32
  2447. #define AT91C_MCI_DMAEN (0x1 << 8) // (MCI) DMA Hardware Handshaking Enable
  2448. #define AT91C_MCI_DMAEN_DISABLE (0x0 << 8) // (MCI) DMA interface is disabled
  2449. #define AT91C_MCI_DMAEN_ENABLE (0x1 << 8) // (MCI) DMA interface is enabled
  2450. // -------- MCI_CFG : (MCI Offset: 0x54) MCI Configuration Register --------
  2451. #define AT91C_MCI_FIFOMODE (0x1 << 0) // (MCI) MCI Internal FIFO Control Mode
  2452. #define AT91C_MCI_FIFOMODE_AMOUNTDATA (0x0) // (MCI) A write transfer starts when a sufficient amount of datas is written into the FIFO
  2453. #define AT91C_MCI_FIFOMODE_ONEDATA (0x1) // (MCI) A write transfer starts as soon as one data is written into the FIFO
  2454. #define AT91C_MCI_FERRCTRL (0x1 << 4) // (MCI) Flow Error Flag Reset Control Mode
  2455. #define AT91C_MCI_FERRCTRL_RWCMD (0x0 << 4) // (MCI) When an underflow/overflow condition flag is set, a new Write/Read command is needed to reset the flag
  2456. #define AT91C_MCI_FERRCTRL_READSR (0x1 << 4) // (MCI) When an underflow/overflow condition flag is set, a read status resets the flag
  2457. #define AT91C_MCI_HSMODE (0x1 << 8) // (MCI) High Speed Mode
  2458. #define AT91C_MCI_HSMODE_DISABLE (0x0 << 8) // (MCI) Default Bus Timing Mode
  2459. #define AT91C_MCI_HSMODE_ENABLE (0x1 << 8) // (MCI) High Speed Mode
  2460. #define AT91C_MCI_LSYNC (0x1 << 12) // (MCI) Synchronize on last block
  2461. #define AT91C_MCI_LSYNC_CURRENT (0x0 << 12) // (MCI) Pending command sent at end of current data block
  2462. #define AT91C_MCI_LSYNC_INFINITE (0x1 << 12) // (MCI) Pending command sent at end of block transfer when transfer length is not infinite
  2463. // -------- MCI_WPCR : (MCI Offset: 0xe4) Write Protection Control Register --------
  2464. #define AT91C_MCI_WP_EN (0x1 << 0) // (MCI) Write Protection Enable
  2465. #define AT91C_MCI_WP_EN_DISABLE (0x0) // (MCI) Write Operation is disabled (if WP_KEY corresponds)
  2466. #define AT91C_MCI_WP_EN_ENABLE (0x1) // (MCI) Write Operation is enabled (if WP_KEY corresponds)
  2467. #define AT91C_MCI_WP_KEY (0xFFFFFF << 8) // (MCI) Write Protection Key
  2468. // -------- MCI_WPSR : (MCI Offset: 0xe8) Write Protection Status Register --------
  2469. #define AT91C_MCI_WP_VS (0xF << 0) // (MCI) Write Protection Violation Status
  2470. #define AT91C_MCI_WP_VS_NO_VIOLATION (0x0) // (MCI) No Write Protection Violation detected since last read
  2471. #define AT91C_MCI_WP_VS_ON_WRITE (0x1) // (MCI) Write Protection Violation detected since last read
  2472. #define AT91C_MCI_WP_VS_ON_RESET (0x2) // (MCI) Software Reset Violation detected since last read
  2473. #define AT91C_MCI_WP_VS_ON_BOTH (0x3) // (MCI) Write Protection and Software Reset Violation detected since last read
  2474. #define AT91C_MCI_WP_VSRC (0xF << 8) // (MCI) Write Protection Violation Source
  2475. #define AT91C_MCI_WP_VSRC_NO_VIOLATION (0x0 << 8) // (MCI) No Write Protection Violation detected since last read
  2476. #define AT91C_MCI_WP_VSRC_MCI_MR (0x1 << 8) // (MCI) Write Protection Violation detected on MCI_MR since last read
  2477. #define AT91C_MCI_WP_VSRC_MCI_DTOR (0x2 << 8) // (MCI) Write Protection Violation detected on MCI_DTOR since last read
  2478. #define AT91C_MCI_WP_VSRC_MCI_SDCR (0x3 << 8) // (MCI) Write Protection Violation detected on MCI_SDCR since last read
  2479. #define AT91C_MCI_WP_VSRC_MCI_CSTOR (0x4 << 8) // (MCI) Write Protection Violation detected on MCI_CSTOR since last read
  2480. #define AT91C_MCI_WP_VSRC_MCI_DMA (0x5 << 8) // (MCI) Write Protection Violation detected on MCI_DMA since last read
  2481. #define AT91C_MCI_WP_VSRC_MCI_CFG (0x6 << 8) // (MCI) Write Protection Violation detected on MCI_CFG since last read
  2482. #define AT91C_MCI_WP_VSRC_MCI_DEL (0x7 << 8) // (MCI) Write Protection Violation detected on MCI_DEL since last read
  2483. // -------- MCI_VER : (MCI Offset: 0xfc) VERSION Register --------
  2484. #define AT91C_MCI_VER (0xF << 0) // (MCI) VERSION Register
  2485. // *****************************************************************************
  2486. // SOFTWARE API DEFINITION FOR Two-wire Interface
  2487. // *****************************************************************************
  2488. #ifndef __ASSEMBLY__
  2489. typedef struct _AT91S_TWI {
  2490. AT91C_REG TWI_CR; // Control Register
  2491. AT91C_REG TWI_MMR; // Master Mode Register
  2492. AT91C_REG TWI_SMR; // Slave Mode Register
  2493. AT91C_REG TWI_IADR; // Internal Address Register
  2494. AT91C_REG TWI_CWGR; // Clock Waveform Generator Register
  2495. AT91C_REG Reserved0[3]; //
  2496. AT91C_REG TWI_SR; // Status Register
  2497. AT91C_REG TWI_IER; // Interrupt Enable Register
  2498. AT91C_REG TWI_IDR; // Interrupt Disable Register
  2499. AT91C_REG TWI_IMR; // Interrupt Mask Register
  2500. AT91C_REG TWI_RHR; // Receive Holding Register
  2501. AT91C_REG TWI_THR; // Transmit Holding Register
  2502. AT91C_REG Reserved1[45]; //
  2503. AT91C_REG TWI_ADDRSIZE; // TWI ADDRSIZE REGISTER
  2504. AT91C_REG TWI_IPNAME1; // TWI IPNAME1 REGISTER
  2505. AT91C_REG TWI_IPNAME2; // TWI IPNAME2 REGISTER
  2506. AT91C_REG TWI_FEATURES; // TWI FEATURES REGISTER
  2507. AT91C_REG TWI_VER; // Version Register
  2508. AT91C_REG TWI_RPR; // Receive Pointer Register
  2509. AT91C_REG TWI_RCR; // Receive Counter Register
  2510. AT91C_REG TWI_TPR; // Transmit Pointer Register
  2511. AT91C_REG TWI_TCR; // Transmit Counter Register
  2512. AT91C_REG TWI_RNPR; // Receive Next Pointer Register
  2513. AT91C_REG TWI_RNCR; // Receive Next Counter Register
  2514. AT91C_REG TWI_TNPR; // Transmit Next Pointer Register
  2515. AT91C_REG TWI_TNCR; // Transmit Next Counter Register
  2516. AT91C_REG TWI_PTCR; // PDC Transfer Control Register
  2517. AT91C_REG TWI_PTSR; // PDC Transfer Status Register
  2518. } AT91S_TWI, *AT91PS_TWI;
  2519. #else
  2520. #define TWI_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (TWI_CR) Control Register
  2521. #define TWI_MMR (AT91C_CAST(AT91C_REG *) 0x00000004) // (TWI_MMR) Master Mode Register
  2522. #define TWI_SMR (AT91C_CAST(AT91C_REG *) 0x00000008) // (TWI_SMR) Slave Mode Register
  2523. #define TWI_IADR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (TWI_IADR) Internal Address Register
  2524. #define TWI_CWGR (AT91C_CAST(AT91C_REG *) 0x00000010) // (TWI_CWGR) Clock Waveform Generator Register
  2525. #define TWI_SR (AT91C_CAST(AT91C_REG *) 0x00000020) // (TWI_SR) Status Register
  2526. #define TWI_IER (AT91C_CAST(AT91C_REG *) 0x00000024) // (TWI_IER) Interrupt Enable Register
  2527. #define TWI_IDR (AT91C_CAST(AT91C_REG *) 0x00000028) // (TWI_IDR) Interrupt Disable Register
  2528. #define TWI_IMR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (TWI_IMR) Interrupt Mask Register
  2529. #define TWI_RHR (AT91C_CAST(AT91C_REG *) 0x00000030) // (TWI_RHR) Receive Holding Register
  2530. #define TWI_THR (AT91C_CAST(AT91C_REG *) 0x00000034) // (TWI_THR) Transmit Holding Register
  2531. #define TWI_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (TWI_ADDRSIZE) TWI ADDRSIZE REGISTER
  2532. #define TWI_IPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (TWI_IPNAME1) TWI IPNAME1 REGISTER
  2533. #define TWI_IPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (TWI_IPNAME2) TWI IPNAME2 REGISTER
  2534. #define TWI_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (TWI_FEATURES) TWI FEATURES REGISTER
  2535. #define TWI_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (TWI_VER) Version Register
  2536. #endif
  2537. // -------- TWI_CR : (TWI Offset: 0x0) TWI Control Register --------
  2538. #define AT91C_TWI_START (0x1 << 0) // (TWI) Send a START Condition
  2539. #define AT91C_TWI_STOP (0x1 << 1) // (TWI) Send a STOP Condition
  2540. #define AT91C_TWI_MSEN (0x1 << 2) // (TWI) TWI Master Transfer Enabled
  2541. #define AT91C_TWI_MSDIS (0x1 << 3) // (TWI) TWI Master Transfer Disabled
  2542. #define AT91C_TWI_SVEN (0x1 << 4) // (TWI) TWI Slave mode Enabled
  2543. #define AT91C_TWI_SVDIS (0x1 << 5) // (TWI) TWI Slave mode Disabled
  2544. #define AT91C_TWI_SWRST (0x1 << 7) // (TWI) Software Reset
  2545. // -------- TWI_MMR : (TWI Offset: 0x4) TWI Master Mode Register --------
  2546. #define AT91C_TWI_IADRSZ (0x3 << 8) // (TWI) Internal Device Address Size
  2547. #define AT91C_TWI_IADRSZ_NO (0x0 << 8) // (TWI) No internal device address
  2548. #define AT91C_TWI_IADRSZ_1_BYTE (0x1 << 8) // (TWI) One-byte internal device address
  2549. #define AT91C_TWI_IADRSZ_2_BYTE (0x2 << 8) // (TWI) Two-byte internalcf device address
  2550. #define AT91C_TWI_IADRSZ_3_BYTE (0x3 << 8) // (TWI) Three-byte internal device address
  2551. #define AT91C_TWI_MREAD (0x1 << 12) // (TWI) Master Read Direction
  2552. #define AT91C_TWI_DADR (0x7F << 16) // (TWI) Device Address
  2553. // -------- TWI_SMR : (TWI Offset: 0x8) TWI Slave Mode Register --------
  2554. #define AT91C_TWI_SADR (0x7F << 16) // (TWI) Slave Address
  2555. // -------- TWI_CWGR : (TWI Offset: 0x10) TWI Clock Waveform Generator Register --------
  2556. #define AT91C_TWI_CLDIV (0xFF << 0) // (TWI) Clock Low Divider
  2557. #define AT91C_TWI_CHDIV (0xFF << 8) // (TWI) Clock High Divider
  2558. #define AT91C_TWI_CKDIV (0x7 << 16) // (TWI) Clock Divider
  2559. // -------- TWI_SR : (TWI Offset: 0x20) TWI Status Register --------
  2560. #define AT91C_TWI_TXCOMP_SLAVE (0x1 << 0) // (TWI) Transmission Completed
  2561. #define AT91C_TWI_TXCOMP_MASTER (0x1 << 0) // (TWI) Transmission Completed
  2562. #define AT91C_TWI_RXRDY (0x1 << 1) // (TWI) Receive holding register ReaDY
  2563. #define AT91C_TWI_TXRDY_MASTER (0x1 << 2) // (TWI) Transmit holding register ReaDY
  2564. #define AT91C_TWI_TXRDY_SLAVE (0x1 << 2) // (TWI) Transmit holding register ReaDY
  2565. #define AT91C_TWI_SVREAD (0x1 << 3) // (TWI) Slave READ (used only in Slave mode)
  2566. #define AT91C_TWI_SVACC (0x1 << 4) // (TWI) Slave ACCess (used only in Slave mode)
  2567. #define AT91C_TWI_GACC (0x1 << 5) // (TWI) General Call ACcess (used only in Slave mode)
  2568. #define AT91C_TWI_OVRE (0x1 << 6) // (TWI) Overrun Error (used only in Master and Multi-master mode)
  2569. #define AT91C_TWI_NACK_SLAVE (0x1 << 8) // (TWI) Not Acknowledged
  2570. #define AT91C_TWI_NACK_MASTER (0x1 << 8) // (TWI) Not Acknowledged
  2571. #define AT91C_TWI_ARBLST_MULTI_MASTER (0x1 << 9) // (TWI) Arbitration Lost (used only in Multimaster mode)
  2572. #define AT91C_TWI_SCLWS (0x1 << 10) // (TWI) Clock Wait State (used only in Slave mode)
  2573. #define AT91C_TWI_EOSACC (0x1 << 11) // (TWI) End Of Slave ACCess (used only in Slave mode)
  2574. #define AT91C_TWI_ENDRX (0x1 << 12) // (TWI) End of Receiver Transfer
  2575. #define AT91C_TWI_ENDTX (0x1 << 13) // (TWI) End of Receiver Transfer
  2576. #define AT91C_TWI_RXBUFF (0x1 << 14) // (TWI) RXBUFF Interrupt
  2577. #define AT91C_TWI_TXBUFE (0x1 << 15) // (TWI) TXBUFE Interrupt
  2578. // -------- TWI_IER : (TWI Offset: 0x24) TWI Interrupt Enable Register --------
  2579. // -------- TWI_IDR : (TWI Offset: 0x28) TWI Interrupt Disable Register --------
  2580. // -------- TWI_IMR : (TWI Offset: 0x2c) TWI Interrupt Mask Register --------
  2581. // *****************************************************************************
  2582. // SOFTWARE API DEFINITION FOR Usart
  2583. // *****************************************************************************
  2584. #ifndef __ASSEMBLY__
  2585. typedef struct _AT91S_USART {
  2586. AT91C_REG US_CR; // Control Register
  2587. AT91C_REG US_MR; // Mode Register
  2588. AT91C_REG US_IER; // Interrupt Enable Register
  2589. AT91C_REG US_IDR; // Interrupt Disable Register
  2590. AT91C_REG US_IMR; // Interrupt Mask Register
  2591. AT91C_REG US_CSR; // Channel Status Register
  2592. AT91C_REG US_RHR; // Receiver Holding Register
  2593. AT91C_REG US_THR; // Transmitter Holding Register
  2594. AT91C_REG US_BRGR; // Baud Rate Generator Register
  2595. AT91C_REG US_RTOR; // Receiver Time-out Register
  2596. AT91C_REG US_TTGR; // Transmitter Time-guard Register
  2597. AT91C_REG Reserved0[5]; //
  2598. AT91C_REG US_FIDI; // FI_DI_Ratio Register
  2599. AT91C_REG US_NER; // Nb Errors Register
  2600. AT91C_REG Reserved1[1]; //
  2601. AT91C_REG US_IF; // IRDA_FILTER Register
  2602. AT91C_REG US_MAN; // Manchester Encoder Decoder Register
  2603. AT91C_REG Reserved2[38]; //
  2604. AT91C_REG US_ADDRSIZE; // US ADDRSIZE REGISTER
  2605. AT91C_REG US_IPNAME1; // US IPNAME1 REGISTER
  2606. AT91C_REG US_IPNAME2; // US IPNAME2 REGISTER
  2607. AT91C_REG US_FEATURES; // US FEATURES REGISTER
  2608. AT91C_REG US_VER; // VERSION Register
  2609. AT91C_REG US_RPR; // Receive Pointer Register
  2610. AT91C_REG US_RCR; // Receive Counter Register
  2611. AT91C_REG US_TPR; // Transmit Pointer Register
  2612. AT91C_REG US_TCR; // Transmit Counter Register
  2613. AT91C_REG US_RNPR; // Receive Next Pointer Register
  2614. AT91C_REG US_RNCR; // Receive Next Counter Register
  2615. AT91C_REG US_TNPR; // Transmit Next Pointer Register
  2616. AT91C_REG US_TNCR; // Transmit Next Counter Register
  2617. AT91C_REG US_PTCR; // PDC Transfer Control Register
  2618. AT91C_REG US_PTSR; // PDC Transfer Status Register
  2619. } AT91S_USART, *AT91PS_USART;
  2620. #else
  2621. #define US_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (US_CR) Control Register
  2622. #define US_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (US_MR) Mode Register
  2623. #define US_IER (AT91C_CAST(AT91C_REG *) 0x00000008) // (US_IER) Interrupt Enable Register
  2624. #define US_IDR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (US_IDR) Interrupt Disable Register
  2625. #define US_IMR (AT91C_CAST(AT91C_REG *) 0x00000010) // (US_IMR) Interrupt Mask Register
  2626. #define US_CSR (AT91C_CAST(AT91C_REG *) 0x00000014) // (US_CSR) Channel Status Register
  2627. #define US_RHR (AT91C_CAST(AT91C_REG *) 0x00000018) // (US_RHR) Receiver Holding Register
  2628. #define US_THR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (US_THR) Transmitter Holding Register
  2629. #define US_BRGR (AT91C_CAST(AT91C_REG *) 0x00000020) // (US_BRGR) Baud Rate Generator Register
  2630. #define US_RTOR (AT91C_CAST(AT91C_REG *) 0x00000024) // (US_RTOR) Receiver Time-out Register
  2631. #define US_TTGR (AT91C_CAST(AT91C_REG *) 0x00000028) // (US_TTGR) Transmitter Time-guard Register
  2632. #define US_FIDI (AT91C_CAST(AT91C_REG *) 0x00000040) // (US_FIDI) FI_DI_Ratio Register
  2633. #define US_NER (AT91C_CAST(AT91C_REG *) 0x00000044) // (US_NER) Nb Errors Register
  2634. #define US_IF (AT91C_CAST(AT91C_REG *) 0x0000004C) // (US_IF) IRDA_FILTER Register
  2635. #define US_MAN (AT91C_CAST(AT91C_REG *) 0x00000050) // (US_MAN) Manchester Encoder Decoder Register
  2636. #define US_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (US_ADDRSIZE) US ADDRSIZE REGISTER
  2637. #define US_IPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (US_IPNAME1) US IPNAME1 REGISTER
  2638. #define US_IPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (US_IPNAME2) US IPNAME2 REGISTER
  2639. #define US_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (US_FEATURES) US FEATURES REGISTER
  2640. #define US_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (US_VER) VERSION Register
  2641. #endif
  2642. // -------- US_CR : (USART Offset: 0x0) Control Register --------
  2643. #define AT91C_US_STTBRK (0x1 << 9) // (USART) Start Break
  2644. #define AT91C_US_STPBRK (0x1 << 10) // (USART) Stop Break
  2645. #define AT91C_US_STTTO (0x1 << 11) // (USART) Start Time-out
  2646. #define AT91C_US_SENDA (0x1 << 12) // (USART) Send Address
  2647. #define AT91C_US_RSTIT (0x1 << 13) // (USART) Reset Iterations
  2648. #define AT91C_US_RSTNACK (0x1 << 14) // (USART) Reset Non Acknowledge
  2649. #define AT91C_US_RETTO (0x1 << 15) // (USART) Rearm Time-out
  2650. #define AT91C_US_DTREN (0x1 << 16) // (USART) Data Terminal ready Enable
  2651. #define AT91C_US_DTRDIS (0x1 << 17) // (USART) Data Terminal ready Disable
  2652. #define AT91C_US_RTSEN (0x1 << 18) // (USART) Request to Send enable
  2653. #define AT91C_US_RTSDIS (0x1 << 19) // (USART) Request to Send Disable
  2654. // -------- US_MR : (USART Offset: 0x4) Mode Register --------
  2655. #define AT91C_US_USMODE (0xF << 0) // (USART) Usart mode
  2656. #define AT91C_US_USMODE_NORMAL (0x0) // (USART) Normal
  2657. #define AT91C_US_USMODE_RS485 (0x1) // (USART) RS485
  2658. #define AT91C_US_USMODE_HWHSH (0x2) // (USART) Hardware Handshaking
  2659. #define AT91C_US_USMODE_MODEM (0x3) // (USART) Modem
  2660. #define AT91C_US_USMODE_ISO7816_0 (0x4) // (USART) ISO7816 protocol: T = 0
  2661. #define AT91C_US_USMODE_ISO7816_1 (0x6) // (USART) ISO7816 protocol: T = 1
  2662. #define AT91C_US_USMODE_IRDA (0x8) // (USART) IrDA
  2663. #define AT91C_US_USMODE_SWHSH (0xC) // (USART) Software Handshaking
  2664. #define AT91C_US_CLKS (0x3 << 4) // (USART) Clock Selection (Baud Rate generator Input Clock
  2665. #define AT91C_US_CLKS_CLOCK (0x0 << 4) // (USART) Clock, MCK
  2666. #define AT91C_US_CLKS_FDIV1 (0x1 << 4) // (USART) fdiv1, MCK/DIV (DIV=8)
  2667. #define AT91C_US_CLKS_SLOW (0x2 << 4) // (USART) slow_clock (ARM)
  2668. #define AT91C_US_CLKS_EXT (0x3 << 4) // (USART) External (SCK)
  2669. #define AT91C_US_CHRL (0x3 << 6) // (USART) Clock Selection (Baud Rate generator Input Clock
  2670. #define AT91C_US_CHRL_5_BITS (0x0 << 6) // (USART) Character Length: 5 bits
  2671. #define AT91C_US_CHRL_6_BITS (0x1 << 6) // (USART) Character Length: 6 bits
  2672. #define AT91C_US_CHRL_7_BITS (0x2 << 6) // (USART) Character Length: 7 bits
  2673. #define AT91C_US_CHRL_8_BITS (0x3 << 6) // (USART) Character Length: 8 bits
  2674. #define AT91C_US_SYNC (0x1 << 8) // (USART) Synchronous Mode Select
  2675. #define AT91C_US_NBSTOP (0x3 << 12) // (USART) Number of Stop bits
  2676. #define AT91C_US_NBSTOP_1_BIT (0x0 << 12) // (USART) 1 stop bit
  2677. #define AT91C_US_NBSTOP_15_BIT (0x1 << 12) // (USART) Asynchronous (SYNC=0) 2 stop bits Synchronous (SYNC=1) 2 stop bits
  2678. #define AT91C_US_NBSTOP_2_BIT (0x2 << 12) // (USART) 2 stop bits
  2679. #define AT91C_US_MSBF (0x1 << 16) // (USART) Bit Order
  2680. #define AT91C_US_MODE9 (0x1 << 17) // (USART) 9-bit Character length
  2681. #define AT91C_US_CKLO (0x1 << 18) // (USART) Clock Output Select
  2682. #define AT91C_US_OVER (0x1 << 19) // (USART) Over Sampling Mode
  2683. #define AT91C_US_INACK (0x1 << 20) // (USART) Inhibit Non Acknowledge
  2684. #define AT91C_US_DSNACK (0x1 << 21) // (USART) Disable Successive NACK
  2685. #define AT91C_US_VAR_SYNC (0x1 << 22) // (USART) Variable synchronization of command/data sync Start Frame Delimiter
  2686. #define AT91C_US_MAX_ITER (0x1 << 24) // (USART) Number of Repetitions
  2687. #define AT91C_US_FILTER (0x1 << 28) // (USART) Receive Line Filter
  2688. #define AT91C_US_MANMODE (0x1 << 29) // (USART) Manchester Encoder/Decoder Enable
  2689. #define AT91C_US_MODSYNC (0x1 << 30) // (USART) Manchester Synchronization mode
  2690. #define AT91C_US_ONEBIT (0x1 << 31) // (USART) Start Frame Delimiter selector
  2691. // -------- US_IER : (USART Offset: 0x8) Interrupt Enable Register --------
  2692. #define AT91C_US_RXBRK (0x1 << 2) // (USART) Break Received/End of Break
  2693. #define AT91C_US_TIMEOUT (0x1 << 8) // (USART) Receiver Time-out
  2694. #define AT91C_US_ITERATION (0x1 << 10) // (USART) Max number of Repetitions Reached
  2695. #define AT91C_US_NACK (0x1 << 13) // (USART) Non Acknowledge
  2696. #define AT91C_US_RIIC (0x1 << 16) // (USART) Ring INdicator Input Change Flag
  2697. #define AT91C_US_DSRIC (0x1 << 17) // (USART) Data Set Ready Input Change Flag
  2698. #define AT91C_US_DCDIC (0x1 << 18) // (USART) Data Carrier Flag
  2699. #define AT91C_US_CTSIC (0x1 << 19) // (USART) Clear To Send Input Change Flag
  2700. #define AT91C_US_MANE (0x1 << 20) // (USART) Manchester Error Interrupt
  2701. // -------- US_IDR : (USART Offset: 0xc) Interrupt Disable Register --------
  2702. // -------- US_IMR : (USART Offset: 0x10) Interrupt Mask Register --------
  2703. // -------- US_CSR : (USART Offset: 0x14) Channel Status Register --------
  2704. #define AT91C_US_RI (0x1 << 20) // (USART) Image of RI Input
  2705. #define AT91C_US_DSR (0x1 << 21) // (USART) Image of DSR Input
  2706. #define AT91C_US_DCD (0x1 << 22) // (USART) Image of DCD Input
  2707. #define AT91C_US_CTS (0x1 << 23) // (USART) Image of CTS Input
  2708. #define AT91C_US_MANERR (0x1 << 24) // (USART) Manchester Error
  2709. // -------- US_MAN : (USART Offset: 0x50) Manchester Encoder Decoder Register --------
  2710. #define AT91C_US_TX_PL (0xF << 0) // (USART) Transmitter Preamble Length
  2711. #define AT91C_US_TX_PP (0x3 << 8) // (USART) Transmitter Preamble Pattern
  2712. #define AT91C_US_TX_PP_ALL_ONE (0x0 << 8) // (USART) ALL_ONE
  2713. #define AT91C_US_TX_PP_ALL_ZERO (0x1 << 8) // (USART) ALL_ZERO
  2714. #define AT91C_US_TX_PP_ZERO_ONE (0x2 << 8) // (USART) ZERO_ONE
  2715. #define AT91C_US_TX_PP_ONE_ZERO (0x3 << 8) // (USART) ONE_ZERO
  2716. #define AT91C_US_TX_MPOL (0x1 << 12) // (USART) Transmitter Manchester Polarity
  2717. #define AT91C_US_RX_PL (0xF << 16) // (USART) Receiver Preamble Length
  2718. #define AT91C_US_RX_PP (0x3 << 24) // (USART) Receiver Preamble Pattern detected
  2719. #define AT91C_US_RX_PP_ALL_ONE (0x0 << 24) // (USART) ALL_ONE
  2720. #define AT91C_US_RX_PP_ALL_ZERO (0x1 << 24) // (USART) ALL_ZERO
  2721. #define AT91C_US_RX_PP_ZERO_ONE (0x2 << 24) // (USART) ZERO_ONE
  2722. #define AT91C_US_RX_PP_ONE_ZERO (0x3 << 24) // (USART) ONE_ZERO
  2723. #define AT91C_US_RX_MPOL (0x1 << 28) // (USART) Receiver Manchester Polarity
  2724. #define AT91C_US_DRIFT (0x1 << 30) // (USART) Drift compensation
  2725. // *****************************************************************************
  2726. // SOFTWARE API DEFINITION FOR Synchronous Serial Controller Interface
  2727. // *****************************************************************************
  2728. #ifndef __ASSEMBLY__
  2729. typedef struct _AT91S_SSC {
  2730. AT91C_REG SSC_CR; // Control Register
  2731. AT91C_REG SSC_CMR; // Clock Mode Register
  2732. AT91C_REG Reserved0[2]; //
  2733. AT91C_REG SSC_RCMR; // Receive Clock ModeRegister
  2734. AT91C_REG SSC_RFMR; // Receive Frame Mode Register
  2735. AT91C_REG SSC_TCMR; // Transmit Clock Mode Register
  2736. AT91C_REG SSC_TFMR; // Transmit Frame Mode Register
  2737. AT91C_REG SSC_RHR; // Receive Holding Register
  2738. AT91C_REG SSC_THR; // Transmit Holding Register
  2739. AT91C_REG Reserved1[2]; //
  2740. AT91C_REG SSC_RSHR; // Receive Sync Holding Register
  2741. AT91C_REG SSC_TSHR; // Transmit Sync Holding Register
  2742. AT91C_REG Reserved2[2]; //
  2743. AT91C_REG SSC_SR; // Status Register
  2744. AT91C_REG SSC_IER; // Interrupt Enable Register
  2745. AT91C_REG SSC_IDR; // Interrupt Disable Register
  2746. AT91C_REG SSC_IMR; // Interrupt Mask Register
  2747. AT91C_REG Reserved3[39]; //
  2748. AT91C_REG SSC_ADDRSIZE; // SSC ADDRSIZE REGISTER
  2749. AT91C_REG SSC_IPNAME1; // SSC IPNAME1 REGISTER
  2750. AT91C_REG SSC_IPNAME2; // SSC IPNAME2 REGISTER
  2751. AT91C_REG SSC_FEATURES; // SSC FEATURES REGISTER
  2752. AT91C_REG SSC_VER; // Version Register
  2753. AT91C_REG SSC_RPR; // Receive Pointer Register
  2754. AT91C_REG SSC_RCR; // Receive Counter Register
  2755. AT91C_REG SSC_TPR; // Transmit Pointer Register
  2756. AT91C_REG SSC_TCR; // Transmit Counter Register
  2757. AT91C_REG SSC_RNPR; // Receive Next Pointer Register
  2758. AT91C_REG SSC_RNCR; // Receive Next Counter Register
  2759. AT91C_REG SSC_TNPR; // Transmit Next Pointer Register
  2760. AT91C_REG SSC_TNCR; // Transmit Next Counter Register
  2761. AT91C_REG SSC_PTCR; // PDC Transfer Control Register
  2762. AT91C_REG SSC_PTSR; // PDC Transfer Status Register
  2763. } AT91S_SSC, *AT91PS_SSC;
  2764. #else
  2765. #define SSC_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (SSC_CR) Control Register
  2766. #define SSC_CMR (AT91C_CAST(AT91C_REG *) 0x00000004) // (SSC_CMR) Clock Mode Register
  2767. #define SSC_RCMR (AT91C_CAST(AT91C_REG *) 0x00000010) // (SSC_RCMR) Receive Clock ModeRegister
  2768. #define SSC_RFMR (AT91C_CAST(AT91C_REG *) 0x00000014) // (SSC_RFMR) Receive Frame Mode Register
  2769. #define SSC_TCMR (AT91C_CAST(AT91C_REG *) 0x00000018) // (SSC_TCMR) Transmit Clock Mode Register
  2770. #define SSC_TFMR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (SSC_TFMR) Transmit Frame Mode Register
  2771. #define SSC_RHR (AT91C_CAST(AT91C_REG *) 0x00000020) // (SSC_RHR) Receive Holding Register
  2772. #define SSC_THR (AT91C_CAST(AT91C_REG *) 0x00000024) // (SSC_THR) Transmit Holding Register
  2773. #define SSC_RSHR (AT91C_CAST(AT91C_REG *) 0x00000030) // (SSC_RSHR) Receive Sync Holding Register
  2774. #define SSC_TSHR (AT91C_CAST(AT91C_REG *) 0x00000034) // (SSC_TSHR) Transmit Sync Holding Register
  2775. #define SSC_SR (AT91C_CAST(AT91C_REG *) 0x00000040) // (SSC_SR) Status Register
  2776. #define SSC_IER (AT91C_CAST(AT91C_REG *) 0x00000044) // (SSC_IER) Interrupt Enable Register
  2777. #define SSC_IDR (AT91C_CAST(AT91C_REG *) 0x00000048) // (SSC_IDR) Interrupt Disable Register
  2778. #define SSC_IMR (AT91C_CAST(AT91C_REG *) 0x0000004C) // (SSC_IMR) Interrupt Mask Register
  2779. #define SSC_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (SSC_ADDRSIZE) SSC ADDRSIZE REGISTER
  2780. #define SSC_IPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (SSC_IPNAME1) SSC IPNAME1 REGISTER
  2781. #define SSC_IPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (SSC_IPNAME2) SSC IPNAME2 REGISTER
  2782. #define SSC_FEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (SSC_FEATURES) SSC FEATURES REGISTER
  2783. #define SSC_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (SSC_VER) Version Register
  2784. #endif
  2785. // -------- SSC_CR : (SSC Offset: 0x0) SSC Control Register --------
  2786. #define AT91C_SSC_RXEN (0x1 << 0) // (SSC) Receive Enable
  2787. #define AT91C_SSC_RXDIS (0x1 << 1) // (SSC) Receive Disable
  2788. #define AT91C_SSC_TXEN (0x1 << 8) // (SSC) Transmit Enable
  2789. #define AT91C_SSC_TXDIS (0x1 << 9) // (SSC) Transmit Disable
  2790. #define AT91C_SSC_SWRST (0x1 << 15) // (SSC) Software Reset
  2791. // -------- SSC_RCMR : (SSC Offset: 0x10) SSC Receive Clock Mode Register --------
  2792. #define AT91C_SSC_CKS (0x3 << 0) // (SSC) Receive/Transmit Clock Selection
  2793. #define AT91C_SSC_CKS_DIV (0x0) // (SSC) Divided Clock
  2794. #define AT91C_SSC_CKS_TK (0x1) // (SSC) TK Clock signal
  2795. #define AT91C_SSC_CKS_RK (0x2) // (SSC) RK pin
  2796. #define AT91C_SSC_CKO (0x7 << 2) // (SSC) Receive/Transmit Clock Output Mode Selection
  2797. #define AT91C_SSC_CKO_NONE (0x0 << 2) // (SSC) Receive/Transmit Clock Output Mode: None RK pin: Input-only
  2798. #define AT91C_SSC_CKO_CONTINOUS (0x1 << 2) // (SSC) Continuous Receive/Transmit Clock RK pin: Output
  2799. #define AT91C_SSC_CKO_DATA_TX (0x2 << 2) // (SSC) Receive/Transmit Clock only during data transfers RK pin: Output
  2800. #define AT91C_SSC_CKI (0x1 << 5) // (SSC) Receive/Transmit Clock Inversion
  2801. #define AT91C_SSC_CKG (0x3 << 6) // (SSC) Receive/Transmit Clock Gating Selection
  2802. #define AT91C_SSC_CKG_NONE (0x0 << 6) // (SSC) Receive/Transmit Clock Gating: None, continuous clock
  2803. #define AT91C_SSC_CKG_LOW (0x1 << 6) // (SSC) Receive/Transmit Clock enabled only if RF Low
  2804. #define AT91C_SSC_CKG_HIGH (0x2 << 6) // (SSC) Receive/Transmit Clock enabled only if RF High
  2805. #define AT91C_SSC_START (0xF << 8) // (SSC) Receive/Transmit Start Selection
  2806. #define AT91C_SSC_START_CONTINOUS (0x0 << 8) // (SSC) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data.
  2807. #define AT91C_SSC_START_TX (0x1 << 8) // (SSC) Transmit/Receive start
  2808. #define AT91C_SSC_START_LOW_RF (0x2 << 8) // (SSC) Detection of a low level on RF input
  2809. #define AT91C_SSC_START_HIGH_RF (0x3 << 8) // (SSC) Detection of a high level on RF input
  2810. #define AT91C_SSC_START_FALL_RF (0x4 << 8) // (SSC) Detection of a falling edge on RF input
  2811. #define AT91C_SSC_START_RISE_RF (0x5 << 8) // (SSC) Detection of a rising edge on RF input
  2812. #define AT91C_SSC_START_LEVEL_RF (0x6 << 8) // (SSC) Detection of any level change on RF input
  2813. #define AT91C_SSC_START_EDGE_RF (0x7 << 8) // (SSC) Detection of any edge on RF input
  2814. #define AT91C_SSC_START_0 (0x8 << 8) // (SSC) Compare 0
  2815. #define AT91C_SSC_STOP (0x1 << 12) // (SSC) Receive Stop Selection
  2816. #define AT91C_SSC_STTDLY (0xFF << 16) // (SSC) Receive/Transmit Start Delay
  2817. #define AT91C_SSC_PERIOD (0xFF << 24) // (SSC) Receive/Transmit Period Divider Selection
  2818. // -------- SSC_RFMR : (SSC Offset: 0x14) SSC Receive Frame Mode Register --------
  2819. #define AT91C_SSC_DATLEN (0x1F << 0) // (SSC) Data Length
  2820. #define AT91C_SSC_LOOP (0x1 << 5) // (SSC) Loop Mode
  2821. #define AT91C_SSC_MSBF (0x1 << 7) // (SSC) Most Significant Bit First
  2822. #define AT91C_SSC_DATNB (0xF << 8) // (SSC) Data Number per Frame
  2823. #define AT91C_SSC_FSLEN (0xF << 16) // (SSC) Receive/Transmit Frame Sync length
  2824. #define AT91C_SSC_FSOS (0x7 << 20) // (SSC) Receive/Transmit Frame Sync Output Selection
  2825. #define AT91C_SSC_FSOS_NONE (0x0 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: None RK pin Input-only
  2826. #define AT91C_SSC_FSOS_NEGATIVE (0x1 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Negative Pulse
  2827. #define AT91C_SSC_FSOS_POSITIVE (0x2 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Positive Pulse
  2828. #define AT91C_SSC_FSOS_LOW (0x3 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Driver Low during data transfer
  2829. #define AT91C_SSC_FSOS_HIGH (0x4 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Driver High during data transfer
  2830. #define AT91C_SSC_FSOS_TOGGLE (0x5 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Toggling at each start of data transfer
  2831. #define AT91C_SSC_FSEDGE (0x1 << 24) // (SSC) Frame Sync Edge Detection
  2832. // -------- SSC_TCMR : (SSC Offset: 0x18) SSC Transmit Clock Mode Register --------
  2833. // -------- SSC_TFMR : (SSC Offset: 0x1c) SSC Transmit Frame Mode Register --------
  2834. #define AT91C_SSC_DATDEF (0x1 << 5) // (SSC) Data Default Value
  2835. #define AT91C_SSC_FSDEN (0x1 << 23) // (SSC) Frame Sync Data Enable
  2836. // -------- SSC_SR : (SSC Offset: 0x40) SSC Status Register --------
  2837. #define AT91C_SSC_TXRDY (0x1 << 0) // (SSC) Transmit Ready
  2838. #define AT91C_SSC_TXEMPTY (0x1 << 1) // (SSC) Transmit Empty
  2839. #define AT91C_SSC_ENDTX (0x1 << 2) // (SSC) End Of Transmission
  2840. #define AT91C_SSC_TXBUFE (0x1 << 3) // (SSC) Transmit Buffer Empty
  2841. #define AT91C_SSC_RXRDY (0x1 << 4) // (SSC) Receive Ready
  2842. #define AT91C_SSC_OVRUN (0x1 << 5) // (SSC) Receive Overrun
  2843. #define AT91C_SSC_ENDRX (0x1 << 6) // (SSC) End of Reception
  2844. #define AT91C_SSC_RXBUFF (0x1 << 7) // (SSC) Receive Buffer Full
  2845. #define AT91C_SSC_CP0 (0x1 << 8) // (SSC) Compare 0
  2846. #define AT91C_SSC_CP1 (0x1 << 9) // (SSC) Compare 1
  2847. #define AT91C_SSC_TXSYN (0x1 << 10) // (SSC) Transmit Sync
  2848. #define AT91C_SSC_RXSYN (0x1 << 11) // (SSC) Receive Sync
  2849. #define AT91C_SSC_TXENA (0x1 << 16) // (SSC) Transmit Enable
  2850. #define AT91C_SSC_RXENA (0x1 << 17) // (SSC) Receive Enable
  2851. // -------- SSC_IER : (SSC Offset: 0x44) SSC Interrupt Enable Register --------
  2852. // -------- SSC_IDR : (SSC Offset: 0x48) SSC Interrupt Disable Register --------
  2853. // -------- SSC_IMR : (SSC Offset: 0x4c) SSC Interrupt Mask Register --------
  2854. // *****************************************************************************
  2855. // SOFTWARE API DEFINITION FOR PWMC Channel Interface
  2856. // *****************************************************************************
  2857. #ifndef __ASSEMBLY__
  2858. typedef struct _AT91S_PWMC_CH {
  2859. AT91C_REG PWMC_CMR; // Channel Mode Register
  2860. AT91C_REG PWMC_CDTYR; // Channel Duty Cycle Register
  2861. AT91C_REG PWMC_CPRDR; // Channel Period Register
  2862. AT91C_REG PWMC_CCNTR; // Channel Counter Register
  2863. AT91C_REG PWMC_CUPDR; // Channel Update Register
  2864. AT91C_REG PWMC_Reserved[3]; // Reserved
  2865. } AT91S_PWMC_CH, *AT91PS_PWMC_CH;
  2866. #else
  2867. #define PWMC_CMR (AT91C_CAST(AT91C_REG *) 0x00000000) // (PWMC_CMR) Channel Mode Register
  2868. #define PWMC_CDTYR (AT91C_CAST(AT91C_REG *) 0x00000004) // (PWMC_CDTYR) Channel Duty Cycle Register
  2869. #define PWMC_CPRDR (AT91C_CAST(AT91C_REG *) 0x00000008) // (PWMC_CPRDR) Channel Period Register
  2870. #define PWMC_CCNTR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (PWMC_CCNTR) Channel Counter Register
  2871. #define PWMC_CUPDR (AT91C_CAST(AT91C_REG *) 0x00000010) // (PWMC_CUPDR) Channel Update Register
  2872. #define Reserved (AT91C_CAST(AT91C_REG *) 0x00000014) // (Reserved) Reserved
  2873. #endif
  2874. // -------- PWMC_CMR : (PWMC_CH Offset: 0x0) PWMC Channel Mode Register --------
  2875. #define AT91C_PWMC_CPRE (0xF << 0) // (PWMC_CH) Channel Pre-scaler : PWMC_CLKx
  2876. #define AT91C_PWMC_CPRE_MCK (0x0) // (PWMC_CH)
  2877. #define AT91C_PWMC_CPRE_MCKA (0xB) // (PWMC_CH)
  2878. #define AT91C_PWMC_CPRE_MCKB (0xC) // (PWMC_CH)
  2879. #define AT91C_PWMC_CALG (0x1 << 8) // (PWMC_CH) Channel Alignment
  2880. #define AT91C_PWMC_CPOL (0x1 << 9) // (PWMC_CH) Channel Polarity
  2881. #define AT91C_PWMC_CPD (0x1 << 10) // (PWMC_CH) Channel Update Period
  2882. // -------- PWMC_CDTYR : (PWMC_CH Offset: 0x4) PWMC Channel Duty Cycle Register --------
  2883. #define AT91C_PWMC_CDTY (0x0 << 0) // (PWMC_CH) Channel Duty Cycle
  2884. // -------- PWMC_CPRDR : (PWMC_CH Offset: 0x8) PWMC Channel Period Register --------
  2885. #define AT91C_PWMC_CPRD (0x0 << 0) // (PWMC_CH) Channel Period
  2886. // -------- PWMC_CCNTR : (PWMC_CH Offset: 0xc) PWMC Channel Counter Register --------
  2887. #define AT91C_PWMC_CCNT (0x0 << 0) // (PWMC_CH) Channel Counter
  2888. // -------- PWMC_CUPDR : (PWMC_CH Offset: 0x10) PWMC Channel Update Register --------
  2889. #define AT91C_PWMC_CUPD (0x0 << 0) // (PWMC_CH) Channel Update
  2890. // *****************************************************************************
  2891. // SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller Interface
  2892. // *****************************************************************************
  2893. #ifndef __ASSEMBLY__
  2894. typedef struct _AT91S_PWMC {
  2895. AT91C_REG PWMC_MR; // PWMC Mode Register
  2896. AT91C_REG PWMC_ENA; // PWMC Enable Register
  2897. AT91C_REG PWMC_DIS; // PWMC Disable Register
  2898. AT91C_REG PWMC_SR; // PWMC Status Register
  2899. AT91C_REG PWMC_IER; // PWMC Interrupt Enable Register
  2900. AT91C_REG PWMC_IDR; // PWMC Interrupt Disable Register
  2901. AT91C_REG PWMC_IMR; // PWMC Interrupt Mask Register
  2902. AT91C_REG PWMC_ISR; // PWMC Interrupt Status Register
  2903. AT91C_REG Reserved0[55]; //
  2904. AT91C_REG PWMC_VR; // PWMC Version Register
  2905. AT91C_REG Reserved1[64]; //
  2906. AT91S_PWMC_CH PWMC_CH[32]; // PWMC Channel
  2907. } AT91S_PWMC, *AT91PS_PWMC;
  2908. #else
  2909. #define PWMC_MR (AT91C_CAST(AT91C_REG *) 0x00000000) // (PWMC_MR) PWMC Mode Register
  2910. #define PWMC_ENA (AT91C_CAST(AT91C_REG *) 0x00000004) // (PWMC_ENA) PWMC Enable Register
  2911. #define PWMC_DIS (AT91C_CAST(AT91C_REG *) 0x00000008) // (PWMC_DIS) PWMC Disable Register
  2912. #define PWMC_SR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (PWMC_SR) PWMC Status Register
  2913. #define PWMC_IER (AT91C_CAST(AT91C_REG *) 0x00000010) // (PWMC_IER) PWMC Interrupt Enable Register
  2914. #define PWMC_IDR (AT91C_CAST(AT91C_REG *) 0x00000014) // (PWMC_IDR) PWMC Interrupt Disable Register
  2915. #define PWMC_IMR (AT91C_CAST(AT91C_REG *) 0x00000018) // (PWMC_IMR) PWMC Interrupt Mask Register
  2916. #define PWMC_ISR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (PWMC_ISR) PWMC Interrupt Status Register
  2917. #define PWMC_VR (AT91C_CAST(AT91C_REG *) 0x000000FC) // (PWMC_VR) PWMC Version Register
  2918. #endif
  2919. // -------- PWMC_MR : (PWMC Offset: 0x0) PWMC Mode Register --------
  2920. #define AT91C_PWMC_DIVA (0xFF << 0) // (PWMC) CLKA divide factor.
  2921. #define AT91C_PWMC_PREA (0xF << 8) // (PWMC) Divider Input Clock Prescaler A
  2922. #define AT91C_PWMC_PREA_MCK (0x0 << 8) // (PWMC)
  2923. #define AT91C_PWMC_DIVB (0xFF << 16) // (PWMC) CLKB divide factor.
  2924. #define AT91C_PWMC_PREB (0xF << 24) // (PWMC) Divider Input Clock Prescaler B
  2925. #define AT91C_PWMC_PREB_MCK (0x0 << 24) // (PWMC)
  2926. // -------- PWMC_ENA : (PWMC Offset: 0x4) PWMC Enable Register --------
  2927. #define AT91C_PWMC_CHID0 (0x1 << 0) // (PWMC) Channel ID 0
  2928. #define AT91C_PWMC_CHID1 (0x1 << 1) // (PWMC) Channel ID 1
  2929. #define AT91C_PWMC_CHID2 (0x1 << 2) // (PWMC) Channel ID 2
  2930. #define AT91C_PWMC_CHID3 (0x1 << 3) // (PWMC) Channel ID 3
  2931. #define AT91C_PWMC_CHID4 (0x1 << 4) // (PWMC) Channel ID 4
  2932. #define AT91C_PWMC_CHID5 (0x1 << 5) // (PWMC) Channel ID 5
  2933. #define AT91C_PWMC_CHID6 (0x1 << 6) // (PWMC) Channel ID 6
  2934. #define AT91C_PWMC_CHID7 (0x1 << 7) // (PWMC) Channel ID 7
  2935. // -------- PWMC_DIS : (PWMC Offset: 0x8) PWMC Disable Register --------
  2936. // -------- PWMC_SR : (PWMC Offset: 0xc) PWMC Status Register --------
  2937. // -------- PWMC_IER : (PWMC Offset: 0x10) PWMC Interrupt Enable Register --------
  2938. // -------- PWMC_IDR : (PWMC Offset: 0x14) PWMC Interrupt Disable Register --------
  2939. // -------- PWMC_IMR : (PWMC Offset: 0x18) PWMC Interrupt Mask Register --------
  2940. // -------- PWMC_ISR : (PWMC Offset: 0x1c) PWMC Interrupt Status Register --------
  2941. // *****************************************************************************
  2942. // SOFTWARE API DEFINITION FOR Serial Parallel Interface
  2943. // *****************************************************************************
  2944. #ifndef __ASSEMBLY__
  2945. typedef struct _AT91S_SPI {
  2946. AT91C_REG SPI_CR; // Control Register
  2947. AT91C_REG SPI_MR; // Mode Register
  2948. AT91C_REG SPI_RDR; // Receive Data Register
  2949. AT91C_REG SPI_TDR; // Transmit Data Register
  2950. AT91C_REG SPI_SR; // Status Register
  2951. AT91C_REG SPI_IER; // Interrupt Enable Register
  2952. AT91C_REG SPI_IDR; // Interrupt Disable Register
  2953. AT91C_REG SPI_IMR; // Interrupt Mask Register
  2954. AT91C_REG Reserved0[4]; //
  2955. AT91C_REG SPI_CSR[4]; // Chip Select Register
  2956. AT91C_REG Reserved1[48]; //
  2957. AT91C_REG SPI_RPR; // Receive Pointer Register
  2958. AT91C_REG SPI_RCR; // Receive Counter Register
  2959. AT91C_REG SPI_TPR; // Transmit Pointer Register
  2960. AT91C_REG SPI_TCR; // Transmit Counter Register
  2961. AT91C_REG SPI_RNPR; // Receive Next Pointer Register
  2962. AT91C_REG SPI_RNCR; // Receive Next Counter Register
  2963. AT91C_REG SPI_TNPR; // Transmit Next Pointer Register
  2964. AT91C_REG SPI_TNCR; // Transmit Next Counter Register
  2965. AT91C_REG SPI_PTCR; // PDC Transfer Control Register
  2966. AT91C_REG SPI_PTSR; // PDC Transfer Status Register
  2967. } AT91S_SPI, *AT91PS_SPI;
  2968. #else
  2969. #define SPI_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (SPI_CR) Control Register
  2970. #define SPI_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (SPI_MR) Mode Register
  2971. #define SPI_RDR (AT91C_CAST(AT91C_REG *) 0x00000008) // (SPI_RDR) Receive Data Register
  2972. #define SPI_TDR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (SPI_TDR) Transmit Data Register
  2973. #define SPI_SR (AT91C_CAST(AT91C_REG *) 0x00000010) // (SPI_SR) Status Register
  2974. #define SPI_IER (AT91C_CAST(AT91C_REG *) 0x00000014) // (SPI_IER) Interrupt Enable Register
  2975. #define SPI_IDR (AT91C_CAST(AT91C_REG *) 0x00000018) // (SPI_IDR) Interrupt Disable Register
  2976. #define SPI_IMR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (SPI_IMR) Interrupt Mask Register
  2977. #define SPI_CSR (AT91C_CAST(AT91C_REG *) 0x00000030) // (SPI_CSR) Chip Select Register
  2978. #endif
  2979. // -------- SPI_CR : (SPI Offset: 0x0) SPI Control Register --------
  2980. #define AT91C_SPI_SPIEN (0x1 << 0) // (SPI) SPI Enable
  2981. #define AT91C_SPI_SPIDIS (0x1 << 1) // (SPI) SPI Disable
  2982. #define AT91C_SPI_SWRST (0x1 << 7) // (SPI) SPI Software reset
  2983. #define AT91C_SPI_LASTXFER (0x1 << 24) // (SPI) SPI Last Transfer
  2984. // -------- SPI_MR : (SPI Offset: 0x4) SPI Mode Register --------
  2985. #define AT91C_SPI_MSTR (0x1 << 0) // (SPI) Master/Slave Mode
  2986. #define AT91C_SPI_PS (0x1 << 1) // (SPI) Peripheral Select
  2987. #define AT91C_SPI_PS_FIXED (0x0 << 1) // (SPI) Fixed Peripheral Select
  2988. #define AT91C_SPI_PS_VARIABLE (0x1 << 1) // (SPI) Variable Peripheral Select
  2989. #define AT91C_SPI_PCSDEC (0x1 << 2) // (SPI) Chip Select Decode
  2990. #define AT91C_SPI_FDIV (0x1 << 3) // (SPI) Clock Selection
  2991. #define AT91C_SPI_MODFDIS (0x1 << 4) // (SPI) Mode Fault Detection
  2992. #define AT91C_SPI_LLB (0x1 << 7) // (SPI) Clock Selection
  2993. #define AT91C_SPI_PCS (0xF << 16) // (SPI) Peripheral Chip Select
  2994. #define AT91C_SPI_DLYBCS (0xFF << 24) // (SPI) Delay Between Chip Selects
  2995. // -------- SPI_RDR : (SPI Offset: 0x8) Receive Data Register --------
  2996. #define AT91C_SPI_RD (0xFFFF << 0) // (SPI) Receive Data
  2997. #define AT91C_SPI_RPCS (0xF << 16) // (SPI) Peripheral Chip Select Status
  2998. // -------- SPI_TDR : (SPI Offset: 0xc) Transmit Data Register --------
  2999. #define AT91C_SPI_TD (0xFFFF << 0) // (SPI) Transmit Data
  3000. #define AT91C_SPI_TPCS (0xF << 16) // (SPI) Peripheral Chip Select Status
  3001. // -------- SPI_SR : (SPI Offset: 0x10) Status Register --------
  3002. #define AT91C_SPI_RDRF (0x1 << 0) // (SPI) Receive Data Register Full
  3003. #define AT91C_SPI_TDRE (0x1 << 1) // (SPI) Transmit Data Register Empty
  3004. #define AT91C_SPI_MODF (0x1 << 2) // (SPI) Mode Fault Error
  3005. #define AT91C_SPI_OVRES (0x1 << 3) // (SPI) Overrun Error Status
  3006. #define AT91C_SPI_ENDRX (0x1 << 4) // (SPI) End of Receiver Transfer
  3007. #define AT91C_SPI_ENDTX (0x1 << 5) // (SPI) End of Receiver Transfer
  3008. #define AT91C_SPI_RXBUFF (0x1 << 6) // (SPI) RXBUFF Interrupt
  3009. #define AT91C_SPI_TXBUFE (0x1 << 7) // (SPI) TXBUFE Interrupt
  3010. #define AT91C_SPI_NSSR (0x1 << 8) // (SPI) NSSR Interrupt
  3011. #define AT91C_SPI_TXEMPTY (0x1 << 9) // (SPI) TXEMPTY Interrupt
  3012. #define AT91C_SPI_SPIENS (0x1 << 16) // (SPI) Enable Status
  3013. // -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register --------
  3014. // -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register --------
  3015. // -------- SPI_IMR : (SPI Offset: 0x1c) Interrupt Mask Register --------
  3016. // -------- SPI_CSR : (SPI Offset: 0x30) Chip Select Register --------
  3017. #define AT91C_SPI_CPOL (0x1 << 0) // (SPI) Clock Polarity
  3018. #define AT91C_SPI_NCPHA (0x1 << 1) // (SPI) Clock Phase
  3019. #define AT91C_SPI_CSAAT (0x1 << 3) // (SPI) Chip Select Active After Transfer
  3020. #define AT91C_SPI_BITS (0xF << 4) // (SPI) Bits Per Transfer
  3021. #define AT91C_SPI_BITS_8 (0x0 << 4) // (SPI) 8 Bits Per transfer
  3022. #define AT91C_SPI_BITS_9 (0x1 << 4) // (SPI) 9 Bits Per transfer
  3023. #define AT91C_SPI_BITS_10 (0x2 << 4) // (SPI) 10 Bits Per transfer
  3024. #define AT91C_SPI_BITS_11 (0x3 << 4) // (SPI) 11 Bits Per transfer
  3025. #define AT91C_SPI_BITS_12 (0x4 << 4) // (SPI) 12 Bits Per transfer
  3026. #define AT91C_SPI_BITS_13 (0x5 << 4) // (SPI) 13 Bits Per transfer
  3027. #define AT91C_SPI_BITS_14 (0x6 << 4) // (SPI) 14 Bits Per transfer
  3028. #define AT91C_SPI_BITS_15 (0x7 << 4) // (SPI) 15 Bits Per transfer
  3029. #define AT91C_SPI_BITS_16 (0x8 << 4) // (SPI) 16 Bits Per transfer
  3030. #define AT91C_SPI_SCBR (0xFF << 8) // (SPI) Serial Clock Baud Rate
  3031. #define AT91C_SPI_DLYBS (0xFF << 16) // (SPI) Delay Before SPCK
  3032. #define AT91C_SPI_DLYBCT (0xFF << 24) // (SPI) Delay Between Consecutive Transfers
  3033. // *****************************************************************************
  3034. // SOFTWARE API DEFINITION FOR TSADC
  3035. // *****************************************************************************
  3036. #ifndef __ASSEMBLY__
  3037. typedef struct _AT91S_TSADC {
  3038. AT91C_REG TSADC_CR; // Control Register
  3039. AT91C_REG TSADC_MR; // Mode Register
  3040. AT91C_REG TSADC_TRGR; // Trigger Register
  3041. AT91C_REG TSADC_TSR; // Touch Screen Register
  3042. AT91C_REG TSADC_CHER; // Channel Enable Register
  3043. AT91C_REG TSADC_CHDR; // Channel Disable Register
  3044. AT91C_REG TSADC_CHSR; // Channel Status Register
  3045. AT91C_REG TSADC_SR; // Status Register
  3046. AT91C_REG TSADC_LCDR; // Last Converted Register
  3047. AT91C_REG TSADC_IER; // Interrupt Enable Register
  3048. AT91C_REG TSADC_IDR; // Interrupt Disable Register
  3049. AT91C_REG TSADC_IMR; // Interrupt Mask Register
  3050. AT91C_REG TSADC_CDR0; // Channel Data Register 0
  3051. AT91C_REG TSADC_CDR1; // Channel Data Register 1
  3052. AT91C_REG TSADC_CDR2; // Channel Data Register 2
  3053. AT91C_REG TSADC_CDR3; // Channel Data Register 3
  3054. AT91C_REG TSADC_CDR4; // Channel Data Register 4
  3055. AT91C_REG TSADC_CDR5; // Channel Data Register 5
  3056. AT91C_REG TSADC_CDR6; // Channel Data Register 6
  3057. AT91C_REG TSADC_CDR7; // Channel Data Register 7
  3058. //Cheney change:
  3059. //AT91C_REG Reserved0[44]; //
  3060. AT91C_REG Reserved0[37]; //
  3061. AT91C_REG TSADC_WPMR; // Write Protection Mode Register
  3062. AT91C_REG TSADC_WPSR; // Write Protection Status Register
  3063. AT91C_REG Reserved1[5]; //
  3064. AT91C_REG TSADC_RPR; // Receive Pointer Register
  3065. AT91C_REG TSADC_RCR; // Receive Counter Register
  3066. AT91C_REG TSADC_TPR; // Transmit Pointer Register
  3067. AT91C_REG TSADC_TCR; // Transmit Counter Register
  3068. AT91C_REG TSADC_RNPR; // Receive Next Pointer Register
  3069. AT91C_REG TSADC_RNCR; // Receive Next Counter Register
  3070. AT91C_REG TSADC_TNPR; // Transmit Next Pointer Register
  3071. AT91C_REG TSADC_TNCR; // Transmit Next Counter Register
  3072. AT91C_REG TSADC_PTCR; // PDC Transfer Control Register
  3073. AT91C_REG TSADC_PTSR; // PDC Transfer Status Register
  3074. } AT91S_TSADC, *AT91PS_TSADC;
  3075. #else
  3076. #define TSADC_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (TSADC_CR) Control Register
  3077. #define TSADC_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (TSADC_MR) Mode Register
  3078. #define TSADC_TRGR (AT91C_CAST(AT91C_REG *) 0x00000008) // (TSADC_TRGR) Trigger Register
  3079. #define TSADC_TSR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (TSADC_TSR) Touch Screen Register
  3080. #define TSADC_CHER (AT91C_CAST(AT91C_REG *) 0x00000010) // (TSADC_CHER) Channel Enable Register
  3081. #define TSADC_CHDR (AT91C_CAST(AT91C_REG *) 0x00000014) // (TSADC_CHDR) Channel Disable Register
  3082. #define TSADC_CHSR (AT91C_CAST(AT91C_REG *) 0x00000018) // (TSADC_CHSR) Channel Status Register
  3083. #define TSADC_SR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (TSADC_SR) Status Register
  3084. #define TSADC_LCDR (AT91C_CAST(AT91C_REG *) 0x00000020) // (TSADC_LCDR) Last Converted Register
  3085. #define TSADC_IER (AT91C_CAST(AT91C_REG *) 0x00000024) // (TSADC_IER) Interrupt Enable Register
  3086. #define TSADC_IDR (AT91C_CAST(AT91C_REG *) 0x00000028) // (TSADC_IDR) Interrupt Disable Register
  3087. #define TSADC_IMR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (TSADC_IMR) Interrupt Mask Register
  3088. #define TSADC_CDR0 (AT91C_CAST(AT91C_REG *) 0x00000030) // (TSADC_CDR0) Channel Data Register 0
  3089. #define TSADC_CDR1 (AT91C_CAST(AT91C_REG *) 0x00000034) // (TSADC_CDR1) Channel Data Register 1
  3090. #define TSADC_CDR2 (AT91C_CAST(AT91C_REG *) 0x00000038) // (TSADC_CDR2) Channel Data Register 2
  3091. #define TSADC_CDR3 (AT91C_CAST(AT91C_REG *) 0x0000003C) // (TSADC_CDR3) Channel Data Register 3
  3092. #define TSADC_CDR4 (AT91C_CAST(AT91C_REG *) 0x00000040) // (TSADC_CDR4) Channel Data Register 4
  3093. #define TSADC_CDR5 (AT91C_CAST(AT91C_REG *) 0x00000044) // (TSADC_CDR5) Channel Data Register 5
  3094. #define TSADC_CDR6 (AT91C_CAST(AT91C_REG *) 0x00000048) // (TSADC_CDR6) Channel Data Register 6
  3095. #define TSADC_CDR7 (AT91C_CAST(AT91C_REG *) 0x0000004C) // (TSADC_CDR7) Channel Data Register 7
  3096. #endif
  3097. // -------- TSADC_CR : (TSADC Offset: 0x0) Control Register --------
  3098. #define AT91C_TSADC_SWRST (0x1 << 0) // (TSADC) Software Reset
  3099. #define AT91C_TSADC_START (0x1 << 1) // (TSADC) Start Conversion
  3100. // -------- TSADC_MR : (TSADC Offset: 0x4) Mode Register --------
  3101. #define AT91C_TSADC_TSAMOD (0x3 << 0) // (TSADC) Touch Screen ADC Mode
  3102. #define AT91C_TSADC_TSAMOD_ADC_ONLY_MODE (0x0) // (TSADC) ADC Mode
  3103. #define AT91C_TSADC_TSAMOD_TS_ONLY_MODE (0x1) // (TSADC) Touch Screen Only Mode
  3104. #define AT91C_TSADC_LOWRES (0x1 << 4) // (TSADC) ADC Resolution
  3105. #define AT91C_TSADC_SLEEP (0x1 << 5) // (TSADC) Sleep Mode
  3106. #define AT91C_TSADC_PENDET (0x1 << 6) // (TSADC) Pen Detect Selection
  3107. #define AT91C_TSADC_PRESCAL (0xFF << 8) // (TSADC) Prescaler Rate Selection
  3108. #define AT91C_TSADC_STARTUP (0x7F << 16) // (TSADC) Startup Time
  3109. #define AT91C_TSADC_SHTIM (0xF << 24) // (TSADC) Sample and Hold Time for ADC Channels
  3110. #define AT91C_TSADC_PENDBC (0xF << 28) // (TSADC) Pen Detect Debouncing Period
  3111. // -------- TSADC_TRGR : (TSADC Offset: 0x8) Trigger Register --------
  3112. #define AT91C_TSADC_TRGMOD (0x7 << 0) // (TSADC) Trigger Mode
  3113. #define AT91C_TSADC_TRGMOD_NO_TRIGGER (0x0) // (TSADC) No Trigger
  3114. #define AT91C_TSADC_TRGMOD_EXTERNAL_TRIGGER_RE (0x1) // (TSADC) External Trigger Rising Edge
  3115. #define AT91C_TSADC_TRGMOD_EXTERNAL_TRIGGER_FE (0x2) // (TSADC) External Trigger Falling Edge
  3116. #define AT91C_TSADC_TRGMOD_EXTERNAL_TRIGGER_AE (0x3) // (TSADC) External Trigger Any Edge
  3117. #define AT91C_TSADC_TRGMOD_PENDET_TRIGGER (0x4) // (TSADC) Pen Detect Trigger (only if PENDET is set and in Touch Screen mode only)
  3118. #define AT91C_TSADC_TRGMOD_PERIODIC_TRIGGER (0x5) // (TSADC) Periodic Trigger (wrt TRGPER)
  3119. #define AT91C_TSADC_TRGMOD_CONT_TRIGGER (0x6) // (TSADC) Continuous Trigger
  3120. #define AT91C_TSADC_TRGPER (0xFFFF << 16) // (TSADC) Trigger Period
  3121. // -------- TSADC_TSR : (TSADC Offset: 0xc) Touch Screen Register --------
  3122. #define AT91C_TSADC_TSSHTIM (0xF << 24) // (TSADC) Sample and Hold Time for Touch Screen Channels
  3123. // -------- TSADC_CHER : (TSADC Offset: 0x10) Channel Enable Register --------
  3124. #define AT91C_TSADC_CHENA0 (0x1 << 0) // (TSADC) Channel 0 Enable
  3125. #define AT91C_TSADC_CHENA1 (0x1 << 1) // (TSADC) Channel 1 Enable
  3126. #define AT91C_TSADC_CHENA2 (0x1 << 2) // (TSADC) Channel 2 Enable
  3127. #define AT91C_TSADC_CHENA3 (0x1 << 3) // (TSADC) Channel 3 Enable
  3128. #define AT91C_TSADC_CHENA4 (0x1 << 4) // (TSADC) Channel 4 Enable
  3129. #define AT91C_TSADC_CHENA5 (0x1 << 5) // (TSADC) Channel 5 Enable
  3130. #define AT91C_TSADC_CHENA6 (0x1 << 6) // (TSADC) Channel 6 Enable
  3131. #define AT91C_TSADC_CHENA7 (0x1 << 7) // (TSADC) Channel 7 Enable
  3132. // -------- TSADC_CHDR : (TSADC Offset: 0x14) Channel Disable Register --------
  3133. #define AT91C_TSADC_CHDIS0 (0x1 << 0) // (TSADC) Channel 0 Disable
  3134. #define AT91C_TSADC_CHDIS1 (0x1 << 1) // (TSADC) Channel 1 Disable
  3135. #define AT91C_TSADC_CHDIS2 (0x1 << 2) // (TSADC) Channel 2 Disable
  3136. #define AT91C_TSADC_CHDIS3 (0x1 << 3) // (TSADC) Channel 3 Disable
  3137. #define AT91C_TSADC_CHDIS4 (0x1 << 4) // (TSADC) Channel 4 Disable
  3138. #define AT91C_TSADC_CHDIS5 (0x1 << 5) // (TSADC) Channel 5 Disable
  3139. #define AT91C_TSADC_CHDIS6 (0x1 << 6) // (TSADC) Channel 6 Disable
  3140. #define AT91C_TSADC_CHDIS7 (0x1 << 7) // (TSADC) Channel 7 Disable
  3141. // -------- TSADC_CHSR : (TSADC Offset: 0x18) Channel Status Register --------
  3142. #define AT91C_TSADC_CHS0 (0x1 << 0) // (TSADC) Channel 0 Status
  3143. #define AT91C_TSADC_CHS1 (0x1 << 1) // (TSADC) Channel 1 Status
  3144. #define AT91C_TSADC_CHS2 (0x1 << 2) // (TSADC) Channel 2 Status
  3145. #define AT91C_TSADC_CHS3 (0x1 << 3) // (TSADC) Channel 3 Status
  3146. #define AT91C_TSADC_CHS4 (0x1 << 4) // (TSADC) Channel 4 Status
  3147. #define AT91C_TSADC_CHS5 (0x1 << 5) // (TSADC) Channel 5 Status
  3148. #define AT91C_TSADC_CHS6 (0x1 << 6) // (TSADC) Channel 6 Status
  3149. #define AT91C_TSADC_CHS7 (0x1 << 7) // (TSADC) Channel 7 Status
  3150. // -------- TSADC_SR : (TSADC Offset: 0x1c) Status Register --------
  3151. #define AT91C_TSADC_EOC0 (0x1 << 0) // (TSADC) Channel 0 End Of Conversion
  3152. #define AT91C_TSADC_EOC1 (0x1 << 1) // (TSADC) Channel 1 End Of Conversion
  3153. #define AT91C_TSADC_EOC2 (0x1 << 2) // (TSADC) Channel 2 End Of Conversion
  3154. #define AT91C_TSADC_EOC3 (0x1 << 3) // (TSADC) Channel 3 End Of Conversion
  3155. #define AT91C_TSADC_EOC4 (0x1 << 4) // (TSADC) Channel 4 End Of Conversion
  3156. #define AT91C_TSADC_EOC5 (0x1 << 5) // (TSADC) Channel 5 End Of Conversion
  3157. #define AT91C_TSADC_EOC6 (0x1 << 6) // (TSADC) Channel 6 End Of Conversion
  3158. #define AT91C_TSADC_EOC7 (0x1 << 7) // (TSADC) Channel 7 End Of Conversion
  3159. #define AT91C_TSADC_OVRE0 (0x1 << 8) // (TSADC) Channel 0 Overrun Error
  3160. #define AT91C_TSADC_OVRE1 (0x1 << 9) // (TSADC) Channel 1 Overrun Error
  3161. #define AT91C_TSADC_OVRE2 (0x1 << 10) // (TSADC) Channel 2 Overrun Error
  3162. #define AT91C_TSADC_OVRE3 (0x1 << 11) // (TSADC) Channel 3 Overrun Error
  3163. #define AT91C_TSADC_OVRE4 (0x1 << 12) // (TSADC) Channel 4 Overrun Error
  3164. #define AT91C_TSADC_OVRE5 (0x1 << 13) // (TSADC) Channel 5 Overrun Error
  3165. #define AT91C_TSADC_OVRE6 (0x1 << 14) // (TSADC) Channel 6 Overrun Error
  3166. #define AT91C_TSADC_OVRE7 (0x1 << 15) // (TSADC) Channel 7 Overrun Error
  3167. #define AT91C_TSADC_DRDY (0x1 << 16) // (TSADC) Data Ready
  3168. #define AT91C_TSADC_GOVRE (0x1 << 17) // (TSADC) General Overrun Error
  3169. #define AT91C_TSADC_ENDRX (0x1 << 18) // (TSADC) End of RX Buffer
  3170. #define AT91C_TSADC_RXBUFF (0x1 << 19) // (TSADC) RX Buffer Full
  3171. #define AT91C_TSADC_PENCNT (0x1 << 20) // (TSADC) Pen Contact
  3172. #define AT91C_TSADC_NOCNT (0x1 << 21) // (TSADC) No Contact
  3173. // -------- TSADC_LCDR : (TSADC Offset: 0x20) Last Converted Data Register --------
  3174. #define AT91C_TSADC_LDATA (0x3FF << 0) // (TSADC) Last Converted Data
  3175. // -------- TSADC_IER : (TSADC Offset: 0x24) Interrupt Enable Register --------
  3176. #define AT91C_TSADC_IENAEOC0 (0x1 << 0) // (TSADC) Channel 0 End Of Conversion Interrupt Enable
  3177. #define AT91C_TSADC_IENAEOC1 (0x1 << 1) // (TSADC) Channel 1 End Of Conversion Interrupt Enable
  3178. #define AT91C_TSADC_IENAEOC2 (0x1 << 2) // (TSADC) Channel 2 End Of Conversion Interrupt Enable
  3179. #define AT91C_TSADC_IENAEOC3 (0x1 << 3) // (TSADC) Channel 3 End Of Conversion Interrupt Enable
  3180. #define AT91C_TSADC_IENAEOC4 (0x1 << 4) // (TSADC) Channel 4 End Of Conversion Interrupt Enable
  3181. #define AT91C_TSADC_IENAEOC5 (0x1 << 5) // (TSADC) Channel 5 End Of Conversion Interrupt Enable
  3182. #define AT91C_TSADC_IENAEOC6 (0x1 << 6) // (TSADC) Channel 6 End Of Conversion Interrupt Enable
  3183. #define AT91C_TSADC_IENAEOC7 (0x1 << 7) // (TSADC) Channel 7 End Of Conversion Interrupt Enable
  3184. #define AT91C_TSADC_IENAOVRE0 (0x1 << 8) // (TSADC) Channel 0 Overrun Error Interrupt Enable
  3185. #define AT91C_TSADC_IENAOVRE1 (0x1 << 9) // (TSADC) Channel 1 Overrun Error Interrupt Enable
  3186. #define AT91C_TSADC_IENAOVRE2 (0x1 << 10) // (TSADC) Channel 2 Overrun Error Interrupt Enable
  3187. #define AT91C_TSADC_IENAOVRE3 (0x1 << 11) // (TSADC) Channel 3 Overrun Error Interrupt Enable
  3188. #define AT91C_TSADC_IENAOVRE4 (0x1 << 12) // (TSADC) Channel 4 Overrun Error Interrupt Enable
  3189. #define AT91C_TSADC_IENAOVRE5 (0x1 << 13) // (TSADC) Channel 5 Overrun Error Interrupt Enable
  3190. #define AT91C_TSADC_IENAOVRE6 (0x1 << 14) // (TSADC) Channel 6 Overrun Error Interrupt Enable
  3191. #define AT91C_TSADC_IENAOVRE7 (0x1 << 15) // (TSADC) Channel 7 Overrun Error Interrupt Enable
  3192. #define AT91C_TSADC_IENADRDY (0x1 << 16) // (TSADC) Data Ready Interrupt Enable
  3193. #define AT91C_TSADC_IENAGOVRE (0x1 << 17) // (TSADC) General Overrun Error Interrupt Enable
  3194. #define AT91C_TSADC_IENAENDRX (0x1 << 18) // (TSADC) End of RX Buffer Interrupt Enable
  3195. #define AT91C_TSADC_IENARXBUFF (0x1 << 19) // (TSADC) RX Buffer Full Interrupt Enable
  3196. #define AT91C_TSADC_IENAPENCNT (0x1 << 20) // (TSADC) Pen Contact Interrupt Enable
  3197. #define AT91C_TSADC_IENANOCNT (0x1 << 21) // (TSADC) No Contact Interrupt Enable
  3198. // -------- TSADC_IDR : (TSADC Offset: 0x28) Interrupt Disable Register --------
  3199. #define AT91C_TSADC_IDISEOC0 (0x1 << 0) // (TSADC) Channel 0 End Of Conversion Interrupt Disable
  3200. #define AT91C_TSADC_IDISEOC1 (0x1 << 1) // (TSADC) Channel 1 End Of Conversion Interrupt Disable
  3201. #define AT91C_TSADC_IDISEOC2 (0x1 << 2) // (TSADC) Channel 2 End Of Conversion Interrupt Disable
  3202. #define AT91C_TSADC_IDISEOC3 (0x1 << 3) // (TSADC) Channel 3 End Of Conversion Interrupt Disable
  3203. #define AT91C_TSADC_IDISEOC4 (0x1 << 4) // (TSADC) Channel 4 End Of Conversion Interrupt Disable
  3204. #define AT91C_TSADC_IDISEOC5 (0x1 << 5) // (TSADC) Channel 5 End Of Conversion Interrupt Disable
  3205. #define AT91C_TSADC_IDISEOC6 (0x1 << 6) // (TSADC) Channel 6 End Of Conversion Interrupt Disable
  3206. #define AT91C_TSADC_IDISEOC7 (0x1 << 7) // (TSADC) Channel 7 End Of Conversion Interrupt Disable
  3207. #define AT91C_TSADC_IDISOVRE0 (0x1 << 8) // (TSADC) Channel 0 Overrun Error Interrupt Disable
  3208. #define AT91C_TSADC_IDISOVRE1 (0x1 << 9) // (TSADC) Channel 1 Overrun Error Interrupt Disable
  3209. #define AT91C_TSADC_IDISOVRE2 (0x1 << 10) // (TSADC) Channel 2 Overrun Error Interrupt Disable
  3210. #define AT91C_TSADC_IDISOVRE3 (0x1 << 11) // (TSADC) Channel 3 Overrun Error Interrupt Disable
  3211. #define AT91C_TSADC_IDISOVRE4 (0x1 << 12) // (TSADC) Channel 4 Overrun Error Interrupt Disable
  3212. #define AT91C_TSADC_IDISOVRE5 (0x1 << 13) // (TSADC) Channel 5 Overrun Error Interrupt Disable
  3213. #define AT91C_TSADC_IDISOVRE6 (0x1 << 14) // (TSADC) Channel 6 Overrun Error Interrupt Disable
  3214. #define AT91C_TSADC_IDISOVRE7 (0x1 << 15) // (TSADC) Channel 7 Overrun Error Interrupt Disable
  3215. #define AT91C_TSADC_IDISDRDY (0x1 << 16) // (TSADC) Data Ready Interrupt Disable
  3216. #define AT91C_TSADC_IDISGOVRE (0x1 << 17) // (TSADC) General Overrun Error Interrupt Disable
  3217. #define AT91C_TSADC_IDISENDRX (0x1 << 18) // (TSADC) End of RX Buffer Interrupt Disable
  3218. #define AT91C_TSADC_IDISRXBUFF (0x1 << 19) // (TSADC) RX Buffer Full Interrupt Disable
  3219. #define AT91C_TSADC_IDISPENCNT (0x1 << 20) // (TSADC) Pen Contact Interrupt Disable
  3220. #define AT91C_TSADC_IDISNOCNT (0x1 << 21) // (TSADC) No Contact Interrupt Disable
  3221. // -------- TSADC_IMR : (TSADC Offset: 0x2c) Interrupt Mask Register --------
  3222. #define AT91C_TSADC_IMSKEOC0 (0x1 << 0) // (TSADC) Channel 0 End Of Conversion Interrupt Mask
  3223. #define AT91C_TSADC_IMSKEOC1 (0x1 << 1) // (TSADC) Channel 1 End Of Conversion Interrupt Mask
  3224. #define AT91C_TSADC_IMSKEOC2 (0x1 << 2) // (TSADC) Channel 2 End Of Conversion Interrupt Mask
  3225. #define AT91C_TSADC_IMSKEOC3 (0x1 << 3) // (TSADC) Channel 3 End Of Conversion Interrupt Mask
  3226. #define AT91C_TSADC_IMSKEOC4 (0x1 << 4) // (TSADC) Channel 4 End Of Conversion Interrupt Mask
  3227. #define AT91C_TSADC_IMSKEOC5 (0x1 << 5) // (TSADC) Channel 5 End Of Conversion Interrupt Mask
  3228. #define AT91C_TSADC_IMSKEOC6 (0x1 << 6) // (TSADC) Channel 6 End Of Conversion Interrupt Mask
  3229. #define AT91C_TSADC_IMSKEOC7 (0x1 << 7) // (TSADC) Channel 7 End Of Conversion Interrupt Mask
  3230. #define AT91C_TSADC_IMSKOVRE0 (0x1 << 8) // (TSADC) Channel 0 Overrun Error Interrupt Mask
  3231. #define AT91C_TSADC_IMSKOVRE1 (0x1 << 9) // (TSADC) Channel 1 Overrun Error Interrupt Mask
  3232. #define AT91C_TSADC_IMSKOVRE2 (0x1 << 10) // (TSADC) Channel 2 Overrun Error Interrupt Mask
  3233. #define AT91C_TSADC_IMSKOVRE3 (0x1 << 11) // (TSADC) Channel 3 Overrun Error Interrupt Mask
  3234. #define AT91C_TSADC_IMSKOVRE4 (0x1 << 12) // (TSADC) Channel 4 Overrun Error Interrupt Mask
  3235. #define AT91C_TSADC_IMSKOVRE5 (0x1 << 13) // (TSADC) Channel 5 Overrun Error Interrupt Mask
  3236. #define AT91C_TSADC_IMSKOVRE6 (0x1 << 14) // (TSADC) Channel 6 Overrun Error Interrupt Mask
  3237. #define AT91C_TSADC_IMSKOVRE7 (0x1 << 15) // (TSADC) Channel 7 Overrun Error Interrupt Mask
  3238. #define AT91C_TSADC_IMSKDRDY (0x1 << 16) // (TSADC) Data Ready Interrupt Mask
  3239. #define AT91C_TSADC_IMSKGOVRE (0x1 << 17) // (TSADC) General Overrun Error Interrupt Mask
  3240. #define AT91C_TSADC_IMSKENDRX (0x1 << 18) // (TSADC) End of RX Buffer Interrupt Mask
  3241. #define AT91C_TSADC_IMSKRXBUFF (0x1 << 19) // (TSADC) RX Buffer Full Interrupt Mask
  3242. #define AT91C_TSADC_IMSKPENCNT (0x1 << 20) // (TSADC) Pen Contact Interrupt Mask
  3243. #define AT91C_TSADC_IMSKNOCNT (0x1 << 21) // (TSADC) No Contact Interrupt Mask
  3244. // -------- TSADC_CDR0 : (TSADC Offset: 0x30) Channel 0 Data Register --------
  3245. #define AT91C_TSADC_DATA0 (0x3FF << 0) // (TSADC) Channel 0 Data
  3246. // -------- TSADC_CDR1 : (TSADC Offset: 0x34) Channel 1 Data Register --------
  3247. #define AT91C_TSADC_DATA1 (0x3FF << 0) // (TSADC) Channel 1 Data
  3248. // -------- TSADC_CDR2 : (TSADC Offset: 0x38) Channel 2 Data Register --------
  3249. #define AT91C_TSADC_DATA2 (0x3FF << 0) // (TSADC) Channel 2 Data
  3250. // -------- TSADC_CDR3 : (TSADC Offset: 0x3c) Channel 3 Data Register --------
  3251. #define AT91C_TSADC_DATA3 (0x3FF << 0) // (TSADC) Channel 3 Data
  3252. // -------- TSADC_CDR4 : (TSADC Offset: 0x40) Channel 4 Data Register --------
  3253. #define AT91C_TSADC_DATA4 (0x3FF << 0) // (TSADC) Channel 4 Data
  3254. // -------- TSADC_CDR5 : (TSADC Offset: 0x44) Channel 5 Data Register --------
  3255. #define AT91C_TSADC_DATA5 (0x3FF << 0) // (TSADC) Channel 5 Data
  3256. // -------- TSADC_CDR6 : (TSADC Offset: 0x48) Channel 6 Data Register --------
  3257. #define AT91C_TSADC_DATA6 (0x3FF << 0) // (TSADC) Channel 6 Data
  3258. // -------- TSADC_CDR7 : (TSADC Offset: 0x4c) Channel 7 Data Register --------
  3259. #define AT91C_TSADC_DATA7 (0x3FF << 0) // (TSADC) Channel 7 Data
  3260. // *****************************************************************************
  3261. // SOFTWARE API DEFINITION FOR UDPHS Enpoint FIFO data register
  3262. // *****************************************************************************
  3263. #ifndef __ASSEMBLY__
  3264. typedef struct _AT91S_UDPHS_EPTFIFO {
  3265. AT91C_REG UDPHS_READEPT0[16384]; // FIFO Endpoint Data Register 0
  3266. AT91C_REG UDPHS_READEPT1[16384]; // FIFO Endpoint Data Register 1
  3267. AT91C_REG UDPHS_READEPT2[16384]; // FIFO Endpoint Data Register 2
  3268. AT91C_REG UDPHS_READEPT3[16384]; // FIFO Endpoint Data Register 3
  3269. AT91C_REG UDPHS_READEPT4[16384]; // FIFO Endpoint Data Register 4
  3270. AT91C_REG UDPHS_READEPT5[16384]; // FIFO Endpoint Data Register 5
  3271. AT91C_REG UDPHS_READEPT6[16384]; // FIFO Endpoint Data Register 6
  3272. } AT91S_UDPHS_EPTFIFO, *AT91PS_UDPHS_EPTFIFO;
  3273. #else
  3274. #define UDPHS_READEPT0 (AT91C_CAST(AT91C_REG *) 0x00000000) // (UDPHS_READEPT0) FIFO Endpoint Data Register 0
  3275. #define UDPHS_READEPT1 (AT91C_CAST(AT91C_REG *) 0x00010000) // (UDPHS_READEPT1) FIFO Endpoint Data Register 1
  3276. #define UDPHS_READEPT2 (AT91C_CAST(AT91C_REG *) 0x00020000) // (UDPHS_READEPT2) FIFO Endpoint Data Register 2
  3277. #define UDPHS_READEPT3 (AT91C_CAST(AT91C_REG *) 0x00030000) // (UDPHS_READEPT3) FIFO Endpoint Data Register 3
  3278. #define UDPHS_READEPT4 (AT91C_CAST(AT91C_REG *) 0x00040000) // (UDPHS_READEPT4) FIFO Endpoint Data Register 4
  3279. #define UDPHS_READEPT5 (AT91C_CAST(AT91C_REG *) 0x00050000) // (UDPHS_READEPT5) FIFO Endpoint Data Register 5
  3280. #define UDPHS_READEPT6 (AT91C_CAST(AT91C_REG *) 0x00060000) // (UDPHS_READEPT6) FIFO Endpoint Data Register 6
  3281. #endif
  3282. // *****************************************************************************
  3283. // SOFTWARE API DEFINITION FOR UDPHS Endpoint struct
  3284. // *****************************************************************************
  3285. #ifndef __ASSEMBLY__
  3286. typedef struct _AT91S_UDPHS_EPT {
  3287. AT91C_REG UDPHS_EPTCFG; // UDPHS Endpoint Config Register
  3288. AT91C_REG UDPHS_EPTCTLENB; // UDPHS Endpoint Control Enable Register
  3289. AT91C_REG UDPHS_EPTCTLDIS; // UDPHS Endpoint Control Disable Register
  3290. AT91C_REG UDPHS_EPTCTL; // UDPHS Endpoint Control Register
  3291. AT91C_REG Reserved0[1]; //
  3292. AT91C_REG UDPHS_EPTSETSTA; // UDPHS Endpoint Set Status Register
  3293. AT91C_REG UDPHS_EPTCLRSTA; // UDPHS Endpoint Clear Status Register
  3294. AT91C_REG UDPHS_EPTSTA; // UDPHS Endpoint Status Register
  3295. } AT91S_UDPHS_EPT, *AT91PS_UDPHS_EPT;
  3296. #else
  3297. #define UDPHS_EPTCFG (AT91C_CAST(AT91C_REG *) 0x00000000) // (UDPHS_EPTCFG) UDPHS Endpoint Config Register
  3298. #define UDPHS_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0x00000004) // (UDPHS_EPTCTLENB) UDPHS Endpoint Control Enable Register
  3299. #define UDPHS_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0x00000008) // (UDPHS_EPTCTLDIS) UDPHS Endpoint Control Disable Register
  3300. #define UDPHS_EPTCTL (AT91C_CAST(AT91C_REG *) 0x0000000C) // (UDPHS_EPTCTL) UDPHS Endpoint Control Register
  3301. #define UDPHS_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0x00000014) // (UDPHS_EPTSETSTA) UDPHS Endpoint Set Status Register
  3302. #define UDPHS_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0x00000018) // (UDPHS_EPTCLRSTA) UDPHS Endpoint Clear Status Register
  3303. #define UDPHS_EPTSTA (AT91C_CAST(AT91C_REG *) 0x0000001C) // (UDPHS_EPTSTA) UDPHS Endpoint Status Register
  3304. #endif
  3305. // -------- UDPHS_EPTCFG : (UDPHS_EPT Offset: 0x0) UDPHS Endpoint Config Register --------
  3306. #define AT91C_UDPHS_EPT_SIZE (0x7 << 0) // (UDPHS_EPT) Endpoint Size
  3307. #define AT91C_UDPHS_EPT_SIZE_8 (0x0) // (UDPHS_EPT) 8 bytes
  3308. #define AT91C_UDPHS_EPT_SIZE_16 (0x1) // (UDPHS_EPT) 16 bytes
  3309. #define AT91C_UDPHS_EPT_SIZE_32 (0x2) // (UDPHS_EPT) 32 bytes
  3310. #define AT91C_UDPHS_EPT_SIZE_64 (0x3) // (UDPHS_EPT) 64 bytes
  3311. #define AT91C_UDPHS_EPT_SIZE_128 (0x4) // (UDPHS_EPT) 128 bytes
  3312. #define AT91C_UDPHS_EPT_SIZE_256 (0x5) // (UDPHS_EPT) 256 bytes (if possible)
  3313. #define AT91C_UDPHS_EPT_SIZE_512 (0x6) // (UDPHS_EPT) 512 bytes (if possible)
  3314. #define AT91C_UDPHS_EPT_SIZE_1024 (0x7) // (UDPHS_EPT) 1024 bytes (if possible)
  3315. #define AT91C_UDPHS_EPT_DIR (0x1 << 3) // (UDPHS_EPT) Endpoint Direction 0:OUT, 1:IN
  3316. #define AT91C_UDPHS_EPT_DIR_OUT (0x0 << 3) // (UDPHS_EPT) Direction OUT
  3317. #define AT91C_UDPHS_EPT_DIR_IN (0x1 << 3) // (UDPHS_EPT) Direction IN
  3318. #define AT91C_UDPHS_EPT_TYPE (0x3 << 4) // (UDPHS_EPT) Endpoint Type
  3319. #define AT91C_UDPHS_EPT_TYPE_CTL_EPT (0x0 << 4) // (UDPHS_EPT) Control endpoint
  3320. #define AT91C_UDPHS_EPT_TYPE_ISO_EPT (0x1 << 4) // (UDPHS_EPT) Isochronous endpoint
  3321. #define AT91C_UDPHS_EPT_TYPE_BUL_EPT (0x2 << 4) // (UDPHS_EPT) Bulk endpoint
  3322. #define AT91C_UDPHS_EPT_TYPE_INT_EPT (0x3 << 4) // (UDPHS_EPT) Interrupt endpoint
  3323. #define AT91C_UDPHS_BK_NUMBER (0x3 << 6) // (UDPHS_EPT) Number of Banks
  3324. #define AT91C_UDPHS_BK_NUMBER_0 (0x0 << 6) // (UDPHS_EPT) Zero Bank, the EndPoint is not mapped in memory
  3325. #define AT91C_UDPHS_BK_NUMBER_1 (0x1 << 6) // (UDPHS_EPT) One Bank (Bank0)
  3326. #define AT91C_UDPHS_BK_NUMBER_2 (0x2 << 6) // (UDPHS_EPT) Double bank (Ping-Pong : Bank0 / Bank1)
  3327. #define AT91C_UDPHS_BK_NUMBER_3 (0x3 << 6) // (UDPHS_EPT) Triple Bank (Bank0 / Bank1 / Bank2) (if possible)
  3328. #define AT91C_UDPHS_NB_TRANS (0x3 << 8) // (UDPHS_EPT) Number Of Transaction per Micro-Frame (High-Bandwidth iso only)
  3329. #define AT91C_UDPHS_EPT_MAPD (0x1 << 31) // (UDPHS_EPT) Endpoint Mapped (read only
  3330. // -------- UDPHS_EPTCTLENB : (UDPHS_EPT Offset: 0x4) UDPHS Endpoint Control Enable Register --------
  3331. #define AT91C_UDPHS_EPT_ENABL (0x1 << 0) // (UDPHS_EPT) Endpoint Enable
  3332. #define AT91C_UDPHS_AUTO_VALID (0x1 << 1) // (UDPHS_EPT) Packet Auto-Valid Enable/Disable
  3333. #define AT91C_UDPHS_INTDIS_DMA (0x1 << 3) // (UDPHS_EPT) Endpoint Interrupts DMA Request Enable/Disable
  3334. #define AT91C_UDPHS_NYET_DIS (0x1 << 4) // (UDPHS_EPT) NYET Enable/Disable
  3335. #define AT91C_UDPHS_DATAX_RX (0x1 << 6) // (UDPHS_EPT) DATAx Interrupt Enable/Disable
  3336. #define AT91C_UDPHS_MDATA_RX (0x1 << 7) // (UDPHS_EPT) MDATA Interrupt Enabled/Disable
  3337. #define AT91C_UDPHS_ERR_OVFLW (0x1 << 8) // (UDPHS_EPT) OverFlow Error Interrupt Enable/Disable/Status
  3338. #define AT91C_UDPHS_RX_BK_RDY (0x1 << 9) // (UDPHS_EPT) Received OUT Data
  3339. #define AT91C_UDPHS_TX_COMPLT (0x1 << 10) // (UDPHS_EPT) Transmitted IN Data Complete Interrupt Enable/Disable or Transmitted IN Data Complete (clear)
  3340. #define AT91C_UDPHS_ERR_TRANS (0x1 << 11) // (UDPHS_EPT) Transaction Error Interrupt Enable/Disable
  3341. #define AT91C_UDPHS_TX_PK_RDY (0x1 << 11) // (UDPHS_EPT) TX Packet Ready Interrupt Enable/Disable
  3342. #define AT91C_UDPHS_RX_SETUP (0x1 << 12) // (UDPHS_EPT) Received SETUP Interrupt Enable/Disable
  3343. #define AT91C_UDPHS_ERR_FL_ISO (0x1 << 12) // (UDPHS_EPT) Error Flow Clear/Interrupt Enable/Disable
  3344. #define AT91C_UDPHS_STALL_SNT (0x1 << 13) // (UDPHS_EPT) Stall Sent Clear
  3345. #define AT91C_UDPHS_ERR_CRISO (0x1 << 13) // (UDPHS_EPT) CRC error / Error NB Trans / Interrupt Enable/Disable
  3346. #define AT91C_UDPHS_NAK_IN (0x1 << 14) // (UDPHS_EPT) NAKIN ERROR FLUSH / Clear / Interrupt Enable/Disable
  3347. #define AT91C_UDPHS_NAK_OUT (0x1 << 15) // (UDPHS_EPT) NAKOUT / Clear / Interrupt Enable/Disable
  3348. #define AT91C_UDPHS_BUSY_BANK (0x1 << 18) // (UDPHS_EPT) Busy Bank Interrupt Enable/Disable
  3349. #define AT91C_UDPHS_SHRT_PCKT (0x1 << 31) // (UDPHS_EPT) Short Packet / Interrupt Enable/Disable
  3350. // -------- UDPHS_EPTCTLDIS : (UDPHS_EPT Offset: 0x8) UDPHS Endpoint Control Disable Register --------
  3351. #define AT91C_UDPHS_EPT_DISABL (0x1 << 0) // (UDPHS_EPT) Endpoint Disable
  3352. // -------- UDPHS_EPTCTL : (UDPHS_EPT Offset: 0xc) UDPHS Endpoint Control Register --------
  3353. // -------- UDPHS_EPTSETSTA : (UDPHS_EPT Offset: 0x14) UDPHS Endpoint Set Status Register --------
  3354. #define AT91C_UDPHS_FRCESTALL (0x1 << 5) // (UDPHS_EPT) Stall Handshake Request Set/Clear/Status
  3355. #define AT91C_UDPHS_KILL_BANK (0x1 << 9) // (UDPHS_EPT) KILL Bank
  3356. // -------- UDPHS_EPTCLRSTA : (UDPHS_EPT Offset: 0x18) UDPHS Endpoint Clear Status Register --------
  3357. #define AT91C_UDPHS_TOGGLESQ (0x1 << 6) // (UDPHS_EPT) Data Toggle Clear
  3358. // -------- UDPHS_EPTSTA : (UDPHS_EPT Offset: 0x1c) UDPHS Endpoint Status Register --------
  3359. #define AT91C_UDPHS_TOGGLESQ_STA (0x3 << 6) // (UDPHS_EPT) Toggle Sequencing
  3360. #define AT91C_UDPHS_TOGGLESQ_STA_00 (0x0 << 6) // (UDPHS_EPT) Data0
  3361. #define AT91C_UDPHS_TOGGLESQ_STA_01 (0x1 << 6) // (UDPHS_EPT) Data1
  3362. #define AT91C_UDPHS_TOGGLESQ_STA_10 (0x2 << 6) // (UDPHS_EPT) Data2 (only for High-Bandwidth Isochronous EndPoint)
  3363. #define AT91C_UDPHS_TOGGLESQ_STA_11 (0x3 << 6) // (UDPHS_EPT) MData (only for High-Bandwidth Isochronous EndPoint)
  3364. #define AT91C_UDPHS_CONTROL_DIR (0x3 << 16) // (UDPHS_EPT)
  3365. #define AT91C_UDPHS_CONTROL_DIR_00 (0x0 << 16) // (UDPHS_EPT) Bank 0
  3366. #define AT91C_UDPHS_CONTROL_DIR_01 (0x1 << 16) // (UDPHS_EPT) Bank 1
  3367. #define AT91C_UDPHS_CONTROL_DIR_10 (0x2 << 16) // (UDPHS_EPT) Bank 2
  3368. #define AT91C_UDPHS_CONTROL_DIR_11 (0x3 << 16) // (UDPHS_EPT) Invalid
  3369. #define AT91C_UDPHS_CURRENT_BANK (0x3 << 16) // (UDPHS_EPT)
  3370. #define AT91C_UDPHS_CURRENT_BANK_00 (0x0 << 16) // (UDPHS_EPT) Bank 0
  3371. #define AT91C_UDPHS_CURRENT_BANK_01 (0x1 << 16) // (UDPHS_EPT) Bank 1
  3372. #define AT91C_UDPHS_CURRENT_BANK_10 (0x2 << 16) // (UDPHS_EPT) Bank 2
  3373. #define AT91C_UDPHS_CURRENT_BANK_11 (0x3 << 16) // (UDPHS_EPT) Invalid
  3374. #define AT91C_UDPHS_BUSY_BANK_STA (0x3 << 18) // (UDPHS_EPT) Busy Bank Number
  3375. #define AT91C_UDPHS_BUSY_BANK_STA_00 (0x0 << 18) // (UDPHS_EPT) All banks are free
  3376. #define AT91C_UDPHS_BUSY_BANK_STA_01 (0x1 << 18) // (UDPHS_EPT) 1 busy bank
  3377. #define AT91C_UDPHS_BUSY_BANK_STA_10 (0x2 << 18) // (UDPHS_EPT) 2 busy banks
  3378. #define AT91C_UDPHS_BUSY_BANK_STA_11 (0x3 << 18) // (UDPHS_EPT) 3 busy banks (if possible)
  3379. #define AT91C_UDPHS_BYTE_COUNT (0x7FF << 20) // (UDPHS_EPT) UDPHS Byte Count
  3380. // *****************************************************************************
  3381. // SOFTWARE API DEFINITION FOR UDPHS DMA struct
  3382. // *****************************************************************************
  3383. #ifndef __ASSEMBLY__
  3384. typedef struct _AT91S_UDPHS_DMA {
  3385. AT91C_REG UDPHS_DMANXTDSC; // UDPHS DMA Channel Next Descriptor Address
  3386. AT91C_REG UDPHS_DMAADDRESS; // UDPHS DMA Channel Address Register
  3387. AT91C_REG UDPHS_DMACONTROL; // UDPHS DMA Channel Control Register
  3388. AT91C_REG UDPHS_DMASTATUS; // UDPHS DMA Channel Status Register
  3389. } AT91S_UDPHS_DMA, *AT91PS_UDPHS_DMA;
  3390. #else
  3391. #define UDPHS_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0x00000000) // (UDPHS_DMANXTDSC) UDPHS DMA Channel Next Descriptor Address
  3392. #define UDPHS_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0x00000004) // (UDPHS_DMAADDRESS) UDPHS DMA Channel Address Register
  3393. #define UDPHS_DMACONTROL (AT91C_CAST(AT91C_REG *) 0x00000008) // (UDPHS_DMACONTROL) UDPHS DMA Channel Control Register
  3394. #define UDPHS_DMASTATUS (AT91C_CAST(AT91C_REG *) 0x0000000C) // (UDPHS_DMASTATUS) UDPHS DMA Channel Status Register
  3395. #endif
  3396. // -------- UDPHS_DMANXTDSC : (UDPHS_DMA Offset: 0x0) UDPHS DMA Next Descriptor Address Register --------
  3397. #define AT91C_UDPHS_NXT_DSC_ADD (0xFFFFFFF << 4) // (UDPHS_DMA) next Channel Descriptor
  3398. // -------- UDPHS_DMAADDRESS : (UDPHS_DMA Offset: 0x4) UDPHS DMA Channel Address Register --------
  3399. #define AT91C_UDPHS_BUFF_ADD (0x0 << 0) // (UDPHS_DMA) starting address of a DMA Channel transfer
  3400. // -------- UDPHS_DMACONTROL : (UDPHS_DMA Offset: 0x8) UDPHS DMA Channel Control Register --------
  3401. #define AT91C_UDPHS_CHANN_ENB (0x1 << 0) // (UDPHS_DMA) Channel Enabled
  3402. #define AT91C_UDPHS_LDNXT_DSC (0x1 << 1) // (UDPHS_DMA) Load Next Channel Transfer Descriptor Enable
  3403. #define AT91C_UDPHS_END_TR_EN (0x1 << 2) // (UDPHS_DMA) Buffer Close Input Enable
  3404. #define AT91C_UDPHS_END_B_EN (0x1 << 3) // (UDPHS_DMA) End of DMA Buffer Packet Validation
  3405. #define AT91C_UDPHS_END_TR_IT (0x1 << 4) // (UDPHS_DMA) End Of Transfer Interrupt Enable
  3406. #define AT91C_UDPHS_END_BUFFIT (0x1 << 5) // (UDPHS_DMA) End Of Channel Buffer Interrupt Enable
  3407. #define AT91C_UDPHS_DESC_LD_IT (0x1 << 6) // (UDPHS_DMA) Descriptor Loaded Interrupt Enable
  3408. #define AT91C_UDPHS_BURST_LCK (0x1 << 7) // (UDPHS_DMA) Burst Lock Enable
  3409. #define AT91C_UDPHS_BUFF_LENGTH (0xFFFF << 16) // (UDPHS_DMA) Buffer Byte Length (write only)
  3410. // -------- UDPHS_DMASTATUS : (UDPHS_DMA Offset: 0xc) UDPHS DMA Channelx Status Register --------
  3411. #define AT91C_UDPHS_CHANN_ACT (0x1 << 1) // (UDPHS_DMA)
  3412. #define AT91C_UDPHS_END_TR_ST (0x1 << 4) // (UDPHS_DMA)
  3413. #define AT91C_UDPHS_END_BF_ST (0x1 << 5) // (UDPHS_DMA)
  3414. #define AT91C_UDPHS_DESC_LDST (0x1 << 6) // (UDPHS_DMA)
  3415. #define AT91C_UDPHS_BUFF_COUNT (0xFFFF << 16) // (UDPHS_DMA)
  3416. // *****************************************************************************
  3417. // SOFTWARE API DEFINITION FOR UDPHS High Speed Device Interface
  3418. // *****************************************************************************
  3419. #ifndef __ASSEMBLY__
  3420. typedef struct _AT91S_UDPHS {
  3421. AT91C_REG UDPHS_CTRL; // UDPHS Control Register
  3422. AT91C_REG UDPHS_FNUM; // UDPHS Frame Number Register
  3423. AT91C_REG Reserved0[2]; //
  3424. AT91C_REG UDPHS_IEN; // UDPHS Interrupt Enable Register
  3425. AT91C_REG UDPHS_INTSTA; // UDPHS Interrupt Status Register
  3426. AT91C_REG UDPHS_CLRINT; // UDPHS Clear Interrupt Register
  3427. AT91C_REG UDPHS_EPTRST; // UDPHS Endpoints Reset Register
  3428. AT91C_REG Reserved1[44]; //
  3429. AT91C_REG UDPHS_TSTSOFCNT; // UDPHS Test SOF Counter Register
  3430. AT91C_REG UDPHS_TSTCNTA; // UDPHS Test A Counter Register
  3431. AT91C_REG UDPHS_TSTCNTB; // UDPHS Test B Counter Register
  3432. AT91C_REG UDPHS_TSTMODREG; // UDPHS Test Mode Register
  3433. AT91C_REG UDPHS_TST; // UDPHS Test Register
  3434. AT91C_REG Reserved2[2]; //
  3435. AT91C_REG UDPHS_RIPPADDRSIZE; // UDPHS PADDRSIZE Register
  3436. AT91C_REG UDPHS_RIPNAME1; // UDPHS Name1 Register
  3437. AT91C_REG UDPHS_RIPNAME2; // UDPHS Name2 Register
  3438. AT91C_REG UDPHS_IPFEATURES; // UDPHS Features Register
  3439. AT91C_REG UDPHS_IPVERSION; // UDPHS Version Register
  3440. AT91S_UDPHS_EPT UDPHS_EPT[7]; // UDPHS Endpoint struct
  3441. AT91C_REG Reserved3[72]; //
  3442. AT91S_UDPHS_DMA UDPHS_DMA[7]; // UDPHS DMA channel struct (not use [0])
  3443. } AT91S_UDPHS, *AT91PS_UDPHS;
  3444. #else
  3445. #define UDPHS_CTRL (AT91C_CAST(AT91C_REG *) 0x00000000) // (UDPHS_CTRL) UDPHS Control Register
  3446. #define UDPHS_FNUM (AT91C_CAST(AT91C_REG *) 0x00000004) // (UDPHS_FNUM) UDPHS Frame Number Register
  3447. #define UDPHS_IEN (AT91C_CAST(AT91C_REG *) 0x00000010) // (UDPHS_IEN) UDPHS Interrupt Enable Register
  3448. #define UDPHS_INTSTA (AT91C_CAST(AT91C_REG *) 0x00000014) // (UDPHS_INTSTA) UDPHS Interrupt Status Register
  3449. #define UDPHS_CLRINT (AT91C_CAST(AT91C_REG *) 0x00000018) // (UDPHS_CLRINT) UDPHS Clear Interrupt Register
  3450. #define UDPHS_EPTRST (AT91C_CAST(AT91C_REG *) 0x0000001C) // (UDPHS_EPTRST) UDPHS Endpoints Reset Register
  3451. #define UDPHS_TSTSOFCNT (AT91C_CAST(AT91C_REG *) 0x000000D0) // (UDPHS_TSTSOFCNT) UDPHS Test SOF Counter Register
  3452. #define UDPHS_TSTCNTA (AT91C_CAST(AT91C_REG *) 0x000000D4) // (UDPHS_TSTCNTA) UDPHS Test A Counter Register
  3453. #define UDPHS_TSTCNTB (AT91C_CAST(AT91C_REG *) 0x000000D8) // (UDPHS_TSTCNTB) UDPHS Test B Counter Register
  3454. #define UDPHS_TSTMODREG (AT91C_CAST(AT91C_REG *) 0x000000DC) // (UDPHS_TSTMODREG) UDPHS Test Mode Register
  3455. #define UDPHS_TST (AT91C_CAST(AT91C_REG *) 0x000000E0) // (UDPHS_TST) UDPHS Test Register
  3456. #define UDPHS_RIPPADDRSIZE (AT91C_CAST(AT91C_REG *) 0x000000EC) // (UDPHS_RIPPADDRSIZE) UDPHS PADDRSIZE Register
  3457. #define UDPHS_RIPNAME1 (AT91C_CAST(AT91C_REG *) 0x000000F0) // (UDPHS_RIPNAME1) UDPHS Name1 Register
  3458. #define UDPHS_RIPNAME2 (AT91C_CAST(AT91C_REG *) 0x000000F4) // (UDPHS_RIPNAME2) UDPHS Name2 Register
  3459. #define UDPHS_IPFEATURES (AT91C_CAST(AT91C_REG *) 0x000000F8) // (UDPHS_IPFEATURES) UDPHS Features Register
  3460. #define UDPHS_IPVERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (UDPHS_IPVERSION) UDPHS Version Register
  3461. #endif
  3462. // -------- UDPHS_CTRL : (UDPHS Offset: 0x0) UDPHS Control Register --------
  3463. #define AT91C_UDPHS_DEV_ADDR (0x7F << 0) // (UDPHS) UDPHS Address
  3464. #define AT91C_UDPHS_FADDR_EN (0x1 << 7) // (UDPHS) Function Address Enable
  3465. #define AT91C_UDPHS_EN_UDPHS (0x1 << 8) // (UDPHS) UDPHS Enable
  3466. #define AT91C_UDPHS_DETACH (0x1 << 9) // (UDPHS) Detach Command
  3467. #define AT91C_UDPHS_REWAKEUP (0x1 << 10) // (UDPHS) Send Remote Wake Up
  3468. #define AT91C_UDPHS_PULLD_DIS (0x1 << 11) // (UDPHS) PullDown Disable
  3469. // -------- UDPHS_FNUM : (UDPHS Offset: 0x4) UDPHS Frame Number Register --------
  3470. #define AT91C_UDPHS_MICRO_FRAME_NUM (0x7 << 0) // (UDPHS) Micro Frame Number
  3471. #define AT91C_UDPHS_FRAME_NUMBER (0x7FF << 3) // (UDPHS) Frame Number as defined in the Packet Field Formats
  3472. #define AT91C_UDPHS_FNUM_ERR (0x1 << 31) // (UDPHS) Frame Number CRC Error
  3473. // -------- UDPHS_IEN : (UDPHS Offset: 0x10) UDPHS Interrupt Enable Register --------
  3474. #define AT91C_UDPHS_DET_SUSPD (0x1 << 1) // (UDPHS) Suspend Interrupt Enable/Clear/Status
  3475. #define AT91C_UDPHS_MICRO_SOF (0x1 << 2) // (UDPHS) Micro-SOF Interrupt Enable/Clear/Status
  3476. #define AT91C_UDPHS_IEN_SOF (0x1 << 3) // (UDPHS) SOF Interrupt Enable/Clear/Status
  3477. #define AT91C_UDPHS_ENDRESET (0x1 << 4) // (UDPHS) End Of Reset Interrupt Enable/Clear/Status
  3478. #define AT91C_UDPHS_WAKE_UP (0x1 << 5) // (UDPHS) Wake Up CPU Interrupt Enable/Clear/Status
  3479. #define AT91C_UDPHS_ENDOFRSM (0x1 << 6) // (UDPHS) End Of Resume Interrupt Enable/Clear/Status
  3480. #define AT91C_UDPHS_UPSTR_RES (0x1 << 7) // (UDPHS) Upstream Resume Interrupt Enable/Clear/Status
  3481. #define AT91C_UDPHS_EPT_INT_0 (0x1 << 8) // (UDPHS) Endpoint 0 Interrupt Enable/Status
  3482. #define AT91C_UDPHS_EPT_INT_1 (0x1 << 9) // (UDPHS) Endpoint 1 Interrupt Enable/Status
  3483. #define AT91C_UDPHS_EPT_INT_2 (0x1 << 10) // (UDPHS) Endpoint 2 Interrupt Enable/Status
  3484. #define AT91C_UDPHS_EPT_INT_3 (0x1 << 11) // (UDPHS) Endpoint 3 Interrupt Enable/Status
  3485. #define AT91C_UDPHS_EPT_INT_4 (0x1 << 12) // (UDPHS) Endpoint 4 Interrupt Enable/Status
  3486. #define AT91C_UDPHS_EPT_INT_5 (0x1 << 13) // (UDPHS) Endpoint 5 Interrupt Enable/Status
  3487. #define AT91C_UDPHS_EPT_INT_6 (0x1 << 14) // (UDPHS) Endpoint 6 Interrupt Enable/Status
  3488. #define AT91C_UDPHS_DMA_INT_1 (0x1 << 25) // (UDPHS) DMA Channel 1 Interrupt Enable/Status
  3489. #define AT91C_UDPHS_DMA_INT_2 (0x1 << 26) // (UDPHS) DMA Channel 2 Interrupt Enable/Status
  3490. #define AT91C_UDPHS_DMA_INT_3 (0x1 << 27) // (UDPHS) DMA Channel 3 Interrupt Enable/Status
  3491. #define AT91C_UDPHS_DMA_INT_4 (0x1 << 28) // (UDPHS) DMA Channel 4 Interrupt Enable/Status
  3492. #define AT91C_UDPHS_DMA_INT_5 (0x1 << 29) // (UDPHS) DMA Channel 5 Interrupt Enable/Status
  3493. #define AT91C_UDPHS_DMA_INT_6 (0x1 << 30) // (UDPHS) DMA Channel 6 Interrupt Enable/Status
  3494. // -------- UDPHS_INTSTA : (UDPHS Offset: 0x14) UDPHS Interrupt Status Register --------
  3495. #define AT91C_UDPHS_SPEED (0x1 << 0) // (UDPHS) Speed Status
  3496. // -------- UDPHS_CLRINT : (UDPHS Offset: 0x18) UDPHS Clear Interrupt Register --------
  3497. // -------- UDPHS_EPTRST : (UDPHS Offset: 0x1c) UDPHS Endpoints Reset Register --------
  3498. #define AT91C_UDPHS_RST_EPT_0 (0x1 << 0) // (UDPHS) Endpoint Reset 0
  3499. #define AT91C_UDPHS_RST_EPT_1 (0x1 << 1) // (UDPHS) Endpoint Reset 1
  3500. #define AT91C_UDPHS_RST_EPT_2 (0x1 << 2) // (UDPHS) Endpoint Reset 2
  3501. #define AT91C_UDPHS_RST_EPT_3 (0x1 << 3) // (UDPHS) Endpoint Reset 3
  3502. #define AT91C_UDPHS_RST_EPT_4 (0x1 << 4) // (UDPHS) Endpoint Reset 4
  3503. #define AT91C_UDPHS_RST_EPT_5 (0x1 << 5) // (UDPHS) Endpoint Reset 5
  3504. #define AT91C_UDPHS_RST_EPT_6 (0x1 << 6) // (UDPHS) Endpoint Reset 6
  3505. // -------- UDPHS_TSTSOFCNT : (UDPHS Offset: 0xd0) UDPHS Test SOF Counter Register --------
  3506. #define AT91C_UDPHS_SOFCNTMAX (0x3 << 0) // (UDPHS) SOF Counter Max Value
  3507. #define AT91C_UDPHS_SOFCTLOAD (0x1 << 7) // (UDPHS) SOF Counter Load
  3508. // -------- UDPHS_TSTCNTA : (UDPHS Offset: 0xd4) UDPHS Test A Counter Register --------
  3509. #define AT91C_UDPHS_CNTAMAX (0x7FFF << 0) // (UDPHS) A Counter Max Value
  3510. #define AT91C_UDPHS_CNTALOAD (0x1 << 15) // (UDPHS) A Counter Load
  3511. // -------- UDPHS_TSTCNTB : (UDPHS Offset: 0xd8) UDPHS Test B Counter Register --------
  3512. #define AT91C_UDPHS_CNTBMAX (0x7FFF << 0) // (UDPHS) B Counter Max Value
  3513. #define AT91C_UDPHS_CNTBLOAD (0x1 << 15) // (UDPHS) B Counter Load
  3514. // -------- UDPHS_TSTMODREG : (UDPHS Offset: 0xdc) UDPHS Test Mode Register --------
  3515. #define AT91C_UDPHS_TSTMODE (0x1F << 1) // (UDPHS) UDPHS Core TestModeReg
  3516. // -------- UDPHS_TST : (UDPHS Offset: 0xe0) UDPHS Test Register --------
  3517. #define AT91C_UDPHS_SPEED_CFG (0x3 << 0) // (UDPHS) Speed Configuration
  3518. #define AT91C_UDPHS_SPEED_CFG_NM (0x0) // (UDPHS) Normal Mode
  3519. #define AT91C_UDPHS_SPEED_CFG_RS (0x1) // (UDPHS) Reserved
  3520. #define AT91C_UDPHS_SPEED_CFG_HS (0x2) // (UDPHS) Force High Speed
  3521. #define AT91C_UDPHS_SPEED_CFG_FS (0x3) // (UDPHS) Force Full-Speed
  3522. #define AT91C_UDPHS_TST_J (0x1 << 2) // (UDPHS) TestJMode
  3523. #define AT91C_UDPHS_TST_K (0x1 << 3) // (UDPHS) TestKMode
  3524. #define AT91C_UDPHS_TST_PKT (0x1 << 4) // (UDPHS) TestPacketMode
  3525. #define AT91C_UDPHS_OPMODE2 (0x1 << 5) // (UDPHS) OpMode2
  3526. // -------- UDPHS_RIPPADDRSIZE : (UDPHS Offset: 0xec) UDPHS PADDRSIZE Register --------
  3527. #define AT91C_UDPHS_IPPADDRSIZE (0x0 << 0) // (UDPHS) 2^UDPHSDEV_PADDR_SIZE
  3528. // -------- UDPHS_RIPNAME1 : (UDPHS Offset: 0xf0) UDPHS Name Register --------
  3529. #define AT91C_UDPHS_IPNAME1 (0x0 << 0) // (UDPHS) ASCII string HUSB
  3530. // -------- UDPHS_RIPNAME2 : (UDPHS Offset: 0xf4) UDPHS Name Register --------
  3531. #define AT91C_UDPHS_IPNAME2 (0x0 << 0) // (UDPHS) ASCII string 2DEV
  3532. // -------- UDPHS_IPFEATURES : (UDPHS Offset: 0xf8) UDPHS Features Register --------
  3533. #define AT91C_UDPHS_EPT_NBR_MAX (0xF << 0) // (UDPHS) Max Number of Endpoints
  3534. #define AT91C_UDPHS_DMA_CHANNEL_NBR (0x7 << 4) // (UDPHS) Number of DMA Channels
  3535. #define AT91C_UDPHS_DMA_B_SIZ (0x1 << 7) // (UDPHS) DMA Buffer Size
  3536. #define AT91C_UDPHS_DMA_FIFO_WORD_DEPTH (0xF << 8) // (UDPHS) DMA FIFO Depth in words
  3537. #define AT91C_UDPHS_FIFO_MAX_SIZE (0x7 << 12) // (UDPHS) DPRAM size
  3538. #define AT91C_UDPHS_BW_DPRAM (0x1 << 15) // (UDPHS) DPRAM byte write capability
  3539. #define AT91C_UDPHS_DATAB16_8 (0x1 << 16) // (UDPHS) UTMI DataBus16_8
  3540. #define AT91C_UDPHS_ISO_EPT_1 (0x1 << 17) // (UDPHS) Endpoint 1 High Bandwidth Isochronous Capability
  3541. #define AT91C_UDPHS_ISO_EPT_2 (0x1 << 18) // (UDPHS) Endpoint 2 High Bandwidth Isochronous Capability
  3542. #define AT91C_UDPHS_ISO_EPT_5 (0x1 << 21) // (UDPHS) Endpoint 5 High Bandwidth Isochronous Capability
  3543. #define AT91C_UDPHS_ISO_EPT_6 (0x1 << 22) // (UDPHS) Endpoint 6 High Bandwidth Isochronous Capability
  3544. // -------- UDPHS_IPVERSION : (UDPHS Offset: 0xfc) UDPHS Version Register --------
  3545. #define AT91C_UDPHS_VERSION_NUM (0xFFFF << 0) // (UDPHS) Give the IP version
  3546. #define AT91C_UDPHS_METAL_FIX_NUM (0x7 << 16) // (UDPHS) Give the number of metal fixes
  3547. // *****************************************************************************
  3548. // SOFTWARE API DEFINITION FOR AC97 Controller Interface
  3549. // *****************************************************************************
  3550. #ifndef __ASSEMBLY__
  3551. typedef struct _AT91S_AC97C {
  3552. AT91C_REG Reserved0[2]; //
  3553. AT91C_REG AC97C_MR; // Mode Register
  3554. AT91C_REG Reserved1[1]; //
  3555. AT91C_REG AC97C_ICA; // Input Channel AssignementRegister
  3556. AT91C_REG AC97C_OCA; // Output Channel Assignement Register
  3557. AT91C_REG Reserved2[2]; //
  3558. AT91C_REG AC97C_CARHR; // Channel A Receive Holding Register
  3559. AT91C_REG AC97C_CATHR; // Channel A Transmit Holding Register
  3560. AT91C_REG AC97C_CASR; // Channel A Status Register
  3561. AT91C_REG AC97C_CAMR; // Channel A Mode Register
  3562. AT91C_REG AC97C_CBRHR; // Channel B Receive Holding Register (optional)
  3563. AT91C_REG AC97C_CBTHR; // Channel B Transmit Holding Register (optional)
  3564. AT91C_REG AC97C_CBSR; // Channel B Status Register
  3565. AT91C_REG AC97C_CBMR; // Channel B Mode Register
  3566. AT91C_REG AC97C_CORHR; // COdec Transmit Holding Register
  3567. AT91C_REG AC97C_COTHR; // COdec Transmit Holding Register
  3568. AT91C_REG AC97C_COSR; // CODEC Status Register
  3569. AT91C_REG AC97C_COMR; // CODEC Mask Status Register
  3570. AT91C_REG AC97C_SR; // Status Register
  3571. AT91C_REG AC97C_IER; // Interrupt Enable Register
  3572. AT91C_REG AC97C_IDR; // Interrupt Disable Register
  3573. AT91C_REG AC97C_IMR; // Interrupt Mask Register
  3574. AT91C_REG Reserved3[39]; //
  3575. AT91C_REG AC97C_VERSION; // Version Register
  3576. AT91C_REG AC97C_RPR; // Receive Pointer Register
  3577. AT91C_REG AC97C_RCR; // Receive Counter Register
  3578. AT91C_REG AC97C_TPR; // Transmit Pointer Register
  3579. AT91C_REG AC97C_TCR; // Transmit Counter Register
  3580. AT91C_REG AC97C_RNPR; // Receive Next Pointer Register
  3581. AT91C_REG AC97C_RNCR; // Receive Next Counter Register
  3582. AT91C_REG AC97C_TNPR; // Transmit Next Pointer Register
  3583. AT91C_REG AC97C_TNCR; // Transmit Next Counter Register
  3584. AT91C_REG AC97C_PTCR; // PDC Transfer Control Register
  3585. AT91C_REG AC97C_PTSR; // PDC Transfer Status Register
  3586. } AT91S_AC97C, *AT91PS_AC97C;
  3587. #else
  3588. #define AC97C_MR (AT91C_CAST(AT91C_REG *) 0x00000008) // (AC97C_MR) Mode Register
  3589. #define AC97C_ICA (AT91C_CAST(AT91C_REG *) 0x00000010) // (AC97C_ICA) Input Channel AssignementRegister
  3590. #define AC97C_OCA (AT91C_CAST(AT91C_REG *) 0x00000014) // (AC97C_OCA) Output Channel Assignement Register
  3591. #define AC97C_CARHR (AT91C_CAST(AT91C_REG *) 0x00000020) // (AC97C_CARHR) Channel A Receive Holding Register
  3592. #define AC97C_CATHR (AT91C_CAST(AT91C_REG *) 0x00000024) // (AC97C_CATHR) Channel A Transmit Holding Register
  3593. #define AC97C_CASR (AT91C_CAST(AT91C_REG *) 0x00000028) // (AC97C_CASR) Channel A Status Register
  3594. #define AC97C_CAMR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (AC97C_CAMR) Channel A Mode Register
  3595. #define AC97C_CBRHR (AT91C_CAST(AT91C_REG *) 0x00000030) // (AC97C_CBRHR) Channel B Receive Holding Register (optional)
  3596. #define AC97C_CBTHR (AT91C_CAST(AT91C_REG *) 0x00000034) // (AC97C_CBTHR) Channel B Transmit Holding Register (optional)
  3597. #define AC97C_CBSR (AT91C_CAST(AT91C_REG *) 0x00000038) // (AC97C_CBSR) Channel B Status Register
  3598. #define AC97C_CBMR (AT91C_CAST(AT91C_REG *) 0x0000003C) // (AC97C_CBMR) Channel B Mode Register
  3599. #define AC97C_CORHR (AT91C_CAST(AT91C_REG *) 0x00000040) // (AC97C_CORHR) COdec Transmit Holding Register
  3600. #define AC97C_COTHR (AT91C_CAST(AT91C_REG *) 0x00000044) // (AC97C_COTHR) COdec Transmit Holding Register
  3601. #define AC97C_COSR (AT91C_CAST(AT91C_REG *) 0x00000048) // (AC97C_COSR) CODEC Status Register
  3602. #define AC97C_COMR (AT91C_CAST(AT91C_REG *) 0x0000004C) // (AC97C_COMR) CODEC Mask Status Register
  3603. #define AC97C_SR (AT91C_CAST(AT91C_REG *) 0x00000050) // (AC97C_SR) Status Register
  3604. #define AC97C_IER (AT91C_CAST(AT91C_REG *) 0x00000054) // (AC97C_IER) Interrupt Enable Register
  3605. #define AC97C_IDR (AT91C_CAST(AT91C_REG *) 0x00000058) // (AC97C_IDR) Interrupt Disable Register
  3606. #define AC97C_IMR (AT91C_CAST(AT91C_REG *) 0x0000005C) // (AC97C_IMR) Interrupt Mask Register
  3607. #define AC97C_VERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (AC97C_VERSION) Version Register
  3608. #endif
  3609. // -------- AC97C_MR : (AC97C Offset: 0x8) AC97C Mode Register --------
  3610. #define AT91C_AC97C_ENA (0x1 << 0) // (AC97C) AC97 Controller Global Enable
  3611. #define AT91C_AC97C_WRST (0x1 << 1) // (AC97C) Warm Reset
  3612. #define AT91C_AC97C_VRA (0x1 << 2) // (AC97C) Variable RAte (for Data Slots)
  3613. // -------- AC97C_ICA : (AC97C Offset: 0x10) AC97C Input Channel Assignement Register --------
  3614. #define AT91C_AC97C_CHID3 (0x7 << 0) // (AC97C) Channel Id for the input slot 3
  3615. #define AT91C_AC97C_CHID3_NONE (0x0) // (AC97C) No data will be transmitted during this slot
  3616. #define AT91C_AC97C_CHID3_CA (0x1) // (AC97C) Channel A data will be transmitted during this slot
  3617. #define AT91C_AC97C_CHID3_CB (0x2) // (AC97C) Channel B data will be transmitted during this slot
  3618. #define AT91C_AC97C_CHID3_CC (0x3) // (AC97C) Channel C data will be transmitted during this slot
  3619. #define AT91C_AC97C_CHID4 (0x7 << 3) // (AC97C) Channel Id for the input slot 4
  3620. #define AT91C_AC97C_CHID4_NONE (0x0 << 3) // (AC97C) No data will be transmitted during this slot
  3621. #define AT91C_AC97C_CHID4_CA (0x1 << 3) // (AC97C) Channel A data will be transmitted during this slot
  3622. #define AT91C_AC97C_CHID4_CB (0x2 << 3) // (AC97C) Channel B data will be transmitted during this slot
  3623. #define AT91C_AC97C_CHID4_CC (0x3 << 3) // (AC97C) Channel C data will be transmitted during this slot
  3624. #define AT91C_AC97C_CHID5 (0x7 << 6) // (AC97C) Channel Id for the input slot 5
  3625. #define AT91C_AC97C_CHID5_NONE (0x0 << 6) // (AC97C) No data will be transmitted during this slot
  3626. #define AT91C_AC97C_CHID5_CA (0x1 << 6) // (AC97C) Channel A data will be transmitted during this slot
  3627. #define AT91C_AC97C_CHID5_CB (0x2 << 6) // (AC97C) Channel B data will be transmitted during this slot
  3628. #define AT91C_AC97C_CHID5_CC (0x3 << 6) // (AC97C) Channel C data will be transmitted during this slot
  3629. #define AT91C_AC97C_CHID6 (0x7 << 9) // (AC97C) Channel Id for the input slot 6
  3630. #define AT91C_AC97C_CHID6_NONE (0x0 << 9) // (AC97C) No data will be transmitted during this slot
  3631. #define AT91C_AC97C_CHID6_CA (0x1 << 9) // (AC97C) Channel A data will be transmitted during this slot
  3632. #define AT91C_AC97C_CHID6_CB (0x2 << 9) // (AC97C) Channel B data will be transmitted during this slot
  3633. #define AT91C_AC97C_CHID6_CC (0x3 << 9) // (AC97C) Channel C data will be transmitted during this slot
  3634. #define AT91C_AC97C_CHID7 (0x7 << 12) // (AC97C) Channel Id for the input slot 7
  3635. #define AT91C_AC97C_CHID7_NONE (0x0 << 12) // (AC97C) No data will be transmitted during this slot
  3636. #define AT91C_AC97C_CHID7_CA (0x1 << 12) // (AC97C) Channel A data will be transmitted during this slot
  3637. #define AT91C_AC97C_CHID7_CB (0x2 << 12) // (AC97C) Channel B data will be transmitted during this slot
  3638. #define AT91C_AC97C_CHID7_CC (0x3 << 12) // (AC97C) Channel C data will be transmitted during this slot
  3639. #define AT91C_AC97C_CHID8 (0x7 << 15) // (AC97C) Channel Id for the input slot 8
  3640. #define AT91C_AC97C_CHID8_NONE (0x0 << 15) // (AC97C) No data will be transmitted during this slot
  3641. #define AT91C_AC97C_CHID8_CA (0x1 << 15) // (AC97C) Channel A data will be transmitted during this slot
  3642. #define AT91C_AC97C_CHID8_CB (0x2 << 15) // (AC97C) Channel B data will be transmitted during this slot
  3643. #define AT91C_AC97C_CHID8_CC (0x3 << 15) // (AC97C) Channel C data will be transmitted during this slot
  3644. #define AT91C_AC97C_CHID9 (0x7 << 18) // (AC97C) Channel Id for the input slot 9
  3645. #define AT91C_AC97C_CHID9_NONE (0x0 << 18) // (AC97C) No data will be transmitted during this slot
  3646. #define AT91C_AC97C_CHID9_CA (0x1 << 18) // (AC97C) Channel A data will be transmitted during this slot
  3647. #define AT91C_AC97C_CHID9_CB (0x2 << 18) // (AC97C) Channel B data will be transmitted during this slot
  3648. #define AT91C_AC97C_CHID9_CC (0x3 << 18) // (AC97C) Channel C data will be transmitted during this slot
  3649. #define AT91C_AC97C_CHID10 (0x7 << 21) // (AC97C) Channel Id for the input slot 10
  3650. #define AT91C_AC97C_CHID10_NONE (0x0 << 21) // (AC97C) No data will be transmitted during this slot
  3651. #define AT91C_AC97C_CHID10_CA (0x1 << 21) // (AC97C) Channel A data will be transmitted during this slot
  3652. #define AT91C_AC97C_CHID10_CB (0x2 << 21) // (AC97C) Channel B data will be transmitted during this slot
  3653. #define AT91C_AC97C_CHID10_CC (0x3 << 21) // (AC97C) Channel C data will be transmitted during this slot
  3654. #define AT91C_AC97C_CHID11 (0x7 << 24) // (AC97C) Channel Id for the input slot 11
  3655. #define AT91C_AC97C_CHID11_NONE (0x0 << 24) // (AC97C) No data will be transmitted during this slot
  3656. #define AT91C_AC97C_CHID11_CA (0x1 << 24) // (AC97C) Channel A data will be transmitted during this slot
  3657. #define AT91C_AC97C_CHID11_CB (0x2 << 24) // (AC97C) Channel B data will be transmitted during this slot
  3658. #define AT91C_AC97C_CHID11_CC (0x3 << 24) // (AC97C) Channel C data will be transmitted during this slot
  3659. #define AT91C_AC97C_CHID12 (0x7 << 27) // (AC97C) Channel Id for the input slot 12
  3660. #define AT91C_AC97C_CHID12_NONE (0x0 << 27) // (AC97C) No data will be transmitted during this slot
  3661. #define AT91C_AC97C_CHID12_CA (0x1 << 27) // (AC97C) Channel A data will be transmitted during this slot
  3662. #define AT91C_AC97C_CHID12_CB (0x2 << 27) // (AC97C) Channel B data will be transmitted during this slot
  3663. #define AT91C_AC97C_CHID12_CC (0x3 << 27) // (AC97C) Channel C data will be transmitted during this slot
  3664. // -------- AC97C_OCA : (AC97C Offset: 0x14) AC97C Output Channel Assignement Register --------
  3665. // -------- AC97C_CARHR : (AC97C Offset: 0x20) AC97C Channel A Receive Holding Register --------
  3666. #define AT91C_AC97C_RDATA (0xFFFFF << 0) // (AC97C) Receive data
  3667. // -------- AC97C_CATHR : (AC97C Offset: 0x24) AC97C Channel A Transmit Holding Register --------
  3668. #define AT91C_AC97C_TDATA (0xFFFFF << 0) // (AC97C) Transmit data
  3669. // -------- AC97C_CASR : (AC97C Offset: 0x28) AC97C Channel A Status Register --------
  3670. #define AT91C_AC97C_TXRDY (0x1 << 0) // (AC97C)
  3671. #define AT91C_AC97C_TXEMPTY (0x1 << 1) // (AC97C)
  3672. #define AT91C_AC97C_UNRUN (0x1 << 2) // (AC97C)
  3673. #define AT91C_AC97C_RXRDY (0x1 << 4) // (AC97C)
  3674. #define AT91C_AC97C_OVRUN (0x1 << 5) // (AC97C)
  3675. #define AT91C_AC97C_ENDTX (0x1 << 10) // (AC97C)
  3676. #define AT91C_AC97C_TXBUFE (0x1 << 11) // (AC97C)
  3677. #define AT91C_AC97C_ENDRX (0x1 << 14) // (AC97C)
  3678. #define AT91C_AC97C_RXBUFF (0x1 << 15) // (AC97C)
  3679. // -------- AC97C_CAMR : (AC97C Offset: 0x2c) AC97C Channel A Mode Register --------
  3680. #define AT91C_AC97C_SIZE (0x3 << 16) // (AC97C)
  3681. #define AT91C_AC97C_SIZE_20_BITS (0x0 << 16) // (AC97C) Data size is 20 bits
  3682. #define AT91C_AC97C_SIZE_18_BITS (0x1 << 16) // (AC97C) Data size is 18 bits
  3683. #define AT91C_AC97C_SIZE_16_BITS (0x2 << 16) // (AC97C) Data size is 16 bits
  3684. #define AT91C_AC97C_SIZE_10_BITS (0x3 << 16) // (AC97C) Data size is 10 bits
  3685. #define AT91C_AC97C_CEM (0x1 << 18) // (AC97C)
  3686. #define AT91C_AC97C_CEN (0x1 << 21) // (AC97C)
  3687. #define AT91C_AC97C_PDCEN (0x1 << 22) // (AC97C)
  3688. // -------- AC97C_CBRHR : (AC97C Offset: 0x30) AC97C Channel B Receive Holding Register --------
  3689. // -------- AC97C_CBTHR : (AC97C Offset: 0x34) AC97C Channel B Transmit Holding Register --------
  3690. // -------- AC97C_CBSR : (AC97C Offset: 0x38) AC97C Channel B Status Register --------
  3691. // -------- AC97C_CBMR : (AC97C Offset: 0x3c) AC97C Channel B Mode Register --------
  3692. // -------- AC97C_CORHR : (AC97C Offset: 0x40) AC97C Codec Channel Receive Holding Register --------
  3693. #define AT91C_AC97C_SDATA (0xFFFF << 0) // (AC97C) Status Data
  3694. // -------- AC97C_COTHR : (AC97C Offset: 0x44) AC97C Codec Channel Transmit Holding Register --------
  3695. #define AT91C_AC97C_CDATA (0xFFFF << 0) // (AC97C) Command Data
  3696. #define AT91C_AC97C_CADDR (0x7F << 16) // (AC97C) COdec control register index
  3697. #define AT91C_AC97C_READ (0x1 << 23) // (AC97C) Read/Write command
  3698. // -------- AC97C_COSR : (AC97C Offset: 0x48) AC97C CODEC Status Register --------
  3699. // -------- AC97C_COMR : (AC97C Offset: 0x4c) AC97C CODEC Mode Register --------
  3700. // -------- AC97C_SR : (AC97C Offset: 0x50) AC97C Status Register --------
  3701. #define AT91C_AC97C_SOF (0x1 << 0) // (AC97C)
  3702. #define AT91C_AC97C_WKUP (0x1 << 1) // (AC97C)
  3703. #define AT91C_AC97C_COEVT (0x1 << 2) // (AC97C)
  3704. #define AT91C_AC97C_CAEVT (0x1 << 3) // (AC97C)
  3705. #define AT91C_AC97C_CBEVT (0x1 << 4) // (AC97C)
  3706. // -------- AC97C_IER : (AC97C Offset: 0x54) AC97C Interrupt Enable Register --------
  3707. // -------- AC97C_IDR : (AC97C Offset: 0x58) AC97C Interrupt Disable Register --------
  3708. // -------- AC97C_IMR : (AC97C Offset: 0x5c) AC97C Interrupt Mask Register --------
  3709. // *****************************************************************************
  3710. // SOFTWARE API DEFINITION FOR LCD Controller
  3711. // *****************************************************************************
  3712. #ifndef __ASSEMBLY__
  3713. typedef struct _AT91S_LCDC {
  3714. AT91C_REG LCDC_BA1; // DMA Base Address Register 1
  3715. AT91C_REG LCDC_BA2; // DMA Base Address Register 2
  3716. AT91C_REG LCDC_FRMP1; // DMA Frame Pointer Register 1
  3717. AT91C_REG LCDC_FRMP2; // DMA Frame Pointer Register 2
  3718. AT91C_REG LCDC_FRMA1; // DMA Frame Address Register 1
  3719. AT91C_REG LCDC_FRMA2; // DMA Frame Address Register 2
  3720. AT91C_REG LCDC_FRMCFG; // DMA Frame Configuration Register
  3721. AT91C_REG LCDC_DMACON; // DMA Control Register
  3722. AT91C_REG LCDC_DMA2DCFG; // DMA 2D addressing configuration
  3723. AT91C_REG Reserved0[503]; //
  3724. AT91C_REG LCDC_LCDCON1; // LCD Control 1 Register
  3725. AT91C_REG LCDC_LCDCON2; // LCD Control 2 Register
  3726. AT91C_REG LCDC_TIM1; // LCD Timing Config 1 Register
  3727. AT91C_REG LCDC_TIM2; // LCD Timing Config 2 Register
  3728. AT91C_REG LCDC_LCDFRCFG; // LCD Frame Config Register
  3729. AT91C_REG LCDC_FIFO; // LCD FIFO Register
  3730. AT91C_REG LCDC_MVAL; // LCD Mode Toggle Rate Value Register
  3731. AT91C_REG LCDC_DP1_2; // Dithering Pattern DP1_2 Register
  3732. AT91C_REG LCDC_DP4_7; // Dithering Pattern DP4_7 Register
  3733. AT91C_REG LCDC_DP3_5; // Dithering Pattern DP3_5 Register
  3734. AT91C_REG LCDC_DP2_3; // Dithering Pattern DP2_3 Register
  3735. AT91C_REG LCDC_DP5_7; // Dithering Pattern DP5_7 Register
  3736. AT91C_REG LCDC_DP3_4; // Dithering Pattern DP3_4 Register
  3737. AT91C_REG LCDC_DP4_5; // Dithering Pattern DP4_5 Register
  3738. AT91C_REG LCDC_DP6_7; // Dithering Pattern DP6_7 Register
  3739. AT91C_REG LCDC_PWRCON; // Power Control Register
  3740. AT91C_REG LCDC_CTRSTCON; // Contrast Control Register
  3741. AT91C_REG LCDC_CTRSTVAL; // Contrast Value Register
  3742. AT91C_REG LCDC_IER; // Interrupt Enable Register
  3743. AT91C_REG LCDC_IDR; // Interrupt Disable Register
  3744. AT91C_REG LCDC_IMR; // Interrupt Mask Register
  3745. AT91C_REG LCDC_ISR; // Interrupt Enable Register
  3746. AT91C_REG LCDC_ICR; // Interrupt Clear Register
  3747. AT91C_REG LCDC_GPR; // General Purpose Register
  3748. AT91C_REG LCDC_ITR; // Interrupts Test Register
  3749. AT91C_REG LCDC_IRR; // Interrupts Raw Status Register
  3750. AT91C_REG Reserved1[230]; //
  3751. AT91C_REG LCDC_LUT_ENTRY[256]; // LUT Entries Register
  3752. } AT91S_LCDC, *AT91PS_LCDC;
  3753. #else
  3754. #define LCDC_BA1 (AT91C_CAST(AT91C_REG *) 0x00000000) // (LCDC_BA1) DMA Base Address Register 1
  3755. #define LCDC_BA2 (AT91C_CAST(AT91C_REG *) 0x00000004) // (LCDC_BA2) DMA Base Address Register 2
  3756. #define LCDC_FRMP1 (AT91C_CAST(AT91C_REG *) 0x00000008) // (LCDC_FRMP1) DMA Frame Pointer Register 1
  3757. #define LCDC_FRMP2 (AT91C_CAST(AT91C_REG *) 0x0000000C) // (LCDC_FRMP2) DMA Frame Pointer Register 2
  3758. #define LCDC_FRMA1 (AT91C_CAST(AT91C_REG *) 0x00000010) // (LCDC_FRMA1) DMA Frame Address Register 1
  3759. #define LCDC_FRMA2 (AT91C_CAST(AT91C_REG *) 0x00000014) // (LCDC_FRMA2) DMA Frame Address Register 2
  3760. #define LCDC_FRMCFG (AT91C_CAST(AT91C_REG *) 0x00000018) // (LCDC_FRMCFG) DMA Frame Configuration Register
  3761. #define LCDC_DMACON (AT91C_CAST(AT91C_REG *) 0x0000001C) // (LCDC_DMACON) DMA Control Register
  3762. #define LCDC_DMA2DCFG (AT91C_CAST(AT91C_REG *) 0x00000020) // (LCDC_DMA2DCFG) DMA 2D addressing configuration
  3763. #define LCDC_LCDCON1 (AT91C_CAST(AT91C_REG *) 0x00000800) // (LCDC_LCDCON1) LCD Control 1 Register
  3764. #define LCDC_LCDCON2 (AT91C_CAST(AT91C_REG *) 0x00000804) // (LCDC_LCDCON2) LCD Control 2 Register
  3765. #define LCDC_TIM1 (AT91C_CAST(AT91C_REG *) 0x00000808) // (LCDC_TIM1) LCD Timing Config 1 Register
  3766. #define LCDC_TIM2 (AT91C_CAST(AT91C_REG *) 0x0000080C) // (LCDC_TIM2) LCD Timing Config 2 Register
  3767. #define LCDC_LCDFRCFG (AT91C_CAST(AT91C_REG *) 0x00000810) // (LCDC_LCDFRCFG) LCD Frame Config Register
  3768. #define LCDC_FIFO (AT91C_CAST(AT91C_REG *) 0x00000814) // (LCDC_FIFO) LCD FIFO Register
  3769. #define LCDC_MVAL (AT91C_CAST(AT91C_REG *) 0x00000818) // (LCDC_MVAL) LCD Mode Toggle Rate Value Register
  3770. #define LCDC_DP1_2 (AT91C_CAST(AT91C_REG *) 0x0000081C) // (LCDC_DP1_2) Dithering Pattern DP1_2 Register
  3771. #define LCDC_DP4_7 (AT91C_CAST(AT91C_REG *) 0x00000820) // (LCDC_DP4_7) Dithering Pattern DP4_7 Register
  3772. #define LCDC_DP3_5 (AT91C_CAST(AT91C_REG *) 0x00000824) // (LCDC_DP3_5) Dithering Pattern DP3_5 Register
  3773. #define LCDC_DP2_3 (AT91C_CAST(AT91C_REG *) 0x00000828) // (LCDC_DP2_3) Dithering Pattern DP2_3 Register
  3774. #define LCDC_DP5_7 (AT91C_CAST(AT91C_REG *) 0x0000082C) // (LCDC_DP5_7) Dithering Pattern DP5_7 Register
  3775. #define LCDC_DP3_4 (AT91C_CAST(AT91C_REG *) 0x00000830) // (LCDC_DP3_4) Dithering Pattern DP3_4 Register
  3776. #define LCDC_DP4_5 (AT91C_CAST(AT91C_REG *) 0x00000834) // (LCDC_DP4_5) Dithering Pattern DP4_5 Register
  3777. #define LCDC_DP6_7 (AT91C_CAST(AT91C_REG *) 0x00000838) // (LCDC_DP6_7) Dithering Pattern DP6_7 Register
  3778. #define LCDC_PWRCON (AT91C_CAST(AT91C_REG *) 0x0000083C) // (LCDC_PWRCON) Power Control Register
  3779. #define LCDC_CTRSTCON (AT91C_CAST(AT91C_REG *) 0x00000840) // (LCDC_CTRSTCON) Contrast Control Register
  3780. #define LCDC_CTRSTVAL (AT91C_CAST(AT91C_REG *) 0x00000844) // (LCDC_CTRSTVAL) Contrast Value Register
  3781. #define LCDC_IER (AT91C_CAST(AT91C_REG *) 0x00000848) // (LCDC_IER) Interrupt Enable Register
  3782. #define LCDC_IDR (AT91C_CAST(AT91C_REG *) 0x0000084C) // (LCDC_IDR) Interrupt Disable Register
  3783. #define LCDC_IMR (AT91C_CAST(AT91C_REG *) 0x00000850) // (LCDC_IMR) Interrupt Mask Register
  3784. #define LCDC_ISR (AT91C_CAST(AT91C_REG *) 0x00000854) // (LCDC_ISR) Interrupt Enable Register
  3785. #define LCDC_ICR (AT91C_CAST(AT91C_REG *) 0x00000858) // (LCDC_ICR) Interrupt Clear Register
  3786. #define LCDC_GPR (AT91C_CAST(AT91C_REG *) 0x0000085C) // (LCDC_GPR) General Purpose Register
  3787. #define LCDC_ITR (AT91C_CAST(AT91C_REG *) 0x00000860) // (LCDC_ITR) Interrupts Test Register
  3788. #define LCDC_IRR (AT91C_CAST(AT91C_REG *) 0x00000864) // (LCDC_IRR) Interrupts Raw Status Register
  3789. #define LCDC_LUT_ENTRY (AT91C_CAST(AT91C_REG *) 0x00000C00) // (LCDC_LUT_ENTRY) LUT Entries Register
  3790. #endif
  3791. // -------- LCDC_FRMP1 : (LCDC Offset: 0x8) DMA Frame Pointer 1 Register --------
  3792. #define AT91C_LCDC_FRMPT1 (0x3FFFFF << 0) // (LCDC) Frame Pointer Address 1
  3793. // -------- LCDC_FRMP2 : (LCDC Offset: 0xc) DMA Frame Pointer 2 Register --------
  3794. #define AT91C_LCDC_FRMPT2 (0x1FFFFF << 0) // (LCDC) Frame Pointer Address 2
  3795. // -------- LCDC_FRMCFG : (LCDC Offset: 0x18) DMA Frame Config Register --------
  3796. #define AT91C_LCDC_FRSIZE (0x7FFFFF << 0) // (LCDC) FRAME SIZE
  3797. #define AT91C_LCDC_BLENGTH (0x7F << 24) // (LCDC) BURST LENGTH
  3798. // -------- LCDC_DMACON : (LCDC Offset: 0x1c) DMA Control Register --------
  3799. #define AT91C_LCDC_DMAEN (0x1 << 0) // (LCDC) DAM Enable
  3800. #define AT91C_LCDC_DMARST (0x1 << 1) // (LCDC) DMA Reset (WO)
  3801. #define AT91C_LCDC_DMABUSY (0x1 << 2) // (LCDC) DMA Reset (WO)
  3802. #define AT91C_LCDC_DMAUPDT (0x1 << 3) // (LCDC) DMA Configuration Update
  3803. #define AT91C_LCDC_DMA2DEN (0x1 << 4) // (LCDC) 2D Addressing Enable
  3804. // -------- LCDC_DMA2DCFG : (LCDC Offset: 0x20) DMA 2D addressing configuration Register --------
  3805. #define AT91C_LCDC_ADDRINC (0xFFFF << 0) // (LCDC) Number of 32b words that the DMA must jump when going to the next line
  3806. #define AT91C_LCDC_PIXELOFF (0x1F << 24) // (LCDC) Offset (in bits) of the first pixel of the screen in the memory word which contain it
  3807. // -------- LCDC_LCDCON1 : (LCDC Offset: 0x800) LCD Control 1 Register --------
  3808. #define AT91C_LCDC_BYPASS (0x1 << 0) // (LCDC) Bypass lcd_pccklk divider
  3809. #define AT91C_LCDC_CLKVAL (0x1FF << 12) // (LCDC) 9-bit Divider for pixel clock frequency
  3810. #define AT91C_LCDC_LINCNT (0x7FF << 21) // (LCDC) Line Counter (RO)
  3811. // -------- LCDC_LCDCON2 : (LCDC Offset: 0x804) LCD Control 2 Register --------
  3812. #define AT91C_LCDC_DISTYPE (0x3 << 0) // (LCDC) Display Type
  3813. #define AT91C_LCDC_DISTYPE_STNMONO (0x0) // (LCDC) STN Mono
  3814. #define AT91C_LCDC_DISTYPE_STNCOLOR (0x1) // (LCDC) STN Color
  3815. #define AT91C_LCDC_DISTYPE_TFT (0x2) // (LCDC) TFT
  3816. #define AT91C_LCDC_SCANMOD (0x1 << 2) // (LCDC) Scan Mode
  3817. #define AT91C_LCDC_SCANMOD_SINGLESCAN (0x0 << 2) // (LCDC) Single Scan
  3818. #define AT91C_LCDC_SCANMOD_DUALSCAN (0x1 << 2) // (LCDC) Dual Scan
  3819. #define AT91C_LCDC_IFWIDTH (0x3 << 3) // (LCDC) Interface Width
  3820. #define AT91C_LCDC_IFWIDTH_FOURBITSWIDTH (0x0 << 3) // (LCDC) 4 Bits
  3821. #define AT91C_LCDC_IFWIDTH_EIGTHBITSWIDTH (0x1 << 3) // (LCDC) 8 Bits
  3822. #define AT91C_LCDC_IFWIDTH_SIXTEENBITSWIDTH (0x2 << 3) // (LCDC) 16 Bits
  3823. #define AT91C_LCDC_PIXELSIZE (0x7 << 5) // (LCDC) Bits per pixel
  3824. #define AT91C_LCDC_PIXELSIZE_ONEBITSPERPIXEL (0x0 << 5) // (LCDC) 1 Bits
  3825. #define AT91C_LCDC_PIXELSIZE_TWOBITSPERPIXEL (0x1 << 5) // (LCDC) 2 Bits
  3826. #define AT91C_LCDC_PIXELSIZE_FOURBITSPERPIXEL (0x2 << 5) // (LCDC) 4 Bits
  3827. #define AT91C_LCDC_PIXELSIZE_EIGTHBITSPERPIXEL (0x3 << 5) // (LCDC) 8 Bits
  3828. #define AT91C_LCDC_PIXELSIZE_SIXTEENBITSPERPIXEL (0x4 << 5) // (LCDC) 16 Bits
  3829. #define AT91C_LCDC_PIXELSIZE_TWENTYFOURBITSPERPIXEL (0x5 << 5) // (LCDC) 24 Bits
  3830. #define AT91C_LCDC_INVVD (0x1 << 8) // (LCDC) lcd datas polarity
  3831. #define AT91C_LCDC_INVVD_NORMALPOL (0x0 << 8) // (LCDC) Normal Polarity
  3832. #define AT91C_LCDC_INVVD_INVERTEDPOL (0x1 << 8) // (LCDC) Inverted Polarity
  3833. #define AT91C_LCDC_INVFRAME (0x1 << 9) // (LCDC) lcd vsync polarity
  3834. #define AT91C_LCDC_INVFRAME_NORMALPOL (0x0 << 9) // (LCDC) Normal Polarity
  3835. #define AT91C_LCDC_INVFRAME_INVERTEDPOL (0x1 << 9) // (LCDC) Inverted Polarity
  3836. #define AT91C_LCDC_INVLINE (0x1 << 10) // (LCDC) lcd hsync polarity
  3837. #define AT91C_LCDC_INVLINE_NORMALPOL (0x0 << 10) // (LCDC) Normal Polarity
  3838. #define AT91C_LCDC_INVLINE_INVERTEDPOL (0x1 << 10) // (LCDC) Inverted Polarity
  3839. #define AT91C_LCDC_INVCLK (0x1 << 11) // (LCDC) lcd pclk polarity
  3840. #define AT91C_LCDC_INVCLK_NORMALPOL (0x0 << 11) // (LCDC) Normal Polarity
  3841. #define AT91C_LCDC_INVCLK_INVERTEDPOL (0x1 << 11) // (LCDC) Inverted Polarity
  3842. #define AT91C_LCDC_INVDVAL (0x1 << 12) // (LCDC) lcd dval polarity
  3843. #define AT91C_LCDC_INVDVAL_NORMALPOL (0x0 << 12) // (LCDC) Normal Polarity
  3844. #define AT91C_LCDC_INVDVAL_INVERTEDPOL (0x1 << 12) // (LCDC) Inverted Polarity
  3845. #define AT91C_LCDC_CLKMOD (0x1 << 15) // (LCDC) lcd pclk Mode
  3846. #define AT91C_LCDC_CLKMOD_ACTIVEONLYDISP (0x0 << 15) // (LCDC) Active during display period
  3847. #define AT91C_LCDC_CLKMOD_ALWAYSACTIVE (0x1 << 15) // (LCDC) Always Active
  3848. #define AT91C_LCDC_MEMOR (0x3 << 30) // (LCDC) Memory Ordering Format
  3849. #define AT91C_LCDC_MEMOR_BIGIND (0x0 << 30) // (LCDC) Big Endian
  3850. #define AT91C_LCDC_MEMOR_LITTLEIND (0x2 << 30) // (LCDC) Little Endian
  3851. // -------- LCDC_TIM1 : (LCDC Offset: 0x808) LCDC Timing Config 1 Register --------
  3852. #define AT91C_LCDC_VFP (0xFF << 0) // (LCDC) Vertical Front Porch
  3853. #define AT91C_LCDC_VBP (0xFF << 8) // (LCDC) Vertical Back Porch
  3854. #define AT91C_LCDC_VPW (0x3F << 16) // (LCDC) Vertical Synchronization Pulse Width
  3855. #define AT91C_LCDC_VHDLY (0xF << 24) // (LCDC) Vertical to Horizontal Delay
  3856. // -------- LCDC_TIM2 : (LCDC Offset: 0x80c) LCDC Timing Config 2 Register --------
  3857. #define AT91C_LCDC_HBP (0xFF << 0) // (LCDC) Horizontal Back Porch
  3858. #define AT91C_LCDC_HPW (0x3F << 8) // (LCDC) Horizontal Synchronization Pulse Width
  3859. #define AT91C_LCDC_HFP (0x7FF << 21) // (LCDC) Horizontal Front Porch
  3860. // -------- LCDC_LCDFRCFG : (LCDC Offset: 0x810) LCD Frame Config Register --------
  3861. #define AT91C_LCDC_LINEVAL (0x7FF << 0) // (LCDC) Vertical Size of LCD Module
  3862. #define AT91C_LCDC_HOZVAL (0x7FF << 21) // (LCDC) Horizontal Size of LCD Module
  3863. // -------- LCDC_FIFO : (LCDC Offset: 0x814) LCD FIFO Register --------
  3864. #define AT91C_LCDC_FIFOTH (0xFFFF << 0) // (LCDC) FIFO Threshold
  3865. // -------- LCDC_MVAL : (LCDC Offset: 0x818) LCD Mode Toggle Rate Value Register --------
  3866. #define AT91C_LCDC_MVALUE (0xFF << 0) // (LCDC) Toggle Rate Value
  3867. #define AT91C_LCDC_MMODE (0x1 << 31) // (LCDC) Toggle Rate Sel
  3868. #define AT91C_LCDC_MMODE_EACHFRAME (0x0 << 31) // (LCDC) Each Frame
  3869. #define AT91C_LCDC_MMODE_MVALDEFINED (0x1 << 31) // (LCDC) Defined by MVAL
  3870. // -------- LCDC_DP1_2 : (LCDC Offset: 0x81c) Dithering Pattern 1/2 --------
  3871. #define AT91C_LCDC_DP1_2_FIELD (0xFF << 0) // (LCDC) Ratio
  3872. // -------- LCDC_DP4_7 : (LCDC Offset: 0x820) Dithering Pattern 4/7 --------
  3873. #define AT91C_LCDC_DP4_7_FIELD (0xFFFFFFF << 0) // (LCDC) Ratio
  3874. // -------- LCDC_DP3_5 : (LCDC Offset: 0x824) Dithering Pattern 3/5 --------
  3875. #define AT91C_LCDC_DP3_5_FIELD (0xFFFFF << 0) // (LCDC) Ratio
  3876. // -------- LCDC_DP2_3 : (LCDC Offset: 0x828) Dithering Pattern 2/3 --------
  3877. #define AT91C_LCDC_DP2_3_FIELD (0xFFF << 0) // (LCDC) Ratio
  3878. // -------- LCDC_DP5_7 : (LCDC Offset: 0x82c) Dithering Pattern 5/7 --------
  3879. #define AT91C_LCDC_DP5_7_FIELD (0xFFFFFFF << 0) // (LCDC) Ratio
  3880. // -------- LCDC_DP3_4 : (LCDC Offset: 0x830) Dithering Pattern 3/4 --------
  3881. #define AT91C_LCDC_DP3_4_FIELD (0xFFFF << 0) // (LCDC) Ratio
  3882. // -------- LCDC_DP4_5 : (LCDC Offset: 0x834) Dithering Pattern 4/5 --------
  3883. #define AT91C_LCDC_DP4_5_FIELD (0xFFFFF << 0) // (LCDC) Ratio
  3884. // -------- LCDC_DP6_7 : (LCDC Offset: 0x838) Dithering Pattern 6/7 --------
  3885. #define AT91C_LCDC_DP6_7_FIELD (0xFFFFFFF << 0) // (LCDC) Ratio
  3886. // -------- LCDC_PWRCON : (LCDC Offset: 0x83c) LCDC Power Control Register --------
  3887. #define AT91C_LCDC_PWR (0x1 << 0) // (LCDC) LCD Module Power Control
  3888. #define AT91C_LCDC_GUARDT (0x7F << 1) // (LCDC) Delay in Frame Period
  3889. #define AT91C_LCDC_BUSY (0x1 << 31) // (LCDC) Read Only : 1 indicates that LCDC is busy
  3890. #define AT91C_LCDC_BUSY_LCDNOTBUSY (0x0 << 31) // (LCDC) LCD is Not Busy
  3891. #define AT91C_LCDC_BUSY_LCDBUSY (0x1 << 31) // (LCDC) LCD is Busy
  3892. // -------- LCDC_CTRSTCON : (LCDC Offset: 0x840) LCDC Contrast Control Register --------
  3893. #define AT91C_LCDC_PS (0x3 << 0) // (LCDC) LCD Contrast Counter Prescaler
  3894. #define AT91C_LCDC_PS_NOTDIVIDED (0x0) // (LCDC) Counter Freq is System Freq.
  3895. #define AT91C_LCDC_PS_DIVIDEDBYTWO (0x1) // (LCDC) Counter Freq is System Freq divided by 2.
  3896. #define AT91C_LCDC_PS_DIVIDEDBYFOUR (0x2) // (LCDC) Counter Freq is System Freq divided by 4.
  3897. #define AT91C_LCDC_PS_DIVIDEDBYEIGHT (0x3) // (LCDC) Counter Freq is System Freq divided by 8.
  3898. #define AT91C_LCDC_POL (0x1 << 2) // (LCDC) Polarity of output Pulse
  3899. #define AT91C_LCDC_POL_NEGATIVEPULSE (0x0 << 2) // (LCDC) Negative Pulse
  3900. #define AT91C_LCDC_POL_POSITIVEPULSE (0x1 << 2) // (LCDC) Positive Pulse
  3901. #define AT91C_LCDC_ENA (0x1 << 3) // (LCDC) PWM generator Control
  3902. #define AT91C_LCDC_ENA_PWMGEMDISABLED (0x0 << 3) // (LCDC) PWM Generator Disabled
  3903. #define AT91C_LCDC_ENA_PWMGEMENABLED (0x1 << 3) // (LCDC) PWM Generator Disabled
  3904. // -------- LCDC_CTRSTVAL : (LCDC Offset: 0x844) Contrast Value Register --------
  3905. #define AT91C_LCDC_CVAL (0xFF << 0) // (LCDC) PWM Compare Value
  3906. // -------- LCDC_IER : (LCDC Offset: 0x848) LCDC Interrupt Enable Register --------
  3907. #define AT91C_LCDC_LNI (0x1 << 0) // (LCDC) Line Interrupt
  3908. #define AT91C_LCDC_LSTLNI (0x1 << 1) // (LCDC) Last Line Interrupt
  3909. #define AT91C_LCDC_EOFI (0x1 << 2) // (LCDC) End Of Frame Interrupt
  3910. #define AT91C_LCDC_UFLWI (0x1 << 4) // (LCDC) FIFO Underflow Interrupt
  3911. #define AT91C_LCDC_OWRI (0x1 << 5) // (LCDC) Over Write Interrupt
  3912. #define AT91C_LCDC_MERI (0x1 << 6) // (LCDC) Memory Error Interrupt
  3913. // -------- LCDC_IDR : (LCDC Offset: 0x84c) LCDC Interrupt Disable Register --------
  3914. // -------- LCDC_IMR : (LCDC Offset: 0x850) LCDC Interrupt Mask Register --------
  3915. // -------- LCDC_ISR : (LCDC Offset: 0x854) LCDC Interrupt Status Register --------
  3916. // -------- LCDC_ICR : (LCDC Offset: 0x858) LCDC Interrupt Clear Register --------
  3917. // -------- LCDC_GPR : (LCDC Offset: 0x85c) LCDC General Purpose Register --------
  3918. #define AT91C_LCDC_GPRBUS (0xFF << 0) // (LCDC) 8 bits available
  3919. // -------- LCDC_ITR : (LCDC Offset: 0x860) Interrupts Test Register --------
  3920. // -------- LCDC_IRR : (LCDC Offset: 0x864) Interrupts Raw Status Register --------
  3921. // *****************************************************************************
  3922. // SOFTWARE API DEFINITION FOR HDMA Channel structure
  3923. // *****************************************************************************
  3924. #ifndef __ASSEMBLY__
  3925. typedef struct _AT91S_HDMA_CH {
  3926. AT91C_REG HDMA_SADDR; // HDMA Channel Source Address Register
  3927. AT91C_REG HDMA_DADDR; // HDMA Channel Destination Address Register
  3928. AT91C_REG HDMA_DSCR; // HDMA Channel Descriptor Address Register
  3929. AT91C_REG HDMA_CTRLA; // HDMA Channel Control A Register
  3930. AT91C_REG HDMA_CTRLB; // HDMA Channel Control B Register
  3931. AT91C_REG HDMA_CFG; // HDMA Channel Configuration Register
  3932. AT91C_REG HDMA_SPIP; // HDMA Channel Source Picture in Picture Configuration Register
  3933. AT91C_REG HDMA_DPIP; // HDMA Channel Destination Picture in Picture Configuration Register
  3934. AT91C_REG HDMA_BDSCR; // HDMA Reserved
  3935. AT91C_REG HDMA_CADDR; // HDMA Reserved
  3936. } AT91S_HDMA_CH, *AT91PS_HDMA_CH;
  3937. #else
  3938. #define HDMA_SADDR (AT91C_CAST(AT91C_REG *) 0x00000000) // (HDMA_SADDR) HDMA Channel Source Address Register
  3939. #define HDMA_DADDR (AT91C_CAST(AT91C_REG *) 0x00000004) // (HDMA_DADDR) HDMA Channel Destination Address Register
  3940. #define HDMA_DSCR (AT91C_CAST(AT91C_REG *) 0x00000008) // (HDMA_DSCR) HDMA Channel Descriptor Address Register
  3941. #define HDMA_CTRLA (AT91C_CAST(AT91C_REG *) 0x0000000C) // (HDMA_CTRLA) HDMA Channel Control A Register
  3942. #define HDMA_CTRLB (AT91C_CAST(AT91C_REG *) 0x00000010) // (HDMA_CTRLB) HDMA Channel Control B Register
  3943. #define HDMA_CFG (AT91C_CAST(AT91C_REG *) 0x00000014) // (HDMA_CFG) HDMA Channel Configuration Register
  3944. #define HDMA_SPIP (AT91C_CAST(AT91C_REG *) 0x00000018) // (HDMA_SPIP) HDMA Channel Source Picture in Picture Configuration Register
  3945. #define HDMA_DPIP (AT91C_CAST(AT91C_REG *) 0x0000001C) // (HDMA_DPIP) HDMA Channel Destination Picture in Picture Configuration Register
  3946. #define HDMA_BDSCR (AT91C_CAST(AT91C_REG *) 0x00000020) // (HDMA_BDSCR) HDMA Reserved
  3947. #define HDMA_CADDR (AT91C_CAST(AT91C_REG *) 0x00000024) // (HDMA_CADDR) HDMA Reserved
  3948. #endif
  3949. // -------- HDMA_SADDR : (HDMA_CH Offset: 0x0) --------
  3950. #define AT91C_SADDR (0x0 << 0) // (HDMA_CH)
  3951. // -------- HDMA_DADDR : (HDMA_CH Offset: 0x4) --------
  3952. #define AT91C_DADDR (0x0 << 0) // (HDMA_CH)
  3953. // -------- HDMA_DSCR : (HDMA_CH Offset: 0x8) --------
  3954. #define AT91C_HDMA_DSCR_IF (0x3 << 0) // (HDMA_CH) Select AHB-Lite Interface for current channel
  3955. #define AT91C_HDMA_DSCR_IF_0 (0x0) // (HDMA_CH) The Buffer Transfer descriptor is fetched via AHB-Lite Interface 0.
  3956. #define AT91C_HDMA_DSCR_IF_1 (0x1) // (HDMA_CH) The Buffer Transfer descriptor is fetched via AHB-Lite Interface 1.
  3957. #define AT91C_HDMA_DSCR_IF_2 (0x2) // (HDMA_CH) The Buffer Transfer descriptor is fetched via AHB-Lite Interface 2.
  3958. #define AT91C_HDMA_DSCR_IF_3 (0x3) // (HDMA_CH) The Buffer Transfer descriptor is fetched via AHB-Lite Interface 3.
  3959. #define AT91C_HDMA_DSCR (0x3FFFFFFF << 2) // (HDMA_CH) Buffer Transfer descriptor address. This address is word aligned.
  3960. // -------- HDMA_CTRLA : (HDMA_CH Offset: 0xc) --------
  3961. #define AT91C_HDMA_BTSIZE (0xFFFF << 0) // (HDMA_CH) Buffer Transfer Size.
  3962. #define AT91C_HDMA_SCSIZE (0x7 << 16) // (HDMA_CH) Source Chunk Transfer Size.
  3963. #define AT91C_HDMA_SCSIZE_1 (0x0 << 16) // (HDMA_CH) 1.
  3964. #define AT91C_HDMA_SCSIZE_4 (0x1 << 16) // (HDMA_CH) 4.
  3965. #define AT91C_HDMA_SCSIZE_8 (0x2 << 16) // (HDMA_CH) 8.
  3966. #define AT91C_HDMA_SCSIZE_16 (0x3 << 16) // (HDMA_CH) 16.
  3967. #define AT91C_HDMA_SCSIZE_32 (0x4 << 16) // (HDMA_CH) 32.
  3968. #define AT91C_HDMA_SCSIZE_64 (0x5 << 16) // (HDMA_CH) 64.
  3969. #define AT91C_HDMA_SCSIZE_128 (0x6 << 16) // (HDMA_CH) 128.
  3970. #define AT91C_HDMA_SCSIZE_256 (0x7 << 16) // (HDMA_CH) 256.
  3971. #define AT91C_HDMA_DCSIZE (0x7 << 20) // (HDMA_CH) Destination Chunk Transfer Size
  3972. #define AT91C_HDMA_DCSIZE_1 (0x0 << 20) // (HDMA_CH) 1.
  3973. #define AT91C_HDMA_DCSIZE_4 (0x1 << 20) // (HDMA_CH) 4.
  3974. #define AT91C_HDMA_DCSIZE_8 (0x2 << 20) // (HDMA_CH) 8.
  3975. #define AT91C_HDMA_DCSIZE_16 (0x3 << 20) // (HDMA_CH) 16.
  3976. #define AT91C_HDMA_DCSIZE_32 (0x4 << 20) // (HDMA_CH) 32.
  3977. #define AT91C_HDMA_DCSIZE_64 (0x5 << 20) // (HDMA_CH) 64.
  3978. #define AT91C_HDMA_DCSIZE_128 (0x6 << 20) // (HDMA_CH) 128.
  3979. #define AT91C_HDMA_DCSIZE_256 (0x7 << 20) // (HDMA_CH) 256.
  3980. #define AT91C_HDMA_SRC_WIDTH (0x3 << 24) // (HDMA_CH) Source Single Transfer Size
  3981. #define AT91C_HDMA_SRC_WIDTH_BYTE (0x0 << 24) // (HDMA_CH) BYTE.
  3982. #define AT91C_HDMA_SRC_WIDTH_HALFWORD (0x1 << 24) // (HDMA_CH) HALF-WORD.
  3983. #define AT91C_HDMA_SRC_WIDTH_WORD (0x2 << 24) // (HDMA_CH) WORD.
  3984. #define AT91C_HDMA_DST_WIDTH (0x3 << 28) // (HDMA_CH) Destination Single Transfer Size
  3985. #define AT91C_HDMA_DST_WIDTH_BYTE (0x0 << 28) // (HDMA_CH) BYTE.
  3986. #define AT91C_HDMA_DST_WIDTH_HALFWORD (0x1 << 28) // (HDMA_CH) HALF-WORD.
  3987. #define AT91C_HDMA_DST_WIDTH_WORD (0x2 << 28) // (HDMA_CH) WORD.
  3988. #define AT91C_HDMA_DONE (0x1 << 31) // (HDMA_CH)
  3989. // -------- HDMA_CTRLB : (HDMA_CH Offset: 0x10) --------
  3990. #define AT91C_HDMA_SIF (0x3 << 0) // (HDMA_CH) Source Interface Selection Field.
  3991. #define AT91C_HDMA_SIF_0 (0x0) // (HDMA_CH) The Source Transfer is done via AHB-Lite Interface 0.
  3992. #define AT91C_HDMA_SIF_1 (0x1) // (HDMA_CH) The Source Transfer is done via AHB-Lite Interface 1.
  3993. #define AT91C_HDMA_SIF_2 (0x2) // (HDMA_CH) The Source Transfer is done via AHB-Lite Interface 2.
  3994. #define AT91C_HDMA_SIF_3 (0x3) // (HDMA_CH) The Source Transfer is done via AHB-Lite Interface 3.
  3995. #define AT91C_HDMA_DIF (0x3 << 4) // (HDMA_CH) Destination Interface Selection Field.
  3996. #define AT91C_HDMA_DIF_0 (0x0 << 4) // (HDMA_CH) The Destination Transfer is done via AHB-Lite Interface 0.
  3997. #define AT91C_HDMA_DIF_1 (0x1 << 4) // (HDMA_CH) The Destination Transfer is done via AHB-Lite Interface 1.
  3998. #define AT91C_HDMA_DIF_2 (0x2 << 4) // (HDMA_CH) The Destination Transfer is done via AHB-Lite Interface 2.
  3999. #define AT91C_HDMA_DIF_3 (0x3 << 4) // (HDMA_CH) The Destination Transfer is done via AHB-Lite Interface 3.
  4000. #define AT91C_HDMA_SRC_PIP (0x1 << 8) // (HDMA_CH) Source Picture-in-Picture Mode
  4001. #define AT91C_HDMA_SRC_PIP_DISABLE (0x0 << 8) // (HDMA_CH) Source Picture-in-Picture mode is disabled.
  4002. #define AT91C_HDMA_SRC_PIP_ENABLE (0x1 << 8) // (HDMA_CH) Source Picture-in-Picture mode is enabled.
  4003. #define AT91C_HDMA_DST_PIP (0x1 << 12) // (HDMA_CH) Destination Picture-in-Picture Mode
  4004. #define AT91C_HDMA_DST_PIP_DISABLE (0x0 << 12) // (HDMA_CH) Destination Picture-in-Picture mode is disabled.
  4005. #define AT91C_HDMA_DST_PIP_ENABLE (0x1 << 12) // (HDMA_CH) Destination Picture-in-Picture mode is enabled.
  4006. #define AT91C_HDMA_SRC_DSCR (0x1 << 16) // (HDMA_CH) Source Buffer Descriptor Fetch operation
  4007. #define AT91C_HDMA_SRC_DSCR_FETCH_FROM_MEM (0x0 << 16) // (HDMA_CH) Source address is updated when the descriptor is fetched from the memory.
  4008. #define AT91C_HDMA_SRC_DSCR_FETCH_DISABLE (0x1 << 16) // (HDMA_CH) Buffer Descriptor Fetch operation is disabled for the Source.
  4009. #define AT91C_HDMA_DST_DSCR (0x1 << 20) // (HDMA_CH) Destination Buffer Descriptor operation
  4010. #define AT91C_HDMA_DST_DSCR_FETCH_FROM_MEM (0x0 << 20) // (HDMA_CH) Destination address is updated when the descriptor is fetched from the memory.
  4011. #define AT91C_HDMA_DST_DSCR_FETCH_DISABLE (0x1 << 20) // (HDMA_CH) Buffer Descriptor Fetch operation is disabled for the destination.
  4012. #define AT91C_HDMA_FC (0x7 << 21) // (HDMA_CH) This field defines which devices controls the size of the buffer transfer, also referred as to the Flow Controller.
  4013. #define AT91C_HDMA_FC_MEM2MEM (0x0 << 21) // (HDMA_CH) Memory-to-Memory (DMA Controller).
  4014. #define AT91C_HDMA_FC_MEM2PER (0x1 << 21) // (HDMA_CH) Memory-to-Peripheral (DMA Controller).
  4015. #define AT91C_HDMA_FC_PER2MEM (0x2 << 21) // (HDMA_CH) Peripheral-to-Memory (DMA Controller).
  4016. #define AT91C_HDMA_FC_PER2PER (0x3 << 21) // (HDMA_CH) Peripheral-to-Peripheral (DMA Controller).
  4017. #define AT91C_HDMA_FC_PER2MEM_PER (0x4 << 21) // (HDMA_CH) Peripheral-to-Memory (Peripheral).
  4018. #define AT91C_HDMA_FC_MEM2PER_PER (0x5 << 21) // (HDMA_CH) Memory-to-Peripheral (Peripheral).
  4019. #define AT91C_HDMA_FC_PER2PER_PER (0x6 << 21) // (HDMA_CH) Peripheral-to-Peripheral (Source Peripheral).
  4020. #define AT91C_HDMA_SRC_ADDRESS_MODE (0x3 << 24) // (HDMA_CH) Type of addressing mode
  4021. #define AT91C_HDMA_SRC_ADDRESS_MODE_INCR (0x0 << 24) // (HDMA_CH) Incrementing Mode.
  4022. #define AT91C_HDMA_SRC_ADDRESS_MODE_DECR (0x1 << 24) // (HDMA_CH) Decrementing Mode.
  4023. #define AT91C_HDMA_SRC_ADDRESS_MODE_FIXED (0x2 << 24) // (HDMA_CH) Fixed Mode.
  4024. #define AT91C_HDMA_DST_ADDRESS_MODE (0x3 << 28) // (HDMA_CH) Type of addressing mode
  4025. #define AT91C_HDMA_DST_ADDRESS_MODE_INCR (0x0 << 28) // (HDMA_CH) Incrementing Mode.
  4026. #define AT91C_HDMA_DST_ADDRESS_MODE_DECR (0x1 << 28) // (HDMA_CH) Decrementing Mode.
  4027. #define AT91C_HDMA_DST_ADDRESS_MODE_FIXED (0x2 << 28) // (HDMA_CH) Fixed Mode.
  4028. #define AT91C_HDMA_AUTO (0x1 << 31) // (HDMA_CH) Automatic multiple buffer transfer enable
  4029. #define AT91C_HDMA_AUTO_DISABLE (0x0 << 31) // (HDMA_CH) Automatic multiple buffer transfer is disabled.
  4030. #define AT91C_HDMA_AUTO_ENABLE (0x1 << 31) // (HDMA_CH) Automatic multiple buffer transfer is enabled. This enables replay mode or contiguous mode when several buffers are transferred.
  4031. // -------- HDMA_CFG : (HDMA_CH Offset: 0x14) --------
  4032. #define AT91C_HDMA_SRC_PER (0xF << 0) // (HDMA_CH) Channel Source Request is associated with peripheral identifier coded SRC_PER handshaking interface.
  4033. #define AT91C_HDMA_SRC_PER_0 (0x0) // (HDMA_CH) HW Handshaking Interface number 0.
  4034. #define AT91C_HDMA_SRC_PER_1 (0x1) // (HDMA_CH) HW Handshaking Interface number 1.
  4035. #define AT91C_HDMA_SRC_PER_2 (0x2) // (HDMA_CH) HW Handshaking Interface number 2.
  4036. #define AT91C_HDMA_SRC_PER_3 (0x3) // (HDMA_CH) HW Handshaking Interface number 3.
  4037. #define AT91C_HDMA_SRC_PER_4 (0x4) // (HDMA_CH) HW Handshaking Interface number 4.
  4038. #define AT91C_HDMA_SRC_PER_5 (0x5) // (HDMA_CH) HW Handshaking Interface number 5.
  4039. #define AT91C_HDMA_SRC_PER_6 (0x6) // (HDMA_CH) HW Handshaking Interface number 6.
  4040. #define AT91C_HDMA_SRC_PER_7 (0x7) // (HDMA_CH) HW Handshaking Interface number 7.
  4041. #define AT91C_HDMA_SRC_PER_8 (0x8) // (HDMA_CH) HW Handshaking Interface number 8.
  4042. #define AT91C_HDMA_SRC_PER_9 (0x9) // (HDMA_CH) HW Handshaking Interface number 9.
  4043. #define AT91C_HDMA_SRC_PER_10 (0xA) // (HDMA_CH) HW Handshaking Interface number 10.
  4044. #define AT91C_HDMA_SRC_PER_11 (0xB) // (HDMA_CH) HW Handshaking Interface number 11.
  4045. #define AT91C_HDMA_SRC_PER_12 (0xC) // (HDMA_CH) HW Handshaking Interface number 12.
  4046. #define AT91C_HDMA_SRC_PER_13 (0xD) // (HDMA_CH) HW Handshaking Interface number 13.
  4047. #define AT91C_HDMA_SRC_PER_14 (0xE) // (HDMA_CH) HW Handshaking Interface number 14.
  4048. #define AT91C_HDMA_SRC_PER_15 (0xF) // (HDMA_CH) HW Handshaking Interface number 15.
  4049. #define AT91C_HDMA_DST_PER (0xF << 4) // (HDMA_CH) Channel Destination Request is associated with peripheral identifier coded DST_PER handshaking interface.
  4050. #define AT91C_HDMA_DST_PER_0 (0x0 << 4) // (HDMA_CH) HW Handshaking Interface number 0.
  4051. #define AT91C_HDMA_DST_PER_1 (0x1 << 4) // (HDMA_CH) HW Handshaking Interface number 1.
  4052. #define AT91C_HDMA_DST_PER_2 (0x2 << 4) // (HDMA_CH) HW Handshaking Interface number 2.
  4053. #define AT91C_HDMA_DST_PER_3 (0x3 << 4) // (HDMA_CH) HW Handshaking Interface number 3.
  4054. #define AT91C_HDMA_DST_PER_4 (0x4 << 4) // (HDMA_CH) HW Handshaking Interface number 4.
  4055. #define AT91C_HDMA_DST_PER_5 (0x5 << 4) // (HDMA_CH) HW Handshaking Interface number 5.
  4056. #define AT91C_HDMA_DST_PER_6 (0x6 << 4) // (HDMA_CH) HW Handshaking Interface number 6.
  4057. #define AT91C_HDMA_DST_PER_7 (0x7 << 4) // (HDMA_CH) HW Handshaking Interface number 7.
  4058. #define AT91C_HDMA_DST_PER_8 (0x8 << 4) // (HDMA_CH) HW Handshaking Interface number 8.
  4059. #define AT91C_HDMA_DST_PER_9 (0x9 << 4) // (HDMA_CH) HW Handshaking Interface number 9.
  4060. #define AT91C_HDMA_DST_PER_10 (0xA << 4) // (HDMA_CH) HW Handshaking Interface number 10.
  4061. #define AT91C_HDMA_DST_PER_11 (0xB << 4) // (HDMA_CH) HW Handshaking Interface number 11.
  4062. #define AT91C_HDMA_DST_PER_12 (0xC << 4) // (HDMA_CH) HW Handshaking Interface number 12.
  4063. #define AT91C_HDMA_DST_PER_13 (0xD << 4) // (HDMA_CH) HW Handshaking Interface number 13.
  4064. #define AT91C_HDMA_DST_PER_14 (0xE << 4) // (HDMA_CH) HW Handshaking Interface number 14.
  4065. #define AT91C_HDMA_DST_PER_15 (0xF << 4) // (HDMA_CH) HW Handshaking Interface number 15.
  4066. #define AT91C_HDMA_SRC_REP (0x1 << 8) // (HDMA_CH) Source Replay Mode
  4067. #define AT91C_HDMA_SRC_REP_CONTIGUOUS_ADDR (0x0 << 8) // (HDMA_CH) When automatic mode is activated, source address is contiguous between two buffers.
  4068. #define AT91C_HDMA_SRC_REP_RELOAD_ADDR (0x1 << 8) // (HDMA_CH) When automatic mode is activated, the source address and the control register are reloaded from previous transfer..
  4069. #define AT91C_HDMA_SRC_H2SEL (0x1 << 9) // (HDMA_CH) Source Handshaking Mode
  4070. #define AT91C_HDMA_SRC_H2SEL_SW (0x0 << 9) // (HDMA_CH) Software handshaking interface is used to trigger a transfer request.
  4071. #define AT91C_HDMA_SRC_H2SEL_HW (0x1 << 9) // (HDMA_CH) Hardware handshaking interface is used to trigger a transfer request.
  4072. #define AT91C_HDMA_DST_REP (0x1 << 12) // (HDMA_CH) Destination Replay Mode
  4073. #define AT91C_HDMA_DST_REP_CONTIGUOUS_ADDR (0x0 << 12) // (HDMA_CH) When automatic mode is activated, destination address is contiguous between two buffers.
  4074. #define AT91C_HDMA_DST_REP_RELOAD_ADDR (0x1 << 12) // (HDMA_CH) When automatic mode is activated, the destination address and the control register are reloaded from previous transfer..
  4075. #define AT91C_HDMA_DST_H2SEL (0x1 << 13) // (HDMA_CH) Destination Handshaking Mode
  4076. #define AT91C_HDMA_DST_H2SEL_SW (0x0 << 13) // (HDMA_CH) Software handshaking interface is used to trigger a transfer request.
  4077. #define AT91C_HDMA_DST_H2SEL_HW (0x1 << 13) // (HDMA_CH) Hardware handshaking interface is used to trigger a transfer request.
  4078. #define AT91C_HDMA_SOD (0x1 << 16) // (HDMA_CH) STOP ON DONE
  4079. #define AT91C_HDMA_SOD_DISABLE (0x0 << 16) // (HDMA_CH) STOP ON DONE disabled, the descriptor fetch operation ignores DONE Field of CTRLA register.
  4080. #define AT91C_HDMA_SOD_ENABLE (0x1 << 16) // (HDMA_CH) STOP ON DONE activated, the DMAC module is automatically disabled if DONE FIELD is set to 1.
  4081. #define AT91C_HDMA_LOCK_IF (0x1 << 20) // (HDMA_CH) Interface Lock
  4082. #define AT91C_HDMA_LOCK_IF_DISABLE (0x0 << 20) // (HDMA_CH) Interface Lock capability is disabled.
  4083. #define AT91C_HDMA_LOCK_IF_ENABLE (0x1 << 20) // (HDMA_CH) Interface Lock capability is enabled.
  4084. #define AT91C_HDMA_LOCK_B (0x1 << 21) // (HDMA_CH) AHB Bus Lock
  4085. #define AT91C_HDMA_LOCK_B_DISABLE (0x0 << 21) // (HDMA_CH) AHB Bus Locking capability is disabled.
  4086. #define AT91C_HDMA_LOCK_B_ENABLE (0x1 << 21) // (HDMA_CH) AHB Bus Locking capability is enabled.
  4087. #define AT91C_HDMA_LOCK_IF_L (0x1 << 22) // (HDMA_CH) Master Interface Arbiter Lock
  4088. #define AT91C_HDMA_LOCK_IF_L_CHUNK (0x0 << 22) // (HDMA_CH) The Master Interface Arbiter is locked by the channel x for a chunk transfer.
  4089. #define AT91C_HDMA_LOCK_IF_L_BUFFER (0x1 << 22) // (HDMA_CH) The Master Interface Arbiter is locked by the channel x for a buffer transfer.
  4090. #define AT91C_HDMA_AHB_PROT (0x7 << 24) // (HDMA_CH) AHB Prot
  4091. #define AT91C_HDMA_FIFOCFG (0x3 << 28) // (HDMA_CH) FIFO Request Configuration
  4092. #define AT91C_HDMA_FIFOCFG_LARGESTBURST (0x0 << 28) // (HDMA_CH) The largest defined length AHB burst is performed on the destination AHB interface.
  4093. #define AT91C_HDMA_FIFOCFG_HALFFIFO (0x1 << 28) // (HDMA_CH) When half fifo size is available/filled a source/destination request is serviced.
  4094. #define AT91C_HDMA_FIFOCFG_ENOUGHSPACE (0x2 << 28) // (HDMA_CH) When there is enough space/data available to perfom a single AHB access then the request is serviced.
  4095. // -------- HDMA_SPIP : (HDMA_CH Offset: 0x18) --------
  4096. #define AT91C_SPIP_HOLE (0xFFFF << 0) // (HDMA_CH) This field indicates the value to add to the address when the programmable boundary has been reached.
  4097. #define AT91C_SPIP_BOUNDARY (0x3FF << 16) // (HDMA_CH) This field indicates the number of source transfers to perform before the automatic address increment operation.
  4098. // -------- HDMA_DPIP : (HDMA_CH Offset: 0x1c) --------
  4099. #define AT91C_DPIP_HOLE (0xFFFF << 0) // (HDMA_CH) This field indicates the value to add to the address when the programmable boundary has been reached.
  4100. #define AT91C_DPIP_BOUNDARY (0x3FF << 16) // (HDMA_CH) This field indicates the number of source transfers to perform before the automatic address increment operation.
  4101. // -------- HDMA_BDSCR : (HDMA_CH Offset: 0x20) --------
  4102. // -------- HDMA_CADDR : (HDMA_CH Offset: 0x24) --------
  4103. // *****************************************************************************
  4104. // SOFTWARE API DEFINITION FOR HDMA controller
  4105. // *****************************************************************************
  4106. #ifndef __ASSEMBLY__
  4107. typedef struct _AT91S_HDMA {
  4108. AT91C_REG HDMA_GCFG; // HDMA Global Configuration Register
  4109. AT91C_REG HDMA_EN; // HDMA Controller Enable Register
  4110. AT91C_REG HDMA_SREQ; // HDMA Software Single Request Register
  4111. AT91C_REG HDMA_CREQ; // HDMA Software Chunk Transfer Request Register
  4112. AT91C_REG HDMA_LAST; // HDMA Software Last Transfer Flag Register
  4113. AT91C_REG HDMA_SYNC; // HDMA Request Synchronization Register
  4114. AT91C_REG HDMA_EBCIER; // HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register
  4115. AT91C_REG HDMA_EBCIDR; // HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register
  4116. AT91C_REG HDMA_EBCIMR; // HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register
  4117. AT91C_REG HDMA_EBCISR; // HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Status Register
  4118. AT91C_REG HDMA_CHER; // HDMA Channel Handler Enable Register
  4119. AT91C_REG HDMA_CHDR; // HDMA Channel Handler Disable Register
  4120. AT91C_REG HDMA_CHSR; // HDMA Channel Handler Status Register
  4121. AT91C_REG HDMA_RSVD0; // HDMA Reserved
  4122. AT91C_REG HDMA_RSVD1; // HDMA Reserved
  4123. AT91S_HDMA_CH HDMA_CH[8]; // HDMA Channel structure
  4124. } AT91S_HDMA, *AT91PS_HDMA;
  4125. #else
  4126. #define HDMA_GCFG (AT91C_CAST(AT91C_REG *) 0x00000000) // (HDMA_GCFG) HDMA Global Configuration Register
  4127. #define HDMA_EN (AT91C_CAST(AT91C_REG *) 0x00000004) // (HDMA_EN) HDMA Controller Enable Register
  4128. #define HDMA_SREQ (AT91C_CAST(AT91C_REG *) 0x00000008) // (HDMA_SREQ) HDMA Software Single Request Register
  4129. #define HDMA_CREQ (AT91C_CAST(AT91C_REG *) 0x0000000C) // (HDMA_CREQ) HDMA Software Chunk Transfer Request Register
  4130. #define HDMA_LAST (AT91C_CAST(AT91C_REG *) 0x00000010) // (HDMA_LAST) HDMA Software Last Transfer Flag Register
  4131. #define HDMA_SYNC (AT91C_CAST(AT91C_REG *) 0x00000014) // (HDMA_SYNC) HDMA Request Synchronization Register
  4132. #define HDMA_EBCIER (AT91C_CAST(AT91C_REG *) 0x00000018) // (HDMA_EBCIER) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register
  4133. #define HDMA_EBCIDR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (HDMA_EBCIDR) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register
  4134. #define HDMA_EBCIMR (AT91C_CAST(AT91C_REG *) 0x00000020) // (HDMA_EBCIMR) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register
  4135. #define HDMA_EBCISR (AT91C_CAST(AT91C_REG *) 0x00000024) // (HDMA_EBCISR) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Status Register
  4136. #define HDMA_CHER (AT91C_CAST(AT91C_REG *) 0x00000028) // (HDMA_CHER) HDMA Channel Handler Enable Register
  4137. #define HDMA_CHDR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (HDMA_CHDR) HDMA Channel Handler Disable Register
  4138. #define HDMA_CHSR (AT91C_CAST(AT91C_REG *) 0x00000030) // (HDMA_CHSR) HDMA Channel Handler Status Register
  4139. #define HDMA_RSVD0 (AT91C_CAST(AT91C_REG *) 0x00000034) // (HDMA_RSVD0) HDMA Reserved
  4140. #define HDMA_RSVD1 (AT91C_CAST(AT91C_REG *) 0x00000038) // (HDMA_RSVD1) HDMA Reserved
  4141. #endif
  4142. // -------- HDMA_GCFG : (HDMA Offset: 0x0) --------
  4143. #define AT91C_HDMA_IF0_BIGEND (0x1 << 0) // (HDMA) AHB-Lite Interface 0 endian mode.
  4144. #define AT91C_HDMA_IF0_BIGEND_IS_LITTLE_ENDIAN (0x0) // (HDMA) AHB-Lite Interface 0 is little endian.
  4145. #define AT91C_HDMA_IF0_BIGEND_IS_BIG_ENDIAN (0x1) // (HDMA) AHB-Lite Interface 0 is big endian.
  4146. #define AT91C_HDMA_IF1_BIGEND (0x1 << 1) // (HDMA) AHB-Lite Interface 1 endian mode.
  4147. #define AT91C_HDMA_IF1_BIGEND_IS_LITTLE_ENDIAN (0x0 << 1) // (HDMA) AHB-Lite Interface 1 is little endian.
  4148. #define AT91C_HDMA_IF1_BIGEND_IS_BIG_ENDIAN (0x1 << 1) // (HDMA) AHB-Lite Interface 1 is big endian.
  4149. #define AT91C_HDMA_IF2_BIGEND (0x1 << 2) // (HDMA) AHB-Lite Interface 2 endian mode.
  4150. #define AT91C_HDMA_IF2_BIGEND_IS_LITTLE_ENDIAN (0x0 << 2) // (HDMA) AHB-Lite Interface 2 is little endian.
  4151. #define AT91C_HDMA_IF2_BIGEND_IS_BIG_ENDIAN (0x1 << 2) // (HDMA) AHB-Lite Interface 2 is big endian.
  4152. #define AT91C_HDMA_IF3_BIGEND (0x1 << 3) // (HDMA) AHB-Lite Interface 3 endian mode.
  4153. #define AT91C_HDMA_IF3_BIGEND_IS_LITTLE_ENDIAN (0x0 << 3) // (HDMA) AHB-Lite Interface 3 is little endian.
  4154. #define AT91C_HDMA_IF3_BIGEND_IS_BIG_ENDIAN (0x1 << 3) // (HDMA) AHB-Lite Interface 3 is big endian.
  4155. #define AT91C_HDMA_ARB_CFG (0x1 << 4) // (HDMA) Arbiter mode.
  4156. #define AT91C_HDMA_ARB_CFG_FIXED (0x0 << 4) // (HDMA) Fixed priority arbiter.
  4157. #define AT91C_HDMA_ARB_CFG_ROUND_ROBIN (0x1 << 4) // (HDMA) Modified round robin arbiter.
  4158. // -------- HDMA_EN : (HDMA Offset: 0x4) --------
  4159. #define AT91C_HDMA_ENABLE (0x1 << 0) // (HDMA)
  4160. #define AT91C_HDMA_ENABLE_DISABLE (0x0) // (HDMA) Disables HDMA.
  4161. #define AT91C_HDMA_ENABLE_ENABLE (0x1) // (HDMA) Enables HDMA.
  4162. // -------- HDMA_SREQ : (HDMA Offset: 0x8) --------
  4163. #define AT91C_HDMA_SSREQ0 (0x1 << 0) // (HDMA) Request a source single transfer on channel 0
  4164. #define AT91C_HDMA_SSREQ0_0 (0x0) // (HDMA) No effect.
  4165. #define AT91C_HDMA_SSREQ0_1 (0x1) // (HDMA) Request a source single transfer on channel 0.
  4166. #define AT91C_HDMA_DSREQ0 (0x1 << 1) // (HDMA) Request a destination single transfer on channel 0
  4167. #define AT91C_HDMA_DSREQ0_0 (0x0 << 1) // (HDMA) No effect.
  4168. #define AT91C_HDMA_DSREQ0_1 (0x1 << 1) // (HDMA) Request a destination single transfer on channel 0.
  4169. #define AT91C_HDMA_SSREQ1 (0x1 << 2) // (HDMA) Request a source single transfer on channel 1
  4170. #define AT91C_HDMA_SSREQ1_0 (0x0 << 2) // (HDMA) No effect.
  4171. #define AT91C_HDMA_SSREQ1_1 (0x1 << 2) // (HDMA) Request a source single transfer on channel 1.
  4172. #define AT91C_HDMA_DSREQ1 (0x1 << 3) // (HDMA) Request a destination single transfer on channel 1
  4173. #define AT91C_HDMA_DSREQ1_0 (0x0 << 3) // (HDMA) No effect.
  4174. #define AT91C_HDMA_DSREQ1_1 (0x1 << 3) // (HDMA) Request a destination single transfer on channel 1.
  4175. #define AT91C_HDMA_SSREQ2 (0x1 << 4) // (HDMA) Request a source single transfer on channel 2
  4176. #define AT91C_HDMA_SSREQ2_0 (0x0 << 4) // (HDMA) No effect.
  4177. #define AT91C_HDMA_SSREQ2_1 (0x1 << 4) // (HDMA) Request a source single transfer on channel 2.
  4178. #define AT91C_HDMA_DSREQ2 (0x1 << 5) // (HDMA) Request a destination single transfer on channel 2
  4179. #define AT91C_HDMA_DSREQ2_0 (0x0 << 5) // (HDMA) No effect.
  4180. #define AT91C_HDMA_DSREQ2_1 (0x1 << 5) // (HDMA) Request a destination single transfer on channel 2.
  4181. #define AT91C_HDMA_SSREQ3 (0x1 << 6) // (HDMA) Request a source single transfer on channel 3
  4182. #define AT91C_HDMA_SSREQ3_0 (0x0 << 6) // (HDMA) No effect.
  4183. #define AT91C_HDMA_SSREQ3_1 (0x1 << 6) // (HDMA) Request a source single transfer on channel 3.
  4184. #define AT91C_HDMA_DSREQ3 (0x1 << 7) // (HDMA) Request a destination single transfer on channel 3
  4185. #define AT91C_HDMA_DSREQ3_0 (0x0 << 7) // (HDMA) No effect.
  4186. #define AT91C_HDMA_DSREQ3_1 (0x1 << 7) // (HDMA) Request a destination single transfer on channel 3.
  4187. #define AT91C_HDMA_SSREQ4 (0x1 << 8) // (HDMA) Request a source single transfer on channel 4
  4188. #define AT91C_HDMA_SSREQ4_0 (0x0 << 8) // (HDMA) No effect.
  4189. #define AT91C_HDMA_SSREQ4_1 (0x1 << 8) // (HDMA) Request a source single transfer on channel 4.
  4190. #define AT91C_HDMA_DSREQ4 (0x1 << 9) // (HDMA) Request a destination single transfer on channel 4
  4191. #define AT91C_HDMA_DSREQ4_0 (0x0 << 9) // (HDMA) No effect.
  4192. #define AT91C_HDMA_DSREQ4_1 (0x1 << 9) // (HDMA) Request a destination single transfer on channel 4.
  4193. #define AT91C_HDMA_SSREQ5 (0x1 << 10) // (HDMA) Request a source single transfer on channel 5
  4194. #define AT91C_HDMA_SSREQ5_0 (0x0 << 10) // (HDMA) No effect.
  4195. #define AT91C_HDMA_SSREQ5_1 (0x1 << 10) // (HDMA) Request a source single transfer on channel 5.
  4196. #define AT91C_HDMA_DSREQ6 (0x1 << 11) // (HDMA) Request a destination single transfer on channel 5
  4197. #define AT91C_HDMA_DSREQ6_0 (0x0 << 11) // (HDMA) No effect.
  4198. #define AT91C_HDMA_DSREQ6_1 (0x1 << 11) // (HDMA) Request a destination single transfer on channel 5.
  4199. #define AT91C_HDMA_SSREQ6 (0x1 << 12) // (HDMA) Request a source single transfer on channel 6
  4200. #define AT91C_HDMA_SSREQ6_0 (0x0 << 12) // (HDMA) No effect.
  4201. #define AT91C_HDMA_SSREQ6_1 (0x1 << 12) // (HDMA) Request a source single transfer on channel 6.
  4202. #define AT91C_HDMA_SSREQ7 (0x1 << 14) // (HDMA) Request a source single transfer on channel 7
  4203. #define AT91C_HDMA_SSREQ7_0 (0x0 << 14) // (HDMA) No effect.
  4204. #define AT91C_HDMA_SSREQ7_1 (0x1 << 14) // (HDMA) Request a source single transfer on channel 7.
  4205. #define AT91C_HDMA_DSREQ7 (0x1 << 15) // (HDMA) Request a destination single transfer on channel 7
  4206. #define AT91C_HDMA_DSREQ7_0 (0x0 << 15) // (HDMA) No effect.
  4207. #define AT91C_HDMA_DSREQ7_1 (0x1 << 15) // (HDMA) Request a destination single transfer on channel 7.
  4208. // -------- HDMA_CREQ : (HDMA Offset: 0xc) --------
  4209. #define AT91C_HDMA_SCREQ0 (0x1 << 0) // (HDMA) Request a source chunk transfer on channel 0
  4210. #define AT91C_HDMA_SCREQ0_0 (0x0) // (HDMA) No effect.
  4211. #define AT91C_HDMA_SCREQ0_1 (0x1) // (HDMA) Request a source chunk transfer on channel 0.
  4212. #define AT91C_HDMA_DCREQ0 (0x1 << 1) // (HDMA) Request a destination chunk transfer on channel 0
  4213. #define AT91C_HDMA_DCREQ0_0 (0x0 << 1) // (HDMA) No effect.
  4214. #define AT91C_HDMA_DCREQ0_1 (0x1 << 1) // (HDMA) Request a destination chunk transfer on channel 0.
  4215. #define AT91C_HDMA_SCREQ1 (0x1 << 2) // (HDMA) Request a source chunk transfer on channel 1
  4216. #define AT91C_HDMA_SCREQ1_0 (0x0 << 2) // (HDMA) No effect.
  4217. #define AT91C_HDMA_SCREQ1_1 (0x1 << 2) // (HDMA) Request a source chunk transfer on channel 1.
  4218. #define AT91C_HDMA_DCREQ1 (0x1 << 3) // (HDMA) Request a destination chunk transfer on channel 1
  4219. #define AT91C_HDMA_DCREQ1_0 (0x0 << 3) // (HDMA) No effect.
  4220. #define AT91C_HDMA_DCREQ1_1 (0x1 << 3) // (HDMA) Request a destination chunk transfer on channel 1.
  4221. #define AT91C_HDMA_SCREQ2 (0x1 << 4) // (HDMA) Request a source chunk transfer on channel 2
  4222. #define AT91C_HDMA_SCREQ2_0 (0x0 << 4) // (HDMA) No effect.
  4223. #define AT91C_HDMA_SCREQ2_1 (0x1 << 4) // (HDMA) Request a source chunk transfer on channel 2.
  4224. #define AT91C_HDMA_DCREQ2 (0x1 << 5) // (HDMA) Request a destination chunk transfer on channel 2
  4225. #define AT91C_HDMA_DCREQ2_0 (0x0 << 5) // (HDMA) No effect.
  4226. #define AT91C_HDMA_DCREQ2_1 (0x1 << 5) // (HDMA) Request a destination chunk transfer on channel 2.
  4227. #define AT91C_HDMA_SCREQ3 (0x1 << 6) // (HDMA) Request a source chunk transfer on channel 3
  4228. #define AT91C_HDMA_SCREQ3_0 (0x0 << 6) // (HDMA) No effect.
  4229. #define AT91C_HDMA_SCREQ3_1 (0x1 << 6) // (HDMA) Request a source chunk transfer on channel 3.
  4230. #define AT91C_HDMA_DCREQ3 (0x1 << 7) // (HDMA) Request a destination chunk transfer on channel 3
  4231. #define AT91C_HDMA_DCREQ3_0 (0x0 << 7) // (HDMA) No effect.
  4232. #define AT91C_HDMA_DCREQ3_1 (0x1 << 7) // (HDMA) Request a destination chunk transfer on channel 3.
  4233. #define AT91C_HDMA_SCREQ4 (0x1 << 8) // (HDMA) Request a source chunk transfer on channel 4
  4234. #define AT91C_HDMA_SCREQ4_0 (0x0 << 8) // (HDMA) No effect.
  4235. #define AT91C_HDMA_SCREQ4_1 (0x1 << 8) // (HDMA) Request a source chunk transfer on channel 4.
  4236. #define AT91C_HDMA_DCREQ4 (0x1 << 9) // (HDMA) Request a destination chunk transfer on channel 4
  4237. #define AT91C_HDMA_DCREQ4_0 (0x0 << 9) // (HDMA) No effect.
  4238. #define AT91C_HDMA_DCREQ4_1 (0x1 << 9) // (HDMA) Request a destination chunk transfer on channel 4.
  4239. #define AT91C_HDMA_SCREQ5 (0x1 << 10) // (HDMA) Request a source chunk transfer on channel 5
  4240. #define AT91C_HDMA_SCREQ5_0 (0x0 << 10) // (HDMA) No effect.
  4241. #define AT91C_HDMA_SCREQ5_1 (0x1 << 10) // (HDMA) Request a source chunk transfer on channel 5.
  4242. #define AT91C_HDMA_DCREQ6 (0x1 << 11) // (HDMA) Request a destination chunk transfer on channel 5
  4243. #define AT91C_HDMA_DCREQ6_0 (0x0 << 11) // (HDMA) No effect.
  4244. #define AT91C_HDMA_DCREQ6_1 (0x1 << 11) // (HDMA) Request a destination chunk transfer on channel 5.
  4245. #define AT91C_HDMA_SCREQ6 (0x1 << 12) // (HDMA) Request a source chunk transfer on channel 6
  4246. #define AT91C_HDMA_SCREQ6_0 (0x0 << 12) // (HDMA) No effect.
  4247. #define AT91C_HDMA_SCREQ6_1 (0x1 << 12) // (HDMA) Request a source chunk transfer on channel 6.
  4248. #define AT91C_HDMA_SCREQ7 (0x1 << 14) // (HDMA) Request a source chunk transfer on channel 7
  4249. #define AT91C_HDMA_SCREQ7_0 (0x0 << 14) // (HDMA) No effect.
  4250. #define AT91C_HDMA_SCREQ7_1 (0x1 << 14) // (HDMA) Request a source chunk transfer on channel 7.
  4251. #define AT91C_HDMA_DCREQ7 (0x1 << 15) // (HDMA) Request a destination chunk transfer on channel 7
  4252. #define AT91C_HDMA_DCREQ7_0 (0x0 << 15) // (HDMA) No effect.
  4253. #define AT91C_HDMA_DCREQ7_1 (0x1 << 15) // (HDMA) Request a destination chunk transfer on channel 7.
  4254. // -------- HDMA_LAST : (HDMA Offset: 0x10) --------
  4255. #define AT91C_HDMA_SLAST0 (0x1 << 0) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 0
  4256. #define AT91C_HDMA_SLAST0_0 (0x0) // (HDMA) No effect.
  4257. #define AT91C_HDMA_SLAST0_1 (0x1) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 0.
  4258. #define AT91C_HDMA_DLAST0 (0x1 << 1) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 0
  4259. #define AT91C_HDMA_DLAST0_0 (0x0 << 1) // (HDMA) No effect.
  4260. #define AT91C_HDMA_DLAST0_1 (0x1 << 1) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 0.
  4261. #define AT91C_HDMA_SLAST1 (0x1 << 2) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 1
  4262. #define AT91C_HDMA_SLAST1_0 (0x0 << 2) // (HDMA) No effect.
  4263. #define AT91C_HDMA_SLAST1_1 (0x1 << 2) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 1.
  4264. #define AT91C_HDMA_DLAST1 (0x1 << 3) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 1
  4265. #define AT91C_HDMA_DLAST1_0 (0x0 << 3) // (HDMA) No effect.
  4266. #define AT91C_HDMA_DLAST1_1 (0x1 << 3) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 1.
  4267. #define AT91C_HDMA_SLAST2 (0x1 << 4) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 2
  4268. #define AT91C_HDMA_SLAST2_0 (0x0 << 4) // (HDMA) No effect.
  4269. #define AT91C_HDMA_SLAST2_1 (0x1 << 4) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 2.
  4270. #define AT91C_HDMA_DLAST2 (0x1 << 5) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 2
  4271. #define AT91C_HDMA_DLAST2_0 (0x0 << 5) // (HDMA) No effect.
  4272. #define AT91C_HDMA_DLAST2_1 (0x1 << 5) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 2.
  4273. #define AT91C_HDMA_SLAST3 (0x1 << 6) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 3
  4274. #define AT91C_HDMA_SLAST3_0 (0x0 << 6) // (HDMA) No effect.
  4275. #define AT91C_HDMA_SLAST3_1 (0x1 << 6) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 3.
  4276. #define AT91C_HDMA_DLAST3 (0x1 << 7) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 3
  4277. #define AT91C_HDMA_DLAST3_0 (0x0 << 7) // (HDMA) No effect.
  4278. #define AT91C_HDMA_DLAST3_1 (0x1 << 7) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 3.
  4279. #define AT91C_HDMA_SLAST4 (0x1 << 8) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 4
  4280. #define AT91C_HDMA_SLAST4_0 (0x0 << 8) // (HDMA) No effect.
  4281. #define AT91C_HDMA_SLAST4_1 (0x1 << 8) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 4.
  4282. #define AT91C_HDMA_DLAST4 (0x1 << 9) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 4
  4283. #define AT91C_HDMA_DLAST4_0 (0x0 << 9) // (HDMA) No effect.
  4284. #define AT91C_HDMA_DLAST4_1 (0x1 << 9) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 4.
  4285. #define AT91C_HDMA_SLAST5 (0x1 << 10) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 5
  4286. #define AT91C_HDMA_SLAST5_0 (0x0 << 10) // (HDMA) No effect.
  4287. #define AT91C_HDMA_SLAST5_1 (0x1 << 10) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 5.
  4288. #define AT91C_HDMA_DLAST6 (0x1 << 11) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 5
  4289. #define AT91C_HDMA_DLAST6_0 (0x0 << 11) // (HDMA) No effect.
  4290. #define AT91C_HDMA_DLAST6_1 (0x1 << 11) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 5.
  4291. #define AT91C_HDMA_SLAST6 (0x1 << 12) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 6
  4292. #define AT91C_HDMA_SLAST6_0 (0x0 << 12) // (HDMA) No effect.
  4293. #define AT91C_HDMA_SLAST6_1 (0x1 << 12) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 6.
  4294. #define AT91C_HDMA_SLAST7 (0x1 << 14) // (HDMA) Indicates that this source request is the last transfer of the buffer on channel 7
  4295. #define AT91C_HDMA_SLAST7_0 (0x0 << 14) // (HDMA) No effect.
  4296. #define AT91C_HDMA_SLAST7_1 (0x1 << 14) // (HDMA) Writing one to SLASTx prior to writing one to SSREQx or SCREQx indicates that this source request is the last transfer of the buffer on channel 7.
  4297. #define AT91C_HDMA_DLAST7 (0x1 << 15) // (HDMA) Indicates that this destination request is the last transfer of the buffer on channel 7
  4298. #define AT91C_HDMA_DLAST7_0 (0x0 << 15) // (HDMA) No effect.
  4299. #define AT91C_HDMA_DLAST7_1 (0x1 << 15) // (HDMA) Writing one to DLASTx prior to writing one to DSREQx or DCREQx indicates that this destination request is the last transfer of the buffer on channel 7.
  4300. // -------- HDMA_SYNC : (HDMA Offset: 0x14) --------
  4301. #define AT91C_SYNC_REQ (0xFFFF << 0) // (HDMA)
  4302. // -------- HDMA_EBCIER : (HDMA Offset: 0x18) Buffer Transfer Completed/Chained Buffer Transfer Completed/Access Error Interrupt Enable Register --------
  4303. #define AT91C_HDMA_BTC0 (0x1 << 0) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4304. #define AT91C_HDMA_BTC1 (0x1 << 1) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4305. #define AT91C_HDMA_BTC2 (0x1 << 2) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4306. #define AT91C_HDMA_BTC3 (0x1 << 3) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4307. #define AT91C_HDMA_BTC4 (0x1 << 4) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4308. #define AT91C_HDMA_BTC5 (0x1 << 5) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4309. #define AT91C_HDMA_BTC6 (0x1 << 6) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4310. #define AT91C_HDMA_BTC7 (0x1 << 7) // (HDMA) Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4311. #define AT91C_HDMA_CBTC0 (0x1 << 8) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4312. #define AT91C_HDMA_CBTC1 (0x1 << 9) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4313. #define AT91C_HDMA_CBTC2 (0x1 << 10) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4314. #define AT91C_HDMA_CBTC3 (0x1 << 11) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4315. #define AT91C_HDMA_CBTC4 (0x1 << 12) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4316. #define AT91C_HDMA_CBTC5 (0x1 << 13) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4317. #define AT91C_HDMA_CBTC6 (0x1 << 14) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4318. #define AT91C_HDMA_CBTC7 (0x1 << 15) // (HDMA) Chained Buffer Transfer Completed Interrupt Enable/Disable/Status Register
  4319. #define AT91C_HDMA_ERR0 (0x1 << 16) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4320. #define AT91C_HDMA_ERR1 (0x1 << 17) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4321. #define AT91C_HDMA_ERR2 (0x1 << 18) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4322. #define AT91C_HDMA_ERR3 (0x1 << 19) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4323. #define AT91C_HDMA_ERR4 (0x1 << 20) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4324. #define AT91C_HDMA_ERR5 (0x1 << 21) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4325. #define AT91C_HDMA_ERR6 (0x1 << 22) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4326. #define AT91C_HDMA_ERR7 (0x1 << 23) // (HDMA) Access HDMA_Error Interrupt Enable/Disable/Status Register
  4327. // -------- HDMA_EBCIDR : (HDMA Offset: 0x1c) --------
  4328. // -------- HDMA_EBCIMR : (HDMA Offset: 0x20) --------
  4329. // -------- HDMA_EBCISR : (HDMA Offset: 0x24) --------
  4330. // -------- HDMA_CHER : (HDMA Offset: 0x28) --------
  4331. #define AT91C_HDMA_ENA0 (0x1 << 0) // (HDMA) When set, channel 0 enabled.
  4332. #define AT91C_HDMA_ENA0_0 (0x0) // (HDMA) No effect.
  4333. #define AT91C_HDMA_ENA0_1 (0x1) // (HDMA) Channel 0 enabled.
  4334. #define AT91C_HDMA_ENA1 (0x1 << 1) // (HDMA) When set, channel 1 enabled.
  4335. #define AT91C_HDMA_ENA1_0 (0x0 << 1) // (HDMA) No effect.
  4336. #define AT91C_HDMA_ENA1_1 (0x1 << 1) // (HDMA) Channel 1 enabled.
  4337. #define AT91C_HDMA_ENA2 (0x1 << 2) // (HDMA) When set, channel 2 enabled.
  4338. #define AT91C_HDMA_ENA2_0 (0x0 << 2) // (HDMA) No effect.
  4339. #define AT91C_HDMA_ENA2_1 (0x1 << 2) // (HDMA) Channel 2 enabled.
  4340. #define AT91C_HDMA_ENA3 (0x1 << 3) // (HDMA) When set, channel 3 enabled.
  4341. #define AT91C_HDMA_ENA3_0 (0x0 << 3) // (HDMA) No effect.
  4342. #define AT91C_HDMA_ENA3_1 (0x1 << 3) // (HDMA) Channel 3 enabled.
  4343. #define AT91C_HDMA_ENA4 (0x1 << 4) // (HDMA) When set, channel 4 enabled.
  4344. #define AT91C_HDMA_ENA4_0 (0x0 << 4) // (HDMA) No effect.
  4345. #define AT91C_HDMA_ENA4_1 (0x1 << 4) // (HDMA) Channel 4 enabled.
  4346. #define AT91C_HDMA_ENA5 (0x1 << 5) // (HDMA) When set, channel 5 enabled.
  4347. #define AT91C_HDMA_ENA5_0 (0x0 << 5) // (HDMA) No effect.
  4348. #define AT91C_HDMA_ENA5_1 (0x1 << 5) // (HDMA) Channel 5 enabled.
  4349. #define AT91C_HDMA_ENA6 (0x1 << 6) // (HDMA) When set, channel 6 enabled.
  4350. #define AT91C_HDMA_ENA6_0 (0x0 << 6) // (HDMA) No effect.
  4351. #define AT91C_HDMA_ENA6_1 (0x1 << 6) // (HDMA) Channel 6 enabled.
  4352. #define AT91C_HDMA_ENA7 (0x1 << 7) // (HDMA) When set, channel 7 enabled.
  4353. #define AT91C_HDMA_ENA7_0 (0x0 << 7) // (HDMA) No effect.
  4354. #define AT91C_HDMA_ENA7_1 (0x1 << 7) // (HDMA) Channel 7 enabled.
  4355. #define AT91C_HDMA_SUSP0 (0x1 << 8) // (HDMA) When set, channel 0 freezed and its current context.
  4356. #define AT91C_HDMA_SUSP0_0 (0x0 << 8) // (HDMA) No effect.
  4357. #define AT91C_HDMA_SUSP0_1 (0x1 << 8) // (HDMA) Channel 0 freezed.
  4358. #define AT91C_HDMA_SUSP1 (0x1 << 9) // (HDMA) When set, channel 1 freezed and its current context.
  4359. #define AT91C_HDMA_SUSP1_0 (0x0 << 9) // (HDMA) No effect.
  4360. #define AT91C_HDMA_SUSP1_1 (0x1 << 9) // (HDMA) Channel 1 freezed.
  4361. #define AT91C_HDMA_SUSP2 (0x1 << 10) // (HDMA) When set, channel 2 freezed and its current context.
  4362. #define AT91C_HDMA_SUSP2_0 (0x0 << 10) // (HDMA) No effect.
  4363. #define AT91C_HDMA_SUSP2_1 (0x1 << 10) // (HDMA) Channel 2 freezed.
  4364. #define AT91C_HDMA_SUSP3 (0x1 << 11) // (HDMA) When set, channel 3 freezed and its current context.
  4365. #define AT91C_HDMA_SUSP3_0 (0x0 << 11) // (HDMA) No effect.
  4366. #define AT91C_HDMA_SUSP3_1 (0x1 << 11) // (HDMA) Channel 3 freezed.
  4367. #define AT91C_HDMA_SUSP4 (0x1 << 12) // (HDMA) When set, channel 4 freezed and its current context.
  4368. #define AT91C_HDMA_SUSP4_0 (0x0 << 12) // (HDMA) No effect.
  4369. #define AT91C_HDMA_SUSP4_1 (0x1 << 12) // (HDMA) Channel 4 freezed.
  4370. #define AT91C_HDMA_SUSP5 (0x1 << 13) // (HDMA) When set, channel 5 freezed and its current context.
  4371. #define AT91C_HDMA_SUSP5_0 (0x0 << 13) // (HDMA) No effect.
  4372. #define AT91C_HDMA_SUSP5_1 (0x1 << 13) // (HDMA) Channel 5 freezed.
  4373. #define AT91C_HDMA_SUSP6 (0x1 << 14) // (HDMA) When set, channel 6 freezed and its current context.
  4374. #define AT91C_HDMA_SUSP6_0 (0x0 << 14) // (HDMA) No effect.
  4375. #define AT91C_HDMA_SUSP6_1 (0x1 << 14) // (HDMA) Channel 6 freezed.
  4376. #define AT91C_HDMA_SUSP7 (0x1 << 15) // (HDMA) When set, channel 7 freezed and its current context.
  4377. #define AT91C_HDMA_SUSP7_0 (0x0 << 15) // (HDMA) No effect.
  4378. #define AT91C_HDMA_SUSP7_1 (0x1 << 15) // (HDMA) Channel 7 freezed.
  4379. #define AT91C_HDMA_KEEP0 (0x1 << 24) // (HDMA) When set, it resumes the channel 0 from an automatic stall state.
  4380. #define AT91C_HDMA_KEEP0_0 (0x0 << 24) // (HDMA) No effect.
  4381. #define AT91C_HDMA_KEEP0_1 (0x1 << 24) // (HDMA) Resumes the channel 0.
  4382. #define AT91C_HDMA_KEEP1 (0x1 << 25) // (HDMA) When set, it resumes the channel 1 from an automatic stall state.
  4383. #define AT91C_HDMA_KEEP1_0 (0x0 << 25) // (HDMA) No effect.
  4384. #define AT91C_HDMA_KEEP1_1 (0x1 << 25) // (HDMA) Resumes the channel 1.
  4385. #define AT91C_HDMA_KEEP2 (0x1 << 26) // (HDMA) When set, it resumes the channel 2 from an automatic stall state.
  4386. #define AT91C_HDMA_KEEP2_0 (0x0 << 26) // (HDMA) No effect.
  4387. #define AT91C_HDMA_KEEP2_1 (0x1 << 26) // (HDMA) Resumes the channel 2.
  4388. #define AT91C_HDMA_KEEP3 (0x1 << 27) // (HDMA) When set, it resumes the channel 3 from an automatic stall state.
  4389. #define AT91C_HDMA_KEEP3_0 (0x0 << 27) // (HDMA) No effect.
  4390. #define AT91C_HDMA_KEEP3_1 (0x1 << 27) // (HDMA) Resumes the channel 3.
  4391. #define AT91C_HDMA_KEEP4 (0x1 << 28) // (HDMA) When set, it resumes the channel 4 from an automatic stall state.
  4392. #define AT91C_HDMA_KEEP4_0 (0x0 << 28) // (HDMA) No effect.
  4393. #define AT91C_HDMA_KEEP4_1 (0x1 << 28) // (HDMA) Resumes the channel 4.
  4394. #define AT91C_HDMA_KEEP5 (0x1 << 29) // (HDMA) When set, it resumes the channel 5 from an automatic stall state.
  4395. #define AT91C_HDMA_KEEP5_0 (0x0 << 29) // (HDMA) No effect.
  4396. #define AT91C_HDMA_KEEP5_1 (0x1 << 29) // (HDMA) Resumes the channel 5.
  4397. #define AT91C_HDMA_KEEP6 (0x1 << 30) // (HDMA) When set, it resumes the channel 6 from an automatic stall state.
  4398. #define AT91C_HDMA_KEEP6_0 (0x0 << 30) // (HDMA) No effect.
  4399. #define AT91C_HDMA_KEEP6_1 (0x1 << 30) // (HDMA) Resumes the channel 6.
  4400. #define AT91C_HDMA_KEEP7 (0x1 << 31) // (HDMA) When set, it resumes the channel 7 from an automatic stall state.
  4401. #define AT91C_HDMA_KEEP7_0 (0x0 << 31) // (HDMA) No effect.
  4402. #define AT91C_HDMA_KEEP7_1 (0x1 << 31) // (HDMA) Resumes the channel 7.
  4403. // -------- HDMA_CHDR : (HDMA Offset: 0x2c) --------
  4404. #define AT91C_HDMA_DIS0 (0x1 << 0) // (HDMA) Write one to this field to disable the channel 0.
  4405. #define AT91C_HDMA_DIS0_0 (0x0) // (HDMA) No effect.
  4406. #define AT91C_HDMA_DIS0_1 (0x1) // (HDMA) Disables the channel 0.
  4407. #define AT91C_HDMA_DIS1 (0x1 << 1) // (HDMA) Write one to this field to disable the channel 1.
  4408. #define AT91C_HDMA_DIS1_0 (0x0 << 1) // (HDMA) No effect.
  4409. #define AT91C_HDMA_DIS1_1 (0x1 << 1) // (HDMA) Disables the channel 1.
  4410. #define AT91C_HDMA_DIS2 (0x1 << 2) // (HDMA) Write one to this field to disable the channel 2.
  4411. #define AT91C_HDMA_DIS2_0 (0x0 << 2) // (HDMA) No effect.
  4412. #define AT91C_HDMA_DIS2_1 (0x1 << 2) // (HDMA) Disables the channel 2.
  4413. #define AT91C_HDMA_DIS3 (0x1 << 3) // (HDMA) Write one to this field to disable the channel 3.
  4414. #define AT91C_HDMA_DIS3_0 (0x0 << 3) // (HDMA) No effect.
  4415. #define AT91C_HDMA_DIS3_1 (0x1 << 3) // (HDMA) Disables the channel 3.
  4416. #define AT91C_HDMA_DIS4 (0x1 << 4) // (HDMA) Write one to this field to disable the channel 4.
  4417. #define AT91C_HDMA_DIS4_0 (0x0 << 4) // (HDMA) No effect.
  4418. #define AT91C_HDMA_DIS4_1 (0x1 << 4) // (HDMA) Disables the channel 4.
  4419. #define AT91C_HDMA_DIS5 (0x1 << 5) // (HDMA) Write one to this field to disable the channel 5.
  4420. #define AT91C_HDMA_DIS5_0 (0x0 << 5) // (HDMA) No effect.
  4421. #define AT91C_HDMA_DIS5_1 (0x1 << 5) // (HDMA) Disables the channel 5.
  4422. #define AT91C_HDMA_DIS6 (0x1 << 6) // (HDMA) Write one to this field to disable the channel 6.
  4423. #define AT91C_HDMA_DIS6_0 (0x0 << 6) // (HDMA) No effect.
  4424. #define AT91C_HDMA_DIS6_1 (0x1 << 6) // (HDMA) Disables the channel 6.
  4425. #define AT91C_HDMA_DIS7 (0x1 << 7) // (HDMA) Write one to this field to disable the channel 7.
  4426. #define AT91C_HDMA_DIS7_0 (0x0 << 7) // (HDMA) No effect.
  4427. #define AT91C_HDMA_DIS7_1 (0x1 << 7) // (HDMA) Disables the channel 7.
  4428. #define AT91C_HDMA_RES0 (0x1 << 8) // (HDMA) Write one to this field to resume the channel 0 transfer restoring its context.
  4429. #define AT91C_HDMA_RES0_0 (0x0 << 8) // (HDMA) No effect.
  4430. #define AT91C_HDMA_RES0_1 (0x1 << 8) // (HDMA) Resumes the channel 0.
  4431. #define AT91C_HDMA_RES1 (0x1 << 9) // (HDMA) Write one to this field to resume the channel 1 transfer restoring its context.
  4432. #define AT91C_HDMA_RES1_0 (0x0 << 9) // (HDMA) No effect.
  4433. #define AT91C_HDMA_RES1_1 (0x1 << 9) // (HDMA) Resumes the channel 1.
  4434. #define AT91C_HDMA_RES2 (0x1 << 10) // (HDMA) Write one to this field to resume the channel 2 transfer restoring its context.
  4435. #define AT91C_HDMA_RES2_0 (0x0 << 10) // (HDMA) No effect.
  4436. #define AT91C_HDMA_RES2_1 (0x1 << 10) // (HDMA) Resumes the channel 2.
  4437. #define AT91C_HDMA_RES3 (0x1 << 11) // (HDMA) Write one to this field to resume the channel 3 transfer restoring its context.
  4438. #define AT91C_HDMA_RES3_0 (0x0 << 11) // (HDMA) No effect.
  4439. #define AT91C_HDMA_RES3_1 (0x1 << 11) // (HDMA) Resumes the channel 3.
  4440. #define AT91C_HDMA_RES4 (0x1 << 12) // (HDMA) Write one to this field to resume the channel 4 transfer restoring its context.
  4441. #define AT91C_HDMA_RES4_0 (0x0 << 12) // (HDMA) No effect.
  4442. #define AT91C_HDMA_RES4_1 (0x1 << 12) // (HDMA) Resumes the channel 4.
  4443. #define AT91C_HDMA_RES5 (0x1 << 13) // (HDMA) Write one to this field to resume the channel 5 transfer restoring its context.
  4444. #define AT91C_HDMA_RES5_0 (0x0 << 13) // (HDMA) No effect.
  4445. #define AT91C_HDMA_RES5_1 (0x1 << 13) // (HDMA) Resumes the channel 5.
  4446. #define AT91C_HDMA_RES6 (0x1 << 14) // (HDMA) Write one to this field to resume the channel 6 transfer restoring its context.
  4447. #define AT91C_HDMA_RES6_0 (0x0 << 14) // (HDMA) No effect.
  4448. #define AT91C_HDMA_RES6_1 (0x1 << 14) // (HDMA) Resumes the channel 6.
  4449. #define AT91C_HDMA_RES7 (0x1 << 15) // (HDMA) Write one to this field to resume the channel 7 transfer restoring its context.
  4450. #define AT91C_HDMA_RES7_0 (0x0 << 15) // (HDMA) No effect.
  4451. #define AT91C_HDMA_RES7_1 (0x1 << 15) // (HDMA) Resumes the channel 7.
  4452. // -------- HDMA_CHSR : (HDMA Offset: 0x30) --------
  4453. #define AT91C_HDMA_EMPT0 (0x1 << 16) // (HDMA) When set, channel 0 is empty.
  4454. #define AT91C_HDMA_EMPT0_0 (0x0 << 16) // (HDMA) No effect.
  4455. #define AT91C_HDMA_EMPT0_1 (0x1 << 16) // (HDMA) Channel 0 empty.
  4456. #define AT91C_HDMA_EMPT1 (0x1 << 17) // (HDMA) When set, channel 1 is empty.
  4457. #define AT91C_HDMA_EMPT1_0 (0x0 << 17) // (HDMA) No effect.
  4458. #define AT91C_HDMA_EMPT1_1 (0x1 << 17) // (HDMA) Channel 1 empty.
  4459. #define AT91C_HDMA_EMPT2 (0x1 << 18) // (HDMA) When set, channel 2 is empty.
  4460. #define AT91C_HDMA_EMPT2_0 (0x0 << 18) // (HDMA) No effect.
  4461. #define AT91C_HDMA_EMPT2_1 (0x1 << 18) // (HDMA) Channel 2 empty.
  4462. #define AT91C_HDMA_EMPT3 (0x1 << 19) // (HDMA) When set, channel 3 is empty.
  4463. #define AT91C_HDMA_EMPT3_0 (0x0 << 19) // (HDMA) No effect.
  4464. #define AT91C_HDMA_EMPT3_1 (0x1 << 19) // (HDMA) Channel 3 empty.
  4465. #define AT91C_HDMA_EMPT4 (0x1 << 20) // (HDMA) When set, channel 4 is empty.
  4466. #define AT91C_HDMA_EMPT4_0 (0x0 << 20) // (HDMA) No effect.
  4467. #define AT91C_HDMA_EMPT4_1 (0x1 << 20) // (HDMA) Channel 4 empty.
  4468. #define AT91C_HDMA_EMPT5 (0x1 << 21) // (HDMA) When set, channel 5 is empty.
  4469. #define AT91C_HDMA_EMPT5_0 (0x0 << 21) // (HDMA) No effect.
  4470. #define AT91C_HDMA_EMPT5_1 (0x1 << 21) // (HDMA) Channel 5 empty.
  4471. #define AT91C_HDMA_EMPT6 (0x1 << 22) // (HDMA) When set, channel 6 is empty.
  4472. #define AT91C_HDMA_EMPT6_0 (0x0 << 22) // (HDMA) No effect.
  4473. #define AT91C_HDMA_EMPT6_1 (0x1 << 22) // (HDMA) Channel 6 empty.
  4474. #define AT91C_HDMA_EMPT7 (0x1 << 23) // (HDMA) When set, channel 7 is empty.
  4475. #define AT91C_HDMA_EMPT7_0 (0x0 << 23) // (HDMA) No effect.
  4476. #define AT91C_HDMA_EMPT7_1 (0x1 << 23) // (HDMA) Channel 7 empty.
  4477. #define AT91C_HDMA_STAL0 (0x1 << 24) // (HDMA) When set, channel 0 is stalled.
  4478. #define AT91C_HDMA_STAL0_0 (0x0 << 24) // (HDMA) No effect.
  4479. #define AT91C_HDMA_STAL0_1 (0x1 << 24) // (HDMA) Channel 0 stalled.
  4480. #define AT91C_HDMA_STAL1 (0x1 << 25) // (HDMA) When set, channel 1 is stalled.
  4481. #define AT91C_HDMA_STAL1_0 (0x0 << 25) // (HDMA) No effect.
  4482. #define AT91C_HDMA_STAL1_1 (0x1 << 25) // (HDMA) Channel 1 stalled.
  4483. #define AT91C_HDMA_STAL2 (0x1 << 26) // (HDMA) When set, channel 2 is stalled.
  4484. #define AT91C_HDMA_STAL2_0 (0x0 << 26) // (HDMA) No effect.
  4485. #define AT91C_HDMA_STAL2_1 (0x1 << 26) // (HDMA) Channel 2 stalled.
  4486. #define AT91C_HDMA_STAL3 (0x1 << 27) // (HDMA) When set, channel 3 is stalled.
  4487. #define AT91C_HDMA_STAL3_0 (0x0 << 27) // (HDMA) No effect.
  4488. #define AT91C_HDMA_STAL3_1 (0x1 << 27) // (HDMA) Channel 3 stalled.
  4489. #define AT91C_HDMA_STAL4 (0x1 << 28) // (HDMA) When set, channel 4 is stalled.
  4490. #define AT91C_HDMA_STAL4_0 (0x0 << 28) // (HDMA) No effect.
  4491. #define AT91C_HDMA_STAL4_1 (0x1 << 28) // (HDMA) Channel 4 stalled.
  4492. #define AT91C_HDMA_STAL5 (0x1 << 29) // (HDMA) When set, channel 5 is stalled.
  4493. #define AT91C_HDMA_STAL5_0 (0x0 << 29) // (HDMA) No effect.
  4494. #define AT91C_HDMA_STAL5_1 (0x1 << 29) // (HDMA) Channel 5 stalled.
  4495. #define AT91C_HDMA_STAL6 (0x1 << 30) // (HDMA) When set, channel 6 is stalled.
  4496. #define AT91C_HDMA_STAL6_0 (0x0 << 30) // (HDMA) No effect.
  4497. #define AT91C_HDMA_STAL6_1 (0x1 << 30) // (HDMA) Channel 6 stalled.
  4498. #define AT91C_HDMA_STAL7 (0x1 << 31) // (HDMA) When set, channel 7 is stalled.
  4499. #define AT91C_HDMA_STAL7_0 (0x0 << 31) // (HDMA) No effect.
  4500. #define AT91C_HDMA_STAL7_1 (0x1 << 31) // (HDMA) Channel 7 stalled.
  4501. // -------- HDMA_RSVD : (HDMA Offset: 0x34) --------
  4502. // -------- HDMA_RSVD : (HDMA Offset: 0x38) --------
  4503. // *****************************************************************************
  4504. // SOFTWARE API DEFINITION FOR Error Correction Code controller
  4505. // *****************************************************************************
  4506. #ifndef __ASSEMBLY__
  4507. typedef struct _AT91S_ECC {
  4508. AT91C_REG ECC_CR; // ECC reset register
  4509. AT91C_REG ECC_MR; // ECC Page size register
  4510. AT91C_REG ECC_SR1; // ECC Status register
  4511. AT91C_REG ECC_PR0; // ECC Parity register
  4512. AT91C_REG ECC_PR1; // ECC Parity register
  4513. AT91C_REG ECC_SR2; // ECC Status register
  4514. AT91C_REG ECC_PR2; // ECC Parity register
  4515. AT91C_REG ECC_PR3; // ECC Parity register
  4516. AT91C_REG ECC_PR4; // ECC Parity register
  4517. AT91C_REG ECC_PR5; // ECC Parity register
  4518. AT91C_REG ECC_PR6; // ECC Parity register
  4519. AT91C_REG ECC_PR7; // ECC Parity register
  4520. AT91C_REG ECC_PR8; // ECC Parity register
  4521. AT91C_REG ECC_PR9; // ECC Parity register
  4522. AT91C_REG ECC_PR10; // ECC Parity register
  4523. AT91C_REG ECC_PR11; // ECC Parity register
  4524. AT91C_REG ECC_PR12; // ECC Parity register
  4525. AT91C_REG ECC_PR13; // ECC Parity register
  4526. AT91C_REG ECC_PR14; // ECC Parity register
  4527. AT91C_REG ECC_PR15; // ECC Parity register
  4528. } AT91S_ECC, *AT91PS_ECC;
  4529. #else
  4530. #define ECC_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (ECC_CR) ECC reset register
  4531. #define ECC_MR (AT91C_CAST(AT91C_REG *) 0x00000004) // (ECC_MR) ECC Page size register
  4532. #define ECC_SR (AT91C_CAST(AT91C_REG *) 0x00000008) // (ECC_SR) ECC Status register
  4533. #define ECC_PR (AT91C_CAST(AT91C_REG *) 0x0000000C) // (ECC_PR) ECC Parity register
  4534. #define ECC_NPR (AT91C_CAST(AT91C_REG *) 0x00000010) // (ECC_NPR) ECC Parity N register
  4535. #define ECC_VR (AT91C_CAST(AT91C_REG *) 0x000000FC) // (ECC_VR) ECC Version register
  4536. #endif
  4537. // -------- ECC_CR : (ECC Offset: 0x0) ECC reset register --------
  4538. #define AT91C_ECC_RST (0x1 << 0) // (ECC) ECC reset parity
  4539. #define AT91C_ECC_SRST (0x1 << 1) // (ECC) ECC Soft reset
  4540. // -------- ECC_MR : (ECC Offset: 0x4) ECC page size register --------
  4541. #define AT91C_ECC_PAGE_SIZE (0x3 << 0) // (ECC) Nand Flash page size
  4542. //Cheney: Document is conflict, some times, it said that it is word, sometimes, it said that is byte. need testing.
  4543. #define AT91C_ECC_PAGE_SIZE_528_Words (0x0 << 0) // (ECC) Nand Flash page size is 528 words ?? Or byte??
  4544. #define AT91C_ECC_PAGE_SIZE_1056_Words (0x1 << 0) // (ECC) Nand Flash page size is 1056 words
  4545. #define AT91C_ECC_PAGE_SIZE_2112_Words (0x2 << 0) // (ECC) Nand Flash page size is 2112 words
  4546. #define AT91C_ECC_PAGE_SIZE_4224_Words (0x3 << 0) // (ECC) Nand Flash page size is 4224 words
  4547. #define AT91C_ECC_TYPECORRECT (0x3 << 4) // (ECC) Nand Flash correct type
  4548. #define AT91C_ECC_TYPCORRECT_ONE_EVERY_PAGE (0x0 << 4) // (ECC) 1 ECC per page
  4549. #define AT91C_ECC_TYPCORRECT_ONE_EVERY_256_BYTES (0x1 << 4) // (ECC) 1 ECC per 256 bytes, only support 8 bit width bus.
  4550. #define AT91C_ECC_TYPCORRECT_ONE_EVERY_512_BYTES (0x2 << 4) // (ECC) 1 ECC per 512 bytes, only support 8 bit width bus.
  4551. // -------- ECC_SR : (ECC Offset: 0x8) ECC status register --------
  4552. #define AT91C_ECC_RECERR (0x1 << 0) // (ECC) ECC error
  4553. #define AT91C_ECC_ECCERR (0x1 << 1) // (ECC) ECC single error
  4554. #define AT91C_ECC_MULERR (0x1 << 2) // (ECC) ECC_MULERR
  4555. // -------- ECC_PR : (ECC Offset: 0xc) ECC parity register --------
  4556. #define AT91C_ECC_BITADDR (0xF << 0) // (ECC) Bit address error
  4557. #define AT91C_ECC_WORDADDR (0xFFF << 4) // (ECC) address of the failing bit
  4558. #define AT91C_ECC_BITADDR_512ECC (0x7 << 0) // (ECC) Bit address error
  4559. #define AT91C_ECC_WORDADDR_512ECC (0x1FF << 3) // (ECC) address of the failing bit
  4560. #define AT91C_ECC_BITADDR_256ECC (0x7 << 0) // (ECC) Bit address error
  4561. #define AT91C_ECC_WORDADDR_256ECC (0xFF << 3) // (ECC) address of the failing bit
  4562. // -------- ECC_NPR : (ECC Offset: 0x10) ECC N parity register --------
  4563. #define AT91C_ECC_NPARITY (0xFFFF << 0) // (ECC) ECC parity N
  4564. // -------- ECC_VR : (ECC Offset: 0xfc) ECC version register --------
  4565. #define AT91C_ECC_VR (0xF << 0) // (ECC) ECC version register
  4566. // *****************************************************************************
  4567. // SOFTWARE API DEFINITION FOR Ethernet MAC 10/100
  4568. // *****************************************************************************
  4569. #ifndef __ASSEMBLY__
  4570. typedef struct _AT91S_EMAC {
  4571. AT91C_REG EMAC_NCR; // Network Control Register
  4572. AT91C_REG EMAC_NCFGR; // Network Configuration Register
  4573. AT91C_REG EMAC_NSR; // Network Status Register
  4574. AT91C_REG Reserved0[2]; //
  4575. AT91C_REG EMAC_TSR; // Transmit Status Register
  4576. AT91C_REG EMAC_RBQP; // Receive Buffer Queue Pointer
  4577. AT91C_REG EMAC_TBQP; // Transmit Buffer Queue Pointer
  4578. AT91C_REG EMAC_RSR; // Receive Status Register
  4579. AT91C_REG EMAC_ISR; // Interrupt Status Register
  4580. AT91C_REG EMAC_IER; // Interrupt Enable Register
  4581. AT91C_REG EMAC_IDR; // Interrupt Disable Register
  4582. AT91C_REG EMAC_IMR; // Interrupt Mask Register
  4583. AT91C_REG EMAC_MAN; // PHY Maintenance Register
  4584. AT91C_REG EMAC_PTR; // Pause Time Register
  4585. AT91C_REG EMAC_PFR; // Pause Frames received Register
  4586. AT91C_REG EMAC_FTO; // Frames Transmitted OK Register
  4587. AT91C_REG EMAC_SCF; // Single Collision Frame Register
  4588. AT91C_REG EMAC_MCF; // Multiple Collision Frame Register
  4589. AT91C_REG EMAC_FRO; // Frames Received OK Register
  4590. AT91C_REG EMAC_FCSE; // Frame Check Sequence Error Register
  4591. AT91C_REG EMAC_ALE; // Alignment Error Register
  4592. AT91C_REG EMAC_DTF; // Deferred Transmission Frame Register
  4593. AT91C_REG EMAC_LCOL; // Late Collision Register
  4594. AT91C_REG EMAC_ECOL; // Excessive Collision Register
  4595. AT91C_REG EMAC_TUND; // Transmit Underrun Error Register
  4596. AT91C_REG EMAC_CSE; // Carrier Sense Error Register
  4597. AT91C_REG EMAC_RRE; // Receive Ressource Error Register
  4598. AT91C_REG EMAC_ROV; // Receive Overrun Errors Register
  4599. AT91C_REG EMAC_RSE; // Receive Symbol Errors Register
  4600. AT91C_REG EMAC_ELE; // Excessive Length Errors Register
  4601. AT91C_REG EMAC_RJA; // Receive Jabbers Register
  4602. AT91C_REG EMAC_USF; // Undersize Frames Register
  4603. AT91C_REG EMAC_STE; // SQE Test Error Register
  4604. AT91C_REG EMAC_RLE; // Receive Length Field Mismatch Register
  4605. AT91C_REG EMAC_TPF; // Transmitted Pause Frames Register
  4606. AT91C_REG EMAC_HRB; // Hash Address Bottom[31:0]
  4607. AT91C_REG EMAC_HRT; // Hash Address Top[63:32]
  4608. AT91C_REG EMAC_SA1L; // Specific Address 1 Bottom, First 4 bytes
  4609. AT91C_REG EMAC_SA1H; // Specific Address 1 Top, Last 2 bytes
  4610. AT91C_REG EMAC_SA2L; // Specific Address 2 Bottom, First 4 bytes
  4611. AT91C_REG EMAC_SA2H; // Specific Address 2 Top, Last 2 bytes
  4612. AT91C_REG EMAC_SA3L; // Specific Address 3 Bottom, First 4 bytes
  4613. AT91C_REG EMAC_SA3H; // Specific Address 3 Top, Last 2 bytes
  4614. AT91C_REG EMAC_SA4L; // Specific Address 4 Bottom, First 4 bytes
  4615. AT91C_REG EMAC_SA4H; // Specific Address 4 Top, Last 2 bytes
  4616. AT91C_REG EMAC_TID; // Type ID Checking Register
  4617. AT91C_REG EMAC_TPQ; // Transmit Pause Quantum Register
  4618. AT91C_REG EMAC_USRIO; // USER Input/Output Register
  4619. AT91C_REG EMAC_WOL; // Wake On LAN Register
  4620. AT91C_REG Reserved1[13]; //
  4621. AT91C_REG EMAC_REV; // Revision Register
  4622. } AT91S_EMAC, *AT91PS_EMAC;
  4623. #else
  4624. #define EMAC_NCR (AT91C_CAST(AT91C_REG *) 0x00000000) // (EMAC_NCR) Network Control Register
  4625. #define EMAC_NCFGR (AT91C_CAST(AT91C_REG *) 0x00000004) // (EMAC_NCFGR) Network Configuration Register
  4626. #define EMAC_NSR (AT91C_CAST(AT91C_REG *) 0x00000008) // (EMAC_NSR) Network Status Register
  4627. #define EMAC_TSR (AT91C_CAST(AT91C_REG *) 0x00000014) // (EMAC_TSR) Transmit Status Register
  4628. #define EMAC_RBQP (AT91C_CAST(AT91C_REG *) 0x00000018) // (EMAC_RBQP) Receive Buffer Queue Pointer
  4629. #define EMAC_TBQP (AT91C_CAST(AT91C_REG *) 0x0000001C) // (EMAC_TBQP) Transmit Buffer Queue Pointer
  4630. #define EMAC_RSR (AT91C_CAST(AT91C_REG *) 0x00000020) // (EMAC_RSR) Receive Status Register
  4631. #define EMAC_ISR (AT91C_CAST(AT91C_REG *) 0x00000024) // (EMAC_ISR) Interrupt Status Register
  4632. #define EMAC_IER (AT91C_CAST(AT91C_REG *) 0x00000028) // (EMAC_IER) Interrupt Enable Register
  4633. #define EMAC_IDR (AT91C_CAST(AT91C_REG *) 0x0000002C) // (EMAC_IDR) Interrupt Disable Register
  4634. #define EMAC_IMR (AT91C_CAST(AT91C_REG *) 0x00000030) // (EMAC_IMR) Interrupt Mask Register
  4635. #define EMAC_MAN (AT91C_CAST(AT91C_REG *) 0x00000034) // (EMAC_MAN) PHY Maintenance Register
  4636. #define EMAC_PTR (AT91C_CAST(AT91C_REG *) 0x00000038) // (EMAC_PTR) Pause Time Register
  4637. #define EMAC_PFR (AT91C_CAST(AT91C_REG *) 0x0000003C) // (EMAC_PFR) Pause Frames received Register
  4638. #define EMAC_FTO (AT91C_CAST(AT91C_REG *) 0x00000040) // (EMAC_FTO) Frames Transmitted OK Register
  4639. #define EMAC_SCF (AT91C_CAST(AT91C_REG *) 0x00000044) // (EMAC_SCF) Single Collision Frame Register
  4640. #define EMAC_MCF (AT91C_CAST(AT91C_REG *) 0x00000048) // (EMAC_MCF) Multiple Collision Frame Register
  4641. #define EMAC_FRO (AT91C_CAST(AT91C_REG *) 0x0000004C) // (EMAC_FRO) Frames Received OK Register
  4642. #define EMAC_FCSE (AT91C_CAST(AT91C_REG *) 0x00000050) // (EMAC_FCSE) Frame Check Sequence Error Register
  4643. #define EMAC_ALE (AT91C_CAST(AT91C_REG *) 0x00000054) // (EMAC_ALE) Alignment Error Register
  4644. #define EMAC_DTF (AT91C_CAST(AT91C_REG *) 0x00000058) // (EMAC_DTF) Deferred Transmission Frame Register
  4645. #define EMAC_LCOL (AT91C_CAST(AT91C_REG *) 0x0000005C) // (EMAC_LCOL) Late Collision Register
  4646. #define EMAC_ECOL (AT91C_CAST(AT91C_REG *) 0x00000060) // (EMAC_ECOL) Excessive Collision Register
  4647. #define EMAC_TUND (AT91C_CAST(AT91C_REG *) 0x00000064) // (EMAC_TUND) Transmit Underrun Error Register
  4648. #define EMAC_CSE (AT91C_CAST(AT91C_REG *) 0x00000068) // (EMAC_CSE) Carrier Sense Error Register
  4649. #define EMAC_RRE (AT91C_CAST(AT91C_REG *) 0x0000006C) // (EMAC_RRE) Receive Ressource Error Register
  4650. #define EMAC_ROV (AT91C_CAST(AT91C_REG *) 0x00000070) // (EMAC_ROV) Receive Overrun Errors Register
  4651. #define EMAC_RSE (AT91C_CAST(AT91C_REG *) 0x00000074) // (EMAC_RSE) Receive Symbol Errors Register
  4652. #define EMAC_ELE (AT91C_CAST(AT91C_REG *) 0x00000078) // (EMAC_ELE) Excessive Length Errors Register
  4653. #define EMAC_RJA (AT91C_CAST(AT91C_REG *) 0x0000007C) // (EMAC_RJA) Receive Jabbers Register
  4654. #define EMAC_USF (AT91C_CAST(AT91C_REG *) 0x00000080) // (EMAC_USF) Undersize Frames Register
  4655. #define EMAC_STE (AT91C_CAST(AT91C_REG *) 0x00000084) // (EMAC_STE) SQE Test Error Register
  4656. #define EMAC_RLE (AT91C_CAST(AT91C_REG *) 0x00000088) // (EMAC_RLE) Receive Length Field Mismatch Register
  4657. #define EMAC_TPF (AT91C_CAST(AT91C_REG *) 0x0000008C) // (EMAC_TPF) Transmitted Pause Frames Register
  4658. #define EMAC_HRB (AT91C_CAST(AT91C_REG *) 0x00000090) // (EMAC_HRB) Hash Address Bottom[31:0]
  4659. #define EMAC_HRT (AT91C_CAST(AT91C_REG *) 0x00000094) // (EMAC_HRT) Hash Address Top[63:32]
  4660. #define EMAC_SA1L (AT91C_CAST(AT91C_REG *) 0x00000098) // (EMAC_SA1L) Specific Address 1 Bottom, First 4 bytes
  4661. #define EMAC_SA1H (AT91C_CAST(AT91C_REG *) 0x0000009C) // (EMAC_SA1H) Specific Address 1 Top, Last 2 bytes
  4662. #define EMAC_SA2L (AT91C_CAST(AT91C_REG *) 0x000000A0) // (EMAC_SA2L) Specific Address 2 Bottom, First 4 bytes
  4663. #define EMAC_SA2H (AT91C_CAST(AT91C_REG *) 0x000000A4) // (EMAC_SA2H) Specific Address 2 Top, Last 2 bytes
  4664. #define EMAC_SA3L (AT91C_CAST(AT91C_REG *) 0x000000A8) // (EMAC_SA3L) Specific Address 3 Bottom, First 4 bytes
  4665. #define EMAC_SA3H (AT91C_CAST(AT91C_REG *) 0x000000AC) // (EMAC_SA3H) Specific Address 3 Top, Last 2 bytes
  4666. #define EMAC_SA4L (AT91C_CAST(AT91C_REG *) 0x000000B0) // (EMAC_SA4L) Specific Address 4 Bottom, First 4 bytes
  4667. #define EMAC_SA4H (AT91C_CAST(AT91C_REG *) 0x000000B4) // (EMAC_SA4H) Specific Address 4 Top, Last 2 bytes
  4668. #define EMAC_TID (AT91C_CAST(AT91C_REG *) 0x000000B8) // (EMAC_TID) Type ID Checking Register
  4669. #define EMAC_TPQ (AT91C_CAST(AT91C_REG *) 0x000000BC) // (EMAC_TPQ) Transmit Pause Quantum Register
  4670. #define EMAC_USRIO (AT91C_CAST(AT91C_REG *) 0x000000C0) // (EMAC_USRIO) USER Input/Output Register
  4671. #define EMAC_WOL (AT91C_CAST(AT91C_REG *) 0x000000C4) // (EMAC_WOL) Wake On LAN Register
  4672. #define EMAC_REV (AT91C_CAST(AT91C_REG *) 0x000000FC) // (EMAC_REV) Revision Register
  4673. #endif
  4674. // -------- EMAC_NCR : (EMAC Offset: 0x0) --------
  4675. #define AT91C_EMAC_LB (0x1 << 0) // (EMAC) Loopback. Optional. When set, loopback signal is at high level.
  4676. #define AT91C_EMAC_LLB (0x1 << 1) // (EMAC) Loopback local.
  4677. #define AT91C_EMAC_RE (0x1 << 2) // (EMAC) Receive enable.
  4678. #define AT91C_EMAC_TE (0x1 << 3) // (EMAC) Transmit enable.
  4679. #define AT91C_EMAC_MPE (0x1 << 4) // (EMAC) Management port enable.
  4680. #define AT91C_EMAC_CLRSTAT (0x1 << 5) // (EMAC) Clear statistics registers.
  4681. #define AT91C_EMAC_INCSTAT (0x1 << 6) // (EMAC) Increment statistics registers.
  4682. #define AT91C_EMAC_WESTAT (0x1 << 7) // (EMAC) Write enable for statistics registers.
  4683. #define AT91C_EMAC_BP (0x1 << 8) // (EMAC) Back pressure.
  4684. #define AT91C_EMAC_TSTART (0x1 << 9) // (EMAC) Start Transmission.
  4685. #define AT91C_EMAC_THALT (0x1 << 10) // (EMAC) Transmission Halt.
  4686. #define AT91C_EMAC_TPFR (0x1 << 11) // (EMAC) Transmit pause frame
  4687. #define AT91C_EMAC_TZQ (0x1 << 12) // (EMAC) Transmit zero quantum pause frame
  4688. // -------- EMAC_NCFGR : (EMAC Offset: 0x4) Network Configuration Register --------
  4689. #define AT91C_EMAC_SPD (0x1 << 0) // (EMAC) Speed.
  4690. #define AT91C_EMAC_FD (0x1 << 1) // (EMAC) Full duplex.
  4691. #define AT91C_EMAC_JFRAME (0x1 << 3) // (EMAC) Jumbo Frames.
  4692. #define AT91C_EMAC_CAF (0x1 << 4) // (EMAC) Copy all frames.
  4693. #define AT91C_EMAC_NBC (0x1 << 5) // (EMAC) No broadcast.
  4694. #define AT91C_EMAC_MTI (0x1 << 6) // (EMAC) Multicast hash event enable
  4695. #define AT91C_EMAC_UNI (0x1 << 7) // (EMAC) Unicast hash enable.
  4696. #define AT91C_EMAC_BIG (0x1 << 8) // (EMAC) Receive 1522 bytes.
  4697. #define AT91C_EMAC_EAE (0x1 << 9) // (EMAC) External address match enable.
  4698. #define AT91C_EMAC_CLK (0x3 << 10) // (EMAC)
  4699. #define AT91C_EMAC_CLK_HCLK_8 (0x0 << 10) // (EMAC) HCLK divided by 8
  4700. #define AT91C_EMAC_CLK_HCLK_16 (0x1 << 10) // (EMAC) HCLK divided by 16
  4701. #define AT91C_EMAC_CLK_HCLK_32 (0x2 << 10) // (EMAC) HCLK divided by 32
  4702. #define AT91C_EMAC_CLK_HCLK_64 (0x3 << 10) // (EMAC) HCLK divided by 64
  4703. #define AT91C_EMAC_RTY (0x1 << 12) // (EMAC)
  4704. #define AT91C_EMAC_PAE (0x1 << 13) // (EMAC)
  4705. #define AT91C_EMAC_RBOF (0x3 << 14) // (EMAC)
  4706. #define AT91C_EMAC_RBOF_OFFSET_0 (0x0 << 14) // (EMAC) no offset from start of receive buffer
  4707. #define AT91C_EMAC_RBOF_OFFSET_1 (0x1 << 14) // (EMAC) one byte offset from start of receive buffer
  4708. #define AT91C_EMAC_RBOF_OFFSET_2 (0x2 << 14) // (EMAC) two bytes offset from start of receive buffer
  4709. #define AT91C_EMAC_RBOF_OFFSET_3 (0x3 << 14) // (EMAC) three bytes offset from start of receive buffer
  4710. #define AT91C_EMAC_RLCE (0x1 << 16) // (EMAC) Receive Length field Checking Enable
  4711. #define AT91C_EMAC_DRFCS (0x1 << 17) // (EMAC) Discard Receive FCS
  4712. #define AT91C_EMAC_EFRHD (0x1 << 18) // (EMAC)
  4713. #define AT91C_EMAC_IRXFCS (0x1 << 19) // (EMAC) Ignore RX FCS
  4714. // -------- EMAC_NSR : (EMAC Offset: 0x8) Network Status Register --------
  4715. #define AT91C_EMAC_LINKR (0x1 << 0) // (EMAC)
  4716. #define AT91C_EMAC_MDIO (0x1 << 1) // (EMAC)
  4717. #define AT91C_EMAC_IDLE (0x1 << 2) // (EMAC)
  4718. // -------- EMAC_TSR : (EMAC Offset: 0x14) Transmit Status Register --------
  4719. #define AT91C_EMAC_UBR (0x1 << 0) // (EMAC)
  4720. #define AT91C_EMAC_COL (0x1 << 1) // (EMAC)
  4721. #define AT91C_EMAC_RLES (0x1 << 2) // (EMAC)
  4722. #define AT91C_EMAC_TGO (0x1 << 3) // (EMAC) Transmit Go
  4723. #define AT91C_EMAC_BEX (0x1 << 4) // (EMAC) Buffers exhausted mid frame
  4724. #define AT91C_EMAC_COMP (0x1 << 5) // (EMAC)
  4725. #define AT91C_EMAC_UND (0x1 << 6) // (EMAC)
  4726. // -------- EMAC_RSR : (EMAC Offset: 0x20) Receive Status Register --------
  4727. #define AT91C_EMAC_BNA (0x1 << 0) // (EMAC)
  4728. #define AT91C_EMAC_REC (0x1 << 1) // (EMAC)
  4729. #define AT91C_EMAC_OVR (0x1 << 2) // (EMAC)
  4730. // -------- EMAC_ISR : (EMAC Offset: 0x24) Interrupt Status Register --------
  4731. #define AT91C_EMAC_MFD (0x1 << 0) // (EMAC)
  4732. #define AT91C_EMAC_RCOMP (0x1 << 1) // (EMAC)
  4733. #define AT91C_EMAC_RXUBR (0x1 << 2) // (EMAC)
  4734. #define AT91C_EMAC_TXUBR (0x1 << 3) // (EMAC)
  4735. #define AT91C_EMAC_TUNDR (0x1 << 4) // (EMAC)
  4736. #define AT91C_EMAC_RLEX (0x1 << 5) // (EMAC)
  4737. #define AT91C_EMAC_TXERR (0x1 << 6) // (EMAC)
  4738. #define AT91C_EMAC_TCOMP (0x1 << 7) // (EMAC)
  4739. #define AT91C_EMAC_LINK (0x1 << 9) // (EMAC)
  4740. #define AT91C_EMAC_ROVR (0x1 << 10) // (EMAC)
  4741. #define AT91C_EMAC_HRESP (0x1 << 11) // (EMAC)
  4742. #define AT91C_EMAC_PFRE (0x1 << 12) // (EMAC)
  4743. #define AT91C_EMAC_PTZ (0x1 << 13) // (EMAC)
  4744. #define AT91C_EMAC_WOLEV (0x1 << 14) // (EMAC)
  4745. // -------- EMAC_IER : (EMAC Offset: 0x28) Interrupt Enable Register --------
  4746. // -------- EMAC_IDR : (EMAC Offset: 0x2c) Interrupt Disable Register --------
  4747. // -------- EMAC_IMR : (EMAC Offset: 0x30) Interrupt Mask Register --------
  4748. // -------- EMAC_MAN : (EMAC Offset: 0x34) PHY Maintenance Register --------
  4749. #define AT91C_EMAC_DATA (0xFFFF << 0) // (EMAC)
  4750. #define AT91C_EMAC_CODE (0x3 << 16) // (EMAC)
  4751. #define AT91C_EMAC_REGA (0x1F << 18) // (EMAC)
  4752. #define AT91C_EMAC_PHYA (0x1F << 23) // (EMAC)
  4753. #define AT91C_EMAC_RW (0x3 << 28) // (EMAC)
  4754. #define AT91C_EMAC_SOF (0x3 << 30) // (EMAC)
  4755. // -------- EMAC_USRIO : (EMAC Offset: 0xc0) USER Input Output Register --------
  4756. #define AT91C_EMAC_RMII (0x1 << 0) // (EMAC) Reduce MII
  4757. #define AT91C_EMAC_CLKEN (0x1 << 1) // (EMAC) Clock Enable
  4758. // -------- EMAC_WOL : (EMAC Offset: 0xc4) Wake On LAN Register --------
  4759. #define AT91C_EMAC_IP (0xFFFF << 0) // (EMAC) ARP request IP address
  4760. #define AT91C_EMAC_MAG (0x1 << 16) // (EMAC) Magic packet event enable
  4761. #define AT91C_EMAC_ARP (0x1 << 17) // (EMAC) ARP request event enable
  4762. #define AT91C_EMAC_SA1 (0x1 << 18) // (EMAC) Specific address register 1 event enable
  4763. // -------- EMAC_REV : (EMAC Offset: 0xfc) Revision Register --------
  4764. #define AT91C_EMAC_REVREF (0xFFFF << 0) // (EMAC)
  4765. #define AT91C_EMAC_PARTREF (0xFFFF << 16) // (EMAC)
  4766. // *****************************************************************************
  4767. // SOFTWARE API DEFINITION FOR Image Sensor Interface
  4768. // *****************************************************************************
  4769. #ifndef __ASSEMBLY__
  4770. typedef struct _AT91S_ISI {
  4771. AT91C_REG ISI_CFG1; // Configuration Register 1
  4772. AT91C_REG ISI_CFG2; // Configuration Register 2
  4773. AT91C_REG ISI_PSIZE; // Preview Size Register
  4774. AT91C_REG ISI_PDECF; // Preview Decimation Factor Register
  4775. AT91C_REG ISI_Y2RSET0; // Color Space Conversion YCrCb to RGB Register
  4776. AT91C_REG ISI_Y2RSET1; // Color Space Conversion YCrCb to RGB Register
  4777. AT91C_REG ISI_R2YSET0; // Color Space Conversion RGB to YCrCb Register
  4778. AT91C_REG ISI_R2YSET1; // Color Space Conversion RGB to YCrCb Register
  4779. AT91C_REG ISI_R2YSET2; // Color Space Conversion RGB to YCrCb Register
  4780. AT91C_REG ISI_CTRL; // Control Register
  4781. AT91C_REG ISI_SR; // Status Register
  4782. AT91C_REG ISI_IER; // Interrupt Enable Register
  4783. AT91C_REG ISI_IDR; // Interrupt Disable Register
  4784. AT91C_REG ISI_IMR; // Interrupt Mask Register
  4785. AT91C_REG ISI_DMACHER; // DMA Channel Enable Register
  4786. AT91C_REG ISI_DMACHDR; // DMA Channel Disable Register
  4787. AT91C_REG ISI_DMACHSR; // DMA Channel Status Register
  4788. AT91C_REG ISI_DMAPADDR; // DMA Preview Base Address Register
  4789. AT91C_REG ISI_DMAPCTRL; // DMA Preview Control Register
  4790. AT91C_REG ISI_DMAPDSCR; // DMA Preview Descriptor Address Register
  4791. AT91C_REG ISI_DMACADDR; // DMA Codec Base Address Register
  4792. AT91C_REG ISI_DMACCTRL; // DMA Codec Control Register
  4793. AT91C_REG ISI_DMACDSCR; // DMA Codec Descriptor Address Register
  4794. AT91C_REG Reserved0[34]; //
  4795. AT91C_REG ISI_WPCR; // Write Protection Control Register
  4796. AT91C_REG ISI_WPSR; // Write Protection Status Register
  4797. AT91C_REG Reserved1[4]; //
  4798. AT91C_REG ISI_VER; // Version Register
  4799. } AT91S_ISI, *AT91PS_ISI;
  4800. #else
  4801. #define ISI_CFG1 (AT91C_CAST(AT91C_REG *) 0x00000000) // (ISI_CFG1) Configuration Register 1
  4802. #define ISI_CFG2 (AT91C_CAST(AT91C_REG *) 0x00000004) // (ISI_CFG2) Configuration Register 2
  4803. #define ISI_PSIZE (AT91C_CAST(AT91C_REG *) 0x00000008) // (ISI_PSIZE) Preview Size Register
  4804. #define ISI_PDECF (AT91C_CAST(AT91C_REG *) 0x0000000C) // (ISI_PDECF) Preview Decimation Factor Register
  4805. #define ISI_Y2RSET0 (AT91C_CAST(AT91C_REG *) 0x00000010) // (ISI_Y2RSET0) Color Space Conversion YCrCb to RGB Register
  4806. #define ISI_Y2RSET1 (AT91C_CAST(AT91C_REG *) 0x00000014) // (ISI_Y2RSET1) Color Space Conversion YCrCb to RGB Register
  4807. #define ISI_R2YSET0 (AT91C_CAST(AT91C_REG *) 0x00000018) // (ISI_R2YSET0) Color Space Conversion RGB to YCrCb Register
  4808. #define ISI_R2YSET1 (AT91C_CAST(AT91C_REG *) 0x0000001C) // (ISI_R2YSET1) Color Space Conversion RGB to YCrCb Register
  4809. #define ISI_R2YSET2 (AT91C_CAST(AT91C_REG *) 0x00000020) // (ISI_R2YSET2) Color Space Conversion RGB to YCrCb Register
  4810. #define ISI_CTRL (AT91C_CAST(AT91C_REG *) 0x00000024) // (ISI_CTRL) Control Register
  4811. #define ISI_SR (AT91C_CAST(AT91C_REG *) 0x00000028) // (ISI_SR) Status Register
  4812. #define ISI_IER (AT91C_CAST(AT91C_REG *) 0x0000002C) // (ISI_IER) Interrupt Enable Register
  4813. #define ISI_IDR (AT91C_CAST(AT91C_REG *) 0x00000030) // (ISI_IDR) Interrupt Disable Register
  4814. #define ISI_IMR (AT91C_CAST(AT91C_REG *) 0x00000034) // (ISI_IMR) Interrupt Mask Register
  4815. #define ISI_DMACHER (AT91C_CAST(AT91C_REG *) 0x00000038) // (ISI_DMACHER) DMA Channel Enable Register
  4816. #define ISI_DMACHDR (AT91C_CAST(AT91C_REG *) 0x0000003C) // (ISI_DMACHDR) DMA Channel Disable Register
  4817. #define ISI_DMACHSR (AT91C_CAST(AT91C_REG *) 0x00000040) // (ISI_DMACHSR) DMA Channel Status Register
  4818. #define ISI_DMAPADDR (AT91C_CAST(AT91C_REG *) 0x00000044) // (ISI_DMAPADDR) DMA Preview Base Address Register
  4819. #define ISI_DMAPCTRL (AT91C_CAST(AT91C_REG *) 0x00000048) // (ISI_DMAPCTRL) DMA Preview Control Register
  4820. #define ISI_DMAPDSCR (AT91C_CAST(AT91C_REG *) 0x0000004C) // (ISI_DMAPDSCR) DMA Preview Descriptor Address Register
  4821. #define ISI_DMACADDR (AT91C_CAST(AT91C_REG *) 0x00000050) // (ISI_DMACADDR) DMA Codec Base Address Register
  4822. #define ISI_DMACCTRL (AT91C_CAST(AT91C_REG *) 0x00000054) // (ISI_DMACCTRL) DMA Codec Control Register
  4823. #define ISI_DMACDSCR (AT91C_CAST(AT91C_REG *) 0x00000058) // (ISI_DMACDSCR) DMA Codec Descriptor Address Register
  4824. #define ISI_WPCR (AT91C_CAST(AT91C_REG *) 0x000000E4) // (ISI_WPCR) Write Protection Control Register
  4825. #define ISI_WPSR (AT91C_CAST(AT91C_REG *) 0x000000E8) // (ISI_WPSR) Write Protection Status Register
  4826. #define ISI_VER (AT91C_CAST(AT91C_REG *) 0x000000FC) // (ISI_VER) Version Register
  4827. #endif
  4828. // -------- ISI_CFG1 : (ISI Offset: 0x0) ISI Configuration Register 1 --------
  4829. #define AT91C_ISI_HSYNC_POL (0x1 << 2) // (ISI) Horizontal synchronization polarity
  4830. #define AT91C_ISI_HSYNC_POL_ACTIVE_HIGH (0x0 << 2) // (ISI) HSYNC active high.
  4831. #define AT91C_ISI_HSYNC_POL_ACTIVE_LOW (0x1 << 2) // (ISI) HSYNC active low.
  4832. #define AT91C_ISI_VSYNC_POL (0x1 << 3) // (ISI) Vertical synchronization polarity
  4833. #define AT91C_ISI_VSYNC_POL_ACTIVE_HIGH (0x0 << 3) // (ISI) VSYNC active high.
  4834. #define AT91C_ISI_VSYNC_POL_ACTIVE_LOW (0x1 << 3) // (ISI) VSYNC active low.
  4835. #define AT91C_ISI_PIXCLK_POL (0x1 << 4) // (ISI) Pixel Clock Polarity
  4836. #define AT91C_ISI_PIXCLK_POL_RISING_EDGE (0x0 << 4) // (ISI) Data is sampled on rising edge of pixel clock.
  4837. #define AT91C_ISI_PIXCLK_POL_FALLING_EDGE (0x1 << 4) // (ISI) Data is sampled on falling edge of pixel clock.
  4838. #define AT91C_ISI_EMB_SYNC (0x1 << 6) // (ISI) Embedded synchronisation
  4839. #define AT91C_ISI_EMB_SYNC_HSYNC_VSYNC (0x0 << 6) // (ISI) Synchronization by HSYNC, VSYNC.
  4840. #define AT91C_ISI_EMB_SYNC_SAV_EAV (0x1 << 6) // (ISI) Synchronisation by Embedded Synchronization Sequence SAV/EAV.
  4841. #define AT91C_ISI_CRC_SYNC (0x1 << 7) // (ISI) CRC correction
  4842. #define AT91C_ISI_CRC_SYNC_CORRECTION_OFF (0x0 << 7) // (ISI) No CRC correction performed on embedded synchronization.
  4843. #define AT91C_ISI_CRC_SYNC_CORRECTION_ON (0x1 << 7) // (ISI) CRC correction is performed.
  4844. #define AT91C_ISI_FRATE (0x7 << 8) // (ISI) Frame rate capture
  4845. #define AT91C_ISI_FULL (0x1 << 12) // (ISI) Full mode is allowed
  4846. #define AT91C_ISI_FULL_MODE_DISABLE (0x0 << 12) // (ISI) Full mode disabled.
  4847. #define AT91C_ISI_FULL_MODE_ENABLE (0x1 << 12) // (ISI) both codec and preview datapath are working simultaneously.
  4848. #define AT91C_ISI_THMASK (0x3 << 13) // (ISI) DMA Burst Mask
  4849. #define AT91C_ISI_THMASK_4_BURST (0x0 << 13) // (ISI) Only 4 beats AHB bursts are allowed
  4850. #define AT91C_ISI_THMASK_4_8_BURST (0x1 << 13) // (ISI) Only 4 and 8 beats AHB bursts are allowed
  4851. #define AT91C_ISI_THMASK_4_8_16_BURST (0x2 << 13) // (ISI) 4, 8 and 16 beats AHB bursts are allowed
  4852. #define AT91C_ISI_SLD (0xFF << 16) // (ISI) Start of Line Delay
  4853. #define AT91C_ISI_SFD (0xFF << 24) // (ISI) Start of frame Delay
  4854. // -------- ISI_CFG2 : (ISI Offset: 0x4) ISI Control Register 2 --------
  4855. #define AT91C_ISI_IM_VSIZE (0x7FF << 0) // (ISI) Vertical size of the Image sensor [0..2047]
  4856. #define AT91C_ISI_GS_MODE (0x1 << 11) // (ISI) Grayscale Memory Mode
  4857. #define AT91C_ISI_GS_MODE_2_PIXELS (0x0 << 11) // (ISI) 2 pixels per word.
  4858. #define AT91C_ISI_GS_MODE_1_PIXEL (0x1 << 11) // (ISI) 1 pixel per word.
  4859. #define AT91C_ISI_RGB_MODE (0x1 << 12) // (ISI) RGB mode
  4860. #define AT91C_ISI_RGB_MODE_RGB_888 (0x0 << 12) // (ISI) RGB 8:8:8 24 bits
  4861. #define AT91C_ISI_RGB_MODE_RGB_565 (0x1 << 12) // (ISI) RGB 5:6:5 16 bits
  4862. #define AT91C_ISI_GRAYSCALE (0x1 << 13) // (ISI) Grayscale Mode
  4863. #define AT91C_ISI_GRAYSCALE_DISABLE (0x0 << 13) // (ISI) Grayscale mode is disabled
  4864. #define AT91C_ISI_GRAYSCALE_ENABLE (0x1 << 13) // (ISI) Input image is assumed to be grayscale coded
  4865. #define AT91C_ISI_RGB_SWAP (0x1 << 14) // (ISI) RGB Swap
  4866. #define AT91C_ISI_RGB_SWAP_DISABLE (0x0 << 14) // (ISI) D7 -> R7
  4867. #define AT91C_ISI_RGB_SWAP_ENABLE (0x1 << 14) // (ISI) D0 -> R7
  4868. #define AT91C_ISI_COL_SPACE (0x1 << 15) // (ISI) Color space for the image data
  4869. #define AT91C_ISI_COL_SPACE_YCBCR (0x0 << 15) // (ISI) YCbCr
  4870. #define AT91C_ISI_COL_SPACE_RGB (0x1 << 15) // (ISI) RGB
  4871. #define AT91C_ISI_IM_HSIZE (0x7FF << 16) // (ISI) Horizontal size of the Image sensor [0..2047]
  4872. #define AT91C_ISI_YCC_SWAP (0x3 << 28) // (ISI) Ycc swap
  4873. #define AT91C_ISI_YCC_SWAP_YCC_DEFAULT (0x0 << 28) // (ISI) Cb(i) Y(i) Cr(i) Y(i+1)
  4874. #define AT91C_ISI_YCC_SWAP_YCC_MODE1 (0x1 << 28) // (ISI) Cr(i) Y(i) Cb(i) Y(i+1)
  4875. #define AT91C_ISI_YCC_SWAP_YCC_MODE2 (0x2 << 28) // (ISI) Y(i) Cb(i) Y(i+1) Cr(i)
  4876. #define AT91C_ISI_YCC_SWAP_YCC_MODE3 (0x3 << 28) // (ISI) Y(i) Cr(i) Y(i+1) Cb(i)
  4877. #define AT91C_ISI_RGB_CFG (0x3 << 30) // (ISI) RGB configuration
  4878. #define AT91C_ISI_RGB_CFG_RGB_DEFAULT (0x0 << 30) // (ISI) R/G(MSB) G(LSB)/B R/G(MSB) G(LSB)/B
  4879. #define AT91C_ISI_RGB_CFG_RGB_MODE1 (0x1 << 30) // (ISI) B/G(MSB) G(LSB)/R B/G(MSB) G(LSB)/R
  4880. #define AT91C_ISI_RGB_CFG_RGB_MODE2 (0x2 << 30) // (ISI) G(LSB)/R B/G(MSB) G(LSB)/R B/G(MSB)
  4881. #define AT91C_ISI_RGB_CFG_RGB_MODE3 (0x3 << 30) // (ISI) G(LSB)/B R/G(MSB) G(LSB)/B R/G(MSB)
  4882. // -------- ISI_PSIZE : (ISI Offset: 0x8) ISI Preview Register --------
  4883. #define AT91C_ISI_PREV_VSIZE (0x3FF << 0) // (ISI) Vertical size for the preview path
  4884. #define AT91C_ISI_PREV_HSIZE (0x3FF << 16) // (ISI) Horizontal size for the preview path
  4885. // -------- ISI_PDECF : (ISI Offset: 0xc) ISI Preview Decimation Factor Register --------
  4886. #define AT91C_ISI_DEC_FACTOR (0xFF << 0) // (ISI) Decimation factor
  4887. // -------- ISI_Y2RSET0 : (ISI Offset: 0x10) Color Space Conversion YCrCb to RGB Register --------
  4888. #define AT91C_ISI_Y2R_C0 (0xFF << 0) // (ISI) Color Space Conversion Matrix Coefficient C0
  4889. #define AT91C_ISI_Y2R_C1 (0xFF << 8) // (ISI) Color Space Conversion Matrix Coefficient C1
  4890. #define AT91C_ISI_Y2R_C2 (0xFF << 16) // (ISI) Color Space Conversion Matrix Coefficient C2
  4891. #define AT91C_ISI_Y2R_C3 (0xFF << 24) // (ISI) Color Space Conversion Matrix Coefficient C3
  4892. // -------- ISI_Y2RSET1 : (ISI Offset: 0x14) ISI Color Space Conversion YCrCb to RGB set 1 Register --------
  4893. #define AT91C_ISI_Y2R_C4 (0x1FF << 0) // (ISI) Color Space Conversion Matrix Coefficient C4
  4894. #define AT91C_ISI_Y2R_YOFF (0x1 << 12) // (ISI) Color Space Conversion Luninance default offset
  4895. #define AT91C_ISI_Y2R_YOFF_0 (0x0 << 12) // (ISI) Offset is 0
  4896. #define AT91C_ISI_Y2R_YOFF_128 (0x1 << 12) // (ISI) Offset is 128
  4897. #define AT91C_ISI_Y2R_CROFF (0x1 << 13) // (ISI) Color Space Conversion Red Chrominance default offset
  4898. #define AT91C_ISI_Y2R_CROFF_0 (0x0 << 13) // (ISI) Offset is 0
  4899. #define AT91C_ISI_Y2R_CROFF_16 (0x1 << 13) // (ISI) Offset is 16
  4900. #define AT91C_ISI_Y2R_CBOFF (0x1 << 14) // (ISI) Color Space Conversion Blue Chrominance default offset
  4901. #define AT91C_ISI_Y2R_CBOFF_0 (0x0 << 14) // (ISI) Offset is 0
  4902. #define AT91C_ISI_Y2R_CBOFF_16 (0x1 << 14) // (ISI) Offset is 16
  4903. // -------- ISI_R2YSET0 : (ISI Offset: 0x18) Color Space Conversion RGB to YCrCb set 0 register --------
  4904. #define AT91C_ISI_R2Y_C0 (0x7F << 0) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C0
  4905. #define AT91C_ISI_R2Y_C1 (0x7F << 8) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C1
  4906. #define AT91C_ISI_R2Y_C2 (0x7F << 16) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C2
  4907. #define AT91C_ISI_R2Y_ROFF (0x1 << 24) // (ISI) Color Space Conversion Red component offset
  4908. #define AT91C_ISI_R2Y_ROFF_0 (0x0 << 24) // (ISI) Offset is 0
  4909. #define AT91C_ISI_R2Y_ROFF_16 (0x1 << 24) // (ISI) Offset is 16
  4910. // -------- ISI_R2YSET1 : (ISI Offset: 0x1c) Color Space Conversion RGB to YCrCb set 1 register --------
  4911. #define AT91C_ISI_R2Y_C3 (0x7F << 0) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C3
  4912. #define AT91C_ISI_R2Y_C4 (0x7F << 8) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C4
  4913. #define AT91C_ISI_R2Y_C5 (0x7F << 16) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C5
  4914. #define AT91C_ISI_R2Y_GOFF (0x1 << 24) // (ISI) Color Space Conversion Green component offset
  4915. #define AT91C_ISI_R2Y_GOFF_0 (0x0 << 24) // (ISI) Offset is 0
  4916. #define AT91C_ISI_R2Y_GOFF_128 (0x1 << 24) // (ISI) Offset is 128
  4917. // -------- ISI_R2YSET2 : (ISI Offset: 0x20) Color Space Conversion RGB to YCrCb set 2 register --------
  4918. #define AT91C_ISI_R2Y_C6 (0x7F << 0) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C6
  4919. #define AT91C_ISI_R2Y_C7 (0x7F << 8) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C7
  4920. #define AT91C_ISI_R2Y_C8 (0x7F << 16) // (ISI) Color Space Conversion RGB to YCrCb Matrix coefficient C8
  4921. #define AT91C_ISI_R2Y_BOFF (0x1 << 24) // (ISI) Color Space Conversion Blue component offset
  4922. #define AT91C_ISI_R2Y_BOFF_0 (0x0 << 24) // (ISI) Offset is 0
  4923. #define AT91C_ISI_R2Y_BOFF_128 (0x1 << 24) // (ISI) Offset is 128
  4924. // -------- ISI_CTRL : (ISI Offset: 0x24) ISI Control Register --------
  4925. #define AT91C_ISI_EN (0x1 << 0) // (ISI) Image Sensor Interface Enable Request
  4926. #define AT91C_ISI_EN_0 (0x0) // (ISI) No effect
  4927. #define AT91C_ISI_EN_1 (0x1) // (ISI) Enable the module and the capture
  4928. #define AT91C_ISI_DIS (0x1 << 1) // (ISI) Image Sensor Interface Disable Request
  4929. #define AT91C_ISI_DIS_0 (0x0 << 1) // (ISI) No effect
  4930. #define AT91C_ISI_DIS_1 (0x1 << 1) // (ISI) Disable the module and the capture
  4931. #define AT91C_ISI_SRST (0x1 << 2) // (ISI) Software Reset Request
  4932. #define AT91C_ISI_SRST_0 (0x0 << 2) // (ISI) No effect
  4933. #define AT91C_ISI_SRST_1 (0x1 << 2) // (ISI) Reset the module
  4934. #define AT91C_ISI_CDC (0x1 << 8) // (ISI) Codec Request
  4935. #define AT91C_ISI_CDC_0 (0x0 << 8) // (ISI) No effect
  4936. #define AT91C_ISI_CDC_1 (0x1 << 8) // (ISI) Enable the Codec
  4937. // -------- ISI_SR : (ISI Offset: 0x28) ISI Status Register --------
  4938. #define AT91C_ISI_VSYNC (0x1 << 10) // (ISI) Vertical Synchronization
  4939. #define AT91C_ISI_VSYNC_0 (0x0 << 10) // (ISI) No effect
  4940. #define AT91C_ISI_VSYNC_1 (0x1 << 10) // (ISI) Indicates that a Vertical Synchronization has been detected since last read
  4941. #define AT91C_ISI_PXFR_DONE (0x1 << 16) // (ISI) Preview DMA transfer terminated
  4942. #define AT91C_ISI_PXFR_DONE_0 (0x0 << 16) // (ISI) No effect
  4943. #define AT91C_ISI_PXFR_DONE_1 (0x1 << 16) // (ISI) Indicates that DATA transfer on preview channel has completed since last read
  4944. #define AT91C_ISI_CXFR_DONE (0x1 << 17) // (ISI) Codec DMA transfer terminated
  4945. #define AT91C_ISI_CXFR_DONE_0 (0x0 << 17) // (ISI) No effect
  4946. #define AT91C_ISI_CXFR_DONE_1 (0x1 << 17) // (ISI) Indicates that DATA transfer on preview channel has completed since last read
  4947. #define AT91C_ISI_SIP (0x1 << 19) // (ISI) Synchronization In Progress
  4948. #define AT91C_ISI_SIP_0 (0x0 << 19) // (ISI) No effect
  4949. #define AT91C_ISI_SIP_1 (0x1 << 19) // (ISI) Indicates that Synchronization is in progress
  4950. #define AT91C_ISI_P_OVR (0x1 << 24) // (ISI) Fifo Preview Overflow
  4951. #define AT91C_ISI_P_OVR_0 (0x0 << 24) // (ISI) No error
  4952. #define AT91C_ISI_P_OVR_1 (0x1 << 24) // (ISI) An overrun condition has occurred in input FIFO on the preview path
  4953. #define AT91C_ISI_C_OVR (0x1 << 25) // (ISI) Fifo Codec Overflow
  4954. #define AT91C_ISI_C_OVR_0 (0x0 << 25) // (ISI) No error
  4955. #define AT91C_ISI_C_OVR_1 (0x1 << 25) // (ISI) An overrun condition has occurred in input FIFO on the codec path
  4956. #define AT91C_ISI_CRC_ERR (0x1 << 26) // (ISI) CRC synchronisation error
  4957. #define AT91C_ISI_CRC_ERR_0 (0x0 << 26) // (ISI) No error
  4958. #define AT91C_ISI_CRC_ERR_1 (0x1 << 26) // (ISI) CRC_SYNC is enabled in the control register and an error has been detected and not corrected. The frame is discarded and the ISI waits for a new one.
  4959. #define AT91C_ISI_FR_OVR (0x1 << 27) // (ISI) Frame rate overun
  4960. #define AT91C_ISI_FR_OVR_0 (0x0 << 27) // (ISI) No error
  4961. #define AT91C_ISI_FR_OVR_1 (0x1 << 27) // (ISI) Frame overrun, the current frame is being skipped because a vsync signal has been detected while flushing FIFOs.
  4962. // -------- ISI_IER : (ISI Offset: 0x2c) ISI Interrupt Enable Register --------
  4963. // -------- ISI_IDR : (ISI Offset: 0x30) ISI Interrupt Disable Register --------
  4964. // -------- ISI_IMR : (ISI Offset: 0x34) ISI Interrupt Mask Register --------
  4965. // -------- ISI_DMACHER : (ISI Offset: 0x38) DMA Channel Enable Register --------
  4966. #define AT91C_ISI_P_CH_EN (0x1 << 0) // (ISI) Preview Channel Enable
  4967. #define AT91C_ISI_P_CH_EN_0 (0x0) // (ISI) No effect
  4968. #define AT91C_ISI_P_CH_EN_1 (0x1) // (ISI) Enable the Preview Channel
  4969. #define AT91C_ISI_C_CH_EN (0x1 << 1) // (ISI) Codec Channel Enable
  4970. #define AT91C_ISI_C_CH_EN_0 (0x0 << 1) // (ISI) No effect
  4971. #define AT91C_ISI_C_CH_EN_1 (0x1 << 1) // (ISI) Enable the Codec Channel
  4972. // -------- ISI_DMACHDR : (ISI Offset: 0x3c) DMA Channel Enable Register --------
  4973. #define AT91C_ISI_P_CH_DIS (0x1 << 0) // (ISI) Preview Channel Disable
  4974. #define AT91C_ISI_P_CH_DIS_0 (0x0) // (ISI) No effect
  4975. #define AT91C_ISI_P_CH_DIS_1 (0x1) // (ISI) Disable the Preview Channel
  4976. #define AT91C_ISI_C_CH_DIS (0x1 << 1) // (ISI) Codec Channel Disable
  4977. #define AT91C_ISI_C_CH_DIS_0 (0x0 << 1) // (ISI) No effect
  4978. #define AT91C_ISI_C_CH_DIS_1 (0x1 << 1) // (ISI) Disable the Codec Channel
  4979. // -------- ISI_DMACHSR : (ISI Offset: 0x40) DMA Channel Status Register --------
  4980. #define AT91C_ISI_P_CH_S (0x1 << 0) // (ISI) Preview Channel Disable
  4981. #define AT91C_ISI_P_CH_S_0 (0x0) // (ISI) Preview Channel is disabled
  4982. #define AT91C_ISI_P_CH_S_1 (0x1) // (ISI) Preview Channel is enabled
  4983. #define AT91C_ISI_C_CH_S (0x1 << 1) // (ISI) Codec Channel Disable
  4984. #define AT91C_ISI_C_CH_S_0 (0x0 << 1) // (ISI) Codec Channel is disabled
  4985. #define AT91C_ISI_C_CH_S_1 (0x1 << 1) // (ISI) Codec Channel is enabled
  4986. // -------- ISI_DMAPCTRL : (ISI Offset: 0x48) DMA Preview Control Register --------
  4987. #define AT91C_ISI_P_FETCH (0x1 << 0) // (ISI) Preview Descriptor Fetch Control Field
  4988. #define AT91C_ISI_P_FETCH_DISABLE (0x0) // (ISI) Preview Channel Fetch Operation is disabled
  4989. #define AT91C_ISI_P_FETCH_ENABLE (0x1) // (ISI) Preview Channel Fetch Operation is enabled
  4990. #define AT91C_ISI_P_DONE (0x1 << 1) // (ISI) Preview Transfer Done Flag
  4991. #define AT91C_ISI_P_DONE_0 (0x0 << 1) // (ISI) Preview Transfer has not been performed
  4992. #define AT91C_ISI_P_DONE_1 (0x1 << 1) // (ISI) Preview Transfer has completed
  4993. // -------- ISI_DMACCTRL : (ISI Offset: 0x54) DMA Codec Control Register --------
  4994. #define AT91C_ISI_C_FETCH (0x1 << 0) // (ISI) Codec Descriptor Fetch Control Field
  4995. #define AT91C_ISI_C_FETCH_DISABLE (0x0) // (ISI) Codec Channel Fetch Operation is disabled
  4996. #define AT91C_ISI_C_FETCH_ENABLE (0x1) // (ISI) Codec Channel Fetch Operation is enabled
  4997. #define AT91C_ISI_C_DONE (0x1 << 1) // (ISI) Codec Transfer Done Flag
  4998. #define AT91C_ISI_C_DONE_0 (0x0 << 1) // (ISI) Codec Transfer has not been performed
  4999. #define AT91C_ISI_C_DONE_1 (0x1 << 1) // (ISI) Codec Transfer has completed
  5000. // -------- ISI_WPCR : (ISI Offset: 0xe4) Write Protection Control Register --------
  5001. #define AT91C_ISI_WP_EN (0x1 << 0) // (ISI) Write Protection Enable
  5002. #define AT91C_ISI_WP_EN_DISABLE (0x0) // (ISI) Write Operation is disabled (if WP_KEY corresponds)
  5003. #define AT91C_ISI_WP_EN_ENABLE (0x1) // (ISI) Write Operation is enabled (if WP_KEY corresponds)
  5004. #define AT91C_ISI_WP_KEY (0xFFFFFF << 8) // (ISI) Write Protection Key
  5005. // -------- ISI_WPSR : (ISI Offset: 0xe8) Write Protection Status Register --------
  5006. #define AT91C_ISI_WP_VS (0xF << 0) // (ISI) Write Protection Violation Status
  5007. #define AT91C_ISI_WP_VS_NO_VIOLATION (0x0) // (ISI) No Write Protection Violation detected since last read
  5008. #define AT91C_ISI_WP_VS_ON_WRITE (0x1) // (ISI) Write Protection Violation detected since last read
  5009. #define AT91C_ISI_WP_VS_ON_RESET (0x2) // (ISI) Software Reset Violation detected since last read
  5010. #define AT91C_ISI_WP_VS_ON_BOTH (0x3) // (ISI) Write Protection and Software Reset Violation detected since last read
  5011. #define AT91C_ISI_WP_VSRC (0xF << 8) // (ISI) Write Protection Violation Source
  5012. #define AT91C_ISI_WP_VSRC_NO_VIOLATION (0x0 << 8) // (ISI) No Write Protection Violation detected since last read
  5013. #define AT91C_ISI_WP_VSRC_ISI_CFG1 (0x1 << 8) // (ISI) Write Protection Violation detected on ISI_CFG1 since last read
  5014. #define AT91C_ISI_WP_VSRC_ISI_CFG2 (0x2 << 8) // (ISI) Write Protection Violation detected on ISI_CFG2 since last read
  5015. #define AT91C_ISI_WP_VSRC_ISI_PSIZE (0x3 << 8) // (ISI) Write Protection Violation detected on ISI_PSIZE since last read
  5016. #define AT91C_ISI_WP_VSRC_ISI_PDECF (0x4 << 8) // (ISI) Write Protection Violation detected on ISI_PDECF since last read
  5017. #define AT91C_ISI_WP_VSRC_ISI_Y2RSET0 (0x5 << 8) // (ISI) Write Protection Violation detected on ISI_Y2RSET0 since last read
  5018. #define AT91C_ISI_WP_VSRC_ISI_Y2RSET1 (0x6 << 8) // (ISI) Write Protection Violation detected on ISI_Y2RSET1 since last read
  5019. #define AT91C_ISI_WP_VSRC_ISI_R2YSET0 (0x7 << 8) // (ISI) Write Protection Violation detected on ISI_R2YSET0 since last read
  5020. #define AT91C_ISI_WP_VSRC_ISI_R2YSET1 (0x8 << 8) // (ISI) Write Protection Violation detected on ISI_R2YSET1 since last read
  5021. #define AT91C_ISI_WP_VSRC_ISI_R2YSET2 (0x9 << 8) // (ISI) Write Protection Violation detected on ISI_R2YSET2 since last read
  5022. // *****************************************************************************
  5023. // SOFTWARE API DEFINITION FOR USB Host Interface
  5024. // *****************************************************************************
  5025. #ifndef __ASSEMBLY__
  5026. typedef struct _AT91S_UHPHS_OHCI {
  5027. AT91C_REG UHPHS_OHCI_HcRevision; // Revision
  5028. AT91C_REG UHPHS_OHCI_HcControl; // Operating modes for the Host Controller
  5029. AT91C_REG UHPHS_OHCI_HcCommandStatus; // Command & status Register
  5030. AT91C_REG UHPHS_OHCI_HcInterruptStatus; // Interrupt Status Register
  5031. AT91C_REG UHPHS_OHCI_HcInterruptEnable; // Interrupt Enable Register
  5032. AT91C_REG UHPHS_OHCI_HcInterruptDisable; // Interrupt Disable Register
  5033. AT91C_REG UHPHS_OHCI_HcHCCA; // Pointer to the Host Controller Communication Area
  5034. AT91C_REG UHPHS_OHCI_HcPeriodCurrentED; // Current Isochronous or Interrupt Endpoint Descriptor
  5035. AT91C_REG UHPHS_OHCI_HcControlHeadED; // First Endpoint Descriptor of the Control list
  5036. AT91C_REG UHPHS_OHCI_HcControlCurrentED; // Endpoint Control and Status Register
  5037. AT91C_REG UHPHS_OHCI_HcBulkHeadED; // First endpoint register of the Bulk list
  5038. AT91C_REG UHPHS_OHCI_HcBulkCurrentED; // Current endpoint of the Bulk list
  5039. AT91C_REG UHPHS_OHCI_HcBulkDoneHead; // Last completed transfer descriptor
  5040. AT91C_REG UHPHS_OHCI_HcFmInterval; // Bit time between 2 consecutive SOFs
  5041. AT91C_REG UHPHS_OHCI_HcFmRemaining; // Bit time remaining in the current Frame
  5042. AT91C_REG UHPHS_OHCI_HcFmNumber; // Frame number
  5043. AT91C_REG UHPHS_OHCI_HcPeriodicStart; // Periodic Start
  5044. AT91C_REG UHPHS_OHCI_HcLSThreshold; // LS Threshold
  5045. AT91C_REG UHPHS_OHCI_HcRhDescriptorA; // Root Hub characteristics A
  5046. AT91C_REG UHPHS_OHCI_HcRhDescriptorB; // Root Hub characteristics B
  5047. AT91C_REG UHPHS_OHCI_HcRhStatus; // Root Hub Status register
  5048. AT91C_REG UHPHS_OHCI_HcRhPortStatus[2]; // Root Hub Port Status Register
  5049. } AT91S_UHPHS_OHCI, *AT91PS_UHPHS_OHCI;
  5050. #else
  5051. #define HcRevision (AT91C_CAST(AT91C_REG *) 0x00000000) // (HcRevision) Revision
  5052. #define HcControl (AT91C_CAST(AT91C_REG *) 0x00000004) // (HcControl) Operating modes for the Host Controller
  5053. #define HcCommandStatus (AT91C_CAST(AT91C_REG *) 0x00000008) // (HcCommandStatus) Command & status Register
  5054. #define HcInterruptStatus (AT91C_CAST(AT91C_REG *) 0x0000000C) // (HcInterruptStatus) Interrupt Status Register
  5055. #define HcInterruptEnable (AT91C_CAST(AT91C_REG *) 0x00000010) // (HcInterruptEnable) Interrupt Enable Register
  5056. #define HcInterruptDisable (AT91C_CAST(AT91C_REG *) 0x00000014) // (HcInterruptDisable) Interrupt Disable Register
  5057. #define HcHCCA (AT91C_CAST(AT91C_REG *) 0x00000018) // (HcHCCA) Pointer to the Host Controller Communication Area
  5058. #define HcPeriodCurrentED (AT91C_CAST(AT91C_REG *) 0x0000001C) // (HcPeriodCurrentED) Current Isochronous or Interrupt Endpoint Descriptor
  5059. #define HcControlHeadED (AT91C_CAST(AT91C_REG *) 0x00000020) // (HcControlHeadED) First Endpoint Descriptor of the Control list
  5060. #define HcControlCurrentED (AT91C_CAST(AT91C_REG *) 0x00000024) // (HcControlCurrentED) Endpoint Control and Status Register
  5061. #define HcBulkHeadED (AT91C_CAST(AT91C_REG *) 0x00000028) // (HcBulkHeadED) First endpoint register of the Bulk list
  5062. #define HcBulkCurrentED (AT91C_CAST(AT91C_REG *) 0x0000002C) // (HcBulkCurrentED) Current endpoint of the Bulk list
  5063. #define HcBulkDoneHead (AT91C_CAST(AT91C_REG *) 0x00000030) // (HcBulkDoneHead) Last completed transfer descriptor
  5064. #define HcFmInterval (AT91C_CAST(AT91C_REG *) 0x00000034) // (HcFmInterval) Bit time between 2 consecutive SOFs
  5065. #define HcFmRemaining (AT91C_CAST(AT91C_REG *) 0x00000038) // (HcFmRemaining) Bit time remaining in the current Frame
  5066. #define HcFmNumber (AT91C_CAST(AT91C_REG *) 0x0000003C) // (HcFmNumber) Frame number
  5067. #define HcPeriodicStart (AT91C_CAST(AT91C_REG *) 0x00000040) // (HcPeriodicStart) Periodic Start
  5068. #define HcLSThreshold (AT91C_CAST(AT91C_REG *) 0x00000044) // (HcLSThreshold) LS Threshold
  5069. #define HcRhDescriptorA (AT91C_CAST(AT91C_REG *) 0x00000048) // (HcRhDescriptorA) Root Hub characteristics A
  5070. #define HcRhDescriptorB (AT91C_CAST(AT91C_REG *) 0x0000004C) // (HcRhDescriptorB) Root Hub characteristics B
  5071. #define HcRhStatus (AT91C_CAST(AT91C_REG *) 0x00000050) // (HcRhStatus) Root Hub Status register
  5072. #define HcRhPortStatus (AT91C_CAST(AT91C_REG *) 0x00000054) // (HcRhPortStatus) Root Hub Port Status Register
  5073. #endif
  5074. // *****************************************************************************
  5075. // SOFTWARE API DEFINITION FOR USB Host Interface
  5076. // *****************************************************************************
  5077. #ifndef __ASSEMBLY__
  5078. typedef struct _AT91S_UHPHS_EHCI {
  5079. AT91C_REG UHPHS_EHCI_VERSION; //
  5080. AT91C_REG UHPHS_EHCI_HCSPARAMS; //
  5081. AT91C_REG UHPHS_EHCI_HCCPARAMS; //
  5082. AT91C_REG UHPHS_EHCI_HCSPPORTROUTE; //
  5083. AT91C_REG UHPHS_EHCI_USBCMD; //
  5084. AT91C_REG UHPHS_EHCI_USBSTS; //
  5085. AT91C_REG UHPHS_EHCI_USBINTR; //
  5086. AT91C_REG UHPHS_EHCI_FRINDEX; //
  5087. AT91C_REG UHPHS_EHCI_CTRLDSSEGMENT; //
  5088. AT91C_REG UHPHS_EHCI_PERIODICLISTBASE; //
  5089. AT91C_REG UHPHS_EHCI_ASYNCLISTADDR; //
  5090. AT91C_REG Reserved0[9]; //
  5091. AT91C_REG UHPHS_EHCI_CONFIGFLAG; //
  5092. AT91C_REG UHPHS_EHCI_PORTSC[2]; //
  5093. AT91C_REG Reserved1[13]; //
  5094. AT91C_REG UHPHS_EHCI_INSNREG00; //
  5095. AT91C_REG UHPHS_EHCI_INSNREG01; //
  5096. AT91C_REG UHPHS_EHCI_INSNREG02; //
  5097. AT91C_REG UHPHS_EHCI_INSNREG03; //
  5098. AT91C_REG UHPHS_EHCI_INSNREG04; //
  5099. AT91C_REG UHPHS_EHCI_INSNREG05; //
  5100. } AT91S_UHPHS_EHCI, *AT91PS_UHPHS_EHCI;
  5101. #else
  5102. #define VERSION (AT91C_CAST(AT91C_REG *) 0x00000000) // (VERSION)
  5103. #define HCSPARAMS (AT91C_CAST(AT91C_REG *) 0x00000004) // (HCSPARAMS)
  5104. #define HCCPARAMS (AT91C_CAST(AT91C_REG *) 0x00000008) // (HCCPARAMS)
  5105. #define HCSPPORTROUTE (AT91C_CAST(AT91C_REG *) 0x0000000C) // (HCSPPORTROUTE)
  5106. #define USBCMD (AT91C_CAST(AT91C_REG *) 0x00000010) // (USBCMD)
  5107. #define USBSTS (AT91C_CAST(AT91C_REG *) 0x00000014) // (USBSTS)
  5108. #define USBINTR (AT91C_CAST(AT91C_REG *) 0x00000018) // (USBINTR)
  5109. #define FRINDEX (AT91C_CAST(AT91C_REG *) 0x0000001C) // (FRINDEX)
  5110. #define CTRLDSSEGMENT (AT91C_CAST(AT91C_REG *) 0x00000020) // (CTRLDSSEGMENT)
  5111. #define PERIODICLISTBASE (AT91C_CAST(AT91C_REG *) 0x00000024) // (PERIODICLISTBASE)
  5112. #define ASYNCLISTADDR (AT91C_CAST(AT91C_REG *) 0x00000028) // (ASYNCLISTADDR)
  5113. #define CONFIGFLAG (AT91C_CAST(AT91C_REG *) 0x00000050) // (CONFIGFLAG)
  5114. #define PORTSC (AT91C_CAST(AT91C_REG *) 0x00000054) // (PORTSC)
  5115. #define INSNREG00 (AT91C_CAST(AT91C_REG *) 0x00000090) // (INSNREG00)
  5116. #define INSNREG01 (AT91C_CAST(AT91C_REG *) 0x00000094) // (INSNREG01)
  5117. #define INSNREG02 (AT91C_CAST(AT91C_REG *) 0x00000098) // (INSNREG02)
  5118. #define INSNREG03 (AT91C_CAST(AT91C_REG *) 0x0000009C) // (INSNREG03)
  5119. #define INSNREG04 (AT91C_CAST(AT91C_REG *) 0x000000A0) // (INSNREG04)
  5120. #define INSNREG05 (AT91C_CAST(AT91C_REG *) 0x000000A4) // (INSNREG05)
  5121. #endif
  5122. // -------- VERSION : (UHPHS_EHCI Offset: 0x0) --------
  5123. #define AT91C_UHPHS_CAPLENGTH (0xFF << 0) // (UHPHS_EHCI) CapLength : Offset for control registers
  5124. #define AT91C_UHPHS_HCIVERSION (0xFF << 16) // (UHPHS_EHCI) Hci Version
  5125. // *****************************************************************************
  5126. // SOFTWARE API DEFINITION FOR True Random Generator
  5127. // *****************************************************************************
  5128. #ifndef __ASSEMBLY__
  5129. typedef struct _AT91S_TRNG {
  5130. AT91C_REG TRNG_CR; // Control Register
  5131. AT91C_REG Reserved0[3]; //
  5132. AT91C_REG TRNG_IER; // Interrupt Enable Register
  5133. AT91C_REG TRNG_IDR; // Interrupt Disable Register
  5134. AT91C_REG TRNG_IMR; // Interrupt Mask Register
  5135. AT91C_REG TRNG_ISR; // Interrupt Status Register
  5136. AT91C_REG Reserved1[12]; //
  5137. AT91C_REG TRNG_ODATA; // Output Data Register
  5138. AT91C_REG Reserved2[42]; //
  5139. AT91C_REG TRNG_VERSION; // TRNG Version Register
  5140. } AT91S_TRNG, *AT91PS_TRNG;
  5141. #else
  5142. #define TRNG_CR (AT91C_CAST(AT91C_REG *) 0x00000000) // (TRNG_CR) Control Register
  5143. #define TRNG_IER (AT91C_CAST(AT91C_REG *) 0x00000010) // (TRNG_IER) Interrupt Enable Register
  5144. #define TRNG_IDR (AT91C_CAST(AT91C_REG *) 0x00000014) // (TRNG_IDR) Interrupt Disable Register
  5145. #define TRNG_IMR (AT91C_CAST(AT91C_REG *) 0x00000018) // (TRNG_IMR) Interrupt Mask Register
  5146. #define TRNG_ISR (AT91C_CAST(AT91C_REG *) 0x0000001C) // (TRNG_ISR) Interrupt Status Register
  5147. #define TRNG_ODATA (AT91C_CAST(AT91C_REG *) 0x00000050) // (TRNG_ODATA) Output Data Register
  5148. #define TRNG_VERSION (AT91C_CAST(AT91C_REG *) 0x000000FC) // (TRNG_VERSION) TRNG Version Register
  5149. #endif
  5150. // -------- TRNG_CR : (TRNG Offset: 0x0) Control Register --------
  5151. #define AT91C_TRNG_ENABLE (0x1 << 0) // (TRNG) Enable TRNG
  5152. // -------- TRNG_IER : (TRNG Offset: 0x10) Interrupt Enable Register --------
  5153. #define AT91C_TRNG_DATRDY (0x1 << 0) // (TRNG) DATRDY
  5154. // -------- TRNG_IDR : (TRNG Offset: 0x14) Interrupt Disable Register --------
  5155. // -------- TRNG_IMR : (TRNG Offset: 0x18) Interrupt Mask Register --------
  5156. // -------- TRNG_ISR : (TRNG Offset: 0x1c) Interrupt Status Register --------
  5157. // *****************************************************************************
  5158. // REGISTER ADDRESS DEFINITION FOR AT91SAM9G45
  5159. // *****************************************************************************
  5160. // ========== Register definition for SFR peripheral ==========
  5161. #define AT91C_SFR_INT (AT91C_CAST(AT91C_REG *) 0xFFF74014) // (SFR) OHCI suspend Interrupt status
  5162. #define AT91C_SFR_DDRCFG (AT91C_CAST(AT91C_REG *) 0xFFF74004) // (SFR) DDR2 SSTL18 control
  5163. #define AT91C_SFR_UTMICFG (AT91C_CAST(AT91C_REG *) 0xFFF74010) // (SFR) UTMI Software Reset, and OHCI suspend interrupt control
  5164. #define AT91C_SFR_EBIDELAY (AT91C_CAST(AT91C_REG *) 0xFFF7400C) // (SFR) EBI DDR controller clock delay
  5165. #define AT91C_SFR_DDRDELAY (AT91C_CAST(AT91C_REG *) 0xFFF74008) // (SFR) DDR2 controller clock delay
  5166. #define AT91C_SFR_EMA (AT91C_CAST(AT91C_REG *) 0xFFF74000) // (SFR) memory Extra Margin Adjustment control
  5167. // ========== Register definition for SYS peripheral ==========
  5168. #define AT91C_SYS_SLCKSEL (AT91C_CAST(AT91C_REG *) 0xFFFFFD50) // (SYS) Slow Clock Selection Register
  5169. #define AT91C_SYS_GPBR (AT91C_CAST(AT91C_REG *) 0xFFFFFD60) // (SYS) General Purpose Register
  5170. // ========== Register definition for EBI peripheral ==========
  5171. #define AT91C_EBI_DUMMY (AT91C_CAST(AT91C_REG *) 0xFFFFE200) // (EBI) Dummy register - Do not use
  5172. // ========== Register definition for DDR2CP1 peripheral ==========
  5173. #define AT91C_DDR2CP1_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFE434) // (DDR2CP1) Pad delay2 Register
  5174. #define AT91C_DDR2CP1_T3PR (AT91C_CAST(AT91C_REG *) 0xFFFFE418) // (DDR2CP1) Timing3 Register
  5175. #define AT91C_DDR2CP1_RTR (AT91C_CAST(AT91C_REG *) 0xFFFFE404) // (DDR2CP1) Refresh Timer Register
  5176. #define AT91C_DDR2CP1_T0PR (AT91C_CAST(AT91C_REG *) 0xFFFFE40C) // (DDR2CP1) Timing0 Register
  5177. #define AT91C_DDR2CP1_WPSR (AT91C_CAST(AT91C_REG *) 0xFFFFE4E8) // (DDR2CP1) High Speed Register
  5178. #define AT91C_DDR2CP1_DELAY8 (AT91C_CAST(AT91C_REG *) 0xFFFFE44C) // (DDR2CP1) Pad delay8 Register
  5179. #define AT91C_DDR2CP1_LPR (AT91C_CAST(AT91C_REG *) 0xFFFFE41C) // (DDR2CP1) Low-power Register
  5180. #define AT91C_DDR2CP1_VER (AT91C_CAST(AT91C_REG *) 0xFFFFE428) // (DDR2CP1) DLL Version Register
  5181. #define AT91C_DDR2CP1_DELAY7 (AT91C_CAST(AT91C_REG *) 0xFFFFE448) // (DDR2CP1) Pad delay7 Register
  5182. #define AT91C_DDR2CP1_CR (AT91C_CAST(AT91C_REG *) 0xFFFFE408) // (DDR2CP1) Configuration Register
  5183. #define AT91C_DDR2CP1_WPCR (AT91C_CAST(AT91C_REG *) 0xFFFFE4E4) // (DDR2CP1) High Speed Register
  5184. #define AT91C_DDR2CP1_MR (AT91C_CAST(AT91C_REG *) 0xFFFFE400) // (DDR2CP1) Mode Register
  5185. #define AT91C_DDR2CP1_DELAY5 (AT91C_CAST(AT91C_REG *) 0xFFFFE440) // (DDR2CP1) Pad delay5 Register
  5186. #define AT91C_DDR2CP1_T2PR (AT91C_CAST(AT91C_REG *) 0xFFFFE414) // (DDR2CP1) Timing2 Register
  5187. #define AT91C_DDR2CP1_HS (AT91C_CAST(AT91C_REG *) 0xFFFFE42C) // (DDR2CP1) High Speed Register
  5188. #define AT91C_DDR2CP1_MDR (AT91C_CAST(AT91C_REG *) 0xFFFFE420) // (DDR2CP1) Memory Device Register
  5189. #define AT91C_DDR2CP1_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFE43C) // (DDR2CP1) Pad delay4 Register
  5190. #define AT91C_DDR2CP1_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFE430) // (DDR2CP1) Pad delay1 Register
  5191. #define AT91C_DDR2CP1_DELAY6 (AT91C_CAST(AT91C_REG *) 0xFFFFE444) // (DDR2CP1) Pad delay6 Register
  5192. #define AT91C_DDR2CP1_DLL (AT91C_CAST(AT91C_REG *) 0xFFFFE424) // (DDR2CP1) DLL Information Register
  5193. #define AT91C_DDR2CP1_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFE438) // (DDR2CP1) Pad delay3 Register
  5194. #define AT91C_DDR2CP1_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFE4FC) // (DDR2CP1) Version Register
  5195. #define AT91C_DDR2CP1_T1PR (AT91C_CAST(AT91C_REG *) 0xFFFFE410) // (DDR2CP1) Timing1 Register
  5196. // ========== Register definition for DDR2C peripheral ==========
  5197. #define AT91C_DDR2C_DELAY8 (AT91C_CAST(AT91C_REG *) 0xFFFFE64C) // (DDR2C) Pad delay8 Register
  5198. #define AT91C_DDR2C_VER (AT91C_CAST(AT91C_REG *) 0xFFFFE628) // (DDR2C) DLL Version Register
  5199. #define AT91C_DDR2C_RTR (AT91C_CAST(AT91C_REG *) 0xFFFFE604) // (DDR2C) Refresh Timer Register
  5200. #define AT91C_DDR2C_T0PR (AT91C_CAST(AT91C_REG *) 0xFFFFE60C) // (DDR2C) Timing0 Register
  5201. #define AT91C_DDR2C_DELAY5 (AT91C_CAST(AT91C_REG *) 0xFFFFE640) // (DDR2C) Pad delay5 Register
  5202. #define AT91C_DDR2C_LPR (AT91C_CAST(AT91C_REG *) 0xFFFFE61C) // (DDR2C) Low-power Register
  5203. #define AT91C_DDR2C_HS (AT91C_CAST(AT91C_REG *) 0xFFFFE62C) // (DDR2C) High Speed Register
  5204. #define AT91C_DDR2C_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFE634) // (DDR2C) Pad delay2 Register
  5205. #define AT91C_DDR2C_T2PR (AT91C_CAST(AT91C_REG *) 0xFFFFE614) // (DDR2C) Timing2 Register
  5206. #define AT91C_DDR2C_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFE630) // (DDR2C) Pad delay1 Register
  5207. #define AT91C_DDR2C_T1PR (AT91C_CAST(AT91C_REG *) 0xFFFFE610) // (DDR2C) Timing1 Register
  5208. #define AT91C_DDR2C_MDR (AT91C_CAST(AT91C_REG *) 0xFFFFE620) // (DDR2C) Memory Device Register
  5209. #define AT91C_DDR2C_DELAY6 (AT91C_CAST(AT91C_REG *) 0xFFFFE644) // (DDR2C) Pad delay6 Register
  5210. #define AT91C_DDR2C_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFE6FC) // (DDR2C) Version Register
  5211. #define AT91C_DDR2C_MR (AT91C_CAST(AT91C_REG *) 0xFFFFE600) // (DDR2C) Mode Register
  5212. #define AT91C_DDR2C_DLL (AT91C_CAST(AT91C_REG *) 0xFFFFE624) // (DDR2C) DLL Information Register
  5213. #define AT91C_DDR2C_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFE63C) // (DDR2C) Pad delay4 Register
  5214. #define AT91C_DDR2C_WPCR (AT91C_CAST(AT91C_REG *) 0xFFFFE6E4) // (DDR2C) High Speed Register
  5215. #define AT91C_DDR2C_CR (AT91C_CAST(AT91C_REG *) 0xFFFFE608) // (DDR2C) Configuration Register
  5216. #define AT91C_DDR2C_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFE638) // (DDR2C) Pad delay3 Register
  5217. #define AT91C_DDR2C_WPSR (AT91C_CAST(AT91C_REG *) 0xFFFFE6E8) // (DDR2C) High Speed Register
  5218. #define AT91C_DDR2C_DELAY7 (AT91C_CAST(AT91C_REG *) 0xFFFFE648) // (DDR2C) Pad delay7 Register
  5219. #define AT91C_DDR2C_T3PR (AT91C_CAST(AT91C_REG *) 0xFFFFE618) // (DDR2C) Timing3 Register
  5220. // ========== Register definition for SMC peripheral ==========
  5221. #define AT91C_SMC_PULSE7 (AT91C_CAST(AT91C_REG *) 0xFFFFE874) // (SMC) Pulse Register for CS 7
  5222. #define AT91C_SMC_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFE8C0) // (SMC) SMC Delay Control Register
  5223. #define AT91C_SMC_CYCLE2 (AT91C_CAST(AT91C_REG *) 0xFFFFE828) // (SMC) Cycle Register for CS 2
  5224. #define AT91C_SMC_DELAY5 (AT91C_CAST(AT91C_REG *) 0xFFFFE8D0) // (SMC) SMC Delay Control Register
  5225. #define AT91C_SMC_DELAY6 (AT91C_CAST(AT91C_REG *) 0xFFFFE8D4) // (SMC) SMC Delay Control Register
  5226. #define AT91C_SMC_PULSE2 (AT91C_CAST(AT91C_REG *) 0xFFFFE824) // (SMC) Pulse Register for CS 2
  5227. #define AT91C_SMC_SETUP6 (AT91C_CAST(AT91C_REG *) 0xFFFFE860) // (SMC) Setup Register for CS 6
  5228. #define AT91C_SMC_SETUP5 (AT91C_CAST(AT91C_REG *) 0xFFFFE850) // (SMC) Setup Register for CS 5
  5229. #define AT91C_SMC_CYCLE6 (AT91C_CAST(AT91C_REG *) 0xFFFFE868) // (SMC) Cycle Register for CS 6
  5230. #define AT91C_SMC_PULSE6 (AT91C_CAST(AT91C_REG *) 0xFFFFE864) // (SMC) Pulse Register for CS 6
  5231. #define AT91C_SMC_CTRL5 (AT91C_CAST(AT91C_REG *) 0xFFFFE85C) // (SMC) Control Register for CS 5
  5232. #define AT91C_SMC_CTRL3 (AT91C_CAST(AT91C_REG *) 0xFFFFE83C) // (SMC) Control Register for CS 3
  5233. #define AT91C_SMC_DELAY7 (AT91C_CAST(AT91C_REG *) 0xFFFFE8D8) // (SMC) SMC Delay Control Register
  5234. #define AT91C_SMC_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFE8C8) // (SMC) SMC Delay Control Register
  5235. #define AT91C_SMC_CYCLE0 (AT91C_CAST(AT91C_REG *) 0xFFFFE808) // (SMC) Cycle Register for CS 0
  5236. #define AT91C_SMC_SETUP1 (AT91C_CAST(AT91C_REG *) 0xFFFFE810) // (SMC) Setup Register for CS 1
  5237. #define AT91C_SMC_PULSE5 (AT91C_CAST(AT91C_REG *) 0xFFFFE854) // (SMC) Pulse Register for CS 5
  5238. #define AT91C_SMC_SETUP7 (AT91C_CAST(AT91C_REG *) 0xFFFFE870) // (SMC) Setup Register for CS 7
  5239. #define AT91C_SMC_CTRL4 (AT91C_CAST(AT91C_REG *) 0xFFFFE84C) // (SMC) Control Register for CS 4
  5240. #define AT91C_SMC_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFE8C4) // (SMC) SMC Delay Control Register
  5241. #define AT91C_SMC_PULSE3 (AT91C_CAST(AT91C_REG *) 0xFFFFE834) // (SMC) Pulse Register for CS 3
  5242. #define AT91C_SMC_CYCLE4 (AT91C_CAST(AT91C_REG *) 0xFFFFE848) // (SMC) Cycle Register for CS 4
  5243. #define AT91C_SMC_CTRL1 (AT91C_CAST(AT91C_REG *) 0xFFFFE81C) // (SMC) Control Register for CS 1
  5244. #define AT91C_SMC_SETUP3 (AT91C_CAST(AT91C_REG *) 0xFFFFE830) // (SMC) Setup Register for CS 3
  5245. #define AT91C_SMC_CTRL0 (AT91C_CAST(AT91C_REG *) 0xFFFFE80C) // (SMC) Control Register for CS 0
  5246. #define AT91C_SMC_CYCLE7 (AT91C_CAST(AT91C_REG *) 0xFFFFE878) // (SMC) Cycle Register for CS 7
  5247. #define AT91C_SMC_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFE8CC) // (SMC) SMC Delay Control Register
  5248. #define AT91C_SMC_CYCLE1 (AT91C_CAST(AT91C_REG *) 0xFFFFE818) // (SMC) Cycle Register for CS 1
  5249. #define AT91C_SMC_SETUP2 (AT91C_CAST(AT91C_REG *) 0xFFFFE820) // (SMC) Setup Register for CS 2
  5250. #define AT91C_SMC_PULSE1 (AT91C_CAST(AT91C_REG *) 0xFFFFE814) // (SMC) Pulse Register for CS 1
  5251. #define AT91C_SMC_DELAY8 (AT91C_CAST(AT91C_REG *) 0xFFFFE8DC) // (SMC) SMC Delay Control Register
  5252. #define AT91C_SMC_CTRL2 (AT91C_CAST(AT91C_REG *) 0xFFFFE82C) // (SMC) Control Register for CS 2
  5253. #define AT91C_SMC_PULSE4 (AT91C_CAST(AT91C_REG *) 0xFFFFE844) // (SMC) Pulse Register for CS 4
  5254. #define AT91C_SMC_SETUP4 (AT91C_CAST(AT91C_REG *) 0xFFFFE840) // (SMC) Setup Register for CS 4
  5255. #define AT91C_SMC_CYCLE3 (AT91C_CAST(AT91C_REG *) 0xFFFFE838) // (SMC) Cycle Register for CS 3
  5256. #define AT91C_SMC_SETUP0 (AT91C_CAST(AT91C_REG *) 0xFFFFE800) // (SMC) Setup Register for CS 0
  5257. #define AT91C_SMC_CYCLE5 (AT91C_CAST(AT91C_REG *) 0xFFFFE858) // (SMC) Cycle Register for CS 5
  5258. #define AT91C_SMC_PULSE0 (AT91C_CAST(AT91C_REG *) 0xFFFFE804) // (SMC) Pulse Register for CS 0
  5259. #define AT91C_SMC_CTRL6 (AT91C_CAST(AT91C_REG *) 0xFFFFE86C) // (SMC) Control Register for CS 6
  5260. #define AT91C_SMC_CTRL7 (AT91C_CAST(AT91C_REG *) 0xFFFFE87C) // (SMC) Control Register for CS 7
  5261. // ========== Register definition for MATRIX peripheral ==========
  5262. #define AT91C_MATRIX_SCFG1 (AT91C_CAST(AT91C_REG *) 0xFFFFEA44) // (MATRIX) Slave Configuration Register 1 : SRAM S1
  5263. #define AT91C_MATRIX_MRCR (AT91C_CAST(AT91C_REG *) 0xFFFFEB00) // (MATRIX) Master Remap Control Register
  5264. #define AT91C_MATRIX_PRAS2 (AT91C_CAST(AT91C_REG *) 0xFFFFEA90) // (MATRIX) PRAS2 : SRAM S2
  5265. #define AT91C_MATRIX_PRAS1 (AT91C_CAST(AT91C_REG *) 0xFFFFEA88) // (MATRIX) PRAS1 : SRAM S1
  5266. #define AT91C_MATRIX_PRAS0 (AT91C_CAST(AT91C_REG *) 0xFFFFEA80) // (MATRIX) PRAS0 : SRAM S0
  5267. #define AT91C_MATRIX_MCFG8 (AT91C_CAST(AT91C_REG *) 0xFFFFEA20) // (MATRIX) Master Configuration Register 8 : eMAC
  5268. #define AT91C_MATRIX_MCFG2 (AT91C_CAST(AT91C_REG *) 0xFFFFEA08) // (MATRIX) Master Configuration Register 2 : pdc
  5269. #define AT91C_MATRIX_EBICSA (AT91C_CAST(AT91C_REG *) 0xFFFFEB28) // (MATRIX) EBI Chip Select Assignment Register
  5270. #define AT91C_MATRIX_PRAS4 (AT91C_CAST(AT91C_REG *) 0xFFFFEAA0) // (MATRIX) PRAS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  5271. #define AT91C_MATRIX_MCFG3 (AT91C_CAST(AT91C_REG *) 0xFFFFEA0C) // (MATRIX) Master Configuration Register 3 : USB Host OHCI
  5272. #define AT91C_MATRIX_SCFG0 (AT91C_CAST(AT91C_REG *) 0xFFFFEA40) // (MATRIX) Slave Configuration Register 0 : SRAM S0
  5273. #define AT91C_MATRIX_MCFG7 (AT91C_CAST(AT91C_REG *) 0xFFFFEA1C) // (MATRIX) Master Configuration Register 7 : lcdc
  5274. #define AT91C_MATRIX_PRAS6 (AT91C_CAST(AT91C_REG *) 0xFFFFEAB0) // (MATRIX) PRAS6 : DDR2 S1
  5275. #define AT91C_MATRIX_SCFG7 (AT91C_CAST(AT91C_REG *) 0xFFFFEA5C) // (MATRIX) Slave Configuration Register 7 : DDR2 S2
  5276. #define AT91C_MATRIX_PRAS7 (AT91C_CAST(AT91C_REG *) 0xFFFFEAB8) // (MATRIX) PRAS7 : DDR2 S2
  5277. #define AT91C_MATRIX_SCFG2 (AT91C_CAST(AT91C_REG *) 0xFFFFEA48) // (MATRIX) Slave Configuration Register 2 : SRAM S2
  5278. #define AT91C_MATRIX_WRPROTST (AT91C_CAST(AT91C_REG *) 0xFFFFEBE8) // (MATRIX) Write Protection Status Register
  5279. #define AT91C_MATRIX_PRBS0 (AT91C_CAST(AT91C_REG *) 0xFFFFEA84) // (MATRIX) PRBS0 : SRAM S0
  5280. #define AT91C_MATRIX_PRBS2 (AT91C_CAST(AT91C_REG *) 0xFFFFEA94) // (MATRIX) PRBS2 : SRAM S2
  5281. #define AT91C_MATRIX_MCFG4 (AT91C_CAST(AT91C_REG *) 0xFFFFEA10) // (MATRIX) Master Configuration Register 4 : DMA0
  5282. #define AT91C_MATRIX_SCFG5 (AT91C_CAST(AT91C_REG *) 0xFFFFEA54) // (MATRIX) Slave Configuration Register 5 : DDR2 S0
  5283. #define AT91C_MATRIX_PRBS6 (AT91C_CAST(AT91C_REG *) 0xFFFFEAB4) // (MATRIX) PRBS6 : DDR2 S1
  5284. #define AT91C_MATRIX_MCFG1 (AT91C_CAST(AT91C_REG *) 0xFFFFEA04) // (MATRIX) Master Configuration Register 1 ; ARM-D
  5285. #define AT91C_MATRIX_SCFG6 (AT91C_CAST(AT91C_REG *) 0xFFFFEA58) // (MATRIX) Slave Configuration Register 6 : DDR2 S1
  5286. #define AT91C_MATRIX_SCFG4 (AT91C_CAST(AT91C_REG *) 0xFFFFEA50) // (MATRIX) Slave Configuration Register 4 ; ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  5287. #define AT91C_MATRIX_PRBS1 (AT91C_CAST(AT91C_REG *) 0xFFFFEA8C) // (MATRIX) PRBS1 : SRAM S1
  5288. #define AT91C_MATRIX_PRBS3 (AT91C_CAST(AT91C_REG *) 0xFFFFEA9C) // (MATRIX) PRBS3 : SRAM S3
  5289. #define AT91C_MATRIX_WRPROTEN (AT91C_CAST(AT91C_REG *) 0xFFFFEBE4) // (MATRIX) Write Protection Control Register
  5290. #define AT91C_MATRIX_TCMR (AT91C_CAST(AT91C_REG *) 0xFFFFEB10) // (MATRIX) Bus Matrix TCM Configuration Register
  5291. #define AT91C_MATRIX_MCFG0 (AT91C_CAST(AT91C_REG *) 0xFFFFEA00) // (MATRIX) Master Configuration Register 0 : ARM-I
  5292. #define AT91C_MATRIX_PRAS5 (AT91C_CAST(AT91C_REG *) 0xFFFFEAA8) // (MATRIX) PRAS5 : DDR2 S0
  5293. #define AT91C_MATRIX_DDRMPR (AT91C_CAST(AT91C_REG *) 0xFFFFEB18) // (MATRIX) DDR Multi-Port Register
  5294. #define AT91C_MATRIX_PRBS4 (AT91C_CAST(AT91C_REG *) 0xFFFFEAA4) // (MATRIX) PRBS4 : ROM + USB Dev + USB EHCI + USB OHCI + LCD + Video Decoder
  5295. #define AT91C_MATRIX_MCFG6 (AT91C_CAST(AT91C_REG *) 0xFFFFEA18) // (MATRIX) Master Configuration Register 6 : hisi
  5296. #define AT91C_MATRIX_PRBS5 (AT91C_CAST(AT91C_REG *) 0xFFFFEAAC) // (MATRIX) PRBS5 : DDR2 S0
  5297. #define AT91C_MATRIX_MCFG9 (AT91C_CAST(AT91C_REG *) 0xFFFFEA24) // (MATRIX) Master Configuration Register 9 : USB Device
  5298. #define AT91C_MATRIX_MCFG5 (AT91C_CAST(AT91C_REG *) 0xFFFFEA14) // (MATRIX) Master Configuration Register 5 : DMA1
  5299. #define AT91C_MATRIX_PRBS7 (AT91C_CAST(AT91C_REG *) 0xFFFFEABC) // (MATRIX) PRBS7 : DDR2 S2
  5300. #define AT91C_MATRIX_MCFG10 (AT91C_CAST(AT91C_REG *) 0xFFFFEA28) // (MATRIX) Master Configuration Register 10 : USB Host EHCI
  5301. #define AT91C_MATRIX_PRAS3 (AT91C_CAST(AT91C_REG *) 0xFFFFEA98) // (MATRIX) PRAS3 : SRAM S3
  5302. #define AT91C_MATRIX_SCFG3 (AT91C_CAST(AT91C_REG *) 0xFFFFEA4C) // (MATRIX) Slave Configuration Register 3 : SRAM S3
  5303. // ========== Register definition for AIC peripheral ==========
  5304. #define AT91C_AIC_IVR (AT91C_CAST(AT91C_REG *) 0xFFFFF100) // (AIC) IRQ Vector Register
  5305. #define AT91C_AIC_SMR (AT91C_CAST(AT91C_REG *) 0xFFFFF000) // (AIC) Source Mode Register
  5306. #define AT91C_AIC_FVR (AT91C_CAST(AT91C_REG *) 0xFFFFF104) // (AIC) FIQ Vector Register
  5307. #define AT91C_AIC_DCR (AT91C_CAST(AT91C_REG *) 0xFFFFF138) // (AIC) Debug Control Register (Protect)
  5308. #define AT91C_AIC_EOICR (AT91C_CAST(AT91C_REG *) 0xFFFFF130) // (AIC) End of Interrupt Command Register
  5309. #define AT91C_AIC_SVR (AT91C_CAST(AT91C_REG *) 0xFFFFF080) // (AIC) Source Vector Register
  5310. #define AT91C_AIC_FFSR (AT91C_CAST(AT91C_REG *) 0xFFFFF148) // (AIC) Fast Forcing Status Register
  5311. #define AT91C_AIC_ICCR (AT91C_CAST(AT91C_REG *) 0xFFFFF128) // (AIC) Interrupt Clear Command Register
  5312. #define AT91C_AIC_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFF108) // (AIC) Interrupt Status Register
  5313. #define AT91C_AIC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFF110) // (AIC) Interrupt Mask Register
  5314. #define AT91C_AIC_IPR (AT91C_CAST(AT91C_REG *) 0xFFFFF10C) // (AIC) Interrupt Pending Register
  5315. #define AT91C_AIC_FFER (AT91C_CAST(AT91C_REG *) 0xFFFFF140) // (AIC) Fast Forcing Enable Register
  5316. #define AT91C_AIC_IECR (AT91C_CAST(AT91C_REG *) 0xFFFFF120) // (AIC) Interrupt Enable Command Register
  5317. #define AT91C_AIC_ISCR (AT91C_CAST(AT91C_REG *) 0xFFFFF12C) // (AIC) Interrupt Set Command Register
  5318. #define AT91C_AIC_FFDR (AT91C_CAST(AT91C_REG *) 0xFFFFF144) // (AIC) Fast Forcing Disable Register
  5319. #define AT91C_AIC_CISR (AT91C_CAST(AT91C_REG *) 0xFFFFF114) // (AIC) Core Interrupt Status Register
  5320. #define AT91C_AIC_IDCR (AT91C_CAST(AT91C_REG *) 0xFFFFF124) // (AIC) Interrupt Disable Command Register
  5321. #define AT91C_AIC_SPU (AT91C_CAST(AT91C_REG *) 0xFFFFF134) // (AIC) Spurious Vector Register
  5322. // ========== Register definition for PDC_DBGU peripheral ==========
  5323. #define AT91C_DBGU_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFFEF20) // (PDC_DBGU) PDC Transfer Control Register
  5324. #define AT91C_DBGU_RCR (AT91C_CAST(AT91C_REG *) 0xFFFFEF04) // (PDC_DBGU) Receive Counter Register
  5325. #define AT91C_DBGU_TCR (AT91C_CAST(AT91C_REG *) 0xFFFFEF0C) // (PDC_DBGU) Transmit Counter Register
  5326. #define AT91C_DBGU_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFFEF14) // (PDC_DBGU) Receive Next Counter Register
  5327. #define AT91C_DBGU_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFFEF18) // (PDC_DBGU) Transmit Next Pointer Register
  5328. #define AT91C_DBGU_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFFEF10) // (PDC_DBGU) Receive Next Pointer Register
  5329. #define AT91C_DBGU_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFFEF24) // (PDC_DBGU) PDC Transfer Status Register
  5330. #define AT91C_DBGU_RPR (AT91C_CAST(AT91C_REG *) 0xFFFFEF00) // (PDC_DBGU) Receive Pointer Register
  5331. #define AT91C_DBGU_TPR (AT91C_CAST(AT91C_REG *) 0xFFFFEF08) // (PDC_DBGU) Transmit Pointer Register
  5332. #define AT91C_DBGU_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFFEF1C) // (PDC_DBGU) Transmit Next Counter Register
  5333. // ========== Register definition for DBGU peripheral ==========
  5334. #define AT91C_DBGU_BRGR (AT91C_CAST(AT91C_REG *) 0xFFFFEE20) // (DBGU) Baud Rate Generator Register
  5335. #define AT91C_DBGU_CR (AT91C_CAST(AT91C_REG *) 0xFFFFEE00) // (DBGU) Control Register
  5336. #define AT91C_DBGU_THR (AT91C_CAST(AT91C_REG *) 0xFFFFEE1C) // (DBGU) Transmitter Holding Register
  5337. #define AT91C_DBGU_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFEE0C) // (DBGU) Interrupt Disable Register
  5338. #define AT91C_DBGU_EXID (AT91C_CAST(AT91C_REG *) 0xFFFFEE44) // (DBGU) Chip ID Extension Register
  5339. #define AT91C_DBGU_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFEE10) // (DBGU) Interrupt Mask Register
  5340. #define AT91C_DBGU_FNTR (AT91C_CAST(AT91C_REG *) 0xFFFFEE48) // (DBGU) Force NTRST Register
  5341. #define AT91C_DBGU_IER (AT91C_CAST(AT91C_REG *) 0xFFFFEE08) // (DBGU) Interrupt Enable Register
  5342. #define AT91C_DBGU_CSR (AT91C_CAST(AT91C_REG *) 0xFFFFEE14) // (DBGU) Channel Status Register
  5343. #define AT91C_DBGU_MR (AT91C_CAST(AT91C_REG *) 0xFFFFEE04) // (DBGU) Mode Register
  5344. #define AT91C_DBGU_RHR (AT91C_CAST(AT91C_REG *) 0xFFFFEE18) // (DBGU) Receiver Holding Register
  5345. #define AT91C_DBGU_CIDR (AT91C_CAST(AT91C_REG *) 0xFFFFEE40) // (DBGU) Chip ID Register
  5346. // ========== Register definition for PIOA peripheral ==========
  5347. #define AT91C_PIOA_OWDR (AT91C_CAST(AT91C_REG *) 0xFFFFF2A4) // (PIOA) Output Write Disable Register
  5348. #define AT91C_PIOA_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFF2C8) // (PIOA) PIO Delay Control Register
  5349. #define AT91C_PIOA_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFF24C) // (PIOA) Interrupt Status Register
  5350. #define AT91C_PIOA_PDR (AT91C_CAST(AT91C_REG *) 0xFFFFF204) // (PIOA) PIO Disable Register
  5351. #define AT91C_PIOA_OSR (AT91C_CAST(AT91C_REG *) 0xFFFFF218) // (PIOA) Output Status Register
  5352. #define AT91C_PIOA_ABSR (AT91C_CAST(AT91C_REG *) 0xFFFFF278) // (PIOA) AB Select Status Register
  5353. #define AT91C_PIOA_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFF2C4) // (PIOA) PIO Delay Control Register
  5354. #define AT91C_PIOA_PDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF23C) // (PIOA) Pin Data Status Register
  5355. #define AT91C_PIOA_BSR (AT91C_CAST(AT91C_REG *) 0xFFFFF274) // (PIOA) Select B Register
  5356. #define AT91C_PIOA_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFF2C0) // (PIOA) PIO Delay Control Register
  5357. #define AT91C_PIOA_PPUER (AT91C_CAST(AT91C_REG *) 0xFFFFF264) // (PIOA) Pull-up Enable Register
  5358. #define AT91C_PIOA_OER (AT91C_CAST(AT91C_REG *) 0xFFFFF210) // (PIOA) Output Enable Register
  5359. #define AT91C_PIOA_PER (AT91C_CAST(AT91C_REG *) 0xFFFFF200) // (PIOA) PIO Enable Register
  5360. #define AT91C_PIOA_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFF2FC) // (PIOA) PIO Version Register
  5361. #define AT91C_PIOA_PPUDR (AT91C_CAST(AT91C_REG *) 0xFFFFF260) // (PIOA) Pull-up Disable Register
  5362. #define AT91C_PIOA_ODSR (AT91C_CAST(AT91C_REG *) 0xFFFFF238) // (PIOA) Output Data Status Register
  5363. #define AT91C_PIOA_SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0xFFFFF2B0) // (PIOA) PIO Slewrate Control Register
  5364. #define AT91C_PIOA_MDDR (AT91C_CAST(AT91C_REG *) 0xFFFFF254) // (PIOA) Multi-driver Disable Register
  5365. #define AT91C_PIOA_IFSR (AT91C_CAST(AT91C_REG *) 0xFFFFF228) // (PIOA) Input Filter Status Register
  5366. #define AT91C_PIOA_CODR (AT91C_CAST(AT91C_REG *) 0xFFFFF234) // (PIOA) Clear Output Data Register
  5367. #define AT91C_PIOA_ASR (AT91C_CAST(AT91C_REG *) 0xFFFFF270) // (PIOA) Select A Register
  5368. #define AT91C_PIOA_OWSR (AT91C_CAST(AT91C_REG *) 0xFFFFF2A8) // (PIOA) Output Write Status Register
  5369. #define AT91C_PIOA_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFF248) // (PIOA) Interrupt Mask Register
  5370. #define AT91C_PIOA_PPUSR (AT91C_CAST(AT91C_REG *) 0xFFFFF268) // (PIOA) Pull-up Status Register
  5371. #define AT91C_PIOA_MDER (AT91C_CAST(AT91C_REG *) 0xFFFFF250) // (PIOA) Multi-driver Enable Register
  5372. #define AT91C_PIOA_IFDR (AT91C_CAST(AT91C_REG *) 0xFFFFF224) // (PIOA) Input Filter Disable Register
  5373. #define AT91C_PIOA_SODR (AT91C_CAST(AT91C_REG *) 0xFFFFF230) // (PIOA) Set Output Data Register
  5374. #define AT91C_PIOA_OWER (AT91C_CAST(AT91C_REG *) 0xFFFFF2A0) // (PIOA) Output Write Enable Register
  5375. #define AT91C_PIOA_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFF244) // (PIOA) Interrupt Disable Register
  5376. #define AT91C_PIOA_IFER (AT91C_CAST(AT91C_REG *) 0xFFFFF220) // (PIOA) Input Filter Enable Register
  5377. #define AT91C_PIOA_IER (AT91C_CAST(AT91C_REG *) 0xFFFFF240) // (PIOA) Interrupt Enable Register
  5378. #define AT91C_PIOA_ODR (AT91C_CAST(AT91C_REG *) 0xFFFFF214) // (PIOA) Output Disable Registerr
  5379. #define AT91C_PIOA_MDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF258) // (PIOA) Multi-driver Status Register
  5380. #define AT91C_PIOA_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFF2CC) // (PIOA) PIO Delay Control Register
  5381. #define AT91C_PIOA_PSR (AT91C_CAST(AT91C_REG *) 0xFFFFF208) // (PIOA) PIO Status Register
  5382. // ========== Register definition for PIOB peripheral ==========
  5383. #define AT91C_PIOB_ODR (AT91C_CAST(AT91C_REG *) 0xFFFFF414) // (PIOB) Output Disable Registerr
  5384. #define AT91C_PIOB_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFF4CC) // (PIOB) PIO Delay Control Register
  5385. #define AT91C_PIOB_SODR (AT91C_CAST(AT91C_REG *) 0xFFFFF430) // (PIOB) Set Output Data Register
  5386. #define AT91C_PIOB_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFF44C) // (PIOB) Interrupt Status Register
  5387. #define AT91C_PIOB_ABSR (AT91C_CAST(AT91C_REG *) 0xFFFFF478) // (PIOB) AB Select Status Register
  5388. #define AT91C_PIOB_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFF448) // (PIOB) Interrupt Mask Register
  5389. #define AT91C_PIOB_MDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF458) // (PIOB) Multi-driver Status Register
  5390. #define AT91C_PIOB_PPUSR (AT91C_CAST(AT91C_REG *) 0xFFFFF468) // (PIOB) Pull-up Status Register
  5391. #define AT91C_PIOB_PDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF43C) // (PIOB) Pin Data Status Register
  5392. #define AT91C_PIOB_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFF4C8) // (PIOB) PIO Delay Control Register
  5393. #define AT91C_PIOB_MDDR (AT91C_CAST(AT91C_REG *) 0xFFFFF454) // (PIOB) Multi-driver Disable Register
  5394. #define AT91C_PIOB_CODR (AT91C_CAST(AT91C_REG *) 0xFFFFF434) // (PIOB) Clear Output Data Register
  5395. #define AT91C_PIOB_MDER (AT91C_CAST(AT91C_REG *) 0xFFFFF450) // (PIOB) Multi-driver Enable Register
  5396. #define AT91C_PIOB_PDR (AT91C_CAST(AT91C_REG *) 0xFFFFF404) // (PIOB) PIO Disable Register
  5397. #define AT91C_PIOB_IFSR (AT91C_CAST(AT91C_REG *) 0xFFFFF428) // (PIOB) Input Filter Status Register
  5398. #define AT91C_PIOB_PSR (AT91C_CAST(AT91C_REG *) 0xFFFFF408) // (PIOB) PIO Status Register
  5399. #define AT91C_PIOB_SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0xFFFFF4B0) // (PIOB) PIO Slewrate Control Register
  5400. #define AT91C_PIOB_IER (AT91C_CAST(AT91C_REG *) 0xFFFFF440) // (PIOB) Interrupt Enable Register
  5401. #define AT91C_PIOB_PPUDR (AT91C_CAST(AT91C_REG *) 0xFFFFF460) // (PIOB) Pull-up Disable Register
  5402. #define AT91C_PIOB_PER (AT91C_CAST(AT91C_REG *) 0xFFFFF400) // (PIOB) PIO Enable Register
  5403. #define AT91C_PIOB_IFDR (AT91C_CAST(AT91C_REG *) 0xFFFFF424) // (PIOB) Input Filter Disable Register
  5404. #define AT91C_PIOB_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFF444) // (PIOB) Interrupt Disable Register
  5405. #define AT91C_PIOB_OWDR (AT91C_CAST(AT91C_REG *) 0xFFFFF4A4) // (PIOB) Output Write Disable Register
  5406. #define AT91C_PIOB_ODSR (AT91C_CAST(AT91C_REG *) 0xFFFFF438) // (PIOB) Output Data Status Register
  5407. #define AT91C_PIOB_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFF4C4) // (PIOB) PIO Delay Control Register
  5408. #define AT91C_PIOB_OWSR (AT91C_CAST(AT91C_REG *) 0xFFFFF4A8) // (PIOB) Output Write Status Register
  5409. #define AT91C_PIOB_BSR (AT91C_CAST(AT91C_REG *) 0xFFFFF474) // (PIOB) Select B Register
  5410. #define AT91C_PIOB_IFER (AT91C_CAST(AT91C_REG *) 0xFFFFF420) // (PIOB) Input Filter Enable Register
  5411. #define AT91C_PIOB_OWER (AT91C_CAST(AT91C_REG *) 0xFFFFF4A0) // (PIOB) Output Write Enable Register
  5412. #define AT91C_PIOB_PPUER (AT91C_CAST(AT91C_REG *) 0xFFFFF464) // (PIOB) Pull-up Enable Register
  5413. #define AT91C_PIOB_OSR (AT91C_CAST(AT91C_REG *) 0xFFFFF418) // (PIOB) Output Status Register
  5414. #define AT91C_PIOB_ASR (AT91C_CAST(AT91C_REG *) 0xFFFFF470) // (PIOB) Select A Register
  5415. #define AT91C_PIOB_OER (AT91C_CAST(AT91C_REG *) 0xFFFFF410) // (PIOB) Output Enable Register
  5416. #define AT91C_PIOB_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFF4FC) // (PIOB) PIO Version Register
  5417. #define AT91C_PIOB_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFF4C0) // (PIOB) PIO Delay Control Register
  5418. // ========== Register definition for PIOC peripheral ==========
  5419. #define AT91C_PIOC_OWDR (AT91C_CAST(AT91C_REG *) 0xFFFFF6A4) // (PIOC) Output Write Disable Register
  5420. #define AT91C_PIOC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFF648) // (PIOC) Interrupt Mask Register
  5421. #define AT91C_PIOC_ASR (AT91C_CAST(AT91C_REG *) 0xFFFFF670) // (PIOC) Select A Register
  5422. #define AT91C_PIOC_PPUDR (AT91C_CAST(AT91C_REG *) 0xFFFFF660) // (PIOC) Pull-up Disable Register
  5423. #define AT91C_PIOC_CODR (AT91C_CAST(AT91C_REG *) 0xFFFFF634) // (PIOC) Clear Output Data Register
  5424. #define AT91C_PIOC_OWER (AT91C_CAST(AT91C_REG *) 0xFFFFF6A0) // (PIOC) Output Write Enable Register
  5425. #define AT91C_PIOC_ABSR (AT91C_CAST(AT91C_REG *) 0xFFFFF678) // (PIOC) AB Select Status Register
  5426. #define AT91C_PIOC_IFDR (AT91C_CAST(AT91C_REG *) 0xFFFFF624) // (PIOC) Input Filter Disable Register
  5427. #define AT91C_PIOC_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFF6FC) // (PIOC) PIO Version Register
  5428. #define AT91C_PIOC_ODR (AT91C_CAST(AT91C_REG *) 0xFFFFF614) // (PIOC) Output Disable Registerr
  5429. #define AT91C_PIOC_PPUER (AT91C_CAST(AT91C_REG *) 0xFFFFF664) // (PIOC) Pull-up Enable Register
  5430. #define AT91C_PIOC_SODR (AT91C_CAST(AT91C_REG *) 0xFFFFF630) // (PIOC) Set Output Data Register
  5431. #define AT91C_PIOC_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFF64C) // (PIOC) Interrupt Status Register
  5432. #define AT91C_PIOC_OSR (AT91C_CAST(AT91C_REG *) 0xFFFFF618) // (PIOC) Output Status Register
  5433. #define AT91C_PIOC_MDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF658) // (PIOC) Multi-driver Status Register
  5434. #define AT91C_PIOC_IFER (AT91C_CAST(AT91C_REG *) 0xFFFFF620) // (PIOC) Input Filter Enable Register
  5435. #define AT91C_PIOC_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFF6C4) // (PIOC) PIO Delay Control Register
  5436. #define AT91C_PIOC_MDER (AT91C_CAST(AT91C_REG *) 0xFFFFF650) // (PIOC) Multi-driver Enable Register
  5437. #define AT91C_PIOC_PPUSR (AT91C_CAST(AT91C_REG *) 0xFFFFF668) // (PIOC) Pull-up Status Register
  5438. #define AT91C_PIOC_PSR (AT91C_CAST(AT91C_REG *) 0xFFFFF608) // (PIOC) PIO Status Register
  5439. #define AT91C_PIOC_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFF6CC) // (PIOC) PIO Delay Control Register
  5440. #define AT91C_PIOC_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFF6C8) // (PIOC) PIO Delay Control Register
  5441. #define AT91C_PIOC_IER (AT91C_CAST(AT91C_REG *) 0xFFFFF640) // (PIOC) Interrupt Enable Register
  5442. #define AT91C_PIOC_SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0xFFFFF6B0) // (PIOC) PIO Slewrate Control Register
  5443. #define AT91C_PIOC_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFF644) // (PIOC) Interrupt Disable Register
  5444. #define AT91C_PIOC_PDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF63C) // (PIOC) Pin Data Status Register
  5445. #define AT91C_PIOC_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFF6C0) // (PIOC) PIO Delay Control Register
  5446. #define AT91C_PIOC_PDR (AT91C_CAST(AT91C_REG *) 0xFFFFF604) // (PIOC) PIO Disable Register
  5447. #define AT91C_PIOC_OWSR (AT91C_CAST(AT91C_REG *) 0xFFFFF6A8) // (PIOC) Output Write Status Register
  5448. #define AT91C_PIOC_IFSR (AT91C_CAST(AT91C_REG *) 0xFFFFF628) // (PIOC) Input Filter Status Register
  5449. #define AT91C_PIOC_ODSR (AT91C_CAST(AT91C_REG *) 0xFFFFF638) // (PIOC) Output Data Status Register
  5450. #define AT91C_PIOC_OER (AT91C_CAST(AT91C_REG *) 0xFFFFF610) // (PIOC) Output Enable Register
  5451. #define AT91C_PIOC_MDDR (AT91C_CAST(AT91C_REG *) 0xFFFFF654) // (PIOC) Multi-driver Disable Register
  5452. #define AT91C_PIOC_BSR (AT91C_CAST(AT91C_REG *) 0xFFFFF674) // (PIOC) Select B Register
  5453. #define AT91C_PIOC_PER (AT91C_CAST(AT91C_REG *) 0xFFFFF600) // (PIOC) PIO Enable Register
  5454. // ========== Register definition for PIOD peripheral ==========
  5455. #define AT91C_PIOD_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFF8C0) // (PIOD) PIO Delay Control Register
  5456. #define AT91C_PIOD_OWDR (AT91C_CAST(AT91C_REG *) 0xFFFFF8A4) // (PIOD) Output Write Disable Register
  5457. #define AT91C_PIOD_SODR (AT91C_CAST(AT91C_REG *) 0xFFFFF830) // (PIOD) Set Output Data Register
  5458. #define AT91C_PIOD_PPUER (AT91C_CAST(AT91C_REG *) 0xFFFFF864) // (PIOD) Pull-up Enable Register
  5459. #define AT91C_PIOD_CODR (AT91C_CAST(AT91C_REG *) 0xFFFFF834) // (PIOD) Clear Output Data Register
  5460. #define AT91C_PIOD_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFF8CC) // (PIOD) PIO Delay Control Register
  5461. #define AT91C_PIOD_PSR (AT91C_CAST(AT91C_REG *) 0xFFFFF808) // (PIOD) PIO Status Register
  5462. #define AT91C_PIOD_PDR (AT91C_CAST(AT91C_REG *) 0xFFFFF804) // (PIOD) PIO Disable Register
  5463. #define AT91C_PIOD_ODR (AT91C_CAST(AT91C_REG *) 0xFFFFF814) // (PIOD) Output Disable Registerr
  5464. #define AT91C_PIOD_PPUSR (AT91C_CAST(AT91C_REG *) 0xFFFFF868) // (PIOD) Pull-up Status Register
  5465. #define AT91C_PIOD_IFSR (AT91C_CAST(AT91C_REG *) 0xFFFFF828) // (PIOD) Input Filter Status Register
  5466. #define AT91C_PIOD_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFF848) // (PIOD) Interrupt Mask Register
  5467. #define AT91C_PIOD_ASR (AT91C_CAST(AT91C_REG *) 0xFFFFF870) // (PIOD) Select A Register
  5468. #define AT91C_PIOD_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFF8C4) // (PIOD) PIO Delay Control Register
  5469. #define AT91C_PIOD_OWSR (AT91C_CAST(AT91C_REG *) 0xFFFFF8A8) // (PIOD) Output Write Status Register
  5470. #define AT91C_PIOD_PER (AT91C_CAST(AT91C_REG *) 0xFFFFF800) // (PIOD) PIO Enable Register
  5471. #define AT91C_PIOD_MDER (AT91C_CAST(AT91C_REG *) 0xFFFFF850) // (PIOD) Multi-driver Enable Register
  5472. #define AT91C_PIOD_PDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF83C) // (PIOD) Pin Data Status Register
  5473. #define AT91C_PIOD_MDSR (AT91C_CAST(AT91C_REG *) 0xFFFFF858) // (PIOD) Multi-driver Status Register
  5474. #define AT91C_PIOD_OWER (AT91C_CAST(AT91C_REG *) 0xFFFFF8A0) // (PIOD) Output Write Enable Register
  5475. #define AT91C_PIOD_BSR (AT91C_CAST(AT91C_REG *) 0xFFFFF874) // (PIOD) Select B Register
  5476. #define AT91C_PIOD_IFDR (AT91C_CAST(AT91C_REG *) 0xFFFFF824) // (PIOD) Input Filter Disable Register
  5477. #define AT91C_PIOD_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFF8C8) // (PIOD) PIO Delay Control Register
  5478. #define AT91C_PIOD_ABSR (AT91C_CAST(AT91C_REG *) 0xFFFFF878) // (PIOD) AB Select Status Register
  5479. #define AT91C_PIOD_OER (AT91C_CAST(AT91C_REG *) 0xFFFFF810) // (PIOD) Output Enable Register
  5480. #define AT91C_PIOD_MDDR (AT91C_CAST(AT91C_REG *) 0xFFFFF854) // (PIOD) Multi-driver Disable Register
  5481. #define AT91C_PIOD_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFF844) // (PIOD) Interrupt Disable Register
  5482. #define AT91C_PIOD_IER (AT91C_CAST(AT91C_REG *) 0xFFFFF840) // (PIOD) Interrupt Enable Register
  5483. #define AT91C_PIOD_PPUDR (AT91C_CAST(AT91C_REG *) 0xFFFFF860) // (PIOD) Pull-up Disable Register
  5484. #define AT91C_PIOD_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFF8FC) // (PIOD) PIO Version Register
  5485. #define AT91C_PIOD_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFF84C) // (PIOD) Interrupt Status Register
  5486. #define AT91C_PIOD_ODSR (AT91C_CAST(AT91C_REG *) 0xFFFFF838) // (PIOD) Output Data Status Register
  5487. #define AT91C_PIOD_OSR (AT91C_CAST(AT91C_REG *) 0xFFFFF818) // (PIOD) Output Status Register
  5488. #define AT91C_PIOD_IFER (AT91C_CAST(AT91C_REG *) 0xFFFFF820) // (PIOD) Input Filter Enable Register
  5489. #define AT91C_PIOD_SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0xFFFFF8B0) // (PIOD) PIO Slewrate Control Register
  5490. // ========== Register definition for PIOE peripheral ==========
  5491. #define AT91C_PIOE_ODSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA38) // (PIOE) Output Data Status Register
  5492. #define AT91C_PIOE_ABSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA78) // (PIOE) AB Select Status Register
  5493. #define AT91C_PIOE_PSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA08) // (PIOE) PIO Status Register
  5494. #define AT91C_PIOE_PPUDR (AT91C_CAST(AT91C_REG *) 0xFFFFFA60) // (PIOE) Pull-up Disable Register
  5495. #define AT91C_PIOE_OER (AT91C_CAST(AT91C_REG *) 0xFFFFFA10) // (PIOE) Output Enable Register
  5496. #define AT91C_PIOE_IFSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA28) // (PIOE) Input Filter Status Register
  5497. #define AT91C_PIOE_IFER (AT91C_CAST(AT91C_REG *) 0xFFFFFA20) // (PIOE) Input Filter Enable Register
  5498. #define AT91C_PIOE_DELAY3 (AT91C_CAST(AT91C_REG *) 0xFFFFFAC8) // (PIOE) PIO Delay Control Register
  5499. #define AT91C_PIOE_ODR (AT91C_CAST(AT91C_REG *) 0xFFFFFA14) // (PIOE) Output Disable Registerr
  5500. #define AT91C_PIOE_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFFA44) // (PIOE) Interrupt Disable Register
  5501. #define AT91C_PIOE_DELAY1 (AT91C_CAST(AT91C_REG *) 0xFFFFFAC0) // (PIOE) PIO Delay Control Register
  5502. #define AT91C_PIOE_OSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA18) // (PIOE) Output Status Register
  5503. #define AT91C_PIOE_CODR (AT91C_CAST(AT91C_REG *) 0xFFFFFA34) // (PIOE) Clear Output Data Register
  5504. #define AT91C_PIOE_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFFAFC) // (PIOE) PIO Version Register
  5505. #define AT91C_PIOE_MDSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA58) // (PIOE) Multi-driver Status Register
  5506. #define AT91C_PIOE_PDR (AT91C_CAST(AT91C_REG *) 0xFFFFFA04) // (PIOE) PIO Disable Register
  5507. #define AT91C_PIOE_IER (AT91C_CAST(AT91C_REG *) 0xFFFFFA40) // (PIOE) Interrupt Enable Register
  5508. #define AT91C_PIOE_OWSR (AT91C_CAST(AT91C_REG *) 0xFFFFFAA8) // (PIOE) Output Write Status Register
  5509. #define AT91C_PIOE_BSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA74) // (PIOE) Select B Register
  5510. #define AT91C_PIOE_SLEWRATE1 (AT91C_CAST(AT91C_REG *) 0xFFFFFAB0) // (PIOE) PIO Slewrate Control Register
  5511. #define AT91C_PIOE_DELAY4 (AT91C_CAST(AT91C_REG *) 0xFFFFFACC) // (PIOE) PIO Delay Control Register
  5512. #define AT91C_PIOE_PER (AT91C_CAST(AT91C_REG *) 0xFFFFFA00) // (PIOE) PIO Enable Register
  5513. #define AT91C_PIOE_OWDR (AT91C_CAST(AT91C_REG *) 0xFFFFFAA4) // (PIOE) Output Write Disable Register
  5514. #define AT91C_PIOE_IFDR (AT91C_CAST(AT91C_REG *) 0xFFFFFA24) // (PIOE) Input Filter Disable Register
  5515. #define AT91C_PIOE_PPUSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA68) // (PIOE) Pull-up Status Register
  5516. #define AT91C_PIOE_PDSR (AT91C_CAST(AT91C_REG *) 0xFFFFFA3C) // (PIOE) Pin Data Status Register
  5517. #define AT91C_PIOE_PPUER (AT91C_CAST(AT91C_REG *) 0xFFFFFA64) // (PIOE) Pull-up Enable Register
  5518. #define AT91C_PIOE_MDDR (AT91C_CAST(AT91C_REG *) 0xFFFFFA54) // (PIOE) Multi-driver Disable Register
  5519. #define AT91C_PIOE_ISR (AT91C_CAST(AT91C_REG *) 0xFFFFFA4C) // (PIOE) Interrupt Status Register
  5520. #define AT91C_PIOE_DELAY2 (AT91C_CAST(AT91C_REG *) 0xFFFFFAC4) // (PIOE) PIO Delay Control Register
  5521. #define AT91C_PIOE_SODR (AT91C_CAST(AT91C_REG *) 0xFFFFFA30) // (PIOE) Set Output Data Register
  5522. #define AT91C_PIOE_ASR (AT91C_CAST(AT91C_REG *) 0xFFFFFA70) // (PIOE) Select A Register
  5523. #define AT91C_PIOE_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFFA48) // (PIOE) Interrupt Mask Register
  5524. #define AT91C_PIOE_OWER (AT91C_CAST(AT91C_REG *) 0xFFFFFAA0) // (PIOE) Output Write Enable Register
  5525. #define AT91C_PIOE_MDER (AT91C_CAST(AT91C_REG *) 0xFFFFFA50) // (PIOE) Multi-driver Enable Register
  5526. // ========== Register definition for PMC peripheral ==========
  5527. #define AT91C_PMC_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFFFFCEC) // (PMC)
  5528. #define AT91C_PMC_PCER (AT91C_CAST(AT91C_REG *) 0xFFFFFC10) // (PMC) Peripheral Clock Enable Register
  5529. #define AT91C_PMC_PCKR (AT91C_CAST(AT91C_REG *) 0xFFFFFC40) // (PMC) Programmable Clock 0 Register
  5530. #define AT91C_PMC_MCKR (AT91C_CAST(AT91C_REG *) 0xFFFFFC30) // (PMC) Master Clock Register
  5531. #define AT91C_PMC_PLLAR (AT91C_CAST(AT91C_REG *) 0xFFFFFC28) // (PMC) PLL A Register
  5532. #define AT91C_PMC_NAME2 (AT91C_CAST(AT91C_REG *) 0xFFFFFCF4) // (PMC)
  5533. #define AT91C_PMC_PCDR (AT91C_CAST(AT91C_REG *) 0xFFFFFC14) // (PMC) Peripheral Clock Disable Register
  5534. #define AT91C_PMC_SCSR (AT91C_CAST(AT91C_REG *) 0xFFFFFC08) // (PMC) System Clock Status Register
  5535. #define AT91C_PMC_MCFR (AT91C_CAST(AT91C_REG *) 0xFFFFFC24) // (PMC) Main Clock Frequency Register
  5536. #define AT91C_PMC_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFFFFCF8) // (PMC)
  5537. #define AT91C_PMC_PLLICPR (AT91C_CAST(AT91C_REG *) 0xFFFFFC80) // (PMC) PLL Charge Pump Current Register
  5538. #define AT91C_PMC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFFC6C) // (PMC) Interrupt Mask Register
  5539. #define AT91C_PMC_IER (AT91C_CAST(AT91C_REG *) 0xFFFFFC60) // (PMC) Interrupt Enable Register
  5540. #define AT91C_PMC_UCKR (AT91C_CAST(AT91C_REG *) 0xFFFFFC1C) // (PMC) UTMI Clock Configuration Register
  5541. #define AT91C_PMC_USB (AT91C_CAST(AT91C_REG *) 0xFFFFFC38) // (PMC) USB clock register
  5542. #define AT91C_PMC_MOR (AT91C_CAST(AT91C_REG *) 0xFFFFFC20) // (PMC) Main Oscillator Register
  5543. #define AT91C_PMC_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFFC64) // (PMC) Interrupt Disable Register
  5544. #define AT91C_PMC_NAME1 (AT91C_CAST(AT91C_REG *) 0xFFFFFCF0) // (PMC)
  5545. #define AT91C_PMC_SCDR (AT91C_CAST(AT91C_REG *) 0xFFFFFC04) // (PMC) System Clock Disable Register
  5546. #define AT91C_PMC_PCSR (AT91C_CAST(AT91C_REG *) 0xFFFFFC18) // (PMC) Peripheral Clock Status Register
  5547. #define AT91C_PMC_SCER (AT91C_CAST(AT91C_REG *) 0xFFFFFC00) // (PMC) System Clock Enable Register
  5548. #define AT91C_PMC_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFFFCFC) // (PMC)
  5549. #define AT91C_PMC_SR (AT91C_CAST(AT91C_REG *) 0xFFFFFC68) // (PMC) Status Register
  5550. // ========== Register definition for CKGR peripheral ==========
  5551. #define AT91C_CKGR_MOR (AT91C_CAST(AT91C_REG *) 0xFFFFFC20) // (CKGR) Main Oscillator Register
  5552. #define AT91C_CKGR_MCFR (AT91C_CAST(AT91C_REG *) 0xFFFFFC24) // (CKGR) Main Clock Frequency Register
  5553. #define AT91C_CKGR_PLLAR (AT91C_CAST(AT91C_REG *) 0xFFFFFC28) // (CKGR) PLL A Register
  5554. #define AT91C_CKGR_UCKR (AT91C_CAST(AT91C_REG *) 0xFFFFFC1C) // (CKGR) UTMI Clock Configuration Register
  5555. // ========== Register definition for RSTC peripheral ==========
  5556. #define AT91C_RSTC_RCR (AT91C_CAST(AT91C_REG *) 0xFFFFFD00) // (RSTC) Reset Control Register
  5557. #define AT91C_RSTC_VER (AT91C_CAST(AT91C_REG *) 0xFFFFFDFC) // (RSTC) Version Register
  5558. #define AT91C_RSTC_RMR (AT91C_CAST(AT91C_REG *) 0xFFFFFD08) // (RSTC) Reset Mode Register
  5559. #define AT91C_RSTC_RSR (AT91C_CAST(AT91C_REG *) 0xFFFFFD04) // (RSTC) Reset Status Register
  5560. // ========== Register definition for SHDWC peripheral ==========
  5561. #define AT91C_SHDWC_SHSR (AT91C_CAST(AT91C_REG *) 0xFFFFFD18) // (SHDWC) Shut Down Status Register
  5562. #define AT91C_SHDWC_SHMR (AT91C_CAST(AT91C_REG *) 0xFFFFFD14) // (SHDWC) Shut Down Mode Register
  5563. #define AT91C_SHDWC_SHCR (AT91C_CAST(AT91C_REG *) 0xFFFFFD10) // (SHDWC) Shut Down Control Register
  5564. // ========== Register definition for RTTC peripheral ==========
  5565. #define AT91C_RTTC_RTSR (AT91C_CAST(AT91C_REG *) 0xFFFFFD2C) // (RTTC) Real-time Status Register
  5566. #define AT91C_RTTC_RTMR (AT91C_CAST(AT91C_REG *) 0xFFFFFD20) // (RTTC) Real-time Mode Register
  5567. #define AT91C_RTTC_RTVR (AT91C_CAST(AT91C_REG *) 0xFFFFFD28) // (RTTC) Real-time Value Register
  5568. #define AT91C_RTTC_RTAR (AT91C_CAST(AT91C_REG *) 0xFFFFFD24) // (RTTC) Real-time Alarm Register
  5569. // ========== Register definition for PITC peripheral ==========
  5570. #define AT91C_PITC_PIVR (AT91C_CAST(AT91C_REG *) 0xFFFFFD38) // (PITC) Period Interval Value Register
  5571. #define AT91C_PITC_PISR (AT91C_CAST(AT91C_REG *) 0xFFFFFD34) // (PITC) Period Interval Status Register
  5572. #define AT91C_PITC_PIIR (AT91C_CAST(AT91C_REG *) 0xFFFFFD3C) // (PITC) Period Interval Image Register
  5573. #define AT91C_PITC_PIMR (AT91C_CAST(AT91C_REG *) 0xFFFFFD30) // (PITC) Period Interval Mode Register
  5574. // ========== Register definition for WDTC peripheral ==========
  5575. #define AT91C_WDTC_WDCR (AT91C_CAST(AT91C_REG *) 0xFFFFFD40) // (WDTC) Watchdog Control Register
  5576. #define AT91C_WDTC_WDSR (AT91C_CAST(AT91C_REG *) 0xFFFFFD48) // (WDTC) Watchdog Status Register
  5577. #define AT91C_WDTC_WDMR (AT91C_CAST(AT91C_REG *) 0xFFFFFD44) // (WDTC) Watchdog Mode Register
  5578. // ========== Register definition for RTC peripheral ==========
  5579. #define AT91C_RTC_IDR (AT91C_CAST(AT91C_REG *) 0xFFFFFDD4) // (RTC) Interrupt Disable Register
  5580. #define AT91C_RTC_SR (AT91C_CAST(AT91C_REG *) 0xFFFFFDC8) // (RTC) Status Register
  5581. #define AT91C_RTC_MR (AT91C_CAST(AT91C_REG *) 0xFFFFFDB4) // (RTC) Mode Register
  5582. #define AT91C_RTC_IER (AT91C_CAST(AT91C_REG *) 0xFFFFFDD0) // (RTC) Interrupt Enable Register
  5583. #define AT91C_RTC_TIMALR (AT91C_CAST(AT91C_REG *) 0xFFFFFDC0) // (RTC) Time Alarm Register
  5584. #define AT91C_RTC_CALALR (AT91C_CAST(AT91C_REG *) 0xFFFFFDC4) // (RTC) Calendar Alarm Register
  5585. #define AT91C_RTC_CR (AT91C_CAST(AT91C_REG *) 0xFFFFFDB0) // (RTC) Control Register
  5586. #define AT91C_RTC_TIMR (AT91C_CAST(AT91C_REG *) 0xFFFFFDB8) // (RTC) Time Register
  5587. #define AT91C_RTC_CALR (AT91C_CAST(AT91C_REG *) 0xFFFFFDBC) // (RTC) Calendar Register
  5588. #define AT91C_RTC_VER (AT91C_CAST(AT91C_REG *) 0xFFFFFDDC) // (RTC) Valid Entry Register
  5589. #define AT91C_RTC_SCCR (AT91C_CAST(AT91C_REG *) 0xFFFFFDCC) // (RTC) Status Clear Command Register
  5590. #define AT91C_RTC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFFFDD8) // (RTC) Interrupt Mask Register
  5591. // ========== Register definition for TC0 peripheral ==========
  5592. #define AT91C_TC0_IER (AT91C_CAST(AT91C_REG *) 0xFFF7C024) // (TC0) Interrupt Enable Register
  5593. #define AT91C_TC0_IMR (AT91C_CAST(AT91C_REG *) 0xFFF7C02C) // (TC0) Interrupt Mask Register
  5594. #define AT91C_TC0_CCR (AT91C_CAST(AT91C_REG *) 0xFFF7C000) // (TC0) Channel Control Register
  5595. #define AT91C_TC0_RB (AT91C_CAST(AT91C_REG *) 0xFFF7C018) // (TC0) Register B
  5596. #define AT91C_TC0_CV (AT91C_CAST(AT91C_REG *) 0xFFF7C010) // (TC0) Counter Value
  5597. #define AT91C_TC0_SR (AT91C_CAST(AT91C_REG *) 0xFFF7C020) // (TC0) Status Register
  5598. #define AT91C_TC0_CMR (AT91C_CAST(AT91C_REG *) 0xFFF7C004) // (TC0) Channel Mode Register (Capture Mode / Waveform Mode)
  5599. #define AT91C_TC0_RA (AT91C_CAST(AT91C_REG *) 0xFFF7C014) // (TC0) Register A
  5600. #define AT91C_TC0_RC (AT91C_CAST(AT91C_REG *) 0xFFF7C01C) // (TC0) Register C
  5601. #define AT91C_TC0_IDR (AT91C_CAST(AT91C_REG *) 0xFFF7C028) // (TC0) Interrupt Disable Register
  5602. // ========== Register definition for TC1 peripheral ==========
  5603. #define AT91C_TC1_IER (AT91C_CAST(AT91C_REG *) 0xFFF7C064) // (TC1) Interrupt Enable Register
  5604. #define AT91C_TC1_SR (AT91C_CAST(AT91C_REG *) 0xFFF7C060) // (TC1) Status Register
  5605. #define AT91C_TC1_RC (AT91C_CAST(AT91C_REG *) 0xFFF7C05C) // (TC1) Register C
  5606. #define AT91C_TC1_CV (AT91C_CAST(AT91C_REG *) 0xFFF7C050) // (TC1) Counter Value
  5607. #define AT91C_TC1_RA (AT91C_CAST(AT91C_REG *) 0xFFF7C054) // (TC1) Register A
  5608. #define AT91C_TC1_CMR (AT91C_CAST(AT91C_REG *) 0xFFF7C044) // (TC1) Channel Mode Register (Capture Mode / Waveform Mode)
  5609. #define AT91C_TC1_IDR (AT91C_CAST(AT91C_REG *) 0xFFF7C068) // (TC1) Interrupt Disable Register
  5610. #define AT91C_TC1_RB (AT91C_CAST(AT91C_REG *) 0xFFF7C058) // (TC1) Register B
  5611. #define AT91C_TC1_IMR (AT91C_CAST(AT91C_REG *) 0xFFF7C06C) // (TC1) Interrupt Mask Register
  5612. #define AT91C_TC1_CCR (AT91C_CAST(AT91C_REG *) 0xFFF7C040) // (TC1) Channel Control Register
  5613. // ========== Register definition for TC2 peripheral ==========
  5614. #define AT91C_TC2_SR (AT91C_CAST(AT91C_REG *) 0xFFF7C0A0) // (TC2) Status Register
  5615. #define AT91C_TC2_IMR (AT91C_CAST(AT91C_REG *) 0xFFF7C0AC) // (TC2) Interrupt Mask Register
  5616. #define AT91C_TC2_IER (AT91C_CAST(AT91C_REG *) 0xFFF7C0A4) // (TC2) Interrupt Enable Register
  5617. #define AT91C_TC2_CV (AT91C_CAST(AT91C_REG *) 0xFFF7C090) // (TC2) Counter Value
  5618. #define AT91C_TC2_RB (AT91C_CAST(AT91C_REG *) 0xFFF7C098) // (TC2) Register B
  5619. #define AT91C_TC2_CCR (AT91C_CAST(AT91C_REG *) 0xFFF7C080) // (TC2) Channel Control Register
  5620. #define AT91C_TC2_CMR (AT91C_CAST(AT91C_REG *) 0xFFF7C084) // (TC2) Channel Mode Register (Capture Mode / Waveform Mode)
  5621. #define AT91C_TC2_RA (AT91C_CAST(AT91C_REG *) 0xFFF7C094) // (TC2) Register A
  5622. #define AT91C_TC2_IDR (AT91C_CAST(AT91C_REG *) 0xFFF7C0A8) // (TC2) Interrupt Disable Register
  5623. #define AT91C_TC2_RC (AT91C_CAST(AT91C_REG *) 0xFFF7C09C) // (TC2) Register C
  5624. // ========== Register definition for TC3 peripheral ==========
  5625. #define AT91C_TC3_SR (AT91C_CAST(AT91C_REG *) 0xFFFD4020) // (TC3) Status Register
  5626. #define AT91C_TC3_RC (AT91C_CAST(AT91C_REG *) 0xFFFD401C) // (TC3) Register C
  5627. #define AT91C_TC3_IER (AT91C_CAST(AT91C_REG *) 0xFFFD4024) // (TC3) Interrupt Enable Register
  5628. #define AT91C_TC3_CV (AT91C_CAST(AT91C_REG *) 0xFFFD4010) // (TC3) Counter Value
  5629. #define AT91C_TC3_IDR (AT91C_CAST(AT91C_REG *) 0xFFFD4028) // (TC3) Interrupt Disable Register
  5630. #define AT91C_TC3_IMR (AT91C_CAST(AT91C_REG *) 0xFFFD402C) // (TC3) Interrupt Mask Register
  5631. #define AT91C_TC3_CMR (AT91C_CAST(AT91C_REG *) 0xFFFD4004) // (TC3) Channel Mode Register (Capture Mode / Waveform Mode)
  5632. #define AT91C_TC3_RB (AT91C_CAST(AT91C_REG *) 0xFFFD4018) // (TC3) Register B
  5633. #define AT91C_TC3_CCR (AT91C_CAST(AT91C_REG *) 0xFFFD4000) // (TC3) Channel Control Register
  5634. #define AT91C_TC3_RA (AT91C_CAST(AT91C_REG *) 0xFFFD4014) // (TC3) Register A
  5635. // ========== Register definition for TC4 peripheral ==========
  5636. #define AT91C_TC4_CV (AT91C_CAST(AT91C_REG *) 0xFFFD4050) // (TC4) Counter Value
  5637. #define AT91C_TC4_RA (AT91C_CAST(AT91C_REG *) 0xFFFD4054) // (TC4) Register A
  5638. #define AT91C_TC4_IDR (AT91C_CAST(AT91C_REG *) 0xFFFD4068) // (TC4) Interrupt Disable Register
  5639. #define AT91C_TC4_SR (AT91C_CAST(AT91C_REG *) 0xFFFD4060) // (TC4) Status Register
  5640. #define AT91C_TC4_CMR (AT91C_CAST(AT91C_REG *) 0xFFFD4044) // (TC4) Channel Mode Register (Capture Mode / Waveform Mode)
  5641. #define AT91C_TC4_CCR (AT91C_CAST(AT91C_REG *) 0xFFFD4040) // (TC4) Channel Control Register
  5642. #define AT91C_TC4_RB (AT91C_CAST(AT91C_REG *) 0xFFFD4058) // (TC4) Register B
  5643. #define AT91C_TC4_RC (AT91C_CAST(AT91C_REG *) 0xFFFD405C) // (TC4) Register C
  5644. #define AT91C_TC4_IER (AT91C_CAST(AT91C_REG *) 0xFFFD4064) // (TC4) Interrupt Enable Register
  5645. #define AT91C_TC4_IMR (AT91C_CAST(AT91C_REG *) 0xFFFD406C) // (TC4) Interrupt Mask Register
  5646. // ========== Register definition for TC5 peripheral ==========
  5647. #define AT91C_TC5_IER (AT91C_CAST(AT91C_REG *) 0xFFFD40A4) // (TC5) Interrupt Enable Register
  5648. #define AT91C_TC5_IDR (AT91C_CAST(AT91C_REG *) 0xFFFD40A8) // (TC5) Interrupt Disable Register
  5649. #define AT91C_TC5_RA (AT91C_CAST(AT91C_REG *) 0xFFFD4094) // (TC5) Register A
  5650. #define AT91C_TC5_RB (AT91C_CAST(AT91C_REG *) 0xFFFD4098) // (TC5) Register B
  5651. #define AT91C_TC5_CCR (AT91C_CAST(AT91C_REG *) 0xFFFD4080) // (TC5) Channel Control Register
  5652. #define AT91C_TC5_SR (AT91C_CAST(AT91C_REG *) 0xFFFD40A0) // (TC5) Status Register
  5653. #define AT91C_TC5_CV (AT91C_CAST(AT91C_REG *) 0xFFFD4090) // (TC5) Counter Value
  5654. #define AT91C_TC5_RC (AT91C_CAST(AT91C_REG *) 0xFFFD409C) // (TC5) Register C
  5655. #define AT91C_TC5_IMR (AT91C_CAST(AT91C_REG *) 0xFFFD40AC) // (TC5) Interrupt Mask Register
  5656. #define AT91C_TC5_CMR (AT91C_CAST(AT91C_REG *) 0xFFFD4084) // (TC5) Channel Mode Register (Capture Mode / Waveform Mode)
  5657. // ========== Register definition for TCB0 peripheral ==========
  5658. #define AT91C_TCB0_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF7C0F0) // (TCB0) TC IPNAME1 REGISTER
  5659. #define AT91C_TCB0_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF7C0F4) // (TCB0) TC IPNAME2 REGISTER
  5660. #define AT91C_TCB0_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF7C0F8) // (TCB0) TC FEATURES REGISTER
  5661. #define AT91C_TCB0_BCR (AT91C_CAST(AT91C_REG *) 0xFFF7C0C0) // (TCB0) TC Block Control Register
  5662. #define AT91C_TCB0_VER (AT91C_CAST(AT91C_REG *) 0xFFF7C0FC) // (TCB0) Version Register
  5663. #define AT91C_TCB0_BMR (AT91C_CAST(AT91C_REG *) 0xFFF7C0C4) // (TCB0) TC Block Mode Register
  5664. #define AT91C_TCB0_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF7C0EC) // (TCB0) TC ADDRSIZE REGISTER
  5665. // ========== Register definition for TCB1 peripheral ==========
  5666. #define AT91C_TCB1_VER (AT91C_CAST(AT91C_REG *) 0xFFFD40FC) // (TCB1) Version Register
  5667. #define AT91C_TCB1_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFFD40F4) // (TCB1) TC IPNAME2 REGISTER
  5668. #define AT91C_TCB1_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFFD40EC) // (TCB1) TC ADDRSIZE REGISTER
  5669. #define AT91C_TCB1_BMR (AT91C_CAST(AT91C_REG *) 0xFFFD40C4) // (TCB1) TC Block Mode Register
  5670. #define AT91C_TCB1_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFFD40F8) // (TCB1) TC FEATURES REGISTER
  5671. #define AT91C_TCB1_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFFD40F0) // (TCB1) TC IPNAME1 REGISTER
  5672. #define AT91C_TCB1_BCR (AT91C_CAST(AT91C_REG *) 0xFFFD40C0) // (TCB1) TC Block Control Register
  5673. // ========== Register definition for MCI0 peripheral ==========
  5674. #define AT91C_MCI0_IMR (AT91C_CAST(AT91C_REG *) 0xFFF8004C) // (MCI0) MCI Interrupt Mask Register
  5675. #define AT91C_MCI0_MR (AT91C_CAST(AT91C_REG *) 0xFFF80004) // (MCI0) MCI Mode Register
  5676. #define AT91C_MCI0_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF800EC) // (MCI0) MCI ADDRSIZE REGISTER
  5677. #define AT91C_MCI0_CR (AT91C_CAST(AT91C_REG *) 0xFFF80000) // (MCI0) MCI Control Register
  5678. #define AT91C_MCI0_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF800F4) // (MCI0) MCI IPNAME2 REGISTER
  5679. #define AT91C_MCI0_IER (AT91C_CAST(AT91C_REG *) 0xFFF80044) // (MCI0) MCI Interrupt Enable Register
  5680. #define AT91C_MCI0_FIFO (AT91C_CAST(AT91C_REG *) 0xFFF80200) // (MCI0) MCI FIFO Aperture Register
  5681. #define AT91C_MCI0_DTOR (AT91C_CAST(AT91C_REG *) 0xFFF80008) // (MCI0) MCI Data Timeout Register
  5682. #define AT91C_MCI0_SDCR (AT91C_CAST(AT91C_REG *) 0xFFF8000C) // (MCI0) MCI SD/SDIO Card Register
  5683. #define AT91C_MCI0_BLKR (AT91C_CAST(AT91C_REG *) 0xFFF80018) // (MCI0) MCI Block Register
  5684. #define AT91C_MCI0_VER (AT91C_CAST(AT91C_REG *) 0xFFF800FC) // (MCI0) MCI VERSION REGISTER
  5685. #define AT91C_MCI0_WPSR (AT91C_CAST(AT91C_REG *) 0xFFF800E8) // (MCI0) MCI Write Protection Status Register
  5686. #define AT91C_MCI0_CMDR (AT91C_CAST(AT91C_REG *) 0xFFF80014) // (MCI0) MCI Command Register
  5687. #define AT91C_MCI0_CSTOR (AT91C_CAST(AT91C_REG *) 0xFFF8001C) // (MCI0) MCI Completion Signal Timeout Register
  5688. #define AT91C_MCI0_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF800F0) // (MCI0) MCI IPNAME1 REGISTER
  5689. #define AT91C_MCI0_DMA (AT91C_CAST(AT91C_REG *) 0xFFF80050) // (MCI0) MCI DMA Configuration Register
  5690. #define AT91C_MCI0_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF800F8) // (MCI0) MCI FEATURES REGISTER
  5691. #define AT91C_MCI0_RDR (AT91C_CAST(AT91C_REG *) 0xFFF80030) // (MCI0) MCI Receive Data Register
  5692. #define AT91C_MCI0_SR (AT91C_CAST(AT91C_REG *) 0xFFF80040) // (MCI0) MCI Status Register
  5693. #define AT91C_MCI0_TDR (AT91C_CAST(AT91C_REG *) 0xFFF80034) // (MCI0) MCI Transmit Data Register
  5694. #define AT91C_MCI0_CFG (AT91C_CAST(AT91C_REG *) 0xFFF80054) // (MCI0) MCI Configuration Register
  5695. #define AT91C_MCI0_ARGR (AT91C_CAST(AT91C_REG *) 0xFFF80010) // (MCI0) MCI Argument Register
  5696. #define AT91C_MCI0_RSPR (AT91C_CAST(AT91C_REG *) 0xFFF80020) // (MCI0) MCI Response Register
  5697. #define AT91C_MCI0_WPCR (AT91C_CAST(AT91C_REG *) 0xFFF800E4) // (MCI0) MCI Write Protection Control Register
  5698. #define AT91C_MCI0_IDR (AT91C_CAST(AT91C_REG *) 0xFFF80048) // (MCI0) MCI Interrupt Disable Register
  5699. // ========== Register definition for MCI1 peripheral ==========
  5700. #define AT91C_MCI1_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFFD00F0) // (MCI1) MCI IPNAME1 REGISTER
  5701. #define AT91C_MCI1_IDR (AT91C_CAST(AT91C_REG *) 0xFFFD0048) // (MCI1) MCI Interrupt Disable Register
  5702. #define AT91C_MCI1_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFFD00F4) // (MCI1) MCI IPNAME2 REGISTER
  5703. #define AT91C_MCI1_MR (AT91C_CAST(AT91C_REG *) 0xFFFD0004) // (MCI1) MCI Mode Register
  5704. #define AT91C_MCI1_SR (AT91C_CAST(AT91C_REG *) 0xFFFD0040) // (MCI1) MCI Status Register
  5705. #define AT91C_MCI1_DTOR (AT91C_CAST(AT91C_REG *) 0xFFFD0008) // (MCI1) MCI Data Timeout Register
  5706. #define AT91C_MCI1_WPCR (AT91C_CAST(AT91C_REG *) 0xFFFD00E4) // (MCI1) MCI Write Protection Control Register
  5707. #define AT91C_MCI1_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFFD00EC) // (MCI1) MCI ADDRSIZE REGISTER
  5708. #define AT91C_MCI1_ARGR (AT91C_CAST(AT91C_REG *) 0xFFFD0010) // (MCI1) MCI Argument Register
  5709. #define AT91C_MCI1_FIFO (AT91C_CAST(AT91C_REG *) 0xFFFD0200) // (MCI1) MCI FIFO Aperture Register
  5710. #define AT91C_MCI1_IER (AT91C_CAST(AT91C_REG *) 0xFFFD0044) // (MCI1) MCI Interrupt Enable Register
  5711. #define AT91C_MCI1_SDCR (AT91C_CAST(AT91C_REG *) 0xFFFD000C) // (MCI1) MCI SD/SDIO Card Register
  5712. #define AT91C_MCI1_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFFD00F8) // (MCI1) MCI FEATURES REGISTER
  5713. #define AT91C_MCI1_CR (AT91C_CAST(AT91C_REG *) 0xFFFD0000) // (MCI1) MCI Control Register
  5714. #define AT91C_MCI1_CSTOR (AT91C_CAST(AT91C_REG *) 0xFFFD001C) // (MCI1) MCI Completion Signal Timeout Register
  5715. #define AT91C_MCI1_RSPR (AT91C_CAST(AT91C_REG *) 0xFFFD0020) // (MCI1) MCI Response Register
  5716. #define AT91C_MCI1_IMR (AT91C_CAST(AT91C_REG *) 0xFFFD004C) // (MCI1) MCI Interrupt Mask Register
  5717. #define AT91C_MCI1_DMA (AT91C_CAST(AT91C_REG *) 0xFFFD0050) // (MCI1) MCI DMA Configuration Register
  5718. #define AT91C_MCI1_BLKR (AT91C_CAST(AT91C_REG *) 0xFFFD0018) // (MCI1) MCI Block Register
  5719. #define AT91C_MCI1_RDR (AT91C_CAST(AT91C_REG *) 0xFFFD0030) // (MCI1) MCI Receive Data Register
  5720. #define AT91C_MCI1_CFG (AT91C_CAST(AT91C_REG *) 0xFFFD0054) // (MCI1) MCI Configuration Register
  5721. #define AT91C_MCI1_WPSR (AT91C_CAST(AT91C_REG *) 0xFFFD00E8) // (MCI1) MCI Write Protection Status Register
  5722. #define AT91C_MCI1_CMDR (AT91C_CAST(AT91C_REG *) 0xFFFD0014) // (MCI1) MCI Command Register
  5723. #define AT91C_MCI1_TDR (AT91C_CAST(AT91C_REG *) 0xFFFD0034) // (MCI1) MCI Transmit Data Register
  5724. #define AT91C_MCI1_VER (AT91C_CAST(AT91C_REG *) 0xFFFD00FC) // (MCI1) MCI VERSION REGISTER
  5725. // ========== Register definition for TWI0 peripheral ==========
  5726. #define AT91C_TWI0_RHR (AT91C_CAST(AT91C_REG *) 0xFFF84030) // (TWI0) Receive Holding Register
  5727. #define AT91C_TWI0_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF840EC) // (TWI0) TWI ADDRSIZE REGISTER
  5728. #define AT91C_TWI0_SMR (AT91C_CAST(AT91C_REG *) 0xFFF84008) // (TWI0) Slave Mode Register
  5729. #define AT91C_TWI0_IDR (AT91C_CAST(AT91C_REG *) 0xFFF84028) // (TWI0) Interrupt Disable Register
  5730. #define AT91C_TWI0_CWGR (AT91C_CAST(AT91C_REG *) 0xFFF84010) // (TWI0) Clock Waveform Generator Register
  5731. #define AT91C_TWI0_IER (AT91C_CAST(AT91C_REG *) 0xFFF84024) // (TWI0) Interrupt Enable Register
  5732. #define AT91C_TWI0_THR (AT91C_CAST(AT91C_REG *) 0xFFF84034) // (TWI0) Transmit Holding Register
  5733. #define AT91C_TWI0_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF840F4) // (TWI0) TWI IPNAME2 REGISTER
  5734. #define AT91C_TWI0_CR (AT91C_CAST(AT91C_REG *) 0xFFF84000) // (TWI0) Control Register
  5735. #define AT91C_TWI0_MMR (AT91C_CAST(AT91C_REG *) 0xFFF84004) // (TWI0) Master Mode Register
  5736. #define AT91C_TWI0_SR (AT91C_CAST(AT91C_REG *) 0xFFF84020) // (TWI0) Status Register
  5737. #define AT91C_TWI0_IMR (AT91C_CAST(AT91C_REG *) 0xFFF8402C) // (TWI0) Interrupt Mask Register
  5738. #define AT91C_TWI0_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF840F8) // (TWI0) TWI FEATURES REGISTER
  5739. #define AT91C_TWI0_IADR (AT91C_CAST(AT91C_REG *) 0xFFF8400C) // (TWI0) Internal Address Register
  5740. #define AT91C_TWI0_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF840F0) // (TWI0) TWI IPNAME1 REGISTER
  5741. #define AT91C_TWI0_VER (AT91C_CAST(AT91C_REG *) 0xFFF840FC) // (TWI0) Version Register
  5742. // ========== Register definition for TWI1 peripheral ==========
  5743. #define AT91C_TWI1_VER (AT91C_CAST(AT91C_REG *) 0xFFF880FC) // (TWI1) Version Register
  5744. #define AT91C_TWI1_IMR (AT91C_CAST(AT91C_REG *) 0xFFF8802C) // (TWI1) Interrupt Mask Register
  5745. #define AT91C_TWI1_THR (AT91C_CAST(AT91C_REG *) 0xFFF88034) // (TWI1) Transmit Holding Register
  5746. #define AT91C_TWI1_IER (AT91C_CAST(AT91C_REG *) 0xFFF88024) // (TWI1) Interrupt Enable Register
  5747. #define AT91C_TWI1_MMR (AT91C_CAST(AT91C_REG *) 0xFFF88004) // (TWI1) Master Mode Register
  5748. #define AT91C_TWI1_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF880F0) // (TWI1) TWI IPNAME1 REGISTER
  5749. #define AT91C_TWI1_CR (AT91C_CAST(AT91C_REG *) 0xFFF88000) // (TWI1) Control Register
  5750. #define AT91C_TWI1_SR (AT91C_CAST(AT91C_REG *) 0xFFF88020) // (TWI1) Status Register
  5751. #define AT91C_TWI1_CWGR (AT91C_CAST(AT91C_REG *) 0xFFF88010) // (TWI1) Clock Waveform Generator Register
  5752. #define AT91C_TWI1_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF880F4) // (TWI1) TWI IPNAME2 REGISTER
  5753. #define AT91C_TWI1_IDR (AT91C_CAST(AT91C_REG *) 0xFFF88028) // (TWI1) Interrupt Disable Register
  5754. #define AT91C_TWI1_RHR (AT91C_CAST(AT91C_REG *) 0xFFF88030) // (TWI1) Receive Holding Register
  5755. #define AT91C_TWI1_IADR (AT91C_CAST(AT91C_REG *) 0xFFF8800C) // (TWI1) Internal Address Register
  5756. #define AT91C_TWI1_SMR (AT91C_CAST(AT91C_REG *) 0xFFF88008) // (TWI1) Slave Mode Register
  5757. #define AT91C_TWI1_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF880F8) // (TWI1) TWI FEATURES REGISTER
  5758. #define AT91C_TWI1_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF880EC) // (TWI1) TWI ADDRSIZE REGISTER
  5759. // ========== Register definition for PDC_US0 peripheral ==========
  5760. #define AT91C_US0_TNPR (AT91C_CAST(AT91C_REG *) 0xFFF8C118) // (PDC_US0) Transmit Next Pointer Register
  5761. #define AT91C_US0_PTSR (AT91C_CAST(AT91C_REG *) 0xFFF8C124) // (PDC_US0) PDC Transfer Status Register
  5762. #define AT91C_US0_PTCR (AT91C_CAST(AT91C_REG *) 0xFFF8C120) // (PDC_US0) PDC Transfer Control Register
  5763. #define AT91C_US0_RNCR (AT91C_CAST(AT91C_REG *) 0xFFF8C114) // (PDC_US0) Receive Next Counter Register
  5764. #define AT91C_US0_RCR (AT91C_CAST(AT91C_REG *) 0xFFF8C104) // (PDC_US0) Receive Counter Register
  5765. #define AT91C_US0_TNCR (AT91C_CAST(AT91C_REG *) 0xFFF8C11C) // (PDC_US0) Transmit Next Counter Register
  5766. #define AT91C_US0_TCR (AT91C_CAST(AT91C_REG *) 0xFFF8C10C) // (PDC_US0) Transmit Counter Register
  5767. #define AT91C_US0_RNPR (AT91C_CAST(AT91C_REG *) 0xFFF8C110) // (PDC_US0) Receive Next Pointer Register
  5768. #define AT91C_US0_RPR (AT91C_CAST(AT91C_REG *) 0xFFF8C100) // (PDC_US0) Receive Pointer Register
  5769. #define AT91C_US0_TPR (AT91C_CAST(AT91C_REG *) 0xFFF8C108) // (PDC_US0) Transmit Pointer Register
  5770. // ========== Register definition for US0 peripheral ==========
  5771. #define AT91C_US0_MAN (AT91C_CAST(AT91C_REG *) 0xFFF8C050) // (US0) Manchester Encoder Decoder Register
  5772. #define AT91C_US0_MR (AT91C_CAST(AT91C_REG *) 0xFFF8C004) // (US0) Mode Register
  5773. #define AT91C_US0_RHR (AT91C_CAST(AT91C_REG *) 0xFFF8C018) // (US0) Receiver Holding Register
  5774. #define AT91C_US0_CSR (AT91C_CAST(AT91C_REG *) 0xFFF8C014) // (US0) Channel Status Register
  5775. #define AT91C_US0_CR (AT91C_CAST(AT91C_REG *) 0xFFF8C000) // (US0) Control Register
  5776. #define AT91C_US0_VER (AT91C_CAST(AT91C_REG *) 0xFFF8C0FC) // (US0) VERSION Register
  5777. #define AT91C_US0_IER (AT91C_CAST(AT91C_REG *) 0xFFF8C008) // (US0) Interrupt Enable Register
  5778. #define AT91C_US0_BRGR (AT91C_CAST(AT91C_REG *) 0xFFF8C020) // (US0) Baud Rate Generator Register
  5779. #define AT91C_US0_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF8C0F8) // (US0) US FEATURES REGISTER
  5780. #define AT91C_US0_RTOR (AT91C_CAST(AT91C_REG *) 0xFFF8C024) // (US0) Receiver Time-out Register
  5781. #define AT91C_US0_THR (AT91C_CAST(AT91C_REG *) 0xFFF8C01C) // (US0) Transmitter Holding Register
  5782. #define AT91C_US0_NER (AT91C_CAST(AT91C_REG *) 0xFFF8C044) // (US0) Nb Errors Register
  5783. #define AT91C_US0_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF8C0F0) // (US0) US IPNAME1 REGISTER
  5784. #define AT91C_US0_IMR (AT91C_CAST(AT91C_REG *) 0xFFF8C010) // (US0) Interrupt Mask Register
  5785. #define AT91C_US0_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF8C0EC) // (US0) US ADDRSIZE REGISTER
  5786. #define AT91C_US0_IDR (AT91C_CAST(AT91C_REG *) 0xFFF8C00C) // (US0) Interrupt Disable Register
  5787. #define AT91C_US0_FIDI (AT91C_CAST(AT91C_REG *) 0xFFF8C040) // (US0) FI_DI_Ratio Register
  5788. #define AT91C_US0_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF8C0F4) // (US0) US IPNAME2 REGISTER
  5789. #define AT91C_US0_TTGR (AT91C_CAST(AT91C_REG *) 0xFFF8C028) // (US0) Transmitter Time-guard Register
  5790. #define AT91C_US0_IF (AT91C_CAST(AT91C_REG *) 0xFFF8C04C) // (US0) IRDA_FILTER Register
  5791. // ========== Register definition for PDC_US1 peripheral ==========
  5792. #define AT91C_US1_PTCR (AT91C_CAST(AT91C_REG *) 0xFFF90120) // (PDC_US1) PDC Transfer Control Register
  5793. #define AT91C_US1_TNCR (AT91C_CAST(AT91C_REG *) 0xFFF9011C) // (PDC_US1) Transmit Next Counter Register
  5794. #define AT91C_US1_RCR (AT91C_CAST(AT91C_REG *) 0xFFF90104) // (PDC_US1) Receive Counter Register
  5795. #define AT91C_US1_RPR (AT91C_CAST(AT91C_REG *) 0xFFF90100) // (PDC_US1) Receive Pointer Register
  5796. #define AT91C_US1_TPR (AT91C_CAST(AT91C_REG *) 0xFFF90108) // (PDC_US1) Transmit Pointer Register
  5797. #define AT91C_US1_TCR (AT91C_CAST(AT91C_REG *) 0xFFF9010C) // (PDC_US1) Transmit Counter Register
  5798. #define AT91C_US1_RNPR (AT91C_CAST(AT91C_REG *) 0xFFF90110) // (PDC_US1) Receive Next Pointer Register
  5799. #define AT91C_US1_TNPR (AT91C_CAST(AT91C_REG *) 0xFFF90118) // (PDC_US1) Transmit Next Pointer Register
  5800. #define AT91C_US1_RNCR (AT91C_CAST(AT91C_REG *) 0xFFF90114) // (PDC_US1) Receive Next Counter Register
  5801. #define AT91C_US1_PTSR (AT91C_CAST(AT91C_REG *) 0xFFF90124) // (PDC_US1) PDC Transfer Status Register
  5802. // ========== Register definition for US1 peripheral ==========
  5803. #define AT91C_US1_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF900F8) // (US1) US FEATURES REGISTER
  5804. #define AT91C_US1_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF900EC) // (US1) US ADDRSIZE REGISTER
  5805. #define AT91C_US1_NER (AT91C_CAST(AT91C_REG *) 0xFFF90044) // (US1) Nb Errors Register
  5806. #define AT91C_US1_RHR (AT91C_CAST(AT91C_REG *) 0xFFF90018) // (US1) Receiver Holding Register
  5807. #define AT91C_US1_IF (AT91C_CAST(AT91C_REG *) 0xFFF9004C) // (US1) IRDA_FILTER Register
  5808. #define AT91C_US1_CR (AT91C_CAST(AT91C_REG *) 0xFFF90000) // (US1) Control Register
  5809. #define AT91C_US1_TTGR (AT91C_CAST(AT91C_REG *) 0xFFF90028) // (US1) Transmitter Time-guard Register
  5810. #define AT91C_US1_MR (AT91C_CAST(AT91C_REG *) 0xFFF90004) // (US1) Mode Register
  5811. #define AT91C_US1_FIDI (AT91C_CAST(AT91C_REG *) 0xFFF90040) // (US1) FI_DI_Ratio Register
  5812. #define AT91C_US1_RTOR (AT91C_CAST(AT91C_REG *) 0xFFF90024) // (US1) Receiver Time-out Register
  5813. #define AT91C_US1_IER (AT91C_CAST(AT91C_REG *) 0xFFF90008) // (US1) Interrupt Enable Register
  5814. #define AT91C_US1_MAN (AT91C_CAST(AT91C_REG *) 0xFFF90050) // (US1) Manchester Encoder Decoder Register
  5815. #define AT91C_US1_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF900F4) // (US1) US IPNAME2 REGISTER
  5816. #define AT91C_US1_IMR (AT91C_CAST(AT91C_REG *) 0xFFF90010) // (US1) Interrupt Mask Register
  5817. #define AT91C_US1_IDR (AT91C_CAST(AT91C_REG *) 0xFFF9000C) // (US1) Interrupt Disable Register
  5818. #define AT91C_US1_CSR (AT91C_CAST(AT91C_REG *) 0xFFF90014) // (US1) Channel Status Register
  5819. #define AT91C_US1_BRGR (AT91C_CAST(AT91C_REG *) 0xFFF90020) // (US1) Baud Rate Generator Register
  5820. #define AT91C_US1_THR (AT91C_CAST(AT91C_REG *) 0xFFF9001C) // (US1) Transmitter Holding Register
  5821. #define AT91C_US1_VER (AT91C_CAST(AT91C_REG *) 0xFFF900FC) // (US1) VERSION Register
  5822. #define AT91C_US1_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF900F0) // (US1) US IPNAME1 REGISTER
  5823. // ========== Register definition for PDC_US2 peripheral ==========
  5824. #define AT91C_US2_RNCR (AT91C_CAST(AT91C_REG *) 0xFFF94114) // (PDC_US2) Receive Next Counter Register
  5825. #define AT91C_US2_PTCR (AT91C_CAST(AT91C_REG *) 0xFFF94120) // (PDC_US2) PDC Transfer Control Register
  5826. #define AT91C_US2_TNPR (AT91C_CAST(AT91C_REG *) 0xFFF94118) // (PDC_US2) Transmit Next Pointer Register
  5827. #define AT91C_US2_TNCR (AT91C_CAST(AT91C_REG *) 0xFFF9411C) // (PDC_US2) Transmit Next Counter Register
  5828. #define AT91C_US2_TPR (AT91C_CAST(AT91C_REG *) 0xFFF94108) // (PDC_US2) Transmit Pointer Register
  5829. #define AT91C_US2_RCR (AT91C_CAST(AT91C_REG *) 0xFFF94104) // (PDC_US2) Receive Counter Register
  5830. #define AT91C_US2_PTSR (AT91C_CAST(AT91C_REG *) 0xFFF94124) // (PDC_US2) PDC Transfer Status Register
  5831. #define AT91C_US2_TCR (AT91C_CAST(AT91C_REG *) 0xFFF9410C) // (PDC_US2) Transmit Counter Register
  5832. #define AT91C_US2_RPR (AT91C_CAST(AT91C_REG *) 0xFFF94100) // (PDC_US2) Receive Pointer Register
  5833. #define AT91C_US2_RNPR (AT91C_CAST(AT91C_REG *) 0xFFF94110) // (PDC_US2) Receive Next Pointer Register
  5834. // ========== Register definition for US2 peripheral ==========
  5835. #define AT91C_US2_TTGR (AT91C_CAST(AT91C_REG *) 0xFFF94028) // (US2) Transmitter Time-guard Register
  5836. #define AT91C_US2_IER (AT91C_CAST(AT91C_REG *) 0xFFF94008) // (US2) Interrupt Enable Register
  5837. #define AT91C_US2_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF940EC) // (US2) US ADDRSIZE REGISTER
  5838. #define AT91C_US2_NER (AT91C_CAST(AT91C_REG *) 0xFFF94044) // (US2) Nb Errors Register
  5839. #define AT91C_US2_CR (AT91C_CAST(AT91C_REG *) 0xFFF94000) // (US2) Control Register
  5840. #define AT91C_US2_IDR (AT91C_CAST(AT91C_REG *) 0xFFF9400C) // (US2) Interrupt Disable Register
  5841. #define AT91C_US2_VER (AT91C_CAST(AT91C_REG *) 0xFFF940FC) // (US2) VERSION Register
  5842. #define AT91C_US2_THR (AT91C_CAST(AT91C_REG *) 0xFFF9401C) // (US2) Transmitter Holding Register
  5843. #define AT91C_US2_BRGR (AT91C_CAST(AT91C_REG *) 0xFFF94020) // (US2) Baud Rate Generator Register
  5844. #define AT91C_US2_CSR (AT91C_CAST(AT91C_REG *) 0xFFF94014) // (US2) Channel Status Register
  5845. #define AT91C_US2_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF940F4) // (US2) US IPNAME2 REGISTER
  5846. #define AT91C_US2_IMR (AT91C_CAST(AT91C_REG *) 0xFFF94010) // (US2) Interrupt Mask Register
  5847. #define AT91C_US2_RHR (AT91C_CAST(AT91C_REG *) 0xFFF94018) // (US2) Receiver Holding Register
  5848. #define AT91C_US2_MR (AT91C_CAST(AT91C_REG *) 0xFFF94004) // (US2) Mode Register
  5849. #define AT91C_US2_FIDI (AT91C_CAST(AT91C_REG *) 0xFFF94040) // (US2) FI_DI_Ratio Register
  5850. #define AT91C_US2_MAN (AT91C_CAST(AT91C_REG *) 0xFFF94050) // (US2) Manchester Encoder Decoder Register
  5851. #define AT91C_US2_IF (AT91C_CAST(AT91C_REG *) 0xFFF9404C) // (US2) IRDA_FILTER Register
  5852. #define AT91C_US2_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF940F8) // (US2) US FEATURES REGISTER
  5853. #define AT91C_US2_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF940F0) // (US2) US IPNAME1 REGISTER
  5854. #define AT91C_US2_RTOR (AT91C_CAST(AT91C_REG *) 0xFFF94024) // (US2) Receiver Time-out Register
  5855. // ========== Register definition for PDC_US3 peripheral ==========
  5856. #define AT91C_US3_PTSR (AT91C_CAST(AT91C_REG *) 0xFFF98124) // (PDC_US3) PDC Transfer Status Register
  5857. #define AT91C_US3_TCR (AT91C_CAST(AT91C_REG *) 0xFFF9810C) // (PDC_US3) Transmit Counter Register
  5858. #define AT91C_US3_RNPR (AT91C_CAST(AT91C_REG *) 0xFFF98110) // (PDC_US3) Receive Next Pointer Register
  5859. #define AT91C_US3_RNCR (AT91C_CAST(AT91C_REG *) 0xFFF98114) // (PDC_US3) Receive Next Counter Register
  5860. #define AT91C_US3_TNPR (AT91C_CAST(AT91C_REG *) 0xFFF98118) // (PDC_US3) Transmit Next Pointer Register
  5861. #define AT91C_US3_RPR (AT91C_CAST(AT91C_REG *) 0xFFF98100) // (PDC_US3) Receive Pointer Register
  5862. #define AT91C_US3_TPR (AT91C_CAST(AT91C_REG *) 0xFFF98108) // (PDC_US3) Transmit Pointer Register
  5863. #define AT91C_US3_RCR (AT91C_CAST(AT91C_REG *) 0xFFF98104) // (PDC_US3) Receive Counter Register
  5864. #define AT91C_US3_TNCR (AT91C_CAST(AT91C_REG *) 0xFFF9811C) // (PDC_US3) Transmit Next Counter Register
  5865. #define AT91C_US3_PTCR (AT91C_CAST(AT91C_REG *) 0xFFF98120) // (PDC_US3) PDC Transfer Control Register
  5866. // ========== Register definition for US3 peripheral ==========
  5867. #define AT91C_US3_VER (AT91C_CAST(AT91C_REG *) 0xFFF980FC) // (US3) VERSION Register
  5868. #define AT91C_US3_BRGR (AT91C_CAST(AT91C_REG *) 0xFFF98020) // (US3) Baud Rate Generator Register
  5869. #define AT91C_US3_TTGR (AT91C_CAST(AT91C_REG *) 0xFFF98028) // (US3) Transmitter Time-guard Register
  5870. #define AT91C_US3_RTOR (AT91C_CAST(AT91C_REG *) 0xFFF98024) // (US3) Receiver Time-out Register
  5871. #define AT91C_US3_MAN (AT91C_CAST(AT91C_REG *) 0xFFF98050) // (US3) Manchester Encoder Decoder Register
  5872. #define AT91C_US3_NER (AT91C_CAST(AT91C_REG *) 0xFFF98044) // (US3) Nb Errors Register
  5873. #define AT91C_US3_CR (AT91C_CAST(AT91C_REG *) 0xFFF98000) // (US3) Control Register
  5874. #define AT91C_US3_IDR (AT91C_CAST(AT91C_REG *) 0xFFF9800C) // (US3) Interrupt Disable Register
  5875. #define AT91C_US3_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF980EC) // (US3) US ADDRSIZE REGISTER
  5876. #define AT91C_US3_CSR (AT91C_CAST(AT91C_REG *) 0xFFF98014) // (US3) Channel Status Register
  5877. #define AT91C_US3_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF980F4) // (US3) US IPNAME2 REGISTER
  5878. #define AT91C_US3_IER (AT91C_CAST(AT91C_REG *) 0xFFF98008) // (US3) Interrupt Enable Register
  5879. #define AT91C_US3_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF980F8) // (US3) US FEATURES REGISTER
  5880. #define AT91C_US3_MR (AT91C_CAST(AT91C_REG *) 0xFFF98004) // (US3) Mode Register
  5881. #define AT91C_US3_IF (AT91C_CAST(AT91C_REG *) 0xFFF9804C) // (US3) IRDA_FILTER Register
  5882. #define AT91C_US3_THR (AT91C_CAST(AT91C_REG *) 0xFFF9801C) // (US3) Transmitter Holding Register
  5883. #define AT91C_US3_IMR (AT91C_CAST(AT91C_REG *) 0xFFF98010) // (US3) Interrupt Mask Register
  5884. #define AT91C_US3_FIDI (AT91C_CAST(AT91C_REG *) 0xFFF98040) // (US3) FI_DI_Ratio Register
  5885. #define AT91C_US3_RHR (AT91C_CAST(AT91C_REG *) 0xFFF98018) // (US3) Receiver Holding Register
  5886. #define AT91C_US3_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF980F0) // (US3) US IPNAME1 REGISTER
  5887. // ========== Register definition for PDC_SSC0 peripheral ==========
  5888. #define AT91C_SSC0_TNPR (AT91C_CAST(AT91C_REG *) 0xFFF9C118) // (PDC_SSC0) Transmit Next Pointer Register
  5889. #define AT91C_SSC0_PTSR (AT91C_CAST(AT91C_REG *) 0xFFF9C124) // (PDC_SSC0) PDC Transfer Status Register
  5890. #define AT91C_SSC0_TNCR (AT91C_CAST(AT91C_REG *) 0xFFF9C11C) // (PDC_SSC0) Transmit Next Counter Register
  5891. #define AT91C_SSC0_RNCR (AT91C_CAST(AT91C_REG *) 0xFFF9C114) // (PDC_SSC0) Receive Next Counter Register
  5892. #define AT91C_SSC0_TPR (AT91C_CAST(AT91C_REG *) 0xFFF9C108) // (PDC_SSC0) Transmit Pointer Register
  5893. #define AT91C_SSC0_RCR (AT91C_CAST(AT91C_REG *) 0xFFF9C104) // (PDC_SSC0) Receive Counter Register
  5894. #define AT91C_SSC0_PTCR (AT91C_CAST(AT91C_REG *) 0xFFF9C120) // (PDC_SSC0) PDC Transfer Control Register
  5895. #define AT91C_SSC0_RNPR (AT91C_CAST(AT91C_REG *) 0xFFF9C110) // (PDC_SSC0) Receive Next Pointer Register
  5896. #define AT91C_SSC0_TCR (AT91C_CAST(AT91C_REG *) 0xFFF9C10C) // (PDC_SSC0) Transmit Counter Register
  5897. #define AT91C_SSC0_RPR (AT91C_CAST(AT91C_REG *) 0xFFF9C100) // (PDC_SSC0) Receive Pointer Register
  5898. // ========== Register definition for SSC0 peripheral ==========
  5899. #define AT91C_SSC0_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF9C0F4) // (SSC0) SSC IPNAME2 REGISTER
  5900. #define AT91C_SSC0_SR (AT91C_CAST(AT91C_REG *) 0xFFF9C040) // (SSC0) Status Register
  5901. #define AT91C_SSC0_TSHR (AT91C_CAST(AT91C_REG *) 0xFFF9C034) // (SSC0) Transmit Sync Holding Register
  5902. #define AT91C_SSC0_TCMR (AT91C_CAST(AT91C_REG *) 0xFFF9C018) // (SSC0) Transmit Clock Mode Register
  5903. #define AT91C_SSC0_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF9C0EC) // (SSC0) SSC ADDRSIZE REGISTER
  5904. #define AT91C_SSC0_IMR (AT91C_CAST(AT91C_REG *) 0xFFF9C04C) // (SSC0) Interrupt Mask Register
  5905. #define AT91C_SSC0_IDR (AT91C_CAST(AT91C_REG *) 0xFFF9C048) // (SSC0) Interrupt Disable Register
  5906. #define AT91C_SSC0_CR (AT91C_CAST(AT91C_REG *) 0xFFF9C000) // (SSC0) Control Register
  5907. #define AT91C_SSC0_VER (AT91C_CAST(AT91C_REG *) 0xFFF9C0FC) // (SSC0) Version Register
  5908. #define AT91C_SSC0_RHR (AT91C_CAST(AT91C_REG *) 0xFFF9C020) // (SSC0) Receive Holding Register
  5909. #define AT91C_SSC0_THR (AT91C_CAST(AT91C_REG *) 0xFFF9C024) // (SSC0) Transmit Holding Register
  5910. #define AT91C_SSC0_CMR (AT91C_CAST(AT91C_REG *) 0xFFF9C004) // (SSC0) Clock Mode Register
  5911. #define AT91C_SSC0_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFF9C0F8) // (SSC0) SSC FEATURES REGISTER
  5912. #define AT91C_SSC0_RCMR (AT91C_CAST(AT91C_REG *) 0xFFF9C010) // (SSC0) Receive Clock ModeRegister
  5913. #define AT91C_SSC0_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF9C0F0) // (SSC0) SSC IPNAME1 REGISTER
  5914. #define AT91C_SSC0_RSHR (AT91C_CAST(AT91C_REG *) 0xFFF9C030) // (SSC0) Receive Sync Holding Register
  5915. #define AT91C_SSC0_IER (AT91C_CAST(AT91C_REG *) 0xFFF9C044) // (SSC0) Interrupt Enable Register
  5916. #define AT91C_SSC0_TFMR (AT91C_CAST(AT91C_REG *) 0xFFF9C01C) // (SSC0) Transmit Frame Mode Register
  5917. #define AT91C_SSC0_RFMR (AT91C_CAST(AT91C_REG *) 0xFFF9C014) // (SSC0) Receive Frame Mode Register
  5918. // ========== Register definition for PDC_SSC1 peripheral ==========
  5919. #define AT91C_SSC1_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFA0110) // (PDC_SSC1) Receive Next Pointer Register
  5920. #define AT91C_SSC1_TCR (AT91C_CAST(AT91C_REG *) 0xFFFA010C) // (PDC_SSC1) Transmit Counter Register
  5921. #define AT91C_SSC1_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFA011C) // (PDC_SSC1) Transmit Next Counter Register
  5922. #define AT91C_SSC1_RCR (AT91C_CAST(AT91C_REG *) 0xFFFA0104) // (PDC_SSC1) Receive Counter Register
  5923. #define AT91C_SSC1_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFA0114) // (PDC_SSC1) Receive Next Counter Register
  5924. #define AT91C_SSC1_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFA0120) // (PDC_SSC1) PDC Transfer Control Register
  5925. #define AT91C_SSC1_TPR (AT91C_CAST(AT91C_REG *) 0xFFFA0108) // (PDC_SSC1) Transmit Pointer Register
  5926. #define AT91C_SSC1_RPR (AT91C_CAST(AT91C_REG *) 0xFFFA0100) // (PDC_SSC1) Receive Pointer Register
  5927. #define AT91C_SSC1_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFA0124) // (PDC_SSC1) PDC Transfer Status Register
  5928. #define AT91C_SSC1_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFA0118) // (PDC_SSC1) Transmit Next Pointer Register
  5929. // ========== Register definition for SSC1 peripheral ==========
  5930. #define AT91C_SSC1_SR (AT91C_CAST(AT91C_REG *) 0xFFFA0040) // (SSC1) Status Register
  5931. #define AT91C_SSC1_TFMR (AT91C_CAST(AT91C_REG *) 0xFFFA001C) // (SSC1) Transmit Frame Mode Register
  5932. #define AT91C_SSC1_IPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFFA00F0) // (SSC1) SSC IPNAME1 REGISTER
  5933. #define AT91C_SSC1_CMR (AT91C_CAST(AT91C_REG *) 0xFFFA0004) // (SSC1) Clock Mode Register
  5934. #define AT91C_SSC1_THR (AT91C_CAST(AT91C_REG *) 0xFFFA0024) // (SSC1) Transmit Holding Register
  5935. #define AT91C_SSC1_FEATURES (AT91C_CAST(AT91C_REG *) 0xFFFA00F8) // (SSC1) SSC FEATURES REGISTER
  5936. #define AT91C_SSC1_TSHR (AT91C_CAST(AT91C_REG *) 0xFFFA0034) // (SSC1) Transmit Sync Holding Register
  5937. #define AT91C_SSC1_RCMR (AT91C_CAST(AT91C_REG *) 0xFFFA0010) // (SSC1) Receive Clock ModeRegister
  5938. #define AT91C_SSC1_RHR (AT91C_CAST(AT91C_REG *) 0xFFFA0020) // (SSC1) Receive Holding Register
  5939. #define AT91C_SSC1_VER (AT91C_CAST(AT91C_REG *) 0xFFFA00FC) // (SSC1) Version Register
  5940. #define AT91C_SSC1_TCMR (AT91C_CAST(AT91C_REG *) 0xFFFA0018) // (SSC1) Transmit Clock Mode Register
  5941. #define AT91C_SSC1_CR (AT91C_CAST(AT91C_REG *) 0xFFFA0000) // (SSC1) Control Register
  5942. #define AT91C_SSC1_RSHR (AT91C_CAST(AT91C_REG *) 0xFFFA0030) // (SSC1) Receive Sync Holding Register
  5943. #define AT91C_SSC1_IER (AT91C_CAST(AT91C_REG *) 0xFFFA0044) // (SSC1) Interrupt Enable Register
  5944. #define AT91C_SSC1_ADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFFA00EC) // (SSC1) SSC ADDRSIZE REGISTER
  5945. #define AT91C_SSC1_RFMR (AT91C_CAST(AT91C_REG *) 0xFFFA0014) // (SSC1) Receive Frame Mode Register
  5946. #define AT91C_SSC1_IMR (AT91C_CAST(AT91C_REG *) 0xFFFA004C) // (SSC1) Interrupt Mask Register
  5947. #define AT91C_SSC1_IDR (AT91C_CAST(AT91C_REG *) 0xFFFA0048) // (SSC1) Interrupt Disable Register
  5948. #define AT91C_SSC1_IPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFFA00F4) // (SSC1) SSC IPNAME2 REGISTER
  5949. // ========== Register definition for PWMC_CH0 peripheral ==========
  5950. #define AT91C_PWMC_CH0_CCNTR (AT91C_CAST(AT91C_REG *) 0xFFFB820C) // (PWMC_CH0) Channel Counter Register
  5951. #define AT91C_PWMC_CH0_CPRDR (AT91C_CAST(AT91C_REG *) 0xFFFB8208) // (PWMC_CH0) Channel Period Register
  5952. #define AT91C_PWMC_CH0_CUPDR (AT91C_CAST(AT91C_REG *) 0xFFFB8210) // (PWMC_CH0) Channel Update Register
  5953. #define AT91C_PWMC_CH0_CDTYR (AT91C_CAST(AT91C_REG *) 0xFFFB8204) // (PWMC_CH0) Channel Duty Cycle Register
  5954. #define AT91C_PWMC_CH0_CMR (AT91C_CAST(AT91C_REG *) 0xFFFB8200) // (PWMC_CH0) Channel Mode Register
  5955. #define AT91C_PWMC_CH0_Reserved (AT91C_CAST(AT91C_REG *) 0xFFFB8214) // (PWMC_CH0) Reserved
  5956. // ========== Register definition for PWMC_CH1 peripheral ==========
  5957. #define AT91C_PWMC_CH1_CCNTR (AT91C_CAST(AT91C_REG *) 0xFFFB822C) // (PWMC_CH1) Channel Counter Register
  5958. #define AT91C_PWMC_CH1_CDTYR (AT91C_CAST(AT91C_REG *) 0xFFFB8224) // (PWMC_CH1) Channel Duty Cycle Register
  5959. #define AT91C_PWMC_CH1_CMR (AT91C_CAST(AT91C_REG *) 0xFFFB8220) // (PWMC_CH1) Channel Mode Register
  5960. #define AT91C_PWMC_CH1_CPRDR (AT91C_CAST(AT91C_REG *) 0xFFFB8228) // (PWMC_CH1) Channel Period Register
  5961. #define AT91C_PWMC_CH1_Reserved (AT91C_CAST(AT91C_REG *) 0xFFFB8234) // (PWMC_CH1) Reserved
  5962. #define AT91C_PWMC_CH1_CUPDR (AT91C_CAST(AT91C_REG *) 0xFFFB8230) // (PWMC_CH1) Channel Update Register
  5963. // ========== Register definition for PWMC_CH2 peripheral ==========
  5964. #define AT91C_PWMC_CH2_CUPDR (AT91C_CAST(AT91C_REG *) 0xFFFB8250) // (PWMC_CH2) Channel Update Register
  5965. #define AT91C_PWMC_CH2_CMR (AT91C_CAST(AT91C_REG *) 0xFFFB8240) // (PWMC_CH2) Channel Mode Register
  5966. #define AT91C_PWMC_CH2_Reserved (AT91C_CAST(AT91C_REG *) 0xFFFB8254) // (PWMC_CH2) Reserved
  5967. #define AT91C_PWMC_CH2_CPRDR (AT91C_CAST(AT91C_REG *) 0xFFFB8248) // (PWMC_CH2) Channel Period Register
  5968. #define AT91C_PWMC_CH2_CDTYR (AT91C_CAST(AT91C_REG *) 0xFFFB8244) // (PWMC_CH2) Channel Duty Cycle Register
  5969. #define AT91C_PWMC_CH2_CCNTR (AT91C_CAST(AT91C_REG *) 0xFFFB824C) // (PWMC_CH2) Channel Counter Register
  5970. // ========== Register definition for PWMC_CH3 peripheral ==========
  5971. #define AT91C_PWMC_CH3_CPRDR (AT91C_CAST(AT91C_REG *) 0xFFFB8268) // (PWMC_CH3) Channel Period Register
  5972. #define AT91C_PWMC_CH3_Reserved (AT91C_CAST(AT91C_REG *) 0xFFFB8274) // (PWMC_CH3) Reserved
  5973. #define AT91C_PWMC_CH3_CUPDR (AT91C_CAST(AT91C_REG *) 0xFFFB8270) // (PWMC_CH3) Channel Update Register
  5974. #define AT91C_PWMC_CH3_CDTYR (AT91C_CAST(AT91C_REG *) 0xFFFB8264) // (PWMC_CH3) Channel Duty Cycle Register
  5975. #define AT91C_PWMC_CH3_CCNTR (AT91C_CAST(AT91C_REG *) 0xFFFB826C) // (PWMC_CH3) Channel Counter Register
  5976. #define AT91C_PWMC_CH3_CMR (AT91C_CAST(AT91C_REG *) 0xFFFB8260) // (PWMC_CH3) Channel Mode Register
  5977. // ========== Register definition for PWMC peripheral ==========
  5978. #define AT91C_PWMC_IDR (AT91C_CAST(AT91C_REG *) 0xFFFB8014) // (PWMC) PWMC Interrupt Disable Register
  5979. #define AT91C_PWMC_MR (AT91C_CAST(AT91C_REG *) 0xFFFB8000) // (PWMC) PWMC Mode Register
  5980. #define AT91C_PWMC_VR (AT91C_CAST(AT91C_REG *) 0xFFFB80FC) // (PWMC) PWMC Version Register
  5981. #define AT91C_PWMC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFB8018) // (PWMC) PWMC Interrupt Mask Register
  5982. #define AT91C_PWMC_SR (AT91C_CAST(AT91C_REG *) 0xFFFB800C) // (PWMC) PWMC Status Register
  5983. #define AT91C_PWMC_ISR (AT91C_CAST(AT91C_REG *) 0xFFFB801C) // (PWMC) PWMC Interrupt Status Register
  5984. #define AT91C_PWMC_ENA (AT91C_CAST(AT91C_REG *) 0xFFFB8004) // (PWMC) PWMC Enable Register
  5985. #define AT91C_PWMC_IER (AT91C_CAST(AT91C_REG *) 0xFFFB8010) // (PWMC) PWMC Interrupt Enable Register
  5986. #define AT91C_PWMC_DIS (AT91C_CAST(AT91C_REG *) 0xFFFB8008) // (PWMC) PWMC Disable Register
  5987. // ========== Register definition for PDC_SPI0 peripheral ==========
  5988. #define AT91C_SPI0_TPR (AT91C_CAST(AT91C_REG *) 0xFFFA4108) // (PDC_SPI0) Transmit Pointer Register
  5989. #define AT91C_SPI0_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFA4120) // (PDC_SPI0) PDC Transfer Control Register
  5990. #define AT91C_SPI0_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFA4110) // (PDC_SPI0) Receive Next Pointer Register
  5991. #define AT91C_SPI0_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFA411C) // (PDC_SPI0) Transmit Next Counter Register
  5992. #define AT91C_SPI0_TCR (AT91C_CAST(AT91C_REG *) 0xFFFA410C) // (PDC_SPI0) Transmit Counter Register
  5993. #define AT91C_SPI0_RCR (AT91C_CAST(AT91C_REG *) 0xFFFA4104) // (PDC_SPI0) Receive Counter Register
  5994. #define AT91C_SPI0_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFA4114) // (PDC_SPI0) Receive Next Counter Register
  5995. #define AT91C_SPI0_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFA4118) // (PDC_SPI0) Transmit Next Pointer Register
  5996. #define AT91C_SPI0_RPR (AT91C_CAST(AT91C_REG *) 0xFFFA4100) // (PDC_SPI0) Receive Pointer Register
  5997. #define AT91C_SPI0_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFA4124) // (PDC_SPI0) PDC Transfer Status Register
  5998. // ========== Register definition for PDC_SPI1 peripheral ==========
  5999. #define AT91C_SPI1_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFA8114) // (PDC_SPI1) Receive Next Counter Register
  6000. #define AT91C_SPI1_TCR (AT91C_CAST(AT91C_REG *) 0xFFFA810C) // (PDC_SPI1) Transmit Counter Register
  6001. #define AT91C_SPI1_RCR (AT91C_CAST(AT91C_REG *) 0xFFFA8104) // (PDC_SPI1) Receive Counter Register
  6002. #define AT91C_SPI1_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFA8118) // (PDC_SPI1) Transmit Next Pointer Register
  6003. #define AT91C_SPI1_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFA8110) // (PDC_SPI1) Receive Next Pointer Register
  6004. #define AT91C_SPI1_RPR (AT91C_CAST(AT91C_REG *) 0xFFFA8100) // (PDC_SPI1) Receive Pointer Register
  6005. #define AT91C_SPI1_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFA811C) // (PDC_SPI1) Transmit Next Counter Register
  6006. #define AT91C_SPI1_TPR (AT91C_CAST(AT91C_REG *) 0xFFFA8108) // (PDC_SPI1) Transmit Pointer Register
  6007. #define AT91C_SPI1_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFA8124) // (PDC_SPI1) PDC Transfer Status Register
  6008. #define AT91C_SPI1_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFA8120) // (PDC_SPI1) PDC Transfer Control Register
  6009. // ========== Register definition for SPI0 peripheral ==========
  6010. #define AT91C_SPI0_MR (AT91C_CAST(AT91C_REG *) 0xFFFA4004) // (SPI0) Mode Register
  6011. #define AT91C_SPI0_RDR (AT91C_CAST(AT91C_REG *) 0xFFFA4008) // (SPI0) Receive Data Register
  6012. #define AT91C_SPI0_CR (AT91C_CAST(AT91C_REG *) 0xFFFA4000) // (SPI0) Control Register
  6013. #define AT91C_SPI0_IER (AT91C_CAST(AT91C_REG *) 0xFFFA4014) // (SPI0) Interrupt Enable Register
  6014. #define AT91C_SPI0_TDR (AT91C_CAST(AT91C_REG *) 0xFFFA400C) // (SPI0) Transmit Data Register
  6015. #define AT91C_SPI0_IDR (AT91C_CAST(AT91C_REG *) 0xFFFA4018) // (SPI0) Interrupt Disable Register
  6016. #define AT91C_SPI0_CSR (AT91C_CAST(AT91C_REG *) 0xFFFA4030) // (SPI0) Chip Select Register
  6017. #define AT91C_SPI0_SR (AT91C_CAST(AT91C_REG *) 0xFFFA4010) // (SPI0) Status Register
  6018. #define AT91C_SPI0_IMR (AT91C_CAST(AT91C_REG *) 0xFFFA401C) // (SPI0) Interrupt Mask Register
  6019. // ========== Register definition for SPI1 peripheral ==========
  6020. #define AT91C_SPI1_CSR (AT91C_CAST(AT91C_REG *) 0xFFFA8030) // (SPI1) Chip Select Register
  6021. #define AT91C_SPI1_IER (AT91C_CAST(AT91C_REG *) 0xFFFA8014) // (SPI1) Interrupt Enable Register
  6022. #define AT91C_SPI1_RDR (AT91C_CAST(AT91C_REG *) 0xFFFA8008) // (SPI1) Receive Data Register
  6023. #define AT91C_SPI1_IDR (AT91C_CAST(AT91C_REG *) 0xFFFA8018) // (SPI1) Interrupt Disable Register
  6024. #define AT91C_SPI1_MR (AT91C_CAST(AT91C_REG *) 0xFFFA8004) // (SPI1) Mode Register
  6025. #define AT91C_SPI1_CR (AT91C_CAST(AT91C_REG *) 0xFFFA8000) // (SPI1) Control Register
  6026. #define AT91C_SPI1_SR (AT91C_CAST(AT91C_REG *) 0xFFFA8010) // (SPI1) Status Register
  6027. #define AT91C_SPI1_TDR (AT91C_CAST(AT91C_REG *) 0xFFFA800C) // (SPI1) Transmit Data Register
  6028. #define AT91C_SPI1_IMR (AT91C_CAST(AT91C_REG *) 0xFFFA801C) // (SPI1) Interrupt Mask Register
  6029. // ========== Register definition for PDC_TSADC peripheral ==========
  6030. #define AT91C_TSADC_TCR (AT91C_CAST(AT91C_REG *) 0xFFFB010C) // (PDC_TSADC) Transmit Counter Register
  6031. #define AT91C_TSADC_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFB0120) // (PDC_TSADC) PDC Transfer Control Register
  6032. #define AT91C_TSADC_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFB0114) // (PDC_TSADC) Receive Next Counter Register
  6033. #define AT91C_TSADC_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFB0124) // (PDC_TSADC) PDC Transfer Status Register
  6034. #define AT91C_TSADC_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFB011C) // (PDC_TSADC) Transmit Next Counter Register
  6035. #define AT91C_TSADC_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFB0110) // (PDC_TSADC) Receive Next Pointer Register
  6036. #define AT91C_TSADC_RCR (AT91C_CAST(AT91C_REG *) 0xFFFB0104) // (PDC_TSADC) Receive Counter Register
  6037. #define AT91C_TSADC_TPR (AT91C_CAST(AT91C_REG *) 0xFFFB0108) // (PDC_TSADC) Transmit Pointer Register
  6038. #define AT91C_TSADC_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFB0118) // (PDC_TSADC) Transmit Next Pointer Register
  6039. #define AT91C_TSADC_RPR (AT91C_CAST(AT91C_REG *) 0xFFFB0100) // (PDC_TSADC) Receive Pointer Register
  6040. // ========== Register definition for TSADC peripheral ==========
  6041. #define AT91C_TSADC_CHSR (AT91C_CAST(AT91C_REG *) 0xFFFB0018) // (TSADC) Channel Status Register
  6042. #define AT91C_TSADC_CDR5 (AT91C_CAST(AT91C_REG *) 0xFFFB0044) // (TSADC) Channel Data Register 5
  6043. #define AT91C_TSADC_CR (AT91C_CAST(AT91C_REG *) 0xFFFB0000) // (TSADC) Control Register
  6044. #define AT91C_TSADC_IMR (AT91C_CAST(AT91C_REG *) 0xFFFB002C) // (TSADC) Interrupt Mask Register
  6045. #define AT91C_TSADC_CHDR (AT91C_CAST(AT91C_REG *) 0xFFFB0014) // (TSADC) Channel Disable Register
  6046. #define AT91C_TSADC_LCDR (AT91C_CAST(AT91C_REG *) 0xFFFB0020) // (TSADC) Last Converted Register
  6047. #define AT91C_TSADC_IER (AT91C_CAST(AT91C_REG *) 0xFFFB0024) // (TSADC) Interrupt Enable Register
  6048. #define AT91C_TSADC_TSR (AT91C_CAST(AT91C_REG *) 0xFFFB000C) // (TSADC) Touch Screen Register
  6049. #define AT91C_TSADC_CDR2 (AT91C_CAST(AT91C_REG *) 0xFFFB0038) // (TSADC) Channel Data Register 2
  6050. #define AT91C_TSADC_CDR4 (AT91C_CAST(AT91C_REG *) 0xFFFB0040) // (TSADC) Channel Data Register 4
  6051. #define AT91C_TSADC_CHER (AT91C_CAST(AT91C_REG *) 0xFFFB0010) // (TSADC) Channel Enable Register
  6052. #define AT91C_TSADC_TRGR (AT91C_CAST(AT91C_REG *) 0xFFFB0008) // (TSADC) Trigger Register
  6053. #define AT91C_TSADC_CDR3 (AT91C_CAST(AT91C_REG *) 0xFFFB003C) // (TSADC) Channel Data Register 3
  6054. #define AT91C_TSADC_SR (AT91C_CAST(AT91C_REG *) 0xFFFB001C) // (TSADC) Status Register
  6055. #define AT91C_TSADC_CDR0 (AT91C_CAST(AT91C_REG *) 0xFFFB0030) // (TSADC) Channel Data Register 0
  6056. #define AT91C_TSADC_CDR6 (AT91C_CAST(AT91C_REG *) 0xFFFB0048) // (TSADC) Channel Data Register 6
  6057. #define AT91C_TSADC_IDR (AT91C_CAST(AT91C_REG *) 0xFFFB0028) // (TSADC) Interrupt Disable Register
  6058. #define AT91C_TSADC_MR (AT91C_CAST(AT91C_REG *) 0xFFFB0004) // (TSADC) Mode Register
  6059. #define AT91C_TSADC_CDR7 (AT91C_CAST(AT91C_REG *) 0xFFFB004C) // (TSADC) Channel Data Register 7
  6060. #define AT91C_TSADC_CDR1 (AT91C_CAST(AT91C_REG *) 0xFFFB0034) // (TSADC) Channel Data Register 1
  6061. // ========== Register definition for UDPHS_EPTFIFO peripheral ==========
  6062. #define AT91C_UDPHS_EPTFIFO_READEPT3 (AT91C_CAST(AT91C_REG *) 0x00630000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 3
  6063. #define AT91C_UDPHS_EPTFIFO_READEPT5 (AT91C_CAST(AT91C_REG *) 0x00650000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 5
  6064. #define AT91C_UDPHS_EPTFIFO_READEPT1 (AT91C_CAST(AT91C_REG *) 0x00610000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 1
  6065. #define AT91C_UDPHS_EPTFIFO_READEPT0 (AT91C_CAST(AT91C_REG *) 0x00600000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 0
  6066. #define AT91C_UDPHS_EPTFIFO_READEPT6 (AT91C_CAST(AT91C_REG *) 0x00660000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 6
  6067. #define AT91C_UDPHS_EPTFIFO_READEPT2 (AT91C_CAST(AT91C_REG *) 0x00620000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 2
  6068. #define AT91C_UDPHS_EPTFIFO_READEPT4 (AT91C_CAST(AT91C_REG *) 0x00640000) // (UDPHS_EPTFIFO) FIFO Endpoint Data Register 4
  6069. // ========== Register definition for UDPHS_EPT_0 peripheral ==========
  6070. #define AT91C_UDPHS_EPT_0_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF7811C) // (UDPHS_EPT_0) UDPHS Endpoint Status Register
  6071. #define AT91C_UDPHS_EPT_0_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF7810C) // (UDPHS_EPT_0) UDPHS Endpoint Control Register
  6072. #define AT91C_UDPHS_EPT_0_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF78108) // (UDPHS_EPT_0) UDPHS Endpoint Control Disable Register
  6073. #define AT91C_UDPHS_EPT_0_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF78100) // (UDPHS_EPT_0) UDPHS Endpoint Config Register
  6074. #define AT91C_UDPHS_EPT_0_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF78118) // (UDPHS_EPT_0) UDPHS Endpoint Clear Status Register
  6075. #define AT91C_UDPHS_EPT_0_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF78114) // (UDPHS_EPT_0) UDPHS Endpoint Set Status Register
  6076. #define AT91C_UDPHS_EPT_0_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF78104) // (UDPHS_EPT_0) UDPHS Endpoint Control Enable Register
  6077. // ========== Register definition for UDPHS_EPT_1 peripheral ==========
  6078. #define AT91C_UDPHS_EPT_1_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF78124) // (UDPHS_EPT_1) UDPHS Endpoint Control Enable Register
  6079. #define AT91C_UDPHS_EPT_1_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF78120) // (UDPHS_EPT_1) UDPHS Endpoint Config Register
  6080. #define AT91C_UDPHS_EPT_1_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF7812C) // (UDPHS_EPT_1) UDPHS Endpoint Control Register
  6081. #define AT91C_UDPHS_EPT_1_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF7813C) // (UDPHS_EPT_1) UDPHS Endpoint Status Register
  6082. #define AT91C_UDPHS_EPT_1_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF78138) // (UDPHS_EPT_1) UDPHS Endpoint Clear Status Register
  6083. #define AT91C_UDPHS_EPT_1_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF78134) // (UDPHS_EPT_1) UDPHS Endpoint Set Status Register
  6084. #define AT91C_UDPHS_EPT_1_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF78128) // (UDPHS_EPT_1) UDPHS Endpoint Control Disable Register
  6085. // ========== Register definition for UDPHS_EPT_2 peripheral ==========
  6086. #define AT91C_UDPHS_EPT_2_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF78158) // (UDPHS_EPT_2) UDPHS Endpoint Clear Status Register
  6087. #define AT91C_UDPHS_EPT_2_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF78148) // (UDPHS_EPT_2) UDPHS Endpoint Control Disable Register
  6088. #define AT91C_UDPHS_EPT_2_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF7815C) // (UDPHS_EPT_2) UDPHS Endpoint Status Register
  6089. #define AT91C_UDPHS_EPT_2_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF78154) // (UDPHS_EPT_2) UDPHS Endpoint Set Status Register
  6090. #define AT91C_UDPHS_EPT_2_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF7814C) // (UDPHS_EPT_2) UDPHS Endpoint Control Register
  6091. #define AT91C_UDPHS_EPT_2_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF78140) // (UDPHS_EPT_2) UDPHS Endpoint Config Register
  6092. #define AT91C_UDPHS_EPT_2_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF78144) // (UDPHS_EPT_2) UDPHS Endpoint Control Enable Register
  6093. // ========== Register definition for UDPHS_EPT_3 peripheral ==========
  6094. #define AT91C_UDPHS_EPT_3_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF7816C) // (UDPHS_EPT_3) UDPHS Endpoint Control Register
  6095. #define AT91C_UDPHS_EPT_3_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF78178) // (UDPHS_EPT_3) UDPHS Endpoint Clear Status Register
  6096. #define AT91C_UDPHS_EPT_3_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF78168) // (UDPHS_EPT_3) UDPHS Endpoint Control Disable Register
  6097. #define AT91C_UDPHS_EPT_3_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF7817C) // (UDPHS_EPT_3) UDPHS Endpoint Status Register
  6098. #define AT91C_UDPHS_EPT_3_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF78174) // (UDPHS_EPT_3) UDPHS Endpoint Set Status Register
  6099. #define AT91C_UDPHS_EPT_3_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF78164) // (UDPHS_EPT_3) UDPHS Endpoint Control Enable Register
  6100. #define AT91C_UDPHS_EPT_3_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF78160) // (UDPHS_EPT_3) UDPHS Endpoint Config Register
  6101. // ========== Register definition for UDPHS_EPT_4 peripheral ==========
  6102. #define AT91C_UDPHS_EPT_4_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF78198) // (UDPHS_EPT_4) UDPHS Endpoint Clear Status Register
  6103. #define AT91C_UDPHS_EPT_4_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF7818C) // (UDPHS_EPT_4) UDPHS Endpoint Control Register
  6104. #define AT91C_UDPHS_EPT_4_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF78184) // (UDPHS_EPT_4) UDPHS Endpoint Control Enable Register
  6105. #define AT91C_UDPHS_EPT_4_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF7819C) // (UDPHS_EPT_4) UDPHS Endpoint Status Register
  6106. #define AT91C_UDPHS_EPT_4_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF78194) // (UDPHS_EPT_4) UDPHS Endpoint Set Status Register
  6107. #define AT91C_UDPHS_EPT_4_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF78180) // (UDPHS_EPT_4) UDPHS Endpoint Config Register
  6108. #define AT91C_UDPHS_EPT_4_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF78188) // (UDPHS_EPT_4) UDPHS Endpoint Control Disable Register
  6109. // ========== Register definition for UDPHS_EPT_5 peripheral ==========
  6110. #define AT91C_UDPHS_EPT_5_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF781BC) // (UDPHS_EPT_5) UDPHS Endpoint Status Register
  6111. #define AT91C_UDPHS_EPT_5_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF781B8) // (UDPHS_EPT_5) UDPHS Endpoint Clear Status Register
  6112. #define AT91C_UDPHS_EPT_5_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF781A4) // (UDPHS_EPT_5) UDPHS Endpoint Control Enable Register
  6113. #define AT91C_UDPHS_EPT_5_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF781B4) // (UDPHS_EPT_5) UDPHS Endpoint Set Status Register
  6114. #define AT91C_UDPHS_EPT_5_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF781A8) // (UDPHS_EPT_5) UDPHS Endpoint Control Disable Register
  6115. #define AT91C_UDPHS_EPT_5_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF781A0) // (UDPHS_EPT_5) UDPHS Endpoint Config Register
  6116. #define AT91C_UDPHS_EPT_5_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF781AC) // (UDPHS_EPT_5) UDPHS Endpoint Control Register
  6117. // ========== Register definition for UDPHS_EPT_6 peripheral ==========
  6118. #define AT91C_UDPHS_EPT_6_EPTCLRSTA (AT91C_CAST(AT91C_REG *) 0xFFF781D8) // (UDPHS_EPT_6) UDPHS Endpoint Clear Status Register
  6119. #define AT91C_UDPHS_EPT_6_EPTCTLENB (AT91C_CAST(AT91C_REG *) 0xFFF781C4) // (UDPHS_EPT_6) UDPHS Endpoint Control Enable Register
  6120. #define AT91C_UDPHS_EPT_6_EPTCTL (AT91C_CAST(AT91C_REG *) 0xFFF781CC) // (UDPHS_EPT_6) UDPHS Endpoint Control Register
  6121. #define AT91C_UDPHS_EPT_6_EPTSETSTA (AT91C_CAST(AT91C_REG *) 0xFFF781D4) // (UDPHS_EPT_6) UDPHS Endpoint Set Status Register
  6122. #define AT91C_UDPHS_EPT_6_EPTCTLDIS (AT91C_CAST(AT91C_REG *) 0xFFF781C8) // (UDPHS_EPT_6) UDPHS Endpoint Control Disable Register
  6123. #define AT91C_UDPHS_EPT_6_EPTSTA (AT91C_CAST(AT91C_REG *) 0xFFF781DC) // (UDPHS_EPT_6) UDPHS Endpoint Status Register
  6124. #define AT91C_UDPHS_EPT_6_EPTCFG (AT91C_CAST(AT91C_REG *) 0xFFF781C0) // (UDPHS_EPT_6) UDPHS Endpoint Config Register
  6125. // ========== Register definition for UDPHS_DMA_1 peripheral ==========
  6126. #define AT91C_UDPHS_DMA_1_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7831C) // (UDPHS_DMA_1) UDPHS DMA Channel Status Register
  6127. #define AT91C_UDPHS_DMA_1_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78310) // (UDPHS_DMA_1) UDPHS DMA Channel Next Descriptor Address
  6128. #define AT91C_UDPHS_DMA_1_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78318) // (UDPHS_DMA_1) UDPHS DMA Channel Control Register
  6129. #define AT91C_UDPHS_DMA_1_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78314) // (UDPHS_DMA_1) UDPHS DMA Channel Address Register
  6130. // ========== Register definition for UDPHS_DMA_2 peripheral ==========
  6131. #define AT91C_UDPHS_DMA_2_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78328) // (UDPHS_DMA_2) UDPHS DMA Channel Control Register
  6132. #define AT91C_UDPHS_DMA_2_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7832C) // (UDPHS_DMA_2) UDPHS DMA Channel Status Register
  6133. #define AT91C_UDPHS_DMA_2_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78324) // (UDPHS_DMA_2) UDPHS DMA Channel Address Register
  6134. #define AT91C_UDPHS_DMA_2_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78320) // (UDPHS_DMA_2) UDPHS DMA Channel Next Descriptor Address
  6135. // ========== Register definition for UDPHS_DMA_3 peripheral ==========
  6136. #define AT91C_UDPHS_DMA_3_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78334) // (UDPHS_DMA_3) UDPHS DMA Channel Address Register
  6137. #define AT91C_UDPHS_DMA_3_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78330) // (UDPHS_DMA_3) UDPHS DMA Channel Next Descriptor Address
  6138. #define AT91C_UDPHS_DMA_3_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78338) // (UDPHS_DMA_3) UDPHS DMA Channel Control Register
  6139. #define AT91C_UDPHS_DMA_3_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7833C) // (UDPHS_DMA_3) UDPHS DMA Channel Status Register
  6140. // ========== Register definition for UDPHS_DMA_4 peripheral ==========
  6141. #define AT91C_UDPHS_DMA_4_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78340) // (UDPHS_DMA_4) UDPHS DMA Channel Next Descriptor Address
  6142. #define AT91C_UDPHS_DMA_4_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78344) // (UDPHS_DMA_4) UDPHS DMA Channel Address Register
  6143. #define AT91C_UDPHS_DMA_4_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78348) // (UDPHS_DMA_4) UDPHS DMA Channel Control Register
  6144. #define AT91C_UDPHS_DMA_4_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7834C) // (UDPHS_DMA_4) UDPHS DMA Channel Status Register
  6145. // ========== Register definition for UDPHS_DMA_5 peripheral ==========
  6146. #define AT91C_UDPHS_DMA_5_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7835C) // (UDPHS_DMA_5) UDPHS DMA Channel Status Register
  6147. #define AT91C_UDPHS_DMA_5_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78358) // (UDPHS_DMA_5) UDPHS DMA Channel Control Register
  6148. #define AT91C_UDPHS_DMA_5_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78350) // (UDPHS_DMA_5) UDPHS DMA Channel Next Descriptor Address
  6149. #define AT91C_UDPHS_DMA_5_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78354) // (UDPHS_DMA_5) UDPHS DMA Channel Address Register
  6150. // ========== Register definition for UDPHS_DMA_6 peripheral ==========
  6151. #define AT91C_UDPHS_DMA_6_DMANXTDSC (AT91C_CAST(AT91C_REG *) 0xFFF78360) // (UDPHS_DMA_6) UDPHS DMA Channel Next Descriptor Address
  6152. #define AT91C_UDPHS_DMA_6_DMACONTROL (AT91C_CAST(AT91C_REG *) 0xFFF78368) // (UDPHS_DMA_6) UDPHS DMA Channel Control Register
  6153. #define AT91C_UDPHS_DMA_6_DMASTATUS (AT91C_CAST(AT91C_REG *) 0xFFF7836C) // (UDPHS_DMA_6) UDPHS DMA Channel Status Register
  6154. #define AT91C_UDPHS_DMA_6_DMAADDRESS (AT91C_CAST(AT91C_REG *) 0xFFF78364) // (UDPHS_DMA_6) UDPHS DMA Channel Address Register
  6155. // ========== Register definition for UDPHS peripheral ==========
  6156. #define AT91C_UDPHS_IEN (AT91C_CAST(AT91C_REG *) 0xFFF78010) // (UDPHS) UDPHS Interrupt Enable Register
  6157. #define AT91C_UDPHS_TSTSOFCNT (AT91C_CAST(AT91C_REG *) 0xFFF780D0) // (UDPHS) UDPHS Test SOF Counter Register
  6158. #define AT91C_UDPHS_IPFEATURES (AT91C_CAST(AT91C_REG *) 0xFFF780F8) // (UDPHS) UDPHS Features Register
  6159. #define AT91C_UDPHS_TST (AT91C_CAST(AT91C_REG *) 0xFFF780E0) // (UDPHS) UDPHS Test Register
  6160. #define AT91C_UDPHS_FNUM (AT91C_CAST(AT91C_REG *) 0xFFF78004) // (UDPHS) UDPHS Frame Number Register
  6161. #define AT91C_UDPHS_TSTCNTB (AT91C_CAST(AT91C_REG *) 0xFFF780D8) // (UDPHS) UDPHS Test B Counter Register
  6162. #define AT91C_UDPHS_RIPPADDRSIZE (AT91C_CAST(AT91C_REG *) 0xFFF780EC) // (UDPHS) UDPHS PADDRSIZE Register
  6163. #define AT91C_UDPHS_INTSTA (AT91C_CAST(AT91C_REG *) 0xFFF78014) // (UDPHS) UDPHS Interrupt Status Register
  6164. #define AT91C_UDPHS_EPTRST (AT91C_CAST(AT91C_REG *) 0xFFF7801C) // (UDPHS) UDPHS Endpoints Reset Register
  6165. #define AT91C_UDPHS_TSTCNTA (AT91C_CAST(AT91C_REG *) 0xFFF780D4) // (UDPHS) UDPHS Test A Counter Register
  6166. #define AT91C_UDPHS_RIPNAME2 (AT91C_CAST(AT91C_REG *) 0xFFF780F4) // (UDPHS) UDPHS Name2 Register
  6167. #define AT91C_UDPHS_RIPNAME1 (AT91C_CAST(AT91C_REG *) 0xFFF780F0) // (UDPHS) UDPHS Name1 Register
  6168. #define AT91C_UDPHS_TSTMODREG (AT91C_CAST(AT91C_REG *) 0xFFF780DC) // (UDPHS) UDPHS Test Mode Register
  6169. #define AT91C_UDPHS_CLRINT (AT91C_CAST(AT91C_REG *) 0xFFF78018) // (UDPHS) UDPHS Clear Interrupt Register
  6170. #define AT91C_UDPHS_IPVERSION (AT91C_CAST(AT91C_REG *) 0xFFF780FC) // (UDPHS) UDPHS Version Register
  6171. #define AT91C_UDPHS_CTRL (AT91C_CAST(AT91C_REG *) 0xFFF78000) // (UDPHS) UDPHS Control Register
  6172. // ========== Register definition for PDC_AC97C peripheral ==========
  6173. #define AT91C_AC97C_PTSR (AT91C_CAST(AT91C_REG *) 0xFFFAC124) // (PDC_AC97C) PDC Transfer Status Register
  6174. #define AT91C_AC97C_RPR (AT91C_CAST(AT91C_REG *) 0xFFFAC100) // (PDC_AC97C) Receive Pointer Register
  6175. #define AT91C_AC97C_RNCR (AT91C_CAST(AT91C_REG *) 0xFFFAC114) // (PDC_AC97C) Receive Next Counter Register
  6176. #define AT91C_AC97C_RCR (AT91C_CAST(AT91C_REG *) 0xFFFAC104) // (PDC_AC97C) Receive Counter Register
  6177. #define AT91C_AC97C_PTCR (AT91C_CAST(AT91C_REG *) 0xFFFAC120) // (PDC_AC97C) PDC Transfer Control Register
  6178. #define AT91C_AC97C_TPR (AT91C_CAST(AT91C_REG *) 0xFFFAC108) // (PDC_AC97C) Transmit Pointer Register
  6179. #define AT91C_AC97C_RNPR (AT91C_CAST(AT91C_REG *) 0xFFFAC110) // (PDC_AC97C) Receive Next Pointer Register
  6180. #define AT91C_AC97C_TNPR (AT91C_CAST(AT91C_REG *) 0xFFFAC118) // (PDC_AC97C) Transmit Next Pointer Register
  6181. #define AT91C_AC97C_TCR (AT91C_CAST(AT91C_REG *) 0xFFFAC10C) // (PDC_AC97C) Transmit Counter Register
  6182. #define AT91C_AC97C_TNCR (AT91C_CAST(AT91C_REG *) 0xFFFAC11C) // (PDC_AC97C) Transmit Next Counter Register
  6183. // ========== Register definition for AC97C peripheral ==========
  6184. #define AT91C_AC97C_IER (AT91C_CAST(AT91C_REG *) 0xFFFAC054) // (AC97C) Interrupt Enable Register
  6185. #define AT91C_AC97C_COTHR (AT91C_CAST(AT91C_REG *) 0xFFFAC044) // (AC97C) COdec Transmit Holding Register
  6186. #define AT91C_AC97C_IDR (AT91C_CAST(AT91C_REG *) 0xFFFAC058) // (AC97C) Interrupt Disable Register
  6187. #define AT91C_AC97C_ICA (AT91C_CAST(AT91C_REG *) 0xFFFAC010) // (AC97C) Input Channel AssignementRegister
  6188. #define AT91C_AC97C_CATHR (AT91C_CAST(AT91C_REG *) 0xFFFAC024) // (AC97C) Channel A Transmit Holding Register
  6189. #define AT91C_AC97C_CBSR (AT91C_CAST(AT91C_REG *) 0xFFFAC038) // (AC97C) Channel B Status Register
  6190. #define AT91C_AC97C_CAMR (AT91C_CAST(AT91C_REG *) 0xFFFAC02C) // (AC97C) Channel A Mode Register
  6191. #define AT91C_AC97C_SR (AT91C_CAST(AT91C_REG *) 0xFFFAC050) // (AC97C) Status Register
  6192. #define AT91C_AC97C_CBTHR (AT91C_CAST(AT91C_REG *) 0xFFFAC034) // (AC97C) Channel B Transmit Holding Register (optional)
  6193. #define AT91C_AC97C_CASR (AT91C_CAST(AT91C_REG *) 0xFFFAC028) // (AC97C) Channel A Status Register
  6194. #define AT91C_AC97C_COSR (AT91C_CAST(AT91C_REG *) 0xFFFAC048) // (AC97C) CODEC Status Register
  6195. #define AT91C_AC97C_MR (AT91C_CAST(AT91C_REG *) 0xFFFAC008) // (AC97C) Mode Register
  6196. #define AT91C_AC97C_OCA (AT91C_CAST(AT91C_REG *) 0xFFFAC014) // (AC97C) Output Channel Assignement Register
  6197. #define AT91C_AC97C_CORHR (AT91C_CAST(AT91C_REG *) 0xFFFAC040) // (AC97C) COdec Transmit Holding Register
  6198. #define AT91C_AC97C_CBRHR (AT91C_CAST(AT91C_REG *) 0xFFFAC030) // (AC97C) Channel B Receive Holding Register (optional)
  6199. #define AT91C_AC97C_IMR (AT91C_CAST(AT91C_REG *) 0xFFFAC05C) // (AC97C) Interrupt Mask Register
  6200. #define AT91C_AC97C_COMR (AT91C_CAST(AT91C_REG *) 0xFFFAC04C) // (AC97C) CODEC Mask Status Register
  6201. #define AT91C_AC97C_CARHR (AT91C_CAST(AT91C_REG *) 0xFFFAC020) // (AC97C) Channel A Receive Holding Register
  6202. #define AT91C_AC97C_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFAC0FC) // (AC97C) Version Register
  6203. #define AT91C_AC97C_CBMR (AT91C_CAST(AT91C_REG *) 0xFFFAC03C) // (AC97C) Channel B Mode Register
  6204. // ========== Register definition for LCDC peripheral ==========
  6205. #define AT91C_LCDC_MVAL (AT91C_CAST(AT91C_REG *) 0x00500818) // (LCDC) LCD Mode Toggle Rate Value Register
  6206. #define AT91C_LCDC_PWRCON (AT91C_CAST(AT91C_REG *) 0x0050083C) // (LCDC) Power Control Register
  6207. #define AT91C_LCDC_ISR (AT91C_CAST(AT91C_REG *) 0x00500854) // (LCDC) Interrupt Enable Register
  6208. #define AT91C_LCDC_FRMP1 (AT91C_CAST(AT91C_REG *) 0x00500008) // (LCDC) DMA Frame Pointer Register 1
  6209. #define AT91C_LCDC_CTRSTVAL (AT91C_CAST(AT91C_REG *) 0x00500844) // (LCDC) Contrast Value Register
  6210. #define AT91C_LCDC_ICR (AT91C_CAST(AT91C_REG *) 0x00500858) // (LCDC) Interrupt Clear Register
  6211. #define AT91C_LCDC_TIM1 (AT91C_CAST(AT91C_REG *) 0x00500808) // (LCDC) LCD Timing Config 1 Register
  6212. #define AT91C_LCDC_DMACON (AT91C_CAST(AT91C_REG *) 0x0050001C) // (LCDC) DMA Control Register
  6213. #define AT91C_LCDC_ITR (AT91C_CAST(AT91C_REG *) 0x00500860) // (LCDC) Interrupts Test Register
  6214. #define AT91C_LCDC_IDR (AT91C_CAST(AT91C_REG *) 0x0050084C) // (LCDC) Interrupt Disable Register
  6215. #define AT91C_LCDC_DP4_7 (AT91C_CAST(AT91C_REG *) 0x00500820) // (LCDC) Dithering Pattern DP4_7 Register
  6216. #define AT91C_LCDC_DP5_7 (AT91C_CAST(AT91C_REG *) 0x0050082C) // (LCDC) Dithering Pattern DP5_7 Register
  6217. #define AT91C_LCDC_IRR (AT91C_CAST(AT91C_REG *) 0x00500864) // (LCDC) Interrupts Raw Status Register
  6218. #define AT91C_LCDC_DP3_4 (AT91C_CAST(AT91C_REG *) 0x00500830) // (LCDC) Dithering Pattern DP3_4 Register
  6219. #define AT91C_LCDC_IMR (AT91C_CAST(AT91C_REG *) 0x00500850) // (LCDC) Interrupt Mask Register
  6220. #define AT91C_LCDC_LCDFRCFG (AT91C_CAST(AT91C_REG *) 0x00500810) // (LCDC) LCD Frame Config Register
  6221. #define AT91C_LCDC_CTRSTCON (AT91C_CAST(AT91C_REG *) 0x00500840) // (LCDC) Contrast Control Register
  6222. #define AT91C_LCDC_DP1_2 (AT91C_CAST(AT91C_REG *) 0x0050081C) // (LCDC) Dithering Pattern DP1_2 Register
  6223. #define AT91C_LCDC_FRMP2 (AT91C_CAST(AT91C_REG *) 0x0050000C) // (LCDC) DMA Frame Pointer Register 2
  6224. #define AT91C_LCDC_LCDCON1 (AT91C_CAST(AT91C_REG *) 0x00500800) // (LCDC) LCD Control 1 Register
  6225. #define AT91C_LCDC_DP4_5 (AT91C_CAST(AT91C_REG *) 0x00500834) // (LCDC) Dithering Pattern DP4_5 Register
  6226. #define AT91C_LCDC_FRMA2 (AT91C_CAST(AT91C_REG *) 0x00500014) // (LCDC) DMA Frame Address Register 2
  6227. #define AT91C_LCDC_BA1 (AT91C_CAST(AT91C_REG *) 0x00500000) // (LCDC) DMA Base Address Register 1
  6228. #define AT91C_LCDC_DMA2DCFG (AT91C_CAST(AT91C_REG *) 0x00500020) // (LCDC) DMA 2D addressing configuration
  6229. #define AT91C_LCDC_LUT_ENTRY (AT91C_CAST(AT91C_REG *) 0x00500C00) // (LCDC) LUT Entries Register
  6230. #define AT91C_LCDC_DP6_7 (AT91C_CAST(AT91C_REG *) 0x00500838) // (LCDC) Dithering Pattern DP6_7 Register
  6231. #define AT91C_LCDC_FRMCFG (AT91C_CAST(AT91C_REG *) 0x00500018) // (LCDC) DMA Frame Configuration Register
  6232. #define AT91C_LCDC_TIM2 (AT91C_CAST(AT91C_REG *) 0x0050080C) // (LCDC) LCD Timing Config 2 Register
  6233. #define AT91C_LCDC_DP3_5 (AT91C_CAST(AT91C_REG *) 0x00500824) // (LCDC) Dithering Pattern DP3_5 Register
  6234. #define AT91C_LCDC_FRMA1 (AT91C_CAST(AT91C_REG *) 0x00500010) // (LCDC) DMA Frame Address Register 1
  6235. #define AT91C_LCDC_IER (AT91C_CAST(AT91C_REG *) 0x00500848) // (LCDC) Interrupt Enable Register
  6236. #define AT91C_LCDC_DP2_3 (AT91C_CAST(AT91C_REG *) 0x00500828) // (LCDC) Dithering Pattern DP2_3 Register
  6237. #define AT91C_LCDC_FIFO (AT91C_CAST(AT91C_REG *) 0x00500814) // (LCDC) LCD FIFO Register
  6238. #define AT91C_LCDC_BA2 (AT91C_CAST(AT91C_REG *) 0x00500004) // (LCDC) DMA Base Address Register 2
  6239. #define AT91C_LCDC_LCDCON2 (AT91C_CAST(AT91C_REG *) 0x00500804) // (LCDC) LCD Control 2 Register
  6240. #define AT91C_LCDC_GPR (AT91C_CAST(AT91C_REG *) 0x0050085C) // (LCDC) General Purpose Register
  6241. // ========== Register definition for LCDC_16B_TFT peripheral ==========
  6242. #define AT91C_TFT_MVAL (AT91C_CAST(AT91C_REG *) 0x00500818) // (LCDC_16B_TFT) LCD Mode Toggle Rate Value Register
  6243. #define AT91C_TFT_PWRCON (AT91C_CAST(AT91C_REG *) 0x0050083C) // (LCDC_16B_TFT) Power Control Register
  6244. #define AT91C_TFT_ISR (AT91C_CAST(AT91C_REG *) 0x00500854) // (LCDC_16B_TFT) Interrupt Enable Register
  6245. #define AT91C_TFT_FRMP1 (AT91C_CAST(AT91C_REG *) 0x00500008) // (LCDC_16B_TFT) DMA Frame Pointer Register 1
  6246. #define AT91C_TFT_CTRSTVAL (AT91C_CAST(AT91C_REG *) 0x00500844) // (LCDC_16B_TFT) Contrast Value Register
  6247. #define AT91C_TFT_ICR (AT91C_CAST(AT91C_REG *) 0x00500858) // (LCDC_16B_TFT) Interrupt Clear Register
  6248. #define AT91C_TFT_TIM1 (AT91C_CAST(AT91C_REG *) 0x00500808) // (LCDC_16B_TFT) LCD Timing Config 1 Register
  6249. #define AT91C_TFT_DMACON (AT91C_CAST(AT91C_REG *) 0x0050001C) // (LCDC_16B_TFT) DMA Control Register
  6250. #define AT91C_TFT_ITR (AT91C_CAST(AT91C_REG *) 0x00500860) // (LCDC_16B_TFT) Interrupts Test Register
  6251. #define AT91C_TFT_IDR (AT91C_CAST(AT91C_REG *) 0x0050084C) // (LCDC_16B_TFT) Interrupt Disable Register
  6252. #define AT91C_TFT_DP4_7 (AT91C_CAST(AT91C_REG *) 0x00500820) // (LCDC_16B_TFT) Dithering Pattern DP4_7 Register
  6253. #define AT91C_TFT_DP5_7 (AT91C_CAST(AT91C_REG *) 0x0050082C) // (LCDC_16B_TFT) Dithering Pattern DP5_7 Register
  6254. #define AT91C_TFT_IRR (AT91C_CAST(AT91C_REG *) 0x00500864) // (LCDC_16B_TFT) Interrupts Raw Status Register
  6255. #define AT91C_TFT_DP3_4 (AT91C_CAST(AT91C_REG *) 0x00500830) // (LCDC_16B_TFT) Dithering Pattern DP3_4 Register
  6256. #define AT91C_TFT_IMR (AT91C_CAST(AT91C_REG *) 0x00500850) // (LCDC_16B_TFT) Interrupt Mask Register
  6257. #define AT91C_TFT_LCDFRCFG (AT91C_CAST(AT91C_REG *) 0x00500810) // (LCDC_16B_TFT) LCD Frame Config Register
  6258. #define AT91C_TFT_CTRSTCON (AT91C_CAST(AT91C_REG *) 0x00500840) // (LCDC_16B_TFT) Contrast Control Register
  6259. #define AT91C_TFT_DP1_2 (AT91C_CAST(AT91C_REG *) 0x0050081C) // (LCDC_16B_TFT) Dithering Pattern DP1_2 Register
  6260. #define AT91C_TFT_FRMP2 (AT91C_CAST(AT91C_REG *) 0x0050000C) // (LCDC_16B_TFT) DMA Frame Pointer Register 2
  6261. #define AT91C_TFT_LCDCON1 (AT91C_CAST(AT91C_REG *) 0x00500800) // (LCDC_16B_TFT) LCD Control 1 Register
  6262. #define AT91C_TFT_DP4_5 (AT91C_CAST(AT91C_REG *) 0x00500834) // (LCDC_16B_TFT) Dithering Pattern DP4_5 Register
  6263. #define AT91C_TFT_FRMA2 (AT91C_CAST(AT91C_REG *) 0x00500014) // (LCDC_16B_TFT) DMA Frame Address Register 2
  6264. #define AT91C_TFT_BA1 (AT91C_CAST(AT91C_REG *) 0x00500000) // (LCDC_16B_TFT) DMA Base Address Register 1
  6265. #define AT91C_TFT_DMA2DCFG (AT91C_CAST(AT91C_REG *) 0x00500020) // (LCDC_16B_TFT) DMA 2D addressing configuration
  6266. #define AT91C_TFT_LUT_ENTRY (AT91C_CAST(AT91C_REG *) 0x00500C00) // (LCDC_16B_TFT) LUT Entries Register
  6267. #define AT91C_TFT_DP6_7 (AT91C_CAST(AT91C_REG *) 0x00500838) // (LCDC_16B_TFT) Dithering Pattern DP6_7 Register
  6268. #define AT91C_TFT_FRMCFG (AT91C_CAST(AT91C_REG *) 0x00500018) // (LCDC_16B_TFT) DMA Frame Configuration Register
  6269. #define AT91C_TFT_TIM2 (AT91C_CAST(AT91C_REG *) 0x0050080C) // (LCDC_16B_TFT) LCD Timing Config 2 Register
  6270. #define AT91C_TFT_DP3_5 (AT91C_CAST(AT91C_REG *) 0x00500824) // (LCDC_16B_TFT) Dithering Pattern DP3_5 Register
  6271. #define AT91C_TFT_FRMA1 (AT91C_CAST(AT91C_REG *) 0x00500010) // (LCDC_16B_TFT) DMA Frame Address Register 1
  6272. #define AT91C_TFT_IER (AT91C_CAST(AT91C_REG *) 0x00500848) // (LCDC_16B_TFT) Interrupt Enable Register
  6273. #define AT91C_TFT_DP2_3 (AT91C_CAST(AT91C_REG *) 0x00500828) // (LCDC_16B_TFT) Dithering Pattern DP2_3 Register
  6274. #define AT91C_TFT_FIFO (AT91C_CAST(AT91C_REG *) 0x00500814) // (LCDC_16B_TFT) LCD FIFO Register
  6275. #define AT91C_TFT_BA2 (AT91C_CAST(AT91C_REG *) 0x00500004) // (LCDC_16B_TFT) DMA Base Address Register 2
  6276. #define AT91C_TFT_LCDCON2 (AT91C_CAST(AT91C_REG *) 0x00500804) // (LCDC_16B_TFT) LCD Control 2 Register
  6277. #define AT91C_TFT_GPR (AT91C_CAST(AT91C_REG *) 0x0050085C) // (LCDC_16B_TFT) General Purpose Register
  6278. // ========== Register definition for HDMA_CH_0 peripheral ==========
  6279. #define AT91C_HDMA_CH_0_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFEC5C) // (HDMA_CH_0) HDMA Reserved
  6280. #define AT91C_HDMA_CH_0_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC40) // (HDMA_CH_0) HDMA Channel Destination Address Register
  6281. #define AT91C_HDMA_CH_0_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFEC58) // (HDMA_CH_0) HDMA Channel Destination Picture in Picture Configuration Register
  6282. #define AT91C_HDMA_CH_0_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFEC44) // (HDMA_CH_0) HDMA Channel Descriptor Address Register
  6283. #define AT91C_HDMA_CH_0_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFEC50) // (HDMA_CH_0) HDMA Channel Configuration Register
  6284. #define AT91C_HDMA_CH_0_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFEC54) // (HDMA_CH_0) HDMA Channel Source Picture in Picture Configuration Register
  6285. #define AT91C_HDMA_CH_0_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC60) // (HDMA_CH_0) HDMA Reserved
  6286. #define AT91C_HDMA_CH_0_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFEC48) // (HDMA_CH_0) HDMA Channel Control A Register
  6287. #define AT91C_HDMA_CH_0_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFEC4C) // (HDMA_CH_0) HDMA Channel Control B Register
  6288. #define AT91C_HDMA_CH_0_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC3C) // (HDMA_CH_0) HDMA Channel Source Address Register
  6289. // ========== Register definition for HDMA_CH_1 peripheral ==========
  6290. #define AT91C_HDMA_CH_1_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC88) // (HDMA_CH_1) HDMA Reserved
  6291. #define AT91C_HDMA_CH_1_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFEC80) // (HDMA_CH_1) HDMA Channel Destination Picture in Picture Configuration Register
  6292. #define AT91C_HDMA_CH_1_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFEC74) // (HDMA_CH_1) HDMA Channel Control B Register
  6293. #define AT91C_HDMA_CH_1_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC64) // (HDMA_CH_1) HDMA Channel Source Address Register
  6294. #define AT91C_HDMA_CH_1_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFEC84) // (HDMA_CH_1) HDMA Reserved
  6295. #define AT91C_HDMA_CH_1_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFEC78) // (HDMA_CH_1) HDMA Channel Configuration Register
  6296. #define AT91C_HDMA_CH_1_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFEC6C) // (HDMA_CH_1) HDMA Channel Descriptor Address Register
  6297. #define AT91C_HDMA_CH_1_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC68) // (HDMA_CH_1) HDMA Channel Destination Address Register
  6298. #define AT91C_HDMA_CH_1_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFEC70) // (HDMA_CH_1) HDMA Channel Control A Register
  6299. #define AT91C_HDMA_CH_1_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFEC7C) // (HDMA_CH_1) HDMA Channel Source Picture in Picture Configuration Register
  6300. // ========== Register definition for HDMA_CH_2 peripheral ==========
  6301. #define AT91C_HDMA_CH_2_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC8C) // (HDMA_CH_2) HDMA Channel Source Address Register
  6302. #define AT91C_HDMA_CH_2_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFECAC) // (HDMA_CH_2) HDMA Reserved
  6303. #define AT91C_HDMA_CH_2_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECA8) // (HDMA_CH_2) HDMA Channel Destination Picture in Picture Configuration Register
  6304. #define AT91C_HDMA_CH_2_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECA4) // (HDMA_CH_2) HDMA Channel Source Picture in Picture Configuration Register
  6305. #define AT91C_HDMA_CH_2_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC90) // (HDMA_CH_2) HDMA Channel Destination Address Register
  6306. #define AT91C_HDMA_CH_2_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFEC94) // (HDMA_CH_2) HDMA Channel Descriptor Address Register
  6307. #define AT91C_HDMA_CH_2_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFEC98) // (HDMA_CH_2) HDMA Channel Control A Register
  6308. #define AT91C_HDMA_CH_2_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECB0) // (HDMA_CH_2) HDMA Reserved
  6309. #define AT91C_HDMA_CH_2_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFECA0) // (HDMA_CH_2) HDMA Channel Configuration Register
  6310. #define AT91C_HDMA_CH_2_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFEC9C) // (HDMA_CH_2) HDMA Channel Control B Register
  6311. // ========== Register definition for HDMA_CH_3 peripheral ==========
  6312. #define AT91C_HDMA_CH_3_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECCC) // (HDMA_CH_3) HDMA Channel Source Picture in Picture Configuration Register
  6313. #define AT91C_HDMA_CH_3_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFECC0) // (HDMA_CH_3) HDMA Channel Control A Register
  6314. #define AT91C_HDMA_CH_3_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECD0) // (HDMA_CH_3) HDMA Channel Destination Picture in Picture Configuration Register
  6315. #define AT91C_HDMA_CH_3_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFECC4) // (HDMA_CH_3) HDMA Channel Control B Register
  6316. #define AT91C_HDMA_CH_3_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFECD4) // (HDMA_CH_3) HDMA Reserved
  6317. #define AT91C_HDMA_CH_3_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFECBC) // (HDMA_CH_3) HDMA Channel Descriptor Address Register
  6318. #define AT91C_HDMA_CH_3_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECD8) // (HDMA_CH_3) HDMA Reserved
  6319. #define AT91C_HDMA_CH_3_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFECC8) // (HDMA_CH_3) HDMA Channel Configuration Register
  6320. #define AT91C_HDMA_CH_3_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECB8) // (HDMA_CH_3) HDMA Channel Destination Address Register
  6321. #define AT91C_HDMA_CH_3_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECB4) // (HDMA_CH_3) HDMA Channel Source Address Register
  6322. // ========== Register definition for HDMA_CH_4 peripheral ==========
  6323. #define AT91C_HDMA_CH_4_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFECF0) // (HDMA_CH_4) HDMA Channel Configuration Register
  6324. #define AT91C_HDMA_CH_4_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFECFC) // (HDMA_CH_4) HDMA Reserved
  6325. #define AT91C_HDMA_CH_4_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED00) // (HDMA_CH_4) HDMA Reserved
  6326. #define AT91C_HDMA_CH_4_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECE0) // (HDMA_CH_4) HDMA Channel Destination Address Register
  6327. #define AT91C_HDMA_CH_4_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFECE8) // (HDMA_CH_4) HDMA Channel Control A Register
  6328. #define AT91C_HDMA_CH_4_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFECDC) // (HDMA_CH_4) HDMA Channel Source Address Register
  6329. #define AT91C_HDMA_CH_4_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFECEC) // (HDMA_CH_4) HDMA Channel Control B Register
  6330. #define AT91C_HDMA_CH_4_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFECE4) // (HDMA_CH_4) HDMA Channel Descriptor Address Register
  6331. #define AT91C_HDMA_CH_4_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECF4) // (HDMA_CH_4) HDMA Channel Source Picture in Picture Configuration Register
  6332. #define AT91C_HDMA_CH_4_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFECF8) // (HDMA_CH_4) HDMA Channel Destination Picture in Picture Configuration Register
  6333. // ========== Register definition for HDMA_CH_5 peripheral ==========
  6334. #define AT91C_HDMA_CH_5_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFED14) // (HDMA_CH_5) HDMA Channel Control B Register
  6335. #define AT91C_HDMA_CH_5_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED08) // (HDMA_CH_5) HDMA Channel Destination Address Register
  6336. #define AT91C_HDMA_CH_5_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED1C) // (HDMA_CH_5) HDMA Channel Source Picture in Picture Configuration Register
  6337. #define AT91C_HDMA_CH_5_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED0C) // (HDMA_CH_5) HDMA Channel Descriptor Address Register
  6338. #define AT91C_HDMA_CH_5_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED20) // (HDMA_CH_5) HDMA Channel Destination Picture in Picture Configuration Register
  6339. #define AT91C_HDMA_CH_5_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFED18) // (HDMA_CH_5) HDMA Channel Configuration Register
  6340. #define AT91C_HDMA_CH_5_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED28) // (HDMA_CH_5) HDMA Reserved
  6341. #define AT91C_HDMA_CH_5_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED04) // (HDMA_CH_5) HDMA Channel Source Address Register
  6342. #define AT91C_HDMA_CH_5_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED24) // (HDMA_CH_5) HDMA Reserved
  6343. #define AT91C_HDMA_CH_5_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFED10) // (HDMA_CH_5) HDMA Channel Control A Register
  6344. // ========== Register definition for HDMA_CH_6 peripheral ==========
  6345. #define AT91C_HDMA_CH_6_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED2C) // (HDMA_CH_6) HDMA Channel Source Address Register
  6346. #define AT91C_HDMA_CH_6_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED4C) // (HDMA_CH_6) HDMA Reserved
  6347. #define AT91C_HDMA_CH_6_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED50) // (HDMA_CH_6) HDMA Reserved
  6348. #define AT91C_HDMA_CH_6_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED44) // (HDMA_CH_6) HDMA Channel Source Picture in Picture Configuration Register
  6349. #define AT91C_HDMA_CH_6_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFED3C) // (HDMA_CH_6) HDMA Channel Control B Register
  6350. #define AT91C_HDMA_CH_6_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED34) // (HDMA_CH_6) HDMA Channel Descriptor Address Register
  6351. #define AT91C_HDMA_CH_6_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFED40) // (HDMA_CH_6) HDMA Channel Configuration Register
  6352. #define AT91C_HDMA_CH_6_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED48) // (HDMA_CH_6) HDMA Channel Destination Picture in Picture Configuration Register
  6353. #define AT91C_HDMA_CH_6_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED30) // (HDMA_CH_6) HDMA Channel Destination Address Register
  6354. #define AT91C_HDMA_CH_6_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFED38) // (HDMA_CH_6) HDMA Channel Control A Register
  6355. // ========== Register definition for HDMA_CH_7 peripheral ==========
  6356. #define AT91C_HDMA_CH_7_CADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED78) // (HDMA_CH_7) HDMA Reserved
  6357. #define AT91C_HDMA_CH_7_CFG (AT91C_CAST(AT91C_REG *) 0xFFFFED68) // (HDMA_CH_7) HDMA Channel Configuration Register
  6358. #define AT91C_HDMA_CH_7_DADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED58) // (HDMA_CH_7) HDMA Channel Destination Address Register
  6359. #define AT91C_HDMA_CH_7_CTRLB (AT91C_CAST(AT91C_REG *) 0xFFFFED64) // (HDMA_CH_7) HDMA Channel Control B Register
  6360. #define AT91C_HDMA_CH_7_DSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED5C) // (HDMA_CH_7) HDMA Channel Descriptor Address Register
  6361. #define AT91C_HDMA_CH_7_DPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED70) // (HDMA_CH_7) HDMA Channel Destination Picture in Picture Configuration Register
  6362. #define AT91C_HDMA_CH_7_CTRLA (AT91C_CAST(AT91C_REG *) 0xFFFFED60) // (HDMA_CH_7) HDMA Channel Control A Register
  6363. #define AT91C_HDMA_CH_7_BDSCR (AT91C_CAST(AT91C_REG *) 0xFFFFED74) // (HDMA_CH_7) HDMA Reserved
  6364. #define AT91C_HDMA_CH_7_SPIP (AT91C_CAST(AT91C_REG *) 0xFFFFED6C) // (HDMA_CH_7) HDMA Channel Source Picture in Picture Configuration Register
  6365. #define AT91C_HDMA_CH_7_SADDR (AT91C_CAST(AT91C_REG *) 0xFFFFED54) // (HDMA_CH_7) HDMA Channel Source Address Register
  6366. // ========== Register definition for HDMA peripheral ==========
  6367. #define AT91C_HDMA_EBCIDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC1C) // (HDMA) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register
  6368. #define AT91C_HDMA_LAST (AT91C_CAST(AT91C_REG *) 0xFFFFEC10) // (HDMA) HDMA Software Last Transfer Flag Register
  6369. #define AT91C_HDMA_SREQ (AT91C_CAST(AT91C_REG *) 0xFFFFEC08) // (HDMA) HDMA Software Single Request Register
  6370. #define AT91C_HDMA_RSVD0 (AT91C_CAST(AT91C_REG *) 0xFFFFEC34) // (HDMA) HDMA Reserved
  6371. #define AT91C_HDMA_EBCIER (AT91C_CAST(AT91C_REG *) 0xFFFFEC18) // (HDMA) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register
  6372. #define AT91C_HDMA_GCFG (AT91C_CAST(AT91C_REG *) 0xFFFFEC00) // (HDMA) HDMA Global Configuration Register
  6373. #define AT91C_HDMA_CHER (AT91C_CAST(AT91C_REG *) 0xFFFFEC28) // (HDMA) HDMA Channel Handler Enable Register
  6374. #define AT91C_HDMA_RSVD1 (AT91C_CAST(AT91C_REG *) 0xFFFFEC38) // (HDMA) HDMA Reserved
  6375. #define AT91C_HDMA_CHDR (AT91C_CAST(AT91C_REG *) 0xFFFFEC2C) // (HDMA) HDMA Channel Handler Disable Register
  6376. #define AT91C_HDMA_EBCIMR (AT91C_CAST(AT91C_REG *) 0xFFFFEC20) // (HDMA) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register
  6377. #define AT91C_HDMA_CREQ (AT91C_CAST(AT91C_REG *) 0xFFFFEC0C) // (HDMA) HDMA Software Chunk Transfer Request Register
  6378. #define AT91C_HDMA_SYNC (AT91C_CAST(AT91C_REG *) 0xFFFFEC14) // (HDMA) HDMA Request Synchronization Register
  6379. #define AT91C_HDMA_EN (AT91C_CAST(AT91C_REG *) 0xFFFFEC04) // (HDMA) HDMA Controller Enable Register
  6380. #define AT91C_HDMA_EBCISR (AT91C_CAST(AT91C_REG *) 0xFFFFEC24) // (HDMA) HDMA Error, Chained Buffer transfer completed and Buffer transfer completed Status Register
  6381. #define AT91C_HDMA_CHSR (AT91C_CAST(AT91C_REG *) 0xFFFFEC30) // (HDMA) HDMA Channel Handler Status Register
  6382. // ========== Register definition for HECC peripheral ==========
  6383. #define AT91C_HECC_VR (AT91C_CAST(AT91C_REG *) 0xFFFFE2FC) // (HECC) ECC Version register
  6384. #define AT91C_HECC_SR (AT91C_CAST(AT91C_REG *) 0xFFFFE208) // (HECC) ECC Status register
  6385. #define AT91C_HECC_CR (AT91C_CAST(AT91C_REG *) 0xFFFFE200) // (HECC) ECC reset register
  6386. #define AT91C_HECC_NPR (AT91C_CAST(AT91C_REG *) 0xFFFFE210) // (HECC) ECC Parity N register
  6387. #define AT91C_HECC_PR (AT91C_CAST(AT91C_REG *) 0xFFFFE20C) // (HECC) ECC Parity register
  6388. #define AT91C_HECC_MR (AT91C_CAST(AT91C_REG *) 0xFFFFE204) // (HECC) ECC Page size register
  6389. // ========== Register definition for EMACB peripheral ==========
  6390. #define AT91C_EMACB_ALE (AT91C_CAST(AT91C_REG *) 0xFFFBC054) // (EMACB) Alignment Error Register
  6391. #define AT91C_EMACB_RRE (AT91C_CAST(AT91C_REG *) 0xFFFBC06C) // (EMACB) Receive Ressource Error Register
  6392. #define AT91C_EMACB_SA4H (AT91C_CAST(AT91C_REG *) 0xFFFBC0B4) // (EMACB) Specific Address 4 Top, Last 2 bytes
  6393. #define AT91C_EMACB_TPQ (AT91C_CAST(AT91C_REG *) 0xFFFBC0BC) // (EMACB) Transmit Pause Quantum Register
  6394. #define AT91C_EMACB_RJA (AT91C_CAST(AT91C_REG *) 0xFFFBC07C) // (EMACB) Receive Jabbers Register
  6395. #define AT91C_EMACB_SA2H (AT91C_CAST(AT91C_REG *) 0xFFFBC0A4) // (EMACB) Specific Address 2 Top, Last 2 bytes
  6396. #define AT91C_EMACB_TPF (AT91C_CAST(AT91C_REG *) 0xFFFBC08C) // (EMACB) Transmitted Pause Frames Register
  6397. #define AT91C_EMACB_ROV (AT91C_CAST(AT91C_REG *) 0xFFFBC070) // (EMACB) Receive Overrun Errors Register
  6398. #define AT91C_EMACB_SA4L (AT91C_CAST(AT91C_REG *) 0xFFFBC0B0) // (EMACB) Specific Address 4 Bottom, First 4 bytes
  6399. #define AT91C_EMACB_MAN (AT91C_CAST(AT91C_REG *) 0xFFFBC034) // (EMACB) PHY Maintenance Register
  6400. #define AT91C_EMACB_TID (AT91C_CAST(AT91C_REG *) 0xFFFBC0B8) // (EMACB) Type ID Checking Register
  6401. #define AT91C_EMACB_TBQP (AT91C_CAST(AT91C_REG *) 0xFFFBC01C) // (EMACB) Transmit Buffer Queue Pointer
  6402. #define AT91C_EMACB_SA3L (AT91C_CAST(AT91C_REG *) 0xFFFBC0A8) // (EMACB) Specific Address 3 Bottom, First 4 bytes
  6403. #define AT91C_EMACB_DTF (AT91C_CAST(AT91C_REG *) 0xFFFBC058) // (EMACB) Deferred Transmission Frame Register
  6404. #define AT91C_EMACB_PTR (AT91C_CAST(AT91C_REG *) 0xFFFBC038) // (EMACB) Pause Time Register
  6405. #define AT91C_EMACB_CSE (AT91C_CAST(AT91C_REG *) 0xFFFBC068) // (EMACB) Carrier Sense Error Register
  6406. #define AT91C_EMACB_ECOL (AT91C_CAST(AT91C_REG *) 0xFFFBC060) // (EMACB) Excessive Collision Register
  6407. #define AT91C_EMACB_STE (AT91C_CAST(AT91C_REG *) 0xFFFBC084) // (EMACB) SQE Test Error Register
  6408. #define AT91C_EMACB_MCF (AT91C_CAST(AT91C_REG *) 0xFFFBC048) // (EMACB) Multiple Collision Frame Register
  6409. #define AT91C_EMACB_IER (AT91C_CAST(AT91C_REG *) 0xFFFBC028) // (EMACB) Interrupt Enable Register
  6410. #define AT91C_EMACB_ELE (AT91C_CAST(AT91C_REG *) 0xFFFBC078) // (EMACB) Excessive Length Errors Register
  6411. #define AT91C_EMACB_USRIO (AT91C_CAST(AT91C_REG *) 0xFFFBC0C0) // (EMACB) USER Input/Output Register
  6412. #define AT91C_EMACB_PFR (AT91C_CAST(AT91C_REG *) 0xFFFBC03C) // (EMACB) Pause Frames received Register
  6413. #define AT91C_EMACB_FCSE (AT91C_CAST(AT91C_REG *) 0xFFFBC050) // (EMACB) Frame Check Sequence Error Register
  6414. #define AT91C_EMACB_SA1L (AT91C_CAST(AT91C_REG *) 0xFFFBC098) // (EMACB) Specific Address 1 Bottom, First 4 bytes
  6415. #define AT91C_EMACB_NCR (AT91C_CAST(AT91C_REG *) 0xFFFBC000) // (EMACB) Network Control Register
  6416. #define AT91C_EMACB_HRT (AT91C_CAST(AT91C_REG *) 0xFFFBC094) // (EMACB) Hash Address Top[63:32]
  6417. #define AT91C_EMACB_NCFGR (AT91C_CAST(AT91C_REG *) 0xFFFBC004) // (EMACB) Network Configuration Register
  6418. #define AT91C_EMACB_SCF (AT91C_CAST(AT91C_REG *) 0xFFFBC044) // (EMACB) Single Collision Frame Register
  6419. #define AT91C_EMACB_LCOL (AT91C_CAST(AT91C_REG *) 0xFFFBC05C) // (EMACB) Late Collision Register
  6420. #define AT91C_EMACB_SA3H (AT91C_CAST(AT91C_REG *) 0xFFFBC0AC) // (EMACB) Specific Address 3 Top, Last 2 bytes
  6421. #define AT91C_EMACB_HRB (AT91C_CAST(AT91C_REG *) 0xFFFBC090) // (EMACB) Hash Address Bottom[31:0]
  6422. #define AT91C_EMACB_ISR (AT91C_CAST(AT91C_REG *) 0xFFFBC024) // (EMACB) Interrupt Status Register
  6423. #define AT91C_EMACB_IMR (AT91C_CAST(AT91C_REG *) 0xFFFBC030) // (EMACB) Interrupt Mask Register
  6424. #define AT91C_EMACB_WOL (AT91C_CAST(AT91C_REG *) 0xFFFBC0C4) // (EMACB) Wake On LAN Register
  6425. #define AT91C_EMACB_USF (AT91C_CAST(AT91C_REG *) 0xFFFBC080) // (EMACB) Undersize Frames Register
  6426. #define AT91C_EMACB_TSR (AT91C_CAST(AT91C_REG *) 0xFFFBC014) // (EMACB) Transmit Status Register
  6427. #define AT91C_EMACB_FRO (AT91C_CAST(AT91C_REG *) 0xFFFBC04C) // (EMACB) Frames Received OK Register
  6428. #define AT91C_EMACB_IDR (AT91C_CAST(AT91C_REG *) 0xFFFBC02C) // (EMACB) Interrupt Disable Register
  6429. #define AT91C_EMACB_SA1H (AT91C_CAST(AT91C_REG *) 0xFFFBC09C) // (EMACB) Specific Address 1 Top, Last 2 bytes
  6430. #define AT91C_EMACB_RLE (AT91C_CAST(AT91C_REG *) 0xFFFBC088) // (EMACB) Receive Length Field Mismatch Register
  6431. #define AT91C_EMACB_TUND (AT91C_CAST(AT91C_REG *) 0xFFFBC064) // (EMACB) Transmit Underrun Error Register
  6432. #define AT91C_EMACB_RSR (AT91C_CAST(AT91C_REG *) 0xFFFBC020) // (EMACB) Receive Status Register
  6433. #define AT91C_EMACB_SA2L (AT91C_CAST(AT91C_REG *) 0xFFFBC0A0) // (EMACB) Specific Address 2 Bottom, First 4 bytes
  6434. #define AT91C_EMACB_FTO (AT91C_CAST(AT91C_REG *) 0xFFFBC040) // (EMACB) Frames Transmitted OK Register
  6435. #define AT91C_EMACB_RSE (AT91C_CAST(AT91C_REG *) 0xFFFBC074) // (EMACB) Receive Symbol Errors Register
  6436. #define AT91C_EMACB_NSR (AT91C_CAST(AT91C_REG *) 0xFFFBC008) // (EMACB) Network Status Register
  6437. #define AT91C_EMACB_RBQP (AT91C_CAST(AT91C_REG *) 0xFFFBC018) // (EMACB) Receive Buffer Queue Pointer
  6438. #define AT91C_EMACB_REV (AT91C_CAST(AT91C_REG *) 0xFFFBC0FC) // (EMACB) Revision Register
  6439. // ========== Register definition for ISI peripheral ==========
  6440. #define AT91C_ISI_DMACHDR (AT91C_CAST(AT91C_REG *) 0xFFFB403C) // (ISI) DMA Channel Disable Register
  6441. #define AT91C_ISI_IMR (AT91C_CAST(AT91C_REG *) 0xFFFB4034) // (ISI) Interrupt Mask Register
  6442. #define AT91C_ISI_R2YSET1 (AT91C_CAST(AT91C_REG *) 0xFFFB401C) // (ISI) Color Space Conversion RGB to YCrCb Register
  6443. #define AT91C_ISI_PDECF (AT91C_CAST(AT91C_REG *) 0xFFFB400C) // (ISI) Preview Decimation Factor Register
  6444. #define AT91C_ISI_CFG2 (AT91C_CAST(AT91C_REG *) 0xFFFB4004) // (ISI) Configuration Register 2
  6445. #define AT91C_ISI_DMACCTRL (AT91C_CAST(AT91C_REG *) 0xFFFB4054) // (ISI) DMA Codec Control Register
  6446. #define AT91C_ISI_CTRL (AT91C_CAST(AT91C_REG *) 0xFFFB4024) // (ISI) Control Register
  6447. #define AT91C_ISI_Y2RSET0 (AT91C_CAST(AT91C_REG *) 0xFFFB4010) // (ISI) Color Space Conversion YCrCb to RGB Register
  6448. #define AT91C_ISI_WPSR (AT91C_CAST(AT91C_REG *) 0xFFFB40E8) // (ISI) Write Protection Status Register
  6449. #define AT91C_ISI_DMACHER (AT91C_CAST(AT91C_REG *) 0xFFFB4038) // (ISI) DMA Channel Enable Register
  6450. #define AT91C_ISI_DMACHSR (AT91C_CAST(AT91C_REG *) 0xFFFB4040) // (ISI) DMA Channel Status Register
  6451. #define AT91C_ISI_IDR (AT91C_CAST(AT91C_REG *) 0xFFFB4030) // (ISI) Interrupt Disable Register
  6452. #define AT91C_ISI_VER (AT91C_CAST(AT91C_REG *) 0xFFFB40FC) // (ISI) Version Register
  6453. #define AT91C_ISI_Y2RSET1 (AT91C_CAST(AT91C_REG *) 0xFFFB4014) // (ISI) Color Space Conversion YCrCb to RGB Register
  6454. #define AT91C_ISI_R2YSET2 (AT91C_CAST(AT91C_REG *) 0xFFFB4020) // (ISI) Color Space Conversion RGB to YCrCb Register
  6455. #define AT91C_ISI_SR (AT91C_CAST(AT91C_REG *) 0xFFFB4028) // (ISI) Status Register
  6456. #define AT91C_ISI_DMACDSCR (AT91C_CAST(AT91C_REG *) 0xFFFB4058) // (ISI) DMA Codec Descriptor Address Register
  6457. #define AT91C_ISI_IER (AT91C_CAST(AT91C_REG *) 0xFFFB402C) // (ISI) Interrupt Enable Register
  6458. #define AT91C_ISI_WPCR (AT91C_CAST(AT91C_REG *) 0xFFFB40E4) // (ISI) Write Protection Control Register
  6459. #define AT91C_ISI_DMACADDR (AT91C_CAST(AT91C_REG *) 0xFFFB4050) // (ISI) DMA Codec Base Address Register
  6460. #define AT91C_ISI_CFG1 (AT91C_CAST(AT91C_REG *) 0xFFFB4000) // (ISI) Configuration Register 1
  6461. #define AT91C_ISI_R2YSET0 (AT91C_CAST(AT91C_REG *) 0xFFFB4018) // (ISI) Color Space Conversion RGB to YCrCb Register
  6462. #define AT91C_ISI_PSIZE (AT91C_CAST(AT91C_REG *) 0xFFFB4008) // (ISI) Preview Size Register
  6463. #define AT91C_ISI_DMAPDSCR (AT91C_CAST(AT91C_REG *) 0xFFFB404C) // (ISI) DMA Preview Descriptor Address Register
  6464. #define AT91C_ISI_DMAPADDR (AT91C_CAST(AT91C_REG *) 0xFFFB4044) // (ISI) DMA Preview Base Address Register
  6465. #define AT91C_ISI_DMAPCTRL (AT91C_CAST(AT91C_REG *) 0xFFFB4048) // (ISI) DMA Preview Control Register
  6466. // ========== Register definition for UHPHS_OHCI peripheral ==========
  6467. #define AT91C_OHCI_HcRhPortStatus (AT91C_CAST(AT91C_REG *) 0x00700054) // (UHPHS_OHCI) Root Hub Port Status Register
  6468. #define AT91C_OHCI_HcFmRemaining (AT91C_CAST(AT91C_REG *) 0x00700038) // (UHPHS_OHCI) Bit time remaining in the current Frame
  6469. #define AT91C_OHCI_HcInterruptEnable (AT91C_CAST(AT91C_REG *) 0x00700010) // (UHPHS_OHCI) Interrupt Enable Register
  6470. #define AT91C_OHCI_HcControl (AT91C_CAST(AT91C_REG *) 0x00700004) // (UHPHS_OHCI) Operating modes for the Host Controller
  6471. #define AT91C_OHCI_HcPeriodicStart (AT91C_CAST(AT91C_REG *) 0x00700040) // (UHPHS_OHCI) Periodic Start
  6472. #define AT91C_OHCI_HcInterruptStatus (AT91C_CAST(AT91C_REG *) 0x0070000C) // (UHPHS_OHCI) Interrupt Status Register
  6473. #define AT91C_OHCI_HcRhDescriptorB (AT91C_CAST(AT91C_REG *) 0x0070004C) // (UHPHS_OHCI) Root Hub characteristics B
  6474. #define AT91C_OHCI_HcInterruptDisable (AT91C_CAST(AT91C_REG *) 0x00700014) // (UHPHS_OHCI) Interrupt Disable Register
  6475. #define AT91C_OHCI_HcPeriodCurrentED (AT91C_CAST(AT91C_REG *) 0x0070001C) // (UHPHS_OHCI) Current Isochronous or Interrupt Endpoint Descriptor
  6476. #define AT91C_OHCI_HcRhDescriptorA (AT91C_CAST(AT91C_REG *) 0x00700048) // (UHPHS_OHCI) Root Hub characteristics A
  6477. #define AT91C_OHCI_HcRhStatus (AT91C_CAST(AT91C_REG *) 0x00700050) // (UHPHS_OHCI) Root Hub Status register
  6478. #define AT91C_OHCI_HcBulkCurrentED (AT91C_CAST(AT91C_REG *) 0x0070002C) // (UHPHS_OHCI) Current endpoint of the Bulk list
  6479. #define AT91C_OHCI_HcControlHeadED (AT91C_CAST(AT91C_REG *) 0x00700020) // (UHPHS_OHCI) First Endpoint Descriptor of the Control list
  6480. #define AT91C_OHCI_HcLSThreshold (AT91C_CAST(AT91C_REG *) 0x00700044) // (UHPHS_OHCI) LS Threshold
  6481. #define AT91C_OHCI_HcRevision (AT91C_CAST(AT91C_REG *) 0x00700000) // (UHPHS_OHCI) Revision
  6482. #define AT91C_OHCI_HcBulkDoneHead (AT91C_CAST(AT91C_REG *) 0x00700030) // (UHPHS_OHCI) Last completed transfer descriptor
  6483. #define AT91C_OHCI_HcFmNumber (AT91C_CAST(AT91C_REG *) 0x0070003C) // (UHPHS_OHCI) Frame number
  6484. #define AT91C_OHCI_HcFmInterval (AT91C_CAST(AT91C_REG *) 0x00700034) // (UHPHS_OHCI) Bit time between 2 consecutive SOFs
  6485. #define AT91C_OHCI_HcBulkHeadED (AT91C_CAST(AT91C_REG *) 0x00700028) // (UHPHS_OHCI) First endpoint register of the Bulk list
  6486. #define AT91C_OHCI_HcHCCA (AT91C_CAST(AT91C_REG *) 0x00700018) // (UHPHS_OHCI) Pointer to the Host Controller Communication Area
  6487. #define AT91C_OHCI_HcCommandStatus (AT91C_CAST(AT91C_REG *) 0x00700008) // (UHPHS_OHCI) Command & status Register
  6488. #define AT91C_OHCI_HcControlCurrentED (AT91C_CAST(AT91C_REG *) 0x00700024) // (UHPHS_OHCI) Endpoint Control and Status Register
  6489. // ========== Register definition for UHPHS_EHCI peripheral ==========
  6490. #define AT91C_EHCI_USBSTS (AT91C_CAST(AT91C_REG *) 0x00800014) // (UHPHS_EHCI)
  6491. #define AT91C_EHCI_INSNREG03 (AT91C_CAST(AT91C_REG *) 0x0080009C) // (UHPHS_EHCI)
  6492. #define AT91C_EHCI_INSNREG00 (AT91C_CAST(AT91C_REG *) 0x00800090) // (UHPHS_EHCI)
  6493. #define AT91C_EHCI_HCSPPORTROUTE (AT91C_CAST(AT91C_REG *) 0x0080000C) // (UHPHS_EHCI)
  6494. #define AT91C_EHCI_FRINDEX (AT91C_CAST(AT91C_REG *) 0x0080001C) // (UHPHS_EHCI)
  6495. #define AT91C_EHCI_CONFIGFLAG (AT91C_CAST(AT91C_REG *) 0x00800050) // (UHPHS_EHCI)
  6496. #define AT91C_EHCI_HCCPARAMS (AT91C_CAST(AT91C_REG *) 0x00800008) // (UHPHS_EHCI)
  6497. #define AT91C_EHCI_USBINTR (AT91C_CAST(AT91C_REG *) 0x00800018) // (UHPHS_EHCI)
  6498. #define AT91C_EHCI_PORTSC (AT91C_CAST(AT91C_REG *) 0x00800054) // (UHPHS_EHCI)
  6499. #define AT91C_EHCI_CTRLDSSEGMENT (AT91C_CAST(AT91C_REG *) 0x00800020) // (UHPHS_EHCI)
  6500. #define AT91C_EHCI_VERSION (AT91C_CAST(AT91C_REG *) 0x00800000) // (UHPHS_EHCI)
  6501. #define AT91C_EHCI_USBCMD (AT91C_CAST(AT91C_REG *) 0x00800010) // (UHPHS_EHCI)
  6502. #define AT91C_EHCI_INSNREG04 (AT91C_CAST(AT91C_REG *) 0x008000A0) // (UHPHS_EHCI)
  6503. #define AT91C_EHCI_PERIODICLISTBASE (AT91C_CAST(AT91C_REG *) 0x00800024) // (UHPHS_EHCI)
  6504. #define AT91C_EHCI_INSNREG01 (AT91C_CAST(AT91C_REG *) 0x00800094) // (UHPHS_EHCI)
  6505. #define AT91C_EHCI_HCSPARAMS (AT91C_CAST(AT91C_REG *) 0x00800004) // (UHPHS_EHCI)
  6506. #define AT91C_EHCI_INSNREG05 (AT91C_CAST(AT91C_REG *) 0x008000A4) // (UHPHS_EHCI)
  6507. #define AT91C_EHCI_ASYNCLISTADDR (AT91C_CAST(AT91C_REG *) 0x00800028) // (UHPHS_EHCI)
  6508. #define AT91C_EHCI_INSNREG02 (AT91C_CAST(AT91C_REG *) 0x00800098) // (UHPHS_EHCI)
  6509. // ========== Register definition for TRNG peripheral ==========
  6510. #define AT91C_TRNG_IDR (AT91C_CAST(AT91C_REG *) 0xFFFCC014) // (TRNG) Interrupt Disable Register
  6511. #define AT91C_TRNG_IER (AT91C_CAST(AT91C_REG *) 0xFFFCC010) // (TRNG) Interrupt Enable Register
  6512. #define AT91C_TRNG_VERSION (AT91C_CAST(AT91C_REG *) 0xFFFCC0FC) // (TRNG) TRNG Version Register
  6513. #define AT91C_TRNG_ISR (AT91C_CAST(AT91C_REG *) 0xFFFCC01C) // (TRNG) Interrupt Status Register
  6514. #define AT91C_TRNG_CR (AT91C_CAST(AT91C_REG *) 0xFFFCC000) // (TRNG) Control Register
  6515. #define AT91C_TRNG_ODATA (AT91C_CAST(AT91C_REG *) 0xFFFCC050) // (TRNG) Output Data Register
  6516. #define AT91C_TRNG_IMR (AT91C_CAST(AT91C_REG *) 0xFFFCC018) // (TRNG) Interrupt Mask Register
  6517. // *****************************************************************************
  6518. // PIO DEFINITIONS FOR AT91SAM9G45
  6519. // *****************************************************************************
  6520. #define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0
  6521. #define AT91C_PA0_MCI0_CK (AT91C_PIO_PA0) //
  6522. #define AT91C_PA0_TCLK3 (AT91C_PIO_PA0) //
  6523. #define AT91C_PIO_PA1 (1 << 1) // Pin Controlled by PA1
  6524. #define AT91C_PA1_MCI0_CDA (AT91C_PIO_PA1) //
  6525. #define AT91C_PA1_TIOA3 (AT91C_PIO_PA1) //
  6526. #define AT91C_PIO_PA10 (1 << 10) // Pin Controlled by PA10
  6527. #define AT91C_PA10_ETX0 (AT91C_PIO_PA10) // Ethernet MAC Transmit Data 0
  6528. #define AT91C_PIO_PA11 (1 << 11) // Pin Controlled by PA11
  6529. #define AT91C_PA11_ETX1 (AT91C_PIO_PA11) // Ethernet MAC Transmit Data 1
  6530. #define AT91C_PIO_PA12 (1 << 12) // Pin Controlled by PA12
  6531. #define AT91C_PA12_ERX0 (AT91C_PIO_PA12) // Ethernet MAC Receive Data 0
  6532. #define AT91C_PIO_PA13 (1 << 13) // Pin Controlled by PA13
  6533. #define AT91C_PA13_ERX1 (AT91C_PIO_PA13) // Ethernet MAC Receive Data 1
  6534. #define AT91C_PIO_PA14 (1 << 14) // Pin Controlled by PA14
  6535. #define AT91C_PA14_ETXEN (AT91C_PIO_PA14) // Ethernet MAC Transmit Enable
  6536. #define AT91C_PIO_PA15 (1 << 15) // Pin Controlled by PA15
  6537. #define AT91C_PA15_ERXDV (AT91C_PIO_PA15) // Ethernet MAC Receive Data Valid
  6538. #define AT91C_PIO_PA16 (1 << 16) // Pin Controlled by PA16
  6539. #define AT91C_PA16_ERXER (AT91C_PIO_PA16) // Ethernet MAC Receive Error
  6540. #define AT91C_PIO_PA17 (1 << 17) // Pin Controlled by PA17
  6541. #define AT91C_PA17_ETXCK_EREFCK (AT91C_PIO_PA17) // Ethernet MAC Transmit Clock/Reference Clock
  6542. #define AT91C_PIO_PA18 (1 << 18) // Pin Controlled by PA18
  6543. #define AT91C_PA18_EMDC (AT91C_PIO_PA18) // Ethernet MAC Management Data Clock
  6544. #define AT91C_PIO_PA19 (1 << 19) // Pin Controlled by PA19
  6545. #define AT91C_PA19_EMDIO (AT91C_PIO_PA19) // Ethernet MAC Management Data Input/Output
  6546. #define AT91C_PIO_PA2 (1 << 2) // Pin Controlled by PA2
  6547. #define AT91C_PA2_MCI0_DA0 (AT91C_PIO_PA2) //
  6548. #define AT91C_PA2_TIOB3 (AT91C_PIO_PA2) //
  6549. #define AT91C_PIO_PA20 (1 << 20) // Pin Controlled by PA20
  6550. #define AT91C_PA20_TWD0 (AT91C_PIO_PA20) // TWI Two-wire Serial Data
  6551. #define AT91C_PIO_PA21 (1 << 21) // Pin Controlled by PA21
  6552. #define AT91C_PA21_TWCK0 (AT91C_PIO_PA21) // TWI Two-wire Serial Clock
  6553. #define AT91C_PIO_PA22 (1 << 22) // Pin Controlled by PA22
  6554. #define AT91C_PA22_MCI1_CDA (AT91C_PIO_PA22) //
  6555. #define AT91C_PA22_SCK3 (AT91C_PIO_PA22) //
  6556. #define AT91C_PIO_PA23 (1 << 23) // Pin Controlled by PA23
  6557. #define AT91C_PA23_MCI1_DA0 (AT91C_PIO_PA23) //
  6558. #define AT91C_PA23_RTS3 (AT91C_PIO_PA23) //
  6559. #define AT91C_PIO_PA24 (1 << 24) // Pin Controlled by PA24
  6560. #define AT91C_PA24_MCI1_DA1 (AT91C_PIO_PA24) //
  6561. #define AT91C_PA24_CTS3 (AT91C_PIO_PA24) //
  6562. #define AT91C_PIO_PA25 (1 << 25) // Pin Controlled by PA25
  6563. #define AT91C_PA25_MCI1_DA2 (AT91C_PIO_PA25) //
  6564. #define AT91C_PA25_PWM3 (AT91C_PIO_PA25) //
  6565. #define AT91C_PIO_PA26 (1 << 26) // Pin Controlled by PA26
  6566. #define AT91C_PA26_MCI1_DA3 (AT91C_PIO_PA26) //
  6567. #define AT91C_PA26_TIOB2 (AT91C_PIO_PA26) //
  6568. #define AT91C_PIO_PA27 (1 << 27) // Pin Controlled by PA27
  6569. #define AT91C_PA27_MCI1_DA4 (AT91C_PIO_PA27) //
  6570. #define AT91C_PA27_ETXER (AT91C_PIO_PA27) // Ethernet MAC Transmikt Coding Error
  6571. #define AT91C_PIO_PA28 (1 << 28) // Pin Controlled by PA28
  6572. #define AT91C_PA28_MCI1_DA5 (AT91C_PIO_PA28) //
  6573. #define AT91C_PA28_ERXCK (AT91C_PIO_PA28) // Ethernet MAC Receive Clock
  6574. #define AT91C_PIO_PA29 (1 << 29) // Pin Controlled by PA29
  6575. #define AT91C_PA29_MCI1_DA6 (AT91C_PIO_PA29) //
  6576. #define AT91C_PA29_ECRS (AT91C_PIO_PA29) // Ethernet MAC Carrier Sense/Carrier Sense and Data Valid
  6577. #define AT91C_PIO_PA3 (1 << 3) // Pin Controlled by PA3
  6578. #define AT91C_PA3_MCI0_DA1 (AT91C_PIO_PA3) //
  6579. #define AT91C_PA3_TCLK4 (AT91C_PIO_PA3) //
  6580. #define AT91C_PIO_PA30 (1 << 30) // Pin Controlled by PA30
  6581. #define AT91C_PA30_MCI1_DA7 (AT91C_PIO_PA30) //
  6582. #define AT91C_PA30_ECOL (AT91C_PIO_PA30) // Ethernet MAC Collision Detected
  6583. #define AT91C_PIO_PA31 (1 << 31) // Pin Controlled by PA31
  6584. #define AT91C_PA31_MCI1_CK (AT91C_PIO_PA31) //
  6585. #define AT91C_PA31_PCK0 (AT91C_PIO_PA31) //
  6586. #define AT91C_PIO_PA4 (1 << 4) // Pin Controlled by PA4
  6587. #define AT91C_PA4_MCI0_DA2 (AT91C_PIO_PA4) //
  6588. #define AT91C_PA4_TIOA4 (AT91C_PIO_PA4) //
  6589. #define AT91C_PIO_PA5 (1 << 5) // Pin Controlled by PA5
  6590. #define AT91C_PA5_MCI0_DA3 (AT91C_PIO_PA5) //
  6591. #define AT91C_PA5_TIOB4 (AT91C_PIO_PA5) //
  6592. #define AT91C_PIO_PA6 (1 << 6) // Pin Controlled by PA6
  6593. #define AT91C_PA6_MCI0_DA4 (AT91C_PIO_PA6) //
  6594. #define AT91C_PA6_ETX2 (AT91C_PIO_PA6) // Ethernet MAC Transmit Data 2
  6595. #define AT91C_PIO_PA7 (1 << 7) // Pin Controlled by PA7
  6596. #define AT91C_PA7_MCI0_DA5 (AT91C_PIO_PA7) //
  6597. #define AT91C_PA7_ETX3 (AT91C_PIO_PA7) // Ethernet MAC Transmit Data 3
  6598. #define AT91C_PIO_PA8 (1 << 8) // Pin Controlled by PA8
  6599. #define AT91C_PA8_MCI0_DA6 (AT91C_PIO_PA8) //
  6600. #define AT91C_PA8_ERX2 (AT91C_PIO_PA8) // Ethernet MAC Receive Data 2
  6601. #define AT91C_PIO_PA9 (1 << 9) // Pin Controlled by PA9
  6602. #define AT91C_PA9_MCI0_DA7 (AT91C_PIO_PA9) //
  6603. #define AT91C_PA9_ERX3 (AT91C_PIO_PA9) // Ethernet MAC Receive Data 3
  6604. #define AT91C_PIO_PB0 (1 << 0) // Pin Controlled by PB0
  6605. #define AT91C_PB0_SPI0_MISO (AT91C_PIO_PB0) // SPI 0 Master In Slave
  6606. #define AT91C_PIO_PB1 (1 << 1) // Pin Controlled by PB1
  6607. #define AT91C_PB1_SPI0_MOSI (AT91C_PIO_PB1) // SPI 0 Master Out Slave
  6608. #define AT91C_PIO_PB10 (1 << 10) // Pin Controlled by PB10
  6609. #define AT91C_PB10_TWD1 (AT91C_PIO_PB10) //
  6610. #define AT91C_PB10_ISI_D10 (AT91C_PIO_PB10) //
  6611. #define AT91C_PIO_PB11 (1 << 11) // Pin Controlled by PB11
  6612. #define AT91C_PB11_TWCK1 (AT91C_PIO_PB11) //
  6613. #define AT91C_PB11_ISI_D11 (AT91C_PIO_PB11) //
  6614. #define AT91C_PIO_PB12 (1 << 12) // Pin Controlled by PB12
  6615. #define AT91C_PB12_DRXD (AT91C_PIO_PB12) //
  6616. #define AT91C_PIO_PB13 (1 << 13) // Pin Controlled by PB13
  6617. #define AT91C_PB13_DTXD (AT91C_PIO_PB13) //
  6618. #define AT91C_PIO_PB14 (1 << 14) // Pin Controlled by PB14
  6619. #define AT91C_PB14_SPI1_MISO (AT91C_PIO_PB14) //
  6620. #define AT91C_PIO_PB15 (1 << 15) // Pin Controlled by PB15
  6621. #define AT91C_PB15_SPI1_MOSI (AT91C_PIO_PB15) //
  6622. #define AT91C_PB15_CTS0 (AT91C_PIO_PB15) //
  6623. #define AT91C_PIO_PB16 (1 << 16) // Pin Controlled by PB16
  6624. #define AT91C_PB16_SPI1_SPCK (AT91C_PIO_PB16) //
  6625. #define AT91C_PB16_SCK0 (AT91C_PIO_PB16) //
  6626. #define AT91C_PIO_PB17 (1 << 17) // Pin Controlled by PB17
  6627. #define AT91C_PB17_SPI1_NPCS0 (AT91C_PIO_PB17) //
  6628. #define AT91C_PB17_RTS0 (AT91C_PIO_PB17) //
  6629. #define AT91C_PIO_PB18 (1 << 18) // Pin Controlled by PB18
  6630. #define AT91C_PB18_RXD0 (AT91C_PIO_PB18) //
  6631. #define AT91C_PB18_SPI0_NPCS1 (AT91C_PIO_PB18) //
  6632. #define AT91C_PIO_PB19 (1 << 19) // Pin Controlled by PB19
  6633. #define AT91C_PB19_TXD0 (AT91C_PIO_PB19) //
  6634. #define AT91C_PB19_SPI0_NPCS2 (AT91C_PIO_PB19) //
  6635. #define AT91C_PIO_PB2 (1 << 2) // Pin Controlled by PB2
  6636. #define AT91C_PB2_SPI0_SPCK (AT91C_PIO_PB2) // SPI 0 Serial Clock
  6637. #define AT91C_PIO_PB20 (1 << 20) // Pin Controlled by PB20
  6638. #define AT91C_PB20_ISI_D0 (AT91C_PIO_PB20) //
  6639. #define AT91C_PIO_PB21 (1 << 21) // Pin Controlled by PB21
  6640. #define AT91C_PB21_ISI_D1 (AT91C_PIO_PB21) //
  6641. #define AT91C_PIO_PB22 (1 << 22) // Pin Controlled by PB22
  6642. #define AT91C_PB22_ISI_D2 (AT91C_PIO_PB22) //
  6643. #define AT91C_PIO_PB23 (1 << 23) // Pin Controlled by PB23
  6644. #define AT91C_PB23_ISI_D3 (AT91C_PIO_PB23) //
  6645. #define AT91C_PIO_PB24 (1 << 24) // Pin Controlled by PB24
  6646. #define AT91C_PB24_ISI_D4 (AT91C_PIO_PB24) //
  6647. #define AT91C_PIO_PB25 (1 << 25) // Pin Controlled by PB25
  6648. #define AT91C_PB25_ISI_D5 (AT91C_PIO_PB25) //
  6649. #define AT91C_PIO_PB26 (1 << 26) // Pin Controlled by PB26
  6650. #define AT91C_PB26_ISI_D6 (AT91C_PIO_PB26) //
  6651. #define AT91C_PIO_PB27 (1 << 27) // Pin Controlled by PB27
  6652. #define AT91C_PB27_ISI_D7 (AT91C_PIO_PB27) //
  6653. #define AT91C_PIO_PB28 (1 << 28) // Pin Controlled by PB28
  6654. #define AT91C_PB28_ISI_PCK (AT91C_PIO_PB28) //
  6655. #define AT91C_PIO_PB29 (1 << 29) // Pin Controlled by PB29
  6656. #define AT91C_PB29_ISI_VSYNC (AT91C_PIO_PB29) //
  6657. #define AT91C_PIO_PB3 (1 << 3) // Pin Controlled by PB3
  6658. #define AT91C_PB3_SPI0_NPCS0 (AT91C_PIO_PB3) // SPI 0 Peripheral Chip Select 0
  6659. #define AT91C_PIO_PB30 (1 << 30) // Pin Controlled by PB30
  6660. #define AT91C_PB30_ISI_HSYNC (AT91C_PIO_PB30) //
  6661. #define AT91C_PIO_PB31 (1 << 31) // Pin Controlled by PB31
  6662. #define AT91C_PB31_ (AT91C_PIO_PB31) //
  6663. #define AT91C_PB31_PCK1 (AT91C_PIO_PB31) //
  6664. #define AT91C_PIO_PB4 (1 << 4) // Pin Controlled by PB4
  6665. #define AT91C_PB4_TXD1 (AT91C_PIO_PB4) // USART 1 Transmit Data
  6666. #define AT91C_PIO_PB5 (1 << 5) // Pin Controlled by PB5
  6667. #define AT91C_PB5_RXD1 (AT91C_PIO_PB5) // USART 1 Receive Data
  6668. #define AT91C_PIO_PB6 (1 << 6) // Pin Controlled by PB6
  6669. #define AT91C_PB6_TXD2 (AT91C_PIO_PB6) // USART 2 Transmit Data
  6670. #define AT91C_PIO_PB7 (1 << 7) // Pin Controlled by PB7
  6671. #define AT91C_PB7_RXD2 (AT91C_PIO_PB7) // USART 2 Receive Data
  6672. #define AT91C_PIO_PB8 (1 << 8) // Pin Controlled by PB8
  6673. #define AT91C_PB8_TXD3 (AT91C_PIO_PB8) // USART 3 Transmit Data
  6674. #define AT91C_PB8_ISI_D8 (AT91C_PIO_PB8) //
  6675. #define AT91C_PIO_PB9 (1 << 9) // Pin Controlled by PB9
  6676. #define AT91C_PB9_RXD3 (AT91C_PIO_PB9) // USART 3 Receive Data
  6677. #define AT91C_PB9_ISI_D9 (AT91C_PIO_PB9) //
  6678. #define AT91C_PIO_PC0 (1 << 0) // Pin Controlled by PC0
  6679. #define AT91C_PC0_DQM2 (AT91C_PIO_PC0) // DQM2
  6680. #define AT91C_PIO_PC1 (1 << 1) // Pin Controlled by PC1
  6681. #define AT91C_PC1_DQM3 (AT91C_PIO_PC1) // DQM3
  6682. #define AT91C_PIO_PC10 (1 << 10) // Pin Controlled by PC10
  6683. #define AT91C_PC10_NCS4_CFCS0 (AT91C_PIO_PC10) //
  6684. #define AT91C_PC10_TCLK2 (AT91C_PIO_PC10) //
  6685. #define AT91C_PIO_PC11 (1 << 11) // Pin Controlled by PC11
  6686. #define AT91C_PC11_NCS5_CFCS1 (AT91C_PIO_PC11) //
  6687. #define AT91C_PC11_CTS2 (AT91C_PIO_PC11) //
  6688. #define AT91C_PIO_PC12 (1 << 12) // Pin Controlled by PC12
  6689. #define AT91C_PC12_A25_CFRNW (AT91C_PIO_PC12) //
  6690. #define AT91C_PIO_PC13 (1 << 13) // Pin Controlled by PC13
  6691. #define AT91C_PC13_NCS2 (AT91C_PIO_PC13) //
  6692. #define AT91C_PIO_PC14 (1 << 14) // Pin Controlled by PC14
  6693. #define AT91C_PC14_NCS3_NANDCS (AT91C_PIO_PC14) //
  6694. #define AT91C_PIO_PC15 (1 << 15) // Pin Controlled by PC15
  6695. #define AT91C_PC15_NWAIT (AT91C_PIO_PC15) //
  6696. #define AT91C_PIO_PC16 (1 << 16) // Pin Controlled by PC16
  6697. #define AT91C_PC16_D16 (AT91C_PIO_PC16) //
  6698. #define AT91C_PIO_PC17 (1 << 17) // Pin Controlled by PC17
  6699. #define AT91C_PC17_D17 (AT91C_PIO_PC17) //
  6700. #define AT91C_PIO_PC18 (1 << 18) // Pin Controlled by PC18
  6701. #define AT91C_PC18_D18 (AT91C_PIO_PC18) //
  6702. #define AT91C_PIO_PC19 (1 << 19) // Pin Controlled by PC19
  6703. #define AT91C_PC19_D19 (AT91C_PIO_PC19) //
  6704. #define AT91C_PIO_PC2 (1 << 2) // Pin Controlled by PC2
  6705. #define AT91C_PC2_A19 (AT91C_PIO_PC2) //
  6706. #define AT91C_PIO_PC20 (1 << 20) // Pin Controlled by PC20
  6707. #define AT91C_PC20_D20 (AT91C_PIO_PC20) //
  6708. #define AT91C_PIO_PC21 (1 << 21) // Pin Controlled by PC21
  6709. #define AT91C_PC21_D21 (AT91C_PIO_PC21) //
  6710. #define AT91C_PIO_PC22 (1 << 22) // Pin Controlled by PC22
  6711. #define AT91C_PC22_D22 (AT91C_PIO_PC22) //
  6712. #define AT91C_PIO_PC23 (1 << 23) // Pin Controlled by PC23
  6713. #define AT91C_PC23_D23 (AT91C_PIO_PC23) //
  6714. #define AT91C_PIO_PC24 (1 << 24) // Pin Controlled by PC24
  6715. #define AT91C_PC24_D24 (AT91C_PIO_PC24) //
  6716. #define AT91C_PIO_PC25 (1 << 25) // Pin Controlled by PC25
  6717. #define AT91C_PC25_D25 (AT91C_PIO_PC25) //
  6718. #define AT91C_PIO_PC26 (1 << 26) // Pin Controlled by PC26
  6719. #define AT91C_PC26_D26 (AT91C_PIO_PC26) //
  6720. #define AT91C_PIO_PC27 (1 << 27) // Pin Controlled by PC27
  6721. #define AT91C_PC27_D27 (AT91C_PIO_PC27) //
  6722. #define AT91C_PIO_PC28 (1 << 28) // Pin Controlled by PC28
  6723. #define AT91C_PC28_D28 (AT91C_PIO_PC28) //
  6724. #define AT91C_PIO_PC29 (1 << 29) // Pin Controlled by PC29
  6725. #define AT91C_PC29_D29 (AT91C_PIO_PC29) //
  6726. #define AT91C_PIO_PC3 (1 << 3) // Pin Controlled by PC3
  6727. #define AT91C_PC3_A20 (AT91C_PIO_PC3) //
  6728. #define AT91C_PIO_PC30 (1 << 30) // Pin Controlled by PC30
  6729. #define AT91C_PC30_D30 (AT91C_PIO_PC30) //
  6730. #define AT91C_PIO_PC31 (1 << 31) // Pin Controlled by PC31
  6731. #define AT91C_PC31_D31 (AT91C_PIO_PC31) //
  6732. #define AT91C_PIO_PC4 (1 << 4) // Pin Controlled by PC4
  6733. #define AT91C_PC4_A21_NANDALE (AT91C_PIO_PC4) //
  6734. #define AT91C_PIO_PC5 (1 << 5) // Pin Controlled by PC5
  6735. #define AT91C_PC5_A22_NANDCLE (AT91C_PIO_PC5) //
  6736. #define AT91C_PIO_PC6 (1 << 6) // Pin Controlled by PC6
  6737. #define AT91C_PC6_A23 (AT91C_PIO_PC6) //
  6738. #define AT91C_PIO_PC7 (1 << 7) // Pin Controlled by PC7
  6739. #define AT91C_PC7_A24 (AT91C_PIO_PC7) //
  6740. #define AT91C_PIO_PC8 (1 << 8) // Pin Controlled by PC8
  6741. #define AT91C_PC8_CFCE1 (AT91C_PIO_PC8) //
  6742. #define AT91C_PIO_PC9 (1 << 9) // Pin Controlled by PC9
  6743. #define AT91C_PC9_CFCE2 (AT91C_PIO_PC9) //
  6744. #define AT91C_PC9_RTS2 (AT91C_PIO_PC9) //
  6745. #define AT91C_PIO_PD0 (1 << 0) // Pin Controlled by PD0
  6746. #define AT91C_PD0_TK0 (AT91C_PIO_PD0) //
  6747. #define AT91C_PD0_PWM3 (AT91C_PIO_PD0) //
  6748. #define AT91C_PIO_PD1 (1 << 1) // Pin Controlled by PD1
  6749. #define AT91C_PD1_TF0 (AT91C_PIO_PD1) //
  6750. #define AT91C_PIO_PD10 (1 << 10) // Pin Controlled by PD10
  6751. #define AT91C_PD10_TD1 (AT91C_PIO_PD10) //
  6752. #define AT91C_PIO_PD11 (1 << 11) // Pin Controlled by PD11
  6753. #define AT91C_PD11_RD1 (AT91C_PIO_PD11) //
  6754. #define AT91C_PIO_PD12 (1 << 12) // Pin Controlled by PD12
  6755. #define AT91C_PD12_TK1 (AT91C_PIO_PD12) //
  6756. #define AT91C_PD12_PCK0 (AT91C_PIO_PD12) //
  6757. #define AT91C_PIO_PD13 (1 << 13) // Pin Controlled by PD13
  6758. #define AT91C_PD13_RK1 (AT91C_PIO_PD13) //
  6759. #define AT91C_PIO_PD14 (1 << 14) // Pin Controlled by PD14
  6760. #define AT91C_PD14_TF1 (AT91C_PIO_PD14) //
  6761. #define AT91C_PIO_PD15 (1 << 15) // Pin Controlled by PD15
  6762. #define AT91C_PD15_RF1 (AT91C_PIO_PD15) //
  6763. #define AT91C_PIO_PD16 (1 << 16) // Pin Controlled by PD16
  6764. #define AT91C_PD16_RTS1 (AT91C_PIO_PD16) //
  6765. #define AT91C_PIO_PD17 (1 << 17) // Pin Controlled by PD17
  6766. #define AT91C_PD17_CTS1 (AT91C_PIO_PD17) //
  6767. #define AT91C_PIO_PD18 (1 << 18) // Pin Controlled by PD18
  6768. #define AT91C_PD18_SPI1_NPCS2 (AT91C_PIO_PD18) //
  6769. #define AT91C_PD18_IRQ (AT91C_PIO_PD18) //
  6770. #define AT91C_PIO_PD19 (1 << 19) // Pin Controlled by PD19
  6771. #define AT91C_PD19_SPI1_NPCS3 (AT91C_PIO_PD19) //
  6772. #define AT91C_PD19_FIQ (AT91C_PIO_PD19) //
  6773. #define AT91C_PIO_PD2 (1 << 2) // Pin Controlled by PD2
  6774. #define AT91C_PD2_TD0 (AT91C_PIO_PD2) //
  6775. #define AT91C_PIO_PD20 (1 << 20) // Pin Controlled by PD20
  6776. #define AT91C_PD20_TIOA0 (AT91C_PIO_PD20) //
  6777. #define AT91C_PIO_PD21 (1 << 21) // Pin Controlled by PD21
  6778. #define AT91C_PD21_TIOA1 (AT91C_PIO_PD21) //
  6779. #define AT91C_PIO_PD22 (1 << 22) // Pin Controlled by PD22
  6780. #define AT91C_PD22_TIOA2 (AT91C_PIO_PD22) //
  6781. #define AT91C_PIO_PD23 (1 << 23) // Pin Controlled by PD23
  6782. #define AT91C_PD23_TCLK0 (AT91C_PIO_PD23) //
  6783. #define AT91C_PIO_PD24 (1 << 24) // Pin Controlled by PD24
  6784. #define AT91C_PD24_SPI0_NPCS1 (AT91C_PIO_PD24) //
  6785. #define AT91C_PD24_PWM0 (AT91C_PIO_PD24) //
  6786. #define AT91C_PIO_PD25 (1 << 25) // Pin Controlled by PD25
  6787. #define AT91C_PD25_SPI0_NPCS2 (AT91C_PIO_PD25) //
  6788. #define AT91C_PD25_PWM1 (AT91C_PIO_PD25) //
  6789. #define AT91C_PIO_PD26 (1 << 26) // Pin Controlled by PD26
  6790. #define AT91C_PD26_PCK0 (AT91C_PIO_PD26) //
  6791. #define AT91C_PD26_PWM2 (AT91C_PIO_PD26) //
  6792. #define AT91C_PIO_PD27 (1 << 27) // Pin Controlled by PD27
  6793. #define AT91C_PD27_PCK1 (AT91C_PIO_PD27) //
  6794. #define AT91C_PD27_SPI0_NPCS3 (AT91C_PIO_PD27) //
  6795. #define AT91C_PIO_PD28 (1 << 28) // Pin Controlled by PD28
  6796. #define AT91C_PD28_TSADTRG (AT91C_PIO_PD28) //
  6797. #define AT91C_PD28_SPI1_NPCS1 (AT91C_PIO_PD28) //
  6798. #define AT91C_PIO_PD29 (1 << 29) // Pin Controlled by PD29
  6799. #define AT91C_PD29_TCLK1 (AT91C_PIO_PD29) //
  6800. #define AT91C_PD29_SCK1 (AT91C_PIO_PD29) //
  6801. #define AT91C_PIO_PD3 (1 << 3) // Pin Controlled by PD3
  6802. #define AT91C_PD3_RD0 (AT91C_PIO_PD3) //
  6803. #define AT91C_PIO_PD30 (1 << 30) // Pin Controlled by PD30
  6804. #define AT91C_PD30_TIOB0 (AT91C_PIO_PD30) //
  6805. #define AT91C_PD30_SCK2 (AT91C_PIO_PD30) //
  6806. #define AT91C_PIO_PD31 (1 << 31) // Pin Controlled by PD31
  6807. #define AT91C_PD31_TIOB1 (AT91C_PIO_PD31) //
  6808. #define AT91C_PD31_PWM1 (AT91C_PIO_PD31) //
  6809. #define AT91C_PIO_PD4 (1 << 4) // Pin Controlled by PD4
  6810. #define AT91C_PD4_RK0 (AT91C_PIO_PD4) //
  6811. #define AT91C_PIO_PD5 (1 << 5) // Pin Controlled by PD5
  6812. #define AT91C_PD5_RF0 (AT91C_PIO_PD5) //
  6813. #define AT91C_PIO_PD6 (1 << 6) // Pin Controlled by PD6
  6814. #define AT91C_PD6_AC97RX (AT91C_PIO_PD6) //
  6815. #define AT91C_PIO_PD7 (1 << 7) // Pin Controlled by PD7
  6816. #define AT91C_PD7_AC97TX (AT91C_PIO_PD7) //
  6817. #define AT91C_PD7_TIOA5 (AT91C_PIO_PD7) //
  6818. #define AT91C_PIO_PD8 (1 << 8) // Pin Controlled by PD8
  6819. #define AT91C_PD8_AC97FS (AT91C_PIO_PD8) //
  6820. #define AT91C_PD8_TIOB5 (AT91C_PIO_PD8) //
  6821. #define AT91C_PIO_PD9 (1 << 9) // Pin Controlled by PD9
  6822. #define AT91C_PD9_AC97CK (AT91C_PIO_PD9) //
  6823. #define AT91C_PD9_TCLK5 (AT91C_PIO_PD9) //
  6824. #define AT91C_PIO_PE0 (1 << 0) // Pin Controlled by PE0
  6825. #define AT91C_PE0_LCDPWR (AT91C_PIO_PE0) //
  6826. #define AT91C_PE0_PCK0 (AT91C_PIO_PE0) //
  6827. #define AT91C_PIO_PE1 (1 << 1) // Pin Controlled by PE1
  6828. #define AT91C_PE1_LCDMOD (AT91C_PIO_PE1) //
  6829. #define AT91C_PIO_PE10 (1 << 10) // Pin Controlled by PE10
  6830. #define AT91C_PE10_LCDD3 (AT91C_PIO_PE10) //
  6831. #define AT91C_PE10_LCDD5 (AT91C_PIO_PE10) //
  6832. #define AT91C_PIO_PE11 (1 << 11) // Pin Controlled by PE11
  6833. #define AT91C_PE11_LCDD4 (AT91C_PIO_PE11) //
  6834. #define AT91C_PE11_LCDD6 (AT91C_PIO_PE11) //
  6835. #define AT91C_PIO_PE12 (1 << 12) // Pin Controlled by PE12
  6836. #define AT91C_PE12_LCDD5 (AT91C_PIO_PE12) //
  6837. #define AT91C_PE12_LCDD7 (AT91C_PIO_PE12) //
  6838. #define AT91C_PIO_PE13 (1 << 13) // Pin Controlled by PE13
  6839. #define AT91C_PE13_LCDD6 (AT91C_PIO_PE13) //
  6840. #define AT91C_PE13_LCDD10 (AT91C_PIO_PE13) //
  6841. #define AT91C_PIO_PE14 (1 << 14) // Pin Controlled by PE14
  6842. #define AT91C_PE14_LCDD7 (AT91C_PIO_PE14) //
  6843. #define AT91C_PE14_LCDD11 (AT91C_PIO_PE14) //
  6844. #define AT91C_PIO_PE15 (1 << 15) // Pin Controlled by PE15
  6845. #define AT91C_PE15_LCDD8 (AT91C_PIO_PE15) //
  6846. #define AT91C_PE15_LCDD12 (AT91C_PIO_PE15) //
  6847. #define AT91C_PIO_PE16 (1 << 16) // Pin Controlled by PE16
  6848. #define AT91C_PE16_LCDD9 (AT91C_PIO_PE16) //
  6849. #define AT91C_PE16_LCDD13 (AT91C_PIO_PE16) //
  6850. #define AT91C_PIO_PE17 (1 << 17) // Pin Controlled by PE17
  6851. #define AT91C_PE17_LCDD10 (AT91C_PIO_PE17) //
  6852. #define AT91C_PE17_LCDD14 (AT91C_PIO_PE17) //
  6853. #define AT91C_PIO_PE18 (1 << 18) // Pin Controlled by PE18
  6854. #define AT91C_PE18_LCDD11 (AT91C_PIO_PE18) //
  6855. #define AT91C_PE18_LCDD15 (AT91C_PIO_PE18) //
  6856. #define AT91C_PIO_PE19 (1 << 19) // Pin Controlled by PE19
  6857. #define AT91C_PE19_LCDD12 (AT91C_PIO_PE19) //
  6858. #define AT91C_PE19_LCDD18 (AT91C_PIO_PE19) //
  6859. #define AT91C_PIO_PE2 (1 << 2) // Pin Controlled by PE2
  6860. #define AT91C_PE2_LCDCC (AT91C_PIO_PE2) //
  6861. #define AT91C_PIO_PE20 (1 << 20) // Pin Controlled by PE20
  6862. #define AT91C_PE20_LCDD13 (AT91C_PIO_PE20) //
  6863. #define AT91C_PE20_LCDD19 (AT91C_PIO_PE20) //
  6864. #define AT91C_PIO_PE21 (1 << 21) // Pin Controlled by PE21
  6865. #define AT91C_PE21_LCDD14 (AT91C_PIO_PE21) //
  6866. #define AT91C_PE21_LCDD20 (AT91C_PIO_PE21) //
  6867. #define AT91C_PIO_PE22 (1 << 22) // Pin Controlled by PE22
  6868. #define AT91C_PE22_LCDD15 (AT91C_PIO_PE22) //
  6869. #define AT91C_PE22_LCDD21 (AT91C_PIO_PE22) //
  6870. #define AT91C_PIO_PE23 (1 << 23) // Pin Controlled by PE23
  6871. #define AT91C_PE23_LCDD16 (AT91C_PIO_PE23) //
  6872. #define AT91C_PE23_LCDD22 (AT91C_PIO_PE23) //
  6873. #define AT91C_PIO_PE24 (1 << 24) // Pin Controlled by PE24
  6874. #define AT91C_PE24_LCDD17 (AT91C_PIO_PE24) //
  6875. #define AT91C_PE24_LCDD23 (AT91C_PIO_PE24) //
  6876. #define AT91C_PIO_PE25 (1 << 25) // Pin Controlled by PE25
  6877. #define AT91C_PE25_LCDD18 (AT91C_PIO_PE25) //
  6878. #define AT91C_PIO_PE26 (1 << 26) // Pin Controlled by PE26
  6879. #define AT91C_PE26_LCDD19 (AT91C_PIO_PE26) //
  6880. #define AT91C_PIO_PE27 (1 << 27) // Pin Controlled by PE27
  6881. #define AT91C_PE27_LCDD20 (AT91C_PIO_PE27) //
  6882. #define AT91C_PIO_PE28 (1 << 28) // Pin Controlled by PE28
  6883. #define AT91C_PE28_LCDD21 (AT91C_PIO_PE28) //
  6884. #define AT91C_PIO_PE29 (1 << 29) // Pin Controlled by PE29
  6885. #define AT91C_PE29_LCDD22 (AT91C_PIO_PE29) //
  6886. #define AT91C_PIO_PE3 (1 << 3) // Pin Controlled by PE3
  6887. #define AT91C_PE3_LCDVSYNC (AT91C_PIO_PE3) //
  6888. #define AT91C_PIO_PE30 (1 << 30) // Pin Controlled by PE30
  6889. #define AT91C_PE30_LCDD23 (AT91C_PIO_PE30) //
  6890. #define AT91C_PIO_PE31 (1 << 31) // Pin Controlled by PE31
  6891. #define AT91C_PE31_PWM2 (AT91C_PIO_PE31) //
  6892. #define AT91C_PE31_PCK1 (AT91C_PIO_PE31) //
  6893. #define AT91C_PIO_PE4 (1 << 4) // Pin Controlled by PE4
  6894. #define AT91C_PE4_LCDHSYNC (AT91C_PIO_PE4) //
  6895. #define AT91C_PIO_PE5 (1 << 5) // Pin Controlled by PE5
  6896. #define AT91C_PE5_LCDDOTCK (AT91C_PIO_PE5) //
  6897. #define AT91C_PIO_PE6 (1 << 6) // Pin Controlled by PE6
  6898. #define AT91C_PE6_LCDDEN (AT91C_PIO_PE6) //
  6899. #define AT91C_PIO_PE7 (1 << 7) // Pin Controlled by PE7
  6900. #define AT91C_PE7_LCDD0 (AT91C_PIO_PE7) //
  6901. #define AT91C_PE7_LCDD2 (AT91C_PIO_PE7) //
  6902. #define AT91C_PIO_PE8 (1 << 8) // Pin Controlled by PE8
  6903. #define AT91C_PE8_LCDD1 (AT91C_PIO_PE8) //
  6904. #define AT91C_PE8_LCDD3 (AT91C_PIO_PE8) //
  6905. #define AT91C_PIO_PE9 (1 << 9) // Pin Controlled by PE9
  6906. #define AT91C_PE9_LCDD2 (AT91C_PIO_PE9) //
  6907. #define AT91C_PE9_LCDD4 (AT91C_PIO_PE9) //
  6908. // *****************************************************************************
  6909. // PERIPHERAL ID DEFINITIONS FOR AT91SAM9G45
  6910. // *****************************************************************************
  6911. #define AT91C_ID_FIQ ( 0) // Advanced Interrupt Controller (FIQ)
  6912. #define AT91C_ID_SYS ( 1) // System Controller
  6913. #define AT91C_ID_PIOA ( 2) // Parallel IO Controller A
  6914. #define AT91C_ID_PIOB ( 3) // Parallel IO Controller B
  6915. #define AT91C_ID_PIOC ( 4) // Parallel IO Controller C
  6916. #define AT91C_ID_PIOD_E ( 5) // Parallel IO Controller D and E
  6917. #define AT91C_ID_TRNG ( 6) // True Random Number Generator
  6918. #define AT91C_ID_US0 ( 7) // USART 0
  6919. #define AT91C_ID_US1 ( 8) // USART 1
  6920. #define AT91C_ID_US2 ( 9) // USART 2
  6921. #define AT91C_ID_US3 (10) // USART 2
  6922. #define AT91C_ID_MCI0 (11) // Multimedia Card Interface 0
  6923. #define AT91C_ID_TWI0 (12) // TWI 0
  6924. #define AT91C_ID_TWI1 (13) // TWI 1
  6925. #define AT91C_ID_SPI0 (14) // Serial Peripheral Interface
  6926. #define AT91C_ID_SPI1 (15) // Serial Peripheral Interface
  6927. #define AT91C_ID_SSC0 (16) // Serial Synchronous Controller 0
  6928. #define AT91C_ID_SSC1 (17) // Serial Synchronous Controller 1
  6929. #define AT91C_ID_TC (18) // Timer Counter 0, 1, 2, 3, 4, 5
  6930. #define AT91C_ID_PWMC (19) // Pulse Width Modulation Controller
  6931. #define AT91C_ID_TSADC (20) // Touch Screen Controller
  6932. #define AT91C_ID_HDMA (21) // HDMA
  6933. #define AT91C_ID_UHPHS (22) // USB Host High Speed
  6934. #define AT91C_ID_LCDC (23) // LCD Controller
  6935. #define AT91C_ID_AC97C (24) // AC97 Controller
  6936. #define AT91C_ID_EMAC (25) // Ethernet MAC
  6937. #define AT91C_ID_ISI (26) // Image Sensor Interface
  6938. #define AT91C_ID_UDPHS (27) // USB Device HS
  6939. #define AT91C_ID_MCI1 (29) // Multimedia Card Interface 1
  6940. #define AT91C_ID_VDEC (30) // Video Decoder
  6941. #define AT91C_ID_IRQ0 (31) // Advanced Interrupt Controller (IRQ0)
  6942. #define AT91C_ALL_INT (0xEFFFFFFF) // ALL VALID INTERRUPTS
  6943. // *****************************************************************************
  6944. // BASE ADDRESS DEFINITIONS FOR AT91SAM9G45
  6945. // *****************************************************************************
  6946. #define AT91C_BASE_SFR (AT91C_CAST(AT91PS_SFR) 0xFFF74000) // (SFR) Base Address
  6947. #define AT91C_BASE_SYS (AT91C_CAST(AT91PS_SYS) 0xFFFFC000) // (SYS) Base Address
  6948. #define AT91C_BASE_EBI (AT91C_CAST(AT91PS_EBI) 0xFFFFE200) // (EBI) Base Address
  6949. #define AT91C_BASE_DDR2CP1 (AT91C_CAST(AT91PS_HDDRSDRC2) 0xFFFFE400) // (DDR2CP1) Base Address
  6950. #define AT91C_BASE_DDR2C (AT91C_CAST(AT91PS_HDDRSDRC2) 0xFFFFE600) // (DDR2C) Base Address
  6951. #define AT91C_BASE_SMC (AT91C_CAST(AT91PS_SMC) 0xFFFFE800) // (SMC) Base Address
  6952. #define AT91C_BASE_MATRIX (AT91C_CAST(AT91PS_MATRIX) 0xFFFFEA00) // (MATRIX) Base Address
  6953. #define AT91C_BASE_AIC (AT91C_CAST(AT91PS_AIC) 0xFFFFF000) // (AIC) Base Address
  6954. #define AT91C_BASE_PDC_DBGU (AT91C_CAST(AT91PS_PDC) 0xFFFFEF00) // (PDC_DBGU) Base Address
  6955. #define AT91C_BASE_DBGU (AT91C_CAST(AT91PS_DBGU) 0xFFFFEE00) // (DBGU) Base Address
  6956. #define AT91C_BASE_PIOA (AT91C_CAST(AT91PS_PIO) 0xFFFFF200) // (PIOA) Base Address
  6957. #define AT91C_BASE_PIOB (AT91C_CAST(AT91PS_PIO) 0xFFFFF400) // (PIOB) Base Address
  6958. #define AT91C_BASE_PIOC (AT91C_CAST(AT91PS_PIO) 0xFFFFF600) // (PIOC) Base Address
  6959. #define AT91C_BASE_PIOD (AT91C_CAST(AT91PS_PIO) 0xFFFFF800) // (PIOD) Base Address
  6960. #define AT91C_BASE_PIOE (AT91C_CAST(AT91PS_PIO) 0xFFFFFA00) // (PIOE) Base Address
  6961. #define AT91C_BASE_PMC (AT91C_CAST(AT91PS_PMC) 0xFFFFFC00) // (PMC) Base Address
  6962. #define AT91C_BASE_CKGR (AT91C_CAST(AT91PS_CKGR) 0xFFFFFC1C) // (CKGR) Base Address
  6963. #define AT91C_BASE_RSTC (AT91C_CAST(AT91PS_RSTC) 0xFFFFFD00) // (RSTC) Base Address
  6964. #define AT91C_BASE_SHDWC (AT91C_CAST(AT91PS_SHDWC) 0xFFFFFD10) // (SHDWC) Base Address
  6965. #define AT91C_BASE_RTTC (AT91C_CAST(AT91PS_RTTC) 0xFFFFFD20) // (RTTC) Base Address
  6966. #define AT91C_BASE_PITC (AT91C_CAST(AT91PS_PITC) 0xFFFFFD30) // (PITC) Base Address
  6967. #define AT91C_BASE_WDTC (AT91C_CAST(AT91PS_WDTC) 0xFFFFFD40) // (WDTC) Base Address
  6968. #define AT91C_BASE_RTC (AT91C_CAST(AT91PS_RTC) 0xFFFFFDB0) // (RTC) Base Address
  6969. #define AT91C_BASE_TC0 (AT91C_CAST(AT91PS_TC) 0xFFF7C000) // (TC0) Base Address
  6970. #define AT91C_BASE_TC1 (AT91C_CAST(AT91PS_TC) 0xFFF7C040) // (TC1) Base Address
  6971. #define AT91C_BASE_TC2 (AT91C_CAST(AT91PS_TC) 0xFFF7C080) // (TC2) Base Address
  6972. #define AT91C_BASE_TC3 (AT91C_CAST(AT91PS_TC) 0xFFFD4000) // (TC3) Base Address
  6973. #define AT91C_BASE_TC4 (AT91C_CAST(AT91PS_TC) 0xFFFD4040) // (TC4) Base Address
  6974. #define AT91C_BASE_TC5 (AT91C_CAST(AT91PS_TC) 0xFFFD4080) // (TC5) Base Address
  6975. #define AT91C_BASE_TCB0 (AT91C_CAST(AT91PS_TCB) 0xFFF7C000) // (TCB0) Base Address
  6976. #define AT91C_BASE_TCB1 (AT91C_CAST(AT91PS_TCB) 0xFFFD4000) // (TCB1) Base Address
  6977. #define AT91C_BASE_MCI0 (AT91C_CAST(AT91PS_MCI) 0xFFF80000) // (MCI0) Base Address
  6978. #define AT91C_BASE_MCI1 (AT91C_CAST(AT91PS_MCI) 0xFFFD0000) // (MCI1) Base Address
  6979. #define AT91C_BASE_TWI0 (AT91C_CAST(AT91PS_TWI) 0xFFF84000) // (TWI0) Base Address
  6980. #define AT91C_BASE_TWI1 (AT91C_CAST(AT91PS_TWI) 0xFFF88000) // (TWI1) Base Address
  6981. #define AT91C_BASE_PDC_US0 (AT91C_CAST(AT91PS_PDC) 0xFFF8C100) // (PDC_US0) Base Address
  6982. #define AT91C_BASE_US0 (AT91C_CAST(AT91PS_USART) 0xFFF8C000) // (US0) Base Address
  6983. #define AT91C_BASE_PDC_US1 (AT91C_CAST(AT91PS_PDC) 0xFFF90100) // (PDC_US1) Base Address
  6984. #define AT91C_BASE_US1 (AT91C_CAST(AT91PS_USART) 0xFFF90000) // (US1) Base Address
  6985. #define AT91C_BASE_PDC_US2 (AT91C_CAST(AT91PS_PDC) 0xFFF94100) // (PDC_US2) Base Address
  6986. #define AT91C_BASE_US2 (AT91C_CAST(AT91PS_USART) 0xFFF94000) // (US2) Base Address
  6987. #define AT91C_BASE_PDC_US3 (AT91C_CAST(AT91PS_PDC) 0xFFF98100) // (PDC_US3) Base Address
  6988. #define AT91C_BASE_US3 (AT91C_CAST(AT91PS_USART) 0xFFF98000) // (US3) Base Address
  6989. #define AT91C_BASE_PDC_SSC0 (AT91C_CAST(AT91PS_PDC) 0xFFF9C100) // (PDC_SSC0) Base Address
  6990. #define AT91C_BASE_SSC0 (AT91C_CAST(AT91PS_SSC) 0xFFF9C000) // (SSC0) Base Address
  6991. #define AT91C_BASE_PDC_SSC1 (AT91C_CAST(AT91PS_PDC) 0xFFFA0100) // (PDC_SSC1) Base Address
  6992. #define AT91C_BASE_SSC1 (AT91C_CAST(AT91PS_SSC) 0xFFFA0000) // (SSC1) Base Address
  6993. #define AT91C_BASE_PWMC_CH0 (AT91C_CAST(AT91PS_PWMC_CH) 0xFFFB8200) // (PWMC_CH0) Base Address
  6994. #define AT91C_BASE_PWMC_CH1 (AT91C_CAST(AT91PS_PWMC_CH) 0xFFFB8220) // (PWMC_CH1) Base Address
  6995. #define AT91C_BASE_PWMC_CH2 (AT91C_CAST(AT91PS_PWMC_CH) 0xFFFB8240) // (PWMC_CH2) Base Address
  6996. #define AT91C_BASE_PWMC_CH3 (AT91C_CAST(AT91PS_PWMC_CH) 0xFFFB8260) // (PWMC_CH3) Base Address
  6997. #define AT91C_BASE_PWMC (AT91C_CAST(AT91PS_PWMC) 0xFFFB8000) // (PWMC) Base Address
  6998. #define AT91C_BASE_PDC_SPI0 (AT91C_CAST(AT91PS_PDC) 0xFFFA4100) // (PDC_SPI0) Base Address
  6999. #define AT91C_BASE_PDC_SPI1 (AT91C_CAST(AT91PS_PDC) 0xFFFA8100) // (PDC_SPI1) Base Address
  7000. #define AT91C_BASE_SPI0 (AT91C_CAST(AT91PS_SPI) 0xFFFA4000) // (SPI0) Base Address
  7001. #define AT91C_BASE_SPI1 (AT91C_CAST(AT91PS_SPI) 0xFFFA8000) // (SPI1) Base Address
  7002. #define AT91C_BASE_PDC_TSADC (AT91C_CAST(AT91PS_PDC) 0xFFFB0100) // (PDC_TSADC) Base Address
  7003. #define AT91C_BASE_TSADC (AT91C_CAST(AT91PS_TSADC) 0xFFFB0000) // (TSADC) Base Address
  7004. #define AT91C_BASE_UDPHS_EPTFIFO (AT91C_CAST(AT91PS_UDPHS_EPTFIFO) 0x00600000) // (UDPHS_EPTFIFO) Base Address
  7005. #define AT91C_BASE_UDPHS_EPT_0 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF78100) // (UDPHS_EPT_0) Base Address
  7006. #define AT91C_BASE_UDPHS_EPT_1 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF78120) // (UDPHS_EPT_1) Base Address
  7007. #define AT91C_BASE_UDPHS_EPT_2 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF78140) // (UDPHS_EPT_2) Base Address
  7008. #define AT91C_BASE_UDPHS_EPT_3 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF78160) // (UDPHS_EPT_3) Base Address
  7009. #define AT91C_BASE_UDPHS_EPT_4 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF78180) // (UDPHS_EPT_4) Base Address
  7010. #define AT91C_BASE_UDPHS_EPT_5 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF781A0) // (UDPHS_EPT_5) Base Address
  7011. #define AT91C_BASE_UDPHS_EPT_6 (AT91C_CAST(AT91PS_UDPHS_EPT) 0xFFF781C0) // (UDPHS_EPT_6) Base Address
  7012. #define AT91C_BASE_UDPHS_DMA_1 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78310) // (UDPHS_DMA_1) Base Address
  7013. #define AT91C_BASE_UDPHS_DMA_2 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78320) // (UDPHS_DMA_2) Base Address
  7014. #define AT91C_BASE_UDPHS_DMA_3 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78330) // (UDPHS_DMA_3) Base Address
  7015. #define AT91C_BASE_UDPHS_DMA_4 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78340) // (UDPHS_DMA_4) Base Address
  7016. #define AT91C_BASE_UDPHS_DMA_5 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78350) // (UDPHS_DMA_5) Base Address
  7017. #define AT91C_BASE_UDPHS_DMA_6 (AT91C_CAST(AT91PS_UDPHS_DMA) 0xFFF78360) // (UDPHS_DMA_6) Base Address
  7018. #define AT91C_BASE_UDPHS (AT91C_CAST(AT91PS_UDPHS) 0xFFF78000) // (UDPHS) Base Address
  7019. #define AT91C_BASE_PDC_AC97C (AT91C_CAST(AT91PS_PDC) 0xFFFAC100) // (PDC_AC97C) Base Address
  7020. #define AT91C_BASE_AC97C (AT91C_CAST(AT91PS_AC97C) 0xFFFAC000) // (AC97C) Base Address
  7021. #define AT91C_BASE_LCDC (AT91C_CAST(AT91PS_LCDC) 0x00500000) // (LCDC) Base Address
  7022. #define AT91C_BASE_LCDC_16B_TFT (AT91C_CAST(AT91PS_LCDC) 0x00500000) // (LCDC_16B_TFT) Base Address
  7023. #define AT91C_BASE_HDMA_CH_0 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFEC3C) // (HDMA_CH_0) Base Address
  7024. #define AT91C_BASE_HDMA_CH_1 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFEC64) // (HDMA_CH_1) Base Address
  7025. #define AT91C_BASE_HDMA_CH_2 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFEC8C) // (HDMA_CH_2) Base Address
  7026. #define AT91C_BASE_HDMA_CH_3 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFECB4) // (HDMA_CH_3) Base Address
  7027. #define AT91C_BASE_HDMA_CH_4 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFECDC) // (HDMA_CH_4) Base Address
  7028. #define AT91C_BASE_HDMA_CH_5 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFED04) // (HDMA_CH_5) Base Address
  7029. #define AT91C_BASE_HDMA_CH_6 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFED2C) // (HDMA_CH_6) Base Address
  7030. #define AT91C_BASE_HDMA_CH_7 (AT91C_CAST(AT91PS_HDMA_CH) 0xFFFFED54) // (HDMA_CH_7) Base Address
  7031. #define AT91C_BASE_HDMA (AT91C_CAST(AT91PS_HDMA) 0xFFFFEC00) // (HDMA) Base Address
  7032. #define AT91C_BASE_HECC (AT91C_CAST(AT91PS_ECC) 0xFFFFE200) // (HECC) Base Address
  7033. #define AT91C_BASE_EMACB (AT91C_CAST(AT91PS_EMAC) 0xFFFBC000) // (EMACB) Base Address
  7034. #define AT91C_BASE_ISI (AT91C_CAST(AT91PS_ISI) 0xFFFB4000) // (ISI) Base Address
  7035. #define AT91C_BASE_UHPHS_OHCI (AT91C_CAST(AT91PS_UHPHS_OHCI) 0x00700000) // (UHPHS_OHCI) Base Address
  7036. #define AT91C_BASE_UHPHS_EHCI (AT91C_CAST(AT91PS_UHPHS_EHCI) 0x00800000) // (UHPHS_EHCI) Base Address
  7037. #define AT91C_BASE_TRNG (AT91C_CAST(AT91PS_TRNG) 0xFFFCC000) // (TRNG) Base Address
  7038. // *****************************************************************************
  7039. // MEMORY MAPPING DEFINITIONS FOR AT91SAM9G45
  7040. // *****************************************************************************
  7041. // ITCM
  7042. #define AT91C_ITCM (0x00100000) // Maximum ITCM Area base address
  7043. // DTCM
  7044. #define AT91C_DTCM (0x00200000) // Maximum DTCM Area base address
  7045. // IRAM
  7046. #define AT91C_IRAM (0x00300000) // Maximum Internal SRAM base address
  7047. #define AT91C_IRAM_SIZE (0x00010000) // Maximum Internal SRAM size in byte (64 Kbytes)
  7048. // IRAM_MIN
  7049. #define AT91C_IRAM_MIN (0x00300000) // Minimum Internal RAM base address
  7050. #define AT91C_IRAM_MIN_SIZE (0x00004000) // Minimum Internal RAM size in byte (16 Kbytes)
  7051. // IROM
  7052. #define AT91C_IROM (0x00400000) // Internal ROM base address
  7053. #define AT91C_IROM_SIZE (0x00010000) // Internal ROM size in byte (64 Kbytes)
  7054. // EBI_CS0
  7055. #define AT91C_EBI_CS0 (0x10000000) // EBI Chip Select 0 base address
  7056. #define AT91C_EBI_CS0_SIZE (0x10000000) // EBI Chip Select 0 size in byte (262144 Kbytes)
  7057. // EBI_CS1
  7058. #define AT91C_EBI_CS1 (0x20000000) // EBI Chip Select 1 base address
  7059. #define AT91C_EBI_CS1_SIZE (0x10000000) // EBI Chip Select 1 size in byte (262144 Kbytes)
  7060. // EBI_SDRAM
  7061. #define AT91C_EBI_SDRAM (0x20000000) // SDRAM on EBI Chip Select 1 base address
  7062. #define AT91C_EBI_SDRAM_SIZE (0x10000000) // SDRAM on EBI Chip Select 1 size in byte (262144 Kbytes)
  7063. // EBI_SDRAM_16BIT
  7064. #define AT91C_EBI_SDRAM_16BIT (0x20000000) // SDRAM on EBI Chip Select 1 base address
  7065. #define AT91C_EBI_SDRAM_16BIT_SIZE (0x02000000) // SDRAM on EBI Chip Select 1 size in byte (32768 Kbytes)
  7066. // EBI_SDRAM_32BIT
  7067. #define AT91C_EBI_SDRAM_32BIT (0x20000000) // SDRAM on EBI Chip Select 1 base address
  7068. #define AT91C_EBI_SDRAM_32BIT_SIZE (0x04000000) // SDRAM on EBI Chip Select 1 size in byte (65536 Kbytes)
  7069. // EBI_CS2
  7070. #define AT91C_EBI_CS2 (0x30000000) // EBI Chip Select 2 base address
  7071. #define AT91C_EBI_CS2_SIZE (0x10000000) // EBI Chip Select 2 size in byte (262144 Kbytes)
  7072. // EBI_CS3
  7073. #define AT91C_EBI_CS3 (0x40000000) // EBI Chip Select 3 base address
  7074. #define AT91C_EBI_CS3_SIZE (0x10000000) // EBI Chip Select 3 size in byte (262144 Kbytes)
  7075. // EBI_SM
  7076. #define AT91C_EBI_SM (0x40000000) // NANDFLASH on EBI Chip Select 3 base address
  7077. #define AT91C_EBI_SM_SIZE (0x10000000) // NANDFLASH on EBI Chip Select 3 size in byte (262144 Kbytes)
  7078. // EBI_CS4
  7079. #define AT91C_EBI_CS4 (0x50000000) // EBI Chip Select 4 base address
  7080. #define AT91C_EBI_CS4_SIZE (0x10000000) // EBI Chip Select 4 size in byte (262144 Kbytes)
  7081. // EBI_CF0
  7082. #define AT91C_EBI_CF0 (0x50000000) // CompactFlash 0 on EBI Chip Select 4 base address
  7083. #define AT91C_EBI_CF0_SIZE (0x10000000) // CompactFlash 0 on EBI Chip Select 4 size in byte (262144 Kbytes)
  7084. // EBI_CS5
  7085. #define AT91C_EBI_CS5 (0x60000000) // EBI Chip Select 5 base address
  7086. #define AT91C_EBI_CS5_SIZE (0x10000000) // EBI Chip Select 5 size in byte (262144 Kbytes)
  7087. // EBI_CF1
  7088. #define AT91C_EBI_CF1 (0x60000000) // CompactFlash 1 on EBIChip Select 5 base address
  7089. #define AT91C_EBI_CF1_SIZE (0x10000000) // CompactFlash 1 on EBIChip Select 5 size in byte (262144 Kbytes)
  7090. // DDR2
  7091. #define AT91C_DDR2 (0x70000000) // DDR2/LPDDR space base address
  7092. #define AT91C_DDR2_SIZE (0x10000000) // DDR2/LPDDR space size in byte (262144 Kbytes)
  7093. #ifdef __cplusplus
  7094. extern "C" {
  7095. #endif
  7096. #include <rtthread.h>
  7097. #include "io.h"
  7098. #include "irq.h"
  7099. #include "gpio.h"
  7100. #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  7101. extern struct clk *clk_get(const char *id);
  7102. extern rt_uint32_t clk_get_rate(struct clk *clk);
  7103. extern void rt_hw_clock_init(void);
  7104. #define AT91C_SLOW_CLOCK 32768 /* slow clock */
  7105. #ifdef __cplusplus
  7106. }
  7107. #endif
  7108. #endif