gcc-x1e80100.c 179 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #include <linux/clk-provider.h>
  6. #include <linux/mod_devicetable.h>
  7. #include <linux/module.h>
  8. #include <linux/platform_device.h>
  9. #include <linux/regmap.h>
  10. #include <dt-bindings/clock/qcom,x1e80100-gcc.h>
  11. #include "clk-alpha-pll.h"
  12. #include "clk-branch.h"
  13. #include "clk-rcg.h"
  14. #include "clk-regmap.h"
  15. #include "clk-regmap-divider.h"
  16. #include "clk-regmap-mux.h"
  17. #include "clk-regmap-phy-mux.h"
  18. #include "gdsc.h"
  19. #include "reset.h"
  20. enum {
  21. DT_BI_TCXO,
  22. DT_SLEEP_CLK,
  23. DT_PCIE_3_PIPE,
  24. DT_PCIE_4_PIPE,
  25. DT_PCIE_5_PIPE,
  26. DT_PCIE_6A_PIPE,
  27. DT_PCIE_6B_PIPE,
  28. DT_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE,
  29. DT_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE,
  30. DT_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE,
  31. };
  32. enum {
  33. P_BI_TCXO,
  34. P_GCC_GPLL0_OUT_EVEN,
  35. P_GCC_GPLL0_OUT_MAIN,
  36. P_GCC_GPLL4_OUT_MAIN,
  37. P_GCC_GPLL7_OUT_MAIN,
  38. P_GCC_GPLL8_OUT_MAIN,
  39. P_GCC_GPLL9_OUT_MAIN,
  40. P_SLEEP_CLK,
  41. P_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE_CLK,
  42. P_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE_CLK,
  43. P_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE_CLK,
  44. };
  45. static struct clk_alpha_pll gcc_gpll0 = {
  46. .offset = 0x0,
  47. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  48. .clkr = {
  49. .enable_reg = 0x52030,
  50. .enable_mask = BIT(0),
  51. .hw.init = &(const struct clk_init_data) {
  52. .name = "gcc_gpll0",
  53. .parent_data = &(const struct clk_parent_data) {
  54. .index = DT_BI_TCXO,
  55. },
  56. .num_parents = 1,
  57. .ops = &clk_alpha_pll_fixed_lucid_ole_ops,
  58. },
  59. },
  60. };
  61. static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
  62. { 0x1, 2 },
  63. { }
  64. };
  65. static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
  66. .offset = 0x0,
  67. .post_div_shift = 10,
  68. .post_div_table = post_div_table_gcc_gpll0_out_even,
  69. .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
  70. .width = 4,
  71. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  72. .clkr.hw.init = &(const struct clk_init_data) {
  73. .name = "gcc_gpll0_out_even",
  74. .parent_hws = (const struct clk_hw*[]) {
  75. &gcc_gpll0.clkr.hw,
  76. },
  77. .num_parents = 1,
  78. .ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
  79. },
  80. };
  81. static struct clk_alpha_pll gcc_gpll4 = {
  82. .offset = 0x4000,
  83. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  84. .clkr = {
  85. .enable_reg = 0x52030,
  86. .enable_mask = BIT(4),
  87. .hw.init = &(const struct clk_init_data) {
  88. .name = "gcc_gpll4",
  89. .parent_data = &(const struct clk_parent_data) {
  90. .index = DT_BI_TCXO,
  91. },
  92. .num_parents = 1,
  93. .ops = &clk_alpha_pll_fixed_lucid_ole_ops,
  94. },
  95. },
  96. };
  97. static struct clk_alpha_pll gcc_gpll7 = {
  98. .offset = 0x7000,
  99. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  100. .clkr = {
  101. .enable_reg = 0x52030,
  102. .enable_mask = BIT(7),
  103. .hw.init = &(const struct clk_init_data) {
  104. .name = "gcc_gpll7",
  105. .parent_data = &(const struct clk_parent_data) {
  106. .index = DT_BI_TCXO,
  107. },
  108. .num_parents = 1,
  109. .ops = &clk_alpha_pll_fixed_lucid_ole_ops,
  110. },
  111. },
  112. };
  113. static struct clk_alpha_pll gcc_gpll8 = {
  114. .offset = 0x8000,
  115. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  116. .clkr = {
  117. .enable_reg = 0x52030,
  118. .enable_mask = BIT(8),
  119. .hw.init = &(const struct clk_init_data) {
  120. .name = "gcc_gpll8",
  121. .parent_data = &(const struct clk_parent_data) {
  122. .index = DT_BI_TCXO,
  123. },
  124. .num_parents = 1,
  125. .ops = &clk_alpha_pll_fixed_lucid_ole_ops,
  126. },
  127. },
  128. };
  129. static struct clk_alpha_pll gcc_gpll9 = {
  130. .offset = 0x9000,
  131. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
  132. .clkr = {
  133. .enable_reg = 0x52030,
  134. .enable_mask = BIT(9),
  135. .hw.init = &(const struct clk_init_data) {
  136. .name = "gcc_gpll9",
  137. .parent_data = &(const struct clk_parent_data) {
  138. .index = DT_BI_TCXO,
  139. },
  140. .num_parents = 1,
  141. .ops = &clk_alpha_pll_fixed_lucid_ole_ops,
  142. },
  143. },
  144. };
  145. static const struct parent_map gcc_parent_map_0[] = {
  146. { P_BI_TCXO, 0 },
  147. { P_GCC_GPLL0_OUT_MAIN, 1 },
  148. { P_GCC_GPLL0_OUT_EVEN, 6 },
  149. };
  150. static const struct clk_parent_data gcc_parent_data_0[] = {
  151. { .index = DT_BI_TCXO },
  152. { .hw = &gcc_gpll0.clkr.hw },
  153. { .hw = &gcc_gpll0_out_even.clkr.hw },
  154. };
  155. static const struct parent_map gcc_parent_map_1[] = {
  156. { P_BI_TCXO, 0 },
  157. { P_SLEEP_CLK, 5 },
  158. };
  159. static const struct clk_parent_data gcc_parent_data_1[] = {
  160. { .index = DT_BI_TCXO },
  161. { .index = DT_SLEEP_CLK },
  162. };
  163. static const struct parent_map gcc_parent_map_2[] = {
  164. { P_BI_TCXO, 0 },
  165. { P_GCC_GPLL0_OUT_MAIN, 1 },
  166. { P_SLEEP_CLK, 5 },
  167. { P_GCC_GPLL0_OUT_EVEN, 6 },
  168. };
  169. static const struct clk_parent_data gcc_parent_data_2[] = {
  170. { .index = DT_BI_TCXO },
  171. { .hw = &gcc_gpll0.clkr.hw },
  172. { .index = DT_SLEEP_CLK },
  173. { .hw = &gcc_gpll0_out_even.clkr.hw },
  174. };
  175. static const struct parent_map gcc_parent_map_3[] = {
  176. { P_BI_TCXO, 0 },
  177. };
  178. static const struct clk_parent_data gcc_parent_data_3[] = {
  179. { .index = DT_BI_TCXO },
  180. };
  181. static const struct parent_map gcc_parent_map_4[] = {
  182. { P_BI_TCXO, 0 },
  183. { P_GCC_GPLL0_OUT_MAIN, 1 },
  184. { P_GCC_GPLL8_OUT_MAIN, 2 },
  185. { P_GCC_GPLL0_OUT_EVEN, 6 },
  186. };
  187. static const struct clk_parent_data gcc_parent_data_4[] = {
  188. { .index = DT_BI_TCXO },
  189. { .hw = &gcc_gpll0.clkr.hw },
  190. { .hw = &gcc_gpll8.clkr.hw },
  191. { .hw = &gcc_gpll0_out_even.clkr.hw },
  192. };
  193. static const struct parent_map gcc_parent_map_5[] = {
  194. { P_BI_TCXO, 0 },
  195. { P_GCC_GPLL0_OUT_MAIN, 1 },
  196. { P_GCC_GPLL7_OUT_MAIN, 2 },
  197. { P_SLEEP_CLK, 5 },
  198. };
  199. static const struct clk_parent_data gcc_parent_data_5[] = {
  200. { .index = DT_BI_TCXO },
  201. { .hw = &gcc_gpll0.clkr.hw },
  202. { .hw = &gcc_gpll7.clkr.hw },
  203. { .index = DT_SLEEP_CLK },
  204. };
  205. static const struct parent_map gcc_parent_map_6[] = {
  206. { P_BI_TCXO, 0 },
  207. { P_GCC_GPLL0_OUT_MAIN, 1 },
  208. { P_GCC_GPLL7_OUT_MAIN, 2 },
  209. };
  210. static const struct clk_parent_data gcc_parent_data_6[] = {
  211. { .index = DT_BI_TCXO },
  212. { .hw = &gcc_gpll0.clkr.hw },
  213. { .hw = &gcc_gpll7.clkr.hw },
  214. };
  215. static const struct parent_map gcc_parent_map_7[] = {
  216. { P_BI_TCXO, 0 },
  217. { P_GCC_GPLL0_OUT_MAIN, 1 },
  218. { P_GCC_GPLL4_OUT_MAIN, 5 },
  219. { P_GCC_GPLL0_OUT_EVEN, 6 },
  220. };
  221. static const struct clk_parent_data gcc_parent_data_7[] = {
  222. { .index = DT_BI_TCXO },
  223. { .hw = &gcc_gpll0.clkr.hw },
  224. { .hw = &gcc_gpll4.clkr.hw },
  225. { .hw = &gcc_gpll0_out_even.clkr.hw },
  226. };
  227. static const struct parent_map gcc_parent_map_8[] = {
  228. { P_BI_TCXO, 0 },
  229. { P_GCC_GPLL0_OUT_MAIN, 1 },
  230. { P_GCC_GPLL7_OUT_MAIN, 2 },
  231. { P_GCC_GPLL0_OUT_EVEN, 6 },
  232. };
  233. static const struct clk_parent_data gcc_parent_data_8[] = {
  234. { .index = DT_BI_TCXO },
  235. { .hw = &gcc_gpll0.clkr.hw },
  236. { .hw = &gcc_gpll7.clkr.hw },
  237. { .hw = &gcc_gpll0_out_even.clkr.hw },
  238. };
  239. static const struct parent_map gcc_parent_map_9[] = {
  240. { P_BI_TCXO, 0 },
  241. { P_GCC_GPLL0_OUT_MAIN, 1 },
  242. { P_GCC_GPLL9_OUT_MAIN, 2 },
  243. { P_GCC_GPLL4_OUT_MAIN, 5 },
  244. { P_GCC_GPLL0_OUT_EVEN, 6 },
  245. };
  246. static const struct clk_parent_data gcc_parent_data_10[] = {
  247. { .index = DT_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE },
  248. { .index = DT_BI_TCXO },
  249. };
  250. static const struct parent_map gcc_parent_map_10[] = {
  251. { P_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
  252. { P_BI_TCXO, 2 },
  253. };
  254. static const struct clk_parent_data gcc_parent_data_11[] = {
  255. { .index = DT_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE },
  256. { .index = DT_BI_TCXO },
  257. };
  258. static const struct parent_map gcc_parent_map_11[] = {
  259. { P_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
  260. { P_BI_TCXO, 2 },
  261. };
  262. static const struct clk_parent_data gcc_parent_data_12[] = {
  263. { .index = DT_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE },
  264. { .index = DT_BI_TCXO },
  265. };
  266. static const struct parent_map gcc_parent_map_12[] = {
  267. { P_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
  268. { P_BI_TCXO, 2 },
  269. };
  270. static const struct clk_parent_data gcc_parent_data_9[] = {
  271. { .index = DT_BI_TCXO },
  272. { .hw = &gcc_gpll0.clkr.hw },
  273. { .hw = &gcc_gpll9.clkr.hw },
  274. { .hw = &gcc_gpll4.clkr.hw },
  275. { .hw = &gcc_gpll0_out_even.clkr.hw },
  276. };
  277. static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
  278. F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
  279. F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
  280. F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
  281. { }
  282. };
  283. static struct clk_rcg2 gcc_gp1_clk_src = {
  284. .cmd_rcgr = 0x64004,
  285. .mnd_width = 16,
  286. .hid_width = 5,
  287. .parent_map = gcc_parent_map_2,
  288. .freq_tbl = ftbl_gcc_gp1_clk_src,
  289. .clkr.hw.init = &(const struct clk_init_data) {
  290. .name = "gcc_gp1_clk_src",
  291. .parent_data = gcc_parent_data_2,
  292. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  293. .flags = CLK_SET_RATE_PARENT,
  294. .ops = &clk_rcg2_shared_ops,
  295. },
  296. };
  297. static struct clk_rcg2 gcc_gp2_clk_src = {
  298. .cmd_rcgr = 0x65004,
  299. .mnd_width = 16,
  300. .hid_width = 5,
  301. .parent_map = gcc_parent_map_2,
  302. .freq_tbl = ftbl_gcc_gp1_clk_src,
  303. .clkr.hw.init = &(const struct clk_init_data) {
  304. .name = "gcc_gp2_clk_src",
  305. .parent_data = gcc_parent_data_2,
  306. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  307. .flags = CLK_SET_RATE_PARENT,
  308. .ops = &clk_rcg2_shared_ops,
  309. },
  310. };
  311. static struct clk_rcg2 gcc_gp3_clk_src = {
  312. .cmd_rcgr = 0x66004,
  313. .mnd_width = 16,
  314. .hid_width = 5,
  315. .parent_map = gcc_parent_map_2,
  316. .freq_tbl = ftbl_gcc_gp1_clk_src,
  317. .clkr.hw.init = &(const struct clk_init_data) {
  318. .name = "gcc_gp3_clk_src",
  319. .parent_data = gcc_parent_data_2,
  320. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  321. .flags = CLK_SET_RATE_PARENT,
  322. .ops = &clk_rcg2_shared_ops,
  323. },
  324. };
  325. static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
  326. F(19200000, P_BI_TCXO, 1, 0, 0),
  327. { }
  328. };
  329. static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
  330. .cmd_rcgr = 0xa0180,
  331. .mnd_width = 16,
  332. .hid_width = 5,
  333. .parent_map = gcc_parent_map_1,
  334. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  335. .clkr.hw.init = &(const struct clk_init_data) {
  336. .name = "gcc_pcie_0_aux_clk_src",
  337. .parent_data = gcc_parent_data_1,
  338. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  339. .flags = CLK_SET_RATE_PARENT,
  340. .ops = &clk_rcg2_shared_ops,
  341. },
  342. };
  343. static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
  344. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  345. { }
  346. };
  347. static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
  348. .cmd_rcgr = 0xa0054,
  349. .mnd_width = 0,
  350. .hid_width = 5,
  351. .parent_map = gcc_parent_map_0,
  352. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  353. .clkr.hw.init = &(const struct clk_init_data) {
  354. .name = "gcc_pcie_0_phy_rchng_clk_src",
  355. .parent_data = gcc_parent_data_0,
  356. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  357. .flags = CLK_SET_RATE_PARENT,
  358. .ops = &clk_rcg2_shared_ops,
  359. },
  360. };
  361. static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
  362. .cmd_rcgr = 0x2c180,
  363. .mnd_width = 16,
  364. .hid_width = 5,
  365. .parent_map = gcc_parent_map_1,
  366. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  367. .clkr.hw.init = &(const struct clk_init_data) {
  368. .name = "gcc_pcie_1_aux_clk_src",
  369. .parent_data = gcc_parent_data_1,
  370. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  371. .flags = CLK_SET_RATE_PARENT,
  372. .ops = &clk_rcg2_shared_ops,
  373. },
  374. };
  375. static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
  376. .cmd_rcgr = 0x2c054,
  377. .mnd_width = 0,
  378. .hid_width = 5,
  379. .parent_map = gcc_parent_map_0,
  380. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  381. .clkr.hw.init = &(const struct clk_init_data) {
  382. .name = "gcc_pcie_1_phy_rchng_clk_src",
  383. .parent_data = gcc_parent_data_0,
  384. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  385. .flags = CLK_SET_RATE_PARENT,
  386. .ops = &clk_rcg2_shared_ops,
  387. },
  388. };
  389. static struct clk_rcg2 gcc_pcie_2_aux_clk_src = {
  390. .cmd_rcgr = 0x13180,
  391. .mnd_width = 16,
  392. .hid_width = 5,
  393. .parent_map = gcc_parent_map_1,
  394. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  395. .clkr.hw.init = &(const struct clk_init_data) {
  396. .name = "gcc_pcie_2_aux_clk_src",
  397. .parent_data = gcc_parent_data_1,
  398. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  399. .flags = CLK_SET_RATE_PARENT,
  400. .ops = &clk_rcg2_shared_ops,
  401. },
  402. };
  403. static struct clk_rcg2 gcc_pcie_2_phy_rchng_clk_src = {
  404. .cmd_rcgr = 0x13054,
  405. .mnd_width = 0,
  406. .hid_width = 5,
  407. .parent_map = gcc_parent_map_0,
  408. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  409. .clkr.hw.init = &(const struct clk_init_data) {
  410. .name = "gcc_pcie_2_phy_rchng_clk_src",
  411. .parent_data = gcc_parent_data_0,
  412. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  413. .flags = CLK_SET_RATE_PARENT,
  414. .ops = &clk_rcg2_shared_ops,
  415. },
  416. };
  417. static struct clk_rcg2 gcc_pcie_3_aux_clk_src = {
  418. .cmd_rcgr = 0x5808c,
  419. .mnd_width = 16,
  420. .hid_width = 5,
  421. .parent_map = gcc_parent_map_1,
  422. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  423. .clkr.hw.init = &(const struct clk_init_data) {
  424. .name = "gcc_pcie_3_aux_clk_src",
  425. .parent_data = gcc_parent_data_1,
  426. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  427. .flags = CLK_SET_RATE_PARENT,
  428. .ops = &clk_rcg2_shared_ops,
  429. },
  430. };
  431. static struct clk_rcg2 gcc_pcie_3_phy_rchng_clk_src = {
  432. .cmd_rcgr = 0x58070,
  433. .mnd_width = 0,
  434. .hid_width = 5,
  435. .parent_map = gcc_parent_map_0,
  436. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  437. .clkr.hw.init = &(const struct clk_init_data) {
  438. .name = "gcc_pcie_3_phy_rchng_clk_src",
  439. .parent_data = gcc_parent_data_0,
  440. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  441. .flags = CLK_SET_RATE_PARENT,
  442. .ops = &clk_rcg2_shared_ops,
  443. },
  444. };
  445. static struct clk_rcg2 gcc_pcie_4_aux_clk_src = {
  446. .cmd_rcgr = 0x6b080,
  447. .mnd_width = 16,
  448. .hid_width = 5,
  449. .parent_map = gcc_parent_map_1,
  450. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  451. .clkr.hw.init = &(const struct clk_init_data) {
  452. .name = "gcc_pcie_4_aux_clk_src",
  453. .parent_data = gcc_parent_data_1,
  454. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  455. .flags = CLK_SET_RATE_PARENT,
  456. .ops = &clk_rcg2_shared_ops,
  457. },
  458. };
  459. static struct clk_rcg2 gcc_pcie_4_phy_rchng_clk_src = {
  460. .cmd_rcgr = 0x6b064,
  461. .mnd_width = 0,
  462. .hid_width = 5,
  463. .parent_map = gcc_parent_map_0,
  464. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  465. .clkr.hw.init = &(const struct clk_init_data) {
  466. .name = "gcc_pcie_4_phy_rchng_clk_src",
  467. .parent_data = gcc_parent_data_0,
  468. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  469. .flags = CLK_SET_RATE_PARENT,
  470. .ops = &clk_rcg2_shared_ops,
  471. },
  472. };
  473. static struct clk_rcg2 gcc_pcie_5_aux_clk_src = {
  474. .cmd_rcgr = 0x2f080,
  475. .mnd_width = 16,
  476. .hid_width = 5,
  477. .parent_map = gcc_parent_map_1,
  478. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  479. .clkr.hw.init = &(const struct clk_init_data) {
  480. .name = "gcc_pcie_5_aux_clk_src",
  481. .parent_data = gcc_parent_data_1,
  482. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  483. .flags = CLK_SET_RATE_PARENT,
  484. .ops = &clk_rcg2_shared_ops,
  485. },
  486. };
  487. static struct clk_rcg2 gcc_pcie_5_phy_rchng_clk_src = {
  488. .cmd_rcgr = 0x2f064,
  489. .mnd_width = 0,
  490. .hid_width = 5,
  491. .parent_map = gcc_parent_map_0,
  492. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  493. .clkr.hw.init = &(const struct clk_init_data) {
  494. .name = "gcc_pcie_5_phy_rchng_clk_src",
  495. .parent_data = gcc_parent_data_0,
  496. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  497. .flags = CLK_SET_RATE_PARENT,
  498. .ops = &clk_rcg2_shared_ops,
  499. },
  500. };
  501. static struct clk_rcg2 gcc_pcie_6a_aux_clk_src = {
  502. .cmd_rcgr = 0x3108c,
  503. .mnd_width = 16,
  504. .hid_width = 5,
  505. .parent_map = gcc_parent_map_1,
  506. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  507. .clkr.hw.init = &(const struct clk_init_data) {
  508. .name = "gcc_pcie_6a_aux_clk_src",
  509. .parent_data = gcc_parent_data_1,
  510. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  511. .flags = CLK_SET_RATE_PARENT,
  512. .ops = &clk_rcg2_shared_ops,
  513. },
  514. };
  515. static struct clk_rcg2 gcc_pcie_6a_phy_rchng_clk_src = {
  516. .cmd_rcgr = 0x31070,
  517. .mnd_width = 0,
  518. .hid_width = 5,
  519. .parent_map = gcc_parent_map_0,
  520. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  521. .clkr.hw.init = &(const struct clk_init_data) {
  522. .name = "gcc_pcie_6a_phy_rchng_clk_src",
  523. .parent_data = gcc_parent_data_0,
  524. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  525. .flags = CLK_SET_RATE_PARENT,
  526. .ops = &clk_rcg2_shared_ops,
  527. },
  528. };
  529. static struct clk_rcg2 gcc_pcie_6b_aux_clk_src = {
  530. .cmd_rcgr = 0x8d08c,
  531. .mnd_width = 16,
  532. .hid_width = 5,
  533. .parent_map = gcc_parent_map_1,
  534. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  535. .clkr.hw.init = &(const struct clk_init_data) {
  536. .name = "gcc_pcie_6b_aux_clk_src",
  537. .parent_data = gcc_parent_data_1,
  538. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  539. .flags = CLK_SET_RATE_PARENT,
  540. .ops = &clk_rcg2_shared_ops,
  541. },
  542. };
  543. static struct clk_rcg2 gcc_pcie_6b_phy_rchng_clk_src = {
  544. .cmd_rcgr = 0x8d070,
  545. .mnd_width = 0,
  546. .hid_width = 5,
  547. .parent_map = gcc_parent_map_0,
  548. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  549. .clkr.hw.init = &(const struct clk_init_data) {
  550. .name = "gcc_pcie_6b_phy_rchng_clk_src",
  551. .parent_data = gcc_parent_data_0,
  552. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  553. .flags = CLK_SET_RATE_PARENT,
  554. .ops = &clk_rcg2_shared_ops,
  555. },
  556. };
  557. static struct clk_rcg2 gcc_pcie_rscc_xo_clk_src = {
  558. .cmd_rcgr = 0xa400c,
  559. .mnd_width = 0,
  560. .hid_width = 5,
  561. .parent_map = gcc_parent_map_3,
  562. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  563. .clkr.hw.init = &(const struct clk_init_data) {
  564. .name = "gcc_pcie_rscc_xo_clk_src",
  565. .parent_data = gcc_parent_data_3,
  566. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  567. .flags = CLK_SET_RATE_PARENT,
  568. .ops = &clk_rcg2_shared_ops,
  569. },
  570. };
  571. static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
  572. F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
  573. { }
  574. };
  575. static struct clk_rcg2 gcc_pdm2_clk_src = {
  576. .cmd_rcgr = 0x33010,
  577. .mnd_width = 0,
  578. .hid_width = 5,
  579. .parent_map = gcc_parent_map_0,
  580. .freq_tbl = ftbl_gcc_pdm2_clk_src,
  581. .clkr.hw.init = &(const struct clk_init_data) {
  582. .name = "gcc_pdm2_clk_src",
  583. .parent_data = gcc_parent_data_0,
  584. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  585. .flags = CLK_SET_RATE_PARENT,
  586. .ops = &clk_rcg2_shared_ops,
  587. },
  588. };
  589. static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
  590. F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
  591. F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
  592. F(19200000, P_BI_TCXO, 1, 0, 0),
  593. F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
  594. F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
  595. F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
  596. F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
  597. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  598. F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
  599. F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
  600. F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
  601. { }
  602. };
  603. static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
  604. .name = "gcc_qupv3_wrap0_s0_clk_src",
  605. .parent_data = gcc_parent_data_0,
  606. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  607. .flags = CLK_SET_RATE_PARENT,
  608. .ops = &clk_rcg2_ops,
  609. };
  610. static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
  611. .cmd_rcgr = 0x42010,
  612. .mnd_width = 16,
  613. .hid_width = 5,
  614. .parent_map = gcc_parent_map_0,
  615. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  616. .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
  617. };
  618. static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
  619. .name = "gcc_qupv3_wrap0_s1_clk_src",
  620. .parent_data = gcc_parent_data_0,
  621. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  622. .flags = CLK_SET_RATE_PARENT,
  623. .ops = &clk_rcg2_ops,
  624. };
  625. static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
  626. .cmd_rcgr = 0x42148,
  627. .mnd_width = 16,
  628. .hid_width = 5,
  629. .parent_map = gcc_parent_map_0,
  630. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  631. .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
  632. };
  633. static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src[] = {
  634. F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
  635. F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
  636. F(19200000, P_BI_TCXO, 1, 0, 0),
  637. F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
  638. F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
  639. F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
  640. F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
  641. F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
  642. F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
  643. F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),
  644. F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
  645. { }
  646. };
  647. static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
  648. .name = "gcc_qupv3_wrap0_s2_clk_src",
  649. .parent_data = gcc_parent_data_0,
  650. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  651. .flags = CLK_SET_RATE_PARENT,
  652. .ops = &clk_rcg2_ops,
  653. };
  654. static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
  655. .cmd_rcgr = 0x42288,
  656. .mnd_width = 16,
  657. .hid_width = 5,
  658. .parent_map = gcc_parent_map_0,
  659. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  660. .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
  661. };
  662. static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
  663. .name = "gcc_qupv3_wrap0_s3_clk_src",
  664. .parent_data = gcc_parent_data_0,
  665. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  666. .flags = CLK_SET_RATE_PARENT,
  667. .ops = &clk_rcg2_ops,
  668. };
  669. static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
  670. .cmd_rcgr = 0x423c8,
  671. .mnd_width = 16,
  672. .hid_width = 5,
  673. .parent_map = gcc_parent_map_0,
  674. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  675. .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
  676. };
  677. static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s4_clk_src[] = {
  678. F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
  679. F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
  680. F(19200000, P_BI_TCXO, 1, 0, 0),
  681. F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
  682. F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
  683. F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
  684. F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
  685. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  686. F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
  687. F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
  688. F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
  689. { }
  690. };
  691. static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
  692. .name = "gcc_qupv3_wrap0_s4_clk_src",
  693. .parent_data = gcc_parent_data_0,
  694. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  695. .flags = CLK_SET_RATE_PARENT,
  696. .ops = &clk_rcg2_ops,
  697. };
  698. static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
  699. .cmd_rcgr = 0x42500,
  700. .mnd_width = 16,
  701. .hid_width = 5,
  702. .parent_map = gcc_parent_map_0,
  703. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  704. .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
  705. };
  706. static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
  707. .name = "gcc_qupv3_wrap0_s5_clk_src",
  708. .parent_data = gcc_parent_data_0,
  709. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  710. .flags = CLK_SET_RATE_PARENT,
  711. .ops = &clk_rcg2_ops,
  712. };
  713. static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
  714. .cmd_rcgr = 0x42638,
  715. .mnd_width = 16,
  716. .hid_width = 5,
  717. .parent_map = gcc_parent_map_0,
  718. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  719. .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
  720. };
  721. static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
  722. .name = "gcc_qupv3_wrap0_s6_clk_src",
  723. .parent_data = gcc_parent_data_0,
  724. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  725. .flags = CLK_SET_RATE_PARENT,
  726. .ops = &clk_rcg2_ops,
  727. };
  728. static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
  729. .cmd_rcgr = 0x42770,
  730. .mnd_width = 16,
  731. .hid_width = 5,
  732. .parent_map = gcc_parent_map_0,
  733. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  734. .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
  735. };
  736. static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
  737. .name = "gcc_qupv3_wrap0_s7_clk_src",
  738. .parent_data = gcc_parent_data_0,
  739. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  740. .flags = CLK_SET_RATE_PARENT,
  741. .ops = &clk_rcg2_ops,
  742. };
  743. static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
  744. .cmd_rcgr = 0x428a8,
  745. .mnd_width = 16,
  746. .hid_width = 5,
  747. .parent_map = gcc_parent_map_0,
  748. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  749. .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
  750. };
  751. static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
  752. .name = "gcc_qupv3_wrap1_s0_clk_src",
  753. .parent_data = gcc_parent_data_0,
  754. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  755. .flags = CLK_SET_RATE_PARENT,
  756. .ops = &clk_rcg2_ops,
  757. };
  758. static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
  759. .cmd_rcgr = 0x18010,
  760. .mnd_width = 16,
  761. .hid_width = 5,
  762. .parent_map = gcc_parent_map_0,
  763. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  764. .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
  765. };
  766. static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
  767. .name = "gcc_qupv3_wrap1_s1_clk_src",
  768. .parent_data = gcc_parent_data_0,
  769. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  770. .flags = CLK_SET_RATE_PARENT,
  771. .ops = &clk_rcg2_ops,
  772. };
  773. static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
  774. .cmd_rcgr = 0x18148,
  775. .mnd_width = 16,
  776. .hid_width = 5,
  777. .parent_map = gcc_parent_map_0,
  778. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  779. .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
  780. };
  781. static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
  782. .name = "gcc_qupv3_wrap1_s2_clk_src",
  783. .parent_data = gcc_parent_data_0,
  784. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  785. .flags = CLK_SET_RATE_PARENT,
  786. .ops = &clk_rcg2_ops,
  787. };
  788. static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
  789. .cmd_rcgr = 0x18288,
  790. .mnd_width = 16,
  791. .hid_width = 5,
  792. .parent_map = gcc_parent_map_0,
  793. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  794. .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
  795. };
  796. static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
  797. .name = "gcc_qupv3_wrap1_s3_clk_src",
  798. .parent_data = gcc_parent_data_0,
  799. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  800. .flags = CLK_SET_RATE_PARENT,
  801. .ops = &clk_rcg2_ops,
  802. };
  803. static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
  804. .cmd_rcgr = 0x183c8,
  805. .mnd_width = 16,
  806. .hid_width = 5,
  807. .parent_map = gcc_parent_map_0,
  808. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  809. .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
  810. };
  811. static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
  812. .name = "gcc_qupv3_wrap1_s4_clk_src",
  813. .parent_data = gcc_parent_data_0,
  814. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  815. .flags = CLK_SET_RATE_PARENT,
  816. .ops = &clk_rcg2_ops,
  817. };
  818. static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
  819. .cmd_rcgr = 0x18500,
  820. .mnd_width = 16,
  821. .hid_width = 5,
  822. .parent_map = gcc_parent_map_0,
  823. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  824. .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
  825. };
  826. static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
  827. .name = "gcc_qupv3_wrap1_s5_clk_src",
  828. .parent_data = gcc_parent_data_0,
  829. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  830. .flags = CLK_SET_RATE_PARENT,
  831. .ops = &clk_rcg2_ops,
  832. };
  833. static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
  834. .cmd_rcgr = 0x18638,
  835. .mnd_width = 16,
  836. .hid_width = 5,
  837. .parent_map = gcc_parent_map_0,
  838. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  839. .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
  840. };
  841. static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
  842. .name = "gcc_qupv3_wrap1_s6_clk_src",
  843. .parent_data = gcc_parent_data_0,
  844. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  845. .flags = CLK_SET_RATE_PARENT,
  846. .ops = &clk_rcg2_ops,
  847. };
  848. static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
  849. .cmd_rcgr = 0x18770,
  850. .mnd_width = 16,
  851. .hid_width = 5,
  852. .parent_map = gcc_parent_map_0,
  853. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  854. .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
  855. };
  856. static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
  857. .name = "gcc_qupv3_wrap1_s7_clk_src",
  858. .parent_data = gcc_parent_data_0,
  859. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  860. .flags = CLK_SET_RATE_PARENT,
  861. .ops = &clk_rcg2_ops,
  862. };
  863. static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
  864. .cmd_rcgr = 0x188a8,
  865. .mnd_width = 16,
  866. .hid_width = 5,
  867. .parent_map = gcc_parent_map_0,
  868. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  869. .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
  870. };
  871. static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
  872. .name = "gcc_qupv3_wrap2_s0_clk_src",
  873. .parent_data = gcc_parent_data_0,
  874. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  875. .flags = CLK_SET_RATE_PARENT,
  876. .ops = &clk_rcg2_ops,
  877. };
  878. static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
  879. .cmd_rcgr = 0x1e010,
  880. .mnd_width = 16,
  881. .hid_width = 5,
  882. .parent_map = gcc_parent_map_0,
  883. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  884. .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
  885. };
  886. static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
  887. .name = "gcc_qupv3_wrap2_s1_clk_src",
  888. .parent_data = gcc_parent_data_0,
  889. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  890. .flags = CLK_SET_RATE_PARENT,
  891. .ops = &clk_rcg2_ops,
  892. };
  893. static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
  894. .cmd_rcgr = 0x1e148,
  895. .mnd_width = 16,
  896. .hid_width = 5,
  897. .parent_map = gcc_parent_map_0,
  898. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  899. .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
  900. };
  901. static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
  902. .name = "gcc_qupv3_wrap2_s2_clk_src",
  903. .parent_data = gcc_parent_data_0,
  904. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  905. .flags = CLK_SET_RATE_PARENT,
  906. .ops = &clk_rcg2_ops,
  907. };
  908. static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
  909. .cmd_rcgr = 0x1e288,
  910. .mnd_width = 16,
  911. .hid_width = 5,
  912. .parent_map = gcc_parent_map_0,
  913. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  914. .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
  915. };
  916. static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
  917. .name = "gcc_qupv3_wrap2_s3_clk_src",
  918. .parent_data = gcc_parent_data_0,
  919. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  920. .flags = CLK_SET_RATE_PARENT,
  921. .ops = &clk_rcg2_ops,
  922. };
  923. static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
  924. .cmd_rcgr = 0x1e3c8,
  925. .mnd_width = 16,
  926. .hid_width = 5,
  927. .parent_map = gcc_parent_map_0,
  928. .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
  929. .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
  930. };
  931. static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
  932. .name = "gcc_qupv3_wrap2_s4_clk_src",
  933. .parent_data = gcc_parent_data_0,
  934. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  935. .flags = CLK_SET_RATE_PARENT,
  936. .ops = &clk_rcg2_ops,
  937. };
  938. static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
  939. .cmd_rcgr = 0x1e500,
  940. .mnd_width = 16,
  941. .hid_width = 5,
  942. .parent_map = gcc_parent_map_0,
  943. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  944. .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
  945. };
  946. static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
  947. .name = "gcc_qupv3_wrap2_s5_clk_src",
  948. .parent_data = gcc_parent_data_0,
  949. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  950. .flags = CLK_SET_RATE_PARENT,
  951. .ops = &clk_rcg2_ops,
  952. };
  953. static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
  954. .cmd_rcgr = 0x1e638,
  955. .mnd_width = 16,
  956. .hid_width = 5,
  957. .parent_map = gcc_parent_map_0,
  958. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  959. .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
  960. };
  961. static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
  962. .name = "gcc_qupv3_wrap2_s6_clk_src",
  963. .parent_data = gcc_parent_data_8,
  964. .num_parents = ARRAY_SIZE(gcc_parent_data_8),
  965. .flags = CLK_SET_RATE_PARENT,
  966. .ops = &clk_rcg2_ops,
  967. };
  968. static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
  969. .cmd_rcgr = 0x1e770,
  970. .mnd_width = 16,
  971. .hid_width = 5,
  972. .parent_map = gcc_parent_map_8,
  973. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  974. .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
  975. };
  976. static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {
  977. .name = "gcc_qupv3_wrap2_s7_clk_src",
  978. .parent_data = gcc_parent_data_0,
  979. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  980. .flags = CLK_SET_RATE_PARENT,
  981. .ops = &clk_rcg2_ops,
  982. };
  983. static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {
  984. .cmd_rcgr = 0x1e8a8,
  985. .mnd_width = 16,
  986. .hid_width = 5,
  987. .parent_map = gcc_parent_map_0,
  988. .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src,
  989. .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,
  990. };
  991. static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
  992. F(400000, P_BI_TCXO, 12, 1, 4),
  993. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  994. F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
  995. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  996. F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
  997. { }
  998. };
  999. static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
  1000. .cmd_rcgr = 0x14018,
  1001. .mnd_width = 8,
  1002. .hid_width = 5,
  1003. .parent_map = gcc_parent_map_9,
  1004. .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
  1005. .clkr.hw.init = &(const struct clk_init_data) {
  1006. .name = "gcc_sdcc2_apps_clk_src",
  1007. .parent_data = gcc_parent_data_9,
  1008. .num_parents = ARRAY_SIZE(gcc_parent_data_9),
  1009. .flags = CLK_SET_RATE_PARENT,
  1010. .ops = &clk_rcg2_floor_ops,
  1011. },
  1012. };
  1013. static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
  1014. F(400000, P_BI_TCXO, 12, 1, 4),
  1015. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  1016. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1017. { }
  1018. };
  1019. static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
  1020. .cmd_rcgr = 0x16018,
  1021. .mnd_width = 8,
  1022. .hid_width = 5,
  1023. .parent_map = gcc_parent_map_0,
  1024. .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
  1025. .clkr.hw.init = &(const struct clk_init_data) {
  1026. .name = "gcc_sdcc4_apps_clk_src",
  1027. .parent_data = gcc_parent_data_0,
  1028. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1029. .flags = CLK_SET_RATE_PARENT,
  1030. .ops = &clk_rcg2_floor_ops,
  1031. },
  1032. };
  1033. static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
  1034. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  1035. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1036. F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
  1037. F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
  1038. { }
  1039. };
  1040. static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
  1041. .cmd_rcgr = 0x77030,
  1042. .mnd_width = 8,
  1043. .hid_width = 5,
  1044. .parent_map = gcc_parent_map_0,
  1045. .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
  1046. .clkr.hw.init = &(const struct clk_init_data) {
  1047. .name = "gcc_ufs_phy_axi_clk_src",
  1048. .parent_data = gcc_parent_data_0,
  1049. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1050. .flags = CLK_SET_RATE_PARENT,
  1051. .ops = &clk_rcg2_shared_ops,
  1052. },
  1053. };
  1054. static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
  1055. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  1056. F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),
  1057. F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
  1058. { }
  1059. };
  1060. static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
  1061. .cmd_rcgr = 0x77080,
  1062. .mnd_width = 0,
  1063. .hid_width = 5,
  1064. .parent_map = gcc_parent_map_7,
  1065. .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
  1066. .clkr.hw.init = &(const struct clk_init_data) {
  1067. .name = "gcc_ufs_phy_ice_core_clk_src",
  1068. .parent_data = gcc_parent_data_7,
  1069. .num_parents = ARRAY_SIZE(gcc_parent_data_7),
  1070. .flags = CLK_SET_RATE_PARENT,
  1071. .ops = &clk_rcg2_shared_ops,
  1072. },
  1073. };
  1074. static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
  1075. .cmd_rcgr = 0x770b4,
  1076. .mnd_width = 0,
  1077. .hid_width = 5,
  1078. .parent_map = gcc_parent_map_3,
  1079. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1080. .clkr.hw.init = &(const struct clk_init_data) {
  1081. .name = "gcc_ufs_phy_phy_aux_clk_src",
  1082. .parent_data = gcc_parent_data_3,
  1083. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1084. .flags = CLK_SET_RATE_PARENT,
  1085. .ops = &clk_rcg2_shared_ops,
  1086. },
  1087. };
  1088. static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
  1089. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1090. F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
  1091. F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
  1092. { }
  1093. };
  1094. static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
  1095. .cmd_rcgr = 0x77098,
  1096. .mnd_width = 0,
  1097. .hid_width = 5,
  1098. .parent_map = gcc_parent_map_0,
  1099. .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
  1100. .clkr.hw.init = &(const struct clk_init_data) {
  1101. .name = "gcc_ufs_phy_unipro_core_clk_src",
  1102. .parent_data = gcc_parent_data_0,
  1103. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1104. .flags = CLK_SET_RATE_PARENT,
  1105. .ops = &clk_rcg2_shared_ops,
  1106. },
  1107. };
  1108. static const struct freq_tbl ftbl_gcc_usb20_master_clk_src[] = {
  1109. F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
  1110. F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
  1111. { }
  1112. };
  1113. static struct clk_rcg2 gcc_usb20_master_clk_src = {
  1114. .cmd_rcgr = 0x2902c,
  1115. .mnd_width = 8,
  1116. .hid_width = 5,
  1117. .parent_map = gcc_parent_map_0,
  1118. .freq_tbl = ftbl_gcc_usb20_master_clk_src,
  1119. .clkr.hw.init = &(const struct clk_init_data) {
  1120. .name = "gcc_usb20_master_clk_src",
  1121. .parent_data = gcc_parent_data_0,
  1122. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1123. .flags = CLK_SET_RATE_PARENT,
  1124. .ops = &clk_rcg2_shared_ops,
  1125. },
  1126. };
  1127. static struct clk_rcg2 gcc_usb20_mock_utmi_clk_src = {
  1128. .cmd_rcgr = 0x29158,
  1129. .mnd_width = 0,
  1130. .hid_width = 5,
  1131. .parent_map = gcc_parent_map_0,
  1132. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1133. .clkr.hw.init = &(const struct clk_init_data) {
  1134. .name = "gcc_usb20_mock_utmi_clk_src",
  1135. .parent_data = gcc_parent_data_0,
  1136. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1137. .flags = CLK_SET_RATE_PARENT,
  1138. .ops = &clk_rcg2_shared_ops,
  1139. },
  1140. };
  1141. static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
  1142. F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
  1143. F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
  1144. F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
  1145. F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
  1146. { }
  1147. };
  1148. static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
  1149. .cmd_rcgr = 0x1702c,
  1150. .mnd_width = 8,
  1151. .hid_width = 5,
  1152. .parent_map = gcc_parent_map_0,
  1153. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1154. .clkr.hw.init = &(const struct clk_init_data) {
  1155. .name = "gcc_usb30_mp_master_clk_src",
  1156. .parent_data = gcc_parent_data_0,
  1157. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1158. .flags = CLK_SET_RATE_PARENT,
  1159. .ops = &clk_rcg2_shared_ops,
  1160. },
  1161. };
  1162. static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
  1163. .cmd_rcgr = 0x17158,
  1164. .mnd_width = 0,
  1165. .hid_width = 5,
  1166. .parent_map = gcc_parent_map_0,
  1167. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1168. .clkr.hw.init = &(const struct clk_init_data) {
  1169. .name = "gcc_usb30_mp_mock_utmi_clk_src",
  1170. .parent_data = gcc_parent_data_0,
  1171. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1172. .flags = CLK_SET_RATE_PARENT,
  1173. .ops = &clk_rcg2_shared_ops,
  1174. },
  1175. };
  1176. static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
  1177. .cmd_rcgr = 0x3902c,
  1178. .mnd_width = 8,
  1179. .hid_width = 5,
  1180. .parent_map = gcc_parent_map_0,
  1181. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1182. .clkr.hw.init = &(const struct clk_init_data) {
  1183. .name = "gcc_usb30_prim_master_clk_src",
  1184. .parent_data = gcc_parent_data_0,
  1185. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1186. .flags = CLK_SET_RATE_PARENT,
  1187. .ops = &clk_rcg2_shared_ops,
  1188. },
  1189. };
  1190. static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
  1191. .cmd_rcgr = 0x39044,
  1192. .mnd_width = 0,
  1193. .hid_width = 5,
  1194. .parent_map = gcc_parent_map_0,
  1195. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1196. .clkr.hw.init = &(const struct clk_init_data) {
  1197. .name = "gcc_usb30_prim_mock_utmi_clk_src",
  1198. .parent_data = gcc_parent_data_0,
  1199. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1200. .flags = CLK_SET_RATE_PARENT,
  1201. .ops = &clk_rcg2_shared_ops,
  1202. },
  1203. };
  1204. static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
  1205. .cmd_rcgr = 0xa102c,
  1206. .mnd_width = 8,
  1207. .hid_width = 5,
  1208. .parent_map = gcc_parent_map_0,
  1209. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1210. .clkr.hw.init = &(const struct clk_init_data) {
  1211. .name = "gcc_usb30_sec_master_clk_src",
  1212. .parent_data = gcc_parent_data_0,
  1213. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1214. .flags = CLK_SET_RATE_PARENT,
  1215. .ops = &clk_rcg2_shared_ops,
  1216. },
  1217. };
  1218. static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
  1219. .cmd_rcgr = 0xa1044,
  1220. .mnd_width = 0,
  1221. .hid_width = 5,
  1222. .parent_map = gcc_parent_map_0,
  1223. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1224. .clkr.hw.init = &(const struct clk_init_data) {
  1225. .name = "gcc_usb30_sec_mock_utmi_clk_src",
  1226. .parent_data = gcc_parent_data_0,
  1227. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1228. .flags = CLK_SET_RATE_PARENT,
  1229. .ops = &clk_rcg2_shared_ops,
  1230. },
  1231. };
  1232. static struct clk_rcg2 gcc_usb30_tert_master_clk_src = {
  1233. .cmd_rcgr = 0xa202c,
  1234. .mnd_width = 8,
  1235. .hid_width = 5,
  1236. .parent_map = gcc_parent_map_0,
  1237. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1238. .clkr.hw.init = &(const struct clk_init_data) {
  1239. .name = "gcc_usb30_tert_master_clk_src",
  1240. .parent_data = gcc_parent_data_0,
  1241. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1242. .flags = CLK_SET_RATE_PARENT,
  1243. .ops = &clk_rcg2_shared_ops,
  1244. },
  1245. };
  1246. static struct clk_rcg2 gcc_usb30_tert_mock_utmi_clk_src = {
  1247. .cmd_rcgr = 0xa2044,
  1248. .mnd_width = 0,
  1249. .hid_width = 5,
  1250. .parent_map = gcc_parent_map_0,
  1251. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1252. .clkr.hw.init = &(const struct clk_init_data) {
  1253. .name = "gcc_usb30_tert_mock_utmi_clk_src",
  1254. .parent_data = gcc_parent_data_0,
  1255. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1256. .flags = CLK_SET_RATE_PARENT,
  1257. .ops = &clk_rcg2_shared_ops,
  1258. },
  1259. };
  1260. static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
  1261. .cmd_rcgr = 0x172a0,
  1262. .mnd_width = 0,
  1263. .hid_width = 5,
  1264. .parent_map = gcc_parent_map_1,
  1265. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1266. .clkr.hw.init = &(const struct clk_init_data) {
  1267. .name = "gcc_usb3_mp_phy_aux_clk_src",
  1268. .parent_data = gcc_parent_data_1,
  1269. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1270. .flags = CLK_SET_RATE_PARENT,
  1271. .ops = &clk_rcg2_shared_ops,
  1272. },
  1273. };
  1274. static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
  1275. .cmd_rcgr = 0x39074,
  1276. .mnd_width = 0,
  1277. .hid_width = 5,
  1278. .parent_map = gcc_parent_map_1,
  1279. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1280. .clkr.hw.init = &(const struct clk_init_data) {
  1281. .name = "gcc_usb3_prim_phy_aux_clk_src",
  1282. .parent_data = gcc_parent_data_1,
  1283. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1284. .flags = CLK_SET_RATE_PARENT,
  1285. .ops = &clk_rcg2_shared_ops,
  1286. },
  1287. };
  1288. static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
  1289. .cmd_rcgr = 0xa1074,
  1290. .mnd_width = 0,
  1291. .hid_width = 5,
  1292. .parent_map = gcc_parent_map_1,
  1293. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1294. .clkr.hw.init = &(const struct clk_init_data) {
  1295. .name = "gcc_usb3_sec_phy_aux_clk_src",
  1296. .parent_data = gcc_parent_data_1,
  1297. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1298. .flags = CLK_SET_RATE_PARENT,
  1299. .ops = &clk_rcg2_shared_ops,
  1300. },
  1301. };
  1302. static struct clk_rcg2 gcc_usb3_tert_phy_aux_clk_src = {
  1303. .cmd_rcgr = 0xa2074,
  1304. .mnd_width = 0,
  1305. .hid_width = 5,
  1306. .parent_map = gcc_parent_map_1,
  1307. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1308. .clkr.hw.init = &(const struct clk_init_data) {
  1309. .name = "gcc_usb3_tert_phy_aux_clk_src",
  1310. .parent_data = gcc_parent_data_1,
  1311. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1312. .flags = CLK_SET_RATE_PARENT,
  1313. .ops = &clk_rcg2_shared_ops,
  1314. },
  1315. };
  1316. static const struct freq_tbl ftbl_gcc_usb4_0_master_clk_src[] = {
  1317. F(85714286, P_GCC_GPLL0_OUT_EVEN, 3.5, 0, 0),
  1318. F(175000000, P_GCC_GPLL8_OUT_MAIN, 4, 0, 0),
  1319. F(350000000, P_GCC_GPLL8_OUT_MAIN, 2, 0, 0),
  1320. { }
  1321. };
  1322. static struct clk_rcg2 gcc_usb4_0_master_clk_src = {
  1323. .cmd_rcgr = 0x9f024,
  1324. .mnd_width = 8,
  1325. .hid_width = 5,
  1326. .parent_map = gcc_parent_map_4,
  1327. .freq_tbl = ftbl_gcc_usb4_0_master_clk_src,
  1328. .clkr.hw.init = &(const struct clk_init_data) {
  1329. .name = "gcc_usb4_0_master_clk_src",
  1330. .parent_data = gcc_parent_data_4,
  1331. .num_parents = ARRAY_SIZE(gcc_parent_data_4),
  1332. .flags = CLK_SET_RATE_PARENT,
  1333. .ops = &clk_rcg2_shared_ops,
  1334. },
  1335. };
  1336. static const struct freq_tbl ftbl_gcc_usb4_0_phy_pcie_pipe_clk_src[] = {
  1337. F(19200000, P_BI_TCXO, 1, 0, 0),
  1338. F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),
  1339. F(250000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
  1340. { }
  1341. };
  1342. static struct clk_rcg2 gcc_usb4_0_phy_pcie_pipe_clk_src = {
  1343. .cmd_rcgr = 0x9f0e8,
  1344. .mnd_width = 0,
  1345. .hid_width = 5,
  1346. .parent_map = gcc_parent_map_5,
  1347. .freq_tbl = ftbl_gcc_usb4_0_phy_pcie_pipe_clk_src,
  1348. .clkr.hw.init = &(const struct clk_init_data) {
  1349. .name = "gcc_usb4_0_phy_pcie_pipe_clk_src",
  1350. .parent_data = gcc_parent_data_5,
  1351. .num_parents = ARRAY_SIZE(gcc_parent_data_5),
  1352. .flags = CLK_SET_RATE_PARENT,
  1353. .ops = &clk_rcg2_shared_ops,
  1354. },
  1355. };
  1356. static struct clk_rcg2 gcc_usb4_0_sb_if_clk_src = {
  1357. .cmd_rcgr = 0x9f08c,
  1358. .mnd_width = 0,
  1359. .hid_width = 5,
  1360. .parent_map = gcc_parent_map_3,
  1361. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1362. .clkr.hw.init = &(const struct clk_init_data) {
  1363. .name = "gcc_usb4_0_sb_if_clk_src",
  1364. .parent_data = gcc_parent_data_3,
  1365. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1366. .flags = CLK_SET_RATE_PARENT,
  1367. .ops = &clk_rcg2_shared_ops,
  1368. },
  1369. };
  1370. static const struct freq_tbl ftbl_gcc_usb4_0_tmu_clk_src[] = {
  1371. F(19200000, P_BI_TCXO, 1, 0, 0),
  1372. F(250000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
  1373. { }
  1374. };
  1375. static struct clk_rcg2 gcc_usb4_0_tmu_clk_src = {
  1376. .cmd_rcgr = 0x9f070,
  1377. .mnd_width = 0,
  1378. .hid_width = 5,
  1379. .parent_map = gcc_parent_map_6,
  1380. .freq_tbl = ftbl_gcc_usb4_0_tmu_clk_src,
  1381. .clkr.hw.init = &(const struct clk_init_data) {
  1382. .name = "gcc_usb4_0_tmu_clk_src",
  1383. .parent_data = gcc_parent_data_6,
  1384. .num_parents = ARRAY_SIZE(gcc_parent_data_6),
  1385. .flags = CLK_SET_RATE_PARENT,
  1386. .ops = &clk_rcg2_shared_ops,
  1387. },
  1388. };
  1389. static struct clk_rcg2 gcc_usb4_1_master_clk_src = {
  1390. .cmd_rcgr = 0x2b024,
  1391. .mnd_width = 8,
  1392. .hid_width = 5,
  1393. .parent_map = gcc_parent_map_4,
  1394. .freq_tbl = ftbl_gcc_usb4_0_master_clk_src,
  1395. .clkr.hw.init = &(const struct clk_init_data) {
  1396. .name = "gcc_usb4_1_master_clk_src",
  1397. .parent_data = gcc_parent_data_4,
  1398. .num_parents = ARRAY_SIZE(gcc_parent_data_4),
  1399. .flags = CLK_SET_RATE_PARENT,
  1400. .ops = &clk_rcg2_shared_ops,
  1401. },
  1402. };
  1403. static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src = {
  1404. .cmd_rcgr = 0x2b0e8,
  1405. .mnd_width = 0,
  1406. .hid_width = 5,
  1407. .parent_map = gcc_parent_map_5,
  1408. .freq_tbl = ftbl_gcc_usb4_0_phy_pcie_pipe_clk_src,
  1409. .clkr.hw.init = &(const struct clk_init_data) {
  1410. .name = "gcc_usb4_1_phy_pcie_pipe_clk_src",
  1411. .parent_data = gcc_parent_data_5,
  1412. .num_parents = ARRAY_SIZE(gcc_parent_data_5),
  1413. .flags = CLK_SET_RATE_PARENT,
  1414. .ops = &clk_rcg2_shared_ops,
  1415. },
  1416. };
  1417. static struct clk_rcg2 gcc_usb4_1_sb_if_clk_src = {
  1418. .cmd_rcgr = 0x2b08c,
  1419. .mnd_width = 0,
  1420. .hid_width = 5,
  1421. .parent_map = gcc_parent_map_3,
  1422. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1423. .clkr.hw.init = &(const struct clk_init_data) {
  1424. .name = "gcc_usb4_1_sb_if_clk_src",
  1425. .parent_data = gcc_parent_data_3,
  1426. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1427. .flags = CLK_SET_RATE_PARENT,
  1428. .ops = &clk_rcg2_shared_ops,
  1429. },
  1430. };
  1431. static struct clk_rcg2 gcc_usb4_1_tmu_clk_src = {
  1432. .cmd_rcgr = 0x2b070,
  1433. .mnd_width = 0,
  1434. .hid_width = 5,
  1435. .parent_map = gcc_parent_map_6,
  1436. .freq_tbl = ftbl_gcc_usb4_0_tmu_clk_src,
  1437. .clkr.hw.init = &(const struct clk_init_data) {
  1438. .name = "gcc_usb4_1_tmu_clk_src",
  1439. .parent_data = gcc_parent_data_6,
  1440. .num_parents = ARRAY_SIZE(gcc_parent_data_6),
  1441. .flags = CLK_SET_RATE_PARENT,
  1442. .ops = &clk_rcg2_shared_ops,
  1443. },
  1444. };
  1445. static struct clk_rcg2 gcc_usb4_2_master_clk_src = {
  1446. .cmd_rcgr = 0x11024,
  1447. .mnd_width = 8,
  1448. .hid_width = 5,
  1449. .parent_map = gcc_parent_map_4,
  1450. .freq_tbl = ftbl_gcc_usb4_0_master_clk_src,
  1451. .clkr.hw.init = &(const struct clk_init_data) {
  1452. .name = "gcc_usb4_2_master_clk_src",
  1453. .parent_data = gcc_parent_data_4,
  1454. .num_parents = ARRAY_SIZE(gcc_parent_data_4),
  1455. .flags = CLK_SET_RATE_PARENT,
  1456. .ops = &clk_rcg2_shared_ops,
  1457. },
  1458. };
  1459. static struct clk_rcg2 gcc_usb4_2_phy_pcie_pipe_clk_src = {
  1460. .cmd_rcgr = 0x110e8,
  1461. .mnd_width = 0,
  1462. .hid_width = 5,
  1463. .parent_map = gcc_parent_map_5,
  1464. .freq_tbl = ftbl_gcc_usb4_0_phy_pcie_pipe_clk_src,
  1465. .clkr.hw.init = &(const struct clk_init_data) {
  1466. .name = "gcc_usb4_2_phy_pcie_pipe_clk_src",
  1467. .parent_data = gcc_parent_data_5,
  1468. .num_parents = ARRAY_SIZE(gcc_parent_data_5),
  1469. .flags = CLK_SET_RATE_PARENT,
  1470. .ops = &clk_rcg2_shared_ops,
  1471. },
  1472. };
  1473. static struct clk_rcg2 gcc_usb4_2_sb_if_clk_src = {
  1474. .cmd_rcgr = 0x1108c,
  1475. .mnd_width = 0,
  1476. .hid_width = 5,
  1477. .parent_map = gcc_parent_map_3,
  1478. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1479. .clkr.hw.init = &(const struct clk_init_data) {
  1480. .name = "gcc_usb4_2_sb_if_clk_src",
  1481. .parent_data = gcc_parent_data_3,
  1482. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1483. .flags = CLK_SET_RATE_PARENT,
  1484. .ops = &clk_rcg2_shared_ops,
  1485. },
  1486. };
  1487. static struct clk_rcg2 gcc_usb4_2_tmu_clk_src = {
  1488. .cmd_rcgr = 0x11070,
  1489. .mnd_width = 0,
  1490. .hid_width = 5,
  1491. .parent_map = gcc_parent_map_6,
  1492. .freq_tbl = ftbl_gcc_usb4_0_tmu_clk_src,
  1493. .clkr.hw.init = &(const struct clk_init_data) {
  1494. .name = "gcc_usb4_2_tmu_clk_src",
  1495. .parent_data = gcc_parent_data_6,
  1496. .num_parents = ARRAY_SIZE(gcc_parent_data_6),
  1497. .flags = CLK_SET_RATE_PARENT,
  1498. .ops = &clk_rcg2_shared_ops,
  1499. },
  1500. };
  1501. static struct clk_regmap_phy_mux gcc_pcie_3_pipe_clk_src = {
  1502. .reg = 0x58088,
  1503. .clkr = {
  1504. .hw.init = &(struct clk_init_data){
  1505. .name = "gcc_pcie_3_pipe_clk_src",
  1506. .parent_data = &(const struct clk_parent_data){
  1507. .index = DT_PCIE_3_PIPE,
  1508. },
  1509. .num_parents = 1,
  1510. .ops = &clk_regmap_phy_mux_ops,
  1511. },
  1512. },
  1513. };
  1514. static struct clk_regmap_div gcc_pcie_3_pipe_div_clk_src = {
  1515. .reg = 0x5806c,
  1516. .shift = 0,
  1517. .width = 4,
  1518. .clkr.hw.init = &(const struct clk_init_data) {
  1519. .name = "gcc_pcie_3_pipe_div_clk_src",
  1520. .parent_hws = (const struct clk_hw*[]) {
  1521. &gcc_pcie_3_pipe_clk_src.clkr.hw,
  1522. },
  1523. .num_parents = 1,
  1524. .ops = &clk_regmap_div_ro_ops,
  1525. },
  1526. };
  1527. static struct clk_regmap_phy_mux gcc_pcie_4_pipe_clk_src = {
  1528. .reg = 0x6b07c,
  1529. .clkr = {
  1530. .hw.init = &(struct clk_init_data){
  1531. .name = "gcc_pcie_4_pipe_clk_src",
  1532. .parent_data = &(const struct clk_parent_data){
  1533. .index = DT_PCIE_4_PIPE,
  1534. },
  1535. .num_parents = 1,
  1536. .ops = &clk_regmap_phy_mux_ops,
  1537. },
  1538. },
  1539. };
  1540. static struct clk_regmap_div gcc_pcie_4_pipe_div_clk_src = {
  1541. .reg = 0x6b060,
  1542. .shift = 0,
  1543. .width = 4,
  1544. .clkr.hw.init = &(const struct clk_init_data) {
  1545. .name = "gcc_pcie_4_pipe_div_clk_src",
  1546. .parent_hws = (const struct clk_hw*[]) {
  1547. &gcc_pcie_4_pipe_clk_src.clkr.hw,
  1548. },
  1549. .num_parents = 1,
  1550. .ops = &clk_regmap_div_ro_ops,
  1551. },
  1552. };
  1553. static struct clk_regmap_phy_mux gcc_pcie_5_pipe_clk_src = {
  1554. .reg = 0x2f07c,
  1555. .clkr = {
  1556. .hw.init = &(struct clk_init_data){
  1557. .name = "gcc_pcie_5_pipe_clk_src",
  1558. .parent_data = &(const struct clk_parent_data){
  1559. .index = DT_PCIE_5_PIPE,
  1560. },
  1561. .num_parents = 1,
  1562. .ops = &clk_regmap_phy_mux_ops,
  1563. },
  1564. },
  1565. };
  1566. static struct clk_regmap_div gcc_pcie_5_pipe_div_clk_src = {
  1567. .reg = 0x2f060,
  1568. .shift = 0,
  1569. .width = 4,
  1570. .clkr.hw.init = &(const struct clk_init_data) {
  1571. .name = "gcc_pcie_5_pipe_div_clk_src",
  1572. .parent_hws = (const struct clk_hw*[]) {
  1573. &gcc_pcie_5_pipe_clk_src.clkr.hw,
  1574. },
  1575. .num_parents = 1,
  1576. .ops = &clk_regmap_div_ro_ops,
  1577. },
  1578. };
  1579. static struct clk_regmap_phy_mux gcc_pcie_6a_pipe_clk_src = {
  1580. .reg = 0x31088,
  1581. .clkr = {
  1582. .hw.init = &(struct clk_init_data){
  1583. .name = "gcc_pcie_6a_pipe_clk_src",
  1584. .parent_data = &(const struct clk_parent_data){
  1585. .index = DT_PCIE_6A_PIPE,
  1586. },
  1587. .num_parents = 1,
  1588. .ops = &clk_regmap_phy_mux_ops,
  1589. },
  1590. },
  1591. };
  1592. static struct clk_regmap_div gcc_pcie_6a_pipe_div_clk_src = {
  1593. .reg = 0x3106c,
  1594. .shift = 0,
  1595. .width = 4,
  1596. .clkr.hw.init = &(const struct clk_init_data) {
  1597. .name = "gcc_pcie_6a_pipe_div_clk_src",
  1598. .parent_hws = (const struct clk_hw*[]) {
  1599. &gcc_pcie_6a_pipe_clk_src.clkr.hw,
  1600. },
  1601. .num_parents = 1,
  1602. .ops = &clk_regmap_div_ro_ops,
  1603. },
  1604. };
  1605. static struct clk_regmap_phy_mux gcc_pcie_6b_pipe_clk_src = {
  1606. .reg = 0x8d088,
  1607. .clkr = {
  1608. .hw.init = &(struct clk_init_data){
  1609. .name = "gcc_pcie_6b_pipe_clk_src",
  1610. .parent_data = &(const struct clk_parent_data){
  1611. .index = DT_PCIE_6B_PIPE,
  1612. },
  1613. .num_parents = 1,
  1614. .ops = &clk_regmap_phy_mux_ops,
  1615. },
  1616. },
  1617. };
  1618. static struct clk_regmap_div gcc_pcie_6b_pipe_div_clk_src = {
  1619. .reg = 0x8d06c,
  1620. .shift = 0,
  1621. .width = 4,
  1622. .clkr.hw.init = &(const struct clk_init_data) {
  1623. .name = "gcc_pcie_6b_pipe_div_clk_src",
  1624. .parent_hws = (const struct clk_hw*[]) {
  1625. &gcc_pcie_6b_pipe_clk_src.clkr.hw,
  1626. },
  1627. .num_parents = 1,
  1628. .ops = &clk_regmap_div_ro_ops,
  1629. },
  1630. };
  1631. static struct clk_regmap_div gcc_qupv3_wrap0_s2_div_clk_src = {
  1632. .reg = 0x42284,
  1633. .shift = 0,
  1634. .width = 4,
  1635. .clkr.hw.init = &(const struct clk_init_data) {
  1636. .name = "gcc_qupv3_wrap0_s2_div_clk_src",
  1637. .parent_hws = (const struct clk_hw*[]) {
  1638. &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
  1639. },
  1640. .num_parents = 1,
  1641. .flags = CLK_SET_RATE_PARENT,
  1642. .ops = &clk_regmap_div_ro_ops,
  1643. },
  1644. };
  1645. static struct clk_regmap_div gcc_qupv3_wrap0_s3_div_clk_src = {
  1646. .reg = 0x423c4,
  1647. .shift = 0,
  1648. .width = 4,
  1649. .clkr.hw.init = &(const struct clk_init_data) {
  1650. .name = "gcc_qupv3_wrap0_s3_div_clk_src",
  1651. .parent_hws = (const struct clk_hw*[]) {
  1652. &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
  1653. },
  1654. .num_parents = 1,
  1655. .flags = CLK_SET_RATE_PARENT,
  1656. .ops = &clk_regmap_div_ro_ops,
  1657. },
  1658. };
  1659. static struct clk_regmap_div gcc_qupv3_wrap1_s2_div_clk_src = {
  1660. .reg = 0x18284,
  1661. .shift = 0,
  1662. .width = 4,
  1663. .clkr.hw.init = &(const struct clk_init_data) {
  1664. .name = "gcc_qupv3_wrap1_s2_div_clk_src",
  1665. .parent_hws = (const struct clk_hw*[]) {
  1666. &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
  1667. },
  1668. .num_parents = 1,
  1669. .flags = CLK_SET_RATE_PARENT,
  1670. .ops = &clk_regmap_div_ro_ops,
  1671. },
  1672. };
  1673. static struct clk_regmap_div gcc_qupv3_wrap1_s3_div_clk_src = {
  1674. .reg = 0x183c4,
  1675. .shift = 0,
  1676. .width = 4,
  1677. .clkr.hw.init = &(const struct clk_init_data) {
  1678. .name = "gcc_qupv3_wrap1_s3_div_clk_src",
  1679. .parent_hws = (const struct clk_hw*[]) {
  1680. &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
  1681. },
  1682. .num_parents = 1,
  1683. .flags = CLK_SET_RATE_PARENT,
  1684. .ops = &clk_regmap_div_ro_ops,
  1685. },
  1686. };
  1687. static struct clk_regmap_div gcc_qupv3_wrap2_s2_div_clk_src = {
  1688. .reg = 0x1e284,
  1689. .shift = 0,
  1690. .width = 4,
  1691. .clkr.hw.init = &(const struct clk_init_data) {
  1692. .name = "gcc_qupv3_wrap2_s2_div_clk_src",
  1693. .parent_hws = (const struct clk_hw*[]) {
  1694. &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
  1695. },
  1696. .num_parents = 1,
  1697. .flags = CLK_SET_RATE_PARENT,
  1698. .ops = &clk_regmap_div_ro_ops,
  1699. },
  1700. };
  1701. static struct clk_regmap_div gcc_qupv3_wrap2_s3_div_clk_src = {
  1702. .reg = 0x1e3c4,
  1703. .shift = 0,
  1704. .width = 4,
  1705. .clkr.hw.init = &(const struct clk_init_data) {
  1706. .name = "gcc_qupv3_wrap2_s3_div_clk_src",
  1707. .parent_hws = (const struct clk_hw*[]) {
  1708. &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
  1709. },
  1710. .num_parents = 1,
  1711. .flags = CLK_SET_RATE_PARENT,
  1712. .ops = &clk_regmap_div_ro_ops,
  1713. },
  1714. };
  1715. static struct clk_regmap_div gcc_usb20_mock_utmi_postdiv_clk_src = {
  1716. .reg = 0x29284,
  1717. .shift = 0,
  1718. .width = 4,
  1719. .clkr.hw.init = &(const struct clk_init_data) {
  1720. .name = "gcc_usb20_mock_utmi_postdiv_clk_src",
  1721. .parent_hws = (const struct clk_hw*[]) {
  1722. &gcc_usb20_mock_utmi_clk_src.clkr.hw,
  1723. },
  1724. .num_parents = 1,
  1725. .flags = CLK_SET_RATE_PARENT,
  1726. .ops = &clk_regmap_div_ro_ops,
  1727. },
  1728. };
  1729. static struct clk_regmap_div gcc_usb30_mp_mock_utmi_postdiv_clk_src = {
  1730. .reg = 0x17284,
  1731. .shift = 0,
  1732. .width = 4,
  1733. .clkr.hw.init = &(const struct clk_init_data) {
  1734. .name = "gcc_usb30_mp_mock_utmi_postdiv_clk_src",
  1735. .parent_hws = (const struct clk_hw*[]) {
  1736. &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw,
  1737. },
  1738. .num_parents = 1,
  1739. .flags = CLK_SET_RATE_PARENT,
  1740. .ops = &clk_regmap_div_ro_ops,
  1741. },
  1742. };
  1743. static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
  1744. .reg = 0x3905c,
  1745. .shift = 0,
  1746. .width = 4,
  1747. .clkr.hw.init = &(const struct clk_init_data) {
  1748. .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
  1749. .parent_hws = (const struct clk_hw*[]) {
  1750. &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
  1751. },
  1752. .num_parents = 1,
  1753. .flags = CLK_SET_RATE_PARENT,
  1754. .ops = &clk_regmap_div_ro_ops,
  1755. },
  1756. };
  1757. static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {
  1758. .reg = 0xa105c,
  1759. .shift = 0,
  1760. .width = 4,
  1761. .clkr.hw.init = &(const struct clk_init_data) {
  1762. .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
  1763. .parent_hws = (const struct clk_hw*[]) {
  1764. &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
  1765. },
  1766. .num_parents = 1,
  1767. .flags = CLK_SET_RATE_PARENT,
  1768. .ops = &clk_regmap_div_ro_ops,
  1769. },
  1770. };
  1771. static struct clk_regmap_div gcc_usb30_tert_mock_utmi_postdiv_clk_src = {
  1772. .reg = 0xa205c,
  1773. .shift = 0,
  1774. .width = 4,
  1775. .clkr.hw.init = &(const struct clk_init_data) {
  1776. .name = "gcc_usb30_tert_mock_utmi_postdiv_clk_src",
  1777. .parent_hws = (const struct clk_hw*[]) {
  1778. &gcc_usb30_tert_mock_utmi_clk_src.clkr.hw,
  1779. },
  1780. .num_parents = 1,
  1781. .flags = CLK_SET_RATE_PARENT,
  1782. .ops = &clk_regmap_div_ro_ops,
  1783. },
  1784. };
  1785. static struct clk_branch gcc_aggre_noc_usb_north_axi_clk = {
  1786. .halt_reg = 0x2d17c,
  1787. .halt_check = BRANCH_HALT_VOTED,
  1788. .hwcg_reg = 0x2d17c,
  1789. .hwcg_bit = 1,
  1790. .clkr = {
  1791. .enable_reg = 0x2d17c,
  1792. .enable_mask = BIT(0),
  1793. .hw.init = &(const struct clk_init_data) {
  1794. .name = "gcc_aggre_noc_usb_north_axi_clk",
  1795. .ops = &clk_branch2_ops,
  1796. },
  1797. },
  1798. };
  1799. static struct clk_branch gcc_aggre_noc_usb_south_axi_clk = {
  1800. .halt_reg = 0x2d174,
  1801. .halt_check = BRANCH_HALT_VOTED,
  1802. .hwcg_reg = 0x2d174,
  1803. .hwcg_bit = 1,
  1804. .clkr = {
  1805. .enable_reg = 0x2d174,
  1806. .enable_mask = BIT(0),
  1807. .hw.init = &(const struct clk_init_data) {
  1808. .name = "gcc_aggre_noc_usb_south_axi_clk",
  1809. .ops = &clk_branch2_ops,
  1810. },
  1811. },
  1812. };
  1813. static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
  1814. .halt_reg = 0x770e4,
  1815. .halt_check = BRANCH_HALT_VOTED,
  1816. .hwcg_reg = 0x770e4,
  1817. .hwcg_bit = 1,
  1818. .clkr = {
  1819. .enable_reg = 0x770e4,
  1820. .enable_mask = BIT(0),
  1821. .hw.init = &(const struct clk_init_data) {
  1822. .name = "gcc_aggre_ufs_phy_axi_clk",
  1823. .parent_hws = (const struct clk_hw*[]) {
  1824. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  1825. },
  1826. .num_parents = 1,
  1827. .flags = CLK_SET_RATE_PARENT,
  1828. .ops = &clk_branch2_ops,
  1829. },
  1830. },
  1831. };
  1832. static struct clk_branch gcc_aggre_usb2_prim_axi_clk = {
  1833. .halt_reg = 0x2928c,
  1834. .halt_check = BRANCH_HALT_VOTED,
  1835. .hwcg_reg = 0x2928c,
  1836. .hwcg_bit = 1,
  1837. .clkr = {
  1838. .enable_reg = 0x2928c,
  1839. .enable_mask = BIT(0),
  1840. .hw.init = &(const struct clk_init_data) {
  1841. .name = "gcc_aggre_usb2_prim_axi_clk",
  1842. .parent_hws = (const struct clk_hw*[]) {
  1843. &gcc_usb20_master_clk_src.clkr.hw,
  1844. },
  1845. .num_parents = 1,
  1846. .flags = CLK_SET_RATE_PARENT,
  1847. .ops = &clk_branch2_ops,
  1848. },
  1849. },
  1850. };
  1851. static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
  1852. .halt_reg = 0x173d0,
  1853. .halt_check = BRANCH_HALT_VOTED,
  1854. .hwcg_reg = 0x173d0,
  1855. .hwcg_bit = 1,
  1856. .clkr = {
  1857. .enable_reg = 0x173d0,
  1858. .enable_mask = BIT(0),
  1859. .hw.init = &(const struct clk_init_data) {
  1860. .name = "gcc_aggre_usb3_mp_axi_clk",
  1861. .parent_hws = (const struct clk_hw*[]) {
  1862. &gcc_usb30_mp_master_clk_src.clkr.hw,
  1863. },
  1864. .num_parents = 1,
  1865. .flags = CLK_SET_RATE_PARENT,
  1866. .ops = &clk_branch2_ops,
  1867. },
  1868. },
  1869. };
  1870. static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
  1871. .halt_reg = 0x39090,
  1872. .halt_check = BRANCH_HALT_VOTED,
  1873. .hwcg_reg = 0x39090,
  1874. .hwcg_bit = 1,
  1875. .clkr = {
  1876. .enable_reg = 0x39090,
  1877. .enable_mask = BIT(0),
  1878. .hw.init = &(const struct clk_init_data) {
  1879. .name = "gcc_aggre_usb3_prim_axi_clk",
  1880. .parent_hws = (const struct clk_hw*[]) {
  1881. &gcc_usb30_prim_master_clk_src.clkr.hw,
  1882. },
  1883. .num_parents = 1,
  1884. .flags = CLK_SET_RATE_PARENT,
  1885. .ops = &clk_branch2_ops,
  1886. },
  1887. },
  1888. };
  1889. static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
  1890. .halt_reg = 0xa1090,
  1891. .halt_check = BRANCH_HALT_VOTED,
  1892. .hwcg_reg = 0xa1090,
  1893. .hwcg_bit = 1,
  1894. .clkr = {
  1895. .enable_reg = 0xa1090,
  1896. .enable_mask = BIT(0),
  1897. .hw.init = &(const struct clk_init_data) {
  1898. .name = "gcc_aggre_usb3_sec_axi_clk",
  1899. .parent_hws = (const struct clk_hw*[]) {
  1900. &gcc_usb30_sec_master_clk_src.clkr.hw,
  1901. },
  1902. .num_parents = 1,
  1903. .flags = CLK_SET_RATE_PARENT,
  1904. .ops = &clk_branch2_ops,
  1905. },
  1906. },
  1907. };
  1908. static struct clk_branch gcc_aggre_usb3_tert_axi_clk = {
  1909. .halt_reg = 0xa2090,
  1910. .halt_check = BRANCH_HALT_VOTED,
  1911. .hwcg_reg = 0xa2090,
  1912. .hwcg_bit = 1,
  1913. .clkr = {
  1914. .enable_reg = 0xa2090,
  1915. .enable_mask = BIT(0),
  1916. .hw.init = &(const struct clk_init_data) {
  1917. .name = "gcc_aggre_usb3_tert_axi_clk",
  1918. .parent_hws = (const struct clk_hw*[]) {
  1919. &gcc_usb30_tert_master_clk_src.clkr.hw,
  1920. },
  1921. .num_parents = 1,
  1922. .flags = CLK_SET_RATE_PARENT,
  1923. .ops = &clk_branch2_ops,
  1924. },
  1925. },
  1926. };
  1927. static struct clk_branch gcc_aggre_usb4_0_axi_clk = {
  1928. .halt_reg = 0x9f118,
  1929. .halt_check = BRANCH_HALT_VOTED,
  1930. .hwcg_reg = 0x9f118,
  1931. .hwcg_bit = 1,
  1932. .clkr = {
  1933. .enable_reg = 0x9f118,
  1934. .enable_mask = BIT(0),
  1935. .hw.init = &(const struct clk_init_data) {
  1936. .name = "gcc_aggre_usb4_0_axi_clk",
  1937. .parent_hws = (const struct clk_hw*[]) {
  1938. &gcc_usb4_0_master_clk_src.clkr.hw,
  1939. },
  1940. .num_parents = 1,
  1941. .flags = CLK_SET_RATE_PARENT,
  1942. .ops = &clk_branch2_ops,
  1943. },
  1944. },
  1945. };
  1946. static struct clk_branch gcc_aggre_usb4_1_axi_clk = {
  1947. .halt_reg = 0x2b118,
  1948. .halt_check = BRANCH_HALT_VOTED,
  1949. .hwcg_reg = 0x2b118,
  1950. .hwcg_bit = 1,
  1951. .clkr = {
  1952. .enable_reg = 0x2b118,
  1953. .enable_mask = BIT(0),
  1954. .hw.init = &(const struct clk_init_data) {
  1955. .name = "gcc_aggre_usb4_1_axi_clk",
  1956. .parent_hws = (const struct clk_hw*[]) {
  1957. &gcc_usb4_1_master_clk_src.clkr.hw,
  1958. },
  1959. .num_parents = 1,
  1960. .flags = CLK_SET_RATE_PARENT,
  1961. .ops = &clk_branch2_ops,
  1962. },
  1963. },
  1964. };
  1965. static struct clk_branch gcc_aggre_usb4_2_axi_clk = {
  1966. .halt_reg = 0x11118,
  1967. .halt_check = BRANCH_HALT_VOTED,
  1968. .hwcg_reg = 0x11118,
  1969. .hwcg_bit = 1,
  1970. .clkr = {
  1971. .enable_reg = 0x11118,
  1972. .enable_mask = BIT(0),
  1973. .hw.init = &(const struct clk_init_data) {
  1974. .name = "gcc_aggre_usb4_2_axi_clk",
  1975. .parent_hws = (const struct clk_hw*[]) {
  1976. &gcc_usb4_2_master_clk_src.clkr.hw,
  1977. },
  1978. .num_parents = 1,
  1979. .flags = CLK_SET_RATE_PARENT,
  1980. .ops = &clk_branch2_ops,
  1981. },
  1982. },
  1983. };
  1984. static struct clk_branch gcc_aggre_usb_noc_axi_clk = {
  1985. .halt_reg = 0x2d034,
  1986. .halt_check = BRANCH_HALT_VOTED,
  1987. .hwcg_reg = 0x2d034,
  1988. .hwcg_bit = 1,
  1989. .clkr = {
  1990. .enable_reg = 0x2d034,
  1991. .enable_mask = BIT(0),
  1992. .hw.init = &(const struct clk_init_data) {
  1993. .name = "gcc_aggre_usb_noc_axi_clk",
  1994. .ops = &clk_branch2_ops,
  1995. },
  1996. },
  1997. };
  1998. static struct clk_branch gcc_av1e_ahb_clk = {
  1999. .halt_reg = 0x4a004,
  2000. .halt_check = BRANCH_HALT_VOTED,
  2001. .hwcg_reg = 0x4a004,
  2002. .hwcg_bit = 1,
  2003. .clkr = {
  2004. .enable_reg = 0x4a004,
  2005. .enable_mask = BIT(0),
  2006. .hw.init = &(const struct clk_init_data) {
  2007. .name = "gcc_av1e_ahb_clk",
  2008. .ops = &clk_branch2_ops,
  2009. },
  2010. },
  2011. };
  2012. static struct clk_branch gcc_av1e_axi_clk = {
  2013. .halt_reg = 0x4a008,
  2014. .halt_check = BRANCH_HALT_SKIP,
  2015. .hwcg_reg = 0x4a008,
  2016. .hwcg_bit = 1,
  2017. .clkr = {
  2018. .enable_reg = 0x4a008,
  2019. .enable_mask = BIT(0),
  2020. .hw.init = &(const struct clk_init_data) {
  2021. .name = "gcc_av1e_axi_clk",
  2022. .ops = &clk_branch2_ops,
  2023. },
  2024. },
  2025. };
  2026. static struct clk_branch gcc_av1e_xo_clk = {
  2027. .halt_reg = 0x4a014,
  2028. .halt_check = BRANCH_HALT,
  2029. .clkr = {
  2030. .enable_reg = 0x4a014,
  2031. .enable_mask = BIT(0),
  2032. .hw.init = &(const struct clk_init_data) {
  2033. .name = "gcc_av1e_xo_clk",
  2034. .ops = &clk_branch2_ops,
  2035. },
  2036. },
  2037. };
  2038. static struct clk_branch gcc_boot_rom_ahb_clk = {
  2039. .halt_reg = 0x38004,
  2040. .halt_check = BRANCH_HALT_VOTED,
  2041. .hwcg_reg = 0x38004,
  2042. .hwcg_bit = 1,
  2043. .clkr = {
  2044. .enable_reg = 0x52000,
  2045. .enable_mask = BIT(10),
  2046. .hw.init = &(const struct clk_init_data) {
  2047. .name = "gcc_boot_rom_ahb_clk",
  2048. .ops = &clk_branch2_ops,
  2049. },
  2050. },
  2051. };
  2052. static struct clk_branch gcc_camera_hf_axi_clk = {
  2053. .halt_reg = 0x26010,
  2054. .halt_check = BRANCH_HALT_SKIP,
  2055. .hwcg_reg = 0x26010,
  2056. .hwcg_bit = 1,
  2057. .clkr = {
  2058. .enable_reg = 0x26010,
  2059. .enable_mask = BIT(0),
  2060. .hw.init = &(const struct clk_init_data) {
  2061. .name = "gcc_camera_hf_axi_clk",
  2062. .ops = &clk_branch2_ops,
  2063. },
  2064. },
  2065. };
  2066. static struct clk_branch gcc_camera_sf_axi_clk = {
  2067. .halt_reg = 0x2601c,
  2068. .halt_check = BRANCH_HALT_SKIP,
  2069. .hwcg_reg = 0x2601c,
  2070. .hwcg_bit = 1,
  2071. .clkr = {
  2072. .enable_reg = 0x2601c,
  2073. .enable_mask = BIT(0),
  2074. .hw.init = &(const struct clk_init_data) {
  2075. .name = "gcc_camera_sf_axi_clk",
  2076. .ops = &clk_branch2_ops,
  2077. },
  2078. },
  2079. };
  2080. static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
  2081. .halt_reg = 0x10028,
  2082. .halt_check = BRANCH_HALT_VOTED,
  2083. .hwcg_reg = 0x10028,
  2084. .hwcg_bit = 1,
  2085. .clkr = {
  2086. .enable_reg = 0x52028,
  2087. .enable_mask = BIT(20),
  2088. .hw.init = &(const struct clk_init_data) {
  2089. .name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
  2090. .ops = &clk_branch2_ops,
  2091. },
  2092. },
  2093. };
  2094. static struct clk_branch gcc_cfg_noc_pcie_anoc_north_ahb_clk = {
  2095. .halt_reg = 0x1002c,
  2096. .halt_check = BRANCH_HALT_VOTED,
  2097. .hwcg_reg = 0x1002c,
  2098. .hwcg_bit = 1,
  2099. .clkr = {
  2100. .enable_reg = 0x52028,
  2101. .enable_mask = BIT(22),
  2102. .hw.init = &(const struct clk_init_data) {
  2103. .name = "gcc_cfg_noc_pcie_anoc_north_ahb_clk",
  2104. .ops = &clk_branch2_ops,
  2105. },
  2106. },
  2107. };
  2108. static struct clk_branch gcc_cfg_noc_pcie_anoc_south_ahb_clk = {
  2109. .halt_reg = 0x10030,
  2110. .halt_check = BRANCH_HALT_VOTED,
  2111. .hwcg_reg = 0x10030,
  2112. .hwcg_bit = 1,
  2113. .clkr = {
  2114. .enable_reg = 0x52000,
  2115. .enable_mask = BIT(20),
  2116. .hw.init = &(const struct clk_init_data) {
  2117. .name = "gcc_cfg_noc_pcie_anoc_south_ahb_clk",
  2118. .ops = &clk_branch2_ops,
  2119. },
  2120. },
  2121. };
  2122. static struct clk_branch gcc_cfg_noc_usb2_prim_axi_clk = {
  2123. .halt_reg = 0x29288,
  2124. .halt_check = BRANCH_HALT_VOTED,
  2125. .hwcg_reg = 0x29288,
  2126. .hwcg_bit = 1,
  2127. .clkr = {
  2128. .enable_reg = 0x29288,
  2129. .enable_mask = BIT(0),
  2130. .hw.init = &(const struct clk_init_data) {
  2131. .name = "gcc_cfg_noc_usb2_prim_axi_clk",
  2132. .parent_hws = (const struct clk_hw*[]) {
  2133. &gcc_usb20_master_clk_src.clkr.hw,
  2134. },
  2135. .num_parents = 1,
  2136. .flags = CLK_SET_RATE_PARENT,
  2137. .ops = &clk_branch2_ops,
  2138. },
  2139. },
  2140. };
  2141. static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
  2142. .halt_reg = 0x173cc,
  2143. .halt_check = BRANCH_HALT_VOTED,
  2144. .hwcg_reg = 0x173cc,
  2145. .hwcg_bit = 1,
  2146. .clkr = {
  2147. .enable_reg = 0x173cc,
  2148. .enable_mask = BIT(0),
  2149. .hw.init = &(const struct clk_init_data) {
  2150. .name = "gcc_cfg_noc_usb3_mp_axi_clk",
  2151. .parent_hws = (const struct clk_hw*[]) {
  2152. &gcc_usb30_mp_master_clk_src.clkr.hw,
  2153. },
  2154. .num_parents = 1,
  2155. .flags = CLK_SET_RATE_PARENT,
  2156. .ops = &clk_branch2_ops,
  2157. },
  2158. },
  2159. };
  2160. static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
  2161. .halt_reg = 0x3908c,
  2162. .halt_check = BRANCH_HALT_VOTED,
  2163. .hwcg_reg = 0x3908c,
  2164. .hwcg_bit = 1,
  2165. .clkr = {
  2166. .enable_reg = 0x3908c,
  2167. .enable_mask = BIT(0),
  2168. .hw.init = &(const struct clk_init_data) {
  2169. .name = "gcc_cfg_noc_usb3_prim_axi_clk",
  2170. .parent_hws = (const struct clk_hw*[]) {
  2171. &gcc_usb30_prim_master_clk_src.clkr.hw,
  2172. },
  2173. .num_parents = 1,
  2174. .flags = CLK_SET_RATE_PARENT,
  2175. .ops = &clk_branch2_ops,
  2176. },
  2177. },
  2178. };
  2179. static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
  2180. .halt_reg = 0xa108c,
  2181. .halt_check = BRANCH_HALT_VOTED,
  2182. .hwcg_reg = 0xa108c,
  2183. .hwcg_bit = 1,
  2184. .clkr = {
  2185. .enable_reg = 0xa108c,
  2186. .enable_mask = BIT(0),
  2187. .hw.init = &(const struct clk_init_data) {
  2188. .name = "gcc_cfg_noc_usb3_sec_axi_clk",
  2189. .parent_hws = (const struct clk_hw*[]) {
  2190. &gcc_usb30_sec_master_clk_src.clkr.hw,
  2191. },
  2192. .num_parents = 1,
  2193. .flags = CLK_SET_RATE_PARENT,
  2194. .ops = &clk_branch2_ops,
  2195. },
  2196. },
  2197. };
  2198. static struct clk_branch gcc_cfg_noc_usb3_tert_axi_clk = {
  2199. .halt_reg = 0xa208c,
  2200. .halt_check = BRANCH_HALT_VOTED,
  2201. .hwcg_reg = 0xa208c,
  2202. .hwcg_bit = 1,
  2203. .clkr = {
  2204. .enable_reg = 0xa208c,
  2205. .enable_mask = BIT(0),
  2206. .hw.init = &(const struct clk_init_data) {
  2207. .name = "gcc_cfg_noc_usb3_tert_axi_clk",
  2208. .parent_hws = (const struct clk_hw*[]) {
  2209. &gcc_usb30_tert_master_clk_src.clkr.hw,
  2210. },
  2211. .num_parents = 1,
  2212. .flags = CLK_SET_RATE_PARENT,
  2213. .ops = &clk_branch2_ops,
  2214. },
  2215. },
  2216. };
  2217. static struct clk_branch gcc_cfg_noc_usb_anoc_ahb_clk = {
  2218. .halt_reg = 0x2d024,
  2219. .halt_check = BRANCH_HALT_VOTED,
  2220. .hwcg_reg = 0x2d024,
  2221. .hwcg_bit = 1,
  2222. .clkr = {
  2223. .enable_reg = 0x52028,
  2224. .enable_mask = BIT(21),
  2225. .hw.init = &(const struct clk_init_data) {
  2226. .name = "gcc_cfg_noc_usb_anoc_ahb_clk",
  2227. .ops = &clk_branch2_ops,
  2228. },
  2229. },
  2230. };
  2231. static struct clk_branch gcc_cfg_noc_usb_anoc_north_ahb_clk = {
  2232. .halt_reg = 0x2d028,
  2233. .halt_check = BRANCH_HALT_VOTED,
  2234. .hwcg_reg = 0x2d028,
  2235. .hwcg_bit = 1,
  2236. .clkr = {
  2237. .enable_reg = 0x52028,
  2238. .enable_mask = BIT(23),
  2239. .hw.init = &(const struct clk_init_data) {
  2240. .name = "gcc_cfg_noc_usb_anoc_north_ahb_clk",
  2241. .ops = &clk_branch2_ops,
  2242. },
  2243. },
  2244. };
  2245. static struct clk_branch gcc_cfg_noc_usb_anoc_south_ahb_clk = {
  2246. .halt_reg = 0x2d02c,
  2247. .halt_check = BRANCH_HALT_VOTED,
  2248. .hwcg_reg = 0x2d02c,
  2249. .hwcg_bit = 1,
  2250. .clkr = {
  2251. .enable_reg = 0x52018,
  2252. .enable_mask = BIT(7),
  2253. .hw.init = &(const struct clk_init_data) {
  2254. .name = "gcc_cfg_noc_usb_anoc_south_ahb_clk",
  2255. .ops = &clk_branch2_ops,
  2256. },
  2257. },
  2258. };
  2259. static struct clk_branch gcc_cnoc_pcie1_tunnel_clk = {
  2260. .halt_reg = 0x2c2b4,
  2261. .halt_check = BRANCH_HALT_VOTED,
  2262. .clkr = {
  2263. .enable_reg = 0x52010,
  2264. .enable_mask = BIT(30),
  2265. .hw.init = &(const struct clk_init_data) {
  2266. .name = "gcc_cnoc_pcie1_tunnel_clk",
  2267. .ops = &clk_branch2_ops,
  2268. },
  2269. },
  2270. };
  2271. static struct clk_branch gcc_cnoc_pcie2_tunnel_clk = {
  2272. .halt_reg = 0x132b4,
  2273. .halt_check = BRANCH_HALT_VOTED,
  2274. .clkr = {
  2275. .enable_reg = 0x52010,
  2276. .enable_mask = BIT(31),
  2277. .hw.init = &(const struct clk_init_data) {
  2278. .name = "gcc_cnoc_pcie2_tunnel_clk",
  2279. .ops = &clk_branch2_ops,
  2280. },
  2281. },
  2282. };
  2283. static struct clk_branch gcc_cnoc_pcie_north_sf_axi_clk = {
  2284. .halt_reg = 0x10014,
  2285. .halt_check = BRANCH_HALT_VOTED,
  2286. .hwcg_reg = 0x10014,
  2287. .hwcg_bit = 1,
  2288. .clkr = {
  2289. .enable_reg = 0x52008,
  2290. .enable_mask = BIT(6),
  2291. .hw.init = &(const struct clk_init_data) {
  2292. .name = "gcc_cnoc_pcie_north_sf_axi_clk",
  2293. .ops = &clk_branch2_ops,
  2294. },
  2295. },
  2296. };
  2297. static struct clk_branch gcc_cnoc_pcie_south_sf_axi_clk = {
  2298. .halt_reg = 0x10018,
  2299. .halt_check = BRANCH_HALT_VOTED,
  2300. .hwcg_reg = 0x10018,
  2301. .hwcg_bit = 1,
  2302. .clkr = {
  2303. .enable_reg = 0x52028,
  2304. .enable_mask = BIT(12),
  2305. .hw.init = &(const struct clk_init_data) {
  2306. .name = "gcc_cnoc_pcie_south_sf_axi_clk",
  2307. .ops = &clk_branch2_ops,
  2308. },
  2309. },
  2310. };
  2311. static struct clk_branch gcc_cnoc_pcie_tunnel_clk = {
  2312. .halt_reg = 0xa02b4,
  2313. .halt_check = BRANCH_HALT_VOTED,
  2314. .hwcg_reg = 0xa02b4,
  2315. .hwcg_bit = 1,
  2316. .clkr = {
  2317. .enable_reg = 0x52010,
  2318. .enable_mask = BIT(29),
  2319. .hw.init = &(const struct clk_init_data) {
  2320. .name = "gcc_cnoc_pcie_tunnel_clk",
  2321. .ops = &clk_branch2_ops,
  2322. },
  2323. },
  2324. };
  2325. static struct clk_branch gcc_ddrss_gpu_axi_clk = {
  2326. .halt_reg = 0x7115c,
  2327. .halt_check = BRANCH_HALT_SKIP,
  2328. .hwcg_reg = 0x7115c,
  2329. .hwcg_bit = 1,
  2330. .clkr = {
  2331. .enable_reg = 0x7115c,
  2332. .enable_mask = BIT(0),
  2333. .hw.init = &(const struct clk_init_data) {
  2334. .name = "gcc_ddrss_gpu_axi_clk",
  2335. .ops = &clk_branch2_ops,
  2336. },
  2337. },
  2338. };
  2339. static struct clk_branch gcc_disp_hf_axi_clk = {
  2340. .halt_reg = 0x2700c,
  2341. .halt_check = BRANCH_HALT_SKIP,
  2342. .hwcg_reg = 0x2700c,
  2343. .hwcg_bit = 1,
  2344. .clkr = {
  2345. .enable_reg = 0x2700c,
  2346. .enable_mask = BIT(0),
  2347. .hw.init = &(const struct clk_init_data) {
  2348. .name = "gcc_disp_hf_axi_clk",
  2349. .ops = &clk_branch2_ops,
  2350. },
  2351. },
  2352. };
  2353. static struct clk_branch gcc_disp_xo_clk = {
  2354. .halt_reg = 0x27018,
  2355. .halt_check = BRANCH_HALT,
  2356. .clkr = {
  2357. .enable_reg = 0x27018,
  2358. .enable_mask = BIT(0),
  2359. .hw.init = &(const struct clk_init_data) {
  2360. .name = "gcc_disp_xo_clk",
  2361. .ops = &clk_branch2_ops,
  2362. },
  2363. },
  2364. };
  2365. static struct clk_branch gcc_gp1_clk = {
  2366. .halt_reg = 0x64000,
  2367. .halt_check = BRANCH_HALT,
  2368. .clkr = {
  2369. .enable_reg = 0x64000,
  2370. .enable_mask = BIT(0),
  2371. .hw.init = &(const struct clk_init_data) {
  2372. .name = "gcc_gp1_clk",
  2373. .parent_hws = (const struct clk_hw*[]) {
  2374. &gcc_gp1_clk_src.clkr.hw,
  2375. },
  2376. .num_parents = 1,
  2377. .flags = CLK_SET_RATE_PARENT,
  2378. .ops = &clk_branch2_ops,
  2379. },
  2380. },
  2381. };
  2382. static struct clk_branch gcc_gp2_clk = {
  2383. .halt_reg = 0x65000,
  2384. .halt_check = BRANCH_HALT,
  2385. .clkr = {
  2386. .enable_reg = 0x65000,
  2387. .enable_mask = BIT(0),
  2388. .hw.init = &(const struct clk_init_data) {
  2389. .name = "gcc_gp2_clk",
  2390. .parent_hws = (const struct clk_hw*[]) {
  2391. &gcc_gp2_clk_src.clkr.hw,
  2392. },
  2393. .num_parents = 1,
  2394. .flags = CLK_SET_RATE_PARENT,
  2395. .ops = &clk_branch2_ops,
  2396. },
  2397. },
  2398. };
  2399. static struct clk_branch gcc_gp3_clk = {
  2400. .halt_reg = 0x66000,
  2401. .halt_check = BRANCH_HALT,
  2402. .clkr = {
  2403. .enable_reg = 0x66000,
  2404. .enable_mask = BIT(0),
  2405. .hw.init = &(const struct clk_init_data) {
  2406. .name = "gcc_gp3_clk",
  2407. .parent_hws = (const struct clk_hw*[]) {
  2408. &gcc_gp3_clk_src.clkr.hw,
  2409. },
  2410. .num_parents = 1,
  2411. .flags = CLK_SET_RATE_PARENT,
  2412. .ops = &clk_branch2_ops,
  2413. },
  2414. },
  2415. };
  2416. static struct clk_branch gcc_gpu_cfg_ahb_clk = {
  2417. .halt_reg = 0x71004,
  2418. .halt_check = BRANCH_HALT_VOTED,
  2419. .hwcg_reg = 0x71004,
  2420. .hwcg_bit = 1,
  2421. .clkr = {
  2422. .enable_reg = 0x71004,
  2423. .enable_mask = BIT(0),
  2424. .hw.init = &(const struct clk_init_data) {
  2425. .name = "gcc_gpu_cfg_ahb_clk",
  2426. .ops = &clk_branch2_ops,
  2427. },
  2428. },
  2429. };
  2430. static struct clk_branch gcc_gpu_gpll0_cph_clk_src = {
  2431. .halt_check = BRANCH_HALT_DELAY,
  2432. .clkr = {
  2433. .enable_reg = 0x52000,
  2434. .enable_mask = BIT(15),
  2435. .hw.init = &(const struct clk_init_data) {
  2436. .name = "gcc_gpu_gpll0_cph_clk_src",
  2437. .parent_hws = (const struct clk_hw*[]) {
  2438. &gcc_gpll0.clkr.hw,
  2439. },
  2440. .num_parents = 1,
  2441. .flags = CLK_SET_RATE_PARENT,
  2442. .ops = &clk_branch2_ops,
  2443. },
  2444. },
  2445. };
  2446. static struct clk_branch gcc_gpu_gpll0_div_cph_clk_src = {
  2447. .halt_check = BRANCH_HALT_DELAY,
  2448. .clkr = {
  2449. .enable_reg = 0x52000,
  2450. .enable_mask = BIT(16),
  2451. .hw.init = &(const struct clk_init_data) {
  2452. .name = "gcc_gpu_gpll0_div_cph_clk_src",
  2453. .parent_hws = (const struct clk_hw*[]) {
  2454. &gcc_gpll0_out_even.clkr.hw,
  2455. },
  2456. .num_parents = 1,
  2457. .flags = CLK_SET_RATE_PARENT,
  2458. .ops = &clk_branch2_ops,
  2459. },
  2460. },
  2461. };
  2462. static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
  2463. .halt_reg = 0x71010,
  2464. .halt_check = BRANCH_HALT_VOTED,
  2465. .hwcg_reg = 0x71010,
  2466. .hwcg_bit = 1,
  2467. .clkr = {
  2468. .enable_reg = 0x71010,
  2469. .enable_mask = BIT(0),
  2470. .hw.init = &(const struct clk_init_data) {
  2471. .name = "gcc_gpu_memnoc_gfx_clk",
  2472. .ops = &clk_branch2_ops,
  2473. },
  2474. },
  2475. };
  2476. static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
  2477. .halt_reg = 0x71018,
  2478. .halt_check = BRANCH_HALT,
  2479. .clkr = {
  2480. .enable_reg = 0x71018,
  2481. .enable_mask = BIT(0),
  2482. .hw.init = &(const struct clk_init_data) {
  2483. .name = "gcc_gpu_snoc_dvm_gfx_clk",
  2484. .ops = &clk_branch2_ops,
  2485. },
  2486. },
  2487. };
  2488. static struct clk_branch gcc_pcie0_phy_rchng_clk = {
  2489. .halt_reg = 0xa0050,
  2490. .halt_check = BRANCH_HALT_VOTED,
  2491. .clkr = {
  2492. .enable_reg = 0x52010,
  2493. .enable_mask = BIT(26),
  2494. .hw.init = &(const struct clk_init_data) {
  2495. .name = "gcc_pcie0_phy_rchng_clk",
  2496. .parent_hws = (const struct clk_hw*[]) {
  2497. &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
  2498. },
  2499. .num_parents = 1,
  2500. .flags = CLK_SET_RATE_PARENT,
  2501. .ops = &clk_branch2_ops,
  2502. },
  2503. },
  2504. };
  2505. static struct clk_branch gcc_pcie1_phy_rchng_clk = {
  2506. .halt_reg = 0x2c050,
  2507. .halt_check = BRANCH_HALT_VOTED,
  2508. .clkr = {
  2509. .enable_reg = 0x52020,
  2510. .enable_mask = BIT(31),
  2511. .hw.init = &(const struct clk_init_data) {
  2512. .name = "gcc_pcie1_phy_rchng_clk",
  2513. .parent_hws = (const struct clk_hw*[]) {
  2514. &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
  2515. },
  2516. .num_parents = 1,
  2517. .flags = CLK_SET_RATE_PARENT,
  2518. .ops = &clk_branch2_ops,
  2519. },
  2520. },
  2521. };
  2522. static struct clk_branch gcc_pcie2_phy_rchng_clk = {
  2523. .halt_reg = 0x13050,
  2524. .halt_check = BRANCH_HALT_VOTED,
  2525. .clkr = {
  2526. .enable_reg = 0x52020,
  2527. .enable_mask = BIT(24),
  2528. .hw.init = &(const struct clk_init_data) {
  2529. .name = "gcc_pcie2_phy_rchng_clk",
  2530. .parent_hws = (const struct clk_hw*[]) {
  2531. &gcc_pcie_2_phy_rchng_clk_src.clkr.hw,
  2532. },
  2533. .num_parents = 1,
  2534. .flags = CLK_SET_RATE_PARENT,
  2535. .ops = &clk_branch2_ops,
  2536. },
  2537. },
  2538. };
  2539. static struct clk_branch gcc_pcie_0_aux_clk = {
  2540. .halt_reg = 0xa0038,
  2541. .halt_check = BRANCH_HALT_VOTED,
  2542. .clkr = {
  2543. .enable_reg = 0x52010,
  2544. .enable_mask = BIT(24),
  2545. .hw.init = &(const struct clk_init_data) {
  2546. .name = "gcc_pcie_0_aux_clk",
  2547. .parent_hws = (const struct clk_hw*[]) {
  2548. &gcc_pcie_0_aux_clk_src.clkr.hw,
  2549. },
  2550. .num_parents = 1,
  2551. .flags = CLK_SET_RATE_PARENT,
  2552. .ops = &clk_branch2_ops,
  2553. },
  2554. },
  2555. };
  2556. static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
  2557. .halt_reg = 0xa0034,
  2558. .halt_check = BRANCH_HALT_VOTED,
  2559. .hwcg_reg = 0xa0034,
  2560. .hwcg_bit = 1,
  2561. .clkr = {
  2562. .enable_reg = 0x52010,
  2563. .enable_mask = BIT(23),
  2564. .hw.init = &(const struct clk_init_data) {
  2565. .name = "gcc_pcie_0_cfg_ahb_clk",
  2566. .ops = &clk_branch2_ops,
  2567. },
  2568. },
  2569. };
  2570. static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
  2571. .halt_reg = 0xa0028,
  2572. .halt_check = BRANCH_HALT_SKIP,
  2573. .hwcg_reg = 0xa0028,
  2574. .hwcg_bit = 1,
  2575. .clkr = {
  2576. .enable_reg = 0x52010,
  2577. .enable_mask = BIT(22),
  2578. .hw.init = &(const struct clk_init_data) {
  2579. .name = "gcc_pcie_0_mstr_axi_clk",
  2580. .ops = &clk_branch2_ops,
  2581. },
  2582. },
  2583. };
  2584. static struct clk_branch gcc_pcie_0_pipe_clk = {
  2585. .halt_reg = 0xa0044,
  2586. .halt_check = BRANCH_HALT_SKIP,
  2587. .clkr = {
  2588. .enable_reg = 0x52010,
  2589. .enable_mask = BIT(25),
  2590. .hw.init = &(const struct clk_init_data) {
  2591. .name = "gcc_pcie_0_pipe_clk",
  2592. .ops = &clk_branch2_ops,
  2593. },
  2594. },
  2595. };
  2596. static struct clk_branch gcc_pcie_0_slv_axi_clk = {
  2597. .halt_reg = 0xa001c,
  2598. .halt_check = BRANCH_HALT_VOTED,
  2599. .hwcg_reg = 0xa001c,
  2600. .hwcg_bit = 1,
  2601. .clkr = {
  2602. .enable_reg = 0x52010,
  2603. .enable_mask = BIT(21),
  2604. .hw.init = &(const struct clk_init_data) {
  2605. .name = "gcc_pcie_0_slv_axi_clk",
  2606. .ops = &clk_branch2_ops,
  2607. },
  2608. },
  2609. };
  2610. static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
  2611. .halt_reg = 0xa0018,
  2612. .halt_check = BRANCH_HALT_VOTED,
  2613. .clkr = {
  2614. .enable_reg = 0x52010,
  2615. .enable_mask = BIT(20),
  2616. .hw.init = &(const struct clk_init_data) {
  2617. .name = "gcc_pcie_0_slv_q2a_axi_clk",
  2618. .ops = &clk_branch2_ops,
  2619. },
  2620. },
  2621. };
  2622. static struct clk_branch gcc_pcie_1_aux_clk = {
  2623. .halt_reg = 0x2c038,
  2624. .halt_check = BRANCH_HALT_VOTED,
  2625. .clkr = {
  2626. .enable_reg = 0x52020,
  2627. .enable_mask = BIT(29),
  2628. .hw.init = &(const struct clk_init_data) {
  2629. .name = "gcc_pcie_1_aux_clk",
  2630. .parent_hws = (const struct clk_hw*[]) {
  2631. &gcc_pcie_1_aux_clk_src.clkr.hw,
  2632. },
  2633. .num_parents = 1,
  2634. .flags = CLK_SET_RATE_PARENT,
  2635. .ops = &clk_branch2_ops,
  2636. },
  2637. },
  2638. };
  2639. static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
  2640. .halt_reg = 0x2c034,
  2641. .halt_check = BRANCH_HALT_VOTED,
  2642. .hwcg_reg = 0x2c034,
  2643. .hwcg_bit = 1,
  2644. .clkr = {
  2645. .enable_reg = 0x52020,
  2646. .enable_mask = BIT(28),
  2647. .hw.init = &(const struct clk_init_data) {
  2648. .name = "gcc_pcie_1_cfg_ahb_clk",
  2649. .ops = &clk_branch2_ops,
  2650. },
  2651. },
  2652. };
  2653. static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
  2654. .halt_reg = 0x2c028,
  2655. .halt_check = BRANCH_HALT_SKIP,
  2656. .hwcg_reg = 0x2c028,
  2657. .hwcg_bit = 1,
  2658. .clkr = {
  2659. .enable_reg = 0x52020,
  2660. .enable_mask = BIT(27),
  2661. .hw.init = &(const struct clk_init_data) {
  2662. .name = "gcc_pcie_1_mstr_axi_clk",
  2663. .ops = &clk_branch2_ops,
  2664. },
  2665. },
  2666. };
  2667. static struct clk_branch gcc_pcie_1_pipe_clk = {
  2668. .halt_reg = 0x2c044,
  2669. .halt_check = BRANCH_HALT_SKIP,
  2670. .clkr = {
  2671. .enable_reg = 0x52020,
  2672. .enable_mask = BIT(30),
  2673. .hw.init = &(const struct clk_init_data) {
  2674. .name = "gcc_pcie_1_pipe_clk",
  2675. .ops = &clk_branch2_ops,
  2676. },
  2677. },
  2678. };
  2679. static struct clk_branch gcc_pcie_1_slv_axi_clk = {
  2680. .halt_reg = 0x2c01c,
  2681. .halt_check = BRANCH_HALT_VOTED,
  2682. .hwcg_reg = 0x2c01c,
  2683. .hwcg_bit = 1,
  2684. .clkr = {
  2685. .enable_reg = 0x52020,
  2686. .enable_mask = BIT(26),
  2687. .hw.init = &(const struct clk_init_data) {
  2688. .name = "gcc_pcie_1_slv_axi_clk",
  2689. .ops = &clk_branch2_ops,
  2690. },
  2691. },
  2692. };
  2693. static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
  2694. .halt_reg = 0x2c018,
  2695. .halt_check = BRANCH_HALT_VOTED,
  2696. .clkr = {
  2697. .enable_reg = 0x52020,
  2698. .enable_mask = BIT(25),
  2699. .hw.init = &(const struct clk_init_data) {
  2700. .name = "gcc_pcie_1_slv_q2a_axi_clk",
  2701. .ops = &clk_branch2_ops,
  2702. },
  2703. },
  2704. };
  2705. static struct clk_branch gcc_pcie_2_aux_clk = {
  2706. .halt_reg = 0x13038,
  2707. .halt_check = BRANCH_HALT_VOTED,
  2708. .clkr = {
  2709. .enable_reg = 0x52020,
  2710. .enable_mask = BIT(22),
  2711. .hw.init = &(const struct clk_init_data) {
  2712. .name = "gcc_pcie_2_aux_clk",
  2713. .parent_hws = (const struct clk_hw*[]) {
  2714. &gcc_pcie_2_aux_clk_src.clkr.hw,
  2715. },
  2716. .num_parents = 1,
  2717. .flags = CLK_SET_RATE_PARENT,
  2718. .ops = &clk_branch2_ops,
  2719. },
  2720. },
  2721. };
  2722. static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
  2723. .halt_reg = 0x13034,
  2724. .halt_check = BRANCH_HALT_VOTED,
  2725. .hwcg_reg = 0x13034,
  2726. .hwcg_bit = 1,
  2727. .clkr = {
  2728. .enable_reg = 0x52020,
  2729. .enable_mask = BIT(21),
  2730. .hw.init = &(const struct clk_init_data) {
  2731. .name = "gcc_pcie_2_cfg_ahb_clk",
  2732. .ops = &clk_branch2_ops,
  2733. },
  2734. },
  2735. };
  2736. static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
  2737. .halt_reg = 0x13028,
  2738. .halt_check = BRANCH_HALT_SKIP,
  2739. .hwcg_reg = 0x13028,
  2740. .hwcg_bit = 1,
  2741. .clkr = {
  2742. .enable_reg = 0x52020,
  2743. .enable_mask = BIT(20),
  2744. .hw.init = &(const struct clk_init_data) {
  2745. .name = "gcc_pcie_2_mstr_axi_clk",
  2746. .ops = &clk_branch2_ops,
  2747. },
  2748. },
  2749. };
  2750. static struct clk_branch gcc_pcie_2_pipe_clk = {
  2751. .halt_reg = 0x13044,
  2752. .halt_check = BRANCH_HALT_SKIP,
  2753. .clkr = {
  2754. .enable_reg = 0x52020,
  2755. .enable_mask = BIT(23),
  2756. .hw.init = &(const struct clk_init_data) {
  2757. .name = "gcc_pcie_2_pipe_clk",
  2758. .ops = &clk_branch2_ops,
  2759. },
  2760. },
  2761. };
  2762. static struct clk_branch gcc_pcie_2_slv_axi_clk = {
  2763. .halt_reg = 0x1301c,
  2764. .halt_check = BRANCH_HALT_VOTED,
  2765. .hwcg_reg = 0x1301c,
  2766. .hwcg_bit = 1,
  2767. .clkr = {
  2768. .enable_reg = 0x52020,
  2769. .enable_mask = BIT(19),
  2770. .hw.init = &(const struct clk_init_data) {
  2771. .name = "gcc_pcie_2_slv_axi_clk",
  2772. .ops = &clk_branch2_ops,
  2773. },
  2774. },
  2775. };
  2776. static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
  2777. .halt_reg = 0x13018,
  2778. .halt_check = BRANCH_HALT_VOTED,
  2779. .clkr = {
  2780. .enable_reg = 0x52020,
  2781. .enable_mask = BIT(18),
  2782. .hw.init = &(const struct clk_init_data) {
  2783. .name = "gcc_pcie_2_slv_q2a_axi_clk",
  2784. .ops = &clk_branch2_ops,
  2785. },
  2786. },
  2787. };
  2788. static struct clk_branch gcc_pcie_3_aux_clk = {
  2789. .halt_reg = 0x58038,
  2790. .halt_check = BRANCH_HALT_VOTED,
  2791. .clkr = {
  2792. .enable_reg = 0x52020,
  2793. .enable_mask = BIT(1),
  2794. .hw.init = &(const struct clk_init_data) {
  2795. .name = "gcc_pcie_3_aux_clk",
  2796. .parent_hws = (const struct clk_hw*[]) {
  2797. &gcc_pcie_3_aux_clk_src.clkr.hw,
  2798. },
  2799. .num_parents = 1,
  2800. .flags = CLK_SET_RATE_PARENT,
  2801. .ops = &clk_branch2_ops,
  2802. },
  2803. },
  2804. };
  2805. static struct clk_branch gcc_pcie_3_cfg_ahb_clk = {
  2806. .halt_reg = 0x58034,
  2807. .halt_check = BRANCH_HALT_VOTED,
  2808. .hwcg_reg = 0x58034,
  2809. .hwcg_bit = 1,
  2810. .clkr = {
  2811. .enable_reg = 0x52020,
  2812. .enable_mask = BIT(0),
  2813. .hw.init = &(const struct clk_init_data) {
  2814. .name = "gcc_pcie_3_cfg_ahb_clk",
  2815. .ops = &clk_branch2_ops,
  2816. },
  2817. },
  2818. };
  2819. static struct clk_branch gcc_pcie_3_mstr_axi_clk = {
  2820. .halt_reg = 0x58028,
  2821. .halt_check = BRANCH_HALT_SKIP,
  2822. .hwcg_reg = 0x58028,
  2823. .hwcg_bit = 1,
  2824. .clkr = {
  2825. .enable_reg = 0x52018,
  2826. .enable_mask = BIT(31),
  2827. .hw.init = &(const struct clk_init_data) {
  2828. .name = "gcc_pcie_3_mstr_axi_clk",
  2829. .ops = &clk_branch2_ops,
  2830. },
  2831. },
  2832. };
  2833. static struct clk_branch gcc_pcie_3_phy_aux_clk = {
  2834. .halt_reg = 0x58044,
  2835. .halt_check = BRANCH_HALT_VOTED,
  2836. .clkr = {
  2837. .enable_reg = 0x52020,
  2838. .enable_mask = BIT(2),
  2839. .hw.init = &(const struct clk_init_data) {
  2840. .name = "gcc_pcie_3_phy_aux_clk",
  2841. .ops = &clk_branch2_ops,
  2842. },
  2843. },
  2844. };
  2845. static struct clk_branch gcc_pcie_3_phy_rchng_clk = {
  2846. .halt_reg = 0x5805c,
  2847. .halt_check = BRANCH_HALT_VOTED,
  2848. .clkr = {
  2849. .enable_reg = 0x52020,
  2850. .enable_mask = BIT(4),
  2851. .hw.init = &(const struct clk_init_data) {
  2852. .name = "gcc_pcie_3_phy_rchng_clk",
  2853. .parent_hws = (const struct clk_hw*[]) {
  2854. &gcc_pcie_3_phy_rchng_clk_src.clkr.hw,
  2855. },
  2856. .num_parents = 1,
  2857. .flags = CLK_SET_RATE_PARENT,
  2858. .ops = &clk_branch2_ops,
  2859. },
  2860. },
  2861. };
  2862. static struct clk_branch gcc_pcie_3_pipe_clk = {
  2863. .halt_reg = 0x58050,
  2864. .halt_check = BRANCH_HALT_SKIP,
  2865. .clkr = {
  2866. .enable_reg = 0x52020,
  2867. .enable_mask = BIT(3),
  2868. .hw.init = &(const struct clk_init_data) {
  2869. .name = "gcc_pcie_3_pipe_clk",
  2870. .ops = &clk_branch2_ops,
  2871. },
  2872. },
  2873. };
  2874. static struct clk_branch gcc_pcie_3_pipediv2_clk = {
  2875. .halt_reg = 0x58060,
  2876. .halt_check = BRANCH_HALT_SKIP,
  2877. .clkr = {
  2878. .enable_reg = 0x52020,
  2879. .enable_mask = BIT(5),
  2880. .hw.init = &(const struct clk_init_data) {
  2881. .name = "gcc_pcie_3_pipediv2_clk",
  2882. .parent_hws = (const struct clk_hw*[]) {
  2883. &gcc_pcie_3_pipe_div_clk_src.clkr.hw,
  2884. },
  2885. .num_parents = 1,
  2886. .flags = CLK_SET_RATE_PARENT,
  2887. .ops = &clk_branch2_ops,
  2888. },
  2889. },
  2890. };
  2891. static struct clk_branch gcc_pcie_3_slv_axi_clk = {
  2892. .halt_reg = 0x5801c,
  2893. .halt_check = BRANCH_HALT_VOTED,
  2894. .hwcg_reg = 0x5801c,
  2895. .hwcg_bit = 1,
  2896. .clkr = {
  2897. .enable_reg = 0x52018,
  2898. .enable_mask = BIT(30),
  2899. .hw.init = &(const struct clk_init_data) {
  2900. .name = "gcc_pcie_3_slv_axi_clk",
  2901. .ops = &clk_branch2_ops,
  2902. },
  2903. },
  2904. };
  2905. static struct clk_branch gcc_pcie_3_slv_q2a_axi_clk = {
  2906. .halt_reg = 0x58018,
  2907. .halt_check = BRANCH_HALT_VOTED,
  2908. .clkr = {
  2909. .enable_reg = 0x52018,
  2910. .enable_mask = BIT(29),
  2911. .hw.init = &(const struct clk_init_data) {
  2912. .name = "gcc_pcie_3_slv_q2a_axi_clk",
  2913. .ops = &clk_branch2_ops,
  2914. },
  2915. },
  2916. };
  2917. static struct clk_branch gcc_pcie_4_aux_clk = {
  2918. .halt_reg = 0x6b038,
  2919. .halt_check = BRANCH_HALT_VOTED,
  2920. .clkr = {
  2921. .enable_reg = 0x52008,
  2922. .enable_mask = BIT(3),
  2923. .hw.init = &(const struct clk_init_data) {
  2924. .name = "gcc_pcie_4_aux_clk",
  2925. .parent_hws = (const struct clk_hw*[]) {
  2926. &gcc_pcie_4_aux_clk_src.clkr.hw,
  2927. },
  2928. .num_parents = 1,
  2929. .flags = CLK_SET_RATE_PARENT,
  2930. .ops = &clk_branch2_ops,
  2931. },
  2932. },
  2933. };
  2934. static struct clk_branch gcc_pcie_4_cfg_ahb_clk = {
  2935. .halt_reg = 0x6b034,
  2936. .halt_check = BRANCH_HALT_VOTED,
  2937. .hwcg_reg = 0x6b034,
  2938. .hwcg_bit = 1,
  2939. .clkr = {
  2940. .enable_reg = 0x52008,
  2941. .enable_mask = BIT(2),
  2942. .hw.init = &(const struct clk_init_data) {
  2943. .name = "gcc_pcie_4_cfg_ahb_clk",
  2944. .ops = &clk_branch2_ops,
  2945. },
  2946. },
  2947. };
  2948. static struct clk_branch gcc_pcie_4_mstr_axi_clk = {
  2949. .halt_reg = 0x6b028,
  2950. .halt_check = BRANCH_HALT_SKIP,
  2951. .hwcg_reg = 0x6b028,
  2952. .hwcg_bit = 1,
  2953. .clkr = {
  2954. .enable_reg = 0x52008,
  2955. .enable_mask = BIT(1),
  2956. .hw.init = &(const struct clk_init_data) {
  2957. .name = "gcc_pcie_4_mstr_axi_clk",
  2958. .ops = &clk_branch2_ops,
  2959. },
  2960. },
  2961. };
  2962. static struct clk_branch gcc_pcie_4_phy_rchng_clk = {
  2963. .halt_reg = 0x6b050,
  2964. .halt_check = BRANCH_HALT_VOTED,
  2965. .clkr = {
  2966. .enable_reg = 0x52000,
  2967. .enable_mask = BIT(22),
  2968. .hw.init = &(const struct clk_init_data) {
  2969. .name = "gcc_pcie_4_phy_rchng_clk",
  2970. .parent_hws = (const struct clk_hw*[]) {
  2971. &gcc_pcie_4_phy_rchng_clk_src.clkr.hw,
  2972. },
  2973. .num_parents = 1,
  2974. .flags = CLK_SET_RATE_PARENT,
  2975. .ops = &clk_branch2_ops,
  2976. },
  2977. },
  2978. };
  2979. static struct clk_branch gcc_pcie_4_pipe_clk = {
  2980. .halt_reg = 0x6b044,
  2981. .halt_check = BRANCH_HALT_SKIP,
  2982. .clkr = {
  2983. .enable_reg = 0x52008,
  2984. .enable_mask = BIT(4),
  2985. .hw.init = &(const struct clk_init_data) {
  2986. .name = "gcc_pcie_4_pipe_clk",
  2987. .ops = &clk_branch2_ops,
  2988. },
  2989. },
  2990. };
  2991. static struct clk_branch gcc_pcie_4_pipediv2_clk = {
  2992. .halt_reg = 0x6b054,
  2993. .halt_check = BRANCH_HALT_SKIP,
  2994. .clkr = {
  2995. .enable_reg = 0x52010,
  2996. .enable_mask = BIT(27),
  2997. .hw.init = &(const struct clk_init_data) {
  2998. .name = "gcc_pcie_4_pipediv2_clk",
  2999. .parent_hws = (const struct clk_hw*[]) {
  3000. &gcc_pcie_4_pipe_div_clk_src.clkr.hw,
  3001. },
  3002. .num_parents = 1,
  3003. .flags = CLK_SET_RATE_PARENT,
  3004. .ops = &clk_branch2_ops,
  3005. },
  3006. },
  3007. };
  3008. static struct clk_branch gcc_pcie_4_slv_axi_clk = {
  3009. .halt_reg = 0x6b01c,
  3010. .halt_check = BRANCH_HALT_VOTED,
  3011. .hwcg_reg = 0x6b01c,
  3012. .hwcg_bit = 1,
  3013. .clkr = {
  3014. .enable_reg = 0x52008,
  3015. .enable_mask = BIT(0),
  3016. .hw.init = &(const struct clk_init_data) {
  3017. .name = "gcc_pcie_4_slv_axi_clk",
  3018. .ops = &clk_branch2_ops,
  3019. },
  3020. },
  3021. };
  3022. static struct clk_branch gcc_pcie_4_slv_q2a_axi_clk = {
  3023. .halt_reg = 0x6b018,
  3024. .halt_check = BRANCH_HALT_VOTED,
  3025. .clkr = {
  3026. .enable_reg = 0x52008,
  3027. .enable_mask = BIT(5),
  3028. .hw.init = &(const struct clk_init_data) {
  3029. .name = "gcc_pcie_4_slv_q2a_axi_clk",
  3030. .ops = &clk_branch2_ops,
  3031. },
  3032. },
  3033. };
  3034. static struct clk_branch gcc_pcie_5_aux_clk = {
  3035. .halt_reg = 0x2f038,
  3036. .halt_check = BRANCH_HALT_VOTED,
  3037. .clkr = {
  3038. .enable_reg = 0x52018,
  3039. .enable_mask = BIT(16),
  3040. .hw.init = &(const struct clk_init_data) {
  3041. .name = "gcc_pcie_5_aux_clk",
  3042. .parent_hws = (const struct clk_hw*[]) {
  3043. &gcc_pcie_5_aux_clk_src.clkr.hw,
  3044. },
  3045. .num_parents = 1,
  3046. .flags = CLK_SET_RATE_PARENT,
  3047. .ops = &clk_branch2_ops,
  3048. },
  3049. },
  3050. };
  3051. static struct clk_branch gcc_pcie_5_cfg_ahb_clk = {
  3052. .halt_reg = 0x2f034,
  3053. .halt_check = BRANCH_HALT_VOTED,
  3054. .hwcg_reg = 0x2f034,
  3055. .hwcg_bit = 1,
  3056. .clkr = {
  3057. .enable_reg = 0x52018,
  3058. .enable_mask = BIT(15),
  3059. .hw.init = &(const struct clk_init_data) {
  3060. .name = "gcc_pcie_5_cfg_ahb_clk",
  3061. .ops = &clk_branch2_ops,
  3062. },
  3063. },
  3064. };
  3065. static struct clk_branch gcc_pcie_5_mstr_axi_clk = {
  3066. .halt_reg = 0x2f028,
  3067. .halt_check = BRANCH_HALT_SKIP,
  3068. .hwcg_reg = 0x2f028,
  3069. .hwcg_bit = 1,
  3070. .clkr = {
  3071. .enable_reg = 0x52018,
  3072. .enable_mask = BIT(14),
  3073. .hw.init = &(const struct clk_init_data) {
  3074. .name = "gcc_pcie_5_mstr_axi_clk",
  3075. .ops = &clk_branch2_ops,
  3076. },
  3077. },
  3078. };
  3079. static struct clk_branch gcc_pcie_5_phy_rchng_clk = {
  3080. .halt_reg = 0x2f050,
  3081. .halt_check = BRANCH_HALT_VOTED,
  3082. .clkr = {
  3083. .enable_reg = 0x52018,
  3084. .enable_mask = BIT(18),
  3085. .hw.init = &(const struct clk_init_data) {
  3086. .name = "gcc_pcie_5_phy_rchng_clk",
  3087. .parent_hws = (const struct clk_hw*[]) {
  3088. &gcc_pcie_5_phy_rchng_clk_src.clkr.hw,
  3089. },
  3090. .num_parents = 1,
  3091. .flags = CLK_SET_RATE_PARENT,
  3092. .ops = &clk_branch2_ops,
  3093. },
  3094. },
  3095. };
  3096. static struct clk_branch gcc_pcie_5_pipe_clk = {
  3097. .halt_reg = 0x2f044,
  3098. .halt_check = BRANCH_HALT_SKIP,
  3099. .clkr = {
  3100. .enable_reg = 0x52018,
  3101. .enable_mask = BIT(17),
  3102. .hw.init = &(const struct clk_init_data) {
  3103. .name = "gcc_pcie_5_pipe_clk",
  3104. .ops = &clk_branch2_ops,
  3105. },
  3106. },
  3107. };
  3108. static struct clk_branch gcc_pcie_5_pipediv2_clk = {
  3109. .halt_reg = 0x2f054,
  3110. .halt_check = BRANCH_HALT_SKIP,
  3111. .clkr = {
  3112. .enable_reg = 0x52018,
  3113. .enable_mask = BIT(19),
  3114. .hw.init = &(const struct clk_init_data) {
  3115. .name = "gcc_pcie_5_pipediv2_clk",
  3116. .parent_hws = (const struct clk_hw*[]) {
  3117. &gcc_pcie_5_pipe_div_clk_src.clkr.hw,
  3118. },
  3119. .num_parents = 1,
  3120. .flags = CLK_SET_RATE_PARENT,
  3121. .ops = &clk_branch2_ops,
  3122. },
  3123. },
  3124. };
  3125. static struct clk_branch gcc_pcie_5_slv_axi_clk = {
  3126. .halt_reg = 0x2f01c,
  3127. .halt_check = BRANCH_HALT_VOTED,
  3128. .hwcg_reg = 0x2f01c,
  3129. .hwcg_bit = 1,
  3130. .clkr = {
  3131. .enable_reg = 0x52018,
  3132. .enable_mask = BIT(13),
  3133. .hw.init = &(const struct clk_init_data) {
  3134. .name = "gcc_pcie_5_slv_axi_clk",
  3135. .ops = &clk_branch2_ops,
  3136. },
  3137. },
  3138. };
  3139. static struct clk_branch gcc_pcie_5_slv_q2a_axi_clk = {
  3140. .halt_reg = 0x2f018,
  3141. .halt_check = BRANCH_HALT_VOTED,
  3142. .clkr = {
  3143. .enable_reg = 0x52018,
  3144. .enable_mask = BIT(12),
  3145. .hw.init = &(const struct clk_init_data) {
  3146. .name = "gcc_pcie_5_slv_q2a_axi_clk",
  3147. .ops = &clk_branch2_ops,
  3148. },
  3149. },
  3150. };
  3151. static struct clk_branch gcc_pcie_6a_aux_clk = {
  3152. .halt_reg = 0x31038,
  3153. .halt_check = BRANCH_HALT_VOTED,
  3154. .clkr = {
  3155. .enable_reg = 0x52018,
  3156. .enable_mask = BIT(24),
  3157. .hw.init = &(const struct clk_init_data) {
  3158. .name = "gcc_pcie_6a_aux_clk",
  3159. .parent_hws = (const struct clk_hw*[]) {
  3160. &gcc_pcie_6a_aux_clk_src.clkr.hw,
  3161. },
  3162. .num_parents = 1,
  3163. .flags = CLK_SET_RATE_PARENT,
  3164. .ops = &clk_branch2_ops,
  3165. },
  3166. },
  3167. };
  3168. static struct clk_branch gcc_pcie_6a_cfg_ahb_clk = {
  3169. .halt_reg = 0x31034,
  3170. .halt_check = BRANCH_HALT_VOTED,
  3171. .hwcg_reg = 0x31034,
  3172. .hwcg_bit = 1,
  3173. .clkr = {
  3174. .enable_reg = 0x52018,
  3175. .enable_mask = BIT(23),
  3176. .hw.init = &(const struct clk_init_data) {
  3177. .name = "gcc_pcie_6a_cfg_ahb_clk",
  3178. .ops = &clk_branch2_ops,
  3179. },
  3180. },
  3181. };
  3182. static struct clk_branch gcc_pcie_6a_mstr_axi_clk = {
  3183. .halt_reg = 0x31028,
  3184. .halt_check = BRANCH_HALT_SKIP,
  3185. .hwcg_reg = 0x31028,
  3186. .hwcg_bit = 1,
  3187. .clkr = {
  3188. .enable_reg = 0x52018,
  3189. .enable_mask = BIT(22),
  3190. .hw.init = &(const struct clk_init_data) {
  3191. .name = "gcc_pcie_6a_mstr_axi_clk",
  3192. .ops = &clk_branch2_ops,
  3193. },
  3194. },
  3195. };
  3196. static struct clk_branch gcc_pcie_6a_phy_aux_clk = {
  3197. .halt_reg = 0x31044,
  3198. .halt_check = BRANCH_HALT_VOTED,
  3199. .clkr = {
  3200. .enable_reg = 0x52018,
  3201. .enable_mask = BIT(25),
  3202. .hw.init = &(const struct clk_init_data) {
  3203. .name = "gcc_pcie_6a_phy_aux_clk",
  3204. .ops = &clk_branch2_ops,
  3205. },
  3206. },
  3207. };
  3208. static struct clk_branch gcc_pcie_6a_phy_rchng_clk = {
  3209. .halt_reg = 0x3105c,
  3210. .halt_check = BRANCH_HALT_VOTED,
  3211. .clkr = {
  3212. .enable_reg = 0x52018,
  3213. .enable_mask = BIT(27),
  3214. .hw.init = &(const struct clk_init_data) {
  3215. .name = "gcc_pcie_6a_phy_rchng_clk",
  3216. .parent_hws = (const struct clk_hw*[]) {
  3217. &gcc_pcie_6a_phy_rchng_clk_src.clkr.hw,
  3218. },
  3219. .num_parents = 1,
  3220. .flags = CLK_SET_RATE_PARENT,
  3221. .ops = &clk_branch2_ops,
  3222. },
  3223. },
  3224. };
  3225. static struct clk_branch gcc_pcie_6a_pipe_clk = {
  3226. .halt_reg = 0x31050,
  3227. .halt_check = BRANCH_HALT_SKIP,
  3228. .clkr = {
  3229. .enable_reg = 0x52018,
  3230. .enable_mask = BIT(26),
  3231. .hw.init = &(const struct clk_init_data) {
  3232. .name = "gcc_pcie_6a_pipe_clk",
  3233. .ops = &clk_branch2_ops,
  3234. },
  3235. },
  3236. };
  3237. static struct clk_branch gcc_pcie_6a_pipediv2_clk = {
  3238. .halt_reg = 0x31060,
  3239. .halt_check = BRANCH_HALT_SKIP,
  3240. .clkr = {
  3241. .enable_reg = 0x52018,
  3242. .enable_mask = BIT(28),
  3243. .hw.init = &(const struct clk_init_data) {
  3244. .name = "gcc_pcie_6a_pipediv2_clk",
  3245. .parent_hws = (const struct clk_hw*[]) {
  3246. &gcc_pcie_6a_pipe_div_clk_src.clkr.hw,
  3247. },
  3248. .num_parents = 1,
  3249. .flags = CLK_SET_RATE_PARENT,
  3250. .ops = &clk_branch2_ops,
  3251. },
  3252. },
  3253. };
  3254. static struct clk_branch gcc_pcie_6a_slv_axi_clk = {
  3255. .halt_reg = 0x3101c,
  3256. .halt_check = BRANCH_HALT_VOTED,
  3257. .hwcg_reg = 0x3101c,
  3258. .hwcg_bit = 1,
  3259. .clkr = {
  3260. .enable_reg = 0x52018,
  3261. .enable_mask = BIT(21),
  3262. .hw.init = &(const struct clk_init_data) {
  3263. .name = "gcc_pcie_6a_slv_axi_clk",
  3264. .ops = &clk_branch2_ops,
  3265. },
  3266. },
  3267. };
  3268. static struct clk_branch gcc_pcie_6a_slv_q2a_axi_clk = {
  3269. .halt_reg = 0x31018,
  3270. .halt_check = BRANCH_HALT_VOTED,
  3271. .clkr = {
  3272. .enable_reg = 0x52018,
  3273. .enable_mask = BIT(20),
  3274. .hw.init = &(const struct clk_init_data) {
  3275. .name = "gcc_pcie_6a_slv_q2a_axi_clk",
  3276. .ops = &clk_branch2_ops,
  3277. },
  3278. },
  3279. };
  3280. static struct clk_branch gcc_pcie_6b_aux_clk = {
  3281. .halt_reg = 0x8d038,
  3282. .halt_check = BRANCH_HALT_VOTED,
  3283. .clkr = {
  3284. .enable_reg = 0x52000,
  3285. .enable_mask = BIT(29),
  3286. .hw.init = &(const struct clk_init_data) {
  3287. .name = "gcc_pcie_6b_aux_clk",
  3288. .parent_hws = (const struct clk_hw*[]) {
  3289. &gcc_pcie_6b_aux_clk_src.clkr.hw,
  3290. },
  3291. .num_parents = 1,
  3292. .flags = CLK_SET_RATE_PARENT,
  3293. .ops = &clk_branch2_ops,
  3294. },
  3295. },
  3296. };
  3297. static struct clk_branch gcc_pcie_6b_cfg_ahb_clk = {
  3298. .halt_reg = 0x8d034,
  3299. .halt_check = BRANCH_HALT_VOTED,
  3300. .hwcg_reg = 0x8d034,
  3301. .hwcg_bit = 1,
  3302. .clkr = {
  3303. .enable_reg = 0x52000,
  3304. .enable_mask = BIT(28),
  3305. .hw.init = &(const struct clk_init_data) {
  3306. .name = "gcc_pcie_6b_cfg_ahb_clk",
  3307. .ops = &clk_branch2_ops,
  3308. },
  3309. },
  3310. };
  3311. static struct clk_branch gcc_pcie_6b_mstr_axi_clk = {
  3312. .halt_reg = 0x8d028,
  3313. .halt_check = BRANCH_HALT_SKIP,
  3314. .hwcg_reg = 0x8d028,
  3315. .hwcg_bit = 1,
  3316. .clkr = {
  3317. .enable_reg = 0x52000,
  3318. .enable_mask = BIT(27),
  3319. .hw.init = &(const struct clk_init_data) {
  3320. .name = "gcc_pcie_6b_mstr_axi_clk",
  3321. .ops = &clk_branch2_ops,
  3322. },
  3323. },
  3324. };
  3325. static struct clk_branch gcc_pcie_6b_phy_aux_clk = {
  3326. .halt_reg = 0x8d044,
  3327. .halt_check = BRANCH_HALT_VOTED,
  3328. .clkr = {
  3329. .enable_reg = 0x52000,
  3330. .enable_mask = BIT(24),
  3331. .hw.init = &(const struct clk_init_data) {
  3332. .name = "gcc_pcie_6b_phy_aux_clk",
  3333. .ops = &clk_branch2_ops,
  3334. },
  3335. },
  3336. };
  3337. static struct clk_branch gcc_pcie_6b_phy_rchng_clk = {
  3338. .halt_reg = 0x8d05c,
  3339. .halt_check = BRANCH_HALT_VOTED,
  3340. .clkr = {
  3341. .enable_reg = 0x52000,
  3342. .enable_mask = BIT(23),
  3343. .hw.init = &(const struct clk_init_data) {
  3344. .name = "gcc_pcie_6b_phy_rchng_clk",
  3345. .parent_hws = (const struct clk_hw*[]) {
  3346. &gcc_pcie_6b_phy_rchng_clk_src.clkr.hw,
  3347. },
  3348. .num_parents = 1,
  3349. .flags = CLK_SET_RATE_PARENT,
  3350. .ops = &clk_branch2_ops,
  3351. },
  3352. },
  3353. };
  3354. static struct clk_branch gcc_pcie_6b_pipe_clk = {
  3355. .halt_reg = 0x8d050,
  3356. .halt_check = BRANCH_HALT_SKIP,
  3357. .clkr = {
  3358. .enable_reg = 0x52000,
  3359. .enable_mask = BIT(30),
  3360. .hw.init = &(const struct clk_init_data) {
  3361. .name = "gcc_pcie_6b_pipe_clk",
  3362. .ops = &clk_branch2_ops,
  3363. },
  3364. },
  3365. };
  3366. static struct clk_branch gcc_pcie_6b_pipediv2_clk = {
  3367. .halt_reg = 0x8d060,
  3368. .halt_check = BRANCH_HALT_SKIP,
  3369. .clkr = {
  3370. .enable_reg = 0x52010,
  3371. .enable_mask = BIT(28),
  3372. .hw.init = &(const struct clk_init_data) {
  3373. .name = "gcc_pcie_6b_pipediv2_clk",
  3374. .parent_hws = (const struct clk_hw*[]) {
  3375. &gcc_pcie_6b_pipe_div_clk_src.clkr.hw,
  3376. },
  3377. .num_parents = 1,
  3378. .flags = CLK_SET_RATE_PARENT,
  3379. .ops = &clk_branch2_ops,
  3380. },
  3381. },
  3382. };
  3383. static struct clk_branch gcc_pcie_6b_slv_axi_clk = {
  3384. .halt_reg = 0x8d01c,
  3385. .halt_check = BRANCH_HALT_VOTED,
  3386. .hwcg_reg = 0x8d01c,
  3387. .hwcg_bit = 1,
  3388. .clkr = {
  3389. .enable_reg = 0x52000,
  3390. .enable_mask = BIT(26),
  3391. .hw.init = &(const struct clk_init_data) {
  3392. .name = "gcc_pcie_6b_slv_axi_clk",
  3393. .ops = &clk_branch2_ops,
  3394. },
  3395. },
  3396. };
  3397. static struct clk_branch gcc_pcie_6b_slv_q2a_axi_clk = {
  3398. .halt_reg = 0x8d018,
  3399. .halt_check = BRANCH_HALT_VOTED,
  3400. .clkr = {
  3401. .enable_reg = 0x52000,
  3402. .enable_mask = BIT(25),
  3403. .hw.init = &(const struct clk_init_data) {
  3404. .name = "gcc_pcie_6b_slv_q2a_axi_clk",
  3405. .ops = &clk_branch2_ops,
  3406. },
  3407. },
  3408. };
  3409. static struct clk_branch gcc_pcie_rscc_ahb_clk = {
  3410. .halt_reg = 0xa4008,
  3411. .halt_check = BRANCH_HALT_VOTED,
  3412. .hwcg_reg = 0xa4008,
  3413. .hwcg_bit = 1,
  3414. .clkr = {
  3415. .enable_reg = 0x52028,
  3416. .enable_mask = BIT(18),
  3417. .hw.init = &(const struct clk_init_data) {
  3418. .name = "gcc_pcie_rscc_ahb_clk",
  3419. .ops = &clk_branch2_ops,
  3420. },
  3421. },
  3422. };
  3423. static struct clk_branch gcc_pcie_rscc_xo_clk = {
  3424. .halt_reg = 0xa4004,
  3425. .halt_check = BRANCH_HALT_VOTED,
  3426. .clkr = {
  3427. .enable_reg = 0x52028,
  3428. .enable_mask = BIT(17),
  3429. .hw.init = &(const struct clk_init_data) {
  3430. .name = "gcc_pcie_rscc_xo_clk",
  3431. .parent_hws = (const struct clk_hw*[]) {
  3432. &gcc_pcie_rscc_xo_clk_src.clkr.hw,
  3433. },
  3434. .num_parents = 1,
  3435. .flags = CLK_SET_RATE_PARENT,
  3436. .ops = &clk_branch2_ops,
  3437. },
  3438. },
  3439. };
  3440. static struct clk_branch gcc_pdm2_clk = {
  3441. .halt_reg = 0x3300c,
  3442. .halt_check = BRANCH_HALT,
  3443. .clkr = {
  3444. .enable_reg = 0x3300c,
  3445. .enable_mask = BIT(0),
  3446. .hw.init = &(const struct clk_init_data) {
  3447. .name = "gcc_pdm2_clk",
  3448. .parent_hws = (const struct clk_hw*[]) {
  3449. &gcc_pdm2_clk_src.clkr.hw,
  3450. },
  3451. .num_parents = 1,
  3452. .flags = CLK_SET_RATE_PARENT,
  3453. .ops = &clk_branch2_ops,
  3454. },
  3455. },
  3456. };
  3457. static struct clk_branch gcc_pdm_ahb_clk = {
  3458. .halt_reg = 0x33004,
  3459. .halt_check = BRANCH_HALT_VOTED,
  3460. .hwcg_reg = 0x33004,
  3461. .hwcg_bit = 1,
  3462. .clkr = {
  3463. .enable_reg = 0x33004,
  3464. .enable_mask = BIT(0),
  3465. .hw.init = &(const struct clk_init_data) {
  3466. .name = "gcc_pdm_ahb_clk",
  3467. .ops = &clk_branch2_ops,
  3468. },
  3469. },
  3470. };
  3471. static struct clk_branch gcc_pdm_xo4_clk = {
  3472. .halt_reg = 0x33008,
  3473. .halt_check = BRANCH_HALT,
  3474. .clkr = {
  3475. .enable_reg = 0x33008,
  3476. .enable_mask = BIT(0),
  3477. .hw.init = &(const struct clk_init_data) {
  3478. .name = "gcc_pdm_xo4_clk",
  3479. .ops = &clk_branch2_ops,
  3480. },
  3481. },
  3482. };
  3483. static struct clk_branch gcc_qmip_av1e_ahb_clk = {
  3484. .halt_reg = 0x4a018,
  3485. .halt_check = BRANCH_HALT_VOTED,
  3486. .hwcg_reg = 0x4a018,
  3487. .hwcg_bit = 1,
  3488. .clkr = {
  3489. .enable_reg = 0x4a018,
  3490. .enable_mask = BIT(0),
  3491. .hw.init = &(const struct clk_init_data) {
  3492. .name = "gcc_qmip_av1e_ahb_clk",
  3493. .ops = &clk_branch2_ops,
  3494. },
  3495. },
  3496. };
  3497. static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
  3498. .halt_reg = 0x26008,
  3499. .halt_check = BRANCH_HALT_VOTED,
  3500. .hwcg_reg = 0x26008,
  3501. .hwcg_bit = 1,
  3502. .clkr = {
  3503. .enable_reg = 0x26008,
  3504. .enable_mask = BIT(0),
  3505. .hw.init = &(const struct clk_init_data) {
  3506. .name = "gcc_qmip_camera_nrt_ahb_clk",
  3507. .ops = &clk_branch2_ops,
  3508. },
  3509. },
  3510. };
  3511. static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
  3512. .halt_reg = 0x2600c,
  3513. .halt_check = BRANCH_HALT_VOTED,
  3514. .hwcg_reg = 0x2600c,
  3515. .hwcg_bit = 1,
  3516. .clkr = {
  3517. .enable_reg = 0x2600c,
  3518. .enable_mask = BIT(0),
  3519. .hw.init = &(const struct clk_init_data) {
  3520. .name = "gcc_qmip_camera_rt_ahb_clk",
  3521. .ops = &clk_branch2_ops,
  3522. },
  3523. },
  3524. };
  3525. static struct clk_branch gcc_qmip_disp_ahb_clk = {
  3526. .halt_reg = 0x27008,
  3527. .halt_check = BRANCH_HALT_VOTED,
  3528. .hwcg_reg = 0x27008,
  3529. .hwcg_bit = 1,
  3530. .clkr = {
  3531. .enable_reg = 0x27008,
  3532. .enable_mask = BIT(0),
  3533. .hw.init = &(const struct clk_init_data) {
  3534. .name = "gcc_qmip_disp_ahb_clk",
  3535. .ops = &clk_branch2_ops,
  3536. },
  3537. },
  3538. };
  3539. static struct clk_branch gcc_qmip_gpu_ahb_clk = {
  3540. .halt_reg = 0x71008,
  3541. .halt_check = BRANCH_HALT_VOTED,
  3542. .hwcg_reg = 0x71008,
  3543. .hwcg_bit = 1,
  3544. .clkr = {
  3545. .enable_reg = 0x71008,
  3546. .enable_mask = BIT(0),
  3547. .hw.init = &(const struct clk_init_data) {
  3548. .name = "gcc_qmip_gpu_ahb_clk",
  3549. .ops = &clk_branch2_ops,
  3550. },
  3551. },
  3552. };
  3553. static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {
  3554. .halt_reg = 0x32014,
  3555. .halt_check = BRANCH_HALT_VOTED,
  3556. .hwcg_reg = 0x32014,
  3557. .hwcg_bit = 1,
  3558. .clkr = {
  3559. .enable_reg = 0x32014,
  3560. .enable_mask = BIT(0),
  3561. .hw.init = &(const struct clk_init_data) {
  3562. .name = "gcc_qmip_video_cv_cpu_ahb_clk",
  3563. .ops = &clk_branch2_ops,
  3564. },
  3565. },
  3566. };
  3567. static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
  3568. .halt_reg = 0x32008,
  3569. .halt_check = BRANCH_HALT_VOTED,
  3570. .hwcg_reg = 0x32008,
  3571. .hwcg_bit = 1,
  3572. .clkr = {
  3573. .enable_reg = 0x32008,
  3574. .enable_mask = BIT(0),
  3575. .hw.init = &(const struct clk_init_data) {
  3576. .name = "gcc_qmip_video_cvp_ahb_clk",
  3577. .ops = &clk_branch2_ops,
  3578. },
  3579. },
  3580. };
  3581. static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {
  3582. .halt_reg = 0x32010,
  3583. .halt_check = BRANCH_HALT_VOTED,
  3584. .hwcg_reg = 0x32010,
  3585. .hwcg_bit = 1,
  3586. .clkr = {
  3587. .enable_reg = 0x32010,
  3588. .enable_mask = BIT(0),
  3589. .hw.init = &(const struct clk_init_data) {
  3590. .name = "gcc_qmip_video_v_cpu_ahb_clk",
  3591. .ops = &clk_branch2_ops,
  3592. },
  3593. },
  3594. };
  3595. static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
  3596. .halt_reg = 0x3200c,
  3597. .halt_check = BRANCH_HALT_VOTED,
  3598. .hwcg_reg = 0x3200c,
  3599. .hwcg_bit = 1,
  3600. .clkr = {
  3601. .enable_reg = 0x3200c,
  3602. .enable_mask = BIT(0),
  3603. .hw.init = &(const struct clk_init_data) {
  3604. .name = "gcc_qmip_video_vcodec_ahb_clk",
  3605. .ops = &clk_branch2_ops,
  3606. },
  3607. },
  3608. };
  3609. static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
  3610. .halt_reg = 0x23018,
  3611. .halt_check = BRANCH_HALT_VOTED,
  3612. .clkr = {
  3613. .enable_reg = 0x52020,
  3614. .enable_mask = BIT(9),
  3615. .hw.init = &(const struct clk_init_data) {
  3616. .name = "gcc_qupv3_wrap0_core_2x_clk",
  3617. .ops = &clk_branch2_ops,
  3618. },
  3619. },
  3620. };
  3621. static struct clk_branch gcc_qupv3_wrap0_core_clk = {
  3622. .halt_reg = 0x23008,
  3623. .halt_check = BRANCH_HALT_VOTED,
  3624. .clkr = {
  3625. .enable_reg = 0x52020,
  3626. .enable_mask = BIT(8),
  3627. .hw.init = &(const struct clk_init_data) {
  3628. .name = "gcc_qupv3_wrap0_core_clk",
  3629. .ops = &clk_branch2_ops,
  3630. },
  3631. },
  3632. };
  3633. static struct clk_branch gcc_qupv3_wrap0_qspi_s2_clk = {
  3634. .halt_reg = 0x42280,
  3635. .halt_check = BRANCH_HALT_VOTED,
  3636. .clkr = {
  3637. .enable_reg = 0x52028,
  3638. .enable_mask = BIT(2),
  3639. .hw.init = &(const struct clk_init_data) {
  3640. .name = "gcc_qupv3_wrap0_qspi_s2_clk",
  3641. .parent_hws = (const struct clk_hw*[]) {
  3642. &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
  3643. },
  3644. .num_parents = 1,
  3645. .flags = CLK_SET_RATE_PARENT,
  3646. .ops = &clk_branch2_ops,
  3647. },
  3648. },
  3649. };
  3650. static struct clk_branch gcc_qupv3_wrap0_qspi_s3_clk = {
  3651. .halt_reg = 0x423c0,
  3652. .halt_check = BRANCH_HALT_VOTED,
  3653. .clkr = {
  3654. .enable_reg = 0x52028,
  3655. .enable_mask = BIT(3),
  3656. .hw.init = &(const struct clk_init_data) {
  3657. .name = "gcc_qupv3_wrap0_qspi_s3_clk",
  3658. .parent_hws = (const struct clk_hw*[]) {
  3659. &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
  3660. },
  3661. .num_parents = 1,
  3662. .flags = CLK_SET_RATE_PARENT,
  3663. .ops = &clk_branch2_ops,
  3664. },
  3665. },
  3666. };
  3667. static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
  3668. .halt_reg = 0x42004,
  3669. .halt_check = BRANCH_HALT_VOTED,
  3670. .clkr = {
  3671. .enable_reg = 0x52020,
  3672. .enable_mask = BIT(10),
  3673. .hw.init = &(const struct clk_init_data) {
  3674. .name = "gcc_qupv3_wrap0_s0_clk",
  3675. .parent_hws = (const struct clk_hw*[]) {
  3676. &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
  3677. },
  3678. .num_parents = 1,
  3679. .flags = CLK_SET_RATE_PARENT,
  3680. .ops = &clk_branch2_ops,
  3681. },
  3682. },
  3683. };
  3684. static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
  3685. .halt_reg = 0x4213c,
  3686. .halt_check = BRANCH_HALT_VOTED,
  3687. .clkr = {
  3688. .enable_reg = 0x52020,
  3689. .enable_mask = BIT(11),
  3690. .hw.init = &(const struct clk_init_data) {
  3691. .name = "gcc_qupv3_wrap0_s1_clk",
  3692. .parent_hws = (const struct clk_hw*[]) {
  3693. &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
  3694. },
  3695. .num_parents = 1,
  3696. .flags = CLK_SET_RATE_PARENT,
  3697. .ops = &clk_branch2_ops,
  3698. },
  3699. },
  3700. };
  3701. static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
  3702. .halt_reg = 0x42274,
  3703. .halt_check = BRANCH_HALT_VOTED,
  3704. .clkr = {
  3705. .enable_reg = 0x52020,
  3706. .enable_mask = BIT(12),
  3707. .hw.init = &(const struct clk_init_data) {
  3708. .name = "gcc_qupv3_wrap0_s2_clk",
  3709. .parent_hws = (const struct clk_hw*[]) {
  3710. &gcc_qupv3_wrap0_s2_div_clk_src.clkr.hw,
  3711. },
  3712. .num_parents = 1,
  3713. .flags = CLK_SET_RATE_PARENT,
  3714. .ops = &clk_branch2_ops,
  3715. },
  3716. },
  3717. };
  3718. static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
  3719. .halt_reg = 0x423b4,
  3720. .halt_check = BRANCH_HALT_VOTED,
  3721. .clkr = {
  3722. .enable_reg = 0x52020,
  3723. .enable_mask = BIT(13),
  3724. .hw.init = &(const struct clk_init_data) {
  3725. .name = "gcc_qupv3_wrap0_s3_clk",
  3726. .parent_hws = (const struct clk_hw*[]) {
  3727. &gcc_qupv3_wrap0_s3_div_clk_src.clkr.hw,
  3728. },
  3729. .num_parents = 1,
  3730. .flags = CLK_SET_RATE_PARENT,
  3731. .ops = &clk_branch2_ops,
  3732. },
  3733. },
  3734. };
  3735. static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
  3736. .halt_reg = 0x424f4,
  3737. .halt_check = BRANCH_HALT_VOTED,
  3738. .clkr = {
  3739. .enable_reg = 0x52020,
  3740. .enable_mask = BIT(14),
  3741. .hw.init = &(const struct clk_init_data) {
  3742. .name = "gcc_qupv3_wrap0_s4_clk",
  3743. .parent_hws = (const struct clk_hw*[]) {
  3744. &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
  3745. },
  3746. .num_parents = 1,
  3747. .flags = CLK_SET_RATE_PARENT,
  3748. .ops = &clk_branch2_ops,
  3749. },
  3750. },
  3751. };
  3752. static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
  3753. .halt_reg = 0x4262c,
  3754. .halt_check = BRANCH_HALT_VOTED,
  3755. .clkr = {
  3756. .enable_reg = 0x52020,
  3757. .enable_mask = BIT(15),
  3758. .hw.init = &(const struct clk_init_data) {
  3759. .name = "gcc_qupv3_wrap0_s5_clk",
  3760. .parent_hws = (const struct clk_hw*[]) {
  3761. &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
  3762. },
  3763. .num_parents = 1,
  3764. .flags = CLK_SET_RATE_PARENT,
  3765. .ops = &clk_branch2_ops,
  3766. },
  3767. },
  3768. };
  3769. static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
  3770. .halt_reg = 0x42764,
  3771. .halt_check = BRANCH_HALT_VOTED,
  3772. .clkr = {
  3773. .enable_reg = 0x52020,
  3774. .enable_mask = BIT(16),
  3775. .hw.init = &(const struct clk_init_data) {
  3776. .name = "gcc_qupv3_wrap0_s6_clk",
  3777. .parent_hws = (const struct clk_hw*[]) {
  3778. &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
  3779. },
  3780. .num_parents = 1,
  3781. .flags = CLK_SET_RATE_PARENT,
  3782. .ops = &clk_branch2_ops,
  3783. },
  3784. },
  3785. };
  3786. static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
  3787. .halt_reg = 0x4289c,
  3788. .halt_check = BRANCH_HALT_VOTED,
  3789. .clkr = {
  3790. .enable_reg = 0x52020,
  3791. .enable_mask = BIT(17),
  3792. .hw.init = &(const struct clk_init_data) {
  3793. .name = "gcc_qupv3_wrap0_s7_clk",
  3794. .parent_hws = (const struct clk_hw*[]) {
  3795. &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
  3796. },
  3797. .num_parents = 1,
  3798. .flags = CLK_SET_RATE_PARENT,
  3799. .ops = &clk_branch2_ops,
  3800. },
  3801. },
  3802. };
  3803. static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
  3804. .halt_reg = 0x23168,
  3805. .halt_check = BRANCH_HALT_VOTED,
  3806. .clkr = {
  3807. .enable_reg = 0x52008,
  3808. .enable_mask = BIT(18),
  3809. .hw.init = &(const struct clk_init_data) {
  3810. .name = "gcc_qupv3_wrap1_core_2x_clk",
  3811. .ops = &clk_branch2_ops,
  3812. },
  3813. },
  3814. };
  3815. static struct clk_branch gcc_qupv3_wrap1_core_clk = {
  3816. .halt_reg = 0x23158,
  3817. .halt_check = BRANCH_HALT_VOTED,
  3818. .clkr = {
  3819. .enable_reg = 0x52008,
  3820. .enable_mask = BIT(19),
  3821. .hw.init = &(const struct clk_init_data) {
  3822. .name = "gcc_qupv3_wrap1_core_clk",
  3823. .ops = &clk_branch2_ops,
  3824. },
  3825. },
  3826. };
  3827. static struct clk_branch gcc_qupv3_wrap1_qspi_s2_clk = {
  3828. .halt_reg = 0x18280,
  3829. .halt_check = BRANCH_HALT_VOTED,
  3830. .clkr = {
  3831. .enable_reg = 0x52028,
  3832. .enable_mask = BIT(4),
  3833. .hw.init = &(const struct clk_init_data) {
  3834. .name = "gcc_qupv3_wrap1_qspi_s2_clk",
  3835. .parent_hws = (const struct clk_hw*[]) {
  3836. &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
  3837. },
  3838. .num_parents = 1,
  3839. .flags = CLK_SET_RATE_PARENT,
  3840. .ops = &clk_branch2_ops,
  3841. },
  3842. },
  3843. };
  3844. static struct clk_branch gcc_qupv3_wrap1_qspi_s3_clk = {
  3845. .halt_reg = 0x183c0,
  3846. .halt_check = BRANCH_HALT_VOTED,
  3847. .clkr = {
  3848. .enable_reg = 0x52028,
  3849. .enable_mask = BIT(5),
  3850. .hw.init = &(const struct clk_init_data) {
  3851. .name = "gcc_qupv3_wrap1_qspi_s3_clk",
  3852. .parent_hws = (const struct clk_hw*[]) {
  3853. &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
  3854. },
  3855. .num_parents = 1,
  3856. .flags = CLK_SET_RATE_PARENT,
  3857. .ops = &clk_branch2_ops,
  3858. },
  3859. },
  3860. };
  3861. static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
  3862. .halt_reg = 0x18004,
  3863. .halt_check = BRANCH_HALT_VOTED,
  3864. .clkr = {
  3865. .enable_reg = 0x52008,
  3866. .enable_mask = BIT(22),
  3867. .hw.init = &(const struct clk_init_data) {
  3868. .name = "gcc_qupv3_wrap1_s0_clk",
  3869. .parent_hws = (const struct clk_hw*[]) {
  3870. &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
  3871. },
  3872. .num_parents = 1,
  3873. .flags = CLK_SET_RATE_PARENT,
  3874. .ops = &clk_branch2_ops,
  3875. },
  3876. },
  3877. };
  3878. static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
  3879. .halt_reg = 0x1813c,
  3880. .halt_check = BRANCH_HALT_VOTED,
  3881. .clkr = {
  3882. .enable_reg = 0x52008,
  3883. .enable_mask = BIT(23),
  3884. .hw.init = &(const struct clk_init_data) {
  3885. .name = "gcc_qupv3_wrap1_s1_clk",
  3886. .parent_hws = (const struct clk_hw*[]) {
  3887. &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
  3888. },
  3889. .num_parents = 1,
  3890. .flags = CLK_SET_RATE_PARENT,
  3891. .ops = &clk_branch2_ops,
  3892. },
  3893. },
  3894. };
  3895. static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
  3896. .halt_reg = 0x18274,
  3897. .halt_check = BRANCH_HALT_VOTED,
  3898. .clkr = {
  3899. .enable_reg = 0x52008,
  3900. .enable_mask = BIT(24),
  3901. .hw.init = &(const struct clk_init_data) {
  3902. .name = "gcc_qupv3_wrap1_s2_clk",
  3903. .parent_hws = (const struct clk_hw*[]) {
  3904. &gcc_qupv3_wrap1_s2_div_clk_src.clkr.hw,
  3905. },
  3906. .num_parents = 1,
  3907. .flags = CLK_SET_RATE_PARENT,
  3908. .ops = &clk_branch2_ops,
  3909. },
  3910. },
  3911. };
  3912. static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
  3913. .halt_reg = 0x183b4,
  3914. .halt_check = BRANCH_HALT_VOTED,
  3915. .clkr = {
  3916. .enable_reg = 0x52008,
  3917. .enable_mask = BIT(25),
  3918. .hw.init = &(const struct clk_init_data) {
  3919. .name = "gcc_qupv3_wrap1_s3_clk",
  3920. .parent_hws = (const struct clk_hw*[]) {
  3921. &gcc_qupv3_wrap1_s3_div_clk_src.clkr.hw,
  3922. },
  3923. .num_parents = 1,
  3924. .flags = CLK_SET_RATE_PARENT,
  3925. .ops = &clk_branch2_ops,
  3926. },
  3927. },
  3928. };
  3929. static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
  3930. .halt_reg = 0x184f4,
  3931. .halt_check = BRANCH_HALT_VOTED,
  3932. .clkr = {
  3933. .enable_reg = 0x52008,
  3934. .enable_mask = BIT(26),
  3935. .hw.init = &(const struct clk_init_data) {
  3936. .name = "gcc_qupv3_wrap1_s4_clk",
  3937. .parent_hws = (const struct clk_hw*[]) {
  3938. &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
  3939. },
  3940. .num_parents = 1,
  3941. .flags = CLK_SET_RATE_PARENT,
  3942. .ops = &clk_branch2_ops,
  3943. },
  3944. },
  3945. };
  3946. static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
  3947. .halt_reg = 0x1862c,
  3948. .halt_check = BRANCH_HALT_VOTED,
  3949. .clkr = {
  3950. .enable_reg = 0x52008,
  3951. .enable_mask = BIT(27),
  3952. .hw.init = &(const struct clk_init_data) {
  3953. .name = "gcc_qupv3_wrap1_s5_clk",
  3954. .parent_hws = (const struct clk_hw*[]) {
  3955. &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
  3956. },
  3957. .num_parents = 1,
  3958. .flags = CLK_SET_RATE_PARENT,
  3959. .ops = &clk_branch2_ops,
  3960. },
  3961. },
  3962. };
  3963. static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
  3964. .halt_reg = 0x18764,
  3965. .halt_check = BRANCH_HALT_VOTED,
  3966. .clkr = {
  3967. .enable_reg = 0x52008,
  3968. .enable_mask = BIT(28),
  3969. .hw.init = &(const struct clk_init_data) {
  3970. .name = "gcc_qupv3_wrap1_s6_clk",
  3971. .parent_hws = (const struct clk_hw*[]) {
  3972. &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
  3973. },
  3974. .num_parents = 1,
  3975. .flags = CLK_SET_RATE_PARENT,
  3976. .ops = &clk_branch2_ops,
  3977. },
  3978. },
  3979. };
  3980. static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
  3981. .halt_reg = 0x1889c,
  3982. .halt_check = BRANCH_HALT_VOTED,
  3983. .clkr = {
  3984. .enable_reg = 0x52010,
  3985. .enable_mask = BIT(16),
  3986. .hw.init = &(const struct clk_init_data) {
  3987. .name = "gcc_qupv3_wrap1_s7_clk",
  3988. .parent_hws = (const struct clk_hw*[]) {
  3989. &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
  3990. },
  3991. .num_parents = 1,
  3992. .flags = CLK_SET_RATE_PARENT,
  3993. .ops = &clk_branch2_ops,
  3994. },
  3995. },
  3996. };
  3997. static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
  3998. .halt_reg = 0x232b8,
  3999. .halt_check = BRANCH_HALT_VOTED,
  4000. .clkr = {
  4001. .enable_reg = 0x52010,
  4002. .enable_mask = BIT(3),
  4003. .hw.init = &(const struct clk_init_data) {
  4004. .name = "gcc_qupv3_wrap2_core_2x_clk",
  4005. .ops = &clk_branch2_ops,
  4006. },
  4007. },
  4008. };
  4009. static struct clk_branch gcc_qupv3_wrap2_core_clk = {
  4010. .halt_reg = 0x232a8,
  4011. .halt_check = BRANCH_HALT_VOTED,
  4012. .clkr = {
  4013. .enable_reg = 0x52010,
  4014. .enable_mask = BIT(0),
  4015. .hw.init = &(const struct clk_init_data) {
  4016. .name = "gcc_qupv3_wrap2_core_clk",
  4017. .ops = &clk_branch2_ops,
  4018. },
  4019. },
  4020. };
  4021. static struct clk_branch gcc_qupv3_wrap2_qspi_s2_clk = {
  4022. .halt_reg = 0x1e280,
  4023. .halt_check = BRANCH_HALT_VOTED,
  4024. .clkr = {
  4025. .enable_reg = 0x52028,
  4026. .enable_mask = BIT(6),
  4027. .hw.init = &(const struct clk_init_data) {
  4028. .name = "gcc_qupv3_wrap2_qspi_s2_clk",
  4029. .parent_hws = (const struct clk_hw*[]) {
  4030. &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
  4031. },
  4032. .num_parents = 1,
  4033. .flags = CLK_SET_RATE_PARENT,
  4034. .ops = &clk_branch2_ops,
  4035. },
  4036. },
  4037. };
  4038. static struct clk_branch gcc_qupv3_wrap2_qspi_s3_clk = {
  4039. .halt_reg = 0x1e3c0,
  4040. .halt_check = BRANCH_HALT_VOTED,
  4041. .clkr = {
  4042. .enable_reg = 0x52028,
  4043. .enable_mask = BIT(7),
  4044. .hw.init = &(const struct clk_init_data) {
  4045. .name = "gcc_qupv3_wrap2_qspi_s3_clk",
  4046. .parent_hws = (const struct clk_hw*[]) {
  4047. &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
  4048. },
  4049. .num_parents = 1,
  4050. .flags = CLK_SET_RATE_PARENT,
  4051. .ops = &clk_branch2_ops,
  4052. },
  4053. },
  4054. };
  4055. static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
  4056. .halt_reg = 0x1e004,
  4057. .halt_check = BRANCH_HALT_VOTED,
  4058. .clkr = {
  4059. .enable_reg = 0x52010,
  4060. .enable_mask = BIT(4),
  4061. .hw.init = &(const struct clk_init_data) {
  4062. .name = "gcc_qupv3_wrap2_s0_clk",
  4063. .parent_hws = (const struct clk_hw*[]) {
  4064. &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
  4065. },
  4066. .num_parents = 1,
  4067. .flags = CLK_SET_RATE_PARENT,
  4068. .ops = &clk_branch2_ops,
  4069. },
  4070. },
  4071. };
  4072. static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
  4073. .halt_reg = 0x1e13c,
  4074. .halt_check = BRANCH_HALT_VOTED,
  4075. .clkr = {
  4076. .enable_reg = 0x52010,
  4077. .enable_mask = BIT(5),
  4078. .hw.init = &(const struct clk_init_data) {
  4079. .name = "gcc_qupv3_wrap2_s1_clk",
  4080. .parent_hws = (const struct clk_hw*[]) {
  4081. &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
  4082. },
  4083. .num_parents = 1,
  4084. .flags = CLK_SET_RATE_PARENT,
  4085. .ops = &clk_branch2_ops,
  4086. },
  4087. },
  4088. };
  4089. static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
  4090. .halt_reg = 0x1e274,
  4091. .halt_check = BRANCH_HALT_VOTED,
  4092. .clkr = {
  4093. .enable_reg = 0x52010,
  4094. .enable_mask = BIT(6),
  4095. .hw.init = &(const struct clk_init_data) {
  4096. .name = "gcc_qupv3_wrap2_s2_clk",
  4097. .parent_hws = (const struct clk_hw*[]) {
  4098. &gcc_qupv3_wrap2_s2_div_clk_src.clkr.hw,
  4099. },
  4100. .num_parents = 1,
  4101. .flags = CLK_SET_RATE_PARENT,
  4102. .ops = &clk_branch2_ops,
  4103. },
  4104. },
  4105. };
  4106. static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
  4107. .halt_reg = 0x1e3b4,
  4108. .halt_check = BRANCH_HALT_VOTED,
  4109. .clkr = {
  4110. .enable_reg = 0x52010,
  4111. .enable_mask = BIT(7),
  4112. .hw.init = &(const struct clk_init_data) {
  4113. .name = "gcc_qupv3_wrap2_s3_clk",
  4114. .parent_hws = (const struct clk_hw*[]) {
  4115. &gcc_qupv3_wrap2_s3_div_clk_src.clkr.hw,
  4116. },
  4117. .num_parents = 1,
  4118. .flags = CLK_SET_RATE_PARENT,
  4119. .ops = &clk_branch2_ops,
  4120. },
  4121. },
  4122. };
  4123. static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
  4124. .halt_reg = 0x1e4f4,
  4125. .halt_check = BRANCH_HALT_VOTED,
  4126. .clkr = {
  4127. .enable_reg = 0x52010,
  4128. .enable_mask = BIT(8),
  4129. .hw.init = &(const struct clk_init_data) {
  4130. .name = "gcc_qupv3_wrap2_s4_clk",
  4131. .parent_hws = (const struct clk_hw*[]) {
  4132. &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
  4133. },
  4134. .num_parents = 1,
  4135. .flags = CLK_SET_RATE_PARENT,
  4136. .ops = &clk_branch2_ops,
  4137. },
  4138. },
  4139. };
  4140. static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
  4141. .halt_reg = 0x1e62c,
  4142. .halt_check = BRANCH_HALT_VOTED,
  4143. .clkr = {
  4144. .enable_reg = 0x52010,
  4145. .enable_mask = BIT(9),
  4146. .hw.init = &(const struct clk_init_data) {
  4147. .name = "gcc_qupv3_wrap2_s5_clk",
  4148. .parent_hws = (const struct clk_hw*[]) {
  4149. &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
  4150. },
  4151. .num_parents = 1,
  4152. .flags = CLK_SET_RATE_PARENT,
  4153. .ops = &clk_branch2_ops,
  4154. },
  4155. },
  4156. };
  4157. static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
  4158. .halt_reg = 0x1e764,
  4159. .halt_check = BRANCH_HALT_VOTED,
  4160. .clkr = {
  4161. .enable_reg = 0x52010,
  4162. .enable_mask = BIT(10),
  4163. .hw.init = &(const struct clk_init_data) {
  4164. .name = "gcc_qupv3_wrap2_s6_clk",
  4165. .parent_hws = (const struct clk_hw*[]) {
  4166. &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
  4167. },
  4168. .num_parents = 1,
  4169. .flags = CLK_SET_RATE_PARENT,
  4170. .ops = &clk_branch2_ops,
  4171. },
  4172. },
  4173. };
  4174. static struct clk_branch gcc_qupv3_wrap2_s7_clk = {
  4175. .halt_reg = 0x1e89c,
  4176. .halt_check = BRANCH_HALT_VOTED,
  4177. .clkr = {
  4178. .enable_reg = 0x52010,
  4179. .enable_mask = BIT(17),
  4180. .hw.init = &(const struct clk_init_data) {
  4181. .name = "gcc_qupv3_wrap2_s7_clk",
  4182. .parent_hws = (const struct clk_hw*[]) {
  4183. &gcc_qupv3_wrap2_s7_clk_src.clkr.hw,
  4184. },
  4185. .num_parents = 1,
  4186. .flags = CLK_SET_RATE_PARENT,
  4187. .ops = &clk_branch2_ops,
  4188. },
  4189. },
  4190. };
  4191. static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
  4192. .halt_reg = 0x23000,
  4193. .halt_check = BRANCH_HALT_VOTED,
  4194. .hwcg_reg = 0x23000,
  4195. .hwcg_bit = 1,
  4196. .clkr = {
  4197. .enable_reg = 0x52020,
  4198. .enable_mask = BIT(6),
  4199. .hw.init = &(const struct clk_init_data) {
  4200. .name = "gcc_qupv3_wrap_0_m_ahb_clk",
  4201. .ops = &clk_branch2_ops,
  4202. },
  4203. },
  4204. };
  4205. static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
  4206. .halt_reg = 0x23004,
  4207. .halt_check = BRANCH_HALT_VOTED,
  4208. .hwcg_reg = 0x23004,
  4209. .hwcg_bit = 1,
  4210. .clkr = {
  4211. .enable_reg = 0x52020,
  4212. .enable_mask = BIT(7),
  4213. .hw.init = &(const struct clk_init_data) {
  4214. .name = "gcc_qupv3_wrap_0_s_ahb_clk",
  4215. .ops = &clk_branch2_ops,
  4216. },
  4217. },
  4218. };
  4219. static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
  4220. .halt_reg = 0x23150,
  4221. .halt_check = BRANCH_HALT_VOTED,
  4222. .hwcg_reg = 0x23150,
  4223. .hwcg_bit = 1,
  4224. .clkr = {
  4225. .enable_reg = 0x52008,
  4226. .enable_mask = BIT(20),
  4227. .hw.init = &(const struct clk_init_data) {
  4228. .name = "gcc_qupv3_wrap_1_m_ahb_clk",
  4229. .ops = &clk_branch2_ops,
  4230. },
  4231. },
  4232. };
  4233. static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
  4234. .halt_reg = 0x23154,
  4235. .halt_check = BRANCH_HALT_VOTED,
  4236. .hwcg_reg = 0x23154,
  4237. .hwcg_bit = 1,
  4238. .clkr = {
  4239. .enable_reg = 0x52008,
  4240. .enable_mask = BIT(21),
  4241. .hw.init = &(const struct clk_init_data) {
  4242. .name = "gcc_qupv3_wrap_1_s_ahb_clk",
  4243. .ops = &clk_branch2_ops,
  4244. },
  4245. },
  4246. };
  4247. static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
  4248. .halt_reg = 0x232a0,
  4249. .halt_check = BRANCH_HALT_VOTED,
  4250. .hwcg_reg = 0x232a0,
  4251. .hwcg_bit = 1,
  4252. .clkr = {
  4253. .enable_reg = 0x52010,
  4254. .enable_mask = BIT(2),
  4255. .hw.init = &(const struct clk_init_data) {
  4256. .name = "gcc_qupv3_wrap_2_m_ahb_clk",
  4257. .ops = &clk_branch2_ops,
  4258. },
  4259. },
  4260. };
  4261. static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
  4262. .halt_reg = 0x232a4,
  4263. .halt_check = BRANCH_HALT_VOTED,
  4264. .hwcg_reg = 0x232a4,
  4265. .hwcg_bit = 1,
  4266. .clkr = {
  4267. .enable_reg = 0x52010,
  4268. .enable_mask = BIT(1),
  4269. .hw.init = &(const struct clk_init_data) {
  4270. .name = "gcc_qupv3_wrap_2_s_ahb_clk",
  4271. .ops = &clk_branch2_ops,
  4272. },
  4273. },
  4274. };
  4275. static struct clk_branch gcc_sdcc2_ahb_clk = {
  4276. .halt_reg = 0x14010,
  4277. .halt_check = BRANCH_HALT,
  4278. .clkr = {
  4279. .enable_reg = 0x14010,
  4280. .enable_mask = BIT(0),
  4281. .hw.init = &(const struct clk_init_data) {
  4282. .name = "gcc_sdcc2_ahb_clk",
  4283. .ops = &clk_branch2_ops,
  4284. },
  4285. },
  4286. };
  4287. static struct clk_branch gcc_sdcc2_apps_clk = {
  4288. .halt_reg = 0x14004,
  4289. .halt_check = BRANCH_HALT,
  4290. .clkr = {
  4291. .enable_reg = 0x14004,
  4292. .enable_mask = BIT(0),
  4293. .hw.init = &(const struct clk_init_data) {
  4294. .name = "gcc_sdcc2_apps_clk",
  4295. .parent_hws = (const struct clk_hw*[]) {
  4296. &gcc_sdcc2_apps_clk_src.clkr.hw,
  4297. },
  4298. .num_parents = 1,
  4299. .flags = CLK_SET_RATE_PARENT,
  4300. .ops = &clk_branch2_ops,
  4301. },
  4302. },
  4303. };
  4304. static struct clk_branch gcc_sdcc4_ahb_clk = {
  4305. .halt_reg = 0x16010,
  4306. .halt_check = BRANCH_HALT,
  4307. .clkr = {
  4308. .enable_reg = 0x16010,
  4309. .enable_mask = BIT(0),
  4310. .hw.init = &(const struct clk_init_data) {
  4311. .name = "gcc_sdcc4_ahb_clk",
  4312. .ops = &clk_branch2_ops,
  4313. },
  4314. },
  4315. };
  4316. static struct clk_branch gcc_sdcc4_apps_clk = {
  4317. .halt_reg = 0x16004,
  4318. .halt_check = BRANCH_HALT,
  4319. .clkr = {
  4320. .enable_reg = 0x16004,
  4321. .enable_mask = BIT(0),
  4322. .hw.init = &(const struct clk_init_data) {
  4323. .name = "gcc_sdcc4_apps_clk",
  4324. .parent_hws = (const struct clk_hw*[]) {
  4325. &gcc_sdcc4_apps_clk_src.clkr.hw,
  4326. },
  4327. .num_parents = 1,
  4328. .flags = CLK_SET_RATE_PARENT,
  4329. .ops = &clk_branch2_ops,
  4330. },
  4331. },
  4332. };
  4333. static struct clk_branch gcc_sys_noc_usb_axi_clk = {
  4334. .halt_reg = 0x2d014,
  4335. .halt_check = BRANCH_HALT_VOTED,
  4336. .hwcg_reg = 0x2d014,
  4337. .hwcg_bit = 1,
  4338. .clkr = {
  4339. .enable_reg = 0x2d014,
  4340. .enable_mask = BIT(0),
  4341. .hw.init = &(const struct clk_init_data) {
  4342. .name = "gcc_sys_noc_usb_axi_clk",
  4343. .ops = &clk_branch2_ops,
  4344. },
  4345. },
  4346. };
  4347. static struct clk_branch gcc_ufs_phy_ahb_clk = {
  4348. .halt_reg = 0x77024,
  4349. .halt_check = BRANCH_HALT_VOTED,
  4350. .hwcg_reg = 0x77024,
  4351. .hwcg_bit = 1,
  4352. .clkr = {
  4353. .enable_reg = 0x77024,
  4354. .enable_mask = BIT(0),
  4355. .hw.init = &(const struct clk_init_data) {
  4356. .name = "gcc_ufs_phy_ahb_clk",
  4357. .ops = &clk_branch2_ops,
  4358. },
  4359. },
  4360. };
  4361. static struct clk_branch gcc_ufs_phy_axi_clk = {
  4362. .halt_reg = 0x77018,
  4363. .halt_check = BRANCH_HALT_VOTED,
  4364. .hwcg_reg = 0x77018,
  4365. .hwcg_bit = 1,
  4366. .clkr = {
  4367. .enable_reg = 0x77018,
  4368. .enable_mask = BIT(0),
  4369. .hw.init = &(const struct clk_init_data) {
  4370. .name = "gcc_ufs_phy_axi_clk",
  4371. .parent_hws = (const struct clk_hw*[]) {
  4372. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  4373. },
  4374. .num_parents = 1,
  4375. .flags = CLK_SET_RATE_PARENT,
  4376. .ops = &clk_branch2_ops,
  4377. },
  4378. },
  4379. };
  4380. static struct clk_branch gcc_ufs_phy_ice_core_clk = {
  4381. .halt_reg = 0x77074,
  4382. .halt_check = BRANCH_HALT_VOTED,
  4383. .hwcg_reg = 0x77074,
  4384. .hwcg_bit = 1,
  4385. .clkr = {
  4386. .enable_reg = 0x77074,
  4387. .enable_mask = BIT(0),
  4388. .hw.init = &(const struct clk_init_data) {
  4389. .name = "gcc_ufs_phy_ice_core_clk",
  4390. .parent_hws = (const struct clk_hw*[]) {
  4391. &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
  4392. },
  4393. .num_parents = 1,
  4394. .flags = CLK_SET_RATE_PARENT,
  4395. .ops = &clk_branch2_ops,
  4396. },
  4397. },
  4398. };
  4399. static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
  4400. .halt_reg = 0x770b0,
  4401. .halt_check = BRANCH_HALT_VOTED,
  4402. .hwcg_reg = 0x770b0,
  4403. .hwcg_bit = 1,
  4404. .clkr = {
  4405. .enable_reg = 0x770b0,
  4406. .enable_mask = BIT(0),
  4407. .hw.init = &(const struct clk_init_data) {
  4408. .name = "gcc_ufs_phy_phy_aux_clk",
  4409. .parent_hws = (const struct clk_hw*[]) {
  4410. &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
  4411. },
  4412. .num_parents = 1,
  4413. .flags = CLK_SET_RATE_PARENT,
  4414. .ops = &clk_branch2_ops,
  4415. },
  4416. },
  4417. };
  4418. static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
  4419. .halt_reg = 0x7702c,
  4420. .halt_check = BRANCH_HALT,
  4421. .clkr = {
  4422. .enable_reg = 0x7702c,
  4423. .enable_mask = BIT(0),
  4424. .hw.init = &(const struct clk_init_data) {
  4425. .name = "gcc_ufs_phy_rx_symbol_0_clk",
  4426. .ops = &clk_branch2_ops,
  4427. },
  4428. },
  4429. };
  4430. static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
  4431. .halt_reg = 0x770cc,
  4432. .halt_check = BRANCH_HALT,
  4433. .clkr = {
  4434. .enable_reg = 0x770cc,
  4435. .enable_mask = BIT(0),
  4436. .hw.init = &(const struct clk_init_data) {
  4437. .name = "gcc_ufs_phy_rx_symbol_1_clk",
  4438. .ops = &clk_branch2_ops,
  4439. },
  4440. },
  4441. };
  4442. static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
  4443. .halt_reg = 0x77028,
  4444. .halt_check = BRANCH_HALT,
  4445. .clkr = {
  4446. .enable_reg = 0x77028,
  4447. .enable_mask = BIT(0),
  4448. .hw.init = &(const struct clk_init_data) {
  4449. .name = "gcc_ufs_phy_tx_symbol_0_clk",
  4450. .ops = &clk_branch2_ops,
  4451. },
  4452. },
  4453. };
  4454. static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
  4455. .halt_reg = 0x77068,
  4456. .halt_check = BRANCH_HALT_VOTED,
  4457. .hwcg_reg = 0x77068,
  4458. .hwcg_bit = 1,
  4459. .clkr = {
  4460. .enable_reg = 0x77068,
  4461. .enable_mask = BIT(0),
  4462. .hw.init = &(const struct clk_init_data) {
  4463. .name = "gcc_ufs_phy_unipro_core_clk",
  4464. .parent_hws = (const struct clk_hw*[]) {
  4465. &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
  4466. },
  4467. .num_parents = 1,
  4468. .flags = CLK_SET_RATE_PARENT,
  4469. .ops = &clk_branch2_ops,
  4470. },
  4471. },
  4472. };
  4473. static struct clk_branch gcc_usb20_master_clk = {
  4474. .halt_reg = 0x29018,
  4475. .halt_check = BRANCH_HALT,
  4476. .clkr = {
  4477. .enable_reg = 0x29018,
  4478. .enable_mask = BIT(0),
  4479. .hw.init = &(const struct clk_init_data) {
  4480. .name = "gcc_usb20_master_clk",
  4481. .parent_hws = (const struct clk_hw*[]) {
  4482. &gcc_usb20_master_clk_src.clkr.hw,
  4483. },
  4484. .num_parents = 1,
  4485. .flags = CLK_SET_RATE_PARENT,
  4486. .ops = &clk_branch2_ops,
  4487. },
  4488. },
  4489. };
  4490. static struct clk_branch gcc_usb20_mock_utmi_clk = {
  4491. .halt_reg = 0x29028,
  4492. .halt_check = BRANCH_HALT,
  4493. .clkr = {
  4494. .enable_reg = 0x29028,
  4495. .enable_mask = BIT(0),
  4496. .hw.init = &(const struct clk_init_data) {
  4497. .name = "gcc_usb20_mock_utmi_clk",
  4498. .parent_hws = (const struct clk_hw*[]) {
  4499. &gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw,
  4500. },
  4501. .num_parents = 1,
  4502. .flags = CLK_SET_RATE_PARENT,
  4503. .ops = &clk_branch2_ops,
  4504. },
  4505. },
  4506. };
  4507. static struct clk_branch gcc_usb20_sleep_clk = {
  4508. .halt_reg = 0x29024,
  4509. .halt_check = BRANCH_HALT,
  4510. .clkr = {
  4511. .enable_reg = 0x29024,
  4512. .enable_mask = BIT(0),
  4513. .hw.init = &(const struct clk_init_data) {
  4514. .name = "gcc_usb20_sleep_clk",
  4515. .ops = &clk_branch2_ops,
  4516. },
  4517. },
  4518. };
  4519. static struct clk_branch gcc_usb30_mp_master_clk = {
  4520. .halt_reg = 0x17018,
  4521. .halt_check = BRANCH_HALT,
  4522. .clkr = {
  4523. .enable_reg = 0x17018,
  4524. .enable_mask = BIT(0),
  4525. .hw.init = &(const struct clk_init_data) {
  4526. .name = "gcc_usb30_mp_master_clk",
  4527. .parent_hws = (const struct clk_hw*[]) {
  4528. &gcc_usb30_mp_master_clk_src.clkr.hw,
  4529. },
  4530. .num_parents = 1,
  4531. .flags = CLK_SET_RATE_PARENT,
  4532. .ops = &clk_branch2_ops,
  4533. },
  4534. },
  4535. };
  4536. static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
  4537. .halt_reg = 0x17028,
  4538. .halt_check = BRANCH_HALT,
  4539. .clkr = {
  4540. .enable_reg = 0x17028,
  4541. .enable_mask = BIT(0),
  4542. .hw.init = &(const struct clk_init_data) {
  4543. .name = "gcc_usb30_mp_mock_utmi_clk",
  4544. .parent_hws = (const struct clk_hw*[]) {
  4545. &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr.hw,
  4546. },
  4547. .num_parents = 1,
  4548. .flags = CLK_SET_RATE_PARENT,
  4549. .ops = &clk_branch2_ops,
  4550. },
  4551. },
  4552. };
  4553. static struct clk_branch gcc_usb30_mp_sleep_clk = {
  4554. .halt_reg = 0x17024,
  4555. .halt_check = BRANCH_HALT,
  4556. .clkr = {
  4557. .enable_reg = 0x17024,
  4558. .enable_mask = BIT(0),
  4559. .hw.init = &(const struct clk_init_data) {
  4560. .name = "gcc_usb30_mp_sleep_clk",
  4561. .ops = &clk_branch2_ops,
  4562. },
  4563. },
  4564. };
  4565. static struct clk_branch gcc_usb30_prim_master_clk = {
  4566. .halt_reg = 0x39018,
  4567. .halt_check = BRANCH_HALT,
  4568. .clkr = {
  4569. .enable_reg = 0x39018,
  4570. .enable_mask = BIT(0),
  4571. .hw.init = &(const struct clk_init_data) {
  4572. .name = "gcc_usb30_prim_master_clk",
  4573. .parent_hws = (const struct clk_hw*[]) {
  4574. &gcc_usb30_prim_master_clk_src.clkr.hw,
  4575. },
  4576. .num_parents = 1,
  4577. .flags = CLK_SET_RATE_PARENT,
  4578. .ops = &clk_branch2_ops,
  4579. },
  4580. },
  4581. };
  4582. static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
  4583. .halt_reg = 0x39028,
  4584. .halt_check = BRANCH_HALT,
  4585. .clkr = {
  4586. .enable_reg = 0x39028,
  4587. .enable_mask = BIT(0),
  4588. .hw.init = &(const struct clk_init_data) {
  4589. .name = "gcc_usb30_prim_mock_utmi_clk",
  4590. .parent_hws = (const struct clk_hw*[]) {
  4591. &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
  4592. },
  4593. .num_parents = 1,
  4594. .flags = CLK_SET_RATE_PARENT,
  4595. .ops = &clk_branch2_ops,
  4596. },
  4597. },
  4598. };
  4599. static struct clk_branch gcc_usb30_prim_sleep_clk = {
  4600. .halt_reg = 0x39024,
  4601. .halt_check = BRANCH_HALT,
  4602. .clkr = {
  4603. .enable_reg = 0x39024,
  4604. .enable_mask = BIT(0),
  4605. .hw.init = &(const struct clk_init_data) {
  4606. .name = "gcc_usb30_prim_sleep_clk",
  4607. .ops = &clk_branch2_ops,
  4608. },
  4609. },
  4610. };
  4611. static struct clk_branch gcc_usb30_sec_master_clk = {
  4612. .halt_reg = 0xa1018,
  4613. .halt_check = BRANCH_HALT,
  4614. .clkr = {
  4615. .enable_reg = 0xa1018,
  4616. .enable_mask = BIT(0),
  4617. .hw.init = &(const struct clk_init_data) {
  4618. .name = "gcc_usb30_sec_master_clk",
  4619. .parent_hws = (const struct clk_hw*[]) {
  4620. &gcc_usb30_sec_master_clk_src.clkr.hw,
  4621. },
  4622. .num_parents = 1,
  4623. .flags = CLK_SET_RATE_PARENT,
  4624. .ops = &clk_branch2_ops,
  4625. },
  4626. },
  4627. };
  4628. static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
  4629. .halt_reg = 0xa1028,
  4630. .halt_check = BRANCH_HALT,
  4631. .clkr = {
  4632. .enable_reg = 0xa1028,
  4633. .enable_mask = BIT(0),
  4634. .hw.init = &(const struct clk_init_data) {
  4635. .name = "gcc_usb30_sec_mock_utmi_clk",
  4636. .parent_hws = (const struct clk_hw*[]) {
  4637. &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,
  4638. },
  4639. .num_parents = 1,
  4640. .flags = CLK_SET_RATE_PARENT,
  4641. .ops = &clk_branch2_ops,
  4642. },
  4643. },
  4644. };
  4645. static struct clk_branch gcc_usb30_sec_sleep_clk = {
  4646. .halt_reg = 0xa1024,
  4647. .halt_check = BRANCH_HALT,
  4648. .clkr = {
  4649. .enable_reg = 0xa1024,
  4650. .enable_mask = BIT(0),
  4651. .hw.init = &(const struct clk_init_data) {
  4652. .name = "gcc_usb30_sec_sleep_clk",
  4653. .ops = &clk_branch2_ops,
  4654. },
  4655. },
  4656. };
  4657. static struct clk_branch gcc_usb30_tert_master_clk = {
  4658. .halt_reg = 0xa2018,
  4659. .halt_check = BRANCH_HALT,
  4660. .clkr = {
  4661. .enable_reg = 0xa2018,
  4662. .enable_mask = BIT(0),
  4663. .hw.init = &(const struct clk_init_data) {
  4664. .name = "gcc_usb30_tert_master_clk",
  4665. .parent_hws = (const struct clk_hw*[]) {
  4666. &gcc_usb30_tert_master_clk_src.clkr.hw,
  4667. },
  4668. .num_parents = 1,
  4669. .flags = CLK_SET_RATE_PARENT,
  4670. .ops = &clk_branch2_ops,
  4671. },
  4672. },
  4673. };
  4674. static struct clk_branch gcc_usb30_tert_mock_utmi_clk = {
  4675. .halt_reg = 0xa2028,
  4676. .halt_check = BRANCH_HALT,
  4677. .clkr = {
  4678. .enable_reg = 0xa2028,
  4679. .enable_mask = BIT(0),
  4680. .hw.init = &(const struct clk_init_data) {
  4681. .name = "gcc_usb30_tert_mock_utmi_clk",
  4682. .parent_hws = (const struct clk_hw*[]) {
  4683. &gcc_usb30_tert_mock_utmi_postdiv_clk_src.clkr.hw,
  4684. },
  4685. .num_parents = 1,
  4686. .flags = CLK_SET_RATE_PARENT,
  4687. .ops = &clk_branch2_ops,
  4688. },
  4689. },
  4690. };
  4691. static struct clk_branch gcc_usb30_tert_sleep_clk = {
  4692. .halt_reg = 0xa2024,
  4693. .halt_check = BRANCH_HALT,
  4694. .clkr = {
  4695. .enable_reg = 0xa2024,
  4696. .enable_mask = BIT(0),
  4697. .hw.init = &(const struct clk_init_data) {
  4698. .name = "gcc_usb30_tert_sleep_clk",
  4699. .ops = &clk_branch2_ops,
  4700. },
  4701. },
  4702. };
  4703. static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
  4704. .halt_reg = 0x17288,
  4705. .halt_check = BRANCH_HALT,
  4706. .clkr = {
  4707. .enable_reg = 0x17288,
  4708. .enable_mask = BIT(0),
  4709. .hw.init = &(const struct clk_init_data) {
  4710. .name = "gcc_usb3_mp_phy_aux_clk",
  4711. .parent_hws = (const struct clk_hw*[]) {
  4712. &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
  4713. },
  4714. .num_parents = 1,
  4715. .flags = CLK_SET_RATE_PARENT,
  4716. .ops = &clk_branch2_ops,
  4717. },
  4718. },
  4719. };
  4720. static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
  4721. .halt_reg = 0x1728c,
  4722. .halt_check = BRANCH_HALT,
  4723. .clkr = {
  4724. .enable_reg = 0x1728c,
  4725. .enable_mask = BIT(0),
  4726. .hw.init = &(const struct clk_init_data) {
  4727. .name = "gcc_usb3_mp_phy_com_aux_clk",
  4728. .parent_hws = (const struct clk_hw*[]) {
  4729. &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
  4730. },
  4731. .num_parents = 1,
  4732. .flags = CLK_SET_RATE_PARENT,
  4733. .ops = &clk_branch2_ops,
  4734. },
  4735. },
  4736. };
  4737. static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
  4738. .halt_reg = 0x17290,
  4739. .halt_check = BRANCH_HALT_SKIP,
  4740. .clkr = {
  4741. .enable_reg = 0x17290,
  4742. .enable_mask = BIT(0),
  4743. .hw.init = &(const struct clk_init_data) {
  4744. .name = "gcc_usb3_mp_phy_pipe_0_clk",
  4745. .ops = &clk_branch2_ops,
  4746. },
  4747. },
  4748. };
  4749. static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
  4750. .halt_reg = 0x17298,
  4751. .halt_check = BRANCH_HALT_SKIP,
  4752. .clkr = {
  4753. .enable_reg = 0x17298,
  4754. .enable_mask = BIT(0),
  4755. .hw.init = &(const struct clk_init_data) {
  4756. .name = "gcc_usb3_mp_phy_pipe_1_clk",
  4757. .ops = &clk_branch2_ops,
  4758. },
  4759. },
  4760. };
  4761. static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
  4762. .halt_reg = 0x39060,
  4763. .halt_check = BRANCH_HALT,
  4764. .clkr = {
  4765. .enable_reg = 0x39060,
  4766. .enable_mask = BIT(0),
  4767. .hw.init = &(const struct clk_init_data) {
  4768. .name = "gcc_usb3_prim_phy_aux_clk",
  4769. .parent_hws = (const struct clk_hw*[]) {
  4770. &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
  4771. },
  4772. .num_parents = 1,
  4773. .flags = CLK_SET_RATE_PARENT,
  4774. .ops = &clk_branch2_ops,
  4775. },
  4776. },
  4777. };
  4778. static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
  4779. .halt_reg = 0x39064,
  4780. .halt_check = BRANCH_HALT,
  4781. .clkr = {
  4782. .enable_reg = 0x39064,
  4783. .enable_mask = BIT(0),
  4784. .hw.init = &(const struct clk_init_data) {
  4785. .name = "gcc_usb3_prim_phy_com_aux_clk",
  4786. .parent_hws = (const struct clk_hw*[]) {
  4787. &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
  4788. },
  4789. .num_parents = 1,
  4790. .flags = CLK_SET_RATE_PARENT,
  4791. .ops = &clk_branch2_ops,
  4792. },
  4793. },
  4794. };
  4795. static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
  4796. .reg = 0x3906c,
  4797. .shift = 0,
  4798. .width = 2,
  4799. .parent_map = gcc_parent_map_10,
  4800. .clkr = {
  4801. .hw.init = &(struct clk_init_data){
  4802. .name = "gcc_usb3_prim_phy_pipe_clk_src",
  4803. .parent_data = gcc_parent_data_10,
  4804. .num_parents = ARRAY_SIZE(gcc_parent_data_10),
  4805. .ops = &clk_regmap_mux_closest_ops,
  4806. },
  4807. },
  4808. };
  4809. static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
  4810. .halt_reg = 0x39068,
  4811. .halt_check = BRANCH_HALT_SKIP,
  4812. .hwcg_reg = 0x39068,
  4813. .hwcg_bit = 1,
  4814. .clkr = {
  4815. .enable_reg = 0x39068,
  4816. .enable_mask = BIT(0),
  4817. .hw.init = &(const struct clk_init_data) {
  4818. .name = "gcc_usb3_prim_phy_pipe_clk",
  4819. .parent_hws = (const struct clk_hw*[]) {
  4820. &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
  4821. },
  4822. .num_parents = 1,
  4823. .flags = CLK_SET_RATE_PARENT,
  4824. .ops = &clk_branch2_ops,
  4825. },
  4826. },
  4827. };
  4828. static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
  4829. .halt_reg = 0xa1060,
  4830. .halt_check = BRANCH_HALT,
  4831. .clkr = {
  4832. .enable_reg = 0xa1060,
  4833. .enable_mask = BIT(0),
  4834. .hw.init = &(const struct clk_init_data) {
  4835. .name = "gcc_usb3_sec_phy_aux_clk",
  4836. .parent_hws = (const struct clk_hw*[]) {
  4837. &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
  4838. },
  4839. .num_parents = 1,
  4840. .flags = CLK_SET_RATE_PARENT,
  4841. .ops = &clk_branch2_ops,
  4842. },
  4843. },
  4844. };
  4845. static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
  4846. .halt_reg = 0xa1064,
  4847. .halt_check = BRANCH_HALT,
  4848. .clkr = {
  4849. .enable_reg = 0xa1064,
  4850. .enable_mask = BIT(0),
  4851. .hw.init = &(const struct clk_init_data) {
  4852. .name = "gcc_usb3_sec_phy_com_aux_clk",
  4853. .parent_hws = (const struct clk_hw*[]) {
  4854. &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
  4855. },
  4856. .num_parents = 1,
  4857. .flags = CLK_SET_RATE_PARENT,
  4858. .ops = &clk_branch2_ops,
  4859. },
  4860. },
  4861. };
  4862. static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = {
  4863. .reg = 0xa106c,
  4864. .shift = 0,
  4865. .width = 2,
  4866. .parent_map = gcc_parent_map_11,
  4867. .clkr = {
  4868. .hw.init = &(struct clk_init_data){
  4869. .name = "gcc_usb3_sec_phy_pipe_clk_src",
  4870. .parent_data = gcc_parent_data_11,
  4871. .num_parents = ARRAY_SIZE(gcc_parent_data_11),
  4872. .ops = &clk_regmap_mux_closest_ops,
  4873. },
  4874. },
  4875. };
  4876. static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
  4877. .halt_reg = 0xa1068,
  4878. .halt_check = BRANCH_HALT_SKIP,
  4879. .hwcg_reg = 0xa1068,
  4880. .hwcg_bit = 1,
  4881. .clkr = {
  4882. .enable_reg = 0xa1068,
  4883. .enable_mask = BIT(0),
  4884. .hw.init = &(const struct clk_init_data) {
  4885. .name = "gcc_usb3_sec_phy_pipe_clk",
  4886. .parent_hws = (const struct clk_hw*[]) {
  4887. &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw,
  4888. },
  4889. .num_parents = 1,
  4890. .flags = CLK_SET_RATE_PARENT,
  4891. .ops = &clk_branch2_ops,
  4892. },
  4893. },
  4894. };
  4895. static struct clk_branch gcc_usb3_tert_phy_aux_clk = {
  4896. .halt_reg = 0xa2060,
  4897. .halt_check = BRANCH_HALT,
  4898. .clkr = {
  4899. .enable_reg = 0xa2060,
  4900. .enable_mask = BIT(0),
  4901. .hw.init = &(const struct clk_init_data) {
  4902. .name = "gcc_usb3_tert_phy_aux_clk",
  4903. .parent_hws = (const struct clk_hw*[]) {
  4904. &gcc_usb3_tert_phy_aux_clk_src.clkr.hw,
  4905. },
  4906. .num_parents = 1,
  4907. .flags = CLK_SET_RATE_PARENT,
  4908. .ops = &clk_branch2_ops,
  4909. },
  4910. },
  4911. };
  4912. static struct clk_branch gcc_usb3_tert_phy_com_aux_clk = {
  4913. .halt_reg = 0xa2064,
  4914. .halt_check = BRANCH_HALT,
  4915. .clkr = {
  4916. .enable_reg = 0xa2064,
  4917. .enable_mask = BIT(0),
  4918. .hw.init = &(const struct clk_init_data) {
  4919. .name = "gcc_usb3_tert_phy_com_aux_clk",
  4920. .parent_hws = (const struct clk_hw*[]) {
  4921. &gcc_usb3_tert_phy_aux_clk_src.clkr.hw,
  4922. },
  4923. .num_parents = 1,
  4924. .flags = CLK_SET_RATE_PARENT,
  4925. .ops = &clk_branch2_ops,
  4926. },
  4927. },
  4928. };
  4929. static struct clk_regmap_mux gcc_usb3_tert_phy_pipe_clk_src = {
  4930. .reg = 0xa206c,
  4931. .shift = 0,
  4932. .width = 2,
  4933. .parent_map = gcc_parent_map_12,
  4934. .clkr = {
  4935. .hw.init = &(struct clk_init_data){
  4936. .name = "gcc_usb3_tert_phy_pipe_clk_src",
  4937. .parent_data = gcc_parent_data_12,
  4938. .num_parents = ARRAY_SIZE(gcc_parent_data_12),
  4939. .ops = &clk_regmap_mux_closest_ops,
  4940. },
  4941. },
  4942. };
  4943. static struct clk_branch gcc_usb3_tert_phy_pipe_clk = {
  4944. .halt_reg = 0xa2068,
  4945. .halt_check = BRANCH_HALT_SKIP,
  4946. .hwcg_reg = 0xa2068,
  4947. .hwcg_bit = 1,
  4948. .clkr = {
  4949. .enable_reg = 0xa2068,
  4950. .enable_mask = BIT(0),
  4951. .hw.init = &(const struct clk_init_data) {
  4952. .name = "gcc_usb3_tert_phy_pipe_clk",
  4953. .parent_hws = (const struct clk_hw*[]) {
  4954. &gcc_usb3_tert_phy_pipe_clk_src.clkr.hw,
  4955. },
  4956. .num_parents = 1,
  4957. .flags = CLK_SET_RATE_PARENT,
  4958. .ops = &clk_branch2_ops,
  4959. },
  4960. },
  4961. };
  4962. static struct clk_branch gcc_usb4_0_cfg_ahb_clk = {
  4963. .halt_reg = 0x9f0a8,
  4964. .halt_check = BRANCH_HALT_VOTED,
  4965. .hwcg_reg = 0x9f0a8,
  4966. .hwcg_bit = 1,
  4967. .clkr = {
  4968. .enable_reg = 0x9f0a8,
  4969. .enable_mask = BIT(0),
  4970. .hw.init = &(const struct clk_init_data) {
  4971. .name = "gcc_usb4_0_cfg_ahb_clk",
  4972. .ops = &clk_branch2_ops,
  4973. },
  4974. },
  4975. };
  4976. static struct clk_branch gcc_usb4_0_dp0_clk = {
  4977. .halt_reg = 0x9f060,
  4978. .halt_check = BRANCH_HALT,
  4979. .clkr = {
  4980. .enable_reg = 0x9f060,
  4981. .enable_mask = BIT(0),
  4982. .hw.init = &(const struct clk_init_data) {
  4983. .name = "gcc_usb4_0_dp0_clk",
  4984. .ops = &clk_branch2_ops,
  4985. },
  4986. },
  4987. };
  4988. static struct clk_branch gcc_usb4_0_dp1_clk = {
  4989. .halt_reg = 0x9f108,
  4990. .halt_check = BRANCH_HALT,
  4991. .clkr = {
  4992. .enable_reg = 0x9f108,
  4993. .enable_mask = BIT(0),
  4994. .hw.init = &(const struct clk_init_data) {
  4995. .name = "gcc_usb4_0_dp1_clk",
  4996. .ops = &clk_branch2_ops,
  4997. },
  4998. },
  4999. };
  5000. static struct clk_branch gcc_usb4_0_master_clk = {
  5001. .halt_reg = 0x9f018,
  5002. .halt_check = BRANCH_HALT,
  5003. .clkr = {
  5004. .enable_reg = 0x9f018,
  5005. .enable_mask = BIT(0),
  5006. .hw.init = &(const struct clk_init_data) {
  5007. .name = "gcc_usb4_0_master_clk",
  5008. .parent_hws = (const struct clk_hw*[]) {
  5009. &gcc_usb4_0_master_clk_src.clkr.hw,
  5010. },
  5011. .num_parents = 1,
  5012. .flags = CLK_SET_RATE_PARENT,
  5013. .ops = &clk_branch2_ops,
  5014. },
  5015. },
  5016. };
  5017. static struct clk_branch gcc_usb4_0_phy_p2rr2p_pipe_clk = {
  5018. .halt_reg = 0x9f0d8,
  5019. .halt_check = BRANCH_HALT_SKIP,
  5020. .clkr = {
  5021. .enable_reg = 0x9f0d8,
  5022. .enable_mask = BIT(0),
  5023. .hw.init = &(const struct clk_init_data) {
  5024. .name = "gcc_usb4_0_phy_p2rr2p_pipe_clk",
  5025. .ops = &clk_branch2_ops,
  5026. },
  5027. },
  5028. };
  5029. static struct clk_branch gcc_usb4_0_phy_pcie_pipe_clk = {
  5030. .halt_reg = 0x9f048,
  5031. .halt_check = BRANCH_HALT_SKIP,
  5032. .clkr = {
  5033. .enable_reg = 0x52010,
  5034. .enable_mask = BIT(19),
  5035. .hw.init = &(const struct clk_init_data) {
  5036. .name = "gcc_usb4_0_phy_pcie_pipe_clk",
  5037. .ops = &clk_branch2_ops,
  5038. },
  5039. },
  5040. };
  5041. static struct clk_branch gcc_usb4_0_phy_rx0_clk = {
  5042. .halt_reg = 0x9f0b0,
  5043. .halt_check = BRANCH_HALT,
  5044. .clkr = {
  5045. .enable_reg = 0x9f0b0,
  5046. .enable_mask = BIT(0),
  5047. .hw.init = &(const struct clk_init_data) {
  5048. .name = "gcc_usb4_0_phy_rx0_clk",
  5049. .ops = &clk_branch2_ops,
  5050. },
  5051. },
  5052. };
  5053. static struct clk_branch gcc_usb4_0_phy_rx1_clk = {
  5054. .halt_reg = 0x9f0c0,
  5055. .halt_check = BRANCH_HALT,
  5056. .clkr = {
  5057. .enable_reg = 0x9f0c0,
  5058. .enable_mask = BIT(0),
  5059. .hw.init = &(const struct clk_init_data) {
  5060. .name = "gcc_usb4_0_phy_rx1_clk",
  5061. .ops = &clk_branch2_ops,
  5062. },
  5063. },
  5064. };
  5065. static struct clk_branch gcc_usb4_0_phy_usb_pipe_clk = {
  5066. .halt_reg = 0x9f0a4,
  5067. .halt_check = BRANCH_HALT_SKIP,
  5068. .hwcg_reg = 0x9f0a4,
  5069. .hwcg_bit = 1,
  5070. .clkr = {
  5071. .enable_reg = 0x9f0a4,
  5072. .enable_mask = BIT(0),
  5073. .hw.init = &(const struct clk_init_data) {
  5074. .name = "gcc_usb4_0_phy_usb_pipe_clk",
  5075. .ops = &clk_branch2_ops,
  5076. },
  5077. },
  5078. };
  5079. static struct clk_branch gcc_usb4_0_sb_if_clk = {
  5080. .halt_reg = 0x9f044,
  5081. .halt_check = BRANCH_HALT,
  5082. .clkr = {
  5083. .enable_reg = 0x9f044,
  5084. .enable_mask = BIT(0),
  5085. .hw.init = &(const struct clk_init_data) {
  5086. .name = "gcc_usb4_0_sb_if_clk",
  5087. .parent_hws = (const struct clk_hw*[]) {
  5088. &gcc_usb4_0_sb_if_clk_src.clkr.hw,
  5089. },
  5090. .num_parents = 1,
  5091. .flags = CLK_SET_RATE_PARENT,
  5092. .ops = &clk_branch2_ops,
  5093. },
  5094. },
  5095. };
  5096. static struct clk_branch gcc_usb4_0_sys_clk = {
  5097. .halt_reg = 0x9f054,
  5098. .halt_check = BRANCH_HALT,
  5099. .clkr = {
  5100. .enable_reg = 0x9f054,
  5101. .enable_mask = BIT(0),
  5102. .hw.init = &(const struct clk_init_data) {
  5103. .name = "gcc_usb4_0_sys_clk",
  5104. .ops = &clk_branch2_ops,
  5105. },
  5106. },
  5107. };
  5108. static struct clk_branch gcc_usb4_0_tmu_clk = {
  5109. .halt_reg = 0x9f088,
  5110. .halt_check = BRANCH_HALT_VOTED,
  5111. .hwcg_reg = 0x9f088,
  5112. .hwcg_bit = 1,
  5113. .clkr = {
  5114. .enable_reg = 0x9f088,
  5115. .enable_mask = BIT(0),
  5116. .hw.init = &(const struct clk_init_data) {
  5117. .name = "gcc_usb4_0_tmu_clk",
  5118. .parent_hws = (const struct clk_hw*[]) {
  5119. &gcc_usb4_0_tmu_clk_src.clkr.hw,
  5120. },
  5121. .num_parents = 1,
  5122. .flags = CLK_SET_RATE_PARENT,
  5123. .ops = &clk_branch2_ops,
  5124. },
  5125. },
  5126. };
  5127. static struct clk_branch gcc_usb4_1_cfg_ahb_clk = {
  5128. .halt_reg = 0x2b0a8,
  5129. .halt_check = BRANCH_HALT_VOTED,
  5130. .hwcg_reg = 0x2b0a8,
  5131. .hwcg_bit = 1,
  5132. .clkr = {
  5133. .enable_reg = 0x2b0a8,
  5134. .enable_mask = BIT(0),
  5135. .hw.init = &(const struct clk_init_data) {
  5136. .name = "gcc_usb4_1_cfg_ahb_clk",
  5137. .ops = &clk_branch2_ops,
  5138. },
  5139. },
  5140. };
  5141. static struct clk_branch gcc_usb4_1_dp0_clk = {
  5142. .halt_reg = 0x2b060,
  5143. .halt_check = BRANCH_HALT,
  5144. .clkr = {
  5145. .enable_reg = 0x2b060,
  5146. .enable_mask = BIT(0),
  5147. .hw.init = &(const struct clk_init_data) {
  5148. .name = "gcc_usb4_1_dp0_clk",
  5149. .ops = &clk_branch2_ops,
  5150. },
  5151. },
  5152. };
  5153. static struct clk_branch gcc_usb4_1_dp1_clk = {
  5154. .halt_reg = 0x2b108,
  5155. .halt_check = BRANCH_HALT,
  5156. .clkr = {
  5157. .enable_reg = 0x2b108,
  5158. .enable_mask = BIT(0),
  5159. .hw.init = &(const struct clk_init_data) {
  5160. .name = "gcc_usb4_1_dp1_clk",
  5161. .ops = &clk_branch2_ops,
  5162. },
  5163. },
  5164. };
  5165. static struct clk_branch gcc_usb4_1_master_clk = {
  5166. .halt_reg = 0x2b018,
  5167. .halt_check = BRANCH_HALT,
  5168. .clkr = {
  5169. .enable_reg = 0x2b018,
  5170. .enable_mask = BIT(0),
  5171. .hw.init = &(const struct clk_init_data) {
  5172. .name = "gcc_usb4_1_master_clk",
  5173. .parent_hws = (const struct clk_hw*[]) {
  5174. &gcc_usb4_1_master_clk_src.clkr.hw,
  5175. },
  5176. .num_parents = 1,
  5177. .flags = CLK_SET_RATE_PARENT,
  5178. .ops = &clk_branch2_ops,
  5179. },
  5180. },
  5181. };
  5182. static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = {
  5183. .halt_reg = 0x2b0d8,
  5184. .halt_check = BRANCH_HALT_SKIP,
  5185. .clkr = {
  5186. .enable_reg = 0x2b0d8,
  5187. .enable_mask = BIT(0),
  5188. .hw.init = &(const struct clk_init_data) {
  5189. .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk",
  5190. .ops = &clk_branch2_ops,
  5191. },
  5192. },
  5193. };
  5194. static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = {
  5195. .halt_reg = 0x2b048,
  5196. .halt_check = BRANCH_HALT_SKIP,
  5197. .clkr = {
  5198. .enable_reg = 0x52028,
  5199. .enable_mask = BIT(0),
  5200. .hw.init = &(const struct clk_init_data) {
  5201. .name = "gcc_usb4_1_phy_pcie_pipe_clk",
  5202. .ops = &clk_branch2_ops,
  5203. },
  5204. },
  5205. };
  5206. static struct clk_branch gcc_usb4_1_phy_rx0_clk = {
  5207. .halt_reg = 0x2b0b0,
  5208. .halt_check = BRANCH_HALT,
  5209. .clkr = {
  5210. .enable_reg = 0x2b0b0,
  5211. .enable_mask = BIT(0),
  5212. .hw.init = &(const struct clk_init_data) {
  5213. .name = "gcc_usb4_1_phy_rx0_clk",
  5214. .ops = &clk_branch2_ops,
  5215. },
  5216. },
  5217. };
  5218. static struct clk_branch gcc_usb4_1_phy_rx1_clk = {
  5219. .halt_reg = 0x2b0c0,
  5220. .halt_check = BRANCH_HALT,
  5221. .clkr = {
  5222. .enable_reg = 0x2b0c0,
  5223. .enable_mask = BIT(0),
  5224. .hw.init = &(const struct clk_init_data) {
  5225. .name = "gcc_usb4_1_phy_rx1_clk",
  5226. .ops = &clk_branch2_ops,
  5227. },
  5228. },
  5229. };
  5230. static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = {
  5231. .halt_reg = 0x2b0a4,
  5232. .halt_check = BRANCH_HALT_SKIP,
  5233. .hwcg_reg = 0x2b0a4,
  5234. .hwcg_bit = 1,
  5235. .clkr = {
  5236. .enable_reg = 0x2b0a4,
  5237. .enable_mask = BIT(0),
  5238. .hw.init = &(const struct clk_init_data) {
  5239. .name = "gcc_usb4_1_phy_usb_pipe_clk",
  5240. .ops = &clk_branch2_ops,
  5241. },
  5242. },
  5243. };
  5244. static struct clk_branch gcc_usb4_1_sb_if_clk = {
  5245. .halt_reg = 0x2b044,
  5246. .halt_check = BRANCH_HALT,
  5247. .clkr = {
  5248. .enable_reg = 0x2b044,
  5249. .enable_mask = BIT(0),
  5250. .hw.init = &(const struct clk_init_data) {
  5251. .name = "gcc_usb4_1_sb_if_clk",
  5252. .parent_hws = (const struct clk_hw*[]) {
  5253. &gcc_usb4_1_sb_if_clk_src.clkr.hw,
  5254. },
  5255. .num_parents = 1,
  5256. .flags = CLK_SET_RATE_PARENT,
  5257. .ops = &clk_branch2_ops,
  5258. },
  5259. },
  5260. };
  5261. static struct clk_branch gcc_usb4_1_sys_clk = {
  5262. .halt_reg = 0x2b054,
  5263. .halt_check = BRANCH_HALT,
  5264. .clkr = {
  5265. .enable_reg = 0x2b054,
  5266. .enable_mask = BIT(0),
  5267. .hw.init = &(const struct clk_init_data) {
  5268. .name = "gcc_usb4_1_sys_clk",
  5269. .ops = &clk_branch2_ops,
  5270. },
  5271. },
  5272. };
  5273. static struct clk_branch gcc_usb4_1_tmu_clk = {
  5274. .halt_reg = 0x2b088,
  5275. .halt_check = BRANCH_HALT_VOTED,
  5276. .hwcg_reg = 0x2b088,
  5277. .hwcg_bit = 1,
  5278. .clkr = {
  5279. .enable_reg = 0x2b088,
  5280. .enable_mask = BIT(0),
  5281. .hw.init = &(const struct clk_init_data) {
  5282. .name = "gcc_usb4_1_tmu_clk",
  5283. .parent_hws = (const struct clk_hw*[]) {
  5284. &gcc_usb4_1_tmu_clk_src.clkr.hw,
  5285. },
  5286. .num_parents = 1,
  5287. .flags = CLK_SET_RATE_PARENT,
  5288. .ops = &clk_branch2_ops,
  5289. },
  5290. },
  5291. };
  5292. static struct clk_branch gcc_usb4_2_cfg_ahb_clk = {
  5293. .halt_reg = 0x110a8,
  5294. .halt_check = BRANCH_HALT_VOTED,
  5295. .hwcg_reg = 0x110a8,
  5296. .hwcg_bit = 1,
  5297. .clkr = {
  5298. .enable_reg = 0x110a8,
  5299. .enable_mask = BIT(0),
  5300. .hw.init = &(const struct clk_init_data) {
  5301. .name = "gcc_usb4_2_cfg_ahb_clk",
  5302. .ops = &clk_branch2_ops,
  5303. },
  5304. },
  5305. };
  5306. static struct clk_branch gcc_usb4_2_dp0_clk = {
  5307. .halt_reg = 0x11060,
  5308. .halt_check = BRANCH_HALT,
  5309. .clkr = {
  5310. .enable_reg = 0x11060,
  5311. .enable_mask = BIT(0),
  5312. .hw.init = &(const struct clk_init_data) {
  5313. .name = "gcc_usb4_2_dp0_clk",
  5314. .ops = &clk_branch2_ops,
  5315. },
  5316. },
  5317. };
  5318. static struct clk_branch gcc_usb4_2_dp1_clk = {
  5319. .halt_reg = 0x11108,
  5320. .halt_check = BRANCH_HALT,
  5321. .clkr = {
  5322. .enable_reg = 0x11108,
  5323. .enable_mask = BIT(0),
  5324. .hw.init = &(const struct clk_init_data) {
  5325. .name = "gcc_usb4_2_dp1_clk",
  5326. .ops = &clk_branch2_ops,
  5327. },
  5328. },
  5329. };
  5330. static struct clk_branch gcc_usb4_2_master_clk = {
  5331. .halt_reg = 0x11018,
  5332. .halt_check = BRANCH_HALT,
  5333. .clkr = {
  5334. .enable_reg = 0x11018,
  5335. .enable_mask = BIT(0),
  5336. .hw.init = &(const struct clk_init_data) {
  5337. .name = "gcc_usb4_2_master_clk",
  5338. .parent_hws = (const struct clk_hw*[]) {
  5339. &gcc_usb4_2_master_clk_src.clkr.hw,
  5340. },
  5341. .num_parents = 1,
  5342. .flags = CLK_SET_RATE_PARENT,
  5343. .ops = &clk_branch2_ops,
  5344. },
  5345. },
  5346. };
  5347. static struct clk_branch gcc_usb4_2_phy_p2rr2p_pipe_clk = {
  5348. .halt_reg = 0x110d8,
  5349. .halt_check = BRANCH_HALT_SKIP,
  5350. .clkr = {
  5351. .enable_reg = 0x110d8,
  5352. .enable_mask = BIT(0),
  5353. .hw.init = &(const struct clk_init_data) {
  5354. .name = "gcc_usb4_2_phy_p2rr2p_pipe_clk",
  5355. .ops = &clk_branch2_ops,
  5356. },
  5357. },
  5358. };
  5359. static struct clk_branch gcc_usb4_2_phy_pcie_pipe_clk = {
  5360. .halt_reg = 0x11048,
  5361. .halt_check = BRANCH_HALT_SKIP,
  5362. .clkr = {
  5363. .enable_reg = 0x52028,
  5364. .enable_mask = BIT(1),
  5365. .hw.init = &(const struct clk_init_data) {
  5366. .name = "gcc_usb4_2_phy_pcie_pipe_clk",
  5367. .ops = &clk_branch2_ops,
  5368. },
  5369. },
  5370. };
  5371. static struct clk_branch gcc_usb4_2_phy_rx0_clk = {
  5372. .halt_reg = 0x110b0,
  5373. .halt_check = BRANCH_HALT,
  5374. .clkr = {
  5375. .enable_reg = 0x110b0,
  5376. .enable_mask = BIT(0),
  5377. .hw.init = &(const struct clk_init_data) {
  5378. .name = "gcc_usb4_2_phy_rx0_clk",
  5379. .ops = &clk_branch2_ops,
  5380. },
  5381. },
  5382. };
  5383. static struct clk_branch gcc_usb4_2_phy_rx1_clk = {
  5384. .halt_reg = 0x110c0,
  5385. .halt_check = BRANCH_HALT,
  5386. .clkr = {
  5387. .enable_reg = 0x110c0,
  5388. .enable_mask = BIT(0),
  5389. .hw.init = &(const struct clk_init_data) {
  5390. .name = "gcc_usb4_2_phy_rx1_clk",
  5391. .ops = &clk_branch2_ops,
  5392. },
  5393. },
  5394. };
  5395. static struct clk_branch gcc_usb4_2_phy_usb_pipe_clk = {
  5396. .halt_reg = 0x110a4,
  5397. .halt_check = BRANCH_HALT_SKIP,
  5398. .hwcg_reg = 0x110a4,
  5399. .hwcg_bit = 1,
  5400. .clkr = {
  5401. .enable_reg = 0x110a4,
  5402. .enable_mask = BIT(0),
  5403. .hw.init = &(const struct clk_init_data) {
  5404. .name = "gcc_usb4_2_phy_usb_pipe_clk",
  5405. .ops = &clk_branch2_ops,
  5406. },
  5407. },
  5408. };
  5409. static struct clk_branch gcc_usb4_2_sb_if_clk = {
  5410. .halt_reg = 0x11044,
  5411. .halt_check = BRANCH_HALT,
  5412. .clkr = {
  5413. .enable_reg = 0x11044,
  5414. .enable_mask = BIT(0),
  5415. .hw.init = &(const struct clk_init_data) {
  5416. .name = "gcc_usb4_2_sb_if_clk",
  5417. .parent_hws = (const struct clk_hw*[]) {
  5418. &gcc_usb4_2_sb_if_clk_src.clkr.hw,
  5419. },
  5420. .num_parents = 1,
  5421. .flags = CLK_SET_RATE_PARENT,
  5422. .ops = &clk_branch2_ops,
  5423. },
  5424. },
  5425. };
  5426. static struct clk_branch gcc_usb4_2_sys_clk = {
  5427. .halt_reg = 0x11054,
  5428. .halt_check = BRANCH_HALT,
  5429. .clkr = {
  5430. .enable_reg = 0x11054,
  5431. .enable_mask = BIT(0),
  5432. .hw.init = &(const struct clk_init_data) {
  5433. .name = "gcc_usb4_2_sys_clk",
  5434. .ops = &clk_branch2_ops,
  5435. },
  5436. },
  5437. };
  5438. static struct clk_branch gcc_usb4_2_tmu_clk = {
  5439. .halt_reg = 0x11088,
  5440. .halt_check = BRANCH_HALT_VOTED,
  5441. .hwcg_reg = 0x11088,
  5442. .hwcg_bit = 1,
  5443. .clkr = {
  5444. .enable_reg = 0x11088,
  5445. .enable_mask = BIT(0),
  5446. .hw.init = &(const struct clk_init_data) {
  5447. .name = "gcc_usb4_2_tmu_clk",
  5448. .parent_hws = (const struct clk_hw*[]) {
  5449. &gcc_usb4_2_tmu_clk_src.clkr.hw,
  5450. },
  5451. .num_parents = 1,
  5452. .flags = CLK_SET_RATE_PARENT,
  5453. .ops = &clk_branch2_ops,
  5454. },
  5455. },
  5456. };
  5457. static struct clk_branch gcc_video_axi0_clk = {
  5458. .halt_reg = 0x32018,
  5459. .halt_check = BRANCH_HALT_SKIP,
  5460. .hwcg_reg = 0x32018,
  5461. .hwcg_bit = 1,
  5462. .clkr = {
  5463. .enable_reg = 0x32018,
  5464. .enable_mask = BIT(0),
  5465. .hw.init = &(const struct clk_init_data) {
  5466. .name = "gcc_video_axi0_clk",
  5467. .ops = &clk_branch2_ops,
  5468. },
  5469. },
  5470. };
  5471. static struct clk_branch gcc_video_axi1_clk = {
  5472. .halt_reg = 0x32024,
  5473. .halt_check = BRANCH_HALT_SKIP,
  5474. .hwcg_reg = 0x32024,
  5475. .hwcg_bit = 1,
  5476. .clkr = {
  5477. .enable_reg = 0x32024,
  5478. .enable_mask = BIT(0),
  5479. .hw.init = &(const struct clk_init_data) {
  5480. .name = "gcc_video_axi1_clk",
  5481. .ops = &clk_branch2_ops,
  5482. },
  5483. },
  5484. };
  5485. static struct gdsc gcc_pcie_0_tunnel_gdsc = {
  5486. .gdscr = 0xa0004,
  5487. .en_rest_wait_val = 0x2,
  5488. .en_few_wait_val = 0x2,
  5489. .clk_dis_wait_val = 0xf,
  5490. .pd = {
  5491. .name = "gcc_pcie_0_tunnel_gdsc",
  5492. },
  5493. .pwrsts = PWRSTS_OFF_ON,
  5494. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5495. };
  5496. static struct gdsc gcc_pcie_1_tunnel_gdsc = {
  5497. .gdscr = 0x2c004,
  5498. .en_rest_wait_val = 0x2,
  5499. .en_few_wait_val = 0x2,
  5500. .clk_dis_wait_val = 0xf,
  5501. .pd = {
  5502. .name = "gcc_pcie_1_tunnel_gdsc",
  5503. },
  5504. .pwrsts = PWRSTS_OFF_ON,
  5505. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5506. };
  5507. static struct gdsc gcc_pcie_2_tunnel_gdsc = {
  5508. .gdscr = 0x13004,
  5509. .en_rest_wait_val = 0x2,
  5510. .en_few_wait_val = 0x2,
  5511. .clk_dis_wait_val = 0xf,
  5512. .pd = {
  5513. .name = "gcc_pcie_2_tunnel_gdsc",
  5514. },
  5515. .pwrsts = PWRSTS_OFF_ON,
  5516. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5517. };
  5518. static struct gdsc gcc_pcie_3_gdsc = {
  5519. .gdscr = 0x58004,
  5520. .en_rest_wait_val = 0x2,
  5521. .en_few_wait_val = 0x2,
  5522. .clk_dis_wait_val = 0xf,
  5523. .pd = {
  5524. .name = "gcc_pcie_3_gdsc",
  5525. },
  5526. .pwrsts = PWRSTS_OFF_ON,
  5527. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5528. };
  5529. static struct gdsc gcc_pcie_3_phy_gdsc = {
  5530. .gdscr = 0x3e000,
  5531. .en_rest_wait_val = 0x2,
  5532. .en_few_wait_val = 0x2,
  5533. .clk_dis_wait_val = 0x2,
  5534. .pd = {
  5535. .name = "gcc_pcie_3_phy_gdsc",
  5536. },
  5537. .pwrsts = PWRSTS_OFF_ON,
  5538. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5539. };
  5540. static struct gdsc gcc_pcie_4_gdsc = {
  5541. .gdscr = 0x6b004,
  5542. .en_rest_wait_val = 0x2,
  5543. .en_few_wait_val = 0x2,
  5544. .clk_dis_wait_val = 0xf,
  5545. .pd = {
  5546. .name = "gcc_pcie_4_gdsc",
  5547. },
  5548. .pwrsts = PWRSTS_OFF_ON,
  5549. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5550. };
  5551. static struct gdsc gcc_pcie_4_phy_gdsc = {
  5552. .gdscr = 0x6c000,
  5553. .en_rest_wait_val = 0x2,
  5554. .en_few_wait_val = 0x2,
  5555. .clk_dis_wait_val = 0x2,
  5556. .pd = {
  5557. .name = "gcc_pcie_4_phy_gdsc",
  5558. },
  5559. .pwrsts = PWRSTS_OFF_ON,
  5560. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5561. };
  5562. static struct gdsc gcc_pcie_5_gdsc = {
  5563. .gdscr = 0x2f004,
  5564. .en_rest_wait_val = 0x2,
  5565. .en_few_wait_val = 0x2,
  5566. .clk_dis_wait_val = 0xf,
  5567. .pd = {
  5568. .name = "gcc_pcie_5_gdsc",
  5569. },
  5570. .pwrsts = PWRSTS_OFF_ON,
  5571. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5572. };
  5573. static struct gdsc gcc_pcie_5_phy_gdsc = {
  5574. .gdscr = 0x30000,
  5575. .en_rest_wait_val = 0x2,
  5576. .en_few_wait_val = 0x2,
  5577. .clk_dis_wait_val = 0x2,
  5578. .pd = {
  5579. .name = "gcc_pcie_5_phy_gdsc",
  5580. },
  5581. .pwrsts = PWRSTS_OFF_ON,
  5582. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5583. };
  5584. static struct gdsc gcc_pcie_6_phy_gdsc = {
  5585. .gdscr = 0x8e000,
  5586. .en_rest_wait_val = 0x2,
  5587. .en_few_wait_val = 0x2,
  5588. .clk_dis_wait_val = 0x2,
  5589. .pd = {
  5590. .name = "gcc_pcie_6_phy_gdsc",
  5591. },
  5592. .pwrsts = PWRSTS_OFF_ON,
  5593. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5594. };
  5595. static struct gdsc gcc_pcie_6a_gdsc = {
  5596. .gdscr = 0x31004,
  5597. .en_rest_wait_val = 0x2,
  5598. .en_few_wait_val = 0x2,
  5599. .clk_dis_wait_val = 0xf,
  5600. .pd = {
  5601. .name = "gcc_pcie_6a_gdsc",
  5602. },
  5603. .pwrsts = PWRSTS_OFF_ON,
  5604. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5605. };
  5606. static struct gdsc gcc_pcie_6b_gdsc = {
  5607. .gdscr = 0x8d004,
  5608. .en_rest_wait_val = 0x2,
  5609. .en_few_wait_val = 0x2,
  5610. .clk_dis_wait_val = 0xf,
  5611. .pd = {
  5612. .name = "gcc_pcie_6b_gdsc",
  5613. },
  5614. .pwrsts = PWRSTS_OFF_ON,
  5615. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
  5616. };
  5617. static struct gdsc gcc_ufs_mem_phy_gdsc = {
  5618. .gdscr = 0x9e000,
  5619. .en_rest_wait_val = 0x2,
  5620. .en_few_wait_val = 0x2,
  5621. .clk_dis_wait_val = 0x2,
  5622. .pd = {
  5623. .name = "gcc_ufs_mem_phy_gdsc",
  5624. },
  5625. .pwrsts = PWRSTS_OFF_ON,
  5626. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5627. };
  5628. static struct gdsc gcc_ufs_phy_gdsc = {
  5629. .gdscr = 0x77004,
  5630. .en_rest_wait_val = 0x2,
  5631. .en_few_wait_val = 0x2,
  5632. .clk_dis_wait_val = 0xf,
  5633. .pd = {
  5634. .name = "gcc_ufs_phy_gdsc",
  5635. },
  5636. .pwrsts = PWRSTS_OFF_ON,
  5637. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5638. };
  5639. static struct gdsc gcc_usb20_prim_gdsc = {
  5640. .gdscr = 0x29004,
  5641. .en_rest_wait_val = 0x2,
  5642. .en_few_wait_val = 0x2,
  5643. .clk_dis_wait_val = 0xf,
  5644. .pd = {
  5645. .name = "gcc_usb20_prim_gdsc",
  5646. },
  5647. .pwrsts = PWRSTS_RET_ON,
  5648. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5649. };
  5650. static struct gdsc gcc_usb30_mp_gdsc = {
  5651. .gdscr = 0x17004,
  5652. .en_rest_wait_val = 0x2,
  5653. .en_few_wait_val = 0x2,
  5654. .clk_dis_wait_val = 0xf,
  5655. .pd = {
  5656. .name = "gcc_usb30_mp_gdsc",
  5657. },
  5658. .pwrsts = PWRSTS_RET_ON,
  5659. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5660. };
  5661. static struct gdsc gcc_usb30_prim_gdsc = {
  5662. .gdscr = 0x39004,
  5663. .en_rest_wait_val = 0x2,
  5664. .en_few_wait_val = 0x2,
  5665. .clk_dis_wait_val = 0xf,
  5666. .pd = {
  5667. .name = "gcc_usb30_prim_gdsc",
  5668. },
  5669. .pwrsts = PWRSTS_RET_ON,
  5670. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5671. };
  5672. static struct gdsc gcc_usb30_sec_gdsc = {
  5673. .gdscr = 0xa1004,
  5674. .en_rest_wait_val = 0x2,
  5675. .en_few_wait_val = 0x2,
  5676. .clk_dis_wait_val = 0xf,
  5677. .pd = {
  5678. .name = "gcc_usb30_sec_gdsc",
  5679. },
  5680. .pwrsts = PWRSTS_RET_ON,
  5681. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5682. };
  5683. static struct gdsc gcc_usb30_tert_gdsc = {
  5684. .gdscr = 0xa2004,
  5685. .en_rest_wait_val = 0x2,
  5686. .en_few_wait_val = 0x2,
  5687. .clk_dis_wait_val = 0xf,
  5688. .pd = {
  5689. .name = "gcc_usb30_tert_gdsc",
  5690. },
  5691. .pwrsts = PWRSTS_RET_ON,
  5692. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5693. };
  5694. static struct gdsc gcc_usb3_mp_ss0_phy_gdsc = {
  5695. .gdscr = 0x1900c,
  5696. .en_rest_wait_val = 0x2,
  5697. .en_few_wait_val = 0x2,
  5698. .clk_dis_wait_val = 0x2,
  5699. .pd = {
  5700. .name = "gcc_usb3_mp_ss0_phy_gdsc",
  5701. },
  5702. .pwrsts = PWRSTS_RET_ON,
  5703. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5704. };
  5705. static struct gdsc gcc_usb3_mp_ss1_phy_gdsc = {
  5706. .gdscr = 0x5400c,
  5707. .en_rest_wait_val = 0x2,
  5708. .en_few_wait_val = 0x2,
  5709. .clk_dis_wait_val = 0x2,
  5710. .pd = {
  5711. .name = "gcc_usb3_mp_ss1_phy_gdsc",
  5712. },
  5713. .pwrsts = PWRSTS_RET_ON,
  5714. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5715. };
  5716. static struct gdsc gcc_usb4_0_gdsc = {
  5717. .gdscr = 0x9f004,
  5718. .en_rest_wait_val = 0x2,
  5719. .en_few_wait_val = 0x2,
  5720. .clk_dis_wait_val = 0xf,
  5721. .pd = {
  5722. .name = "gcc_usb4_0_gdsc",
  5723. },
  5724. .pwrsts = PWRSTS_OFF_ON,
  5725. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5726. };
  5727. static struct gdsc gcc_usb4_1_gdsc = {
  5728. .gdscr = 0x2b004,
  5729. .en_rest_wait_val = 0x2,
  5730. .en_few_wait_val = 0x2,
  5731. .clk_dis_wait_val = 0xf,
  5732. .pd = {
  5733. .name = "gcc_usb4_1_gdsc",
  5734. },
  5735. .pwrsts = PWRSTS_OFF_ON,
  5736. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5737. };
  5738. static struct gdsc gcc_usb4_2_gdsc = {
  5739. .gdscr = 0x11004,
  5740. .en_rest_wait_val = 0x2,
  5741. .en_few_wait_val = 0x2,
  5742. .clk_dis_wait_val = 0xf,
  5743. .pd = {
  5744. .name = "gcc_usb4_2_gdsc",
  5745. },
  5746. .pwrsts = PWRSTS_OFF_ON,
  5747. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5748. };
  5749. static struct gdsc gcc_usb_0_phy_gdsc = {
  5750. .gdscr = 0x50024,
  5751. .en_rest_wait_val = 0x2,
  5752. .en_few_wait_val = 0x2,
  5753. .clk_dis_wait_val = 0x2,
  5754. .pd = {
  5755. .name = "gcc_usb_0_phy_gdsc",
  5756. },
  5757. .pwrsts = PWRSTS_RET_ON,
  5758. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5759. };
  5760. static struct gdsc gcc_usb_1_phy_gdsc = {
  5761. .gdscr = 0x2a024,
  5762. .en_rest_wait_val = 0x2,
  5763. .en_few_wait_val = 0x2,
  5764. .clk_dis_wait_val = 0x2,
  5765. .pd = {
  5766. .name = "gcc_usb_1_phy_gdsc",
  5767. },
  5768. .pwrsts = PWRSTS_RET_ON,
  5769. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5770. };
  5771. static struct gdsc gcc_usb_2_phy_gdsc = {
  5772. .gdscr = 0xa3024,
  5773. .en_rest_wait_val = 0x2,
  5774. .en_few_wait_val = 0x2,
  5775. .clk_dis_wait_val = 0x2,
  5776. .pd = {
  5777. .name = "gcc_usb_2_phy_gdsc",
  5778. },
  5779. .pwrsts = PWRSTS_RET_ON,
  5780. .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
  5781. };
  5782. static struct clk_regmap *gcc_x1e80100_clocks[] = {
  5783. [GCC_AGGRE_NOC_USB_NORTH_AXI_CLK] = &gcc_aggre_noc_usb_north_axi_clk.clkr,
  5784. [GCC_AGGRE_NOC_USB_SOUTH_AXI_CLK] = &gcc_aggre_noc_usb_south_axi_clk.clkr,
  5785. [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
  5786. [GCC_AGGRE_USB2_PRIM_AXI_CLK] = &gcc_aggre_usb2_prim_axi_clk.clkr,
  5787. [GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
  5788. [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
  5789. [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
  5790. [GCC_AGGRE_USB3_TERT_AXI_CLK] = &gcc_aggre_usb3_tert_axi_clk.clkr,
  5791. [GCC_AGGRE_USB4_0_AXI_CLK] = &gcc_aggre_usb4_0_axi_clk.clkr,
  5792. [GCC_AGGRE_USB4_1_AXI_CLK] = &gcc_aggre_usb4_1_axi_clk.clkr,
  5793. [GCC_AGGRE_USB4_2_AXI_CLK] = &gcc_aggre_usb4_2_axi_clk.clkr,
  5794. [GCC_AGGRE_USB_NOC_AXI_CLK] = &gcc_aggre_usb_noc_axi_clk.clkr,
  5795. [GCC_AV1E_AHB_CLK] = &gcc_av1e_ahb_clk.clkr,
  5796. [GCC_AV1E_AXI_CLK] = &gcc_av1e_axi_clk.clkr,
  5797. [GCC_AV1E_XO_CLK] = &gcc_av1e_xo_clk.clkr,
  5798. [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
  5799. [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
  5800. [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
  5801. [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
  5802. [GCC_CFG_NOC_PCIE_ANOC_NORTH_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_north_ahb_clk.clkr,
  5803. [GCC_CFG_NOC_PCIE_ANOC_SOUTH_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_south_ahb_clk.clkr,
  5804. [GCC_CFG_NOC_USB2_PRIM_AXI_CLK] = &gcc_cfg_noc_usb2_prim_axi_clk.clkr,
  5805. [GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
  5806. [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
  5807. [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
  5808. [GCC_CFG_NOC_USB3_TERT_AXI_CLK] = &gcc_cfg_noc_usb3_tert_axi_clk.clkr,
  5809. [GCC_CFG_NOC_USB_ANOC_AHB_CLK] = &gcc_cfg_noc_usb_anoc_ahb_clk.clkr,
  5810. [GCC_CFG_NOC_USB_ANOC_NORTH_AHB_CLK] = &gcc_cfg_noc_usb_anoc_north_ahb_clk.clkr,
  5811. [GCC_CFG_NOC_USB_ANOC_SOUTH_AHB_CLK] = &gcc_cfg_noc_usb_anoc_south_ahb_clk.clkr,
  5812. [GCC_CNOC_PCIE1_TUNNEL_CLK] = &gcc_cnoc_pcie1_tunnel_clk.clkr,
  5813. [GCC_CNOC_PCIE2_TUNNEL_CLK] = &gcc_cnoc_pcie2_tunnel_clk.clkr,
  5814. [GCC_CNOC_PCIE_NORTH_SF_AXI_CLK] = &gcc_cnoc_pcie_north_sf_axi_clk.clkr,
  5815. [GCC_CNOC_PCIE_SOUTH_SF_AXI_CLK] = &gcc_cnoc_pcie_south_sf_axi_clk.clkr,
  5816. [GCC_CNOC_PCIE_TUNNEL_CLK] = &gcc_cnoc_pcie_tunnel_clk.clkr,
  5817. [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
  5818. [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
  5819. [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
  5820. [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
  5821. [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
  5822. [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
  5823. [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
  5824. [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
  5825. [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
  5826. [GCC_GPLL0] = &gcc_gpll0.clkr,
  5827. [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
  5828. [GCC_GPLL4] = &gcc_gpll4.clkr,
  5829. [GCC_GPLL7] = &gcc_gpll7.clkr,
  5830. [GCC_GPLL8] = &gcc_gpll8.clkr,
  5831. [GCC_GPLL9] = &gcc_gpll9.clkr,
  5832. [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
  5833. [GCC_GPU_GPLL0_CPH_CLK_SRC] = &gcc_gpu_gpll0_cph_clk_src.clkr,
  5834. [GCC_GPU_GPLL0_DIV_CPH_CLK_SRC] = &gcc_gpu_gpll0_div_cph_clk_src.clkr,
  5835. [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
  5836. [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
  5837. [GCC_PCIE0_PHY_RCHNG_CLK] = &gcc_pcie0_phy_rchng_clk.clkr,
  5838. [GCC_PCIE1_PHY_RCHNG_CLK] = &gcc_pcie1_phy_rchng_clk.clkr,
  5839. [GCC_PCIE2_PHY_RCHNG_CLK] = &gcc_pcie2_phy_rchng_clk.clkr,
  5840. [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
  5841. [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
  5842. [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
  5843. [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
  5844. [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
  5845. [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
  5846. [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
  5847. [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
  5848. [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
  5849. [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
  5850. [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
  5851. [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
  5852. [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
  5853. [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
  5854. [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
  5855. [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
  5856. [GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
  5857. [GCC_PCIE_2_AUX_CLK_SRC] = &gcc_pcie_2_aux_clk_src.clkr,
  5858. [GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
  5859. [GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
  5860. [GCC_PCIE_2_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2_phy_rchng_clk_src.clkr,
  5861. [GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
  5862. [GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
  5863. [GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
  5864. [GCC_PCIE_3_AUX_CLK] = &gcc_pcie_3_aux_clk.clkr,
  5865. [GCC_PCIE_3_AUX_CLK_SRC] = &gcc_pcie_3_aux_clk_src.clkr,
  5866. [GCC_PCIE_3_CFG_AHB_CLK] = &gcc_pcie_3_cfg_ahb_clk.clkr,
  5867. [GCC_PCIE_3_MSTR_AXI_CLK] = &gcc_pcie_3_mstr_axi_clk.clkr,
  5868. [GCC_PCIE_3_PHY_AUX_CLK] = &gcc_pcie_3_phy_aux_clk.clkr,
  5869. [GCC_PCIE_3_PHY_RCHNG_CLK] = &gcc_pcie_3_phy_rchng_clk.clkr,
  5870. [GCC_PCIE_3_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3_phy_rchng_clk_src.clkr,
  5871. [GCC_PCIE_3_PIPE_CLK] = &gcc_pcie_3_pipe_clk.clkr,
  5872. [GCC_PCIE_3_PIPE_CLK_SRC] = &gcc_pcie_3_pipe_clk_src.clkr,
  5873. [GCC_PCIE_3_PIPE_DIV_CLK_SRC] = &gcc_pcie_3_pipe_div_clk_src.clkr,
  5874. [GCC_PCIE_3_PIPEDIV2_CLK] = &gcc_pcie_3_pipediv2_clk.clkr,
  5875. [GCC_PCIE_3_SLV_AXI_CLK] = &gcc_pcie_3_slv_axi_clk.clkr,
  5876. [GCC_PCIE_3_SLV_Q2A_AXI_CLK] = &gcc_pcie_3_slv_q2a_axi_clk.clkr,
  5877. [GCC_PCIE_4_AUX_CLK] = &gcc_pcie_4_aux_clk.clkr,
  5878. [GCC_PCIE_4_AUX_CLK_SRC] = &gcc_pcie_4_aux_clk_src.clkr,
  5879. [GCC_PCIE_4_CFG_AHB_CLK] = &gcc_pcie_4_cfg_ahb_clk.clkr,
  5880. [GCC_PCIE_4_MSTR_AXI_CLK] = &gcc_pcie_4_mstr_axi_clk.clkr,
  5881. [GCC_PCIE_4_PHY_RCHNG_CLK] = &gcc_pcie_4_phy_rchng_clk.clkr,
  5882. [GCC_PCIE_4_PHY_RCHNG_CLK_SRC] = &gcc_pcie_4_phy_rchng_clk_src.clkr,
  5883. [GCC_PCIE_4_PIPE_CLK] = &gcc_pcie_4_pipe_clk.clkr,
  5884. [GCC_PCIE_4_PIPE_CLK_SRC] = &gcc_pcie_4_pipe_clk_src.clkr,
  5885. [GCC_PCIE_4_PIPE_DIV_CLK_SRC] = &gcc_pcie_4_pipe_div_clk_src.clkr,
  5886. [GCC_PCIE_4_PIPEDIV2_CLK] = &gcc_pcie_4_pipediv2_clk.clkr,
  5887. [GCC_PCIE_4_SLV_AXI_CLK] = &gcc_pcie_4_slv_axi_clk.clkr,
  5888. [GCC_PCIE_4_SLV_Q2A_AXI_CLK] = &gcc_pcie_4_slv_q2a_axi_clk.clkr,
  5889. [GCC_PCIE_5_AUX_CLK] = &gcc_pcie_5_aux_clk.clkr,
  5890. [GCC_PCIE_5_AUX_CLK_SRC] = &gcc_pcie_5_aux_clk_src.clkr,
  5891. [GCC_PCIE_5_CFG_AHB_CLK] = &gcc_pcie_5_cfg_ahb_clk.clkr,
  5892. [GCC_PCIE_5_MSTR_AXI_CLK] = &gcc_pcie_5_mstr_axi_clk.clkr,
  5893. [GCC_PCIE_5_PHY_RCHNG_CLK] = &gcc_pcie_5_phy_rchng_clk.clkr,
  5894. [GCC_PCIE_5_PHY_RCHNG_CLK_SRC] = &gcc_pcie_5_phy_rchng_clk_src.clkr,
  5895. [GCC_PCIE_5_PIPE_CLK] = &gcc_pcie_5_pipe_clk.clkr,
  5896. [GCC_PCIE_5_PIPE_CLK_SRC] = &gcc_pcie_5_pipe_clk_src.clkr,
  5897. [GCC_PCIE_5_PIPE_DIV_CLK_SRC] = &gcc_pcie_5_pipe_div_clk_src.clkr,
  5898. [GCC_PCIE_5_PIPEDIV2_CLK] = &gcc_pcie_5_pipediv2_clk.clkr,
  5899. [GCC_PCIE_5_SLV_AXI_CLK] = &gcc_pcie_5_slv_axi_clk.clkr,
  5900. [GCC_PCIE_5_SLV_Q2A_AXI_CLK] = &gcc_pcie_5_slv_q2a_axi_clk.clkr,
  5901. [GCC_PCIE_6A_AUX_CLK] = &gcc_pcie_6a_aux_clk.clkr,
  5902. [GCC_PCIE_6A_AUX_CLK_SRC] = &gcc_pcie_6a_aux_clk_src.clkr,
  5903. [GCC_PCIE_6A_CFG_AHB_CLK] = &gcc_pcie_6a_cfg_ahb_clk.clkr,
  5904. [GCC_PCIE_6A_MSTR_AXI_CLK] = &gcc_pcie_6a_mstr_axi_clk.clkr,
  5905. [GCC_PCIE_6A_PHY_AUX_CLK] = &gcc_pcie_6a_phy_aux_clk.clkr,
  5906. [GCC_PCIE_6A_PHY_RCHNG_CLK] = &gcc_pcie_6a_phy_rchng_clk.clkr,
  5907. [GCC_PCIE_6A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_6a_phy_rchng_clk_src.clkr,
  5908. [GCC_PCIE_6A_PIPE_CLK] = &gcc_pcie_6a_pipe_clk.clkr,
  5909. [GCC_PCIE_6A_PIPE_CLK_SRC] = &gcc_pcie_6a_pipe_clk_src.clkr,
  5910. [GCC_PCIE_6A_PIPE_DIV_CLK_SRC] = &gcc_pcie_6a_pipe_div_clk_src.clkr,
  5911. [GCC_PCIE_6A_PIPEDIV2_CLK] = &gcc_pcie_6a_pipediv2_clk.clkr,
  5912. [GCC_PCIE_6A_SLV_AXI_CLK] = &gcc_pcie_6a_slv_axi_clk.clkr,
  5913. [GCC_PCIE_6A_SLV_Q2A_AXI_CLK] = &gcc_pcie_6a_slv_q2a_axi_clk.clkr,
  5914. [GCC_PCIE_6B_AUX_CLK] = &gcc_pcie_6b_aux_clk.clkr,
  5915. [GCC_PCIE_6B_AUX_CLK_SRC] = &gcc_pcie_6b_aux_clk_src.clkr,
  5916. [GCC_PCIE_6B_CFG_AHB_CLK] = &gcc_pcie_6b_cfg_ahb_clk.clkr,
  5917. [GCC_PCIE_6B_MSTR_AXI_CLK] = &gcc_pcie_6b_mstr_axi_clk.clkr,
  5918. [GCC_PCIE_6B_PHY_AUX_CLK] = &gcc_pcie_6b_phy_aux_clk.clkr,
  5919. [GCC_PCIE_6B_PHY_RCHNG_CLK] = &gcc_pcie_6b_phy_rchng_clk.clkr,
  5920. [GCC_PCIE_6B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_6b_phy_rchng_clk_src.clkr,
  5921. [GCC_PCIE_6B_PIPE_CLK] = &gcc_pcie_6b_pipe_clk.clkr,
  5922. [GCC_PCIE_6B_PIPE_CLK_SRC] = &gcc_pcie_6b_pipe_clk_src.clkr,
  5923. [GCC_PCIE_6B_PIPE_DIV_CLK_SRC] = &gcc_pcie_6b_pipe_div_clk_src.clkr,
  5924. [GCC_PCIE_6B_PIPEDIV2_CLK] = &gcc_pcie_6b_pipediv2_clk.clkr,
  5925. [GCC_PCIE_6B_SLV_AXI_CLK] = &gcc_pcie_6b_slv_axi_clk.clkr,
  5926. [GCC_PCIE_6B_SLV_Q2A_AXI_CLK] = &gcc_pcie_6b_slv_q2a_axi_clk.clkr,
  5927. [GCC_PCIE_RSCC_AHB_CLK] = &gcc_pcie_rscc_ahb_clk.clkr,
  5928. [GCC_PCIE_RSCC_XO_CLK] = &gcc_pcie_rscc_xo_clk.clkr,
  5929. [GCC_PCIE_RSCC_XO_CLK_SRC] = &gcc_pcie_rscc_xo_clk_src.clkr,
  5930. [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
  5931. [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
  5932. [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
  5933. [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
  5934. [GCC_QMIP_AV1E_AHB_CLK] = &gcc_qmip_av1e_ahb_clk.clkr,
  5935. [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
  5936. [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
  5937. [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
  5938. [GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,
  5939. [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,
  5940. [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
  5941. [GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,
  5942. [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
  5943. [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
  5944. [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
  5945. [GCC_QUPV3_WRAP0_QSPI_S2_CLK] = &gcc_qupv3_wrap0_qspi_s2_clk.clkr,
  5946. [GCC_QUPV3_WRAP0_QSPI_S3_CLK] = &gcc_qupv3_wrap0_qspi_s3_clk.clkr,
  5947. [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
  5948. [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
  5949. [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
  5950. [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
  5951. [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
  5952. [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
  5953. [GCC_QUPV3_WRAP0_S2_DIV_CLK_SRC] = &gcc_qupv3_wrap0_s2_div_clk_src.clkr,
  5954. [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
  5955. [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
  5956. [GCC_QUPV3_WRAP0_S3_DIV_CLK_SRC] = &gcc_qupv3_wrap0_s3_div_clk_src.clkr,
  5957. [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
  5958. [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
  5959. [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
  5960. [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
  5961. [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
  5962. [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
  5963. [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
  5964. [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
  5965. [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
  5966. [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
  5967. [GCC_QUPV3_WRAP1_QSPI_S2_CLK] = &gcc_qupv3_wrap1_qspi_s2_clk.clkr,
  5968. [GCC_QUPV3_WRAP1_QSPI_S3_CLK] = &gcc_qupv3_wrap1_qspi_s3_clk.clkr,
  5969. [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
  5970. [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
  5971. [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
  5972. [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
  5973. [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
  5974. [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
  5975. [GCC_QUPV3_WRAP1_S2_DIV_CLK_SRC] = &gcc_qupv3_wrap1_s2_div_clk_src.clkr,
  5976. [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
  5977. [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
  5978. [GCC_QUPV3_WRAP1_S3_DIV_CLK_SRC] = &gcc_qupv3_wrap1_s3_div_clk_src.clkr,
  5979. [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
  5980. [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
  5981. [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
  5982. [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
  5983. [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
  5984. [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
  5985. [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
  5986. [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
  5987. [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
  5988. [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
  5989. [GCC_QUPV3_WRAP2_QSPI_S2_CLK] = &gcc_qupv3_wrap2_qspi_s2_clk.clkr,
  5990. [GCC_QUPV3_WRAP2_QSPI_S3_CLK] = &gcc_qupv3_wrap2_qspi_s3_clk.clkr,
  5991. [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
  5992. [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
  5993. [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
  5994. [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
  5995. [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
  5996. [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
  5997. [GCC_QUPV3_WRAP2_S2_DIV_CLK_SRC] = &gcc_qupv3_wrap2_s2_div_clk_src.clkr,
  5998. [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
  5999. [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
  6000. [GCC_QUPV3_WRAP2_S3_DIV_CLK_SRC] = &gcc_qupv3_wrap2_s3_div_clk_src.clkr,
  6001. [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
  6002. [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
  6003. [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
  6004. [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
  6005. [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
  6006. [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
  6007. [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,
  6008. [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,
  6009. [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
  6010. [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
  6011. [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
  6012. [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
  6013. [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
  6014. [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
  6015. [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
  6016. [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
  6017. [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
  6018. [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
  6019. [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
  6020. [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
  6021. [GCC_SYS_NOC_USB_AXI_CLK] = &gcc_sys_noc_usb_axi_clk.clkr,
  6022. [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
  6023. [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
  6024. [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
  6025. [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
  6026. [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
  6027. [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
  6028. [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
  6029. [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
  6030. [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
  6031. [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
  6032. [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
  6033. [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
  6034. [GCC_USB20_MASTER_CLK] = &gcc_usb20_master_clk.clkr,
  6035. [GCC_USB20_MASTER_CLK_SRC] = &gcc_usb20_master_clk_src.clkr,
  6036. [GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,
  6037. [GCC_USB20_MOCK_UTMI_CLK_SRC] = &gcc_usb20_mock_utmi_clk_src.clkr,
  6038. [GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb20_mock_utmi_postdiv_clk_src.clkr,
  6039. [GCC_USB20_SLEEP_CLK] = &gcc_usb20_sleep_clk.clkr,
  6040. [GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
  6041. [GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
  6042. [GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
  6043. [GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
  6044. [GCC_USB30_MP_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr,
  6045. [GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
  6046. [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
  6047. [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
  6048. [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
  6049. [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
  6050. [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
  6051. [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
  6052. [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
  6053. [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
  6054. [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
  6055. [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
  6056. [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,
  6057. [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
  6058. [GCC_USB30_TERT_MASTER_CLK] = &gcc_usb30_tert_master_clk.clkr,
  6059. [GCC_USB30_TERT_MASTER_CLK_SRC] = &gcc_usb30_tert_master_clk_src.clkr,
  6060. [GCC_USB30_TERT_MOCK_UTMI_CLK] = &gcc_usb30_tert_mock_utmi_clk.clkr,
  6061. [GCC_USB30_TERT_MOCK_UTMI_CLK_SRC] = &gcc_usb30_tert_mock_utmi_clk_src.clkr,
  6062. [GCC_USB30_TERT_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_tert_mock_utmi_postdiv_clk_src.clkr,
  6063. [GCC_USB30_TERT_SLEEP_CLK] = &gcc_usb30_tert_sleep_clk.clkr,
  6064. [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
  6065. [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
  6066. [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
  6067. [GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
  6068. [GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
  6069. [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
  6070. [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
  6071. [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
  6072. [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
  6073. [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
  6074. [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
  6075. [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
  6076. [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
  6077. [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
  6078. [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr,
  6079. [GCC_USB3_TERT_PHY_AUX_CLK] = &gcc_usb3_tert_phy_aux_clk.clkr,
  6080. [GCC_USB3_TERT_PHY_AUX_CLK_SRC] = &gcc_usb3_tert_phy_aux_clk_src.clkr,
  6081. [GCC_USB3_TERT_PHY_COM_AUX_CLK] = &gcc_usb3_tert_phy_com_aux_clk.clkr,
  6082. [GCC_USB3_TERT_PHY_PIPE_CLK] = &gcc_usb3_tert_phy_pipe_clk.clkr,
  6083. [GCC_USB3_TERT_PHY_PIPE_CLK_SRC] = &gcc_usb3_tert_phy_pipe_clk_src.clkr,
  6084. [GCC_USB4_0_CFG_AHB_CLK] = &gcc_usb4_0_cfg_ahb_clk.clkr,
  6085. [GCC_USB4_0_DP0_CLK] = &gcc_usb4_0_dp0_clk.clkr,
  6086. [GCC_USB4_0_DP1_CLK] = &gcc_usb4_0_dp1_clk.clkr,
  6087. [GCC_USB4_0_MASTER_CLK] = &gcc_usb4_0_master_clk.clkr,
  6088. [GCC_USB4_0_MASTER_CLK_SRC] = &gcc_usb4_0_master_clk_src.clkr,
  6089. [GCC_USB4_0_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_0_phy_p2rr2p_pipe_clk.clkr,
  6090. [GCC_USB4_0_PHY_PCIE_PIPE_CLK] = &gcc_usb4_0_phy_pcie_pipe_clk.clkr,
  6091. [GCC_USB4_0_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_0_phy_pcie_pipe_clk_src.clkr,
  6092. [GCC_USB4_0_PHY_RX0_CLK] = &gcc_usb4_0_phy_rx0_clk.clkr,
  6093. [GCC_USB4_0_PHY_RX1_CLK] = &gcc_usb4_0_phy_rx1_clk.clkr,
  6094. [GCC_USB4_0_PHY_USB_PIPE_CLK] = &gcc_usb4_0_phy_usb_pipe_clk.clkr,
  6095. [GCC_USB4_0_SB_IF_CLK] = &gcc_usb4_0_sb_if_clk.clkr,
  6096. [GCC_USB4_0_SB_IF_CLK_SRC] = &gcc_usb4_0_sb_if_clk_src.clkr,
  6097. [GCC_USB4_0_SYS_CLK] = &gcc_usb4_0_sys_clk.clkr,
  6098. [GCC_USB4_0_TMU_CLK] = &gcc_usb4_0_tmu_clk.clkr,
  6099. [GCC_USB4_0_TMU_CLK_SRC] = &gcc_usb4_0_tmu_clk_src.clkr,
  6100. [GCC_USB4_1_CFG_AHB_CLK] = &gcc_usb4_1_cfg_ahb_clk.clkr,
  6101. [GCC_USB4_1_DP0_CLK] = &gcc_usb4_1_dp0_clk.clkr,
  6102. [GCC_USB4_1_DP1_CLK] = &gcc_usb4_1_dp1_clk.clkr,
  6103. [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr,
  6104. [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr,
  6105. [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr,
  6106. [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr,
  6107. [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr,
  6108. [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr,
  6109. [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr,
  6110. [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr,
  6111. [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr,
  6112. [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr,
  6113. [GCC_USB4_1_SYS_CLK] = &gcc_usb4_1_sys_clk.clkr,
  6114. [GCC_USB4_1_TMU_CLK] = &gcc_usb4_1_tmu_clk.clkr,
  6115. [GCC_USB4_1_TMU_CLK_SRC] = &gcc_usb4_1_tmu_clk_src.clkr,
  6116. [GCC_USB4_2_CFG_AHB_CLK] = &gcc_usb4_2_cfg_ahb_clk.clkr,
  6117. [GCC_USB4_2_DP0_CLK] = &gcc_usb4_2_dp0_clk.clkr,
  6118. [GCC_USB4_2_DP1_CLK] = &gcc_usb4_2_dp1_clk.clkr,
  6119. [GCC_USB4_2_MASTER_CLK] = &gcc_usb4_2_master_clk.clkr,
  6120. [GCC_USB4_2_MASTER_CLK_SRC] = &gcc_usb4_2_master_clk_src.clkr,
  6121. [GCC_USB4_2_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_2_phy_p2rr2p_pipe_clk.clkr,
  6122. [GCC_USB4_2_PHY_PCIE_PIPE_CLK] = &gcc_usb4_2_phy_pcie_pipe_clk.clkr,
  6123. [GCC_USB4_2_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_2_phy_pcie_pipe_clk_src.clkr,
  6124. [GCC_USB4_2_PHY_RX0_CLK] = &gcc_usb4_2_phy_rx0_clk.clkr,
  6125. [GCC_USB4_2_PHY_RX1_CLK] = &gcc_usb4_2_phy_rx1_clk.clkr,
  6126. [GCC_USB4_2_PHY_USB_PIPE_CLK] = &gcc_usb4_2_phy_usb_pipe_clk.clkr,
  6127. [GCC_USB4_2_SB_IF_CLK] = &gcc_usb4_2_sb_if_clk.clkr,
  6128. [GCC_USB4_2_SB_IF_CLK_SRC] = &gcc_usb4_2_sb_if_clk_src.clkr,
  6129. [GCC_USB4_2_SYS_CLK] = &gcc_usb4_2_sys_clk.clkr,
  6130. [GCC_USB4_2_TMU_CLK] = &gcc_usb4_2_tmu_clk.clkr,
  6131. [GCC_USB4_2_TMU_CLK_SRC] = &gcc_usb4_2_tmu_clk_src.clkr,
  6132. [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
  6133. [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
  6134. };
  6135. static struct gdsc *gcc_x1e80100_gdscs[] = {
  6136. [GCC_PCIE_0_TUNNEL_GDSC] = &gcc_pcie_0_tunnel_gdsc,
  6137. [GCC_PCIE_1_TUNNEL_GDSC] = &gcc_pcie_1_tunnel_gdsc,
  6138. [GCC_PCIE_2_TUNNEL_GDSC] = &gcc_pcie_2_tunnel_gdsc,
  6139. [GCC_PCIE_3_GDSC] = &gcc_pcie_3_gdsc,
  6140. [GCC_PCIE_3_PHY_GDSC] = &gcc_pcie_3_phy_gdsc,
  6141. [GCC_PCIE_4_GDSC] = &gcc_pcie_4_gdsc,
  6142. [GCC_PCIE_4_PHY_GDSC] = &gcc_pcie_4_phy_gdsc,
  6143. [GCC_PCIE_5_GDSC] = &gcc_pcie_5_gdsc,
  6144. [GCC_PCIE_5_PHY_GDSC] = &gcc_pcie_5_phy_gdsc,
  6145. [GCC_PCIE_6_PHY_GDSC] = &gcc_pcie_6_phy_gdsc,
  6146. [GCC_PCIE_6A_GDSC] = &gcc_pcie_6a_gdsc,
  6147. [GCC_PCIE_6B_GDSC] = &gcc_pcie_6b_gdsc,
  6148. [GCC_UFS_MEM_PHY_GDSC] = &gcc_ufs_mem_phy_gdsc,
  6149. [GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,
  6150. [GCC_USB20_PRIM_GDSC] = &gcc_usb20_prim_gdsc,
  6151. [GCC_USB30_MP_GDSC] = &gcc_usb30_mp_gdsc,
  6152. [GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,
  6153. [GCC_USB30_SEC_GDSC] = &gcc_usb30_sec_gdsc,
  6154. [GCC_USB30_TERT_GDSC] = &gcc_usb30_tert_gdsc,
  6155. [GCC_USB3_MP_SS0_PHY_GDSC] = &gcc_usb3_mp_ss0_phy_gdsc,
  6156. [GCC_USB3_MP_SS1_PHY_GDSC] = &gcc_usb3_mp_ss1_phy_gdsc,
  6157. [GCC_USB4_0_GDSC] = &gcc_usb4_0_gdsc,
  6158. [GCC_USB4_1_GDSC] = &gcc_usb4_1_gdsc,
  6159. [GCC_USB4_2_GDSC] = &gcc_usb4_2_gdsc,
  6160. [GCC_USB_0_PHY_GDSC] = &gcc_usb_0_phy_gdsc,
  6161. [GCC_USB_1_PHY_GDSC] = &gcc_usb_1_phy_gdsc,
  6162. [GCC_USB_2_PHY_GDSC] = &gcc_usb_2_phy_gdsc,
  6163. };
  6164. static const struct qcom_reset_map gcc_x1e80100_resets[] = {
  6165. [GCC_AV1E_BCR] = { 0x4a000 },
  6166. [GCC_CAMERA_BCR] = { 0x26000 },
  6167. [GCC_DISPLAY_BCR] = { 0x27000 },
  6168. [GCC_GPU_BCR] = { 0x71000 },
  6169. [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
  6170. [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
  6171. [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
  6172. [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
  6173. [GCC_PCIE_0_TUNNEL_BCR] = { 0xa0000 },
  6174. [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
  6175. [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
  6176. [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
  6177. [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },
  6178. [GCC_PCIE_1_TUNNEL_BCR] = { 0x2c000 },
  6179. [GCC_PCIE_2_LINK_DOWN_BCR] = { 0xa5014 },
  6180. [GCC_PCIE_2_NOCSR_COM_PHY_BCR] = { 0xa5020 },
  6181. [GCC_PCIE_2_PHY_BCR] = { 0xa501c },
  6182. [GCC_PCIE_2_PHY_NOCSR_COM_PHY_BCR] = { 0xa5028 },
  6183. [GCC_PCIE_2_TUNNEL_BCR] = { 0x13000 },
  6184. [GCC_PCIE_3_BCR] = { 0x58000 },
  6185. [GCC_PCIE_3_LINK_DOWN_BCR] = { 0xab014 },
  6186. [GCC_PCIE_3_NOCSR_COM_PHY_BCR] = { 0xab020 },
  6187. [GCC_PCIE_3_PHY_BCR] = { 0xab01c },
  6188. [GCC_PCIE_3_PHY_NOCSR_COM_PHY_BCR] = { 0xab024 },
  6189. [GCC_PCIE_4_BCR] = { 0x6b000 },
  6190. [GCC_PCIE_4_LINK_DOWN_BCR] = { 0xb3014 },
  6191. [GCC_PCIE_4_NOCSR_COM_PHY_BCR] = { 0xb3020 },
  6192. [GCC_PCIE_4_PHY_BCR] = { 0xb301c },
  6193. [GCC_PCIE_4_PHY_NOCSR_COM_PHY_BCR] = { 0xb3028 },
  6194. [GCC_PCIE_5_BCR] = { 0x2f000 },
  6195. [GCC_PCIE_5_LINK_DOWN_BCR] = { 0xaa014 },
  6196. [GCC_PCIE_5_NOCSR_COM_PHY_BCR] = { 0xaa020 },
  6197. [GCC_PCIE_5_PHY_BCR] = { 0xaa01c },
  6198. [GCC_PCIE_5_PHY_NOCSR_COM_PHY_BCR] = { 0xaa028 },
  6199. [GCC_PCIE_6A_BCR] = { 0x31000 },
  6200. [GCC_PCIE_6A_LINK_DOWN_BCR] = { 0xac014 },
  6201. [GCC_PCIE_6A_NOCSR_COM_PHY_BCR] = { 0xac020 },
  6202. [GCC_PCIE_6A_PHY_BCR] = { 0xac01c },
  6203. [GCC_PCIE_6A_PHY_NOCSR_COM_PHY_BCR] = { 0xac024 },
  6204. [GCC_PCIE_6B_BCR] = { 0x8d000 },
  6205. [GCC_PCIE_6B_LINK_DOWN_BCR] = { 0xb5014 },
  6206. [GCC_PCIE_6B_NOCSR_COM_PHY_BCR] = { 0xb5020 },
  6207. [GCC_PCIE_6B_PHY_BCR] = { 0xb501c },
  6208. [GCC_PCIE_6B_PHY_NOCSR_COM_PHY_BCR] = { 0xb5024 },
  6209. [GCC_PCIE_PHY_BCR] = { 0x6f000 },
  6210. [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
  6211. [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
  6212. [GCC_PCIE_RSCC_BCR] = { 0xa4000 },
  6213. [GCC_PDM_BCR] = { 0x33000 },
  6214. [GCC_QUPV3_WRAPPER_0_BCR] = { 0x42000 },
  6215. [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
  6216. [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
  6217. [GCC_QUSB2PHY_HS0_MP_BCR] = { 0x1200c },
  6218. [GCC_QUSB2PHY_HS1_MP_BCR] = { 0x12010 },
  6219. [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
  6220. [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
  6221. [GCC_QUSB2PHY_TERT_BCR] = { 0x12008 },
  6222. [GCC_QUSB2PHY_USB20_HS_BCR] = { 0x12014 },
  6223. [GCC_SDCC2_BCR] = { 0x14000 },
  6224. [GCC_SDCC4_BCR] = { 0x16000 },
  6225. [GCC_UFS_PHY_BCR] = { 0x77000 },
  6226. [GCC_USB20_PRIM_BCR] = { 0x29000 },
  6227. [GCC_USB30_MP_BCR] = { 0x17000 },
  6228. [GCC_USB30_PRIM_BCR] = { 0x39000 },
  6229. [GCC_USB30_SEC_BCR] = { 0xa1000 },
  6230. [GCC_USB30_TERT_BCR] = { 0xa2000 },
  6231. [GCC_USB3_MP_SS0_PHY_BCR] = { 0x19008 },
  6232. [GCC_USB3_MP_SS1_PHY_BCR] = { 0x54008 },
  6233. [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
  6234. [GCC_USB3_PHY_SEC_BCR] = { 0x2a000 },
  6235. [GCC_USB3_PHY_TERT_BCR] = { 0xa3000 },
  6236. [GCC_USB3_UNIPHY_MP0_BCR] = { 0x19000 },
  6237. [GCC_USB3_UNIPHY_MP1_BCR] = { 0x54000 },
  6238. [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
  6239. [GCC_USB3PHY_PHY_SEC_BCR] = { 0x2a004 },
  6240. [GCC_USB3PHY_PHY_TERT_BCR] = { 0xa3004 },
  6241. [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x19004 },
  6242. [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x54004 },
  6243. [GCC_USB4_0_BCR] = { 0x9f000 },
  6244. [GCC_USB4_0_DP0_PHY_PRIM_BCR] = { 0x50010 },
  6245. [GCC_USB4_1_DP0_PHY_SEC_BCR] = { 0x2a010 },
  6246. [GCC_USB4_2_DP0_PHY_TERT_BCR] = { 0xa3010 },
  6247. [GCC_USB4_1_BCR] = { 0x2b000 },
  6248. [GCC_USB4_2_BCR] = { 0x11000 },
  6249. [GCC_USB_0_PHY_BCR] = { 0x50020 },
  6250. [GCC_USB_1_PHY_BCR] = { 0x2a020 },
  6251. [GCC_USB_2_PHY_BCR] = { 0xa3020 },
  6252. [GCC_VIDEO_BCR] = { 0x32000 },
  6253. };
  6254. static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
  6255. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
  6256. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
  6257. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
  6258. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
  6259. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
  6260. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
  6261. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
  6262. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
  6263. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
  6264. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
  6265. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
  6266. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
  6267. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
  6268. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
  6269. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
  6270. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
  6271. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
  6272. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
  6273. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
  6274. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
  6275. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
  6276. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
  6277. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
  6278. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),
  6279. };
  6280. static const struct regmap_config gcc_x1e80100_regmap_config = {
  6281. .reg_bits = 32,
  6282. .reg_stride = 4,
  6283. .val_bits = 32,
  6284. .max_register = 0x1f41f0,
  6285. .fast_io = true,
  6286. };
  6287. static const struct qcom_cc_desc gcc_x1e80100_desc = {
  6288. .config = &gcc_x1e80100_regmap_config,
  6289. .clks = gcc_x1e80100_clocks,
  6290. .num_clks = ARRAY_SIZE(gcc_x1e80100_clocks),
  6291. .resets = gcc_x1e80100_resets,
  6292. .num_resets = ARRAY_SIZE(gcc_x1e80100_resets),
  6293. .gdscs = gcc_x1e80100_gdscs,
  6294. .num_gdscs = ARRAY_SIZE(gcc_x1e80100_gdscs),
  6295. };
  6296. static const struct of_device_id gcc_x1e80100_match_table[] = {
  6297. { .compatible = "qcom,x1e80100-gcc" },
  6298. { }
  6299. };
  6300. MODULE_DEVICE_TABLE(of, gcc_x1e80100_match_table);
  6301. static int gcc_x1e80100_probe(struct platform_device *pdev)
  6302. {
  6303. struct regmap *regmap;
  6304. int ret;
  6305. regmap = qcom_cc_map(pdev, &gcc_x1e80100_desc);
  6306. if (IS_ERR(regmap))
  6307. return PTR_ERR(regmap);
  6308. ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
  6309. ARRAY_SIZE(gcc_dfs_clocks));
  6310. if (ret)
  6311. return ret;
  6312. /* Keep some clocks always-on */
  6313. qcom_branch_set_clk_en(regmap, 0x26004); /* GCC_CAMERA_AHB_CLK */
  6314. qcom_branch_set_clk_en(regmap, 0x26028); /* GCC_CAMERA_XO_CLK */
  6315. qcom_branch_set_clk_en(regmap, 0x27004); /* GCC_DISP_AHB_CLK */
  6316. qcom_branch_set_clk_en(regmap, 0x27018); /* GCC_DISP_XO_CLK */
  6317. qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_VIDEO_AHB_CLK */
  6318. qcom_branch_set_clk_en(regmap, 0x32030); /* GCC_VIDEO_XO_CLK */
  6319. qcom_branch_set_clk_en(regmap, 0x71004); /* GCC_GPU_CFG_AHB_CLK */
  6320. /* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */
  6321. regmap_write(regmap, 0x52224, 0x0);
  6322. return qcom_cc_really_probe(&pdev->dev, &gcc_x1e80100_desc, regmap);
  6323. }
  6324. static struct platform_driver gcc_x1e80100_driver = {
  6325. .probe = gcc_x1e80100_probe,
  6326. .driver = {
  6327. .name = "gcc-x1e80100",
  6328. .of_match_table = gcc_x1e80100_match_table,
  6329. },
  6330. };
  6331. static int __init gcc_x1e80100_init(void)
  6332. {
  6333. return platform_driver_register(&gcc_x1e80100_driver);
  6334. }
  6335. subsys_initcall(gcc_x1e80100_init);
  6336. static void __exit gcc_x1e80100_exit(void)
  6337. {
  6338. platform_driver_unregister(&gcc_x1e80100_driver);
  6339. }
  6340. module_exit(gcc_x1e80100_exit);
  6341. MODULE_DESCRIPTION("QTI GCC X1E80100 Driver");
  6342. MODULE_LICENSE("GPL");