gcc-sc8280xp.c 200 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2021, The Linux Foundation. All rights reserved.
  4. * Copyright (c) 2022, Linaro Ltd.
  5. */
  6. #include <linux/clk-provider.h>
  7. #include <linux/err.h>
  8. #include <linux/kernel.h>
  9. #include <linux/module.h>
  10. #include <linux/pm_runtime.h>
  11. #include <linux/of.h>
  12. #include <linux/platform_device.h>
  13. #include <linux/regmap.h>
  14. #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
  15. #include "clk-alpha-pll.h"
  16. #include "clk-branch.h"
  17. #include "clk-rcg.h"
  18. #include "clk-regmap.h"
  19. #include "clk-regmap-divider.h"
  20. #include "clk-regmap-mux.h"
  21. #include "clk-regmap-phy-mux.h"
  22. #include "common.h"
  23. #include "gdsc.h"
  24. #include "reset.h"
  25. /* Need to match the order of clocks in DT binding */
  26. enum {
  27. DT_BI_TCXO,
  28. DT_SLEEP_CLK,
  29. DT_UFS_PHY_RX_SYMBOL_0_CLK,
  30. DT_UFS_PHY_RX_SYMBOL_1_CLK,
  31. DT_UFS_PHY_TX_SYMBOL_0_CLK,
  32. DT_UFS_CARD_RX_SYMBOL_0_CLK,
  33. DT_UFS_CARD_RX_SYMBOL_1_CLK,
  34. DT_UFS_CARD_TX_SYMBOL_0_CLK,
  35. DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
  36. DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC,
  37. DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC,
  38. DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC,
  39. DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK,
  40. DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
  41. DT_QUSB4PHY_GCC_USB4_RX0_CLK,
  42. DT_QUSB4PHY_GCC_USB4_RX1_CLK,
  43. DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK,
  44. DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC,
  45. DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC,
  46. DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC,
  47. DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK,
  48. DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
  49. DT_QUSB4PHY_1_GCC_USB4_RX0_CLK,
  50. DT_QUSB4PHY_1_GCC_USB4_RX1_CLK,
  51. DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK,
  52. DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK,
  53. DT_PCIE_2A_PIPE_CLK,
  54. DT_PCIE_2B_PIPE_CLK,
  55. DT_PCIE_3A_PIPE_CLK,
  56. DT_PCIE_3B_PIPE_CLK,
  57. DT_PCIE_4_PIPE_CLK,
  58. DT_RXC0_REF_CLK,
  59. DT_RXC1_REF_CLK,
  60. };
  61. enum {
  62. P_BI_TCXO,
  63. P_GCC_GPLL0_OUT_EVEN,
  64. P_GCC_GPLL0_OUT_MAIN,
  65. P_GCC_GPLL2_OUT_MAIN,
  66. P_GCC_GPLL4_OUT_MAIN,
  67. P_GCC_GPLL7_OUT_MAIN,
  68. P_GCC_GPLL8_OUT_MAIN,
  69. P_GCC_GPLL9_OUT_MAIN,
  70. P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC,
  71. P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC,
  72. P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC,
  73. P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC,
  74. P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC,
  75. P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC,
  76. P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC,
  77. P_GCC_USB4_PHY_DP_GMUX_CLK_SRC,
  78. P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC,
  79. P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC,
  80. P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC,
  81. P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC,
  82. P_QUSB4PHY_1_GCC_USB4_RX0_CLK,
  83. P_QUSB4PHY_1_GCC_USB4_RX1_CLK,
  84. P_QUSB4PHY_GCC_USB4_RX0_CLK,
  85. P_QUSB4PHY_GCC_USB4_RX1_CLK,
  86. P_RXC0_REF_CLK,
  87. P_RXC1_REF_CLK,
  88. P_SLEEP_CLK,
  89. P_UFS_CARD_RX_SYMBOL_0_CLK,
  90. P_UFS_CARD_RX_SYMBOL_1_CLK,
  91. P_UFS_CARD_TX_SYMBOL_0_CLK,
  92. P_UFS_PHY_RX_SYMBOL_0_CLK,
  93. P_UFS_PHY_RX_SYMBOL_1_CLK,
  94. P_UFS_PHY_TX_SYMBOL_0_CLK,
  95. P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
  96. P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK,
  97. P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK,
  98. P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK,
  99. P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK,
  100. P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
  101. P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK,
  102. P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
  103. };
  104. static const struct clk_parent_data gcc_parent_data_tcxo = { .index = DT_BI_TCXO };
  105. static struct clk_alpha_pll gcc_gpll0 = {
  106. .offset = 0x0,
  107. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  108. .clkr = {
  109. .enable_reg = 0x52028,
  110. .enable_mask = BIT(0),
  111. .hw.init = &(const struct clk_init_data) {
  112. .name = "gcc_gpll0",
  113. .parent_data = &gcc_parent_data_tcxo,
  114. .num_parents = 1,
  115. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  116. },
  117. },
  118. };
  119. static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
  120. { 0x1, 2 },
  121. { }
  122. };
  123. static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
  124. .offset = 0x0,
  125. .post_div_shift = 8,
  126. .post_div_table = post_div_table_gcc_gpll0_out_even,
  127. .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
  128. .width = 4,
  129. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  130. .clkr.hw.init = &(const struct clk_init_data) {
  131. .name = "gcc_gpll0_out_even",
  132. .parent_hws = (const struct clk_hw*[]){
  133. &gcc_gpll0.clkr.hw,
  134. },
  135. .num_parents = 1,
  136. .ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
  137. },
  138. };
  139. static struct clk_alpha_pll gcc_gpll2 = {
  140. .offset = 0x2000,
  141. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  142. .clkr = {
  143. .enable_reg = 0x52028,
  144. .enable_mask = BIT(2),
  145. .hw.init = &(const struct clk_init_data) {
  146. .name = "gcc_gpll2",
  147. .parent_data = &gcc_parent_data_tcxo,
  148. .num_parents = 1,
  149. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  150. },
  151. },
  152. };
  153. static struct clk_alpha_pll gcc_gpll4 = {
  154. .offset = 0x76000,
  155. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  156. .clkr = {
  157. .enable_reg = 0x52028,
  158. .enable_mask = BIT(4),
  159. .hw.init = &(const struct clk_init_data) {
  160. .name = "gcc_gpll4",
  161. .parent_data = &gcc_parent_data_tcxo,
  162. .num_parents = 1,
  163. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  164. },
  165. },
  166. };
  167. static struct clk_alpha_pll gcc_gpll7 = {
  168. .offset = 0x1a000,
  169. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  170. .clkr = {
  171. .enable_reg = 0x52028,
  172. .enable_mask = BIT(7),
  173. .hw.init = &(const struct clk_init_data) {
  174. .name = "gcc_gpll7",
  175. .parent_data = &gcc_parent_data_tcxo,
  176. .num_parents = 1,
  177. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  178. },
  179. },
  180. };
  181. static struct clk_alpha_pll gcc_gpll8 = {
  182. .offset = 0x1b000,
  183. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  184. .clkr = {
  185. .enable_reg = 0x52028,
  186. .enable_mask = BIT(8),
  187. .hw.init = &(const struct clk_init_data) {
  188. .name = "gcc_gpll8",
  189. .parent_data = &gcc_parent_data_tcxo,
  190. .num_parents = 1,
  191. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  192. },
  193. },
  194. };
  195. static struct clk_alpha_pll gcc_gpll9 = {
  196. .offset = 0x1c000,
  197. .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
  198. .clkr = {
  199. .enable_reg = 0x52028,
  200. .enable_mask = BIT(9),
  201. .hw.init = &(const struct clk_init_data) {
  202. .name = "gcc_gpll9",
  203. .parent_data = &gcc_parent_data_tcxo,
  204. .num_parents = 1,
  205. .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
  206. },
  207. },
  208. };
  209. static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src;
  210. static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src;
  211. static const struct parent_map gcc_parent_map_0[] = {
  212. { P_BI_TCXO, 0 },
  213. { P_GCC_GPLL0_OUT_MAIN, 1 },
  214. { P_GCC_GPLL0_OUT_EVEN, 6 },
  215. };
  216. static const struct clk_parent_data gcc_parent_data_0[] = {
  217. { .index = DT_BI_TCXO },
  218. { .hw = &gcc_gpll0.clkr.hw },
  219. { .hw = &gcc_gpll0_out_even.clkr.hw },
  220. };
  221. static const struct parent_map gcc_parent_map_1[] = {
  222. { P_BI_TCXO, 0 },
  223. { P_SLEEP_CLK, 5 },
  224. };
  225. static const struct clk_parent_data gcc_parent_data_1[] = {
  226. { .index = DT_BI_TCXO },
  227. { .index = DT_SLEEP_CLK },
  228. };
  229. static const struct parent_map gcc_parent_map_2[] = {
  230. { P_BI_TCXO, 0 },
  231. { P_GCC_GPLL0_OUT_MAIN, 1 },
  232. { P_SLEEP_CLK, 5 },
  233. { P_GCC_GPLL0_OUT_EVEN, 6 },
  234. };
  235. static const struct clk_parent_data gcc_parent_data_2[] = {
  236. { .index = DT_BI_TCXO },
  237. { .hw = &gcc_gpll0.clkr.hw },
  238. { .index = DT_SLEEP_CLK },
  239. { .hw = &gcc_gpll0_out_even.clkr.hw },
  240. };
  241. static const struct parent_map gcc_parent_map_3[] = {
  242. { P_BI_TCXO, 0 },
  243. };
  244. static const struct clk_parent_data gcc_parent_data_3[] = {
  245. { .index = DT_BI_TCXO },
  246. };
  247. static const struct parent_map gcc_parent_map_4[] = {
  248. { P_BI_TCXO, 0 },
  249. { P_GCC_GPLL7_OUT_MAIN, 2 },
  250. { P_GCC_GPLL4_OUT_MAIN, 5 },
  251. { P_GCC_GPLL0_OUT_EVEN, 6 },
  252. };
  253. static const struct clk_parent_data gcc_parent_data_4[] = {
  254. { .index = DT_BI_TCXO },
  255. { .hw = &gcc_gpll7.clkr.hw },
  256. { .hw = &gcc_gpll4.clkr.hw },
  257. { .hw = &gcc_gpll0_out_even.clkr.hw },
  258. };
  259. static const struct parent_map gcc_parent_map_5[] = {
  260. { P_BI_TCXO, 0 },
  261. { P_GCC_GPLL0_OUT_MAIN, 1 },
  262. { P_GCC_GPLL8_OUT_MAIN, 2 },
  263. { P_GCC_GPLL0_OUT_EVEN, 6 },
  264. };
  265. static const struct clk_parent_data gcc_parent_data_5[] = {
  266. { .index = DT_BI_TCXO },
  267. { .hw = &gcc_gpll0.clkr.hw },
  268. { .hw = &gcc_gpll8.clkr.hw },
  269. { .hw = &gcc_gpll0_out_even.clkr.hw },
  270. };
  271. static const struct parent_map gcc_parent_map_6[] = {
  272. { P_BI_TCXO, 0 },
  273. { P_GCC_GPLL0_OUT_MAIN, 1 },
  274. { P_GCC_GPLL7_OUT_MAIN, 2 },
  275. };
  276. static const struct clk_parent_data gcc_parent_data_6[] = {
  277. { .index = DT_BI_TCXO },
  278. { .hw = &gcc_gpll0.clkr.hw },
  279. { .hw = &gcc_gpll7.clkr.hw },
  280. };
  281. static const struct parent_map gcc_parent_map_7[] = {
  282. { P_BI_TCXO, 0 },
  283. { P_GCC_GPLL0_OUT_MAIN, 1 },
  284. { P_GCC_GPLL2_OUT_MAIN, 2 },
  285. };
  286. static const struct clk_parent_data gcc_parent_data_7[] = {
  287. { .index = DT_BI_TCXO },
  288. { .hw = &gcc_gpll0.clkr.hw },
  289. { .hw = &gcc_gpll2.clkr.hw },
  290. };
  291. static const struct parent_map gcc_parent_map_8[] = {
  292. { P_BI_TCXO, 0 },
  293. { P_GCC_GPLL7_OUT_MAIN, 2 },
  294. { P_RXC0_REF_CLK, 3 },
  295. { P_GCC_GPLL0_OUT_EVEN, 6 },
  296. };
  297. static const struct clk_parent_data gcc_parent_data_8[] = {
  298. { .index = DT_BI_TCXO },
  299. { .hw = &gcc_gpll7.clkr.hw },
  300. { .index = DT_RXC0_REF_CLK },
  301. { .hw = &gcc_gpll0_out_even.clkr.hw },
  302. };
  303. static const struct parent_map gcc_parent_map_9[] = {
  304. { P_BI_TCXO, 0 },
  305. { P_GCC_GPLL7_OUT_MAIN, 2 },
  306. { P_RXC1_REF_CLK, 3 },
  307. { P_GCC_GPLL0_OUT_EVEN, 6 },
  308. };
  309. static const struct clk_parent_data gcc_parent_data_9[] = {
  310. { .index = DT_BI_TCXO },
  311. { .hw = &gcc_gpll7.clkr.hw },
  312. { .index = DT_RXC1_REF_CLK },
  313. { .hw = &gcc_gpll0_out_even.clkr.hw },
  314. };
  315. static const struct parent_map gcc_parent_map_15[] = {
  316. { P_BI_TCXO, 0 },
  317. { P_GCC_GPLL0_OUT_MAIN, 1 },
  318. { P_GCC_GPLL9_OUT_MAIN, 2 },
  319. { P_GCC_GPLL4_OUT_MAIN, 5 },
  320. { P_GCC_GPLL0_OUT_EVEN, 6 },
  321. };
  322. static const struct clk_parent_data gcc_parent_data_15[] = {
  323. { .index = DT_BI_TCXO },
  324. { .hw = &gcc_gpll0.clkr.hw },
  325. { .hw = &gcc_gpll9.clkr.hw },
  326. { .hw = &gcc_gpll4.clkr.hw },
  327. { .hw = &gcc_gpll0_out_even.clkr.hw },
  328. };
  329. static const struct parent_map gcc_parent_map_16[] = {
  330. { P_UFS_CARD_RX_SYMBOL_0_CLK, 0 },
  331. { P_BI_TCXO, 2 },
  332. };
  333. static const struct clk_parent_data gcc_parent_data_16[] = {
  334. { .index = DT_UFS_CARD_RX_SYMBOL_0_CLK },
  335. { .index = DT_BI_TCXO },
  336. };
  337. static const struct parent_map gcc_parent_map_17[] = {
  338. { P_UFS_CARD_RX_SYMBOL_1_CLK, 0 },
  339. { P_BI_TCXO, 2 },
  340. };
  341. static const struct clk_parent_data gcc_parent_data_17[] = {
  342. { .index = DT_UFS_CARD_RX_SYMBOL_1_CLK },
  343. { .index = DT_BI_TCXO },
  344. };
  345. static const struct parent_map gcc_parent_map_18[] = {
  346. { P_UFS_CARD_TX_SYMBOL_0_CLK, 0 },
  347. { P_BI_TCXO, 2 },
  348. };
  349. static const struct clk_parent_data gcc_parent_data_18[] = {
  350. { .index = DT_UFS_CARD_TX_SYMBOL_0_CLK },
  351. { .index = DT_BI_TCXO },
  352. };
  353. static const struct parent_map gcc_parent_map_19[] = {
  354. { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
  355. { P_BI_TCXO, 2 },
  356. };
  357. static const struct clk_parent_data gcc_parent_data_19[] = {
  358. { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK },
  359. { .index = DT_BI_TCXO },
  360. };
  361. static const struct parent_map gcc_parent_map_20[] = {
  362. { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
  363. { P_BI_TCXO, 2 },
  364. };
  365. static const struct clk_parent_data gcc_parent_data_20[] = {
  366. { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK },
  367. { .index = DT_BI_TCXO },
  368. };
  369. static const struct parent_map gcc_parent_map_21[] = {
  370. { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
  371. { P_BI_TCXO, 2 },
  372. };
  373. static const struct clk_parent_data gcc_parent_data_21[] = {
  374. { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK },
  375. { .index = DT_BI_TCXO },
  376. };
  377. static const struct parent_map gcc_parent_map_22[] = {
  378. { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
  379. { P_BI_TCXO, 2 },
  380. };
  381. static const struct clk_parent_data gcc_parent_data_22[] = {
  382. { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK },
  383. { .index = DT_BI_TCXO },
  384. };
  385. static const struct parent_map gcc_parent_map_23[] = {
  386. { P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK, 0 },
  387. { P_BI_TCXO, 2 },
  388. };
  389. static const struct clk_parent_data gcc_parent_data_23[] = {
  390. { .index = DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK },
  391. { .index = DT_BI_TCXO },
  392. };
  393. static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
  394. .reg = 0xf060,
  395. .shift = 0,
  396. .width = 2,
  397. .parent_map = gcc_parent_map_22,
  398. .clkr = {
  399. .hw.init = &(const struct clk_init_data) {
  400. .name = "gcc_usb3_prim_phy_pipe_clk_src",
  401. .parent_data = gcc_parent_data_22,
  402. .num_parents = ARRAY_SIZE(gcc_parent_data_22),
  403. .ops = &clk_regmap_mux_closest_ops,
  404. },
  405. },
  406. };
  407. static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = {
  408. .reg = 0x10060,
  409. .shift = 0,
  410. .width = 2,
  411. .parent_map = gcc_parent_map_23,
  412. .clkr = {
  413. .hw.init = &(const struct clk_init_data) {
  414. .name = "gcc_usb3_sec_phy_pipe_clk_src",
  415. .parent_data = gcc_parent_data_23,
  416. .num_parents = ARRAY_SIZE(gcc_parent_data_23),
  417. .ops = &clk_regmap_mux_closest_ops,
  418. },
  419. },
  420. };
  421. static const struct parent_map gcc_parent_map_24[] = {
  422. { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK, 0 },
  423. { P_BI_TCXO, 2 },
  424. };
  425. static const struct clk_parent_data gcc_parent_data_24[] = {
  426. { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK },
  427. { .index = DT_BI_TCXO },
  428. };
  429. static const struct parent_map gcc_parent_map_25[] = {
  430. { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK, 0 },
  431. { P_BI_TCXO, 2 },
  432. };
  433. static const struct clk_parent_data gcc_parent_data_25[] = {
  434. { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK },
  435. { .index = DT_BI_TCXO },
  436. };
  437. static const struct parent_map gcc_parent_map_26[] = {
  438. { P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 0 },
  439. { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 },
  440. { P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC, 3 },
  441. };
  442. static const struct clk_parent_data gcc_parent_data_26[] = {
  443. { .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw },
  444. { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
  445. { .index = DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC },
  446. };
  447. static const struct parent_map gcc_parent_map_27[] = {
  448. { P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 0 },
  449. { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 },
  450. { P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 3 },
  451. };
  452. static const struct clk_parent_data gcc_parent_data_27[] = {
  453. { .hw = &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw },
  454. { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
  455. { .index = DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC },
  456. };
  457. static const struct parent_map gcc_parent_map_28[] = {
  458. { P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC, 0 },
  459. { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 },
  460. };
  461. static const struct clk_parent_data gcc_parent_data_28[] = {
  462. { .index = DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC },
  463. { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
  464. };
  465. static const struct parent_map gcc_parent_map_29[] = {
  466. { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 },
  467. { P_BI_TCXO, 2 },
  468. };
  469. static const struct clk_parent_data gcc_parent_data_29[] = {
  470. { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
  471. { .index = DT_BI_TCXO },
  472. };
  473. static const struct parent_map gcc_parent_map_30[] = {
  474. { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
  475. { P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC, 1 },
  476. };
  477. static const struct clk_parent_data gcc_parent_data_30[] = {
  478. { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC },
  479. { .hw = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr.hw },
  480. };
  481. static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipegmux_clk_src = {
  482. .reg = 0xb80dc,
  483. .shift = 0,
  484. .width = 1,
  485. .parent_map = gcc_parent_map_30,
  486. .clkr = {
  487. .hw.init = &(const struct clk_init_data) {
  488. .name = "gcc_usb4_1_phy_pcie_pipegmux_clk_src",
  489. .parent_data = gcc_parent_data_30,
  490. .num_parents = ARRAY_SIZE(gcc_parent_data_30),
  491. .ops = &clk_regmap_mux_closest_ops,
  492. },
  493. },
  494. };
  495. static const struct parent_map gcc_parent_map_31[] = {
  496. { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 },
  497. { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
  498. };
  499. static const struct clk_parent_data gcc_parent_data_31[] = {
  500. { .hw = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr.hw },
  501. { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
  502. };
  503. static const struct parent_map gcc_parent_map_32[] = {
  504. { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 },
  505. { P_BI_TCXO, 2 },
  506. };
  507. static const struct clk_parent_data gcc_parent_data_32[] = {
  508. { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK },
  509. { .index = DT_BI_TCXO },
  510. };
  511. static const struct parent_map gcc_parent_map_33[] = {
  512. { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 },
  513. { P_BI_TCXO, 2 },
  514. };
  515. static const struct clk_parent_data gcc_parent_data_33[] = {
  516. { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK },
  517. { .index = DT_BI_TCXO },
  518. };
  519. static const struct parent_map gcc_parent_map_34[] = {
  520. { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
  521. { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
  522. };
  523. static const struct clk_parent_data gcc_parent_data_34[] = {
  524. { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC },
  525. { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
  526. };
  527. static const struct parent_map gcc_parent_map_35[] = {
  528. { P_GCC_USB4_PHY_DP_GMUX_CLK_SRC, 0 },
  529. { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 },
  530. };
  531. static const struct clk_parent_data gcc_parent_data_35[] = {
  532. { .index = DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC },
  533. { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
  534. };
  535. static const struct parent_map gcc_parent_map_36[] = {
  536. { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 },
  537. { P_BI_TCXO, 2 },
  538. };
  539. static const struct clk_parent_data gcc_parent_data_36[] = {
  540. { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
  541. { .index = DT_BI_TCXO },
  542. };
  543. static const struct parent_map gcc_parent_map_37[] = {
  544. { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
  545. { P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC, 1 },
  546. };
  547. static const struct clk_parent_data gcc_parent_data_37[] = {
  548. { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC },
  549. { .hw = &gcc_usb4_phy_pcie_pipe_clk_src.clkr.hw },
  550. };
  551. static struct clk_regmap_mux gcc_usb4_phy_pcie_pipegmux_clk_src = {
  552. .reg = 0x2a0dc,
  553. .shift = 0,
  554. .width = 1,
  555. .parent_map = gcc_parent_map_37,
  556. .clkr = {
  557. .hw.init = &(const struct clk_init_data) {
  558. .name = "gcc_usb4_phy_pcie_pipegmux_clk_src",
  559. .parent_data = gcc_parent_data_37,
  560. .num_parents = ARRAY_SIZE(gcc_parent_data_37),
  561. .ops = &clk_regmap_mux_closest_ops,
  562. },
  563. },
  564. };
  565. static const struct parent_map gcc_parent_map_38[] = {
  566. { P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 },
  567. { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
  568. };
  569. static const struct clk_parent_data gcc_parent_data_38[] = {
  570. { .hw = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr.hw },
  571. { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
  572. };
  573. static const struct parent_map gcc_parent_map_39[] = {
  574. { P_QUSB4PHY_GCC_USB4_RX0_CLK, 0 },
  575. { P_BI_TCXO, 2 },
  576. };
  577. static const struct clk_parent_data gcc_parent_data_39[] = {
  578. { .index = DT_QUSB4PHY_GCC_USB4_RX0_CLK },
  579. { .index = DT_BI_TCXO },
  580. };
  581. static const struct parent_map gcc_parent_map_40[] = {
  582. { P_QUSB4PHY_GCC_USB4_RX1_CLK, 0 },
  583. { P_BI_TCXO, 2 },
  584. };
  585. static const struct clk_parent_data gcc_parent_data_40[] = {
  586. { .index = DT_QUSB4PHY_GCC_USB4_RX1_CLK },
  587. { .index = DT_BI_TCXO },
  588. };
  589. static const struct parent_map gcc_parent_map_41[] = {
  590. { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
  591. { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
  592. };
  593. static const struct clk_parent_data gcc_parent_data_41[] = {
  594. { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC },
  595. { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
  596. };
  597. static struct clk_regmap_phy_mux gcc_pcie_2a_pipe_clk_src = {
  598. .reg = 0x9d05c,
  599. .clkr = {
  600. .hw.init = &(const struct clk_init_data) {
  601. .name = "gcc_pcie_2a_pipe_clk_src",
  602. .parent_data = &(const struct clk_parent_data){
  603. .index = DT_PCIE_2A_PIPE_CLK,
  604. },
  605. .num_parents = 1,
  606. .ops = &clk_regmap_phy_mux_ops,
  607. },
  608. },
  609. };
  610. static struct clk_regmap_phy_mux gcc_pcie_2b_pipe_clk_src = {
  611. .reg = 0x9e05c,
  612. .clkr = {
  613. .hw.init = &(const struct clk_init_data) {
  614. .name = "gcc_pcie_2b_pipe_clk_src",
  615. .parent_data = &(const struct clk_parent_data){
  616. .index = DT_PCIE_2B_PIPE_CLK,
  617. },
  618. .num_parents = 1,
  619. .ops = &clk_regmap_phy_mux_ops,
  620. },
  621. },
  622. };
  623. static struct clk_regmap_phy_mux gcc_pcie_3a_pipe_clk_src = {
  624. .reg = 0xa005c,
  625. .clkr = {
  626. .hw.init = &(const struct clk_init_data) {
  627. .name = "gcc_pcie_3a_pipe_clk_src",
  628. .parent_data = &(const struct clk_parent_data){
  629. .index = DT_PCIE_3A_PIPE_CLK,
  630. },
  631. .num_parents = 1,
  632. .ops = &clk_regmap_phy_mux_ops,
  633. },
  634. },
  635. };
  636. static struct clk_regmap_phy_mux gcc_pcie_3b_pipe_clk_src = {
  637. .reg = 0xa205c,
  638. .clkr = {
  639. .hw.init = &(const struct clk_init_data) {
  640. .name = "gcc_pcie_3b_pipe_clk_src",
  641. .parent_data = &(const struct clk_parent_data){
  642. .index = DT_PCIE_3B_PIPE_CLK,
  643. },
  644. .num_parents = 1,
  645. .ops = &clk_regmap_phy_mux_ops,
  646. },
  647. },
  648. };
  649. static struct clk_regmap_phy_mux gcc_pcie_4_pipe_clk_src = {
  650. .reg = 0x6b05c,
  651. .clkr = {
  652. .hw.init = &(const struct clk_init_data) {
  653. .name = "gcc_pcie_4_pipe_clk_src",
  654. .parent_data = &(const struct clk_parent_data){
  655. .index = DT_PCIE_4_PIPE_CLK,
  656. },
  657. .num_parents = 1,
  658. .ops = &clk_regmap_phy_mux_ops,
  659. },
  660. },
  661. };
  662. static struct clk_regmap_mux gcc_ufs_card_rx_symbol_0_clk_src = {
  663. .reg = 0x75058,
  664. .shift = 0,
  665. .width = 2,
  666. .parent_map = gcc_parent_map_16,
  667. .clkr = {
  668. .hw.init = &(const struct clk_init_data) {
  669. .name = "gcc_ufs_card_rx_symbol_0_clk_src",
  670. .parent_data = gcc_parent_data_16,
  671. .num_parents = ARRAY_SIZE(gcc_parent_data_16),
  672. .ops = &clk_regmap_mux_closest_ops,
  673. },
  674. },
  675. };
  676. static struct clk_regmap_mux gcc_ufs_card_rx_symbol_1_clk_src = {
  677. .reg = 0x750c8,
  678. .shift = 0,
  679. .width = 2,
  680. .parent_map = gcc_parent_map_17,
  681. .clkr = {
  682. .hw.init = &(const struct clk_init_data) {
  683. .name = "gcc_ufs_card_rx_symbol_1_clk_src",
  684. .parent_data = gcc_parent_data_17,
  685. .num_parents = ARRAY_SIZE(gcc_parent_data_17),
  686. .ops = &clk_regmap_mux_closest_ops,
  687. },
  688. },
  689. };
  690. static struct clk_regmap_mux gcc_ufs_card_tx_symbol_0_clk_src = {
  691. .reg = 0x75048,
  692. .shift = 0,
  693. .width = 2,
  694. .parent_map = gcc_parent_map_18,
  695. .clkr = {
  696. .hw.init = &(const struct clk_init_data) {
  697. .name = "gcc_ufs_card_tx_symbol_0_clk_src",
  698. .parent_data = gcc_parent_data_18,
  699. .num_parents = ARRAY_SIZE(gcc_parent_data_18),
  700. .ops = &clk_regmap_mux_closest_ops,
  701. },
  702. },
  703. };
  704. static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
  705. .reg = 0x77058,
  706. .shift = 0,
  707. .width = 2,
  708. .parent_map = gcc_parent_map_19,
  709. .clkr = {
  710. .hw.init = &(const struct clk_init_data) {
  711. .name = "gcc_ufs_phy_rx_symbol_0_clk_src",
  712. .parent_data = gcc_parent_data_19,
  713. .num_parents = ARRAY_SIZE(gcc_parent_data_19),
  714. .ops = &clk_regmap_mux_closest_ops,
  715. },
  716. },
  717. };
  718. static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
  719. .reg = 0x770c8,
  720. .shift = 0,
  721. .width = 2,
  722. .parent_map = gcc_parent_map_20,
  723. .clkr = {
  724. .hw.init = &(const struct clk_init_data) {
  725. .name = "gcc_ufs_phy_rx_symbol_1_clk_src",
  726. .parent_data = gcc_parent_data_20,
  727. .num_parents = ARRAY_SIZE(gcc_parent_data_20),
  728. .ops = &clk_regmap_mux_closest_ops,
  729. },
  730. },
  731. };
  732. static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
  733. .reg = 0x77048,
  734. .shift = 0,
  735. .width = 2,
  736. .parent_map = gcc_parent_map_21,
  737. .clkr = {
  738. .hw.init = &(const struct clk_init_data) {
  739. .name = "gcc_ufs_phy_tx_symbol_0_clk_src",
  740. .parent_data = gcc_parent_data_21,
  741. .num_parents = ARRAY_SIZE(gcc_parent_data_21),
  742. .ops = &clk_regmap_mux_closest_ops,
  743. },
  744. },
  745. };
  746. static struct clk_regmap_mux gcc_usb34_prim_phy_pipe_clk_src = {
  747. .reg = 0xf064,
  748. .shift = 0,
  749. .width = 2,
  750. .parent_map = gcc_parent_map_26,
  751. .clkr = {
  752. .hw.init = &(const struct clk_init_data) {
  753. .name = "gcc_usb34_prim_phy_pipe_clk_src",
  754. .parent_data = gcc_parent_data_26,
  755. .num_parents = ARRAY_SIZE(gcc_parent_data_26),
  756. .ops = &clk_regmap_mux_closest_ops,
  757. },
  758. },
  759. };
  760. static struct clk_regmap_mux gcc_usb34_sec_phy_pipe_clk_src = {
  761. .reg = 0x10064,
  762. .shift = 0,
  763. .width = 2,
  764. .parent_map = gcc_parent_map_27,
  765. .clkr = {
  766. .hw.init = &(const struct clk_init_data) {
  767. .name = "gcc_usb34_sec_phy_pipe_clk_src",
  768. .parent_data = gcc_parent_data_27,
  769. .num_parents = ARRAY_SIZE(gcc_parent_data_27),
  770. .ops = &clk_regmap_mux_closest_ops,
  771. },
  772. },
  773. };
  774. static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_0_clk_src = {
  775. .reg = 0xab060,
  776. .shift = 0,
  777. .width = 2,
  778. .parent_map = gcc_parent_map_24,
  779. .clkr = {
  780. .hw.init = &(const struct clk_init_data) {
  781. .name = "gcc_usb3_mp_phy_pipe_0_clk_src",
  782. .parent_data = gcc_parent_data_24,
  783. .num_parents = ARRAY_SIZE(gcc_parent_data_24),
  784. .ops = &clk_regmap_mux_closest_ops,
  785. },
  786. },
  787. };
  788. static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_1_clk_src = {
  789. .reg = 0xab068,
  790. .shift = 0,
  791. .width = 2,
  792. .parent_map = gcc_parent_map_25,
  793. .clkr = {
  794. .hw.init = &(const struct clk_init_data) {
  795. .name = "gcc_usb3_mp_phy_pipe_1_clk_src",
  796. .parent_data = gcc_parent_data_25,
  797. .num_parents = ARRAY_SIZE(gcc_parent_data_25),
  798. .ops = &clk_regmap_mux_closest_ops,
  799. },
  800. },
  801. };
  802. static struct clk_regmap_mux gcc_usb4_1_phy_dp_clk_src = {
  803. .reg = 0xb8050,
  804. .shift = 0,
  805. .width = 2,
  806. .parent_map = gcc_parent_map_28,
  807. .clkr = {
  808. .hw.init = &(const struct clk_init_data) {
  809. .name = "gcc_usb4_1_phy_dp_clk_src",
  810. .parent_data = gcc_parent_data_28,
  811. .num_parents = ARRAY_SIZE(gcc_parent_data_28),
  812. .ops = &clk_regmap_mux_closest_ops,
  813. },
  814. },
  815. };
  816. static struct clk_regmap_mux gcc_usb4_1_phy_p2rr2p_pipe_clk_src = {
  817. .reg = 0xb80b0,
  818. .shift = 0,
  819. .width = 2,
  820. .parent_map = gcc_parent_map_29,
  821. .clkr = {
  822. .hw.init = &(const struct clk_init_data) {
  823. .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk_src",
  824. .parent_data = gcc_parent_data_29,
  825. .num_parents = ARRAY_SIZE(gcc_parent_data_29),
  826. .ops = &clk_regmap_mux_closest_ops,
  827. },
  828. },
  829. };
  830. static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipe_mux_clk_src = {
  831. .reg = 0xb80e0,
  832. .shift = 0,
  833. .width = 2,
  834. .parent_map = gcc_parent_map_31,
  835. .clkr = {
  836. .hw.init = &(const struct clk_init_data) {
  837. .name = "gcc_usb4_1_phy_pcie_pipe_mux_clk_src",
  838. .parent_data = gcc_parent_data_31,
  839. .num_parents = ARRAY_SIZE(gcc_parent_data_31),
  840. .ops = &clk_regmap_mux_closest_ops,
  841. },
  842. },
  843. };
  844. static struct clk_regmap_mux gcc_usb4_1_phy_rx0_clk_src = {
  845. .reg = 0xb8090,
  846. .shift = 0,
  847. .width = 2,
  848. .parent_map = gcc_parent_map_32,
  849. .clkr = {
  850. .hw.init = &(const struct clk_init_data) {
  851. .name = "gcc_usb4_1_phy_rx0_clk_src",
  852. .parent_data = gcc_parent_data_32,
  853. .num_parents = ARRAY_SIZE(gcc_parent_data_32),
  854. .ops = &clk_regmap_mux_closest_ops,
  855. },
  856. },
  857. };
  858. static struct clk_regmap_mux gcc_usb4_1_phy_rx1_clk_src = {
  859. .reg = 0xb809c,
  860. .shift = 0,
  861. .width = 2,
  862. .parent_map = gcc_parent_map_33,
  863. .clkr = {
  864. .hw.init = &(const struct clk_init_data) {
  865. .name = "gcc_usb4_1_phy_rx1_clk_src",
  866. .parent_data = gcc_parent_data_33,
  867. .num_parents = ARRAY_SIZE(gcc_parent_data_33),
  868. .ops = &clk_regmap_mux_closest_ops,
  869. },
  870. },
  871. };
  872. static struct clk_regmap_mux gcc_usb4_1_phy_sys_clk_src = {
  873. .reg = 0xb80c0,
  874. .shift = 0,
  875. .width = 2,
  876. .parent_map = gcc_parent_map_34,
  877. .clkr = {
  878. .hw.init = &(const struct clk_init_data) {
  879. .name = "gcc_usb4_1_phy_sys_clk_src",
  880. .parent_data = gcc_parent_data_34,
  881. .num_parents = ARRAY_SIZE(gcc_parent_data_34),
  882. .ops = &clk_regmap_mux_closest_ops,
  883. },
  884. },
  885. };
  886. static struct clk_regmap_mux gcc_usb4_phy_dp_clk_src = {
  887. .reg = 0x2a050,
  888. .shift = 0,
  889. .width = 2,
  890. .parent_map = gcc_parent_map_35,
  891. .clkr = {
  892. .hw.init = &(const struct clk_init_data) {
  893. .name = "gcc_usb4_phy_dp_clk_src",
  894. .parent_data = gcc_parent_data_35,
  895. .num_parents = ARRAY_SIZE(gcc_parent_data_35),
  896. .ops = &clk_regmap_mux_closest_ops,
  897. },
  898. },
  899. };
  900. static struct clk_regmap_mux gcc_usb4_phy_p2rr2p_pipe_clk_src = {
  901. .reg = 0x2a0b0,
  902. .shift = 0,
  903. .width = 2,
  904. .parent_map = gcc_parent_map_36,
  905. .clkr = {
  906. .hw.init = &(const struct clk_init_data) {
  907. .name = "gcc_usb4_phy_p2rr2p_pipe_clk_src",
  908. .parent_data = gcc_parent_data_36,
  909. .num_parents = ARRAY_SIZE(gcc_parent_data_36),
  910. .ops = &clk_regmap_mux_closest_ops,
  911. },
  912. },
  913. };
  914. static struct clk_regmap_mux gcc_usb4_phy_pcie_pipe_mux_clk_src = {
  915. .reg = 0x2a0e0,
  916. .shift = 0,
  917. .width = 2,
  918. .parent_map = gcc_parent_map_38,
  919. .clkr = {
  920. .hw.init = &(const struct clk_init_data) {
  921. .name = "gcc_usb4_phy_pcie_pipe_mux_clk_src",
  922. .parent_data = gcc_parent_data_38,
  923. .num_parents = ARRAY_SIZE(gcc_parent_data_38),
  924. .ops = &clk_regmap_mux_closest_ops,
  925. },
  926. },
  927. };
  928. static struct clk_regmap_mux gcc_usb4_phy_rx0_clk_src = {
  929. .reg = 0x2a090,
  930. .shift = 0,
  931. .width = 2,
  932. .parent_map = gcc_parent_map_39,
  933. .clkr = {
  934. .hw.init = &(const struct clk_init_data) {
  935. .name = "gcc_usb4_phy_rx0_clk_src",
  936. .parent_data = gcc_parent_data_39,
  937. .num_parents = ARRAY_SIZE(gcc_parent_data_39),
  938. .ops = &clk_regmap_mux_closest_ops,
  939. },
  940. },
  941. };
  942. static struct clk_regmap_mux gcc_usb4_phy_rx1_clk_src = {
  943. .reg = 0x2a09c,
  944. .shift = 0,
  945. .width = 2,
  946. .parent_map = gcc_parent_map_40,
  947. .clkr = {
  948. .hw.init = &(const struct clk_init_data) {
  949. .name = "gcc_usb4_phy_rx1_clk_src",
  950. .parent_data = gcc_parent_data_40,
  951. .num_parents = ARRAY_SIZE(gcc_parent_data_40),
  952. .ops = &clk_regmap_mux_closest_ops,
  953. },
  954. },
  955. };
  956. static struct clk_regmap_mux gcc_usb4_phy_sys_clk_src = {
  957. .reg = 0x2a0c0,
  958. .shift = 0,
  959. .width = 2,
  960. .parent_map = gcc_parent_map_41,
  961. .clkr = {
  962. .hw.init = &(const struct clk_init_data) {
  963. .name = "gcc_usb4_phy_sys_clk_src",
  964. .parent_data = gcc_parent_data_41,
  965. .num_parents = ARRAY_SIZE(gcc_parent_data_41),
  966. .ops = &clk_regmap_mux_closest_ops,
  967. },
  968. },
  969. };
  970. static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {
  971. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  972. F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
  973. F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0),
  974. { }
  975. };
  976. static struct clk_rcg2 gcc_emac0_ptp_clk_src = {
  977. .cmd_rcgr = 0xaa020,
  978. .mnd_width = 0,
  979. .hid_width = 5,
  980. .parent_map = gcc_parent_map_4,
  981. .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
  982. .clkr.hw.init = &(const struct clk_init_data) {
  983. .name = "gcc_emac0_ptp_clk_src",
  984. .parent_data = gcc_parent_data_4,
  985. .num_parents = ARRAY_SIZE(gcc_parent_data_4),
  986. .ops = &clk_rcg2_shared_ops,
  987. },
  988. };
  989. static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {
  990. F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
  991. F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
  992. F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0),
  993. { }
  994. };
  995. static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {
  996. .cmd_rcgr = 0xaa040,
  997. .mnd_width = 8,
  998. .hid_width = 5,
  999. .parent_map = gcc_parent_map_8,
  1000. .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
  1001. .clkr.hw.init = &(const struct clk_init_data) {
  1002. .name = "gcc_emac0_rgmii_clk_src",
  1003. .parent_data = gcc_parent_data_8,
  1004. .num_parents = ARRAY_SIZE(gcc_parent_data_8),
  1005. .ops = &clk_rcg2_shared_ops,
  1006. },
  1007. };
  1008. static struct clk_rcg2 gcc_emac1_ptp_clk_src = {
  1009. .cmd_rcgr = 0xba020,
  1010. .mnd_width = 0,
  1011. .hid_width = 5,
  1012. .parent_map = gcc_parent_map_4,
  1013. .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
  1014. .clkr.hw.init = &(const struct clk_init_data) {
  1015. .name = "gcc_emac1_ptp_clk_src",
  1016. .parent_data = gcc_parent_data_4,
  1017. .num_parents = ARRAY_SIZE(gcc_parent_data_4),
  1018. .ops = &clk_rcg2_shared_ops,
  1019. },
  1020. };
  1021. static struct clk_rcg2 gcc_emac1_rgmii_clk_src = {
  1022. .cmd_rcgr = 0xba040,
  1023. .mnd_width = 8,
  1024. .hid_width = 5,
  1025. .parent_map = gcc_parent_map_9,
  1026. .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
  1027. .clkr.hw.init = &(const struct clk_init_data) {
  1028. .name = "gcc_emac1_rgmii_clk_src",
  1029. .parent_data = gcc_parent_data_9,
  1030. .num_parents = ARRAY_SIZE(gcc_parent_data_9),
  1031. .ops = &clk_rcg2_shared_ops,
  1032. },
  1033. };
  1034. static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
  1035. F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
  1036. F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
  1037. F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
  1038. { }
  1039. };
  1040. static struct clk_rcg2 gcc_gp1_clk_src = {
  1041. .cmd_rcgr = 0x64004,
  1042. .mnd_width = 16,
  1043. .hid_width = 5,
  1044. .parent_map = gcc_parent_map_2,
  1045. .freq_tbl = ftbl_gcc_gp1_clk_src,
  1046. .clkr.hw.init = &(const struct clk_init_data) {
  1047. .name = "gcc_gp1_clk_src",
  1048. .parent_data = gcc_parent_data_2,
  1049. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  1050. .ops = &clk_rcg2_shared_ops,
  1051. },
  1052. };
  1053. static struct clk_rcg2 gcc_gp2_clk_src = {
  1054. .cmd_rcgr = 0x65004,
  1055. .mnd_width = 16,
  1056. .hid_width = 5,
  1057. .parent_map = gcc_parent_map_2,
  1058. .freq_tbl = ftbl_gcc_gp1_clk_src,
  1059. .clkr.hw.init = &(const struct clk_init_data) {
  1060. .name = "gcc_gp2_clk_src",
  1061. .parent_data = gcc_parent_data_2,
  1062. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  1063. .ops = &clk_rcg2_shared_ops,
  1064. },
  1065. };
  1066. static struct clk_rcg2 gcc_gp3_clk_src = {
  1067. .cmd_rcgr = 0x66004,
  1068. .mnd_width = 16,
  1069. .hid_width = 5,
  1070. .parent_map = gcc_parent_map_2,
  1071. .freq_tbl = ftbl_gcc_gp1_clk_src,
  1072. .clkr.hw.init = &(const struct clk_init_data) {
  1073. .name = "gcc_gp3_clk_src",
  1074. .parent_data = gcc_parent_data_2,
  1075. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  1076. .ops = &clk_rcg2_shared_ops,
  1077. },
  1078. };
  1079. static struct clk_rcg2 gcc_gp4_clk_src = {
  1080. .cmd_rcgr = 0xc2004,
  1081. .mnd_width = 16,
  1082. .hid_width = 5,
  1083. .parent_map = gcc_parent_map_2,
  1084. .freq_tbl = ftbl_gcc_gp1_clk_src,
  1085. .clkr.hw.init = &(const struct clk_init_data) {
  1086. .name = "gcc_gp4_clk_src",
  1087. .parent_data = gcc_parent_data_2,
  1088. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  1089. .ops = &clk_rcg2_shared_ops,
  1090. },
  1091. };
  1092. static struct clk_rcg2 gcc_gp5_clk_src = {
  1093. .cmd_rcgr = 0xc3004,
  1094. .mnd_width = 16,
  1095. .hid_width = 5,
  1096. .parent_map = gcc_parent_map_2,
  1097. .freq_tbl = ftbl_gcc_gp1_clk_src,
  1098. .clkr.hw.init = &(const struct clk_init_data) {
  1099. .name = "gcc_gp5_clk_src",
  1100. .parent_data = gcc_parent_data_2,
  1101. .num_parents = ARRAY_SIZE(gcc_parent_data_2),
  1102. .ops = &clk_rcg2_shared_ops,
  1103. },
  1104. };
  1105. static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
  1106. F(9600000, P_BI_TCXO, 2, 0, 0),
  1107. F(19200000, P_BI_TCXO, 1, 0, 0),
  1108. { }
  1109. };
  1110. static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
  1111. .cmd_rcgr = 0xa4054,
  1112. .mnd_width = 16,
  1113. .hid_width = 5,
  1114. .parent_map = gcc_parent_map_1,
  1115. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1116. .clkr.hw.init = &(const struct clk_init_data) {
  1117. .name = "gcc_pcie_0_aux_clk_src",
  1118. .parent_data = gcc_parent_data_1,
  1119. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1120. .ops = &clk_rcg2_shared_ops,
  1121. },
  1122. };
  1123. static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
  1124. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  1125. { }
  1126. };
  1127. static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
  1128. .cmd_rcgr = 0xa403c,
  1129. .mnd_width = 0,
  1130. .hid_width = 5,
  1131. .parent_map = gcc_parent_map_0,
  1132. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1133. .clkr.hw.init = &(const struct clk_init_data) {
  1134. .name = "gcc_pcie_0_phy_rchng_clk_src",
  1135. .parent_data = gcc_parent_data_0,
  1136. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1137. .ops = &clk_rcg2_shared_ops,
  1138. },
  1139. };
  1140. static const struct freq_tbl ftbl_gcc_pcie_1_aux_clk_src[] = {
  1141. F(19200000, P_BI_TCXO, 1, 0, 0),
  1142. { }
  1143. };
  1144. static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
  1145. .cmd_rcgr = 0x8d054,
  1146. .mnd_width = 16,
  1147. .hid_width = 5,
  1148. .parent_map = gcc_parent_map_1,
  1149. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1150. .clkr.hw.init = &(const struct clk_init_data) {
  1151. .name = "gcc_pcie_1_aux_clk_src",
  1152. .parent_data = gcc_parent_data_1,
  1153. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1154. .ops = &clk_rcg2_shared_ops,
  1155. },
  1156. };
  1157. static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
  1158. .cmd_rcgr = 0x8d03c,
  1159. .mnd_width = 0,
  1160. .hid_width = 5,
  1161. .parent_map = gcc_parent_map_0,
  1162. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1163. .clkr.hw.init = &(const struct clk_init_data) {
  1164. .name = "gcc_pcie_1_phy_rchng_clk_src",
  1165. .parent_data = gcc_parent_data_0,
  1166. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1167. .ops = &clk_rcg2_shared_ops,
  1168. },
  1169. };
  1170. static struct clk_rcg2 gcc_pcie_2a_aux_clk_src = {
  1171. .cmd_rcgr = 0x9d064,
  1172. .mnd_width = 16,
  1173. .hid_width = 5,
  1174. .parent_map = gcc_parent_map_1,
  1175. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1176. .clkr.hw.init = &(const struct clk_init_data) {
  1177. .name = "gcc_pcie_2a_aux_clk_src",
  1178. .parent_data = gcc_parent_data_1,
  1179. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1180. .ops = &clk_rcg2_shared_ops,
  1181. },
  1182. };
  1183. static struct clk_rcg2 gcc_pcie_2a_phy_rchng_clk_src = {
  1184. .cmd_rcgr = 0x9d044,
  1185. .mnd_width = 0,
  1186. .hid_width = 5,
  1187. .parent_map = gcc_parent_map_0,
  1188. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1189. .clkr.hw.init = &(const struct clk_init_data) {
  1190. .name = "gcc_pcie_2a_phy_rchng_clk_src",
  1191. .parent_data = gcc_parent_data_0,
  1192. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1193. .ops = &clk_rcg2_shared_ops,
  1194. },
  1195. };
  1196. static struct clk_rcg2 gcc_pcie_2b_aux_clk_src = {
  1197. .cmd_rcgr = 0x9e064,
  1198. .mnd_width = 16,
  1199. .hid_width = 5,
  1200. .parent_map = gcc_parent_map_1,
  1201. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1202. .clkr.hw.init = &(const struct clk_init_data) {
  1203. .name = "gcc_pcie_2b_aux_clk_src",
  1204. .parent_data = gcc_parent_data_1,
  1205. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1206. .ops = &clk_rcg2_shared_ops,
  1207. },
  1208. };
  1209. static struct clk_rcg2 gcc_pcie_2b_phy_rchng_clk_src = {
  1210. .cmd_rcgr = 0x9e044,
  1211. .mnd_width = 0,
  1212. .hid_width = 5,
  1213. .parent_map = gcc_parent_map_0,
  1214. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1215. .clkr.hw.init = &(const struct clk_init_data) {
  1216. .name = "gcc_pcie_2b_phy_rchng_clk_src",
  1217. .parent_data = gcc_parent_data_0,
  1218. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1219. .ops = &clk_rcg2_shared_ops,
  1220. },
  1221. };
  1222. static struct clk_rcg2 gcc_pcie_3a_aux_clk_src = {
  1223. .cmd_rcgr = 0xa0064,
  1224. .mnd_width = 16,
  1225. .hid_width = 5,
  1226. .parent_map = gcc_parent_map_1,
  1227. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1228. .clkr.hw.init = &(const struct clk_init_data) {
  1229. .name = "gcc_pcie_3a_aux_clk_src",
  1230. .parent_data = gcc_parent_data_1,
  1231. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1232. .ops = &clk_rcg2_shared_ops,
  1233. },
  1234. };
  1235. static struct clk_rcg2 gcc_pcie_3a_phy_rchng_clk_src = {
  1236. .cmd_rcgr = 0xa0044,
  1237. .mnd_width = 0,
  1238. .hid_width = 5,
  1239. .parent_map = gcc_parent_map_0,
  1240. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1241. .clkr.hw.init = &(const struct clk_init_data) {
  1242. .name = "gcc_pcie_3a_phy_rchng_clk_src",
  1243. .parent_data = gcc_parent_data_0,
  1244. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1245. .ops = &clk_rcg2_shared_ops,
  1246. },
  1247. };
  1248. static struct clk_rcg2 gcc_pcie_3b_aux_clk_src = {
  1249. .cmd_rcgr = 0xa2064,
  1250. .mnd_width = 16,
  1251. .hid_width = 5,
  1252. .parent_map = gcc_parent_map_1,
  1253. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1254. .clkr.hw.init = &(const struct clk_init_data) {
  1255. .name = "gcc_pcie_3b_aux_clk_src",
  1256. .parent_data = gcc_parent_data_1,
  1257. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1258. .ops = &clk_rcg2_shared_ops,
  1259. },
  1260. };
  1261. static struct clk_rcg2 gcc_pcie_3b_phy_rchng_clk_src = {
  1262. .cmd_rcgr = 0xa2044,
  1263. .mnd_width = 0,
  1264. .hid_width = 5,
  1265. .parent_map = gcc_parent_map_0,
  1266. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1267. .clkr.hw.init = &(const struct clk_init_data) {
  1268. .name = "gcc_pcie_3b_phy_rchng_clk_src",
  1269. .parent_data = gcc_parent_data_0,
  1270. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1271. .ops = &clk_rcg2_shared_ops,
  1272. },
  1273. };
  1274. static struct clk_rcg2 gcc_pcie_4_aux_clk_src = {
  1275. .cmd_rcgr = 0x6b064,
  1276. .mnd_width = 16,
  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_pcie_4_aux_clk_src",
  1282. .parent_data = gcc_parent_data_1,
  1283. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1284. .ops = &clk_rcg2_shared_ops,
  1285. },
  1286. };
  1287. static struct clk_rcg2 gcc_pcie_4_phy_rchng_clk_src = {
  1288. .cmd_rcgr = 0x6b044,
  1289. .mnd_width = 0,
  1290. .hid_width = 5,
  1291. .parent_map = gcc_parent_map_0,
  1292. .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
  1293. .clkr.hw.init = &(const struct clk_init_data) {
  1294. .name = "gcc_pcie_4_phy_rchng_clk_src",
  1295. .parent_data = gcc_parent_data_0,
  1296. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1297. .ops = &clk_rcg2_shared_ops,
  1298. },
  1299. };
  1300. static struct clk_rcg2 gcc_pcie_rscc_xo_clk_src = {
  1301. .cmd_rcgr = 0xae00c,
  1302. .mnd_width = 0,
  1303. .hid_width = 5,
  1304. .parent_map = gcc_parent_map_3,
  1305. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1306. .clkr.hw.init = &(const struct clk_init_data) {
  1307. .name = "gcc_pcie_rscc_xo_clk_src",
  1308. .parent_data = gcc_parent_data_3,
  1309. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1310. .ops = &clk_rcg2_shared_ops,
  1311. },
  1312. };
  1313. static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
  1314. F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
  1315. { }
  1316. };
  1317. static struct clk_rcg2 gcc_pdm2_clk_src = {
  1318. .cmd_rcgr = 0x33010,
  1319. .mnd_width = 0,
  1320. .hid_width = 5,
  1321. .parent_map = gcc_parent_map_0,
  1322. .freq_tbl = ftbl_gcc_pdm2_clk_src,
  1323. .clkr.hw.init = &(const struct clk_init_data) {
  1324. .name = "gcc_pdm2_clk_src",
  1325. .parent_data = gcc_parent_data_0,
  1326. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1327. .ops = &clk_rcg2_shared_ops,
  1328. },
  1329. };
  1330. static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
  1331. F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
  1332. F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
  1333. F(19200000, P_BI_TCXO, 1, 0, 0),
  1334. F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
  1335. F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
  1336. F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
  1337. F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
  1338. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1339. F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
  1340. F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
  1341. F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
  1342. { }
  1343. };
  1344. static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
  1345. .name = "gcc_qupv3_wrap0_s0_clk_src",
  1346. .parent_data = gcc_parent_data_0,
  1347. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1348. .flags = CLK_SET_RATE_PARENT,
  1349. .ops = &clk_rcg2_ops,
  1350. };
  1351. static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
  1352. .cmd_rcgr = 0x17148,
  1353. .mnd_width = 16,
  1354. .hid_width = 5,
  1355. .parent_map = gcc_parent_map_0,
  1356. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1357. .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
  1358. };
  1359. static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
  1360. .name = "gcc_qupv3_wrap0_s1_clk_src",
  1361. .parent_data = gcc_parent_data_0,
  1362. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1363. .flags = CLK_SET_RATE_PARENT,
  1364. .ops = &clk_rcg2_ops,
  1365. };
  1366. static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
  1367. .cmd_rcgr = 0x17278,
  1368. .mnd_width = 16,
  1369. .hid_width = 5,
  1370. .parent_map = gcc_parent_map_0,
  1371. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1372. .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
  1373. };
  1374. static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
  1375. .name = "gcc_qupv3_wrap0_s2_clk_src",
  1376. .parent_data = gcc_parent_data_0,
  1377. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1378. .flags = CLK_SET_RATE_PARENT,
  1379. .ops = &clk_rcg2_ops,
  1380. };
  1381. static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
  1382. .cmd_rcgr = 0x173a8,
  1383. .mnd_width = 16,
  1384. .hid_width = 5,
  1385. .parent_map = gcc_parent_map_0,
  1386. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1387. .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
  1388. };
  1389. static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
  1390. .name = "gcc_qupv3_wrap0_s3_clk_src",
  1391. .parent_data = gcc_parent_data_0,
  1392. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1393. .flags = CLK_SET_RATE_PARENT,
  1394. .ops = &clk_rcg2_ops,
  1395. };
  1396. static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
  1397. .cmd_rcgr = 0x174d8,
  1398. .mnd_width = 16,
  1399. .hid_width = 5,
  1400. .parent_map = gcc_parent_map_0,
  1401. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1402. .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
  1403. };
  1404. static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
  1405. .name = "gcc_qupv3_wrap0_s4_clk_src",
  1406. .parent_data = gcc_parent_data_0,
  1407. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1408. .flags = CLK_SET_RATE_PARENT,
  1409. .ops = &clk_rcg2_ops,
  1410. };
  1411. static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
  1412. .cmd_rcgr = 0x17608,
  1413. .mnd_width = 16,
  1414. .hid_width = 5,
  1415. .parent_map = gcc_parent_map_0,
  1416. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1417. .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
  1418. };
  1419. static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
  1420. .name = "gcc_qupv3_wrap0_s5_clk_src",
  1421. .parent_data = gcc_parent_data_0,
  1422. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1423. .flags = CLK_SET_RATE_PARENT,
  1424. .ops = &clk_rcg2_ops,
  1425. };
  1426. static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
  1427. .cmd_rcgr = 0x17738,
  1428. .mnd_width = 16,
  1429. .hid_width = 5,
  1430. .parent_map = gcc_parent_map_0,
  1431. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1432. .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
  1433. };
  1434. static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s6_clk_src[] = {
  1435. F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
  1436. F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
  1437. F(19200000, P_BI_TCXO, 1, 0, 0),
  1438. F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
  1439. F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
  1440. F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
  1441. F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
  1442. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1443. F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
  1444. F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
  1445. F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
  1446. { }
  1447. };
  1448. static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
  1449. .name = "gcc_qupv3_wrap0_s6_clk_src",
  1450. .parent_data = gcc_parent_data_0,
  1451. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1452. .flags = CLK_SET_RATE_PARENT,
  1453. .ops = &clk_rcg2_ops,
  1454. };
  1455. static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
  1456. .cmd_rcgr = 0x17868,
  1457. .mnd_width = 16,
  1458. .hid_width = 5,
  1459. .parent_map = gcc_parent_map_0,
  1460. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1461. .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
  1462. };
  1463. static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
  1464. .name = "gcc_qupv3_wrap0_s7_clk_src",
  1465. .parent_data = gcc_parent_data_0,
  1466. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1467. .flags = CLK_SET_RATE_PARENT,
  1468. .ops = &clk_rcg2_ops,
  1469. };
  1470. static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
  1471. .cmd_rcgr = 0x17998,
  1472. .mnd_width = 16,
  1473. .hid_width = 5,
  1474. .parent_map = gcc_parent_map_0,
  1475. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1476. .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
  1477. };
  1478. static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
  1479. .name = "gcc_qupv3_wrap1_s0_clk_src",
  1480. .parent_data = gcc_parent_data_0,
  1481. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1482. .flags = CLK_SET_RATE_PARENT,
  1483. .ops = &clk_rcg2_ops,
  1484. };
  1485. static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
  1486. .cmd_rcgr = 0x18148,
  1487. .mnd_width = 16,
  1488. .hid_width = 5,
  1489. .parent_map = gcc_parent_map_0,
  1490. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1491. .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
  1492. };
  1493. static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
  1494. .name = "gcc_qupv3_wrap1_s1_clk_src",
  1495. .parent_data = gcc_parent_data_0,
  1496. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1497. .flags = CLK_SET_RATE_PARENT,
  1498. .ops = &clk_rcg2_ops,
  1499. };
  1500. static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
  1501. .cmd_rcgr = 0x18278,
  1502. .mnd_width = 16,
  1503. .hid_width = 5,
  1504. .parent_map = gcc_parent_map_0,
  1505. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1506. .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
  1507. };
  1508. static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
  1509. .name = "gcc_qupv3_wrap1_s2_clk_src",
  1510. .parent_data = gcc_parent_data_0,
  1511. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1512. .flags = CLK_SET_RATE_PARENT,
  1513. .ops = &clk_rcg2_ops,
  1514. };
  1515. static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
  1516. .cmd_rcgr = 0x183a8,
  1517. .mnd_width = 16,
  1518. .hid_width = 5,
  1519. .parent_map = gcc_parent_map_0,
  1520. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1521. .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
  1522. };
  1523. static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
  1524. .name = "gcc_qupv3_wrap1_s3_clk_src",
  1525. .parent_data = gcc_parent_data_0,
  1526. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1527. .flags = CLK_SET_RATE_PARENT,
  1528. .ops = &clk_rcg2_ops,
  1529. };
  1530. static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
  1531. .cmd_rcgr = 0x184d8,
  1532. .mnd_width = 16,
  1533. .hid_width = 5,
  1534. .parent_map = gcc_parent_map_0,
  1535. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1536. .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
  1537. };
  1538. static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
  1539. .name = "gcc_qupv3_wrap1_s4_clk_src",
  1540. .parent_data = gcc_parent_data_0,
  1541. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1542. .flags = CLK_SET_RATE_PARENT,
  1543. .ops = &clk_rcg2_ops,
  1544. };
  1545. static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
  1546. .cmd_rcgr = 0x18608,
  1547. .mnd_width = 16,
  1548. .hid_width = 5,
  1549. .parent_map = gcc_parent_map_0,
  1550. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1551. .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
  1552. };
  1553. static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
  1554. .name = "gcc_qupv3_wrap1_s5_clk_src",
  1555. .parent_data = gcc_parent_data_0,
  1556. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1557. .flags = CLK_SET_RATE_PARENT,
  1558. .ops = &clk_rcg2_ops,
  1559. };
  1560. static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
  1561. .cmd_rcgr = 0x18738,
  1562. .mnd_width = 16,
  1563. .hid_width = 5,
  1564. .parent_map = gcc_parent_map_0,
  1565. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1566. .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
  1567. };
  1568. static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
  1569. .name = "gcc_qupv3_wrap1_s6_clk_src",
  1570. .parent_data = gcc_parent_data_0,
  1571. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1572. .flags = CLK_SET_RATE_PARENT,
  1573. .ops = &clk_rcg2_ops,
  1574. };
  1575. static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
  1576. .cmd_rcgr = 0x18868,
  1577. .mnd_width = 16,
  1578. .hid_width = 5,
  1579. .parent_map = gcc_parent_map_0,
  1580. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1581. .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
  1582. };
  1583. static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
  1584. .name = "gcc_qupv3_wrap1_s7_clk_src",
  1585. .parent_data = gcc_parent_data_0,
  1586. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1587. .flags = CLK_SET_RATE_PARENT,
  1588. .ops = &clk_rcg2_ops,
  1589. };
  1590. static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
  1591. .cmd_rcgr = 0x18998,
  1592. .mnd_width = 16,
  1593. .hid_width = 5,
  1594. .parent_map = gcc_parent_map_0,
  1595. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1596. .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
  1597. };
  1598. static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
  1599. .name = "gcc_qupv3_wrap2_s0_clk_src",
  1600. .parent_data = gcc_parent_data_0,
  1601. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1602. .flags = CLK_SET_RATE_PARENT,
  1603. .ops = &clk_rcg2_ops,
  1604. };
  1605. static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
  1606. .cmd_rcgr = 0x1e148,
  1607. .mnd_width = 16,
  1608. .hid_width = 5,
  1609. .parent_map = gcc_parent_map_0,
  1610. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1611. .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
  1612. };
  1613. static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
  1614. .name = "gcc_qupv3_wrap2_s1_clk_src",
  1615. .parent_data = gcc_parent_data_0,
  1616. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1617. .flags = CLK_SET_RATE_PARENT,
  1618. .ops = &clk_rcg2_ops,
  1619. };
  1620. static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
  1621. .cmd_rcgr = 0x1e278,
  1622. .mnd_width = 16,
  1623. .hid_width = 5,
  1624. .parent_map = gcc_parent_map_0,
  1625. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1626. .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
  1627. };
  1628. static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
  1629. .name = "gcc_qupv3_wrap2_s2_clk_src",
  1630. .parent_data = gcc_parent_data_0,
  1631. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1632. .flags = CLK_SET_RATE_PARENT,
  1633. .ops = &clk_rcg2_ops,
  1634. };
  1635. static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
  1636. .cmd_rcgr = 0x1e3a8,
  1637. .mnd_width = 16,
  1638. .hid_width = 5,
  1639. .parent_map = gcc_parent_map_0,
  1640. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1641. .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
  1642. };
  1643. static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
  1644. .name = "gcc_qupv3_wrap2_s3_clk_src",
  1645. .parent_data = gcc_parent_data_0,
  1646. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1647. .flags = CLK_SET_RATE_PARENT,
  1648. .ops = &clk_rcg2_ops,
  1649. };
  1650. static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
  1651. .cmd_rcgr = 0x1e4d8,
  1652. .mnd_width = 16,
  1653. .hid_width = 5,
  1654. .parent_map = gcc_parent_map_0,
  1655. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1656. .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
  1657. };
  1658. static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
  1659. .name = "gcc_qupv3_wrap2_s4_clk_src",
  1660. .parent_data = gcc_parent_data_0,
  1661. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1662. .flags = CLK_SET_RATE_PARENT,
  1663. .ops = &clk_rcg2_ops,
  1664. };
  1665. static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
  1666. .cmd_rcgr = 0x1e608,
  1667. .mnd_width = 16,
  1668. .hid_width = 5,
  1669. .parent_map = gcc_parent_map_0,
  1670. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1671. .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
  1672. };
  1673. static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
  1674. .name = "gcc_qupv3_wrap2_s5_clk_src",
  1675. .parent_data = gcc_parent_data_0,
  1676. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1677. .flags = CLK_SET_RATE_PARENT,
  1678. .ops = &clk_rcg2_ops,
  1679. };
  1680. static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
  1681. .cmd_rcgr = 0x1e738,
  1682. .mnd_width = 16,
  1683. .hid_width = 5,
  1684. .parent_map = gcc_parent_map_0,
  1685. .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
  1686. .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
  1687. };
  1688. static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
  1689. .name = "gcc_qupv3_wrap2_s6_clk_src",
  1690. .parent_data = gcc_parent_data_0,
  1691. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1692. .flags = CLK_SET_RATE_PARENT,
  1693. .ops = &clk_rcg2_ops,
  1694. };
  1695. static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
  1696. .cmd_rcgr = 0x1e868,
  1697. .mnd_width = 16,
  1698. .hid_width = 5,
  1699. .parent_map = gcc_parent_map_0,
  1700. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1701. .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
  1702. };
  1703. static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {
  1704. .name = "gcc_qupv3_wrap2_s7_clk_src",
  1705. .parent_data = gcc_parent_data_0,
  1706. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1707. .flags = CLK_SET_RATE_PARENT,
  1708. .ops = &clk_rcg2_ops,
  1709. };
  1710. static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {
  1711. .cmd_rcgr = 0x1e998,
  1712. .mnd_width = 16,
  1713. .hid_width = 5,
  1714. .parent_map = gcc_parent_map_0,
  1715. .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
  1716. .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,
  1717. };
  1718. static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
  1719. F(400000, P_BI_TCXO, 12, 1, 4),
  1720. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  1721. F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
  1722. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  1723. F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
  1724. { }
  1725. };
  1726. static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
  1727. .cmd_rcgr = 0x1400c,
  1728. .mnd_width = 8,
  1729. .hid_width = 5,
  1730. .parent_map = gcc_parent_map_15,
  1731. .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
  1732. .clkr.hw.init = &(const struct clk_init_data) {
  1733. .name = "gcc_sdcc2_apps_clk_src",
  1734. .parent_data = gcc_parent_data_15,
  1735. .num_parents = ARRAY_SIZE(gcc_parent_data_15),
  1736. .ops = &clk_rcg2_shared_ops,
  1737. },
  1738. };
  1739. static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
  1740. F(400000, P_BI_TCXO, 12, 1, 4),
  1741. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  1742. F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
  1743. { }
  1744. };
  1745. static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
  1746. .cmd_rcgr = 0x1600c,
  1747. .mnd_width = 8,
  1748. .hid_width = 5,
  1749. .parent_map = gcc_parent_map_0,
  1750. .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
  1751. .clkr.hw.init = &(const struct clk_init_data) {
  1752. .name = "gcc_sdcc4_apps_clk_src",
  1753. .parent_data = gcc_parent_data_0,
  1754. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1755. .ops = &clk_rcg2_shared_ops,
  1756. },
  1757. };
  1758. static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
  1759. F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
  1760. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1761. F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
  1762. F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
  1763. { }
  1764. };
  1765. static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
  1766. .cmd_rcgr = 0x75024,
  1767. .mnd_width = 8,
  1768. .hid_width = 5,
  1769. .parent_map = gcc_parent_map_0,
  1770. .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
  1771. .clkr.hw.init = &(const struct clk_init_data) {
  1772. .name = "gcc_ufs_card_axi_clk_src",
  1773. .parent_data = gcc_parent_data_0,
  1774. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1775. .ops = &clk_rcg2_shared_ops,
  1776. },
  1777. };
  1778. static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
  1779. F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
  1780. F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
  1781. F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
  1782. { }
  1783. };
  1784. static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
  1785. .cmd_rcgr = 0x7506c,
  1786. .mnd_width = 0,
  1787. .hid_width = 5,
  1788. .parent_map = gcc_parent_map_0,
  1789. .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
  1790. .clkr.hw.init = &(const struct clk_init_data) {
  1791. .name = "gcc_ufs_card_ice_core_clk_src",
  1792. .parent_data = gcc_parent_data_0,
  1793. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1794. .ops = &clk_rcg2_shared_ops,
  1795. },
  1796. };
  1797. static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
  1798. .cmd_rcgr = 0x750a0,
  1799. .mnd_width = 0,
  1800. .hid_width = 5,
  1801. .parent_map = gcc_parent_map_3,
  1802. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1803. .clkr.hw.init = &(const struct clk_init_data) {
  1804. .name = "gcc_ufs_card_phy_aux_clk_src",
  1805. .parent_data = gcc_parent_data_3,
  1806. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1807. .ops = &clk_rcg2_shared_ops,
  1808. },
  1809. };
  1810. static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
  1811. .cmd_rcgr = 0x75084,
  1812. .mnd_width = 0,
  1813. .hid_width = 5,
  1814. .parent_map = gcc_parent_map_0,
  1815. .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
  1816. .clkr.hw.init = &(const struct clk_init_data) {
  1817. .name = "gcc_ufs_card_unipro_core_clk_src",
  1818. .parent_data = gcc_parent_data_0,
  1819. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1820. .ops = &clk_rcg2_shared_ops,
  1821. },
  1822. };
  1823. static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
  1824. .cmd_rcgr = 0x77024,
  1825. .mnd_width = 8,
  1826. .hid_width = 5,
  1827. .parent_map = gcc_parent_map_0,
  1828. .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
  1829. .clkr.hw.init = &(const struct clk_init_data) {
  1830. .name = "gcc_ufs_phy_axi_clk_src",
  1831. .parent_data = gcc_parent_data_0,
  1832. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1833. .ops = &clk_rcg2_shared_ops,
  1834. },
  1835. };
  1836. static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
  1837. .cmd_rcgr = 0x7706c,
  1838. .mnd_width = 0,
  1839. .hid_width = 5,
  1840. .parent_map = gcc_parent_map_0,
  1841. .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
  1842. .clkr.hw.init = &(const struct clk_init_data) {
  1843. .name = "gcc_ufs_phy_ice_core_clk_src",
  1844. .parent_data = gcc_parent_data_0,
  1845. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1846. .ops = &clk_rcg2_shared_ops,
  1847. },
  1848. };
  1849. static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
  1850. .cmd_rcgr = 0x770a0,
  1851. .mnd_width = 0,
  1852. .hid_width = 5,
  1853. .parent_map = gcc_parent_map_3,
  1854. .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
  1855. .clkr.hw.init = &(const struct clk_init_data) {
  1856. .name = "gcc_ufs_phy_phy_aux_clk_src",
  1857. .parent_data = gcc_parent_data_3,
  1858. .num_parents = ARRAY_SIZE(gcc_parent_data_3),
  1859. .ops = &clk_rcg2_shared_ops,
  1860. },
  1861. };
  1862. static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
  1863. .cmd_rcgr = 0x77084,
  1864. .mnd_width = 0,
  1865. .hid_width = 5,
  1866. .parent_map = gcc_parent_map_0,
  1867. .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
  1868. .clkr.hw.init = &(const struct clk_init_data) {
  1869. .name = "gcc_ufs_phy_unipro_core_clk_src",
  1870. .parent_data = gcc_parent_data_0,
  1871. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1872. .ops = &clk_rcg2_shared_ops,
  1873. },
  1874. };
  1875. static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
  1876. F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
  1877. F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
  1878. F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
  1879. F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
  1880. { }
  1881. };
  1882. static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
  1883. .cmd_rcgr = 0xab020,
  1884. .mnd_width = 8,
  1885. .hid_width = 5,
  1886. .parent_map = gcc_parent_map_0,
  1887. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1888. .clkr.hw.init = &(const struct clk_init_data) {
  1889. .name = "gcc_usb30_mp_master_clk_src",
  1890. .parent_data = gcc_parent_data_0,
  1891. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1892. .ops = &clk_rcg2_shared_ops,
  1893. },
  1894. };
  1895. static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
  1896. .cmd_rcgr = 0xab038,
  1897. .mnd_width = 0,
  1898. .hid_width = 5,
  1899. .parent_map = gcc_parent_map_0,
  1900. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1901. .clkr.hw.init = &(const struct clk_init_data) {
  1902. .name = "gcc_usb30_mp_mock_utmi_clk_src",
  1903. .parent_data = gcc_parent_data_0,
  1904. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1905. .ops = &clk_rcg2_shared_ops,
  1906. },
  1907. };
  1908. static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
  1909. .cmd_rcgr = 0xf020,
  1910. .mnd_width = 8,
  1911. .hid_width = 5,
  1912. .parent_map = gcc_parent_map_0,
  1913. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1914. .clkr.hw.init = &(const struct clk_init_data) {
  1915. .name = "gcc_usb30_prim_master_clk_src",
  1916. .parent_data = gcc_parent_data_0,
  1917. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1918. .ops = &clk_rcg2_shared_ops,
  1919. },
  1920. };
  1921. static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
  1922. .cmd_rcgr = 0xf038,
  1923. .mnd_width = 0,
  1924. .hid_width = 5,
  1925. .parent_map = gcc_parent_map_0,
  1926. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1927. .clkr.hw.init = &(const struct clk_init_data) {
  1928. .name = "gcc_usb30_prim_mock_utmi_clk_src",
  1929. .parent_data = gcc_parent_data_0,
  1930. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1931. .ops = &clk_rcg2_shared_ops,
  1932. },
  1933. };
  1934. static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
  1935. .cmd_rcgr = 0x10020,
  1936. .mnd_width = 8,
  1937. .hid_width = 5,
  1938. .parent_map = gcc_parent_map_0,
  1939. .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
  1940. .clkr.hw.init = &(const struct clk_init_data) {
  1941. .name = "gcc_usb30_sec_master_clk_src",
  1942. .parent_data = gcc_parent_data_0,
  1943. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1944. .ops = &clk_rcg2_shared_ops,
  1945. },
  1946. };
  1947. static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
  1948. .cmd_rcgr = 0x10038,
  1949. .mnd_width = 0,
  1950. .hid_width = 5,
  1951. .parent_map = gcc_parent_map_0,
  1952. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1953. .clkr.hw.init = &(const struct clk_init_data) {
  1954. .name = "gcc_usb30_sec_mock_utmi_clk_src",
  1955. .parent_data = gcc_parent_data_0,
  1956. .num_parents = ARRAY_SIZE(gcc_parent_data_0),
  1957. .ops = &clk_rcg2_shared_ops,
  1958. },
  1959. };
  1960. static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
  1961. .cmd_rcgr = 0xab06c,
  1962. .mnd_width = 0,
  1963. .hid_width = 5,
  1964. .parent_map = gcc_parent_map_1,
  1965. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1966. .clkr.hw.init = &(const struct clk_init_data) {
  1967. .name = "gcc_usb3_mp_phy_aux_clk_src",
  1968. .parent_data = gcc_parent_data_1,
  1969. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1970. .ops = &clk_rcg2_shared_ops,
  1971. },
  1972. };
  1973. static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
  1974. .cmd_rcgr = 0xf068,
  1975. .mnd_width = 0,
  1976. .hid_width = 5,
  1977. .parent_map = gcc_parent_map_1,
  1978. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1979. .clkr.hw.init = &(const struct clk_init_data) {
  1980. .name = "gcc_usb3_prim_phy_aux_clk_src",
  1981. .parent_data = gcc_parent_data_1,
  1982. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1983. .ops = &clk_rcg2_shared_ops,
  1984. },
  1985. };
  1986. static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
  1987. .cmd_rcgr = 0x10068,
  1988. .mnd_width = 0,
  1989. .hid_width = 5,
  1990. .parent_map = gcc_parent_map_1,
  1991. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  1992. .clkr.hw.init = &(const struct clk_init_data) {
  1993. .name = "gcc_usb3_sec_phy_aux_clk_src",
  1994. .parent_data = gcc_parent_data_1,
  1995. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  1996. .ops = &clk_rcg2_shared_ops,
  1997. },
  1998. };
  1999. static const struct freq_tbl ftbl_gcc_usb4_1_master_clk_src[] = {
  2000. F(85714286, P_GCC_GPLL0_OUT_EVEN, 3.5, 0, 0),
  2001. F(175000000, P_GCC_GPLL8_OUT_MAIN, 4, 0, 0),
  2002. F(350000000, P_GCC_GPLL8_OUT_MAIN, 2, 0, 0),
  2003. { }
  2004. };
  2005. static struct clk_rcg2 gcc_usb4_1_master_clk_src = {
  2006. .cmd_rcgr = 0xb8018,
  2007. .mnd_width = 8,
  2008. .hid_width = 5,
  2009. .parent_map = gcc_parent_map_5,
  2010. .freq_tbl = ftbl_gcc_usb4_1_master_clk_src,
  2011. .clkr.hw.init = &(const struct clk_init_data) {
  2012. .name = "gcc_usb4_1_master_clk_src",
  2013. .parent_data = gcc_parent_data_5,
  2014. .num_parents = ARRAY_SIZE(gcc_parent_data_5),
  2015. .ops = &clk_rcg2_shared_ops,
  2016. },
  2017. };
  2018. static const struct freq_tbl ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src[] = {
  2019. F(19200000, P_BI_TCXO, 1, 0, 0),
  2020. F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
  2021. F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0),
  2022. { }
  2023. };
  2024. static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src = {
  2025. .cmd_rcgr = 0xb80c4,
  2026. .mnd_width = 0,
  2027. .hid_width = 5,
  2028. .parent_map = gcc_parent_map_6,
  2029. .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src,
  2030. .clkr.hw.init = &(const struct clk_init_data) {
  2031. .name = "gcc_usb4_1_phy_pcie_pipe_clk_src",
  2032. .parent_data = gcc_parent_data_6,
  2033. .num_parents = ARRAY_SIZE(gcc_parent_data_6),
  2034. .ops = &clk_rcg2_shared_ops,
  2035. },
  2036. };
  2037. static struct clk_rcg2 gcc_usb4_1_sb_if_clk_src = {
  2038. .cmd_rcgr = 0xb8070,
  2039. .mnd_width = 0,
  2040. .hid_width = 5,
  2041. .parent_map = gcc_parent_map_1,
  2042. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  2043. .clkr.hw.init = &(const struct clk_init_data) {
  2044. .name = "gcc_usb4_1_sb_if_clk_src",
  2045. .parent_data = gcc_parent_data_1,
  2046. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  2047. .ops = &clk_rcg2_shared_ops,
  2048. },
  2049. };
  2050. static const struct freq_tbl ftbl_gcc_usb4_1_tmu_clk_src[] = {
  2051. F(19200000, P_BI_TCXO, 1, 0, 0),
  2052. F(250000000, P_GCC_GPLL2_OUT_MAIN, 4, 0, 0),
  2053. { }
  2054. };
  2055. static struct clk_rcg2 gcc_usb4_1_tmu_clk_src = {
  2056. .cmd_rcgr = 0xb8054,
  2057. .mnd_width = 0,
  2058. .hid_width = 5,
  2059. .parent_map = gcc_parent_map_7,
  2060. .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src,
  2061. .clkr.hw.init = &(const struct clk_init_data) {
  2062. .name = "gcc_usb4_1_tmu_clk_src",
  2063. .parent_data = gcc_parent_data_7,
  2064. .num_parents = ARRAY_SIZE(gcc_parent_data_7),
  2065. .ops = &clk_rcg2_shared_ops,
  2066. },
  2067. };
  2068. static struct clk_rcg2 gcc_usb4_master_clk_src = {
  2069. .cmd_rcgr = 0x2a018,
  2070. .mnd_width = 8,
  2071. .hid_width = 5,
  2072. .parent_map = gcc_parent_map_5,
  2073. .freq_tbl = ftbl_gcc_usb4_1_master_clk_src,
  2074. .clkr.hw.init = &(const struct clk_init_data) {
  2075. .name = "gcc_usb4_master_clk_src",
  2076. .parent_data = gcc_parent_data_5,
  2077. .num_parents = ARRAY_SIZE(gcc_parent_data_5),
  2078. .ops = &clk_rcg2_shared_ops,
  2079. },
  2080. };
  2081. static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src = {
  2082. .cmd_rcgr = 0x2a0c4,
  2083. .mnd_width = 0,
  2084. .hid_width = 5,
  2085. .parent_map = gcc_parent_map_6,
  2086. .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src,
  2087. .clkr.hw.init = &(const struct clk_init_data) {
  2088. .name = "gcc_usb4_phy_pcie_pipe_clk_src",
  2089. .parent_data = gcc_parent_data_6,
  2090. .num_parents = ARRAY_SIZE(gcc_parent_data_6),
  2091. .ops = &clk_rcg2_shared_ops,
  2092. },
  2093. };
  2094. static struct clk_rcg2 gcc_usb4_sb_if_clk_src = {
  2095. .cmd_rcgr = 0x2a070,
  2096. .mnd_width = 0,
  2097. .hid_width = 5,
  2098. .parent_map = gcc_parent_map_1,
  2099. .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
  2100. .clkr.hw.init = &(const struct clk_init_data) {
  2101. .name = "gcc_usb4_sb_if_clk_src",
  2102. .parent_data = gcc_parent_data_1,
  2103. .num_parents = ARRAY_SIZE(gcc_parent_data_1),
  2104. .ops = &clk_rcg2_shared_ops,
  2105. },
  2106. };
  2107. static struct clk_rcg2 gcc_usb4_tmu_clk_src = {
  2108. .cmd_rcgr = 0x2a054,
  2109. .mnd_width = 0,
  2110. .hid_width = 5,
  2111. .parent_map = gcc_parent_map_7,
  2112. .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src,
  2113. .clkr.hw.init = &(const struct clk_init_data) {
  2114. .name = "gcc_usb4_tmu_clk_src",
  2115. .parent_data = gcc_parent_data_7,
  2116. .num_parents = ARRAY_SIZE(gcc_parent_data_7),
  2117. .ops = &clk_rcg2_shared_ops,
  2118. },
  2119. };
  2120. static struct clk_regmap_div gcc_pcie_2a_pipe_div_clk_src = {
  2121. .reg = 0x9d060,
  2122. .shift = 0,
  2123. .width = 4,
  2124. .clkr.hw.init = &(const struct clk_init_data) {
  2125. .name = "gcc_pcie_2a_pipe_div_clk_src",
  2126. .parent_hws = (const struct clk_hw*[]){
  2127. &gcc_pcie_2a_pipe_clk_src.clkr.hw,
  2128. },
  2129. .num_parents = 1,
  2130. .flags = CLK_SET_RATE_PARENT,
  2131. .ops = &clk_regmap_div_ro_ops,
  2132. },
  2133. };
  2134. static struct clk_regmap_div gcc_pcie_2b_pipe_div_clk_src = {
  2135. .reg = 0x9e060,
  2136. .shift = 0,
  2137. .width = 4,
  2138. .clkr.hw.init = &(const struct clk_init_data) {
  2139. .name = "gcc_pcie_2b_pipe_div_clk_src",
  2140. .parent_hws = (const struct clk_hw*[]){
  2141. &gcc_pcie_2b_pipe_clk_src.clkr.hw,
  2142. },
  2143. .num_parents = 1,
  2144. .flags = CLK_SET_RATE_PARENT,
  2145. .ops = &clk_regmap_div_ro_ops,
  2146. },
  2147. };
  2148. static struct clk_regmap_div gcc_pcie_3a_pipe_div_clk_src = {
  2149. .reg = 0xa0060,
  2150. .shift = 0,
  2151. .width = 4,
  2152. .clkr.hw.init = &(const struct clk_init_data) {
  2153. .name = "gcc_pcie_3a_pipe_div_clk_src",
  2154. .parent_hws = (const struct clk_hw*[]){
  2155. &gcc_pcie_3a_pipe_clk_src.clkr.hw,
  2156. },
  2157. .num_parents = 1,
  2158. .flags = CLK_SET_RATE_PARENT,
  2159. .ops = &clk_regmap_div_ro_ops,
  2160. },
  2161. };
  2162. static struct clk_regmap_div gcc_pcie_3b_pipe_div_clk_src = {
  2163. .reg = 0xa2060,
  2164. .shift = 0,
  2165. .width = 4,
  2166. .clkr.hw.init = &(const struct clk_init_data) {
  2167. .name = "gcc_pcie_3b_pipe_div_clk_src",
  2168. .parent_hws = (const struct clk_hw*[]){
  2169. &gcc_pcie_3b_pipe_clk_src.clkr.hw,
  2170. },
  2171. .num_parents = 1,
  2172. .flags = CLK_SET_RATE_PARENT,
  2173. .ops = &clk_regmap_div_ro_ops,
  2174. },
  2175. };
  2176. static struct clk_regmap_div gcc_pcie_4_pipe_div_clk_src = {
  2177. .reg = 0x6b060,
  2178. .shift = 0,
  2179. .width = 4,
  2180. .clkr.hw.init = &(const struct clk_init_data) {
  2181. .name = "gcc_pcie_4_pipe_div_clk_src",
  2182. .parent_hws = (const struct clk_hw*[]){
  2183. &gcc_pcie_4_pipe_clk_src.clkr.hw,
  2184. },
  2185. .num_parents = 1,
  2186. .flags = CLK_SET_RATE_PARENT,
  2187. .ops = &clk_regmap_div_ro_ops,
  2188. },
  2189. };
  2190. static struct clk_regmap_div gcc_qupv3_wrap0_s4_div_clk_src = {
  2191. .reg = 0x17ac8,
  2192. .shift = 0,
  2193. .width = 4,
  2194. .clkr.hw.init = &(const struct clk_init_data) {
  2195. .name = "gcc_qupv3_wrap0_s4_div_clk_src",
  2196. .parent_hws = (const struct clk_hw*[]){
  2197. &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
  2198. },
  2199. .num_parents = 1,
  2200. .flags = CLK_SET_RATE_PARENT,
  2201. .ops = &clk_regmap_div_ro_ops,
  2202. },
  2203. };
  2204. static struct clk_regmap_div gcc_qupv3_wrap1_s4_div_clk_src = {
  2205. .reg = 0x18ac8,
  2206. .shift = 0,
  2207. .width = 4,
  2208. .clkr.hw.init = &(const struct clk_init_data) {
  2209. .name = "gcc_qupv3_wrap1_s4_div_clk_src",
  2210. .parent_hws = (const struct clk_hw*[]){
  2211. &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
  2212. },
  2213. .num_parents = 1,
  2214. .flags = CLK_SET_RATE_PARENT,
  2215. .ops = &clk_regmap_div_ro_ops,
  2216. },
  2217. };
  2218. static struct clk_regmap_div gcc_qupv3_wrap2_s4_div_clk_src = {
  2219. .reg = 0x1eac8,
  2220. .shift = 0,
  2221. .width = 4,
  2222. .clkr.hw.init = &(const struct clk_init_data) {
  2223. .name = "gcc_qupv3_wrap2_s4_div_clk_src",
  2224. .parent_hws = (const struct clk_hw*[]){
  2225. &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
  2226. },
  2227. .num_parents = 1,
  2228. .flags = CLK_SET_RATE_PARENT,
  2229. .ops = &clk_regmap_div_ro_ops,
  2230. },
  2231. };
  2232. static struct clk_regmap_div gcc_usb30_mp_mock_utmi_postdiv_clk_src = {
  2233. .reg = 0xab050,
  2234. .shift = 0,
  2235. .width = 4,
  2236. .clkr.hw.init = &(const struct clk_init_data) {
  2237. .name = "gcc_usb30_mp_mock_utmi_postdiv_clk_src",
  2238. .parent_hws = (const struct clk_hw*[]){
  2239. &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw,
  2240. },
  2241. .num_parents = 1,
  2242. .flags = CLK_SET_RATE_PARENT,
  2243. .ops = &clk_regmap_div_ro_ops,
  2244. },
  2245. };
  2246. static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
  2247. .reg = 0xf050,
  2248. .shift = 0,
  2249. .width = 4,
  2250. .clkr.hw.init = &(const struct clk_init_data) {
  2251. .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
  2252. .parent_hws = (const struct clk_hw*[]){
  2253. &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
  2254. },
  2255. .num_parents = 1,
  2256. .flags = CLK_SET_RATE_PARENT,
  2257. .ops = &clk_regmap_div_ro_ops,
  2258. },
  2259. };
  2260. static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {
  2261. .reg = 0x10050,
  2262. .shift = 0,
  2263. .width = 4,
  2264. .clkr.hw.init = &(const struct clk_init_data) {
  2265. .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
  2266. .parent_hws = (const struct clk_hw*[]){
  2267. &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
  2268. },
  2269. .num_parents = 1,
  2270. .flags = CLK_SET_RATE_PARENT,
  2271. .ops = &clk_regmap_div_ro_ops,
  2272. },
  2273. };
  2274. static struct clk_branch gcc_aggre_noc_pcie0_tunnel_axi_clk = {
  2275. .halt_reg = 0xa41a8,
  2276. .halt_check = BRANCH_HALT_SKIP,
  2277. .hwcg_reg = 0xa41a8,
  2278. .hwcg_bit = 1,
  2279. .clkr = {
  2280. .enable_reg = 0x52018,
  2281. .enable_mask = BIT(14),
  2282. .hw.init = &(const struct clk_init_data) {
  2283. .name = "gcc_aggre_noc_pcie0_tunnel_axi_clk",
  2284. .ops = &clk_branch2_ops,
  2285. },
  2286. },
  2287. };
  2288. static struct clk_branch gcc_aggre_noc_pcie1_tunnel_axi_clk = {
  2289. .halt_reg = 0x8d07c,
  2290. .halt_check = BRANCH_HALT_SKIP,
  2291. .hwcg_reg = 0x8d07c,
  2292. .hwcg_bit = 1,
  2293. .clkr = {
  2294. .enable_reg = 0x52018,
  2295. .enable_mask = BIT(21),
  2296. .hw.init = &(const struct clk_init_data) {
  2297. .name = "gcc_aggre_noc_pcie1_tunnel_axi_clk",
  2298. .ops = &clk_branch2_ops,
  2299. },
  2300. },
  2301. };
  2302. static struct clk_branch gcc_aggre_noc_pcie_4_axi_clk = {
  2303. .halt_reg = 0x6b1b8,
  2304. .halt_check = BRANCH_HALT_SKIP,
  2305. .hwcg_reg = 0x6b1b8,
  2306. .hwcg_bit = 1,
  2307. .clkr = {
  2308. .enable_reg = 0x52000,
  2309. .enable_mask = BIT(12),
  2310. .hw.init = &(const struct clk_init_data) {
  2311. .name = "gcc_aggre_noc_pcie_4_axi_clk",
  2312. .ops = &clk_branch2_ops,
  2313. },
  2314. },
  2315. };
  2316. static struct clk_branch gcc_aggre_noc_pcie_south_sf_axi_clk = {
  2317. .halt_reg = 0xbf13c,
  2318. .halt_check = BRANCH_HALT_SKIP,
  2319. .hwcg_reg = 0xbf13c,
  2320. .hwcg_bit = 1,
  2321. .clkr = {
  2322. .enable_reg = 0x52018,
  2323. .enable_mask = BIT(13),
  2324. .hw.init = &(const struct clk_init_data) {
  2325. .name = "gcc_aggre_noc_pcie_south_sf_axi_clk",
  2326. .ops = &clk_branch2_ops,
  2327. },
  2328. },
  2329. };
  2330. static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
  2331. .halt_reg = 0x750cc,
  2332. .halt_check = BRANCH_HALT_VOTED,
  2333. .hwcg_reg = 0x750cc,
  2334. .hwcg_bit = 1,
  2335. .clkr = {
  2336. .enable_reg = 0x750cc,
  2337. .enable_mask = BIT(0),
  2338. .hw.init = &(const struct clk_init_data) {
  2339. .name = "gcc_aggre_ufs_card_axi_clk",
  2340. .parent_hws = (const struct clk_hw*[]){
  2341. &gcc_ufs_card_axi_clk_src.clkr.hw,
  2342. },
  2343. .num_parents = 1,
  2344. .flags = CLK_SET_RATE_PARENT,
  2345. .ops = &clk_branch2_ops,
  2346. },
  2347. },
  2348. };
  2349. static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
  2350. .halt_reg = 0x750cc,
  2351. .halt_check = BRANCH_HALT_VOTED,
  2352. .hwcg_reg = 0x750cc,
  2353. .hwcg_bit = 1,
  2354. .clkr = {
  2355. .enable_reg = 0x750cc,
  2356. .enable_mask = BIT(1),
  2357. .hw.init = &(const struct clk_init_data) {
  2358. .name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
  2359. .parent_hws = (const struct clk_hw*[]){
  2360. &gcc_ufs_card_axi_clk_src.clkr.hw,
  2361. },
  2362. .num_parents = 1,
  2363. .flags = CLK_SET_RATE_PARENT,
  2364. .ops = &clk_branch2_ops,
  2365. },
  2366. },
  2367. };
  2368. static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
  2369. .halt_reg = 0x770cc,
  2370. .halt_check = BRANCH_HALT_VOTED,
  2371. .hwcg_reg = 0x770cc,
  2372. .hwcg_bit = 1,
  2373. .clkr = {
  2374. .enable_reg = 0x770cc,
  2375. .enable_mask = BIT(0),
  2376. .hw.init = &(const struct clk_init_data) {
  2377. .name = "gcc_aggre_ufs_phy_axi_clk",
  2378. .parent_hws = (const struct clk_hw*[]){
  2379. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  2380. },
  2381. .num_parents = 1,
  2382. .flags = CLK_SET_RATE_PARENT,
  2383. .ops = &clk_branch2_ops,
  2384. },
  2385. },
  2386. };
  2387. static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
  2388. .halt_reg = 0x770cc,
  2389. .halt_check = BRANCH_HALT_VOTED,
  2390. .hwcg_reg = 0x770cc,
  2391. .hwcg_bit = 1,
  2392. .clkr = {
  2393. .enable_reg = 0x770cc,
  2394. .enable_mask = BIT(1),
  2395. .hw.init = &(const struct clk_init_data) {
  2396. .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
  2397. .parent_hws = (const struct clk_hw*[]){
  2398. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  2399. },
  2400. .num_parents = 1,
  2401. .flags = CLK_SET_RATE_PARENT,
  2402. .ops = &clk_branch2_ops,
  2403. },
  2404. },
  2405. };
  2406. static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
  2407. .halt_reg = 0xab084,
  2408. .halt_check = BRANCH_HALT_VOTED,
  2409. .hwcg_reg = 0xab084,
  2410. .hwcg_bit = 1,
  2411. .clkr = {
  2412. .enable_reg = 0xab084,
  2413. .enable_mask = BIT(0),
  2414. .hw.init = &(const struct clk_init_data) {
  2415. .name = "gcc_aggre_usb3_mp_axi_clk",
  2416. .parent_hws = (const struct clk_hw*[]){
  2417. &gcc_usb30_mp_master_clk_src.clkr.hw,
  2418. },
  2419. .num_parents = 1,
  2420. .flags = CLK_SET_RATE_PARENT,
  2421. .ops = &clk_branch2_ops,
  2422. },
  2423. },
  2424. };
  2425. static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
  2426. .halt_reg = 0xf080,
  2427. .halt_check = BRANCH_HALT_VOTED,
  2428. .hwcg_reg = 0xf080,
  2429. .hwcg_bit = 1,
  2430. .clkr = {
  2431. .enable_reg = 0xf080,
  2432. .enable_mask = BIT(0),
  2433. .hw.init = &(const struct clk_init_data) {
  2434. .name = "gcc_aggre_usb3_prim_axi_clk",
  2435. .parent_hws = (const struct clk_hw*[]){
  2436. &gcc_usb30_prim_master_clk_src.clkr.hw,
  2437. },
  2438. .num_parents = 1,
  2439. .flags = CLK_SET_RATE_PARENT,
  2440. .ops = &clk_branch2_ops,
  2441. },
  2442. },
  2443. };
  2444. static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
  2445. .halt_reg = 0x10080,
  2446. .halt_check = BRANCH_HALT_VOTED,
  2447. .hwcg_reg = 0x10080,
  2448. .hwcg_bit = 1,
  2449. .clkr = {
  2450. .enable_reg = 0x10080,
  2451. .enable_mask = BIT(0),
  2452. .hw.init = &(const struct clk_init_data) {
  2453. .name = "gcc_aggre_usb3_sec_axi_clk",
  2454. .parent_hws = (const struct clk_hw*[]){
  2455. &gcc_usb30_sec_master_clk_src.clkr.hw,
  2456. },
  2457. .num_parents = 1,
  2458. .flags = CLK_SET_RATE_PARENT,
  2459. .ops = &clk_branch2_ops,
  2460. },
  2461. },
  2462. };
  2463. static struct clk_branch gcc_aggre_usb4_1_axi_clk = {
  2464. .halt_reg = 0xb80e4,
  2465. .halt_check = BRANCH_HALT_VOTED,
  2466. .hwcg_reg = 0xb80e4,
  2467. .hwcg_bit = 1,
  2468. .clkr = {
  2469. .enable_reg = 0xb80e4,
  2470. .enable_mask = BIT(0),
  2471. .hw.init = &(const struct clk_init_data) {
  2472. .name = "gcc_aggre_usb4_1_axi_clk",
  2473. .parent_hws = (const struct clk_hw*[]){
  2474. &gcc_usb4_1_master_clk_src.clkr.hw,
  2475. },
  2476. .num_parents = 1,
  2477. .flags = CLK_SET_RATE_PARENT,
  2478. .ops = &clk_branch2_ops,
  2479. },
  2480. },
  2481. };
  2482. static struct clk_branch gcc_aggre_usb4_axi_clk = {
  2483. .halt_reg = 0x2a0e4,
  2484. .halt_check = BRANCH_HALT_VOTED,
  2485. .hwcg_reg = 0x2a0e4,
  2486. .hwcg_bit = 1,
  2487. .clkr = {
  2488. .enable_reg = 0x2a0e4,
  2489. .enable_mask = BIT(0),
  2490. .hw.init = &(const struct clk_init_data) {
  2491. .name = "gcc_aggre_usb4_axi_clk",
  2492. .parent_hws = (const struct clk_hw*[]){
  2493. &gcc_usb4_master_clk_src.clkr.hw,
  2494. },
  2495. .num_parents = 1,
  2496. .flags = CLK_SET_RATE_PARENT,
  2497. .ops = &clk_branch2_ops,
  2498. },
  2499. },
  2500. };
  2501. static struct clk_branch gcc_aggre_usb_noc_axi_clk = {
  2502. .halt_reg = 0x5d024,
  2503. .halt_check = BRANCH_HALT_VOTED,
  2504. .hwcg_reg = 0x5d024,
  2505. .hwcg_bit = 1,
  2506. .clkr = {
  2507. .enable_reg = 0x5d024,
  2508. .enable_mask = BIT(0),
  2509. .hw.init = &(const struct clk_init_data) {
  2510. .name = "gcc_aggre_usb_noc_axi_clk",
  2511. .ops = &clk_branch2_ops,
  2512. },
  2513. },
  2514. };
  2515. static struct clk_branch gcc_aggre_usb_noc_north_axi_clk = {
  2516. .halt_reg = 0x5d020,
  2517. .halt_check = BRANCH_HALT_VOTED,
  2518. .hwcg_reg = 0x5d020,
  2519. .hwcg_bit = 1,
  2520. .clkr = {
  2521. .enable_reg = 0x5d020,
  2522. .enable_mask = BIT(0),
  2523. .hw.init = &(const struct clk_init_data) {
  2524. .name = "gcc_aggre_usb_noc_north_axi_clk",
  2525. .ops = &clk_branch2_ops,
  2526. },
  2527. },
  2528. };
  2529. static struct clk_branch gcc_aggre_usb_noc_south_axi_clk = {
  2530. .halt_reg = 0x5d01c,
  2531. .halt_check = BRANCH_HALT_VOTED,
  2532. .hwcg_reg = 0x5d01c,
  2533. .hwcg_bit = 1,
  2534. .clkr = {
  2535. .enable_reg = 0x5d01c,
  2536. .enable_mask = BIT(0),
  2537. .hw.init = &(const struct clk_init_data) {
  2538. .name = "gcc_aggre_usb_noc_south_axi_clk",
  2539. .ops = &clk_branch2_ops,
  2540. },
  2541. },
  2542. };
  2543. static struct clk_branch gcc_ahb2phy0_clk = {
  2544. .halt_reg = 0x6a004,
  2545. .halt_check = BRANCH_HALT_VOTED,
  2546. .hwcg_reg = 0x6a004,
  2547. .hwcg_bit = 1,
  2548. .clkr = {
  2549. .enable_reg = 0x6a004,
  2550. .enable_mask = BIT(0),
  2551. .hw.init = &(const struct clk_init_data) {
  2552. .name = "gcc_ahb2phy0_clk",
  2553. .ops = &clk_branch2_ops,
  2554. },
  2555. },
  2556. };
  2557. static struct clk_branch gcc_ahb2phy2_clk = {
  2558. .halt_reg = 0x6a008,
  2559. .halt_check = BRANCH_HALT_VOTED,
  2560. .hwcg_reg = 0x6a008,
  2561. .hwcg_bit = 1,
  2562. .clkr = {
  2563. .enable_reg = 0x6a008,
  2564. .enable_mask = BIT(0),
  2565. .hw.init = &(const struct clk_init_data) {
  2566. .name = "gcc_ahb2phy2_clk",
  2567. .ops = &clk_branch2_ops,
  2568. },
  2569. },
  2570. };
  2571. static struct clk_branch gcc_boot_rom_ahb_clk = {
  2572. .halt_reg = 0x38004,
  2573. .halt_check = BRANCH_HALT_VOTED,
  2574. .hwcg_reg = 0x38004,
  2575. .hwcg_bit = 1,
  2576. .clkr = {
  2577. .enable_reg = 0x52000,
  2578. .enable_mask = BIT(10),
  2579. .hw.init = &(const struct clk_init_data) {
  2580. .name = "gcc_boot_rom_ahb_clk",
  2581. .ops = &clk_branch2_ops,
  2582. },
  2583. },
  2584. };
  2585. static struct clk_branch gcc_camera_hf_axi_clk = {
  2586. .halt_reg = 0x26010,
  2587. .halt_check = BRANCH_HALT_SKIP,
  2588. .hwcg_reg = 0x26010,
  2589. .hwcg_bit = 1,
  2590. .clkr = {
  2591. .enable_reg = 0x26010,
  2592. .enable_mask = BIT(0),
  2593. .hw.init = &(const struct clk_init_data) {
  2594. .name = "gcc_camera_hf_axi_clk",
  2595. .ops = &clk_branch2_ops,
  2596. },
  2597. },
  2598. };
  2599. static struct clk_branch gcc_camera_sf_axi_clk = {
  2600. .halt_reg = 0x26014,
  2601. .halt_check = BRANCH_HALT_SKIP,
  2602. .hwcg_reg = 0x26014,
  2603. .hwcg_bit = 1,
  2604. .clkr = {
  2605. .enable_reg = 0x26014,
  2606. .enable_mask = BIT(0),
  2607. .hw.init = &(const struct clk_init_data) {
  2608. .name = "gcc_camera_sf_axi_clk",
  2609. .ops = &clk_branch2_ops,
  2610. },
  2611. },
  2612. };
  2613. static struct clk_branch gcc_camera_throttle_nrt_axi_clk = {
  2614. .halt_reg = 0x2601c,
  2615. .halt_check = BRANCH_HALT_SKIP,
  2616. .hwcg_reg = 0x2601c,
  2617. .hwcg_bit = 1,
  2618. .clkr = {
  2619. .enable_reg = 0x2601c,
  2620. .enable_mask = BIT(0),
  2621. .hw.init = &(const struct clk_init_data) {
  2622. .name = "gcc_camera_throttle_nrt_axi_clk",
  2623. .ops = &clk_branch2_ops,
  2624. },
  2625. },
  2626. };
  2627. static struct clk_branch gcc_camera_throttle_rt_axi_clk = {
  2628. .halt_reg = 0x26018,
  2629. .halt_check = BRANCH_HALT_SKIP,
  2630. .hwcg_reg = 0x26018,
  2631. .hwcg_bit = 1,
  2632. .clkr = {
  2633. .enable_reg = 0x26018,
  2634. .enable_mask = BIT(0),
  2635. .hw.init = &(const struct clk_init_data) {
  2636. .name = "gcc_camera_throttle_rt_axi_clk",
  2637. .ops = &clk_branch2_ops,
  2638. },
  2639. },
  2640. };
  2641. static struct clk_branch gcc_camera_throttle_xo_clk = {
  2642. .halt_reg = 0x26024,
  2643. .halt_check = BRANCH_HALT,
  2644. .clkr = {
  2645. .enable_reg = 0x26024,
  2646. .enable_mask = BIT(0),
  2647. .hw.init = &(const struct clk_init_data) {
  2648. .name = "gcc_camera_throttle_xo_clk",
  2649. .ops = &clk_branch2_ops,
  2650. },
  2651. },
  2652. };
  2653. static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
  2654. .halt_reg = 0xab088,
  2655. .halt_check = BRANCH_HALT_VOTED,
  2656. .hwcg_reg = 0xab088,
  2657. .hwcg_bit = 1,
  2658. .clkr = {
  2659. .enable_reg = 0xab088,
  2660. .enable_mask = BIT(0),
  2661. .hw.init = &(const struct clk_init_data) {
  2662. .name = "gcc_cfg_noc_usb3_mp_axi_clk",
  2663. .parent_hws = (const struct clk_hw*[]){
  2664. &gcc_usb30_mp_master_clk_src.clkr.hw,
  2665. },
  2666. .num_parents = 1,
  2667. .flags = CLK_SET_RATE_PARENT,
  2668. .ops = &clk_branch2_ops,
  2669. },
  2670. },
  2671. };
  2672. static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
  2673. .halt_reg = 0xf084,
  2674. .halt_check = BRANCH_HALT_VOTED,
  2675. .hwcg_reg = 0xf084,
  2676. .hwcg_bit = 1,
  2677. .clkr = {
  2678. .enable_reg = 0xf084,
  2679. .enable_mask = BIT(0),
  2680. .hw.init = &(const struct clk_init_data) {
  2681. .name = "gcc_cfg_noc_usb3_prim_axi_clk",
  2682. .parent_hws = (const struct clk_hw*[]){
  2683. &gcc_usb30_prim_master_clk_src.clkr.hw,
  2684. },
  2685. .num_parents = 1,
  2686. .flags = CLK_SET_RATE_PARENT,
  2687. .ops = &clk_branch2_ops,
  2688. },
  2689. },
  2690. };
  2691. static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
  2692. .halt_reg = 0x10084,
  2693. .halt_check = BRANCH_HALT_VOTED,
  2694. .hwcg_reg = 0x10084,
  2695. .hwcg_bit = 1,
  2696. .clkr = {
  2697. .enable_reg = 0x10084,
  2698. .enable_mask = BIT(0),
  2699. .hw.init = &(const struct clk_init_data) {
  2700. .name = "gcc_cfg_noc_usb3_sec_axi_clk",
  2701. .parent_hws = (const struct clk_hw*[]){
  2702. &gcc_usb30_sec_master_clk_src.clkr.hw,
  2703. },
  2704. .num_parents = 1,
  2705. .flags = CLK_SET_RATE_PARENT,
  2706. .ops = &clk_branch2_ops,
  2707. },
  2708. },
  2709. };
  2710. static struct clk_branch gcc_cnoc_pcie0_tunnel_clk = {
  2711. .halt_reg = 0xa4074,
  2712. .halt_check = BRANCH_HALT_VOTED,
  2713. .clkr = {
  2714. .enable_reg = 0x52020,
  2715. .enable_mask = BIT(8),
  2716. .hw.init = &(const struct clk_init_data) {
  2717. .name = "gcc_cnoc_pcie0_tunnel_clk",
  2718. .ops = &clk_branch2_ops,
  2719. },
  2720. },
  2721. };
  2722. static struct clk_branch gcc_cnoc_pcie1_tunnel_clk = {
  2723. .halt_reg = 0x8d074,
  2724. .halt_check = BRANCH_HALT_VOTED,
  2725. .clkr = {
  2726. .enable_reg = 0x52020,
  2727. .enable_mask = BIT(9),
  2728. .hw.init = &(const struct clk_init_data) {
  2729. .name = "gcc_cnoc_pcie1_tunnel_clk",
  2730. .ops = &clk_branch2_ops,
  2731. },
  2732. },
  2733. };
  2734. static struct clk_branch gcc_cnoc_pcie4_qx_clk = {
  2735. .halt_reg = 0x6b084,
  2736. .halt_check = BRANCH_HALT_VOTED,
  2737. .hwcg_reg = 0x6b084,
  2738. .hwcg_bit = 1,
  2739. .clkr = {
  2740. .enable_reg = 0x52020,
  2741. .enable_mask = BIT(10),
  2742. .hw.init = &(const struct clk_init_data) {
  2743. .name = "gcc_cnoc_pcie4_qx_clk",
  2744. .ops = &clk_branch2_ops,
  2745. },
  2746. },
  2747. };
  2748. static struct clk_branch gcc_ddrss_gpu_axi_clk = {
  2749. .halt_reg = 0x7115c,
  2750. .halt_check = BRANCH_HALT_SKIP,
  2751. .hwcg_reg = 0x7115c,
  2752. .hwcg_bit = 1,
  2753. .clkr = {
  2754. .enable_reg = 0x7115c,
  2755. .enable_mask = BIT(0),
  2756. .hw.init = &(const struct clk_init_data) {
  2757. .name = "gcc_ddrss_gpu_axi_clk",
  2758. .ops = &clk_branch2_aon_ops,
  2759. },
  2760. },
  2761. };
  2762. static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = {
  2763. .halt_reg = 0xa602c,
  2764. .halt_check = BRANCH_HALT_SKIP,
  2765. .hwcg_reg = 0xa602c,
  2766. .hwcg_bit = 1,
  2767. .clkr = {
  2768. .enable_reg = 0x52000,
  2769. .enable_mask = BIT(19),
  2770. .hw.init = &(const struct clk_init_data) {
  2771. .name = "gcc_ddrss_pcie_sf_tbu_clk",
  2772. .ops = &clk_branch2_ops,
  2773. },
  2774. },
  2775. };
  2776. static struct clk_branch gcc_disp1_hf_axi_clk = {
  2777. .halt_reg = 0xbb010,
  2778. .halt_check = BRANCH_HALT_SKIP,
  2779. .hwcg_reg = 0xbb010,
  2780. .hwcg_bit = 1,
  2781. .clkr = {
  2782. .enable_reg = 0xbb010,
  2783. .enable_mask = BIT(0),
  2784. .hw.init = &(const struct clk_init_data) {
  2785. .name = "gcc_disp1_hf_axi_clk",
  2786. .ops = &clk_branch2_ops,
  2787. },
  2788. },
  2789. };
  2790. static struct clk_branch gcc_disp1_sf_axi_clk = {
  2791. .halt_reg = 0xbb018,
  2792. .halt_check = BRANCH_HALT_SKIP,
  2793. .hwcg_reg = 0xbb018,
  2794. .hwcg_bit = 1,
  2795. .clkr = {
  2796. .enable_reg = 0xbb018,
  2797. .enable_mask = BIT(0),
  2798. .hw.init = &(const struct clk_init_data) {
  2799. .name = "gcc_disp1_sf_axi_clk",
  2800. .ops = &clk_branch2_ops,
  2801. },
  2802. },
  2803. };
  2804. static struct clk_branch gcc_disp1_throttle_nrt_axi_clk = {
  2805. .halt_reg = 0xbb024,
  2806. .halt_check = BRANCH_HALT_SKIP,
  2807. .hwcg_reg = 0xbb024,
  2808. .hwcg_bit = 1,
  2809. .clkr = {
  2810. .enable_reg = 0xbb024,
  2811. .enable_mask = BIT(0),
  2812. .hw.init = &(const struct clk_init_data) {
  2813. .name = "gcc_disp1_throttle_nrt_axi_clk",
  2814. .ops = &clk_branch2_ops,
  2815. },
  2816. },
  2817. };
  2818. static struct clk_branch gcc_disp1_throttle_rt_axi_clk = {
  2819. .halt_reg = 0xbb020,
  2820. .halt_check = BRANCH_HALT_SKIP,
  2821. .hwcg_reg = 0xbb020,
  2822. .hwcg_bit = 1,
  2823. .clkr = {
  2824. .enable_reg = 0xbb020,
  2825. .enable_mask = BIT(0),
  2826. .hw.init = &(const struct clk_init_data) {
  2827. .name = "gcc_disp1_throttle_rt_axi_clk",
  2828. .ops = &clk_branch2_ops,
  2829. },
  2830. },
  2831. };
  2832. static struct clk_branch gcc_disp_hf_axi_clk = {
  2833. .halt_reg = 0x27010,
  2834. .halt_check = BRANCH_HALT_SKIP,
  2835. .hwcg_reg = 0x27010,
  2836. .hwcg_bit = 1,
  2837. .clkr = {
  2838. .enable_reg = 0x27010,
  2839. .enable_mask = BIT(0),
  2840. .hw.init = &(const struct clk_init_data) {
  2841. .name = "gcc_disp_hf_axi_clk",
  2842. .ops = &clk_branch2_ops,
  2843. },
  2844. },
  2845. };
  2846. static struct clk_branch gcc_disp_sf_axi_clk = {
  2847. .halt_reg = 0x27018,
  2848. .halt_check = BRANCH_HALT_SKIP,
  2849. .hwcg_reg = 0x27018,
  2850. .hwcg_bit = 1,
  2851. .clkr = {
  2852. .enable_reg = 0x27018,
  2853. .enable_mask = BIT(0),
  2854. .hw.init = &(const struct clk_init_data) {
  2855. .name = "gcc_disp_sf_axi_clk",
  2856. .ops = &clk_branch2_ops,
  2857. },
  2858. },
  2859. };
  2860. static struct clk_branch gcc_disp_throttle_nrt_axi_clk = {
  2861. .halt_reg = 0x27024,
  2862. .halt_check = BRANCH_HALT_SKIP,
  2863. .hwcg_reg = 0x27024,
  2864. .hwcg_bit = 1,
  2865. .clkr = {
  2866. .enable_reg = 0x27024,
  2867. .enable_mask = BIT(0),
  2868. .hw.init = &(const struct clk_init_data) {
  2869. .name = "gcc_disp_throttle_nrt_axi_clk",
  2870. .ops = &clk_branch2_ops,
  2871. },
  2872. },
  2873. };
  2874. static struct clk_branch gcc_disp_throttle_rt_axi_clk = {
  2875. .halt_reg = 0x27020,
  2876. .halt_check = BRANCH_HALT_SKIP,
  2877. .hwcg_reg = 0x27020,
  2878. .hwcg_bit = 1,
  2879. .clkr = {
  2880. .enable_reg = 0x27020,
  2881. .enable_mask = BIT(0),
  2882. .hw.init = &(const struct clk_init_data) {
  2883. .name = "gcc_disp_throttle_rt_axi_clk",
  2884. .ops = &clk_branch2_ops,
  2885. },
  2886. },
  2887. };
  2888. static struct clk_branch gcc_emac0_axi_clk = {
  2889. .halt_reg = 0xaa010,
  2890. .halt_check = BRANCH_HALT_VOTED,
  2891. .hwcg_reg = 0xaa010,
  2892. .hwcg_bit = 1,
  2893. .clkr = {
  2894. .enable_reg = 0xaa010,
  2895. .enable_mask = BIT(0),
  2896. .hw.init = &(const struct clk_init_data) {
  2897. .name = "gcc_emac0_axi_clk",
  2898. .ops = &clk_branch2_ops,
  2899. },
  2900. },
  2901. };
  2902. static struct clk_branch gcc_emac0_ptp_clk = {
  2903. .halt_reg = 0xaa01c,
  2904. .halt_check = BRANCH_HALT,
  2905. .clkr = {
  2906. .enable_reg = 0xaa01c,
  2907. .enable_mask = BIT(0),
  2908. .hw.init = &(const struct clk_init_data) {
  2909. .name = "gcc_emac0_ptp_clk",
  2910. .parent_hws = (const struct clk_hw*[]){
  2911. &gcc_emac0_ptp_clk_src.clkr.hw,
  2912. },
  2913. .num_parents = 1,
  2914. .flags = CLK_SET_RATE_PARENT,
  2915. .ops = &clk_branch2_ops,
  2916. },
  2917. },
  2918. };
  2919. static struct clk_branch gcc_emac0_rgmii_clk = {
  2920. .halt_reg = 0xaa038,
  2921. .halt_check = BRANCH_HALT,
  2922. .clkr = {
  2923. .enable_reg = 0xaa038,
  2924. .enable_mask = BIT(0),
  2925. .hw.init = &(const struct clk_init_data) {
  2926. .name = "gcc_emac0_rgmii_clk",
  2927. .parent_hws = (const struct clk_hw*[]){
  2928. &gcc_emac0_rgmii_clk_src.clkr.hw,
  2929. },
  2930. .num_parents = 1,
  2931. .flags = CLK_SET_RATE_PARENT,
  2932. .ops = &clk_branch2_ops,
  2933. },
  2934. },
  2935. };
  2936. static struct clk_branch gcc_emac0_slv_ahb_clk = {
  2937. .halt_reg = 0xaa018,
  2938. .halt_check = BRANCH_HALT_VOTED,
  2939. .hwcg_reg = 0xaa018,
  2940. .hwcg_bit = 1,
  2941. .clkr = {
  2942. .enable_reg = 0xaa018,
  2943. .enable_mask = BIT(0),
  2944. .hw.init = &(const struct clk_init_data) {
  2945. .name = "gcc_emac0_slv_ahb_clk",
  2946. .ops = &clk_branch2_ops,
  2947. },
  2948. },
  2949. };
  2950. static struct clk_branch gcc_emac1_axi_clk = {
  2951. .halt_reg = 0xba010,
  2952. .halt_check = BRANCH_HALT_VOTED,
  2953. .hwcg_reg = 0xba010,
  2954. .hwcg_bit = 1,
  2955. .clkr = {
  2956. .enable_reg = 0xba010,
  2957. .enable_mask = BIT(0),
  2958. .hw.init = &(const struct clk_init_data) {
  2959. .name = "gcc_emac1_axi_clk",
  2960. .ops = &clk_branch2_ops,
  2961. },
  2962. },
  2963. };
  2964. static struct clk_branch gcc_emac1_ptp_clk = {
  2965. .halt_reg = 0xba01c,
  2966. .halt_check = BRANCH_HALT,
  2967. .clkr = {
  2968. .enable_reg = 0xba01c,
  2969. .enable_mask = BIT(0),
  2970. .hw.init = &(const struct clk_init_data) {
  2971. .name = "gcc_emac1_ptp_clk",
  2972. .parent_hws = (const struct clk_hw*[]){
  2973. &gcc_emac1_ptp_clk_src.clkr.hw,
  2974. },
  2975. .num_parents = 1,
  2976. .flags = CLK_SET_RATE_PARENT,
  2977. .ops = &clk_branch2_ops,
  2978. },
  2979. },
  2980. };
  2981. static struct clk_branch gcc_emac1_rgmii_clk = {
  2982. .halt_reg = 0xba038,
  2983. .halt_check = BRANCH_HALT,
  2984. .clkr = {
  2985. .enable_reg = 0xba038,
  2986. .enable_mask = BIT(0),
  2987. .hw.init = &(const struct clk_init_data) {
  2988. .name = "gcc_emac1_rgmii_clk",
  2989. .parent_hws = (const struct clk_hw*[]){
  2990. &gcc_emac1_rgmii_clk_src.clkr.hw,
  2991. },
  2992. .num_parents = 1,
  2993. .flags = CLK_SET_RATE_PARENT,
  2994. .ops = &clk_branch2_ops,
  2995. },
  2996. },
  2997. };
  2998. static struct clk_branch gcc_emac1_slv_ahb_clk = {
  2999. .halt_reg = 0xba018,
  3000. .halt_check = BRANCH_HALT_VOTED,
  3001. .hwcg_reg = 0xba018,
  3002. .hwcg_bit = 1,
  3003. .clkr = {
  3004. .enable_reg = 0xba018,
  3005. .enable_mask = BIT(0),
  3006. .hw.init = &(const struct clk_init_data) {
  3007. .name = "gcc_emac1_slv_ahb_clk",
  3008. .ops = &clk_branch2_ops,
  3009. },
  3010. },
  3011. };
  3012. static struct clk_branch gcc_gp1_clk = {
  3013. .halt_reg = 0x64000,
  3014. .halt_check = BRANCH_HALT,
  3015. .clkr = {
  3016. .enable_reg = 0x64000,
  3017. .enable_mask = BIT(0),
  3018. .hw.init = &(const struct clk_init_data) {
  3019. .name = "gcc_gp1_clk",
  3020. .parent_hws = (const struct clk_hw*[]){
  3021. &gcc_gp1_clk_src.clkr.hw,
  3022. },
  3023. .num_parents = 1,
  3024. .flags = CLK_SET_RATE_PARENT,
  3025. .ops = &clk_branch2_ops,
  3026. },
  3027. },
  3028. };
  3029. static struct clk_branch gcc_gp2_clk = {
  3030. .halt_reg = 0x65000,
  3031. .halt_check = BRANCH_HALT,
  3032. .clkr = {
  3033. .enable_reg = 0x65000,
  3034. .enable_mask = BIT(0),
  3035. .hw.init = &(const struct clk_init_data) {
  3036. .name = "gcc_gp2_clk",
  3037. .parent_hws = (const struct clk_hw*[]){
  3038. &gcc_gp2_clk_src.clkr.hw,
  3039. },
  3040. .num_parents = 1,
  3041. .flags = CLK_SET_RATE_PARENT,
  3042. .ops = &clk_branch2_ops,
  3043. },
  3044. },
  3045. };
  3046. static struct clk_branch gcc_gp3_clk = {
  3047. .halt_reg = 0x66000,
  3048. .halt_check = BRANCH_HALT,
  3049. .clkr = {
  3050. .enable_reg = 0x66000,
  3051. .enable_mask = BIT(0),
  3052. .hw.init = &(const struct clk_init_data) {
  3053. .name = "gcc_gp3_clk",
  3054. .parent_hws = (const struct clk_hw*[]){
  3055. &gcc_gp3_clk_src.clkr.hw,
  3056. },
  3057. .num_parents = 1,
  3058. .flags = CLK_SET_RATE_PARENT,
  3059. .ops = &clk_branch2_ops,
  3060. },
  3061. },
  3062. };
  3063. static struct clk_branch gcc_gp4_clk = {
  3064. .halt_reg = 0xc2000,
  3065. .halt_check = BRANCH_HALT,
  3066. .clkr = {
  3067. .enable_reg = 0xc2000,
  3068. .enable_mask = BIT(0),
  3069. .hw.init = &(const struct clk_init_data) {
  3070. .name = "gcc_gp4_clk",
  3071. .parent_hws = (const struct clk_hw*[]){
  3072. &gcc_gp4_clk_src.clkr.hw,
  3073. },
  3074. .num_parents = 1,
  3075. .flags = CLK_SET_RATE_PARENT,
  3076. .ops = &clk_branch2_ops,
  3077. },
  3078. },
  3079. };
  3080. static struct clk_branch gcc_gp5_clk = {
  3081. .halt_reg = 0xc3000,
  3082. .halt_check = BRANCH_HALT,
  3083. .clkr = {
  3084. .enable_reg = 0xc3000,
  3085. .enable_mask = BIT(0),
  3086. .hw.init = &(const struct clk_init_data) {
  3087. .name = "gcc_gp5_clk",
  3088. .parent_hws = (const struct clk_hw*[]){
  3089. &gcc_gp5_clk_src.clkr.hw,
  3090. },
  3091. .num_parents = 1,
  3092. .flags = CLK_SET_RATE_PARENT,
  3093. .ops = &clk_branch2_ops,
  3094. },
  3095. },
  3096. };
  3097. static struct clk_branch gcc_gpu_gpll0_clk_src = {
  3098. .halt_check = BRANCH_HALT_DELAY,
  3099. .clkr = {
  3100. .enable_reg = 0x52000,
  3101. .enable_mask = BIT(15),
  3102. .hw.init = &(const struct clk_init_data) {
  3103. .name = "gcc_gpu_gpll0_clk_src",
  3104. .parent_hws = (const struct clk_hw*[]){
  3105. &gcc_gpll0.clkr.hw,
  3106. },
  3107. .num_parents = 1,
  3108. .flags = CLK_SET_RATE_PARENT,
  3109. .ops = &clk_branch2_ops,
  3110. },
  3111. },
  3112. };
  3113. static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
  3114. .halt_check = BRANCH_HALT_DELAY,
  3115. .clkr = {
  3116. .enable_reg = 0x52000,
  3117. .enable_mask = BIT(16),
  3118. .hw.init = &(const struct clk_init_data) {
  3119. .name = "gcc_gpu_gpll0_div_clk_src",
  3120. .parent_hws = (const struct clk_hw*[]){
  3121. &gcc_gpll0_out_even.clkr.hw,
  3122. },
  3123. .num_parents = 1,
  3124. .flags = CLK_SET_RATE_PARENT,
  3125. .ops = &clk_branch2_ops,
  3126. },
  3127. },
  3128. };
  3129. static struct clk_branch gcc_gpu_iref_en = {
  3130. .halt_reg = 0x8c014,
  3131. .halt_check = BRANCH_HALT,
  3132. .clkr = {
  3133. .enable_reg = 0x8c014,
  3134. .enable_mask = BIT(0),
  3135. .hw.init = &(const struct clk_init_data) {
  3136. .name = "gcc_gpu_iref_en",
  3137. .ops = &clk_branch2_ops,
  3138. },
  3139. },
  3140. };
  3141. static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
  3142. .halt_reg = 0x71010,
  3143. .halt_check = BRANCH_HALT_VOTED,
  3144. .hwcg_reg = 0x71010,
  3145. .hwcg_bit = 1,
  3146. .clkr = {
  3147. .enable_reg = 0x71010,
  3148. .enable_mask = BIT(0),
  3149. .hw.init = &(const struct clk_init_data) {
  3150. .name = "gcc_gpu_memnoc_gfx_clk",
  3151. .ops = &clk_branch2_aon_ops,
  3152. },
  3153. },
  3154. };
  3155. static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
  3156. .halt_reg = 0x71020,
  3157. .halt_check = BRANCH_HALT,
  3158. .clkr = {
  3159. .enable_reg = 0x71020,
  3160. .enable_mask = BIT(0),
  3161. .hw.init = &(const struct clk_init_data) {
  3162. .name = "gcc_gpu_snoc_dvm_gfx_clk",
  3163. .ops = &clk_branch2_aon_ops,
  3164. },
  3165. },
  3166. };
  3167. static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = {
  3168. .halt_reg = 0x71008,
  3169. .halt_check = BRANCH_HALT_VOTED,
  3170. .hwcg_reg = 0x71008,
  3171. .hwcg_bit = 1,
  3172. .clkr = {
  3173. .enable_reg = 0x71008,
  3174. .enable_mask = BIT(0),
  3175. .hw.init = &(const struct clk_init_data) {
  3176. .name = "gcc_gpu_tcu_throttle_ahb_clk",
  3177. .ops = &clk_branch2_ops,
  3178. },
  3179. },
  3180. };
  3181. static struct clk_branch gcc_gpu_tcu_throttle_clk = {
  3182. .halt_reg = 0x71018,
  3183. .halt_check = BRANCH_HALT_VOTED,
  3184. .hwcg_reg = 0x71018,
  3185. .hwcg_bit = 1,
  3186. .clkr = {
  3187. .enable_reg = 0x71018,
  3188. .enable_mask = BIT(0),
  3189. .hw.init = &(const struct clk_init_data) {
  3190. .name = "gcc_gpu_tcu_throttle_clk",
  3191. .ops = &clk_branch2_ops,
  3192. },
  3193. },
  3194. };
  3195. static struct clk_branch gcc_pcie0_phy_rchng_clk = {
  3196. .halt_reg = 0xa4038,
  3197. .halt_check = BRANCH_HALT_VOTED,
  3198. .clkr = {
  3199. .enable_reg = 0x52018,
  3200. .enable_mask = BIT(11),
  3201. .hw.init = &(const struct clk_init_data) {
  3202. .name = "gcc_pcie0_phy_rchng_clk",
  3203. .parent_hws = (const struct clk_hw*[]){
  3204. &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
  3205. },
  3206. .num_parents = 1,
  3207. .flags = CLK_SET_RATE_PARENT,
  3208. .ops = &clk_branch2_ops,
  3209. },
  3210. },
  3211. };
  3212. static struct clk_branch gcc_pcie1_phy_rchng_clk = {
  3213. .halt_reg = 0x8d038,
  3214. .halt_check = BRANCH_HALT_VOTED,
  3215. .clkr = {
  3216. .enable_reg = 0x52000,
  3217. .enable_mask = BIT(23),
  3218. .hw.init = &(const struct clk_init_data) {
  3219. .name = "gcc_pcie1_phy_rchng_clk",
  3220. .parent_hws = (const struct clk_hw*[]){
  3221. &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
  3222. },
  3223. .num_parents = 1,
  3224. .flags = CLK_SET_RATE_PARENT,
  3225. .ops = &clk_branch2_ops,
  3226. },
  3227. },
  3228. };
  3229. static struct clk_branch gcc_pcie2a_phy_rchng_clk = {
  3230. .halt_reg = 0x9d040,
  3231. .halt_check = BRANCH_HALT_VOTED,
  3232. .clkr = {
  3233. .enable_reg = 0x52010,
  3234. .enable_mask = BIT(15),
  3235. .hw.init = &(const struct clk_init_data) {
  3236. .name = "gcc_pcie2a_phy_rchng_clk",
  3237. .parent_hws = (const struct clk_hw*[]){
  3238. &gcc_pcie_2a_phy_rchng_clk_src.clkr.hw,
  3239. },
  3240. .num_parents = 1,
  3241. .flags = CLK_SET_RATE_PARENT,
  3242. .ops = &clk_branch2_ops,
  3243. },
  3244. },
  3245. };
  3246. static struct clk_branch gcc_pcie2b_phy_rchng_clk = {
  3247. .halt_reg = 0x9e040,
  3248. .halt_check = BRANCH_HALT_VOTED,
  3249. .clkr = {
  3250. .enable_reg = 0x52010,
  3251. .enable_mask = BIT(22),
  3252. .hw.init = &(const struct clk_init_data) {
  3253. .name = "gcc_pcie2b_phy_rchng_clk",
  3254. .parent_hws = (const struct clk_hw*[]){
  3255. &gcc_pcie_2b_phy_rchng_clk_src.clkr.hw,
  3256. },
  3257. .num_parents = 1,
  3258. .flags = CLK_SET_RATE_PARENT,
  3259. .ops = &clk_branch2_ops,
  3260. },
  3261. },
  3262. };
  3263. static struct clk_branch gcc_pcie3a_phy_rchng_clk = {
  3264. .halt_reg = 0xa0040,
  3265. .halt_check = BRANCH_HALT_VOTED,
  3266. .clkr = {
  3267. .enable_reg = 0x52010,
  3268. .enable_mask = BIT(29),
  3269. .hw.init = &(const struct clk_init_data) {
  3270. .name = "gcc_pcie3a_phy_rchng_clk",
  3271. .parent_hws = (const struct clk_hw*[]){
  3272. &gcc_pcie_3a_phy_rchng_clk_src.clkr.hw,
  3273. },
  3274. .num_parents = 1,
  3275. .flags = CLK_SET_RATE_PARENT,
  3276. .ops = &clk_branch2_ops,
  3277. },
  3278. },
  3279. };
  3280. static struct clk_branch gcc_pcie3b_phy_rchng_clk = {
  3281. .halt_reg = 0xa2040,
  3282. .halt_check = BRANCH_HALT_VOTED,
  3283. .clkr = {
  3284. .enable_reg = 0x52018,
  3285. .enable_mask = BIT(4),
  3286. .hw.init = &(const struct clk_init_data) {
  3287. .name = "gcc_pcie3b_phy_rchng_clk",
  3288. .parent_hws = (const struct clk_hw*[]){
  3289. &gcc_pcie_3b_phy_rchng_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_pcie4_phy_rchng_clk = {
  3298. .halt_reg = 0x6b040,
  3299. .halt_check = BRANCH_HALT_VOTED,
  3300. .clkr = {
  3301. .enable_reg = 0x52000,
  3302. .enable_mask = BIT(22),
  3303. .hw.init = &(const struct clk_init_data) {
  3304. .name = "gcc_pcie4_phy_rchng_clk",
  3305. .parent_hws = (const struct clk_hw*[]){
  3306. &gcc_pcie_4_phy_rchng_clk_src.clkr.hw,
  3307. },
  3308. .num_parents = 1,
  3309. .flags = CLK_SET_RATE_PARENT,
  3310. .ops = &clk_branch2_ops,
  3311. },
  3312. },
  3313. };
  3314. static struct clk_branch gcc_pcie_0_aux_clk = {
  3315. .halt_reg = 0xa4028,
  3316. .halt_check = BRANCH_HALT_VOTED,
  3317. .clkr = {
  3318. .enable_reg = 0x52018,
  3319. .enable_mask = BIT(9),
  3320. .hw.init = &(const struct clk_init_data) {
  3321. .name = "gcc_pcie_0_aux_clk",
  3322. .parent_hws = (const struct clk_hw*[]){
  3323. &gcc_pcie_0_aux_clk_src.clkr.hw,
  3324. },
  3325. .num_parents = 1,
  3326. .flags = CLK_SET_RATE_PARENT,
  3327. .ops = &clk_branch2_ops,
  3328. },
  3329. },
  3330. };
  3331. static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
  3332. .halt_reg = 0xa4024,
  3333. .halt_check = BRANCH_HALT_VOTED,
  3334. .hwcg_reg = 0xa4024,
  3335. .hwcg_bit = 1,
  3336. .clkr = {
  3337. .enable_reg = 0x52018,
  3338. .enable_mask = BIT(8),
  3339. .hw.init = &(const struct clk_init_data) {
  3340. .name = "gcc_pcie_0_cfg_ahb_clk",
  3341. .ops = &clk_branch2_ops,
  3342. },
  3343. },
  3344. };
  3345. static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
  3346. .halt_reg = 0xa401c,
  3347. .halt_check = BRANCH_HALT_SKIP,
  3348. .hwcg_reg = 0xa401c,
  3349. .hwcg_bit = 1,
  3350. .clkr = {
  3351. .enable_reg = 0x52018,
  3352. .enable_mask = BIT(7),
  3353. .hw.init = &(const struct clk_init_data) {
  3354. .name = "gcc_pcie_0_mstr_axi_clk",
  3355. .ops = &clk_branch2_ops,
  3356. },
  3357. },
  3358. };
  3359. static struct clk_branch gcc_pcie_0_pipe_clk = {
  3360. .halt_reg = 0xa4030,
  3361. .halt_check = BRANCH_HALT_SKIP,
  3362. .clkr = {
  3363. .enable_reg = 0x52018,
  3364. .enable_mask = BIT(10),
  3365. .hw.init = &(const struct clk_init_data) {
  3366. .name = "gcc_pcie_0_pipe_clk",
  3367. .parent_hws = (const struct clk_hw*[]){
  3368. &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw,
  3369. },
  3370. .num_parents = 1,
  3371. .flags = CLK_SET_RATE_PARENT,
  3372. .ops = &clk_branch2_ops,
  3373. },
  3374. },
  3375. };
  3376. static struct clk_branch gcc_pcie_0_slv_axi_clk = {
  3377. .halt_reg = 0xa4014,
  3378. .halt_check = BRANCH_HALT_VOTED,
  3379. .hwcg_reg = 0xa4014,
  3380. .hwcg_bit = 1,
  3381. .clkr = {
  3382. .enable_reg = 0x52018,
  3383. .enable_mask = BIT(6),
  3384. .hw.init = &(const struct clk_init_data) {
  3385. .name = "gcc_pcie_0_slv_axi_clk",
  3386. .ops = &clk_branch2_ops,
  3387. },
  3388. },
  3389. };
  3390. static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
  3391. .halt_reg = 0xa4010,
  3392. .halt_check = BRANCH_HALT_VOTED,
  3393. .clkr = {
  3394. .enable_reg = 0x52018,
  3395. .enable_mask = BIT(5),
  3396. .hw.init = &(const struct clk_init_data) {
  3397. .name = "gcc_pcie_0_slv_q2a_axi_clk",
  3398. .ops = &clk_branch2_ops,
  3399. },
  3400. },
  3401. };
  3402. static struct clk_branch gcc_pcie_1_aux_clk = {
  3403. .halt_reg = 0x8d028,
  3404. .halt_check = BRANCH_HALT_VOTED,
  3405. .clkr = {
  3406. .enable_reg = 0x52000,
  3407. .enable_mask = BIT(29),
  3408. .hw.init = &(const struct clk_init_data) {
  3409. .name = "gcc_pcie_1_aux_clk",
  3410. .parent_hws = (const struct clk_hw*[]){
  3411. &gcc_pcie_1_aux_clk_src.clkr.hw,
  3412. },
  3413. .num_parents = 1,
  3414. .flags = CLK_SET_RATE_PARENT,
  3415. .ops = &clk_branch2_ops,
  3416. },
  3417. },
  3418. };
  3419. static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
  3420. .halt_reg = 0x8d024,
  3421. .halt_check = BRANCH_HALT_VOTED,
  3422. .hwcg_reg = 0x8d024,
  3423. .hwcg_bit = 1,
  3424. .clkr = {
  3425. .enable_reg = 0x52000,
  3426. .enable_mask = BIT(28),
  3427. .hw.init = &(const struct clk_init_data) {
  3428. .name = "gcc_pcie_1_cfg_ahb_clk",
  3429. .ops = &clk_branch2_ops,
  3430. },
  3431. },
  3432. };
  3433. static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
  3434. .halt_reg = 0x8d01c,
  3435. .halt_check = BRANCH_HALT_SKIP,
  3436. .hwcg_reg = 0x8d01c,
  3437. .hwcg_bit = 1,
  3438. .clkr = {
  3439. .enable_reg = 0x52000,
  3440. .enable_mask = BIT(27),
  3441. .hw.init = &(const struct clk_init_data) {
  3442. .name = "gcc_pcie_1_mstr_axi_clk",
  3443. .ops = &clk_branch2_ops,
  3444. },
  3445. },
  3446. };
  3447. static struct clk_branch gcc_pcie_1_pipe_clk = {
  3448. .halt_reg = 0x8d030,
  3449. .halt_check = BRANCH_HALT_SKIP,
  3450. .clkr = {
  3451. .enable_reg = 0x52000,
  3452. .enable_mask = BIT(30),
  3453. .hw.init = &(const struct clk_init_data) {
  3454. .name = "gcc_pcie_1_pipe_clk",
  3455. .parent_hws = (const struct clk_hw*[]){
  3456. &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw,
  3457. },
  3458. .num_parents = 1,
  3459. .flags = CLK_SET_RATE_PARENT,
  3460. .ops = &clk_branch2_ops,
  3461. },
  3462. },
  3463. };
  3464. static struct clk_branch gcc_pcie_1_slv_axi_clk = {
  3465. .halt_reg = 0x8d014,
  3466. .halt_check = BRANCH_HALT_VOTED,
  3467. .hwcg_reg = 0x8d014,
  3468. .hwcg_bit = 1,
  3469. .clkr = {
  3470. .enable_reg = 0x52000,
  3471. .enable_mask = BIT(26),
  3472. .hw.init = &(const struct clk_init_data) {
  3473. .name = "gcc_pcie_1_slv_axi_clk",
  3474. .ops = &clk_branch2_ops,
  3475. },
  3476. },
  3477. };
  3478. static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
  3479. .halt_reg = 0x8d010,
  3480. .halt_check = BRANCH_HALT_VOTED,
  3481. .clkr = {
  3482. .enable_reg = 0x52000,
  3483. .enable_mask = BIT(25),
  3484. .hw.init = &(const struct clk_init_data) {
  3485. .name = "gcc_pcie_1_slv_q2a_axi_clk",
  3486. .ops = &clk_branch2_ops,
  3487. },
  3488. },
  3489. };
  3490. static struct clk_branch gcc_pcie_2a2b_clkref_clk = {
  3491. .halt_reg = 0x8c034,
  3492. .halt_check = BRANCH_HALT,
  3493. .clkr = {
  3494. .enable_reg = 0x8c034,
  3495. .enable_mask = BIT(0),
  3496. .hw.init = &(const struct clk_init_data) {
  3497. .name = "gcc_pcie_2a2b_clkref_clk",
  3498. .ops = &clk_branch2_ops,
  3499. },
  3500. },
  3501. };
  3502. static struct clk_branch gcc_pcie_2a_aux_clk = {
  3503. .halt_reg = 0x9d028,
  3504. .halt_check = BRANCH_HALT_VOTED,
  3505. .clkr = {
  3506. .enable_reg = 0x52010,
  3507. .enable_mask = BIT(13),
  3508. .hw.init = &(const struct clk_init_data) {
  3509. .name = "gcc_pcie_2a_aux_clk",
  3510. .parent_hws = (const struct clk_hw*[]){
  3511. &gcc_pcie_2a_aux_clk_src.clkr.hw,
  3512. },
  3513. .num_parents = 1,
  3514. .flags = CLK_SET_RATE_PARENT,
  3515. .ops = &clk_branch2_ops,
  3516. },
  3517. },
  3518. };
  3519. static struct clk_branch gcc_pcie_2a_cfg_ahb_clk = {
  3520. .halt_reg = 0x9d024,
  3521. .halt_check = BRANCH_HALT_VOTED,
  3522. .hwcg_reg = 0x9d024,
  3523. .hwcg_bit = 1,
  3524. .clkr = {
  3525. .enable_reg = 0x52010,
  3526. .enable_mask = BIT(12),
  3527. .hw.init = &(const struct clk_init_data) {
  3528. .name = "gcc_pcie_2a_cfg_ahb_clk",
  3529. .ops = &clk_branch2_ops,
  3530. },
  3531. },
  3532. };
  3533. static struct clk_branch gcc_pcie_2a_mstr_axi_clk = {
  3534. .halt_reg = 0x9d01c,
  3535. .halt_check = BRANCH_HALT_SKIP,
  3536. .hwcg_reg = 0x9d01c,
  3537. .hwcg_bit = 1,
  3538. .clkr = {
  3539. .enable_reg = 0x52010,
  3540. .enable_mask = BIT(11),
  3541. .hw.init = &(const struct clk_init_data) {
  3542. .name = "gcc_pcie_2a_mstr_axi_clk",
  3543. .ops = &clk_branch2_ops,
  3544. },
  3545. },
  3546. };
  3547. static struct clk_branch gcc_pcie_2a_pipe_clk = {
  3548. .halt_reg = 0x9d030,
  3549. .halt_check = BRANCH_HALT_SKIP,
  3550. .clkr = {
  3551. .enable_reg = 0x52010,
  3552. .enable_mask = BIT(14),
  3553. .hw.init = &(const struct clk_init_data) {
  3554. .name = "gcc_pcie_2a_pipe_clk",
  3555. .parent_hws = (const struct clk_hw*[]){
  3556. &gcc_pcie_2a_pipe_clk_src.clkr.hw,
  3557. },
  3558. .num_parents = 1,
  3559. .flags = CLK_SET_RATE_PARENT,
  3560. .ops = &clk_branch2_ops,
  3561. },
  3562. },
  3563. };
  3564. static struct clk_branch gcc_pcie_2a_pipediv2_clk = {
  3565. .halt_reg = 0x9d038,
  3566. .halt_check = BRANCH_HALT_SKIP,
  3567. .clkr = {
  3568. .enable_reg = 0x52018,
  3569. .enable_mask = BIT(22),
  3570. .hw.init = &(const struct clk_init_data) {
  3571. .name = "gcc_pcie_2a_pipediv2_clk",
  3572. .parent_hws = (const struct clk_hw*[]){
  3573. &gcc_pcie_2a_pipe_div_clk_src.clkr.hw,
  3574. },
  3575. .num_parents = 1,
  3576. .flags = CLK_SET_RATE_PARENT,
  3577. .ops = &clk_branch2_ops,
  3578. },
  3579. },
  3580. };
  3581. static struct clk_branch gcc_pcie_2a_slv_axi_clk = {
  3582. .halt_reg = 0x9d014,
  3583. .halt_check = BRANCH_HALT_VOTED,
  3584. .hwcg_reg = 0x9d014,
  3585. .hwcg_bit = 1,
  3586. .clkr = {
  3587. .enable_reg = 0x52010,
  3588. .enable_mask = BIT(10),
  3589. .hw.init = &(const struct clk_init_data) {
  3590. .name = "gcc_pcie_2a_slv_axi_clk",
  3591. .ops = &clk_branch2_ops,
  3592. },
  3593. },
  3594. };
  3595. static struct clk_branch gcc_pcie_2a_slv_q2a_axi_clk = {
  3596. .halt_reg = 0x9d010,
  3597. .halt_check = BRANCH_HALT_VOTED,
  3598. .clkr = {
  3599. .enable_reg = 0x52018,
  3600. .enable_mask = BIT(12),
  3601. .hw.init = &(const struct clk_init_data) {
  3602. .name = "gcc_pcie_2a_slv_q2a_axi_clk",
  3603. .ops = &clk_branch2_ops,
  3604. },
  3605. },
  3606. };
  3607. static struct clk_branch gcc_pcie_2b_aux_clk = {
  3608. .halt_reg = 0x9e028,
  3609. .halt_check = BRANCH_HALT_VOTED,
  3610. .clkr = {
  3611. .enable_reg = 0x52010,
  3612. .enable_mask = BIT(20),
  3613. .hw.init = &(const struct clk_init_data) {
  3614. .name = "gcc_pcie_2b_aux_clk",
  3615. .parent_hws = (const struct clk_hw*[]){
  3616. &gcc_pcie_2b_aux_clk_src.clkr.hw,
  3617. },
  3618. .num_parents = 1,
  3619. .flags = CLK_SET_RATE_PARENT,
  3620. .ops = &clk_branch2_ops,
  3621. },
  3622. },
  3623. };
  3624. static struct clk_branch gcc_pcie_2b_cfg_ahb_clk = {
  3625. .halt_reg = 0x9e024,
  3626. .halt_check = BRANCH_HALT_VOTED,
  3627. .hwcg_reg = 0x9e024,
  3628. .hwcg_bit = 1,
  3629. .clkr = {
  3630. .enable_reg = 0x52010,
  3631. .enable_mask = BIT(19),
  3632. .hw.init = &(const struct clk_init_data) {
  3633. .name = "gcc_pcie_2b_cfg_ahb_clk",
  3634. .ops = &clk_branch2_ops,
  3635. },
  3636. },
  3637. };
  3638. static struct clk_branch gcc_pcie_2b_mstr_axi_clk = {
  3639. .halt_reg = 0x9e01c,
  3640. .halt_check = BRANCH_HALT_SKIP,
  3641. .hwcg_reg = 0x9e01c,
  3642. .hwcg_bit = 1,
  3643. .clkr = {
  3644. .enable_reg = 0x52010,
  3645. .enable_mask = BIT(18),
  3646. .hw.init = &(const struct clk_init_data) {
  3647. .name = "gcc_pcie_2b_mstr_axi_clk",
  3648. .ops = &clk_branch2_ops,
  3649. },
  3650. },
  3651. };
  3652. static struct clk_branch gcc_pcie_2b_pipe_clk = {
  3653. .halt_reg = 0x9e030,
  3654. .halt_check = BRANCH_HALT_SKIP,
  3655. .clkr = {
  3656. .enable_reg = 0x52010,
  3657. .enable_mask = BIT(21),
  3658. .hw.init = &(const struct clk_init_data) {
  3659. .name = "gcc_pcie_2b_pipe_clk",
  3660. .parent_hws = (const struct clk_hw*[]){
  3661. &gcc_pcie_2b_pipe_clk_src.clkr.hw,
  3662. },
  3663. .num_parents = 1,
  3664. .flags = CLK_SET_RATE_PARENT,
  3665. .ops = &clk_branch2_ops,
  3666. },
  3667. },
  3668. };
  3669. static struct clk_branch gcc_pcie_2b_pipediv2_clk = {
  3670. .halt_reg = 0x9e038,
  3671. .halt_check = BRANCH_HALT_SKIP,
  3672. .clkr = {
  3673. .enable_reg = 0x52018,
  3674. .enable_mask = BIT(23),
  3675. .hw.init = &(const struct clk_init_data) {
  3676. .name = "gcc_pcie_2b_pipediv2_clk",
  3677. .parent_hws = (const struct clk_hw*[]){
  3678. &gcc_pcie_2b_pipe_div_clk_src.clkr.hw,
  3679. },
  3680. .num_parents = 1,
  3681. .flags = CLK_SET_RATE_PARENT,
  3682. .ops = &clk_branch2_ops,
  3683. },
  3684. },
  3685. };
  3686. static struct clk_branch gcc_pcie_2b_slv_axi_clk = {
  3687. .halt_reg = 0x9e014,
  3688. .halt_check = BRANCH_HALT_VOTED,
  3689. .hwcg_reg = 0x9e014,
  3690. .hwcg_bit = 1,
  3691. .clkr = {
  3692. .enable_reg = 0x52010,
  3693. .enable_mask = BIT(17),
  3694. .hw.init = &(const struct clk_init_data) {
  3695. .name = "gcc_pcie_2b_slv_axi_clk",
  3696. .ops = &clk_branch2_ops,
  3697. },
  3698. },
  3699. };
  3700. static struct clk_branch gcc_pcie_2b_slv_q2a_axi_clk = {
  3701. .halt_reg = 0x9e010,
  3702. .halt_check = BRANCH_HALT_VOTED,
  3703. .clkr = {
  3704. .enable_reg = 0x52010,
  3705. .enable_mask = BIT(16),
  3706. .hw.init = &(const struct clk_init_data) {
  3707. .name = "gcc_pcie_2b_slv_q2a_axi_clk",
  3708. .ops = &clk_branch2_ops,
  3709. },
  3710. },
  3711. };
  3712. static struct clk_branch gcc_pcie_3a3b_clkref_clk = {
  3713. .halt_reg = 0x8c038,
  3714. .halt_check = BRANCH_HALT,
  3715. .clkr = {
  3716. .enable_reg = 0x8c038,
  3717. .enable_mask = BIT(0),
  3718. .hw.init = &(const struct clk_init_data) {
  3719. .name = "gcc_pcie_3a3b_clkref_clk",
  3720. .ops = &clk_branch2_ops,
  3721. },
  3722. },
  3723. };
  3724. static struct clk_branch gcc_pcie_3a_aux_clk = {
  3725. .halt_reg = 0xa0028,
  3726. .halt_check = BRANCH_HALT_VOTED,
  3727. .clkr = {
  3728. .enable_reg = 0x52010,
  3729. .enable_mask = BIT(27),
  3730. .hw.init = &(const struct clk_init_data) {
  3731. .name = "gcc_pcie_3a_aux_clk",
  3732. .parent_hws = (const struct clk_hw*[]){
  3733. &gcc_pcie_3a_aux_clk_src.clkr.hw,
  3734. },
  3735. .num_parents = 1,
  3736. .flags = CLK_SET_RATE_PARENT,
  3737. .ops = &clk_branch2_ops,
  3738. },
  3739. },
  3740. };
  3741. static struct clk_branch gcc_pcie_3a_cfg_ahb_clk = {
  3742. .halt_reg = 0xa0024,
  3743. .halt_check = BRANCH_HALT_VOTED,
  3744. .hwcg_reg = 0xa0024,
  3745. .hwcg_bit = 1,
  3746. .clkr = {
  3747. .enable_reg = 0x52010,
  3748. .enable_mask = BIT(26),
  3749. .hw.init = &(const struct clk_init_data) {
  3750. .name = "gcc_pcie_3a_cfg_ahb_clk",
  3751. .ops = &clk_branch2_ops,
  3752. },
  3753. },
  3754. };
  3755. static struct clk_branch gcc_pcie_3a_mstr_axi_clk = {
  3756. .halt_reg = 0xa001c,
  3757. .halt_check = BRANCH_HALT_SKIP,
  3758. .hwcg_reg = 0xa001c,
  3759. .hwcg_bit = 1,
  3760. .clkr = {
  3761. .enable_reg = 0x52010,
  3762. .enable_mask = BIT(25),
  3763. .hw.init = &(const struct clk_init_data) {
  3764. .name = "gcc_pcie_3a_mstr_axi_clk",
  3765. .ops = &clk_branch2_ops,
  3766. },
  3767. },
  3768. };
  3769. static struct clk_branch gcc_pcie_3a_pipe_clk = {
  3770. .halt_reg = 0xa0030,
  3771. .halt_check = BRANCH_HALT_SKIP,
  3772. .clkr = {
  3773. .enable_reg = 0x52010,
  3774. .enable_mask = BIT(28),
  3775. .hw.init = &(const struct clk_init_data) {
  3776. .name = "gcc_pcie_3a_pipe_clk",
  3777. .parent_hws = (const struct clk_hw*[]){
  3778. &gcc_pcie_3a_pipe_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_pcie_3a_pipediv2_clk = {
  3787. .halt_reg = 0xa0038,
  3788. .halt_check = BRANCH_HALT_SKIP,
  3789. .clkr = {
  3790. .enable_reg = 0x52018,
  3791. .enable_mask = BIT(24),
  3792. .hw.init = &(const struct clk_init_data) {
  3793. .name = "gcc_pcie_3a_pipediv2_clk",
  3794. .parent_hws = (const struct clk_hw*[]){
  3795. &gcc_pcie_3a_pipe_div_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_pcie_3a_slv_axi_clk = {
  3804. .halt_reg = 0xa0014,
  3805. .halt_check = BRANCH_HALT_VOTED,
  3806. .hwcg_reg = 0xa0014,
  3807. .hwcg_bit = 1,
  3808. .clkr = {
  3809. .enable_reg = 0x52010,
  3810. .enable_mask = BIT(24),
  3811. .hw.init = &(const struct clk_init_data) {
  3812. .name = "gcc_pcie_3a_slv_axi_clk",
  3813. .ops = &clk_branch2_ops,
  3814. },
  3815. },
  3816. };
  3817. static struct clk_branch gcc_pcie_3a_slv_q2a_axi_clk = {
  3818. .halt_reg = 0xa0010,
  3819. .halt_check = BRANCH_HALT_VOTED,
  3820. .clkr = {
  3821. .enable_reg = 0x52010,
  3822. .enable_mask = BIT(23),
  3823. .hw.init = &(const struct clk_init_data) {
  3824. .name = "gcc_pcie_3a_slv_q2a_axi_clk",
  3825. .ops = &clk_branch2_ops,
  3826. },
  3827. },
  3828. };
  3829. static struct clk_branch gcc_pcie_3b_aux_clk = {
  3830. .halt_reg = 0xa2028,
  3831. .halt_check = BRANCH_HALT_VOTED,
  3832. .clkr = {
  3833. .enable_reg = 0x52018,
  3834. .enable_mask = BIT(2),
  3835. .hw.init = &(const struct clk_init_data) {
  3836. .name = "gcc_pcie_3b_aux_clk",
  3837. .parent_hws = (const struct clk_hw*[]){
  3838. &gcc_pcie_3b_aux_clk_src.clkr.hw,
  3839. },
  3840. .num_parents = 1,
  3841. .flags = CLK_SET_RATE_PARENT,
  3842. .ops = &clk_branch2_ops,
  3843. },
  3844. },
  3845. };
  3846. static struct clk_branch gcc_pcie_3b_cfg_ahb_clk = {
  3847. .halt_reg = 0xa2024,
  3848. .halt_check = BRANCH_HALT_VOTED,
  3849. .hwcg_reg = 0xa2024,
  3850. .hwcg_bit = 1,
  3851. .clkr = {
  3852. .enable_reg = 0x52018,
  3853. .enable_mask = BIT(1),
  3854. .hw.init = &(const struct clk_init_data) {
  3855. .name = "gcc_pcie_3b_cfg_ahb_clk",
  3856. .ops = &clk_branch2_ops,
  3857. },
  3858. },
  3859. };
  3860. static struct clk_branch gcc_pcie_3b_mstr_axi_clk = {
  3861. .halt_reg = 0xa201c,
  3862. .halt_check = BRANCH_HALT_SKIP,
  3863. .hwcg_reg = 0xa201c,
  3864. .hwcg_bit = 1,
  3865. .clkr = {
  3866. .enable_reg = 0x52018,
  3867. .enable_mask = BIT(0),
  3868. .hw.init = &(const struct clk_init_data) {
  3869. .name = "gcc_pcie_3b_mstr_axi_clk",
  3870. .ops = &clk_branch2_ops,
  3871. },
  3872. },
  3873. };
  3874. static struct clk_branch gcc_pcie_3b_pipe_clk = {
  3875. .halt_reg = 0xa2030,
  3876. .halt_check = BRANCH_HALT_SKIP,
  3877. .clkr = {
  3878. .enable_reg = 0x52018,
  3879. .enable_mask = BIT(3),
  3880. .hw.init = &(const struct clk_init_data) {
  3881. .name = "gcc_pcie_3b_pipe_clk",
  3882. .parent_hws = (const struct clk_hw*[]){
  3883. &gcc_pcie_3b_pipe_clk_src.clkr.hw,
  3884. },
  3885. .num_parents = 1,
  3886. .flags = CLK_SET_RATE_PARENT,
  3887. .ops = &clk_branch2_ops,
  3888. },
  3889. },
  3890. };
  3891. static struct clk_branch gcc_pcie_3b_pipediv2_clk = {
  3892. .halt_reg = 0xa2038,
  3893. .halt_check = BRANCH_HALT_SKIP,
  3894. .clkr = {
  3895. .enable_reg = 0x52018,
  3896. .enable_mask = BIT(25),
  3897. .hw.init = &(const struct clk_init_data) {
  3898. .name = "gcc_pcie_3b_pipediv2_clk",
  3899. .parent_hws = (const struct clk_hw*[]){
  3900. &gcc_pcie_3b_pipe_div_clk_src.clkr.hw,
  3901. },
  3902. .num_parents = 1,
  3903. .flags = CLK_SET_RATE_PARENT,
  3904. .ops = &clk_branch2_ops,
  3905. },
  3906. },
  3907. };
  3908. static struct clk_branch gcc_pcie_3b_slv_axi_clk = {
  3909. .halt_reg = 0xa2014,
  3910. .halt_check = BRANCH_HALT_VOTED,
  3911. .hwcg_reg = 0xa2014,
  3912. .hwcg_bit = 1,
  3913. .clkr = {
  3914. .enable_reg = 0x52010,
  3915. .enable_mask = BIT(31),
  3916. .hw.init = &(const struct clk_init_data) {
  3917. .name = "gcc_pcie_3b_slv_axi_clk",
  3918. .ops = &clk_branch2_ops,
  3919. },
  3920. },
  3921. };
  3922. static struct clk_branch gcc_pcie_3b_slv_q2a_axi_clk = {
  3923. .halt_reg = 0xa2010,
  3924. .halt_check = BRANCH_HALT_VOTED,
  3925. .clkr = {
  3926. .enable_reg = 0x52010,
  3927. .enable_mask = BIT(30),
  3928. .hw.init = &(const struct clk_init_data) {
  3929. .name = "gcc_pcie_3b_slv_q2a_axi_clk",
  3930. .ops = &clk_branch2_ops,
  3931. },
  3932. },
  3933. };
  3934. static struct clk_branch gcc_pcie_4_aux_clk = {
  3935. .halt_reg = 0x6b028,
  3936. .halt_check = BRANCH_HALT_VOTED,
  3937. .clkr = {
  3938. .enable_reg = 0x52008,
  3939. .enable_mask = BIT(3),
  3940. .hw.init = &(const struct clk_init_data) {
  3941. .name = "gcc_pcie_4_aux_clk",
  3942. .parent_hws = (const struct clk_hw*[]){
  3943. &gcc_pcie_4_aux_clk_src.clkr.hw,
  3944. },
  3945. .num_parents = 1,
  3946. .flags = CLK_SET_RATE_PARENT,
  3947. .ops = &clk_branch2_ops,
  3948. },
  3949. },
  3950. };
  3951. static struct clk_branch gcc_pcie_4_cfg_ahb_clk = {
  3952. .halt_reg = 0x6b024,
  3953. .halt_check = BRANCH_HALT_VOTED,
  3954. .hwcg_reg = 0x6b024,
  3955. .hwcg_bit = 1,
  3956. .clkr = {
  3957. .enable_reg = 0x52008,
  3958. .enable_mask = BIT(2),
  3959. .hw.init = &(const struct clk_init_data) {
  3960. .name = "gcc_pcie_4_cfg_ahb_clk",
  3961. .ops = &clk_branch2_ops,
  3962. },
  3963. },
  3964. };
  3965. static struct clk_branch gcc_pcie_4_clkref_clk = {
  3966. .halt_reg = 0x8c030,
  3967. .halt_check = BRANCH_HALT,
  3968. .clkr = {
  3969. .enable_reg = 0x8c030,
  3970. .enable_mask = BIT(0),
  3971. .hw.init = &(const struct clk_init_data) {
  3972. .name = "gcc_pcie_4_clkref_clk",
  3973. .ops = &clk_branch2_ops,
  3974. },
  3975. },
  3976. };
  3977. static struct clk_branch gcc_pcie_4_mstr_axi_clk = {
  3978. .halt_reg = 0x6b01c,
  3979. .halt_check = BRANCH_HALT_SKIP,
  3980. .hwcg_reg = 0x6b01c,
  3981. .hwcg_bit = 1,
  3982. .clkr = {
  3983. .enable_reg = 0x52008,
  3984. .enable_mask = BIT(1),
  3985. .hw.init = &(const struct clk_init_data) {
  3986. .name = "gcc_pcie_4_mstr_axi_clk",
  3987. .ops = &clk_branch2_ops,
  3988. },
  3989. },
  3990. };
  3991. static struct clk_branch gcc_pcie_4_pipe_clk = {
  3992. .halt_reg = 0x6b030,
  3993. .halt_check = BRANCH_HALT_SKIP,
  3994. .clkr = {
  3995. .enable_reg = 0x52008,
  3996. .enable_mask = BIT(4),
  3997. .hw.init = &(const struct clk_init_data) {
  3998. .name = "gcc_pcie_4_pipe_clk",
  3999. .parent_hws = (const struct clk_hw*[]){
  4000. &gcc_pcie_4_pipe_clk_src.clkr.hw,
  4001. },
  4002. .num_parents = 1,
  4003. .flags = CLK_SET_RATE_PARENT,
  4004. .ops = &clk_branch2_ops,
  4005. },
  4006. },
  4007. };
  4008. static struct clk_branch gcc_pcie_4_pipediv2_clk = {
  4009. .halt_reg = 0x6b038,
  4010. .halt_check = BRANCH_HALT_SKIP,
  4011. .clkr = {
  4012. .enable_reg = 0x52018,
  4013. .enable_mask = BIT(16),
  4014. .hw.init = &(const struct clk_init_data) {
  4015. .name = "gcc_pcie_4_pipediv2_clk",
  4016. .parent_hws = (const struct clk_hw*[]){
  4017. &gcc_pcie_4_pipe_div_clk_src.clkr.hw,
  4018. },
  4019. .num_parents = 1,
  4020. .flags = CLK_SET_RATE_PARENT,
  4021. .ops = &clk_branch2_ops,
  4022. },
  4023. },
  4024. };
  4025. static struct clk_branch gcc_pcie_4_slv_axi_clk = {
  4026. .halt_reg = 0x6b014,
  4027. .halt_check = BRANCH_HALT_VOTED,
  4028. .hwcg_reg = 0x6b014,
  4029. .hwcg_bit = 1,
  4030. .clkr = {
  4031. .enable_reg = 0x52008,
  4032. .enable_mask = BIT(0),
  4033. .hw.init = &(const struct clk_init_data) {
  4034. .name = "gcc_pcie_4_slv_axi_clk",
  4035. .ops = &clk_branch2_ops,
  4036. },
  4037. },
  4038. };
  4039. static struct clk_branch gcc_pcie_4_slv_q2a_axi_clk = {
  4040. .halt_reg = 0x6b010,
  4041. .halt_check = BRANCH_HALT_VOTED,
  4042. .clkr = {
  4043. .enable_reg = 0x52008,
  4044. .enable_mask = BIT(5),
  4045. .hw.init = &(const struct clk_init_data) {
  4046. .name = "gcc_pcie_4_slv_q2a_axi_clk",
  4047. .ops = &clk_branch2_ops,
  4048. },
  4049. },
  4050. };
  4051. static struct clk_branch gcc_pcie_rscc_ahb_clk = {
  4052. .halt_reg = 0xae008,
  4053. .halt_check = BRANCH_HALT_VOTED,
  4054. .hwcg_reg = 0xae008,
  4055. .hwcg_bit = 1,
  4056. .clkr = {
  4057. .enable_reg = 0x52020,
  4058. .enable_mask = BIT(17),
  4059. .hw.init = &(const struct clk_init_data) {
  4060. .name = "gcc_pcie_rscc_ahb_clk",
  4061. .ops = &clk_branch2_ops,
  4062. },
  4063. },
  4064. };
  4065. static struct clk_branch gcc_pcie_rscc_xo_clk = {
  4066. .halt_reg = 0xae004,
  4067. .halt_check = BRANCH_HALT_VOTED,
  4068. .clkr = {
  4069. .enable_reg = 0x52020,
  4070. .enable_mask = BIT(16),
  4071. .hw.init = &(const struct clk_init_data) {
  4072. .name = "gcc_pcie_rscc_xo_clk",
  4073. .parent_hws = (const struct clk_hw*[]){
  4074. &gcc_pcie_rscc_xo_clk_src.clkr.hw,
  4075. },
  4076. .num_parents = 1,
  4077. .flags = CLK_SET_RATE_PARENT,
  4078. .ops = &clk_branch2_ops,
  4079. },
  4080. },
  4081. };
  4082. static struct clk_branch gcc_pcie_throttle_cfg_clk = {
  4083. .halt_reg = 0xa6028,
  4084. .halt_check = BRANCH_HALT_VOTED,
  4085. .clkr = {
  4086. .enable_reg = 0x52020,
  4087. .enable_mask = BIT(15),
  4088. .hw.init = &(const struct clk_init_data) {
  4089. .name = "gcc_pcie_throttle_cfg_clk",
  4090. .ops = &clk_branch2_ops,
  4091. },
  4092. },
  4093. };
  4094. static struct clk_branch gcc_pdm2_clk = {
  4095. .halt_reg = 0x3300c,
  4096. .halt_check = BRANCH_HALT,
  4097. .clkr = {
  4098. .enable_reg = 0x3300c,
  4099. .enable_mask = BIT(0),
  4100. .hw.init = &(const struct clk_init_data) {
  4101. .name = "gcc_pdm2_clk",
  4102. .parent_hws = (const struct clk_hw*[]){
  4103. &gcc_pdm2_clk_src.clkr.hw,
  4104. },
  4105. .num_parents = 1,
  4106. .flags = CLK_SET_RATE_PARENT,
  4107. .ops = &clk_branch2_ops,
  4108. },
  4109. },
  4110. };
  4111. static struct clk_branch gcc_pdm_ahb_clk = {
  4112. .halt_reg = 0x33004,
  4113. .halt_check = BRANCH_HALT_VOTED,
  4114. .hwcg_reg = 0x33004,
  4115. .hwcg_bit = 1,
  4116. .clkr = {
  4117. .enable_reg = 0x33004,
  4118. .enable_mask = BIT(0),
  4119. .hw.init = &(const struct clk_init_data) {
  4120. .name = "gcc_pdm_ahb_clk",
  4121. .ops = &clk_branch2_ops,
  4122. },
  4123. },
  4124. };
  4125. static struct clk_branch gcc_pdm_xo4_clk = {
  4126. .halt_reg = 0x33008,
  4127. .halt_check = BRANCH_HALT,
  4128. .clkr = {
  4129. .enable_reg = 0x33008,
  4130. .enable_mask = BIT(0),
  4131. .hw.init = &(const struct clk_init_data) {
  4132. .name = "gcc_pdm_xo4_clk",
  4133. .ops = &clk_branch2_ops,
  4134. },
  4135. },
  4136. };
  4137. static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
  4138. .halt_reg = 0x26008,
  4139. .halt_check = BRANCH_HALT_VOTED,
  4140. .hwcg_reg = 0x26008,
  4141. .hwcg_bit = 1,
  4142. .clkr = {
  4143. .enable_reg = 0x26008,
  4144. .enable_mask = BIT(0),
  4145. .hw.init = &(const struct clk_init_data) {
  4146. .name = "gcc_qmip_camera_nrt_ahb_clk",
  4147. .ops = &clk_branch2_ops,
  4148. },
  4149. },
  4150. };
  4151. static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
  4152. .halt_reg = 0x2600c,
  4153. .halt_check = BRANCH_HALT_VOTED,
  4154. .hwcg_reg = 0x2600c,
  4155. .hwcg_bit = 1,
  4156. .clkr = {
  4157. .enable_reg = 0x2600c,
  4158. .enable_mask = BIT(0),
  4159. .hw.init = &(const struct clk_init_data) {
  4160. .name = "gcc_qmip_camera_rt_ahb_clk",
  4161. .ops = &clk_branch2_ops,
  4162. },
  4163. },
  4164. };
  4165. static struct clk_branch gcc_qmip_disp1_ahb_clk = {
  4166. .halt_reg = 0xbb008,
  4167. .halt_check = BRANCH_HALT_VOTED,
  4168. .hwcg_reg = 0xbb008,
  4169. .hwcg_bit = 1,
  4170. .clkr = {
  4171. .enable_reg = 0xbb008,
  4172. .enable_mask = BIT(0),
  4173. .hw.init = &(const struct clk_init_data) {
  4174. .name = "gcc_qmip_disp1_ahb_clk",
  4175. .ops = &clk_branch2_ops,
  4176. },
  4177. },
  4178. };
  4179. static struct clk_branch gcc_qmip_disp1_rot_ahb_clk = {
  4180. .halt_reg = 0xbb00c,
  4181. .halt_check = BRANCH_HALT_VOTED,
  4182. .hwcg_reg = 0xbb00c,
  4183. .hwcg_bit = 1,
  4184. .clkr = {
  4185. .enable_reg = 0xbb00c,
  4186. .enable_mask = BIT(0),
  4187. .hw.init = &(const struct clk_init_data) {
  4188. .name = "gcc_qmip_disp1_rot_ahb_clk",
  4189. .ops = &clk_branch2_ops,
  4190. },
  4191. },
  4192. };
  4193. static struct clk_branch gcc_qmip_disp_ahb_clk = {
  4194. .halt_reg = 0x27008,
  4195. .halt_check = BRANCH_HALT_VOTED,
  4196. .hwcg_reg = 0x27008,
  4197. .hwcg_bit = 1,
  4198. .clkr = {
  4199. .enable_reg = 0x27008,
  4200. .enable_mask = BIT(0),
  4201. .hw.init = &(const struct clk_init_data) {
  4202. .name = "gcc_qmip_disp_ahb_clk",
  4203. .ops = &clk_branch2_ops,
  4204. },
  4205. },
  4206. };
  4207. static struct clk_branch gcc_qmip_disp_rot_ahb_clk = {
  4208. .halt_reg = 0x2700c,
  4209. .halt_check = BRANCH_HALT_VOTED,
  4210. .hwcg_reg = 0x2700c,
  4211. .hwcg_bit = 1,
  4212. .clkr = {
  4213. .enable_reg = 0x2700c,
  4214. .enable_mask = BIT(0),
  4215. .hw.init = &(const struct clk_init_data) {
  4216. .name = "gcc_qmip_disp_rot_ahb_clk",
  4217. .ops = &clk_branch2_ops,
  4218. },
  4219. },
  4220. };
  4221. static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
  4222. .halt_reg = 0x28008,
  4223. .halt_check = BRANCH_HALT_VOTED,
  4224. .hwcg_reg = 0x28008,
  4225. .hwcg_bit = 1,
  4226. .clkr = {
  4227. .enable_reg = 0x28008,
  4228. .enable_mask = BIT(0),
  4229. .hw.init = &(const struct clk_init_data) {
  4230. .name = "gcc_qmip_video_cvp_ahb_clk",
  4231. .ops = &clk_branch2_ops,
  4232. },
  4233. },
  4234. };
  4235. static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
  4236. .halt_reg = 0x2800c,
  4237. .halt_check = BRANCH_HALT_VOTED,
  4238. .hwcg_reg = 0x2800c,
  4239. .hwcg_bit = 1,
  4240. .clkr = {
  4241. .enable_reg = 0x2800c,
  4242. .enable_mask = BIT(0),
  4243. .hw.init = &(const struct clk_init_data) {
  4244. .name = "gcc_qmip_video_vcodec_ahb_clk",
  4245. .ops = &clk_branch2_ops,
  4246. },
  4247. },
  4248. };
  4249. static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
  4250. .halt_reg = 0x17014,
  4251. .halt_check = BRANCH_HALT_VOTED,
  4252. .clkr = {
  4253. .enable_reg = 0x52008,
  4254. .enable_mask = BIT(9),
  4255. .hw.init = &(const struct clk_init_data) {
  4256. .name = "gcc_qupv3_wrap0_core_2x_clk",
  4257. .ops = &clk_branch2_ops,
  4258. },
  4259. },
  4260. };
  4261. static struct clk_branch gcc_qupv3_wrap0_core_clk = {
  4262. .halt_reg = 0x1700c,
  4263. .halt_check = BRANCH_HALT_VOTED,
  4264. .clkr = {
  4265. .enable_reg = 0x52008,
  4266. .enable_mask = BIT(8),
  4267. .hw.init = &(const struct clk_init_data) {
  4268. .name = "gcc_qupv3_wrap0_core_clk",
  4269. .ops = &clk_branch2_ops,
  4270. },
  4271. },
  4272. };
  4273. static struct clk_branch gcc_qupv3_wrap0_qspi0_clk = {
  4274. .halt_reg = 0x17ac4,
  4275. .halt_check = BRANCH_HALT_VOTED,
  4276. .clkr = {
  4277. .enable_reg = 0x52020,
  4278. .enable_mask = BIT(0),
  4279. .hw.init = &(const struct clk_init_data) {
  4280. .name = "gcc_qupv3_wrap0_qspi0_clk",
  4281. .parent_hws = (const struct clk_hw*[]){
  4282. &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
  4283. },
  4284. .num_parents = 1,
  4285. .flags = CLK_SET_RATE_PARENT,
  4286. .ops = &clk_branch2_ops,
  4287. },
  4288. },
  4289. };
  4290. static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
  4291. .halt_reg = 0x17144,
  4292. .halt_check = BRANCH_HALT_VOTED,
  4293. .clkr = {
  4294. .enable_reg = 0x52008,
  4295. .enable_mask = BIT(10),
  4296. .hw.init = &(const struct clk_init_data) {
  4297. .name = "gcc_qupv3_wrap0_s0_clk",
  4298. .parent_hws = (const struct clk_hw*[]){
  4299. &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
  4300. },
  4301. .num_parents = 1,
  4302. .flags = CLK_SET_RATE_PARENT,
  4303. .ops = &clk_branch2_ops,
  4304. },
  4305. },
  4306. };
  4307. static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
  4308. .halt_reg = 0x17274,
  4309. .halt_check = BRANCH_HALT_VOTED,
  4310. .clkr = {
  4311. .enable_reg = 0x52008,
  4312. .enable_mask = BIT(11),
  4313. .hw.init = &(const struct clk_init_data) {
  4314. .name = "gcc_qupv3_wrap0_s1_clk",
  4315. .parent_hws = (const struct clk_hw*[]){
  4316. &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
  4317. },
  4318. .num_parents = 1,
  4319. .flags = CLK_SET_RATE_PARENT,
  4320. .ops = &clk_branch2_ops,
  4321. },
  4322. },
  4323. };
  4324. static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
  4325. .halt_reg = 0x173a4,
  4326. .halt_check = BRANCH_HALT_VOTED,
  4327. .clkr = {
  4328. .enable_reg = 0x52008,
  4329. .enable_mask = BIT(12),
  4330. .hw.init = &(const struct clk_init_data) {
  4331. .name = "gcc_qupv3_wrap0_s2_clk",
  4332. .parent_hws = (const struct clk_hw*[]){
  4333. &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
  4334. },
  4335. .num_parents = 1,
  4336. .flags = CLK_SET_RATE_PARENT,
  4337. .ops = &clk_branch2_ops,
  4338. },
  4339. },
  4340. };
  4341. static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
  4342. .halt_reg = 0x174d4,
  4343. .halt_check = BRANCH_HALT_VOTED,
  4344. .clkr = {
  4345. .enable_reg = 0x52008,
  4346. .enable_mask = BIT(13),
  4347. .hw.init = &(const struct clk_init_data) {
  4348. .name = "gcc_qupv3_wrap0_s3_clk",
  4349. .parent_hws = (const struct clk_hw*[]){
  4350. &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
  4351. },
  4352. .num_parents = 1,
  4353. .flags = CLK_SET_RATE_PARENT,
  4354. .ops = &clk_branch2_ops,
  4355. },
  4356. },
  4357. };
  4358. static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
  4359. .halt_reg = 0x17604,
  4360. .halt_check = BRANCH_HALT_VOTED,
  4361. .clkr = {
  4362. .enable_reg = 0x52008,
  4363. .enable_mask = BIT(14),
  4364. .hw.init = &(const struct clk_init_data) {
  4365. .name = "gcc_qupv3_wrap0_s4_clk",
  4366. .parent_hws = (const struct clk_hw*[]){
  4367. &gcc_qupv3_wrap0_s4_div_clk_src.clkr.hw,
  4368. },
  4369. .num_parents = 1,
  4370. .flags = CLK_SET_RATE_PARENT,
  4371. .ops = &clk_branch2_ops,
  4372. },
  4373. },
  4374. };
  4375. static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
  4376. .halt_reg = 0x17734,
  4377. .halt_check = BRANCH_HALT_VOTED,
  4378. .clkr = {
  4379. .enable_reg = 0x52008,
  4380. .enable_mask = BIT(15),
  4381. .hw.init = &(const struct clk_init_data) {
  4382. .name = "gcc_qupv3_wrap0_s5_clk",
  4383. .parent_hws = (const struct clk_hw*[]){
  4384. &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
  4385. },
  4386. .num_parents = 1,
  4387. .flags = CLK_SET_RATE_PARENT,
  4388. .ops = &clk_branch2_ops,
  4389. },
  4390. },
  4391. };
  4392. static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
  4393. .halt_reg = 0x17864,
  4394. .halt_check = BRANCH_HALT_VOTED,
  4395. .clkr = {
  4396. .enable_reg = 0x52008,
  4397. .enable_mask = BIT(16),
  4398. .hw.init = &(const struct clk_init_data) {
  4399. .name = "gcc_qupv3_wrap0_s6_clk",
  4400. .parent_hws = (const struct clk_hw*[]){
  4401. &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
  4402. },
  4403. .num_parents = 1,
  4404. .flags = CLK_SET_RATE_PARENT,
  4405. .ops = &clk_branch2_ops,
  4406. },
  4407. },
  4408. };
  4409. static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
  4410. .halt_reg = 0x17994,
  4411. .halt_check = BRANCH_HALT_VOTED,
  4412. .clkr = {
  4413. .enable_reg = 0x52008,
  4414. .enable_mask = BIT(17),
  4415. .hw.init = &(const struct clk_init_data) {
  4416. .name = "gcc_qupv3_wrap0_s7_clk",
  4417. .parent_hws = (const struct clk_hw*[]){
  4418. &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
  4419. },
  4420. .num_parents = 1,
  4421. .flags = CLK_SET_RATE_PARENT,
  4422. .ops = &clk_branch2_ops,
  4423. },
  4424. },
  4425. };
  4426. static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
  4427. .halt_reg = 0x18014,
  4428. .halt_check = BRANCH_HALT_VOTED,
  4429. .clkr = {
  4430. .enable_reg = 0x52008,
  4431. .enable_mask = BIT(18),
  4432. .hw.init = &(const struct clk_init_data) {
  4433. .name = "gcc_qupv3_wrap1_core_2x_clk",
  4434. .ops = &clk_branch2_ops,
  4435. },
  4436. },
  4437. };
  4438. static struct clk_branch gcc_qupv3_wrap1_core_clk = {
  4439. .halt_reg = 0x1800c,
  4440. .halt_check = BRANCH_HALT_VOTED,
  4441. .clkr = {
  4442. .enable_reg = 0x52008,
  4443. .enable_mask = BIT(19),
  4444. .hw.init = &(const struct clk_init_data) {
  4445. .name = "gcc_qupv3_wrap1_core_clk",
  4446. .ops = &clk_branch2_ops,
  4447. },
  4448. },
  4449. };
  4450. static struct clk_branch gcc_qupv3_wrap1_qspi0_clk = {
  4451. .halt_reg = 0x18ac4,
  4452. .halt_check = BRANCH_HALT_VOTED,
  4453. .clkr = {
  4454. .enable_reg = 0x52020,
  4455. .enable_mask = BIT(2),
  4456. .hw.init = &(const struct clk_init_data) {
  4457. .name = "gcc_qupv3_wrap1_qspi0_clk",
  4458. .parent_hws = (const struct clk_hw*[]){
  4459. &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
  4460. },
  4461. .num_parents = 1,
  4462. .flags = CLK_SET_RATE_PARENT,
  4463. .ops = &clk_branch2_ops,
  4464. },
  4465. },
  4466. };
  4467. static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
  4468. .halt_reg = 0x18144,
  4469. .halt_check = BRANCH_HALT_VOTED,
  4470. .clkr = {
  4471. .enable_reg = 0x52008,
  4472. .enable_mask = BIT(22),
  4473. .hw.init = &(const struct clk_init_data) {
  4474. .name = "gcc_qupv3_wrap1_s0_clk",
  4475. .parent_hws = (const struct clk_hw*[]){
  4476. &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
  4477. },
  4478. .num_parents = 1,
  4479. .flags = CLK_SET_RATE_PARENT,
  4480. .ops = &clk_branch2_ops,
  4481. },
  4482. },
  4483. };
  4484. static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
  4485. .halt_reg = 0x18274,
  4486. .halt_check = BRANCH_HALT_VOTED,
  4487. .clkr = {
  4488. .enable_reg = 0x52008,
  4489. .enable_mask = BIT(23),
  4490. .hw.init = &(const struct clk_init_data) {
  4491. .name = "gcc_qupv3_wrap1_s1_clk",
  4492. .parent_hws = (const struct clk_hw*[]){
  4493. &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
  4494. },
  4495. .num_parents = 1,
  4496. .flags = CLK_SET_RATE_PARENT,
  4497. .ops = &clk_branch2_ops,
  4498. },
  4499. },
  4500. };
  4501. static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
  4502. .halt_reg = 0x183a4,
  4503. .halt_check = BRANCH_HALT_VOTED,
  4504. .clkr = {
  4505. .enable_reg = 0x52008,
  4506. .enable_mask = BIT(24),
  4507. .hw.init = &(const struct clk_init_data) {
  4508. .name = "gcc_qupv3_wrap1_s2_clk",
  4509. .parent_hws = (const struct clk_hw*[]){
  4510. &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
  4511. },
  4512. .num_parents = 1,
  4513. .flags = CLK_SET_RATE_PARENT,
  4514. .ops = &clk_branch2_ops,
  4515. },
  4516. },
  4517. };
  4518. static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
  4519. .halt_reg = 0x184d4,
  4520. .halt_check = BRANCH_HALT_VOTED,
  4521. .clkr = {
  4522. .enable_reg = 0x52008,
  4523. .enable_mask = BIT(25),
  4524. .hw.init = &(const struct clk_init_data) {
  4525. .name = "gcc_qupv3_wrap1_s3_clk",
  4526. .parent_hws = (const struct clk_hw*[]){
  4527. &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
  4528. },
  4529. .num_parents = 1,
  4530. .flags = CLK_SET_RATE_PARENT,
  4531. .ops = &clk_branch2_ops,
  4532. },
  4533. },
  4534. };
  4535. static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
  4536. .halt_reg = 0x18604,
  4537. .halt_check = BRANCH_HALT_VOTED,
  4538. .clkr = {
  4539. .enable_reg = 0x52008,
  4540. .enable_mask = BIT(26),
  4541. .hw.init = &(const struct clk_init_data) {
  4542. .name = "gcc_qupv3_wrap1_s4_clk",
  4543. .parent_hws = (const struct clk_hw*[]){
  4544. &gcc_qupv3_wrap1_s4_div_clk_src.clkr.hw,
  4545. },
  4546. .num_parents = 1,
  4547. .flags = CLK_SET_RATE_PARENT,
  4548. .ops = &clk_branch2_ops,
  4549. },
  4550. },
  4551. };
  4552. static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
  4553. .halt_reg = 0x18734,
  4554. .halt_check = BRANCH_HALT_VOTED,
  4555. .clkr = {
  4556. .enable_reg = 0x52008,
  4557. .enable_mask = BIT(27),
  4558. .hw.init = &(const struct clk_init_data) {
  4559. .name = "gcc_qupv3_wrap1_s5_clk",
  4560. .parent_hws = (const struct clk_hw*[]){
  4561. &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
  4562. },
  4563. .num_parents = 1,
  4564. .flags = CLK_SET_RATE_PARENT,
  4565. .ops = &clk_branch2_ops,
  4566. },
  4567. },
  4568. };
  4569. static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
  4570. .halt_reg = 0x18864,
  4571. .halt_check = BRANCH_HALT_VOTED,
  4572. .clkr = {
  4573. .enable_reg = 0x52018,
  4574. .enable_mask = BIT(27),
  4575. .hw.init = &(const struct clk_init_data) {
  4576. .name = "gcc_qupv3_wrap1_s6_clk",
  4577. .parent_hws = (const struct clk_hw*[]){
  4578. &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
  4579. },
  4580. .num_parents = 1,
  4581. .flags = CLK_SET_RATE_PARENT,
  4582. .ops = &clk_branch2_ops,
  4583. },
  4584. },
  4585. };
  4586. static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
  4587. .halt_reg = 0x18994,
  4588. .halt_check = BRANCH_HALT_VOTED,
  4589. .clkr = {
  4590. .enable_reg = 0x52018,
  4591. .enable_mask = BIT(28),
  4592. .hw.init = &(const struct clk_init_data) {
  4593. .name = "gcc_qupv3_wrap1_s7_clk",
  4594. .parent_hws = (const struct clk_hw*[]){
  4595. &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
  4596. },
  4597. .num_parents = 1,
  4598. .flags = CLK_SET_RATE_PARENT,
  4599. .ops = &clk_branch2_ops,
  4600. },
  4601. },
  4602. };
  4603. static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
  4604. .halt_reg = 0x1e014,
  4605. .halt_check = BRANCH_HALT_VOTED,
  4606. .clkr = {
  4607. .enable_reg = 0x52010,
  4608. .enable_mask = BIT(3),
  4609. .hw.init = &(const struct clk_init_data) {
  4610. .name = "gcc_qupv3_wrap2_core_2x_clk",
  4611. .ops = &clk_branch2_ops,
  4612. },
  4613. },
  4614. };
  4615. static struct clk_branch gcc_qupv3_wrap2_core_clk = {
  4616. .halt_reg = 0x1e00c,
  4617. .halt_check = BRANCH_HALT_VOTED,
  4618. .clkr = {
  4619. .enable_reg = 0x52010,
  4620. .enable_mask = BIT(0),
  4621. .hw.init = &(const struct clk_init_data) {
  4622. .name = "gcc_qupv3_wrap2_core_clk",
  4623. .ops = &clk_branch2_ops,
  4624. },
  4625. },
  4626. };
  4627. static struct clk_branch gcc_qupv3_wrap2_qspi0_clk = {
  4628. .halt_reg = 0x1eac4,
  4629. .halt_check = BRANCH_HALT_VOTED,
  4630. .clkr = {
  4631. .enable_reg = 0x52020,
  4632. .enable_mask = BIT(4),
  4633. .hw.init = &(const struct clk_init_data) {
  4634. .name = "gcc_qupv3_wrap2_qspi0_clk",
  4635. .parent_hws = (const struct clk_hw*[]){
  4636. &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
  4637. },
  4638. .num_parents = 1,
  4639. .flags = CLK_SET_RATE_PARENT,
  4640. .ops = &clk_branch2_ops,
  4641. },
  4642. },
  4643. };
  4644. static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
  4645. .halt_reg = 0x1e144,
  4646. .halt_check = BRANCH_HALT_VOTED,
  4647. .clkr = {
  4648. .enable_reg = 0x52010,
  4649. .enable_mask = BIT(4),
  4650. .hw.init = &(const struct clk_init_data) {
  4651. .name = "gcc_qupv3_wrap2_s0_clk",
  4652. .parent_hws = (const struct clk_hw*[]){
  4653. &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
  4654. },
  4655. .num_parents = 1,
  4656. .flags = CLK_SET_RATE_PARENT,
  4657. .ops = &clk_branch2_ops,
  4658. },
  4659. },
  4660. };
  4661. static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
  4662. .halt_reg = 0x1e274,
  4663. .halt_check = BRANCH_HALT_VOTED,
  4664. .clkr = {
  4665. .enable_reg = 0x52010,
  4666. .enable_mask = BIT(5),
  4667. .hw.init = &(const struct clk_init_data) {
  4668. .name = "gcc_qupv3_wrap2_s1_clk",
  4669. .parent_hws = (const struct clk_hw*[]){
  4670. &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
  4671. },
  4672. .num_parents = 1,
  4673. .flags = CLK_SET_RATE_PARENT,
  4674. .ops = &clk_branch2_ops,
  4675. },
  4676. },
  4677. };
  4678. static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
  4679. .halt_reg = 0x1e3a4,
  4680. .halt_check = BRANCH_HALT_VOTED,
  4681. .clkr = {
  4682. .enable_reg = 0x52010,
  4683. .enable_mask = BIT(6),
  4684. .hw.init = &(const struct clk_init_data) {
  4685. .name = "gcc_qupv3_wrap2_s2_clk",
  4686. .parent_hws = (const struct clk_hw*[]){
  4687. &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
  4688. },
  4689. .num_parents = 1,
  4690. .flags = CLK_SET_RATE_PARENT,
  4691. .ops = &clk_branch2_ops,
  4692. },
  4693. },
  4694. };
  4695. static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
  4696. .halt_reg = 0x1e4d4,
  4697. .halt_check = BRANCH_HALT_VOTED,
  4698. .clkr = {
  4699. .enable_reg = 0x52010,
  4700. .enable_mask = BIT(7),
  4701. .hw.init = &(const struct clk_init_data) {
  4702. .name = "gcc_qupv3_wrap2_s3_clk",
  4703. .parent_hws = (const struct clk_hw*[]){
  4704. &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
  4705. },
  4706. .num_parents = 1,
  4707. .flags = CLK_SET_RATE_PARENT,
  4708. .ops = &clk_branch2_ops,
  4709. },
  4710. },
  4711. };
  4712. static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
  4713. .halt_reg = 0x1e604,
  4714. .halt_check = BRANCH_HALT_VOTED,
  4715. .clkr = {
  4716. .enable_reg = 0x52010,
  4717. .enable_mask = BIT(8),
  4718. .hw.init = &(const struct clk_init_data) {
  4719. .name = "gcc_qupv3_wrap2_s4_clk",
  4720. .parent_hws = (const struct clk_hw*[]){
  4721. &gcc_qupv3_wrap2_s4_div_clk_src.clkr.hw,
  4722. },
  4723. .num_parents = 1,
  4724. .flags = CLK_SET_RATE_PARENT,
  4725. .ops = &clk_branch2_ops,
  4726. },
  4727. },
  4728. };
  4729. static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
  4730. .halt_reg = 0x1e734,
  4731. .halt_check = BRANCH_HALT_VOTED,
  4732. .clkr = {
  4733. .enable_reg = 0x52010,
  4734. .enable_mask = BIT(9),
  4735. .hw.init = &(const struct clk_init_data) {
  4736. .name = "gcc_qupv3_wrap2_s5_clk",
  4737. .parent_hws = (const struct clk_hw*[]){
  4738. &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
  4739. },
  4740. .num_parents = 1,
  4741. .flags = CLK_SET_RATE_PARENT,
  4742. .ops = &clk_branch2_ops,
  4743. },
  4744. },
  4745. };
  4746. static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
  4747. .halt_reg = 0x1e864,
  4748. .halt_check = BRANCH_HALT_VOTED,
  4749. .clkr = {
  4750. .enable_reg = 0x52018,
  4751. .enable_mask = BIT(29),
  4752. .hw.init = &(const struct clk_init_data) {
  4753. .name = "gcc_qupv3_wrap2_s6_clk",
  4754. .parent_hws = (const struct clk_hw*[]){
  4755. &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
  4756. },
  4757. .num_parents = 1,
  4758. .flags = CLK_SET_RATE_PARENT,
  4759. .ops = &clk_branch2_ops,
  4760. },
  4761. },
  4762. };
  4763. static struct clk_branch gcc_qupv3_wrap2_s7_clk = {
  4764. .halt_reg = 0x1e994,
  4765. .halt_check = BRANCH_HALT_VOTED,
  4766. .clkr = {
  4767. .enable_reg = 0x52018,
  4768. .enable_mask = BIT(30),
  4769. .hw.init = &(const struct clk_init_data) {
  4770. .name = "gcc_qupv3_wrap2_s7_clk",
  4771. .parent_hws = (const struct clk_hw*[]){
  4772. &gcc_qupv3_wrap2_s7_clk_src.clkr.hw,
  4773. },
  4774. .num_parents = 1,
  4775. .flags = CLK_SET_RATE_PARENT,
  4776. .ops = &clk_branch2_ops,
  4777. },
  4778. },
  4779. };
  4780. static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
  4781. .halt_reg = 0x17004,
  4782. .halt_check = BRANCH_HALT_VOTED,
  4783. .hwcg_reg = 0x17004,
  4784. .hwcg_bit = 1,
  4785. .clkr = {
  4786. .enable_reg = 0x52008,
  4787. .enable_mask = BIT(6),
  4788. .hw.init = &(const struct clk_init_data) {
  4789. .name = "gcc_qupv3_wrap_0_m_ahb_clk",
  4790. .ops = &clk_branch2_ops,
  4791. },
  4792. },
  4793. };
  4794. static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
  4795. .halt_reg = 0x17008,
  4796. .halt_check = BRANCH_HALT_VOTED,
  4797. .hwcg_reg = 0x17008,
  4798. .hwcg_bit = 1,
  4799. .clkr = {
  4800. .enable_reg = 0x52008,
  4801. .enable_mask = BIT(7),
  4802. .hw.init = &(const struct clk_init_data) {
  4803. .name = "gcc_qupv3_wrap_0_s_ahb_clk",
  4804. .ops = &clk_branch2_ops,
  4805. },
  4806. },
  4807. };
  4808. static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
  4809. .halt_reg = 0x18004,
  4810. .halt_check = BRANCH_HALT_VOTED,
  4811. .hwcg_reg = 0x18004,
  4812. .hwcg_bit = 1,
  4813. .clkr = {
  4814. .enable_reg = 0x52008,
  4815. .enable_mask = BIT(20),
  4816. .hw.init = &(const struct clk_init_data) {
  4817. .name = "gcc_qupv3_wrap_1_m_ahb_clk",
  4818. .ops = &clk_branch2_ops,
  4819. },
  4820. },
  4821. };
  4822. static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
  4823. .halt_reg = 0x18008,
  4824. .halt_check = BRANCH_HALT_VOTED,
  4825. .hwcg_reg = 0x18008,
  4826. .hwcg_bit = 1,
  4827. .clkr = {
  4828. .enable_reg = 0x52008,
  4829. .enable_mask = BIT(21),
  4830. .hw.init = &(const struct clk_init_data) {
  4831. .name = "gcc_qupv3_wrap_1_s_ahb_clk",
  4832. .ops = &clk_branch2_ops,
  4833. },
  4834. },
  4835. };
  4836. static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
  4837. .halt_reg = 0x1e004,
  4838. .halt_check = BRANCH_HALT_VOTED,
  4839. .hwcg_reg = 0x1e004,
  4840. .hwcg_bit = 1,
  4841. .clkr = {
  4842. .enable_reg = 0x52010,
  4843. .enable_mask = BIT(2),
  4844. .hw.init = &(const struct clk_init_data) {
  4845. .name = "gcc_qupv3_wrap_2_m_ahb_clk",
  4846. .ops = &clk_branch2_ops,
  4847. },
  4848. },
  4849. };
  4850. static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
  4851. .halt_reg = 0x1e008,
  4852. .halt_check = BRANCH_HALT_VOTED,
  4853. .hwcg_reg = 0x1e008,
  4854. .hwcg_bit = 1,
  4855. .clkr = {
  4856. .enable_reg = 0x52010,
  4857. .enable_mask = BIT(1),
  4858. .hw.init = &(const struct clk_init_data) {
  4859. .name = "gcc_qupv3_wrap_2_s_ahb_clk",
  4860. .ops = &clk_branch2_ops,
  4861. },
  4862. },
  4863. };
  4864. static struct clk_branch gcc_sdcc2_ahb_clk = {
  4865. .halt_reg = 0x14008,
  4866. .halt_check = BRANCH_HALT,
  4867. .clkr = {
  4868. .enable_reg = 0x14008,
  4869. .enable_mask = BIT(0),
  4870. .hw.init = &(const struct clk_init_data) {
  4871. .name = "gcc_sdcc2_ahb_clk",
  4872. .ops = &clk_branch2_ops,
  4873. },
  4874. },
  4875. };
  4876. static struct clk_branch gcc_sdcc2_apps_clk = {
  4877. .halt_reg = 0x14004,
  4878. .halt_check = BRANCH_HALT,
  4879. .clkr = {
  4880. .enable_reg = 0x14004,
  4881. .enable_mask = BIT(0),
  4882. .hw.init = &(const struct clk_init_data) {
  4883. .name = "gcc_sdcc2_apps_clk",
  4884. .parent_hws = (const struct clk_hw*[]){
  4885. &gcc_sdcc2_apps_clk_src.clkr.hw,
  4886. },
  4887. .num_parents = 1,
  4888. .flags = CLK_SET_RATE_PARENT,
  4889. .ops = &clk_branch2_ops,
  4890. },
  4891. },
  4892. };
  4893. static struct clk_branch gcc_sdcc4_ahb_clk = {
  4894. .halt_reg = 0x16008,
  4895. .halt_check = BRANCH_HALT,
  4896. .clkr = {
  4897. .enable_reg = 0x16008,
  4898. .enable_mask = BIT(0),
  4899. .hw.init = &(const struct clk_init_data) {
  4900. .name = "gcc_sdcc4_ahb_clk",
  4901. .ops = &clk_branch2_ops,
  4902. },
  4903. },
  4904. };
  4905. static struct clk_branch gcc_sdcc4_apps_clk = {
  4906. .halt_reg = 0x16004,
  4907. .halt_check = BRANCH_HALT,
  4908. .clkr = {
  4909. .enable_reg = 0x16004,
  4910. .enable_mask = BIT(0),
  4911. .hw.init = &(const struct clk_init_data) {
  4912. .name = "gcc_sdcc4_apps_clk",
  4913. .parent_hws = (const struct clk_hw*[]){
  4914. &gcc_sdcc4_apps_clk_src.clkr.hw,
  4915. },
  4916. .num_parents = 1,
  4917. .flags = CLK_SET_RATE_PARENT,
  4918. .ops = &clk_branch2_ops,
  4919. },
  4920. },
  4921. };
  4922. static struct clk_branch gcc_sys_noc_usb_axi_clk = {
  4923. .halt_reg = 0x5d000,
  4924. .halt_check = BRANCH_HALT_VOTED,
  4925. .hwcg_reg = 0x5d000,
  4926. .hwcg_bit = 1,
  4927. .clkr = {
  4928. .enable_reg = 0x5d000,
  4929. .enable_mask = BIT(0),
  4930. .hw.init = &(const struct clk_init_data) {
  4931. .name = "gcc_sys_noc_usb_axi_clk",
  4932. .ops = &clk_branch2_ops,
  4933. },
  4934. },
  4935. };
  4936. static struct clk_branch gcc_ufs_1_card_clkref_clk = {
  4937. .halt_reg = 0x8c000,
  4938. .halt_check = BRANCH_HALT,
  4939. .clkr = {
  4940. .enable_reg = 0x8c000,
  4941. .enable_mask = BIT(0),
  4942. .hw.init = &(const struct clk_init_data) {
  4943. .name = "gcc_ufs_1_card_clkref_clk",
  4944. .parent_data = &gcc_parent_data_tcxo,
  4945. .num_parents = 1,
  4946. .ops = &clk_branch2_ops,
  4947. },
  4948. },
  4949. };
  4950. static struct clk_branch gcc_ufs_card_ahb_clk = {
  4951. .halt_reg = 0x75018,
  4952. .halt_check = BRANCH_HALT_VOTED,
  4953. .hwcg_reg = 0x75018,
  4954. .hwcg_bit = 1,
  4955. .clkr = {
  4956. .enable_reg = 0x75018,
  4957. .enable_mask = BIT(0),
  4958. .hw.init = &(const struct clk_init_data) {
  4959. .name = "gcc_ufs_card_ahb_clk",
  4960. .ops = &clk_branch2_ops,
  4961. },
  4962. },
  4963. };
  4964. static struct clk_branch gcc_ufs_card_axi_clk = {
  4965. .halt_reg = 0x75010,
  4966. .halt_check = BRANCH_HALT_VOTED,
  4967. .hwcg_reg = 0x75010,
  4968. .hwcg_bit = 1,
  4969. .clkr = {
  4970. .enable_reg = 0x75010,
  4971. .enable_mask = BIT(0),
  4972. .hw.init = &(const struct clk_init_data) {
  4973. .name = "gcc_ufs_card_axi_clk",
  4974. .parent_hws = (const struct clk_hw*[]){
  4975. &gcc_ufs_card_axi_clk_src.clkr.hw,
  4976. },
  4977. .num_parents = 1,
  4978. .flags = CLK_SET_RATE_PARENT,
  4979. .ops = &clk_branch2_ops,
  4980. },
  4981. },
  4982. };
  4983. static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
  4984. .halt_reg = 0x75010,
  4985. .halt_check = BRANCH_HALT_VOTED,
  4986. .hwcg_reg = 0x75010,
  4987. .hwcg_bit = 1,
  4988. .clkr = {
  4989. .enable_reg = 0x75010,
  4990. .enable_mask = BIT(1),
  4991. .hw.init = &(const struct clk_init_data) {
  4992. .name = "gcc_ufs_card_axi_hw_ctl_clk",
  4993. .parent_hws = (const struct clk_hw*[]){
  4994. &gcc_ufs_card_axi_clk_src.clkr.hw,
  4995. },
  4996. .num_parents = 1,
  4997. .flags = CLK_SET_RATE_PARENT,
  4998. .ops = &clk_branch2_ops,
  4999. },
  5000. },
  5001. };
  5002. static struct clk_branch gcc_ufs_card_clkref_clk = {
  5003. .halt_reg = 0x8c054,
  5004. .halt_check = BRANCH_HALT,
  5005. .clkr = {
  5006. .enable_reg = 0x8c054,
  5007. .enable_mask = BIT(0),
  5008. .hw.init = &(const struct clk_init_data) {
  5009. .name = "gcc_ufs_card_clkref_clk",
  5010. .parent_data = &gcc_parent_data_tcxo,
  5011. .num_parents = 1,
  5012. .ops = &clk_branch2_ops,
  5013. },
  5014. },
  5015. };
  5016. static struct clk_branch gcc_ufs_card_ice_core_clk = {
  5017. .halt_reg = 0x75064,
  5018. .halt_check = BRANCH_HALT_VOTED,
  5019. .hwcg_reg = 0x75064,
  5020. .hwcg_bit = 1,
  5021. .clkr = {
  5022. .enable_reg = 0x75064,
  5023. .enable_mask = BIT(0),
  5024. .hw.init = &(const struct clk_init_data) {
  5025. .name = "gcc_ufs_card_ice_core_clk",
  5026. .parent_hws = (const struct clk_hw*[]){
  5027. &gcc_ufs_card_ice_core_clk_src.clkr.hw,
  5028. },
  5029. .num_parents = 1,
  5030. .flags = CLK_SET_RATE_PARENT,
  5031. .ops = &clk_branch2_ops,
  5032. },
  5033. },
  5034. };
  5035. static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
  5036. .halt_reg = 0x75064,
  5037. .halt_check = BRANCH_HALT_VOTED,
  5038. .hwcg_reg = 0x75064,
  5039. .hwcg_bit = 1,
  5040. .clkr = {
  5041. .enable_reg = 0x75064,
  5042. .enable_mask = BIT(1),
  5043. .hw.init = &(const struct clk_init_data) {
  5044. .name = "gcc_ufs_card_ice_core_hw_ctl_clk",
  5045. .parent_hws = (const struct clk_hw*[]){
  5046. &gcc_ufs_card_ice_core_clk_src.clkr.hw,
  5047. },
  5048. .num_parents = 1,
  5049. .flags = CLK_SET_RATE_PARENT,
  5050. .ops = &clk_branch2_ops,
  5051. },
  5052. },
  5053. };
  5054. static struct clk_branch gcc_ufs_card_phy_aux_clk = {
  5055. .halt_reg = 0x7509c,
  5056. .halt_check = BRANCH_HALT_VOTED,
  5057. .hwcg_reg = 0x7509c,
  5058. .hwcg_bit = 1,
  5059. .clkr = {
  5060. .enable_reg = 0x7509c,
  5061. .enable_mask = BIT(0),
  5062. .hw.init = &(const struct clk_init_data) {
  5063. .name = "gcc_ufs_card_phy_aux_clk",
  5064. .parent_hws = (const struct clk_hw*[]){
  5065. &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
  5066. },
  5067. .num_parents = 1,
  5068. .flags = CLK_SET_RATE_PARENT,
  5069. .ops = &clk_branch2_ops,
  5070. },
  5071. },
  5072. };
  5073. static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
  5074. .halt_reg = 0x7509c,
  5075. .halt_check = BRANCH_HALT_VOTED,
  5076. .hwcg_reg = 0x7509c,
  5077. .hwcg_bit = 1,
  5078. .clkr = {
  5079. .enable_reg = 0x7509c,
  5080. .enable_mask = BIT(1),
  5081. .hw.init = &(const struct clk_init_data) {
  5082. .name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
  5083. .parent_hws = (const struct clk_hw*[]){
  5084. &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
  5085. },
  5086. .num_parents = 1,
  5087. .flags = CLK_SET_RATE_PARENT,
  5088. .ops = &clk_branch2_ops,
  5089. },
  5090. },
  5091. };
  5092. static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
  5093. .halt_reg = 0x75020,
  5094. .halt_check = BRANCH_HALT_DELAY,
  5095. .clkr = {
  5096. .enable_reg = 0x75020,
  5097. .enable_mask = BIT(0),
  5098. .hw.init = &(const struct clk_init_data) {
  5099. .name = "gcc_ufs_card_rx_symbol_0_clk",
  5100. .parent_hws = (const struct clk_hw*[]){
  5101. &gcc_ufs_card_rx_symbol_0_clk_src.clkr.hw,
  5102. },
  5103. .num_parents = 1,
  5104. .flags = CLK_SET_RATE_PARENT,
  5105. .ops = &clk_branch2_ops,
  5106. },
  5107. },
  5108. };
  5109. static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
  5110. .halt_reg = 0x750b8,
  5111. .halt_check = BRANCH_HALT_DELAY,
  5112. .clkr = {
  5113. .enable_reg = 0x750b8,
  5114. .enable_mask = BIT(0),
  5115. .hw.init = &(const struct clk_init_data) {
  5116. .name = "gcc_ufs_card_rx_symbol_1_clk",
  5117. .parent_hws = (const struct clk_hw*[]){
  5118. &gcc_ufs_card_rx_symbol_1_clk_src.clkr.hw,
  5119. },
  5120. .num_parents = 1,
  5121. .flags = CLK_SET_RATE_PARENT,
  5122. .ops = &clk_branch2_ops,
  5123. },
  5124. },
  5125. };
  5126. static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
  5127. .halt_reg = 0x7501c,
  5128. .halt_check = BRANCH_HALT_DELAY,
  5129. .clkr = {
  5130. .enable_reg = 0x7501c,
  5131. .enable_mask = BIT(0),
  5132. .hw.init = &(const struct clk_init_data) {
  5133. .name = "gcc_ufs_card_tx_symbol_0_clk",
  5134. .parent_hws = (const struct clk_hw*[]){
  5135. &gcc_ufs_card_tx_symbol_0_clk_src.clkr.hw,
  5136. },
  5137. .num_parents = 1,
  5138. .flags = CLK_SET_RATE_PARENT,
  5139. .ops = &clk_branch2_ops,
  5140. },
  5141. },
  5142. };
  5143. static struct clk_branch gcc_ufs_card_unipro_core_clk = {
  5144. .halt_reg = 0x7505c,
  5145. .halt_check = BRANCH_HALT_VOTED,
  5146. .hwcg_reg = 0x7505c,
  5147. .hwcg_bit = 1,
  5148. .clkr = {
  5149. .enable_reg = 0x7505c,
  5150. .enable_mask = BIT(0),
  5151. .hw.init = &(const struct clk_init_data) {
  5152. .name = "gcc_ufs_card_unipro_core_clk",
  5153. .parent_hws = (const struct clk_hw*[]){
  5154. &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
  5155. },
  5156. .num_parents = 1,
  5157. .flags = CLK_SET_RATE_PARENT,
  5158. .ops = &clk_branch2_ops,
  5159. },
  5160. },
  5161. };
  5162. static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
  5163. .halt_reg = 0x7505c,
  5164. .halt_check = BRANCH_HALT_VOTED,
  5165. .hwcg_reg = 0x7505c,
  5166. .hwcg_bit = 1,
  5167. .clkr = {
  5168. .enable_reg = 0x7505c,
  5169. .enable_mask = BIT(1),
  5170. .hw.init = &(const struct clk_init_data) {
  5171. .name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
  5172. .parent_hws = (const struct clk_hw*[]){
  5173. &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
  5174. },
  5175. .num_parents = 1,
  5176. .flags = CLK_SET_RATE_PARENT,
  5177. .ops = &clk_branch2_ops,
  5178. },
  5179. },
  5180. };
  5181. static struct clk_branch gcc_ufs_phy_ahb_clk = {
  5182. .halt_reg = 0x77018,
  5183. .halt_check = BRANCH_HALT_VOTED,
  5184. .hwcg_reg = 0x77018,
  5185. .hwcg_bit = 1,
  5186. .clkr = {
  5187. .enable_reg = 0x77018,
  5188. .enable_mask = BIT(0),
  5189. .hw.init = &(const struct clk_init_data) {
  5190. .name = "gcc_ufs_phy_ahb_clk",
  5191. .ops = &clk_branch2_ops,
  5192. },
  5193. },
  5194. };
  5195. static struct clk_branch gcc_ufs_phy_axi_clk = {
  5196. .halt_reg = 0x77010,
  5197. .halt_check = BRANCH_HALT_VOTED,
  5198. .hwcg_reg = 0x77010,
  5199. .hwcg_bit = 1,
  5200. .clkr = {
  5201. .enable_reg = 0x77010,
  5202. .enable_mask = BIT(0),
  5203. .hw.init = &(const struct clk_init_data) {
  5204. .name = "gcc_ufs_phy_axi_clk",
  5205. .parent_hws = (const struct clk_hw*[]){
  5206. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  5207. },
  5208. .num_parents = 1,
  5209. .flags = CLK_SET_RATE_PARENT,
  5210. .ops = &clk_branch2_ops,
  5211. },
  5212. },
  5213. };
  5214. static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
  5215. .halt_reg = 0x77010,
  5216. .halt_check = BRANCH_HALT_VOTED,
  5217. .hwcg_reg = 0x77010,
  5218. .hwcg_bit = 1,
  5219. .clkr = {
  5220. .enable_reg = 0x77010,
  5221. .enable_mask = BIT(1),
  5222. .hw.init = &(const struct clk_init_data) {
  5223. .name = "gcc_ufs_phy_axi_hw_ctl_clk",
  5224. .parent_hws = (const struct clk_hw*[]){
  5225. &gcc_ufs_phy_axi_clk_src.clkr.hw,
  5226. },
  5227. .num_parents = 1,
  5228. .flags = CLK_SET_RATE_PARENT,
  5229. .ops = &clk_branch2_ops,
  5230. },
  5231. },
  5232. };
  5233. static struct clk_branch gcc_ufs_phy_ice_core_clk = {
  5234. .halt_reg = 0x77064,
  5235. .halt_check = BRANCH_HALT_VOTED,
  5236. .hwcg_reg = 0x77064,
  5237. .hwcg_bit = 1,
  5238. .clkr = {
  5239. .enable_reg = 0x77064,
  5240. .enable_mask = BIT(0),
  5241. .hw.init = &(const struct clk_init_data) {
  5242. .name = "gcc_ufs_phy_ice_core_clk",
  5243. .parent_hws = (const struct clk_hw*[]){
  5244. &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
  5245. },
  5246. .num_parents = 1,
  5247. .flags = CLK_SET_RATE_PARENT,
  5248. .ops = &clk_branch2_ops,
  5249. },
  5250. },
  5251. };
  5252. static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
  5253. .halt_reg = 0x77064,
  5254. .halt_check = BRANCH_HALT_VOTED,
  5255. .hwcg_reg = 0x77064,
  5256. .hwcg_bit = 1,
  5257. .clkr = {
  5258. .enable_reg = 0x77064,
  5259. .enable_mask = BIT(1),
  5260. .hw.init = &(const struct clk_init_data) {
  5261. .name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
  5262. .parent_hws = (const struct clk_hw*[]){
  5263. &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
  5264. },
  5265. .num_parents = 1,
  5266. .flags = CLK_SET_RATE_PARENT,
  5267. .ops = &clk_branch2_ops,
  5268. },
  5269. },
  5270. };
  5271. static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
  5272. .halt_reg = 0x7709c,
  5273. .halt_check = BRANCH_HALT_VOTED,
  5274. .hwcg_reg = 0x7709c,
  5275. .hwcg_bit = 1,
  5276. .clkr = {
  5277. .enable_reg = 0x7709c,
  5278. .enable_mask = BIT(0),
  5279. .hw.init = &(const struct clk_init_data) {
  5280. .name = "gcc_ufs_phy_phy_aux_clk",
  5281. .parent_hws = (const struct clk_hw*[]){
  5282. &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
  5283. },
  5284. .num_parents = 1,
  5285. .flags = CLK_SET_RATE_PARENT,
  5286. .ops = &clk_branch2_ops,
  5287. },
  5288. },
  5289. };
  5290. static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
  5291. .halt_reg = 0x7709c,
  5292. .halt_check = BRANCH_HALT_VOTED,
  5293. .hwcg_reg = 0x7709c,
  5294. .hwcg_bit = 1,
  5295. .clkr = {
  5296. .enable_reg = 0x7709c,
  5297. .enable_mask = BIT(1),
  5298. .hw.init = &(const struct clk_init_data) {
  5299. .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
  5300. .parent_hws = (const struct clk_hw*[]){
  5301. &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
  5302. },
  5303. .num_parents = 1,
  5304. .flags = CLK_SET_RATE_PARENT,
  5305. .ops = &clk_branch2_ops,
  5306. },
  5307. },
  5308. };
  5309. static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
  5310. .halt_reg = 0x77020,
  5311. .halt_check = BRANCH_HALT_DELAY,
  5312. .clkr = {
  5313. .enable_reg = 0x77020,
  5314. .enable_mask = BIT(0),
  5315. .hw.init = &(const struct clk_init_data) {
  5316. .name = "gcc_ufs_phy_rx_symbol_0_clk",
  5317. .parent_hws = (const struct clk_hw*[]){
  5318. &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
  5319. },
  5320. .num_parents = 1,
  5321. .flags = CLK_SET_RATE_PARENT,
  5322. .ops = &clk_branch2_ops,
  5323. },
  5324. },
  5325. };
  5326. static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
  5327. .halt_reg = 0x770b8,
  5328. .halt_check = BRANCH_HALT_DELAY,
  5329. .clkr = {
  5330. .enable_reg = 0x770b8,
  5331. .enable_mask = BIT(0),
  5332. .hw.init = &(const struct clk_init_data) {
  5333. .name = "gcc_ufs_phy_rx_symbol_1_clk",
  5334. .parent_hws = (const struct clk_hw*[]){
  5335. &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
  5336. },
  5337. .num_parents = 1,
  5338. .flags = CLK_SET_RATE_PARENT,
  5339. .ops = &clk_branch2_ops,
  5340. },
  5341. },
  5342. };
  5343. static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
  5344. .halt_reg = 0x7701c,
  5345. .halt_check = BRANCH_HALT_DELAY,
  5346. .clkr = {
  5347. .enable_reg = 0x7701c,
  5348. .enable_mask = BIT(0),
  5349. .hw.init = &(const struct clk_init_data) {
  5350. .name = "gcc_ufs_phy_tx_symbol_0_clk",
  5351. .parent_hws = (const struct clk_hw*[]){
  5352. &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
  5353. },
  5354. .num_parents = 1,
  5355. .flags = CLK_SET_RATE_PARENT,
  5356. .ops = &clk_branch2_ops,
  5357. },
  5358. },
  5359. };
  5360. static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
  5361. .halt_reg = 0x7705c,
  5362. .halt_check = BRANCH_HALT_VOTED,
  5363. .hwcg_reg = 0x7705c,
  5364. .hwcg_bit = 1,
  5365. .clkr = {
  5366. .enable_reg = 0x7705c,
  5367. .enable_mask = BIT(0),
  5368. .hw.init = &(const struct clk_init_data) {
  5369. .name = "gcc_ufs_phy_unipro_core_clk",
  5370. .parent_hws = (const struct clk_hw*[]){
  5371. &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
  5372. },
  5373. .num_parents = 1,
  5374. .flags = CLK_SET_RATE_PARENT,
  5375. .ops = &clk_branch2_ops,
  5376. },
  5377. },
  5378. };
  5379. static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
  5380. .halt_reg = 0x7705c,
  5381. .halt_check = BRANCH_HALT_VOTED,
  5382. .hwcg_reg = 0x7705c,
  5383. .hwcg_bit = 1,
  5384. .clkr = {
  5385. .enable_reg = 0x7705c,
  5386. .enable_mask = BIT(1),
  5387. .hw.init = &(const struct clk_init_data) {
  5388. .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
  5389. .parent_hws = (const struct clk_hw*[]){
  5390. &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
  5391. },
  5392. .num_parents = 1,
  5393. .flags = CLK_SET_RATE_PARENT,
  5394. .ops = &clk_branch2_ops,
  5395. },
  5396. },
  5397. };
  5398. static struct clk_branch gcc_ufs_ref_clkref_clk = {
  5399. .halt_reg = 0x8c058,
  5400. .halt_check = BRANCH_HALT,
  5401. .clkr = {
  5402. .enable_reg = 0x8c058,
  5403. .enable_mask = BIT(0),
  5404. .hw.init = &(const struct clk_init_data) {
  5405. .name = "gcc_ufs_ref_clkref_clk",
  5406. .parent_data = &gcc_parent_data_tcxo,
  5407. .num_parents = 1,
  5408. .ops = &clk_branch2_ops,
  5409. },
  5410. },
  5411. };
  5412. static struct clk_branch gcc_usb2_hs0_clkref_clk = {
  5413. .halt_reg = 0x8c044,
  5414. .halt_check = BRANCH_HALT,
  5415. .clkr = {
  5416. .enable_reg = 0x8c044,
  5417. .enable_mask = BIT(0),
  5418. .hw.init = &(const struct clk_init_data) {
  5419. .name = "gcc_usb2_hs0_clkref_clk",
  5420. .ops = &clk_branch2_ops,
  5421. },
  5422. },
  5423. };
  5424. static struct clk_branch gcc_usb2_hs1_clkref_clk = {
  5425. .halt_reg = 0x8c048,
  5426. .halt_check = BRANCH_HALT,
  5427. .clkr = {
  5428. .enable_reg = 0x8c048,
  5429. .enable_mask = BIT(0),
  5430. .hw.init = &(const struct clk_init_data) {
  5431. .name = "gcc_usb2_hs1_clkref_clk",
  5432. .ops = &clk_branch2_ops,
  5433. },
  5434. },
  5435. };
  5436. static struct clk_branch gcc_usb2_hs2_clkref_clk = {
  5437. .halt_reg = 0x8c04c,
  5438. .halt_check = BRANCH_HALT,
  5439. .clkr = {
  5440. .enable_reg = 0x8c04c,
  5441. .enable_mask = BIT(0),
  5442. .hw.init = &(const struct clk_init_data) {
  5443. .name = "gcc_usb2_hs2_clkref_clk",
  5444. .ops = &clk_branch2_ops,
  5445. },
  5446. },
  5447. };
  5448. static struct clk_branch gcc_usb2_hs3_clkref_clk = {
  5449. .halt_reg = 0x8c050,
  5450. .halt_check = BRANCH_HALT,
  5451. .clkr = {
  5452. .enable_reg = 0x8c050,
  5453. .enable_mask = BIT(0),
  5454. .hw.init = &(const struct clk_init_data) {
  5455. .name = "gcc_usb2_hs3_clkref_clk",
  5456. .ops = &clk_branch2_ops,
  5457. },
  5458. },
  5459. };
  5460. static struct clk_branch gcc_usb30_mp_master_clk = {
  5461. .halt_reg = 0xab010,
  5462. .halt_check = BRANCH_HALT,
  5463. .clkr = {
  5464. .enable_reg = 0xab010,
  5465. .enable_mask = BIT(0),
  5466. .hw.init = &(const struct clk_init_data) {
  5467. .name = "gcc_usb30_mp_master_clk",
  5468. .parent_hws = (const struct clk_hw*[]){
  5469. &gcc_usb30_mp_master_clk_src.clkr.hw,
  5470. },
  5471. .num_parents = 1,
  5472. .flags = CLK_SET_RATE_PARENT,
  5473. .ops = &clk_branch2_ops,
  5474. },
  5475. },
  5476. };
  5477. static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
  5478. .halt_reg = 0xab01c,
  5479. .halt_check = BRANCH_HALT,
  5480. .clkr = {
  5481. .enable_reg = 0xab01c,
  5482. .enable_mask = BIT(0),
  5483. .hw.init = &(const struct clk_init_data) {
  5484. .name = "gcc_usb30_mp_mock_utmi_clk",
  5485. .parent_hws = (const struct clk_hw*[]){
  5486. &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr.hw,
  5487. },
  5488. .num_parents = 1,
  5489. .flags = CLK_SET_RATE_PARENT,
  5490. .ops = &clk_branch2_ops,
  5491. },
  5492. },
  5493. };
  5494. static struct clk_branch gcc_usb30_mp_sleep_clk = {
  5495. .halt_reg = 0xab018,
  5496. .halt_check = BRANCH_HALT,
  5497. .clkr = {
  5498. .enable_reg = 0xab018,
  5499. .enable_mask = BIT(0),
  5500. .hw.init = &(const struct clk_init_data) {
  5501. .name = "gcc_usb30_mp_sleep_clk",
  5502. .ops = &clk_branch2_ops,
  5503. },
  5504. },
  5505. };
  5506. static struct clk_branch gcc_usb30_prim_master_clk = {
  5507. .halt_reg = 0xf010,
  5508. .halt_check = BRANCH_HALT,
  5509. .clkr = {
  5510. .enable_reg = 0xf010,
  5511. .enable_mask = BIT(0),
  5512. .hw.init = &(const struct clk_init_data) {
  5513. .name = "gcc_usb30_prim_master_clk",
  5514. .parent_hws = (const struct clk_hw*[]){
  5515. &gcc_usb30_prim_master_clk_src.clkr.hw,
  5516. },
  5517. .num_parents = 1,
  5518. .flags = CLK_SET_RATE_PARENT,
  5519. .ops = &clk_branch2_ops,
  5520. },
  5521. },
  5522. };
  5523. static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
  5524. .halt_reg = 0xf01c,
  5525. .halt_check = BRANCH_HALT,
  5526. .clkr = {
  5527. .enable_reg = 0xf01c,
  5528. .enable_mask = BIT(0),
  5529. .hw.init = &(const struct clk_init_data) {
  5530. .name = "gcc_usb30_prim_mock_utmi_clk",
  5531. .parent_hws = (const struct clk_hw*[]){
  5532. &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
  5533. },
  5534. .num_parents = 1,
  5535. .flags = CLK_SET_RATE_PARENT,
  5536. .ops = &clk_branch2_ops,
  5537. },
  5538. },
  5539. };
  5540. static struct clk_branch gcc_usb30_prim_sleep_clk = {
  5541. .halt_reg = 0xf018,
  5542. .halt_check = BRANCH_HALT,
  5543. .clkr = {
  5544. .enable_reg = 0xf018,
  5545. .enable_mask = BIT(0),
  5546. .hw.init = &(const struct clk_init_data) {
  5547. .name = "gcc_usb30_prim_sleep_clk",
  5548. .ops = &clk_branch2_ops,
  5549. },
  5550. },
  5551. };
  5552. static struct clk_branch gcc_usb30_sec_master_clk = {
  5553. .halt_reg = 0x10010,
  5554. .halt_check = BRANCH_HALT,
  5555. .clkr = {
  5556. .enable_reg = 0x10010,
  5557. .enable_mask = BIT(0),
  5558. .hw.init = &(const struct clk_init_data) {
  5559. .name = "gcc_usb30_sec_master_clk",
  5560. .parent_hws = (const struct clk_hw*[]){
  5561. &gcc_usb30_sec_master_clk_src.clkr.hw,
  5562. },
  5563. .num_parents = 1,
  5564. .flags = CLK_SET_RATE_PARENT,
  5565. .ops = &clk_branch2_ops,
  5566. },
  5567. },
  5568. };
  5569. static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
  5570. .halt_reg = 0x1001c,
  5571. .halt_check = BRANCH_HALT,
  5572. .clkr = {
  5573. .enable_reg = 0x1001c,
  5574. .enable_mask = BIT(0),
  5575. .hw.init = &(const struct clk_init_data) {
  5576. .name = "gcc_usb30_sec_mock_utmi_clk",
  5577. .parent_hws = (const struct clk_hw*[]){
  5578. &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,
  5579. },
  5580. .num_parents = 1,
  5581. .flags = CLK_SET_RATE_PARENT,
  5582. .ops = &clk_branch2_ops,
  5583. },
  5584. },
  5585. };
  5586. static struct clk_branch gcc_usb30_sec_sleep_clk = {
  5587. .halt_reg = 0x10018,
  5588. .halt_check = BRANCH_HALT,
  5589. .clkr = {
  5590. .enable_reg = 0x10018,
  5591. .enable_mask = BIT(0),
  5592. .hw.init = &(const struct clk_init_data) {
  5593. .name = "gcc_usb30_sec_sleep_clk",
  5594. .ops = &clk_branch2_ops,
  5595. },
  5596. },
  5597. };
  5598. static struct clk_branch gcc_usb3_mp0_clkref_clk = {
  5599. .halt_reg = 0x8c03c,
  5600. .halt_check = BRANCH_HALT,
  5601. .clkr = {
  5602. .enable_reg = 0x8c03c,
  5603. .enable_mask = BIT(0),
  5604. .hw.init = &(const struct clk_init_data) {
  5605. .name = "gcc_usb3_mp0_clkref_clk",
  5606. .ops = &clk_branch2_ops,
  5607. },
  5608. },
  5609. };
  5610. static struct clk_branch gcc_usb3_mp1_clkref_clk = {
  5611. .halt_reg = 0x8c040,
  5612. .halt_check = BRANCH_HALT,
  5613. .clkr = {
  5614. .enable_reg = 0x8c040,
  5615. .enable_mask = BIT(0),
  5616. .hw.init = &(const struct clk_init_data) {
  5617. .name = "gcc_usb3_mp1_clkref_clk",
  5618. .ops = &clk_branch2_ops,
  5619. },
  5620. },
  5621. };
  5622. static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
  5623. .halt_reg = 0xab054,
  5624. .halt_check = BRANCH_HALT,
  5625. .clkr = {
  5626. .enable_reg = 0xab054,
  5627. .enable_mask = BIT(0),
  5628. .hw.init = &(const struct clk_init_data) {
  5629. .name = "gcc_usb3_mp_phy_aux_clk",
  5630. .parent_hws = (const struct clk_hw*[]){
  5631. &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
  5632. },
  5633. .num_parents = 1,
  5634. .flags = CLK_SET_RATE_PARENT,
  5635. .ops = &clk_branch2_ops,
  5636. },
  5637. },
  5638. };
  5639. static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
  5640. .halt_reg = 0xab058,
  5641. .halt_check = BRANCH_HALT,
  5642. .clkr = {
  5643. .enable_reg = 0xab058,
  5644. .enable_mask = BIT(0),
  5645. .hw.init = &(const struct clk_init_data) {
  5646. .name = "gcc_usb3_mp_phy_com_aux_clk",
  5647. .parent_hws = (const struct clk_hw*[]){
  5648. &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
  5649. },
  5650. .num_parents = 1,
  5651. .flags = CLK_SET_RATE_PARENT,
  5652. .ops = &clk_branch2_ops,
  5653. },
  5654. },
  5655. };
  5656. static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
  5657. .halt_reg = 0xab05c,
  5658. .halt_check = BRANCH_HALT_DELAY,
  5659. .clkr = {
  5660. .enable_reg = 0xab05c,
  5661. .enable_mask = BIT(0),
  5662. .hw.init = &(const struct clk_init_data) {
  5663. .name = "gcc_usb3_mp_phy_pipe_0_clk",
  5664. .parent_hws = (const struct clk_hw*[]){
  5665. &gcc_usb3_mp_phy_pipe_0_clk_src.clkr.hw,
  5666. },
  5667. .num_parents = 1,
  5668. .flags = CLK_SET_RATE_PARENT,
  5669. .ops = &clk_branch2_ops,
  5670. },
  5671. },
  5672. };
  5673. static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
  5674. .halt_reg = 0xab064,
  5675. .halt_check = BRANCH_HALT_DELAY,
  5676. .clkr = {
  5677. .enable_reg = 0xab064,
  5678. .enable_mask = BIT(0),
  5679. .hw.init = &(const struct clk_init_data) {
  5680. .name = "gcc_usb3_mp_phy_pipe_1_clk",
  5681. .parent_hws = (const struct clk_hw*[]){
  5682. &gcc_usb3_mp_phy_pipe_1_clk_src.clkr.hw,
  5683. },
  5684. .num_parents = 1,
  5685. .flags = CLK_SET_RATE_PARENT,
  5686. .ops = &clk_branch2_ops,
  5687. },
  5688. },
  5689. };
  5690. static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
  5691. .halt_reg = 0xf054,
  5692. .halt_check = BRANCH_HALT,
  5693. .clkr = {
  5694. .enable_reg = 0xf054,
  5695. .enable_mask = BIT(0),
  5696. .hw.init = &(const struct clk_init_data) {
  5697. .name = "gcc_usb3_prim_phy_aux_clk",
  5698. .parent_hws = (const struct clk_hw*[]){
  5699. &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
  5700. },
  5701. .num_parents = 1,
  5702. .flags = CLK_SET_RATE_PARENT,
  5703. .ops = &clk_branch2_ops,
  5704. },
  5705. },
  5706. };
  5707. static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
  5708. .halt_reg = 0xf058,
  5709. .halt_check = BRANCH_HALT,
  5710. .clkr = {
  5711. .enable_reg = 0xf058,
  5712. .enable_mask = BIT(0),
  5713. .hw.init = &(const struct clk_init_data) {
  5714. .name = "gcc_usb3_prim_phy_com_aux_clk",
  5715. .parent_hws = (const struct clk_hw*[]){
  5716. &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
  5717. },
  5718. .num_parents = 1,
  5719. .flags = CLK_SET_RATE_PARENT,
  5720. .ops = &clk_branch2_ops,
  5721. },
  5722. },
  5723. };
  5724. static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
  5725. .halt_reg = 0xf05c,
  5726. .halt_check = BRANCH_HALT_DELAY,
  5727. .hwcg_reg = 0xf05c,
  5728. .hwcg_bit = 1,
  5729. .clkr = {
  5730. .enable_reg = 0xf05c,
  5731. .enable_mask = BIT(0),
  5732. .hw.init = &(const struct clk_init_data) {
  5733. .name = "gcc_usb3_prim_phy_pipe_clk",
  5734. .parent_hws = (const struct clk_hw*[]){
  5735. &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw,
  5736. },
  5737. .num_parents = 1,
  5738. .flags = CLK_SET_RATE_PARENT,
  5739. .ops = &clk_branch2_ops,
  5740. },
  5741. },
  5742. };
  5743. static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
  5744. .halt_reg = 0x10054,
  5745. .halt_check = BRANCH_HALT,
  5746. .clkr = {
  5747. .enable_reg = 0x10054,
  5748. .enable_mask = BIT(0),
  5749. .hw.init = &(const struct clk_init_data) {
  5750. .name = "gcc_usb3_sec_phy_aux_clk",
  5751. .parent_hws = (const struct clk_hw*[]){
  5752. &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
  5753. },
  5754. .num_parents = 1,
  5755. .flags = CLK_SET_RATE_PARENT,
  5756. .ops = &clk_branch2_ops,
  5757. },
  5758. },
  5759. };
  5760. static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
  5761. .halt_reg = 0x10058,
  5762. .halt_check = BRANCH_HALT,
  5763. .clkr = {
  5764. .enable_reg = 0x10058,
  5765. .enable_mask = BIT(0),
  5766. .hw.init = &(const struct clk_init_data) {
  5767. .name = "gcc_usb3_sec_phy_com_aux_clk",
  5768. .parent_hws = (const struct clk_hw*[]){
  5769. &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
  5770. },
  5771. .num_parents = 1,
  5772. .flags = CLK_SET_RATE_PARENT,
  5773. .ops = &clk_branch2_ops,
  5774. },
  5775. },
  5776. };
  5777. static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
  5778. .halt_reg = 0x1005c,
  5779. .halt_check = BRANCH_HALT_DELAY,
  5780. .hwcg_reg = 0x1005c,
  5781. .hwcg_bit = 1,
  5782. .clkr = {
  5783. .enable_reg = 0x1005c,
  5784. .enable_mask = BIT(0),
  5785. .hw.init = &(const struct clk_init_data) {
  5786. .name = "gcc_usb3_sec_phy_pipe_clk",
  5787. .parent_hws = (const struct clk_hw*[]){
  5788. &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw,
  5789. },
  5790. .num_parents = 1,
  5791. .flags = CLK_SET_RATE_PARENT,
  5792. .ops = &clk_branch2_ops,
  5793. },
  5794. },
  5795. };
  5796. static struct clk_branch gcc_usb4_1_cfg_ahb_clk = {
  5797. .halt_reg = 0xb808c,
  5798. .halt_check = BRANCH_HALT_VOTED,
  5799. .hwcg_reg = 0xb808c,
  5800. .hwcg_bit = 1,
  5801. .clkr = {
  5802. .enable_reg = 0xb808c,
  5803. .enable_mask = BIT(0),
  5804. .hw.init = &(const struct clk_init_data) {
  5805. .name = "gcc_usb4_1_cfg_ahb_clk",
  5806. .ops = &clk_branch2_ops,
  5807. },
  5808. },
  5809. };
  5810. static struct clk_branch gcc_usb4_1_dp_clk = {
  5811. .halt_reg = 0xb8048,
  5812. .halt_check = BRANCH_HALT,
  5813. .clkr = {
  5814. .enable_reg = 0xb8048,
  5815. .enable_mask = BIT(0),
  5816. .hw.init = &(const struct clk_init_data) {
  5817. .name = "gcc_usb4_1_dp_clk",
  5818. .parent_hws = (const struct clk_hw*[]){
  5819. &gcc_usb4_1_phy_dp_clk_src.clkr.hw,
  5820. },
  5821. .num_parents = 1,
  5822. .flags = CLK_SET_RATE_PARENT,
  5823. .ops = &clk_branch2_ops,
  5824. },
  5825. },
  5826. };
  5827. static struct clk_branch gcc_usb4_1_master_clk = {
  5828. .halt_reg = 0xb8010,
  5829. .halt_check = BRANCH_HALT,
  5830. .clkr = {
  5831. .enable_reg = 0xb8010,
  5832. .enable_mask = BIT(0),
  5833. .hw.init = &(const struct clk_init_data) {
  5834. .name = "gcc_usb4_1_master_clk",
  5835. .parent_hws = (const struct clk_hw*[]){
  5836. &gcc_usb4_1_master_clk_src.clkr.hw,
  5837. },
  5838. .num_parents = 1,
  5839. .flags = CLK_SET_RATE_PARENT,
  5840. .ops = &clk_branch2_ops,
  5841. },
  5842. },
  5843. };
  5844. static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = {
  5845. .halt_reg = 0xb80b4,
  5846. .halt_check = BRANCH_HALT_DELAY,
  5847. .clkr = {
  5848. .enable_reg = 0xb80b4,
  5849. .enable_mask = BIT(0),
  5850. .hw.init = &(const struct clk_init_data) {
  5851. .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk",
  5852. .parent_hws = (const struct clk_hw*[]){
  5853. &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr.hw,
  5854. },
  5855. .num_parents = 1,
  5856. .flags = CLK_SET_RATE_PARENT,
  5857. .ops = &clk_branch2_ops,
  5858. },
  5859. },
  5860. };
  5861. static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = {
  5862. .halt_reg = 0xb8038,
  5863. .halt_check = BRANCH_HALT_DELAY,
  5864. .clkr = {
  5865. .enable_reg = 0x52020,
  5866. .enable_mask = BIT(19),
  5867. .hw.init = &(const struct clk_init_data) {
  5868. .name = "gcc_usb4_1_phy_pcie_pipe_clk",
  5869. .parent_hws = (const struct clk_hw*[]){
  5870. &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw,
  5871. },
  5872. .num_parents = 1,
  5873. .flags = CLK_SET_RATE_PARENT,
  5874. .ops = &clk_branch2_ops,
  5875. },
  5876. },
  5877. };
  5878. static struct clk_branch gcc_usb4_1_phy_rx0_clk = {
  5879. .halt_reg = 0xb8094,
  5880. .halt_check = BRANCH_HALT,
  5881. .clkr = {
  5882. .enable_reg = 0xb8094,
  5883. .enable_mask = BIT(0),
  5884. .hw.init = &(const struct clk_init_data) {
  5885. .name = "gcc_usb4_1_phy_rx0_clk",
  5886. .parent_hws = (const struct clk_hw*[]){
  5887. &gcc_usb4_1_phy_rx0_clk_src.clkr.hw,
  5888. },
  5889. .num_parents = 1,
  5890. .flags = CLK_SET_RATE_PARENT,
  5891. .ops = &clk_branch2_ops,
  5892. },
  5893. },
  5894. };
  5895. static struct clk_branch gcc_usb4_1_phy_rx1_clk = {
  5896. .halt_reg = 0xb80a0,
  5897. .halt_check = BRANCH_HALT,
  5898. .clkr = {
  5899. .enable_reg = 0xb80a0,
  5900. .enable_mask = BIT(0),
  5901. .hw.init = &(const struct clk_init_data) {
  5902. .name = "gcc_usb4_1_phy_rx1_clk",
  5903. .parent_hws = (const struct clk_hw*[]){
  5904. &gcc_usb4_1_phy_rx1_clk_src.clkr.hw,
  5905. },
  5906. .num_parents = 1,
  5907. .flags = CLK_SET_RATE_PARENT,
  5908. .ops = &clk_branch2_ops,
  5909. },
  5910. },
  5911. };
  5912. static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = {
  5913. .halt_reg = 0xb8088,
  5914. .halt_check = BRANCH_HALT_DELAY,
  5915. .hwcg_reg = 0xb8088,
  5916. .hwcg_bit = 1,
  5917. .clkr = {
  5918. .enable_reg = 0xb8088,
  5919. .enable_mask = BIT(0),
  5920. .hw.init = &(const struct clk_init_data) {
  5921. .name = "gcc_usb4_1_phy_usb_pipe_clk",
  5922. .parent_hws = (const struct clk_hw*[]){
  5923. &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw,
  5924. },
  5925. .num_parents = 1,
  5926. .flags = CLK_SET_RATE_PARENT,
  5927. .ops = &clk_branch2_ops,
  5928. },
  5929. },
  5930. };
  5931. static struct clk_branch gcc_usb4_1_sb_if_clk = {
  5932. .halt_reg = 0xb8034,
  5933. .halt_check = BRANCH_HALT,
  5934. .clkr = {
  5935. .enable_reg = 0xb8034,
  5936. .enable_mask = BIT(0),
  5937. .hw.init = &(const struct clk_init_data) {
  5938. .name = "gcc_usb4_1_sb_if_clk",
  5939. .parent_hws = (const struct clk_hw*[]){
  5940. &gcc_usb4_1_sb_if_clk_src.clkr.hw,
  5941. },
  5942. .num_parents = 1,
  5943. .flags = CLK_SET_RATE_PARENT,
  5944. .ops = &clk_branch2_ops,
  5945. },
  5946. },
  5947. };
  5948. static struct clk_branch gcc_usb4_1_sys_clk = {
  5949. .halt_reg = 0xb8040,
  5950. .halt_check = BRANCH_HALT,
  5951. .clkr = {
  5952. .enable_reg = 0xb8040,
  5953. .enable_mask = BIT(0),
  5954. .hw.init = &(const struct clk_init_data) {
  5955. .name = "gcc_usb4_1_sys_clk",
  5956. .parent_hws = (const struct clk_hw*[]){
  5957. &gcc_usb4_1_phy_sys_clk_src.clkr.hw,
  5958. },
  5959. .num_parents = 1,
  5960. .flags = CLK_SET_RATE_PARENT,
  5961. .ops = &clk_branch2_ops,
  5962. },
  5963. },
  5964. };
  5965. static struct clk_branch gcc_usb4_1_tmu_clk = {
  5966. .halt_reg = 0xb806c,
  5967. .halt_check = BRANCH_HALT_VOTED,
  5968. .hwcg_reg = 0xb806c,
  5969. .hwcg_bit = 1,
  5970. .clkr = {
  5971. .enable_reg = 0xb806c,
  5972. .enable_mask = BIT(0),
  5973. .hw.init = &(const struct clk_init_data) {
  5974. .name = "gcc_usb4_1_tmu_clk",
  5975. .parent_hws = (const struct clk_hw*[]){
  5976. &gcc_usb4_1_tmu_clk_src.clkr.hw,
  5977. },
  5978. .num_parents = 1,
  5979. .flags = CLK_SET_RATE_PARENT,
  5980. .ops = &clk_branch2_ops,
  5981. },
  5982. },
  5983. };
  5984. static struct clk_branch gcc_usb4_cfg_ahb_clk = {
  5985. .halt_reg = 0x2a08c,
  5986. .halt_check = BRANCH_HALT_VOTED,
  5987. .hwcg_reg = 0x2a08c,
  5988. .hwcg_bit = 1,
  5989. .clkr = {
  5990. .enable_reg = 0x2a08c,
  5991. .enable_mask = BIT(0),
  5992. .hw.init = &(const struct clk_init_data) {
  5993. .name = "gcc_usb4_cfg_ahb_clk",
  5994. .ops = &clk_branch2_ops,
  5995. },
  5996. },
  5997. };
  5998. static struct clk_branch gcc_usb4_clkref_clk = {
  5999. .halt_reg = 0x8c010,
  6000. .halt_check = BRANCH_HALT,
  6001. .clkr = {
  6002. .enable_reg = 0x8c010,
  6003. .enable_mask = BIT(0),
  6004. .hw.init = &(const struct clk_init_data) {
  6005. .name = "gcc_usb4_clkref_clk",
  6006. .ops = &clk_branch2_ops,
  6007. },
  6008. },
  6009. };
  6010. static struct clk_branch gcc_usb4_dp_clk = {
  6011. .halt_reg = 0x2a048,
  6012. .halt_check = BRANCH_HALT,
  6013. .clkr = {
  6014. .enable_reg = 0x2a048,
  6015. .enable_mask = BIT(0),
  6016. .hw.init = &(const struct clk_init_data) {
  6017. .name = "gcc_usb4_dp_clk",
  6018. .parent_hws = (const struct clk_hw*[]){
  6019. &gcc_usb4_phy_dp_clk_src.clkr.hw,
  6020. },
  6021. .num_parents = 1,
  6022. .flags = CLK_SET_RATE_PARENT,
  6023. .ops = &clk_branch2_ops,
  6024. },
  6025. },
  6026. };
  6027. static struct clk_branch gcc_usb4_eud_clkref_clk = {
  6028. .halt_reg = 0x8c02c,
  6029. .halt_check = BRANCH_HALT,
  6030. .clkr = {
  6031. .enable_reg = 0x8c02c,
  6032. .enable_mask = BIT(0),
  6033. .hw.init = &(const struct clk_init_data) {
  6034. .name = "gcc_usb4_eud_clkref_clk",
  6035. .ops = &clk_branch2_ops,
  6036. },
  6037. },
  6038. };
  6039. static struct clk_branch gcc_usb4_master_clk = {
  6040. .halt_reg = 0x2a010,
  6041. .halt_check = BRANCH_HALT,
  6042. .clkr = {
  6043. .enable_reg = 0x2a010,
  6044. .enable_mask = BIT(0),
  6045. .hw.init = &(const struct clk_init_data) {
  6046. .name = "gcc_usb4_master_clk",
  6047. .parent_hws = (const struct clk_hw*[]){
  6048. &gcc_usb4_master_clk_src.clkr.hw,
  6049. },
  6050. .num_parents = 1,
  6051. .flags = CLK_SET_RATE_PARENT,
  6052. .ops = &clk_branch2_ops,
  6053. },
  6054. },
  6055. };
  6056. static struct clk_branch gcc_usb4_phy_p2rr2p_pipe_clk = {
  6057. .halt_reg = 0x2a0b4,
  6058. .halt_check = BRANCH_HALT_DELAY,
  6059. .clkr = {
  6060. .enable_reg = 0x2a0b4,
  6061. .enable_mask = BIT(0),
  6062. .hw.init = &(const struct clk_init_data) {
  6063. .name = "gcc_usb4_phy_p2rr2p_pipe_clk",
  6064. .parent_hws = (const struct clk_hw*[]){
  6065. &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr.hw,
  6066. },
  6067. .num_parents = 1,
  6068. .flags = CLK_SET_RATE_PARENT,
  6069. .ops = &clk_branch2_ops,
  6070. },
  6071. },
  6072. };
  6073. static struct clk_branch gcc_usb4_phy_pcie_pipe_clk = {
  6074. .halt_reg = 0x2a038,
  6075. .halt_check = BRANCH_HALT_DELAY,
  6076. .clkr = {
  6077. .enable_reg = 0x52020,
  6078. .enable_mask = BIT(18),
  6079. .hw.init = &(const struct clk_init_data) {
  6080. .name = "gcc_usb4_phy_pcie_pipe_clk",
  6081. .parent_hws = (const struct clk_hw*[]){
  6082. &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw,
  6083. },
  6084. .num_parents = 1,
  6085. .flags = CLK_SET_RATE_PARENT,
  6086. .ops = &clk_branch2_ops,
  6087. },
  6088. },
  6089. };
  6090. static struct clk_branch gcc_usb4_phy_rx0_clk = {
  6091. .halt_reg = 0x2a094,
  6092. .halt_check = BRANCH_HALT,
  6093. .clkr = {
  6094. .enable_reg = 0x2a094,
  6095. .enable_mask = BIT(0),
  6096. .hw.init = &(const struct clk_init_data) {
  6097. .name = "gcc_usb4_phy_rx0_clk",
  6098. .parent_hws = (const struct clk_hw*[]){
  6099. &gcc_usb4_phy_rx0_clk_src.clkr.hw,
  6100. },
  6101. .num_parents = 1,
  6102. .flags = CLK_SET_RATE_PARENT,
  6103. .ops = &clk_branch2_ops,
  6104. },
  6105. },
  6106. };
  6107. static struct clk_branch gcc_usb4_phy_rx1_clk = {
  6108. .halt_reg = 0x2a0a0,
  6109. .halt_check = BRANCH_HALT,
  6110. .clkr = {
  6111. .enable_reg = 0x2a0a0,
  6112. .enable_mask = BIT(0),
  6113. .hw.init = &(const struct clk_init_data) {
  6114. .name = "gcc_usb4_phy_rx1_clk",
  6115. .parent_hws = (const struct clk_hw*[]){
  6116. &gcc_usb4_phy_rx1_clk_src.clkr.hw,
  6117. },
  6118. .num_parents = 1,
  6119. .flags = CLK_SET_RATE_PARENT,
  6120. .ops = &clk_branch2_ops,
  6121. },
  6122. },
  6123. };
  6124. static struct clk_branch gcc_usb4_phy_usb_pipe_clk = {
  6125. .halt_reg = 0x2a088,
  6126. .halt_check = BRANCH_HALT_DELAY,
  6127. .hwcg_reg = 0x2a088,
  6128. .hwcg_bit = 1,
  6129. .clkr = {
  6130. .enable_reg = 0x2a088,
  6131. .enable_mask = BIT(0),
  6132. .hw.init = &(const struct clk_init_data) {
  6133. .name = "gcc_usb4_phy_usb_pipe_clk",
  6134. .parent_hws = (const struct clk_hw*[]){
  6135. &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw,
  6136. },
  6137. .num_parents = 1,
  6138. .flags = CLK_SET_RATE_PARENT,
  6139. .ops = &clk_branch2_ops,
  6140. },
  6141. },
  6142. };
  6143. static struct clk_branch gcc_usb4_sb_if_clk = {
  6144. .halt_reg = 0x2a034,
  6145. .halt_check = BRANCH_HALT,
  6146. .clkr = {
  6147. .enable_reg = 0x2a034,
  6148. .enable_mask = BIT(0),
  6149. .hw.init = &(const struct clk_init_data) {
  6150. .name = "gcc_usb4_sb_if_clk",
  6151. .parent_hws = (const struct clk_hw*[]){
  6152. &gcc_usb4_sb_if_clk_src.clkr.hw,
  6153. },
  6154. .num_parents = 1,
  6155. .flags = CLK_SET_RATE_PARENT,
  6156. .ops = &clk_branch2_ops,
  6157. },
  6158. },
  6159. };
  6160. static struct clk_branch gcc_usb4_sys_clk = {
  6161. .halt_reg = 0x2a040,
  6162. .halt_check = BRANCH_HALT,
  6163. .clkr = {
  6164. .enable_reg = 0x2a040,
  6165. .enable_mask = BIT(0),
  6166. .hw.init = &(const struct clk_init_data) {
  6167. .name = "gcc_usb4_sys_clk",
  6168. .parent_hws = (const struct clk_hw*[]){
  6169. &gcc_usb4_phy_sys_clk_src.clkr.hw,
  6170. },
  6171. .num_parents = 1,
  6172. .flags = CLK_SET_RATE_PARENT,
  6173. .ops = &clk_branch2_ops,
  6174. },
  6175. },
  6176. };
  6177. static struct clk_branch gcc_usb4_tmu_clk = {
  6178. .halt_reg = 0x2a06c,
  6179. .halt_check = BRANCH_HALT_VOTED,
  6180. .hwcg_reg = 0x2a06c,
  6181. .hwcg_bit = 1,
  6182. .clkr = {
  6183. .enable_reg = 0x2a06c,
  6184. .enable_mask = BIT(0),
  6185. .hw.init = &(const struct clk_init_data) {
  6186. .name = "gcc_usb4_tmu_clk",
  6187. .parent_hws = (const struct clk_hw*[]){
  6188. &gcc_usb4_tmu_clk_src.clkr.hw,
  6189. },
  6190. .num_parents = 1,
  6191. .flags = CLK_SET_RATE_PARENT,
  6192. .ops = &clk_branch2_ops,
  6193. },
  6194. },
  6195. };
  6196. static struct clk_branch gcc_video_axi0_clk = {
  6197. .halt_reg = 0x28010,
  6198. .halt_check = BRANCH_HALT_SKIP,
  6199. .hwcg_reg = 0x28010,
  6200. .hwcg_bit = 1,
  6201. .clkr = {
  6202. .enable_reg = 0x28010,
  6203. .enable_mask = BIT(0),
  6204. .hw.init = &(const struct clk_init_data) {
  6205. .name = "gcc_video_axi0_clk",
  6206. .ops = &clk_branch2_ops,
  6207. },
  6208. },
  6209. };
  6210. static struct clk_branch gcc_video_axi1_clk = {
  6211. .halt_reg = 0x28018,
  6212. .halt_check = BRANCH_HALT_SKIP,
  6213. .hwcg_reg = 0x28018,
  6214. .hwcg_bit = 1,
  6215. .clkr = {
  6216. .enable_reg = 0x28018,
  6217. .enable_mask = BIT(0),
  6218. .hw.init = &(const struct clk_init_data) {
  6219. .name = "gcc_video_axi1_clk",
  6220. .ops = &clk_branch2_ops,
  6221. },
  6222. },
  6223. };
  6224. static struct clk_branch gcc_video_cvp_throttle_clk = {
  6225. .halt_reg = 0x28024,
  6226. .halt_check = BRANCH_HALT_SKIP,
  6227. .hwcg_reg = 0x28024,
  6228. .hwcg_bit = 1,
  6229. .clkr = {
  6230. .enable_reg = 0x28024,
  6231. .enable_mask = BIT(0),
  6232. .hw.init = &(const struct clk_init_data) {
  6233. .name = "gcc_video_cvp_throttle_clk",
  6234. .ops = &clk_branch2_ops,
  6235. },
  6236. },
  6237. };
  6238. static struct clk_branch gcc_video_vcodec_throttle_clk = {
  6239. .halt_reg = 0x28020,
  6240. .halt_check = BRANCH_HALT_SKIP,
  6241. .hwcg_reg = 0x28020,
  6242. .hwcg_bit = 1,
  6243. .clkr = {
  6244. .enable_reg = 0x28020,
  6245. .enable_mask = BIT(0),
  6246. .hw.init = &(const struct clk_init_data) {
  6247. .name = "gcc_video_vcodec_throttle_clk",
  6248. .ops = &clk_branch2_ops,
  6249. },
  6250. },
  6251. };
  6252. static struct gdsc pcie_0_tunnel_gdsc = {
  6253. .gdscr = 0xa4004,
  6254. .collapse_ctrl = 0x52128,
  6255. .collapse_mask = BIT(0),
  6256. .pd = {
  6257. .name = "pcie_0_tunnel_gdsc",
  6258. },
  6259. .pwrsts = PWRSTS_OFF_ON,
  6260. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6261. };
  6262. static struct gdsc pcie_1_tunnel_gdsc = {
  6263. .gdscr = 0x8d004,
  6264. .collapse_ctrl = 0x52128,
  6265. .collapse_mask = BIT(1),
  6266. .pd = {
  6267. .name = "pcie_1_tunnel_gdsc",
  6268. },
  6269. .pwrsts = PWRSTS_OFF_ON,
  6270. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6271. };
  6272. /*
  6273. * The Qualcomm PCIe driver does not yet implement suspend so to keep the
  6274. * PCIe power domains always-on for now.
  6275. */
  6276. static struct gdsc pcie_2a_gdsc = {
  6277. .gdscr = 0x9d004,
  6278. .collapse_ctrl = 0x52128,
  6279. .collapse_mask = BIT(2),
  6280. .pd = {
  6281. .name = "pcie_2a_gdsc",
  6282. },
  6283. .pwrsts = PWRSTS_RET_ON,
  6284. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6285. };
  6286. static struct gdsc pcie_2b_gdsc = {
  6287. .gdscr = 0x9e004,
  6288. .collapse_ctrl = 0x52128,
  6289. .collapse_mask = BIT(3),
  6290. .pd = {
  6291. .name = "pcie_2b_gdsc",
  6292. },
  6293. .pwrsts = PWRSTS_RET_ON,
  6294. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6295. };
  6296. static struct gdsc pcie_3a_gdsc = {
  6297. .gdscr = 0xa0004,
  6298. .collapse_ctrl = 0x52128,
  6299. .collapse_mask = BIT(4),
  6300. .pd = {
  6301. .name = "pcie_3a_gdsc",
  6302. },
  6303. .pwrsts = PWRSTS_RET_ON,
  6304. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6305. };
  6306. static struct gdsc pcie_3b_gdsc = {
  6307. .gdscr = 0xa2004,
  6308. .collapse_ctrl = 0x52128,
  6309. .collapse_mask = BIT(5),
  6310. .pd = {
  6311. .name = "pcie_3b_gdsc",
  6312. },
  6313. .pwrsts = PWRSTS_RET_ON,
  6314. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6315. };
  6316. static struct gdsc pcie_4_gdsc = {
  6317. .gdscr = 0x6b004,
  6318. .collapse_ctrl = 0x52128,
  6319. .collapse_mask = BIT(6),
  6320. .pd = {
  6321. .name = "pcie_4_gdsc",
  6322. },
  6323. .pwrsts = PWRSTS_RET_ON,
  6324. .flags = VOTABLE | RETAIN_FF_ENABLE,
  6325. };
  6326. static struct gdsc ufs_card_gdsc = {
  6327. .gdscr = 0x75004,
  6328. .pd = {
  6329. .name = "ufs_card_gdsc",
  6330. },
  6331. .pwrsts = PWRSTS_OFF_ON,
  6332. .flags = RETAIN_FF_ENABLE,
  6333. };
  6334. static struct gdsc ufs_phy_gdsc = {
  6335. .gdscr = 0x77004,
  6336. .pd = {
  6337. .name = "ufs_phy_gdsc",
  6338. },
  6339. .pwrsts = PWRSTS_OFF_ON,
  6340. .flags = RETAIN_FF_ENABLE,
  6341. };
  6342. static struct gdsc usb30_mp_gdsc = {
  6343. .gdscr = 0xab004,
  6344. .pd = {
  6345. .name = "usb30_mp_gdsc",
  6346. },
  6347. .pwrsts = PWRSTS_RET_ON,
  6348. .flags = RETAIN_FF_ENABLE,
  6349. };
  6350. static struct gdsc usb30_prim_gdsc = {
  6351. .gdscr = 0xf004,
  6352. .pd = {
  6353. .name = "usb30_prim_gdsc",
  6354. },
  6355. .pwrsts = PWRSTS_RET_ON,
  6356. .flags = RETAIN_FF_ENABLE,
  6357. };
  6358. static struct gdsc usb30_sec_gdsc = {
  6359. .gdscr = 0x10004,
  6360. .pd = {
  6361. .name = "usb30_sec_gdsc",
  6362. },
  6363. .pwrsts = PWRSTS_RET_ON,
  6364. .flags = RETAIN_FF_ENABLE,
  6365. };
  6366. static struct gdsc emac_0_gdsc = {
  6367. .gdscr = 0xaa004,
  6368. .pd = {
  6369. .name = "emac_0_gdsc",
  6370. },
  6371. .pwrsts = PWRSTS_OFF_ON,
  6372. .flags = RETAIN_FF_ENABLE,
  6373. };
  6374. static struct gdsc emac_1_gdsc = {
  6375. .gdscr = 0xba004,
  6376. .pd = {
  6377. .name = "emac_1_gdsc",
  6378. },
  6379. .pwrsts = PWRSTS_OFF_ON,
  6380. .flags = RETAIN_FF_ENABLE,
  6381. };
  6382. static struct gdsc usb4_1_gdsc = {
  6383. .gdscr = 0xb8004,
  6384. .pd = {
  6385. .name = "usb4_1_gdsc",
  6386. },
  6387. .pwrsts = PWRSTS_OFF_ON,
  6388. .flags = RETAIN_FF_ENABLE,
  6389. };
  6390. static struct gdsc usb4_gdsc = {
  6391. .gdscr = 0x2a004,
  6392. .pd = {
  6393. .name = "usb4_gdsc",
  6394. },
  6395. .pwrsts = PWRSTS_OFF_ON,
  6396. .flags = RETAIN_FF_ENABLE,
  6397. };
  6398. static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
  6399. .gdscr = 0x7d050,
  6400. .pd = {
  6401. .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
  6402. },
  6403. .pwrsts = PWRSTS_OFF_ON,
  6404. .flags = VOTABLE,
  6405. };
  6406. static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
  6407. .gdscr = 0x7d058,
  6408. .pd = {
  6409. .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
  6410. },
  6411. .pwrsts = PWRSTS_OFF_ON,
  6412. .flags = VOTABLE,
  6413. };
  6414. static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc = {
  6415. .gdscr = 0x7d054,
  6416. .pd = {
  6417. .name = "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc",
  6418. },
  6419. .pwrsts = PWRSTS_OFF_ON,
  6420. .flags = VOTABLE,
  6421. };
  6422. static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc = {
  6423. .gdscr = 0x7d06c,
  6424. .pd = {
  6425. .name = "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc",
  6426. },
  6427. .pwrsts = PWRSTS_OFF_ON,
  6428. .flags = VOTABLE,
  6429. };
  6430. static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
  6431. .gdscr = 0x7d05c,
  6432. .pd = {
  6433. .name = "hlos1_vote_turing_mmu_tbu0_gdsc",
  6434. },
  6435. .pwrsts = PWRSTS_OFF_ON,
  6436. .flags = VOTABLE,
  6437. };
  6438. static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
  6439. .gdscr = 0x7d060,
  6440. .pd = {
  6441. .name = "hlos1_vote_turing_mmu_tbu1_gdsc",
  6442. },
  6443. .pwrsts = PWRSTS_OFF_ON,
  6444. .flags = VOTABLE,
  6445. };
  6446. static struct gdsc hlos1_vote_turing_mmu_tbu2_gdsc = {
  6447. .gdscr = 0x7d0a0,
  6448. .pd = {
  6449. .name = "hlos1_vote_turing_mmu_tbu2_gdsc",
  6450. },
  6451. .pwrsts = PWRSTS_OFF_ON,
  6452. .flags = VOTABLE,
  6453. };
  6454. static struct gdsc hlos1_vote_turing_mmu_tbu3_gdsc = {
  6455. .gdscr = 0x7d0a4,
  6456. .pd = {
  6457. .name = "hlos1_vote_turing_mmu_tbu3_gdsc",
  6458. },
  6459. .pwrsts = PWRSTS_OFF_ON,
  6460. .flags = VOTABLE,
  6461. };
  6462. static struct clk_regmap *gcc_sc8280xp_clocks[] = {
  6463. [GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr,
  6464. [GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr,
  6465. [GCC_AGGRE_NOC_PCIE_4_AXI_CLK] = &gcc_aggre_noc_pcie_4_axi_clk.clkr,
  6466. [GCC_AGGRE_NOC_PCIE_SOUTH_SF_AXI_CLK] = &gcc_aggre_noc_pcie_south_sf_axi_clk.clkr,
  6467. [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
  6468. [GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
  6469. [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
  6470. [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
  6471. [GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
  6472. [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
  6473. [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
  6474. [GCC_AGGRE_USB4_1_AXI_CLK] = &gcc_aggre_usb4_1_axi_clk.clkr,
  6475. [GCC_AGGRE_USB4_AXI_CLK] = &gcc_aggre_usb4_axi_clk.clkr,
  6476. [GCC_AGGRE_USB_NOC_AXI_CLK] = &gcc_aggre_usb_noc_axi_clk.clkr,
  6477. [GCC_AGGRE_USB_NOC_NORTH_AXI_CLK] = &gcc_aggre_usb_noc_north_axi_clk.clkr,
  6478. [GCC_AGGRE_USB_NOC_SOUTH_AXI_CLK] = &gcc_aggre_usb_noc_south_axi_clk.clkr,
  6479. [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr,
  6480. [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr,
  6481. [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
  6482. [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
  6483. [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
  6484. [GCC_CAMERA_THROTTLE_NRT_AXI_CLK] = &gcc_camera_throttle_nrt_axi_clk.clkr,
  6485. [GCC_CAMERA_THROTTLE_RT_AXI_CLK] = &gcc_camera_throttle_rt_axi_clk.clkr,
  6486. [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr,
  6487. [GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
  6488. [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
  6489. [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
  6490. [GCC_CNOC_PCIE0_TUNNEL_CLK] = &gcc_cnoc_pcie0_tunnel_clk.clkr,
  6491. [GCC_CNOC_PCIE1_TUNNEL_CLK] = &gcc_cnoc_pcie1_tunnel_clk.clkr,
  6492. [GCC_CNOC_PCIE4_QX_CLK] = &gcc_cnoc_pcie4_qx_clk.clkr,
  6493. [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
  6494. [GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr,
  6495. [GCC_DISP1_HF_AXI_CLK] = &gcc_disp1_hf_axi_clk.clkr,
  6496. [GCC_DISP1_SF_AXI_CLK] = &gcc_disp1_sf_axi_clk.clkr,
  6497. [GCC_DISP1_THROTTLE_NRT_AXI_CLK] = &gcc_disp1_throttle_nrt_axi_clk.clkr,
  6498. [GCC_DISP1_THROTTLE_RT_AXI_CLK] = &gcc_disp1_throttle_rt_axi_clk.clkr,
  6499. [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
  6500. [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
  6501. [GCC_DISP_THROTTLE_NRT_AXI_CLK] = &gcc_disp_throttle_nrt_axi_clk.clkr,
  6502. [GCC_DISP_THROTTLE_RT_AXI_CLK] = &gcc_disp_throttle_rt_axi_clk.clkr,
  6503. [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,
  6504. [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,
  6505. [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,
  6506. [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,
  6507. [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,
  6508. [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,
  6509. [GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr,
  6510. [GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr,
  6511. [GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr,
  6512. [GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr,
  6513. [GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr,
  6514. [GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr,
  6515. [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
  6516. [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
  6517. [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
  6518. [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
  6519. [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
  6520. [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
  6521. [GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
  6522. [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
  6523. [GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
  6524. [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
  6525. [GCC_GPLL0] = &gcc_gpll0.clkr,
  6526. [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
  6527. [GCC_GPLL2] = &gcc_gpll2.clkr,
  6528. [GCC_GPLL4] = &gcc_gpll4.clkr,
  6529. [GCC_GPLL7] = &gcc_gpll7.clkr,
  6530. [GCC_GPLL8] = &gcc_gpll8.clkr,
  6531. [GCC_GPLL9] = &gcc_gpll9.clkr,
  6532. [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
  6533. [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
  6534. [GCC_GPU_IREF_EN] = &gcc_gpu_iref_en.clkr,
  6535. [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
  6536. [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
  6537. [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr,
  6538. [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr,
  6539. [GCC_PCIE0_PHY_RCHNG_CLK] = &gcc_pcie0_phy_rchng_clk.clkr,
  6540. [GCC_PCIE1_PHY_RCHNG_CLK] = &gcc_pcie1_phy_rchng_clk.clkr,
  6541. [GCC_PCIE2A_PHY_RCHNG_CLK] = &gcc_pcie2a_phy_rchng_clk.clkr,
  6542. [GCC_PCIE2B_PHY_RCHNG_CLK] = &gcc_pcie2b_phy_rchng_clk.clkr,
  6543. [GCC_PCIE3A_PHY_RCHNG_CLK] = &gcc_pcie3a_phy_rchng_clk.clkr,
  6544. [GCC_PCIE3B_PHY_RCHNG_CLK] = &gcc_pcie3b_phy_rchng_clk.clkr,
  6545. [GCC_PCIE4_PHY_RCHNG_CLK] = &gcc_pcie4_phy_rchng_clk.clkr,
  6546. [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
  6547. [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
  6548. [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
  6549. [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
  6550. [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
  6551. [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
  6552. [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
  6553. [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
  6554. [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
  6555. [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
  6556. [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
  6557. [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
  6558. [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
  6559. [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
  6560. [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
  6561. [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
  6562. [GCC_PCIE_2A2B_CLKREF_CLK] = &gcc_pcie_2a2b_clkref_clk.clkr,
  6563. [GCC_PCIE_2A_AUX_CLK] = &gcc_pcie_2a_aux_clk.clkr,
  6564. [GCC_PCIE_2A_AUX_CLK_SRC] = &gcc_pcie_2a_aux_clk_src.clkr,
  6565. [GCC_PCIE_2A_CFG_AHB_CLK] = &gcc_pcie_2a_cfg_ahb_clk.clkr,
  6566. [GCC_PCIE_2A_MSTR_AXI_CLK] = &gcc_pcie_2a_mstr_axi_clk.clkr,
  6567. [GCC_PCIE_2A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2a_phy_rchng_clk_src.clkr,
  6568. [GCC_PCIE_2A_PIPE_CLK] = &gcc_pcie_2a_pipe_clk.clkr,
  6569. [GCC_PCIE_2A_PIPE_CLK_SRC] = &gcc_pcie_2a_pipe_clk_src.clkr,
  6570. [GCC_PCIE_2A_PIPE_DIV_CLK_SRC] = &gcc_pcie_2a_pipe_div_clk_src.clkr,
  6571. [GCC_PCIE_2A_PIPEDIV2_CLK] = &gcc_pcie_2a_pipediv2_clk.clkr,
  6572. [GCC_PCIE_2A_SLV_AXI_CLK] = &gcc_pcie_2a_slv_axi_clk.clkr,
  6573. [GCC_PCIE_2A_SLV_Q2A_AXI_CLK] = &gcc_pcie_2a_slv_q2a_axi_clk.clkr,
  6574. [GCC_PCIE_2B_AUX_CLK] = &gcc_pcie_2b_aux_clk.clkr,
  6575. [GCC_PCIE_2B_AUX_CLK_SRC] = &gcc_pcie_2b_aux_clk_src.clkr,
  6576. [GCC_PCIE_2B_CFG_AHB_CLK] = &gcc_pcie_2b_cfg_ahb_clk.clkr,
  6577. [GCC_PCIE_2B_MSTR_AXI_CLK] = &gcc_pcie_2b_mstr_axi_clk.clkr,
  6578. [GCC_PCIE_2B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2b_phy_rchng_clk_src.clkr,
  6579. [GCC_PCIE_2B_PIPE_CLK] = &gcc_pcie_2b_pipe_clk.clkr,
  6580. [GCC_PCIE_2B_PIPE_CLK_SRC] = &gcc_pcie_2b_pipe_clk_src.clkr,
  6581. [GCC_PCIE_2B_PIPE_DIV_CLK_SRC] = &gcc_pcie_2b_pipe_div_clk_src.clkr,
  6582. [GCC_PCIE_2B_PIPEDIV2_CLK] = &gcc_pcie_2b_pipediv2_clk.clkr,
  6583. [GCC_PCIE_2B_SLV_AXI_CLK] = &gcc_pcie_2b_slv_axi_clk.clkr,
  6584. [GCC_PCIE_2B_SLV_Q2A_AXI_CLK] = &gcc_pcie_2b_slv_q2a_axi_clk.clkr,
  6585. [GCC_PCIE_3A3B_CLKREF_CLK] = &gcc_pcie_3a3b_clkref_clk.clkr,
  6586. [GCC_PCIE_3A_AUX_CLK] = &gcc_pcie_3a_aux_clk.clkr,
  6587. [GCC_PCIE_3A_AUX_CLK_SRC] = &gcc_pcie_3a_aux_clk_src.clkr,
  6588. [GCC_PCIE_3A_CFG_AHB_CLK] = &gcc_pcie_3a_cfg_ahb_clk.clkr,
  6589. [GCC_PCIE_3A_MSTR_AXI_CLK] = &gcc_pcie_3a_mstr_axi_clk.clkr,
  6590. [GCC_PCIE_3A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3a_phy_rchng_clk_src.clkr,
  6591. [GCC_PCIE_3A_PIPE_CLK] = &gcc_pcie_3a_pipe_clk.clkr,
  6592. [GCC_PCIE_3A_PIPE_CLK_SRC] = &gcc_pcie_3a_pipe_clk_src.clkr,
  6593. [GCC_PCIE_3A_PIPE_DIV_CLK_SRC] = &gcc_pcie_3a_pipe_div_clk_src.clkr,
  6594. [GCC_PCIE_3A_PIPEDIV2_CLK] = &gcc_pcie_3a_pipediv2_clk.clkr,
  6595. [GCC_PCIE_3A_SLV_AXI_CLK] = &gcc_pcie_3a_slv_axi_clk.clkr,
  6596. [GCC_PCIE_3A_SLV_Q2A_AXI_CLK] = &gcc_pcie_3a_slv_q2a_axi_clk.clkr,
  6597. [GCC_PCIE_3B_AUX_CLK] = &gcc_pcie_3b_aux_clk.clkr,
  6598. [GCC_PCIE_3B_AUX_CLK_SRC] = &gcc_pcie_3b_aux_clk_src.clkr,
  6599. [GCC_PCIE_3B_CFG_AHB_CLK] = &gcc_pcie_3b_cfg_ahb_clk.clkr,
  6600. [GCC_PCIE_3B_MSTR_AXI_CLK] = &gcc_pcie_3b_mstr_axi_clk.clkr,
  6601. [GCC_PCIE_3B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3b_phy_rchng_clk_src.clkr,
  6602. [GCC_PCIE_3B_PIPE_CLK] = &gcc_pcie_3b_pipe_clk.clkr,
  6603. [GCC_PCIE_3B_PIPE_CLK_SRC] = &gcc_pcie_3b_pipe_clk_src.clkr,
  6604. [GCC_PCIE_3B_PIPE_DIV_CLK_SRC] = &gcc_pcie_3b_pipe_div_clk_src.clkr,
  6605. [GCC_PCIE_3B_PIPEDIV2_CLK] = &gcc_pcie_3b_pipediv2_clk.clkr,
  6606. [GCC_PCIE_3B_SLV_AXI_CLK] = &gcc_pcie_3b_slv_axi_clk.clkr,
  6607. [GCC_PCIE_3B_SLV_Q2A_AXI_CLK] = &gcc_pcie_3b_slv_q2a_axi_clk.clkr,
  6608. [GCC_PCIE_4_AUX_CLK] = &gcc_pcie_4_aux_clk.clkr,
  6609. [GCC_PCIE_4_AUX_CLK_SRC] = &gcc_pcie_4_aux_clk_src.clkr,
  6610. [GCC_PCIE_4_CFG_AHB_CLK] = &gcc_pcie_4_cfg_ahb_clk.clkr,
  6611. [GCC_PCIE_4_CLKREF_CLK] = &gcc_pcie_4_clkref_clk.clkr,
  6612. [GCC_PCIE_4_MSTR_AXI_CLK] = &gcc_pcie_4_mstr_axi_clk.clkr,
  6613. [GCC_PCIE_4_PHY_RCHNG_CLK_SRC] = &gcc_pcie_4_phy_rchng_clk_src.clkr,
  6614. [GCC_PCIE_4_PIPE_CLK] = &gcc_pcie_4_pipe_clk.clkr,
  6615. [GCC_PCIE_4_PIPE_CLK_SRC] = &gcc_pcie_4_pipe_clk_src.clkr,
  6616. [GCC_PCIE_4_PIPE_DIV_CLK_SRC] = &gcc_pcie_4_pipe_div_clk_src.clkr,
  6617. [GCC_PCIE_4_PIPEDIV2_CLK] = &gcc_pcie_4_pipediv2_clk.clkr,
  6618. [GCC_PCIE_4_SLV_AXI_CLK] = &gcc_pcie_4_slv_axi_clk.clkr,
  6619. [GCC_PCIE_4_SLV_Q2A_AXI_CLK] = &gcc_pcie_4_slv_q2a_axi_clk.clkr,
  6620. [GCC_PCIE_RSCC_AHB_CLK] = &gcc_pcie_rscc_ahb_clk.clkr,
  6621. [GCC_PCIE_RSCC_XO_CLK] = &gcc_pcie_rscc_xo_clk.clkr,
  6622. [GCC_PCIE_RSCC_XO_CLK_SRC] = &gcc_pcie_rscc_xo_clk_src.clkr,
  6623. [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr,
  6624. [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
  6625. [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
  6626. [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
  6627. [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
  6628. [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
  6629. [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
  6630. [GCC_QMIP_DISP1_AHB_CLK] = &gcc_qmip_disp1_ahb_clk.clkr,
  6631. [GCC_QMIP_DISP1_ROT_AHB_CLK] = &gcc_qmip_disp1_rot_ahb_clk.clkr,
  6632. [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
  6633. [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr,
  6634. [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
  6635. [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
  6636. [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
  6637. [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
  6638. [GCC_QUPV3_WRAP0_QSPI0_CLK] = &gcc_qupv3_wrap0_qspi0_clk.clkr,
  6639. [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
  6640. [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
  6641. [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
  6642. [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
  6643. [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
  6644. [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
  6645. [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
  6646. [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
  6647. [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
  6648. [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
  6649. [GCC_QUPV3_WRAP0_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap0_s4_div_clk_src.clkr,
  6650. [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
  6651. [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
  6652. [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
  6653. [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
  6654. [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
  6655. [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
  6656. [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
  6657. [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
  6658. [GCC_QUPV3_WRAP1_QSPI0_CLK] = &gcc_qupv3_wrap1_qspi0_clk.clkr,
  6659. [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
  6660. [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
  6661. [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
  6662. [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
  6663. [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
  6664. [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
  6665. [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
  6666. [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
  6667. [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
  6668. [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
  6669. [GCC_QUPV3_WRAP1_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap1_s4_div_clk_src.clkr,
  6670. [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
  6671. [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
  6672. [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
  6673. [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
  6674. [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
  6675. [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
  6676. [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
  6677. [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
  6678. [GCC_QUPV3_WRAP2_QSPI0_CLK] = &gcc_qupv3_wrap2_qspi0_clk.clkr,
  6679. [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
  6680. [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
  6681. [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
  6682. [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
  6683. [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
  6684. [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
  6685. [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
  6686. [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
  6687. [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
  6688. [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
  6689. [GCC_QUPV3_WRAP2_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap2_s4_div_clk_src.clkr,
  6690. [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
  6691. [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
  6692. [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
  6693. [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
  6694. [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,
  6695. [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,
  6696. [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
  6697. [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
  6698. [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
  6699. [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
  6700. [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
  6701. [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
  6702. [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
  6703. [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
  6704. [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
  6705. [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
  6706. [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
  6707. [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
  6708. [GCC_SYS_NOC_USB_AXI_CLK] = &gcc_sys_noc_usb_axi_clk.clkr,
  6709. [GCC_UFS_1_CARD_CLKREF_CLK] = &gcc_ufs_1_card_clkref_clk.clkr,
  6710. [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
  6711. [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
  6712. [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
  6713. [GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
  6714. [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,
  6715. [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
  6716. [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
  6717. [GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
  6718. [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
  6719. [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
  6720. [GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
  6721. [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
  6722. [GCC_UFS_CARD_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_rx_symbol_0_clk_src.clkr,
  6723. [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
  6724. [GCC_UFS_CARD_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_card_rx_symbol_1_clk_src.clkr,
  6725. [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
  6726. [GCC_UFS_CARD_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_tx_symbol_0_clk_src.clkr,
  6727. [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
  6728. [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
  6729. [GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
  6730. [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
  6731. [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
  6732. [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
  6733. [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
  6734. [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
  6735. [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
  6736. [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
  6737. [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
  6738. [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
  6739. [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
  6740. [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
  6741. [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
  6742. [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
  6743. [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
  6744. [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
  6745. [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
  6746. [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
  6747. [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
  6748. [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
  6749. [GCC_UFS_REF_CLKREF_CLK] = &gcc_ufs_ref_clkref_clk.clkr,
  6750. [GCC_USB2_HS0_CLKREF_CLK] = &gcc_usb2_hs0_clkref_clk.clkr,
  6751. [GCC_USB2_HS1_CLKREF_CLK] = &gcc_usb2_hs1_clkref_clk.clkr,
  6752. [GCC_USB2_HS2_CLKREF_CLK] = &gcc_usb2_hs2_clkref_clk.clkr,
  6753. [GCC_USB2_HS3_CLKREF_CLK] = &gcc_usb2_hs3_clkref_clk.clkr,
  6754. [GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
  6755. [GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
  6756. [GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
  6757. [GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
  6758. [GCC_USB30_MP_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr,
  6759. [GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
  6760. [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
  6761. [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
  6762. [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
  6763. [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
  6764. [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
  6765. [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
  6766. [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
  6767. [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
  6768. [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
  6769. [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
  6770. [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,
  6771. [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
  6772. [GCC_USB34_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb34_prim_phy_pipe_clk_src.clkr,
  6773. [GCC_USB34_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb34_sec_phy_pipe_clk_src.clkr,
  6774. [GCC_USB3_MP0_CLKREF_CLK] = &gcc_usb3_mp0_clkref_clk.clkr,
  6775. [GCC_USB3_MP1_CLKREF_CLK] = &gcc_usb3_mp1_clkref_clk.clkr,
  6776. [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
  6777. [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
  6778. [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
  6779. [GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
  6780. [GCC_USB3_MP_PHY_PIPE_0_CLK_SRC] = &gcc_usb3_mp_phy_pipe_0_clk_src.clkr,
  6781. [GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
  6782. [GCC_USB3_MP_PHY_PIPE_1_CLK_SRC] = &gcc_usb3_mp_phy_pipe_1_clk_src.clkr,
  6783. [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
  6784. [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
  6785. [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
  6786. [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
  6787. [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
  6788. [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
  6789. [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
  6790. [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
  6791. [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
  6792. [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr,
  6793. [GCC_USB4_1_CFG_AHB_CLK] = &gcc_usb4_1_cfg_ahb_clk.clkr,
  6794. [GCC_USB4_1_DP_CLK] = &gcc_usb4_1_dp_clk.clkr,
  6795. [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr,
  6796. [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr,
  6797. [GCC_USB4_1_PHY_DP_CLK_SRC] = &gcc_usb4_1_phy_dp_clk_src.clkr,
  6798. [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr,
  6799. [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr,
  6800. [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr,
  6801. [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr,
  6802. [GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr,
  6803. [GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr,
  6804. [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr,
  6805. [GCC_USB4_1_PHY_RX0_CLK_SRC] = &gcc_usb4_1_phy_rx0_clk_src.clkr,
  6806. [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr,
  6807. [GCC_USB4_1_PHY_RX1_CLK_SRC] = &gcc_usb4_1_phy_rx1_clk_src.clkr,
  6808. [GCC_USB4_1_PHY_SYS_CLK_SRC] = &gcc_usb4_1_phy_sys_clk_src.clkr,
  6809. [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr,
  6810. [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr,
  6811. [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr,
  6812. [GCC_USB4_1_SYS_CLK] = &gcc_usb4_1_sys_clk.clkr,
  6813. [GCC_USB4_1_TMU_CLK] = &gcc_usb4_1_tmu_clk.clkr,
  6814. [GCC_USB4_1_TMU_CLK_SRC] = &gcc_usb4_1_tmu_clk_src.clkr,
  6815. [GCC_USB4_CFG_AHB_CLK] = &gcc_usb4_cfg_ahb_clk.clkr,
  6816. [GCC_USB4_CLKREF_CLK] = &gcc_usb4_clkref_clk.clkr,
  6817. [GCC_USB4_DP_CLK] = &gcc_usb4_dp_clk.clkr,
  6818. [GCC_USB4_EUD_CLKREF_CLK] = &gcc_usb4_eud_clkref_clk.clkr,
  6819. [GCC_USB4_MASTER_CLK] = &gcc_usb4_master_clk.clkr,
  6820. [GCC_USB4_MASTER_CLK_SRC] = &gcc_usb4_master_clk_src.clkr,
  6821. [GCC_USB4_PHY_DP_CLK_SRC] = &gcc_usb4_phy_dp_clk_src.clkr,
  6822. [GCC_USB4_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_phy_p2rr2p_pipe_clk.clkr,
  6823. [GCC_USB4_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr,
  6824. [GCC_USB4_PHY_PCIE_PIPE_CLK] = &gcc_usb4_phy_pcie_pipe_clk.clkr,
  6825. [GCC_USB4_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_clk_src.clkr,
  6826. [GCC_USB4_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr,
  6827. [GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr,
  6828. [GCC_USB4_PHY_RX0_CLK] = &gcc_usb4_phy_rx0_clk.clkr,
  6829. [GCC_USB4_PHY_RX0_CLK_SRC] = &gcc_usb4_phy_rx0_clk_src.clkr,
  6830. [GCC_USB4_PHY_RX1_CLK] = &gcc_usb4_phy_rx1_clk.clkr,
  6831. [GCC_USB4_PHY_RX1_CLK_SRC] = &gcc_usb4_phy_rx1_clk_src.clkr,
  6832. [GCC_USB4_PHY_SYS_CLK_SRC] = &gcc_usb4_phy_sys_clk_src.clkr,
  6833. [GCC_USB4_PHY_USB_PIPE_CLK] = &gcc_usb4_phy_usb_pipe_clk.clkr,
  6834. [GCC_USB4_SB_IF_CLK] = &gcc_usb4_sb_if_clk.clkr,
  6835. [GCC_USB4_SB_IF_CLK_SRC] = &gcc_usb4_sb_if_clk_src.clkr,
  6836. [GCC_USB4_SYS_CLK] = &gcc_usb4_sys_clk.clkr,
  6837. [GCC_USB4_TMU_CLK] = &gcc_usb4_tmu_clk.clkr,
  6838. [GCC_USB4_TMU_CLK_SRC] = &gcc_usb4_tmu_clk_src.clkr,
  6839. [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
  6840. [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
  6841. [GCC_VIDEO_CVP_THROTTLE_CLK] = &gcc_video_cvp_throttle_clk.clkr,
  6842. [GCC_VIDEO_VCODEC_THROTTLE_CLK] = &gcc_video_vcodec_throttle_clk.clkr,
  6843. };
  6844. static const struct qcom_reset_map gcc_sc8280xp_resets[] = {
  6845. [GCC_EMAC0_BCR] = { 0xaa000 },
  6846. [GCC_EMAC1_BCR] = { 0xba000 },
  6847. [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
  6848. [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
  6849. [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
  6850. [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
  6851. [GCC_PCIE_0_TUNNEL_BCR] = { 0xa4000 },
  6852. [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
  6853. [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
  6854. [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
  6855. [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e000 },
  6856. [GCC_PCIE_1_TUNNEL_BCR] = { 0x8d000 },
  6857. [GCC_PCIE_2A_BCR] = { 0x9d000 },
  6858. [GCC_PCIE_2A_LINK_DOWN_BCR] = { 0x9d13c },
  6859. [GCC_PCIE_2A_NOCSR_COM_PHY_BCR] = { 0x9d148 },
  6860. [GCC_PCIE_2A_PHY_BCR] = { 0x9d144 },
  6861. [GCC_PCIE_2A_PHY_NOCSR_COM_PHY_BCR] = { 0x9d14c },
  6862. [GCC_PCIE_2B_BCR] = { 0x9e000 },
  6863. [GCC_PCIE_2B_LINK_DOWN_BCR] = { 0x9e084 },
  6864. [GCC_PCIE_2B_NOCSR_COM_PHY_BCR] = { 0x9e090 },
  6865. [GCC_PCIE_2B_PHY_BCR] = { 0x9e08c },
  6866. [GCC_PCIE_2B_PHY_NOCSR_COM_PHY_BCR] = { 0x9e094 },
  6867. [GCC_PCIE_3A_BCR] = { 0xa0000 },
  6868. [GCC_PCIE_3A_LINK_DOWN_BCR] = { 0xa00f0 },
  6869. [GCC_PCIE_3A_NOCSR_COM_PHY_BCR] = { 0xa00fc },
  6870. [GCC_PCIE_3A_PHY_BCR] = { 0xa00e0 },
  6871. [GCC_PCIE_3A_PHY_NOCSR_COM_PHY_BCR] = { 0xa00e4 },
  6872. [GCC_PCIE_3B_BCR] = { 0xa2000 },
  6873. [GCC_PCIE_3B_LINK_DOWN_BCR] = { 0xa20e0 },
  6874. [GCC_PCIE_3B_NOCSR_COM_PHY_BCR] = { 0xa20ec },
  6875. [GCC_PCIE_3B_PHY_BCR] = { 0xa20e8 },
  6876. [GCC_PCIE_3B_PHY_NOCSR_COM_PHY_BCR] = { 0xa20f0 },
  6877. [GCC_PCIE_4_BCR] = { 0x6b000 },
  6878. [GCC_PCIE_4_LINK_DOWN_BCR] = { 0x6b300 },
  6879. [GCC_PCIE_4_NOCSR_COM_PHY_BCR] = { 0x6b30c },
  6880. [GCC_PCIE_4_PHY_BCR] = { 0x6b308 },
  6881. [GCC_PCIE_4_PHY_NOCSR_COM_PHY_BCR] = { 0x6b310 },
  6882. [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
  6883. [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
  6884. [GCC_PCIE_RSCC_BCR] = { 0xae000 },
  6885. [GCC_QUSB2PHY_HS0_MP_BCR] = { 0x12008 },
  6886. [GCC_QUSB2PHY_HS1_MP_BCR] = { 0x1200c },
  6887. [GCC_QUSB2PHY_HS2_MP_BCR] = { 0x12010 },
  6888. [GCC_QUSB2PHY_HS3_MP_BCR] = { 0x12014 },
  6889. [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
  6890. [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
  6891. [GCC_SDCC2_BCR] = { 0x14000 },
  6892. [GCC_SDCC4_BCR] = { 0x16000 },
  6893. [GCC_UFS_CARD_BCR] = { 0x75000 },
  6894. [GCC_UFS_PHY_BCR] = { 0x77000 },
  6895. [GCC_USB2_PHY_PRIM_BCR] = { 0x50028 },
  6896. [GCC_USB2_PHY_SEC_BCR] = { 0x5002c },
  6897. [GCC_USB30_MP_BCR] = { 0xab000 },
  6898. [GCC_USB30_PRIM_BCR] = { 0xf000 },
  6899. [GCC_USB30_SEC_BCR] = { 0x10000 },
  6900. [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
  6901. [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
  6902. [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
  6903. [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
  6904. [GCC_USB3_UNIPHY_MP0_BCR] = { 0x50018 },
  6905. [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5001c },
  6906. [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
  6907. [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
  6908. [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x50020 },
  6909. [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x50024 },
  6910. [GCC_USB4_1_BCR] = { 0xb8000 },
  6911. [GCC_USB4_1_DP_PHY_PRIM_BCR] = { 0xb9020 },
  6912. [GCC_USB4_1_DPPHY_AUX_BCR] = { 0xb9024 },
  6913. [GCC_USB4_1_PHY_PRIM_BCR] = { 0xb9018 },
  6914. [GCC_USB4_BCR] = { 0x2a000 },
  6915. [GCC_USB4_DP_PHY_PRIM_BCR] = { 0x4a008 },
  6916. [GCC_USB4_DPPHY_AUX_BCR] = { 0x4a00c },
  6917. [GCC_USB4_PHY_PRIM_BCR] = { 0x4a000 },
  6918. [GCC_USB4PHY_1_PHY_PRIM_BCR] = { 0xb901c },
  6919. [GCC_USB4PHY_PHY_PRIM_BCR] = { 0x4a004 },
  6920. [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
  6921. [GCC_VIDEO_BCR] = { 0x28000 },
  6922. [GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x28010, .bit = 2, .udelay = 400 },
  6923. [GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x28018, .bit = 2, .udelay = 400 },
  6924. };
  6925. static struct gdsc *gcc_sc8280xp_gdscs[] = {
  6926. [PCIE_0_TUNNEL_GDSC] = &pcie_0_tunnel_gdsc,
  6927. [PCIE_1_TUNNEL_GDSC] = &pcie_1_tunnel_gdsc,
  6928. [PCIE_2A_GDSC] = &pcie_2a_gdsc,
  6929. [PCIE_2B_GDSC] = &pcie_2b_gdsc,
  6930. [PCIE_3A_GDSC] = &pcie_3a_gdsc,
  6931. [PCIE_3B_GDSC] = &pcie_3b_gdsc,
  6932. [PCIE_4_GDSC] = &pcie_4_gdsc,
  6933. [UFS_CARD_GDSC] = &ufs_card_gdsc,
  6934. [UFS_PHY_GDSC] = &ufs_phy_gdsc,
  6935. [USB30_MP_GDSC] = &usb30_mp_gdsc,
  6936. [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
  6937. [USB30_SEC_GDSC] = &usb30_sec_gdsc,
  6938. [EMAC_0_GDSC] = &emac_0_gdsc,
  6939. [EMAC_1_GDSC] = &emac_1_gdsc,
  6940. [USB4_1_GDSC] = &usb4_1_gdsc,
  6941. [USB4_GDSC] = &usb4_gdsc,
  6942. [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
  6943. [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
  6944. [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc,
  6945. [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc,
  6946. [HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
  6947. [HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
  6948. [HLOS1_VOTE_TURING_MMU_TBU2_GDSC] = &hlos1_vote_turing_mmu_tbu2_gdsc,
  6949. [HLOS1_VOTE_TURING_MMU_TBU3_GDSC] = &hlos1_vote_turing_mmu_tbu3_gdsc,
  6950. };
  6951. static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
  6952. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
  6953. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
  6954. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
  6955. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
  6956. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
  6957. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
  6958. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
  6959. DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
  6960. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
  6961. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
  6962. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
  6963. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
  6964. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
  6965. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
  6966. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
  6967. DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
  6968. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
  6969. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
  6970. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
  6971. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
  6972. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
  6973. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
  6974. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
  6975. DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),
  6976. };
  6977. static const struct regmap_config gcc_sc8280xp_regmap_config = {
  6978. .reg_bits = 32,
  6979. .reg_stride = 4,
  6980. .val_bits = 32,
  6981. .max_register = 0xc3014,
  6982. .fast_io = true,
  6983. };
  6984. static const struct qcom_cc_desc gcc_sc8280xp_desc = {
  6985. .config = &gcc_sc8280xp_regmap_config,
  6986. .clks = gcc_sc8280xp_clocks,
  6987. .num_clks = ARRAY_SIZE(gcc_sc8280xp_clocks),
  6988. .resets = gcc_sc8280xp_resets,
  6989. .num_resets = ARRAY_SIZE(gcc_sc8280xp_resets),
  6990. .gdscs = gcc_sc8280xp_gdscs,
  6991. .num_gdscs = ARRAY_SIZE(gcc_sc8280xp_gdscs),
  6992. };
  6993. static int gcc_sc8280xp_probe(struct platform_device *pdev)
  6994. {
  6995. struct regmap *regmap;
  6996. int ret;
  6997. ret = devm_pm_runtime_enable(&pdev->dev);
  6998. if (ret)
  6999. return ret;
  7000. ret = pm_runtime_resume_and_get(&pdev->dev);
  7001. if (ret)
  7002. return ret;
  7003. regmap = qcom_cc_map(pdev, &gcc_sc8280xp_desc);
  7004. if (IS_ERR(regmap)) {
  7005. ret = PTR_ERR(regmap);
  7006. goto err_put_rpm;
  7007. }
  7008. /* Keep some clocks always-on */
  7009. qcom_branch_set_clk_en(regmap, 0x26004); /* GCC_CAMERA_AHB_CLK */
  7010. qcom_branch_set_clk_en(regmap, 0x26020); /* GCC_CAMERA_XO_CLK */
  7011. qcom_branch_set_clk_en(regmap, 0x27004); /* GCC_DISP_AHB_CLK */
  7012. qcom_branch_set_clk_en(regmap, 0x27028); /* GCC_DISP_XO_CLK */
  7013. qcom_branch_set_clk_en(regmap, 0x71004); /* GCC_GPU_CFG_AHB_CLK */
  7014. qcom_branch_set_clk_en(regmap, 0x28004); /* GCC_VIDEO_AHB_CLK */
  7015. qcom_branch_set_clk_en(regmap, 0x28028); /* GCC_VIDEO_XO_CLK */
  7016. qcom_branch_set_clk_en(regmap, 0xbb004); /* GCC_DISP1_AHB_CLK */
  7017. qcom_branch_set_clk_en(regmap, 0xbb028); /* GCC_DISP1_XO_CLK */
  7018. ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, ARRAY_SIZE(gcc_dfs_clocks));
  7019. if (ret)
  7020. goto err_put_rpm;
  7021. ret = qcom_cc_really_probe(&pdev->dev, &gcc_sc8280xp_desc, regmap);
  7022. if (ret)
  7023. goto err_put_rpm;
  7024. pm_runtime_put(&pdev->dev);
  7025. return 0;
  7026. err_put_rpm:
  7027. pm_runtime_put_sync(&pdev->dev);
  7028. return ret;
  7029. }
  7030. static const struct of_device_id gcc_sc8280xp_match_table[] = {
  7031. { .compatible = "qcom,gcc-sc8280xp" },
  7032. { }
  7033. };
  7034. MODULE_DEVICE_TABLE(of, gcc_sc8280xp_match_table);
  7035. static struct platform_driver gcc_sc8280xp_driver = {
  7036. .probe = gcc_sc8280xp_probe,
  7037. .driver = {
  7038. .name = "gcc-sc8280xp",
  7039. .of_match_table = gcc_sc8280xp_match_table,
  7040. },
  7041. };
  7042. static int __init gcc_sc8280xp_init(void)
  7043. {
  7044. return platform_driver_register(&gcc_sc8280xp_driver);
  7045. }
  7046. subsys_initcall(gcc_sc8280xp_init);
  7047. static void __exit gcc_sc8280xp_exit(void)
  7048. {
  7049. platform_driver_unregister(&gcc_sc8280xp_driver);
  7050. }
  7051. module_exit(gcc_sc8280xp_exit);
  7052. MODULE_DESCRIPTION("Qualcomm SC8280XP GCC driver");
  7053. MODULE_LICENSE("GPL");