mt6311.c 188 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413
  1. #include <linux/kernel.h>
  2. #include <linux/init.h>
  3. #include <linux/module.h>
  4. #include <linux/interrupt.h>
  5. #include <linux/i2c.h>
  6. #include <linux/slab.h>
  7. #include <linux/irq.h>
  8. #include <linux/miscdevice.h>
  9. #include <linux/delay.h>
  10. #include <linux/input.h>
  11. #include <linux/workqueue.h>
  12. #include <linux/kobject.h>
  13. #include <linux/platform_device.h>
  14. #include <linux/sched.h>
  15. #include <linux/spinlock.h>
  16. #include <linux/mutex.h>
  17. #include <linux/kthread.h>
  18. #include <linux/wakelock.h>
  19. #include <asm/uaccess.h>
  20. #include <asm/atomic.h>
  21. #if defined CONFIG_MTK_LEGACY
  22. #include <mt-plat/mt_gpio.h>
  23. #endif
  24. #include <mt-plat/mt_boot.h>
  25. /*#include <mach/eint.h> TBD*/
  26. #include <mt-plat/upmu_common.h>
  27. #include <mt6311.h>
  28. #include <mach/mt_pmic.h>
  29. #if defined(CONFIG_MTK_FPGA)
  30. #else
  31. #if defined CONFIG_MTK_LEGACY
  32. /*#include <cust_i2c.h> TBD*/
  33. /*#include <cust_eint.h> TBD*/
  34. #endif
  35. #endif
  36. /**********************************************************
  37. *
  38. * [I2C Slave Setting]
  39. *
  40. *********************************************************/
  41. #define mt6311_SLAVE_ADDR_WRITE 0xD6
  42. #define mt6311_SLAVE_ADDR_Read 0xD7
  43. /*#ifdef I2C_EXT_BUCK_CHANNEL*/
  44. /*#define mt6311_BUSNUM I2C_EXT_BUCK_CHANNEL*/
  45. /*#else*/
  46. #define mt6311_BUSNUM 4
  47. /*#endif*/
  48. static struct i2c_client *new_client;
  49. static const struct i2c_device_id mt6311_i2c_id[] = { {"mt6311", 0}, {} };
  50. #ifdef CONFIG_OF
  51. static const struct of_device_id mt6311_of_ids[] = {
  52. {.compatible = "mediatek,ext_buck"},
  53. {},
  54. };
  55. #endif
  56. static int mt6311_driver_probe(struct i2c_client *client, const struct i2c_device_id *id);
  57. static struct i2c_driver mt6311_driver = {
  58. .driver = {
  59. .name = "mt6311",
  60. #ifdef CONFIG_OF
  61. .of_match_table = mt6311_of_ids,
  62. #endif
  63. },
  64. .probe = mt6311_driver_probe,
  65. .id_table = mt6311_i2c_id,
  66. };
  67. /**********************************************************
  68. *
  69. * [Global Variable]
  70. *
  71. *********************************************************/
  72. static DEFINE_MUTEX(mt6311_i2c_access);
  73. static DEFINE_MUTEX(mt6311_lock_mutex);
  74. int g_mt6311_driver_ready = 0;
  75. int g_mt6311_hw_exist = 0;
  76. unsigned int g_mt6311_cid = 0;
  77. /*
  78. extern unsigned int upmu_get_reg_value(unsigned int reg);
  79. extern void battery_oc_protect_reinit(void);
  80. */
  81. #define PMICTAG "[MT6311] "
  82. #if defined PMIC_DEBUG_PR_DBG
  83. #define PMICLOG1(fmt, arg...) pr_err(PMICTAG fmt, ##arg)
  84. #else
  85. #define PMICLOG1(fmt, arg...)
  86. #endif
  87. /**********************************************************
  88. *
  89. * [I2C Function For Read/Write mt6311]
  90. *
  91. *********************************************************/
  92. unsigned int mt6311_read_byte(unsigned char cmd, unsigned char *returnData)
  93. {
  94. char cmd_buf[1] = { 0x00 };
  95. char readData = 0;
  96. int ret = 0;
  97. mutex_lock(&mt6311_i2c_access);
  98. new_client->ext_flag =
  99. ((new_client->ext_flag) & I2C_MASK_FLAG) | I2C_WR_FLAG | I2C_PUSHPULL_FLAG |
  100. I2C_HS_FLAG;
  101. new_client->timing = 3400;
  102. cmd_buf[0] = cmd;
  103. ret = i2c_master_send(new_client, &cmd_buf[0], (1 << 8 | 1));
  104. if (ret < 0) {
  105. PMICLOG1("[mt6311_read_byte] ret=%d\n", ret);
  106. new_client->ext_flag = 0;
  107. mutex_unlock(&mt6311_i2c_access);
  108. return ret;
  109. }
  110. readData = cmd_buf[0];
  111. *returnData = readData;
  112. new_client->ext_flag = 0;
  113. mutex_unlock(&mt6311_i2c_access);
  114. return 1;
  115. }
  116. unsigned int mt6311_write_byte(unsigned char cmd, unsigned char writeData)
  117. {
  118. char write_data[2] = { 0 };
  119. int ret = 0;
  120. mutex_lock(&mt6311_i2c_access);
  121. write_data[0] = cmd;
  122. write_data[1] = writeData;
  123. new_client->ext_flag =
  124. ((new_client->ext_flag) & I2C_MASK_FLAG) | I2C_DIRECTION_FLAG | I2C_PUSHPULL_FLAG |
  125. I2C_HS_FLAG;
  126. new_client->timing = 3400;
  127. ret = i2c_master_send(new_client, write_data, 2);
  128. if (ret < 0) {
  129. PMICLOG1("[mt6311_write_byte] ret=%d\n", ret);
  130. new_client->ext_flag = 0;
  131. mutex_unlock(&mt6311_i2c_access);
  132. return ret;
  133. }
  134. new_client->ext_flag = 0;
  135. mutex_unlock(&mt6311_i2c_access);
  136. return 1;
  137. }
  138. /*
  139. * [Read / Write Function]
  140. */
  141. unsigned int mt6311_read_interface(unsigned char RegNum, unsigned char *val, unsigned char MASK,
  142. unsigned char SHIFT)
  143. {
  144. #if 0
  145. PMICLOG1("[mt6311_read_interface] HW no mt6311\n");
  146. *val = 0;
  147. return 1;
  148. #else
  149. unsigned char mt6311_reg = 0;
  150. unsigned int ret = 0;
  151. /* PMICLOG1("--------------------------------------------------\n"); */
  152. ret = mt6311_read_byte(RegNum, &mt6311_reg);
  153. /* PMICLOG1("[mt6311_read_interface] Reg[%x]=0x%x\n", RegNum, mt6311_reg); */
  154. mt6311_reg &= (MASK << SHIFT);
  155. *val = (mt6311_reg >> SHIFT);
  156. /* PMICLOG1("[mt6311_read_interface] val=0x%x\n", *val); */
  157. return ret;
  158. #endif
  159. }
  160. unsigned int mt6311_config_interface(unsigned char RegNum, unsigned char val, unsigned char MASK,
  161. unsigned char SHIFT)
  162. {
  163. #if 0
  164. PMICLOG1("[mt6311_config_interface] HW no mt6311\n");
  165. return 1;
  166. #else
  167. unsigned char mt6311_reg = 0;
  168. unsigned int ret = 0;
  169. /*PMICLOG1("--------------------------------------------------\n"); */
  170. ret = mt6311_read_byte(RegNum, &mt6311_reg);
  171. /* PMICLOG1("[mt6311_config_interface] Reg[%x]=0x%x\n", RegNum, mt6311_reg); */
  172. mt6311_reg &= ~(MASK << SHIFT);
  173. mt6311_reg |= (val << SHIFT);
  174. ret = mt6311_write_byte(RegNum, mt6311_reg);
  175. /*PMICLOG1("[mt6311_config_interface] write Reg[%x]=0x%x\n", RegNum, mt6311_reg); */
  176. /* Check */
  177. /*ret = mt6311_read_byte(RegNum, &mt6311_reg);
  178. PMICLOG1("[mt6311_config_interface] Check Reg[%x]=0x%x\n", RegNum, mt6311_reg);
  179. */
  180. return ret;
  181. #endif
  182. }
  183. void mt6311_set_reg_value(unsigned int reg, unsigned int reg_val)
  184. {
  185. unsigned int ret = 0;
  186. ret = mt6311_config_interface((unsigned char)reg, (unsigned char)reg_val, 0xFF, 0x0);
  187. }
  188. unsigned int mt6311_get_reg_value(unsigned int reg)
  189. {
  190. unsigned int ret = 0;
  191. unsigned char reg_val = 0;
  192. ret = mt6311_read_interface((unsigned char)reg, &reg_val, 0xFF, 0x0);
  193. return reg_val;
  194. }
  195. /*
  196. * [APIs]
  197. */
  198. void mt6311_lock(void)
  199. {
  200. mutex_lock(&mt6311_lock_mutex);
  201. }
  202. void mt6311_unlock(void)
  203. {
  204. mutex_unlock(&mt6311_lock_mutex);
  205. }
  206. unsigned char mt6311_get_cid(void)
  207. {
  208. unsigned char ret = 0;
  209. unsigned char val = 0;
  210. mt6311_lock();
  211. ret = mt6311_read_interface((unsigned char)(MT6311_CID),
  212. (&val),
  213. (unsigned char)(MT6311_PMIC_CID_MASK),
  214. (unsigned char)(MT6311_PMIC_CID_SHIFT)
  215. );
  216. if (ret < 0) {
  217. PMICLOG1("[mt6311_get_cid] ret=%d\n", ret);
  218. mt6311_unlock();
  219. return ret;
  220. }
  221. mt6311_unlock();
  222. return val;
  223. }
  224. unsigned char mt6311_get_swcid(void)
  225. {
  226. unsigned char ret = 0;
  227. unsigned char val = 0;
  228. mt6311_lock();
  229. ret = mt6311_read_interface((unsigned char)(MT6311_SWCID),
  230. (&val),
  231. (unsigned char)(MT6311_PMIC_SWCID_MASK),
  232. (unsigned char)(MT6311_PMIC_SWCID_SHIFT)
  233. );
  234. if (ret < 0) {
  235. PMICLOG1("[mt6311_get_swcid] ret=%d\n", ret);
  236. mt6311_unlock();
  237. return ret;
  238. }
  239. mt6311_unlock();
  240. return val;
  241. }
  242. unsigned char mt6311_get_hwcid(void)
  243. {
  244. unsigned char ret = 0;
  245. unsigned char val = 0;
  246. mt6311_lock();
  247. ret = mt6311_read_interface((unsigned char)(MT6311_HWCID),
  248. (&val),
  249. (unsigned char)(MT6311_PMIC_HWCID_MASK),
  250. (unsigned char)(MT6311_PMIC_HWCID_SHIFT)
  251. );
  252. if (ret < 0) {
  253. PMICLOG1("[mt6311_get_hwcid] ret=%d\n", ret);
  254. mt6311_unlock();
  255. return ret;
  256. }
  257. mt6311_unlock();
  258. return val;
  259. }
  260. void mt6311_set_gpio0_dir(unsigned char val)
  261. {
  262. unsigned char ret = 0;
  263. mt6311_lock();
  264. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  265. (unsigned char)(val),
  266. (unsigned char)(MT6311_PMIC_GPIO0_DIR_MASK),
  267. (unsigned char)(MT6311_PMIC_GPIO0_DIR_SHIFT)
  268. );
  269. mt6311_unlock();
  270. }
  271. void mt6311_set_gpio1_dir(unsigned char val)
  272. {
  273. unsigned char ret = 0;
  274. mt6311_lock();
  275. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  276. (unsigned char)(val),
  277. (unsigned char)(MT6311_PMIC_GPIO1_DIR_MASK),
  278. (unsigned char)(MT6311_PMIC_GPIO1_DIR_SHIFT)
  279. );
  280. mt6311_unlock();
  281. }
  282. void mt6311_set_gpio0_dinv(unsigned char val)
  283. {
  284. unsigned char ret = 0;
  285. mt6311_lock();
  286. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  287. (unsigned char)(val),
  288. (unsigned char)(MT6311_PMIC_GPIO0_DINV_MASK),
  289. (unsigned char)(MT6311_PMIC_GPIO0_DINV_SHIFT)
  290. );
  291. mt6311_unlock();
  292. }
  293. void mt6311_set_gpio1_dinv(unsigned char val)
  294. {
  295. unsigned char ret = 0;
  296. mt6311_lock();
  297. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  298. (unsigned char)(val),
  299. (unsigned char)(MT6311_PMIC_GPIO1_DINV_MASK),
  300. (unsigned char)(MT6311_PMIC_GPIO1_DINV_SHIFT)
  301. );
  302. mt6311_unlock();
  303. }
  304. void mt6311_set_gpio0_dout(unsigned char val)
  305. {
  306. unsigned char ret = 0;
  307. mt6311_lock();
  308. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  309. (unsigned char)(val),
  310. (unsigned char)(MT6311_PMIC_GPIO0_DOUT_MASK),
  311. (unsigned char)(MT6311_PMIC_GPIO0_DOUT_SHIFT)
  312. );
  313. mt6311_unlock();
  314. }
  315. void mt6311_set_gpio1_dout(unsigned char val)
  316. {
  317. unsigned char ret = 0;
  318. mt6311_lock();
  319. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_CFG),
  320. (unsigned char)(val),
  321. (unsigned char)(MT6311_PMIC_GPIO1_DOUT_MASK),
  322. (unsigned char)(MT6311_PMIC_GPIO1_DOUT_SHIFT)
  323. );
  324. mt6311_unlock();
  325. }
  326. unsigned char mt6311_get_gpio0_din(void)
  327. {
  328. unsigned char ret = 0;
  329. unsigned char val = 0;
  330. mt6311_lock();
  331. ret = mt6311_read_interface((unsigned char)(MT6311_GPIO_CFG),
  332. (&val),
  333. (unsigned char)(MT6311_PMIC_GPIO0_DIN_MASK),
  334. (unsigned char)(MT6311_PMIC_GPIO0_DIN_SHIFT)
  335. );
  336. mt6311_unlock();
  337. return val;
  338. }
  339. unsigned char mt6311_get_gpio1_din(void)
  340. {
  341. unsigned char ret = 0;
  342. unsigned char val = 0;
  343. mt6311_lock();
  344. ret = mt6311_read_interface((unsigned char)(MT6311_GPIO_CFG),
  345. (&val),
  346. (unsigned char)(MT6311_PMIC_GPIO1_DIN_MASK),
  347. (unsigned char)(MT6311_PMIC_GPIO1_DIN_SHIFT)
  348. );
  349. mt6311_unlock();
  350. return val;
  351. }
  352. void mt6311_set_gpio0_mode(unsigned char val)
  353. {
  354. unsigned char ret = 0;
  355. mt6311_lock();
  356. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_MODE),
  357. (unsigned char)(val),
  358. (unsigned char)(MT6311_PMIC_GPIO0_MODE_MASK),
  359. (unsigned char)(MT6311_PMIC_GPIO0_MODE_SHIFT)
  360. );
  361. mt6311_unlock();
  362. }
  363. void mt6311_set_gpio1_mode(unsigned char val)
  364. {
  365. unsigned char ret = 0;
  366. mt6311_lock();
  367. ret = mt6311_config_interface((unsigned char)(MT6311_GPIO_MODE),
  368. (unsigned char)(val),
  369. (unsigned char)(MT6311_PMIC_GPIO1_MODE_MASK),
  370. (unsigned char)(MT6311_PMIC_GPIO1_MODE_SHIFT)
  371. );
  372. mt6311_unlock();
  373. }
  374. unsigned char mt6311_get_test_out(void)
  375. {
  376. unsigned char ret = 0;
  377. unsigned char val = 0;
  378. mt6311_lock();
  379. ret = mt6311_read_interface((unsigned char)(MT6311_TEST_OUT),
  380. (&val),
  381. (unsigned char)(MT6311_PMIC_TEST_OUT_MASK),
  382. (unsigned char)(MT6311_PMIC_TEST_OUT_SHIFT)
  383. );
  384. mt6311_unlock();
  385. return val;
  386. }
  387. void mt6311_set_rg_mon_grp_sel(unsigned char val)
  388. {
  389. unsigned char ret = 0;
  390. mt6311_lock();
  391. ret = mt6311_config_interface((unsigned char)(MT6311_TEST_CON0),
  392. (unsigned char)(val),
  393. (unsigned char)(MT6311_PMIC_RG_MON_GRP_SEL_MASK),
  394. (unsigned char)(MT6311_PMIC_RG_MON_GRP_SEL_SHIFT)
  395. );
  396. mt6311_unlock();
  397. }
  398. void mt6311_set_rg_mon_flag_sel(unsigned char val)
  399. {
  400. unsigned char ret = 0;
  401. mt6311_lock();
  402. ret = mt6311_config_interface((unsigned char)(MT6311_TEST_CON1),
  403. (unsigned char)(val),
  404. (unsigned char)(MT6311_PMIC_RG_MON_FLAG_SEL_MASK),
  405. (unsigned char)(MT6311_PMIC_RG_MON_FLAG_SEL_SHIFT)
  406. );
  407. mt6311_unlock();
  408. }
  409. void mt6311_set_dig_testmode(unsigned char val)
  410. {
  411. unsigned char ret = 0;
  412. mt6311_lock();
  413. ret = mt6311_config_interface((unsigned char)(MT6311_TEST_CON2),
  414. (unsigned char)(val),
  415. (unsigned char)(MT6311_PMIC_DIG_TESTMODE_MASK),
  416. (unsigned char)(MT6311_PMIC_DIG_TESTMODE_SHIFT)
  417. );
  418. mt6311_unlock();
  419. }
  420. void mt6311_set_pmu_testmode(unsigned char val)
  421. {
  422. unsigned char ret = 0;
  423. mt6311_lock();
  424. ret = mt6311_config_interface((unsigned char)(MT6311_TEST_CON3),
  425. (unsigned char)(val),
  426. (unsigned char)(MT6311_PMIC_PMU_TESTMODE_MASK),
  427. (unsigned char)(MT6311_PMIC_PMU_TESTMODE_SHIFT)
  428. );
  429. mt6311_unlock();
  430. }
  431. void mt6311_set_rg_srclken_in_hw_mode(unsigned char val)
  432. {
  433. unsigned char ret = 0;
  434. mt6311_lock();
  435. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  436. (unsigned char)(val),
  437. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_HW_MODE_MASK),
  438. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_HW_MODE_SHIFT)
  439. );
  440. mt6311_unlock();
  441. }
  442. void mt6311_set_rg_srclken_in_en(unsigned char val)
  443. {
  444. unsigned char ret = 0;
  445. mt6311_lock();
  446. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  447. (unsigned char)(val),
  448. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_EN_MASK),
  449. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_EN_SHIFT)
  450. );
  451. mt6311_unlock();
  452. }
  453. void mt6311_set_rg_buck_lp_hw_mode(unsigned char val)
  454. {
  455. unsigned char ret = 0;
  456. mt6311_lock();
  457. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  458. (unsigned char)(val),
  459. (unsigned char)(MT6311_PMIC_RG_BUCK_LP_HW_MODE_MASK),
  460. (unsigned char)(MT6311_PMIC_RG_BUCK_LP_HW_MODE_SHIFT)
  461. );
  462. mt6311_unlock();
  463. }
  464. void mt6311_set_rg_buck_lp_en(unsigned char val)
  465. {
  466. unsigned char ret = 0;
  467. mt6311_lock();
  468. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  469. (unsigned char)(val),
  470. (unsigned char)(MT6311_PMIC_RG_BUCK_LP_EN_MASK),
  471. (unsigned char)(MT6311_PMIC_RG_BUCK_LP_EN_SHIFT)
  472. );
  473. mt6311_unlock();
  474. }
  475. void mt6311_set_rg_osc_en(unsigned char val)
  476. {
  477. unsigned char ret = 0;
  478. mt6311_lock();
  479. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  480. (unsigned char)(val),
  481. (unsigned char)(MT6311_PMIC_RG_OSC_EN_MASK),
  482. (unsigned char)(MT6311_PMIC_RG_OSC_EN_SHIFT)
  483. );
  484. mt6311_unlock();
  485. }
  486. void mt6311_set_rg_osc_en_hw_mode(unsigned char val)
  487. {
  488. unsigned char ret = 0;
  489. mt6311_lock();
  490. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  491. (unsigned char)(val),
  492. (unsigned char)(MT6311_PMIC_RG_OSC_EN_HW_MODE_MASK),
  493. (unsigned char)(MT6311_PMIC_RG_OSC_EN_HW_MODE_SHIFT)
  494. );
  495. mt6311_unlock();
  496. }
  497. void mt6311_set_rg_srclken_in_sync_en(unsigned char val)
  498. {
  499. unsigned char ret = 0;
  500. mt6311_lock();
  501. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  502. (unsigned char)(val),
  503. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_SYNC_EN_MASK),
  504. (unsigned char)(MT6311_PMIC_RG_SRCLKEN_IN_SYNC_EN_SHIFT)
  505. );
  506. mt6311_unlock();
  507. }
  508. void mt6311_set_rg_strup_rsv_hw_mode(unsigned char val)
  509. {
  510. unsigned char ret = 0;
  511. mt6311_lock();
  512. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CON),
  513. (unsigned char)(val),
  514. (unsigned char)(MT6311_PMIC_RG_STRUP_RSV_HW_MODE_MASK),
  515. (unsigned char)(MT6311_PMIC_RG_STRUP_RSV_HW_MODE_SHIFT)
  516. );
  517. mt6311_unlock();
  518. }
  519. void mt6311_set_rg_buck_ref_ck_tstsel(unsigned char val)
  520. {
  521. unsigned char ret = 0;
  522. mt6311_lock();
  523. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  524. (unsigned char)(val),
  525. (unsigned char)(MT6311_PMIC_RG_BUCK_REF_CK_TSTSEL_MASK),
  526. (unsigned char)(MT6311_PMIC_RG_BUCK_REF_CK_TSTSEL_SHIFT)
  527. );
  528. mt6311_unlock();
  529. }
  530. void mt6311_set_rg_fqmtr_ck_tstsel(unsigned char val)
  531. {
  532. unsigned char ret = 0;
  533. mt6311_lock();
  534. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  535. (unsigned char)(val),
  536. (unsigned char)(MT6311_PMIC_RG_FQMTR_CK_TSTSEL_MASK),
  537. (unsigned char)(MT6311_PMIC_RG_FQMTR_CK_TSTSEL_SHIFT)
  538. );
  539. mt6311_unlock();
  540. }
  541. void mt6311_set_rg_smps_ck_tstsel(unsigned char val)
  542. {
  543. unsigned char ret = 0;
  544. mt6311_lock();
  545. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  546. (unsigned char)(val),
  547. (unsigned char)(MT6311_PMIC_RG_SMPS_CK_TSTSEL_MASK),
  548. (unsigned char)(MT6311_PMIC_RG_SMPS_CK_TSTSEL_SHIFT)
  549. );
  550. mt6311_unlock();
  551. }
  552. void mt6311_set_rg_pmu75k_ck_tstsel(unsigned char val)
  553. {
  554. unsigned char ret = 0;
  555. mt6311_lock();
  556. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  557. (unsigned char)(val),
  558. (unsigned char)(MT6311_PMIC_RG_PMU75K_CK_TSTSEL_MASK),
  559. (unsigned char)(MT6311_PMIC_RG_PMU75K_CK_TSTSEL_SHIFT)
  560. );
  561. mt6311_unlock();
  562. }
  563. void mt6311_set_rg_smps_ck_tst_dis(unsigned char val)
  564. {
  565. unsigned char ret = 0;
  566. mt6311_lock();
  567. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  568. (unsigned char)(val),
  569. (unsigned char)(MT6311_PMIC_RG_SMPS_CK_TST_DIS_MASK),
  570. (unsigned char)(MT6311_PMIC_RG_SMPS_CK_TST_DIS_SHIFT)
  571. );
  572. mt6311_unlock();
  573. }
  574. void mt6311_set_rg_pmu75k_ck_tst_dis(unsigned char val)
  575. {
  576. unsigned char ret = 0;
  577. mt6311_lock();
  578. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  579. (unsigned char)(val),
  580. (unsigned char)(MT6311_PMIC_RG_PMU75K_CK_TST_DIS_MASK),
  581. (unsigned char)(MT6311_PMIC_RG_PMU75K_CK_TST_DIS_SHIFT)
  582. );
  583. mt6311_unlock();
  584. }
  585. void mt6311_set_rg_buck_ana_auto_off_dis(unsigned char val)
  586. {
  587. unsigned char ret = 0;
  588. mt6311_lock();
  589. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKTST_CON),
  590. (unsigned char)(val),
  591. (unsigned char)(MT6311_PMIC_RG_BUCK_ANA_AUTO_OFF_DIS_MASK),
  592. (unsigned char)(MT6311_PMIC_RG_BUCK_ANA_AUTO_OFF_DIS_SHIFT)
  593. );
  594. mt6311_unlock();
  595. }
  596. void mt6311_set_rg_buck_ref_ck_pdn(unsigned char val)
  597. {
  598. unsigned char ret = 0;
  599. mt6311_lock();
  600. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  601. (unsigned char)(val),
  602. (unsigned char)(MT6311_PMIC_RG_BUCK_REF_CK_PDN_MASK),
  603. (unsigned char)(MT6311_PMIC_RG_BUCK_REF_CK_PDN_SHIFT)
  604. );
  605. mt6311_unlock();
  606. }
  607. void mt6311_set_rg_buck_ck_pdn(unsigned char val)
  608. {
  609. unsigned char ret = 0;
  610. mt6311_lock();
  611. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  612. (unsigned char)(val),
  613. (unsigned char)(MT6311_PMIC_RG_BUCK_CK_PDN_MASK),
  614. (unsigned char)(MT6311_PMIC_RG_BUCK_CK_PDN_SHIFT)
  615. );
  616. mt6311_unlock();
  617. }
  618. void mt6311_set_rg_buck_1m_ck_pdn(unsigned char val)
  619. {
  620. unsigned char ret = 0;
  621. mt6311_lock();
  622. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  623. (unsigned char)(val),
  624. (unsigned char)(MT6311_PMIC_RG_BUCK_1M_CK_PDN_MASK),
  625. (unsigned char)(MT6311_PMIC_RG_BUCK_1M_CK_PDN_SHIFT)
  626. );
  627. mt6311_unlock();
  628. }
  629. void mt6311_set_rg_intrp_ck_pdn(unsigned char val)
  630. {
  631. unsigned char ret = 0;
  632. mt6311_lock();
  633. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  634. (unsigned char)(val),
  635. (unsigned char)(MT6311_PMIC_RG_INTRP_CK_PDN_MASK),
  636. (unsigned char)(MT6311_PMIC_RG_INTRP_CK_PDN_SHIFT)
  637. );
  638. mt6311_unlock();
  639. }
  640. void mt6311_set_rg_efuse_ck_pdn(unsigned char val)
  641. {
  642. unsigned char ret = 0;
  643. mt6311_lock();
  644. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  645. (unsigned char)(val),
  646. (unsigned char)(MT6311_PMIC_RG_EFUSE_CK_PDN_MASK),
  647. (unsigned char)(MT6311_PMIC_RG_EFUSE_CK_PDN_SHIFT)
  648. );
  649. mt6311_unlock();
  650. }
  651. void mt6311_set_rg_strup_75k_ck_pdn(unsigned char val)
  652. {
  653. unsigned char ret = 0;
  654. mt6311_lock();
  655. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  656. (unsigned char)(val),
  657. (unsigned char)(MT6311_PMIC_RG_STRUP_75K_CK_PDN_MASK),
  658. (unsigned char)(MT6311_PMIC_RG_STRUP_75K_CK_PDN_SHIFT)
  659. );
  660. mt6311_unlock();
  661. }
  662. void mt6311_set_rg_buck_ana_ck_pdn(unsigned char val)
  663. {
  664. unsigned char ret = 0;
  665. mt6311_lock();
  666. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  667. (unsigned char)(val),
  668. (unsigned char)(MT6311_PMIC_RG_BUCK_ANA_CK_PDN_MASK),
  669. (unsigned char)(MT6311_PMIC_RG_BUCK_ANA_CK_PDN_SHIFT)
  670. );
  671. mt6311_unlock();
  672. }
  673. void mt6311_set_rg_trim_75k_ck_pdn(unsigned char val)
  674. {
  675. unsigned char ret = 0;
  676. mt6311_lock();
  677. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON1),
  678. (unsigned char)(val),
  679. (unsigned char)(MT6311_PMIC_RG_TRIM_75K_CK_PDN_MASK),
  680. (unsigned char)(MT6311_PMIC_RG_TRIM_75K_CK_PDN_SHIFT)
  681. );
  682. mt6311_unlock();
  683. }
  684. void mt6311_set_rg_auxadc_ck_pdn(unsigned char val)
  685. {
  686. unsigned char ret = 0;
  687. mt6311_lock();
  688. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON2),
  689. (unsigned char)(val),
  690. (unsigned char)(MT6311_PMIC_RG_AUXADC_CK_PDN_MASK),
  691. (unsigned char)(MT6311_PMIC_RG_AUXADC_CK_PDN_SHIFT)
  692. );
  693. mt6311_unlock();
  694. }
  695. void mt6311_set_rg_auxadc_1m_ck_pdn(unsigned char val)
  696. {
  697. unsigned char ret = 0;
  698. mt6311_lock();
  699. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON2),
  700. (unsigned char)(val),
  701. (unsigned char)(MT6311_PMIC_RG_AUXADC_1M_CK_PDN_MASK),
  702. (unsigned char)(MT6311_PMIC_RG_AUXADC_1M_CK_PDN_SHIFT)
  703. );
  704. mt6311_unlock();
  705. }
  706. void mt6311_set_rg_stb_75k_ck_pdn(unsigned char val)
  707. {
  708. unsigned char ret = 0;
  709. mt6311_lock();
  710. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON2),
  711. (unsigned char)(val),
  712. (unsigned char)(MT6311_PMIC_RG_STB_75K_CK_PDN_MASK),
  713. (unsigned char)(MT6311_PMIC_RG_STB_75K_CK_PDN_SHIFT)
  714. );
  715. mt6311_unlock();
  716. }
  717. void mt6311_set_rg_fqmtr_ck_pdn(unsigned char val)
  718. {
  719. unsigned char ret = 0;
  720. mt6311_lock();
  721. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON2),
  722. (unsigned char)(val),
  723. (unsigned char)(MT6311_PMIC_RG_FQMTR_CK_PDN_MASK),
  724. (unsigned char)(MT6311_PMIC_RG_FQMTR_CK_PDN_SHIFT)
  725. );
  726. mt6311_unlock();
  727. }
  728. void mt6311_set_top_ckpdn_con2_rsv(unsigned char val)
  729. {
  730. unsigned char ret = 0;
  731. mt6311_lock();
  732. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKPDN_CON2),
  733. (unsigned char)(val),
  734. (unsigned char)(MT6311_PMIC_TOP_CKPDN_CON2_RSV_MASK),
  735. (unsigned char)(MT6311_PMIC_TOP_CKPDN_CON2_RSV_SHIFT)
  736. );
  737. mt6311_unlock();
  738. }
  739. void mt6311_set_rg_buck_1m_ck_pdn_hwen(unsigned char val)
  740. {
  741. unsigned char ret = 0;
  742. mt6311_lock();
  743. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKHWEN_CON),
  744. (unsigned char)(val),
  745. (unsigned char)(MT6311_PMIC_RG_BUCK_1M_CK_PDN_HWEN_MASK),
  746. (unsigned char)(MT6311_PMIC_RG_BUCK_1M_CK_PDN_HWEN_SHIFT)
  747. );
  748. mt6311_unlock();
  749. }
  750. void mt6311_set_rg_efuse_ck_pdn_hwen(unsigned char val)
  751. {
  752. unsigned char ret = 0;
  753. mt6311_lock();
  754. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CKHWEN_CON),
  755. (unsigned char)(val),
  756. (unsigned char)(MT6311_PMIC_RG_EFUSE_CK_PDN_HWEN_MASK),
  757. (unsigned char)(MT6311_PMIC_RG_EFUSE_CK_PDN_HWEN_SHIFT)
  758. );
  759. mt6311_unlock();
  760. }
  761. void mt6311_set_rg_auxadc_rst(unsigned char val)
  762. {
  763. unsigned char ret = 0;
  764. mt6311_lock();
  765. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  766. (unsigned char)(val),
  767. (unsigned char)(MT6311_PMIC_RG_AUXADC_RST_MASK),
  768. (unsigned char)(MT6311_PMIC_RG_AUXADC_RST_SHIFT)
  769. );
  770. mt6311_unlock();
  771. }
  772. void mt6311_set_rg_fqmtr_rst(unsigned char val)
  773. {
  774. unsigned char ret = 0;
  775. mt6311_lock();
  776. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  777. (unsigned char)(val),
  778. (unsigned char)(MT6311_PMIC_RG_FQMTR_RST_MASK),
  779. (unsigned char)(MT6311_PMIC_RG_FQMTR_RST_SHIFT)
  780. );
  781. mt6311_unlock();
  782. }
  783. void mt6311_set_rg_clk_trim_rst(unsigned char val)
  784. {
  785. unsigned char ret = 0;
  786. mt6311_lock();
  787. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  788. (unsigned char)(val),
  789. (unsigned char)(MT6311_PMIC_RG_CLK_TRIM_RST_MASK),
  790. (unsigned char)(MT6311_PMIC_RG_CLK_TRIM_RST_SHIFT)
  791. );
  792. mt6311_unlock();
  793. }
  794. void mt6311_set_rg_efuse_man_rst(unsigned char val)
  795. {
  796. unsigned char ret = 0;
  797. mt6311_lock();
  798. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  799. (unsigned char)(val),
  800. (unsigned char)(MT6311_PMIC_RG_EFUSE_MAN_RST_MASK),
  801. (unsigned char)(MT6311_PMIC_RG_EFUSE_MAN_RST_SHIFT)
  802. );
  803. mt6311_unlock();
  804. }
  805. void mt6311_set_rg_wdtrstb_mode(unsigned char val)
  806. {
  807. unsigned char ret = 0;
  808. mt6311_lock();
  809. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  810. (unsigned char)(val),
  811. (unsigned char)(MT6311_PMIC_RG_WDTRSTB_MODE_MASK),
  812. (unsigned char)(MT6311_PMIC_RG_WDTRSTB_MODE_SHIFT)
  813. );
  814. mt6311_unlock();
  815. }
  816. void mt6311_set_rg_wdtrstb_en(unsigned char val)
  817. {
  818. unsigned char ret = 0;
  819. mt6311_lock();
  820. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  821. (unsigned char)(val),
  822. (unsigned char)(MT6311_PMIC_RG_WDTRSTB_EN_MASK),
  823. (unsigned char)(MT6311_PMIC_RG_WDTRSTB_EN_SHIFT)
  824. );
  825. mt6311_unlock();
  826. }
  827. void mt6311_set_wdtrstb_status_clr(unsigned char val)
  828. {
  829. unsigned char ret = 0;
  830. mt6311_lock();
  831. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_RST_CON),
  832. (unsigned char)(val),
  833. (unsigned char)(MT6311_PMIC_WDTRSTB_STATUS_CLR_MASK),
  834. (unsigned char)(MT6311_PMIC_WDTRSTB_STATUS_CLR_SHIFT)
  835. );
  836. mt6311_unlock();
  837. }
  838. unsigned char mt6311_get_wdtrstb_status(void)
  839. {
  840. unsigned char ret = 0;
  841. unsigned char val = 0;
  842. mt6311_lock();
  843. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_RST_CON),
  844. (&val),
  845. (unsigned char)(MT6311_PMIC_WDTRSTB_STATUS_MASK),
  846. (unsigned char)(MT6311_PMIC_WDTRSTB_STATUS_SHIFT)
  847. );
  848. mt6311_unlock();
  849. return val;
  850. }
  851. void mt6311_set_rg_int_pol(unsigned char val)
  852. {
  853. unsigned char ret = 0;
  854. mt6311_lock();
  855. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_INT_CON),
  856. (unsigned char)(val),
  857. (unsigned char)(MT6311_PMIC_RG_INT_POL_MASK),
  858. (unsigned char)(MT6311_PMIC_RG_INT_POL_SHIFT)
  859. );
  860. mt6311_unlock();
  861. }
  862. void mt6311_set_rg_int_en(unsigned char val)
  863. {
  864. unsigned char ret = 0;
  865. mt6311_lock();
  866. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_INT_CON),
  867. (unsigned char)(val),
  868. (unsigned char)(MT6311_PMIC_RG_INT_EN_MASK),
  869. (unsigned char)(MT6311_PMIC_RG_INT_EN_SHIFT)
  870. );
  871. mt6311_unlock();
  872. }
  873. void mt6311_set_i2c_config(unsigned char val)
  874. {
  875. unsigned char ret = 0;
  876. mt6311_lock();
  877. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_INT_CON),
  878. (unsigned char)(val),
  879. (unsigned char)(MT6311_PMIC_I2C_CONFIG_MASK),
  880. (unsigned char)(MT6311_PMIC_I2C_CONFIG_SHIFT)
  881. );
  882. mt6311_unlock();
  883. }
  884. unsigned char mt6311_get_rg_lbat_min_int_status(void)
  885. {
  886. unsigned char ret = 0;
  887. unsigned char val = 0;
  888. mt6311_lock();
  889. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_INT_MON),
  890. (&val),
  891. (unsigned char)(MT6311_PMIC_RG_LBAT_MIN_INT_STATUS_MASK),
  892. (unsigned char)(MT6311_PMIC_RG_LBAT_MIN_INT_STATUS_SHIFT)
  893. );
  894. mt6311_unlock();
  895. return val;
  896. }
  897. unsigned char mt6311_get_rg_lbat_max_int_status(void)
  898. {
  899. unsigned char ret = 0;
  900. unsigned char val = 0;
  901. mt6311_lock();
  902. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_INT_MON),
  903. (&val),
  904. (unsigned char)(MT6311_PMIC_RG_LBAT_MAX_INT_STATUS_MASK),
  905. (unsigned char)(MT6311_PMIC_RG_LBAT_MAX_INT_STATUS_SHIFT)
  906. );
  907. mt6311_unlock();
  908. return val;
  909. }
  910. unsigned char mt6311_get_rg_thr_l_int_status(void)
  911. {
  912. unsigned char ret = 0;
  913. unsigned char val = 0;
  914. mt6311_lock();
  915. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_INT_MON),
  916. (&val),
  917. (unsigned char)(MT6311_PMIC_RG_THR_L_INT_STATUS_MASK),
  918. (unsigned char)(MT6311_PMIC_RG_THR_L_INT_STATUS_SHIFT)
  919. );
  920. mt6311_unlock();
  921. return val;
  922. }
  923. unsigned char mt6311_get_rg_thr_h_int_status(void)
  924. {
  925. unsigned char ret = 0;
  926. unsigned char val = 0;
  927. mt6311_lock();
  928. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_INT_MON),
  929. (&val),
  930. (unsigned char)(MT6311_PMIC_RG_THR_H_INT_STATUS_MASK),
  931. (unsigned char)(MT6311_PMIC_RG_THR_H_INT_STATUS_SHIFT)
  932. );
  933. mt6311_unlock();
  934. return val;
  935. }
  936. unsigned char mt6311_get_rg_buck_oc_int_status(void)
  937. {
  938. unsigned char ret = 0;
  939. unsigned char val = 0;
  940. mt6311_lock();
  941. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_INT_MON),
  942. (&val),
  943. (unsigned char)(MT6311_PMIC_RG_BUCK_OC_INT_STATUS_MASK),
  944. (unsigned char)(MT6311_PMIC_RG_BUCK_OC_INT_STATUS_SHIFT)
  945. );
  946. mt6311_unlock();
  947. return val;
  948. }
  949. void mt6311_set_thr_det_dis(unsigned char val)
  950. {
  951. unsigned char ret = 0;
  952. mt6311_lock();
  953. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON0),
  954. (unsigned char)(val),
  955. (unsigned char)(MT6311_PMIC_THR_DET_DIS_MASK),
  956. (unsigned char)(MT6311_PMIC_THR_DET_DIS_SHIFT)
  957. );
  958. mt6311_unlock();
  959. }
  960. void mt6311_set_thr_hwpdn_en(unsigned char val)
  961. {
  962. unsigned char ret = 0;
  963. mt6311_lock();
  964. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON0),
  965. (unsigned char)(val),
  966. (unsigned char)(MT6311_PMIC_THR_HWPDN_EN_MASK),
  967. (unsigned char)(MT6311_PMIC_THR_HWPDN_EN_SHIFT)
  968. );
  969. mt6311_unlock();
  970. }
  971. void mt6311_set_strup_dig0_rsv0(unsigned char val)
  972. {
  973. unsigned char ret = 0;
  974. mt6311_lock();
  975. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON0),
  976. (unsigned char)(val),
  977. (unsigned char)(MT6311_PMIC_STRUP_DIG0_RSV0_MASK),
  978. (unsigned char)(MT6311_PMIC_STRUP_DIG0_RSV0_SHIFT)
  979. );
  980. mt6311_unlock();
  981. }
  982. void mt6311_set_rg_usbdl_en(unsigned char val)
  983. {
  984. unsigned char ret = 0;
  985. mt6311_lock();
  986. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON1),
  987. (unsigned char)(val),
  988. (unsigned char)(MT6311_PMIC_RG_USBDL_EN_MASK),
  989. (unsigned char)(MT6311_PMIC_RG_USBDL_EN_SHIFT)
  990. );
  991. mt6311_unlock();
  992. }
  993. void mt6311_set_rg_test_strup(unsigned char val)
  994. {
  995. unsigned char ret = 0;
  996. mt6311_lock();
  997. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON1),
  998. (unsigned char)(val),
  999. (unsigned char)(MT6311_PMIC_RG_TEST_STRUP_MASK),
  1000. (unsigned char)(MT6311_PMIC_RG_TEST_STRUP_SHIFT)
  1001. );
  1002. mt6311_unlock();
  1003. }
  1004. void mt6311_set_rg_test_strup_thr_in(unsigned char val)
  1005. {
  1006. unsigned char ret = 0;
  1007. mt6311_lock();
  1008. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON1),
  1009. (unsigned char)(val),
  1010. (unsigned char)(MT6311_PMIC_RG_TEST_STRUP_THR_IN_MASK),
  1011. (unsigned char)(MT6311_PMIC_RG_TEST_STRUP_THR_IN_SHIFT)
  1012. );
  1013. mt6311_unlock();
  1014. }
  1015. void mt6311_set_strup_dig1_rsv0(unsigned char val)
  1016. {
  1017. unsigned char ret = 0;
  1018. mt6311_lock();
  1019. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON1),
  1020. (unsigned char)(val),
  1021. (unsigned char)(MT6311_PMIC_STRUP_DIG1_RSV0_MASK),
  1022. (unsigned char)(MT6311_PMIC_STRUP_DIG1_RSV0_SHIFT)
  1023. );
  1024. mt6311_unlock();
  1025. }
  1026. void mt6311_set_thr_test(unsigned char val)
  1027. {
  1028. unsigned char ret = 0;
  1029. mt6311_lock();
  1030. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON2),
  1031. (unsigned char)(val),
  1032. (unsigned char)(MT6311_PMIC_THR_TEST_MASK),
  1033. (unsigned char)(MT6311_PMIC_THR_TEST_SHIFT)
  1034. );
  1035. mt6311_unlock();
  1036. }
  1037. unsigned char mt6311_get_pmu_thr_deb(void)
  1038. {
  1039. unsigned char ret = 0;
  1040. unsigned char val = 0;
  1041. mt6311_lock();
  1042. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON2),
  1043. (&val),
  1044. (unsigned char)(MT6311_PMIC_PMU_THR_DEB_MASK),
  1045. (unsigned char)(MT6311_PMIC_PMU_THR_DEB_SHIFT)
  1046. );
  1047. mt6311_unlock();
  1048. return val;
  1049. }
  1050. unsigned char mt6311_get_pmu_thr_status(void)
  1051. {
  1052. unsigned char ret = 0;
  1053. unsigned char val = 0;
  1054. mt6311_lock();
  1055. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON2),
  1056. (&val),
  1057. (unsigned char)(MT6311_PMIC_PMU_THR_STATUS_MASK),
  1058. (unsigned char)(MT6311_PMIC_PMU_THR_STATUS_SHIFT)
  1059. );
  1060. mt6311_unlock();
  1061. return val;
  1062. }
  1063. void mt6311_set_strup_pwron(unsigned char val)
  1064. {
  1065. unsigned char ret = 0;
  1066. mt6311_lock();
  1067. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1068. (unsigned char)(val),
  1069. (unsigned char)(MT6311_PMIC_STRUP_PWRON_MASK),
  1070. (unsigned char)(MT6311_PMIC_STRUP_PWRON_SHIFT)
  1071. );
  1072. mt6311_unlock();
  1073. }
  1074. void mt6311_set_strup_pwron_sel(unsigned char val)
  1075. {
  1076. unsigned char ret = 0;
  1077. mt6311_lock();
  1078. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1079. (unsigned char)(val),
  1080. (unsigned char)(MT6311_PMIC_STRUP_PWRON_SEL_MASK),
  1081. (unsigned char)(MT6311_PMIC_STRUP_PWRON_SEL_SHIFT)
  1082. );
  1083. mt6311_unlock();
  1084. }
  1085. void mt6311_set_bias_gen_en(unsigned char val)
  1086. {
  1087. unsigned char ret = 0;
  1088. mt6311_lock();
  1089. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1090. (unsigned char)(val),
  1091. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_MASK),
  1092. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_SHIFT)
  1093. );
  1094. mt6311_unlock();
  1095. }
  1096. void mt6311_set_bias_gen_en_sel(unsigned char val)
  1097. {
  1098. unsigned char ret = 0;
  1099. mt6311_lock();
  1100. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1101. (unsigned char)(val),
  1102. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_SEL_MASK),
  1103. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_SEL_SHIFT)
  1104. );
  1105. mt6311_unlock();
  1106. }
  1107. void mt6311_set_rtc_xosc32_enb_sw(unsigned char val)
  1108. {
  1109. unsigned char ret = 0;
  1110. mt6311_lock();
  1111. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1112. (unsigned char)(val),
  1113. (unsigned char)(MT6311_PMIC_RTC_XOSC32_ENB_SW_MASK),
  1114. (unsigned char)(MT6311_PMIC_RTC_XOSC32_ENB_SW_SHIFT)
  1115. );
  1116. mt6311_unlock();
  1117. }
  1118. void mt6311_set_rtc_xosc32_enb_sel(unsigned char val)
  1119. {
  1120. unsigned char ret = 0;
  1121. mt6311_lock();
  1122. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1123. (unsigned char)(val),
  1124. (unsigned char)(MT6311_PMIC_RTC_XOSC32_ENB_SEL_MASK),
  1125. (unsigned char)(MT6311_PMIC_RTC_XOSC32_ENB_SEL_SHIFT)
  1126. );
  1127. mt6311_unlock();
  1128. }
  1129. void mt6311_set_strup_dig_io_pg_force(unsigned char val)
  1130. {
  1131. unsigned char ret = 0;
  1132. mt6311_lock();
  1133. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON3),
  1134. (unsigned char)(val),
  1135. (unsigned char)(MT6311_PMIC_STRUP_DIG_IO_PG_FORCE_MASK),
  1136. (unsigned char)(MT6311_PMIC_STRUP_DIG_IO_PG_FORCE_SHIFT)
  1137. );
  1138. mt6311_unlock();
  1139. }
  1140. void mt6311_set_dduvlo_deb_en(unsigned char val)
  1141. {
  1142. unsigned char ret = 0;
  1143. mt6311_lock();
  1144. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1145. (unsigned char)(val),
  1146. (unsigned char)(MT6311_PMIC_DDUVLO_DEB_EN_MASK),
  1147. (unsigned char)(MT6311_PMIC_DDUVLO_DEB_EN_SHIFT)
  1148. );
  1149. mt6311_unlock();
  1150. }
  1151. void mt6311_set_pwrbb_deb_en(unsigned char val)
  1152. {
  1153. unsigned char ret = 0;
  1154. mt6311_lock();
  1155. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1156. (unsigned char)(val),
  1157. (unsigned char)(MT6311_PMIC_PWRBB_DEB_EN_MASK),
  1158. (unsigned char)(MT6311_PMIC_PWRBB_DEB_EN_SHIFT)
  1159. );
  1160. mt6311_unlock();
  1161. }
  1162. void mt6311_set_strup_osc_en(unsigned char val)
  1163. {
  1164. unsigned char ret = 0;
  1165. mt6311_lock();
  1166. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1167. (unsigned char)(val),
  1168. (unsigned char)(MT6311_PMIC_STRUP_OSC_EN_MASK),
  1169. (unsigned char)(MT6311_PMIC_STRUP_OSC_EN_SHIFT)
  1170. );
  1171. mt6311_unlock();
  1172. }
  1173. void mt6311_set_strup_osc_en_sel(unsigned char val)
  1174. {
  1175. unsigned char ret = 0;
  1176. mt6311_lock();
  1177. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1178. (unsigned char)(val),
  1179. (unsigned char)(MT6311_PMIC_STRUP_OSC_EN_SEL_MASK),
  1180. (unsigned char)(MT6311_PMIC_STRUP_OSC_EN_SEL_SHIFT)
  1181. );
  1182. mt6311_unlock();
  1183. }
  1184. void mt6311_set_strup_ft_ctrl(unsigned char val)
  1185. {
  1186. unsigned char ret = 0;
  1187. mt6311_lock();
  1188. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1189. (unsigned char)(val),
  1190. (unsigned char)(MT6311_PMIC_STRUP_FT_CTRL_MASK),
  1191. (unsigned char)(MT6311_PMIC_STRUP_FT_CTRL_SHIFT)
  1192. );
  1193. mt6311_unlock();
  1194. }
  1195. void mt6311_set_strup_pwron_force(unsigned char val)
  1196. {
  1197. unsigned char ret = 0;
  1198. mt6311_lock();
  1199. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1200. (unsigned char)(val),
  1201. (unsigned char)(MT6311_PMIC_STRUP_PWRON_FORCE_MASK),
  1202. (unsigned char)(MT6311_PMIC_STRUP_PWRON_FORCE_SHIFT)
  1203. );
  1204. mt6311_unlock();
  1205. }
  1206. void mt6311_set_bias_gen_en_force(unsigned char val)
  1207. {
  1208. unsigned char ret = 0;
  1209. mt6311_lock();
  1210. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON4),
  1211. (unsigned char)(val),
  1212. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_FORCE_MASK),
  1213. (unsigned char)(MT6311_PMIC_BIAS_GEN_EN_FORCE_SHIFT)
  1214. );
  1215. mt6311_unlock();
  1216. }
  1217. void mt6311_set_vdvfs11_pg_h2l_en(unsigned char val)
  1218. {
  1219. unsigned char ret = 0;
  1220. mt6311_lock();
  1221. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON5),
  1222. (unsigned char)(val),
  1223. (unsigned char)(MT6311_PMIC_VDVFS11_PG_H2L_EN_MASK),
  1224. (unsigned char)(MT6311_PMIC_VDVFS11_PG_H2L_EN_SHIFT)
  1225. );
  1226. mt6311_unlock();
  1227. }
  1228. void mt6311_set_vdvfs12_pg_h2l_en(unsigned char val)
  1229. {
  1230. unsigned char ret = 0;
  1231. mt6311_lock();
  1232. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON5),
  1233. (unsigned char)(val),
  1234. (unsigned char)(MT6311_PMIC_VDVFS12_PG_H2L_EN_MASK),
  1235. (unsigned char)(MT6311_PMIC_VDVFS12_PG_H2L_EN_SHIFT)
  1236. );
  1237. mt6311_unlock();
  1238. }
  1239. void mt6311_set_vbiasn_pg_h2l_en(unsigned char val)
  1240. {
  1241. unsigned char ret = 0;
  1242. mt6311_lock();
  1243. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON5),
  1244. (unsigned char)(val),
  1245. (unsigned char)(MT6311_PMIC_VBIASN_PG_H2L_EN_MASK),
  1246. (unsigned char)(MT6311_PMIC_VBIASN_PG_H2L_EN_SHIFT)
  1247. );
  1248. mt6311_unlock();
  1249. }
  1250. void mt6311_set_vdvfs11_pg_enb(unsigned char val)
  1251. {
  1252. unsigned char ret = 0;
  1253. mt6311_lock();
  1254. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON6),
  1255. (unsigned char)(val),
  1256. (unsigned char)(MT6311_PMIC_VDVFS11_PG_ENB_MASK),
  1257. (unsigned char)(MT6311_PMIC_VDVFS11_PG_ENB_SHIFT)
  1258. );
  1259. mt6311_unlock();
  1260. }
  1261. void mt6311_set_vdvfs12_pg_enb(unsigned char val)
  1262. {
  1263. unsigned char ret = 0;
  1264. mt6311_lock();
  1265. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON6),
  1266. (unsigned char)(val),
  1267. (unsigned char)(MT6311_PMIC_VDVFS12_PG_ENB_MASK),
  1268. (unsigned char)(MT6311_PMIC_VDVFS12_PG_ENB_SHIFT)
  1269. );
  1270. mt6311_unlock();
  1271. }
  1272. void mt6311_set_vbiasn_pg_enb(unsigned char val)
  1273. {
  1274. unsigned char ret = 0;
  1275. mt6311_lock();
  1276. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON6),
  1277. (unsigned char)(val),
  1278. (unsigned char)(MT6311_PMIC_VBIASN_PG_ENB_MASK),
  1279. (unsigned char)(MT6311_PMIC_VBIASN_PG_ENB_SHIFT)
  1280. );
  1281. mt6311_unlock();
  1282. }
  1283. void mt6311_set_rg_ext_pmic_en_pg_enb(unsigned char val)
  1284. {
  1285. unsigned char ret = 0;
  1286. mt6311_lock();
  1287. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON6),
  1288. (unsigned char)(val),
  1289. (unsigned char)(MT6311_PMIC_RG_EXT_PMIC_EN_PG_ENB_MASK),
  1290. (unsigned char)(MT6311_PMIC_RG_EXT_PMIC_EN_PG_ENB_SHIFT)
  1291. );
  1292. mt6311_unlock();
  1293. }
  1294. void mt6311_set_rg_pre_pwron_en(unsigned char val)
  1295. {
  1296. unsigned char ret = 0;
  1297. mt6311_lock();
  1298. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON7),
  1299. (unsigned char)(val),
  1300. (unsigned char)(MT6311_PMIC_RG_PRE_PWRON_EN_MASK),
  1301. (unsigned char)(MT6311_PMIC_RG_PRE_PWRON_EN_SHIFT)
  1302. );
  1303. mt6311_unlock();
  1304. }
  1305. void mt6311_set_rg_pre_pwron_swctrl(unsigned char val)
  1306. {
  1307. unsigned char ret = 0;
  1308. mt6311_lock();
  1309. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON7),
  1310. (unsigned char)(val),
  1311. (unsigned char)(MT6311_PMIC_RG_PRE_PWRON_SWCTRL_MASK),
  1312. (unsigned char)(MT6311_PMIC_RG_PRE_PWRON_SWCTRL_SHIFT)
  1313. );
  1314. mt6311_unlock();
  1315. }
  1316. void mt6311_set_clr_just_rst(unsigned char val)
  1317. {
  1318. unsigned char ret = 0;
  1319. mt6311_lock();
  1320. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON7),
  1321. (unsigned char)(val),
  1322. (unsigned char)(MT6311_PMIC_CLR_JUST_RST_MASK),
  1323. (unsigned char)(MT6311_PMIC_CLR_JUST_RST_SHIFT)
  1324. );
  1325. mt6311_unlock();
  1326. }
  1327. void mt6311_set_uvlo_l2h_deb_en(unsigned char val)
  1328. {
  1329. unsigned char ret = 0;
  1330. mt6311_lock();
  1331. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON7),
  1332. (unsigned char)(val),
  1333. (unsigned char)(MT6311_PMIC_UVLO_L2H_DEB_EN_MASK),
  1334. (unsigned char)(MT6311_PMIC_UVLO_L2H_DEB_EN_SHIFT)
  1335. );
  1336. mt6311_unlock();
  1337. }
  1338. void mt6311_set_rg_bgr_test_ckin_en(unsigned char val)
  1339. {
  1340. unsigned char ret = 0;
  1341. mt6311_lock();
  1342. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON7),
  1343. (unsigned char)(val),
  1344. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_CKIN_EN_MASK),
  1345. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_CKIN_EN_SHIFT)
  1346. );
  1347. mt6311_unlock();
  1348. }
  1349. unsigned char mt6311_get_qi_osc_en(void)
  1350. {
  1351. unsigned char ret = 0;
  1352. unsigned char val = 0;
  1353. mt6311_lock();
  1354. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON7),
  1355. (&val),
  1356. (unsigned char)(MT6311_PMIC_QI_OSC_EN_MASK),
  1357. (unsigned char)(MT6311_PMIC_QI_OSC_EN_SHIFT)
  1358. );
  1359. mt6311_unlock();
  1360. return val;
  1361. }
  1362. void mt6311_set_rg_strup_pmu_pwron_sel(unsigned char val)
  1363. {
  1364. unsigned char ret = 0;
  1365. mt6311_lock();
  1366. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON8),
  1367. (unsigned char)(val),
  1368. (unsigned char)(MT6311_PMIC_RG_STRUP_PMU_PWRON_SEL_MASK),
  1369. (unsigned char)(MT6311_PMIC_RG_STRUP_PMU_PWRON_SEL_SHIFT)
  1370. );
  1371. mt6311_unlock();
  1372. }
  1373. void mt6311_set_rg_strup_pmu_pwron_en(unsigned char val)
  1374. {
  1375. unsigned char ret = 0;
  1376. mt6311_lock();
  1377. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON8),
  1378. (unsigned char)(val),
  1379. (unsigned char)(MT6311_PMIC_RG_STRUP_PMU_PWRON_EN_MASK),
  1380. (unsigned char)(MT6311_PMIC_RG_STRUP_PMU_PWRON_EN_SHIFT)
  1381. );
  1382. mt6311_unlock();
  1383. }
  1384. void mt6311_set_strup_auxadc_start_sw(unsigned char val)
  1385. {
  1386. unsigned char ret = 0;
  1387. mt6311_lock();
  1388. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON9),
  1389. (unsigned char)(val),
  1390. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_START_SW_MASK),
  1391. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_START_SW_SHIFT)
  1392. );
  1393. mt6311_unlock();
  1394. }
  1395. void mt6311_set_strup_auxadc_rstb_sw(unsigned char val)
  1396. {
  1397. unsigned char ret = 0;
  1398. mt6311_lock();
  1399. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON9),
  1400. (unsigned char)(val),
  1401. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_RSTB_SW_MASK),
  1402. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_RSTB_SW_SHIFT)
  1403. );
  1404. mt6311_unlock();
  1405. }
  1406. void mt6311_set_strup_auxadc_start_sel(unsigned char val)
  1407. {
  1408. unsigned char ret = 0;
  1409. mt6311_lock();
  1410. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON9),
  1411. (unsigned char)(val),
  1412. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_START_SEL_MASK),
  1413. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_START_SEL_SHIFT)
  1414. );
  1415. mt6311_unlock();
  1416. }
  1417. void mt6311_set_strup_auxadc_rstb_sel(unsigned char val)
  1418. {
  1419. unsigned char ret = 0;
  1420. mt6311_lock();
  1421. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON9),
  1422. (unsigned char)(val),
  1423. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_RSTB_SEL_MASK),
  1424. (unsigned char)(MT6311_PMIC_STRUP_AUXADC_RSTB_SEL_SHIFT)
  1425. );
  1426. mt6311_unlock();
  1427. }
  1428. void mt6311_set_strup_pwroff_preoff_en(unsigned char val)
  1429. {
  1430. unsigned char ret = 0;
  1431. mt6311_lock();
  1432. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1433. (unsigned char)(val),
  1434. (unsigned char)(MT6311_PMIC_STRUP_PWROFF_PREOFF_EN_MASK),
  1435. (unsigned char)(MT6311_PMIC_STRUP_PWROFF_PREOFF_EN_SHIFT)
  1436. );
  1437. mt6311_unlock();
  1438. }
  1439. void mt6311_set_strup_pwroff_seq_en(unsigned char val)
  1440. {
  1441. unsigned char ret = 0;
  1442. mt6311_lock();
  1443. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1444. (unsigned char)(val),
  1445. (unsigned char)(MT6311_PMIC_STRUP_PWROFF_SEQ_EN_MASK),
  1446. (unsigned char)(MT6311_PMIC_STRUP_PWROFF_SEQ_EN_SHIFT)
  1447. );
  1448. mt6311_unlock();
  1449. }
  1450. void mt6311_set_rg_sys_latch_en_swctrl(unsigned char val)
  1451. {
  1452. unsigned char ret = 0;
  1453. mt6311_lock();
  1454. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1455. (unsigned char)(val),
  1456. (unsigned char)(MT6311_PMIC_RG_SYS_LATCH_EN_SWCTRL_MASK),
  1457. (unsigned char)(MT6311_PMIC_RG_SYS_LATCH_EN_SWCTRL_SHIFT)
  1458. );
  1459. mt6311_unlock();
  1460. }
  1461. void mt6311_set_rg_sys_latch_en(unsigned char val)
  1462. {
  1463. unsigned char ret = 0;
  1464. mt6311_lock();
  1465. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1466. (unsigned char)(val),
  1467. (unsigned char)(MT6311_PMIC_RG_SYS_LATCH_EN_MASK),
  1468. (unsigned char)(MT6311_PMIC_RG_SYS_LATCH_EN_SHIFT)
  1469. );
  1470. mt6311_unlock();
  1471. }
  1472. void mt6311_set_rg_onoff_en_swctrl(unsigned char val)
  1473. {
  1474. unsigned char ret = 0;
  1475. mt6311_lock();
  1476. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1477. (unsigned char)(val),
  1478. (unsigned char)(MT6311_PMIC_RG_ONOFF_EN_SWCTRL_MASK),
  1479. (unsigned char)(MT6311_PMIC_RG_ONOFF_EN_SWCTRL_SHIFT)
  1480. );
  1481. mt6311_unlock();
  1482. }
  1483. void mt6311_set_rg_onoff_en(unsigned char val)
  1484. {
  1485. unsigned char ret = 0;
  1486. mt6311_lock();
  1487. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1488. (unsigned char)(val),
  1489. (unsigned char)(MT6311_PMIC_RG_ONOFF_EN_MASK),
  1490. (unsigned char)(MT6311_PMIC_RG_ONOFF_EN_SHIFT)
  1491. );
  1492. mt6311_unlock();
  1493. }
  1494. void mt6311_set_rg_strup_pwron_cond_sel(unsigned char val)
  1495. {
  1496. unsigned char ret = 0;
  1497. mt6311_lock();
  1498. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1499. (unsigned char)(val),
  1500. (unsigned char)(MT6311_PMIC_RG_STRUP_PWRON_COND_SEL_MASK),
  1501. (unsigned char)(MT6311_PMIC_RG_STRUP_PWRON_COND_SEL_SHIFT)
  1502. );
  1503. mt6311_unlock();
  1504. }
  1505. void mt6311_set_rg_strup_pwron_cond_en(unsigned char val)
  1506. {
  1507. unsigned char ret = 0;
  1508. mt6311_lock();
  1509. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON10),
  1510. (unsigned char)(val),
  1511. (unsigned char)(MT6311_PMIC_RG_STRUP_PWRON_COND_EN_MASK),
  1512. (unsigned char)(MT6311_PMIC_RG_STRUP_PWRON_COND_EN_SHIFT)
  1513. );
  1514. mt6311_unlock();
  1515. }
  1516. unsigned char mt6311_get_strup_pg_status(void)
  1517. {
  1518. unsigned char ret = 0;
  1519. unsigned char val = 0;
  1520. mt6311_lock();
  1521. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON11),
  1522. (&val),
  1523. (unsigned char)(MT6311_PMIC_STRUP_PG_STATUS_MASK),
  1524. (unsigned char)(MT6311_PMIC_STRUP_PG_STATUS_SHIFT)
  1525. );
  1526. mt6311_unlock();
  1527. return val;
  1528. }
  1529. void mt6311_set_strup_pg_status_clr(unsigned char val)
  1530. {
  1531. unsigned char ret = 0;
  1532. mt6311_lock();
  1533. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON11),
  1534. (unsigned char)(val),
  1535. (unsigned char)(MT6311_PMIC_STRUP_PG_STATUS_CLR_MASK),
  1536. (unsigned char)(MT6311_PMIC_STRUP_PG_STATUS_CLR_SHIFT)
  1537. );
  1538. mt6311_unlock();
  1539. }
  1540. void mt6311_set_rg_rsv_swreg(unsigned char val)
  1541. {
  1542. unsigned char ret = 0;
  1543. mt6311_lock();
  1544. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON12),
  1545. (unsigned char)(val),
  1546. (unsigned char)(MT6311_PMIC_RG_RSV_SWREG_MASK),
  1547. (unsigned char)(MT6311_PMIC_RG_RSV_SWREG_SHIFT)
  1548. );
  1549. mt6311_unlock();
  1550. }
  1551. unsigned char mt6311_get_vdvfs11_pg_deb(void)
  1552. {
  1553. unsigned char ret = 0;
  1554. unsigned char val = 0;
  1555. mt6311_lock();
  1556. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON13),
  1557. (&val),
  1558. (unsigned char)(MT6311_PMIC_VDVFS11_PG_DEB_MASK),
  1559. (unsigned char)(MT6311_PMIC_VDVFS11_PG_DEB_SHIFT)
  1560. );
  1561. mt6311_unlock();
  1562. return val;
  1563. }
  1564. unsigned char mt6311_get_vdvfs12_pg_deb(void)
  1565. {
  1566. unsigned char ret = 0;
  1567. unsigned char val = 0;
  1568. mt6311_lock();
  1569. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON13),
  1570. (&val),
  1571. (unsigned char)(MT6311_PMIC_VDVFS12_PG_DEB_MASK),
  1572. (unsigned char)(MT6311_PMIC_VDVFS12_PG_DEB_SHIFT)
  1573. );
  1574. mt6311_unlock();
  1575. return val;
  1576. }
  1577. unsigned char mt6311_get_vbiasn_pg_deb(void)
  1578. {
  1579. unsigned char ret = 0;
  1580. unsigned char val = 0;
  1581. mt6311_lock();
  1582. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON13),
  1583. (&val),
  1584. (unsigned char)(MT6311_PMIC_VBIASN_PG_DEB_MASK),
  1585. (unsigned char)(MT6311_PMIC_VBIASN_PG_DEB_SHIFT)
  1586. );
  1587. mt6311_unlock();
  1588. return val;
  1589. }
  1590. unsigned char mt6311_get_strup_ro_rsv0(void)
  1591. {
  1592. unsigned char ret = 0;
  1593. unsigned char val = 0;
  1594. mt6311_lock();
  1595. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON13),
  1596. (&val),
  1597. (unsigned char)(MT6311_PMIC_STRUP_RO_RSV0_MASK),
  1598. (unsigned char)(MT6311_PMIC_STRUP_RO_RSV0_SHIFT)
  1599. );
  1600. mt6311_unlock();
  1601. return val;
  1602. }
  1603. void mt6311_set_rg_strup_thr_110_clr(unsigned char val)
  1604. {
  1605. unsigned char ret = 0;
  1606. mt6311_lock();
  1607. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1608. (unsigned char)(val),
  1609. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_CLR_MASK),
  1610. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_CLR_SHIFT)
  1611. );
  1612. mt6311_unlock();
  1613. }
  1614. void mt6311_set_rg_strup_thr_125_clr(unsigned char val)
  1615. {
  1616. unsigned char ret = 0;
  1617. mt6311_lock();
  1618. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1619. (unsigned char)(val),
  1620. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_CLR_MASK),
  1621. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_CLR_SHIFT)
  1622. );
  1623. mt6311_unlock();
  1624. }
  1625. void mt6311_set_rg_strup_thr_110_irq_en(unsigned char val)
  1626. {
  1627. unsigned char ret = 0;
  1628. mt6311_lock();
  1629. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1630. (unsigned char)(val),
  1631. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_IRQ_EN_MASK),
  1632. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_IRQ_EN_SHIFT)
  1633. );
  1634. mt6311_unlock();
  1635. }
  1636. void mt6311_set_rg_strup_thr_125_irq_en(unsigned char val)
  1637. {
  1638. unsigned char ret = 0;
  1639. mt6311_lock();
  1640. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1641. (unsigned char)(val),
  1642. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_IRQ_EN_MASK),
  1643. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_IRQ_EN_SHIFT)
  1644. );
  1645. mt6311_unlock();
  1646. }
  1647. unsigned char mt6311_get_rg_strup_thr_110_irq_status(void)
  1648. {
  1649. unsigned char ret = 0;
  1650. unsigned char val = 0;
  1651. mt6311_lock();
  1652. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON14),
  1653. (&val),
  1654. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_IRQ_STATUS_MASK),
  1655. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_110_IRQ_STATUS_SHIFT)
  1656. );
  1657. mt6311_unlock();
  1658. return val;
  1659. }
  1660. unsigned char mt6311_get_rg_strup_thr_125_irq_status(void)
  1661. {
  1662. unsigned char ret = 0;
  1663. unsigned char val = 0;
  1664. mt6311_lock();
  1665. ret = mt6311_read_interface((unsigned char)(MT6311_STRUP_CON14),
  1666. (&val),
  1667. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_IRQ_STATUS_MASK),
  1668. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_125_IRQ_STATUS_SHIFT)
  1669. );
  1670. mt6311_unlock();
  1671. return val;
  1672. }
  1673. void mt6311_set_rg_thermal_en(unsigned char val)
  1674. {
  1675. unsigned char ret = 0;
  1676. mt6311_lock();
  1677. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1678. (unsigned char)(val),
  1679. (unsigned char)(MT6311_PMIC_RG_THERMAL_EN_MASK),
  1680. (unsigned char)(MT6311_PMIC_RG_THERMAL_EN_SHIFT)
  1681. );
  1682. mt6311_unlock();
  1683. }
  1684. void mt6311_set_rg_thermal_en_sel(unsigned char val)
  1685. {
  1686. unsigned char ret = 0;
  1687. mt6311_lock();
  1688. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_CON14),
  1689. (unsigned char)(val),
  1690. (unsigned char)(MT6311_PMIC_RG_THERMAL_EN_SEL_MASK),
  1691. (unsigned char)(MT6311_PMIC_RG_THERMAL_EN_SEL_SHIFT)
  1692. );
  1693. mt6311_unlock();
  1694. }
  1695. unsigned char mt6311_get_rg_osc_75k_trim(void)
  1696. {
  1697. unsigned char ret = 0;
  1698. unsigned char val = 0;
  1699. mt6311_lock();
  1700. ret = mt6311_read_interface((unsigned char)(MT6311_TOP_CLK_TRIM0),
  1701. (&val),
  1702. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_MASK),
  1703. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_SHIFT)
  1704. );
  1705. mt6311_unlock();
  1706. return val;
  1707. }
  1708. void mt6311_set_osc_75k_trim(unsigned char val)
  1709. {
  1710. unsigned char ret = 0;
  1711. mt6311_lock();
  1712. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CLK_TRIM1),
  1713. (unsigned char)(val),
  1714. (unsigned char)(MT6311_PMIC_OSC_75K_TRIM_MASK),
  1715. (unsigned char)(MT6311_PMIC_OSC_75K_TRIM_SHIFT)
  1716. );
  1717. mt6311_unlock();
  1718. }
  1719. void mt6311_set_rg_osc_75k_trim_en(unsigned char val)
  1720. {
  1721. unsigned char ret = 0;
  1722. mt6311_lock();
  1723. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CLK_TRIM1),
  1724. (unsigned char)(val),
  1725. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_EN_MASK),
  1726. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_EN_SHIFT)
  1727. );
  1728. mt6311_unlock();
  1729. }
  1730. void mt6311_set_rg_osc_75k_trim_rate(unsigned char val)
  1731. {
  1732. unsigned char ret = 0;
  1733. mt6311_lock();
  1734. ret = mt6311_config_interface((unsigned char)(MT6311_TOP_CLK_TRIM1),
  1735. (unsigned char)(val),
  1736. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_RATE_MASK),
  1737. (unsigned char)(MT6311_PMIC_RG_OSC_75K_TRIM_RATE_SHIFT)
  1738. );
  1739. mt6311_unlock();
  1740. }
  1741. void mt6311_set_rg_efuse_addr(unsigned char val)
  1742. {
  1743. unsigned char ret = 0;
  1744. mt6311_lock();
  1745. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON0),
  1746. (unsigned char)(val),
  1747. (unsigned char)(MT6311_PMIC_RG_EFUSE_ADDR_MASK),
  1748. (unsigned char)(MT6311_PMIC_RG_EFUSE_ADDR_SHIFT)
  1749. );
  1750. mt6311_unlock();
  1751. }
  1752. void mt6311_set_rg_efuse_din(unsigned char val)
  1753. {
  1754. unsigned char ret = 0;
  1755. mt6311_lock();
  1756. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON1),
  1757. (unsigned char)(val),
  1758. (unsigned char)(MT6311_PMIC_RG_EFUSE_DIN_MASK),
  1759. (unsigned char)(MT6311_PMIC_RG_EFUSE_DIN_SHIFT)
  1760. );
  1761. mt6311_unlock();
  1762. }
  1763. void mt6311_set_rg_efuse_dm(unsigned char val)
  1764. {
  1765. unsigned char ret = 0;
  1766. mt6311_lock();
  1767. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON2),
  1768. (unsigned char)(val),
  1769. (unsigned char)(MT6311_PMIC_RG_EFUSE_DM_MASK),
  1770. (unsigned char)(MT6311_PMIC_RG_EFUSE_DM_SHIFT)
  1771. );
  1772. mt6311_unlock();
  1773. }
  1774. void mt6311_set_rg_efuse_pgm(unsigned char val)
  1775. {
  1776. unsigned char ret = 0;
  1777. mt6311_lock();
  1778. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON3),
  1779. (unsigned char)(val),
  1780. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_MASK),
  1781. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_SHIFT)
  1782. );
  1783. mt6311_unlock();
  1784. }
  1785. void mt6311_set_rg_efuse_pgm_en(unsigned char val)
  1786. {
  1787. unsigned char ret = 0;
  1788. mt6311_lock();
  1789. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON4),
  1790. (unsigned char)(val),
  1791. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_EN_MASK),
  1792. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_EN_SHIFT)
  1793. );
  1794. mt6311_unlock();
  1795. }
  1796. void mt6311_set_rg_efuse_prog_pkey(unsigned char val)
  1797. {
  1798. unsigned char ret = 0;
  1799. mt6311_lock();
  1800. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON5),
  1801. (unsigned char)(val),
  1802. (unsigned char)(MT6311_PMIC_RG_EFUSE_PROG_PKEY_MASK),
  1803. (unsigned char)(MT6311_PMIC_RG_EFUSE_PROG_PKEY_SHIFT)
  1804. );
  1805. mt6311_unlock();
  1806. }
  1807. void mt6311_set_rg_efuse_rd_pkey(unsigned char val)
  1808. {
  1809. unsigned char ret = 0;
  1810. mt6311_lock();
  1811. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON6),
  1812. (unsigned char)(val),
  1813. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_PKEY_MASK),
  1814. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_PKEY_SHIFT)
  1815. );
  1816. mt6311_unlock();
  1817. }
  1818. void mt6311_set_rg_efuse_pgm_src(unsigned char val)
  1819. {
  1820. unsigned char ret = 0;
  1821. mt6311_lock();
  1822. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON7),
  1823. (unsigned char)(val),
  1824. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_SRC_MASK),
  1825. (unsigned char)(MT6311_PMIC_RG_EFUSE_PGM_SRC_SHIFT)
  1826. );
  1827. mt6311_unlock();
  1828. }
  1829. void mt6311_set_rg_efuse_din_src(unsigned char val)
  1830. {
  1831. unsigned char ret = 0;
  1832. mt6311_lock();
  1833. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON8),
  1834. (unsigned char)(val),
  1835. (unsigned char)(MT6311_PMIC_RG_EFUSE_DIN_SRC_MASK),
  1836. (unsigned char)(MT6311_PMIC_RG_EFUSE_DIN_SRC_SHIFT)
  1837. );
  1838. mt6311_unlock();
  1839. }
  1840. void mt6311_set_rg_efuse_rd_trig(unsigned char val)
  1841. {
  1842. unsigned char ret = 0;
  1843. mt6311_lock();
  1844. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON9),
  1845. (unsigned char)(val),
  1846. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_TRIG_MASK),
  1847. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_TRIG_SHIFT)
  1848. );
  1849. mt6311_unlock();
  1850. }
  1851. void mt6311_set_rg_rd_rdy_bypass(unsigned char val)
  1852. {
  1853. unsigned char ret = 0;
  1854. mt6311_lock();
  1855. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON10),
  1856. (unsigned char)(val),
  1857. (unsigned char)(MT6311_PMIC_RG_RD_RDY_BYPASS_MASK),
  1858. (unsigned char)(MT6311_PMIC_RG_RD_RDY_BYPASS_SHIFT)
  1859. );
  1860. mt6311_unlock();
  1861. }
  1862. void mt6311_set_rg_skip_efuse_out(unsigned char val)
  1863. {
  1864. unsigned char ret = 0;
  1865. mt6311_lock();
  1866. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON11),
  1867. (unsigned char)(val),
  1868. (unsigned char)(MT6311_PMIC_RG_SKIP_EFUSE_OUT_MASK),
  1869. (unsigned char)(MT6311_PMIC_RG_SKIP_EFUSE_OUT_SHIFT)
  1870. );
  1871. mt6311_unlock();
  1872. }
  1873. unsigned char mt6311_get_rg_efuse_rd_ack(void)
  1874. {
  1875. unsigned char ret = 0;
  1876. unsigned char val = 0;
  1877. mt6311_lock();
  1878. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_CON12),
  1879. (&val),
  1880. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_ACK_MASK),
  1881. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_ACK_SHIFT)
  1882. );
  1883. mt6311_unlock();
  1884. return val;
  1885. }
  1886. unsigned char mt6311_get_rg_efuse_rd_busy(void)
  1887. {
  1888. unsigned char ret = 0;
  1889. unsigned char val = 0;
  1890. mt6311_lock();
  1891. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_CON12),
  1892. (&val),
  1893. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_BUSY_MASK),
  1894. (unsigned char)(MT6311_PMIC_RG_EFUSE_RD_BUSY_SHIFT)
  1895. );
  1896. mt6311_unlock();
  1897. return val;
  1898. }
  1899. void mt6311_set_rg_efuse_write_mode(unsigned char val)
  1900. {
  1901. unsigned char ret = 0;
  1902. mt6311_lock();
  1903. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_CON13),
  1904. (unsigned char)(val),
  1905. (unsigned char)(MT6311_PMIC_RG_EFUSE_WRITE_MODE_MASK),
  1906. (unsigned char)(MT6311_PMIC_RG_EFUSE_WRITE_MODE_SHIFT)
  1907. );
  1908. mt6311_unlock();
  1909. }
  1910. unsigned char mt6311_get_rg_efuse_dout_0_7(void)
  1911. {
  1912. unsigned char ret = 0;
  1913. unsigned char val = 0;
  1914. mt6311_lock();
  1915. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_0_7),
  1916. (&val),
  1917. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_0_7_MASK),
  1918. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_0_7_SHIFT)
  1919. );
  1920. mt6311_unlock();
  1921. return val;
  1922. }
  1923. unsigned char mt6311_get_rg_efuse_dout_8_15(void)
  1924. {
  1925. unsigned char ret = 0;
  1926. unsigned char val = 0;
  1927. mt6311_lock();
  1928. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_8_15),
  1929. (&val),
  1930. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_8_15_MASK),
  1931. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_8_15_SHIFT)
  1932. );
  1933. mt6311_unlock();
  1934. return val;
  1935. }
  1936. unsigned char mt6311_get_rg_efuse_dout_16_23(void)
  1937. {
  1938. unsigned char ret = 0;
  1939. unsigned char val = 0;
  1940. mt6311_lock();
  1941. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_16_23),
  1942. (&val),
  1943. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_16_23_MASK),
  1944. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_16_23_SHIFT)
  1945. );
  1946. mt6311_unlock();
  1947. return val;
  1948. }
  1949. unsigned char mt6311_get_rg_efuse_dout_24_31(void)
  1950. {
  1951. unsigned char ret = 0;
  1952. unsigned char val = 0;
  1953. mt6311_lock();
  1954. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_24_31),
  1955. (&val),
  1956. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_24_31_MASK),
  1957. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_24_31_SHIFT)
  1958. );
  1959. mt6311_unlock();
  1960. return val;
  1961. }
  1962. unsigned char mt6311_get_rg_efuse_dout_32_39(void)
  1963. {
  1964. unsigned char ret = 0;
  1965. unsigned char val = 0;
  1966. mt6311_lock();
  1967. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_32_39),
  1968. (&val),
  1969. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_32_39_MASK),
  1970. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_32_39_SHIFT)
  1971. );
  1972. mt6311_unlock();
  1973. return val;
  1974. }
  1975. unsigned char mt6311_get_rg_efuse_dout_40_47(void)
  1976. {
  1977. unsigned char ret = 0;
  1978. unsigned char val = 0;
  1979. mt6311_lock();
  1980. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_40_47),
  1981. (&val),
  1982. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_40_47_MASK),
  1983. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_40_47_SHIFT)
  1984. );
  1985. mt6311_unlock();
  1986. return val;
  1987. }
  1988. unsigned char mt6311_get_rg_efuse_dout_48_55(void)
  1989. {
  1990. unsigned char ret = 0;
  1991. unsigned char val = 0;
  1992. mt6311_lock();
  1993. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_48_55),
  1994. (&val),
  1995. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_48_55_MASK),
  1996. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_48_55_SHIFT)
  1997. );
  1998. mt6311_unlock();
  1999. return val;
  2000. }
  2001. unsigned char mt6311_get_rg_efuse_dout_56_63(void)
  2002. {
  2003. unsigned char ret = 0;
  2004. unsigned char val = 0;
  2005. mt6311_lock();
  2006. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_56_63),
  2007. (&val),
  2008. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_56_63_MASK),
  2009. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_56_63_SHIFT)
  2010. );
  2011. mt6311_unlock();
  2012. return val;
  2013. }
  2014. unsigned char mt6311_get_rg_efuse_dout_64_71(void)
  2015. {
  2016. unsigned char ret = 0;
  2017. unsigned char val = 0;
  2018. mt6311_lock();
  2019. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_64_71),
  2020. (&val),
  2021. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_64_71_MASK),
  2022. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_64_71_SHIFT)
  2023. );
  2024. mt6311_unlock();
  2025. return val;
  2026. }
  2027. unsigned char mt6311_get_rg_efuse_dout_72_79(void)
  2028. {
  2029. unsigned char ret = 0;
  2030. unsigned char val = 0;
  2031. mt6311_lock();
  2032. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_72_79),
  2033. (&val),
  2034. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_72_79_MASK),
  2035. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_72_79_SHIFT)
  2036. );
  2037. mt6311_unlock();
  2038. return val;
  2039. }
  2040. unsigned char mt6311_get_rg_efuse_dout_80_87(void)
  2041. {
  2042. unsigned char ret = 0;
  2043. unsigned char val = 0;
  2044. mt6311_lock();
  2045. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_80_87),
  2046. (&val),
  2047. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_80_87_MASK),
  2048. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_80_87_SHIFT)
  2049. );
  2050. mt6311_unlock();
  2051. return val;
  2052. }
  2053. unsigned char mt6311_get_rg_efuse_dout_88_95(void)
  2054. {
  2055. unsigned char ret = 0;
  2056. unsigned char val = 0;
  2057. mt6311_lock();
  2058. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_88_95),
  2059. (&val),
  2060. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_88_95_MASK),
  2061. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_88_95_SHIFT)
  2062. );
  2063. mt6311_unlock();
  2064. return val;
  2065. }
  2066. unsigned char mt6311_get_rg_efuse_dout_96_103(void)
  2067. {
  2068. unsigned char ret = 0;
  2069. unsigned char val = 0;
  2070. mt6311_lock();
  2071. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_96_103),
  2072. (&val),
  2073. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_96_103_MASK),
  2074. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_96_103_SHIFT)
  2075. );
  2076. mt6311_unlock();
  2077. return val;
  2078. }
  2079. unsigned char mt6311_get_rg_efuse_dout_104_111(void)
  2080. {
  2081. unsigned char ret = 0;
  2082. unsigned char val = 0;
  2083. mt6311_lock();
  2084. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_104_111),
  2085. (&val),
  2086. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_104_111_MASK),
  2087. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_104_111_SHIFT)
  2088. );
  2089. mt6311_unlock();
  2090. return val;
  2091. }
  2092. unsigned char mt6311_get_rg_efuse_dout_112_119(void)
  2093. {
  2094. unsigned char ret = 0;
  2095. unsigned char val = 0;
  2096. mt6311_lock();
  2097. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_112_119),
  2098. (&val),
  2099. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_112_119_MASK),
  2100. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_112_119_SHIFT)
  2101. );
  2102. mt6311_unlock();
  2103. return val;
  2104. }
  2105. unsigned char mt6311_get_rg_efuse_dout_120_127(void)
  2106. {
  2107. unsigned char ret = 0;
  2108. unsigned char val = 0;
  2109. mt6311_lock();
  2110. ret = mt6311_read_interface((unsigned char)(MT6311_EFUSE_DOUT_120_127),
  2111. (&val),
  2112. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_120_127_MASK),
  2113. (unsigned char)(MT6311_PMIC_RG_EFUSE_DOUT_120_127_SHIFT)
  2114. );
  2115. mt6311_unlock();
  2116. return val;
  2117. }
  2118. void mt6311_set_rg_efuse_val_0_7(unsigned char val)
  2119. {
  2120. unsigned char ret = 0;
  2121. mt6311_lock();
  2122. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_0_7),
  2123. (unsigned char)(val),
  2124. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_0_7_MASK),
  2125. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_0_7_SHIFT)
  2126. );
  2127. mt6311_unlock();
  2128. }
  2129. void mt6311_set_rg_efuse_val_8_15(unsigned char val)
  2130. {
  2131. unsigned char ret = 0;
  2132. mt6311_lock();
  2133. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_8_15),
  2134. (unsigned char)(val),
  2135. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_8_15_MASK),
  2136. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_8_15_SHIFT)
  2137. );
  2138. mt6311_unlock();
  2139. }
  2140. void mt6311_set_rg_efuse_val_16_23(unsigned char val)
  2141. {
  2142. unsigned char ret = 0;
  2143. mt6311_lock();
  2144. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_16_23),
  2145. (unsigned char)(val),
  2146. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_16_23_MASK),
  2147. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_16_23_SHIFT)
  2148. );
  2149. mt6311_unlock();
  2150. }
  2151. void mt6311_set_rg_efuse_val_24_31(unsigned char val)
  2152. {
  2153. unsigned char ret = 0;
  2154. mt6311_lock();
  2155. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_24_31),
  2156. (unsigned char)(val),
  2157. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_24_31_MASK),
  2158. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_24_31_SHIFT)
  2159. );
  2160. mt6311_unlock();
  2161. }
  2162. void mt6311_set_rg_efuse_val_32_39(unsigned char val)
  2163. {
  2164. unsigned char ret = 0;
  2165. mt6311_lock();
  2166. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_32_39),
  2167. (unsigned char)(val),
  2168. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_32_39_MASK),
  2169. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_32_39_SHIFT)
  2170. );
  2171. mt6311_unlock();
  2172. }
  2173. void mt6311_set_rg_efuse_val_40_47(unsigned char val)
  2174. {
  2175. unsigned char ret = 0;
  2176. mt6311_lock();
  2177. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_40_47),
  2178. (unsigned char)(val),
  2179. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_40_47_MASK),
  2180. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_40_47_SHIFT)
  2181. );
  2182. mt6311_unlock();
  2183. }
  2184. void mt6311_set_rg_efuse_val_48_55(unsigned char val)
  2185. {
  2186. unsigned char ret = 0;
  2187. mt6311_lock();
  2188. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_48_55),
  2189. (unsigned char)(val),
  2190. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_48_55_MASK),
  2191. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_48_55_SHIFT)
  2192. );
  2193. mt6311_unlock();
  2194. }
  2195. void mt6311_set_rg_efuse_val_56_63(unsigned char val)
  2196. {
  2197. unsigned char ret = 0;
  2198. mt6311_lock();
  2199. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_56_63),
  2200. (unsigned char)(val),
  2201. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_56_63_MASK),
  2202. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_56_63_SHIFT)
  2203. );
  2204. mt6311_unlock();
  2205. }
  2206. void mt6311_set_rg_efuse_val_64_71(unsigned char val)
  2207. {
  2208. unsigned char ret = 0;
  2209. mt6311_lock();
  2210. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_64_71),
  2211. (unsigned char)(val),
  2212. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_64_71_MASK),
  2213. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_64_71_SHIFT)
  2214. );
  2215. mt6311_unlock();
  2216. }
  2217. void mt6311_set_rg_efuse_val_72_79(unsigned char val)
  2218. {
  2219. unsigned char ret = 0;
  2220. mt6311_lock();
  2221. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_72_79),
  2222. (unsigned char)(val),
  2223. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_72_79_MASK),
  2224. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_72_79_SHIFT)
  2225. );
  2226. mt6311_unlock();
  2227. }
  2228. void mt6311_set_rg_efuse_val_80_87(unsigned char val)
  2229. {
  2230. unsigned char ret = 0;
  2231. mt6311_lock();
  2232. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_80_87),
  2233. (unsigned char)(val),
  2234. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_80_87_MASK),
  2235. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_80_87_SHIFT)
  2236. );
  2237. mt6311_unlock();
  2238. }
  2239. void mt6311_set_rg_efuse_val_88_95(unsigned char val)
  2240. {
  2241. unsigned char ret = 0;
  2242. mt6311_lock();
  2243. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_88_95),
  2244. (unsigned char)(val),
  2245. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_88_95_MASK),
  2246. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_88_95_SHIFT)
  2247. );
  2248. mt6311_unlock();
  2249. }
  2250. void mt6311_set_rg_efuse_val_96_103(unsigned char val)
  2251. {
  2252. unsigned char ret = 0;
  2253. mt6311_lock();
  2254. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_96_103),
  2255. (unsigned char)(val),
  2256. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_96_103_MASK),
  2257. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_96_103_SHIFT)
  2258. );
  2259. mt6311_unlock();
  2260. }
  2261. void mt6311_set_rg_efuse_val_104_111(unsigned char val)
  2262. {
  2263. unsigned char ret = 0;
  2264. mt6311_lock();
  2265. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_104_111),
  2266. (unsigned char)(val),
  2267. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_104_111_MASK),
  2268. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_104_111_SHIFT)
  2269. );
  2270. mt6311_unlock();
  2271. }
  2272. void mt6311_set_rg_efuse_val_112_119(unsigned char val)
  2273. {
  2274. unsigned char ret = 0;
  2275. mt6311_lock();
  2276. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_112_119),
  2277. (unsigned char)(val),
  2278. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_112_119_MASK),
  2279. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_112_119_SHIFT)
  2280. );
  2281. mt6311_unlock();
  2282. }
  2283. void mt6311_set_rg_efuse_val_120_127(unsigned char val)
  2284. {
  2285. unsigned char ret = 0;
  2286. mt6311_lock();
  2287. ret = mt6311_config_interface((unsigned char)(MT6311_EFUSE_VAL_120_127),
  2288. (unsigned char)(val),
  2289. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_120_127_MASK),
  2290. (unsigned char)(MT6311_PMIC_RG_EFUSE_VAL_120_127_SHIFT)
  2291. );
  2292. mt6311_unlock();
  2293. }
  2294. void mt6311_set_buck_dig0_rsv0(unsigned char val)
  2295. {
  2296. unsigned char ret = 0;
  2297. mt6311_lock();
  2298. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON0),
  2299. (unsigned char)(val),
  2300. (unsigned char)(MT6311_PMIC_BUCK_DIG0_RSV0_MASK),
  2301. (unsigned char)(MT6311_PMIC_BUCK_DIG0_RSV0_SHIFT)
  2302. );
  2303. mt6311_unlock();
  2304. }
  2305. void mt6311_set_vsleep_src0_8(unsigned char val)
  2306. {
  2307. unsigned char ret = 0;
  2308. mt6311_lock();
  2309. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON1),
  2310. (unsigned char)(val),
  2311. (unsigned char)(MT6311_PMIC_VSLEEP_SRC0_8_MASK),
  2312. (unsigned char)(MT6311_PMIC_VSLEEP_SRC0_8_SHIFT)
  2313. );
  2314. mt6311_unlock();
  2315. }
  2316. void mt6311_set_vsleep_src1(unsigned char val)
  2317. {
  2318. unsigned char ret = 0;
  2319. mt6311_lock();
  2320. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON1),
  2321. (unsigned char)(val),
  2322. (unsigned char)(MT6311_PMIC_VSLEEP_SRC1_MASK),
  2323. (unsigned char)(MT6311_PMIC_VSLEEP_SRC1_SHIFT)
  2324. );
  2325. mt6311_unlock();
  2326. }
  2327. void mt6311_set_vsleep_src0_7_0(unsigned char val)
  2328. {
  2329. unsigned char ret = 0;
  2330. mt6311_lock();
  2331. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON2),
  2332. (unsigned char)(val),
  2333. (unsigned char)(MT6311_PMIC_VSLEEP_SRC0_7_0_MASK),
  2334. (unsigned char)(MT6311_PMIC_VSLEEP_SRC0_7_0_SHIFT)
  2335. );
  2336. mt6311_unlock();
  2337. }
  2338. void mt6311_set_r2r_src0_8(unsigned char val)
  2339. {
  2340. unsigned char ret = 0;
  2341. mt6311_lock();
  2342. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON3),
  2343. (unsigned char)(val),
  2344. (unsigned char)(MT6311_PMIC_R2R_SRC0_8_MASK),
  2345. (unsigned char)(MT6311_PMIC_R2R_SRC0_8_SHIFT)
  2346. );
  2347. mt6311_unlock();
  2348. }
  2349. void mt6311_set_r2r_src1(unsigned char val)
  2350. {
  2351. unsigned char ret = 0;
  2352. mt6311_lock();
  2353. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON3),
  2354. (unsigned char)(val),
  2355. (unsigned char)(MT6311_PMIC_R2R_SRC1_MASK),
  2356. (unsigned char)(MT6311_PMIC_R2R_SRC1_SHIFT)
  2357. );
  2358. mt6311_unlock();
  2359. }
  2360. void mt6311_set_r2r_src0_7_0(unsigned char val)
  2361. {
  2362. unsigned char ret = 0;
  2363. mt6311_lock();
  2364. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON4),
  2365. (unsigned char)(val),
  2366. (unsigned char)(MT6311_PMIC_R2R_SRC0_7_0_MASK),
  2367. (unsigned char)(MT6311_PMIC_R2R_SRC0_7_0_SHIFT)
  2368. );
  2369. mt6311_unlock();
  2370. }
  2371. void mt6311_set_buck_osc_sel_src0_8(unsigned char val)
  2372. {
  2373. unsigned char ret = 0;
  2374. mt6311_lock();
  2375. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON5),
  2376. (unsigned char)(val),
  2377. (unsigned char)(MT6311_PMIC_BUCK_OSC_SEL_SRC0_8_MASK),
  2378. (unsigned char)(MT6311_PMIC_BUCK_OSC_SEL_SRC0_8_SHIFT)
  2379. );
  2380. mt6311_unlock();
  2381. }
  2382. void mt6311_set_srclken_dly_src1(unsigned char val)
  2383. {
  2384. unsigned char ret = 0;
  2385. mt6311_lock();
  2386. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON5),
  2387. (unsigned char)(val),
  2388. (unsigned char)(MT6311_PMIC_SRCLKEN_DLY_SRC1_MASK),
  2389. (unsigned char)(MT6311_PMIC_SRCLKEN_DLY_SRC1_SHIFT)
  2390. );
  2391. mt6311_unlock();
  2392. }
  2393. void mt6311_set_buck_osc_sel_src0_7_0(unsigned char val)
  2394. {
  2395. unsigned char ret = 0;
  2396. mt6311_lock();
  2397. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON6),
  2398. (unsigned char)(val),
  2399. (unsigned char)(MT6311_PMIC_BUCK_OSC_SEL_SRC0_7_0_MASK),
  2400. (unsigned char)(MT6311_PMIC_BUCK_OSC_SEL_SRC0_7_0_SHIFT)
  2401. );
  2402. mt6311_unlock();
  2403. }
  2404. unsigned char mt6311_get_qi_vdvfs12_dig_mon(void)
  2405. {
  2406. unsigned char ret = 0;
  2407. unsigned char val = 0;
  2408. mt6311_lock();
  2409. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_ALL_CON7),
  2410. (&val),
  2411. (unsigned char)(MT6311_PMIC_QI_VDVFS12_DIG_MON_MASK),
  2412. (unsigned char)(MT6311_PMIC_QI_VDVFS12_DIG_MON_SHIFT)
  2413. );
  2414. mt6311_unlock();
  2415. return val;
  2416. }
  2417. unsigned char mt6311_get_qi_vdvfs11_dig_mon(void)
  2418. {
  2419. unsigned char ret = 0;
  2420. unsigned char val = 0;
  2421. mt6311_lock();
  2422. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_ALL_CON8),
  2423. (&val),
  2424. (unsigned char)(MT6311_PMIC_QI_VDVFS11_DIG_MON_MASK),
  2425. (unsigned char)(MT6311_PMIC_QI_VDVFS11_DIG_MON_SHIFT)
  2426. );
  2427. mt6311_unlock();
  2428. return val;
  2429. }
  2430. void mt6311_set_vdvfs11_oc_en(unsigned char val)
  2431. {
  2432. unsigned char ret = 0;
  2433. mt6311_lock();
  2434. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON9),
  2435. (unsigned char)(val),
  2436. (unsigned char)(MT6311_PMIC_VDVFS11_OC_EN_MASK),
  2437. (unsigned char)(MT6311_PMIC_VDVFS11_OC_EN_SHIFT)
  2438. );
  2439. mt6311_unlock();
  2440. }
  2441. void mt6311_set_vdvfs11_oc_deg_en(unsigned char val)
  2442. {
  2443. unsigned char ret = 0;
  2444. mt6311_lock();
  2445. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON9),
  2446. (unsigned char)(val),
  2447. (unsigned char)(MT6311_PMIC_VDVFS11_OC_DEG_EN_MASK),
  2448. (unsigned char)(MT6311_PMIC_VDVFS11_OC_DEG_EN_SHIFT)
  2449. );
  2450. mt6311_unlock();
  2451. }
  2452. void mt6311_set_vdvfs11_oc_wnd(unsigned char val)
  2453. {
  2454. unsigned char ret = 0;
  2455. mt6311_lock();
  2456. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON9),
  2457. (unsigned char)(val),
  2458. (unsigned char)(MT6311_PMIC_VDVFS11_OC_WND_MASK),
  2459. (unsigned char)(MT6311_PMIC_VDVFS11_OC_WND_SHIFT)
  2460. );
  2461. mt6311_unlock();
  2462. }
  2463. void mt6311_set_vdvfs11_oc_thd(unsigned char val)
  2464. {
  2465. unsigned char ret = 0;
  2466. mt6311_lock();
  2467. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON9),
  2468. (unsigned char)(val),
  2469. (unsigned char)(MT6311_PMIC_VDVFS11_OC_THD_MASK),
  2470. (unsigned char)(MT6311_PMIC_VDVFS11_OC_THD_SHIFT)
  2471. );
  2472. mt6311_unlock();
  2473. }
  2474. void mt6311_set_vdvfs12_oc_en(unsigned char val)
  2475. {
  2476. unsigned char ret = 0;
  2477. mt6311_lock();
  2478. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON10),
  2479. (unsigned char)(val),
  2480. (unsigned char)(MT6311_PMIC_VDVFS12_OC_EN_MASK),
  2481. (unsigned char)(MT6311_PMIC_VDVFS12_OC_EN_SHIFT)
  2482. );
  2483. mt6311_unlock();
  2484. }
  2485. void mt6311_set_vdvfs12_oc_deg_en(unsigned char val)
  2486. {
  2487. unsigned char ret = 0;
  2488. mt6311_lock();
  2489. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON10),
  2490. (unsigned char)(val),
  2491. (unsigned char)(MT6311_PMIC_VDVFS12_OC_DEG_EN_MASK),
  2492. (unsigned char)(MT6311_PMIC_VDVFS12_OC_DEG_EN_SHIFT)
  2493. );
  2494. mt6311_unlock();
  2495. }
  2496. void mt6311_set_vdvfs12_oc_wnd(unsigned char val)
  2497. {
  2498. unsigned char ret = 0;
  2499. mt6311_lock();
  2500. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON10),
  2501. (unsigned char)(val),
  2502. (unsigned char)(MT6311_PMIC_VDVFS12_OC_WND_MASK),
  2503. (unsigned char)(MT6311_PMIC_VDVFS12_OC_WND_SHIFT)
  2504. );
  2505. mt6311_unlock();
  2506. }
  2507. void mt6311_set_vdvfs12_oc_thd(unsigned char val)
  2508. {
  2509. unsigned char ret = 0;
  2510. mt6311_lock();
  2511. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON10),
  2512. (unsigned char)(val),
  2513. (unsigned char)(MT6311_PMIC_VDVFS12_OC_THD_MASK),
  2514. (unsigned char)(MT6311_PMIC_VDVFS12_OC_THD_SHIFT)
  2515. );
  2516. mt6311_unlock();
  2517. }
  2518. void mt6311_set_vdvfs11_oc_flag_clr(unsigned char val)
  2519. {
  2520. unsigned char ret = 0;
  2521. mt6311_lock();
  2522. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON18),
  2523. (unsigned char)(val),
  2524. (unsigned char)(MT6311_PMIC_VDVFS11_OC_FLAG_CLR_MASK),
  2525. (unsigned char)(MT6311_PMIC_VDVFS11_OC_FLAG_CLR_SHIFT)
  2526. );
  2527. mt6311_unlock();
  2528. }
  2529. void mt6311_set_vdvfs12_oc_flag_clr(unsigned char val)
  2530. {
  2531. unsigned char ret = 0;
  2532. mt6311_lock();
  2533. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON18),
  2534. (unsigned char)(val),
  2535. (unsigned char)(MT6311_PMIC_VDVFS12_OC_FLAG_CLR_MASK),
  2536. (unsigned char)(MT6311_PMIC_VDVFS12_OC_FLAG_CLR_SHIFT)
  2537. );
  2538. mt6311_unlock();
  2539. }
  2540. void mt6311_set_vdvfs11_oc_rg_status_clr(unsigned char val)
  2541. {
  2542. unsigned char ret = 0;
  2543. mt6311_lock();
  2544. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON18),
  2545. (unsigned char)(val),
  2546. (unsigned char)(MT6311_PMIC_VDVFS11_OC_RG_STATUS_CLR_MASK),
  2547. (unsigned char)(MT6311_PMIC_VDVFS11_OC_RG_STATUS_CLR_SHIFT)
  2548. );
  2549. mt6311_unlock();
  2550. }
  2551. void mt6311_set_vdvfs12_oc_rg_status_clr(unsigned char val)
  2552. {
  2553. unsigned char ret = 0;
  2554. mt6311_lock();
  2555. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON18),
  2556. (unsigned char)(val),
  2557. (unsigned char)(MT6311_PMIC_VDVFS12_OC_RG_STATUS_CLR_MASK),
  2558. (unsigned char)(MT6311_PMIC_VDVFS12_OC_RG_STATUS_CLR_SHIFT)
  2559. );
  2560. mt6311_unlock();
  2561. }
  2562. void mt6311_set_vdvfs11_oc_flag_clr_sel(unsigned char val)
  2563. {
  2564. unsigned char ret = 0;
  2565. mt6311_lock();
  2566. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON19),
  2567. (unsigned char)(val),
  2568. (unsigned char)(MT6311_PMIC_VDVFS11_OC_FLAG_CLR_SEL_MASK),
  2569. (unsigned char)(MT6311_PMIC_VDVFS11_OC_FLAG_CLR_SEL_SHIFT)
  2570. );
  2571. mt6311_unlock();
  2572. }
  2573. void mt6311_set_vdvfs12_oc_flag_clr_sel(unsigned char val)
  2574. {
  2575. unsigned char ret = 0;
  2576. mt6311_lock();
  2577. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON19),
  2578. (unsigned char)(val),
  2579. (unsigned char)(MT6311_PMIC_VDVFS12_OC_FLAG_CLR_SEL_MASK),
  2580. (unsigned char)(MT6311_PMIC_VDVFS12_OC_FLAG_CLR_SEL_SHIFT)
  2581. );
  2582. mt6311_unlock();
  2583. }
  2584. unsigned char mt6311_get_vdvfs11_oc_status(void)
  2585. {
  2586. unsigned char ret = 0;
  2587. unsigned char val = 0;
  2588. mt6311_lock();
  2589. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_ALL_CON20),
  2590. (&val),
  2591. (unsigned char)(MT6311_PMIC_VDVFS11_OC_STATUS_MASK),
  2592. (unsigned char)(MT6311_PMIC_VDVFS11_OC_STATUS_SHIFT)
  2593. );
  2594. mt6311_unlock();
  2595. return val;
  2596. }
  2597. unsigned char mt6311_get_vdvfs12_oc_status(void)
  2598. {
  2599. unsigned char ret = 0;
  2600. unsigned char val = 0;
  2601. mt6311_lock();
  2602. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_ALL_CON20),
  2603. (&val),
  2604. (unsigned char)(MT6311_PMIC_VDVFS12_OC_STATUS_MASK),
  2605. (unsigned char)(MT6311_PMIC_VDVFS12_OC_STATUS_SHIFT)
  2606. );
  2607. mt6311_unlock();
  2608. return val;
  2609. }
  2610. void mt6311_set_vdvfs11_oc_int_en(unsigned char val)
  2611. {
  2612. unsigned char ret = 0;
  2613. mt6311_lock();
  2614. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON21),
  2615. (unsigned char)(val),
  2616. (unsigned char)(MT6311_PMIC_VDVFS11_OC_INT_EN_MASK),
  2617. (unsigned char)(MT6311_PMIC_VDVFS11_OC_INT_EN_SHIFT)
  2618. );
  2619. mt6311_unlock();
  2620. }
  2621. void mt6311_set_vdvfs12_oc_int_en(unsigned char val)
  2622. {
  2623. unsigned char ret = 0;
  2624. mt6311_lock();
  2625. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON21),
  2626. (unsigned char)(val),
  2627. (unsigned char)(MT6311_PMIC_VDVFS12_OC_INT_EN_MASK),
  2628. (unsigned char)(MT6311_PMIC_VDVFS12_OC_INT_EN_SHIFT)
  2629. );
  2630. mt6311_unlock();
  2631. }
  2632. void mt6311_set_vdvfs11_en_oc_sdn_sel(unsigned char val)
  2633. {
  2634. unsigned char ret = 0;
  2635. mt6311_lock();
  2636. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON22),
  2637. (unsigned char)(val),
  2638. (unsigned char)(MT6311_PMIC_VDVFS11_EN_OC_SDN_SEL_MASK),
  2639. (unsigned char)(MT6311_PMIC_VDVFS11_EN_OC_SDN_SEL_SHIFT)
  2640. );
  2641. mt6311_unlock();
  2642. }
  2643. void mt6311_set_vdvfs12_en_oc_sdn_sel(unsigned char val)
  2644. {
  2645. unsigned char ret = 0;
  2646. mt6311_lock();
  2647. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON22),
  2648. (unsigned char)(val),
  2649. (unsigned char)(MT6311_PMIC_VDVFS12_EN_OC_SDN_SEL_MASK),
  2650. (unsigned char)(MT6311_PMIC_VDVFS12_EN_OC_SDN_SEL_SHIFT)
  2651. );
  2652. mt6311_unlock();
  2653. }
  2654. void mt6311_set_buck_test_mode(unsigned char val)
  2655. {
  2656. unsigned char ret = 0;
  2657. mt6311_lock();
  2658. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON23),
  2659. (unsigned char)(val),
  2660. (unsigned char)(MT6311_PMIC_BUCK_TEST_MODE_MASK),
  2661. (unsigned char)(MT6311_PMIC_BUCK_TEST_MODE_SHIFT)
  2662. );
  2663. mt6311_unlock();
  2664. }
  2665. void mt6311_set_buck_dig1_rsv0(unsigned char val)
  2666. {
  2667. unsigned char ret = 0;
  2668. mt6311_lock();
  2669. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON23),
  2670. (unsigned char)(val),
  2671. (unsigned char)(MT6311_PMIC_BUCK_DIG1_RSV0_MASK),
  2672. (unsigned char)(MT6311_PMIC_BUCK_DIG1_RSV0_SHIFT)
  2673. );
  2674. mt6311_unlock();
  2675. }
  2676. void mt6311_set_qi_vdvfs11_vsleep(unsigned char val)
  2677. {
  2678. unsigned char ret = 0;
  2679. mt6311_lock();
  2680. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON24),
  2681. (unsigned char)(val),
  2682. (unsigned char)(MT6311_PMIC_QI_VDVFS11_VSLEEP_MASK),
  2683. (unsigned char)(MT6311_PMIC_QI_VDVFS11_VSLEEP_SHIFT)
  2684. );
  2685. mt6311_unlock();
  2686. }
  2687. void mt6311_set_qi_vdvfs12_vsleep(unsigned char val)
  2688. {
  2689. unsigned char ret = 0;
  2690. mt6311_lock();
  2691. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_ALL_CON24),
  2692. (unsigned char)(val),
  2693. (unsigned char)(MT6311_PMIC_QI_VDVFS12_VSLEEP_MASK),
  2694. (unsigned char)(MT6311_PMIC_QI_VDVFS12_VSLEEP_SHIFT)
  2695. );
  2696. mt6311_unlock();
  2697. }
  2698. void mt6311_set_buck_ana_dig0_rsv0(unsigned char val)
  2699. {
  2700. unsigned char ret = 0;
  2701. mt6311_lock();
  2702. ret = mt6311_config_interface((unsigned char)(MT6311_ANA_RSV_CON0),
  2703. (unsigned char)(val),
  2704. (unsigned char)(MT6311_PMIC_BUCK_ANA_DIG0_RSV0_MASK),
  2705. (unsigned char)(MT6311_PMIC_BUCK_ANA_DIG0_RSV0_SHIFT)
  2706. );
  2707. mt6311_unlock();
  2708. }
  2709. void mt6311_set_rg_thrdet_sel(unsigned char val)
  2710. {
  2711. unsigned char ret = 0;
  2712. mt6311_lock();
  2713. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON0),
  2714. (unsigned char)(val),
  2715. (unsigned char)(MT6311_PMIC_RG_THRDET_SEL_MASK),
  2716. (unsigned char)(MT6311_PMIC_RG_THRDET_SEL_SHIFT)
  2717. );
  2718. mt6311_unlock();
  2719. }
  2720. void mt6311_set_rg_strup_thr_sel(unsigned char val)
  2721. {
  2722. unsigned char ret = 0;
  2723. mt6311_lock();
  2724. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON0),
  2725. (unsigned char)(val),
  2726. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_SEL_MASK),
  2727. (unsigned char)(MT6311_PMIC_RG_STRUP_THR_SEL_SHIFT)
  2728. );
  2729. mt6311_unlock();
  2730. }
  2731. void mt6311_set_rg_thr_tmode(unsigned char val)
  2732. {
  2733. unsigned char ret = 0;
  2734. mt6311_lock();
  2735. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON0),
  2736. (unsigned char)(val),
  2737. (unsigned char)(MT6311_PMIC_RG_THR_TMODE_MASK),
  2738. (unsigned char)(MT6311_PMIC_RG_THR_TMODE_SHIFT)
  2739. );
  2740. mt6311_unlock();
  2741. }
  2742. void mt6311_set_rg_strup_iref_trim(unsigned char val)
  2743. {
  2744. unsigned char ret = 0;
  2745. mt6311_lock();
  2746. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON1),
  2747. (unsigned char)(val),
  2748. (unsigned char)(MT6311_PMIC_RG_STRUP_IREF_TRIM_MASK),
  2749. (unsigned char)(MT6311_PMIC_RG_STRUP_IREF_TRIM_SHIFT)
  2750. );
  2751. mt6311_unlock();
  2752. }
  2753. void mt6311_set_rg_uvlo_vthl(unsigned char val)
  2754. {
  2755. unsigned char ret = 0;
  2756. mt6311_lock();
  2757. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON1),
  2758. (unsigned char)(val),
  2759. (unsigned char)(MT6311_PMIC_RG_UVLO_VTHL_MASK),
  2760. (unsigned char)(MT6311_PMIC_RG_UVLO_VTHL_SHIFT)
  2761. );
  2762. mt6311_unlock();
  2763. }
  2764. void mt6311_set_rg_uvlo_vthh(unsigned char val)
  2765. {
  2766. unsigned char ret = 0;
  2767. mt6311_lock();
  2768. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON2),
  2769. (unsigned char)(val),
  2770. (unsigned char)(MT6311_PMIC_RG_UVLO_VTHH_MASK),
  2771. (unsigned char)(MT6311_PMIC_RG_UVLO_VTHH_SHIFT)
  2772. );
  2773. mt6311_unlock();
  2774. }
  2775. void mt6311_set_rg_bgr_unchop(unsigned char val)
  2776. {
  2777. unsigned char ret = 0;
  2778. mt6311_lock();
  2779. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON2),
  2780. (unsigned char)(val),
  2781. (unsigned char)(MT6311_PMIC_RG_BGR_UNCHOP_MASK),
  2782. (unsigned char)(MT6311_PMIC_RG_BGR_UNCHOP_SHIFT)
  2783. );
  2784. mt6311_unlock();
  2785. }
  2786. void mt6311_set_rg_bgr_unchop_ph(unsigned char val)
  2787. {
  2788. unsigned char ret = 0;
  2789. mt6311_lock();
  2790. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON2),
  2791. (unsigned char)(val),
  2792. (unsigned char)(MT6311_PMIC_RG_BGR_UNCHOP_PH_MASK),
  2793. (unsigned char)(MT6311_PMIC_RG_BGR_UNCHOP_PH_SHIFT)
  2794. );
  2795. mt6311_unlock();
  2796. }
  2797. void mt6311_set_rg_bgr_rsel(unsigned char val)
  2798. {
  2799. unsigned char ret = 0;
  2800. mt6311_lock();
  2801. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON2),
  2802. (unsigned char)(val),
  2803. (unsigned char)(MT6311_PMIC_RG_BGR_RSEL_MASK),
  2804. (unsigned char)(MT6311_PMIC_RG_BGR_RSEL_SHIFT)
  2805. );
  2806. mt6311_unlock();
  2807. }
  2808. void mt6311_set_rg_bgr_trim(unsigned char val)
  2809. {
  2810. unsigned char ret = 0;
  2811. mt6311_lock();
  2812. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON3),
  2813. (unsigned char)(val),
  2814. (unsigned char)(MT6311_PMIC_RG_BGR_TRIM_MASK),
  2815. (unsigned char)(MT6311_PMIC_RG_BGR_TRIM_SHIFT)
  2816. );
  2817. mt6311_unlock();
  2818. }
  2819. void mt6311_set_rg_bgr_test_en(unsigned char val)
  2820. {
  2821. unsigned char ret = 0;
  2822. mt6311_lock();
  2823. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON3),
  2824. (unsigned char)(val),
  2825. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_EN_MASK),
  2826. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_EN_SHIFT)
  2827. );
  2828. mt6311_unlock();
  2829. }
  2830. void mt6311_set_rg_bgr_test_rstb(unsigned char val)
  2831. {
  2832. unsigned char ret = 0;
  2833. mt6311_lock();
  2834. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON3),
  2835. (unsigned char)(val),
  2836. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_RSTB_MASK),
  2837. (unsigned char)(MT6311_PMIC_RG_BGR_TEST_RSTB_SHIFT)
  2838. );
  2839. mt6311_unlock();
  2840. }
  2841. void mt6311_set_rg_vdvfs11_trimh(unsigned char val)
  2842. {
  2843. unsigned char ret = 0;
  2844. mt6311_lock();
  2845. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON4),
  2846. (unsigned char)(val),
  2847. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRIMH_MASK),
  2848. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRIMH_SHIFT)
  2849. );
  2850. mt6311_unlock();
  2851. }
  2852. void mt6311_set_rg_vdvfs11_triml(unsigned char val)
  2853. {
  2854. unsigned char ret = 0;
  2855. mt6311_lock();
  2856. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON5),
  2857. (unsigned char)(val),
  2858. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRIML_MASK),
  2859. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRIML_SHIFT)
  2860. );
  2861. mt6311_unlock();
  2862. }
  2863. void mt6311_set_rg_vdvfs12_trimh(unsigned char val)
  2864. {
  2865. unsigned char ret = 0;
  2866. mt6311_lock();
  2867. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON6),
  2868. (unsigned char)(val),
  2869. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRIMH_MASK),
  2870. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRIMH_SHIFT)
  2871. );
  2872. mt6311_unlock();
  2873. }
  2874. void mt6311_set_rg_vdvfs12_triml(unsigned char val)
  2875. {
  2876. unsigned char ret = 0;
  2877. mt6311_lock();
  2878. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON7),
  2879. (unsigned char)(val),
  2880. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRIML_MASK),
  2881. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRIML_SHIFT)
  2882. );
  2883. mt6311_unlock();
  2884. }
  2885. void mt6311_set_rg_vdvfs11_vsleep(unsigned char val)
  2886. {
  2887. unsigned char ret = 0;
  2888. mt6311_lock();
  2889. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON7),
  2890. (unsigned char)(val),
  2891. (unsigned char)(MT6311_PMIC_RG_VDVFS11_VSLEEP_MASK),
  2892. (unsigned char)(MT6311_PMIC_RG_VDVFS11_VSLEEP_SHIFT)
  2893. );
  2894. mt6311_unlock();
  2895. }
  2896. void mt6311_set_rg_vdvfs12_vsleep(unsigned char val)
  2897. {
  2898. unsigned char ret = 0;
  2899. mt6311_lock();
  2900. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON8),
  2901. (unsigned char)(val),
  2902. (unsigned char)(MT6311_PMIC_RG_VDVFS12_VSLEEP_MASK),
  2903. (unsigned char)(MT6311_PMIC_RG_VDVFS12_VSLEEP_SHIFT)
  2904. );
  2905. mt6311_unlock();
  2906. }
  2907. void mt6311_set_rg_bgr_osc_cal(unsigned char val)
  2908. {
  2909. unsigned char ret = 0;
  2910. mt6311_lock();
  2911. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON9),
  2912. (unsigned char)(val),
  2913. (unsigned char)(MT6311_PMIC_RG_BGR_OSC_CAL_MASK),
  2914. (unsigned char)(MT6311_PMIC_RG_BGR_OSC_CAL_SHIFT)
  2915. );
  2916. mt6311_unlock();
  2917. }
  2918. void mt6311_set_rg_strup_rsv(unsigned char val)
  2919. {
  2920. unsigned char ret = 0;
  2921. mt6311_lock();
  2922. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON10),
  2923. (unsigned char)(val),
  2924. (unsigned char)(MT6311_PMIC_RG_STRUP_RSV_MASK),
  2925. (unsigned char)(MT6311_PMIC_RG_STRUP_RSV_SHIFT)
  2926. );
  2927. mt6311_unlock();
  2928. }
  2929. void mt6311_set_rg_vref_lp_mode(unsigned char val)
  2930. {
  2931. unsigned char ret = 0;
  2932. mt6311_lock();
  2933. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON11),
  2934. (unsigned char)(val),
  2935. (unsigned char)(MT6311_PMIC_RG_VREF_LP_MODE_MASK),
  2936. (unsigned char)(MT6311_PMIC_RG_VREF_LP_MODE_SHIFT)
  2937. );
  2938. mt6311_unlock();
  2939. }
  2940. void mt6311_set_rg_testmode_swen(unsigned char val)
  2941. {
  2942. unsigned char ret = 0;
  2943. mt6311_lock();
  2944. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON11),
  2945. (unsigned char)(val),
  2946. (unsigned char)(MT6311_PMIC_RG_TESTMODE_SWEN_MASK),
  2947. (unsigned char)(MT6311_PMIC_RG_TESTMODE_SWEN_SHIFT)
  2948. );
  2949. mt6311_unlock();
  2950. }
  2951. void mt6311_set_rg_vdig18_vosel(unsigned char val)
  2952. {
  2953. unsigned char ret = 0;
  2954. mt6311_lock();
  2955. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON11),
  2956. (unsigned char)(val),
  2957. (unsigned char)(MT6311_PMIC_RG_VDIG18_VOSEL_MASK),
  2958. (unsigned char)(MT6311_PMIC_RG_VDIG18_VOSEL_SHIFT)
  2959. );
  2960. mt6311_unlock();
  2961. }
  2962. void mt6311_set_rg_vdig18_cal(unsigned char val)
  2963. {
  2964. unsigned char ret = 0;
  2965. mt6311_lock();
  2966. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON12),
  2967. (unsigned char)(val),
  2968. (unsigned char)(MT6311_PMIC_RG_VDIG18_CAL_MASK),
  2969. (unsigned char)(MT6311_PMIC_RG_VDIG18_CAL_SHIFT)
  2970. );
  2971. mt6311_unlock();
  2972. }
  2973. void mt6311_set_rg_osc_sel(unsigned char val)
  2974. {
  2975. unsigned char ret = 0;
  2976. mt6311_lock();
  2977. ret = mt6311_config_interface((unsigned char)(MT6311_STRUP_ANA_CON12),
  2978. (unsigned char)(val),
  2979. (unsigned char)(MT6311_PMIC_RG_OSC_SEL_MASK),
  2980. (unsigned char)(MT6311_PMIC_RG_OSC_SEL_SHIFT)
  2981. );
  2982. mt6311_unlock();
  2983. }
  2984. void mt6311_set_rg_vbiasn_ndis_en(unsigned char val)
  2985. {
  2986. unsigned char ret = 0;
  2987. mt6311_lock();
  2988. ret = mt6311_config_interface((unsigned char)(MT6311_VBIASN_ANA_CON0),
  2989. (unsigned char)(val),
  2990. (unsigned char)(MT6311_PMIC_RG_VBIASN_NDIS_EN_MASK),
  2991. (unsigned char)(MT6311_PMIC_RG_VBIASN_NDIS_EN_SHIFT)
  2992. );
  2993. mt6311_unlock();
  2994. }
  2995. void mt6311_set_rg_vbiasn_vosel(unsigned char val)
  2996. {
  2997. unsigned char ret = 0;
  2998. mt6311_lock();
  2999. ret = mt6311_config_interface((unsigned char)(MT6311_VBIASN_ANA_CON0),
  3000. (unsigned char)(val),
  3001. (unsigned char)(MT6311_PMIC_RG_VBIASN_VOSEL_MASK),
  3002. (unsigned char)(MT6311_PMIC_RG_VBIASN_VOSEL_SHIFT)
  3003. );
  3004. mt6311_unlock();
  3005. }
  3006. void mt6311_set_rg_vdvfs11_rc(unsigned char val)
  3007. {
  3008. unsigned char ret = 0;
  3009. mt6311_lock();
  3010. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON0),
  3011. (unsigned char)(val),
  3012. (unsigned char)(MT6311_PMIC_RG_VDVFS11_RC_MASK),
  3013. (unsigned char)(MT6311_PMIC_RG_VDVFS11_RC_SHIFT)
  3014. );
  3015. mt6311_unlock();
  3016. }
  3017. void mt6311_set_rg_vdvfs12_rc(unsigned char val)
  3018. {
  3019. unsigned char ret = 0;
  3020. mt6311_lock();
  3021. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON0),
  3022. (unsigned char)(val),
  3023. (unsigned char)(MT6311_PMIC_RG_VDVFS12_RC_MASK),
  3024. (unsigned char)(MT6311_PMIC_RG_VDVFS12_RC_SHIFT)
  3025. );
  3026. mt6311_unlock();
  3027. }
  3028. void mt6311_set_rg_vdvfs11_csr(unsigned char val)
  3029. {
  3030. unsigned char ret = 0;
  3031. mt6311_lock();
  3032. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON1),
  3033. (unsigned char)(val),
  3034. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSR_MASK),
  3035. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSR_SHIFT)
  3036. );
  3037. mt6311_unlock();
  3038. }
  3039. void mt6311_set_rg_vdvfs12_csr(unsigned char val)
  3040. {
  3041. unsigned char ret = 0;
  3042. mt6311_lock();
  3043. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON1),
  3044. (unsigned char)(val),
  3045. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSR_MASK),
  3046. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSR_SHIFT)
  3047. );
  3048. mt6311_unlock();
  3049. }
  3050. void mt6311_set_rg_vdvfs11_pfm_csr(unsigned char val)
  3051. {
  3052. unsigned char ret = 0;
  3053. mt6311_lock();
  3054. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON1),
  3055. (unsigned char)(val),
  3056. (unsigned char)(MT6311_PMIC_RG_VDVFS11_PFM_CSR_MASK),
  3057. (unsigned char)(MT6311_PMIC_RG_VDVFS11_PFM_CSR_SHIFT)
  3058. );
  3059. mt6311_unlock();
  3060. }
  3061. void mt6311_set_rg_vdvfs12_pfm_csr(unsigned char val)
  3062. {
  3063. unsigned char ret = 0;
  3064. mt6311_lock();
  3065. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON1),
  3066. (unsigned char)(val),
  3067. (unsigned char)(MT6311_PMIC_RG_VDVFS12_PFM_CSR_MASK),
  3068. (unsigned char)(MT6311_PMIC_RG_VDVFS12_PFM_CSR_SHIFT)
  3069. );
  3070. mt6311_unlock();
  3071. }
  3072. void mt6311_set_rg_vdvfs11_slp(unsigned char val)
  3073. {
  3074. unsigned char ret = 0;
  3075. mt6311_lock();
  3076. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3077. (unsigned char)(val),
  3078. (unsigned char)(MT6311_PMIC_RG_VDVFS11_SLP_MASK),
  3079. (unsigned char)(MT6311_PMIC_RG_VDVFS11_SLP_SHIFT)
  3080. );
  3081. mt6311_unlock();
  3082. }
  3083. void mt6311_set_rg_vdvfs12_slp(unsigned char val)
  3084. {
  3085. unsigned char ret = 0;
  3086. mt6311_lock();
  3087. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3088. (unsigned char)(val),
  3089. (unsigned char)(MT6311_PMIC_RG_VDVFS12_SLP_MASK),
  3090. (unsigned char)(MT6311_PMIC_RG_VDVFS12_SLP_SHIFT)
  3091. );
  3092. mt6311_unlock();
  3093. }
  3094. void mt6311_set_rg_vdvfs11_uvp_en(unsigned char val)
  3095. {
  3096. unsigned char ret = 0;
  3097. mt6311_lock();
  3098. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3099. (unsigned char)(val),
  3100. (unsigned char)(MT6311_PMIC_RG_VDVFS11_UVP_EN_MASK),
  3101. (unsigned char)(MT6311_PMIC_RG_VDVFS11_UVP_EN_SHIFT)
  3102. );
  3103. mt6311_unlock();
  3104. }
  3105. void mt6311_set_rg_vdvfs12_uvp_en(unsigned char val)
  3106. {
  3107. unsigned char ret = 0;
  3108. mt6311_lock();
  3109. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3110. (unsigned char)(val),
  3111. (unsigned char)(MT6311_PMIC_RG_VDVFS12_UVP_EN_MASK),
  3112. (unsigned char)(MT6311_PMIC_RG_VDVFS12_UVP_EN_SHIFT)
  3113. );
  3114. mt6311_unlock();
  3115. }
  3116. void mt6311_set_rg_vdvfs11_modeset(unsigned char val)
  3117. {
  3118. unsigned char ret = 0;
  3119. mt6311_lock();
  3120. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3121. (unsigned char)(val),
  3122. (unsigned char)(MT6311_PMIC_RG_VDVFS11_MODESET_MASK),
  3123. (unsigned char)(MT6311_PMIC_RG_VDVFS11_MODESET_SHIFT)
  3124. );
  3125. mt6311_unlock();
  3126. }
  3127. void mt6311_set_rg_vdvfs12_modeset(unsigned char val)
  3128. {
  3129. unsigned char ret = 0;
  3130. mt6311_lock();
  3131. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON2),
  3132. (unsigned char)(val),
  3133. (unsigned char)(MT6311_PMIC_RG_VDVFS12_MODESET_MASK),
  3134. (unsigned char)(MT6311_PMIC_RG_VDVFS12_MODESET_SHIFT)
  3135. );
  3136. mt6311_unlock();
  3137. }
  3138. void mt6311_set_rg_vdvfs11_ndis_en(unsigned char val)
  3139. {
  3140. unsigned char ret = 0;
  3141. mt6311_lock();
  3142. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON3),
  3143. (unsigned char)(val),
  3144. (unsigned char)(MT6311_PMIC_RG_VDVFS11_NDIS_EN_MASK),
  3145. (unsigned char)(MT6311_PMIC_RG_VDVFS11_NDIS_EN_SHIFT)
  3146. );
  3147. mt6311_unlock();
  3148. }
  3149. void mt6311_set_rg_vdvfs12_ndis_en(unsigned char val)
  3150. {
  3151. unsigned char ret = 0;
  3152. mt6311_lock();
  3153. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON3),
  3154. (unsigned char)(val),
  3155. (unsigned char)(MT6311_PMIC_RG_VDVFS12_NDIS_EN_MASK),
  3156. (unsigned char)(MT6311_PMIC_RG_VDVFS12_NDIS_EN_SHIFT)
  3157. );
  3158. mt6311_unlock();
  3159. }
  3160. void mt6311_set_rg_vdvfs11_trans_bst(unsigned char val)
  3161. {
  3162. unsigned char ret = 0;
  3163. mt6311_lock();
  3164. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON4),
  3165. (unsigned char)(val),
  3166. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRANS_BST_MASK),
  3167. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TRANS_BST_SHIFT)
  3168. );
  3169. mt6311_unlock();
  3170. }
  3171. void mt6311_set_rg_vdvfs12_trans_bst(unsigned char val)
  3172. {
  3173. unsigned char ret = 0;
  3174. mt6311_lock();
  3175. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON5),
  3176. (unsigned char)(val),
  3177. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRANS_BST_MASK),
  3178. (unsigned char)(MT6311_PMIC_RG_VDVFS12_TRANS_BST_SHIFT)
  3179. );
  3180. mt6311_unlock();
  3181. }
  3182. void mt6311_set_rg_vdvfs11_csm_n(unsigned char val)
  3183. {
  3184. unsigned char ret = 0;
  3185. mt6311_lock();
  3186. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON6),
  3187. (unsigned char)(val),
  3188. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSM_N_MASK),
  3189. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSM_N_SHIFT)
  3190. );
  3191. mt6311_unlock();
  3192. }
  3193. void mt6311_set_rg_vdvfs11_csm_p(unsigned char val)
  3194. {
  3195. unsigned char ret = 0;
  3196. mt6311_lock();
  3197. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON6),
  3198. (unsigned char)(val),
  3199. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSM_P_MASK),
  3200. (unsigned char)(MT6311_PMIC_RG_VDVFS11_CSM_P_SHIFT)
  3201. );
  3202. mt6311_unlock();
  3203. }
  3204. void mt6311_set_rg_vdvfs12_csm_n(unsigned char val)
  3205. {
  3206. unsigned char ret = 0;
  3207. mt6311_lock();
  3208. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON7),
  3209. (unsigned char)(val),
  3210. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSM_N_MASK),
  3211. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSM_N_SHIFT)
  3212. );
  3213. mt6311_unlock();
  3214. }
  3215. void mt6311_set_rg_vdvfs12_csm_p(unsigned char val)
  3216. {
  3217. unsigned char ret = 0;
  3218. mt6311_lock();
  3219. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON7),
  3220. (unsigned char)(val),
  3221. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSM_P_MASK),
  3222. (unsigned char)(MT6311_PMIC_RG_VDVFS12_CSM_P_SHIFT)
  3223. );
  3224. mt6311_unlock();
  3225. }
  3226. void mt6311_set_rg_vdvfs11_zxos_trim(unsigned char val)
  3227. {
  3228. unsigned char ret = 0;
  3229. mt6311_lock();
  3230. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON8),
  3231. (unsigned char)(val),
  3232. (unsigned char)(MT6311_PMIC_RG_VDVFS11_ZXOS_TRIM_MASK),
  3233. (unsigned char)(MT6311_PMIC_RG_VDVFS11_ZXOS_TRIM_SHIFT)
  3234. );
  3235. mt6311_unlock();
  3236. }
  3237. void mt6311_set_rg_vdvfs12_zxos_trim(unsigned char val)
  3238. {
  3239. unsigned char ret = 0;
  3240. mt6311_lock();
  3241. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON9),
  3242. (unsigned char)(val),
  3243. (unsigned char)(MT6311_PMIC_RG_VDVFS12_ZXOS_TRIM_MASK),
  3244. (unsigned char)(MT6311_PMIC_RG_VDVFS12_ZXOS_TRIM_SHIFT)
  3245. );
  3246. mt6311_unlock();
  3247. }
  3248. void mt6311_set_rg_vdvfs11_oc_off(unsigned char val)
  3249. {
  3250. unsigned char ret = 0;
  3251. mt6311_lock();
  3252. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON9),
  3253. (unsigned char)(val),
  3254. (unsigned char)(MT6311_PMIC_RG_VDVFS11_OC_OFF_MASK),
  3255. (unsigned char)(MT6311_PMIC_RG_VDVFS11_OC_OFF_SHIFT)
  3256. );
  3257. mt6311_unlock();
  3258. }
  3259. void mt6311_set_rg_vdvfs12_oc_off(unsigned char val)
  3260. {
  3261. unsigned char ret = 0;
  3262. mt6311_lock();
  3263. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON9),
  3264. (unsigned char)(val),
  3265. (unsigned char)(MT6311_PMIC_RG_VDVFS12_OC_OFF_MASK),
  3266. (unsigned char)(MT6311_PMIC_RG_VDVFS12_OC_OFF_SHIFT)
  3267. );
  3268. mt6311_unlock();
  3269. }
  3270. void mt6311_set_rg_vdvfs11_phs_shed_trim(unsigned char val)
  3271. {
  3272. unsigned char ret = 0;
  3273. mt6311_lock();
  3274. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON10),
  3275. (unsigned char)(val),
  3276. (unsigned char)(MT6311_PMIC_RG_VDVFS11_PHS_SHED_TRIM_MASK),
  3277. (unsigned char)(MT6311_PMIC_RG_VDVFS11_PHS_SHED_TRIM_SHIFT)
  3278. );
  3279. mt6311_unlock();
  3280. }
  3281. void mt6311_set_rg_vdvfs11_f2phs(unsigned char val)
  3282. {
  3283. unsigned char ret = 0;
  3284. mt6311_lock();
  3285. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON10),
  3286. (unsigned char)(val),
  3287. (unsigned char)(MT6311_PMIC_RG_VDVFS11_F2PHS_MASK),
  3288. (unsigned char)(MT6311_PMIC_RG_VDVFS11_F2PHS_SHIFT)
  3289. );
  3290. mt6311_unlock();
  3291. }
  3292. void mt6311_set_rg_vdvfs11_rs_force_off(unsigned char val)
  3293. {
  3294. unsigned char ret = 0;
  3295. mt6311_lock();
  3296. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON10),
  3297. (unsigned char)(val),
  3298. (unsigned char)(MT6311_PMIC_RG_VDVFS11_RS_FORCE_OFF_MASK),
  3299. (unsigned char)(MT6311_PMIC_RG_VDVFS11_RS_FORCE_OFF_SHIFT)
  3300. );
  3301. mt6311_unlock();
  3302. }
  3303. void mt6311_set_rg_vdvfs12_rs_force_off(unsigned char val)
  3304. {
  3305. unsigned char ret = 0;
  3306. mt6311_lock();
  3307. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON10),
  3308. (unsigned char)(val),
  3309. (unsigned char)(MT6311_PMIC_RG_VDVFS12_RS_FORCE_OFF_MASK),
  3310. (unsigned char)(MT6311_PMIC_RG_VDVFS12_RS_FORCE_OFF_SHIFT)
  3311. );
  3312. mt6311_unlock();
  3313. }
  3314. void mt6311_set_rg_vdvfs11_tm_en(unsigned char val)
  3315. {
  3316. unsigned char ret = 0;
  3317. mt6311_lock();
  3318. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON10),
  3319. (unsigned char)(val),
  3320. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TM_EN_MASK),
  3321. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TM_EN_SHIFT)
  3322. );
  3323. mt6311_unlock();
  3324. }
  3325. void mt6311_set_rg_vdvfs11_tm_ugsns(unsigned char val)
  3326. {
  3327. unsigned char ret = 0;
  3328. mt6311_lock();
  3329. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON11),
  3330. (unsigned char)(val),
  3331. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TM_UGSNS_MASK),
  3332. (unsigned char)(MT6311_PMIC_RG_VDVFS11_TM_UGSNS_SHIFT)
  3333. );
  3334. mt6311_unlock();
  3335. }
  3336. void mt6311_set_rg_vdvfs1_fbn_sel(unsigned char val)
  3337. {
  3338. unsigned char ret = 0;
  3339. mt6311_lock();
  3340. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS1_ANA_CON11),
  3341. (unsigned char)(val),
  3342. (unsigned char)(MT6311_PMIC_RG_VDVFS1_FBN_SEL_MASK),
  3343. (unsigned char)(MT6311_PMIC_RG_VDVFS1_FBN_SEL_SHIFT)
  3344. );
  3345. mt6311_unlock();
  3346. }
  3347. unsigned char mt6311_get_rgs_vdvfs11_enpwm_status(void)
  3348. {
  3349. unsigned char ret = 0;
  3350. unsigned char val = 0;
  3351. mt6311_lock();
  3352. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS1_ANA_CON12),
  3353. (&val),
  3354. (unsigned char)(MT6311_PMIC_RGS_VDVFS11_ENPWM_STATUS_MASK),
  3355. (unsigned char)(MT6311_PMIC_RGS_VDVFS11_ENPWM_STATUS_SHIFT)
  3356. );
  3357. mt6311_unlock();
  3358. return val;
  3359. }
  3360. unsigned char mt6311_get_rgs_vdvfs12_enpwm_status(void)
  3361. {
  3362. unsigned char ret = 0;
  3363. unsigned char val = 0;
  3364. mt6311_lock();
  3365. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS1_ANA_CON12),
  3366. (&val),
  3367. (unsigned char)(MT6311_PMIC_RGS_VDVFS12_ENPWM_STATUS_MASK),
  3368. (unsigned char)(MT6311_PMIC_RGS_VDVFS12_ENPWM_STATUS_SHIFT)
  3369. );
  3370. mt6311_unlock();
  3371. return val;
  3372. }
  3373. unsigned char mt6311_get_ni_vdvfs1_count(void)
  3374. {
  3375. unsigned char ret = 0;
  3376. unsigned char val = 0;
  3377. mt6311_lock();
  3378. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS1_ANA_CON12),
  3379. (&val),
  3380. (unsigned char)(MT6311_PMIC_NI_VDVFS1_COUNT_MASK),
  3381. (unsigned char)(MT6311_PMIC_NI_VDVFS1_COUNT_SHIFT)
  3382. );
  3383. mt6311_unlock();
  3384. return val;
  3385. }
  3386. void mt6311_set_vdvfs11_dig0_rsv0(unsigned char val)
  3387. {
  3388. unsigned char ret = 0;
  3389. mt6311_lock();
  3390. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON0),
  3391. (unsigned char)(val),
  3392. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV0_MASK),
  3393. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV0_SHIFT)
  3394. );
  3395. mt6311_unlock();
  3396. }
  3397. void mt6311_set_vdvfs11_en_ctrl(unsigned char val)
  3398. {
  3399. unsigned char ret = 0;
  3400. mt6311_lock();
  3401. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON7),
  3402. (unsigned char)(val),
  3403. (unsigned char)(MT6311_PMIC_VDVFS11_EN_CTRL_MASK),
  3404. (unsigned char)(MT6311_PMIC_VDVFS11_EN_CTRL_SHIFT)
  3405. );
  3406. mt6311_unlock();
  3407. }
  3408. void mt6311_set_vdvfs11_vosel_ctrl(unsigned char val)
  3409. {
  3410. unsigned char ret = 0;
  3411. mt6311_lock();
  3412. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON7),
  3413. (unsigned char)(val),
  3414. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_CTRL_MASK),
  3415. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_CTRL_SHIFT)
  3416. );
  3417. mt6311_unlock();
  3418. }
  3419. void mt6311_set_vdvfs11_dig0_rsv1(unsigned char val)
  3420. {
  3421. unsigned char ret = 0;
  3422. mt6311_lock();
  3423. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON7),
  3424. (unsigned char)(val),
  3425. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV1_MASK),
  3426. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV1_SHIFT)
  3427. );
  3428. mt6311_unlock();
  3429. }
  3430. void mt6311_set_vdvfs11_burst_ctrl(unsigned char val)
  3431. {
  3432. unsigned char ret = 0;
  3433. mt6311_lock();
  3434. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON7),
  3435. (unsigned char)(val),
  3436. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_CTRL_MASK),
  3437. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_CTRL_SHIFT)
  3438. );
  3439. mt6311_unlock();
  3440. }
  3441. void mt6311_set_vdvfs11_en_sel(unsigned char val)
  3442. {
  3443. unsigned char ret = 0;
  3444. mt6311_lock();
  3445. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON8),
  3446. (unsigned char)(val),
  3447. (unsigned char)(MT6311_PMIC_VDVFS11_EN_SEL_MASK),
  3448. (unsigned char)(MT6311_PMIC_VDVFS11_EN_SEL_SHIFT)
  3449. );
  3450. mt6311_unlock();
  3451. }
  3452. void mt6311_set_vdvfs11_vosel_sel(unsigned char val)
  3453. {
  3454. unsigned char ret = 0;
  3455. mt6311_lock();
  3456. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON8),
  3457. (unsigned char)(val),
  3458. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_SEL_MASK),
  3459. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_SEL_SHIFT)
  3460. );
  3461. mt6311_unlock();
  3462. }
  3463. void mt6311_set_vdvfs11_dig0_rsv2(unsigned char val)
  3464. {
  3465. unsigned char ret = 0;
  3466. mt6311_lock();
  3467. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON8),
  3468. (unsigned char)(val),
  3469. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV2_MASK),
  3470. (unsigned char)(MT6311_PMIC_VDVFS11_DIG0_RSV2_SHIFT)
  3471. );
  3472. mt6311_unlock();
  3473. }
  3474. void mt6311_set_vdvfs11_burst_sel(unsigned char val)
  3475. {
  3476. unsigned char ret = 0;
  3477. mt6311_lock();
  3478. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON8),
  3479. (unsigned char)(val),
  3480. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_SEL_MASK),
  3481. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_SEL_SHIFT)
  3482. );
  3483. mt6311_unlock();
  3484. }
  3485. void mt6311_set_vdvfs11_en(unsigned char val)
  3486. {
  3487. unsigned char ret = 0;
  3488. mt6311_lock();
  3489. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON9),
  3490. (unsigned char)(val),
  3491. (unsigned char)(MT6311_PMIC_VDVFS11_EN_MASK),
  3492. (unsigned char)(MT6311_PMIC_VDVFS11_EN_SHIFT)
  3493. );
  3494. mt6311_unlock();
  3495. }
  3496. void mt6311_set_vdvfs11_stbtd(unsigned char val)
  3497. {
  3498. unsigned char ret = 0;
  3499. mt6311_lock();
  3500. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON9),
  3501. (unsigned char)(val),
  3502. (unsigned char)(MT6311_PMIC_VDVFS11_STBTD_MASK),
  3503. (unsigned char)(MT6311_PMIC_VDVFS11_STBTD_SHIFT)
  3504. );
  3505. mt6311_unlock();
  3506. }
  3507. unsigned char mt6311_get_qi_vdvfs11_stb(void)
  3508. {
  3509. unsigned char ret = 0;
  3510. unsigned char val = 0;
  3511. mt6311_lock();
  3512. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON9),
  3513. (&val),
  3514. (unsigned char)(MT6311_PMIC_QI_VDVFS11_STB_MASK),
  3515. (unsigned char)(MT6311_PMIC_QI_VDVFS11_STB_SHIFT)
  3516. );
  3517. mt6311_unlock();
  3518. return val;
  3519. }
  3520. unsigned char mt6311_get_qi_vdvfs11_en(void)
  3521. {
  3522. unsigned char ret = 0;
  3523. unsigned char val = 0;
  3524. mt6311_lock();
  3525. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON9),
  3526. (&val),
  3527. (unsigned char)(MT6311_PMIC_QI_VDVFS11_EN_MASK),
  3528. (unsigned char)(MT6311_PMIC_QI_VDVFS11_EN_SHIFT)
  3529. );
  3530. mt6311_unlock();
  3531. return val;
  3532. }
  3533. unsigned char mt6311_get_qi_vdvfs11_oc_status(void)
  3534. {
  3535. unsigned char ret = 0;
  3536. unsigned char val = 0;
  3537. mt6311_lock();
  3538. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON9),
  3539. (&val),
  3540. (unsigned char)(MT6311_PMIC_QI_VDVFS11_OC_STATUS_MASK),
  3541. (unsigned char)(MT6311_PMIC_QI_VDVFS11_OC_STATUS_SHIFT)
  3542. );
  3543. mt6311_unlock();
  3544. return val;
  3545. }
  3546. void mt6311_set_vdvfs11_sfchg_rrate(unsigned char val)
  3547. {
  3548. unsigned char ret = 0;
  3549. mt6311_lock();
  3550. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON10),
  3551. (unsigned char)(val),
  3552. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_RRATE_MASK),
  3553. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_RRATE_SHIFT)
  3554. );
  3555. mt6311_unlock();
  3556. }
  3557. void mt6311_set_vdvfs11_sfchg_ren(unsigned char val)
  3558. {
  3559. unsigned char ret = 0;
  3560. mt6311_lock();
  3561. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON10),
  3562. (unsigned char)(val),
  3563. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_REN_MASK),
  3564. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_REN_SHIFT)
  3565. );
  3566. mt6311_unlock();
  3567. }
  3568. void mt6311_set_vdvfs11_sfchg_frate(unsigned char val)
  3569. {
  3570. unsigned char ret = 0;
  3571. mt6311_lock();
  3572. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON11),
  3573. (unsigned char)(val),
  3574. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_FRATE_MASK),
  3575. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_FRATE_SHIFT)
  3576. );
  3577. mt6311_unlock();
  3578. }
  3579. void mt6311_set_vdvfs11_sfchg_fen(unsigned char val)
  3580. {
  3581. unsigned char ret = 0;
  3582. mt6311_lock();
  3583. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON11),
  3584. (unsigned char)(val),
  3585. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_FEN_MASK),
  3586. (unsigned char)(MT6311_PMIC_VDVFS11_SFCHG_FEN_SHIFT)
  3587. );
  3588. mt6311_unlock();
  3589. }
  3590. void mt6311_set_vdvfs11_vosel(unsigned char val)
  3591. {
  3592. unsigned char ret = 0;
  3593. mt6311_lock();
  3594. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON12),
  3595. (unsigned char)(val),
  3596. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_MASK),
  3597. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_SHIFT)
  3598. );
  3599. mt6311_unlock();
  3600. }
  3601. void mt6311_set_vdvfs11_vosel_on(unsigned char val)
  3602. {
  3603. unsigned char ret = 0;
  3604. mt6311_lock();
  3605. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON13),
  3606. (unsigned char)(val),
  3607. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_ON_MASK),
  3608. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_ON_SHIFT)
  3609. );
  3610. mt6311_unlock();
  3611. }
  3612. void mt6311_set_vdvfs11_vosel_sleep(unsigned char val)
  3613. {
  3614. unsigned char ret = 0;
  3615. mt6311_lock();
  3616. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON14),
  3617. (unsigned char)(val),
  3618. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_SLEEP_MASK),
  3619. (unsigned char)(MT6311_PMIC_VDVFS11_VOSEL_SLEEP_SHIFT)
  3620. );
  3621. mt6311_unlock();
  3622. }
  3623. unsigned char mt6311_get_ni_vdvfs11_vosel(void)
  3624. {
  3625. unsigned char ret = 0;
  3626. unsigned char val = 0;
  3627. mt6311_lock();
  3628. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON15),
  3629. (&val),
  3630. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VOSEL_MASK),
  3631. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VOSEL_SHIFT)
  3632. );
  3633. mt6311_unlock();
  3634. return val;
  3635. }
  3636. void mt6311_set_vdvfs11_burst_sleep(unsigned char val)
  3637. {
  3638. unsigned char ret = 0;
  3639. mt6311_lock();
  3640. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON16),
  3641. (unsigned char)(val),
  3642. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_SLEEP_MASK),
  3643. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_SLEEP_SHIFT)
  3644. );
  3645. mt6311_unlock();
  3646. }
  3647. unsigned char mt6311_get_qi_vdvfs11_burst(void)
  3648. {
  3649. unsigned char ret = 0;
  3650. unsigned char val = 0;
  3651. mt6311_lock();
  3652. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON16),
  3653. (&val),
  3654. (unsigned char)(MT6311_PMIC_QI_VDVFS11_BURST_MASK),
  3655. (unsigned char)(MT6311_PMIC_QI_VDVFS11_BURST_SHIFT)
  3656. );
  3657. mt6311_unlock();
  3658. return val;
  3659. }
  3660. void mt6311_set_vdvfs11_burst(unsigned char val)
  3661. {
  3662. unsigned char ret = 0;
  3663. mt6311_lock();
  3664. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON17),
  3665. (unsigned char)(val),
  3666. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_MASK),
  3667. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_SHIFT)
  3668. );
  3669. mt6311_unlock();
  3670. }
  3671. void mt6311_set_vdvfs11_burst_on(unsigned char val)
  3672. {
  3673. unsigned char ret = 0;
  3674. mt6311_lock();
  3675. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON17),
  3676. (unsigned char)(val),
  3677. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_ON_MASK),
  3678. (unsigned char)(MT6311_PMIC_VDVFS11_BURST_ON_SHIFT)
  3679. );
  3680. mt6311_unlock();
  3681. }
  3682. void mt6311_set_vdvfs11_vsleep_en(unsigned char val)
  3683. {
  3684. unsigned char ret = 0;
  3685. mt6311_lock();
  3686. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON18),
  3687. (unsigned char)(val),
  3688. (unsigned char)(MT6311_PMIC_VDVFS11_VSLEEP_EN_MASK),
  3689. (unsigned char)(MT6311_PMIC_VDVFS11_VSLEEP_EN_SHIFT)
  3690. );
  3691. mt6311_unlock();
  3692. }
  3693. void mt6311_set_vdvfs11_r2r_pdn(unsigned char val)
  3694. {
  3695. unsigned char ret = 0;
  3696. mt6311_lock();
  3697. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON18),
  3698. (unsigned char)(val),
  3699. (unsigned char)(MT6311_PMIC_VDVFS11_R2R_PDN_MASK),
  3700. (unsigned char)(MT6311_PMIC_VDVFS11_R2R_PDN_SHIFT)
  3701. );
  3702. mt6311_unlock();
  3703. }
  3704. void mt6311_set_vdvfs11_vsleep_sel(unsigned char val)
  3705. {
  3706. unsigned char ret = 0;
  3707. mt6311_lock();
  3708. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON18),
  3709. (unsigned char)(val),
  3710. (unsigned char)(MT6311_PMIC_VDVFS11_VSLEEP_SEL_MASK),
  3711. (unsigned char)(MT6311_PMIC_VDVFS11_VSLEEP_SEL_SHIFT)
  3712. );
  3713. mt6311_unlock();
  3714. }
  3715. unsigned char mt6311_get_ni_vdvfs11_r2r_pdn(void)
  3716. {
  3717. unsigned char ret = 0;
  3718. unsigned char val = 0;
  3719. mt6311_lock();
  3720. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON18),
  3721. (&val),
  3722. (unsigned char)(MT6311_PMIC_NI_VDVFS11_R2R_PDN_MASK),
  3723. (unsigned char)(MT6311_PMIC_NI_VDVFS11_R2R_PDN_SHIFT)
  3724. );
  3725. mt6311_unlock();
  3726. return val;
  3727. }
  3728. unsigned char mt6311_get_ni_vdvfs11_vsleep_sel(void)
  3729. {
  3730. unsigned char ret = 0;
  3731. unsigned char val = 0;
  3732. mt6311_lock();
  3733. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON18),
  3734. (&val),
  3735. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VSLEEP_SEL_MASK),
  3736. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VSLEEP_SEL_SHIFT)
  3737. );
  3738. mt6311_unlock();
  3739. return val;
  3740. }
  3741. void mt6311_set_vdvfs11_trans_td(unsigned char val)
  3742. {
  3743. unsigned char ret = 0;
  3744. mt6311_lock();
  3745. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON19),
  3746. (unsigned char)(val),
  3747. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_TD_MASK),
  3748. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_TD_SHIFT)
  3749. );
  3750. mt6311_unlock();
  3751. }
  3752. void mt6311_set_vdvfs11_trans_ctrl(unsigned char val)
  3753. {
  3754. unsigned char ret = 0;
  3755. mt6311_lock();
  3756. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON19),
  3757. (unsigned char)(val),
  3758. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_CTRL_MASK),
  3759. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_CTRL_SHIFT)
  3760. );
  3761. mt6311_unlock();
  3762. }
  3763. void mt6311_set_vdvfs11_trans_once(unsigned char val)
  3764. {
  3765. unsigned char ret = 0;
  3766. mt6311_lock();
  3767. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS11_CON19),
  3768. (unsigned char)(val),
  3769. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_ONCE_MASK),
  3770. (unsigned char)(MT6311_PMIC_VDVFS11_TRANS_ONCE_SHIFT)
  3771. );
  3772. mt6311_unlock();
  3773. }
  3774. unsigned char mt6311_get_ni_vdvfs11_vosel_trans(void)
  3775. {
  3776. unsigned char ret = 0;
  3777. unsigned char val = 0;
  3778. mt6311_lock();
  3779. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS11_CON19),
  3780. (&val),
  3781. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VOSEL_TRANS_MASK),
  3782. (unsigned char)(MT6311_PMIC_NI_VDVFS11_VOSEL_TRANS_SHIFT)
  3783. );
  3784. mt6311_unlock();
  3785. return val;
  3786. }
  3787. void mt6311_set_vdvfs12_dig0_rsv0(unsigned char val)
  3788. {
  3789. unsigned char ret = 0;
  3790. mt6311_lock();
  3791. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON0),
  3792. (unsigned char)(val),
  3793. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV0_MASK),
  3794. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV0_SHIFT)
  3795. );
  3796. mt6311_unlock();
  3797. }
  3798. void mt6311_set_vdvfs12_en_ctrl(unsigned char val)
  3799. {
  3800. unsigned char ret = 0;
  3801. mt6311_lock();
  3802. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON7),
  3803. (unsigned char)(val),
  3804. (unsigned char)(MT6311_PMIC_VDVFS12_EN_CTRL_MASK),
  3805. (unsigned char)(MT6311_PMIC_VDVFS12_EN_CTRL_SHIFT)
  3806. );
  3807. mt6311_unlock();
  3808. }
  3809. void mt6311_set_vdvfs12_vosel_ctrl(unsigned char val)
  3810. {
  3811. unsigned char ret = 0;
  3812. mt6311_lock();
  3813. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON7),
  3814. (unsigned char)(val),
  3815. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_CTRL_MASK),
  3816. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_CTRL_SHIFT)
  3817. );
  3818. mt6311_unlock();
  3819. }
  3820. void mt6311_set_vdvfs12_dig0_rsv1(unsigned char val)
  3821. {
  3822. unsigned char ret = 0;
  3823. mt6311_lock();
  3824. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON7),
  3825. (unsigned char)(val),
  3826. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV1_MASK),
  3827. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV1_SHIFT)
  3828. );
  3829. mt6311_unlock();
  3830. }
  3831. void mt6311_set_vdvfs12_burst_ctrl(unsigned char val)
  3832. {
  3833. unsigned char ret = 0;
  3834. mt6311_lock();
  3835. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON7),
  3836. (unsigned char)(val),
  3837. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_CTRL_MASK),
  3838. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_CTRL_SHIFT)
  3839. );
  3840. mt6311_unlock();
  3841. }
  3842. void mt6311_set_vdvfs12_en_sel(unsigned char val)
  3843. {
  3844. unsigned char ret = 0;
  3845. mt6311_lock();
  3846. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON8),
  3847. (unsigned char)(val),
  3848. (unsigned char)(MT6311_PMIC_VDVFS12_EN_SEL_MASK),
  3849. (unsigned char)(MT6311_PMIC_VDVFS12_EN_SEL_SHIFT)
  3850. );
  3851. mt6311_unlock();
  3852. }
  3853. void mt6311_set_vdvfs12_vosel_sel(unsigned char val)
  3854. {
  3855. unsigned char ret = 0;
  3856. mt6311_lock();
  3857. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON8),
  3858. (unsigned char)(val),
  3859. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_SEL_MASK),
  3860. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_SEL_SHIFT)
  3861. );
  3862. mt6311_unlock();
  3863. }
  3864. void mt6311_set_vdvfs12_dig0_rsv2(unsigned char val)
  3865. {
  3866. unsigned char ret = 0;
  3867. mt6311_lock();
  3868. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON8),
  3869. (unsigned char)(val),
  3870. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV2_MASK),
  3871. (unsigned char)(MT6311_PMIC_VDVFS12_DIG0_RSV2_SHIFT)
  3872. );
  3873. mt6311_unlock();
  3874. }
  3875. void mt6311_set_vdvfs12_burst_sel(unsigned char val)
  3876. {
  3877. unsigned char ret = 0;
  3878. mt6311_lock();
  3879. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON8),
  3880. (unsigned char)(val),
  3881. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_SEL_MASK),
  3882. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_SEL_SHIFT)
  3883. );
  3884. mt6311_unlock();
  3885. }
  3886. void mt6311_set_vdvfs12_en(unsigned char val)
  3887. {
  3888. unsigned char ret = 0;
  3889. mt6311_lock();
  3890. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON9),
  3891. (unsigned char)(val),
  3892. (unsigned char)(MT6311_PMIC_VDVFS12_EN_MASK),
  3893. (unsigned char)(MT6311_PMIC_VDVFS12_EN_SHIFT)
  3894. );
  3895. mt6311_unlock();
  3896. }
  3897. void mt6311_set_vdvfs12_stbtd(unsigned char val)
  3898. {
  3899. unsigned char ret = 0;
  3900. mt6311_lock();
  3901. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON9),
  3902. (unsigned char)(val),
  3903. (unsigned char)(MT6311_PMIC_VDVFS12_STBTD_MASK),
  3904. (unsigned char)(MT6311_PMIC_VDVFS12_STBTD_SHIFT)
  3905. );
  3906. mt6311_unlock();
  3907. }
  3908. unsigned char mt6311_get_qi_vdvfs12_stb(void)
  3909. {
  3910. unsigned char ret = 0;
  3911. unsigned char val = 0;
  3912. mt6311_lock();
  3913. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON9),
  3914. (&val),
  3915. (unsigned char)(MT6311_PMIC_QI_VDVFS12_STB_MASK),
  3916. (unsigned char)(MT6311_PMIC_QI_VDVFS12_STB_SHIFT)
  3917. );
  3918. mt6311_unlock();
  3919. return val;
  3920. }
  3921. unsigned char mt6311_get_qi_vdvfs12_en(void)
  3922. {
  3923. unsigned char ret = 0;
  3924. unsigned char val = 0;
  3925. mt6311_lock();
  3926. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON9),
  3927. (&val),
  3928. (unsigned char)(MT6311_PMIC_QI_VDVFS12_EN_MASK),
  3929. (unsigned char)(MT6311_PMIC_QI_VDVFS12_EN_SHIFT)
  3930. );
  3931. mt6311_unlock();
  3932. return val;
  3933. }
  3934. unsigned char mt6311_get_qi_vdvfs12_oc_status(void)
  3935. {
  3936. unsigned char ret = 0;
  3937. unsigned char val = 0;
  3938. mt6311_lock();
  3939. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON9),
  3940. (&val),
  3941. (unsigned char)(MT6311_PMIC_QI_VDVFS12_OC_STATUS_MASK),
  3942. (unsigned char)(MT6311_PMIC_QI_VDVFS12_OC_STATUS_SHIFT)
  3943. );
  3944. mt6311_unlock();
  3945. return val;
  3946. }
  3947. void mt6311_set_vdvfs12_sfchg_rrate(unsigned char val)
  3948. {
  3949. unsigned char ret = 0;
  3950. mt6311_lock();
  3951. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON10),
  3952. (unsigned char)(val),
  3953. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_RRATE_MASK),
  3954. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_RRATE_SHIFT)
  3955. );
  3956. mt6311_unlock();
  3957. }
  3958. void mt6311_set_vdvfs12_sfchg_ren(unsigned char val)
  3959. {
  3960. unsigned char ret = 0;
  3961. mt6311_lock();
  3962. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON10),
  3963. (unsigned char)(val),
  3964. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_REN_MASK),
  3965. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_REN_SHIFT)
  3966. );
  3967. mt6311_unlock();
  3968. }
  3969. void mt6311_set_vdvfs12_sfchg_frate(unsigned char val)
  3970. {
  3971. unsigned char ret = 0;
  3972. mt6311_lock();
  3973. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON11),
  3974. (unsigned char)(val),
  3975. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_FRATE_MASK),
  3976. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_FRATE_SHIFT)
  3977. );
  3978. mt6311_unlock();
  3979. }
  3980. void mt6311_set_vdvfs12_sfchg_fen(unsigned char val)
  3981. {
  3982. unsigned char ret = 0;
  3983. mt6311_lock();
  3984. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON11),
  3985. (unsigned char)(val),
  3986. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_FEN_MASK),
  3987. (unsigned char)(MT6311_PMIC_VDVFS12_SFCHG_FEN_SHIFT)
  3988. );
  3989. mt6311_unlock();
  3990. }
  3991. void mt6311_set_vdvfs12_vosel(unsigned char val)
  3992. {
  3993. unsigned char ret = 0;
  3994. mt6311_lock();
  3995. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON12),
  3996. (unsigned char)(val),
  3997. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_MASK),
  3998. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_SHIFT)
  3999. );
  4000. mt6311_unlock();
  4001. }
  4002. void mt6311_set_vdvfs12_vosel_on(unsigned char val)
  4003. {
  4004. unsigned char ret = 0;
  4005. mt6311_lock();
  4006. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON13),
  4007. (unsigned char)(val),
  4008. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_ON_MASK),
  4009. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_ON_SHIFT)
  4010. );
  4011. mt6311_unlock();
  4012. }
  4013. void mt6311_set_vdvfs12_vosel_sleep(unsigned char val)
  4014. {
  4015. unsigned char ret = 0;
  4016. mt6311_lock();
  4017. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON14),
  4018. (unsigned char)(val),
  4019. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_SLEEP_MASK),
  4020. (unsigned char)(MT6311_PMIC_VDVFS12_VOSEL_SLEEP_SHIFT)
  4021. );
  4022. mt6311_unlock();
  4023. }
  4024. unsigned char mt6311_get_ni_vdvfs12_vosel(void)
  4025. {
  4026. unsigned char ret = 0;
  4027. unsigned char val = 0;
  4028. mt6311_lock();
  4029. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON15),
  4030. (&val),
  4031. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VOSEL_MASK),
  4032. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VOSEL_SHIFT)
  4033. );
  4034. mt6311_unlock();
  4035. return val;
  4036. }
  4037. void mt6311_set_vdvfs12_burst_sleep(unsigned char val)
  4038. {
  4039. unsigned char ret = 0;
  4040. mt6311_lock();
  4041. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON16),
  4042. (unsigned char)(val),
  4043. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_SLEEP_MASK),
  4044. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_SLEEP_SHIFT)
  4045. );
  4046. mt6311_unlock();
  4047. }
  4048. unsigned char mt6311_get_qi_vdvfs12_burst(void)
  4049. {
  4050. unsigned char ret = 0;
  4051. unsigned char val = 0;
  4052. mt6311_lock();
  4053. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON16),
  4054. (&val),
  4055. (unsigned char)(MT6311_PMIC_QI_VDVFS12_BURST_MASK),
  4056. (unsigned char)(MT6311_PMIC_QI_VDVFS12_BURST_SHIFT)
  4057. );
  4058. mt6311_unlock();
  4059. return val;
  4060. }
  4061. void mt6311_set_vdvfs12_burst(unsigned char val)
  4062. {
  4063. unsigned char ret = 0;
  4064. mt6311_lock();
  4065. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON17),
  4066. (unsigned char)(val),
  4067. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_MASK),
  4068. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_SHIFT)
  4069. );
  4070. mt6311_unlock();
  4071. }
  4072. void mt6311_set_vdvfs12_burst_on(unsigned char val)
  4073. {
  4074. unsigned char ret = 0;
  4075. mt6311_lock();
  4076. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON17),
  4077. (unsigned char)(val),
  4078. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_ON_MASK),
  4079. (unsigned char)(MT6311_PMIC_VDVFS12_BURST_ON_SHIFT)
  4080. );
  4081. mt6311_unlock();
  4082. }
  4083. void mt6311_set_vdvfs12_vsleep_en(unsigned char val)
  4084. {
  4085. unsigned char ret = 0;
  4086. mt6311_lock();
  4087. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON18),
  4088. (unsigned char)(val),
  4089. (unsigned char)(MT6311_PMIC_VDVFS12_VSLEEP_EN_MASK),
  4090. (unsigned char)(MT6311_PMIC_VDVFS12_VSLEEP_EN_SHIFT)
  4091. );
  4092. mt6311_unlock();
  4093. }
  4094. void mt6311_set_vdvfs12_r2r_pdn(unsigned char val)
  4095. {
  4096. unsigned char ret = 0;
  4097. mt6311_lock();
  4098. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON18),
  4099. (unsigned char)(val),
  4100. (unsigned char)(MT6311_PMIC_VDVFS12_R2R_PDN_MASK),
  4101. (unsigned char)(MT6311_PMIC_VDVFS12_R2R_PDN_SHIFT)
  4102. );
  4103. mt6311_unlock();
  4104. }
  4105. void mt6311_set_vdvfs12_vsleep_sel(unsigned char val)
  4106. {
  4107. unsigned char ret = 0;
  4108. mt6311_lock();
  4109. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON18),
  4110. (unsigned char)(val),
  4111. (unsigned char)(MT6311_PMIC_VDVFS12_VSLEEP_SEL_MASK),
  4112. (unsigned char)(MT6311_PMIC_VDVFS12_VSLEEP_SEL_SHIFT)
  4113. );
  4114. mt6311_unlock();
  4115. }
  4116. unsigned char mt6311_get_ni_vdvfs12_r2r_pdn(void)
  4117. {
  4118. unsigned char ret = 0;
  4119. unsigned char val = 0;
  4120. mt6311_lock();
  4121. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON18),
  4122. (&val),
  4123. (unsigned char)(MT6311_PMIC_NI_VDVFS12_R2R_PDN_MASK),
  4124. (unsigned char)(MT6311_PMIC_NI_VDVFS12_R2R_PDN_SHIFT)
  4125. );
  4126. mt6311_unlock();
  4127. return val;
  4128. }
  4129. unsigned char mt6311_get_ni_vdvfs12_vsleep_sel(void)
  4130. {
  4131. unsigned char ret = 0;
  4132. unsigned char val = 0;
  4133. mt6311_lock();
  4134. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON18),
  4135. (&val),
  4136. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VSLEEP_SEL_MASK),
  4137. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VSLEEP_SEL_SHIFT)
  4138. );
  4139. mt6311_unlock();
  4140. return val;
  4141. }
  4142. void mt6311_set_vdvfs12_trans_td(unsigned char val)
  4143. {
  4144. unsigned char ret = 0;
  4145. mt6311_lock();
  4146. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON19),
  4147. (unsigned char)(val),
  4148. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_TD_MASK),
  4149. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_TD_SHIFT)
  4150. );
  4151. mt6311_unlock();
  4152. }
  4153. void mt6311_set_vdvfs12_trans_ctrl(unsigned char val)
  4154. {
  4155. unsigned char ret = 0;
  4156. mt6311_lock();
  4157. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON19),
  4158. (unsigned char)(val),
  4159. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_CTRL_MASK),
  4160. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_CTRL_SHIFT)
  4161. );
  4162. mt6311_unlock();
  4163. }
  4164. void mt6311_set_vdvfs12_trans_once(unsigned char val)
  4165. {
  4166. unsigned char ret = 0;
  4167. mt6311_lock();
  4168. ret = mt6311_config_interface((unsigned char)(MT6311_VDVFS12_CON19),
  4169. (unsigned char)(val),
  4170. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_ONCE_MASK),
  4171. (unsigned char)(MT6311_PMIC_VDVFS12_TRANS_ONCE_SHIFT)
  4172. );
  4173. mt6311_unlock();
  4174. }
  4175. unsigned char mt6311_get_ni_vdvfs12_vosel_trans(void)
  4176. {
  4177. unsigned char ret = 0;
  4178. unsigned char val = 0;
  4179. mt6311_lock();
  4180. ret = mt6311_read_interface((unsigned char)(MT6311_VDVFS12_CON19),
  4181. (&val),
  4182. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VOSEL_TRANS_MASK),
  4183. (unsigned char)(MT6311_PMIC_NI_VDVFS12_VOSEL_TRANS_SHIFT)
  4184. );
  4185. mt6311_unlock();
  4186. return val;
  4187. }
  4188. void mt6311_set_k_rst_done(unsigned char val)
  4189. {
  4190. unsigned char ret = 0;
  4191. mt6311_lock();
  4192. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4193. (unsigned char)(val),
  4194. (unsigned char)(MT6311_PMIC_K_RST_DONE_MASK),
  4195. (unsigned char)(MT6311_PMIC_K_RST_DONE_SHIFT)
  4196. );
  4197. mt6311_unlock();
  4198. }
  4199. void mt6311_set_k_map_sel(unsigned char val)
  4200. {
  4201. unsigned char ret = 0;
  4202. mt6311_lock();
  4203. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4204. (unsigned char)(val),
  4205. (unsigned char)(MT6311_PMIC_K_MAP_SEL_MASK),
  4206. (unsigned char)(MT6311_PMIC_K_MAP_SEL_SHIFT)
  4207. );
  4208. mt6311_unlock();
  4209. }
  4210. void mt6311_set_k_once_en(unsigned char val)
  4211. {
  4212. unsigned char ret = 0;
  4213. mt6311_lock();
  4214. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4215. (unsigned char)(val),
  4216. (unsigned char)(MT6311_PMIC_K_ONCE_EN_MASK),
  4217. (unsigned char)(MT6311_PMIC_K_ONCE_EN_SHIFT)
  4218. );
  4219. mt6311_unlock();
  4220. }
  4221. void mt6311_set_k_once(unsigned char val)
  4222. {
  4223. unsigned char ret = 0;
  4224. mt6311_lock();
  4225. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4226. (unsigned char)(val),
  4227. (unsigned char)(MT6311_PMIC_K_ONCE_MASK),
  4228. (unsigned char)(MT6311_PMIC_K_ONCE_SHIFT)
  4229. );
  4230. mt6311_unlock();
  4231. }
  4232. void mt6311_set_k_start_manual(unsigned char val)
  4233. {
  4234. unsigned char ret = 0;
  4235. mt6311_lock();
  4236. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4237. (unsigned char)(val),
  4238. (unsigned char)(MT6311_PMIC_K_START_MANUAL_MASK),
  4239. (unsigned char)(MT6311_PMIC_K_START_MANUAL_SHIFT)
  4240. );
  4241. mt6311_unlock();
  4242. }
  4243. void mt6311_set_k_src_sel(unsigned char val)
  4244. {
  4245. unsigned char ret = 0;
  4246. mt6311_lock();
  4247. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4248. (unsigned char)(val),
  4249. (unsigned char)(MT6311_PMIC_K_SRC_SEL_MASK),
  4250. (unsigned char)(MT6311_PMIC_K_SRC_SEL_SHIFT)
  4251. );
  4252. mt6311_unlock();
  4253. }
  4254. void mt6311_set_k_auto_en(unsigned char val)
  4255. {
  4256. unsigned char ret = 0;
  4257. mt6311_lock();
  4258. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4259. (unsigned char)(val),
  4260. (unsigned char)(MT6311_PMIC_K_AUTO_EN_MASK),
  4261. (unsigned char)(MT6311_PMIC_K_AUTO_EN_SHIFT)
  4262. );
  4263. mt6311_unlock();
  4264. }
  4265. void mt6311_set_k_inv(unsigned char val)
  4266. {
  4267. unsigned char ret = 0;
  4268. mt6311_lock();
  4269. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON0),
  4270. (unsigned char)(val),
  4271. (unsigned char)(MT6311_PMIC_K_INV_MASK),
  4272. (unsigned char)(MT6311_PMIC_K_INV_SHIFT)
  4273. );
  4274. mt6311_unlock();
  4275. }
  4276. void mt6311_set_k_control_smps(unsigned char val)
  4277. {
  4278. unsigned char ret = 0;
  4279. mt6311_lock();
  4280. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON1),
  4281. (unsigned char)(val),
  4282. (unsigned char)(MT6311_PMIC_K_CONTROL_SMPS_MASK),
  4283. (unsigned char)(MT6311_PMIC_K_CONTROL_SMPS_SHIFT)
  4284. );
  4285. mt6311_unlock();
  4286. }
  4287. unsigned char mt6311_get_qi_smps_osc_cal(void)
  4288. {
  4289. unsigned char ret = 0;
  4290. unsigned char val = 0;
  4291. mt6311_lock();
  4292. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_K_CON2),
  4293. (&val),
  4294. (unsigned char)(MT6311_PMIC_QI_SMPS_OSC_CAL_MASK),
  4295. (unsigned char)(MT6311_PMIC_QI_SMPS_OSC_CAL_SHIFT)
  4296. );
  4297. mt6311_unlock();
  4298. return val;
  4299. }
  4300. unsigned char mt6311_get_k_result(void)
  4301. {
  4302. unsigned char ret = 0;
  4303. unsigned char val = 0;
  4304. mt6311_lock();
  4305. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_K_CON3),
  4306. (&val),
  4307. (unsigned char)(MT6311_PMIC_K_RESULT_MASK),
  4308. (unsigned char)(MT6311_PMIC_K_RESULT_SHIFT)
  4309. );
  4310. mt6311_unlock();
  4311. return val;
  4312. }
  4313. unsigned char mt6311_get_k_done(void)
  4314. {
  4315. unsigned char ret = 0;
  4316. unsigned char val = 0;
  4317. mt6311_lock();
  4318. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_K_CON3),
  4319. (&val),
  4320. (unsigned char)(MT6311_PMIC_K_DONE_MASK),
  4321. (unsigned char)(MT6311_PMIC_K_DONE_SHIFT)
  4322. );
  4323. mt6311_unlock();
  4324. return val;
  4325. }
  4326. unsigned char mt6311_get_k_control(void)
  4327. {
  4328. unsigned char ret = 0;
  4329. unsigned char val = 0;
  4330. mt6311_lock();
  4331. ret = mt6311_read_interface((unsigned char)(MT6311_BUCK_K_CON3),
  4332. (&val),
  4333. (unsigned char)(MT6311_PMIC_K_CONTROL_MASK),
  4334. (unsigned char)(MT6311_PMIC_K_CONTROL_SHIFT)
  4335. );
  4336. mt6311_unlock();
  4337. return val;
  4338. }
  4339. void mt6311_set_k_buck_ck_cnt_8(unsigned char val)
  4340. {
  4341. unsigned char ret = 0;
  4342. mt6311_lock();
  4343. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON4),
  4344. (unsigned char)(val),
  4345. (unsigned char)(MT6311_PMIC_K_BUCK_CK_CNT_8_MASK),
  4346. (unsigned char)(MT6311_PMIC_K_BUCK_CK_CNT_8_SHIFT)
  4347. );
  4348. mt6311_unlock();
  4349. }
  4350. void mt6311_set_k_buck_ck_cnt_7_0(unsigned char val)
  4351. {
  4352. unsigned char ret = 0;
  4353. mt6311_lock();
  4354. ret = mt6311_config_interface((unsigned char)(MT6311_BUCK_K_CON5),
  4355. (unsigned char)(val),
  4356. (unsigned char)(MT6311_PMIC_K_BUCK_CK_CNT_7_0_MASK),
  4357. (unsigned char)(MT6311_PMIC_K_BUCK_CK_CNT_7_0_SHIFT)
  4358. );
  4359. mt6311_unlock();
  4360. }
  4361. unsigned char mt6311_get_auxadc_adc_out_ch0(void)
  4362. {
  4363. unsigned char ret = 0;
  4364. unsigned char val = 0;
  4365. mt6311_lock();
  4366. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC0),
  4367. (&val),
  4368. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CH0_MASK),
  4369. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CH0_SHIFT)
  4370. );
  4371. mt6311_unlock();
  4372. return val;
  4373. }
  4374. unsigned char mt6311_get_auxadc_adc_rdy_ch0(void)
  4375. {
  4376. unsigned char ret = 0;
  4377. unsigned char val = 0;
  4378. mt6311_lock();
  4379. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC0),
  4380. (&val),
  4381. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CH0_MASK),
  4382. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CH0_SHIFT)
  4383. );
  4384. mt6311_unlock();
  4385. return val;
  4386. }
  4387. unsigned char mt6311_get_auxadc_adc_out_ch1(void)
  4388. {
  4389. unsigned char ret = 0;
  4390. unsigned char val = 0;
  4391. mt6311_lock();
  4392. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC1),
  4393. (&val),
  4394. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CH1_MASK),
  4395. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CH1_SHIFT)
  4396. );
  4397. mt6311_unlock();
  4398. return val;
  4399. }
  4400. unsigned char mt6311_get_auxadc_adc_rdy_ch1(void)
  4401. {
  4402. unsigned char ret = 0;
  4403. unsigned char val = 0;
  4404. mt6311_lock();
  4405. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC1),
  4406. (&val),
  4407. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CH1_MASK),
  4408. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CH1_SHIFT)
  4409. );
  4410. mt6311_unlock();
  4411. return val;
  4412. }
  4413. unsigned char mt6311_get_auxadc_adc_out_csm(void)
  4414. {
  4415. unsigned char ret = 0;
  4416. unsigned char val = 0;
  4417. mt6311_lock();
  4418. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC2),
  4419. (&val),
  4420. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CSM_MASK),
  4421. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_CSM_SHIFT)
  4422. );
  4423. mt6311_unlock();
  4424. return val;
  4425. }
  4426. unsigned char mt6311_get_auxadc_adc_rdy_csm(void)
  4427. {
  4428. unsigned char ret = 0;
  4429. unsigned char val = 0;
  4430. mt6311_lock();
  4431. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC2),
  4432. (&val),
  4433. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CSM_MASK),
  4434. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_CSM_SHIFT)
  4435. );
  4436. mt6311_unlock();
  4437. return val;
  4438. }
  4439. unsigned char mt6311_get_auxadc_adc_out_div2(void)
  4440. {
  4441. unsigned char ret = 0;
  4442. unsigned char val = 0;
  4443. mt6311_lock();
  4444. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC3),
  4445. (&val),
  4446. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_DIV2_MASK),
  4447. (unsigned char)(MT6311_PMIC_AUXADC_ADC_OUT_DIV2_SHIFT)
  4448. );
  4449. mt6311_unlock();
  4450. return val;
  4451. }
  4452. unsigned char mt6311_get_auxadc_adc_rdy_div2(void)
  4453. {
  4454. unsigned char ret = 0;
  4455. unsigned char val = 0;
  4456. mt6311_lock();
  4457. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_ADC3),
  4458. (&val),
  4459. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_DIV2_MASK),
  4460. (unsigned char)(MT6311_PMIC_AUXADC_ADC_RDY_DIV2_SHIFT)
  4461. );
  4462. mt6311_unlock();
  4463. return val;
  4464. }
  4465. unsigned char mt6311_get_auxadc_adc_busy_in(void)
  4466. {
  4467. unsigned char ret = 0;
  4468. unsigned char val = 0;
  4469. mt6311_lock();
  4470. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_STA0),
  4471. (&val),
  4472. (unsigned char)(MT6311_PMIC_AUXADC_ADC_BUSY_IN_MASK),
  4473. (unsigned char)(MT6311_PMIC_AUXADC_ADC_BUSY_IN_SHIFT)
  4474. );
  4475. mt6311_unlock();
  4476. return val;
  4477. }
  4478. void mt6311_set_auxadc_rqst_ch0(unsigned char val)
  4479. {
  4480. unsigned char ret = 0;
  4481. mt6311_lock();
  4482. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_RQST0),
  4483. (unsigned char)(val),
  4484. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH0_MASK),
  4485. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH0_SHIFT)
  4486. );
  4487. mt6311_unlock();
  4488. }
  4489. void mt6311_set_auxadc_rqst_ch1(unsigned char val)
  4490. {
  4491. unsigned char ret = 0;
  4492. mt6311_lock();
  4493. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_RQST0),
  4494. (unsigned char)(val),
  4495. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH1_MASK),
  4496. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH1_SHIFT)
  4497. );
  4498. mt6311_unlock();
  4499. }
  4500. void mt6311_set_auxadc_rqst_ch2(unsigned char val)
  4501. {
  4502. unsigned char ret = 0;
  4503. mt6311_lock();
  4504. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_RQST0),
  4505. (unsigned char)(val),
  4506. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH2_MASK),
  4507. (unsigned char)(MT6311_PMIC_AUXADC_RQST_CH2_SHIFT)
  4508. );
  4509. mt6311_unlock();
  4510. }
  4511. void mt6311_set_auxadc_en_csm_sw(unsigned char val)
  4512. {
  4513. unsigned char ret = 0;
  4514. mt6311_lock();
  4515. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4516. (unsigned char)(val),
  4517. (unsigned char)(MT6311_PMIC_AUXADC_EN_CSM_SW_MASK),
  4518. (unsigned char)(MT6311_PMIC_AUXADC_EN_CSM_SW_SHIFT)
  4519. );
  4520. mt6311_unlock();
  4521. }
  4522. void mt6311_set_auxadc_en_csm_sel(unsigned char val)
  4523. {
  4524. unsigned char ret = 0;
  4525. mt6311_lock();
  4526. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4527. (unsigned char)(val),
  4528. (unsigned char)(MT6311_PMIC_AUXADC_EN_CSM_SEL_MASK),
  4529. (unsigned char)(MT6311_PMIC_AUXADC_EN_CSM_SEL_SHIFT)
  4530. );
  4531. mt6311_unlock();
  4532. }
  4533. void mt6311_set_rg_test_auxadc(unsigned char val)
  4534. {
  4535. unsigned char ret = 0;
  4536. mt6311_lock();
  4537. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4538. (unsigned char)(val),
  4539. (unsigned char)(MT6311_PMIC_RG_TEST_AUXADC_MASK),
  4540. (unsigned char)(MT6311_PMIC_RG_TEST_AUXADC_SHIFT)
  4541. );
  4542. mt6311_unlock();
  4543. }
  4544. void mt6311_set_auxadc_ck_aon_gps(unsigned char val)
  4545. {
  4546. unsigned char ret = 0;
  4547. mt6311_lock();
  4548. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4549. (unsigned char)(val),
  4550. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_GPS_MASK),
  4551. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_GPS_SHIFT)
  4552. );
  4553. mt6311_unlock();
  4554. }
  4555. void mt6311_set_auxadc_ck_aon_md(unsigned char val)
  4556. {
  4557. unsigned char ret = 0;
  4558. mt6311_lock();
  4559. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4560. (unsigned char)(val),
  4561. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_MD_MASK),
  4562. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_MD_SHIFT)
  4563. );
  4564. mt6311_unlock();
  4565. }
  4566. void mt6311_set_auxadc_ck_aon(unsigned char val)
  4567. {
  4568. unsigned char ret = 0;
  4569. mt6311_lock();
  4570. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON0),
  4571. (unsigned char)(val),
  4572. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_MASK),
  4573. (unsigned char)(MT6311_PMIC_AUXADC_CK_AON_SHIFT)
  4574. );
  4575. mt6311_unlock();
  4576. }
  4577. void mt6311_set_auxadc_ck_on_extd(unsigned char val)
  4578. {
  4579. unsigned char ret = 0;
  4580. mt6311_lock();
  4581. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON1),
  4582. (unsigned char)(val),
  4583. (unsigned char)(MT6311_PMIC_AUXADC_CK_ON_EXTD_MASK),
  4584. (unsigned char)(MT6311_PMIC_AUXADC_CK_ON_EXTD_SHIFT)
  4585. );
  4586. mt6311_unlock();
  4587. }
  4588. void mt6311_set_auxadc_spl_num(unsigned char val)
  4589. {
  4590. unsigned char ret = 0;
  4591. mt6311_lock();
  4592. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON2),
  4593. (unsigned char)(val),
  4594. (unsigned char)(MT6311_PMIC_AUXADC_SPL_NUM_MASK),
  4595. (unsigned char)(MT6311_PMIC_AUXADC_SPL_NUM_SHIFT)
  4596. );
  4597. mt6311_unlock();
  4598. }
  4599. void mt6311_set_auxadc_avg_num_small(unsigned char val)
  4600. {
  4601. unsigned char ret = 0;
  4602. mt6311_lock();
  4603. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON3),
  4604. (unsigned char)(val),
  4605. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_SMALL_MASK),
  4606. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_SMALL_SHIFT)
  4607. );
  4608. mt6311_unlock();
  4609. }
  4610. void mt6311_set_auxadc_avg_num_large(unsigned char val)
  4611. {
  4612. unsigned char ret = 0;
  4613. mt6311_lock();
  4614. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON3),
  4615. (unsigned char)(val),
  4616. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_LARGE_MASK),
  4617. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_LARGE_SHIFT)
  4618. );
  4619. mt6311_unlock();
  4620. }
  4621. void mt6311_set_auxadc_avg_num_sel(unsigned char val)
  4622. {
  4623. unsigned char ret = 0;
  4624. mt6311_lock();
  4625. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON4),
  4626. (unsigned char)(val),
  4627. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_SEL_MASK),
  4628. (unsigned char)(MT6311_PMIC_AUXADC_AVG_NUM_SEL_SHIFT)
  4629. );
  4630. mt6311_unlock();
  4631. }
  4632. void mt6311_set_auxadc_trim_ch0_sel(unsigned char val)
  4633. {
  4634. unsigned char ret = 0;
  4635. mt6311_lock();
  4636. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON5),
  4637. (unsigned char)(val),
  4638. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH0_SEL_MASK),
  4639. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH0_SEL_SHIFT)
  4640. );
  4641. mt6311_unlock();
  4642. }
  4643. void mt6311_set_auxadc_trim_ch1_sel(unsigned char val)
  4644. {
  4645. unsigned char ret = 0;
  4646. mt6311_lock();
  4647. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON5),
  4648. (unsigned char)(val),
  4649. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH1_SEL_MASK),
  4650. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH1_SEL_SHIFT)
  4651. );
  4652. mt6311_unlock();
  4653. }
  4654. void mt6311_set_auxadc_trim_ch2_sel(unsigned char val)
  4655. {
  4656. unsigned char ret = 0;
  4657. mt6311_lock();
  4658. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON5),
  4659. (unsigned char)(val),
  4660. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH2_SEL_MASK),
  4661. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH2_SEL_SHIFT)
  4662. );
  4663. mt6311_unlock();
  4664. }
  4665. void mt6311_set_auxadc_trim_ch3_sel(unsigned char val)
  4666. {
  4667. unsigned char ret = 0;
  4668. mt6311_lock();
  4669. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON5),
  4670. (unsigned char)(val),
  4671. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH3_SEL_MASK),
  4672. (unsigned char)(MT6311_PMIC_AUXADC_TRIM_CH3_SEL_SHIFT)
  4673. );
  4674. mt6311_unlock();
  4675. }
  4676. void mt6311_set_auxadc_con6_rsv0(unsigned char val)
  4677. {
  4678. unsigned char ret = 0;
  4679. mt6311_lock();
  4680. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4681. (unsigned char)(val),
  4682. (unsigned char)(MT6311_PMIC_AUXADC_CON6_RSV0_MASK),
  4683. (unsigned char)(MT6311_PMIC_AUXADC_CON6_RSV0_SHIFT)
  4684. );
  4685. mt6311_unlock();
  4686. }
  4687. void mt6311_set_rg_adc_2s_comp_enb(unsigned char val)
  4688. {
  4689. unsigned char ret = 0;
  4690. mt6311_lock();
  4691. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4692. (unsigned char)(val),
  4693. (unsigned char)(MT6311_PMIC_RG_ADC_2S_COMP_ENB_MASK),
  4694. (unsigned char)(MT6311_PMIC_RG_ADC_2S_COMP_ENB_SHIFT)
  4695. );
  4696. mt6311_unlock();
  4697. }
  4698. void mt6311_set_rg_adc_trim_comp(unsigned char val)
  4699. {
  4700. unsigned char ret = 0;
  4701. mt6311_lock();
  4702. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4703. (unsigned char)(val),
  4704. (unsigned char)(MT6311_PMIC_RG_ADC_TRIM_COMP_MASK),
  4705. (unsigned char)(MT6311_PMIC_RG_ADC_TRIM_COMP_SHIFT)
  4706. );
  4707. mt6311_unlock();
  4708. }
  4709. void mt6311_set_auxadc_out_sel(unsigned char val)
  4710. {
  4711. unsigned char ret = 0;
  4712. mt6311_lock();
  4713. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4714. (unsigned char)(val),
  4715. (unsigned char)(MT6311_PMIC_AUXADC_OUT_SEL_MASK),
  4716. (unsigned char)(MT6311_PMIC_AUXADC_OUT_SEL_SHIFT)
  4717. );
  4718. mt6311_unlock();
  4719. }
  4720. void mt6311_set_auxadc_adc_pwdb_swctrl(unsigned char val)
  4721. {
  4722. unsigned char ret = 0;
  4723. mt6311_lock();
  4724. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4725. (unsigned char)(val),
  4726. (unsigned char)(MT6311_PMIC_AUXADC_ADC_PWDB_SWCTRL_MASK),
  4727. (unsigned char)(MT6311_PMIC_AUXADC_ADC_PWDB_SWCTRL_SHIFT)
  4728. );
  4729. mt6311_unlock();
  4730. }
  4731. void mt6311_set_auxadc_qi_vdvfs1_csm_en_sw(unsigned char val)
  4732. {
  4733. unsigned char ret = 0;
  4734. mt6311_lock();
  4735. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4736. (unsigned char)(val),
  4737. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS1_CSM_EN_SW_MASK),
  4738. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS1_CSM_EN_SW_SHIFT)
  4739. );
  4740. mt6311_unlock();
  4741. }
  4742. void mt6311_set_auxadc_qi_vdvfs11_csm_en(unsigned char val)
  4743. {
  4744. unsigned char ret = 0;
  4745. mt6311_lock();
  4746. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4747. (unsigned char)(val),
  4748. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS11_CSM_EN_MASK),
  4749. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS11_CSM_EN_SHIFT)
  4750. );
  4751. mt6311_unlock();
  4752. }
  4753. void mt6311_set_auxadc_qi_vdvfs12_csm_en(unsigned char val)
  4754. {
  4755. unsigned char ret = 0;
  4756. mt6311_lock();
  4757. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON6),
  4758. (unsigned char)(val),
  4759. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS12_CSM_EN_MASK),
  4760. (unsigned char)(MT6311_PMIC_AUXADC_QI_VDVFS12_CSM_EN_SHIFT)
  4761. );
  4762. mt6311_unlock();
  4763. }
  4764. void mt6311_set_auxadc_sw_gain_trim(unsigned char val)
  4765. {
  4766. unsigned char ret = 0;
  4767. mt6311_lock();
  4768. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON7),
  4769. (unsigned char)(val),
  4770. (unsigned char)(MT6311_PMIC_AUXADC_SW_GAIN_TRIM_MASK),
  4771. (unsigned char)(MT6311_PMIC_AUXADC_SW_GAIN_TRIM_SHIFT)
  4772. );
  4773. mt6311_unlock();
  4774. }
  4775. void mt6311_set_auxadc_sw_offset_trim(unsigned char val)
  4776. {
  4777. unsigned char ret = 0;
  4778. mt6311_lock();
  4779. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON8),
  4780. (unsigned char)(val),
  4781. (unsigned char)(MT6311_PMIC_AUXADC_SW_OFFSET_TRIM_MASK),
  4782. (unsigned char)(MT6311_PMIC_AUXADC_SW_OFFSET_TRIM_SHIFT)
  4783. );
  4784. mt6311_unlock();
  4785. }
  4786. void mt6311_set_auxadc_rng_en(unsigned char val)
  4787. {
  4788. unsigned char ret = 0;
  4789. mt6311_lock();
  4790. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4791. (unsigned char)(val),
  4792. (unsigned char)(MT6311_PMIC_AUXADC_RNG_EN_MASK),
  4793. (unsigned char)(MT6311_PMIC_AUXADC_RNG_EN_SHIFT)
  4794. );
  4795. mt6311_unlock();
  4796. }
  4797. void mt6311_set_auxadc_data_reuse_sel(unsigned char val)
  4798. {
  4799. unsigned char ret = 0;
  4800. mt6311_lock();
  4801. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4802. (unsigned char)(val),
  4803. (unsigned char)(MT6311_PMIC_AUXADC_DATA_REUSE_SEL_MASK),
  4804. (unsigned char)(MT6311_PMIC_AUXADC_DATA_REUSE_SEL_SHIFT)
  4805. );
  4806. mt6311_unlock();
  4807. }
  4808. void mt6311_set_auxadc_test_mode(unsigned char val)
  4809. {
  4810. unsigned char ret = 0;
  4811. mt6311_lock();
  4812. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4813. (unsigned char)(val),
  4814. (unsigned char)(MT6311_PMIC_AUXADC_TEST_MODE_MASK),
  4815. (unsigned char)(MT6311_PMIC_AUXADC_TEST_MODE_SHIFT)
  4816. );
  4817. mt6311_unlock();
  4818. }
  4819. void mt6311_set_auxadc_bit_sel(unsigned char val)
  4820. {
  4821. unsigned char ret = 0;
  4822. mt6311_lock();
  4823. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4824. (unsigned char)(val),
  4825. (unsigned char)(MT6311_PMIC_AUXADC_BIT_SEL_MASK),
  4826. (unsigned char)(MT6311_PMIC_AUXADC_BIT_SEL_SHIFT)
  4827. );
  4828. mt6311_unlock();
  4829. }
  4830. void mt6311_set_auxadc_start_sw(unsigned char val)
  4831. {
  4832. unsigned char ret = 0;
  4833. mt6311_lock();
  4834. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4835. (unsigned char)(val),
  4836. (unsigned char)(MT6311_PMIC_AUXADC_START_SW_MASK),
  4837. (unsigned char)(MT6311_PMIC_AUXADC_START_SW_SHIFT)
  4838. );
  4839. mt6311_unlock();
  4840. }
  4841. void mt6311_set_auxadc_start_swctrl(unsigned char val)
  4842. {
  4843. unsigned char ret = 0;
  4844. mt6311_lock();
  4845. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4846. (unsigned char)(val),
  4847. (unsigned char)(MT6311_PMIC_AUXADC_START_SWCTRL_MASK),
  4848. (unsigned char)(MT6311_PMIC_AUXADC_START_SWCTRL_SHIFT)
  4849. );
  4850. mt6311_unlock();
  4851. }
  4852. void mt6311_set_auxadc_adc_pwdb(unsigned char val)
  4853. {
  4854. unsigned char ret = 0;
  4855. mt6311_lock();
  4856. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON9),
  4857. (unsigned char)(val),
  4858. (unsigned char)(MT6311_PMIC_AUXADC_ADC_PWDB_MASK),
  4859. (unsigned char)(MT6311_PMIC_AUXADC_ADC_PWDB_SHIFT)
  4860. );
  4861. mt6311_unlock();
  4862. }
  4863. unsigned char mt6311_get_ad_auxadc_comp(void)
  4864. {
  4865. unsigned char ret = 0;
  4866. unsigned char val = 0;
  4867. mt6311_lock();
  4868. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON10),
  4869. (&val),
  4870. (unsigned char)(MT6311_PMIC_AD_AUXADC_COMP_MASK),
  4871. (unsigned char)(MT6311_PMIC_AD_AUXADC_COMP_SHIFT)
  4872. );
  4873. mt6311_unlock();
  4874. return val;
  4875. }
  4876. void mt6311_set_auxadc_da_dac_swctrl(unsigned char val)
  4877. {
  4878. unsigned char ret = 0;
  4879. mt6311_lock();
  4880. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON10),
  4881. (unsigned char)(val),
  4882. (unsigned char)(MT6311_PMIC_AUXADC_DA_DAC_SWCTRL_MASK),
  4883. (unsigned char)(MT6311_PMIC_AUXADC_DA_DAC_SWCTRL_SHIFT)
  4884. );
  4885. mt6311_unlock();
  4886. }
  4887. void mt6311_set_auxadc_da_dac(unsigned char val)
  4888. {
  4889. unsigned char ret = 0;
  4890. mt6311_lock();
  4891. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON11),
  4892. (unsigned char)(val),
  4893. (unsigned char)(MT6311_PMIC_AUXADC_DA_DAC_MASK),
  4894. (unsigned char)(MT6311_PMIC_AUXADC_DA_DAC_SHIFT)
  4895. );
  4896. mt6311_unlock();
  4897. }
  4898. void mt6311_set_auxadc_swctrl_en(unsigned char val)
  4899. {
  4900. unsigned char ret = 0;
  4901. mt6311_lock();
  4902. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON12),
  4903. (unsigned char)(val),
  4904. (unsigned char)(MT6311_PMIC_AUXADC_SWCTRL_EN_MASK),
  4905. (unsigned char)(MT6311_PMIC_AUXADC_SWCTRL_EN_SHIFT)
  4906. );
  4907. mt6311_unlock();
  4908. }
  4909. void mt6311_set_auxadc_chsel(unsigned char val)
  4910. {
  4911. unsigned char ret = 0;
  4912. mt6311_lock();
  4913. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON12),
  4914. (unsigned char)(val),
  4915. (unsigned char)(MT6311_PMIC_AUXADC_CHSEL_MASK),
  4916. (unsigned char)(MT6311_PMIC_AUXADC_CHSEL_SHIFT)
  4917. );
  4918. mt6311_unlock();
  4919. }
  4920. void mt6311_set_auxadc_adcin_baton_ted_en(unsigned char val)
  4921. {
  4922. unsigned char ret = 0;
  4923. mt6311_lock();
  4924. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON12),
  4925. (unsigned char)(val),
  4926. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_BATON_TED_EN_MASK),
  4927. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_BATON_TED_EN_SHIFT)
  4928. );
  4929. mt6311_unlock();
  4930. }
  4931. void mt6311_set_auxadc_adcin_chrin_en(unsigned char val)
  4932. {
  4933. unsigned char ret = 0;
  4934. mt6311_lock();
  4935. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON13),
  4936. (unsigned char)(val),
  4937. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_CHRIN_EN_MASK),
  4938. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_CHRIN_EN_SHIFT)
  4939. );
  4940. mt6311_unlock();
  4941. }
  4942. void mt6311_set_auxadc_adcin_batsns_en(unsigned char val)
  4943. {
  4944. unsigned char ret = 0;
  4945. mt6311_lock();
  4946. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON13),
  4947. (unsigned char)(val),
  4948. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_BATSNS_EN_MASK),
  4949. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_BATSNS_EN_SHIFT)
  4950. );
  4951. mt6311_unlock();
  4952. }
  4953. void mt6311_set_auxadc_adcin_cs_en(unsigned char val)
  4954. {
  4955. unsigned char ret = 0;
  4956. mt6311_lock();
  4957. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON13),
  4958. (unsigned char)(val),
  4959. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_CS_EN_MASK),
  4960. (unsigned char)(MT6311_PMIC_AUXADC_ADCIN_CS_EN_SHIFT)
  4961. );
  4962. mt6311_unlock();
  4963. }
  4964. void mt6311_set_auxadc_dac_extd_en(unsigned char val)
  4965. {
  4966. unsigned char ret = 0;
  4967. mt6311_lock();
  4968. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON14),
  4969. (unsigned char)(val),
  4970. (unsigned char)(MT6311_PMIC_AUXADC_DAC_EXTD_EN_MASK),
  4971. (unsigned char)(MT6311_PMIC_AUXADC_DAC_EXTD_EN_SHIFT)
  4972. );
  4973. mt6311_unlock();
  4974. }
  4975. void mt6311_set_auxadc_dac_extd(unsigned char val)
  4976. {
  4977. unsigned char ret = 0;
  4978. mt6311_lock();
  4979. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON14),
  4980. (unsigned char)(val),
  4981. (unsigned char)(MT6311_PMIC_AUXADC_DAC_EXTD_MASK),
  4982. (unsigned char)(MT6311_PMIC_AUXADC_DAC_EXTD_SHIFT)
  4983. );
  4984. mt6311_unlock();
  4985. }
  4986. void mt6311_set_auxadc_dig1_rsv1(unsigned char val)
  4987. {
  4988. unsigned char ret = 0;
  4989. mt6311_lock();
  4990. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON14),
  4991. (unsigned char)(val),
  4992. (unsigned char)(MT6311_PMIC_AUXADC_DIG1_RSV1_MASK),
  4993. (unsigned char)(MT6311_PMIC_AUXADC_DIG1_RSV1_SHIFT)
  4994. );
  4995. mt6311_unlock();
  4996. }
  4997. void mt6311_set_auxadc_dig0_rsv1(unsigned char val)
  4998. {
  4999. unsigned char ret = 0;
  5000. mt6311_lock();
  5001. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON15),
  5002. (unsigned char)(val),
  5003. (unsigned char)(MT6311_PMIC_AUXADC_DIG0_RSV1_MASK),
  5004. (unsigned char)(MT6311_PMIC_AUXADC_DIG0_RSV1_SHIFT)
  5005. );
  5006. mt6311_unlock();
  5007. }
  5008. unsigned char mt6311_get_auxadc_ro_rsv1(void)
  5009. {
  5010. unsigned char ret = 0;
  5011. unsigned char val = 0;
  5012. mt6311_lock();
  5013. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON15),
  5014. (&val),
  5015. (unsigned char)(MT6311_PMIC_AUXADC_RO_RSV1_MASK),
  5016. (unsigned char)(MT6311_PMIC_AUXADC_RO_RSV1_SHIFT)
  5017. );
  5018. mt6311_unlock();
  5019. return val;
  5020. }
  5021. unsigned char mt6311_get_lbat_max_irq(void)
  5022. {
  5023. unsigned char ret = 0;
  5024. unsigned char val = 0;
  5025. mt6311_lock();
  5026. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON15),
  5027. (&val),
  5028. (unsigned char)(MT6311_PMIC_LBAT_MAX_IRQ_MASK),
  5029. (unsigned char)(MT6311_PMIC_LBAT_MAX_IRQ_SHIFT)
  5030. );
  5031. mt6311_unlock();
  5032. return val;
  5033. }
  5034. unsigned char mt6311_get_lbat_min_irq(void)
  5035. {
  5036. unsigned char ret = 0;
  5037. unsigned char val = 0;
  5038. mt6311_lock();
  5039. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON15),
  5040. (&val),
  5041. (unsigned char)(MT6311_PMIC_LBAT_MIN_IRQ_MASK),
  5042. (unsigned char)(MT6311_PMIC_LBAT_MIN_IRQ_SHIFT)
  5043. );
  5044. mt6311_unlock();
  5045. return val;
  5046. }
  5047. void mt6311_set_auxadc_autorpt_en(unsigned char val)
  5048. {
  5049. unsigned char ret = 0;
  5050. mt6311_lock();
  5051. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON15),
  5052. (unsigned char)(val),
  5053. (unsigned char)(MT6311_PMIC_AUXADC_AUTORPT_EN_MASK),
  5054. (unsigned char)(MT6311_PMIC_AUXADC_AUTORPT_EN_SHIFT)
  5055. );
  5056. mt6311_unlock();
  5057. }
  5058. void mt6311_set_auxadc_autorpt_prd(unsigned char val)
  5059. {
  5060. unsigned char ret = 0;
  5061. mt6311_lock();
  5062. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON16),
  5063. (unsigned char)(val),
  5064. (unsigned char)(MT6311_PMIC_AUXADC_AUTORPT_PRD_MASK),
  5065. (unsigned char)(MT6311_PMIC_AUXADC_AUTORPT_PRD_SHIFT)
  5066. );
  5067. mt6311_unlock();
  5068. }
  5069. void mt6311_set_auxadc_lbat_debt_min(unsigned char val)
  5070. {
  5071. unsigned char ret = 0;
  5072. mt6311_lock();
  5073. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON17),
  5074. (unsigned char)(val),
  5075. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DEBT_MIN_MASK),
  5076. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DEBT_MIN_SHIFT)
  5077. );
  5078. mt6311_unlock();
  5079. }
  5080. void mt6311_set_auxadc_lbat_debt_max(unsigned char val)
  5081. {
  5082. unsigned char ret = 0;
  5083. mt6311_lock();
  5084. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON18),
  5085. (unsigned char)(val),
  5086. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DEBT_MAX_MASK),
  5087. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DEBT_MAX_SHIFT)
  5088. );
  5089. mt6311_unlock();
  5090. }
  5091. void mt6311_set_auxadc_lbat_det_prd_7_0(unsigned char val)
  5092. {
  5093. unsigned char ret = 0;
  5094. mt6311_lock();
  5095. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON19),
  5096. (unsigned char)(val),
  5097. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_7_0_MASK),
  5098. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_7_0_SHIFT)
  5099. );
  5100. mt6311_unlock();
  5101. }
  5102. void mt6311_set_auxadc_lbat_det_prd_15_8(unsigned char val)
  5103. {
  5104. unsigned char ret = 0;
  5105. mt6311_lock();
  5106. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON20),
  5107. (unsigned char)(val),
  5108. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_15_8_MASK),
  5109. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_15_8_SHIFT)
  5110. );
  5111. mt6311_unlock();
  5112. }
  5113. void mt6311_set_auxadc_lbat_det_prd_19_16(unsigned char val)
  5114. {
  5115. unsigned char ret = 0;
  5116. mt6311_lock();
  5117. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON21),
  5118. (unsigned char)(val),
  5119. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_19_16_MASK),
  5120. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_DET_PRD_19_16_SHIFT)
  5121. );
  5122. mt6311_unlock();
  5123. }
  5124. unsigned char mt6311_get_auxadc_lbat_max_irq_b(void)
  5125. {
  5126. unsigned char ret = 0;
  5127. unsigned char val = 0;
  5128. mt6311_lock();
  5129. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON22),
  5130. (&val),
  5131. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_MAX_IRQ_B_MASK),
  5132. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_MAX_IRQ_B_SHIFT)
  5133. );
  5134. mt6311_unlock();
  5135. return val;
  5136. }
  5137. void mt6311_set_auxadc_lbat_en_max(unsigned char val)
  5138. {
  5139. unsigned char ret = 0;
  5140. mt6311_lock();
  5141. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON22),
  5142. (unsigned char)(val),
  5143. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_EN_MAX_MASK),
  5144. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_EN_MAX_SHIFT)
  5145. );
  5146. mt6311_unlock();
  5147. }
  5148. void mt6311_set_auxadc_lbat_irq_en_max(unsigned char val)
  5149. {
  5150. unsigned char ret = 0;
  5151. mt6311_lock();
  5152. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON22),
  5153. (unsigned char)(val),
  5154. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_IRQ_EN_MAX_MASK),
  5155. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_IRQ_EN_MAX_SHIFT)
  5156. );
  5157. mt6311_unlock();
  5158. }
  5159. void mt6311_set_auxadc_lbat_volt_max_0(unsigned char val)
  5160. {
  5161. unsigned char ret = 0;
  5162. mt6311_lock();
  5163. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON22),
  5164. (unsigned char)(val),
  5165. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MAX_0_MASK),
  5166. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MAX_0_SHIFT)
  5167. );
  5168. mt6311_unlock();
  5169. }
  5170. void mt6311_set_auxadc_lbat_volt_max_1(unsigned char val)
  5171. {
  5172. unsigned char ret = 0;
  5173. mt6311_lock();
  5174. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON23),
  5175. (unsigned char)(val),
  5176. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MAX_1_MASK),
  5177. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MAX_1_SHIFT)
  5178. );
  5179. mt6311_unlock();
  5180. }
  5181. unsigned char mt6311_get_auxadc_lbat_min_irq_b(void)
  5182. {
  5183. unsigned char ret = 0;
  5184. unsigned char val = 0;
  5185. mt6311_lock();
  5186. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON24),
  5187. (&val),
  5188. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_MIN_IRQ_B_MASK),
  5189. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_MIN_IRQ_B_SHIFT)
  5190. );
  5191. mt6311_unlock();
  5192. return val;
  5193. }
  5194. void mt6311_set_auxadc_lbat_en_min(unsigned char val)
  5195. {
  5196. unsigned char ret = 0;
  5197. mt6311_lock();
  5198. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON24),
  5199. (unsigned char)(val),
  5200. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_EN_MIN_MASK),
  5201. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_EN_MIN_SHIFT)
  5202. );
  5203. mt6311_unlock();
  5204. }
  5205. void mt6311_set_auxadc_lbat_irq_en_min(unsigned char val)
  5206. {
  5207. unsigned char ret = 0;
  5208. mt6311_lock();
  5209. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON24),
  5210. (unsigned char)(val),
  5211. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_IRQ_EN_MIN_MASK),
  5212. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_IRQ_EN_MIN_SHIFT)
  5213. );
  5214. mt6311_unlock();
  5215. }
  5216. void mt6311_set_auxadc_lbat_volt_min_0(unsigned char val)
  5217. {
  5218. unsigned char ret = 0;
  5219. mt6311_lock();
  5220. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON24),
  5221. (unsigned char)(val),
  5222. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MIN_0_MASK),
  5223. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MIN_0_SHIFT)
  5224. );
  5225. mt6311_unlock();
  5226. }
  5227. void mt6311_set_auxadc_lbat_volt_min_1(unsigned char val)
  5228. {
  5229. unsigned char ret = 0;
  5230. mt6311_lock();
  5231. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON25),
  5232. (unsigned char)(val),
  5233. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MIN_1_MASK),
  5234. (unsigned char)(MT6311_PMIC_AUXADC_LBAT_VOLT_MIN_1_SHIFT)
  5235. );
  5236. mt6311_unlock();
  5237. }
  5238. unsigned char mt6311_get_auxadc_lbat_debounce_count_max(void)
  5239. {
  5240. unsigned char ret = 0;
  5241. unsigned char val = 0;
  5242. mt6311_lock();
  5243. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON26),
  5244. (&val),
  5245. (unsigned
  5246. char)(MT6311_PMIC_AUXADC_LBAT_DEBOUNCE_COUNT_MAX_MASK),
  5247. (unsigned
  5248. char)(MT6311_PMIC_AUXADC_LBAT_DEBOUNCE_COUNT_MAX_SHIFT)
  5249. );
  5250. mt6311_unlock();
  5251. return val;
  5252. }
  5253. unsigned char mt6311_get_auxadc_lbat_debounce_count_min(void)
  5254. {
  5255. unsigned char ret = 0;
  5256. unsigned char val = 0;
  5257. mt6311_lock();
  5258. ret = mt6311_read_interface((unsigned char)(MT6311_AUXADC_CON27),
  5259. (&val),
  5260. (unsigned
  5261. char)(MT6311_PMIC_AUXADC_LBAT_DEBOUNCE_COUNT_MIN_MASK),
  5262. (unsigned
  5263. char)(MT6311_PMIC_AUXADC_LBAT_DEBOUNCE_COUNT_MIN_SHIFT)
  5264. );
  5265. mt6311_unlock();
  5266. return val;
  5267. }
  5268. void mt6311_set_auxadc_enpwm1_sel(unsigned char val)
  5269. {
  5270. unsigned char ret = 0;
  5271. mt6311_lock();
  5272. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON28),
  5273. (unsigned char)(val),
  5274. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM1_SEL_MASK),
  5275. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM1_SEL_SHIFT)
  5276. );
  5277. mt6311_unlock();
  5278. }
  5279. void mt6311_set_auxadc_enpwm1_sw(unsigned char val)
  5280. {
  5281. unsigned char ret = 0;
  5282. mt6311_lock();
  5283. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON28),
  5284. (unsigned char)(val),
  5285. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM1_SW_MASK),
  5286. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM1_SW_SHIFT)
  5287. );
  5288. mt6311_unlock();
  5289. }
  5290. void mt6311_set_auxadc_enpwm2_sel(unsigned char val)
  5291. {
  5292. unsigned char ret = 0;
  5293. mt6311_lock();
  5294. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON28),
  5295. (unsigned char)(val),
  5296. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM2_SEL_MASK),
  5297. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM2_SEL_SHIFT)
  5298. );
  5299. mt6311_unlock();
  5300. }
  5301. void mt6311_set_auxadc_enpwm2_sw(unsigned char val)
  5302. {
  5303. unsigned char ret = 0;
  5304. mt6311_lock();
  5305. ret = mt6311_config_interface((unsigned char)(MT6311_AUXADC_CON28),
  5306. (unsigned char)(val),
  5307. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM2_SW_MASK),
  5308. (unsigned char)(MT6311_PMIC_AUXADC_ENPWM2_SW_SHIFT)
  5309. );
  5310. mt6311_unlock();
  5311. }
  5312. unsigned char mt6311_get_qi_vbiasn_oc_status(void)
  5313. {
  5314. unsigned char ret = 0;
  5315. unsigned char val = 0;
  5316. mt6311_lock();
  5317. ret = mt6311_read_interface((unsigned char)(MT6311_LDO_CON0),
  5318. (&val),
  5319. (unsigned char)(MT6311_PMIC_QI_VBIASN_OC_STATUS_MASK),
  5320. (unsigned char)(MT6311_PMIC_QI_VBIASN_OC_STATUS_SHIFT)
  5321. );
  5322. mt6311_unlock();
  5323. return val;
  5324. }
  5325. void mt6311_set_rg_vbiasn_on_ctrl(unsigned char val)
  5326. {
  5327. unsigned char ret = 0;
  5328. mt6311_lock();
  5329. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON0),
  5330. (unsigned char)(val),
  5331. (unsigned char)(MT6311_PMIC_RG_VBIASN_ON_CTRL_MASK),
  5332. (unsigned char)(MT6311_PMIC_RG_VBIASN_ON_CTRL_SHIFT)
  5333. );
  5334. mt6311_unlock();
  5335. }
  5336. void mt6311_set_rg_vbiasn_mode_set(unsigned char val)
  5337. {
  5338. unsigned char ret = 0;
  5339. mt6311_lock();
  5340. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON0),
  5341. (unsigned char)(val),
  5342. (unsigned char)(MT6311_PMIC_RG_VBIASN_MODE_SET_MASK),
  5343. (unsigned char)(MT6311_PMIC_RG_VBIASN_MODE_SET_SHIFT)
  5344. );
  5345. mt6311_unlock();
  5346. }
  5347. void mt6311_set_rg_vbiasn_mode_ctrl(unsigned char val)
  5348. {
  5349. unsigned char ret = 0;
  5350. mt6311_lock();
  5351. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON0),
  5352. (unsigned char)(val),
  5353. (unsigned char)(MT6311_PMIC_RG_VBIASN_MODE_CTRL_MASK),
  5354. (unsigned char)(MT6311_PMIC_RG_VBIASN_MODE_CTRL_SHIFT)
  5355. );
  5356. mt6311_unlock();
  5357. }
  5358. void mt6311_set_rg_vbiasn_stbtd(unsigned char val)
  5359. {
  5360. unsigned char ret = 0;
  5361. mt6311_lock();
  5362. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON0),
  5363. (unsigned char)(val),
  5364. (unsigned char)(MT6311_PMIC_RG_VBIASN_STBTD_MASK),
  5365. (unsigned char)(MT6311_PMIC_RG_VBIASN_STBTD_SHIFT)
  5366. );
  5367. mt6311_unlock();
  5368. }
  5369. unsigned char mt6311_get_qi_vbiasn_mode(void)
  5370. {
  5371. unsigned char ret = 0;
  5372. unsigned char val = 0;
  5373. mt6311_lock();
  5374. ret = mt6311_read_interface((unsigned char)(MT6311_LDO_CON0),
  5375. (&val),
  5376. (unsigned char)(MT6311_PMIC_QI_VBIASN_MODE_MASK),
  5377. (unsigned char)(MT6311_PMIC_QI_VBIASN_MODE_SHIFT)
  5378. );
  5379. mt6311_unlock();
  5380. return val;
  5381. }
  5382. unsigned char mt6311_get_qi_vbiasn_en(void)
  5383. {
  5384. unsigned char ret = 0;
  5385. unsigned char val = 0;
  5386. mt6311_lock();
  5387. ret = mt6311_read_interface((unsigned char)(MT6311_LDO_CON0),
  5388. (&val),
  5389. (unsigned char)(MT6311_PMIC_QI_VBIASN_EN_MASK),
  5390. (unsigned char)(MT6311_PMIC_QI_VBIASN_EN_SHIFT)
  5391. );
  5392. mt6311_unlock();
  5393. return val;
  5394. }
  5395. unsigned char mt6311_get_qi_vbiasn_ocfb_en(void)
  5396. {
  5397. unsigned char ret = 0;
  5398. unsigned char val = 0;
  5399. mt6311_lock();
  5400. ret = mt6311_read_interface((unsigned char)(MT6311_LDO_OCFB0),
  5401. (&val),
  5402. (unsigned char)(MT6311_PMIC_QI_VBIASN_OCFB_EN_MASK),
  5403. (unsigned char)(MT6311_PMIC_QI_VBIASN_OCFB_EN_SHIFT)
  5404. );
  5405. mt6311_unlock();
  5406. return val;
  5407. }
  5408. void mt6311_set_rg_vbiasn_ocfb_en(unsigned char val)
  5409. {
  5410. unsigned char ret = 0;
  5411. mt6311_lock();
  5412. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_OCFB0),
  5413. (unsigned char)(val),
  5414. (unsigned char)(MT6311_PMIC_RG_VBIASN_OCFB_EN_MASK),
  5415. (unsigned char)(MT6311_PMIC_RG_VBIASN_OCFB_EN_SHIFT)
  5416. );
  5417. mt6311_unlock();
  5418. }
  5419. void mt6311_set_ldo_degtd_sel(unsigned char val)
  5420. {
  5421. unsigned char ret = 0;
  5422. mt6311_lock();
  5423. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_OCFB0),
  5424. (unsigned char)(val),
  5425. (unsigned char)(MT6311_PMIC_LDO_DEGTD_SEL_MASK),
  5426. (unsigned char)(MT6311_PMIC_LDO_DEGTD_SEL_SHIFT)
  5427. );
  5428. mt6311_unlock();
  5429. }
  5430. void mt6311_set_rg_vbiasn_dis_sel(unsigned char val)
  5431. {
  5432. unsigned char ret = 0;
  5433. mt6311_lock();
  5434. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON2),
  5435. (unsigned char)(val),
  5436. (unsigned char)(MT6311_PMIC_RG_VBIASN_DIS_SEL_MASK),
  5437. (unsigned char)(MT6311_PMIC_RG_VBIASN_DIS_SEL_SHIFT)
  5438. );
  5439. mt6311_unlock();
  5440. }
  5441. void mt6311_set_rg_vbiasn_trans_en(unsigned char val)
  5442. {
  5443. unsigned char ret = 0;
  5444. mt6311_lock();
  5445. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON2),
  5446. (unsigned char)(val),
  5447. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_EN_MASK),
  5448. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_EN_SHIFT)
  5449. );
  5450. mt6311_unlock();
  5451. }
  5452. void mt6311_set_rg_vbiasn_trans_ctrl(unsigned char val)
  5453. {
  5454. unsigned char ret = 0;
  5455. mt6311_lock();
  5456. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON2),
  5457. (unsigned char)(val),
  5458. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_CTRL_MASK),
  5459. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_CTRL_SHIFT)
  5460. );
  5461. mt6311_unlock();
  5462. }
  5463. void mt6311_set_rg_vbiasn_trans_once(unsigned char val)
  5464. {
  5465. unsigned char ret = 0;
  5466. mt6311_lock();
  5467. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON2),
  5468. (unsigned char)(val),
  5469. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_ONCE_MASK),
  5470. (unsigned char)(MT6311_PMIC_RG_VBIASN_TRANS_ONCE_SHIFT)
  5471. );
  5472. mt6311_unlock();
  5473. }
  5474. unsigned char mt6311_get_qi_vbiasn_chr(void)
  5475. {
  5476. unsigned char ret = 0;
  5477. unsigned char val = 0;
  5478. mt6311_lock();
  5479. ret = mt6311_read_interface((unsigned char)(MT6311_LDO_CON2),
  5480. (&val),
  5481. (unsigned char)(MT6311_PMIC_QI_VBIASN_CHR_MASK),
  5482. (unsigned char)(MT6311_PMIC_QI_VBIASN_CHR_SHIFT)
  5483. );
  5484. mt6311_unlock();
  5485. return val;
  5486. }
  5487. void mt6311_set_rg_vbiasn_en(unsigned char val)
  5488. {
  5489. unsigned char ret = 0;
  5490. mt6311_lock();
  5491. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON3),
  5492. (unsigned char)(val),
  5493. (unsigned char)(MT6311_PMIC_RG_VBIASN_EN_MASK),
  5494. (unsigned char)(MT6311_PMIC_RG_VBIASN_EN_SHIFT)
  5495. );
  5496. mt6311_unlock();
  5497. }
  5498. void mt6311_set_ldo_rsv(unsigned char val)
  5499. {
  5500. unsigned char ret = 0;
  5501. mt6311_lock();
  5502. ret = mt6311_config_interface((unsigned char)(MT6311_LDO_CON4),
  5503. (unsigned char)(val),
  5504. (unsigned char)(MT6311_PMIC_LDO_RSV_MASK),
  5505. (unsigned char)(MT6311_PMIC_LDO_RSV_SHIFT)
  5506. );
  5507. mt6311_unlock();
  5508. }
  5509. void mt6311_set_fqmtr_tcksel(unsigned char val)
  5510. {
  5511. unsigned char ret = 0;
  5512. mt6311_lock();
  5513. ret = mt6311_config_interface((unsigned char)(MT6311_FQMTR_CON0),
  5514. (unsigned char)(val),
  5515. (unsigned char)(MT6311_PMIC_FQMTR_TCKSEL_MASK),
  5516. (unsigned char)(MT6311_PMIC_FQMTR_TCKSEL_SHIFT)
  5517. );
  5518. mt6311_unlock();
  5519. }
  5520. unsigned char mt6311_get_fqmtr_busy(void)
  5521. {
  5522. unsigned char ret = 0;
  5523. unsigned char val = 0;
  5524. mt6311_lock();
  5525. ret = mt6311_read_interface((unsigned char)(MT6311_FQMTR_CON0),
  5526. (&val),
  5527. (unsigned char)(MT6311_PMIC_FQMTR_BUSY_MASK),
  5528. (unsigned char)(MT6311_PMIC_FQMTR_BUSY_SHIFT)
  5529. );
  5530. mt6311_unlock();
  5531. return val;
  5532. }
  5533. void mt6311_set_fqmtr_en(unsigned char val)
  5534. {
  5535. unsigned char ret = 0;
  5536. mt6311_lock();
  5537. ret = mt6311_config_interface((unsigned char)(MT6311_FQMTR_CON0),
  5538. (unsigned char)(val),
  5539. (unsigned char)(MT6311_PMIC_FQMTR_EN_MASK),
  5540. (unsigned char)(MT6311_PMIC_FQMTR_EN_SHIFT)
  5541. );
  5542. mt6311_unlock();
  5543. }
  5544. void mt6311_set_fqmtr_winset_1(unsigned char val)
  5545. {
  5546. unsigned char ret = 0;
  5547. mt6311_lock();
  5548. ret = mt6311_config_interface((unsigned char)(MT6311_FQMTR_CON1),
  5549. (unsigned char)(val),
  5550. (unsigned char)(MT6311_PMIC_FQMTR_WINSET_1_MASK),
  5551. (unsigned char)(MT6311_PMIC_FQMTR_WINSET_1_SHIFT)
  5552. );
  5553. mt6311_unlock();
  5554. }
  5555. void mt6311_set_fqmtr_winset_0(unsigned char val)
  5556. {
  5557. unsigned char ret = 0;
  5558. mt6311_lock();
  5559. ret = mt6311_config_interface((unsigned char)(MT6311_FQMTR_CON2),
  5560. (unsigned char)(val),
  5561. (unsigned char)(MT6311_PMIC_FQMTR_WINSET_0_MASK),
  5562. (unsigned char)(MT6311_PMIC_FQMTR_WINSET_0_SHIFT)
  5563. );
  5564. mt6311_unlock();
  5565. }
  5566. unsigned char mt6311_get_fqmtr_data_1(void)
  5567. {
  5568. unsigned char ret = 0;
  5569. unsigned char val = 0;
  5570. mt6311_lock();
  5571. ret = mt6311_read_interface((unsigned char)(MT6311_FQMTR_CON3),
  5572. (&val),
  5573. (unsigned char)(MT6311_PMIC_FQMTR_DATA_1_MASK),
  5574. (unsigned char)(MT6311_PMIC_FQMTR_DATA_1_SHIFT)
  5575. );
  5576. mt6311_unlock();
  5577. return val;
  5578. }
  5579. unsigned char mt6311_get_fqmtr_data_0(void)
  5580. {
  5581. unsigned char ret = 0;
  5582. unsigned char val = 0;
  5583. mt6311_lock();
  5584. ret = mt6311_read_interface((unsigned char)(MT6311_FQMTR_CON4),
  5585. (&val),
  5586. (unsigned char)(MT6311_PMIC_FQMTR_DATA_0_MASK),
  5587. (unsigned char)(MT6311_PMIC_FQMTR_DATA_0_SHIFT)
  5588. );
  5589. mt6311_unlock();
  5590. return val;
  5591. }
  5592. /*
  5593. * [Internal Function]
  5594. */
  5595. void mt6311_dump_register(void)
  5596. {
  5597. #if 0
  5598. unsigned char i = 0x0;
  5599. unsigned char i_max = 0x2; /*0xD5 */
  5600. for (i = 0x0; i <= i_max; i++)
  5601. pr_debug("[0x%x]=0x%x ", i, mt6311_get_reg_value(i));
  5602. #endif
  5603. }
  5604. int get_mt6311_i2c_ch_num(void)
  5605. {
  5606. return mt6311_BUSNUM;
  5607. }
  5608. unsigned int update_mt6311_chip_id(void)
  5609. {
  5610. unsigned int id = 0;
  5611. unsigned int id_l = 0;
  5612. unsigned int id_r = 0;
  5613. id_l = mt6311_get_cid();
  5614. if (id_l < 0) {
  5615. PMICLOG1("[update_mt6311_chip_id] id_l=%d\n", id_l);
  5616. return id_l;
  5617. }
  5618. id_r = mt6311_get_swcid();
  5619. if (id_r < 0) {
  5620. PMICLOG1("[update_mt6311_chip_id] id_r=%d\n", id_r);
  5621. return id_r;
  5622. }
  5623. id = ((id_l << 8) | (id_r));
  5624. g_mt6311_cid = id;
  5625. PMICLOG1("[update_mt6311_chip_id] id_l=0x%x, id_r=0x%x, id=0x%x\n", id_l, id_r, id);
  5626. return id;
  5627. }
  5628. unsigned int mt6311_get_chip_id(void)
  5629. {
  5630. unsigned int ret = 0;
  5631. if (g_mt6311_cid == 0) {
  5632. ret = update_mt6311_chip_id();
  5633. if (ret < 0) {
  5634. g_mt6311_hw_exist = 0;
  5635. PMICLOG1("[mt6311_get_chip_id] ret=%d hw_exist:%d\n", ret,
  5636. g_mt6311_hw_exist);
  5637. return ret;
  5638. }
  5639. }
  5640. PMICLOG1("[mt6311_get_chip_id] g_mt6311_cid=0x%x\n", g_mt6311_cid);
  5641. return g_mt6311_cid;
  5642. }
  5643. void mt6311_hw_init(void)
  5644. {
  5645. unsigned int ret = 0;
  5646. PMICLOG1("[mt6311_hw_init] 20140513, CC Lee\n");
  5647. /*put init setting from DE/SA */
  5648. /*ret=mt6311_config_interface(0x04,0x11,0xFF,0); set pin to interrupt, DVT only */
  5649. if (mt6311_get_chip_id() >= PMIC6311_E1_CID_CODE) {
  5650. PMICLOG1("[mt6311_hw_init] 6311 PMIC Chip = 0x%x\n", mt6311_get_chip_id());
  5651. PMICLOG1("[mt6311_hw_init] 2014-08-13\n");
  5652. /*put init setting from DE/SA */
  5653. /* [5:3]: GPIO1_MODE; CC, initial INT function */
  5654. ret = mt6311_config_interface(0x4, 0x2, 0x7, 3);
  5655. /* [0:0]: VDVFS11_PG_H2L_EN; Ricky */
  5656. ret = mt6311_config_interface(0x1F, 0x0, 0x1, 0);
  5657. /* [1:1]: VDVFS12_PG_H2L_EN; Ricky */
  5658. ret = mt6311_config_interface(0x1F, 0x0, 0x1, 1);
  5659. /* [2:2]: VBIASN_PG_H2L_EN; Ricky */
  5660. ret = mt6311_config_interface(0x1F, 0x0, 0x1, 2);
  5661. ret = mt6311_config_interface(0x6D, 0x3, 0x3, 5);
  5662. /* [6:5]: RG_UVLO_VTHL; Ricky, for K2/D3T UVLO issues_0.2V for PCB drop. 20150306 */
  5663. ret = mt6311_config_interface(0x6E, 0x3, 0x3, 0);
  5664. /* [1:0]: RG_UVLO_VTHH; Ricky, for K2/D3T UVLO issues_0.2V for PCB drop. 20150306 */
  5665. ret = mt6311_config_interface(0x8B, 0x1, 0x7F, 0);
  5666. /* [6:0]: VDVFS11_SFCHG_RRATE; Johnson, for DVFS slew rate rising=0.67us,20150305 */
  5667. ret = mt6311_config_interface(0x8C, 0x5, 0x7F, 0);
  5668. /* [6:0]: VDVFS11_SFCHG_FRATE; Johnson, for DVFS slew rate, falling 2.0us,20150305 */
  5669. ret = mt6311_config_interface(0x8E, 0x58, 0x7F, 0);
  5670. /* [6:0]: VDVFS11_VOSEL_ON; Setting by DVFS owner, 1.15V forD3T init. Johnson, 20150409 */
  5671. ret = mt6311_config_interface(0x94, 0x3, 0x3, 0);
  5672. /* [1:0]: VDVFS11_TRANS_TD; Johnson, for DVFS sof change, falling 50us,,20150305 */
  5673. ret = mt6311_config_interface(0x94, 0x1, 0x3, 4);
  5674. /* [5:4]: VDVFS11_TRANS_CTRL; Johnson, for DVFS sof change, falling only,,20150305 */
  5675. ret = mt6311_config_interface(0xCF, 0x0, 0x1, 0);
  5676. /* [0:0]: RG_VBIASN_EN; Johnson, OFF LDO */
  5677. ret = mt6311_config_interface(0x88, 0x1, 0x1, 1);
  5678. /* [1:1]: VDVFS11_VOSEL_CTRL; Johnson, setting for low power because D3T use normal 0.85V for sleep */
  5679. ret = mt6311_config_interface(0x88, 0x0, 0x1, 0);
  5680. /* [0:0]: VDVFS11_EN_CTRL; Johnson, Sleep SW control from SPM, after Vosel_on,20150305 */
  5681. #if 1
  5682. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x04, mt6311_get_reg_value(0x04));
  5683. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x15, mt6311_get_reg_value(0x15));
  5684. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x1F, mt6311_get_reg_value(0x1F));
  5685. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x6A, mt6311_get_reg_value(0x6A));
  5686. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x8B, mt6311_get_reg_value(0x8B));
  5687. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x8C, mt6311_get_reg_value(0x8C));
  5688. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x94, mt6311_get_reg_value(0x94));
  5689. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x93, mt6311_get_reg_value(0x93));
  5690. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0xCF, mt6311_get_reg_value(0xCF));
  5691. PMICLOG1("[mt6311] [0x%x]=0x%x\n", 0x88, mt6311_get_reg_value(0x88));
  5692. #endif
  5693. } else {
  5694. PMICLOG1("[mt6311_hw_init] Unknown PMIC Chip (0x%x)\n", mt6311_get_chip_id());
  5695. }
  5696. }
  5697. unsigned int mt6311_hw_component_detect(void)
  5698. {
  5699. unsigned int ret = 0, chip_id = 0;
  5700. ret = update_mt6311_chip_id();
  5701. if (ret < 0) {
  5702. g_mt6311_hw_exist = 0;
  5703. PMICLOG1("[update_mt6311_chip_id] ret=%d hw_exist:%d\n", ret, g_mt6311_hw_exist);
  5704. return ret;
  5705. }
  5706. chip_id = mt6311_get_chip_id();
  5707. if (chip_id < 0) {
  5708. PMICLOG1("[mt6311_get_chip_id] ret=%d\n", chip_id);
  5709. return chip_id;
  5710. }
  5711. if ((chip_id == PMIC6311_E1_CID_CODE) ||
  5712. (chip_id == PMIC6311_E2_CID_CODE) || (chip_id == PMIC6311_E3_CID_CODE)
  5713. ) {
  5714. g_mt6311_hw_exist = 1;
  5715. } else
  5716. g_mt6311_hw_exist = 0;
  5717. PMICLOG1("[mt6311_hw_component_detect] exist=%d\n", g_mt6311_hw_exist);
  5718. return 0;
  5719. }
  5720. int is_mt6311_sw_ready(void)
  5721. {
  5722. /*PMICLOG1("g_mt6311_driver_ready=%d\n", g_mt6311_driver_ready); */
  5723. return g_mt6311_driver_ready;
  5724. }
  5725. int is_mt6311_exist(void)
  5726. {
  5727. /*PMICLOG1("g_mt6311_hw_exist=%d\n", g_mt6311_hw_exist); */
  5728. return g_mt6311_hw_exist;
  5729. }
  5730. /*
  5731. * mt6311 interrupt
  5732. */
  5733. #if 1
  5734. int g_mt6311_irq = 0;
  5735. #ifdef CUST_EINT_EXT_BUCK_OC_NUM
  5736. unsigned int g_eint_pmic_mt6311_num = CUST_EINT_EXT_BUCK_OC_NUM;
  5737. #else
  5738. unsigned int g_eint_pmic_mt6311_num = 14; /*FPGA:0, phn:14 */
  5739. #endif
  5740. #ifdef CUST_EINT_EXT_BUCK_OC_DEBOUNCE_CN
  5741. unsigned int g_cust_eint_mt_pmic_mt6311_debounce_cn = CUST_EINT_EXT_BUCK_OC_DEBOUNCE_CN;
  5742. #else
  5743. unsigned int g_cust_eint_mt_pmic_mt6311_debounce_cn = 1;
  5744. #endif
  5745. #ifdef CUST_EINT_EXT_BUCK_OC_TYPE
  5746. unsigned int g_cust_eint_mt_pmic_mt6311_type = CUST_EINT_EXT_BUCK_OC_TYPE;
  5747. #else
  5748. unsigned int g_cust_eint_mt_pmic_mt6311_type = 4;
  5749. #endif
  5750. #ifdef CUST_EINT_EXT_BUCK_OC_DEBOUNCE_EN
  5751. unsigned int g_cust_eint_mt_pmic_mt6311_debounce_en = CUST_EINT_EXT_BUCK_OC_DEBOUNCE_EN;
  5752. #else
  5753. unsigned int g_cust_eint_mt_pmic_mt6311_debounce_en = 1;
  5754. #endif
  5755. static DEFINE_MUTEX(pmic_mutex_mt6311);
  5756. static struct task_struct *pmic_6311_thread_handle;
  5757. struct wake_lock pmicThread_lock_mt6311;
  5758. void wake_up_pmic_mt6311(void)
  5759. {
  5760. PMICLOG1("[wake_up_pmic_mt6311]\n");
  5761. wake_up_process(pmic_6311_thread_handle);
  5762. wake_lock(&pmicThread_lock_mt6311);
  5763. }
  5764. EXPORT_SYMBOL(wake_up_pmic_mt6311);
  5765. void mt_pmic_eint_irq_mt6311(void)
  5766. {
  5767. PMICLOG1("[mt_pmic_eint_irq_mt6311] receive interrupt\n");
  5768. wake_up_pmic_mt6311();
  5769. }
  5770. void mt6311_int_test(void)
  5771. {
  5772. pr_debug("[mt6311_int_test] start\n");
  5773. mt6311_config_interface(0x20, 0x0F, 0xFF, 0); /* pg dis */
  5774. mt6311_set_rg_auxadc_ck_pdn(0);
  5775. mt6311_set_rg_auxadc_1m_ck_pdn(0);
  5776. mt6311_config_interface(0xB5, 0xC0, 0xFF, 0); /* cc EN */
  5777. mt6311_config_interface(0xAE, 0x03, 0xFF, 0); /* ADC EN */
  5778. mt6311_config_interface(0xAE, 0x00, 0xFF, 0); /* ADC CLR */
  5779. mt6311_set_auxadc_lbat_irq_en_max(0);
  5780. mt6311_set_auxadc_lbat_irq_en_min(0);
  5781. mt6311_set_auxadc_lbat_en_max(0);
  5782. mt6311_set_auxadc_lbat_en_min(0);
  5783. mt6311_set_auxadc_lbat_volt_max_1(0);
  5784. mt6311_set_auxadc_lbat_volt_max_0(0);
  5785. mt6311_set_auxadc_lbat_volt_min_1(0);
  5786. mt6311_set_auxadc_lbat_volt_min_0(0);
  5787. mt6311_set_auxadc_lbat_det_prd_19_16(0);
  5788. mt6311_set_auxadc_lbat_det_prd_15_8(0);
  5789. mt6311_set_auxadc_lbat_det_prd_7_0(0x1);
  5790. mt6311_set_auxadc_lbat_debt_min(0x1);
  5791. mt6311_set_auxadc_lbat_debt_max(0x1);
  5792. mt6311_set_rg_int_pol(0); /* high active */
  5793. mt6311_set_rg_int_en(1);
  5794. mt6311_set_auxadc_lbat_irq_en_max(1);
  5795. mt6311_set_auxadc_lbat_irq_en_min(0);
  5796. mt6311_set_auxadc_lbat_en_max(1);
  5797. mt6311_set_auxadc_lbat_en_min(0);
  5798. pr_debug("[mt6311_int_test] done, wait for interrupt..\n");
  5799. }
  5800. void cust_pmic_interrupt_en_setting_mt6311(void)
  5801. {
  5802. #if 1
  5803. mt6311_set_rg_int_pol(0); /* high active */
  5804. mt6311_set_rg_int_en(1);
  5805. #endif
  5806. #if 0
  5807. mt6311_int_test();
  5808. #endif
  5809. }
  5810. void mt6311_lbat_min_int_handler(void)
  5811. {
  5812. /*unsigned int ret=0; */
  5813. PMICLOG1("[mt6311_lbat_min_int_handler]....\n");
  5814. /*ret=mt6311_config_interface(MT6311_TOP_INT_MON,0x1,0x1,0); */
  5815. }
  5816. void mt6311_lbat_max_int_handler(void)
  5817. {
  5818. /*unsigned int ret=0; */
  5819. PMICLOG1("[mt6311_lbat_max_int_handler]....\n");
  5820. #if 0
  5821. mt6311_set_auxadc_lbat_irq_en_max(0);
  5822. mt6311_set_auxadc_lbat_irq_en_min(0);
  5823. mt6311_set_auxadc_lbat_en_max(0);
  5824. mt6311_set_auxadc_lbat_en_min(0);
  5825. mt6311_set_rg_int_en(0);
  5826. #endif
  5827. /*ret=mt6311_config_interface(MT6311_TOP_INT_MON,0x1,0x1,1); */
  5828. }
  5829. unsigned int thr_l_int_status = 0;
  5830. unsigned int thr_h_int_status = 0;
  5831. void mt6311_clr_thr_l_int_status(void)
  5832. {
  5833. thr_l_int_status = 0;
  5834. PMICLOG1("[mt6311_clr_thr_l_int_status]....\n");
  5835. }
  5836. void mt6311_clr_thr_h_int_status(void)
  5837. {
  5838. thr_h_int_status = 0;
  5839. PMICLOG1("[mt6311_clr_thr_h_int_status]....\n");
  5840. }
  5841. unsigned int mt6311_get_thr_l_int_status(void)
  5842. {
  5843. PMICLOG1("[mt6311_get_thr_l_int_status]....\n");
  5844. return thr_l_int_status;
  5845. }
  5846. unsigned int mt6311_get_thr_h_int_status(void)
  5847. {
  5848. PMICLOG1("[mt6311_get_thr_h_int_status]....\n");
  5849. return thr_h_int_status;
  5850. }
  5851. void mt6311_thr_l_int_handler(void)
  5852. {
  5853. /*unsigned int ret=0; */
  5854. thr_l_int_status = 1;
  5855. PMICLOG1("[mt6311_thr_l_int_handler]....\n");
  5856. /*return thr_l_int_status; */
  5857. /*ret=mt6311_config_interface(MT6311_TOP_INT_MON,0x1,0x1,2); */
  5858. }
  5859. void mt6311_thr_h_int_handler(void)
  5860. {
  5861. /*unsigned int ret=0; */
  5862. thr_h_int_status = 1;
  5863. PMICLOG1("[mt6311_thr_h_int_handler]....\n");
  5864. /*ret=mt6311_config_interface(MT6311_TOP_INT_MON,0x1,0x1,3); */
  5865. }
  5866. void mt6311_buck_oc_int_handler(void)
  5867. {
  5868. /*unsigned int ret=0; */
  5869. PMICLOG1("[mt6311_buck_oc_int_handler]....\n");
  5870. /*ret=mt6311_config_interface(MT6311_TOP_INT_MON,0x1,0x1,4); */
  5871. }
  5872. static void mt6311_int_handler(void)
  5873. {
  5874. unsigned int ret = 0;
  5875. unsigned char mt6311_int_status_val_0 = 0;
  5876. /*--------------------------------------------------------------------------------*/
  5877. ret = mt6311_read_interface(MT6311_TOP_INT_MON, (&mt6311_int_status_val_0), 0xFF, 0x0);
  5878. PMICLOG1("[MT6311_INT] mt6311_int_status_val_0=0x%x\n", mt6311_int_status_val_0);
  5879. if ((((mt6311_int_status_val_0) & (0x01)) >> 0) == 1)
  5880. mt6311_lbat_min_int_handler();
  5881. if ((((mt6311_int_status_val_0) & (0x02)) >> 1) == 1)
  5882. mt6311_lbat_max_int_handler();
  5883. if ((((mt6311_int_status_val_0) & (0x04)) >> 2) == 1)
  5884. mt6311_thr_l_int_handler();
  5885. if ((((mt6311_int_status_val_0) & (0x08)) >> 3) == 1)
  5886. mt6311_thr_h_int_handler();
  5887. if ((((mt6311_int_status_val_0) & (0x10)) >> 4) == 1)
  5888. mt6311_buck_oc_int_handler();
  5889. }
  5890. static int pmic_thread_kthread_mt6311(void *x)
  5891. {
  5892. unsigned int ret = 0;
  5893. unsigned char mt6311_int_status_val_0 = 0;
  5894. struct sched_param param = {.sched_priority = 98 };
  5895. sched_setscheduler(current, SCHED_FIFO, &param);
  5896. set_current_state(TASK_INTERRUPTIBLE);
  5897. PMICLOG1("[MT6311_INT] enter\n");
  5898. /* Run on a process content */
  5899. while (1) {
  5900. mutex_lock(&pmic_mutex_mt6311);
  5901. mt6311_int_handler();
  5902. cust_pmic_interrupt_en_setting_mt6311();
  5903. ret =
  5904. mt6311_read_interface(MT6311_TOP_INT_MON, (&mt6311_int_status_val_0), 0xFF,
  5905. 0x0);
  5906. PMICLOG1("[MT6311_INT] after ,mt6311_int_status_val_0=0x%x\n",
  5907. mt6311_int_status_val_0);
  5908. mdelay(1);
  5909. mutex_unlock(&pmic_mutex_mt6311);
  5910. wake_unlock(&pmicThread_lock_mt6311);
  5911. set_current_state(TASK_INTERRUPTIBLE);
  5912. /* mt_eint_unmask(g_eint_pmic_mt6311_num); */
  5913. if (g_mt6311_irq != 0)
  5914. enable_irq(g_mt6311_irq);
  5915. schedule();
  5916. }
  5917. return 0;
  5918. }
  5919. irqreturn_t mt6311_eint_handler(int irq, void *desc)
  5920. {
  5921. mt_pmic_eint_irq_mt6311();
  5922. disable_irq_nosync(irq);
  5923. return IRQ_HANDLED;
  5924. }
  5925. void mt6311_eint_setting(void)
  5926. {
  5927. /*ON/OFF interrupt */
  5928. int ret;
  5929. cust_pmic_interrupt_en_setting_mt6311();
  5930. #if 1
  5931. g_mt6311_irq = mt_gpio_to_irq(g_eint_pmic_mt6311_num);
  5932. mt_gpio_set_debounce(g_eint_pmic_mt6311_num, g_cust_eint_mt_pmic_mt6311_debounce_cn);
  5933. ret =
  5934. request_irq(g_mt6311_irq, mt6311_eint_handler, g_cust_eint_mt_pmic_mt6311_type,
  5935. "mt6311-eint", NULL);
  5936. if (ret)
  5937. PMICLOG1("[CUST_EINT] Fail to register an irq=%d , err=%d\n", g_mt6311_irq, ret);
  5938. PMICLOG1("[CUST_EINT] CUST_EINT_MT_PMIC_MT6311_NUM=%d\n", g_eint_pmic_mt6311_num);
  5939. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_DEBOUNCE_CN=%d\n",
  5940. g_cust_eint_mt_pmic_mt6311_debounce_cn);
  5941. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_TYPE=%d\n", g_cust_eint_mt_pmic_mt6311_type);
  5942. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_DEBOUNCE_EN=%d\n",
  5943. g_cust_eint_mt_pmic_mt6311_debounce_en);
  5944. #else
  5945. mt_eint_set_hw_debounce(g_eint_pmic_mt6311_num, g_cust_eint_mt_pmic_mt6311_debounce_cn);
  5946. mt_eint_registration(g_eint_pmic_mt6311_num, g_cust_eint_mt_pmic_mt6311_type,
  5947. mt_pmic_eint_irq_mt6311, 0);
  5948. mt_eint_unmask(g_eint_pmic_mt6311_num);
  5949. PMICLOG1("[CUST_EINT] CUST_EINT_MT_PMIC_MT6311_NUM=%d\n", g_eint_pmic_mt6311_num);
  5950. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_DEBOUNCE_CN=%d\n",
  5951. g_cust_eint_mt_pmic_mt6311_debounce_cn);
  5952. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_TYPE=%d\n", g_cust_eint_mt_pmic_mt6311_type);
  5953. PMICLOG1("[CUST_EINT] CUST_EINT_PMIC_DEBOUNCE_EN=%d\n",
  5954. g_cust_eint_mt_pmic_mt6311_debounce_en);
  5955. #endif
  5956. /*for all interrupt events, turn on interrupt module clock */
  5957. #if 0
  5958. /*mt6311_set_rg_intrp_ck_pdn(0); *//* not used in mt6311 */
  5959. #else
  5960. mt6311_set_rg_int_pol(0); /* high active */
  5961. mt6311_set_rg_int_en(1);
  5962. #endif
  5963. }
  5964. void mt6311_eint_init(void)
  5965. {
  5966. /*---------------------*/
  5967. #if defined(CONFIG_MTK_FPGA)
  5968. PMICLOG1("[MT6311_EINT] disable when CONFIG_MTK_FPGA\n");
  5969. #else
  5970. /*PMIC Interrupt Service */
  5971. pmic_6311_thread_handle =
  5972. kthread_create(pmic_thread_kthread_mt6311, (void *)NULL, "pmic_6311_thread");
  5973. if (IS_ERR(pmic_6311_thread_handle)) {
  5974. pmic_6311_thread_handle = NULL;
  5975. PMICLOG1("[MT6311_EINT] creation fails\n");
  5976. } else {
  5977. wake_up_process(pmic_6311_thread_handle);
  5978. PMICLOG1("[MT6311_EINT] kthread_create Done\n");
  5979. }
  5980. /*mt6311_eint_setting(); */
  5981. PMICLOG1("[MT6311_EINT] TBD\n");
  5982. #endif
  5983. }
  5984. #endif /* EINT */
  5985. /*
  5986. * mt6311 probe
  5987. */
  5988. static int mt6311_driver_probe(struct i2c_client *client, const struct i2c_device_id *id)
  5989. {
  5990. int err = 0;
  5991. unsigned int ret = 0;
  5992. PMICLOG1("[mt6311_driver_probe]\n");
  5993. /*
  5994. new_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
  5995. if (new_client == NULL) {
  5996. err = -ENOMEM;
  5997. goto exit;
  5998. }
  5999. memset(new_client, 0, sizeof(struct i2c_client));
  6000. */
  6001. new_client = client;
  6002. /*--------------------- */
  6003. /* force change GPIO to SDA/SCA mode */
  6004. ret = mt6311_hw_component_detect();
  6005. if (ret < 0) {
  6006. err = -ENOMEM;
  6007. goto exit;
  6008. }
  6009. if (g_mt6311_hw_exist == 1) {
  6010. mt6311_hw_init();
  6011. mt6311_dump_register();
  6012. wake_lock_init(&pmicThread_lock_mt6311, WAKE_LOCK_SUSPEND,
  6013. "pmicThread_lock_mt6311 wakelock");
  6014. mt6311_eint_init();
  6015. }
  6016. g_mt6311_driver_ready = 1;
  6017. PMICLOG1("[mt6311_driver_probe] g_mt6311_hw_exist=%d, g_mt6311_driver_ready=%d\n",
  6018. g_mt6311_hw_exist, g_mt6311_driver_ready);
  6019. /*
  6020. #if defined(CONFIG_ARCH_MT6753)
  6021. PMIC_INIT_SETTING_V1();
  6022. #else
  6023. #endif
  6024. */
  6025. if (g_mt6311_hw_exist == 0) {
  6026. #ifdef BATTERY_OC_PROTECT
  6027. /*re-init battery oc protect point for platform without extbuck */
  6028. battery_oc_protect_reinit();
  6029. #endif
  6030. PMICLOG1("[mt6311_driver_probe] return err\n");
  6031. return err;
  6032. }
  6033. return 0;
  6034. exit:
  6035. PMICLOG1("[mt6311_driver_probe] exit: return err\n");
  6036. /*
  6037. #if defined(CONFIG_ARCH_MT6753)
  6038. PMIC_INIT_SETTING_V1();
  6039. #else
  6040. #endif
  6041. */
  6042. return err;
  6043. }
  6044. /*
  6045. * [platform_driver API]
  6046. */
  6047. #ifdef mt6311_AUTO_DETECT_DISABLE
  6048. /* TBD */
  6049. #else
  6050. /*
  6051. * mt6311_access
  6052. */
  6053. unsigned char g_reg_value_mt6311 = 0;
  6054. static ssize_t show_mt6311_access(struct device *dev, struct device_attribute *attr, char *buf)
  6055. {
  6056. PMICLOG1("[show_mt6311_access] 0x%x\n", g_reg_value_mt6311);
  6057. return sprintf(buf, "%u\n", g_reg_value_mt6311);
  6058. }
  6059. static ssize_t store_mt6311_access(struct device *dev, struct device_attribute *attr,
  6060. const char *buf, size_t size)
  6061. {
  6062. int ret;
  6063. char *pvalue = NULL, *addr, *val;
  6064. unsigned int reg_value = 0;
  6065. unsigned int reg_address = 0;
  6066. pr_err("[store_mt6311_access]\n");
  6067. if (buf != NULL && size != 0) {
  6068. /*PMICLOG1("[store_mt6311_access] buf is %s and size is %d\n",buf,size); */
  6069. /*reg_address = simple_strtoul(buf, &pvalue, 16); */
  6070. pvalue = (char *)buf;
  6071. if (size > 4) {
  6072. addr = strsep(&pvalue, " ");
  6073. ret = kstrtou32(addr, 16, (unsigned int *)&reg_address);
  6074. } else
  6075. ret = kstrtou32(pvalue, 16, (unsigned int *)&reg_address);
  6076. /*ret = kstrtoul(buf, 16, (unsigned long *)&reg_address); */
  6077. if (size > 4) {
  6078. /*reg_value = simple_strtoul((pvalue + 1), NULL, 16); */
  6079. val = strsep(&pvalue, " ");
  6080. ret = kstrtou32(val, 16, (unsigned int *)&reg_value);
  6081. pr_err("[store_mt6311_access] write mt6311 reg 0x%x with value 0x%x !\n",
  6082. reg_address, reg_value);
  6083. ret = mt6311_config_interface(reg_address, reg_value, 0xFF, 0x0);
  6084. } else {
  6085. ret = mt6311_read_interface(reg_address, &g_reg_value_mt6311, 0xFF, 0x0);
  6086. pr_err("[store_mt6311_access] read mt6311 reg 0x%x with value 0x%x !\n",
  6087. reg_address, g_reg_value_mt6311);
  6088. pr_err
  6089. ("[store_mt6311_access] use \"cat mt6311_access\" to get value(decimal)\r\n");
  6090. }
  6091. }
  6092. return size;
  6093. }
  6094. static DEVICE_ATTR(mt6311_access, 0664, show_mt6311_access, store_mt6311_access); /*664 */
  6095. /*
  6096. * mt6311_vosel_pin
  6097. */
  6098. int g_mt6311_vosel_pin = 0;
  6099. static ssize_t show_mt6311_vosel_pin(struct device *dev, struct device_attribute *attr, char *buf)
  6100. {
  6101. pr_err("[show_mt6311_vosel_pin] g_mt6311_vosel_pin=%d\n", g_mt6311_vosel_pin);
  6102. return sprintf(buf, "%u\n", g_mt6311_vosel_pin);
  6103. }
  6104. static ssize_t store_mt6311_vosel_pin(struct device *dev, struct device_attribute *attr,
  6105. const char *buf, size_t size)
  6106. {
  6107. int val = 0, ret;
  6108. char *pvalue = NULL;
  6109. pr_err("[store_mt6311_vosel_pin]\n");
  6110. /*val = simple_strtoul(buf, &pvalue, 16); */
  6111. pvalue = (char *)buf;
  6112. ret = kstrtou32(pvalue, 16, (unsigned int *)&val);
  6113. g_mt6311_vosel_pin = val;
  6114. pr_err("[store_mt6311_vosel_pin] g_mt6311_vosel_pin(%d)\n", g_mt6311_vosel_pin);
  6115. return size;
  6116. }
  6117. static DEVICE_ATTR(mt6311_vosel_pin, 0664, show_mt6311_vosel_pin, store_mt6311_vosel_pin); /*664 */
  6118. /*
  6119. * mt6311_user_space_probe
  6120. */
  6121. static int mt6311_user_space_probe(struct platform_device *dev)
  6122. {
  6123. int ret_device_file = 0;
  6124. PMICLOG1("******** mt6311_user_space_probe!! ********\n");
  6125. ret_device_file = device_create_file(&(dev->dev), &dev_attr_mt6311_access);
  6126. ret_device_file = device_create_file(&(dev->dev), &dev_attr_mt6311_vosel_pin);
  6127. return 0;
  6128. }
  6129. struct platform_device mt6311_user_space_device = {
  6130. .name = "mt6311-user",
  6131. .id = -1,
  6132. };
  6133. static struct platform_driver mt6311_user_space_driver = {
  6134. .probe = mt6311_user_space_probe,
  6135. .driver = {
  6136. .name = "mt6311-user",
  6137. },
  6138. };
  6139. /*static struct i2c_board_info i2c_mt6311 __initdata =
  6140. { I2C_BOARD_INFO("mt6311", (mt6311_SLAVE_ADDR_WRITE >> 1)) };*//* auto add by dts */
  6141. #endif
  6142. static int __init mt6311_init(void)
  6143. {
  6144. int ret = 0;
  6145. #ifdef mt6311_AUTO_DETECT_DISABLE
  6146. PMICLOG1("[mt6311_init] mt6311_AUTO_DETECT_DISABLE\n");
  6147. g_mt6311_hw_exist = 0;
  6148. g_mt6311_driver_ready = 1;
  6149. #else
  6150. PMICLOG1("[mt6311_init] init start. ch=%d!!\n", mt6311_BUSNUM);
  6151. /*i2c_register_board_info(mt6311_BUSNUM, &i2c_mt6311, 1); */
  6152. if (i2c_add_driver(&mt6311_driver) != 0)
  6153. PMICLOG1("[mt6311_init] failed to register mt6311 i2c driver.\n");
  6154. else
  6155. PMICLOG1("[mt6311_init] Success to register mt6311 i2c driver.\n");
  6156. /* mt6311 user space access interface */
  6157. ret = platform_device_register(&mt6311_user_space_device);
  6158. if (ret) {
  6159. PMICLOG1("****[mt6311_init] Unable to device register(%d)\n", ret);
  6160. goto exit;
  6161. }
  6162. ret = platform_driver_register(&mt6311_user_space_driver);
  6163. if (ret) {
  6164. PMICLOG1("****[mt6311_init] Unable to register driver (%d)\n", ret);
  6165. goto exit;
  6166. }
  6167. PMICLOG1("[mt6311_init] g_mt6311_hw_exist=%d, g_mt6311_driver_ready=%d\n",
  6168. g_mt6311_hw_exist, g_mt6311_driver_ready);
  6169. /*
  6170. #if defined(CONFIG_ARCH_MT6753)
  6171. PMIC_INIT_SETTING_V1();
  6172. #else
  6173. #endif
  6174. */
  6175. #endif
  6176. exit:
  6177. #if defined(CONFIG_ARCH_MT6753)
  6178. PMIC_INIT_SETTING_V1();
  6179. #else
  6180. #endif
  6181. return ret;
  6182. }
  6183. static void __exit mt6311_exit(void)
  6184. {
  6185. i2c_del_driver(&mt6311_driver);
  6186. }
  6187. module_init(mt6311_init);
  6188. module_exit(mt6311_exit);
  6189. MODULE_AUTHOR("Argus Lin");
  6190. MODULE_DESCRIPTION("MT PMIC Device Driver");
  6191. MODULE_LICENSE("GPL");