950-0078-BCM2708-Add-core-Device-Tree-support.patch 767 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178
  1. From 47aa556cd8897b84417a2745650affa8e1dd2b62 Mon Sep 17 00:00:00 2001
  2. From: notro <[email protected]>
  3. Date: Wed, 9 Jul 2014 14:46:08 +0200
  4. Subject: [PATCH] BCM2708: Add core Device Tree support
  5. MIME-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. Add the bare minimum needed to boot BCM2708 from a Device Tree.
  9. Signed-off-by: Noralf Tronnes <[email protected]>
  10. BCM2708: DT: change 'axi' nodename to 'soc'
  11. Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
  12. The VC4 bootloader fills in certain properties in the 'axi' subtree,
  13. but since this is part of an upstreaming effort, the name is changed.
  14. Signed-off-by: Noralf Tronnes [email protected]
  15. BCM2708_DT: Correct length of the peripheral space
  16. Use dts-dirs feature for overlays.
  17. The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
  18. Using this fixes the install_dtbs target, which previously did not install the overlays.
  19. BCM270X_DT: configure I2S DMA channels
  20. Signed-off-by: Matthias Reichl <[email protected]>
  21. BCM270X_DT: switch to bcm2835-i2s
  22. I2S soundcard drivers with proper devicetree support (i.e. not linking
  23. to the cpu_dai/platform via name but to cpu/platform via of_node)
  24. will work out of the box without any modifications.
  25. When the kernel is compiled without devicetree support the platform
  26. code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
  27. will link to it via name, as before.
  28. Signed-off-by: Matthias Reichl <[email protected]>
  29. SDIO-overlay: add poll_once-boolean parameter
  30. Add paramter to toggle sdio-device-polling
  31. done every second or once at boot-time.
  32. Signed-off-by: Patrick Boettcher <[email protected]>
  33. BCM270X_DT: Make mmc overlay compatible with current firmware
  34. The original DT overlay logic followed a merge-then-patch procedure,
  35. i.e. parameters are applied to the loaded overlay before the overlay
  36. is merged into the base DTB. This sequence has been changed to
  37. patch-then-merge, in order to support parameterised node names, and
  38. to protect against bad overlays. As a result, overrides (parameters)
  39. must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.
  40. mmc-overlay.dts (that switches back to the original mmc sdcard
  41. driver) is the only overlay violating that rule, and this patch
  42. fixes it.
  43. bcm270x_dt: Use the sdhost MMC controller by default
  44. The "mmc" overlay reverts to using the other controller.
  45. squash: Add cprman to dt
  46. BCM270X_DT: Use clk_core for I2C interfaces
  47. BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
  48. The mainline Device Tree files are quite close to downstream now.
  49. Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files
  50. for our dts files.
  51. Mainline dts files are based on these files:
  52. bcm2835-rpi.dtsi
  53. bcm2835.dtsi bcm2836.dtsi
  54. bcm283x.dtsi
  55. Current downstream are based on these:
  56. bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi
  57. bcm2708_common.dtsi
  58. This patch introduces this dependency:
  59. bcm2708.dtsi bcm2709.dtsi
  60. bcm2708-rpi.dtsi
  61. bcm270x.dtsi
  62. bcm2835.dtsi bcm2836.dtsi
  63. bcm283x.dtsi
  64. And:
  65. bcm2710.dtsi
  66. bcm2708-rpi.dtsi
  67. bcm270x.dtsi
  68. bcm283x.dtsi
  69. bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
  70. bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.
  71. Other changes:
  72. - The led node has moved from /soc/leds to /leds. This is not a problem
  73. since the label is used to reference it.
  74. - The clk_osc reg property changes from 6 to 3.
  75. - The gpu nodes has their interrupt property set in the base file.
  76. - the clocks label does not point to the /clocks node anymore, but
  77. points to the cprman node. This is not a problem since the overlays
  78. that use the clock node refer to it directly: target-path = "/clocks";
  79. - some nodes now have 2 labels since mainline and downstream differs in
  80. this respect: cprman/clocks, spi0/spi, gpu/vc4.
  81. - some nodes doesn't have an explicit status = "okay" since they're not
  82. disabled in the base file: watchdog and random.
  83. - gpiomem doesn't need an explicit status = "okay".
  84. - bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi,
  85. it's now set directly in that file.
  86. - bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer.
  87. - Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes.
  88. Signed-off-by: Noralf Trønnes <[email protected]>
  89. BCM270X_DT: Use raspberrypi-power to turn on USB power
  90. Use the raspberrypi-power driver to turn on USB power.
  91. Signed-off-by: Noralf Trønnes <[email protected]>
  92. BCM270X_DT: Add a .dtbo target, use for overlays
  93. Change the filenames and extensions to keep the pre-DDT style of
  94. overlay (<name>-overlay.dtb) distinct from new ones that use a
  95. different style of local fixups (<name>.dtbo), and to match other
  96. platforms.
  97. The RPi firmware uses the DDTK trailer atom to choose which type of
  98. overlay to use for each kernel.
  99. Signed-off-by: Phil Elwell <[email protected]>
  100. BCM270X_DT: Don't generate "linux,phandle" props
  101. The EPAPR standard says to use "phandle" properties to store phandles,
  102. rather than the deprecated "linux,phandle" version. By default, dtc
  103. generates both, but adding "-H epapr" causes it to only generate
  104. "phandle"s, saving some space and clutter.
  105. Signed-off-by: Phil Elwell <[email protected]>
  106. BCM270X_DT: Add overlay for enc28j60 on SPI2
  107. Works on SPI2 for compute module
  108. BCM270X_DT: Add midi-uart0 overlay
  109. MIDI requires 31.25kbaud, a baudrate unsupported by Linux. The
  110. midi-uart0 overlay configures uart0 (ttyAMA0) to use a fake clock
  111. so that requesting 38.4kbaud actually gets 31.25kbaud.
  112. Signed-off-by: Phil Elwell <[email protected]>
  113. BCM270X_DT: Add i2c-sensor overlay
  114. The i2c-sensor overlay is a container for various pressure and
  115. temperature sensors, currently bmp085 and bmp280. The standalone
  116. bmp085_i2c-sensor overlay is now deprecated.
  117. Signed-off-by: Phil Elwell <[email protected]>
  118. BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (#1752)
  119. We now create overlays as .dtbo files.
  120. build: support for .dtbo files for dtb overlays
  121. Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
  122. Patch the kernel, which has faulty rules to generate .dtbo the way yocto does
  123. Signed-off-by: Herve Jourdain <[email protected]>
  124. Signed-off-by: Khem Raj <[email protected]>
  125. BCM270X: Drop position requirement for CMA in VC4 overlay.
  126. No longer necessary since 2aefcd576195a739a7a256099571c9c4a401005f,
  127. and will probably let peeople that want to choose a larger CMA
  128. allocation (particularly on pi0/1).
  129. Signed-off-by: Eric Anholt <[email protected]>
  130. BCM270X_DT: RPi Device Tree tidy
  131. Use the upstream sdhost node, add thermal-zones, and factor out some
  132. common elements.
  133. Signed-off-by: Phil Elwell <[email protected]>
  134. kbuild: Silence unhelpful DTC warnings
  135. Signed-off-by: Phil Elwell <[email protected]>
  136. BCM270X_DT: DT build rules no longer arch-specific
  137. Signed-off-by: Phil Elwell <[email protected]>
  138. ---
  139. arch/arm/boot/dts/Makefile | 17 +
  140. arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 129 +
  141. arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts | 132 +
  142. arch/arm/boot/dts/bcm2708-rpi-b.dts | 119 +
  143. arch/arm/boot/dts/bcm2708-rpi-bt.dtsi | 26 +
  144. arch/arm/boot/dts/bcm2708-rpi-cm.dts | 112 +
  145. arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 18 +
  146. arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 169 +
  147. arch/arm/boot/dts/bcm2708-rpi-zero.dts | 123 +
  148. arch/arm/boot/dts/bcm2708-rpi.dtsi | 36 +
  149. arch/arm/boot/dts/bcm2708.dtsi | 12 +
  150. arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 129 +
  151. arch/arm/boot/dts/bcm2709-rpi.dtsi | 5 +
  152. arch/arm/boot/dts/bcm2709.dtsi | 22 +
  153. arch/arm/boot/dts/bcm270x-rpi.dtsi | 154 +
  154. arch/arm/boot/dts/bcm270x.dtsi | 217 +
  155. arch/arm/boot/dts/bcm2710-rpi-2-b.dts | 129 +
  156. arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 201 +
  157. arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 203 +
  158. arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 148 +
  159. arch/arm/boot/dts/bcm2710.dtsi | 25 +
  160. arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 310 +-
  161. arch/arm/boot/dts/bcm2711-rpi-400.dts | 624 ++-
  162. arch/arm/boot/dts/bcm2711-rpi-cm4.dts | 660 +++
  163. arch/arm/boot/dts/bcm2711-rpi-ds.dtsi | 205 +
  164. arch/arm/boot/dts/bcm2711.dtsi | 46 +-
  165. arch/arm/boot/dts/bcm271x-rpi-bt.dtsi | 26 +
  166. arch/arm/boot/dts/bcm2835-common.dtsi | 4 +-
  167. arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 5 +
  168. arch/arm/boot/dts/bcm2835-rpi-a.dts | 7 +
  169. arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 5 +
  170. arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 7 +
  171. arch/arm/boot/dts/bcm2835-rpi-b.dts | 7 +
  172. arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts | 5 +
  173. arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 5 +
  174. arch/arm/boot/dts/bcm2835-rpi-zero.dts | 5 +
  175. arch/arm/boot/dts/bcm2835-rpi.dtsi | 19 +-
  176. arch/arm/boot/dts/bcm2835.dtsi | 2 +-
  177. arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 5 +
  178. arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts | 5 +
  179. arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 5 +
  180. arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 5 +
  181. arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 5 +
  182. .../boot/dts/bcm283x-rpi-cam1-regulator.dtsi | 10 +
  183. arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi | 4 +
  184. arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi | 4 +
  185. arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi | 4 +
  186. .../boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi | 4 +
  187. .../boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi | 4 +
  188. arch/arm/boot/dts/bcm283x.dtsi | 26 +-
  189. arch/arm/boot/dts/overlays/Makefile | 248 ++
  190. arch/arm/boot/dts/overlays/README | 3530 +++++++++++++++++
  191. .../arm/boot/dts/overlays/act-led-overlay.dts | 27 +
  192. .../boot/dts/overlays/adafruit18-overlay.dts | 55 +
  193. .../dts/overlays/adau1977-adc-overlay.dts | 40 +
  194. .../dts/overlays/adau7002-simple-overlay.dts | 52 +
  195. .../arm/boot/dts/overlays/ads1015-overlay.dts | 98 +
  196. .../arm/boot/dts/overlays/ads1115-overlay.dts | 103 +
  197. .../arm/boot/dts/overlays/ads7846-overlay.dts | 89 +
  198. .../boot/dts/overlays/adv7282m-overlay.dts | 65 +
  199. .../boot/dts/overlays/adv728x-m-overlay.dts | 37 +
  200. .../overlays/akkordion-iqdacplus-overlay.dts | 49 +
  201. .../allo-boss-dac-pcm512x-audio-overlay.dts | 59 +
  202. .../overlays/allo-boss2-dac-audio-overlay.dts | 57 +
  203. .../dts/overlays/allo-digione-overlay.dts | 44 +
  204. .../allo-katana-dac-audio-overlay.dts | 57 +
  205. .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 +
  206. ...o-piano-dac-plus-pcm512x-audio-overlay.dts | 57 +
  207. arch/arm/boot/dts/overlays/anyspi-overlay.dts | 205 +
  208. .../boot/dts/overlays/apds9960-overlay.dts | 57 +
  209. .../boot/dts/overlays/applepi-dac-overlay.dts | 57 +
  210. .../boot/dts/overlays/at86rf233-overlay.dts | 57 +
  211. .../overlays/audioinjector-addons-overlay.dts | 60 +
  212. ...dioinjector-isolated-soundcard-overlay.dts | 55 +
  213. .../overlays/audioinjector-ultra-overlay.dts | 71 +
  214. .../audioinjector-wm8731-audio-overlay.dts | 39 +
  215. .../dts/overlays/audiosense-pi-overlay.dts | 82 +
  216. .../boot/dts/overlays/audremap-overlay.dts | 42 +
  217. .../boot/dts/overlays/balena-fin-overlay.dts | 125 +
  218. .../arm/boot/dts/overlays/cap1106-overlay.dts | 52 +
  219. .../boot/dts/overlays/chipdip-dac-overlay.dts | 46 +
  220. arch/arm/boot/dts/overlays/cma-overlay.dts | 36 +
  221. arch/arm/boot/dts/overlays/dht11-overlay.dts | 41 +
  222. .../dts/overlays/dionaudio-loco-overlay.dts | 39 +
  223. .../overlays/dionaudio-loco-v2-overlay.dts | 49 +
  224. .../boot/dts/overlays/disable-bt-overlay.dts | 64 +
  225. .../dts/overlays/disable-wifi-overlay.dts | 20 +
  226. arch/arm/boot/dts/overlays/dpi18-overlay.dts | 39 +
  227. .../boot/dts/overlays/dpi18cpadhi-overlay.dts | 26 +
  228. arch/arm/boot/dts/overlays/dpi24-overlay.dts | 39 +
  229. arch/arm/boot/dts/overlays/draws-overlay.dts | 208 +
  230. .../arm/boot/dts/overlays/dwc-otg-overlay.dts | 14 +
  231. arch/arm/boot/dts/overlays/dwc2-overlay.dts | 26 +
  232. .../boot/dts/overlays/edt-ft5406-overlay.dts | 10 +
  233. arch/arm/boot/dts/overlays/edt-ft5406.dtsi | 55 +
  234. .../boot/dts/overlays/enc28j60-overlay.dts | 53 +
  235. .../dts/overlays/enc28j60-spi2-overlay.dts | 47 +
  236. .../arm/boot/dts/overlays/exc3000-overlay.dts | 48 +
  237. .../boot/dts/overlays/fe-pi-audio-overlay.dts | 70 +
  238. .../boot/dts/overlays/fsm-demo-overlay.dts | 104 +
  239. .../boot/dts/overlays/ghost-amp-overlay.dts | 145 +
  240. arch/arm/boot/dts/overlays/goodix-overlay.dts | 46 +
  241. .../googlevoicehat-soundcard-overlay.dts | 49 +
  242. .../boot/dts/overlays/gpio-fan-overlay.dts | 79 +
  243. .../arm/boot/dts/overlays/gpio-ir-overlay.dts | 49 +
  244. .../boot/dts/overlays/gpio-ir-tx-overlay.dts | 36 +
  245. .../boot/dts/overlays/gpio-key-overlay.dts | 48 +
  246. .../boot/dts/overlays/gpio-led-overlay.dts | 97 +
  247. .../overlays/gpio-no-bank0-irq-overlay.dts | 14 +
  248. .../boot/dts/overlays/gpio-no-irq-overlay.dts | 14 +
  249. .../dts/overlays/gpio-poweroff-overlay.dts | 37 +
  250. .../dts/overlays/gpio-shutdown-overlay.dts | 86 +
  251. .../boot/dts/overlays/hd44780-lcd-overlay.dts | 46 +
  252. .../hdmi-backlight-hwhack-gpio-overlay.dts | 47 +
  253. .../dts/overlays/hifiberry-amp-overlay.dts | 39 +
  254. .../dts/overlays/hifiberry-amp100-overlay.dts | 64 +
  255. .../dts/overlays/hifiberry-dac-overlay.dts | 34 +
  256. .../overlays/hifiberry-dacplus-overlay.dts | 65 +
  257. .../overlays/hifiberry-dacplusadc-overlay.dts | 72 +
  258. .../hifiberry-dacplusadcpro-overlay.dts | 65 +
  259. .../overlays/hifiberry-dacplusdsp-overlay.dts | 34 +
  260. .../overlays/hifiberry-dacplushd-overlay.dts | 106 +
  261. .../dts/overlays/hifiberry-digi-overlay.dts | 41 +
  262. .../overlays/hifiberry-digi-pro-overlay.dts | 43 +
  263. .../boot/dts/overlays/highperi-overlay.dts | 63 +
  264. arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 +
  265. .../boot/dts/overlays/hy28b-2017-overlay.dts | 152 +
  266. arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 +
  267. .../boot/dts/overlays/i-sabre-q2m-overlay.dts | 39 +
  268. .../boot/dts/overlays/i2c-bcm2708-overlay.dts | 13 +
  269. .../boot/dts/overlays/i2c-gpio-overlay.dts | 47 +
  270. .../arm/boot/dts/overlays/i2c-mux-overlay.dts | 139 +
  271. .../dts/overlays/i2c-pwm-pca9685a-overlay.dts | 26 +
  272. .../arm/boot/dts/overlays/i2c-rtc-common.dtsi | 323 ++
  273. .../dts/overlays/i2c-rtc-gpio-overlay.dts | 31 +
  274. .../arm/boot/dts/overlays/i2c-rtc-overlay.dts | 34 +
  275. .../boot/dts/overlays/i2c-sensor-overlay.dts | 320 ++
  276. arch/arm/boot/dts/overlays/i2c0-overlay.dts | 83 +
  277. arch/arm/boot/dts/overlays/i2c1-overlay.dts | 44 +
  278. arch/arm/boot/dts/overlays/i2c3-overlay.dts | 36 +
  279. arch/arm/boot/dts/overlays/i2c4-overlay.dts | 36 +
  280. arch/arm/boot/dts/overlays/i2c5-overlay.dts | 36 +
  281. arch/arm/boot/dts/overlays/i2c6-overlay.dts | 36 +
  282. .../dts/overlays/i2s-gpio28-31-overlay.dts | 18 +
  283. .../boot/dts/overlays/ilitek251x-overlay.dts | 45 +
  284. arch/arm/boot/dts/overlays/imx219-overlay.dts | 115 +
  285. arch/arm/boot/dts/overlays/imx290-overlay.dts | 32 +
  286. .../boot/dts/overlays/imx290_327-overlay.dtsi | 144 +
  287. arch/arm/boot/dts/overlays/imx378-overlay.dts | 10 +
  288. arch/arm/boot/dts/overlays/imx477-overlay.dts | 10 +
  289. .../boot/dts/overlays/imx477_378-overlay.dtsi | 110 +
  290. .../dts/overlays/iqaudio-codec-overlay.dts | 42 +
  291. .../boot/dts/overlays/iqaudio-dac-overlay.dts | 46 +
  292. .../dts/overlays/iqaudio-dacplus-overlay.dts | 49 +
  293. .../iqaudio-digi-wm8804-audio-overlay.dts | 47 +
  294. .../arm/boot/dts/overlays/irs1125-overlay.dts | 85 +
  295. .../dts/overlays/jedec-spi-nor-overlay.dts | 309 ++
  296. .../dts/overlays/justboom-both-overlay.dts | 65 +
  297. .../dts/overlays/justboom-dac-overlay.dts | 46 +
  298. .../dts/overlays/justboom-digi-overlay.dts | 41 +
  299. .../arm/boot/dts/overlays/ltc294x-overlay.dts | 86 +
  300. .../boot/dts/overlays/max98357a-overlay.dts | 84 +
  301. .../boot/dts/overlays/maxtherm-overlay.dts | 186 +
  302. .../boot/dts/overlays/mbed-dac-overlay.dts | 64 +
  303. .../boot/dts/overlays/mcp23017-overlay.dts | 69 +
  304. .../boot/dts/overlays/mcp23s17-overlay.dts | 732 ++++
  305. .../dts/overlays/mcp2515-can0-overlay.dts | 73 +
  306. .../dts/overlays/mcp2515-can1-overlay.dts | 73 +
  307. .../boot/dts/overlays/mcp251xfd-overlay.dts | 226 ++
  308. .../arm/boot/dts/overlays/mcp3008-overlay.dts | 205 +
  309. .../arm/boot/dts/overlays/mcp3202-overlay.dts | 205 +
  310. .../arm/boot/dts/overlays/mcp342x-overlay.dts | 164 +
  311. .../dts/overlays/media-center-overlay.dts | 134 +
  312. .../boot/dts/overlays/merus-amp-overlay.dts | 60 +
  313. .../boot/dts/overlays/midi-uart0-overlay.dts | 36 +
  314. .../boot/dts/overlays/midi-uart1-overlay.dts | 43 +
  315. .../boot/dts/overlays/midi-uart2-overlay.dts | 37 +
  316. .../boot/dts/overlays/midi-uart3-overlay.dts | 38 +
  317. .../boot/dts/overlays/midi-uart4-overlay.dts | 38 +
  318. .../boot/dts/overlays/midi-uart5-overlay.dts | 38 +
  319. .../boot/dts/overlays/minipitft13-overlay.dts | 70 +
  320. .../boot/dts/overlays/miniuart-bt-overlay.dts | 93 +
  321. arch/arm/boot/dts/overlays/mmc-overlay.dts | 46 +
  322. .../arm/boot/dts/overlays/mpu6050-overlay.dts | 29 +
  323. .../arm/boot/dts/overlays/mz61581-overlay.dts | 117 +
  324. arch/arm/boot/dts/overlays/ov5647-overlay.dts | 94 +
  325. arch/arm/boot/dts/overlays/ov7251-overlay.dts | 113 +
  326. arch/arm/boot/dts/overlays/ov9281-overlay.dts | 113 +
  327. arch/arm/boot/dts/overlays/overlay_map.dts | 158 +
  328. .../arm/boot/dts/overlays/papirus-overlay.dts | 89 +
  329. .../arm/boot/dts/overlays/pca953x-overlay.dts | 240 ++
  330. .../dts/overlays/pcie-32bit-dma-overlay.dts | 18 +
  331. arch/arm/boot/dts/overlays/pibell-overlay.dts | 81 +
  332. .../dts/overlays/pifacedigital-overlay.dts | 144 +
  333. .../arm/boot/dts/overlays/pifi-40-overlay.dts | 50 +
  334. .../boot/dts/overlays/pifi-dac-hd-overlay.dts | 49 +
  335. .../dts/overlays/pifi-dac-zero-overlay.dts | 49 +
  336. .../dts/overlays/pifi-mini-210-overlay.dts | 42 +
  337. arch/arm/boot/dts/overlays/piglow-overlay.dts | 97 +
  338. .../boot/dts/overlays/piscreen-overlay.dts | 102 +
  339. .../boot/dts/overlays/piscreen2r-overlay.dts | 106 +
  340. .../arm/boot/dts/overlays/pisound-overlay.dts | 120 +
  341. .../arm/boot/dts/overlays/pitft22-overlay.dts | 69 +
  342. .../overlays/pitft28-capacitive-overlay.dts | 91 +
  343. .../overlays/pitft28-resistive-overlay.dts | 119 +
  344. .../overlays/pitft35-resistive-overlay.dts | 119 +
  345. .../boot/dts/overlays/pps-gpio-overlay.dts | 38 +
  346. .../boot/dts/overlays/pwm-2chan-overlay.dts | 49 +
  347. .../boot/dts/overlays/pwm-ir-tx-overlay.dts | 40 +
  348. arch/arm/boot/dts/overlays/pwm-overlay.dts | 45 +
  349. .../arm/boot/dts/overlays/qca7000-overlay.dts | 55 +
  350. .../dts/overlays/qca7000-uart0-overlay.dts | 46 +
  351. .../dts/overlays/rotary-encoder-overlay.dts | 59 +
  352. .../dts/overlays/rpi-backlight-overlay.dts | 21 +
  353. .../overlays/rpi-cirrus-wm5102-overlay.dts | 172 +
  354. .../arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 +
  355. .../boot/dts/overlays/rpi-display-overlay.dts | 91 +
  356. .../boot/dts/overlays/rpi-ft5406-overlay.dts | 25 +
  357. .../arm/boot/dts/overlays/rpi-poe-overlay.dts | 102 +
  358. .../dts/overlays/rpi-poe-plus-overlay.dts | 23 +
  359. .../boot/dts/overlays/rpi-proto-overlay.dts | 39 +
  360. .../boot/dts/overlays/rpi-sense-overlay.dts | 47 +
  361. arch/arm/boot/dts/overlays/rpi-tv-overlay.dts | 34 +
  362. .../boot/dts/overlays/rpivid-v4l2-overlay.dts | 50 +
  363. .../rra-digidac1-wm8741-audio-overlay.dts | 49 +
  364. .../boot/dts/overlays/sainsmart18-overlay.dts | 52 +
  365. .../dts/overlays/sc16is750-i2c-overlay.dts | 43 +
  366. .../dts/overlays/sc16is752-i2c-overlay.dts | 43 +
  367. .../dts/overlays/sc16is752-spi0-overlay.dts | 49 +
  368. .../dts/overlays/sc16is752-spi1-overlay.dts | 67 +
  369. arch/arm/boot/dts/overlays/sdhost-overlay.dts | 38 +
  370. arch/arm/boot/dts/overlays/sdio-overlay.dts | 77 +
  371. .../overlays/seeed-can-fd-hat-v1-overlay.dts | 138 +
  372. .../overlays/seeed-can-fd-hat-v2-overlay.dts | 117 +
  373. .../boot/dts/overlays/sh1106-spi-overlay.dts | 84 +
  374. .../boot/dts/overlays/si446x-spi0-overlay.dts | 53 +
  375. .../arm/boot/dts/overlays/smi-dev-overlay.dts | 20 +
  376. .../boot/dts/overlays/smi-nand-overlay.dts | 66 +
  377. arch/arm/boot/dts/overlays/smi-overlay.dts | 37 +
  378. .../dts/overlays/spi-gpio35-39-overlay.dts | 31 +
  379. .../dts/overlays/spi-gpio40-45-overlay.dts | 36 +
  380. .../arm/boot/dts/overlays/spi-rtc-overlay.dts | 75 +
  381. .../boot/dts/overlays/spi0-1cs-overlay.dts | 42 +
  382. .../boot/dts/overlays/spi0-2cs-overlay.dts | 37 +
  383. .../boot/dts/overlays/spi1-1cs-overlay.dts | 57 +
  384. .../boot/dts/overlays/spi1-2cs-overlay.dts | 69 +
  385. .../boot/dts/overlays/spi1-3cs-overlay.dts | 81 +
  386. .../boot/dts/overlays/spi2-1cs-overlay.dts | 57 +
  387. .../boot/dts/overlays/spi2-2cs-overlay.dts | 69 +
  388. .../boot/dts/overlays/spi2-3cs-overlay.dts | 81 +
  389. .../boot/dts/overlays/spi3-1cs-overlay.dts | 44 +
  390. .../boot/dts/overlays/spi3-2cs-overlay.dts | 56 +
  391. .../boot/dts/overlays/spi4-1cs-overlay.dts | 44 +
  392. .../boot/dts/overlays/spi4-2cs-overlay.dts | 56 +
  393. .../boot/dts/overlays/spi5-1cs-overlay.dts | 44 +
  394. .../boot/dts/overlays/spi5-2cs-overlay.dts | 56 +
  395. .../boot/dts/overlays/spi6-1cs-overlay.dts | 44 +
  396. .../boot/dts/overlays/spi6-2cs-overlay.dts | 56 +
  397. .../arm/boot/dts/overlays/ssd1306-overlay.dts | 36 +
  398. .../boot/dts/overlays/ssd1306-spi-overlay.dts | 84 +
  399. .../boot/dts/overlays/ssd1331-spi-overlay.dts | 83 +
  400. .../boot/dts/overlays/ssd1351-spi-overlay.dts | 83 +
  401. .../dts/overlays/superaudioboard-overlay.dts | 73 +
  402. arch/arm/boot/dts/overlays/sx150x-overlay.dts | 1706 ++++++++
  403. .../dts/overlays/tc358743-audio-overlay.dts | 52 +
  404. .../boot/dts/overlays/tc358743-overlay.dts | 107 +
  405. .../boot/dts/overlays/tinylcd35-overlay.dts | 222 ++
  406. .../boot/dts/overlays/tpm-slb9670-overlay.dts | 44 +
  407. arch/arm/boot/dts/overlays/uart0-overlay.dts | 32 +
  408. arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 +
  409. arch/arm/boot/dts/overlays/uart2-overlay.dts | 27 +
  410. arch/arm/boot/dts/overlays/uart3-overlay.dts | 27 +
  411. arch/arm/boot/dts/overlays/uart4-overlay.dts | 27 +
  412. arch/arm/boot/dts/overlays/uart5-overlay.dts | 27 +
  413. arch/arm/boot/dts/overlays/udrc-overlay.dts | 128 +
  414. .../dts/overlays/ugreen-dabboard-overlay.dts | 49 +
  415. .../boot/dts/overlays/upstream-overlay.dts | 101 +
  416. .../dts/overlays/upstream-pi4-overlay.dts | 137 +
  417. .../dts/overlays/vc4-fkms-v3d-overlay.dts | 40 +
  418. .../dts/overlays/vc4-fkms-v3d-pi4-overlay.dts | 44 +
  419. .../vc4-kms-dpi-at056tn53v1-overlay.dts | 44 +
  420. .../overlays/vc4-kms-dsi-7inch-overlay.dts | 118 +
  421. .../vc4-kms-dsi-lt070me05000-overlay.dts | 69 +
  422. .../vc4-kms-dsi-lt070me05000-v2-overlay.dts | 64 +
  423. .../overlays/vc4-kms-kippah-7inch-overlay.dts | 43 +
  424. .../boot/dts/overlays/vc4-kms-v3d-overlay.dts | 123 +
  425. .../dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 197 +
  426. .../dts/overlays/vc4-kms-vga666-overlay.dts | 100 +
  427. arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 +
  428. .../arm/boot/dts/overlays/w1-gpio-overlay.dts | 40 +
  429. .../dts/overlays/w1-gpio-pullup-overlay.dts | 42 +
  430. arch/arm/boot/dts/overlays/w5500-overlay.dts | 63 +
  431. .../arm/boot/dts/overlays/wittypi-overlay.dts | 44 +
  432. .../dts/overlays/wm8960-soundcard-overlay.dts | 82 +
  433. arch/arm64/boot/dts/Makefile | 2 +
  434. arch/arm64/boot/dts/broadcom/Makefile | 12 +
  435. .../boot/dts/broadcom/bcm2710-rpi-2-b.dts | 1 +
  436. .../dts/broadcom/bcm2710-rpi-3-b-plus.dts | 1 +
  437. .../boot/dts/broadcom/bcm2710-rpi-3-b.dts | 1 +
  438. .../boot/dts/broadcom/bcm2710-rpi-cm3.dts | 1 +
  439. .../boot/dts/broadcom/bcm2711-rpi-4-b.dts | 3 +-
  440. .../boot/dts/broadcom/bcm2711-rpi-400.dts | 3 +-
  441. .../boot/dts/broadcom/bcm2711-rpi-cm4.dts | 1 +
  442. .../dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi | 1 +
  443. .../dts/broadcom/bcm283x-rpi-lan7515.dtsi | 1 +
  444. arch/arm64/boot/dts/overlays | 1 +
  445. scripts/Makefile.dtbinst | 3 +-
  446. scripts/Makefile.lib | 13 +
  447. 308 files changed, 27244 insertions(+), 48 deletions(-)
  448. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
  449. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
  450. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
  451. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
  452. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts
  453. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
  454. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
  455. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-zero.dts
  456. create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi
  457. create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
  458. create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
  459. create mode 100644 arch/arm/boot/dts/bcm2709-rpi.dtsi
  460. create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
  461. create mode 100644 arch/arm/boot/dts/bcm270x-rpi.dtsi
  462. create mode 100644 arch/arm/boot/dts/bcm270x.dtsi
  463. create mode 100644 arch/arm/boot/dts/bcm2710-rpi-2-b.dts
  464. create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
  465. create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts
  466. create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts
  467. create mode 100644 arch/arm/boot/dts/bcm2710.dtsi
  468. create mode 100644 arch/arm/boot/dts/bcm2711-rpi-cm4.dts
  469. create mode 100644 arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
  470. create mode 100644 arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
  471. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi
  472. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
  473. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
  474. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
  475. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
  476. create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
  477. create mode 100644 arch/arm/boot/dts/overlays/Makefile
  478. create mode 100644 arch/arm/boot/dts/overlays/README
  479. create mode 100644 arch/arm/boot/dts/overlays/act-led-overlay.dts
  480. create mode 100644 arch/arm/boot/dts/overlays/adafruit18-overlay.dts
  481. create mode 100644 arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
  482. create mode 100644 arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
  483. create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts
  484. create mode 100644 arch/arm/boot/dts/overlays/ads1115-overlay.dts
  485. create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
  486. create mode 100644 arch/arm/boot/dts/overlays/adv7282m-overlay.dts
  487. create mode 100644 arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
  488. create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
  489. create mode 100644 arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
  490. create mode 100644 arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
  491. create mode 100644 arch/arm/boot/dts/overlays/allo-digione-overlay.dts
  492. create mode 100644 arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
  493. create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
  494. create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
  495. create mode 100755 arch/arm/boot/dts/overlays/anyspi-overlay.dts
  496. create mode 100644 arch/arm/boot/dts/overlays/apds9960-overlay.dts
  497. create mode 100644 arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
  498. create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts
  499. create mode 100644 arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
  500. create mode 100644 arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
  501. create mode 100644 arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
  502. create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
  503. create mode 100644 arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
  504. create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts
  505. create mode 100644 arch/arm/boot/dts/overlays/balena-fin-overlay.dts
  506. create mode 100644 arch/arm/boot/dts/overlays/cap1106-overlay.dts
  507. create mode 100644 arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
  508. create mode 100644 arch/arm/boot/dts/overlays/cma-overlay.dts
  509. create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
  510. create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
  511. create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
  512. create mode 100644 arch/arm/boot/dts/overlays/disable-bt-overlay.dts
  513. create mode 100644 arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
  514. create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts
  515. create mode 100644 arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
  516. create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts
  517. create mode 100644 arch/arm/boot/dts/overlays/draws-overlay.dts
  518. create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
  519. create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts
  520. create mode 100644 arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
  521. create mode 100644 arch/arm/boot/dts/overlays/edt-ft5406.dtsi
  522. create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
  523. create mode 100644 arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
  524. create mode 100644 arch/arm/boot/dts/overlays/exc3000-overlay.dts
  525. create mode 100644 arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
  526. create mode 100644 arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
  527. create mode 100644 arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
  528. create mode 100644 arch/arm/boot/dts/overlays/goodix-overlay.dts
  529. create mode 100644 arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
  530. create mode 100644 arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
  531. create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
  532. create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
  533. create mode 100644 arch/arm/boot/dts/overlays/gpio-key-overlay.dts
  534. create mode 100755 arch/arm/boot/dts/overlays/gpio-led-overlay.dts
  535. create mode 100755 arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
  536. create mode 100644 arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
  537. create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
  538. create mode 100644 arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
  539. create mode 100644 arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
  540. create mode 100644 arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
  541. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
  542. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts
  543. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
  544. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
  545. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
  546. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
  547. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
  548. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
  549. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
  550. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
  551. create mode 100644 arch/arm/boot/dts/overlays/highperi-overlay.dts
  552. create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
  553. create mode 100644 arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
  554. create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
  555. create mode 100644 arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
  556. create mode 100644 arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
  557. create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
  558. create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
  559. create mode 100644 arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
  560. create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi
  561. create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
  562. create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
  563. create mode 100755 arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
  564. create mode 100644 arch/arm/boot/dts/overlays/i2c0-overlay.dts
  565. create mode 100644 arch/arm/boot/dts/overlays/i2c1-overlay.dts
  566. create mode 100644 arch/arm/boot/dts/overlays/i2c3-overlay.dts
  567. create mode 100644 arch/arm/boot/dts/overlays/i2c4-overlay.dts
  568. create mode 100644 arch/arm/boot/dts/overlays/i2c5-overlay.dts
  569. create mode 100644 arch/arm/boot/dts/overlays/i2c6-overlay.dts
  570. create mode 100644 arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
  571. create mode 100644 arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
  572. create mode 100644 arch/arm/boot/dts/overlays/imx219-overlay.dts
  573. create mode 100644 arch/arm/boot/dts/overlays/imx290-overlay.dts
  574. create mode 100644 arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
  575. create mode 100644 arch/arm/boot/dts/overlays/imx378-overlay.dts
  576. create mode 100644 arch/arm/boot/dts/overlays/imx477-overlay.dts
  577. create mode 100644 arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi
  578. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
  579. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
  580. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
  581. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
  582. create mode 100644 arch/arm/boot/dts/overlays/irs1125-overlay.dts
  583. create mode 100644 arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
  584. create mode 100644 arch/arm/boot/dts/overlays/justboom-both-overlay.dts
  585. create mode 100644 arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
  586. create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
  587. create mode 100644 arch/arm/boot/dts/overlays/ltc294x-overlay.dts
  588. create mode 100644 arch/arm/boot/dts/overlays/max98357a-overlay.dts
  589. create mode 100644 arch/arm/boot/dts/overlays/maxtherm-overlay.dts
  590. create mode 100644 arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
  591. create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts
  592. create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
  593. create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
  594. create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
  595. create mode 100644 arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts
  596. create mode 100755 arch/arm/boot/dts/overlays/mcp3008-overlay.dts
  597. create mode 100755 arch/arm/boot/dts/overlays/mcp3202-overlay.dts
  598. create mode 100644 arch/arm/boot/dts/overlays/mcp342x-overlay.dts
  599. create mode 100644 arch/arm/boot/dts/overlays/media-center-overlay.dts
  600. create mode 100644 arch/arm/boot/dts/overlays/merus-amp-overlay.dts
  601. create mode 100644 arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
  602. create mode 100644 arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
  603. create mode 100644 arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
  604. create mode 100644 arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
  605. create mode 100644 arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
  606. create mode 100644 arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
  607. create mode 100644 arch/arm/boot/dts/overlays/minipitft13-overlay.dts
  608. create mode 100644 arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
  609. create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
  610. create mode 100644 arch/arm/boot/dts/overlays/mpu6050-overlay.dts
  611. create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
  612. create mode 100644 arch/arm/boot/dts/overlays/ov5647-overlay.dts
  613. create mode 100644 arch/arm/boot/dts/overlays/ov7251-overlay.dts
  614. create mode 100644 arch/arm/boot/dts/overlays/ov9281-overlay.dts
  615. create mode 100644 arch/arm/boot/dts/overlays/overlay_map.dts
  616. create mode 100644 arch/arm/boot/dts/overlays/papirus-overlay.dts
  617. create mode 100644 arch/arm/boot/dts/overlays/pca953x-overlay.dts
  618. create mode 100644 arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts
  619. create mode 100644 arch/arm/boot/dts/overlays/pibell-overlay.dts
  620. create mode 100644 arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
  621. create mode 100644 arch/arm/boot/dts/overlays/pifi-40-overlay.dts
  622. create mode 100644 arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts
  623. create mode 100644 arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts
  624. create mode 100644 arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts
  625. create mode 100644 arch/arm/boot/dts/overlays/piglow-overlay.dts
  626. create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
  627. create mode 100644 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
  628. create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts
  629. create mode 100644 arch/arm/boot/dts/overlays/pitft22-overlay.dts
  630. create mode 100644 arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
  631. create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
  632. create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
  633. create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
  634. create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
  635. create mode 100644 arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
  636. create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts
  637. create mode 100644 arch/arm/boot/dts/overlays/qca7000-overlay.dts
  638. create mode 100644 arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts
  639. create mode 100644 arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
  640. create mode 100644 arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
  641. create mode 100644 arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
  642. create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
  643. create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
  644. create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
  645. create mode 100644 arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
  646. create mode 100644 arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts
  647. create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
  648. create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
  649. create mode 100644 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
  650. create mode 100644 arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
  651. create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
  652. create mode 100644 arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
  653. create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
  654. create mode 100644 arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
  655. create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
  656. create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
  657. create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
  658. create mode 100644 arch/arm/boot/dts/overlays/sdio-overlay.dts
  659. create mode 100644 arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts
  660. create mode 100644 arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts
  661. create mode 100644 arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
  662. create mode 100644 arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts
  663. create mode 100644 arch/arm/boot/dts/overlays/smi-dev-overlay.dts
  664. create mode 100644 arch/arm/boot/dts/overlays/smi-nand-overlay.dts
  665. create mode 100644 arch/arm/boot/dts/overlays/smi-overlay.dts
  666. create mode 100644 arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
  667. create mode 100644 arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
  668. create mode 100644 arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
  669. create mode 100644 arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
  670. create mode 100644 arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
  671. create mode 100644 arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
  672. create mode 100644 arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
  673. create mode 100644 arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
  674. create mode 100644 arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
  675. create mode 100644 arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
  676. create mode 100644 arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
  677. create mode 100644 arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
  678. create mode 100644 arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
  679. create mode 100644 arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
  680. create mode 100644 arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
  681. create mode 100644 arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
  682. create mode 100644 arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
  683. create mode 100644 arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
  684. create mode 100644 arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
  685. create mode 100644 arch/arm/boot/dts/overlays/ssd1306-overlay.dts
  686. create mode 100644 arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
  687. create mode 100644 arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts
  688. create mode 100644 arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
  689. create mode 100755 arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
  690. create mode 100644 arch/arm/boot/dts/overlays/sx150x-overlay.dts
  691. create mode 100644 arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
  692. create mode 100644 arch/arm/boot/dts/overlays/tc358743-overlay.dts
  693. create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
  694. create mode 100644 arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
  695. create mode 100755 arch/arm/boot/dts/overlays/uart0-overlay.dts
  696. create mode 100644 arch/arm/boot/dts/overlays/uart1-overlay.dts
  697. create mode 100644 arch/arm/boot/dts/overlays/uart2-overlay.dts
  698. create mode 100644 arch/arm/boot/dts/overlays/uart3-overlay.dts
  699. create mode 100644 arch/arm/boot/dts/overlays/uart4-overlay.dts
  700. create mode 100644 arch/arm/boot/dts/overlays/uart5-overlay.dts
  701. create mode 100644 arch/arm/boot/dts/overlays/udrc-overlay.dts
  702. create mode 100644 arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts
  703. create mode 100644 arch/arm/boot/dts/overlays/upstream-overlay.dts
  704. create mode 100644 arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
  705. create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
  706. create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
  707. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts
  708. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts
  709. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts
  710. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts
  711. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
  712. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
  713. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
  714. create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts
  715. create mode 100644 arch/arm/boot/dts/overlays/vga666-overlay.dts
  716. create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
  717. create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
  718. create mode 100644 arch/arm/boot/dts/overlays/w5500-overlay.dts
  719. create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts
  720. create mode 100644 arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
  721. create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
  722. create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
  723. create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
  724. create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
  725. create mode 100644 arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts
  726. create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
  727. create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
  728. create mode 120000 arch/arm64/boot/dts/overlays
  729. diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
  730. index 27ca1ca6e827..ab6a5c6ea5ee 100644
  731. --- a/arch/arm/boot/dts/Makefile
  732. +++ b/arch/arm/boot/dts/Makefile
  733. @@ -1,4 +1,11 @@
  734. # SPDX-License-Identifier: GPL-2.0
  735. +
  736. +dtb-$(CONFIG_ARCH_BCM2835) += \
  737. + bcm2708-rpi-b-rev1.dtb \
  738. + bcm2708-rpi-cm.dtb \
  739. + bcm2710-rpi-cm3.dtb \
  740. + bcm2711-rpi-cm4.dtb
  741. +
  742. dtb-$(CONFIG_ARCH_ALPINE) += \
  743. alpine-db.dtb
  744. dtb-$(CONFIG_MACH_ARTPEC6) += \
  745. @@ -1499,3 +1506,13 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
  746. aspeed-bmc-portwell-neptune.dtb \
  747. aspeed-bmc-quanta-q71l.dtb \
  748. aspeed-bmc-supermicro-x11spi.dtb
  749. +
  750. +targets += dtbs dtbs_install
  751. +targets += $(dtb-y)
  752. +
  753. +subdir-y := overlays
  754. +
  755. +# Enable fixups to support overlays on BCM2835 platforms
  756. +ifeq ($(CONFIG_ARCH_BCM2835),y)
  757. + DTC_FLAGS += -@
  758. +endif
  759. diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
  760. new file mode 100644
  761. index 000000000000..e42cba84ab0e
  762. --- /dev/null
  763. +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
  764. @@ -0,0 +1,129 @@
  765. +/dts-v1/;
  766. +
  767. +#include "bcm2708.dtsi"
  768. +#include "bcm2708-rpi.dtsi"
  769. +#include "bcm283x-rpi-smsc9514.dtsi"
  770. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  771. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  772. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  773. +
  774. +/ {
  775. + compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
  776. + model = "Raspberry Pi Model B+";
  777. +};
  778. +
  779. +&gpio {
  780. + spi0_pins: spi0_pins {
  781. + brcm,pins = <9 10 11>;
  782. + brcm,function = <4>; /* alt0 */
  783. + };
  784. +
  785. + spi0_cs_pins: spi0_cs_pins {
  786. + brcm,pins = <8 7>;
  787. + brcm,function = <1>; /* output */
  788. + };
  789. +
  790. + i2c0_pins: i2c0 {
  791. + brcm,pins = <0 1>;
  792. + brcm,function = <4>;
  793. + };
  794. +
  795. + i2c1_pins: i2c1 {
  796. + brcm,pins = <2 3>;
  797. + brcm,function = <4>;
  798. + };
  799. +
  800. + i2s_pins: i2s {
  801. + brcm,pins = <18 19 20 21>;
  802. + brcm,function = <4>; /* alt0 */
  803. + };
  804. +
  805. + audio_pins: audio_pins {
  806. + brcm,pins = <40 45>;
  807. + brcm,function = <4>;
  808. + };
  809. +};
  810. +
  811. +&uart0 {
  812. + status = "okay";
  813. +};
  814. +
  815. +&spi0 {
  816. + pinctrl-names = "default";
  817. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  818. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  819. +
  820. + spidev0: spidev@0{
  821. + compatible = "spidev";
  822. + reg = <0>; /* CE0 */
  823. + #address-cells = <1>;
  824. + #size-cells = <0>;
  825. + spi-max-frequency = <125000000>;
  826. + };
  827. +
  828. + spidev1: spidev@1{
  829. + compatible = "spidev";
  830. + reg = <1>; /* CE1 */
  831. + #address-cells = <1>;
  832. + #size-cells = <0>;
  833. + spi-max-frequency = <125000000>;
  834. + };
  835. +};
  836. +
  837. +&i2c0if {
  838. + clock-frequency = <100000>;
  839. +};
  840. +
  841. +&i2c1 {
  842. + pinctrl-names = "default";
  843. + pinctrl-0 = <&i2c1_pins>;
  844. + clock-frequency = <100000>;
  845. +};
  846. +
  847. +&i2c2 {
  848. + clock-frequency = <100000>;
  849. +};
  850. +
  851. +&i2s {
  852. + pinctrl-names = "default";
  853. + pinctrl-0 = <&i2s_pins>;
  854. +};
  855. +
  856. +&leds {
  857. + act_led: led-act {
  858. + label = "led0";
  859. + linux,default-trigger = "mmc0";
  860. + gpios = <&gpio 47 0>;
  861. + };
  862. +
  863. + pwr_led: led-pwr {
  864. + label = "led1";
  865. + linux,default-trigger = "input";
  866. + gpios = <&gpio 35 0>;
  867. + };
  868. +};
  869. +
  870. +&hdmi {
  871. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  872. +};
  873. +
  874. +&audio {
  875. + pinctrl-names = "default";
  876. + pinctrl-0 = <&audio_pins>;
  877. +};
  878. +
  879. +&cam1_reg {
  880. + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
  881. +};
  882. +
  883. +/ {
  884. + __overrides__ {
  885. + act_led_gpio = <&act_led>,"gpios:4";
  886. + act_led_activelow = <&act_led>,"gpios:8";
  887. + act_led_trigger = <&act_led>,"linux,default-trigger";
  888. +
  889. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  890. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  891. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  892. + };
  893. +};
  894. diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
  895. new file mode 100644
  896. index 000000000000..4ea1e68f5e29
  897. --- /dev/null
  898. +++ b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
  899. @@ -0,0 +1,132 @@
  900. +/dts-v1/;
  901. +
  902. +#include "bcm2708.dtsi"
  903. +#include "bcm2708-rpi.dtsi"
  904. +#include "bcm283x-rpi-smsc9512.dtsi"
  905. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  906. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  907. +
  908. +/ {
  909. + compatible = "raspberrypi,model-b", "brcm,bcm2835";
  910. + model = "Raspberry Pi Model B";
  911. +};
  912. +
  913. +&gpio {
  914. + spi0_pins: spi0_pins {
  915. + brcm,pins = <9 10 11>;
  916. + brcm,function = <4>; /* alt0 */
  917. + };
  918. +
  919. + spi0_cs_pins: spi0_cs_pins {
  920. + brcm,pins = <8 7>;
  921. + brcm,function = <1>; /* output */
  922. + };
  923. +
  924. + i2c0_pins: i2c0 {
  925. + brcm,pins = <0 1>;
  926. + brcm,function = <4>;
  927. + };
  928. +
  929. + i2c1_pins: i2c1 {
  930. + brcm,pins = <2 3>;
  931. + brcm,function = <4>;
  932. + };
  933. +
  934. + i2s_pins: i2s {
  935. + brcm,pins = <28 29 30 31>;
  936. + brcm,function = <6>; /* alt2 */
  937. + };
  938. +
  939. + audio_pins: audio_pins {
  940. + brcm,pins = <40 45>;
  941. + brcm,function = <4>;
  942. + };
  943. +};
  944. +
  945. +&uart0 {
  946. + status = "okay";
  947. +};
  948. +
  949. +&spi0 {
  950. + pinctrl-names = "default";
  951. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  952. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  953. +
  954. + spidev0: spidev@0{
  955. + compatible = "spidev";
  956. + reg = <0>; /* CE0 */
  957. + #address-cells = <1>;
  958. + #size-cells = <0>;
  959. + spi-max-frequency = <125000000>;
  960. + };
  961. +
  962. + spidev1: spidev@1{
  963. + compatible = "spidev";
  964. + reg = <1>; /* CE1 */
  965. + #address-cells = <1>;
  966. + #size-cells = <0>;
  967. + spi-max-frequency = <125000000>;
  968. + };
  969. +};
  970. +
  971. +/delete-node/ &i2c0mux;
  972. +
  973. +i2c0: &i2c0if {
  974. + pinctrl-names = "default";
  975. + pinctrl-0 = <&i2c0_pins>;
  976. + clock-frequency = <100000>;
  977. +};
  978. +
  979. +i2c_csi_dsi: &i2c1 {
  980. + pinctrl-names = "default";
  981. + pinctrl-0 = <&i2c1_pins>;
  982. + clock-frequency = <100000>;
  983. +};
  984. +
  985. +/ {
  986. + aliases {
  987. + i2c0 = &i2c0;
  988. + };
  989. +
  990. + __overrides__ {
  991. + i2c0 = <&i2c0>, "status";
  992. + };
  993. +};
  994. +
  995. +&i2c2 {
  996. + clock-frequency = <100000>;
  997. +};
  998. +
  999. +&i2s {
  1000. + pinctrl-names = "default";
  1001. + pinctrl-0 = <&i2s_pins>;
  1002. +};
  1003. +
  1004. +&leds {
  1005. + act_led: led-act {
  1006. + label = "led0";
  1007. + linux,default-trigger = "mmc0";
  1008. + gpios = <&gpio 16 1>;
  1009. + };
  1010. +};
  1011. +
  1012. +&hdmi {
  1013. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  1014. +};
  1015. +
  1016. +&audio {
  1017. + pinctrl-names = "default";
  1018. + pinctrl-0 = <&audio_pins>;
  1019. +};
  1020. +
  1021. +&cam1_reg {
  1022. + gpio = <&gpio 27 GPIO_ACTIVE_HIGH>;
  1023. +};
  1024. +
  1025. +/ {
  1026. + __overrides__ {
  1027. + act_led_gpio = <&act_led>,"gpios:4";
  1028. + act_led_activelow = <&act_led>,"gpios:8";
  1029. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1030. + };
  1031. +};
  1032. diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
  1033. new file mode 100644
  1034. index 000000000000..a152c1c8e648
  1035. --- /dev/null
  1036. +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
  1037. @@ -0,0 +1,119 @@
  1038. +/dts-v1/;
  1039. +
  1040. +#include "bcm2708.dtsi"
  1041. +#include "bcm2708-rpi.dtsi"
  1042. +#include "bcm283x-rpi-smsc9512.dtsi"
  1043. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  1044. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  1045. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  1046. +
  1047. +/ {
  1048. + compatible = "raspberrypi,model-b", "brcm,bcm2835";
  1049. + model = "Raspberry Pi Model B";
  1050. +};
  1051. +
  1052. +&gpio {
  1053. + spi0_pins: spi0_pins {
  1054. + brcm,pins = <9 10 11>;
  1055. + brcm,function = <4>; /* alt0 */
  1056. + };
  1057. +
  1058. + spi0_cs_pins: spi0_cs_pins {
  1059. + brcm,pins = <8 7>;
  1060. + brcm,function = <1>; /* output */
  1061. + };
  1062. +
  1063. + i2c0_pins: i2c0 {
  1064. + brcm,pins = <0 1>;
  1065. + brcm,function = <4>;
  1066. + };
  1067. +
  1068. + i2c1_pins: i2c1 {
  1069. + brcm,pins = <2 3>;
  1070. + brcm,function = <4>;
  1071. + };
  1072. +
  1073. + i2s_pins: i2s {
  1074. + brcm,pins = <28 29 30 31>;
  1075. + brcm,function = <6>; /* alt2 */
  1076. + };
  1077. +
  1078. + audio_pins: audio_pins {
  1079. + brcm,pins = <40 45>;
  1080. + brcm,function = <4>;
  1081. + };
  1082. +};
  1083. +
  1084. +&uart0 {
  1085. + status = "okay";
  1086. +};
  1087. +
  1088. +&spi0 {
  1089. + pinctrl-names = "default";
  1090. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1091. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1092. +
  1093. + spidev0: spidev@0{
  1094. + compatible = "spidev";
  1095. + reg = <0>; /* CE0 */
  1096. + #address-cells = <1>;
  1097. + #size-cells = <0>;
  1098. + spi-max-frequency = <125000000>;
  1099. + };
  1100. +
  1101. + spidev1: spidev@1{
  1102. + compatible = "spidev";
  1103. + reg = <1>; /* CE1 */
  1104. + #address-cells = <1>;
  1105. + #size-cells = <0>;
  1106. + spi-max-frequency = <125000000>;
  1107. + };
  1108. +};
  1109. +
  1110. +&i2c0if {
  1111. + clock-frequency = <100000>;
  1112. +};
  1113. +
  1114. +&i2c1 {
  1115. + pinctrl-names = "default";
  1116. + pinctrl-0 = <&i2c1_pins>;
  1117. + clock-frequency = <100000>;
  1118. +};
  1119. +
  1120. +&i2c2 {
  1121. + clock-frequency = <100000>;
  1122. +};
  1123. +
  1124. +&i2s {
  1125. + pinctrl-names = "default";
  1126. + pinctrl-0 = <&i2s_pins>;
  1127. +};
  1128. +
  1129. +&leds {
  1130. + act_led: led-act {
  1131. + label = "led0";
  1132. + linux,default-trigger = "mmc0";
  1133. + gpios = <&gpio 16 1>;
  1134. + };
  1135. +};
  1136. +
  1137. +&hdmi {
  1138. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  1139. +};
  1140. +
  1141. +&audio {
  1142. + pinctrl-names = "default";
  1143. + pinctrl-0 = <&audio_pins>;
  1144. +};
  1145. +
  1146. +&cam1_reg {
  1147. + gpio = <&gpio 21 GPIO_ACTIVE_HIGH>;
  1148. +};
  1149. +
  1150. +/ {
  1151. + __overrides__ {
  1152. + act_led_gpio = <&act_led>,"gpios:4";
  1153. + act_led_activelow = <&act_led>,"gpios:8";
  1154. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1155. + };
  1156. +};
  1157. diff --git a/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi b/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
  1158. new file mode 100644
  1159. index 000000000000..a18f80af97d3
  1160. --- /dev/null
  1161. +++ b/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
  1162. @@ -0,0 +1,26 @@
  1163. +// SPDX-License-Identifier: GPL-2.0
  1164. +
  1165. +&uart0 {
  1166. + bt: bluetooth {
  1167. + compatible = "brcm,bcm43438-bt";
  1168. + max-speed = <3000000>;
  1169. + shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
  1170. + status = "disabled";
  1171. + };
  1172. +};
  1173. +
  1174. +&uart1 {
  1175. + minibt: bluetooth {
  1176. + compatible = "brcm,bcm43438-bt";
  1177. + max-speed = <460800>;
  1178. + shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
  1179. + status = "disabled";
  1180. + };
  1181. +};
  1182. +
  1183. +/ {
  1184. + __overrides__ {
  1185. + krnbt = <&bt>,"status";
  1186. + krnbt_baudrate = <&bt>,"max-speed:0";
  1187. + };
  1188. +};
  1189. diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
  1190. new file mode 100644
  1191. index 000000000000..f61e3418425a
  1192. --- /dev/null
  1193. +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
  1194. @@ -0,0 +1,112 @@
  1195. +/dts-v1/;
  1196. +
  1197. +#include "bcm2708-rpi-cm.dtsi"
  1198. +#include "bcm283x-rpi-csi0-2lane.dtsi"
  1199. +#include "bcm283x-rpi-csi1-4lane.dtsi"
  1200. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  1201. +
  1202. +/ {
  1203. + compatible = "raspberrypi,compute-module", "brcm,bcm2835";
  1204. + model = "Raspberry Pi Compute Module";
  1205. +
  1206. + cam1_reg: cam1_reg {
  1207. + compatible = "regulator-fixed";
  1208. + regulator-name = "cam1-regulator";
  1209. + gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
  1210. + enable-active-high;
  1211. + status = "disabled";
  1212. + };
  1213. + cam0_reg: cam0_reg {
  1214. + compatible = "regulator-fixed";
  1215. + regulator-name = "cam0-regulator";
  1216. + gpio = <&gpio 30 GPIO_ACTIVE_HIGH>;
  1217. + enable-active-high;
  1218. + status = "disabled";
  1219. + };
  1220. +};
  1221. +
  1222. +&uart0 {
  1223. + status = "okay";
  1224. +};
  1225. +
  1226. +&gpio {
  1227. + spi0_pins: spi0_pins {
  1228. + brcm,pins = <9 10 11>;
  1229. + brcm,function = <4>; /* alt0 */
  1230. + };
  1231. +
  1232. + spi0_cs_pins: spi0_cs_pins {
  1233. + brcm,pins = <8 7>;
  1234. + brcm,function = <1>; /* output */
  1235. + };
  1236. +
  1237. + i2c0_pins: i2c0 {
  1238. + brcm,pins = <0 1>;
  1239. + brcm,function = <4>;
  1240. + };
  1241. +
  1242. + i2c1_pins: i2c1 {
  1243. + brcm,pins = <2 3>;
  1244. + brcm,function = <4>;
  1245. + };
  1246. +
  1247. + i2s_pins: i2s {
  1248. + brcm,pins = <18 19 20 21>;
  1249. + brcm,function = <4>; /* alt0 */
  1250. + };
  1251. +
  1252. + audio_pins: audio_pins {
  1253. + brcm,pins;
  1254. + brcm,function;
  1255. + };
  1256. +};
  1257. +
  1258. +&spi0 {
  1259. + pinctrl-names = "default";
  1260. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1261. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1262. +
  1263. + spidev0: spidev@0{
  1264. + compatible = "spidev";
  1265. + reg = <0>; /* CE0 */
  1266. + #address-cells = <1>;
  1267. + #size-cells = <0>;
  1268. + spi-max-frequency = <125000000>;
  1269. + };
  1270. +
  1271. + spidev1: spidev@1{
  1272. + compatible = "spidev";
  1273. + reg = <1>; /* CE1 */
  1274. + #address-cells = <1>;
  1275. + #size-cells = <0>;
  1276. + spi-max-frequency = <125000000>;
  1277. + };
  1278. +};
  1279. +
  1280. +&i2c0if {
  1281. + clock-frequency = <100000>;
  1282. +};
  1283. +
  1284. +&i2c1 {
  1285. + pinctrl-names = "default";
  1286. + pinctrl-0 = <&i2c1_pins>;
  1287. + clock-frequency = <100000>;
  1288. +};
  1289. +
  1290. +&i2c2 {
  1291. + clock-frequency = <100000>;
  1292. +};
  1293. +
  1294. +&i2s {
  1295. + pinctrl-names = "default";
  1296. + pinctrl-0 = <&i2s_pins>;
  1297. +};
  1298. +
  1299. +&audio {
  1300. + pinctrl-names = "default";
  1301. + pinctrl-0 = <&audio_pins>;
  1302. +};
  1303. +
  1304. +&hdmi {
  1305. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  1306. +};
  1307. diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
  1308. new file mode 100644
  1309. index 000000000000..d5572b2d2103
  1310. --- /dev/null
  1311. +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
  1312. @@ -0,0 +1,18 @@
  1313. +#include "bcm2708.dtsi"
  1314. +#include "bcm2708-rpi.dtsi"
  1315. +
  1316. +&leds {
  1317. + act_led: led-act {
  1318. + label = "led0";
  1319. + linux,default-trigger = "mmc0";
  1320. + gpios = <&gpio 47 0>;
  1321. + };
  1322. +};
  1323. +
  1324. +/ {
  1325. + __overrides__ {
  1326. + act_led_gpio = <&act_led>,"gpios:4";
  1327. + act_led_activelow = <&act_led>,"gpios:8";
  1328. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1329. + };
  1330. +};
  1331. diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
  1332. new file mode 100644
  1333. index 000000000000..75a5b41514f9
  1334. --- /dev/null
  1335. +++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
  1336. @@ -0,0 +1,169 @@
  1337. +/dts-v1/;
  1338. +
  1339. +#include "bcm2708.dtsi"
  1340. +#include "bcm2708-rpi.dtsi"
  1341. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  1342. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  1343. +#include "bcm2708-rpi-bt.dtsi"
  1344. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  1345. +
  1346. +/ {
  1347. + compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
  1348. + model = "Raspberry Pi Zero W";
  1349. +
  1350. + chosen {
  1351. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  1352. + };
  1353. +
  1354. + aliases {
  1355. + serial0 = &uart1;
  1356. + serial1 = &uart0;
  1357. + mmc1 = &mmcnr;
  1358. + };
  1359. +};
  1360. +
  1361. +&gpio {
  1362. + spi0_pins: spi0_pins {
  1363. + brcm,pins = <9 10 11>;
  1364. + brcm,function = <4>; /* alt0 */
  1365. + };
  1366. +
  1367. + spi0_cs_pins: spi0_cs_pins {
  1368. + brcm,pins = <8 7>;
  1369. + brcm,function = <1>; /* output */
  1370. + };
  1371. +
  1372. + i2c0_pins: i2c0 {
  1373. + brcm,pins = <0 1>;
  1374. + brcm,function = <4>;
  1375. + };
  1376. +
  1377. + i2c1_pins: i2c1 {
  1378. + brcm,pins = <2 3>;
  1379. + brcm,function = <4>;
  1380. + };
  1381. +
  1382. + i2s_pins: i2s {
  1383. + brcm,pins = <18 19 20 21>;
  1384. + brcm,function = <4>; /* alt0 */
  1385. + };
  1386. +
  1387. + sdio_pins: sdio_pins {
  1388. + brcm,pins = <34 35 36 37 38 39>;
  1389. + brcm,function = <7>; /* ALT3 = SD1 */
  1390. + brcm,pull = <0 2 2 2 2 2>;
  1391. + };
  1392. +
  1393. + bt_pins: bt_pins {
  1394. + brcm,pins = <43>;
  1395. + brcm,function = <4>; /* alt0:GPCLK2 */
  1396. + brcm,pull = <0>; /* none */
  1397. + };
  1398. +
  1399. + uart0_pins: uart0_pins {
  1400. + brcm,pins = <30 31 32 33>;
  1401. + brcm,function = <7>; /* alt3=UART0 */
  1402. + brcm,pull = <2 0 0 2>; /* up none none up */
  1403. + };
  1404. +
  1405. + uart1_pins: uart1_pins {
  1406. + brcm,pins;
  1407. + brcm,function;
  1408. + brcm,pull;
  1409. + };
  1410. +
  1411. + audio_pins: audio_pins {
  1412. + brcm,pins = <>;
  1413. + brcm,function = <>;
  1414. + };
  1415. +};
  1416. +
  1417. +&mmcnr {
  1418. + pinctrl-names = "default";
  1419. + pinctrl-0 = <&sdio_pins>;
  1420. + bus-width = <4>;
  1421. + status = "okay";
  1422. +};
  1423. +
  1424. +&uart0 {
  1425. + pinctrl-names = "default";
  1426. + pinctrl-0 = <&uart0_pins &bt_pins>;
  1427. + status = "okay";
  1428. +};
  1429. +
  1430. +&uart1 {
  1431. + pinctrl-names = "default";
  1432. + pinctrl-0 = <&uart1_pins>;
  1433. + status = "okay";
  1434. +};
  1435. +
  1436. +&spi0 {
  1437. + pinctrl-names = "default";
  1438. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1439. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1440. +
  1441. + spidev0: spidev@0{
  1442. + compatible = "spidev";
  1443. + reg = <0>; /* CE0 */
  1444. + #address-cells = <1>;
  1445. + #size-cells = <0>;
  1446. + spi-max-frequency = <125000000>;
  1447. + };
  1448. +
  1449. + spidev1: spidev@1{
  1450. + compatible = "spidev";
  1451. + reg = <1>; /* CE1 */
  1452. + #address-cells = <1>;
  1453. + #size-cells = <0>;
  1454. + spi-max-frequency = <125000000>;
  1455. + };
  1456. +};
  1457. +
  1458. +&i2c0if {
  1459. + clock-frequency = <100000>;
  1460. +};
  1461. +
  1462. +&i2c1 {
  1463. + pinctrl-names = "default";
  1464. + pinctrl-0 = <&i2c1_pins>;
  1465. + clock-frequency = <100000>;
  1466. +};
  1467. +
  1468. +&i2c2 {
  1469. + clock-frequency = <100000>;
  1470. +};
  1471. +
  1472. +&i2s {
  1473. + pinctrl-names = "default";
  1474. + pinctrl-0 = <&i2s_pins>;
  1475. +};
  1476. +
  1477. +&leds {
  1478. + act_led: led-act {
  1479. + label = "led0";
  1480. + linux,default-trigger = "actpwr";
  1481. + gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
  1482. + };
  1483. +};
  1484. +
  1485. +&hdmi {
  1486. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  1487. +};
  1488. +
  1489. +&audio {
  1490. + pinctrl-names = "default";
  1491. + pinctrl-0 = <&audio_pins>;
  1492. + brcm,disable-headphones = <1>;
  1493. +};
  1494. +
  1495. +&cam1_reg {
  1496. + gpio = <&gpio 44 GPIO_ACTIVE_HIGH>;
  1497. +};
  1498. +
  1499. +/ {
  1500. + __overrides__ {
  1501. + act_led_gpio = <&act_led>,"gpios:4";
  1502. + act_led_activelow = <&act_led>,"gpios:8";
  1503. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1504. + };
  1505. +};
  1506. diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero.dts b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
  1507. new file mode 100644
  1508. index 000000000000..84591bd7d423
  1509. --- /dev/null
  1510. +++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
  1511. @@ -0,0 +1,123 @@
  1512. +/dts-v1/;
  1513. +
  1514. +#include "bcm2708.dtsi"
  1515. +#include "bcm2708-rpi.dtsi"
  1516. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  1517. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  1518. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  1519. +
  1520. +/ {
  1521. + compatible = "raspberrypi,model-zero", "brcm,bcm2835";
  1522. + model = "Raspberry Pi Zero";
  1523. +
  1524. + chosen {
  1525. + bootargs = "coherent_pool=1M snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  1526. + };
  1527. +};
  1528. +
  1529. +&gpio {
  1530. + spi0_pins: spi0_pins {
  1531. + brcm,pins = <9 10 11>;
  1532. + brcm,function = <4>; /* alt0 */
  1533. + };
  1534. +
  1535. + spi0_cs_pins: spi0_cs_pins {
  1536. + brcm,pins = <8 7>;
  1537. + brcm,function = <1>; /* output */
  1538. + };
  1539. +
  1540. + i2c0_pins: i2c0 {
  1541. + brcm,pins = <0 1>;
  1542. + brcm,function = <4>;
  1543. + };
  1544. +
  1545. + i2c1_pins: i2c1 {
  1546. + brcm,pins = <2 3>;
  1547. + brcm,function = <4>;
  1548. + };
  1549. +
  1550. + i2s_pins: i2s {
  1551. + brcm,pins = <18 19 20 21>;
  1552. + brcm,function = <4>; /* alt0 */
  1553. + };
  1554. +
  1555. + audio_pins: audio_pins {
  1556. + brcm,pins = <>;
  1557. + brcm,function = <>;
  1558. + };
  1559. +};
  1560. +
  1561. +&uart0 {
  1562. + status = "okay";
  1563. +};
  1564. +
  1565. +&spi0 {
  1566. + pinctrl-names = "default";
  1567. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1568. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1569. +
  1570. + spidev0: spidev@0{
  1571. + compatible = "spidev";
  1572. + reg = <0>; /* CE0 */
  1573. + #address-cells = <1>;
  1574. + #size-cells = <0>;
  1575. + spi-max-frequency = <125000000>;
  1576. + };
  1577. +
  1578. + spidev1: spidev@1{
  1579. + compatible = "spidev";
  1580. + reg = <1>; /* CE1 */
  1581. + #address-cells = <1>;
  1582. + #size-cells = <0>;
  1583. + spi-max-frequency = <125000000>;
  1584. + };
  1585. +};
  1586. +
  1587. +&i2c0if {
  1588. + clock-frequency = <100000>;
  1589. +};
  1590. +
  1591. +&i2c1 {
  1592. + pinctrl-names = "default";
  1593. + pinctrl-0 = <&i2c1_pins>;
  1594. + clock-frequency = <100000>;
  1595. +};
  1596. +
  1597. +&i2c2 {
  1598. + clock-frequency = <100000>;
  1599. +};
  1600. +
  1601. +&i2s {
  1602. + pinctrl-names = "default";
  1603. + pinctrl-0 = <&i2s_pins>;
  1604. +};
  1605. +
  1606. +&leds {
  1607. + act_led: led-act {
  1608. + label = "led0";
  1609. + linux,default-trigger = "actpwr";
  1610. + gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
  1611. + };
  1612. +};
  1613. +
  1614. +&hdmi {
  1615. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  1616. +};
  1617. +
  1618. +&audio {
  1619. + pinctrl-names = "default";
  1620. + pinctrl-0 = <&audio_pins>;
  1621. + brcm,disable-headphones = <1>;
  1622. +};
  1623. +
  1624. +&cam1_reg {
  1625. + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
  1626. +};
  1627. +
  1628. +/ {
  1629. + __overrides__ {
  1630. + act_led_gpio = <&act_led>,"gpios:4";
  1631. + act_led_activelow = <&act_led>,"gpios:8";
  1632. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1633. + };
  1634. +};
  1635. diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi
  1636. new file mode 100644
  1637. index 000000000000..e2458b15d64a
  1638. --- /dev/null
  1639. +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
  1640. @@ -0,0 +1,36 @@
  1641. +/* Downstream modifications common to bcm2835, bcm2836, bcm2837 */
  1642. +
  1643. +#include "bcm2835-rpi.dtsi"
  1644. +#include "bcm270x-rpi.dtsi"
  1645. +
  1646. +/ {
  1647. + memory@0 {
  1648. + device_type = "memory";
  1649. + reg = <0x0 0x0>;
  1650. + };
  1651. +
  1652. + aliases {
  1653. + i2c2 = &i2c2;
  1654. + };
  1655. +
  1656. + __overrides__ {
  1657. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  1658. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  1659. + sd_poll_once = <&sdhost>,"non-removable?";
  1660. + };
  1661. +};
  1662. +
  1663. +&sdhost {
  1664. + pinctrl-names = "default";
  1665. + pinctrl-0 = <&sdhost_gpio48>;
  1666. + status = "okay";
  1667. +};
  1668. +
  1669. +&hdmi {
  1670. + power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
  1671. + status = "disabled";
  1672. +};
  1673. +
  1674. +&i2c2 {
  1675. + status = "disabled";
  1676. +};
  1677. diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
  1678. new file mode 100644
  1679. index 000000000000..36ec4989403f
  1680. --- /dev/null
  1681. +++ b/arch/arm/boot/dts/bcm2708.dtsi
  1682. @@ -0,0 +1,12 @@
  1683. +#include "bcm2835.dtsi"
  1684. +#include "bcm270x.dtsi"
  1685. +
  1686. +/ {
  1687. + __overrides__ {
  1688. + arm_freq;
  1689. + };
  1690. +};
  1691. +
  1692. +&vc4 {
  1693. + status = "disabled";
  1694. +};
  1695. diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
  1696. new file mode 100644
  1697. index 000000000000..e1381d2b3a2c
  1698. --- /dev/null
  1699. +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
  1700. @@ -0,0 +1,129 @@
  1701. +/dts-v1/;
  1702. +
  1703. +#include "bcm2709.dtsi"
  1704. +#include "bcm2709-rpi.dtsi"
  1705. +#include "bcm283x-rpi-smsc9514.dtsi"
  1706. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  1707. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  1708. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  1709. +
  1710. +/ {
  1711. + compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
  1712. + model = "Raspberry Pi 2 Model B";
  1713. +};
  1714. +
  1715. +&gpio {
  1716. + spi0_pins: spi0_pins {
  1717. + brcm,pins = <9 10 11>;
  1718. + brcm,function = <4>; /* alt0 */
  1719. + };
  1720. +
  1721. + spi0_cs_pins: spi0_cs_pins {
  1722. + brcm,pins = <8 7>;
  1723. + brcm,function = <1>; /* output */
  1724. + };
  1725. +
  1726. + i2c0_pins: i2c0 {
  1727. + brcm,pins = <0 1>;
  1728. + brcm,function = <4>;
  1729. + };
  1730. +
  1731. + i2c1_pins: i2c1 {
  1732. + brcm,pins = <2 3>;
  1733. + brcm,function = <4>;
  1734. + };
  1735. +
  1736. + i2s_pins: i2s {
  1737. + brcm,pins = <18 19 20 21>;
  1738. + brcm,function = <4>; /* alt0 */
  1739. + };
  1740. +
  1741. + audio_pins: audio_pins {
  1742. + brcm,pins = <40 45>;
  1743. + brcm,function = <4>;
  1744. + };
  1745. +};
  1746. +
  1747. +&uart0 {
  1748. + status = "okay";
  1749. +};
  1750. +
  1751. +&spi0 {
  1752. + pinctrl-names = "default";
  1753. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1754. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1755. +
  1756. + spidev0: spidev@0{
  1757. + compatible = "spidev";
  1758. + reg = <0>; /* CE0 */
  1759. + #address-cells = <1>;
  1760. + #size-cells = <0>;
  1761. + spi-max-frequency = <125000000>;
  1762. + };
  1763. +
  1764. + spidev1: spidev@1{
  1765. + compatible = "spidev";
  1766. + reg = <1>; /* CE1 */
  1767. + #address-cells = <1>;
  1768. + #size-cells = <0>;
  1769. + spi-max-frequency = <125000000>;
  1770. + };
  1771. +};
  1772. +
  1773. +&i2c0if {
  1774. + clock-frequency = <100000>;
  1775. +};
  1776. +
  1777. +&i2c1 {
  1778. + pinctrl-names = "default";
  1779. + pinctrl-0 = <&i2c1_pins>;
  1780. + clock-frequency = <100000>;
  1781. +};
  1782. +
  1783. +&i2c2 {
  1784. + clock-frequency = <100000>;
  1785. +};
  1786. +
  1787. +&i2s {
  1788. + pinctrl-names = "default";
  1789. + pinctrl-0 = <&i2s_pins>;
  1790. +};
  1791. +
  1792. +&leds {
  1793. + act_led: led-act {
  1794. + label = "led0";
  1795. + linux,default-trigger = "mmc0";
  1796. + gpios = <&gpio 47 0>;
  1797. + };
  1798. +
  1799. + pwr_led: led-pwr {
  1800. + label = "led1";
  1801. + linux,default-trigger = "input";
  1802. + gpios = <&gpio 35 0>;
  1803. + };
  1804. +};
  1805. +
  1806. +&hdmi {
  1807. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  1808. +};
  1809. +
  1810. +&audio {
  1811. + pinctrl-names = "default";
  1812. + pinctrl-0 = <&audio_pins>;
  1813. +};
  1814. +
  1815. +&cam1_reg {
  1816. + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
  1817. +};
  1818. +
  1819. +/ {
  1820. + __overrides__ {
  1821. + act_led_gpio = <&act_led>,"gpios:4";
  1822. + act_led_activelow = <&act_led>,"gpios:8";
  1823. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1824. +
  1825. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  1826. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  1827. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  1828. + };
  1829. +};
  1830. diff --git a/arch/arm/boot/dts/bcm2709-rpi.dtsi b/arch/arm/boot/dts/bcm2709-rpi.dtsi
  1831. new file mode 100644
  1832. index 000000000000..babfa41cd9f7
  1833. --- /dev/null
  1834. +++ b/arch/arm/boot/dts/bcm2709-rpi.dtsi
  1835. @@ -0,0 +1,5 @@
  1836. +#include "bcm2708-rpi.dtsi"
  1837. +
  1838. +&vchiq {
  1839. + compatible = "brcm,bcm2836-vchiq", "brcm,bcm2835-vchiq";
  1840. +};
  1841. diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi
  1842. new file mode 100644
  1843. index 000000000000..68eafc1b281a
  1844. --- /dev/null
  1845. +++ b/arch/arm/boot/dts/bcm2709.dtsi
  1846. @@ -0,0 +1,22 @@
  1847. +#include "bcm2836.dtsi"
  1848. +#include "bcm270x.dtsi"
  1849. +
  1850. +/ {
  1851. + soc {
  1852. + ranges = <0x7e000000 0x3f000000 0x01000000>,
  1853. + <0x40000000 0x40000000 0x00040000>;
  1854. +
  1855. + /delete-node/ timer@7e003000;
  1856. + };
  1857. +
  1858. + __overrides__ {
  1859. + arm_freq = <&v7_cpu0>, "clock-frequency:0",
  1860. + <&v7_cpu1>, "clock-frequency:0",
  1861. + <&v7_cpu2>, "clock-frequency:0",
  1862. + <&v7_cpu3>, "clock-frequency:0";
  1863. + };
  1864. +};
  1865. +
  1866. +&vc4 {
  1867. + status = "disabled";
  1868. +};
  1869. diff --git a/arch/arm/boot/dts/bcm270x-rpi.dtsi b/arch/arm/boot/dts/bcm270x-rpi.dtsi
  1870. new file mode 100644
  1871. index 000000000000..68a7e1c09db1
  1872. --- /dev/null
  1873. +++ b/arch/arm/boot/dts/bcm270x-rpi.dtsi
  1874. @@ -0,0 +1,154 @@
  1875. +/* Downstream modifications to bcm2835-rpi.dtsi */
  1876. +
  1877. +/ {
  1878. + aliases {
  1879. + audio = &audio;
  1880. + aux = &aux;
  1881. + sound = &sound;
  1882. + soc = &soc;
  1883. + dma = &dma;
  1884. + intc = &intc;
  1885. + watchdog = &watchdog;
  1886. + random = &random;
  1887. + mailbox = &mailbox;
  1888. + gpio = &gpio;
  1889. + uart0 = &uart0;
  1890. + uart1 = &uart1;
  1891. + sdhost = &sdhost;
  1892. + mmc = &mmc;
  1893. + mmc1 = &mmc;
  1894. + mmc0 = &sdhost;
  1895. + i2s = &i2s;
  1896. + i2c0 = &i2c0;
  1897. + i2c1 = &i2c1;
  1898. + i2c10 = &i2c_csi_dsi;
  1899. + spi0 = &spi0;
  1900. + spi1 = &spi1;
  1901. + spi2 = &spi2;
  1902. + usb = &usb;
  1903. + leds = &leds;
  1904. + fb = &fb;
  1905. + thermal = &thermal;
  1906. + axiperf = &axiperf;
  1907. + };
  1908. +
  1909. + /* Define these notional regulators for use by overlays */
  1910. + vdd_3v3_reg: fixedregulator_3v3 {
  1911. + compatible = "regulator-fixed";
  1912. + regulator-always-on;
  1913. + regulator-max-microvolt = <3300000>;
  1914. + regulator-min-microvolt = <3300000>;
  1915. + regulator-name = "3v3";
  1916. + };
  1917. +
  1918. + vdd_5v0_reg: fixedregulator_5v0 {
  1919. + compatible = "regulator-fixed";
  1920. + regulator-always-on;
  1921. + regulator-max-microvolt = <5000000>;
  1922. + regulator-min-microvolt = <5000000>;
  1923. + regulator-name = "5v0";
  1924. + };
  1925. +
  1926. + leds: leds {
  1927. + compatible = "gpio-leds";
  1928. + };
  1929. +
  1930. + soc {
  1931. + gpiomem {
  1932. + compatible = "brcm,bcm2835-gpiomem";
  1933. + reg = <0x7e200000 0x1000>;
  1934. + };
  1935. +
  1936. + fb: fb {
  1937. + compatible = "brcm,bcm2708-fb";
  1938. + firmware = <&firmware>;
  1939. + status = "okay";
  1940. + };
  1941. +
  1942. + vcsm: vcsm {
  1943. + compatible = "raspberrypi,bcm2835-vcsm";
  1944. + firmware = <&firmware>;
  1945. + status = "okay";
  1946. + };
  1947. +
  1948. + /* External sound card */
  1949. + sound: sound {
  1950. + status = "disabled";
  1951. + };
  1952. + };
  1953. +
  1954. + __overrides__ {
  1955. + cache_line_size;
  1956. +
  1957. + uart0 = <&uart0>,"status";
  1958. + uart1 = <&uart1>,"status";
  1959. + i2s = <&i2s>,"status";
  1960. + spi = <&spi0>,"status";
  1961. + i2c0 = <&i2c0if>,"status",<&i2c0mux>,"status";
  1962. + i2c1 = <&i2c1>,"status";
  1963. + i2c0_baudrate = <&i2c0if>,"clock-frequency:0";
  1964. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  1965. +
  1966. + audio = <&audio>,"status";
  1967. + watchdog = <&watchdog>,"status";
  1968. + random = <&random>,"status";
  1969. + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
  1970. + sd_force_pio = <&sdhost>,"brcm,force-pio?";
  1971. + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
  1972. + sd_debug = <&sdhost>,"brcm,debug";
  1973. + sdio_overclock = <&mmc>,"brcm,overclock-50:0",
  1974. + <&mmcnr>,"brcm,overclock-50:0";
  1975. + axiperf = <&axiperf>,"status";
  1976. + };
  1977. +};
  1978. +
  1979. +&uart0 {
  1980. + skip-init;
  1981. +};
  1982. +
  1983. +&uart1 {
  1984. + skip-init;
  1985. +};
  1986. +
  1987. +&txp {
  1988. + status = "disabled";
  1989. +};
  1990. +
  1991. +&i2c0if {
  1992. + status = "disabled";
  1993. +};
  1994. +
  1995. +&i2c0mux {
  1996. + status = "disabled";
  1997. +};
  1998. +
  1999. +&i2c1 {
  2000. + status = "disabled";
  2001. +};
  2002. +
  2003. +&clocks {
  2004. + firmware = <&firmware>;
  2005. +};
  2006. +
  2007. +&sdhci {
  2008. + pinctrl-names = "default";
  2009. + pinctrl-0 = <&emmc_gpio48>;
  2010. + bus-width = <4>;
  2011. +};
  2012. +
  2013. +&cpu_thermal {
  2014. + /delete-node/ trips;
  2015. +};
  2016. +
  2017. +&vec {
  2018. + status = "disabled";
  2019. +};
  2020. +
  2021. +&vchiq {
  2022. + /* Onboard audio */
  2023. + audio: bcm2835_audio {
  2024. + compatible = "brcm,bcm2835-audio";
  2025. + brcm,pwm-channels = <8>;
  2026. + status = "disabled";
  2027. + };
  2028. +};
  2029. diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi
  2030. new file mode 100644
  2031. index 000000000000..badcf341ecd2
  2032. --- /dev/null
  2033. +++ b/arch/arm/boot/dts/bcm270x.dtsi
  2034. @@ -0,0 +1,217 @@
  2035. +/* Downstream bcm283x.dtsi diff */
  2036. +#include <dt-bindings/power/raspberrypi-power.h>
  2037. +
  2038. +/ {
  2039. + chosen {
  2040. + bootargs = "coherent_pool=1M snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  2041. + /delete-property/ stdout-path;
  2042. + };
  2043. +
  2044. + soc: soc {
  2045. +
  2046. + watchdog: watchdog@7e100000 {
  2047. + /* Add label */
  2048. + };
  2049. +
  2050. + random: rng@7e104000 {
  2051. + /* Add label */
  2052. + };
  2053. +
  2054. + spi0: spi@7e204000 {
  2055. + /* Add label */
  2056. + };
  2057. +
  2058. +#ifndef BCM2711
  2059. + pixelvalve0: pixelvalve@7e206000 {
  2060. + /* Add label */
  2061. + status = "disabled";
  2062. + };
  2063. +
  2064. + pixelvalve1: pixelvalve@7e207000 {
  2065. + /* Add label */
  2066. + status = "disabled";
  2067. + };
  2068. +#endif
  2069. +
  2070. + /delete-node/ mmc@7e300000;
  2071. +
  2072. + sdhci: mmc: mmc@7e300000 {
  2073. + compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
  2074. + reg = <0x7e300000 0x100>;
  2075. + interrupts = <2 30>;
  2076. + clocks = <&clocks BCM2835_CLOCK_EMMC>;
  2077. + dmas = <&dma 11>;
  2078. + dma-names = "rx-tx";
  2079. + brcm,overclock-50 = <0>;
  2080. + status = "disabled";
  2081. + };
  2082. +
  2083. + /* A clone of mmc but with non-removable set */
  2084. + mmcnr: mmcnr@7e300000 {
  2085. + compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
  2086. + reg = <0x7e300000 0x100>;
  2087. + interrupts = <2 30>;
  2088. + clocks = <&clocks BCM2835_CLOCK_EMMC>;
  2089. + dmas = <&dma 11>;
  2090. + dma-names = "rx-tx";
  2091. + brcm,overclock-50 = <0>;
  2092. + non-removable;
  2093. + status = "disabled";
  2094. + };
  2095. +
  2096. + hvs: hvs@7e400000 {
  2097. + /* Add label */
  2098. + status = "disabled";
  2099. + };
  2100. +
  2101. + firmwarekms: firmwarekms@7e600000 {
  2102. + compatible = "raspberrypi,rpi-firmware-kms";
  2103. + /* SMI interrupt reg */
  2104. + reg = <0x7e600000 0x100>;
  2105. + interrupts = <2 16>;
  2106. + brcm,firmware = <&firmware>;
  2107. + status = "disabled";
  2108. + };
  2109. +
  2110. + smi: smi@7e600000 {
  2111. + compatible = "brcm,bcm2835-smi";
  2112. + reg = <0x7e600000 0x100>;
  2113. + interrupts = <2 16>;
  2114. + clocks = <&clocks BCM2835_CLOCK_SMI>;
  2115. + assigned-clocks = <&clocks BCM2835_CLOCK_SMI>;
  2116. + assigned-clock-rates = <125000000>;
  2117. + dmas = <&dma 4>;
  2118. + dma-names = "rx-tx";
  2119. + status = "disabled";
  2120. + };
  2121. +
  2122. + csi0: csi@7e800000 {
  2123. + compatible = "brcm,bcm2835-unicam";
  2124. + reg = <0x7e800000 0x800>,
  2125. + <0x7e802000 0x4>;
  2126. + interrupts = <2 6>;
  2127. + clocks = <&clocks BCM2835_CLOCK_CAM0>,
  2128. + <&firmware_clocks 4>;
  2129. + clock-names = "lp", "vpu";
  2130. + power-domains = <&power RPI_POWER_DOMAIN_UNICAM0>;
  2131. + #address-cells = <1>;
  2132. + #size-cells = <0>;
  2133. + #clock-cells = <1>;
  2134. + status = "disabled";
  2135. + };
  2136. +
  2137. + csi1: csi@7e801000 {
  2138. + compatible = "brcm,bcm2835-unicam";
  2139. + reg = <0x7e801000 0x800>,
  2140. + <0x7e802004 0x4>;
  2141. + interrupts = <2 7>;
  2142. + clocks = <&clocks BCM2835_CLOCK_CAM1>,
  2143. + <&firmware_clocks 4>;
  2144. + clock-names = "lp", "vpu";
  2145. + power-domains = <&power RPI_POWER_DOMAIN_UNICAM1>;
  2146. + #address-cells = <1>;
  2147. + #size-cells = <0>;
  2148. + #clock-cells = <1>;
  2149. + status = "disabled";
  2150. + };
  2151. +
  2152. +#ifndef BCM2711
  2153. + pixelvalve2: pixelvalve@7e807000 {
  2154. + /* Add label */
  2155. + status = "disabled";
  2156. + };
  2157. +#endif
  2158. +
  2159. + hdmi@7e902000 { /* hdmi */
  2160. + status = "disabled";
  2161. + };
  2162. +
  2163. + usb@7e980000 { /* usb */
  2164. + compatible = "brcm,bcm2708-usb";
  2165. + reg = <0x7e980000 0x10000>,
  2166. + <0x7e006000 0x1000>;
  2167. + interrupt-names = "usb",
  2168. + "soft";
  2169. + interrupts = <1 9>,
  2170. + <2 0>;
  2171. + };
  2172. +
  2173. +#ifndef BCM2711
  2174. + v3d@7ec00000 { /* vd3 */
  2175. + compatible = "brcm,vc4-v3d";
  2176. + power-domains = <&power RPI_POWER_DOMAIN_V3D>;
  2177. + status = "disabled";
  2178. + };
  2179. +#endif
  2180. +
  2181. + axiperf: axiperf {
  2182. + compatible = "brcm,bcm2835-axiperf";
  2183. + reg = <0x7e009800 0x100>,
  2184. + <0x7ee08000 0x100>;
  2185. + firmware = <&firmware>;
  2186. + status = "disabled";
  2187. + };
  2188. + };
  2189. +
  2190. + __overrides__ {
  2191. + cam0-pwdn-ctrl;
  2192. + cam0-pwdn;
  2193. + cam0-led-ctrl;
  2194. + cam0-led;
  2195. + };
  2196. +};
  2197. +
  2198. +&gpio {
  2199. + interrupts = <2 17>, <2 18>;
  2200. +
  2201. + dpi_18bit_cpadhi_gpio0: dpi_18bit_cpadhi_gpio0 {
  2202. + brcm,pins = <0 1 2 3 4 5 6 7 8 9
  2203. + 12 13 14 15 16 17
  2204. + 20 21 22 23 24 25>;
  2205. + brcm,function = <BCM2835_FSEL_ALT2>;
  2206. + brcm,pull = <0>; /* no pull */
  2207. + };
  2208. + dpi_18bit_cpadhi_gpio2: dpi_18bit_cpadhi_gpio2 {
  2209. + brcm,pins = <2 3 4 5 6 7 8 9
  2210. + 12 13 14 15 16 17
  2211. + 20 21 22 23 24 25>;
  2212. + brcm,function = <BCM2835_FSEL_ALT2>;
  2213. + };
  2214. + dpi_18bit_gpio0: dpi_18bit_gpio0 {
  2215. + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
  2216. + 12 13 14 15 16 17 18 19
  2217. + 20 21>;
  2218. + brcm,function = <BCM2835_FSEL_ALT2>;
  2219. + };
  2220. + dpi_18bit_gpio2: dpi_18bit_gpio2 {
  2221. + brcm,pins = <2 3 4 5 6 7 8 9 10 11
  2222. + 12 13 14 15 16 17 18 19
  2223. + 20 21>;
  2224. + brcm,function = <BCM2835_FSEL_ALT2>;
  2225. + };
  2226. +};
  2227. +
  2228. +&uart0 {
  2229. + /* Enable CTS bug workaround */
  2230. + cts-event-workaround;
  2231. +};
  2232. +
  2233. +&i2s {
  2234. + #sound-dai-cells = <0>;
  2235. + dmas = <&dma 2>, <&dma 3>;
  2236. + dma-names = "tx", "rx";
  2237. +};
  2238. +
  2239. +&sdhost {
  2240. + dmas = <&dma (13|(1<<29))>;
  2241. + dma-names = "rx-tx";
  2242. + bus-width = <4>;
  2243. + brcm,overclock-50 = <0>;
  2244. + brcm,pio-limit = <1>;
  2245. + firmware = <&firmware>;
  2246. +};
  2247. +
  2248. +&spi0 {
  2249. + dmas = <&dma 6>, <&dma 7>;
  2250. + dma-names = "tx", "rx";
  2251. +};
  2252. diff --git a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
  2253. new file mode 100644
  2254. index 000000000000..ae9db1b1be1b
  2255. --- /dev/null
  2256. +++ b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
  2257. @@ -0,0 +1,129 @@
  2258. +/dts-v1/;
  2259. +
  2260. +#include "bcm2710.dtsi"
  2261. +#include "bcm2709-rpi.dtsi"
  2262. +#include "bcm283x-rpi-smsc9514.dtsi"
  2263. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  2264. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  2265. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  2266. +
  2267. +/ {
  2268. + compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
  2269. + model = "Raspberry Pi 2 Model B rev 1.2";
  2270. +};
  2271. +
  2272. +&gpio {
  2273. + spi0_pins: spi0_pins {
  2274. + brcm,pins = <9 10 11>;
  2275. + brcm,function = <4>; /* alt0 */
  2276. + };
  2277. +
  2278. + spi0_cs_pins: spi0_cs_pins {
  2279. + brcm,pins = <8 7>;
  2280. + brcm,function = <1>; /* output */
  2281. + };
  2282. +
  2283. + i2c0_pins: i2c0 {
  2284. + brcm,pins = <0 1>;
  2285. + brcm,function = <4>;
  2286. + };
  2287. +
  2288. + i2c1_pins: i2c1 {
  2289. + brcm,pins = <2 3>;
  2290. + brcm,function = <4>;
  2291. + };
  2292. +
  2293. + i2s_pins: i2s {
  2294. + brcm,pins = <18 19 20 21>;
  2295. + brcm,function = <4>; /* alt0 */
  2296. + };
  2297. +
  2298. + audio_pins: audio_pins {
  2299. + brcm,pins = <40 45>;
  2300. + brcm,function = <4>;
  2301. + };
  2302. +};
  2303. +
  2304. +&uart0 {
  2305. + status = "okay";
  2306. +};
  2307. +
  2308. +&spi0 {
  2309. + pinctrl-names = "default";
  2310. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  2311. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  2312. +
  2313. + spidev0: spidev@0{
  2314. + compatible = "spidev";
  2315. + reg = <0>; /* CE0 */
  2316. + #address-cells = <1>;
  2317. + #size-cells = <0>;
  2318. + spi-max-frequency = <125000000>;
  2319. + };
  2320. +
  2321. + spidev1: spidev@1{
  2322. + compatible = "spidev";
  2323. + reg = <1>; /* CE1 */
  2324. + #address-cells = <1>;
  2325. + #size-cells = <0>;
  2326. + spi-max-frequency = <125000000>;
  2327. + };
  2328. +};
  2329. +
  2330. +&i2c0if {
  2331. + clock-frequency = <100000>;
  2332. +};
  2333. +
  2334. +&i2c1 {
  2335. + pinctrl-names = "default";
  2336. + pinctrl-0 = <&i2c1_pins>;
  2337. + clock-frequency = <100000>;
  2338. +};
  2339. +
  2340. +&i2c2 {
  2341. + clock-frequency = <100000>;
  2342. +};
  2343. +
  2344. +&i2s {
  2345. + pinctrl-names = "default";
  2346. + pinctrl-0 = <&i2s_pins>;
  2347. +};
  2348. +
  2349. +&leds {
  2350. + act_led: led-act {
  2351. + label = "led0";
  2352. + linux,default-trigger = "mmc0";
  2353. + gpios = <&gpio 47 0>;
  2354. + };
  2355. +
  2356. + pwr_led: led-pwr {
  2357. + label = "led1";
  2358. + linux,default-trigger = "input";
  2359. + gpios = <&gpio 35 0>;
  2360. + };
  2361. +};
  2362. +
  2363. +&hdmi {
  2364. + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  2365. +};
  2366. +
  2367. +&audio {
  2368. + pinctrl-names = "default";
  2369. + pinctrl-0 = <&audio_pins>;
  2370. +};
  2371. +
  2372. +&cam1_reg {
  2373. + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
  2374. +};
  2375. +
  2376. +/ {
  2377. + __overrides__ {
  2378. + act_led_gpio = <&act_led>,"gpios:4";
  2379. + act_led_activelow = <&act_led>,"gpios:8";
  2380. + act_led_trigger = <&act_led>,"linux,default-trigger";
  2381. +
  2382. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  2383. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  2384. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  2385. + };
  2386. +};
  2387. diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
  2388. new file mode 100644
  2389. index 000000000000..7e12c05cc28b
  2390. --- /dev/null
  2391. +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
  2392. @@ -0,0 +1,201 @@
  2393. +/dts-v1/;
  2394. +
  2395. +#include "bcm2710.dtsi"
  2396. +#include "bcm2709-rpi.dtsi"
  2397. +#include "bcm283x-rpi-lan7515.dtsi"
  2398. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  2399. +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
  2400. +#include "bcm271x-rpi-bt.dtsi"
  2401. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  2402. +
  2403. +/ {
  2404. + compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
  2405. + model = "Raspberry Pi 3 Model B+";
  2406. +
  2407. + chosen {
  2408. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  2409. + };
  2410. +
  2411. + aliases {
  2412. + serial0 = &uart1;
  2413. + serial1 = &uart0;
  2414. + mmc1 = &mmcnr;
  2415. + };
  2416. +};
  2417. +
  2418. +&gpio {
  2419. + spi0_pins: spi0_pins {
  2420. + brcm,pins = <9 10 11>;
  2421. + brcm,function = <4>; /* alt0 */
  2422. + };
  2423. +
  2424. + spi0_cs_pins: spi0_cs_pins {
  2425. + brcm,pins = <8 7>;
  2426. + brcm,function = <1>; /* output */
  2427. + };
  2428. +
  2429. + i2c0_pins: i2c0 {
  2430. + brcm,pins = <0 1>;
  2431. + brcm,function = <4>;
  2432. + };
  2433. +
  2434. + i2c1_pins: i2c1 {
  2435. + brcm,pins = <2 3>;
  2436. + brcm,function = <4>;
  2437. + };
  2438. +
  2439. + i2s_pins: i2s {
  2440. + brcm,pins = <18 19 20 21>;
  2441. + brcm,function = <4>; /* alt0 */
  2442. + };
  2443. +
  2444. + sdio_pins: sdio_pins {
  2445. + brcm,pins = <34 35 36 37 38 39>;
  2446. + brcm,function = <7>; // alt3 = SD1
  2447. + brcm,pull = <0 2 2 2 2 2>;
  2448. + };
  2449. +
  2450. + bt_pins: bt_pins {
  2451. + brcm,pins = <43>;
  2452. + brcm,function = <4>; /* alt0:GPCLK2 */
  2453. + brcm,pull = <0>;
  2454. + };
  2455. +
  2456. + uart0_pins: uart0_pins {
  2457. + brcm,pins = <32 33>;
  2458. + brcm,function = <7>; /* alt3=UART0 */
  2459. + brcm,pull = <0 2>;
  2460. + };
  2461. +
  2462. + uart1_pins: uart1_pins {
  2463. + brcm,pins;
  2464. + brcm,function;
  2465. + brcm,pull;
  2466. + };
  2467. +
  2468. + audio_pins: audio_pins {
  2469. + brcm,pins = <40 41>;
  2470. + brcm,function = <4>;
  2471. + };
  2472. +};
  2473. +
  2474. +&mmcnr {
  2475. + pinctrl-names = "default";
  2476. + pinctrl-0 = <&sdio_pins>;
  2477. + bus-width = <4>;
  2478. + status = "okay";
  2479. +};
  2480. +
  2481. +&firmware {
  2482. + expgpio: expgpio {
  2483. + compatible = "raspberrypi,firmware-gpio";
  2484. + gpio-controller;
  2485. + #gpio-cells = <2>;
  2486. + status = "okay";
  2487. + };
  2488. +};
  2489. +
  2490. +&uart0 {
  2491. + pinctrl-names = "default";
  2492. + pinctrl-0 = <&uart0_pins &bt_pins>;
  2493. + status = "okay";
  2494. +};
  2495. +
  2496. +&uart1 {
  2497. + pinctrl-names = "default";
  2498. + pinctrl-0 = <&uart1_pins>;
  2499. + status = "okay";
  2500. +};
  2501. +
  2502. +&spi0 {
  2503. + pinctrl-names = "default";
  2504. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  2505. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  2506. +
  2507. + spidev0: spidev@0{
  2508. + compatible = "spidev";
  2509. + reg = <0>; /* CE0 */
  2510. + #address-cells = <1>;
  2511. + #size-cells = <0>;
  2512. + spi-max-frequency = <125000000>;
  2513. + };
  2514. +
  2515. + spidev1: spidev@1{
  2516. + compatible = "spidev";
  2517. + reg = <1>; /* CE1 */
  2518. + #address-cells = <1>;
  2519. + #size-cells = <0>;
  2520. + spi-max-frequency = <125000000>;
  2521. + };
  2522. +};
  2523. +
  2524. +&i2c0if {
  2525. + clock-frequency = <100000>;
  2526. +};
  2527. +
  2528. +&i2c1 {
  2529. + pinctrl-names = "default";
  2530. + pinctrl-0 = <&i2c1_pins>;
  2531. + clock-frequency = <100000>;
  2532. +};
  2533. +
  2534. +&i2c2 {
  2535. + clock-frequency = <100000>;
  2536. +};
  2537. +
  2538. +&i2s {
  2539. + pinctrl-names = "default";
  2540. + pinctrl-0 = <&i2s_pins>;
  2541. +};
  2542. +
  2543. +&leds {
  2544. + act_led: led-act {
  2545. + label = "led0";
  2546. + linux,default-trigger = "mmc0";
  2547. + gpios = <&gpio 29 0>;
  2548. + };
  2549. +
  2550. + pwr_led: led-pwr {
  2551. + label = "led1";
  2552. + linux,default-trigger = "default-on";
  2553. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  2554. + };
  2555. +};
  2556. +
  2557. +&hdmi {
  2558. + hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
  2559. +};
  2560. +
  2561. +&audio {
  2562. + pinctrl-names = "default";
  2563. + pinctrl-0 = <&audio_pins>;
  2564. +};
  2565. +
  2566. +&eth_phy {
  2567. + microchip,eee-enabled;
  2568. + microchip,tx-lpi-timer = <600>; /* non-aggressive*/
  2569. + microchip,downshift-after = <2>;
  2570. +};
  2571. +
  2572. +&cam1_reg {
  2573. + gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
  2574. +};
  2575. +
  2576. +/ {
  2577. + __overrides__ {
  2578. + act_led_gpio = <&act_led>,"gpios:4";
  2579. + act_led_activelow = <&act_led>,"gpios:8";
  2580. + act_led_trigger = <&act_led>,"linux,default-trigger";
  2581. +
  2582. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  2583. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  2584. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  2585. +
  2586. + eee = <&eth_phy>,"microchip,eee-enabled?";
  2587. + tx_lpi_timer = <&eth_phy>,"microchip,tx-lpi-timer:0";
  2588. + eth_led0 = <&eth_phy>,"microchip,led-modes:0";
  2589. + eth_led1 = <&eth_phy>,"microchip,led-modes:4";
  2590. + eth_downshift_after = <&eth_phy>,"microchip,downshift-after:0";
  2591. + eth_max_speed = <&eth_phy>,"max-speed:0";
  2592. + };
  2593. +};
  2594. diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
  2595. new file mode 100644
  2596. index 000000000000..d40722ddc286
  2597. --- /dev/null
  2598. +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
  2599. @@ -0,0 +1,203 @@
  2600. +/dts-v1/;
  2601. +
  2602. +#include "bcm2710.dtsi"
  2603. +#include "bcm2709-rpi.dtsi"
  2604. +#include "bcm283x-rpi-smsc9514.dtsi"
  2605. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  2606. +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
  2607. +#include "bcm271x-rpi-bt.dtsi"
  2608. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  2609. +
  2610. +/ {
  2611. + compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
  2612. + model = "Raspberry Pi 3 Model B";
  2613. +
  2614. + chosen {
  2615. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  2616. + };
  2617. +
  2618. + aliases {
  2619. + serial0 = &uart1;
  2620. + serial1 = &uart0;
  2621. + mmc1 = &mmcnr;
  2622. + };
  2623. +};
  2624. +
  2625. +&gpio {
  2626. + spi0_pins: spi0_pins {
  2627. + brcm,pins = <9 10 11>;
  2628. + brcm,function = <4>; /* alt0 */
  2629. + };
  2630. +
  2631. + spi0_cs_pins: spi0_cs_pins {
  2632. + brcm,pins = <8 7>;
  2633. + brcm,function = <1>; /* output */
  2634. + };
  2635. +
  2636. + i2c0_pins: i2c0 {
  2637. + brcm,pins = <0 1>;
  2638. + brcm,function = <4>;
  2639. + };
  2640. +
  2641. + i2c1_pins: i2c1 {
  2642. + brcm,pins = <2 3>;
  2643. + brcm,function = <4>;
  2644. + };
  2645. +
  2646. + i2s_pins: i2s {
  2647. + brcm,pins = <18 19 20 21>;
  2648. + brcm,function = <4>; /* alt0 */
  2649. + };
  2650. +
  2651. + sdio_pins: sdio_pins {
  2652. + brcm,pins = <34 35 36 37 38 39>;
  2653. + brcm,function = <7>; // alt3 = SD1
  2654. + brcm,pull = <0 2 2 2 2 2>;
  2655. + };
  2656. +
  2657. + bt_pins: bt_pins {
  2658. + brcm,pins = <43>;
  2659. + brcm,function = <4>; /* alt0:GPCLK2 */
  2660. + brcm,pull = <0>;
  2661. + };
  2662. +
  2663. + uart0_pins: uart0_pins {
  2664. + brcm,pins = <32 33>;
  2665. + brcm,function = <7>; /* alt3=UART0 */
  2666. + brcm,pull = <0 2>;
  2667. + };
  2668. +
  2669. + uart1_pins: uart1_pins {
  2670. + brcm,pins;
  2671. + brcm,function;
  2672. + brcm,pull;
  2673. + };
  2674. +
  2675. + audio_pins: audio_pins {
  2676. + brcm,pins = <40 41>;
  2677. + brcm,function = <4>;
  2678. + };
  2679. +};
  2680. +
  2681. +&mmcnr {
  2682. + pinctrl-names = "default";
  2683. + pinctrl-0 = <&sdio_pins>;
  2684. + bus-width = <4>;
  2685. + status = "okay";
  2686. +};
  2687. +
  2688. +&soc {
  2689. + virtgpio: virtgpio {
  2690. + compatible = "brcm,bcm2835-virtgpio";
  2691. + gpio-controller;
  2692. + #gpio-cells = <2>;
  2693. + firmware = <&firmware>;
  2694. + status = "okay";
  2695. + };
  2696. +
  2697. +};
  2698. +
  2699. +&firmware {
  2700. + expgpio: expgpio {
  2701. + compatible = "raspberrypi,firmware-gpio";
  2702. + gpio-controller;
  2703. + #gpio-cells = <2>;
  2704. + status = "okay";
  2705. + };
  2706. +};
  2707. +
  2708. +&uart0 {
  2709. + pinctrl-names = "default";
  2710. + pinctrl-0 = <&uart0_pins &bt_pins>;
  2711. + status = "okay";
  2712. +};
  2713. +
  2714. +&uart1 {
  2715. + pinctrl-names = "default";
  2716. + pinctrl-0 = <&uart1_pins>;
  2717. + status = "okay";
  2718. +};
  2719. +
  2720. +&bt {
  2721. + max-speed = <921600>;
  2722. +};
  2723. +
  2724. +&spi0 {
  2725. + pinctrl-names = "default";
  2726. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  2727. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  2728. +
  2729. + spidev0: spidev@0{
  2730. + compatible = "spidev";
  2731. + reg = <0>; /* CE0 */
  2732. + #address-cells = <1>;
  2733. + #size-cells = <0>;
  2734. + spi-max-frequency = <125000000>;
  2735. + };
  2736. +
  2737. + spidev1: spidev@1{
  2738. + compatible = "spidev";
  2739. + reg = <1>; /* CE1 */
  2740. + #address-cells = <1>;
  2741. + #size-cells = <0>;
  2742. + spi-max-frequency = <125000000>;
  2743. + };
  2744. +};
  2745. +
  2746. +&i2c0if {
  2747. + clock-frequency = <100000>;
  2748. +};
  2749. +
  2750. +&i2c1 {
  2751. + pinctrl-names = "default";
  2752. + pinctrl-0 = <&i2c1_pins>;
  2753. + clock-frequency = <100000>;
  2754. +};
  2755. +
  2756. +&i2c2 {
  2757. + clock-frequency = <100000>;
  2758. +};
  2759. +
  2760. +&i2s {
  2761. + pinctrl-names = "default";
  2762. + pinctrl-0 = <&i2s_pins>;
  2763. +};
  2764. +
  2765. +&leds {
  2766. + act_led: led-act {
  2767. + label = "led0";
  2768. + linux,default-trigger = "mmc0";
  2769. + gpios = <&virtgpio 0 0>;
  2770. + };
  2771. +
  2772. + pwr_led: led-pwr {
  2773. + label = "led1";
  2774. + linux,default-trigger = "input";
  2775. + gpios = <&expgpio 7 0>;
  2776. + };
  2777. +};
  2778. +
  2779. +&hdmi {
  2780. + hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
  2781. +};
  2782. +
  2783. +&audio {
  2784. + pinctrl-names = "default";
  2785. + pinctrl-0 = <&audio_pins>;
  2786. +};
  2787. +
  2788. +&cam1_reg {
  2789. + gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
  2790. +};
  2791. +
  2792. +/ {
  2793. + __overrides__ {
  2794. + act_led_gpio = <&act_led>,"gpios:4";
  2795. + act_led_activelow = <&act_led>,"gpios:8";
  2796. + act_led_trigger = <&act_led>,"linux,default-trigger";
  2797. +
  2798. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  2799. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  2800. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  2801. + };
  2802. +};
  2803. diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
  2804. new file mode 100644
  2805. index 000000000000..c386a855cdc3
  2806. --- /dev/null
  2807. +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
  2808. @@ -0,0 +1,148 @@
  2809. +/dts-v1/;
  2810. +
  2811. +#include "bcm2710.dtsi"
  2812. +#include "bcm2709-rpi.dtsi"
  2813. +#include "bcm283x-rpi-csi0-2lane.dtsi"
  2814. +#include "bcm283x-rpi-csi1-4lane.dtsi"
  2815. +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
  2816. +/ {
  2817. + compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
  2818. + model = "Raspberry Pi Compute Module 3";
  2819. +
  2820. + cam1_reg: cam1_reg {
  2821. + compatible = "regulator-fixed";
  2822. + regulator-name = "cam1-regulator";
  2823. + gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
  2824. + enable-active-high;
  2825. + status = "disabled";
  2826. + };
  2827. + cam0_reg: cam0_reg {
  2828. + compatible = "regulator-fixed";
  2829. + regulator-name = "cam0-regulator";
  2830. + gpio = <&gpio 30 GPIO_ACTIVE_HIGH>;
  2831. + enable-active-high;
  2832. + status = "disabled";
  2833. + };
  2834. +};
  2835. +
  2836. +&uart0 {
  2837. + status = "okay";
  2838. +};
  2839. +
  2840. +&gpio {
  2841. + spi0_pins: spi0_pins {
  2842. + brcm,pins = <9 10 11>;
  2843. + brcm,function = <4>; /* alt0 */
  2844. + };
  2845. +
  2846. + spi0_cs_pins: spi0_cs_pins {
  2847. + brcm,pins = <8 7>;
  2848. + brcm,function = <1>; /* output */
  2849. + };
  2850. +
  2851. + i2c0_pins: i2c0 {
  2852. + brcm,pins = <0 1>;
  2853. + brcm,function = <4>;
  2854. + };
  2855. +
  2856. + i2c1_pins: i2c1 {
  2857. + brcm,pins = <2 3>;
  2858. + brcm,function = <4>;
  2859. + };
  2860. +
  2861. + i2s_pins: i2s {
  2862. + brcm,pins = <18 19 20 21>;
  2863. + brcm,function = <4>; /* alt0 */
  2864. + };
  2865. +
  2866. + audio_pins: audio_pins {
  2867. + brcm,pins;
  2868. + brcm,function;
  2869. + };
  2870. +};
  2871. +
  2872. +&soc {
  2873. + virtgpio: virtgpio {
  2874. + compatible = "brcm,bcm2835-virtgpio";
  2875. + gpio-controller;
  2876. + #gpio-cells = <2>;
  2877. + firmware = <&firmware>;
  2878. + status = "okay";
  2879. + };
  2880. +
  2881. +};
  2882. +
  2883. +&firmware {
  2884. + expgpio: expgpio {
  2885. + compatible = "raspberrypi,firmware-gpio";
  2886. + gpio-controller;
  2887. + #gpio-cells = <2>;
  2888. + status = "okay";
  2889. + };
  2890. +};
  2891. +
  2892. +&spi0 {
  2893. + pinctrl-names = "default";
  2894. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  2895. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  2896. +
  2897. + spidev0: spidev@0{
  2898. + compatible = "spidev";
  2899. + reg = <0>; /* CE0 */
  2900. + #address-cells = <1>;
  2901. + #size-cells = <0>;
  2902. + spi-max-frequency = <125000000>;
  2903. + };
  2904. +
  2905. + spidev1: spidev@1{
  2906. + compatible = "spidev";
  2907. + reg = <1>; /* CE1 */
  2908. + #address-cells = <1>;
  2909. + #size-cells = <0>;
  2910. + spi-max-frequency = <125000000>;
  2911. + };
  2912. +};
  2913. +
  2914. +&i2c0if {
  2915. + clock-frequency = <100000>;
  2916. +};
  2917. +
  2918. +&i2c1 {
  2919. + pinctrl-names = "default";
  2920. + pinctrl-0 = <&i2c1_pins>;
  2921. + clock-frequency = <100000>;
  2922. +};
  2923. +
  2924. +&i2c2 {
  2925. + clock-frequency = <100000>;
  2926. +};
  2927. +
  2928. +&i2s {
  2929. + pinctrl-names = "default";
  2930. + pinctrl-0 = <&i2s_pins>;
  2931. +};
  2932. +
  2933. +&leds {
  2934. + act_led: led-act {
  2935. + label = "led0";
  2936. + linux,default-trigger = "mmc0";
  2937. + gpios = <&virtgpio 0 0>;
  2938. + };
  2939. +};
  2940. +
  2941. +&hdmi {
  2942. + hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
  2943. +};
  2944. +
  2945. +&audio {
  2946. + pinctrl-names = "default";
  2947. + pinctrl-0 = <&audio_pins>;
  2948. +};
  2949. +
  2950. +/ {
  2951. + __overrides__ {
  2952. + act_led_gpio = <&act_led>,"gpios:4";
  2953. + act_led_activelow = <&act_led>,"gpios:8";
  2954. + act_led_trigger = <&act_led>,"linux,default-trigger";
  2955. + };
  2956. +};
  2957. diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi
  2958. new file mode 100644
  2959. index 000000000000..e7e5c913f1d1
  2960. --- /dev/null
  2961. +++ b/arch/arm/boot/dts/bcm2710.dtsi
  2962. @@ -0,0 +1,25 @@
  2963. +#include "bcm2837.dtsi"
  2964. +#include "bcm270x.dtsi"
  2965. +
  2966. +/ {
  2967. + compatible = "brcm,bcm2837", "brcm,bcm2836";
  2968. +
  2969. + arm-pmu {
  2970. + compatible = "arm,cortex-a53-pmu", "arm,cortex-a7-pmu";
  2971. + };
  2972. +
  2973. + soc {
  2974. + /delete-node/ timer@7e003000;
  2975. + };
  2976. +
  2977. + __overrides__ {
  2978. + arm_freq = <&cpu0>, "clock-frequency:0",
  2979. + <&cpu1>, "clock-frequency:0",
  2980. + <&cpu2>, "clock-frequency:0",
  2981. + <&cpu3>, "clock-frequency:0";
  2982. + };
  2983. +};
  2984. +
  2985. +&vc4 {
  2986. + status = "disabled";
  2987. +};
  2988. diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
  2989. index 72ce80fbf266..f6e0247f7d1b 100644
  2990. --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
  2991. +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
  2992. @@ -2,7 +2,7 @@
  2993. /dts-v1/;
  2994. #include "bcm2711.dtsi"
  2995. #include "bcm2711-rpi.dtsi"
  2996. -#include "bcm283x-rpi-usb-peripheral.dtsi"
  2997. +//#include "bcm283x-rpi-usb-peripheral.dtsi"
  2998. / {
  2999. compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
  3000. @@ -72,7 +72,7 @@ &expgpio {
  3001. "VDD_SD_IO_SEL",
  3002. "CAM_GPIO",
  3003. "SD_PWR_ON",
  3004. - "";
  3005. + "SD_OC_N";
  3006. };
  3007. &gpio {
  3008. @@ -260,3 +260,309 @@ &vc4 {
  3009. &vec {
  3010. status = "disabled";
  3011. };
  3012. +
  3013. +// =============================================
  3014. +// Downstream rpi- changes
  3015. +
  3016. +#define BCM2711
  3017. +
  3018. +#include "bcm270x.dtsi"
  3019. +#include "bcm271x-rpi-bt.dtsi"
  3020. +
  3021. +/ {
  3022. + soc {
  3023. + /delete-node/ pixelvalve@7e807000;
  3024. + /delete-node/ hdmi@7e902000;
  3025. + };
  3026. +};
  3027. +
  3028. +#include "bcm2711-rpi-ds.dtsi"
  3029. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  3030. +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
  3031. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  3032. +
  3033. +/ {
  3034. + chosen {
  3035. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  3036. + };
  3037. +
  3038. + aliases {
  3039. + serial0 = &uart1;
  3040. + serial1 = &uart0;
  3041. + mmc0 = &emmc2;
  3042. + mmc1 = &mmcnr;
  3043. + mmc2 = &sdhost;
  3044. + i2c3 = &i2c3;
  3045. + i2c4 = &i2c4;
  3046. + i2c5 = &i2c5;
  3047. + i2c6 = &i2c6;
  3048. + i2c20 = &ddc0;
  3049. + i2c21 = &ddc1;
  3050. + spi3 = &spi3;
  3051. + spi4 = &spi4;
  3052. + spi5 = &spi5;
  3053. + spi6 = &spi6;
  3054. + /delete-property/ intc;
  3055. + };
  3056. +
  3057. + /delete-node/ wifi-pwrseq;
  3058. +};
  3059. +
  3060. +&mmcnr {
  3061. + pinctrl-names = "default";
  3062. + pinctrl-0 = <&sdio_pins>;
  3063. + bus-width = <4>;
  3064. + status = "okay";
  3065. +};
  3066. +
  3067. +&uart0 {
  3068. + pinctrl-0 = <&uart0_pins &bt_pins>;
  3069. + status = "okay";
  3070. +};
  3071. +
  3072. +&uart1 {
  3073. + pinctrl-0 = <&uart1_pins>;
  3074. +};
  3075. +
  3076. +&spi0 {
  3077. + pinctrl-names = "default";
  3078. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  3079. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  3080. +
  3081. + spidev0: spidev@0{
  3082. + compatible = "spidev";
  3083. + reg = <0>; /* CE0 */
  3084. + #address-cells = <1>;
  3085. + #size-cells = <0>;
  3086. + spi-max-frequency = <125000000>;
  3087. + };
  3088. +
  3089. + spidev1: spidev@1{
  3090. + compatible = "spidev";
  3091. + reg = <1>; /* CE1 */
  3092. + #address-cells = <1>;
  3093. + #size-cells = <0>;
  3094. + spi-max-frequency = <125000000>;
  3095. + };
  3096. +};
  3097. +
  3098. +&gpio {
  3099. + spi0_pins: spi0_pins {
  3100. + brcm,pins = <9 10 11>;
  3101. + brcm,function = <BCM2835_FSEL_ALT0>;
  3102. + };
  3103. +
  3104. + spi0_cs_pins: spi0_cs_pins {
  3105. + brcm,pins = <8 7>;
  3106. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3107. + };
  3108. +
  3109. + spi3_pins: spi3_pins {
  3110. + brcm,pins = <1 2 3>;
  3111. + brcm,function = <BCM2835_FSEL_ALT3>;
  3112. + };
  3113. +
  3114. + spi3_cs_pins: spi3_cs_pins {
  3115. + brcm,pins = <0 24>;
  3116. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3117. + };
  3118. +
  3119. + spi4_pins: spi4_pins {
  3120. + brcm,pins = <5 6 7>;
  3121. + brcm,function = <BCM2835_FSEL_ALT3>;
  3122. + };
  3123. +
  3124. + spi4_cs_pins: spi4_cs_pins {
  3125. + brcm,pins = <4 25>;
  3126. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3127. + };
  3128. +
  3129. + spi5_pins: spi5_pins {
  3130. + brcm,pins = <13 14 15>;
  3131. + brcm,function = <BCM2835_FSEL_ALT3>;
  3132. + };
  3133. +
  3134. + spi5_cs_pins: spi5_cs_pins {
  3135. + brcm,pins = <12 26>;
  3136. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3137. + };
  3138. +
  3139. + spi6_pins: spi6_pins {
  3140. + brcm,pins = <19 20 21>;
  3141. + brcm,function = <BCM2835_FSEL_ALT3>;
  3142. + };
  3143. +
  3144. + spi6_cs_pins: spi6_cs_pins {
  3145. + brcm,pins = <18 27>;
  3146. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3147. + };
  3148. +
  3149. + i2c0_pins: i2c0 {
  3150. + brcm,pins = <0 1>;
  3151. + brcm,function = <BCM2835_FSEL_ALT0>;
  3152. + brcm,pull = <BCM2835_PUD_UP>;
  3153. + };
  3154. +
  3155. + i2c1_pins: i2c1 {
  3156. + brcm,pins = <2 3>;
  3157. + brcm,function = <BCM2835_FSEL_ALT0>;
  3158. + brcm,pull = <BCM2835_PUD_UP>;
  3159. + };
  3160. +
  3161. + i2c3_pins: i2c3 {
  3162. + brcm,pins = <4 5>;
  3163. + brcm,function = <BCM2835_FSEL_ALT5>;
  3164. + brcm,pull = <BCM2835_PUD_UP>;
  3165. + };
  3166. +
  3167. + i2c4_pins: i2c4 {
  3168. + brcm,pins = <8 9>;
  3169. + brcm,function = <BCM2835_FSEL_ALT5>;
  3170. + brcm,pull = <BCM2835_PUD_UP>;
  3171. + };
  3172. +
  3173. + i2c5_pins: i2c5 {
  3174. + brcm,pins = <12 13>;
  3175. + brcm,function = <BCM2835_FSEL_ALT5>;
  3176. + brcm,pull = <BCM2835_PUD_UP>;
  3177. + };
  3178. +
  3179. + i2c6_pins: i2c6 {
  3180. + brcm,pins = <22 23>;
  3181. + brcm,function = <BCM2835_FSEL_ALT5>;
  3182. + brcm,pull = <BCM2835_PUD_UP>;
  3183. + };
  3184. +
  3185. + i2s_pins: i2s {
  3186. + brcm,pins = <18 19 20 21>;
  3187. + brcm,function = <BCM2835_FSEL_ALT0>;
  3188. + };
  3189. +
  3190. + sdio_pins: sdio_pins {
  3191. + brcm,pins = <34 35 36 37 38 39>;
  3192. + brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
  3193. + brcm,pull = <0 2 2 2 2 2>;
  3194. + };
  3195. +
  3196. + bt_pins: bt_pins {
  3197. + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
  3198. + // to fool pinctrl
  3199. + brcm,function = <0>;
  3200. + brcm,pull = <2>;
  3201. + };
  3202. +
  3203. + uart0_pins: uart0_pins {
  3204. + brcm,pins = <32 33>;
  3205. + brcm,function = <BCM2835_FSEL_ALT3>;
  3206. + brcm,pull = <0 2>;
  3207. + };
  3208. +
  3209. + uart1_pins: uart1_pins {
  3210. + brcm,pins;
  3211. + brcm,function;
  3212. + brcm,pull;
  3213. + };
  3214. +
  3215. + uart2_pins: uart2_pins {
  3216. + brcm,pins = <0 1>;
  3217. + brcm,function = <BCM2835_FSEL_ALT4>;
  3218. + brcm,pull = <0 2>;
  3219. + };
  3220. +
  3221. + uart3_pins: uart3_pins {
  3222. + brcm,pins = <4 5>;
  3223. + brcm,function = <BCM2835_FSEL_ALT4>;
  3224. + brcm,pull = <0 2>;
  3225. + };
  3226. +
  3227. + uart4_pins: uart4_pins {
  3228. + brcm,pins = <8 9>;
  3229. + brcm,function = <BCM2835_FSEL_ALT4>;
  3230. + brcm,pull = <0 2>;
  3231. + };
  3232. +
  3233. + uart5_pins: uart5_pins {
  3234. + brcm,pins = <12 13>;
  3235. + brcm,function = <BCM2835_FSEL_ALT4>;
  3236. + brcm,pull = <0 2>;
  3237. + };
  3238. +};
  3239. +
  3240. +&i2c0if {
  3241. + clock-frequency = <100000>;
  3242. +};
  3243. +
  3244. +&i2c1 {
  3245. + pinctrl-names = "default";
  3246. + pinctrl-0 = <&i2c1_pins>;
  3247. + clock-frequency = <100000>;
  3248. +};
  3249. +
  3250. +&i2s {
  3251. + pinctrl-names = "default";
  3252. + pinctrl-0 = <&i2s_pins>;
  3253. +};
  3254. +
  3255. +// =============================================
  3256. +// Board specific stuff here
  3257. +
  3258. +&sdhost {
  3259. + status = "disabled";
  3260. +};
  3261. +
  3262. +&phy1 {
  3263. + led-modes = <0x00 0x08>; /* link/activity link */
  3264. +};
  3265. +
  3266. +&gpio {
  3267. + audio_pins: audio_pins {
  3268. + brcm,pins = <40 41>;
  3269. + brcm,function = <4>;
  3270. + };
  3271. +};
  3272. +
  3273. +&leds {
  3274. + act_led: led-act {
  3275. + label = "led0";
  3276. + linux,default-trigger = "mmc0";
  3277. + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  3278. + };
  3279. +
  3280. + pwr_led: led-pwr {
  3281. + label = "led1";
  3282. + linux,default-trigger = "default-on";
  3283. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  3284. + };
  3285. +};
  3286. +
  3287. +&pwm1 {
  3288. + status = "disabled";
  3289. +};
  3290. +
  3291. +&audio {
  3292. + pinctrl-names = "default";
  3293. + pinctrl-0 = <&audio_pins>;
  3294. +};
  3295. +
  3296. +&cam1_reg {
  3297. + gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
  3298. +};
  3299. +
  3300. +/ {
  3301. + __overrides__ {
  3302. + act_led_gpio = <&act_led>,"gpios:4";
  3303. + act_led_activelow = <&act_led>,"gpios:8";
  3304. + act_led_trigger = <&act_led>,"linux,default-trigger";
  3305. +
  3306. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  3307. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  3308. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  3309. +
  3310. + eth_led0 = <&phy1>,"led-modes:0";
  3311. + eth_led1 = <&phy1>,"led-modes:4";
  3312. +
  3313. + sd_poll_once = <&emmc2>, "non-removable?";
  3314. + spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
  3315. + <&spi0>, "dmas:8=", <&dma40>;
  3316. + };
  3317. +};
  3318. diff --git a/arch/arm/boot/dts/bcm2711-rpi-400.dts b/arch/arm/boot/dts/bcm2711-rpi-400.dts
  3319. index f4d2fc20397c..bed192b085df 100644
  3320. --- a/arch/arm/boot/dts/bcm2711-rpi-400.dts
  3321. +++ b/arch/arm/boot/dts/bcm2711-rpi-400.dts
  3322. @@ -1,6 +1,9 @@
  3323. // SPDX-License-Identifier: GPL-2.0
  3324. /dts-v1/;
  3325. -#include "bcm2711-rpi-4-b.dts"
  3326. +#include "bcm2711.dtsi"
  3327. +#include "bcm2835-rpi.dtsi"
  3328. +
  3329. +#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
  3330. / {
  3331. compatible = "raspberrypi,400", "brcm,bcm2711";
  3332. @@ -11,35 +14,624 @@ chosen {
  3333. stdout-path = "serial1:115200n8";
  3334. };
  3335. + /* Will be filled by the bootloader */
  3336. + memory@0 {
  3337. + device_type = "memory";
  3338. + reg = <0 0 0>;
  3339. + };
  3340. +
  3341. + aliases {
  3342. + emmc2bus = &emmc2bus;
  3343. + ethernet0 = &genet;
  3344. + pcie0 = &pcie0;
  3345. + blconfig = &blconfig;
  3346. + };
  3347. +
  3348. leds {
  3349. - /delete-node/ led-act;
  3350. + led-act {
  3351. + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  3352. + };
  3353. led-pwr {
  3354. - gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  3355. + label = "PWR";
  3356. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  3357. + default-state = "keep";
  3358. + linux,default-trigger = "default-on";
  3359. + };
  3360. + };
  3361. +
  3362. + wifi_pwrseq: wifi-pwrseq {
  3363. + compatible = "mmc-pwrseq-simple";
  3364. + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
  3365. + };
  3366. +
  3367. + sd_io_1v8_reg: sd_io_1v8_reg {
  3368. + compatible = "regulator-gpio";
  3369. + regulator-name = "vdd-sd-io";
  3370. + regulator-min-microvolt = <1800000>;
  3371. + regulator-max-microvolt = <3300000>;
  3372. + regulator-boot-on;
  3373. + regulator-always-on;
  3374. + regulator-settling-time-us = <5000>;
  3375. + gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
  3376. + states = <1800000 0x1
  3377. + 3300000 0x0>;
  3378. + status = "okay";
  3379. + };
  3380. +
  3381. + sd_vcc_reg: sd_vcc_reg {
  3382. + compatible = "regulator-fixed";
  3383. + regulator-name = "vcc-sd";
  3384. + regulator-min-microvolt = <3300000>;
  3385. + regulator-max-microvolt = <3300000>;
  3386. + regulator-boot-on;
  3387. + enable-active-high;
  3388. + gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
  3389. + };
  3390. +};
  3391. +
  3392. +&ddc0 {
  3393. + status = "okay";
  3394. +};
  3395. +
  3396. +&ddc1 {
  3397. + status = "okay";
  3398. +};
  3399. +
  3400. +&firmware {
  3401. + firmware_clocks: clocks {
  3402. + compatible = "raspberrypi,firmware-clocks";
  3403. + #clock-cells = <1>;
  3404. + };
  3405. +
  3406. + expgpio: gpio {
  3407. + compatible = "raspberrypi,firmware-gpio";
  3408. + gpio-controller;
  3409. + #gpio-cells = <2>;
  3410. + gpio-line-names = "BT_ON",
  3411. + "WL_ON",
  3412. + "PWR_LED_OFF",
  3413. + "GLOBAL_RESET",
  3414. + "VDD_SD_IO_SEL",
  3415. + "GLOBAL_SHUTDOWN",
  3416. + "SD_PWR_ON",
  3417. + "SHUTDOWN_REQUEST";
  3418. + status = "okay";
  3419. + };
  3420. +
  3421. + reset: reset {
  3422. + compatible = "raspberrypi,firmware-reset";
  3423. + #reset-cells = <1>;
  3424. + };
  3425. +};
  3426. +
  3427. +&gpio {
  3428. + /*
  3429. + * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
  3430. + * the official GPU firmware DT blob.
  3431. + *
  3432. + * Legend:
  3433. + * "FOO" = GPIO line named "FOO" on the schematic
  3434. + * "FOO_N" = GPIO line named "FOO" on schematic, active low
  3435. + */
  3436. + gpio-line-names = "ID_SDA",
  3437. + "ID_SCL",
  3438. + "SDA1",
  3439. + "SCL1",
  3440. + "GPIO_GCLK",
  3441. + "GPIO5",
  3442. + "GPIO6",
  3443. + "SPI_CE1_N",
  3444. + "SPI_CE0_N",
  3445. + "SPI_MISO",
  3446. + "SPI_MOSI",
  3447. + "SPI_SCLK",
  3448. + "GPIO12",
  3449. + "GPIO13",
  3450. + /* Serial port */
  3451. + "TXD1",
  3452. + "RXD1",
  3453. + "GPIO16",
  3454. + "GPIO17",
  3455. + "GPIO18",
  3456. + "GPIO19",
  3457. + "GPIO20",
  3458. + "GPIO21",
  3459. + "GPIO22",
  3460. + "GPIO23",
  3461. + "GPIO24",
  3462. + "GPIO25",
  3463. + "GPIO26",
  3464. + "GPIO27",
  3465. + "RGMII_MDIO",
  3466. + "RGMIO_MDC",
  3467. + /* Used by BT module */
  3468. + "CTS0",
  3469. + "RTS0",
  3470. + "TXD0",
  3471. + "RXD0",
  3472. + /* Used by Wifi */
  3473. + "SD1_CLK",
  3474. + "SD1_CMD",
  3475. + "SD1_DATA0",
  3476. + "SD1_DATA1",
  3477. + "SD1_DATA2",
  3478. + "SD1_DATA3",
  3479. + /* Shared with SPI flash */
  3480. + "PWM0_MISO",
  3481. + "PWM1_MOSI",
  3482. + "STATUS_LED_G_CLK",
  3483. + "SPIFLASH_CE_N",
  3484. + "SDA0",
  3485. + "SCL0",
  3486. + "RGMII_RXCLK",
  3487. + "RGMII_RXCTL",
  3488. + "RGMII_RXD0",
  3489. + "RGMII_RXD1",
  3490. + "RGMII_RXD2",
  3491. + "RGMII_RXD3",
  3492. + "RGMII_TXCLK",
  3493. + "RGMII_TXCTL",
  3494. + "RGMII_TXD0",
  3495. + "RGMII_TXD1",
  3496. + "RGMII_TXD2",
  3497. + "RGMII_TXD3";
  3498. +};
  3499. +
  3500. +&hdmi0 {
  3501. + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
  3502. + clock-names = "hdmi", "bvb", "audio", "cec";
  3503. + wifi-2.4ghz-coexistence;
  3504. + status = "okay";
  3505. +};
  3506. +
  3507. +&hdmi1 {
  3508. + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
  3509. + clock-names = "hdmi", "bvb", "audio", "cec";
  3510. + wifi-2.4ghz-coexistence;
  3511. + status = "okay";
  3512. +};
  3513. +
  3514. +&hvs {
  3515. + clocks = <&firmware_clocks 4>;
  3516. +};
  3517. +
  3518. +&pixelvalve0 {
  3519. + status = "okay";
  3520. +};
  3521. +
  3522. +&pixelvalve1 {
  3523. + status = "okay";
  3524. +};
  3525. +
  3526. +&pixelvalve2 {
  3527. + status = "okay";
  3528. +};
  3529. +
  3530. +&pixelvalve4 {
  3531. + status = "okay";
  3532. +};
  3533. +
  3534. +&pwm1 {
  3535. + pinctrl-names = "default";
  3536. + pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
  3537. + status = "okay";
  3538. +};
  3539. +
  3540. +&rmem {
  3541. + /*
  3542. + * RPi4's co-processor will copy the board's bootloader configuration
  3543. + * into memory for the OS to consume. It'll also update this node with
  3544. + * its placement information.
  3545. + */
  3546. + blconfig: nvram@0 {
  3547. + compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
  3548. + #address-cells = <1>;
  3549. + #size-cells = <1>;
  3550. + reg = <0x0 0x0 0x0>;
  3551. + no-map;
  3552. + status = "disabled";
  3553. + };
  3554. +};
  3555. +
  3556. +/* SDHCI is used to control the SDIO for wireless */
  3557. +&sdhci {
  3558. + #address-cells = <1>;
  3559. + #size-cells = <0>;
  3560. + pinctrl-names = "default";
  3561. + pinctrl-0 = <&emmc_gpio34>;
  3562. + bus-width = <4>;
  3563. + non-removable;
  3564. + mmc-pwrseq = <&wifi_pwrseq>;
  3565. + status = "okay";
  3566. +
  3567. + brcmf: wifi@1 {
  3568. + reg = <1>;
  3569. + compatible = "brcm,bcm4329-fmac";
  3570. + };
  3571. +};
  3572. +
  3573. +/* EMMC2 is used to drive the SD card */
  3574. +&emmc2 {
  3575. + vqmmc-supply = <&sd_io_1v8_reg>;
  3576. + vmmc-supply = <&sd_vcc_reg>;
  3577. + broken-cd;
  3578. + status = "okay";
  3579. +};
  3580. +
  3581. +&genet {
  3582. + phy-handle = <&phy1>;
  3583. + phy-mode = "rgmii-rxid";
  3584. + status = "okay";
  3585. +};
  3586. +
  3587. +&genet_mdio {
  3588. + phy1: ethernet-phy@1 {
  3589. + /* No PHY interrupt */
  3590. + reg = <0x1>;
  3591. + };
  3592. +};
  3593. +
  3594. +&pcie0 {
  3595. + pci@0,0 {
  3596. + device-type = "pci";
  3597. + #address-cells = <3>;
  3598. + #size-cells = <2>;
  3599. + ranges;
  3600. +
  3601. + reg = <0 0 0 0 0>;
  3602. +
  3603. + usb@0,0 {
  3604. + reg = <0x0 0 0 0 0>;
  3605. + resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
  3606. };
  3607. };
  3608. +};
  3609. +
  3610. +/* uart0 communicates with the BT module */
  3611. +&uart0 {
  3612. + pinctrl-names = "default";
  3613. + pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
  3614. + uart-has-rtscts;
  3615. + status = "okay";
  3616. +
  3617. + bluetooth {
  3618. + compatible = "brcm,bcm43438-bt";
  3619. + max-speed = <2000000>;
  3620. + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
  3621. + };
  3622. +};
  3623. +
  3624. +/* uart1 is mapped to the pin header */
  3625. +&uart1 {
  3626. + pinctrl-names = "default";
  3627. + pinctrl-0 = <&uart1_gpio14>;
  3628. + status = "okay";
  3629. +};
  3630. +
  3631. +&vchiq {
  3632. + interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  3633. +};
  3634. +
  3635. +&vc4 {
  3636. + status = "okay";
  3637. +};
  3638. +
  3639. +&vec {
  3640. + status = "disabled";
  3641. +};
  3642. +
  3643. +// =============================================
  3644. +// Downstream rpi- changes
  3645. +
  3646. +#define BCM2711
  3647. +
  3648. +#include "bcm270x.dtsi"
  3649. +#include "bcm271x-rpi-bt.dtsi"
  3650. +
  3651. +/ {
  3652. + soc {
  3653. + /delete-node/ pixelvalve@7e807000;
  3654. + /delete-node/ hdmi@7e902000;
  3655. + };
  3656. +};
  3657. - gpio-poweroff {
  3658. +#include "bcm2711-rpi-ds.dtsi"
  3659. +#include "bcm283x-rpi-csi1-2lane.dtsi"
  3660. +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
  3661. +
  3662. +/ {
  3663. + chosen {
  3664. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  3665. + };
  3666. +
  3667. + aliases {
  3668. + serial0 = &uart1;
  3669. + serial1 = &uart0;
  3670. + mmc0 = &emmc2;
  3671. + mmc1 = &mmcnr;
  3672. + mmc2 = &sdhost;
  3673. + i2c3 = &i2c3;
  3674. + i2c4 = &i2c4;
  3675. + i2c5 = &i2c5;
  3676. + i2c6 = &i2c6;
  3677. + i2c20 = &ddc0;
  3678. + i2c21 = &ddc1;
  3679. + spi3 = &spi3;
  3680. + spi4 = &spi4;
  3681. + spi5 = &spi5;
  3682. + spi6 = &spi6;
  3683. + /delete-property/ intc;
  3684. + };
  3685. +
  3686. + /delete-node/ wifi-pwrseq;
  3687. +};
  3688. +
  3689. +&mmcnr {
  3690. + pinctrl-names = "default";
  3691. + pinctrl-0 = <&sdio_pins>;
  3692. + bus-width = <4>;
  3693. + status = "okay";
  3694. +};
  3695. +
  3696. +&uart0 {
  3697. + pinctrl-0 = <&uart0_pins &bt_pins>;
  3698. + status = "okay";
  3699. +};
  3700. +
  3701. +&uart1 {
  3702. + pinctrl-0 = <&uart1_pins>;
  3703. +};
  3704. +
  3705. +&spi0 {
  3706. + pinctrl-names = "default";
  3707. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  3708. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  3709. +
  3710. + spidev0: spidev@0{
  3711. + compatible = "spidev";
  3712. + reg = <0>; /* CE0 */
  3713. + #address-cells = <1>;
  3714. + #size-cells = <0>;
  3715. + spi-max-frequency = <125000000>;
  3716. + };
  3717. +
  3718. + spidev1: spidev@1{
  3719. + compatible = "spidev";
  3720. + reg = <1>; /* CE1 */
  3721. + #address-cells = <1>;
  3722. + #size-cells = <0>;
  3723. + spi-max-frequency = <125000000>;
  3724. + };
  3725. +};
  3726. +
  3727. +&gpio {
  3728. + spi0_pins: spi0_pins {
  3729. + brcm,pins = <9 10 11>;
  3730. + brcm,function = <BCM2835_FSEL_ALT0>;
  3731. + };
  3732. +
  3733. + spi0_cs_pins: spi0_cs_pins {
  3734. + brcm,pins = <8 7>;
  3735. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3736. + };
  3737. +
  3738. + spi3_pins: spi3_pins {
  3739. + brcm,pins = <1 2 3>;
  3740. + brcm,function = <BCM2835_FSEL_ALT3>;
  3741. + };
  3742. +
  3743. + spi3_cs_pins: spi3_cs_pins {
  3744. + brcm,pins = <0 24>;
  3745. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3746. + };
  3747. +
  3748. + spi4_pins: spi4_pins {
  3749. + brcm,pins = <5 6 7>;
  3750. + brcm,function = <BCM2835_FSEL_ALT3>;
  3751. + };
  3752. +
  3753. + spi4_cs_pins: spi4_cs_pins {
  3754. + brcm,pins = <4 25>;
  3755. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3756. + };
  3757. +
  3758. + spi5_pins: spi5_pins {
  3759. + brcm,pins = <13 14 15>;
  3760. + brcm,function = <BCM2835_FSEL_ALT3>;
  3761. + };
  3762. +
  3763. + spi5_cs_pins: spi5_cs_pins {
  3764. + brcm,pins = <12 26>;
  3765. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3766. + };
  3767. +
  3768. + spi6_pins: spi6_pins {
  3769. + brcm,pins = <19 20 21>;
  3770. + brcm,function = <BCM2835_FSEL_ALT3>;
  3771. + };
  3772. +
  3773. + spi6_cs_pins: spi6_cs_pins {
  3774. + brcm,pins = <18 27>;
  3775. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  3776. + };
  3777. +
  3778. + i2c0_pins: i2c0 {
  3779. + brcm,pins = <0 1>;
  3780. + brcm,function = <BCM2835_FSEL_ALT0>;
  3781. + brcm,pull = <BCM2835_PUD_UP>;
  3782. + };
  3783. +
  3784. + i2c1_pins: i2c1 {
  3785. + brcm,pins = <2 3>;
  3786. + brcm,function = <BCM2835_FSEL_ALT0>;
  3787. + brcm,pull = <BCM2835_PUD_UP>;
  3788. + };
  3789. +
  3790. + i2c3_pins: i2c3 {
  3791. + brcm,pins = <4 5>;
  3792. + brcm,function = <BCM2835_FSEL_ALT5>;
  3793. + brcm,pull = <BCM2835_PUD_UP>;
  3794. + };
  3795. +
  3796. + i2c4_pins: i2c4 {
  3797. + brcm,pins = <8 9>;
  3798. + brcm,function = <BCM2835_FSEL_ALT5>;
  3799. + brcm,pull = <BCM2835_PUD_UP>;
  3800. + };
  3801. +
  3802. + i2c5_pins: i2c5 {
  3803. + brcm,pins = <12 13>;
  3804. + brcm,function = <BCM2835_FSEL_ALT5>;
  3805. + brcm,pull = <BCM2835_PUD_UP>;
  3806. + };
  3807. +
  3808. + i2c6_pins: i2c6 {
  3809. + brcm,pins = <22 23>;
  3810. + brcm,function = <BCM2835_FSEL_ALT5>;
  3811. + brcm,pull = <BCM2835_PUD_UP>;
  3812. + };
  3813. +
  3814. + i2s_pins: i2s {
  3815. + brcm,pins = <18 19 20 21>;
  3816. + brcm,function = <BCM2835_FSEL_ALT0>;
  3817. + };
  3818. +
  3819. + sdio_pins: sdio_pins {
  3820. + brcm,pins = <34 35 36 37 38 39>;
  3821. + brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
  3822. + brcm,pull = <0 2 2 2 2 2>;
  3823. + };
  3824. +
  3825. + bt_pins: bt_pins {
  3826. + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
  3827. + // to fool pinctrl
  3828. + brcm,function = <0>;
  3829. + brcm,pull = <2>;
  3830. + };
  3831. +
  3832. + uart0_pins: uart0_pins {
  3833. + brcm,pins = <32 33>;
  3834. + brcm,function = <BCM2835_FSEL_ALT3>;
  3835. + brcm,pull = <0 2>;
  3836. + };
  3837. +
  3838. + uart1_pins: uart1_pins {
  3839. + brcm,pins;
  3840. + brcm,function;
  3841. + brcm,pull;
  3842. + };
  3843. +
  3844. + uart2_pins: uart2_pins {
  3845. + brcm,pins = <0 1>;
  3846. + brcm,function = <BCM2835_FSEL_ALT4>;
  3847. + brcm,pull = <0 2>;
  3848. + };
  3849. +
  3850. + uart3_pins: uart3_pins {
  3851. + brcm,pins = <4 5>;
  3852. + brcm,function = <BCM2835_FSEL_ALT4>;
  3853. + brcm,pull = <0 2>;
  3854. + };
  3855. +
  3856. + uart4_pins: uart4_pins {
  3857. + brcm,pins = <8 9>;
  3858. + brcm,function = <BCM2835_FSEL_ALT4>;
  3859. + brcm,pull = <0 2>;
  3860. + };
  3861. +
  3862. + uart5_pins: uart5_pins {
  3863. + brcm,pins = <12 13>;
  3864. + brcm,function = <BCM2835_FSEL_ALT4>;
  3865. + brcm,pull = <0 2>;
  3866. + };
  3867. +};
  3868. +
  3869. +&i2c0if {
  3870. + clock-frequency = <100000>;
  3871. +};
  3872. +
  3873. +&i2c1 {
  3874. + pinctrl-names = "default";
  3875. + pinctrl-0 = <&i2c1_pins>;
  3876. + clock-frequency = <100000>;
  3877. +};
  3878. +
  3879. +&i2s {
  3880. + pinctrl-names = "default";
  3881. + pinctrl-0 = <&i2s_pins>;
  3882. +};
  3883. +
  3884. +// =============================================
  3885. +// Board specific stuff here
  3886. +
  3887. +/ {
  3888. + power_ctrl: power_ctrl {
  3889. compatible = "gpio-poweroff";
  3890. - gpios = <&expgpio 5 GPIO_ACTIVE_HIGH>;
  3891. + gpios = <&expgpio 5 0>;
  3892. + force;
  3893. + };
  3894. +};
  3895. +
  3896. +&sdhost {
  3897. + status = "disabled";
  3898. +};
  3899. +
  3900. +&phy1 {
  3901. + led-modes = <0x00 0x08>; /* link/activity link */
  3902. +};
  3903. +
  3904. +&gpio {
  3905. + audio_pins: audio_pins {
  3906. + brcm,pins = <>;
  3907. + brcm,function = <>;
  3908. + };
  3909. +};
  3910. +
  3911. +&leds {
  3912. + act_led: led-act {
  3913. + label = "led0";
  3914. + linux,default-trigger = "default-on";
  3915. + default-state = "on";
  3916. + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  3917. + };
  3918. +
  3919. + pwr_led: led-pwr {
  3920. + label = "led1";
  3921. + linux,default-trigger = "default-on";
  3922. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  3923. };
  3924. };
  3925. -&expgpio {
  3926. - gpio-line-names = "BT_ON",
  3927. - "WL_ON",
  3928. - "PWR_LED_OFF",
  3929. - "GLOBAL_RESET",
  3930. - "VDD_SD_IO_SEL",
  3931. - "GLOBAL_SHUTDOWN",
  3932. - "SD_PWR_ON",
  3933. - "SHUTDOWN_REQUEST";
  3934. +&pwm1 {
  3935. + status = "disabled";
  3936. +};
  3937. +
  3938. +&audio {
  3939. + pinctrl-names = "default";
  3940. + pinctrl-0 = <&audio_pins>;
  3941. + brcm,disable-headphones = <1>;
  3942. };
  3943. &genet_mdio {
  3944. clock-frequency = <1950000>;
  3945. };
  3946. -&pm {
  3947. - /delete-property/ system-power-controller;
  3948. +/ {
  3949. + __overrides__ {
  3950. + act_led_gpio = <&act_led>,"gpios:4";
  3951. + act_led_activelow = <&act_led>,"gpios:8";
  3952. + act_led_trigger = <&act_led>,"linux,default-trigger";
  3953. +
  3954. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  3955. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  3956. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  3957. +
  3958. + eth_led0 = <&phy1>,"led-modes:0";
  3959. + eth_led1 = <&phy1>,"led-modes:4";
  3960. +
  3961. + sd_poll_once = <&emmc2>, "non-removable?";
  3962. + spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
  3963. + <&spi0>, "dmas:8=", <&dma40>;
  3964. + };
  3965. };
  3966. diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
  3967. new file mode 100644
  3968. index 000000000000..76dd97513a20
  3969. --- /dev/null
  3970. +++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
  3971. @@ -0,0 +1,660 @@
  3972. +// SPDX-License-Identifier: GPL-2.0
  3973. +/dts-v1/;
  3974. +#include "bcm2711.dtsi"
  3975. +#include "bcm2835-rpi.dtsi"
  3976. +
  3977. +#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
  3978. +
  3979. +/ {
  3980. + compatible = "raspberrypi,4-compute-module", "brcm,bcm2711";
  3981. + model = "Raspberry Pi Compute Module 4";
  3982. +
  3983. + chosen {
  3984. + /* 8250 auxiliary UART instead of pl011 */
  3985. + stdout-path = "serial1:115200n8";
  3986. + };
  3987. +
  3988. + /* Will be filled by the bootloader */
  3989. + memory@0 {
  3990. + device_type = "memory";
  3991. + reg = <0 0 0>;
  3992. + };
  3993. +
  3994. + aliases {
  3995. + emmc2bus = &emmc2bus;
  3996. + ethernet0 = &genet;
  3997. + pcie0 = &pcie0;
  3998. + blconfig = &blconfig;
  3999. + };
  4000. +
  4001. + leds {
  4002. + led-act {
  4003. + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  4004. + };
  4005. +
  4006. + led-pwr {
  4007. + label = "PWR";
  4008. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  4009. + default-state = "keep";
  4010. + linux,default-trigger = "default-on";
  4011. + };
  4012. + };
  4013. +
  4014. + wifi_pwrseq: wifi-pwrseq {
  4015. + compatible = "mmc-pwrseq-simple";
  4016. + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
  4017. + };
  4018. +
  4019. + sd_io_1v8_reg: sd_io_1v8_reg {
  4020. + compatible = "regulator-gpio";
  4021. + regulator-name = "vdd-sd-io";
  4022. + regulator-min-microvolt = <1800000>;
  4023. + regulator-max-microvolt = <3300000>;
  4024. + regulator-boot-on;
  4025. + regulator-always-on;
  4026. + regulator-settling-time-us = <5000>;
  4027. + gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
  4028. + states = <1800000 0x1
  4029. + 3300000 0x0>;
  4030. + status = "okay";
  4031. + };
  4032. +
  4033. + sd_vcc_reg: sd_vcc_reg {
  4034. + compatible = "regulator-fixed";
  4035. + regulator-name = "vcc-sd";
  4036. + regulator-min-microvolt = <3300000>;
  4037. + regulator-max-microvolt = <3300000>;
  4038. + regulator-boot-on;
  4039. + enable-active-high;
  4040. + gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
  4041. + };
  4042. +};
  4043. +
  4044. +&ddc0 {
  4045. + status = "okay";
  4046. +};
  4047. +
  4048. +&ddc1 {
  4049. + status = "okay";
  4050. +};
  4051. +
  4052. +&firmware {
  4053. + firmware_clocks: clocks {
  4054. + compatible = "raspberrypi,firmware-clocks";
  4055. + #clock-cells = <1>;
  4056. + };
  4057. +
  4058. + expgpio: gpio {
  4059. + compatible = "raspberrypi,firmware-gpio";
  4060. + gpio-controller;
  4061. + #gpio-cells = <2>;
  4062. + gpio-line-names = "BT_ON",
  4063. + "WL_ON",
  4064. + "PWR_LED_OFF",
  4065. + "ANT1",
  4066. + "VDD_SD_IO_SEL",
  4067. + "CAM_GPIO",
  4068. + "SD_PWR_ON",
  4069. + "ANT2";
  4070. + status = "okay";
  4071. +
  4072. + ant1: ant1 {
  4073. + gpio-hog;
  4074. + gpios = <3 GPIO_ACTIVE_HIGH>;
  4075. + output-high;
  4076. + };
  4077. +
  4078. + ant2: ant2 {
  4079. + gpio-hog;
  4080. + gpios = <7 GPIO_ACTIVE_HIGH>;
  4081. + output-low;
  4082. + };
  4083. + };
  4084. +
  4085. + reset: reset {
  4086. + compatible = "raspberrypi,firmware-reset";
  4087. + #reset-cells = <1>;
  4088. + };
  4089. +};
  4090. +
  4091. +&gpio {
  4092. + /*
  4093. + * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
  4094. + * the official GPU firmware DT blob.
  4095. + *
  4096. + * Legend:
  4097. + * "FOO" = GPIO line named "FOO" on the schematic
  4098. + * "FOO_N" = GPIO line named "FOO" on schematic, active low
  4099. + */
  4100. + gpio-line-names = "ID_SDA",
  4101. + "ID_SCL",
  4102. + "SDA1",
  4103. + "SCL1",
  4104. + "GPIO_GCLK",
  4105. + "GPIO5",
  4106. + "GPIO6",
  4107. + "SPI_CE1_N",
  4108. + "SPI_CE0_N",
  4109. + "SPI_MISO",
  4110. + "SPI_MOSI",
  4111. + "SPI_SCLK",
  4112. + "GPIO12",
  4113. + "GPIO13",
  4114. + /* Serial port */
  4115. + "TXD1",
  4116. + "RXD1",
  4117. + "GPIO16",
  4118. + "GPIO17",
  4119. + "GPIO18",
  4120. + "GPIO19",
  4121. + "GPIO20",
  4122. + "GPIO21",
  4123. + "GPIO22",
  4124. + "GPIO23",
  4125. + "GPIO24",
  4126. + "GPIO25",
  4127. + "GPIO26",
  4128. + "GPIO27",
  4129. + "RGMII_MDIO",
  4130. + "RGMIO_MDC",
  4131. + /* Used by BT module */
  4132. + "CTS0",
  4133. + "RTS0",
  4134. + "TXD0",
  4135. + "RXD0",
  4136. + /* Used by Wifi */
  4137. + "SD1_CLK",
  4138. + "SD1_CMD",
  4139. + "SD1_DATA0",
  4140. + "SD1_DATA1",
  4141. + "SD1_DATA2",
  4142. + "SD1_DATA3",
  4143. + /* Shared with SPI flash */
  4144. + "PWM0_MISO",
  4145. + "PWM1_MOSI",
  4146. + "STATUS_LED_G_CLK",
  4147. + "SPIFLASH_CE_N",
  4148. + "SDA0",
  4149. + "SCL0",
  4150. + "RGMII_RXCLK",
  4151. + "RGMII_RXCTL",
  4152. + "RGMII_RXD0",
  4153. + "RGMII_RXD1",
  4154. + "RGMII_RXD2",
  4155. + "RGMII_RXD3",
  4156. + "RGMII_TXCLK",
  4157. + "RGMII_TXCTL",
  4158. + "RGMII_TXD0",
  4159. + "RGMII_TXD1",
  4160. + "RGMII_TXD2",
  4161. + "RGMII_TXD3";
  4162. +};
  4163. +
  4164. +&hdmi0 {
  4165. + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
  4166. + clock-names = "hdmi", "bvb", "audio", "cec";
  4167. + wifi-2.4ghz-coexistence;
  4168. + status = "okay";
  4169. +};
  4170. +
  4171. +&hdmi1 {
  4172. + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
  4173. + clock-names = "hdmi", "bvb", "audio", "cec";
  4174. + wifi-2.4ghz-coexistence;
  4175. + status = "okay";
  4176. +};
  4177. +
  4178. +&hvs {
  4179. + clocks = <&firmware_clocks 4>;
  4180. +};
  4181. +
  4182. +&pixelvalve0 {
  4183. + status = "okay";
  4184. +};
  4185. +
  4186. +&pixelvalve1 {
  4187. + status = "okay";
  4188. +};
  4189. +
  4190. +&pixelvalve2 {
  4191. + status = "okay";
  4192. +};
  4193. +
  4194. +&pixelvalve4 {
  4195. + status = "okay";
  4196. +};
  4197. +
  4198. +&pwm1 {
  4199. + pinctrl-names = "default";
  4200. + pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
  4201. + status = "okay";
  4202. +};
  4203. +
  4204. +&rmem {
  4205. + /*
  4206. + * RPi4's co-processor will copy the board's bootloader configuration
  4207. + * into memory for the OS to consume. It'll also update this node with
  4208. + * its placement information.
  4209. + */
  4210. + blconfig: nvram@0 {
  4211. + compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
  4212. + #address-cells = <1>;
  4213. + #size-cells = <1>;
  4214. + reg = <0x0 0x0 0x0>;
  4215. + no-map;
  4216. + status = "disabled";
  4217. + };
  4218. +};
  4219. +
  4220. +/* SDHCI is used to control the SDIO for wireless */
  4221. +&sdhci {
  4222. + #address-cells = <1>;
  4223. + #size-cells = <0>;
  4224. + pinctrl-names = "default";
  4225. + pinctrl-0 = <&emmc_gpio34>;
  4226. + bus-width = <4>;
  4227. + non-removable;
  4228. + mmc-pwrseq = <&wifi_pwrseq>;
  4229. + status = "okay";
  4230. +
  4231. + brcmf: wifi@1 {
  4232. + reg = <1>;
  4233. + compatible = "brcm,bcm4329-fmac";
  4234. + };
  4235. +};
  4236. +
  4237. +/* EMMC2 is used to drive the EMMC card */
  4238. +&emmc2 {
  4239. + bus-width = <8>;
  4240. + vqmmc-supply = <&sd_io_1v8_reg>;
  4241. + vmmc-supply = <&sd_vcc_reg>;
  4242. + broken-cd;
  4243. + status = "okay";
  4244. +};
  4245. +
  4246. +&genet {
  4247. + phy-handle = <&phy1>;
  4248. + phy-mode = "rgmii-rxid";
  4249. + status = "okay";
  4250. +};
  4251. +
  4252. +&genet_mdio {
  4253. + phy1: ethernet-phy@0 {
  4254. + /* No PHY interrupt */
  4255. + reg = <0x0>;
  4256. + };
  4257. +};
  4258. +
  4259. +&pcie0 {
  4260. + pci@0,0 {
  4261. + device-type = "pci";
  4262. + #address-cells = <3>;
  4263. + #size-cells = <2>;
  4264. + ranges;
  4265. +
  4266. + reg = <0 0 0 0 0>;
  4267. +
  4268. + usb@0,0 {
  4269. + reg = <0 0 0 0 0>;
  4270. + resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
  4271. + };
  4272. + };
  4273. +};
  4274. +
  4275. +/* uart0 communicates with the BT module */
  4276. +&uart0 {
  4277. + pinctrl-names = "default";
  4278. + pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
  4279. + uart-has-rtscts;
  4280. + status = "okay";
  4281. +
  4282. + bluetooth {
  4283. + compatible = "brcm,bcm43438-bt";
  4284. + max-speed = <2000000>;
  4285. + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
  4286. + };
  4287. +};
  4288. +
  4289. +/* uart1 is mapped to the pin header */
  4290. +&uart1 {
  4291. + pinctrl-names = "default";
  4292. + pinctrl-0 = <&uart1_gpio14>;
  4293. + status = "okay";
  4294. +};
  4295. +
  4296. +&vchiq {
  4297. + interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  4298. +};
  4299. +
  4300. +&vc4 {
  4301. + status = "okay";
  4302. +};
  4303. +
  4304. +&vec {
  4305. + status = "disabled";
  4306. +};
  4307. +
  4308. +// =============================================
  4309. +// Downstream rpi- changes
  4310. +
  4311. +#define BCM2711
  4312. +
  4313. +#include "bcm270x.dtsi"
  4314. +#include "bcm271x-rpi-bt.dtsi"
  4315. +
  4316. +/ {
  4317. + soc {
  4318. + /delete-node/ pixelvalve@7e807000;
  4319. + /delete-node/ hdmi@7e902000;
  4320. + };
  4321. +};
  4322. +
  4323. +#include "bcm2711-rpi-ds.dtsi"
  4324. +#include "bcm283x-rpi-csi0-2lane.dtsi"
  4325. +#include "bcm283x-rpi-csi1-4lane.dtsi"
  4326. +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
  4327. +#include "bcm283x-rpi-cam1-regulator.dtsi"
  4328. +
  4329. +/ {
  4330. + chosen {
  4331. + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1";
  4332. + };
  4333. +
  4334. + aliases {
  4335. + serial0 = &uart1;
  4336. + serial1 = &uart0;
  4337. + mmc0 = &emmc2;
  4338. + mmc1 = &mmcnr;
  4339. + mmc2 = &sdhost;
  4340. + i2c3 = &i2c3;
  4341. + i2c4 = &i2c4;
  4342. + i2c5 = &i2c5;
  4343. + i2c6 = &i2c6;
  4344. + i2c20 = &ddc0;
  4345. + i2c21 = &ddc1;
  4346. + spi3 = &spi3;
  4347. + spi4 = &spi4;
  4348. + spi5 = &spi5;
  4349. + spi6 = &spi6;
  4350. + /delete-property/ intc;
  4351. + };
  4352. +
  4353. + /delete-node/ wifi-pwrseq;
  4354. +};
  4355. +
  4356. +&mmcnr {
  4357. + pinctrl-names = "default";
  4358. + pinctrl-0 = <&sdio_pins>;
  4359. + bus-width = <4>;
  4360. + status = "okay";
  4361. +};
  4362. +
  4363. +&uart0 {
  4364. + pinctrl-0 = <&uart0_pins &bt_pins>;
  4365. + status = "okay";
  4366. +};
  4367. +
  4368. +&uart1 {
  4369. + pinctrl-0 = <&uart1_pins>;
  4370. +};
  4371. +
  4372. +&spi0 {
  4373. + pinctrl-names = "default";
  4374. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  4375. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  4376. +
  4377. + spidev0: spidev@0{
  4378. + compatible = "spidev";
  4379. + reg = <0>; /* CE0 */
  4380. + #address-cells = <1>;
  4381. + #size-cells = <0>;
  4382. + spi-max-frequency = <125000000>;
  4383. + };
  4384. +
  4385. + spidev1: spidev@1{
  4386. + compatible = "spidev";
  4387. + reg = <1>; /* CE1 */
  4388. + #address-cells = <1>;
  4389. + #size-cells = <0>;
  4390. + spi-max-frequency = <125000000>;
  4391. + };
  4392. +};
  4393. +
  4394. +&gpio {
  4395. + spi0_pins: spi0_pins {
  4396. + brcm,pins = <9 10 11>;
  4397. + brcm,function = <BCM2835_FSEL_ALT0>;
  4398. + };
  4399. +
  4400. + spi0_cs_pins: spi0_cs_pins {
  4401. + brcm,pins = <8 7>;
  4402. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  4403. + };
  4404. +
  4405. + spi3_pins: spi3_pins {
  4406. + brcm,pins = <1 2 3>;
  4407. + brcm,function = <BCM2835_FSEL_ALT3>;
  4408. + };
  4409. +
  4410. + spi3_cs_pins: spi3_cs_pins {
  4411. + brcm,pins = <0 24>;
  4412. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  4413. + };
  4414. +
  4415. + spi4_pins: spi4_pins {
  4416. + brcm,pins = <5 6 7>;
  4417. + brcm,function = <BCM2835_FSEL_ALT3>;
  4418. + };
  4419. +
  4420. + spi4_cs_pins: spi4_cs_pins {
  4421. + brcm,pins = <4 25>;
  4422. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  4423. + };
  4424. +
  4425. + spi5_pins: spi5_pins {
  4426. + brcm,pins = <13 14 15>;
  4427. + brcm,function = <BCM2835_FSEL_ALT3>;
  4428. + };
  4429. +
  4430. + spi5_cs_pins: spi5_cs_pins {
  4431. + brcm,pins = <12 26>;
  4432. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  4433. + };
  4434. +
  4435. + spi6_pins: spi6_pins {
  4436. + brcm,pins = <19 20 21>;
  4437. + brcm,function = <BCM2835_FSEL_ALT3>;
  4438. + };
  4439. +
  4440. + spi6_cs_pins: spi6_cs_pins {
  4441. + brcm,pins = <18 27>;
  4442. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  4443. + };
  4444. +
  4445. + i2c0_pins: i2c0 {
  4446. + brcm,pins = <0 1>;
  4447. + brcm,function = <BCM2835_FSEL_ALT0>;
  4448. + brcm,pull = <BCM2835_PUD_UP>;
  4449. + };
  4450. +
  4451. + i2c1_pins: i2c1 {
  4452. + brcm,pins = <2 3>;
  4453. + brcm,function = <BCM2835_FSEL_ALT0>;
  4454. + brcm,pull = <BCM2835_PUD_UP>;
  4455. + };
  4456. +
  4457. + i2c3_pins: i2c3 {
  4458. + brcm,pins = <4 5>;
  4459. + brcm,function = <BCM2835_FSEL_ALT5>;
  4460. + brcm,pull = <BCM2835_PUD_UP>;
  4461. + };
  4462. +
  4463. + i2c4_pins: i2c4 {
  4464. + brcm,pins = <8 9>;
  4465. + brcm,function = <BCM2835_FSEL_ALT5>;
  4466. + brcm,pull = <BCM2835_PUD_UP>;
  4467. + };
  4468. +
  4469. + i2c5_pins: i2c5 {
  4470. + brcm,pins = <12 13>;
  4471. + brcm,function = <BCM2835_FSEL_ALT5>;
  4472. + brcm,pull = <BCM2835_PUD_UP>;
  4473. + };
  4474. +
  4475. + i2c6_pins: i2c6 {
  4476. + brcm,pins = <22 23>;
  4477. + brcm,function = <BCM2835_FSEL_ALT5>;
  4478. + brcm,pull = <BCM2835_PUD_UP>;
  4479. + };
  4480. +
  4481. + i2s_pins: i2s {
  4482. + brcm,pins = <18 19 20 21>;
  4483. + brcm,function = <BCM2835_FSEL_ALT0>;
  4484. + };
  4485. +
  4486. + sdio_pins: sdio_pins {
  4487. + brcm,pins = <34 35 36 37 38 39>;
  4488. + brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
  4489. + brcm,pull = <0 2 2 2 2 2>;
  4490. + };
  4491. +
  4492. + bt_pins: bt_pins {
  4493. + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
  4494. + // to fool pinctrl
  4495. + brcm,function = <0>;
  4496. + brcm,pull = <2>;
  4497. + };
  4498. +
  4499. + uart0_pins: uart0_pins {
  4500. + brcm,pins = <32 33>;
  4501. + brcm,function = <BCM2835_FSEL_ALT3>;
  4502. + brcm,pull = <0 2>;
  4503. + };
  4504. +
  4505. + uart1_pins: uart1_pins {
  4506. + brcm,pins;
  4507. + brcm,function;
  4508. + brcm,pull;
  4509. + };
  4510. +
  4511. + uart2_pins: uart2_pins {
  4512. + brcm,pins = <0 1>;
  4513. + brcm,function = <BCM2835_FSEL_ALT4>;
  4514. + brcm,pull = <0 2>;
  4515. + };
  4516. +
  4517. + uart3_pins: uart3_pins {
  4518. + brcm,pins = <4 5>;
  4519. + brcm,function = <BCM2835_FSEL_ALT4>;
  4520. + brcm,pull = <0 2>;
  4521. + };
  4522. +
  4523. + uart4_pins: uart4_pins {
  4524. + brcm,pins = <8 9>;
  4525. + brcm,function = <BCM2835_FSEL_ALT4>;
  4526. + brcm,pull = <0 2>;
  4527. + };
  4528. +
  4529. + uart5_pins: uart5_pins {
  4530. + brcm,pins = <12 13>;
  4531. + brcm,function = <BCM2835_FSEL_ALT4>;
  4532. + brcm,pull = <0 2>;
  4533. + };
  4534. +};
  4535. +
  4536. +&i2c0if {
  4537. + clock-frequency = <100000>;
  4538. +};
  4539. +
  4540. +&i2c1 {
  4541. + pinctrl-names = "default";
  4542. + pinctrl-0 = <&i2c1_pins>;
  4543. + clock-frequency = <100000>;
  4544. +};
  4545. +
  4546. +&i2s {
  4547. + pinctrl-names = "default";
  4548. + pinctrl-0 = <&i2s_pins>;
  4549. +};
  4550. +
  4551. +// =============================================
  4552. +// Board specific stuff here
  4553. +
  4554. +&pcie0 {
  4555. + brcm,enable-l1ss;
  4556. +};
  4557. +
  4558. +&sdhost {
  4559. + status = "disabled";
  4560. +};
  4561. +
  4562. +&phy1 {
  4563. + led-modes = <0x00 0x08>; /* link/activity link */
  4564. +};
  4565. +
  4566. +&gpio {
  4567. + audio_pins: audio_pins {
  4568. + brcm,pins = <>;
  4569. + brcm,function = <>;
  4570. + };
  4571. +};
  4572. +
  4573. +&leds {
  4574. + act_led: led-act {
  4575. + label = "led0";
  4576. + linux,default-trigger = "mmc0";
  4577. + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
  4578. + };
  4579. +
  4580. + pwr_led: led-pwr {
  4581. + label = "led1";
  4582. + linux,default-trigger = "default-on";
  4583. + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
  4584. + };
  4585. +};
  4586. +
  4587. +&pwm1 {
  4588. + status = "disabled";
  4589. +};
  4590. +
  4591. +&audio {
  4592. + pinctrl-names = "default";
  4593. + pinctrl-0 = <&audio_pins>;
  4594. + brcm,disable-headphones = <1>;
  4595. +};
  4596. +
  4597. +cam0_reg: &cam1_reg {
  4598. + gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
  4599. +};
  4600. +
  4601. +/ {
  4602. + __overrides__ {
  4603. + act_led_gpio = <&act_led>,"gpios:4";
  4604. + act_led_activelow = <&act_led>,"gpios:8";
  4605. + act_led_trigger = <&act_led>,"linux,default-trigger";
  4606. +
  4607. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  4608. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  4609. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  4610. +
  4611. + eth_led0 = <&phy1>,"led-modes:0";
  4612. + eth_led1 = <&phy1>,"led-modes:4";
  4613. +
  4614. + ant1 = <&ant1>,"output-high?=on",
  4615. + <&ant1>, "output-low?=off",
  4616. + <&ant2>, "output-high?=off",
  4617. + <&ant2>, "output-low?=on";
  4618. + ant2 = <&ant1>,"output-high?=off",
  4619. + <&ant1>, "output-low?=on",
  4620. + <&ant2>, "output-high?=on",
  4621. + <&ant2>, "output-low?=off";
  4622. + noant = <&ant1>,"output-high?=off",
  4623. + <&ant1>, "output-low?=on",
  4624. + <&ant2>, "output-high?=off",
  4625. + <&ant2>, "output-low?=on";
  4626. +
  4627. + sd_poll_once = <&emmc2>, "non-removable?";
  4628. + spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
  4629. + <&spi0>, "dmas:8=", <&dma40>;
  4630. + };
  4631. +};
  4632. diff --git a/arch/arm/boot/dts/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
  4633. new file mode 100644
  4634. index 000000000000..ebf73b789b4a
  4635. --- /dev/null
  4636. +++ b/arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
  4637. @@ -0,0 +1,205 @@
  4638. +// SPDX-License-Identifier: GPL-2.0
  4639. +#include "bcm270x-rpi.dtsi"
  4640. +
  4641. +/ {
  4642. + __overrides__ {
  4643. + arm_freq;
  4644. + };
  4645. +
  4646. + v3dbus: v3dbus {
  4647. + compatible = "simple-bus";
  4648. + #address-cells = <1>;
  4649. + #size-cells = <2>;
  4650. + ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
  4651. + <0x40000000 0x0 0xff800000 0x0 0x00800000>;
  4652. + dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
  4653. +
  4654. + v3d: v3d@7ec04000 {
  4655. + compatible = "brcm,2711-v3d";
  4656. + reg =
  4657. + <0x7ec00000 0x0 0x4000>,
  4658. + <0x7ec04000 0x0 0x4000>;
  4659. + reg-names = "hub", "core0";
  4660. +
  4661. + power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
  4662. + resets = <&pm BCM2835_RESET_V3D>;
  4663. + clocks = <&firmware_clocks 5>;
  4664. + clocks-names = "v3d";
  4665. + interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  4666. + status = "disabled";
  4667. + };
  4668. + };
  4669. +
  4670. + scb: scb {
  4671. + /* Add a label */
  4672. + };
  4673. +};
  4674. +
  4675. +&vc4 {
  4676. + raspberrypi,firmware = <&firmware>;
  4677. +};
  4678. +
  4679. +&cma {
  4680. + /* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
  4681. + alloc-ranges = <0x0 0x00000000 0x30000000>;
  4682. +};
  4683. +
  4684. +&scb {
  4685. + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
  4686. + <0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
  4687. + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
  4688. + <0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
  4689. + dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
  4690. +
  4691. + dma40: dma@7e007b00 {
  4692. + compatible = "brcm,bcm2711-dma";
  4693. + reg = <0x0 0x7e007b00 0x0 0x400>;
  4694. + interrupts =
  4695. + <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
  4696. + <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
  4697. + <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
  4698. + <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
  4699. + interrupt-names = "dma11",
  4700. + "dma12",
  4701. + "dma13",
  4702. + "dma14";
  4703. + #dma-cells = <1>;
  4704. + brcm,dma-channel-mask = <0x7800>;
  4705. + };
  4706. +
  4707. + xhci: xhci@7e9c0000 {
  4708. + compatible = "generic-xhci";
  4709. + status = "disabled";
  4710. + reg = <0x0 0x7e9c0000 0x0 0x100000>;
  4711. + interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
  4712. + power-domains = <&power RPI_POWER_DOMAIN_USB>;
  4713. + };
  4714. +
  4715. + hevc-decoder@7eb00000 {
  4716. + compatible = "raspberrypi,rpivid-hevc-decoder";
  4717. + reg = <0x0 0x7eb00000 0x0 0x10000>;
  4718. + status = "okay";
  4719. + };
  4720. +
  4721. + rpivid-local-intc@7eb10000 {
  4722. + compatible = "raspberrypi,rpivid-local-intc";
  4723. + reg = <0x0 0x7eb10000 0x0 0x1000>;
  4724. + status = "okay";
  4725. + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  4726. + };
  4727. +
  4728. + h264-decoder@7eb20000 {
  4729. + compatible = "raspberrypi,rpivid-h264-decoder";
  4730. + reg = <0x0 0x7eb20000 0x0 0x10000>;
  4731. + status = "okay";
  4732. + };
  4733. +
  4734. + vp9-decoder@7eb30000 {
  4735. + compatible = "raspberrypi,rpivid-vp9-decoder";
  4736. + reg = <0x0 0x7eb30000 0x0 0x10000>;
  4737. + status = "okay";
  4738. + };
  4739. +};
  4740. +
  4741. +&dma40 {
  4742. + /* The VPU firmware uses DMA channel 11 for VCHIQ */
  4743. + brcm,dma-channel-mask = <0x7000>;
  4744. +};
  4745. +
  4746. +&vchiq {
  4747. + compatible = "brcm,bcm2711-vchiq";
  4748. +};
  4749. +
  4750. +&firmwarekms {
  4751. + compatible = "raspberrypi,rpi-firmware-kms-2711";
  4752. + interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
  4753. +};
  4754. +
  4755. +&smi {
  4756. + interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
  4757. +};
  4758. +
  4759. +&mmc {
  4760. + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
  4761. +};
  4762. +
  4763. +&mmcnr {
  4764. + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
  4765. +};
  4766. +
  4767. +&csi0 {
  4768. + interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
  4769. +};
  4770. +
  4771. +&csi1 {
  4772. + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  4773. +};
  4774. +
  4775. +&random {
  4776. + compatible = "brcm,bcm2711-rng200";
  4777. + status = "okay";
  4778. +};
  4779. +
  4780. +&usb {
  4781. + /* Enable the FIQ support */
  4782. + reg = <0x7e980000 0x10000>,
  4783. + <0x7e00b200 0x200>;
  4784. + interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
  4785. + <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  4786. + status = "disabled";
  4787. +};
  4788. +
  4789. +&gpio {
  4790. + interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
  4791. + <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  4792. +};
  4793. +
  4794. +&emmc2 {
  4795. + mmc-ddr-3_3v;
  4796. +};
  4797. +
  4798. +&vc4 {
  4799. + status = "disabled";
  4800. +};
  4801. +
  4802. +&pixelvalve0 {
  4803. + status = "disabled";
  4804. +};
  4805. +
  4806. +&pixelvalve1 {
  4807. + status = "disabled";
  4808. +};
  4809. +
  4810. +&pixelvalve2 {
  4811. + status = "disabled";
  4812. +};
  4813. +
  4814. +&pixelvalve3 {
  4815. + status = "disabled";
  4816. +};
  4817. +
  4818. +&pixelvalve4 {
  4819. + status = "disabled";
  4820. +};
  4821. +
  4822. +&hdmi0 {
  4823. + dmas = <&dma (10|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
  4824. + status = "disabled";
  4825. +};
  4826. +
  4827. +&ddc0 {
  4828. + status = "disabled";
  4829. +};
  4830. +
  4831. +&hdmi1 {
  4832. + dmas = <&dma (17|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
  4833. + status = "disabled";
  4834. +};
  4835. +
  4836. +&ddc1 {
  4837. + status = "disabled";
  4838. +};
  4839. +
  4840. +&dvp {
  4841. + status = "disabled";
  4842. +};
  4843. diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
  4844. index 89af57482bc8..131db82e079d 100644
  4845. --- a/arch/arm/boot/dts/bcm2711.dtsi
  4846. +++ b/arch/arm/boot/dts/bcm2711.dtsi
  4847. @@ -323,6 +323,7 @@ aon_intr: interrupt-controller@7ef00100 {
  4848. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  4849. interrupt-controller;
  4850. #interrupt-cells = <1>;
  4851. + status = "disabled";
  4852. };
  4853. hdmi0: hdmi@7ef00700 {
  4854. @@ -335,7 +336,8 @@ hdmi0: hdmi@7ef00700 {
  4855. <0x7ef01f00 0x400>,
  4856. <0x7ef00200 0x80>,
  4857. <0x7ef04300 0x100>,
  4858. - <0x7ef20000 0x100>;
  4859. + <0x7ef20000 0x100>,
  4860. + <0x7ef00100 0x30>;
  4861. reg-names = "hdmi",
  4862. "dvp",
  4863. "phy",
  4864. @@ -344,7 +346,12 @@ hdmi0: hdmi@7ef00700 {
  4865. "metadata",
  4866. "csc",
  4867. "cec",
  4868. - "hd";
  4869. + "hd",
  4870. + "intr2";
  4871. + clocks = <&firmware_clocks 13>,
  4872. + <&firmware_clocks 14>,
  4873. + <&dvp 0>,
  4874. + <&clk_27MHz>;
  4875. clock-names = "hdmi", "bvb", "audio", "cec";
  4876. resets = <&dvp 0>;
  4877. interrupt-parent = <&aon_intr>;
  4878. @@ -353,7 +360,7 @@ hdmi0: hdmi@7ef00700 {
  4879. interrupt-names = "cec-tx", "cec-rx", "cec-low",
  4880. "wakeup", "hpd-connected", "hpd-removed";
  4881. ddc = <&ddc0>;
  4882. - dmas = <&dma 10>;
  4883. + dmas = <&dma (10 | (1 << 27) | (1 << 24)| (15 << 20) | (10 << 16))>;
  4884. dma-names = "audio-rx";
  4885. status = "disabled";
  4886. };
  4887. @@ -376,7 +383,8 @@ hdmi1: hdmi@7ef05700 {
  4888. <0x7ef06f00 0x400>,
  4889. <0x7ef00280 0x80>,
  4890. <0x7ef09300 0x100>,
  4891. - <0x7ef20000 0x100>;
  4892. + <0x7ef20000 0x100>,
  4893. + <0x7ef00100 0x30>;
  4894. reg-names = "hdmi",
  4895. "dvp",
  4896. "phy",
  4897. @@ -385,16 +393,21 @@ hdmi1: hdmi@7ef05700 {
  4898. "metadata",
  4899. "csc",
  4900. "cec",
  4901. - "hd";
  4902. + "hd",
  4903. + "intr2";
  4904. ddc = <&ddc1>;
  4905. clock-names = "hdmi", "bvb", "audio", "cec";
  4906. + clocks = <&firmware_clocks 13>,
  4907. + <&firmware_clocks 14>,
  4908. + <&dvp 0>,
  4909. + <&clk_27MHz>;
  4910. resets = <&dvp 1>;
  4911. interrupt-parent = <&aon_intr>;
  4912. interrupts = <8>, <7>, <6>,
  4913. <9>, <10>, <11>;
  4914. interrupt-names = "cec-tx", "cec-rx", "cec-low",
  4915. "wakeup", "hpd-connected", "hpd-removed";
  4916. - dmas = <&dma 17>;
  4917. + dmas = <&dma (17 | (1 << 27) | (1 << 24)| (15 << 20) | (10 << 16))>;
  4918. dma-names = "audio-rx";
  4919. status = "disabled";
  4920. };
  4921. @@ -545,14 +558,14 @@ l2: l2-cache0 {
  4922. scb {
  4923. compatible = "simple-bus";
  4924. #address-cells = <2>;
  4925. - #size-cells = <1>;
  4926. + #size-cells = <2>;
  4927. - ranges = <0x0 0x7c000000 0x0 0xfc000000 0x03800000>,
  4928. - <0x6 0x00000000 0x6 0x00000000 0x40000000>;
  4929. + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
  4930. + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>;
  4931. pcie0: pcie@7d500000 {
  4932. compatible = "brcm,bcm2711-pcie";
  4933. - reg = <0x0 0x7d500000 0x9310>;
  4934. + reg = <0x0 0x7d500000 0x0 0x9310>;
  4935. device_type = "pci";
  4936. #address-cells = <3>;
  4937. #interrupt-cells = <1>;
  4938. @@ -572,8 +585,8 @@ IRQ_TYPE_LEVEL_HIGH>,
  4939. msi-controller;
  4940. msi-parent = <&pcie0>;
  4941. - ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000
  4942. - 0x0 0x04000000>;
  4943. + ranges = <0x02000000 0x0 0xc0000000 0x6 0x00000000
  4944. + 0x0 0x40000000>;
  4945. /*
  4946. * The wrapper around the PCIe block has a bug
  4947. * preventing it from accessing beyond the first 3GB of
  4948. @@ -586,7 +599,7 @@ IRQ_TYPE_LEVEL_HIGH>,
  4949. genet: ethernet@7d580000 {
  4950. compatible = "brcm,bcm2711-genet-v5";
  4951. - reg = <0x0 0x7d580000 0x10000>;
  4952. + reg = <0x0 0x7d580000 0x0 0x10000>;
  4953. #address-cells = <0x1>;
  4954. #size-cells = <0x1>;
  4955. interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
  4956. @@ -1096,7 +1109,7 @@ &cma {
  4957. alloc-ranges = <0x0 0x00000000 0x40000000>;
  4958. };
  4959. -&i2c0 {
  4960. +&i2c0if {
  4961. compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
  4962. interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
  4963. };
  4964. @@ -1152,8 +1165,3 @@ &uart1 {
  4965. &usb {
  4966. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  4967. };
  4968. -
  4969. -&vec {
  4970. - compatible = "brcm,bcm2711-vec";
  4971. - interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
  4972. -};
  4973. diff --git a/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi b/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
  4974. new file mode 100644
  4975. index 000000000000..6b9b79f74cf3
  4976. --- /dev/null
  4977. +++ b/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
  4978. @@ -0,0 +1,26 @@
  4979. +// SPDX-License-Identifier: GPL-2.0
  4980. +
  4981. +&uart0 {
  4982. + bt: bluetooth {
  4983. + compatible = "brcm,bcm43438-bt";
  4984. + max-speed = <3000000>;
  4985. + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
  4986. + status = "disabled";
  4987. + };
  4988. +};
  4989. +
  4990. +&uart1 {
  4991. + minibt: bluetooth {
  4992. + compatible = "brcm,bcm43438-bt";
  4993. + max-speed = <460800>;
  4994. + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
  4995. + status = "disabled";
  4996. + };
  4997. +};
  4998. +
  4999. +/ {
  5000. + __overrides__ {
  5001. + krnbt = <&bt>,"status";
  5002. + krnbt_baudrate = <&bt>,"max-speed:0";
  5003. + };
  5004. +};
  5005. diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi
  5006. index c25e797b9060..06d8c3882cb7 100644
  5007. --- a/arch/arm/boot/dts/bcm2835-common.dtsi
  5008. +++ b/arch/arm/boot/dts/bcm2835-common.dtsi
  5009. @@ -124,12 +124,14 @@ hdmi: hdmi@7e902000 {
  5010. compatible = "brcm,bcm2835-hdmi";
  5011. reg = <0x7e902000 0x600>,
  5012. <0x7e808000 0x100>;
  5013. + reg-names = "hdmi",
  5014. + "hd";
  5015. interrupts = <2 8>, <2 9>;
  5016. ddc = <&i2c2>;
  5017. clocks = <&clocks BCM2835_PLLH_PIX>,
  5018. <&clocks BCM2835_CLOCK_HSM>;
  5019. clock-names = "pixel", "hdmi";
  5020. - dmas = <&dma 17>;
  5021. + dmas = <&dma (17|(1<<27)|(1<<24))>;
  5022. dma-names = "audio-rx";
  5023. status = "disabled";
  5024. };
  5025. diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
  5026. index 40b9405f1a8e..d2384d8e8555 100644
  5027. --- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
  5028. +++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
  5029. @@ -126,3 +126,8 @@ &uart0 {
  5030. pinctrl-0 = <&uart0_gpio14>;
  5031. status = "okay";
  5032. };
  5033. +
  5034. +/* i2c on camera/display connector is gpio 28&29 */
  5035. +&i2c0mux {
  5036. + pinctrl-1 = <&i2c0_gpio28>;
  5037. +};
  5038. diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
  5039. index 11edb581dbaf..4ceca674b752 100644
  5040. --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
  5041. +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
  5042. @@ -121,3 +121,10 @@ &uart0 {
  5043. pinctrl-0 = <&uart0_gpio14>;
  5044. status = "okay";
  5045. };
  5046. +
  5047. +/* i2c0 on camera/display connector is gpio 0&1. Not exposed on header.
  5048. + * To avoid having to remap everything, map both ports to gpios 0&1
  5049. + */
  5050. +&i2c0mux {
  5051. + pinctrl-1 = <&i2c0_gpio0>;
  5052. +};
  5053. diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
  5054. index 1b435c64bd9c..8f2d10d82fa1 100644
  5055. --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
  5056. +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
  5057. @@ -128,3 +128,8 @@ &uart0 {
  5058. pinctrl-0 = <&uart0_gpio14>;
  5059. status = "okay";
  5060. };
  5061. +
  5062. +/* i2c on camera/display connector is gpio 28&29 */
  5063. +&i2c0mux {
  5064. + pinctrl-1 = <&i2c0_gpio28>;
  5065. +};
  5066. diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
  5067. index a23c25c00eea..547c88a3ae9f 100644
  5068. --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
  5069. +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
  5070. @@ -121,3 +121,10 @@ &uart0 {
  5071. pinctrl-0 = <&uart0_gpio14>;
  5072. status = "okay";
  5073. };
  5074. +
  5075. +/* i2c0 on camera/display connector is gpio 0&1. Not exposed on header.
  5076. + * To avoid having to remap everything, map both ports to gpios 0&1
  5077. + */
  5078. +&i2c0mux {
  5079. + pinctrl-1 = <&i2c0_gpio0>;
  5080. +};
  5081. diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
  5082. index 1b63d6b19750..073fc99ef8a2 100644
  5083. --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
  5084. +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
  5085. @@ -116,3 +116,10 @@ &uart0 {
  5086. pinctrl-0 = <&uart0_gpio14>;
  5087. status = "okay";
  5088. };
  5089. +
  5090. +/* camera/display connector use BSC1 on GPIOS 2&3.
  5091. + * To avoid having to remap everything, map both ports to gpios 0&1
  5092. + */
  5093. +&i2c0mux {
  5094. + pinctrl-1 = <&i2c0_gpio0>;
  5095. +};
  5096. diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts b/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
  5097. index a75c882e6575..95564c93a645 100644
  5098. --- a/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
  5099. +++ b/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
  5100. @@ -95,3 +95,8 @@ &uart0 {
  5101. pinctrl-0 = <&uart0_gpio14>;
  5102. status = "okay";
  5103. };
  5104. +
  5105. +/* WHAT TO DO HERE? */
  5106. +&i2c0mux {
  5107. + pinctrl-1 = <&i2c0_gpio28>;
  5108. +};
  5109. diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
  5110. index 33b2b77aa47d..3ea5c7e6be54 100644
  5111. --- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
  5112. +++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
  5113. @@ -149,3 +149,8 @@ &uart1 {
  5114. pinctrl-0 = <&uart1_gpio14>;
  5115. status = "okay";
  5116. };
  5117. +
  5118. +/* i2c on camera/display connector is gpio 28&29 */
  5119. +&i2c0mux {
  5120. + pinctrl-1 = <&i2c0_gpio28>;
  5121. +};
  5122. diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
  5123. index 6f9b3a908f28..a0eabab12c99 100644
  5124. --- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
  5125. +++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
  5126. @@ -117,3 +117,8 @@ &uart0 {
  5127. pinctrl-0 = <&uart0_gpio14>;
  5128. status = "okay";
  5129. };
  5130. +
  5131. +/* i2c on camera/display connector is gpio 28&29 */
  5132. +&i2c0mux {
  5133. + pinctrl-1 = <&i2c0_gpio28>;
  5134. +};
  5135. diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
  5136. index 87ddcad76083..edc55bba5ff4 100644
  5137. --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
  5138. +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
  5139. @@ -19,6 +19,11 @@ firmware: firmware {
  5140. mboxes = <&mailbox>;
  5141. dma-ranges;
  5142. +
  5143. + firmware_clocks: clocks {
  5144. + compatible = "raspberrypi,firmware-clocks";
  5145. + #clock-cells = <1>;
  5146. + };
  5147. };
  5148. power: power {
  5149. @@ -49,13 +54,17 @@ alt0: alt0 {
  5150. };
  5151. };
  5152. -&i2c0 {
  5153. - pinctrl-names = "default";
  5154. - pinctrl-0 = <&i2c0_gpio0>;
  5155. +&i2c0if {
  5156. status = "okay";
  5157. clock-frequency = <100000>;
  5158. };
  5159. +&i2c0mux {
  5160. + pinctrl-0 = <&i2c0_gpio0>;
  5161. + /* pinctrl-1 varies based on platform */
  5162. + status = "okay";
  5163. +};
  5164. +
  5165. &i2c1 {
  5166. pinctrl-names = "default";
  5167. pinctrl-0 = <&i2c1_gpio2>;
  5168. @@ -67,6 +76,10 @@ &usb {
  5169. power-domains = <&power RPI_POWER_DOMAIN_USB>;
  5170. };
  5171. +&vc4 {
  5172. + raspberrypi,firmware = <&firmware>;
  5173. +};
  5174. +
  5175. &vec {
  5176. power-domains = <&power RPI_POWER_DOMAIN_VEC>;
  5177. status = "okay";
  5178. diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
  5179. index 0549686134ea..2ea891228ea0 100644
  5180. --- a/arch/arm/boot/dts/bcm2835.dtsi
  5181. +++ b/arch/arm/boot/dts/bcm2835.dtsi
  5182. @@ -19,7 +19,7 @@ cpu@0 {
  5183. soc {
  5184. ranges = <0x7e000000 0x20000000 0x02000000>;
  5185. - dma-ranges = <0x40000000 0x00000000 0x20000000>;
  5186. + dma-ranges = <0x80000000 0x00000000 0x20000000>;
  5187. };
  5188. arm-pmu {
  5189. diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
  5190. index d8af8eeac7b6..bf22b74359d8 100644
  5191. --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
  5192. +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
  5193. @@ -128,3 +128,8 @@ &uart0 {
  5194. pinctrl-0 = <&uart0_gpio14>;
  5195. status = "okay";
  5196. };
  5197. +
  5198. +/* i2c on camera/display connector is gpio 28&29 */
  5199. +&i2c0mux {
  5200. + pinctrl-1 = <&i2c0_gpio28>;
  5201. +};
  5202. diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
  5203. index 77099a7871b0..9529c0475673 100644
  5204. --- a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
  5205. +++ b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
  5206. @@ -178,3 +178,8 @@ &uart1 {
  5207. pinctrl-0 = <&uart1_gpio14>;
  5208. status = "okay";
  5209. };
  5210. +
  5211. +/* i2c on camera/display connector is gpio 44&45 */
  5212. +&i2c0mux {
  5213. + pinctrl-1 = <&i2c0_gpio44>;
  5214. +};
  5215. diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
  5216. index 61010266ca9a..40cb269aed0f 100644
  5217. --- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
  5218. +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
  5219. @@ -181,3 +181,8 @@ &uart1 {
  5220. pinctrl-0 = <&uart1_gpio14>;
  5221. status = "okay";
  5222. };
  5223. +
  5224. +/* i2c on camera/display connector is gpio 44&45 */
  5225. +&i2c0mux {
  5226. + pinctrl-1 = <&i2c0_gpio44>;
  5227. +};
  5228. diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
  5229. index dd4a48604097..8f16b6b3fe08 100644
  5230. --- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
  5231. +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
  5232. @@ -174,3 +174,8 @@ &sdhost {
  5233. status = "okay";
  5234. bus-width = <4>;
  5235. };
  5236. +
  5237. +/* i2c on camera/display connector is gpio 44&45 */
  5238. +&i2c0mux {
  5239. + pinctrl-1 = <&i2c0_gpio44>;
  5240. +};
  5241. diff --git a/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts b/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
  5242. index 588d9411ceb6..dde209ade51b 100644
  5243. --- a/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
  5244. +++ b/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
  5245. @@ -94,3 +94,8 @@ &uart0 {
  5246. pinctrl-0 = <&uart0_gpio14>;
  5247. status = "okay";
  5248. };
  5249. +
  5250. +/* WHAT TO DO HERE? */
  5251. +&i2c0mux {
  5252. + pinctrl-1 = <&i2c0_gpio28>;
  5253. +};
  5254. diff --git a/arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi b/arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi
  5255. new file mode 100644
  5256. index 000000000000..55237d03ed94
  5257. --- /dev/null
  5258. +++ b/arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi
  5259. @@ -0,0 +1,10 @@
  5260. +// SPDX-License-Identifier: GPL-2.0
  5261. +
  5262. +/ {
  5263. + cam1_reg: cam1_reg {
  5264. + compatible = "regulator-fixed";
  5265. + regulator-name = "cam1-reg";
  5266. + enable-active-high;
  5267. + status = "disabled";
  5268. + };
  5269. +};
  5270. diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
  5271. new file mode 100644
  5272. index 000000000000..6e4ce8622b47
  5273. --- /dev/null
  5274. +++ b/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
  5275. @@ -0,0 +1,4 @@
  5276. +// SPDX-License-Identifier: GPL-2.0-only
  5277. +&csi0 {
  5278. + brcm,num-data-lanes = <2>;
  5279. +};
  5280. diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
  5281. new file mode 100644
  5282. index 000000000000..6938f4daacdc
  5283. --- /dev/null
  5284. +++ b/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
  5285. @@ -0,0 +1,4 @@
  5286. +// SPDX-License-Identifier: GPL-2.0-only
  5287. +&csi1 {
  5288. + brcm,num-data-lanes = <2>;
  5289. +};
  5290. diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
  5291. new file mode 100644
  5292. index 000000000000..b37037437bee
  5293. --- /dev/null
  5294. +++ b/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
  5295. @@ -0,0 +1,4 @@
  5296. +// SPDX-License-Identifier: GPL-2.0-only
  5297. +&csi1 {
  5298. + brcm,num-data-lanes = <4>;
  5299. +};
  5300. diff --git a/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
  5301. new file mode 100644
  5302. index 000000000000..38f0074bce3f
  5303. --- /dev/null
  5304. +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
  5305. @@ -0,0 +1,4 @@
  5306. +&i2c0mux {
  5307. + pinctrl-0 = <&i2c0_gpio0>;
  5308. + pinctrl-1 = <&i2c0_gpio28>;
  5309. +};
  5310. diff --git a/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
  5311. new file mode 100644
  5312. index 000000000000..119946d878db
  5313. --- /dev/null
  5314. +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
  5315. @@ -0,0 +1,4 @@
  5316. +&i2c0mux {
  5317. + pinctrl-0 = <&i2c0_gpio0>;
  5318. + pinctrl-1 = <&i2c0_gpio44>;
  5319. +};
  5320. diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
  5321. index c113661a6668..62d7ee513549 100644
  5322. --- a/arch/arm/boot/dts/bcm283x.dtsi
  5323. +++ b/arch/arm/boot/dts/bcm283x.dtsi
  5324. @@ -336,7 +336,7 @@ spi: spi@7e204000 {
  5325. status = "disabled";
  5326. };
  5327. - i2c0: i2c@7e205000 {
  5328. + i2c0if: i2c@7e205000 {
  5329. compatible = "brcm,bcm2835-i2c";
  5330. reg = <0x7e205000 0x200>;
  5331. interrupts = <2 21>;
  5332. @@ -346,6 +346,30 @@ i2c0: i2c@7e205000 {
  5333. status = "disabled";
  5334. };
  5335. + i2c0mux: i2c0mux {
  5336. + compatible = "i2c-mux-pinctrl";
  5337. + #address-cells = <1>;
  5338. + #size-cells = <0>;
  5339. +
  5340. + i2c-parent = <&i2c0if>;
  5341. +
  5342. + pinctrl-names = "i2c0", "i2c_csi_dsi";
  5343. +
  5344. + status = "disabled";
  5345. +
  5346. + i2c0: i2c@0 {
  5347. + reg = <0>;
  5348. + #address-cells = <1>;
  5349. + #size-cells = <0>;
  5350. + };
  5351. +
  5352. + i2c_csi_dsi: i2c@1 {
  5353. + reg = <1>;
  5354. + #address-cells = <1>;
  5355. + #size-cells = <0>;
  5356. + };
  5357. + };
  5358. +
  5359. dpi: dpi@7e208000 {
  5360. compatible = "brcm,bcm2835-dpi";
  5361. reg = <0x7e208000 0x8c>;
  5362. diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
  5363. new file mode 100644
  5364. index 000000000000..44aedc149ff0
  5365. --- /dev/null
  5366. +++ b/arch/arm/boot/dts/overlays/Makefile
  5367. @@ -0,0 +1,248 @@
  5368. +# Overlays for the Raspberry Pi platform
  5369. +
  5370. +dtb-$(CONFIG_ARCH_BCM2835) += overlay_map.dtb
  5371. +
  5372. +dtbo-$(CONFIG_ARCH_BCM2835) += \
  5373. + act-led.dtbo \
  5374. + adafruit18.dtbo \
  5375. + adau1977-adc.dtbo \
  5376. + adau7002-simple.dtbo \
  5377. + ads1015.dtbo \
  5378. + ads1115.dtbo \
  5379. + ads7846.dtbo \
  5380. + adv7282m.dtbo \
  5381. + adv728x-m.dtbo \
  5382. + akkordion-iqdacplus.dtbo \
  5383. + allo-boss-dac-pcm512x-audio.dtbo \
  5384. + allo-boss2-dac-audio.dtbo \
  5385. + allo-digione.dtbo \
  5386. + allo-katana-dac-audio.dtbo \
  5387. + allo-piano-dac-pcm512x-audio.dtbo \
  5388. + allo-piano-dac-plus-pcm512x-audio.dtbo \
  5389. + anyspi.dtbo \
  5390. + apds9960.dtbo \
  5391. + applepi-dac.dtbo \
  5392. + at86rf233.dtbo \
  5393. + audioinjector-addons.dtbo \
  5394. + audioinjector-isolated-soundcard.dtbo \
  5395. + audioinjector-ultra.dtbo \
  5396. + audioinjector-wm8731-audio.dtbo \
  5397. + audiosense-pi.dtbo \
  5398. + audremap.dtbo \
  5399. + balena-fin.dtbo \
  5400. + cap1106.dtbo \
  5401. + chipdip-dac.dtbo \
  5402. + cma.dtbo \
  5403. + dht11.dtbo \
  5404. + dionaudio-loco.dtbo \
  5405. + dionaudio-loco-v2.dtbo \
  5406. + disable-bt.dtbo \
  5407. + disable-wifi.dtbo \
  5408. + dpi18.dtbo \
  5409. + dpi18cpadhi.dtbo \
  5410. + dpi24.dtbo \
  5411. + draws.dtbo \
  5412. + dwc-otg.dtbo \
  5413. + dwc2.dtbo \
  5414. + edt-ft5406.dtbo \
  5415. + enc28j60.dtbo \
  5416. + enc28j60-spi2.dtbo \
  5417. + exc3000.dtbo \
  5418. + fe-pi-audio.dtbo \
  5419. + fsm-demo.dtbo \
  5420. + ghost-amp.dtbo \
  5421. + goodix.dtbo \
  5422. + googlevoicehat-soundcard.dtbo \
  5423. + gpio-fan.dtbo \
  5424. + gpio-ir.dtbo \
  5425. + gpio-ir-tx.dtbo \
  5426. + gpio-key.dtbo \
  5427. + gpio-led.dtbo \
  5428. + gpio-no-bank0-irq.dtbo \
  5429. + gpio-no-irq.dtbo \
  5430. + gpio-poweroff.dtbo \
  5431. + gpio-shutdown.dtbo \
  5432. + hd44780-lcd.dtbo \
  5433. + hdmi-backlight-hwhack-gpio.dtbo \
  5434. + hifiberry-amp.dtbo \
  5435. + hifiberry-amp100.dtbo \
  5436. + hifiberry-dac.dtbo \
  5437. + hifiberry-dacplus.dtbo \
  5438. + hifiberry-dacplusadc.dtbo \
  5439. + hifiberry-dacplusadcpro.dtbo \
  5440. + hifiberry-dacplusdsp.dtbo \
  5441. + hifiberry-dacplushd.dtbo \
  5442. + hifiberry-digi.dtbo \
  5443. + hifiberry-digi-pro.dtbo \
  5444. + highperi.dtbo \
  5445. + hy28a.dtbo \
  5446. + hy28b.dtbo \
  5447. + hy28b-2017.dtbo \
  5448. + i-sabre-q2m.dtbo \
  5449. + i2c-bcm2708.dtbo \
  5450. + i2c-gpio.dtbo \
  5451. + i2c-mux.dtbo \
  5452. + i2c-pwm-pca9685a.dtbo \
  5453. + i2c-rtc.dtbo \
  5454. + i2c-rtc-gpio.dtbo \
  5455. + i2c-sensor.dtbo \
  5456. + i2c0.dtbo \
  5457. + i2c1.dtbo \
  5458. + i2c3.dtbo \
  5459. + i2c4.dtbo \
  5460. + i2c5.dtbo \
  5461. + i2c6.dtbo \
  5462. + i2s-gpio28-31.dtbo \
  5463. + ilitek251x.dtbo \
  5464. + imx219.dtbo \
  5465. + imx290.dtbo \
  5466. + imx378.dtbo \
  5467. + imx477.dtbo \
  5468. + iqaudio-codec.dtbo \
  5469. + iqaudio-dac.dtbo \
  5470. + iqaudio-dacplus.dtbo \
  5471. + iqaudio-digi-wm8804-audio.dtbo \
  5472. + irs1125.dtbo \
  5473. + jedec-spi-nor.dtbo \
  5474. + justboom-both.dtbo \
  5475. + justboom-dac.dtbo \
  5476. + justboom-digi.dtbo \
  5477. + ltc294x.dtbo \
  5478. + max98357a.dtbo \
  5479. + maxtherm.dtbo \
  5480. + mbed-dac.dtbo \
  5481. + mcp23017.dtbo \
  5482. + mcp23s17.dtbo \
  5483. + mcp2515-can0.dtbo \
  5484. + mcp2515-can1.dtbo \
  5485. + mcp251xfd.dtbo \
  5486. + mcp3008.dtbo \
  5487. + mcp3202.dtbo \
  5488. + mcp342x.dtbo \
  5489. + media-center.dtbo \
  5490. + merus-amp.dtbo \
  5491. + midi-uart0.dtbo \
  5492. + midi-uart1.dtbo \
  5493. + midi-uart2.dtbo \
  5494. + midi-uart3.dtbo \
  5495. + midi-uart4.dtbo \
  5496. + midi-uart5.dtbo \
  5497. + minipitft13.dtbo \
  5498. + miniuart-bt.dtbo \
  5499. + mmc.dtbo \
  5500. + mpu6050.dtbo \
  5501. + mz61581.dtbo \
  5502. + ov5647.dtbo \
  5503. + ov7251.dtbo \
  5504. + ov9281.dtbo \
  5505. + papirus.dtbo \
  5506. + pca953x.dtbo \
  5507. + pcie-32bit-dma.dtbo \
  5508. + pibell.dtbo \
  5509. + pifacedigital.dtbo \
  5510. + pifi-40.dtbo \
  5511. + pifi-dac-hd.dtbo \
  5512. + pifi-dac-zero.dtbo \
  5513. + pifi-mini-210.dtbo \
  5514. + piglow.dtbo \
  5515. + piscreen.dtbo \
  5516. + piscreen2r.dtbo \
  5517. + pisound.dtbo \
  5518. + pitft22.dtbo \
  5519. + pitft28-capacitive.dtbo \
  5520. + pitft28-resistive.dtbo \
  5521. + pitft35-resistive.dtbo \
  5522. + pps-gpio.dtbo \
  5523. + pwm.dtbo \
  5524. + pwm-2chan.dtbo \
  5525. + pwm-ir-tx.dtbo \
  5526. + qca7000.dtbo \
  5527. + qca7000-uart0.dtbo \
  5528. + rotary-encoder.dtbo \
  5529. + rpi-backlight.dtbo \
  5530. + rpi-cirrus-wm5102.dtbo \
  5531. + rpi-dac.dtbo \
  5532. + rpi-display.dtbo \
  5533. + rpi-ft5406.dtbo \
  5534. + rpi-poe.dtbo \
  5535. + rpi-poe-plus.dtbo \
  5536. + rpi-proto.dtbo \
  5537. + rpi-sense.dtbo \
  5538. + rpi-tv.dtbo \
  5539. + rpivid-v4l2.dtbo \
  5540. + rra-digidac1-wm8741-audio.dtbo \
  5541. + sainsmart18.dtbo \
  5542. + sc16is750-i2c.dtbo \
  5543. + sc16is752-i2c.dtbo \
  5544. + sc16is752-spi0.dtbo \
  5545. + sc16is752-spi1.dtbo \
  5546. + sdhost.dtbo \
  5547. + sdio.dtbo \
  5548. + seeed-can-fd-hat-v1.dtbo \
  5549. + seeed-can-fd-hat-v2.dtbo \
  5550. + sh1106-spi.dtbo \
  5551. + si446x-spi0.dtbo \
  5552. + smi.dtbo \
  5553. + smi-dev.dtbo \
  5554. + smi-nand.dtbo \
  5555. + spi-gpio35-39.dtbo \
  5556. + spi-gpio40-45.dtbo \
  5557. + spi-rtc.dtbo \
  5558. + spi0-1cs.dtbo \
  5559. + spi0-2cs.dtbo \
  5560. + spi1-1cs.dtbo \
  5561. + spi1-2cs.dtbo \
  5562. + spi1-3cs.dtbo \
  5563. + spi2-1cs.dtbo \
  5564. + spi2-2cs.dtbo \
  5565. + spi2-3cs.dtbo \
  5566. + spi3-1cs.dtbo \
  5567. + spi3-2cs.dtbo \
  5568. + spi4-1cs.dtbo \
  5569. + spi4-2cs.dtbo \
  5570. + spi5-1cs.dtbo \
  5571. + spi5-2cs.dtbo \
  5572. + spi6-1cs.dtbo \
  5573. + spi6-2cs.dtbo \
  5574. + ssd1306.dtbo \
  5575. + ssd1306-spi.dtbo \
  5576. + ssd1331-spi.dtbo \
  5577. + ssd1351-spi.dtbo \
  5578. + superaudioboard.dtbo \
  5579. + sx150x.dtbo \
  5580. + tc358743.dtbo \
  5581. + tc358743-audio.dtbo \
  5582. + tinylcd35.dtbo \
  5583. + tpm-slb9670.dtbo \
  5584. + uart0.dtbo \
  5585. + uart1.dtbo \
  5586. + uart2.dtbo \
  5587. + uart3.dtbo \
  5588. + uart4.dtbo \
  5589. + uart5.dtbo \
  5590. + udrc.dtbo \
  5591. + ugreen-dabboard.dtbo \
  5592. + upstream.dtbo \
  5593. + upstream-pi4.dtbo \
  5594. + vc4-fkms-v3d.dtbo \
  5595. + vc4-fkms-v3d-pi4.dtbo \
  5596. + vc4-kms-dpi-at056tn53v1.dtbo \
  5597. + vc4-kms-dsi-7inch.dtbo \
  5598. + vc4-kms-dsi-lt070me05000.dtbo \
  5599. + vc4-kms-dsi-lt070me05000-v2.dtbo \
  5600. + vc4-kms-kippah-7inch.dtbo \
  5601. + vc4-kms-v3d.dtbo \
  5602. + vc4-kms-v3d-pi4.dtbo \
  5603. + vc4-kms-vga666.dtbo \
  5604. + vga666.dtbo \
  5605. + w1-gpio.dtbo \
  5606. + w1-gpio-pullup.dtbo \
  5607. + w5500.dtbo \
  5608. + wittypi.dtbo \
  5609. + wm8960-soundcard.dtbo
  5610. +
  5611. +targets += dtbs dtbs_install
  5612. +targets += $(dtbo-y)
  5613. +
  5614. +always-y := $(dtbo-y)
  5615. +clean-files := *.dtbo
  5616. diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
  5617. new file mode 100644
  5618. index 000000000000..eb2c9adfb1a8
  5619. --- /dev/null
  5620. +++ b/arch/arm/boot/dts/overlays/README
  5621. @@ -0,0 +1,3530 @@
  5622. +Introduction
  5623. +============
  5624. +
  5625. +This directory contains Device Tree overlays. Device Tree makes it possible
  5626. +to support many hardware configurations with a single kernel and without the
  5627. +need to explicitly load or blacklist kernel modules. Note that this isn't a
  5628. +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
  5629. +are still configured by the board support code, but the intention is to
  5630. +eventually reach that goal.
  5631. +
  5632. +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
  5633. +default, the Raspberry Pi kernel boots with device tree enabled. You can
  5634. +completely disable DT usage (for now) by adding:
  5635. +
  5636. + device_tree=
  5637. +
  5638. +to your config.txt, which should cause your Pi to revert to the old way of
  5639. +doing things after a reboot.
  5640. +
  5641. +In /boot you will find a .dtb for each base platform. This describes the
  5642. +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
  5643. +siblings) selects the .dtb file appropriate for the platform by name, and reads
  5644. +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
  5645. +are disabled, but they can be enabled using Device Tree parameters:
  5646. +
  5647. + dtparam=i2c=on,i2s=on,spi=on
  5648. +
  5649. +However, this shouldn't be necessary in many use cases because loading an
  5650. +overlay that requires one of those interfaces will cause it to be enabled
  5651. +automatically, and it is advisable to only enable interfaces if they are
  5652. +needed.
  5653. +
  5654. +Configuring additional, optional hardware is done using Device Tree overlays
  5655. +(see below).
  5656. +
  5657. +GPIO numbering uses the hardware pin numbering scheme (aka BCM scheme) and
  5658. +not the physical pin numbers.
  5659. +
  5660. +raspi-config
  5661. +============
  5662. +
  5663. +The Advanced Options section of the raspi-config utility can enable and disable
  5664. +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
  5665. +is possible to both enable an interface and blacklist the driver, if for some
  5666. +reason you should want to defer the loading.
  5667. +
  5668. +Modules
  5669. +=======
  5670. +
  5671. +As well as describing the hardware, Device Tree also gives enough information
  5672. +to allow suitable driver modules to be located and loaded, with the corollary
  5673. +that unneeded modules are not loaded. As a result it should be possible to
  5674. +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
  5675. +have its contents deleted (or commented out).
  5676. +
  5677. +Using Overlays
  5678. +==============
  5679. +
  5680. +Overlays are loaded using the "dtoverlay" config.txt setting. As an example,
  5681. +consider I2C Real Time Clock drivers. In the pre-DT world these would be loaded
  5682. +by writing a magic string comprising a device identifier and an I2C address to
  5683. +a special file in /sys/class/i2c-adapter, having first loaded the driver for
  5684. +the I2C interface and the RTC device - something like this:
  5685. +
  5686. + modprobe i2c-bcm2835
  5687. + modprobe rtc-ds1307
  5688. + echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
  5689. +
  5690. +With DT enabled, this becomes a line in config.txt:
  5691. +
  5692. + dtoverlay=i2c-rtc,ds1307
  5693. +
  5694. +This causes the file /boot/overlays/i2c-rtc.dtbo to be loaded and a "node"
  5695. +describing the DS1307 I2C device to be added to the Device Tree for the Pi. By
  5696. +default it usees address 0x68, but this can be modified with an additional DT
  5697. +parameter:
  5698. +
  5699. + dtoverlay=i2c-rtc,ds1307,addr=0x68
  5700. +
  5701. +Parameters usually have default values, although certain parameters are
  5702. +mandatory. See the list of overlays below for a description of the parameters
  5703. +and their defaults.
  5704. +
  5705. +Making new Overlays based on existing Overlays
  5706. +==============================================
  5707. +
  5708. +Recent overlays have been designed in a more general way, so that they can be
  5709. +adapted to hardware by changing their parameters. When you have additional
  5710. +hardware with more than one device of a kind, you end up using the same overlay
  5711. +multiple times with other parameters, e.g.
  5712. +
  5713. + # 2 CAN FD interfaces on spi but with different pins
  5714. + dtoverlay=mcp251xfd,spi0-0,interrupt=25
  5715. + dtoverlay=mcp251xfd,spi0-1,interrupt=24
  5716. +
  5717. + # a realtime clock on i2c
  5718. + dtoverlay=i2c-rtc,pcf85063
  5719. +
  5720. +While this approach does work, it requires knowledge about the hardware design.
  5721. +It is more feasible to simplify things for the end user by providing a single
  5722. +overlay as it is done the traditional way.
  5723. +
  5724. +A new overlay can be generated by using ovmerge utility.
  5725. +https://github.com/raspberrypi/utils/blob/master/ovmerge/ovmerge
  5726. +
  5727. +To generate an overlay for the above configuration we pass the configuration
  5728. +to ovmerge and add the -c flag.
  5729. +
  5730. + ovmerge -c mcp251xfd-overlay.dts,spi0-0,interrupt=25 \
  5731. + mcp251xfd-overlay.dts,spi0-1,interrupt=24 \
  5732. + i2c-rtc-overlay.dts,pcf85063 \
  5733. + >> merged-overlay.dts
  5734. +
  5735. +The -c option writes the command above as a comment into the overlay as
  5736. +a marker that this overlay is generated and how it was generated.
  5737. +After compiling the overlay it can be loaded in a single line.
  5738. +
  5739. + dtoverlay=merged
  5740. +
  5741. +It does the same as the original configuration but without parameters.
  5742. +
  5743. +The Overlay and Parameter Reference
  5744. +===================================
  5745. +
  5746. +N.B. When editing this file, please preserve the indentation levels to make it
  5747. +simple to parse programmatically. NO HARD TABS.
  5748. +
  5749. +
  5750. +Name: <The base DTB>
  5751. +Info: Configures the base Raspberry Pi hardware
  5752. +Load: <loaded automatically>
  5753. +Params:
  5754. + ant1 Select antenna 1 (default). CM4 only.
  5755. +
  5756. + ant2 Select antenna 2. CM4 only.
  5757. +
  5758. + noant Disable both antennas. CM4 only.
  5759. +
  5760. + audio Set to "on" to enable the onboard ALSA audio
  5761. + interface (default "off")
  5762. +
  5763. + axiperf Set to "on" to enable the AXI bus performance
  5764. + monitors.
  5765. + See /sys/kernel/debug/raspberrypi_axi_monitor
  5766. + for the results.
  5767. +
  5768. + eee Enable Energy Efficient Ethernet support for
  5769. + compatible devices (default "on"). See also
  5770. + "tx_lpi_timer". Pi3B+ only.
  5771. +
  5772. + eth_downshift_after Set the number of auto-negotiation failures
  5773. + after which the 1000Mbps modes are disabled.
  5774. + Legal values are 2, 3, 4, 5 and 0, where
  5775. + 0 means never downshift (default 2). Pi3B+ only.
  5776. +
  5777. + eth_led0 Set mode of LED0 - amber on Pi3B+ (default "1"),
  5778. + green on Pi4 (default "0").
  5779. + The legal values are:
  5780. +
  5781. + Pi3B+
  5782. +
  5783. + 0=link/activity 1=link1000/activity
  5784. + 2=link100/activity 3=link10/activity
  5785. + 4=link100/1000/activity 5=link10/1000/activity
  5786. + 6=link10/100/activity 14=off 15=on
  5787. +
  5788. + Pi4
  5789. +
  5790. + 0=Speed/Activity 1=Speed
  5791. + 2=Flash activity 3=FDX
  5792. + 4=Off 5=On
  5793. + 6=Alt 7=Speed/Flash
  5794. + 8=Link 9=Activity
  5795. +
  5796. + eth_led1 Set mode of LED1 - green on Pi3B+ (default "6"),
  5797. + amber on Pi4 (default "8"). See eth_led0 for
  5798. + legal values.
  5799. +
  5800. + eth_max_speed Set the maximum speed a link is allowed
  5801. + to negotiate. Legal values are 10, 100 and
  5802. + 1000 (default 1000). Pi3B+ only.
  5803. +
  5804. + i2c_arm Set to "on" to enable the ARM's i2c interface
  5805. + (default "off")
  5806. +
  5807. + i2c_vc Set to "on" to enable the i2c interface
  5808. + usually reserved for the VideoCore processor
  5809. + (default "off")
  5810. +
  5811. + i2c An alias for i2c_arm
  5812. +
  5813. + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
  5814. + (default "100000")
  5815. +
  5816. + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
  5817. + (default "100000")
  5818. +
  5819. + i2c_baudrate An alias for i2c_arm_baudrate
  5820. +
  5821. + i2s Set to "on" to enable the i2s interface
  5822. + (default "off")
  5823. +
  5824. + krnbt Set to "on" to enable autoprobing of Bluetooth
  5825. + driver without need of hciattach/btattach
  5826. + (default "off")
  5827. +
  5828. + krnbt_baudrate Set the baudrate of the PL011 UART when used
  5829. + with krnbt=on
  5830. +
  5831. + spi Set to "on" to enable the spi interfaces
  5832. + (default "off")
  5833. +
  5834. + spi_dma4 Use to enable 40-bit DMA on spi interfaces
  5835. + (the assigned value doesn't matter)
  5836. + (2711 only)
  5837. +
  5838. + random Set to "on" to enable the hardware random
  5839. + number generator (default "on")
  5840. +
  5841. + sd_overclock Clock (in MHz) to use when the MMC framework
  5842. + requests 50MHz
  5843. +
  5844. + sd_poll_once Looks for a card once after booting. Useful
  5845. + for network booting scenarios to avoid the
  5846. + overhead of continuous polling. N.B. Using
  5847. + this option restricts the system to using a
  5848. + single card per boot (or none at all).
  5849. + (default off)
  5850. +
  5851. + sd_force_pio Disable DMA support for SD driver (default off)
  5852. +
  5853. + sd_pio_limit Number of blocks above which to use DMA for
  5854. + SD card (default 1)
  5855. +
  5856. + sd_debug Enable debug output from SD driver (default off)
  5857. +
  5858. + sdio_overclock Clock (in MHz) to use when the MMC framework
  5859. + requests 50MHz for the SDIO/WLAN interface.
  5860. +
  5861. + tx_lpi_timer Set the delay in microseconds between going idle
  5862. + and entering the low power state (default 600).
  5863. + Requires EEE to be enabled - see "eee".
  5864. +
  5865. + uart0 Set to "off" to disable uart0 (default "on")
  5866. +
  5867. + uart1 Set to "on" or "off" to enable or disable uart1
  5868. + (default varies)
  5869. +
  5870. + watchdog Set to "on" to enable the hardware watchdog
  5871. + (default "off")
  5872. +
  5873. + act_led_trigger Choose which activity the LED tracks.
  5874. + Use "heartbeat" for a nice load indicator.
  5875. + (default "mmc")
  5876. +
  5877. + act_led_activelow Set to "on" to invert the sense of the LED
  5878. + (default "off")
  5879. + N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led
  5880. + overlay.
  5881. +
  5882. + act_led_gpio Set which GPIO to use for the activity LED
  5883. + (in case you want to connect it to an external
  5884. + device)
  5885. + (default "16" on a non-Plus board, "47" on a
  5886. + Plus or Pi 2)
  5887. + N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led
  5888. + overlay.
  5889. +
  5890. + pwr_led_trigger
  5891. + pwr_led_activelow
  5892. + pwr_led_gpio
  5893. + As for act_led_*, but using the PWR LED.
  5894. + Not available on Model A/B boards.
  5895. +
  5896. + N.B. It is recommended to only enable those interfaces that are needed.
  5897. + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
  5898. + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
  5899. + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
  5900. + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
  5901. + but deprecated because the ARM/VC assignments differ between board
  5902. + revisions. The same board-specific mapping applies to i2c_baudrate,
  5903. + and the other i2c baudrate parameters.
  5904. +
  5905. +
  5906. +Name: act-led
  5907. +Info: Pi 3B, 3B+, 3A+ and 4B use a GPIO expander to drive the LEDs which can
  5908. + only be accessed from the VPU. There is a special driver for this with a
  5909. + separate DT node, which has the unfortunate consequence of breaking the
  5910. + act_led_gpio and act_led_activelow dtparams.
  5911. + This overlay changes the GPIO controller back to the standard one and
  5912. + restores the dtparams.
  5913. +Load: dtoverlay=act-led,<param>=<val>
  5914. +Params: activelow Set to "on" to invert the sense of the LED
  5915. + (default "off")
  5916. +
  5917. + gpio Set which GPIO to use for the activity LED
  5918. + (in case you want to connect it to an external
  5919. + device)
  5920. + REQUIRED
  5921. +
  5922. +
  5923. +Name: adafruit18
  5924. +Info: Overlay for the SPI-connected Adafruit 1.8" display (based on the
  5925. + ST7735R chip). It includes support for the "green tab" version.
  5926. +Load: dtoverlay=adafruit18,<param>=<val>
  5927. +Params: green Use the adafruit18_green variant.
  5928. + rotate Display rotation {0,90,180,270}
  5929. + speed SPI bus speed in Hz (default 4000000)
  5930. + fps Display frame rate in Hz
  5931. + bgr Enable BGR mode (default off)
  5932. + debug Debug output level {0-7}
  5933. + dc_pin GPIO pin for D/C (default 24)
  5934. + reset_pin GPIO pin for RESET (default 25)
  5935. + led_pin GPIO used to control backlight (default 18)
  5936. +
  5937. +
  5938. +Name: adau1977-adc
  5939. +Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
  5940. + and I2S for data.
  5941. +Load: dtoverlay=adau1977-adc
  5942. +Params: <None>
  5943. +
  5944. +
  5945. +Name: adau7002-simple
  5946. +Info: Overlay for the activation of ADAU7002 stereo PDM to I2S converter.
  5947. +Load: dtoverlay=adau7002-simple,<param>=<val>
  5948. +Params: card-name Override the default, "adau7002", card name.
  5949. +
  5950. +
  5951. +Name: ads1015
  5952. +Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C
  5953. +Load: dtoverlay=ads1015,<param>=<val>
  5954. +Params: addr I2C bus address of device. Set based on how the
  5955. + addr pin is wired. (default=0x48 assumes addr
  5956. + is pulled to GND)
  5957. + cha_enable Enable virtual channel a. (default=true)
  5958. + cha_cfg Set the configuration for virtual channel a.
  5959. + (default=4 configures this channel for the
  5960. + voltage at A0 with respect to GND)
  5961. + cha_datarate Set the datarate (samples/sec) for this channel.
  5962. + (default=4 sets 1600 sps)
  5963. + cha_gain Set the gain of the Programmable Gain
  5964. + Amplifier for this channel. (default=2 sets the
  5965. + full scale of the channel to 2.048 Volts)
  5966. +
  5967. + Channel (ch) parameters can be set for each enabled channel.
  5968. + A maximum of 4 channels can be enabled (letters a thru d).
  5969. + For more information refer to the device datasheet at:
  5970. + http://www.ti.com/lit/ds/symlink/ads1015.pdf
  5971. +
  5972. +
  5973. +Name: ads1115
  5974. +Info: Texas Instruments ADS1115 ADC
  5975. +Load: dtoverlay=ads1115,<param>[=<val>]
  5976. +Params: addr I2C bus address of device. Set based on how the
  5977. + addr pin is wired. (default=0x48 assumes addr
  5978. + is pulled to GND)
  5979. + cha_enable Enable virtual channel a.
  5980. + cha_cfg Set the configuration for virtual channel a.
  5981. + (default=4 configures this channel for the
  5982. + voltage at A0 with respect to GND)
  5983. + cha_datarate Set the datarate (samples/sec) for this channel.
  5984. + (default=7 sets 860 sps)
  5985. + cha_gain Set the gain of the Programmable Gain
  5986. + Amplifier for this channel. (Default 1 sets the
  5987. + full scale of the channel to 4.096 Volts)
  5988. +
  5989. + Channel parameters can be set for each enabled channel.
  5990. + A maximum of 4 channels can be enabled (letters a thru d).
  5991. + For more information refer to the device datasheet at:
  5992. + http://www.ti.com/lit/ds/symlink/ads1115.pdf
  5993. +
  5994. +
  5995. +Name: ads7846
  5996. +Info: ADS7846 Touch controller
  5997. +Load: dtoverlay=ads7846,<param>=<val>
  5998. +Params: cs SPI bus Chip Select (default 1)
  5999. + speed SPI bus speed (default 2MHz, max 3.25MHz)
  6000. + penirq GPIO used for PENIRQ. REQUIRED
  6001. + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
  6002. + swapxy Swap x and y axis
  6003. + xmin Minimum value on the X axis (default 0)
  6004. + ymin Minimum value on the Y axis (default 0)
  6005. + xmax Maximum value on the X axis (default 4095)
  6006. + ymax Maximum value on the Y axis (default 4095)
  6007. + pmin Minimum reported pressure value (default 0)
  6008. + pmax Maximum reported pressure value (default 65535)
  6009. + xohms Touchpanel sensitivity (X-plate resistance)
  6010. + (default 400)
  6011. +
  6012. + penirq is required and usually xohms (60-100) has to be set as well.
  6013. + Apart from that, pmax (255) and swapxy are also common.
  6014. + The rest of the calibration can be done with xinput-calibrator.
  6015. + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
  6016. + Device Tree binding document:
  6017. + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
  6018. +
  6019. +
  6020. +Name: adv7282m
  6021. +Info: Analog Devices ADV7282M analogue video to CSI2 bridge.
  6022. + Uses Unicam1, which is the standard camera connector on most Pi
  6023. + variants.
  6024. +Load: dtoverlay=adv7282m,<param>=<val>
  6025. +Params: addr Overrides the I2C address (default 0x21)
  6026. +
  6027. +
  6028. +Name: adv728x-m
  6029. +Info: Analog Devices ADV728[0|1|2]-M analogue video to CSI2 bridges.
  6030. + This is a wrapper for adv7282m, and defaults to ADV7282M.
  6031. +Load: dtoverlay=adv728x-m,<param>=<val>
  6032. +Params: addr Overrides the I2C address (default 0x21)
  6033. + adv7280m Select ADV7280-M.
  6034. + adv7281m Select ADV7281-M.
  6035. + adv7281ma Select ADV7281-MA.
  6036. +
  6037. +
  6038. +Name: akkordion-iqdacplus
  6039. +Info: Configures the Digital Dreamtime Akkordion Music Player (based on the
  6040. + OEM IQAudIO DAC+ or DAC Zero module).
  6041. +Load: dtoverlay=akkordion-iqdacplus,<param>=<val>
  6042. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6043. + Digital volume control. Enable with
  6044. + dtoverlay=akkordion-iqdacplus,24db_digital_gain
  6045. + (The default behaviour is that the Digital
  6046. + volume control is limited to a maximum of
  6047. + 0dB. ie. it can attenuate but not provide
  6048. + gain. For most users, this will be desired
  6049. + as it will prevent clipping. By appending
  6050. + the 24db_digital_gain parameter, the Digital
  6051. + volume control will allow up to 24dB of
  6052. + gain. If this parameter is enabled, it is the
  6053. + responsibility of the user to ensure that
  6054. + the Digital volume control is set to a value
  6055. + that does not result in clipping/distortion!)
  6056. +
  6057. +
  6058. +Name: allo-boss-dac-pcm512x-audio
  6059. +Info: Configures the Allo Boss DAC audio cards.
  6060. +Load: dtoverlay=allo-boss-dac-pcm512x-audio,<param>
  6061. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6062. + Digital volume control. Enable with
  6063. + "dtoverlay=allo-boss-dac-pcm512x-audio,
  6064. + 24db_digital_gain"
  6065. + (The default behaviour is that the Digital
  6066. + volume control is limited to a maximum of
  6067. + 0dB. ie. it can attenuate but not provide
  6068. + gain. For most users, this will be desired
  6069. + as it will prevent clipping. By appending
  6070. + the 24db_digital_gain parameter, the Digital
  6071. + volume control will allow up to 24dB of
  6072. + gain. If this parameter is enabled, it is the
  6073. + responsibility of the user to ensure that
  6074. + the Digital volume control is set to a value
  6075. + that does not result in clipping/distortion!)
  6076. + slave Force Boss DAC into slave mode, using Pi a
  6077. + master for bit clock and frame clock. Enable
  6078. + with "dtoverlay=allo-boss-dac-pcm512x-audio,
  6079. + slave"
  6080. +
  6081. +
  6082. +Name: allo-boss2-dac-audio
  6083. +Info: Configures the Allo Boss2 DAC audio card
  6084. +Load: dtoverlay=allo-boss2-dac-audio
  6085. +Params: <None>
  6086. +
  6087. +
  6088. +Name: allo-digione
  6089. +Info: Configures the Allo Digione audio card
  6090. +Load: dtoverlay=allo-digione
  6091. +Params: <None>
  6092. +
  6093. +
  6094. +Name: allo-katana-dac-audio
  6095. +Info: Configures the Allo Katana DAC audio card
  6096. +Load: dtoverlay=allo-katana-dac-audio
  6097. +Params: <None>
  6098. +
  6099. +
  6100. +Name: allo-piano-dac-pcm512x-audio
  6101. +Info: Configures the Allo Piano DAC (2.0/2.1) audio cards.
  6102. + (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo.
  6103. + The subwoofer outputs on the Piano 2.1 are not currently supported!)
  6104. +Load: dtoverlay=allo-piano-dac-pcm512x-audio,<param>
  6105. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6106. + Digital volume control.
  6107. + (The default behaviour is that the Digital
  6108. + volume control is limited to a maximum of
  6109. + 0dB. ie. it can attenuate but not provide
  6110. + gain. For most users, this will be desired
  6111. + as it will prevent clipping. By appending
  6112. + the 24db_digital_gain parameter, the Digital
  6113. + volume control will allow up to 24dB of
  6114. + gain. If this parameter is enabled, it is the
  6115. + responsibility of the user to ensure that
  6116. + the Digital volume control is set to a value
  6117. + that does not result in clipping/distortion!)
  6118. +
  6119. +
  6120. +Name: allo-piano-dac-plus-pcm512x-audio
  6121. +Info: Configures the Allo Piano DAC (2.1) audio cards.
  6122. +Load: dtoverlay=allo-piano-dac-plus-pcm512x-audio,<param>
  6123. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6124. + Digital volume control.
  6125. + (The default behaviour is that the Digital
  6126. + volume control is limited to a maximum of
  6127. + 0dB. ie. it can attenuate but not provide
  6128. + gain. For most users, this will be desired
  6129. + as it will prevent clipping. By appending
  6130. + the 24db_digital_gain parameter, the Digital
  6131. + volume control will allow up to 24dB of
  6132. + gain. If this parameter is enabled, it is the
  6133. + responsibility of the user to ensure that
  6134. + the Digital volume control is set to a value
  6135. + that does not result in clipping/distortion!)
  6136. + glb_mclk This option is only with Kali board. If enabled,
  6137. + MCLK for Kali is used and PLL is disabled for
  6138. + better voice quality. (default Off)
  6139. +
  6140. +
  6141. +Name: anyspi
  6142. +Info: Universal device tree overlay for SPI devices
  6143. +
  6144. + Just specify the SPI address and device name ("compatible" property).
  6145. + This overlay lacks any device-specific parameter support!
  6146. +
  6147. + For devices on spi1 or spi2, the interfaces should be enabled
  6148. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  6149. +
  6150. + Examples:
  6151. + 1. SPI NOR flash on spi0.1, maximum SPI clock frequency 45MHz:
  6152. + dtoverlay=anyspi:spi0-1,dev="jedec,spi-nor",speed=45000000
  6153. + 2. MCP3204 ADC on spi1.2, maximum SPI clock frequency 500kHz:
  6154. + dtoverlay=anyspi:spi1-2,dev="microchip,mcp3204"
  6155. +Load: dtoverlay=anyspi,<param>=<val>
  6156. +Params: spi<n>-<m> Configure device at spi<n>, cs<m>
  6157. + (boolean, required)
  6158. + dev Set device name to search compatible module
  6159. + (string, required)
  6160. + speed Set SPI clock frequency in Hz
  6161. + (integer, optional, default 500000)
  6162. +
  6163. +
  6164. +Name: apds9960
  6165. +Info: Configures the AVAGO APDS9960 digital proximity, ambient light, RGB and
  6166. + gesture sensor
  6167. +Load: dtoverlay=apds9960,<param>=<val>
  6168. +Params: gpiopin GPIO used for INT (default 4)
  6169. + noints Disable the interrupt GPIO line.
  6170. +
  6171. +
  6172. +Name: applepi-dac
  6173. +Info: Configures the Orchard Audio ApplePi-DAC audio card
  6174. +Load: dtoverlay=applepi-dac
  6175. +Params: <None>
  6176. +
  6177. +
  6178. +Name: at86rf233
  6179. +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
  6180. + connected to spi0.0
  6181. +Load: dtoverlay=at86rf233,<param>=<val>
  6182. +Params: interrupt GPIO used for INT (default 23)
  6183. + reset GPIO used for Reset (default 24)
  6184. + sleep GPIO used for Sleep (default 25)
  6185. + speed SPI bus speed in Hz (default 3000000)
  6186. + trim Fine tuning of the internal capacitance
  6187. + arrays (0=+0pF, 15=+4.5pF, default 15)
  6188. +
  6189. +
  6190. +Name: audioinjector-addons
  6191. +Info: Configures the audioinjector.net audio add on soundcards
  6192. +Load: dtoverlay=audioinjector-addons,<param>=<val>
  6193. +Params: non-stop-clocks Keeps the clocks running even when the stream
  6194. + is paused or stopped (default off)
  6195. +
  6196. +
  6197. +Name: audioinjector-isolated-soundcard
  6198. +Info: Configures the audioinjector.net isolated soundcard
  6199. +Load: dtoverlay=audioinjector-isolated-soundcard
  6200. +Params: <None>
  6201. +
  6202. +
  6203. +Name: audioinjector-ultra
  6204. +Info: Configures the audioinjector.net ultra soundcard
  6205. +Load: dtoverlay=audioinjector-ultra
  6206. +Params: <None>
  6207. +
  6208. +
  6209. +Name: audioinjector-wm8731-audio
  6210. +Info: Configures the audioinjector.net audio add on soundcard
  6211. +Load: dtoverlay=audioinjector-wm8731-audio
  6212. +Params: <None>
  6213. +
  6214. +
  6215. +Name: audiosense-pi
  6216. +Info: Configures the audiosense-pi add on soundcard
  6217. + For more information refer to
  6218. + https://gitlab.com/kakar0t/audiosense-pi
  6219. +Load: dtoverlay=audiosense-pi
  6220. +Params: <None>
  6221. +
  6222. +
  6223. +Name: audremap
  6224. +Info: Switches PWM sound output to GPIOs on the 40-pin header
  6225. +Load: dtoverlay=audremap,<param>=<val>
  6226. +Params: swap_lr Reverse the channel allocation, which will also
  6227. + swap the audio jack outputs (default off)
  6228. + enable_jack Don't switch off the audio jack output
  6229. + (default off)
  6230. + pins_12_13 Select GPIOs 12 & 13 (default)
  6231. + pins_18_19 Select GPIOs 18 & 19
  6232. +
  6233. +
  6234. +Name: balena-fin
  6235. +Info: Overlay that enables WLAN, Bluetooth and the GPIO expander on the
  6236. + balenaFin carrier board for the Raspberry Pi Compute Module 3/3+ Lite.
  6237. +Load: dtoverlay=balena-fin
  6238. +Params: <None>
  6239. +
  6240. +
  6241. +Name: bmp085_i2c-sensor
  6242. +Info: This overlay is now deprecated - see i2c-sensor
  6243. +Load: <Deprecated>
  6244. +
  6245. +
  6246. +Name: cap1106
  6247. +Info: Enables the ability to use the cap1106 touch sensor as a keyboard
  6248. +Load: dtoverlay=cap1106,<param>=<val>
  6249. +Params: int_pin GPIO pin for interrupt signal (default 23)
  6250. +
  6251. +
  6252. +Name: chipdip-dac
  6253. +Info: Configures Chip Dip audio cards.
  6254. +Load: dtoverlay=chipdip-dac
  6255. +Params: <None>
  6256. +
  6257. +
  6258. +Name: cma
  6259. +Info: Set custom CMA sizes, only use if you know what you are doing, might
  6260. + clash with other overlays like vc4-fkms-v3d and vc4-kms-v3d.
  6261. +Load: dtoverlay=cma,<param>=<val>
  6262. +Params: cma-512 CMA is 512MB (needs 1GB)
  6263. + cma-448 CMA is 448MB (needs 1GB)
  6264. + cma-384 CMA is 384MB (needs 1GB)
  6265. + cma-320 CMA is 320MB (needs 1GB)
  6266. + cma-256 CMA is 256MB (needs 1GB)
  6267. + cma-192 CMA is 192MB (needs 1GB)
  6268. + cma-128 CMA is 128MB
  6269. + cma-96 CMA is 96MB
  6270. + cma-64 CMA is 64MB
  6271. + cma-size CMA size in bytes, 4MB aligned
  6272. + cma-default Use upstream's default value
  6273. +
  6274. +
  6275. +Name: dht11
  6276. +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
  6277. + Also sometimes found with the part number(s) AM230x.
  6278. +Load: dtoverlay=dht11,<param>=<val>
  6279. +Params: gpiopin GPIO connected to the sensor's DATA output.
  6280. + (default 4)
  6281. +
  6282. +
  6283. +Name: dionaudio-loco
  6284. +Info: Configures the Dion Audio LOCO DAC-AMP
  6285. +Load: dtoverlay=dionaudio-loco
  6286. +Params: <None>
  6287. +
  6288. +
  6289. +Name: dionaudio-loco-v2
  6290. +Info: Configures the Dion Audio LOCO-V2 DAC-AMP
  6291. +Load: dtoverlay=dionaudio-loco-v2,<param>=<val>
  6292. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6293. + Digital volume control. Enable with
  6294. + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
  6295. + (The default behaviour is that the Digital
  6296. + volume control is limited to a maximum of
  6297. + 0dB. ie. it can attenuate but not provide
  6298. + gain. For most users, this will be desired
  6299. + as it will prevent clipping. By appending
  6300. + the 24dB_digital_gain parameter, the Digital
  6301. + volume control will allow up to 24dB of
  6302. + gain. If this parameter is enabled, it is the
  6303. + responsibility of the user to ensure that
  6304. + the Digital volume control is set to a value
  6305. + that does not result in clipping/distortion!)
  6306. +
  6307. +
  6308. +Name: disable-bt
  6309. +Info: Disable onboard Bluetooth on Pi 3B, 3B+, 3A+, 4B and Zero W, restoring
  6310. + UART0/ttyAMA0 over GPIOs 14 & 15.
  6311. + N.B. To disable the systemd service that initialises the modem so it
  6312. + doesn't use the UART, use 'sudo systemctl disable hciuart'.
  6313. +Load: dtoverlay=disable-bt
  6314. +Params: <None>
  6315. +
  6316. +
  6317. +Name: disable-wifi
  6318. +Info: Disable onboard WLAN on Pi 3B, 3B+, 3A+, 4B and Zero W.
  6319. +Load: dtoverlay=disable-wifi
  6320. +Params: <None>
  6321. +
  6322. +
  6323. +Name: dpi18
  6324. +Info: Overlay for a generic 18-bit DPI display
  6325. + This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output
  6326. + 2-3 seconds after the kernel has started.
  6327. +Load: dtoverlay=dpi18
  6328. +Params: <None>
  6329. +
  6330. +
  6331. +Name: dpi18cpadhi
  6332. +Info: Overlay for a generic 18-bit DPI display (in 'mode 6' connection scheme)
  6333. + This uses GPIOs 0-9,12-17,20-25 (so no I2C, uart etc.), and activates
  6334. + the output 3-3 seconds after the kernel has started.
  6335. +Load: dtoverlay=dpi18cpadhi
  6336. +Params: <None>
  6337. +
  6338. +
  6339. +Name: dpi24
  6340. +Info: Overlay for a generic 24-bit DPI display
  6341. + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output
  6342. + 2-3 seconds after the kernel has started.
  6343. +Load: dtoverlay=dpi24
  6344. +Params: <None>
  6345. +
  6346. +
  6347. +Name: draws
  6348. +Info: Configures the NW Digital Radio DRAWS Hat
  6349. +
  6350. + The board includes an ADC to measure various board values and also
  6351. + provides two analog user inputs on the expansion header. The ADC
  6352. + can be configured for various sample rates and gain values to adjust
  6353. + the input range. Tables describing the two parameters follow.
  6354. +
  6355. + ADC Gain Values:
  6356. + 0 = +/- 6.144V
  6357. + 1 = +/- 4.096V
  6358. + 2 = +/- 2.048V
  6359. + 3 = +/- 1.024V
  6360. + 4 = +/- 0.512V
  6361. + 5 = +/- 0.256V
  6362. + 6 = +/- 0.256V
  6363. + 7 = +/- 0.256V
  6364. +
  6365. + ADC Datarate Values:
  6366. + 0 = 128sps
  6367. + 1 = 250sps
  6368. + 2 = 490sps
  6369. + 3 = 920sps
  6370. + 4 = 1600sps (default)
  6371. + 5 = 2400sps
  6372. + 6 = 3300sps
  6373. + 7 = 3300sps
  6374. +Load: dtoverlay=draws,<param>=<val>
  6375. +Params: draws_adc_ch4_gain Sets the full scale resolution of the ADCs
  6376. + input voltage sensor (default 1)
  6377. +
  6378. + draws_adc_ch4_datarate Sets the datarate of the ADCs input voltage
  6379. + sensor
  6380. +
  6381. + draws_adc_ch5_gain Sets the full scale resolution of the ADCs
  6382. + 5V rail voltage sensor (default 1)
  6383. +
  6384. + draws_adc_ch5_datarate Sets the datarate of the ADCs 4V rail voltage
  6385. + sensor
  6386. +
  6387. + draws_adc_ch6_gain Sets the full scale resolution of the ADCs
  6388. + AIN2 input (default 2)
  6389. +
  6390. + draws_adc_ch6_datarate Sets the datarate of the ADCs AIN2 input
  6391. +
  6392. + draws_adc_ch7_gain Sets the full scale resolution of the ADCs
  6393. + AIN3 input (default 2)
  6394. +
  6395. + draws_adc_ch7_datarate Sets the datarate of the ADCs AIN3 input
  6396. +
  6397. + alsaname Name of the ALSA audio device (default "draws")
  6398. +
  6399. +
  6400. +Name: dwc-otg
  6401. +Info: Selects the dwc_otg USB controller driver which has fiq support. This
  6402. + is the default on all except the Pi Zero which defaults to dwc2.
  6403. +Load: dtoverlay=dwc-otg
  6404. +Params: <None>
  6405. +
  6406. +
  6407. +Name: dwc2
  6408. +Info: Selects the dwc2 USB controller driver
  6409. +Load: dtoverlay=dwc2,<param>=<val>
  6410. +Params: dr_mode Dual role mode: "host", "peripheral" or "otg"
  6411. +
  6412. + g-rx-fifo-size Size of rx fifo size in gadget mode
  6413. +
  6414. + g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget
  6415. + mode
  6416. +
  6417. +
  6418. +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
  6419. +
  6420. +
  6421. +Name: edt-ft5406
  6422. +Info: Overlay for the EDT FT5406 touchscreen on the CSI/DSI I2C interface.
  6423. + This works with the Raspberry Pi 7" touchscreen when not being polled
  6424. + by the firmware.
  6425. + You MUST use either "disable_touchscreen=1" or "ignore_lcd=1" in
  6426. + config.txt to stop the firmware polling the touchscreen.
  6427. +Load: dtoverlay=edt-ft5406,<param>=<val>
  6428. +Params: sizex Touchscreen size x (default 800)
  6429. + sizey Touchscreen size y (default 480)
  6430. + invx Touchscreen inverted x axis
  6431. + invy Touchscreen inverted y axis
  6432. + swapxy Touchscreen swapped x y axis
  6433. +
  6434. +
  6435. +Name: enc28j60
  6436. +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0
  6437. +Load: dtoverlay=enc28j60,<param>=<val>
  6438. +Params: int_pin GPIO used for INT (default 25)
  6439. +
  6440. + speed SPI bus speed (default 12000000)
  6441. +
  6442. +
  6443. +Name: enc28j60-spi2
  6444. +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2
  6445. +Load: dtoverlay=enc28j60-spi2,<param>=<val>
  6446. +Params: int_pin GPIO used for INT (default 39)
  6447. +
  6448. + speed SPI bus speed (default 12000000)
  6449. +
  6450. +
  6451. +Name: exc3000
  6452. +Info: Enables I2C connected EETI EXC3000 multiple touch controller using
  6453. + GPIO 4 (pin 7 on GPIO header) for interrupt.
  6454. +Load: dtoverlay=exc3000,<param>=<val>
  6455. +Params: interrupt GPIO used for interrupt (default 4)
  6456. + sizex Touchscreen size x (default 4096)
  6457. + sizey Touchscreen size y (default 4096)
  6458. + invx Touchscreen inverted x axis
  6459. + invy Touchscreen inverted y axis
  6460. + swapxy Touchscreen swapped x y axis
  6461. +
  6462. +
  6463. +Name: fe-pi-audio
  6464. +Info: Configures the Fe-Pi Audio Sound Card
  6465. +Load: dtoverlay=fe-pi-audio
  6466. +Params: <None>
  6467. +
  6468. +
  6469. +Name: fsm-demo
  6470. +Info: A demonstration of the gpio-fsm driver. The GPIOs are chosen to work
  6471. + nicely with a "traffic-light" display of red, amber and green LEDs on
  6472. + GPIOs 7, 8 and 25 respectively.
  6473. +Load: dtoverlay=fsm-demo,<param>=<val>
  6474. +Params: fsm_debug Enable debug logging (default off)
  6475. +
  6476. +
  6477. +Name: ghost-amp
  6478. +Info: An overlay for the Ghost amplifier.
  6479. +Load: dtoverlay=ghost-amp,<param>=<val>
  6480. +Params: fsm_debug Enable debug logging of the GPIO FSM (default
  6481. + off)
  6482. +
  6483. +
  6484. +Name: goodix
  6485. +Info: Enables I2C connected Goodix gt9271 multiple touch controller using
  6486. + GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset.
  6487. +Load: dtoverlay=goodix,<param>=<val>
  6488. +Params: interrupt GPIO used for interrupt (default 4)
  6489. + reset GPIO used for reset (default 17)
  6490. +
  6491. +
  6492. +Name: googlevoicehat-soundcard
  6493. +Info: Configures the Google voiceHAT soundcard
  6494. +Load: dtoverlay=googlevoicehat-soundcard
  6495. +Params: <None>
  6496. +
  6497. +
  6498. +Name: gpio-fan
  6499. +Info: Configure a GPIO pin to control a cooling fan.
  6500. +Load: dtoverlay=gpio-fan,<param>=<val>
  6501. +Params: gpiopin GPIO used to control the fan (default 12)
  6502. + temp Temperature at which the fan switches on, in
  6503. + millicelcius (default 55000)
  6504. +
  6505. +
  6506. +Name: gpio-ir
  6507. +Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core-
  6508. + based gpio_ir_recv driver maps received keys directly to a
  6509. + /dev/input/event* device, all decoding is done by the kernel - LIRC is
  6510. + not required! The key mapping and other decoding parameters can be
  6511. + configured by "ir-keytable" tool.
  6512. +Load: dtoverlay=gpio-ir,<param>=<val>
  6513. +Params: gpio_pin Input pin number. Default is 18.
  6514. +
  6515. + gpio_pull Desired pull-up/down state (off, down, up)
  6516. + Default is "up".
  6517. +
  6518. + invert "1" = invert the input (active-low signalling).
  6519. + "0" = non-inverted input (active-high
  6520. + signalling). Default is "1".
  6521. +
  6522. + rc-map-name Default rc keymap (can also be changed by
  6523. + ir-keytable), defaults to "rc-rc6-mce"
  6524. +
  6525. +
  6526. +Name: gpio-ir-tx
  6527. +Info: Use GPIO pin as bit-banged infrared transmitter output.
  6528. + This is an alternative to "pwm-ir-tx". gpio-ir-tx doesn't require
  6529. + a PWM so it can be used together with onboard analog audio.
  6530. +Load: dtoverlay=gpio-ir-tx,<param>=<val>
  6531. +Params: gpio_pin Output GPIO (default 18)
  6532. +
  6533. + invert "1" = invert the output (make it active-low).
  6534. + Default is "0" (active-high).
  6535. +
  6536. +
  6537. +Name: gpio-key
  6538. +Info: This is a generic overlay for activating GPIO keypresses using
  6539. + the gpio-keys library and this dtoverlay. Multiple keys can be
  6540. + set up using multiple calls to the overlay for configuring
  6541. + additional buttons or joysticks. You can see available keycodes
  6542. + at https://github.com/torvalds/linux/blob/v4.12/include/uapi/
  6543. + linux/input-event-codes.h#L64
  6544. +Load: dtoverlay=gpio-key,<param>=<val>
  6545. +Params: gpio GPIO pin to trigger on (default 3)
  6546. + active_low When this is 1 (active low), a falling
  6547. + edge generates a key down event and a
  6548. + rising edge generates a key up event.
  6549. + When this is 0 (active high), this is
  6550. + reversed. The default is 1 (active low)
  6551. + gpio_pull Desired pull-up/down state (off, down, up)
  6552. + Default is "up". Note that the default pin
  6553. + (GPIO3) has an external pullup
  6554. + label Set a label for the key
  6555. + keycode Set the key code for the button
  6556. +
  6557. +
  6558. +
  6559. +Name: gpio-led
  6560. +Info: This is a generic overlay for activating LEDs (or any other component)
  6561. + by a GPIO pin. Multiple LEDs can be set up using multiple calls to the
  6562. + overlay. While there are many existing methods to activate LEDs on the
  6563. + RPi, this method offers some advantages:
  6564. + 1) Does not require any userspace programs.
  6565. + 2) LEDs can be connected to the kernel's led-trigger framework,
  6566. + and drive the LED based on triggers such as cpu load, heartbeat,
  6567. + kernel panic, key input, timers and others.
  6568. + 3) LED can be tied to the input state of another GPIO pin.
  6569. + 4) The LED is setup early during the kernel boot process (useful
  6570. + for cpu/heartbeat/panic triggers).
  6571. +
  6572. + Typical electrical connection is:
  6573. + RPI-GPIO.19 -> LED -> 300ohm resister -> RPI-GND
  6574. + The GPIO pin number can be changed with the 'gpio=' parameter.
  6575. +
  6576. + To control an LED from userspace, write a 0 or 1 value:
  6577. + echo 1 > /sys/class/leds/myled1/brightness
  6578. + The 'myled1' name can be changed with the 'label=' parameter.
  6579. +
  6580. + To connect the LED to a kernel trigger from userspace:
  6581. + echo cpu > /sys/class/leds/myled1/trigger
  6582. + echo heartbeat > /sys/class/leds/myled1/trigger
  6583. + echo none > /sys/class/leds/myled1/trigger
  6584. + To connect the LED to GPIO.26 pin (physical pin 37):
  6585. + echo gpio > /sys/class/leds/myled1/trigger
  6586. + echo 26 > /sys/class/leds/myled1/gpio
  6587. + Available triggers:
  6588. + cat /sys/class/leds/myled1/trigger
  6589. +
  6590. + More information about the Linux kernel LED/Trigger system:
  6591. + https://www.kernel.org/doc/Documentation/leds/leds-class.rst
  6592. + https://www.kernel.org/doc/Documentation/leds/ledtrig-oneshot.rst
  6593. +Load: dtoverlay=gpio-led,<param>=<val>
  6594. +Params: gpio GPIO pin connected to the LED (default 19)
  6595. + label The label for this LED. It will appear under
  6596. + /sys/class/leds/<label> . Default 'myled1'.
  6597. + trigger Set the led-trigger to connect to this LED.
  6598. + default 'none' (LED is user-controlled).
  6599. + Some possible triggers:
  6600. + cpu - CPU load (all CPUs)
  6601. + cpu0 - CPU load of first CPU.
  6602. + mmc - disk activity (all disks)
  6603. + panic - turn on on kernel panic
  6604. + heartbeat - indicate system health
  6605. + gpio - connect to a GPIO input pin (note:
  6606. + currently the GPIO PIN can not be set
  6607. + using overlay parameters, must be
  6608. + done in userspace, see examples above.
  6609. + active_low Set to 1 to turn invert the LED control
  6610. + (writing 0 to /sys/class/leds/XXX/brightness
  6611. + will turn on the GPIO/LED). Default '0'.
  6612. +
  6613. +
  6614. +Name: gpio-no-bank0-irq
  6615. +Info: Use this overlay to disable GPIO interrupts for GPIOs in bank 0 (0-27),
  6616. + which can be useful for UIO drivers.
  6617. + N.B. Using this overlay will trigger a kernel WARN during booting, but
  6618. + this can safely be ignored - the system should work as expected.
  6619. +Load: dtoverlay=gpio-no-bank0-irq
  6620. +Params: <None>
  6621. +
  6622. +
  6623. +Name: gpio-no-irq
  6624. +Info: Use this overlay to disable all GPIO interrupts, which can be useful
  6625. + for user-space GPIO edge detection systems.
  6626. +Load: dtoverlay=gpio-no-irq
  6627. +Params: <None>
  6628. +
  6629. +
  6630. +Name: gpio-poweroff
  6631. +Info: Drives a GPIO high or low on poweroff (including halt). Using this
  6632. + overlay interferes with the normal power-down sequence, preventing the
  6633. + kernel from resetting the SoC (a necessary step in a normal power-off
  6634. + or reboot). This also disables the ability to trigger a boot by driving
  6635. + GPIO3 low.
  6636. +
  6637. + Users of this overlay are required to provide an external mechanism to
  6638. + switch off the power supply when signalled - failure to do so results
  6639. + in a kernel BUG, increased power consumption and undefined behaviour.
  6640. +Load: dtoverlay=gpio-poweroff,<param>=<val>
  6641. +Params: gpiopin GPIO for signalling (default 26)
  6642. +
  6643. + active_low Set if the power control device requires a
  6644. + high->low transition to trigger a power-down.
  6645. + Note that this will require the support of a
  6646. + custom dt-blob.bin to prevent a power-down
  6647. + during the boot process, and that a reboot
  6648. + will also cause the pin to go low.
  6649. + input Set if the gpio pin should be configured as
  6650. + an input.
  6651. + export Set to export the configured pin to sysfs
  6652. + timeout_ms Specify (in ms) how long the kernel waits for
  6653. + power-down before issuing a WARN (default 3000).
  6654. +
  6655. +
  6656. +Name: gpio-shutdown
  6657. +Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin
  6658. + is configured as an input key that generates KEY_POWER events.
  6659. +
  6660. + This event is handled by systemd-logind by initiating a
  6661. + shutdown. Systemd versions older than 225 need an udev rule
  6662. + enable listening to the input device:
  6663. +
  6664. + ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", \
  6665. + SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", \
  6666. + ATTRS{keys}=="116", TAG+="power-switch"
  6667. +
  6668. + Alternatively this event can be handled also on systems without
  6669. + systemd, just by traditional SysV init daemon. KEY_POWER event
  6670. + (keycode 116) needs to be mapped to KeyboardSignal on console
  6671. + and then kb::kbrequest inittab action which is triggered by
  6672. + KeyboardSignal from console can be configured to issue system
  6673. + shutdown. Steps for this configuration are:
  6674. +
  6675. + Add following lines to the /etc/console-setup/remap.inc file:
  6676. +
  6677. + # Key Power as special keypress
  6678. + keycode 116 = KeyboardSignal
  6679. +
  6680. + Then add following lines to /etc/inittab file:
  6681. +
  6682. + # Action on special keypress (Key Power)
  6683. + kb::kbrequest:/sbin/shutdown -t1 -a -h -P now
  6684. +
  6685. + And finally reload configuration by calling following commands:
  6686. +
  6687. + # dpkg-reconfigure console-setup
  6688. + # service console-setup reload
  6689. + # init q
  6690. +
  6691. + This overlay only handles shutdown. After shutdown, the system
  6692. + can be powered up again by driving GPIO3 low. The default
  6693. + configuration uses GPIO3 with a pullup, so if you connect a
  6694. + button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
  6695. + you get a shutdown and power-up button. Please note that
  6696. + Raspberry Pi 1 Model B rev 1 uses GPIO1 instead of GPIO3.
  6697. +Load: dtoverlay=gpio-shutdown,<param>=<val>
  6698. +Params: gpio_pin GPIO pin to trigger on (default 3)
  6699. + For Raspberry Pi 1 Model B rev 1 set this
  6700. + explicitly to value 1, e.g.:
  6701. +
  6702. + dtoverlay=gpio-shutdown,gpio_pin=1
  6703. +
  6704. + active_low When this is 1 (active low), a falling
  6705. + edge generates a key down event and a
  6706. + rising edge generates a key up event.
  6707. + When this is 0 (active high), this is
  6708. + reversed. The default is 1 (active low).
  6709. +
  6710. + gpio_pull Desired pull-up/down state (off, down, up)
  6711. + Default is "up".
  6712. +
  6713. + Note that the default pin (GPIO3) has an
  6714. + external pullup. Same applies for GPIO1
  6715. + on Raspberry Pi 1 Model B rev 1.
  6716. +
  6717. + debounce Specify the debounce interval in milliseconds
  6718. + (default 100)
  6719. +
  6720. +
  6721. +Name: hd44780-lcd
  6722. +Info: Configures an HD44780 compatible LCD display. Uses 4 gpio pins for
  6723. + data, 2 gpio pins for enable and register select and 1 optional pin
  6724. + for enabling/disabling the backlight display.
  6725. +Load: dtoverlay=hd44780-lcd,<param>=<val>
  6726. +Params: pin_d4 GPIO pin for data pin D4 (default 6)
  6727. +
  6728. + pin_d5 GPIO pin for data pin D5 (default 13)
  6729. +
  6730. + pin_d6 GPIO pin for data pin D6 (default 19)
  6731. +
  6732. + pin_d7 GPIO pin for data pin D7 (default 26)
  6733. +
  6734. + pin_en GPIO pin for "Enable" (default 21)
  6735. +
  6736. + pin_rs GPIO pin for "Register Select" (default 20)
  6737. +
  6738. + pin_bl Optional pin for enabling/disabling the
  6739. + display backlight. (default disabled)
  6740. +
  6741. + display_height Height of the display in characters
  6742. +
  6743. + display_width Width of the display in characters
  6744. +
  6745. +
  6746. +Name: hdmi-backlight-hwhack-gpio
  6747. +Info: Devicetree overlay for GPIO based backlight on/off capability.
  6748. + Use this if you have one of those HDMI displays whose backlight cannot
  6749. + be controlled via DPMS over HDMI and plan to do a little soldering to
  6750. + use an RPi gpio pin for on/off switching. See:
  6751. + https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)#Backlight_Control
  6752. +Load: dtoverlay=hdmi-backlight-hwhack-gpio,<param>=<val>
  6753. +Params: gpio_pin GPIO pin used (default 17)
  6754. + active_low Set this to 1 if the display backlight is
  6755. + switched on when the wire goes low.
  6756. + Leave the default (value 0) if the backlight
  6757. + expects a high to switch it on.
  6758. +
  6759. +
  6760. +Name: hifiberry-amp
  6761. +Info: Configures the HifiBerry Amp and Amp+ audio cards
  6762. +Load: dtoverlay=hifiberry-amp
  6763. +Params: <None>
  6764. +
  6765. +
  6766. +Name: hifiberry-amp100
  6767. +Info: Configures the HifiBerry AMP100 audio card
  6768. +Load: dtoverlay=hifiberry-amp100,<param>=<val>
  6769. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6770. + Digital volume control. Enable with
  6771. + "dtoverlay=hifiberry-amp100,24db_digital_gain"
  6772. + (The default behaviour is that the Digital
  6773. + volume control is limited to a maximum of
  6774. + 0dB. ie. it can attenuate but not provide
  6775. + gain. For most users, this will be desired
  6776. + as it will prevent clipping. By appending
  6777. + the 24dB_digital_gain parameter, the Digital
  6778. + volume control will allow up to 24dB of
  6779. + gain. If this parameter is enabled, it is the
  6780. + responsibility of the user to ensure that
  6781. + the Digital volume control is set to a value
  6782. + that does not result in clipping/distortion!)
  6783. + slave Force DAC+ Pro into slave mode, using Pi as
  6784. + master for bit clock and frame clock.
  6785. + leds_off If set to 'true' the onboard indicator LEDs
  6786. + are switched off at all times.
  6787. + auto_mute If set to 'true' the amplifier is automatically
  6788. + muted when the DAC is not playing.
  6789. + mute_ext_ctl The amplifier's HW mute control is enabled
  6790. + in ALSA mixer and set to <val>.
  6791. + Will be overwritten by ALSA user settings.
  6792. +
  6793. +
  6794. +Name: hifiberry-dac
  6795. +Info: Configures the HifiBerry DAC audio cards
  6796. +Load: dtoverlay=hifiberry-dac
  6797. +Params: <None>
  6798. +
  6799. +
  6800. +Name: hifiberry-dacplus
  6801. +Info: Configures the HifiBerry DAC+ audio card
  6802. +Load: dtoverlay=hifiberry-dacplus,<param>=<val>
  6803. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6804. + Digital volume control. Enable with
  6805. + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
  6806. + (The default behaviour is that the Digital
  6807. + volume control is limited to a maximum of
  6808. + 0dB. ie. it can attenuate but not provide
  6809. + gain. For most users, this will be desired
  6810. + as it will prevent clipping. By appending
  6811. + the 24dB_digital_gain parameter, the Digital
  6812. + volume control will allow up to 24dB of
  6813. + gain. If this parameter is enabled, it is the
  6814. + responsibility of the user to ensure that
  6815. + the Digital volume control is set to a value
  6816. + that does not result in clipping/distortion!)
  6817. + slave Force DAC+ Pro into slave mode, using Pi as
  6818. + master for bit clock and frame clock.
  6819. + leds_off If set to 'true' the onboard indicator LEDs
  6820. + are switched off at all times.
  6821. +
  6822. +
  6823. +Name: hifiberry-dacplusadc
  6824. +Info: Configures the HifiBerry DAC+ADC audio card
  6825. +Load: dtoverlay=hifiberry-dacplusadc,<param>=<val>
  6826. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6827. + Digital volume control. Enable with
  6828. + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
  6829. + (The default behaviour is that the Digital
  6830. + volume control is limited to a maximum of
  6831. + 0dB. ie. it can attenuate but not provide
  6832. + gain. For most users, this will be desired
  6833. + as it will prevent clipping. By appending
  6834. + the 24dB_digital_gain parameter, the Digital
  6835. + volume control will allow up to 24dB of
  6836. + gain. If this parameter is enabled, it is the
  6837. + responsibility of the user to ensure that
  6838. + the Digital volume control is set to a value
  6839. + that does not result in clipping/distortion!)
  6840. + slave Force DAC+ Pro into slave mode, using Pi as
  6841. + master for bit clock and frame clock.
  6842. + leds_off If set to 'true' the onboard indicator LEDs
  6843. + are switched off at all times.
  6844. +
  6845. +
  6846. +Name: hifiberry-dacplusadcpro
  6847. +Info: Configures the HifiBerry DAC+ADC PRO audio card
  6848. +Load: dtoverlay=hifiberry-dacplusadcpro,<param>=<val>
  6849. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  6850. + Digital volume control. Enable with
  6851. + "dtoverlay=hifiberry-dacplusadcpro,24db_digital_gain"
  6852. + (The default behaviour is that the Digital
  6853. + volume control is limited to a maximum of
  6854. + 0dB. ie. it can attenuate but not provide
  6855. + gain. For most users, this will be desired
  6856. + as it will prevent clipping. By appending
  6857. + the 24dB_digital_gain parameter, the Digital
  6858. + volume control will allow up to 24dB of
  6859. + gain. If this parameter is enabled, it is the
  6860. + responsibility of the user to ensure that
  6861. + the Digital volume control is set to a value
  6862. + that does not result in clipping/distortion!)
  6863. + slave Force DAC+ADC Pro into slave mode, using Pi as
  6864. + master for bit clock and frame clock.
  6865. + leds_off If set to 'true' the onboard indicator LEDs
  6866. + are switched off at all times.
  6867. +
  6868. +
  6869. +Name: hifiberry-dacplusdsp
  6870. +Info: Configures the HifiBerry DAC+DSP audio card
  6871. +Load: dtoverlay=hifiberry-dacplusdsp
  6872. +Params: <None>
  6873. +
  6874. +
  6875. +Name: hifiberry-dacplushd
  6876. +Info: Configures the HifiBerry DAC+ HD audio card
  6877. +Load: dtoverlay=hifiberry-dacplushd
  6878. +Params: <None>
  6879. +
  6880. +
  6881. +Name: hifiberry-digi
  6882. +Info: Configures the HifiBerry Digi and Digi+ audio card
  6883. +Load: dtoverlay=hifiberry-digi
  6884. +Params: <None>
  6885. +
  6886. +
  6887. +Name: hifiberry-digi-pro
  6888. +Info: Configures the HifiBerry Digi+ Pro audio card
  6889. +Load: dtoverlay=hifiberry-digi-pro
  6890. +Params: <None>
  6891. +
  6892. +
  6893. +Name: highperi
  6894. +Info: Enables "High Peripheral" mode
  6895. +Load: dtoverlay=highperi
  6896. +Params: <None>
  6897. +
  6898. +
  6899. +Name: hy28a
  6900. +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
  6901. + Default values match Texy's display shield
  6902. +Load: dtoverlay=hy28a,<param>=<val>
  6903. +Params: speed Display SPI bus speed
  6904. +
  6905. + rotate Display rotation {0,90,180,270}
  6906. +
  6907. + fps Delay between frame updates
  6908. +
  6909. + debug Debug output level {0-7}
  6910. +
  6911. + xohms Touchpanel sensitivity (X-plate resistance)
  6912. +
  6913. + resetgpio GPIO used to reset controller
  6914. +
  6915. + ledgpio GPIO used to control backlight
  6916. +
  6917. +
  6918. +Name: hy28b
  6919. +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
  6920. + Default values match Texy's display shield
  6921. +Load: dtoverlay=hy28b,<param>=<val>
  6922. +Params: speed Display SPI bus speed
  6923. +
  6924. + rotate Display rotation {0,90,180,270}
  6925. +
  6926. + fps Delay between frame updates
  6927. +
  6928. + debug Debug output level {0-7}
  6929. +
  6930. + xohms Touchpanel sensitivity (X-plate resistance)
  6931. +
  6932. + resetgpio GPIO used to reset controller
  6933. +
  6934. + ledgpio GPIO used to control backlight
  6935. +
  6936. +
  6937. +Name: hy28b-2017
  6938. +Info: HY28B 2017 version - 2.8" TFT LCD Display Module by HAOYU Electronics
  6939. + Default values match Texy's display shield
  6940. +Load: dtoverlay=hy28b-2017,<param>=<val>
  6941. +Params: speed Display SPI bus speed
  6942. +
  6943. + rotate Display rotation {0,90,180,270}
  6944. +
  6945. + fps Delay between frame updates
  6946. +
  6947. + debug Debug output level {0-7}
  6948. +
  6949. + xohms Touchpanel sensitivity (X-plate resistance)
  6950. +
  6951. + resetgpio GPIO used to reset controller
  6952. +
  6953. + ledgpio GPIO used to control backlight
  6954. +
  6955. +
  6956. +Name: i-sabre-q2m
  6957. +Info: Configures the Audiophonics I-SABRE Q2M DAC
  6958. +Load: dtoverlay=i-sabre-q2m
  6959. +Params: <None>
  6960. +
  6961. +
  6962. +Name: i2c-bcm2708
  6963. +Info: Fall back to the i2c_bcm2708 driver for the i2c_arm bus.
  6964. +Load: dtoverlay=i2c-bcm2708
  6965. +Params: <None>
  6966. +
  6967. +
  6968. +Name: i2c-gpio
  6969. +Info: Adds support for software i2c controller on gpio pins
  6970. +Load: dtoverlay=i2c-gpio,<param>=<val>
  6971. +Params: i2c_gpio_sda GPIO used for I2C data (default "23")
  6972. +
  6973. + i2c_gpio_scl GPIO used for I2C clock (default "24")
  6974. +
  6975. + i2c_gpio_delay_us Clock delay in microseconds
  6976. + (default "2" = ~100kHz)
  6977. +
  6978. + bus Set to a unique, non-zero value if wanting
  6979. + multiple i2c-gpio busses. If set, will be used
  6980. + as the preferred bus number (/dev/i2c-<n>). If
  6981. + not set, the default value is 0, but the bus
  6982. + number will be dynamically assigned - probably
  6983. + 3.
  6984. +
  6985. +
  6986. +Name: i2c-mux
  6987. +Info: Adds support for a number of I2C bus multiplexers on i2c_arm
  6988. +Load: dtoverlay=i2c-mux,<param>=<val>
  6989. +Params: pca9542 Select the NXP PCA9542 device
  6990. +
  6991. + pca9545 Select the NXP PCA9545 device
  6992. +
  6993. + pca9548 Select the NXP PCA9548 device
  6994. +
  6995. + addr Change I2C address of the device (default 0x70)
  6996. +
  6997. +
  6998. +[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
  6999. +
  7000. +
  7001. +Name: i2c-pwm-pca9685a
  7002. +Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
  7003. +Load: dtoverlay=i2c-pwm-pca9685a,<param>=<val>
  7004. +Params: addr I2C address of PCA9685A (default 0x40)
  7005. +
  7006. +
  7007. +Name: i2c-rtc
  7008. +Info: Adds support for a number of I2C Real Time Clock devices
  7009. +Load: dtoverlay=i2c-rtc,<param>=<val>
  7010. +Params: abx80x Select one of the ABx80x family:
  7011. + AB0801, AB0803, AB0804, AB0805,
  7012. + AB1801, AB1803, AB1804, AB1805
  7013. +
  7014. + bq32000 Select the TI BQ32000 device
  7015. +
  7016. + ds1307 Select the DS1307 device
  7017. +
  7018. + ds1339 Select the DS1339 device
  7019. +
  7020. + ds1340 Select the DS1340 device
  7021. +
  7022. + ds3231 Select the DS3231 device
  7023. +
  7024. + m41t62 Select the M41T62 device
  7025. +
  7026. + mcp7940x Select the MCP7940x device
  7027. +
  7028. + mcp7941x Select the MCP7941x device
  7029. +
  7030. + pcf2127 Select the PCF2127 device
  7031. +
  7032. + pcf2129 Select the PCF2129 device
  7033. +
  7034. + pcf85063 Select the PCF85063 device
  7035. +
  7036. + pcf85063a Select the PCF85063A device
  7037. +
  7038. + pcf8523 Select the PCF8523 device
  7039. +
  7040. + pcf85363 Select the PCF85363 device
  7041. +
  7042. + pcf8563 Select the PCF8563 device
  7043. +
  7044. + rv1805 Select the Micro Crystal RV1805 device
  7045. +
  7046. + rv3028 Select the Micro Crystal RV3028 device
  7047. +
  7048. + sd3078 Select the ZXW Shenzhen whwave SD3078 device
  7049. +
  7050. + s35390a Select the ABLIC S35390A device
  7051. +
  7052. + i2c0 Choose the I2C0 bus on GPIOs 0&1
  7053. +
  7054. + i2c_csi_dsi Choose the I2C0 bus on GPIOs 44&45
  7055. +
  7056. + addr Sets the address for the RTC. Note that the
  7057. + device must be configured to use the specified
  7058. + address.
  7059. +
  7060. + trickle-diode-disable Do not use the internal trickle charger diode
  7061. + (BQ32000 only)
  7062. +
  7063. + trickle-diode-type Diode type for trickle charge - "standard" or
  7064. + "schottky" (ABx80x and RV1805 only)
  7065. +
  7066. + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
  7067. + ABx80x, RV1805, RV3028)
  7068. +
  7069. + wakeup-source Specify that the RTC can be used as a wakeup
  7070. + source
  7071. +
  7072. + backup-switchover-mode Backup power supply switch mode. Must be 0 for
  7073. + off or 1 for Vdd < VBackup (RV3028 only)
  7074. +
  7075. +
  7076. +Name: i2c-rtc-gpio
  7077. +Info: Adds support for a number of I2C Real Time Clock devices
  7078. + using the software i2c controller
  7079. +Load: dtoverlay=i2c-rtc-gpio,<param>=<val>
  7080. +Params: abx80x Select one of the ABx80x family:
  7081. + AB0801, AB0803, AB0804, AB0805,
  7082. + AB1801, AB1803, AB1804, AB1805
  7083. +
  7084. + bq32000 Select the TI BQ32000 device
  7085. +
  7086. + ds1307 Select the DS1307 device
  7087. +
  7088. + ds1339 Select the DS1339 device
  7089. +
  7090. + ds1340 Select the DS1340 device
  7091. +
  7092. + ds3231 Select the DS3231 device
  7093. +
  7094. + m41t62 Select the M41T62 device
  7095. +
  7096. + mcp7940x Select the MCP7940x device
  7097. +
  7098. + mcp7941x Select the MCP7941x device
  7099. +
  7100. + pcf2127 Select the PCF2127 device
  7101. +
  7102. + pcf2129 Select the PCF2129 device
  7103. +
  7104. + pcf85063 Select the PCF85063 device
  7105. +
  7106. + pcf85063a Select the PCF85063A device
  7107. +
  7108. + pcf8523 Select the PCF8523 device
  7109. +
  7110. + pcf85363 Select the PCF85363 device
  7111. +
  7112. + pcf8563 Select the PCF8563 device
  7113. +
  7114. + rv1805 Select the Micro Crystal RV1805 device
  7115. +
  7116. + rv3028 Select the Micro Crystal RV3028 device
  7117. +
  7118. + sd3078 Select the ZXW Shenzhen whwave SD3078 device
  7119. +
  7120. + s35390a Select the ABLIC S35390A device
  7121. +
  7122. + addr Sets the address for the RTC. Note that the
  7123. + device must be configured to use the specified
  7124. + address.
  7125. +
  7126. + trickle-diode-disable Do not use the internal trickle charger diode
  7127. + (BQ32000 only)
  7128. +
  7129. + trickle-diode-type Diode type for trickle charge - "standard" or
  7130. + "schottky" (ABx80x and RV1805 only)
  7131. +
  7132. + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
  7133. + ABx80x, RV1805, RV3028)
  7134. +
  7135. + wakeup-source Specify that the RTC can be used as a wakeup
  7136. + source
  7137. +
  7138. + backup-switchover-mode Backup power supply switch mode. Must be 0 for
  7139. + off or 1 for Vdd < VBackup (RV3028 only)
  7140. +
  7141. + i2c_gpio_sda GPIO used for I2C data (default "23")
  7142. +
  7143. + i2c_gpio_scl GPIO used for I2C clock (default "24")
  7144. +
  7145. + i2c_gpio_delay_us Clock delay in microseconds
  7146. + (default "2" = ~100kHz)
  7147. +
  7148. +
  7149. +Name: i2c-sensor
  7150. +Info: Adds support for a number of I2C barometric pressure, temperature,
  7151. + light level and chemical sensors on i2c_arm
  7152. +Load: dtoverlay=i2c-sensor,<param>=<val>
  7153. +Params: addr Set the address for the BH1750, BME280, BME680,
  7154. + BMP280, CCS811, DS1621, HDC100X, LM75, SHT3x or
  7155. + TMP102
  7156. +
  7157. + bh1750 Select the Rohm BH1750 ambient light sensor
  7158. + Valid addresses 0x23 or 0x5c, default 0x23
  7159. +
  7160. + bme280 Select the Bosch Sensortronic BME280
  7161. + Valid addresses 0x76-0x77, default 0x76
  7162. +
  7163. + bme680 Select the Bosch Sensortronic BME680
  7164. + Valid addresses 0x76-0x77, default 0x76
  7165. +
  7166. + bmp085 Select the Bosch Sensortronic BMP085
  7167. +
  7168. + bmp180 Select the Bosch Sensortronic BMP180
  7169. +
  7170. + bmp280 Select the Bosch Sensortronic BMP280
  7171. + Valid addresses 0x76-0x77, default 0x76
  7172. +
  7173. + ccs811 Select the AMS CCS811 digital gas sensor
  7174. + Valid addresses 0x5a-0x5b, default 0x5b
  7175. +
  7176. + ds1621 Select the Dallas Semiconductors DS1621 temp
  7177. + sensor. Valid addresses 0x48-0x4f, default 0x48
  7178. +
  7179. + hdc100x Select the Texas Instruments HDC100x temp sensor
  7180. + Valid addresses 0x40-0x43, default 0x40
  7181. +
  7182. + htu21 Select the HTU21 temperature and humidity sensor
  7183. +
  7184. + lm75 Select the Maxim LM75 temperature sensor
  7185. + Valid addresses 0x48-0x4f, default 0x4f
  7186. +
  7187. + lm75addr Deprecated - use addr parameter instead
  7188. +
  7189. + max17040 Select the Maxim Integrated MAX17040 battery
  7190. + monitor
  7191. +
  7192. + sht3x Select the Sensiron SHT3x temperature and
  7193. + humidity sensor. Valid addresses 0x44-0x45,
  7194. + default 0x44
  7195. +
  7196. + si7020 Select the Silicon Labs Si7013/20/21 humidity/
  7197. + temperature sensor
  7198. +
  7199. + sps30 Select the Sensirion SPS30 particulate matter
  7200. + sensor. Fixed address 0x69.
  7201. +
  7202. + sgp30 Select the Sensirion SGP30 VOC sensor.
  7203. + Fixed address 0x58.
  7204. +
  7205. + tmp102 Select the Texas Instruments TMP102 temp sensor
  7206. + Valid addresses 0x48-0x4b, default 0x48
  7207. +
  7208. + tsl4531 Select the AMS TSL4531 digital ambient light
  7209. + sensor
  7210. +
  7211. + veml6070 Select the Vishay VEML6070 ultraviolet light
  7212. + sensor
  7213. +
  7214. +
  7215. +Name: i2c0
  7216. +Info: Change i2c0 pin usage. Not all pin combinations are usable on all
  7217. + platforms - platforms other then Compute Modules can only use this
  7218. + to disable transaction combining.
  7219. + Do NOT use in conjunction with dtparam=i2c_vc=on. From the 5.4 kernel
  7220. + onwards the base DT includes the use of i2c_mux_pinctrl to expose two
  7221. + muxings of BSC0 - GPIOs 0&1, and whichever combination is used for the
  7222. + camera and display connectors. This overlay disables that mux and
  7223. + configures /dev/i2c0 to point at whichever set of pins is requested.
  7224. + dtparam=i2c_vc=on will try and enable the mux, so combining the two
  7225. + will cause conflicts.
  7226. +Load: dtoverlay=i2c0,<param>=<val>
  7227. +Params: pins_0_1 Use pins 0 and 1 (default)
  7228. + pins_28_29 Use pins 28 and 29
  7229. + pins_44_45 Use pins 44 and 45
  7230. + pins_46_47 Use pins 46 and 47
  7231. + combine Allow transactions to be combined (default
  7232. + "yes")
  7233. +
  7234. +
  7235. +Name: i2c0-bcm2708
  7236. +Info: Deprecated, legacy version of i2c0.
  7237. +Load: <Deprecated>
  7238. +
  7239. +
  7240. +Name: i2c1
  7241. +Info: Change i2c1 pin usage. Not all pin combinations are usable on all
  7242. + platforms - platforms other then Compute Modules can only use this
  7243. + to disable transaction combining.
  7244. +Load: dtoverlay=i2c1,<param>=<val>
  7245. +Params: pins_2_3 Use pins 2 and 3 (default)
  7246. + pins_44_45 Use pins 44 and 45
  7247. + combine Allow transactions to be combined (default
  7248. + "yes")
  7249. +
  7250. +
  7251. +Name: i2c1-bcm2708
  7252. +Info: Deprecated, legacy version of i2c1.
  7253. +Load: <Deprecated>
  7254. +
  7255. +
  7256. +Name: i2c3
  7257. +Info: Enable the i2c3 bus. BCM2711 only.
  7258. +Load: dtoverlay=i2c3,<param>
  7259. +Params: pins_2_3 Use GPIOs 2 and 3
  7260. + pins_4_5 Use GPIOs 4 and 5 (default)
  7261. + baudrate Set the baudrate for the interface (default
  7262. + "100000")
  7263. +
  7264. +
  7265. +Name: i2c4
  7266. +Info: Enable the i2c4 bus. BCM2711 only.
  7267. +Load: dtoverlay=i2c4,<param>
  7268. +Params: pins_6_7 Use GPIOs 6 and 7
  7269. + pins_8_9 Use GPIOs 8 and 9 (default)
  7270. + baudrate Set the baudrate for the interface (default
  7271. + "100000")
  7272. +
  7273. +
  7274. +Name: i2c5
  7275. +Info: Enable the i2c5 bus. BCM2711 only.
  7276. +Load: dtoverlay=i2c5,<param>
  7277. +Params: pins_10_11 Use GPIOs 10 and 11
  7278. + pins_12_13 Use GPIOs 12 and 13 (default)
  7279. + baudrate Set the baudrate for the interface (default
  7280. + "100000")
  7281. +
  7282. +
  7283. +Name: i2c6
  7284. +Info: Enable the i2c6 bus. BCM2711 only.
  7285. +Load: dtoverlay=i2c6,<param>
  7286. +Params: pins_0_1 Use GPIOs 0 and 1
  7287. + pins_22_23 Use GPIOs 22 and 23 (default)
  7288. + baudrate Set the baudrate for the interface (default
  7289. + "100000")
  7290. +
  7291. +
  7292. +Name: i2s-gpio28-31
  7293. +Info: move I2S function block to GPIO 28 to 31
  7294. +Load: dtoverlay=i2s-gpio28-31
  7295. +Params: <None>
  7296. +
  7297. +
  7298. +Name: ilitek251x
  7299. +Info: Enables I2C connected Ilitek 251x multiple touch controller using
  7300. + GPIO 4 (pin 7 on GPIO header) for interrupt.
  7301. +Load: dtoverlay=ilitek251x,<param>=<val>
  7302. +Params: interrupt GPIO used for interrupt (default 4)
  7303. + sizex Touchscreen size x, horizontal resolution of
  7304. + touchscreen (in pixels)
  7305. + sizey Touchscreen size y, vertical resolution of
  7306. + touchscreen (in pixels)
  7307. +
  7308. +
  7309. +Name: imx219
  7310. +Info: Sony IMX219 camera module.
  7311. + Uses Unicam 1, which is the standard camera connector on most Pi
  7312. + variants.
  7313. +Load: dtoverlay=imx219,<param>=<val>
  7314. +Params: rotation Mounting rotation of the camera sensor (0 or
  7315. + 180, default 180)
  7316. + orientation Sensor orientation (0 = front, 1 = rear,
  7317. + 2 = external, default external)
  7318. +
  7319. +
  7320. +Name: imx290
  7321. +Info: Sony IMX290 camera module.
  7322. + Uses Unicam 1, which is the standard camera connector on most Pi
  7323. + variants. NB This currently uses 4 CSI2 data lanes and therefore will
  7324. + only work on a CM.
  7325. +Load: dtoverlay=imx290,<param>
  7326. +Params: 4lane Enable 4 CSI2 lanes. This requires a Compute
  7327. + Module (1, 3, or 4).
  7328. + clock-frequency Sets the clock frequency to match that used on
  7329. + the board.
  7330. + Modules from Vision Components use 37.125MHz
  7331. + (the default), whilst those from Innomaker use
  7332. + 74.25MHz.
  7333. + mono Denote that the module is a mono sensor.
  7334. + orientation Sensor orientation (0 = front, 1 = rear,
  7335. + 2 = external, default external)
  7336. + rotation Mounting rotation of the camera sensor (0 or
  7337. + 180, default 0)
  7338. +
  7339. +
  7340. +Name: imx378
  7341. +Info: Sony IMX378 camera module.
  7342. + Uses Unicam 1, which is the standard camera connector on most Pi
  7343. + variants.
  7344. +Load: dtoverlay=imx378,<param>=<val>
  7345. +Params: rotation Mounting rotation of the camera sensor (0 or
  7346. + 180, default 180)
  7347. + orientation Sensor orientation (0 = front, 1 = rear,
  7348. + 2 = external, default external)
  7349. +
  7350. +
  7351. +Name: imx477
  7352. +Info: Sony IMX477 camera module.
  7353. + Uses Unicam 1, which is the standard camera connector on most Pi
  7354. + variants.
  7355. +Load: dtoverlay=imx477,<param>=<val>
  7356. +Params: rotation Mounting rotation of the camera sensor (0 or
  7357. + 180, default 180)
  7358. + orientation Sensor orientation (0 = front, 1 = rear,
  7359. + 2 = external, default external)
  7360. +
  7361. +
  7362. +Name: iqaudio-codec
  7363. +Info: Configures the IQaudio Codec audio card
  7364. +Load: dtoverlay=iqaudio-codec
  7365. +Params: <None>
  7366. +
  7367. +
  7368. +Name: iqaudio-dac
  7369. +Info: Configures the IQaudio DAC audio card
  7370. +Load: dtoverlay=iqaudio-dac,<param>
  7371. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  7372. + Digital volume control. Enable with
  7373. + "dtoverlay=iqaudio-dac,24db_digital_gain"
  7374. + (The default behaviour is that the Digital
  7375. + volume control is limited to a maximum of
  7376. + 0dB. ie. it can attenuate but not provide
  7377. + gain. For most users, this will be desired
  7378. + as it will prevent clipping. By appending
  7379. + the 24db_digital_gain parameter, the Digital
  7380. + volume control will allow up to 24dB of
  7381. + gain. If this parameter is enabled, it is the
  7382. + responsibility of the user to ensure that
  7383. + the Digital volume control is set to a value
  7384. + that does not result in clipping/distortion!)
  7385. +
  7386. +
  7387. +Name: iqaudio-dacplus
  7388. +Info: Configures the IQaudio DAC+ audio card
  7389. +Load: dtoverlay=iqaudio-dacplus,<param>=<val>
  7390. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  7391. + Digital volume control. Enable with
  7392. + "dtoverlay=iqaudio-dacplus,24db_digital_gain"
  7393. + (The default behaviour is that the Digital
  7394. + volume control is limited to a maximum of
  7395. + 0dB. ie. it can attenuate but not provide
  7396. + gain. For most users, this will be desired
  7397. + as it will prevent clipping. By appending
  7398. + the 24db_digital_gain parameter, the Digital
  7399. + volume control will allow up to 24dB of
  7400. + gain. If this parameter is enabled, it is the
  7401. + responsibility of the user to ensure that
  7402. + the Digital volume control is set to a value
  7403. + that does not result in clipping/distortion!)
  7404. + auto_mute_amp If specified, unmute/mute the IQaudIO amp when
  7405. + starting/stopping audio playback.
  7406. + unmute_amp If specified, unmute the IQaudIO amp once when
  7407. + the DAC driver module loads.
  7408. +
  7409. +
  7410. +Name: iqaudio-digi-wm8804-audio
  7411. +Info: Configures the IQAudIO Digi WM8804 audio card
  7412. +Load: dtoverlay=iqaudio-digi-wm8804-audio,<param>=<val>
  7413. +Params: card_name Override the default, "IQAudIODigi", card name.
  7414. + dai_name Override the default, "IQAudIO Digi", dai name.
  7415. + dai_stream_name Override the default, "IQAudIO Digi HiFi",
  7416. + dai stream name.
  7417. +
  7418. +
  7419. +Name: irs1125
  7420. +Info: Infineon irs1125 TOF camera module.
  7421. + Uses Unicam 1, which is the standard camera connector on most Pi
  7422. + variants.
  7423. +Load: dtoverlay=irs1125
  7424. +Params: <None>
  7425. +
  7426. +
  7427. +Name: jedec-spi-nor
  7428. +Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
  7429. + "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
  7430. +Load: dtoverlay=jedec-spi-nor,<param>=<val>
  7431. +Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
  7432. + flash-fastr-spi<n>-<m> Enables flash device with fast read capability
  7433. + on SPI<n>, CS#<m>.
  7434. +
  7435. +
  7436. +Name: justboom-both
  7437. +Info: Simultaneous usage of an justboom-dac and justboom-digi based
  7438. + card
  7439. +Load: dtoverlay=justboom-both,<param>=<val>
  7440. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  7441. + Digital volume control. Enable with
  7442. + "dtoverlay=justboom-dac,24db_digital_gain"
  7443. + (The default behaviour is that the Digital
  7444. + volume control is limited to a maximum of
  7445. + 0dB. ie. it can attenuate but not provide
  7446. + gain. For most users, this will be desired
  7447. + as it will prevent clipping. By appending
  7448. + the 24dB_digital_gain parameter, the Digital
  7449. + volume control will allow up to 24dB of
  7450. + gain. If this parameter is enabled, it is the
  7451. + responsibility of the user to ensure that
  7452. + the Digital volume control is set to a value
  7453. + that does not result in clipping/distortion!)
  7454. +
  7455. +
  7456. +Name: justboom-dac
  7457. +Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
  7458. + cards
  7459. +Load: dtoverlay=justboom-dac,<param>=<val>
  7460. +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
  7461. + Digital volume control. Enable with
  7462. + "dtoverlay=justboom-dac,24db_digital_gain"
  7463. + (The default behaviour is that the Digital
  7464. + volume control is limited to a maximum of
  7465. + 0dB. ie. it can attenuate but not provide
  7466. + gain. For most users, this will be desired
  7467. + as it will prevent clipping. By appending
  7468. + the 24dB_digital_gain parameter, the Digital
  7469. + volume control will allow up to 24dB of
  7470. + gain. If this parameter is enabled, it is the
  7471. + responsibility of the user to ensure that
  7472. + the Digital volume control is set to a value
  7473. + that does not result in clipping/distortion!)
  7474. +
  7475. +
  7476. +Name: justboom-digi
  7477. +Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
  7478. +Load: dtoverlay=justboom-digi
  7479. +Params: <None>
  7480. +
  7481. +
  7482. +Name: lirc-rpi
  7483. +Info: This overlay has been deprecated and removed - see gpio-ir
  7484. +Load: <Deprecated>
  7485. +
  7486. +
  7487. +Name: ltc294x
  7488. +Info: Adds support for the ltc294x family of battery gauges
  7489. +Load: dtoverlay=ltc294x,<param>=<val>
  7490. +Params: ltc2941 Select the ltc2941 device
  7491. +
  7492. + ltc2942 Select the ltc2942 device
  7493. +
  7494. + ltc2943 Select the ltc2943 device
  7495. +
  7496. + ltc2944 Select the ltc2944 device
  7497. +
  7498. + resistor-sense The sense resistor value in milli-ohms.
  7499. + Can be a 32-bit negative value when the battery
  7500. + has been connected to the wrong end of the
  7501. + resistor.
  7502. +
  7503. + prescaler-exponent Range and accuracy of the gauge. The value is
  7504. + programmed into the chip only if it differs
  7505. + from the current setting.
  7506. + For LTC2941 only:
  7507. + - Default value is 128
  7508. + - the exponent is in the range 0-7 (default 7)
  7509. + See the datasheet for more information.
  7510. +
  7511. +
  7512. +Name: max98357a
  7513. +Info: Configures the Maxim MAX98357A I2S DAC
  7514. +Load: dtoverlay=max98357a,<param>=<val>
  7515. +Params: no-sdmode Driver does not manage the state of the DAC's
  7516. + SD_MODE pin (i.e. chip is always on).
  7517. + sdmode-pin integer, GPIO pin connected to the SD_MODE input
  7518. + of the DAC (default GPIO4 if parameter omitted).
  7519. +
  7520. +
  7521. +Name: maxtherm
  7522. +Info: Configure a MAX6675, MAX31855 or MAX31856 thermocouple as an IIO device.
  7523. +
  7524. + For devices on spi1 or spi2, the interfaces should be enabled
  7525. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  7526. + The overlay expects to disable the relevant spidev node, so also using
  7527. + e.g. cs0_spidev=off is unnecessary.
  7528. +
  7529. + Example:
  7530. + MAX31855 on /dev/spidev0.0
  7531. + dtoverlay=maxtherm,spi0-0,max31855
  7532. + MAX31856 using a type J thermocouple on /dev/spidev2.1
  7533. + dtoverlay=spi2-2cs
  7534. + dtoverlay=maxtherm,spi2-1,max31856,type_j
  7535. +
  7536. +Load: dtoverlay=maxtherm,<param>=<val>
  7537. +Params: spi<n>-<m> Configure device at spi<n>, cs<m>
  7538. + (boolean, required)
  7539. + max6675 Enable support for the MAX6675 (default)
  7540. + max31855 Enable support for the MAX31855
  7541. + max31855e Enable support for the MAX31855E
  7542. + max31855j Enable support for the MAX31855J
  7543. + max31855k Enable support for the MAX31855K
  7544. + max31855n Enable support for the MAX31855N
  7545. + max31855r Enable support for the MAX31855R
  7546. + max31855s Enable support for the MAX31855S
  7547. + max31855t Enable support for the MAX31855T
  7548. + max31856 Enable support for the MAX31856 (with type K)
  7549. + type_b Select a type B sensor for max31856
  7550. + type_e Select a type E sensor for max31856
  7551. + type_j Select a type J sensor for max31856
  7552. + type_k Select a type K sensor for max31856
  7553. + type_n Select a type N sensor for max31856
  7554. + type_r Select a type R sensor for max31856
  7555. + type_s Select a type S sensor for max31856
  7556. + type_t Select a type T sensor for max31856
  7557. +
  7558. +
  7559. +Name: mbed-dac
  7560. +Info: Configures the mbed AudioCODEC (TLV320AIC23B)
  7561. +Load: dtoverlay=mbed-dac
  7562. +Params: <None>
  7563. +
  7564. +
  7565. +Name: mcp23017
  7566. +Info: Configures the MCP23017 I2C GPIO expander
  7567. +Load: dtoverlay=mcp23017,<param>=<val>
  7568. +Params: gpiopin Gpio pin connected to the INTA output of the
  7569. + MCP23017 (default: 4)
  7570. +
  7571. + addr I2C address of the MCP23017 (default: 0x20)
  7572. +
  7573. + mcp23008 Configure an MCP23008 instead.
  7574. + noints Disable the interrupt GPIO line.
  7575. +
  7576. +
  7577. +Name: mcp23s17
  7578. +Info: Configures the MCP23S08/17 SPI GPIO expanders.
  7579. + If devices are present on SPI1 or SPI2, those interfaces must be enabled
  7580. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  7581. + If interrupts are enabled for a device on a given CS# on a SPI bus, that
  7582. + device must be the only one present on that SPI bus/CS#.
  7583. +Load: dtoverlay=mcp23s17,<param>=<val>
  7584. +Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
  7585. + devices present on SPI<n>, CS#<m>
  7586. +
  7587. + s17-spi<n>-<m>-present 8-bit integer, bitmap indicating MCP23S17
  7588. + devices present on SPI<n>, CS#<m>
  7589. +
  7590. + s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
  7591. + MCP23S08 device on SPI<n>, CS#<m>, specifies
  7592. + the GPIO pin to which INT output of MCP23S08
  7593. + is connected.
  7594. +
  7595. + s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
  7596. + single MCP23S17 device on SPI<n>, CS#<m>,
  7597. + specifies the GPIO pin to which either INTA
  7598. + or INTB output of MCP23S17 is connected.
  7599. +
  7600. +
  7601. +Name: mcp2515-can0
  7602. +Info: Configures the MCP2515 CAN controller on spi0.0
  7603. +Load: dtoverlay=mcp2515-can0,<param>=<val>
  7604. +Params: oscillator Clock frequency for the CAN controller (Hz)
  7605. +
  7606. + spimaxfrequency Maximum SPI frequence (Hz)
  7607. +
  7608. + interrupt GPIO for interrupt signal
  7609. +
  7610. +
  7611. +Name: mcp2515-can1
  7612. +Info: Configures the MCP2515 CAN controller on spi0.1
  7613. +Load: dtoverlay=mcp2515-can1,<param>=<val>
  7614. +Params: oscillator Clock frequency for the CAN controller (Hz)
  7615. +
  7616. + spimaxfrequency Maximum SPI frequence (Hz)
  7617. +
  7618. + interrupt GPIO for interrupt signal
  7619. +
  7620. +
  7621. +Name: mcp251xfd
  7622. +Info: Configures the MCP251XFD CAN controller family
  7623. + For devices on spi1 or spi2, the interfaces should be enabled
  7624. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  7625. +Load: dtoverlay=mcp251xfd,<param>=<val>
  7626. +Params: spi<n>-<m> Configure device at spi<n>, cs<m>
  7627. + (boolean, required)
  7628. +
  7629. + oscillator Clock frequency for the CAN controller (Hz)
  7630. +
  7631. + speed Maximum SPI frequence (Hz)
  7632. +
  7633. + interrupt GPIO for interrupt signal
  7634. +
  7635. + rx_interrupt GPIO for RX interrupt signal (nINT1) (optional)
  7636. +
  7637. + xceiver_enable GPIO for CAN transceiver enable (optional)
  7638. +
  7639. + xceiver_active_high specifiy if CAN transceiver enable pin is
  7640. + active high (optional, default: active low)
  7641. +
  7642. +
  7643. +Name: mcp3008
  7644. +Info: Configures MCP3008 A/D converters
  7645. + For devices on spi1 or spi2, the interfaces should be enabled
  7646. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  7647. +Load: dtoverlay=mcp3008,<param>[=<val>]
  7648. +Params: spi<n>-<m>-present boolean, configure device at spi<n>, cs<m>
  7649. + spi<n>-<m>-speed integer, set the spi bus speed for this device
  7650. +
  7651. +
  7652. +Name: mcp3202
  7653. +Info: Configures MCP3202 A/D converters
  7654. + For devices on spi1 or spi2, the interfaces should be enabled
  7655. + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  7656. +Load: dtoverlay=mcp3202,<param>[=<val>]
  7657. +Params: spi<n>-<m>-present boolean, configure device at spi<n>, cs<m>
  7658. + spi<n>-<m>-speed integer, set the spi bus speed for this device
  7659. +
  7660. +
  7661. +Name: mcp342x
  7662. +Info: Overlay for activation of Microchip MCP3421-3428 ADCs over I2C
  7663. +Load: dtoverlay=mcp342x,<param>=<val>
  7664. +Params: addr I2C bus address of device, for devices with
  7665. + addresses that are configurable, e.g. by
  7666. + hardware links (default=0x68)
  7667. + mcp3421 The device is an MCP3421
  7668. + mcp3422 The device is an MCP3422
  7669. + mcp3423 The device is an MCP3423
  7670. + mcp3424 The device is an MCP3424
  7671. + mcp3425 The device is an MCP3425
  7672. + mcp3426 The device is an MCP3426
  7673. + mcp3427 The device is an MCP3427
  7674. + mcp3428 The device is an MCP3428
  7675. +
  7676. +
  7677. +Name: media-center
  7678. +Info: Media Center HAT - 2.83" Touch Display + extras by Pi Supply
  7679. +Load: dtoverlay=media-center,<param>=<val>
  7680. +Params: speed Display SPI bus speed
  7681. + rotate Display rotation {0,90,180,270}
  7682. + fps Delay between frame updates
  7683. + xohms Touchpanel sensitivity (X-plate resistance)
  7684. + swapxy Swap x and y axis
  7685. + backlight Change backlight GPIO pin {e.g. 12, 18}
  7686. + gpio_out_pin GPIO for output (default "17")
  7687. + gpio_in_pin GPIO for input (default "18")
  7688. + gpio_in_pull Pull up/down/off on the input pin
  7689. + (default "down")
  7690. + sense Override the IR receive auto-detection logic:
  7691. + "0" = force active-high
  7692. + "1" = force active-low
  7693. + "-1" = use auto-detection
  7694. + (default "-1")
  7695. + softcarrier Turn the software carrier "on" or "off"
  7696. + (default "on")
  7697. + invert "on" = invert the output pin (default "off")
  7698. + debug "on" = enable additional debug messages
  7699. + (default "off")
  7700. +
  7701. +
  7702. +Name: merus-amp
  7703. +Info: Configures the merus-amp audio card
  7704. +Load: dtoverlay=merus-amp
  7705. +Params: <None>
  7706. +
  7707. +
  7708. +Name: midi-uart0
  7709. +Info: Configures UART0 (ttyAMA0) so that a requested 38.4kbaud actually gets
  7710. + 31.25kbaud, the frequency required for MIDI
  7711. +Load: dtoverlay=midi-uart0
  7712. +Params: <None>
  7713. +
  7714. +
  7715. +Name: midi-uart1
  7716. +Info: Configures UART1 (ttyS0) so that a requested 38.4kbaud actually gets
  7717. + 31.25kbaud, the frequency required for MIDI
  7718. +Load: dtoverlay=midi-uart1
  7719. +Params: <None>
  7720. +
  7721. +
  7722. +Name: midi-uart2
  7723. +Info: Configures UART2 (ttyAMA1) so that a requested 38.4kbaud actually gets
  7724. + 31.25kbaud, the frequency required for MIDI
  7725. +Load: dtoverlay=midi-uart2
  7726. +Params: <None>
  7727. +
  7728. +
  7729. +Name: midi-uart3
  7730. +Info: Configures UART3 (ttyAMA2) so that a requested 38.4kbaud actually gets
  7731. + 31.25kbaud, the frequency required for MIDI
  7732. +Load: dtoverlay=midi-uart3
  7733. +Params: <None>
  7734. +
  7735. +
  7736. +Name: midi-uart4
  7737. +Info: Configures UART4 (ttyAMA3) so that a requested 38.4kbaud actually gets
  7738. + 31.25kbaud, the frequency required for MIDI
  7739. +Load: dtoverlay=midi-uart4
  7740. +Params: <None>
  7741. +
  7742. +
  7743. +Name: midi-uart5
  7744. +Info: Configures UART5 (ttyAMA4) so that a requested 38.4kbaud actually gets
  7745. + 31.25kbaud, the frequency required for MIDI
  7746. +Load: dtoverlay=midi-uart5
  7747. +Params: <None>
  7748. +
  7749. +
  7750. +Name: minipitft13
  7751. +Info: Overlay for AdaFruit Mini Pi 1.3" TFT via SPI using fbtft driver.
  7752. +Load: dtoverlay=minipitft13,<param>=<val>
  7753. +Params: speed SPI bus speed (default 32000000)
  7754. + rotate Display rotation (0, 90, 180 or 270; default 0)
  7755. + width Display width (default 240)
  7756. + height Display height (default 240)
  7757. + fps Delay between frame updates (default 25)
  7758. + debug Debug output level (0-7; default 0)
  7759. +
  7760. +
  7761. +Name: miniuart-bt
  7762. +Info: Switch the onboard Bluetooth function on Pi 3B, 3B+, 3A+, 4B and Zero W
  7763. + to use the mini-UART (ttyS0) and restore UART0/ttyAMA0 over GPIOs 14 &
  7764. + 15. Note that this may reduce the maximum usable baudrate.
  7765. + N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
  7766. + and replace ttyAMA0 with ttyS0, unless using Raspbian or another
  7767. + distribution with udev rules that create /dev/serial0 and /dev/serial1,
  7768. + in which case use /dev/serial1 instead because it will always be
  7769. + correct. Furthermore, you must also set core_freq and core_freq_min to
  7770. + the same value in config.txt or the miniuart will not work.
  7771. +Load: dtoverlay=miniuart-bt,<param>=<val>
  7772. +Params: krnbt Set to "on" to enable autoprobing of Bluetooth
  7773. + driver without need of hciattach/btattach
  7774. +
  7775. +
  7776. +Name: mmc
  7777. +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
  7778. +Load: dtoverlay=mmc,<param>=<val>
  7779. +Params: overclock_50 Clock (in MHz) to use when the MMC framework
  7780. + requests 50MHz
  7781. +
  7782. +
  7783. +Name: mpu6050
  7784. +Info: Overlay for i2c connected mpu6050 imu
  7785. +Load: dtoverlay=mpu6050,<param>=<val>
  7786. +Params: interrupt GPIO pin for interrupt (default 4)
  7787. + addr I2C address of the device (default 0x68)
  7788. +
  7789. +
  7790. +Name: mz61581
  7791. +Info: MZ61581 display by Tontec
  7792. +Load: dtoverlay=mz61581,<param>=<val>
  7793. +Params: speed Display SPI bus speed
  7794. +
  7795. + rotate Display rotation {0,90,180,270}
  7796. +
  7797. + fps Delay between frame updates
  7798. +
  7799. + txbuflen Transmit buffer length (default 32768)
  7800. +
  7801. + debug Debug output level {0-7}
  7802. +
  7803. + xohms Touchpanel sensitivity (X-plate resistance)
  7804. +
  7805. +
  7806. +Name: ov5647
  7807. +Info: Omnivision OV5647 camera module.
  7808. + Uses Unicam 1, which is the standard camera connector on most Pi
  7809. + variants.
  7810. +Load: dtoverlay=ov5647,<param>=<val>
  7811. +Params: rotation Mounting rotation of the camera sensor (0 or
  7812. + 180, default 0)
  7813. + orientation Sensor orientation (0 = front, 1 = rear,
  7814. + 2 = external, default external)
  7815. +
  7816. +
  7817. +Name: ov7251
  7818. +Info: Omnivision OV7251 camera module.
  7819. + Uses Unicam 1, which is the standard camera connector on most Pi
  7820. + variants.
  7821. +Load: dtoverlay=ov7251,<param>=<val>
  7822. +Params: rotation Mounting rotation of the camera sensor (0 or
  7823. + 180, default 0)
  7824. + orientation Sensor orientation (0 = front, 1 = rear,
  7825. + 2 = external, default external)
  7826. +
  7827. +
  7828. +Name: ov9281
  7829. +Info: Omnivision OV9281 camera module.
  7830. + Uses Unicam 1, which is the standard camera connector on most Pi
  7831. + variants.
  7832. +Load: dtoverlay=ov9281,<param>=<val>
  7833. +Params: rotation Mounting rotation of the camera sensor (0 or
  7834. + 180, default 0)
  7835. + orientation Sensor orientation (0 = front, 1 = rear,
  7836. + 2 = external, default external)
  7837. +
  7838. +
  7839. +Name: papirus
  7840. +Info: PaPiRus ePaper Screen by Pi Supply (both HAT and pHAT)
  7841. +Load: dtoverlay=papirus,<param>=<val>
  7842. +Params: panel Display panel (required):
  7843. + 1.44": e1144cs021
  7844. + 2.0": e2200cs021
  7845. + 2.7": e2271cs021
  7846. +
  7847. + speed Display SPI bus speed
  7848. +
  7849. +
  7850. +Name: pca953x
  7851. +Info: TI PCA953x family of I2C GPIO expanders. Default is for NXP PCA9534.
  7852. +Load: dtoverlay=pca953x,<param>=<val>
  7853. +Params: addr I2C address of expander. Default 0x20.
  7854. + pca6416 Select the NXP PCA6416 (16 bit)
  7855. + pca9505 Select the NXP PCA9505 (40 bit)
  7856. + pca9535 Select the NXP PCA9535 (16 bit)
  7857. + pca9536 Select the NXP PCA9536 or TI PCA9536 (4 bit)
  7858. + pca9537 Select the NXP PCA9537 (4 bit)
  7859. + pca9538 Select the NXP PCA9538 (8 bit)
  7860. + pca9539 Select the NXP PCA9539 (16 bit)
  7861. + pca9554 Select the NXP PCA9554 (8 bit)
  7862. + pca9555 Select the NXP PCA9555 (16 bit)
  7863. + pca9556 Select the NXP PCA9556 (8 bit)
  7864. + pca9557 Select the NXP PCA9557 (8 bit)
  7865. + pca9574 Select the NXP PCA9574 (8 bit)
  7866. + pca9575 Select the NXP PCA9575 (16 bit)
  7867. + pca9698 Select the NXP PCA9698 (40 bit)
  7868. + pca16416 Select the NXP PCA16416 (16 bit)
  7869. + pca16524 Select the NXP PCA16524 (24 bit)
  7870. + pca19555a Select the NXP PCA19555A (16 bit)
  7871. + max7310 Select the Maxim MAX7310 (8 bit)
  7872. + max7312 Select the Maxim MAX7312 (16 bit)
  7873. + max7313 Select the Maxim MAX7313 (16 bit)
  7874. + max7315 Select the Maxim MAX7315 (8 bit)
  7875. + pca6107 Select the TI PCA6107 (8 bit)
  7876. + tca6408 Select the TI TCA6408 (8 bit)
  7877. + tca6416 Select the TI TCA6416 (16 bit)
  7878. + tca6424 Select the TI TCA6424 (24 bit)
  7879. + tca9539 Select the TI TCA9539 (16 bit)
  7880. + tca9554 Select the TI TCA9554 (8 bit)
  7881. + cat9554 Select the Onnn CAT9554 (8 bit)
  7882. + pca9654 Select the Onnn PCA9654 (8 bit)
  7883. + xra1202 Select the Exar XRA1202 (8 bit)
  7884. +
  7885. +
  7886. +Name: pcie-32bit-dma
  7887. +Info: Force PCIe config to support 32bit DMA addresses at the expense of
  7888. + having to bounce buffers.
  7889. +Load: dtoverlay=pcie-32bit-dma
  7890. +Params: <None>
  7891. +
  7892. +
  7893. +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
  7894. +
  7895. +
  7896. +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
  7897. +
  7898. +
  7899. +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
  7900. +
  7901. +
  7902. +Name: pi3-act-led
  7903. +Info: This overlay has been renamed act-led, keeping pi3-act-led as an alias
  7904. + for backwards compatibility.
  7905. +Load: <Deprecated>
  7906. +
  7907. +
  7908. +Name: pi3-disable-bt
  7909. +Info: This overlay has been renamed disable-bt, keeping pi3-disable-bt as an
  7910. + alias for backwards compatibility.
  7911. +Load: <Deprecated>
  7912. +
  7913. +
  7914. +Name: pi3-disable-wifi
  7915. +Info: This overlay has been renamed disable-wifi, keeping pi3-disable-wifi as
  7916. + an alias for backwards compatibility.
  7917. +Load: <Deprecated>
  7918. +
  7919. +
  7920. +Name: pi3-miniuart-bt
  7921. +Info: This overlay has been renamed miniuart-bt, keeping pi3-miniuart-bt as
  7922. + an alias for backwards compatibility.
  7923. +Load: <Deprecated>
  7924. +
  7925. +
  7926. +Name: pibell
  7927. +Info: Configures the pibell audio card.
  7928. +Load: dtoverlay=pibell,<param>=<val>
  7929. +Params: alsaname Set the name as it appears in ALSA (default
  7930. + "PiBell")
  7931. +
  7932. +
  7933. +Name: pifacedigital
  7934. +Info: Configures the PiFace Digital mcp23s17 GPIO port expander.
  7935. +Load: dtoverlay=pifacedigital,<param>=<val>
  7936. +Params: spi-present-mask 8-bit integer, bitmap indicating MCP23S17 SPI0
  7937. + CS0 address. PiFace Digital supports addresses
  7938. + 0-3, which can be configured with JP1 and JP2.
  7939. +
  7940. +
  7941. +Name: pifi-40
  7942. +Info: Configures the PiFi 40W stereo amplifier
  7943. +Load: dtoverlay=pifi-40
  7944. +Params: <None>
  7945. +
  7946. +
  7947. +Name: pifi-dac-hd
  7948. +Info: Configures the PiFi DAC HD
  7949. +Load: dtoverlay=pifi-dac-hd
  7950. +Params: <None>
  7951. +
  7952. +
  7953. +Name: pifi-dac-zero
  7954. +Info: Configures the PiFi DAC Zero
  7955. +Load: dtoverlay=pifi-dac-zero
  7956. +Params: <None>
  7957. +
  7958. +
  7959. +Name: pifi-mini-210
  7960. +Info: Configures the PiFi Mini stereo amplifier
  7961. +Load: dtoverlay=pifi-mini-210
  7962. +Params: <None>
  7963. +
  7964. +
  7965. +Name: piglow
  7966. +Info: Configures the PiGlow by pimoroni.com
  7967. +Load: dtoverlay=piglow
  7968. +Params: <None>
  7969. +
  7970. +
  7971. +Name: piscreen
  7972. +Info: PiScreen display by OzzMaker.com
  7973. +Load: dtoverlay=piscreen,<param>=<val>
  7974. +Params: speed Display SPI bus speed
  7975. +
  7976. + rotate Display rotation {0,90,180,270}
  7977. +
  7978. + fps Delay between frame updates
  7979. +
  7980. + debug Debug output level {0-7}
  7981. +
  7982. + xohms Touchpanel sensitivity (X-plate resistance)
  7983. +
  7984. +
  7985. +Name: piscreen2r
  7986. +Info: PiScreen 2 with resistive TP display by OzzMaker.com
  7987. +Load: dtoverlay=piscreen2r,<param>=<val>
  7988. +Params: speed Display SPI bus speed
  7989. +
  7990. + rotate Display rotation {0,90,180,270}
  7991. +
  7992. + fps Delay between frame updates
  7993. +
  7994. + debug Debug output level {0-7}
  7995. +
  7996. + xohms Touchpanel sensitivity (X-plate resistance)
  7997. +
  7998. +
  7999. +Name: pisound
  8000. +Info: Configures the Blokas Labs pisound card
  8001. +Load: dtoverlay=pisound
  8002. +Params: <None>
  8003. +
  8004. +
  8005. +Name: pitft22
  8006. +Info: Adafruit PiTFT 2.2" screen
  8007. +Load: dtoverlay=pitft22,<param>=<val>
  8008. +Params: speed Display SPI bus speed
  8009. +
  8010. + rotate Display rotation {0,90,180,270}
  8011. +
  8012. + fps Delay between frame updates
  8013. +
  8014. + debug Debug output level {0-7}
  8015. +
  8016. +
  8017. +Name: pitft28-capacitive
  8018. +Info: Adafruit PiTFT 2.8" capacitive touch screen
  8019. +Load: dtoverlay=pitft28-capacitive,<param>=<val>
  8020. +Params: speed Display SPI bus speed
  8021. +
  8022. + rotate Display rotation {0,90,180,270}
  8023. +
  8024. + fps Delay between frame updates
  8025. +
  8026. + debug Debug output level {0-7}
  8027. +
  8028. + touch-sizex Touchscreen size x (default 240)
  8029. +
  8030. + touch-sizey Touchscreen size y (default 320)
  8031. +
  8032. + touch-invx Touchscreen inverted x axis
  8033. +
  8034. + touch-invy Touchscreen inverted y axis
  8035. +
  8036. + touch-swapxy Touchscreen swapped x y axis
  8037. +
  8038. +
  8039. +Name: pitft28-resistive
  8040. +Info: Adafruit PiTFT 2.8" resistive touch screen
  8041. +Load: dtoverlay=pitft28-resistive,<param>=<val>
  8042. +Params: speed Display SPI bus speed
  8043. +
  8044. + rotate Display rotation {0,90,180,270}
  8045. +
  8046. + fps Delay between frame updates
  8047. +
  8048. + debug Debug output level {0-7}
  8049. +
  8050. +
  8051. +Name: pitft35-resistive
  8052. +Info: Adafruit PiTFT 3.5" resistive touch screen
  8053. +Load: dtoverlay=pitft35-resistive,<param>=<val>
  8054. +Params: speed Display SPI bus speed
  8055. +
  8056. + rotate Display rotation {0,90,180,270}
  8057. +
  8058. + fps Delay between frame updates
  8059. +
  8060. + debug Debug output level {0-7}
  8061. +
  8062. +
  8063. +Name: pps-gpio
  8064. +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
  8065. +Load: dtoverlay=pps-gpio,<param>=<val>
  8066. +Params: gpiopin Input GPIO (default "18")
  8067. + assert_falling_edge When present, assert is indicated by a falling
  8068. + edge, rather than by a rising edge (default
  8069. + off)
  8070. + capture_clear Generate clear events on the trailing edge
  8071. + (default off)
  8072. +
  8073. +
  8074. +Name: pwm
  8075. +Info: Configures a single PWM channel
  8076. + Legal pin,function combinations for each channel:
  8077. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  8078. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  8079. + N.B.:
  8080. + 1) Pin 18 is the only one available on all platforms, and
  8081. + it is the one used by the I2S audio interface.
  8082. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  8083. + 2) The onboard analogue audio output uses both PWM channels.
  8084. + 3) So be careful mixing audio and PWM.
  8085. + 4) Currently the clock must have been enabled and configured
  8086. + by other means.
  8087. +Load: dtoverlay=pwm,<param>=<val>
  8088. +Params: pin Output pin (default 18) - see table
  8089. + func Pin function (default 2 = Alt5) - see above
  8090. + clock PWM clock frequency (informational)
  8091. +
  8092. +
  8093. +Name: pwm-2chan
  8094. +Info: Configures both PWM channels
  8095. + Legal pin,function combinations for each channel:
  8096. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  8097. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  8098. + N.B.:
  8099. + 1) Pin 18 is the only one available on all platforms, and
  8100. + it is the one used by the I2S audio interface.
  8101. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  8102. + 2) The onboard analogue audio output uses both PWM channels.
  8103. + 3) So be careful mixing audio and PWM.
  8104. + 4) Currently the clock must have been enabled and configured
  8105. + by other means.
  8106. +Load: dtoverlay=pwm-2chan,<param>=<val>
  8107. +Params: pin Output pin (default 18) - see table
  8108. + pin2 Output pin for other channel (default 19)
  8109. + func Pin function (default 2 = Alt5) - see above
  8110. + func2 Function for pin2 (default 2 = Alt5)
  8111. + clock PWM clock frequency (informational)
  8112. +
  8113. +
  8114. +Name: pwm-ir-tx
  8115. +Info: Use GPIO pin as pwm-assisted infrared transmitter output.
  8116. + This is an alternative to "gpio-ir-tx". pwm-ir-tx makes use
  8117. + of PWM0 to reduce the CPU load during transmission compared to
  8118. + gpio-ir-tx which uses bit-banging.
  8119. + Legal pin,function combinations are:
  8120. + 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  8121. +Load: dtoverlay=pwm-ir-tx,<param>=<val>
  8122. +Params: gpio_pin Output GPIO (default 18)
  8123. +
  8124. + func Pin function (default 2 = Alt5)
  8125. +
  8126. +
  8127. +Name: qca7000
  8128. +Info: in-tech's Evaluation Board for PLC Stamp micro
  8129. + This uses spi0 and a separate GPIO interrupt to connect the QCA7000.
  8130. +Load: dtoverlay=qca7000,<param>=<val>
  8131. +Params: int_pin GPIO pin for interrupt signal (default 23)
  8132. +
  8133. + speed SPI bus speed (default 12 MHz)
  8134. +
  8135. +
  8136. +Name: qca7000-uart0
  8137. +Info: in-tech's Evaluation Board for PLC Stamp micro (UART)
  8138. + This uses uart0/ttyAMA0 over GPIOs 14 & 15 to connect the QCA7000.
  8139. + But it requires disabling of onboard Bluetooth on
  8140. + Pi 3B, 3B+, 3A+, 4B and Zero W.
  8141. +Load: dtoverlay=qca7000-uart0,<param>=<val>
  8142. +Params: baudrate Set the baudrate for the UART (default
  8143. + "115200")
  8144. +
  8145. +
  8146. +Name: rotary-encoder
  8147. +Info: Overlay for GPIO connected rotary encoder.
  8148. +Load: dtoverlay=rotary-encoder,<param>=<val>
  8149. +Params: pin_a GPIO connected to rotary encoder channel A
  8150. + (default 4).
  8151. + pin_b GPIO connected to rotary encoder channel B
  8152. + (default 17).
  8153. + relative_axis register a relative axis rather than an
  8154. + absolute one. Relative axis will only
  8155. + generate +1/-1 events on the input device,
  8156. + hence no steps need to be passed.
  8157. + linux_axis the input subsystem axis to map to this
  8158. + rotary encoder. Defaults to 0 (ABS_X / REL_X)
  8159. + rollover Automatic rollover when the rotary value
  8160. + becomes greater than the specified steps or
  8161. + smaller than 0. For absolute axis only.
  8162. + steps-per-period Number of steps (stable states) per period.
  8163. + The values have the following meaning:
  8164. + 1: Full-period mode (default)
  8165. + 2: Half-period mode
  8166. + 4: Quarter-period mode
  8167. + steps Number of steps in a full turnaround of the
  8168. + encoder. Only relevant for absolute axis.
  8169. + Defaults to 24 which is a typical value for
  8170. + such devices.
  8171. + wakeup Boolean, rotary encoder can wake up the
  8172. + system.
  8173. + encoding String, the method used to encode steps.
  8174. + Supported are "gray" (the default and more
  8175. + common) and "binary".
  8176. +
  8177. +
  8178. +Name: rpi-backlight
  8179. +Info: Raspberry Pi official display backlight driver
  8180. +Load: dtoverlay=rpi-backlight
  8181. +Params: <None>
  8182. +
  8183. +
  8184. +Name: rpi-cirrus-wm5102
  8185. +Info: Configures the Cirrus Logic Audio Card
  8186. +Load: dtoverlay=rpi-cirrus-wm5102
  8187. +Params: <None>
  8188. +
  8189. +
  8190. +Name: rpi-dac
  8191. +Info: Configures the RPi DAC audio card
  8192. +Load: dtoverlay=rpi-dac
  8193. +Params: <None>
  8194. +
  8195. +
  8196. +Name: rpi-display
  8197. +Info: RPi-Display - 2.8" Touch Display by Watterott
  8198. +Load: dtoverlay=rpi-display,<param>=<val>
  8199. +Params: speed Display SPI bus speed
  8200. + rotate Display rotation {0,90,180,270}
  8201. + fps Delay between frame updates
  8202. + debug Debug output level {0-7}
  8203. + xohms Touchpanel sensitivity (X-plate resistance)
  8204. + swapxy Swap x and y axis
  8205. + backlight Change backlight GPIO pin {e.g. 12, 18}
  8206. +
  8207. +
  8208. +Name: rpi-ft5406
  8209. +Info: Official Raspberry Pi display touchscreen
  8210. +Load: dtoverlay=rpi-ft5406,<param>=<val>
  8211. +Params: touchscreen-size-x Touchscreen X resolution (default 800)
  8212. + touchscreen-size-y Touchscreen Y resolution (default 600);
  8213. + touchscreen-inverted-x Invert touchscreen X coordinates (default 0);
  8214. + touchscreen-inverted-y Invert touchscreen Y coordinates (default 0);
  8215. + touchscreen-swapped-x-y Swap X and Y cordinates (default 0);
  8216. +
  8217. +
  8218. +Name: rpi-poe
  8219. +Info: Raspberry Pi PoE HAT fan
  8220. +Load: dtoverlay=rpi-poe,<param>[=<val>]
  8221. +Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan
  8222. + turns on (default 40000)
  8223. + poe_fan_temp0_hyst Temperature delta (in millicelcius) at which
  8224. + the fan turns off (default 2000)
  8225. + poe_fan_temp1 Temperature (in millicelcius) at which the fan
  8226. + speeds up (default 45000)
  8227. + poe_fan_temp1_hyst Temperature delta (in millicelcius) at which
  8228. + the fan slows down (default 2000)
  8229. + poe_fan_temp2 Temperature (in millicelcius) at which the fan
  8230. + speeds up (default 50000)
  8231. + poe_fan_temp2_hyst Temperature delta (in millicelcius) at which
  8232. + the fan slows down (default 2000)
  8233. + poe_fan_temp3 Temperature (in millicelcius) at which the fan
  8234. + speeds up (default 55000)
  8235. + poe_fan_temp3_hyst Temperature delta (in millicelcius) at which
  8236. + the fan slows down (default 5000)
  8237. +
  8238. +
  8239. +Name: rpi-poe-plus
  8240. +Info: Raspberry Pi PoE+ HAT fan
  8241. +Load: dtoverlay=rpi-poe-plus,<param>[=<val>]
  8242. +Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan
  8243. + turns on (default 40000)
  8244. + poe_fan_temp0_hyst Temperature delta (in millicelcius) at which
  8245. + the fan turns off (default 2000)
  8246. + poe_fan_temp1 Temperature (in millicelcius) at which the fan
  8247. + speeds up (default 45000)
  8248. + poe_fan_temp1_hyst Temperature delta (in millicelcius) at which
  8249. + the fan slows down (default 2000)
  8250. + poe_fan_temp2 Temperature (in millicelcius) at which the fan
  8251. + speeds up (default 50000)
  8252. + poe_fan_temp2_hyst Temperature delta (in millicelcius) at which
  8253. + the fan slows down (default 2000)
  8254. + poe_fan_temp3 Temperature (in millicelcius) at which the fan
  8255. + speeds up (default 55000)
  8256. + poe_fan_temp3_hyst Temperature delta (in millicelcius) at which
  8257. + the fan slows down (default 5000)
  8258. +
  8259. +
  8260. +Name: rpi-proto
  8261. +Info: Configures the RPi Proto audio card
  8262. +Load: dtoverlay=rpi-proto
  8263. +Params: <None>
  8264. +
  8265. +
  8266. +Name: rpi-sense
  8267. +Info: Raspberry Pi Sense HAT
  8268. +Load: dtoverlay=rpi-sense
  8269. +Params: <None>
  8270. +
  8271. +
  8272. +Name: rpi-tv
  8273. +Info: Raspberry Pi TV HAT
  8274. +Load: dtoverlay=rpi-tv
  8275. +Params: <None>
  8276. +
  8277. +
  8278. +Name: rpivid-v4l2
  8279. +Info: Load the V4L2 stateless video decoder driver for the HEVC block,
  8280. + disabling the memory mapped devices in the process.
  8281. +Load: dtoverlay=rpivid-v4l2
  8282. +Params: <None>
  8283. +
  8284. +
  8285. +Name: rra-digidac1-wm8741-audio
  8286. +Info: Configures the Red Rocks Audio DigiDAC1 soundcard
  8287. +Load: dtoverlay=rra-digidac1-wm8741-audio
  8288. +Params: <None>
  8289. +
  8290. +
  8291. +Name: sainsmart18
  8292. +Info: Overlay for the SPI-connected Sainsmart 1.8" display (based on the
  8293. + ST7735R chip).
  8294. +Load: dtoverlay=sainsmart18,<param>=<val>
  8295. +Params: rotate Display rotation {0,90,180,270}
  8296. + speed SPI bus speed in Hz (default 4000000)
  8297. + fps Display frame rate in Hz
  8298. + bgr Enable BGR mode (default off)
  8299. + debug Debug output level {0-7}
  8300. + dc_pin GPIO pin for D/C (default 24)
  8301. + reset_pin GPIO pin for RESET (default 25)
  8302. +
  8303. +
  8304. +Name: sc16is750-i2c
  8305. +Info: Overlay for the NXP SC16IS750 UART with I2C Interface
  8306. + Enables the chip on I2C1 at 0x48 (or the "addr" parameter value). To
  8307. + select another address, please refer to table 10 in reference manual.
  8308. +Load: dtoverlay=sc16is750-i2c,<param>=<val>
  8309. +Params: int_pin GPIO used for IRQ (default 24)
  8310. + addr Address (default 0x48)
  8311. + xtal On-board crystal frequency (default 14745600)
  8312. +
  8313. +
  8314. +Name: sc16is752-i2c
  8315. +Info: Overlay for the NXP SC16IS752 dual UART with I2C Interface
  8316. + Enables the chip on I2C1 at 0x48 (or the "addr" parameter value). To
  8317. + select another address, please refer to table 10 in reference manual.
  8318. +Load: dtoverlay=sc16is752-i2c,<param>=<val>
  8319. +Params: int_pin GPIO used for IRQ (default 24)
  8320. + addr Address (default 0x48)
  8321. + xtal On-board crystal frequency (default 14745600)
  8322. +
  8323. +
  8324. +Name: sc16is752-spi0
  8325. +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
  8326. + Enables the chip on SPI0.
  8327. +Load: dtoverlay=sc16is752-spi0,<param>=<val>
  8328. +Params: int_pin GPIO used for IRQ (default 24)
  8329. + xtal On-board crystal frequency (default 14745600)
  8330. +
  8331. +
  8332. +Name: sc16is752-spi1
  8333. +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
  8334. + Enables the chip on SPI1.
  8335. + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
  8336. + A+, B+, Zero and PI2 B; as well as the Compute Module.
  8337. +
  8338. +Load: dtoverlay=sc16is752-spi1,<param>=<val>
  8339. +Params: int_pin GPIO used for IRQ (default 24)
  8340. + xtal On-board crystal frequency (default 14745600)
  8341. +
  8342. +
  8343. +Name: sdhost
  8344. +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock.
  8345. + N.B. This overlay is designed for situations where the mmc driver is
  8346. + the default, so it disables the other (mmc) interface - this will kill
  8347. + WLAN on a Pi3. If this isn't what you want, either use the sdtweak
  8348. + overlay or the new sd_* dtparams of the base DTBs.
  8349. +Load: dtoverlay=sdhost,<param>=<val>
  8350. +Params: overclock_50 Clock (in MHz) to use when the MMC framework
  8351. + requests 50MHz
  8352. +
  8353. + force_pio Disable DMA support (default off)
  8354. +
  8355. + pio_limit Number of blocks above which to use DMA
  8356. + (default 1)
  8357. +
  8358. + debug Enable debug output (default off)
  8359. +
  8360. +
  8361. +Name: sdio
  8362. +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
  8363. + and enables SDIO via GPIOs 22-27. An example of use in 1-bit mode is
  8364. + "dtoverlay=sdio,bus_width=1,gpios_22_25"
  8365. +Load: dtoverlay=sdio,<param>=<val>
  8366. +Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC
  8367. + framework requests 50MHz
  8368. +
  8369. + poll_once Disable SDIO-device polling every second
  8370. + (default on: polling once at boot-time)
  8371. +
  8372. + bus_width Set the SDIO host bus width (default 4 bits)
  8373. +
  8374. + gpios_22_25 Select GPIOs 22-25 for 1-bit mode. Must be used
  8375. + with bus_width=1. This replaces the sdio-1bit
  8376. + overlay, which is now deprecated.
  8377. +
  8378. + gpios_34_37 Select GPIOs 34-37 for 1-bit mode. Must be used
  8379. + with bus_width=1.
  8380. +
  8381. + gpios_34_39 Select GPIOs 34-39 for 4-bit mode. Must be used
  8382. + with bus_width=4 (the default).
  8383. +
  8384. +
  8385. +Name: sdio-1bit
  8386. +Info: This overlay is now deprecated. Use
  8387. + "dtoverlay=sdio,bus_width=1,gpios_22_25" instead.
  8388. +Load: <Deprecated>
  8389. +
  8390. +
  8391. +Name: sdtweak
  8392. +Info: This overlay is now deprecated. Use the sd_* dtparams in the
  8393. + base DTB, e.g. "dtoverlay=sdtweak,poll_once" becomes
  8394. + "dtparam=sd_poll_once".
  8395. +Load: <Deprecated>
  8396. +
  8397. +
  8398. +Name: seeed-can-fd-hat-v1
  8399. +Info: Overlay for Seeed Studio CAN BUS FD HAT with two CAN FD
  8400. + channels without RTC. Use this overlay if your HAT has no
  8401. + battery holder.
  8402. + https://www.seeedstudio.com/2-Channel-CAN-BUS-FD-Shield-for-Raspberry-Pi-p-4072.html
  8403. +Load: dtoverlay=seeed-can-fd-hat-v1
  8404. +Params: <None>
  8405. +
  8406. +
  8407. +Name: seeed-can-fd-hat-v2
  8408. +Info: Overlay for Seeed Studio CAN BUS FD HAT with two CAN FD
  8409. + channels and an RTC. Use this overlay if your HAT has a
  8410. + battery holder.
  8411. + https://www.seeedstudio.com/CAN-BUS-FD-HAT-for-Raspberry-Pi-p-4742.html
  8412. +Load: dtoverlay=seeed-can-fd-hat-v2
  8413. +Params: <None>
  8414. +
  8415. +
  8416. +Name: sh1106-spi
  8417. +Info: Overlay for SH1106 OLED via SPI using fbtft staging driver.
  8418. +Load: dtoverlay=sh1106-spi,<param>=<val>
  8419. +Params: speed SPI bus speed (default 4000000)
  8420. + rotate Display rotation (0, 90, 180 or 270; default 0)
  8421. + fps Delay between frame updates (default 25)
  8422. + debug Debug output level (0-7; default 0)
  8423. + dc_pin GPIO pin for D/C (default 24)
  8424. + reset_pin GPIO pin for RESET (default 25)
  8425. + height Display height (32 or 64; default 64)
  8426. +
  8427. +
  8428. +Name: si446x-spi0
  8429. +Info: Overlay for Si446x UHF Transceiver via SPI using si446x driver.
  8430. + The driver is currently out-of-tree at
  8431. + https://github.com/sunipkmukherjee/silabs.git
  8432. +Load: dtoverlay=si446x-spi0,<param>=<val>
  8433. +Params: speed SPI bus speed (default 4000000)
  8434. + int_pin GPIO pin for interrupts (default 17)
  8435. + reset_pin GPIO pin for RESET (default 27)
  8436. +
  8437. +
  8438. +Name: smi
  8439. +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
  8440. +Load: dtoverlay=smi
  8441. +Params: <None>
  8442. +
  8443. +
  8444. +Name: smi-dev
  8445. +Info: Enables the userspace interface for the SMI driver
  8446. +Load: dtoverlay=smi-dev
  8447. +Params: <None>
  8448. +
  8449. +
  8450. +Name: smi-nand
  8451. +Info: Enables access to NAND flash via the SMI interface
  8452. +Load: dtoverlay=smi-nand
  8453. +Params: <None>
  8454. +
  8455. +
  8456. +Name: spi-gpio35-39
  8457. +Info: Move SPI function block to GPIO 35 to 39
  8458. +Load: dtoverlay=spi-gpio35-39
  8459. +Params: <None>
  8460. +
  8461. +
  8462. +Name: spi-gpio40-45
  8463. +Info: Move SPI function block to GPIOs 40 to 45
  8464. +Load: dtoverlay=spi-gpio40-45
  8465. +Params: <None>
  8466. +
  8467. +
  8468. +Name: spi-rtc
  8469. +Info: Adds support for a number of SPI Real Time Clock devices
  8470. +Load: dtoverlay=spi-rtc,<param>=<val>
  8471. +Params: ds3232 Select the DS3232 device
  8472. + ds3234 Select the DS3234 device
  8473. + pcf2123 Select the PCF2123 device
  8474. +
  8475. + spi0_0 Use spi0.0 (default)
  8476. + spi0_1 Use spi0.1
  8477. + spi1_0 Use spi1.0
  8478. + spi1_1 Use spi1.1
  8479. + spi2_0 Use spi2.0
  8480. + spi2_1 Use spi2.1
  8481. + cs_high This device requires an active-high CS
  8482. +
  8483. +
  8484. +Name: spi0-1cs
  8485. +Info: Only use one CS pin for SPI0
  8486. +Load: dtoverlay=spi0-1cs,<param>=<val>
  8487. +Params: cs0_pin GPIO pin for CS0 (default 8)
  8488. + no_miso Don't claim and use the MISO pin (9), freeing
  8489. + it for other uses.
  8490. +
  8491. +
  8492. +Name: spi0-2cs
  8493. +Info: Change the CS pins for SPI0
  8494. +Load: dtoverlay=spi0-2cs,<param>=<val>
  8495. +Params: cs0_pin GPIO pin for CS0 (default 8)
  8496. + cs1_pin GPIO pin for CS1 (default 7)
  8497. + no_miso Don't claim and use the MISO pin (9), freeing
  8498. + it for other uses.
  8499. +
  8500. +
  8501. +Name: spi0-cs
  8502. +Info: This overlay has been renamed spi0-2cs, keeping spi0-cs as an
  8503. + alias for backwards compatibility.
  8504. +Load: <Deprecated>
  8505. +
  8506. +
  8507. +Name: spi0-hw-cs
  8508. +Info: This overlay has been deprecated and removed because it is no longer
  8509. + necessary and has been seen to prevent spi0 from working.
  8510. +Load: <Deprecated>
  8511. +
  8512. +
  8513. +Name: spi1-1cs
  8514. +Info: Enables spi1 with a single chip select (CS) line and associated spidev
  8515. + dev node. The gpio pin number for the CS line and spidev device node
  8516. + creation are configurable.
  8517. + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
  8518. + A+, B+, Zero and PI2 B; as well as the Compute Module.
  8519. +Load: dtoverlay=spi1-1cs,<param>=<val>
  8520. +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
  8521. + cs0_spidev Set to 'disabled' to stop the creation of a
  8522. + userspace device node /dev/spidev1.0 (default
  8523. + is 'okay' or enabled).
  8524. +
  8525. +
  8526. +Name: spi1-2cs
  8527. +Info: Enables spi1 with two chip select (CS) lines and associated spidev
  8528. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8529. + creation are configurable.
  8530. + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
  8531. + A+, B+, Zero and PI2 B; as well as the Compute Module.
  8532. +Load: dtoverlay=spi1-2cs,<param>=<val>
  8533. +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
  8534. + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
  8535. + cs0_spidev Set to 'disabled' to stop the creation of a
  8536. + userspace device node /dev/spidev1.0 (default
  8537. + is 'okay' or enabled).
  8538. + cs1_spidev Set to 'disabled' to stop the creation of a
  8539. + userspace device node /dev/spidev1.1 (default
  8540. + is 'okay' or enabled).
  8541. +
  8542. +
  8543. +Name: spi1-3cs
  8544. +Info: Enables spi1 with three chip select (CS) lines and associated spidev
  8545. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8546. + creation are configurable.
  8547. + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
  8548. + A+, B+, Zero and PI2 B; as well as the Compute Module.
  8549. +Load: dtoverlay=spi1-3cs,<param>=<val>
  8550. +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
  8551. + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
  8552. + cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
  8553. + cs0_spidev Set to 'disabled' to stop the creation of a
  8554. + userspace device node /dev/spidev1.0 (default
  8555. + is 'okay' or enabled).
  8556. + cs1_spidev Set to 'disabled' to stop the creation of a
  8557. + userspace device node /dev/spidev1.1 (default
  8558. + is 'okay' or enabled).
  8559. + cs2_spidev Set to 'disabled' to stop the creation of a
  8560. + userspace device node /dev/spidev1.2 (default
  8561. + is 'okay' or enabled).
  8562. +
  8563. +
  8564. +Name: spi2-1cs
  8565. +Info: Enables spi2 with a single chip select (CS) line and associated spidev
  8566. + dev node. The gpio pin number for the CS line and spidev device node
  8567. + creation are configurable.
  8568. + N.B.: spi2 is only accessible with the Compute Module.
  8569. +Load: dtoverlay=spi2-1cs,<param>=<val>
  8570. +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
  8571. + cs0_spidev Set to 'disabled' to stop the creation of a
  8572. + userspace device node /dev/spidev2.0 (default
  8573. + is 'okay' or enabled).
  8574. +
  8575. +
  8576. +Name: spi2-2cs
  8577. +Info: Enables spi2 with two chip select (CS) lines and associated spidev
  8578. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8579. + creation are configurable.
  8580. + N.B.: spi2 is only accessible with the Compute Module.
  8581. +Load: dtoverlay=spi2-2cs,<param>=<val>
  8582. +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
  8583. + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
  8584. + cs0_spidev Set to 'disabled' to stop the creation of a
  8585. + userspace device node /dev/spidev2.0 (default
  8586. + is 'okay' or enabled).
  8587. + cs1_spidev Set to 'disabled' to stop the creation of a
  8588. + userspace device node /dev/spidev2.1 (default
  8589. + is 'okay' or enabled).
  8590. +
  8591. +
  8592. +Name: spi2-3cs
  8593. +Info: Enables spi2 with three chip select (CS) lines and associated spidev
  8594. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8595. + creation are configurable.
  8596. + N.B.: spi2 is only accessible with the Compute Module.
  8597. +Load: dtoverlay=spi2-3cs,<param>=<val>
  8598. +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
  8599. + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
  8600. + cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2).
  8601. + cs0_spidev Set to 'disabled' to stop the creation of a
  8602. + userspace device node /dev/spidev2.0 (default
  8603. + is 'okay' or enabled).
  8604. + cs1_spidev Set to 'disabled' to stop the creation of a
  8605. + userspace device node /dev/spidev2.1 (default
  8606. + is 'okay' or enabled).
  8607. + cs2_spidev Set to 'disabled' to stop the creation of a
  8608. + userspace device node /dev/spidev2.2 (default
  8609. + is 'okay' or enabled).
  8610. +
  8611. +
  8612. +Name: spi3-1cs
  8613. +Info: Enables spi3 with a single chip select (CS) line and associated spidev
  8614. + dev node. The gpio pin number for the CS line and spidev device node
  8615. + creation are configurable. BCM2711 only.
  8616. +Load: dtoverlay=spi3-1cs,<param>=<val>
  8617. +Params: cs0_pin GPIO pin for CS0 (default 0 - BCM SPI3_CE0).
  8618. + cs0_spidev Set to 'off' to prevent the creation of a
  8619. + userspace device node /dev/spidev3.0 (default
  8620. + is 'on' or enabled).
  8621. +
  8622. +
  8623. +Name: spi3-2cs
  8624. +Info: Enables spi3 with two chip select (CS) lines and associated spidev
  8625. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8626. + creation are configurable. BCM2711 only.
  8627. +Load: dtoverlay=spi3-2cs,<param>=<val>
  8628. +Params: cs0_pin GPIO pin for CS0 (default 0 - BCM SPI3_CE0).
  8629. + cs1_pin GPIO pin for CS1 (default 24 - BCM SPI3_CE1).
  8630. + cs0_spidev Set to 'off' to prevent the creation of a
  8631. + userspace device node /dev/spidev3.0 (default
  8632. + is 'on' or enabled).
  8633. + cs1_spidev Set to 'off' to prevent the creation of a
  8634. + userspace device node /dev/spidev3.1 (default
  8635. + is 'on' or enabled).
  8636. +
  8637. +
  8638. +Name: spi4-1cs
  8639. +Info: Enables spi4 with a single chip select (CS) line and associated spidev
  8640. + dev node. The gpio pin number for the CS line and spidev device node
  8641. + creation are configurable. BCM2711 only.
  8642. +Load: dtoverlay=spi4-1cs,<param>=<val>
  8643. +Params: cs0_pin GPIO pin for CS0 (default 4 - BCM SPI4_CE0).
  8644. + cs0_spidev Set to 'off' to prevent the creation of a
  8645. + userspace device node /dev/spidev4.0 (default
  8646. + is 'on' or enabled).
  8647. +
  8648. +
  8649. +Name: spi4-2cs
  8650. +Info: Enables spi4 with two chip select (CS) lines and associated spidev
  8651. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8652. + creation are configurable. BCM2711 only.
  8653. +Load: dtoverlay=spi4-2cs,<param>=<val>
  8654. +Params: cs0_pin GPIO pin for CS0 (default 4 - BCM SPI4_CE0).
  8655. + cs1_pin GPIO pin for CS1 (default 25 - BCM SPI4_CE1).
  8656. + cs0_spidev Set to 'off' to prevent the creation of a
  8657. + userspace device node /dev/spidev4.0 (default
  8658. + is 'on' or enabled).
  8659. + cs1_spidev Set to 'off' to prevent the creation of a
  8660. + userspace device node /dev/spidev4.1 (default
  8661. + is 'on' or enabled).
  8662. +
  8663. +
  8664. +Name: spi5-1cs
  8665. +Info: Enables spi5 with a single chip select (CS) line and associated spidev
  8666. + dev node. The gpio pin numbers for the CS lines and spidev device node
  8667. + creation are configurable. BCM2711 only.
  8668. +Load: dtoverlay=spi5-1cs,<param>=<val>
  8669. +Params: cs0_pin GPIO pin for CS0 (default 12 - BCM SPI5_CE0).
  8670. + cs0_spidev Set to 'off' to prevent the creation of a
  8671. + userspace device node /dev/spidev5.0 (default
  8672. + is 'on' or enabled).
  8673. +
  8674. +
  8675. +Name: spi5-2cs
  8676. +Info: Enables spi5 with two chip select (CS) lines and associated spidev
  8677. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8678. + creation are configurable. BCM2711 only.
  8679. +Load: dtoverlay=spi5-2cs,<param>=<val>
  8680. +Params: cs0_pin GPIO pin for CS0 (default 12 - BCM SPI5_CE0).
  8681. + cs1_pin GPIO pin for CS1 (default 26 - BCM SPI5_CE1).
  8682. + cs0_spidev Set to 'off' to prevent the creation of a
  8683. + userspace device node /dev/spidev5.0 (default
  8684. + is 'on' or enabled).
  8685. + cs1_spidev Set to 'off' to prevent the creation of a
  8686. + userspace device node /dev/spidev5.1 (default
  8687. + is 'on' or enabled).
  8688. +
  8689. +
  8690. +Name: spi6-1cs
  8691. +Info: Enables spi6 with a single chip select (CS) line and associated spidev
  8692. + dev node. The gpio pin number for the CS line and spidev device node
  8693. + creation are configurable. BCM2711 only.
  8694. +Load: dtoverlay=spi6-1cs,<param>=<val>
  8695. +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI6_CE0).
  8696. + cs0_spidev Set to 'off' to prevent the creation of a
  8697. + userspace device node /dev/spidev6.0 (default
  8698. + is 'on' or enabled).
  8699. +
  8700. +
  8701. +Name: spi6-2cs
  8702. +Info: Enables spi6 with two chip select (CS) lines and associated spidev
  8703. + dev nodes. The gpio pin numbers for the CS lines and spidev device node
  8704. + creation are configurable. BCM2711 only.
  8705. +Load: dtoverlay=spi6-2cs,<param>=<val>
  8706. +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI6_CE0).
  8707. + cs1_pin GPIO pin for CS1 (default 27 - BCM SPI6_CE1).
  8708. + cs0_spidev Set to 'off' to prevent the creation of a
  8709. + userspace device node /dev/spidev6.0 (default
  8710. + is 'on' or enabled).
  8711. + cs1_spidev Set to 'off' to prevent the creation of a
  8712. + userspace device node /dev/spidev6.1 (default
  8713. + is 'on' or enabled).
  8714. +
  8715. +
  8716. +Name: ssd1306
  8717. +Info: Overlay for activation of SSD1306 over I2C OLED display framebuffer.
  8718. +Load: dtoverlay=ssd1306,<param>=<val>
  8719. +Params: address Location in display memory of first character.
  8720. + (default=0)
  8721. + width Width of display. (default=128)
  8722. + height Height of display. (default=64)
  8723. + offset virtual channel a. (default=0)
  8724. + normal Has no effect on displays tested. (default=not
  8725. + set)
  8726. + sequential Set this if every other scan line is missing.
  8727. + (default=not set)
  8728. + remapped Set this if display is garbled. (default=not
  8729. + set)
  8730. + inverted Set this if display is inverted and mirrored.
  8731. + (default=not set)
  8732. +
  8733. + Examples:
  8734. + Typical usage for 128x64 display: dtoverlay=ssd1306,inverted
  8735. +
  8736. + Typical usage for 128x32 display: dtoverlay=ssd1306,inverted,sequential
  8737. +
  8738. + i2c_baudrate=400000 will speed up the display.
  8739. +
  8740. + i2c_baudrate=1000000 seems to work even though it's not officially
  8741. + supported by the hardware, and is faster still.
  8742. +
  8743. + For more information refer to the device datasheet at:
  8744. + https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
  8745. +
  8746. +
  8747. +Name: ssd1306-spi
  8748. +Info: Overlay for SSD1306 OLED via SPI using fbtft staging driver.
  8749. +Load: dtoverlay=ssd1306-spi,<param>=<val>
  8750. +Params: speed SPI bus speed (default 10000000)
  8751. + rotate Display rotation (0, 90, 180 or 270; default 0)
  8752. + fps Delay between frame updates (default 25)
  8753. + debug Debug output level (0-7; default 0)
  8754. + dc_pin GPIO pin for D/C (default 24)
  8755. + reset_pin GPIO pin for RESET (default 25)
  8756. + height Display height (32 or 64; default 64)
  8757. +
  8758. +
  8759. +Name: ssd1331-spi
  8760. +Info: Overlay for SSD1331 OLED via SPI using fbtft staging driver.
  8761. +Load: dtoverlay=ssd1331-spi,<param>=<val>
  8762. +Params: speed SPI bus speed (default 4500000)
  8763. + rotate Display rotation (0, 90, 180 or 270; default 0)
  8764. + fps Delay between frame updates (default 25)
  8765. + debug Debug output level (0-7; default 0)
  8766. + dc_pin GPIO pin for D/C (default 24)
  8767. + reset_pin GPIO pin for RESET (default 25)
  8768. +
  8769. +
  8770. +Name: ssd1351-spi
  8771. +Info: Overlay for SSD1351 OLED via SPI using fbtft staging driver.
  8772. +Load: dtoverlay=ssd1351-spi,<param>=<val>
  8773. +Params: speed SPI bus speed (default 4500000)
  8774. + rotate Display rotation (0, 90, 180 or 270; default 0)
  8775. + fps Delay between frame updates (default 25)
  8776. + debug Debug output level (0-7; default 0)
  8777. + dc_pin GPIO pin for D/C (default 24)
  8778. + reset_pin GPIO pin for RESET (default 25)
  8779. +
  8780. +
  8781. +Name: superaudioboard
  8782. +Info: Configures the SuperAudioBoard sound card
  8783. +Load: dtoverlay=superaudioboard,<param>=<val>
  8784. +Params: gpiopin GPIO pin for codec reset
  8785. +
  8786. +
  8787. +Name: sx150x
  8788. +Info: Configures the Semtech SX150X I2C GPIO expanders.
  8789. +Load: dtoverlay=sx150x,<param>=<val>
  8790. +Params: sx150<x>-<n>-<m> Enables SX150X device on I2C#<n> with slave
  8791. + address <m>. <x> may be 1-9. <n> may be 0 or 1.
  8792. + Permissible values of <m> (which is denoted in
  8793. + hex) depend on the device variant. For SX1501,
  8794. + SX1502, SX1504 and SX1505, <m> may be 20 or 21.
  8795. + For SX1503 and SX1506, <m> may be 20. For
  8796. + SX1507 and SX1509, <m> may be 3E, 3F, 70 or 71.
  8797. + For SX1508, <m> may be 20, 21, 22 or 23.
  8798. +
  8799. + sx150<x>-<n>-<m>-int-gpio
  8800. + Integer, enables interrupts on SX150X device on
  8801. + I2C#<n> with slave address <m>, specifies
  8802. + the GPIO pin to which NINT output of SX150X is
  8803. + connected.
  8804. +
  8805. +
  8806. +Name: tc358743
  8807. +Info: Toshiba TC358743 HDMI to CSI-2 bridge chip.
  8808. + Uses Unicam 1, which is the standard camera connector on most Pi
  8809. + variants.
  8810. +Load: dtoverlay=tc358743,<param>=<val>
  8811. +Params: 4lane Use 4 lanes (only applicable to Compute Modules
  8812. + CAM1 connector).
  8813. +
  8814. + link-frequency Set the link frequency. Only values of 297000000
  8815. + (574Mbit/s) and 486000000 (972Mbit/s - default)
  8816. + are supported by the driver.
  8817. +
  8818. +
  8819. +Name: tc358743-audio
  8820. +Info: Used in combination with the tc358743-fast overlay to route the audio
  8821. + from the TC358743 over I2S to the Pi.
  8822. + Wiring is LRCK/WFS to GPIO 19, BCK/SCK to GPIO 18, and DATA/SD to GPIO
  8823. + 20.
  8824. +Load: dtoverlay=tc358743-audio,<param>=<val>
  8825. +Params: card-name Override the default, "tc358743", card name.
  8826. +
  8827. +
  8828. +Name: tinylcd35
  8829. +Info: 3.5" Color TFT Display by www.tinylcd.com
  8830. + Options: Touch, RTC, keypad
  8831. +Load: dtoverlay=tinylcd35,<param>=<val>
  8832. +Params: speed Display SPI bus speed
  8833. +
  8834. + rotate Display rotation {0,90,180,270}
  8835. +
  8836. + fps Delay between frame updates
  8837. +
  8838. + debug Debug output level {0-7}
  8839. +
  8840. + touch Enable touch panel
  8841. +
  8842. + touchgpio Touch controller IRQ GPIO
  8843. +
  8844. + xohms Touchpanel: Resistance of X-plate in ohms
  8845. +
  8846. + rtc-pcf PCF8563 Real Time Clock
  8847. +
  8848. + rtc-ds DS1307 Real Time Clock
  8849. +
  8850. + keypad Enable keypad
  8851. +
  8852. + Examples:
  8853. + Display with touchpanel, PCF8563 RTC and keypad:
  8854. + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
  8855. + Old touch display:
  8856. + dtoverlay=tinylcd35,touch,touchgpio=3
  8857. +
  8858. +
  8859. +Name: tpm-slb9670
  8860. +Info: Enables support for Infineon SLB9670 Trusted Platform Module add-on
  8861. + boards, which can be used as a secure key storage and hwrng,
  8862. + available as "Iridium SLB9670" by Infineon and "LetsTrust TPM" by pi3g.
  8863. +Load: dtoverlay=tpm-slb9670
  8864. +Params: <None>
  8865. +
  8866. +
  8867. +Name: uart0
  8868. +Info: Change the pin usage of uart0
  8869. +Load: dtoverlay=uart0,<param>=<val>
  8870. +Params: txd0_pin GPIO pin for TXD0 (14, 32 or 36 - default 14)
  8871. +
  8872. + rxd0_pin GPIO pin for RXD0 (15, 33 or 37 - default 15)
  8873. +
  8874. + pin_func Alternative pin function - 4(Alt0) for 14&15,
  8875. + 7(Alt3) for 32&33, 6(Alt2) for 36&37
  8876. +
  8877. +
  8878. +Name: uart1
  8879. +Info: Change the pin usage of uart1
  8880. +Load: dtoverlay=uart1,<param>=<val>
  8881. +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
  8882. +
  8883. + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
  8884. +
  8885. +
  8886. +Name: uart2
  8887. +Info: Enable uart 2 on GPIOs 0-3. BCM2711 only.
  8888. +Load: dtoverlay=uart2,<param>
  8889. +Params: ctsrts Enable CTS/RTS on GPIOs 2-3 (default off)
  8890. +
  8891. +
  8892. +Name: uart3
  8893. +Info: Enable uart 3 on GPIOs 4-7. BCM2711 only.
  8894. +Load: dtoverlay=uart3,<param>
  8895. +Params: ctsrts Enable CTS/RTS on GPIOs 6-7 (default off)
  8896. +
  8897. +
  8898. +Name: uart4
  8899. +Info: Enable uart 4 on GPIOs 8-11. BCM2711 only.
  8900. +Load: dtoverlay=uart4,<param>
  8901. +Params: ctsrts Enable CTS/RTS on GPIOs 10-11 (default off)
  8902. +
  8903. +
  8904. +Name: uart5
  8905. +Info: Enable uart 5 on GPIOs 12-15. BCM2711 only.
  8906. +Load: dtoverlay=uart5,<param>
  8907. +Params: ctsrts Enable CTS/RTS on GPIOs 14-15 (default off)
  8908. +
  8909. +
  8910. +Name: udrc
  8911. +Info: Configures the NW Digital Radio UDRC Hat
  8912. +Load: dtoverlay=udrc,<param>=<val>
  8913. +Params: alsaname Name of the ALSA audio device (default "udrc")
  8914. +
  8915. +
  8916. +Name: ugreen-dabboard
  8917. +Info: Configures the ugreen-dabboard I2S overlay
  8918. + This is a simple overlay based on the simple-audio-card and the dmic
  8919. + codec. It has the speciality that it is configured to use the codec
  8920. + as a master I2S device. It works for example with the Si468x DAB
  8921. + receiver on the uGreen DABBoard.
  8922. +Load: dtoverlay=ugreen-dabboard,<param>=<val>
  8923. +Params: card-name Override the default, "dabboard", card name.
  8924. +
  8925. +
  8926. +Name: upstream
  8927. +Info: Allow usage of downstream .dtb with upstream kernel. Comprises the
  8928. + vc4-kms-v3d and dwc2 overlays.
  8929. +Load: dtoverlay=upstream
  8930. +Params: <None>
  8931. +
  8932. +
  8933. +Name: upstream-aux-interrupt
  8934. +Info: This overlay has been deprecated and removed because it is no longer
  8935. + necessary.
  8936. +Load: <Deprecated>
  8937. +
  8938. +
  8939. +Name: upstream-pi4
  8940. +Info: Allow usage of downstream .dtb with upstream kernel on Pi 4. Comprises
  8941. + the vc4-kms-v3d-pi4 and dwc2 overlays.
  8942. +Load: dtoverlay=upstream-pi4
  8943. +Params: <None>
  8944. +
  8945. +
  8946. +Name: vc4-fkms-v3d
  8947. +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
  8948. + display stack.
  8949. +Load: dtoverlay=vc4-fkms-v3d,<param>
  8950. +Params: cma-512 CMA is 512MB (needs 1GB)
  8951. + cma-448 CMA is 448MB (needs 1GB)
  8952. + cma-384 CMA is 384MB (needs 1GB)
  8953. + cma-320 CMA is 320MB (needs 1GB)
  8954. + cma-256 CMA is 256MB (needs 1GB)
  8955. + cma-192 CMA is 192MB (needs 1GB)
  8956. + cma-128 CMA is 128MB
  8957. + cma-96 CMA is 96MB
  8958. + cma-64 CMA is 64MB
  8959. + cma-size CMA size in bytes, 4MB aligned
  8960. + cma-default Use upstream's default value
  8961. +
  8962. +
  8963. +Name: vc4-fkms-v3d-pi4
  8964. +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
  8965. + display stack.
  8966. +Load: dtoverlay=vc4-fkms-v3d-pi4,<param>
  8967. +Params: cma-512 CMA is 512MB (needs 1GB)
  8968. + cma-448 CMA is 448MB (needs 1GB)
  8969. + cma-384 CMA is 384MB (needs 1GB)
  8970. + cma-320 CMA is 320MB (needs 1GB)
  8971. + cma-256 CMA is 256MB (needs 1GB)
  8972. + cma-192 CMA is 192MB (needs 1GB)
  8973. + cma-128 CMA is 128MB
  8974. + cma-96 CMA is 96MB
  8975. + cma-64 CMA is 64MB
  8976. + cma-size CMA size in bytes, 4MB aligned
  8977. + cma-default Use upstream's default value
  8978. +
  8979. +
  8980. +Name: vc4-kms-dpi-at056tn53v1
  8981. +Info: Enable an Innolux 5.6in VGA TFT connected to DPI interface under KMS.
  8982. + Requires vc4-kms-v3d to be loaded.
  8983. +Load: dtoverlay=vc4-kms-dpi-at056tn53v1
  8984. +Params: <None>
  8985. +
  8986. +
  8987. +Name: vc4-kms-dsi-7inch
  8988. +Info: Enable the Raspberry Pi DSI 7" screen.
  8989. + Includes the edt-ft5406 for the touchscreen element.
  8990. + Requires vc4-kms-v3d to be loaded.
  8991. +Load: dtoverlay=vc4-kms-dsi-7inch,<param>=<val>
  8992. +Params: sizex Touchscreen size x (default 800)
  8993. + sizey Touchscreen size y (default 480)
  8994. + invx Touchscreen inverted x axis
  8995. + invy Touchscreen inverted y axis
  8996. + swapxy Touchscreen swapped x y axis
  8997. + disable_touch Disables the touch screen overlay driver
  8998. +
  8999. +
  9000. +Name: vc4-kms-dsi-lt070me05000
  9001. +Info: Enable a JDI LT070ME05000 DSI display on DSI1.
  9002. + Note that this is a 4 lane DSI device, so it will only work on a Compute
  9003. + Module.
  9004. + Requires vc4-kms-v3d to be loaded.
  9005. +Load: dtoverlay=vc4-kms-dsi-lt070me05000,<param>
  9006. +Params: reset GPIO for the reset signal (default 17)
  9007. + enable GPIO for the enable signal (default 4)
  9008. + dcdc-en GPIO for the DC-DC converter enable (default 5)
  9009. +
  9010. +
  9011. +Name: vc4-kms-dsi-lt070me05000-v2
  9012. +Info: Enable a JDI LT070ME05000 DSI display on DSI1 using Harlab's V2
  9013. + interface board.
  9014. + Note that this is a 4 lane DSI device, so it will only work on a Compute
  9015. + Module.
  9016. + Requires vc4-kms-v3d to be loaded.
  9017. +Load: dtoverlay=vc4-kms-dsi-lt070me05000-v2
  9018. +Params: <None>
  9019. +
  9020. +
  9021. +Name: vc4-kms-kippah-7inch
  9022. +Info: Enable the Adafruit DPI Kippah with the 7" Ontat panel attached.
  9023. + Requires vc4-kms-v3d to be loaded.
  9024. +Load: dtoverlay=vc4-kms-kippah-7inch
  9025. +Params: <None>
  9026. +
  9027. +
  9028. +Name: vc4-kms-v3d
  9029. +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver.
  9030. +Load: dtoverlay=vc4-kms-v3d,<param>
  9031. +Params: cma-512 CMA is 512MB (needs 1GB)
  9032. + cma-448 CMA is 448MB (needs 1GB)
  9033. + cma-384 CMA is 384MB (needs 1GB)
  9034. + cma-320 CMA is 320MB (needs 1GB)
  9035. + cma-256 CMA is 256MB (needs 1GB)
  9036. + cma-192 CMA is 192MB (needs 1GB)
  9037. + cma-128 CMA is 128MB
  9038. + cma-96 CMA is 96MB
  9039. + cma-64 CMA is 64MB
  9040. + cma-size CMA size in bytes, 4MB aligned
  9041. + cma-default Use upstream's default value
  9042. + audio Enable or disable audio over HDMI (default "on")
  9043. + noaudio Disable all HDMI audio (default "off")
  9044. + nocomposite Disable the composite video output (default
  9045. + "off")
  9046. +
  9047. +
  9048. +Name: vc4-kms-v3d-pi4
  9049. +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver for Pi4.
  9050. +Load: dtoverlay=vc4-kms-v3d-pi4,<param>
  9051. +Params: cma-512 CMA is 512MB
  9052. + cma-448 CMA is 448MB
  9053. + cma-384 CMA is 384MB
  9054. + cma-320 CMA is 320MB
  9055. + cma-256 CMA is 256MB
  9056. + cma-192 CMA is 192MB
  9057. + cma-128 CMA is 128MB
  9058. + cma-96 CMA is 96MB
  9059. + cma-64 CMA is 64MB
  9060. + cma-size CMA size in bytes, 4MB aligned
  9061. + cma-default Use upstream's default value
  9062. + audio Enable or disable audio over HDMI0 (default
  9063. + "on")
  9064. + audio1 Enable or disable audio over HDMI1 (default
  9065. + "on")
  9066. + noaudio Disable all HDMI audio (default "off")
  9067. + composite Enable the composite output (disables all other
  9068. + outputs)
  9069. +
  9070. +
  9071. +Name: vc4-kms-vga666
  9072. +Info: Enable the VGA666 (resistor ladder ADC) for the vc4-kms-v3d driver.
  9073. + Requires vc4-kms-v3d to be loaded.
  9074. +Load: dtoverlay=vc4-kms-vga666,<param>
  9075. +Params: ddc Enables GPIOs 0&1 as the I2C to read the EDID
  9076. + from the display. NB These are NOT 5V tolerant
  9077. + GPIOs, therefore level shifters are required.
  9078. +
  9079. +
  9080. +Name: vga666
  9081. +Info: Overlay for the Fen Logic VGA666 board
  9082. + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds
  9083. + after the kernel has started.
  9084. + NOT for use with vc4-kms-v3d.
  9085. +Load: dtoverlay=vga666
  9086. +Params: <None>
  9087. +
  9088. +
  9089. +Name: w1-gpio
  9090. +Info: Configures the w1-gpio Onewire interface module.
  9091. + Use this overlay if you *don't* need a GPIO to drive an external pullup.
  9092. +Load: dtoverlay=w1-gpio,<param>=<val>
  9093. +Params: gpiopin GPIO for I/O (default "4")
  9094. + pullup Now enabled by default (ignored)
  9095. +
  9096. +
  9097. +Name: w1-gpio-pullup
  9098. +Info: Configures the w1-gpio Onewire interface module.
  9099. + Use this overlay if you *do* need a GPIO to drive an external pullup.
  9100. +Load: dtoverlay=w1-gpio-pullup,<param>=<val>
  9101. +Params: gpiopin GPIO for I/O (default "4")
  9102. + extpullup GPIO for external pullup (default "5")
  9103. + pullup Now enabled by default (ignored)
  9104. +
  9105. +
  9106. +Name: w5500
  9107. +Info: Overlay for the Wiznet W5500 Ethernet Controller on SPI0
  9108. +Load: dtoverlay=w5500,<param>=<val>
  9109. +Params: int_pin GPIO used for INT (default 25)
  9110. +
  9111. + speed SPI bus speed (default 30000000)
  9112. +
  9113. + cs SPI bus Chip Select (default 0)
  9114. +
  9115. +
  9116. +Name: wittypi
  9117. +Info: Configures the wittypi RTC module.
  9118. +Load: dtoverlay=wittypi,<param>=<val>
  9119. +Params: led_gpio GPIO for LED (default "17")
  9120. + led_trigger Choose which activity the LED tracks (default
  9121. + "default-on")
  9122. +
  9123. +
  9124. +Name: wm8960-soundcard
  9125. +Info: Overlay for the Waveshare wm8960 soundcard
  9126. +Load: dtoverlay=wm8960-soundcard,<param>=<val>
  9127. +Params: alsaname Changes the card name in ALSA
  9128. + compatible Changes the codec compatibility
  9129. +
  9130. +
  9131. +Troubleshooting
  9132. +===============
  9133. +
  9134. +If you are experiencing problems that you think are DT-related, enable DT
  9135. +diagnostic output by adding this to /boot/config.txt:
  9136. +
  9137. + dtdebug=on
  9138. +
  9139. +and rebooting. Then run:
  9140. +
  9141. + sudo vcdbg log msg
  9142. +
  9143. +and look for relevant messages.
  9144. +
  9145. +Further reading
  9146. +===============
  9147. +
  9148. +This is only meant to be a quick introduction to the subject of Device Tree on
  9149. +Raspberry Pi. There is a more complete explanation here:
  9150. +
  9151. +http://www.raspberrypi.org/documentation/configuration/device-tree.md
  9152. diff --git a/arch/arm/boot/dts/overlays/act-led-overlay.dts b/arch/arm/boot/dts/overlays/act-led-overlay.dts
  9153. new file mode 100644
  9154. index 000000000000..2f4bbb407f89
  9155. --- /dev/null
  9156. +++ b/arch/arm/boot/dts/overlays/act-led-overlay.dts
  9157. @@ -0,0 +1,27 @@
  9158. +/dts-v1/;
  9159. +/plugin/;
  9160. +
  9161. +/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
  9162. + from the VPU. There is a special driver for this with a separate DT node,
  9163. + which has the unfortunate consequence of breaking the act_led_gpio and
  9164. + act_led_activelow dtparams.
  9165. +
  9166. + This overlay changes the GPIO controller back to the standard one and
  9167. + restores the dtparams.
  9168. +*/
  9169. +
  9170. +/{
  9171. + compatible = "brcm,bcm2835";
  9172. +
  9173. + fragment@0 {
  9174. + target = <&act_led>;
  9175. + frag0: __overlay__ {
  9176. + gpios = <&gpio 0 0>;
  9177. + };
  9178. + };
  9179. +
  9180. + __overrides__ {
  9181. + gpio = <&frag0>,"gpios:4";
  9182. + activelow = <&frag0>,"gpios:8";
  9183. + };
  9184. +};
  9185. diff --git a/arch/arm/boot/dts/overlays/adafruit18-overlay.dts b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
  9186. new file mode 100644
  9187. index 000000000000..e1ce94a8cd3e
  9188. --- /dev/null
  9189. +++ b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
  9190. @@ -0,0 +1,55 @@
  9191. +/*
  9192. + * Device Tree overlay for Adafruit 1.8" TFT LCD with ST7735R chip 160x128
  9193. + */
  9194. +
  9195. +/dts-v1/;
  9196. +/plugin/;
  9197. +
  9198. +/ {
  9199. + compatible = "brcm,bcm2835";
  9200. +
  9201. + fragment@0 {
  9202. + target = <&spidev0>;
  9203. + __overlay__ {
  9204. + status = "disabled";
  9205. + };
  9206. + };
  9207. +
  9208. + fragment@1 {
  9209. + target = <&spi0>;
  9210. + __overlay__ {
  9211. + /* needed to avoid dtc warning */
  9212. + #address-cells = <1>;
  9213. + #size-cells = <0>;
  9214. + status = "okay";
  9215. +
  9216. + af18: adafruit18@0 {
  9217. + compatible = "fbtft,adafruit18";
  9218. + reg = <0>;
  9219. + pinctrl-names = "default";
  9220. + spi-max-frequency = <40000000>;
  9221. + rotate = <90>;
  9222. + buswidth = <8>;
  9223. + fps = <50>;
  9224. + height = <160>;
  9225. + width = <128>;
  9226. + reset-gpios = <&gpio 25 1>;
  9227. + dc-gpios = <&gpio 24 0>;
  9228. + led-gpios = <&gpio 18 0>;
  9229. + debug = <0>;
  9230. + };
  9231. + };
  9232. + };
  9233. +
  9234. + __overrides__ {
  9235. + green = <&af18>, "compatible=fbtft,adafruit18_green";
  9236. + speed = <&af18>,"spi-max-frequency:0";
  9237. + rotate = <&af18>,"rotate:0";
  9238. + fps = <&af18>,"fps:0";
  9239. + bgr = <&af18>,"bgr?";
  9240. + debug = <&af18>,"debug:0";
  9241. + dc_pin = <&af18>,"dc-gpios:4";
  9242. + reset_pin = <&af18>,"reset-gpios:4";
  9243. + led_pin = <&af18>,"led-gpios:4";
  9244. + };
  9245. +};
  9246. diff --git a/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
  9247. new file mode 100644
  9248. index 000000000000..298488e19156
  9249. --- /dev/null
  9250. +++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
  9251. @@ -0,0 +1,40 @@
  9252. +// Definitions for ADAU1977 ADC
  9253. +/dts-v1/;
  9254. +/plugin/;
  9255. +
  9256. +/ {
  9257. + compatible = "brcm,bcm2835";
  9258. +
  9259. + fragment@0 {
  9260. + target = <&i2c>;
  9261. +
  9262. + __overlay__ {
  9263. + #address-cells = <1>;
  9264. + #size-cells = <0>;
  9265. + status = "okay";
  9266. +
  9267. + adau1977: codec@11 {
  9268. + compatible = "adi,adau1977";
  9269. + reg = <0x11>;
  9270. + reset-gpios = <&gpio 5 0>;
  9271. + AVDD-supply = <&vdd_3v3_reg>;
  9272. + };
  9273. + };
  9274. + };
  9275. +
  9276. + fragment@1 {
  9277. + target = <&i2s>;
  9278. + __overlay__ {
  9279. + status = "okay";
  9280. + };
  9281. + };
  9282. +
  9283. + fragment@2 {
  9284. + target = <&sound>;
  9285. + __overlay__ {
  9286. + compatible = "adi,adau1977-adc";
  9287. + i2s-controller = <&i2s>;
  9288. + status = "okay";
  9289. + };
  9290. + };
  9291. +};
  9292. diff --git a/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
  9293. new file mode 100644
  9294. index 000000000000..5fed769d2526
  9295. --- /dev/null
  9296. +++ b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
  9297. @@ -0,0 +1,52 @@
  9298. +/dts-v1/;
  9299. +/plugin/;
  9300. +
  9301. +/ {
  9302. + compatible = "brcm,bcm2835";
  9303. +
  9304. + fragment@0 {
  9305. + target = <&i2s>;
  9306. + __overlay__ {
  9307. + status = "okay";
  9308. + };
  9309. + };
  9310. +
  9311. + fragment@1 {
  9312. + target-path = "/";
  9313. + __overlay__ {
  9314. + adau7002_codec: adau7002-codec {
  9315. + #sound-dai-cells = <0>;
  9316. + compatible = "adi,adau7002";
  9317. +/* IOVDD-supply = <&supply>;*/
  9318. + status = "okay";
  9319. + };
  9320. + };
  9321. + };
  9322. +
  9323. + fragment@2 {
  9324. + target = <&sound>;
  9325. + sound_overlay: __overlay__ {
  9326. + compatible = "simple-audio-card";
  9327. + simple-audio-card,format = "i2s";
  9328. + simple-audio-card,name = "adau7002";
  9329. + simple-audio-card,bitclock-slave = <&dailink0_slave>;
  9330. + simple-audio-card,frame-slave = <&dailink0_slave>;
  9331. + simple-audio-card,widgets =
  9332. + "Microphone", "Microphone Jack";
  9333. + simple-audio-card,routing =
  9334. + "PDM_DAT", "Microphone Jack";
  9335. + status = "okay";
  9336. + simple-audio-card,cpu {
  9337. + sound-dai = <&i2s>;
  9338. + };
  9339. + dailink0_slave: simple-audio-card,codec {
  9340. + sound-dai = <&adau7002_codec>;
  9341. + };
  9342. + };
  9343. + };
  9344. +
  9345. +
  9346. + __overrides__ {
  9347. + card-name = <&sound_overlay>,"simple-audio-card,name";
  9348. + };
  9349. +};
  9350. diff --git a/arch/arm/boot/dts/overlays/ads1015-overlay.dts b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
  9351. new file mode 100644
  9352. index 000000000000..dc1764613a8b
  9353. --- /dev/null
  9354. +++ b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
  9355. @@ -0,0 +1,98 @@
  9356. +/*
  9357. + * 2016 - Erik Sejr
  9358. + */
  9359. +/dts-v1/;
  9360. +/plugin/;
  9361. +
  9362. +/ {
  9363. + compatible = "brcm,bcm2835";
  9364. + /* ----------- ADS1015 ------------ */
  9365. + fragment@0 {
  9366. + target = <&i2c_arm>;
  9367. + __overlay__ {
  9368. + #address-cells = <1>;
  9369. + #size-cells = <0>;
  9370. + status = "okay";
  9371. + ads1015: ads1015@48 {
  9372. + compatible = "ti,ads1015";
  9373. + status = "okay";
  9374. + #address-cells = <1>;
  9375. + #size-cells = <0>;
  9376. + reg = <0x48>;
  9377. + };
  9378. + };
  9379. + };
  9380. +
  9381. + fragment@1 {
  9382. + target = <&ads1015>;
  9383. + __overlay__ {
  9384. + #address-cells = <1>;
  9385. + #size-cells = <0>;
  9386. + channel_a: channel_a {
  9387. + reg = <4>;
  9388. + ti,gain = <2>;
  9389. + ti,datarate = <4>;
  9390. + };
  9391. + };
  9392. + };
  9393. +
  9394. + fragment@2 {
  9395. + target = <&ads1015>;
  9396. + __dormant__ {
  9397. + #address-cells = <1>;
  9398. + #size-cells = <0>;
  9399. + channel_b: channel_b {
  9400. + reg = <5>;
  9401. + ti,gain = <2>;
  9402. + ti,datarate = <4>;
  9403. + };
  9404. + };
  9405. + };
  9406. +
  9407. + fragment@3 {
  9408. + target = <&ads1015>;
  9409. + __dormant__ {
  9410. + #address-cells = <1>;
  9411. + #size-cells = <0>;
  9412. + channel_c: channel_c {
  9413. + reg = <6>;
  9414. + ti,gain = <2>;
  9415. + ti,datarate = <4>;
  9416. + };
  9417. + };
  9418. + };
  9419. +
  9420. + fragment@4 {
  9421. + target = <&ads1015>;
  9422. + __dormant__ {
  9423. + #address-cells = <1>;
  9424. + #size-cells = <0>;
  9425. + channel_d: channel_d {
  9426. + reg = <7>;
  9427. + ti,gain = <2>;
  9428. + ti,datarate = <4>;
  9429. + };
  9430. + };
  9431. + };
  9432. +
  9433. + __overrides__ {
  9434. + addr = <&ads1015>,"reg:0";
  9435. + cha_enable = <0>,"=1";
  9436. + cha_cfg = <&channel_a>,"reg:0";
  9437. + cha_gain = <&channel_a>,"ti,gain:0";
  9438. + cha_datarate = <&channel_a>,"ti,datarate:0";
  9439. + chb_enable = <0>,"=2";
  9440. + chb_cfg = <&channel_b>,"reg:0";
  9441. + chb_gain = <&channel_b>,"ti,gain:0";
  9442. + chb_datarate = <&channel_b>,"ti,datarate:0";
  9443. + chc_enable = <0>,"=3";
  9444. + chc_cfg = <&channel_c>,"reg:0";
  9445. + chc_gain = <&channel_c>,"ti,gain:0";
  9446. + chc_datarate = <&channel_c>,"ti,datarate:0";
  9447. + chd_enable = <0>,"=4";
  9448. + chd_cfg = <&channel_d>,"reg:0";
  9449. + chd_gain = <&channel_d>,"ti,gain:0";
  9450. + chd_datarate = <&channel_d>,"ti,datarate:0";
  9451. + };
  9452. +
  9453. +};
  9454. diff --git a/arch/arm/boot/dts/overlays/ads1115-overlay.dts b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
  9455. new file mode 100644
  9456. index 000000000000..e44ced704ee2
  9457. --- /dev/null
  9458. +++ b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
  9459. @@ -0,0 +1,103 @@
  9460. +/*
  9461. + * TI ADS1115 multi-channel ADC overlay
  9462. + */
  9463. +
  9464. +/dts-v1/;
  9465. +/plugin/;
  9466. +
  9467. +/ {
  9468. + compatible = "brcm,bcm2835";
  9469. +
  9470. + fragment@0 {
  9471. + target = <&i2c_arm>;
  9472. + __overlay__ {
  9473. + #address-cells = <1>;
  9474. + #size-cells = <0>;
  9475. + status = "okay";
  9476. +
  9477. + ads1115: ads1115@48 {
  9478. + compatible = "ti,ads1115";
  9479. + status = "okay";
  9480. + #address-cells = <1>;
  9481. + #size-cells = <0>;
  9482. + reg = <0x48>;
  9483. + };
  9484. + };
  9485. + };
  9486. +
  9487. + fragment@1 {
  9488. + target = <&ads1115>;
  9489. + __dormant__ {
  9490. + #address-cells = <1>;
  9491. + #size-cells = <0>;
  9492. +
  9493. + channel_a: channel_a {
  9494. + reg = <4>;
  9495. + ti,gain = <1>;
  9496. + ti,datarate = <7>;
  9497. + };
  9498. + };
  9499. + };
  9500. +
  9501. + fragment@2 {
  9502. + target = <&ads1115>;
  9503. + __dormant__ {
  9504. + #address-cells = <1>;
  9505. + #size-cells = <0>;
  9506. +
  9507. + channel_b: channel_b {
  9508. + reg = <5>;
  9509. + ti,gain = <1>;
  9510. + ti,datarate = <7>;
  9511. + };
  9512. + };
  9513. + };
  9514. +
  9515. + fragment@3 {
  9516. + target = <&ads1115>;
  9517. + __dormant__ {
  9518. + #address-cells = <1>;
  9519. + #size-cells = <0>;
  9520. +
  9521. + channel_c: channel_c {
  9522. + reg = <6>;
  9523. + ti,gain = <1>;
  9524. + ti,datarate = <7>;
  9525. + };
  9526. + };
  9527. + };
  9528. +
  9529. + fragment@4 {
  9530. + target = <&ads1115>;
  9531. + __dormant__ {
  9532. + #address-cells = <1>;
  9533. + #size-cells = <0>;
  9534. +
  9535. + channel_d: channel_d {
  9536. + reg = <7>;
  9537. + ti,gain = <1>;
  9538. + ti,datarate = <7>;
  9539. + };
  9540. + };
  9541. + };
  9542. +
  9543. + __overrides__ {
  9544. + addr = <&ads1115>,"reg:0";
  9545. + cha_enable = <0>,"=1";
  9546. + cha_cfg = <&channel_a>,"reg:0";
  9547. + cha_gain = <&channel_a>,"ti,gain:0";
  9548. + cha_datarate = <&channel_a>,"ti,datarate:0";
  9549. + chb_enable = <0>,"=2";
  9550. + chb_cfg = <&channel_b>,"reg:0";
  9551. + chb_gain = <&channel_b>,"ti,gain:0";
  9552. + chb_datarate = <&channel_b>,"ti,datarate:0";
  9553. + chc_enable = <0>,"=3";
  9554. + chc_cfg = <&channel_c>,"reg:0";
  9555. + chc_gain = <&channel_c>,"ti,gain:0";
  9556. + chc_datarate = <&channel_c>,"ti,datarate:0";
  9557. + chd_enable = <0>,"=4";
  9558. + chd_cfg = <&channel_d>,"reg:0";
  9559. + chd_gain = <&channel_d>,"ti,gain:0";
  9560. + chd_datarate = <&channel_d>,"ti,datarate:0";
  9561. + };
  9562. +};
  9563. diff --git a/arch/arm/boot/dts/overlays/ads7846-overlay.dts b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
  9564. new file mode 100644
  9565. index 000000000000..1c5c9b6bb6ff
  9566. --- /dev/null
  9567. +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
  9568. @@ -0,0 +1,89 @@
  9569. +/*
  9570. + * Generic Device Tree overlay for the ADS7846 touch controller
  9571. + *
  9572. + */
  9573. +
  9574. +/dts-v1/;
  9575. +/plugin/;
  9576. +
  9577. +/ {
  9578. + compatible = "brcm,bcm2835";
  9579. +
  9580. + fragment@0 {
  9581. + target = <&spi0>;
  9582. + __overlay__ {
  9583. + status = "okay";
  9584. + };
  9585. + };
  9586. +
  9587. + fragment@1 {
  9588. + target = <&spidev0>;
  9589. + __overlay__ {
  9590. + status = "disabled";
  9591. + };
  9592. + };
  9593. +
  9594. + fragment@2 {
  9595. + target = <&spidev1>;
  9596. + __overlay__ {
  9597. + status = "disabled";
  9598. + };
  9599. + };
  9600. +
  9601. + fragment@3 {
  9602. + target = <&gpio>;
  9603. + __overlay__ {
  9604. + ads7846_pins: ads7846_pins {
  9605. + brcm,pins = <255>; /* illegal default value */
  9606. + brcm,function = <0>; /* in */
  9607. + brcm,pull = <0>; /* none */
  9608. + };
  9609. + };
  9610. + };
  9611. +
  9612. + fragment@4 {
  9613. + target = <&spi0>;
  9614. + __overlay__ {
  9615. + /* needed to avoid dtc warning */
  9616. + #address-cells = <1>;
  9617. + #size-cells = <0>;
  9618. +
  9619. + ads7846: ads7846@1 {
  9620. + compatible = "ti,ads7846";
  9621. + reg = <1>;
  9622. + pinctrl-names = "default";
  9623. + pinctrl-0 = <&ads7846_pins>;
  9624. +
  9625. + spi-max-frequency = <2000000>;
  9626. + interrupts = <255 2>; /* high-to-low edge triggered */
  9627. + interrupt-parent = <&gpio>;
  9628. + pendown-gpio = <&gpio 255 0>;
  9629. +
  9630. + /* driver defaults */
  9631. + ti,x-min = /bits/ 16 <0>;
  9632. + ti,y-min = /bits/ 16 <0>;
  9633. + ti,x-max = /bits/ 16 <0x0FFF>;
  9634. + ti,y-max = /bits/ 16 <0x0FFF>;
  9635. + ti,pressure-min = /bits/ 16 <0>;
  9636. + ti,pressure-max = /bits/ 16 <0xFFFF>;
  9637. + ti,x-plate-ohms = /bits/ 16 <400>;
  9638. + };
  9639. + };
  9640. + };
  9641. + __overrides__ {
  9642. + cs = <&ads7846>,"reg:0";
  9643. + speed = <&ads7846>,"spi-max-frequency:0";
  9644. + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
  9645. + <&ads7846>,"interrupts:0",
  9646. + <&ads7846>,"pendown-gpio:4";
  9647. + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
  9648. + swapxy = <&ads7846>,"ti,swap-xy?";
  9649. + xmin = <&ads7846>,"ti,x-min;0";
  9650. + ymin = <&ads7846>,"ti,y-min;0";
  9651. + xmax = <&ads7846>,"ti,x-max;0";
  9652. + ymax = <&ads7846>,"ti,y-max;0";
  9653. + pmin = <&ads7846>,"ti,pressure-min;0";
  9654. + pmax = <&ads7846>,"ti,pressure-max;0";
  9655. + xohms = <&ads7846>,"ti,x-plate-ohms;0";
  9656. + };
  9657. +};
  9658. diff --git a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
  9659. new file mode 100644
  9660. index 000000000000..5d85dfd0595c
  9661. --- /dev/null
  9662. +++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
  9663. @@ -0,0 +1,65 @@
  9664. +// SPDX-License-Identifier: GPL-2.0-only
  9665. +// Definitions for Analog Devices ADV7282-M video to CSI2 bridge on VC I2C bus
  9666. +/dts-v1/;
  9667. +/plugin/;
  9668. +
  9669. +/{
  9670. + compatible = "brcm,bcm2835";
  9671. +
  9672. + fragment@0 {
  9673. + target = <&i2c_csi_dsi>;
  9674. + __overlay__ {
  9675. + #address-cells = <1>;
  9676. + #size-cells = <0>;
  9677. + status = "okay";
  9678. +
  9679. + adv728x: adv728x@21 {
  9680. + compatible = "adi,adv7282-m";
  9681. + reg = <0x21>;
  9682. + status = "okay";
  9683. + clock-frequency = <24000000>;
  9684. + port {
  9685. + adv728x_0: endpoint {
  9686. + remote-endpoint = <&csi1_ep>;
  9687. + clock-lanes = <0>;
  9688. + data-lanes = <1>;
  9689. + link-frequencies =
  9690. + /bits/ 64 <297000000>;
  9691. +
  9692. + mclk-frequency = <12000000>;
  9693. + };
  9694. + };
  9695. + };
  9696. + };
  9697. + };
  9698. + fragment@1 {
  9699. + target = <&csi1>;
  9700. + __overlay__ {
  9701. + status = "okay";
  9702. +
  9703. + port {
  9704. + csi1_ep: endpoint {
  9705. + remote-endpoint = <&adv728x_0>;
  9706. + data-lanes = <1>;
  9707. + };
  9708. + };
  9709. + };
  9710. + };
  9711. + fragment@2 {
  9712. + target = <&i2c0if>;
  9713. + __overlay__ {
  9714. + status = "okay";
  9715. + };
  9716. + };
  9717. +
  9718. + fragment@3 {
  9719. + target = <&i2c0mux>;
  9720. + __overlay__ {
  9721. + status = "okay";
  9722. + };
  9723. + };
  9724. +
  9725. + __overrides__ {
  9726. + addr = <&adv728x>,"reg:0";
  9727. + };
  9728. +};
  9729. diff --git a/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
  9730. new file mode 100644
  9731. index 000000000000..ea392e886984
  9732. --- /dev/null
  9733. +++ b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
  9734. @@ -0,0 +1,37 @@
  9735. +// SPDX-License-Identifier: GPL-2.0-only
  9736. +// Definitions for Analog Devices ADV728[0|1|2]-M video to CSI2 bridges on VC
  9737. +// I2C bus
  9738. +
  9739. +#include "adv7282m-overlay.dts"
  9740. +
  9741. +/{
  9742. + compatible = "brcm,bcm2835";
  9743. +
  9744. + // Fragment numbers deliberately high to avoid conflicts with the
  9745. + // included adv7282m overlay file.
  9746. +
  9747. + fragment@101 {
  9748. + target = <&adv728x>;
  9749. + __dormant__ {
  9750. + compatible = "adi,adv7280-m";
  9751. + };
  9752. + };
  9753. + fragment@102 {
  9754. + target = <&adv728x>;
  9755. + __dormant__ {
  9756. + compatible = "adi,adv7281-m";
  9757. + };
  9758. + };
  9759. + fragment@103 {
  9760. + target = <&adv728x>;
  9761. + __dormant__ {
  9762. + compatible = "adi,adv7281-ma";
  9763. + };
  9764. + };
  9765. +
  9766. + __overrides__ {
  9767. + adv7280m = <0>, "+101";
  9768. + adv7281m = <0>, "+102";
  9769. + adv7281ma = <0>, "+103";
  9770. + };
  9771. +};
  9772. diff --git a/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
  9773. new file mode 100644
  9774. index 000000000000..82f9b3734fb1
  9775. --- /dev/null
  9776. +++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
  9777. @@ -0,0 +1,49 @@
  9778. +// Definitions for Digital Dreamtime Akkordion using IQaudIO DAC+ or DACZero
  9779. +/dts-v1/;
  9780. +/plugin/;
  9781. +
  9782. +/ {
  9783. + compatible = "brcm,bcm2835";
  9784. +
  9785. + fragment@0 {
  9786. + target = <&i2s>;
  9787. + __overlay__ {
  9788. + status = "okay";
  9789. + };
  9790. + };
  9791. +
  9792. + fragment@1 {
  9793. + target = <&i2c1>;
  9794. + __overlay__ {
  9795. + #address-cells = <1>;
  9796. + #size-cells = <0>;
  9797. + status = "okay";
  9798. +
  9799. + pcm5122@4c {
  9800. + #sound-dai-cells = <0>;
  9801. + compatible = "ti,pcm5122";
  9802. + reg = <0x4c>;
  9803. + AVDD-supply = <&vdd_3v3_reg>;
  9804. + DVDD-supply = <&vdd_3v3_reg>;
  9805. + CPVDD-supply = <&vdd_3v3_reg>;
  9806. + status = "okay";
  9807. + };
  9808. + };
  9809. + };
  9810. +
  9811. + fragment@2 {
  9812. + target = <&sound>;
  9813. + frag2: __overlay__ {
  9814. + compatible = "iqaudio,iqaudio-dac";
  9815. + card_name = "Akkordion";
  9816. + dai_name = "IQaudIO DAC";
  9817. + dai_stream_name = "IQaudIO DAC HiFi";
  9818. + i2s-controller = <&i2s>;
  9819. + status = "okay";
  9820. + };
  9821. + };
  9822. +
  9823. + __overrides__ {
  9824. + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
  9825. + };
  9826. +};
  9827. diff --git a/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
  9828. new file mode 100644
  9829. index 000000000000..873cb2fab52b
  9830. --- /dev/null
  9831. +++ b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
  9832. @@ -0,0 +1,59 @@
  9833. +/*
  9834. + * Definitions for Allo Boss DAC board
  9835. + */
  9836. +
  9837. +/dts-v1/;
  9838. +/plugin/;
  9839. +
  9840. +/ {
  9841. + compatible = "brcm,bcm2835";
  9842. +
  9843. + fragment@0 {
  9844. + target-path = "/";
  9845. + __overlay__ {
  9846. + boss_osc: boss_osc {
  9847. + compatible = "allo,dac-clk";
  9848. + #clock-cells = <0>;
  9849. + };
  9850. + };
  9851. + };
  9852. +
  9853. + fragment@1 {
  9854. + target = <&i2s>;
  9855. + __overlay__ {
  9856. + status = "okay";
  9857. + };
  9858. + };
  9859. +
  9860. + fragment@2 {
  9861. + target = <&i2c1>;
  9862. + __overlay__ {
  9863. + #address-cells = <1>;
  9864. + #size-cells = <0>;
  9865. + status = "okay";
  9866. +
  9867. + pcm5122@4d {
  9868. + #sound-dai-cells = <0>;
  9869. + compatible = "ti,pcm5122";
  9870. + clocks = <&boss_osc>;
  9871. + reg = <0x4d>;
  9872. + status = "okay";
  9873. + };
  9874. + };
  9875. + };
  9876. +
  9877. + fragment@3 {
  9878. + target = <&sound>;
  9879. + boss_dac: __overlay__ {
  9880. + compatible = "allo,boss-dac";
  9881. + i2s-controller = <&i2s>;
  9882. + mute-gpios = <&gpio 6 1>;
  9883. + status = "okay";
  9884. + };
  9885. + };
  9886. +
  9887. + __overrides__ {
  9888. + 24db_digital_gain = <&boss_dac>,"allo,24db_digital_gain?";
  9889. + slave = <&boss_dac>,"allo,slave?";
  9890. + };
  9891. +};
  9892. diff --git a/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
  9893. new file mode 100644
  9894. index 000000000000..a6adfb495eb9
  9895. --- /dev/null
  9896. +++ b/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
  9897. @@ -0,0 +1,57 @@
  9898. +/* * Definitions for Allo Boss2 DAC boards
  9899. + */
  9900. +
  9901. +/dts-v1/;
  9902. +/plugin/;
  9903. +
  9904. +/ {
  9905. + compatible = "brcm,bcm2835";
  9906. +
  9907. + fragment@0 {
  9908. + target = <&i2s>;
  9909. + __overlay__ {
  9910. + #sound-dai-cells = <0>;
  9911. + status = "okay";
  9912. + cpu_port: port {
  9913. + cpu_endpoint: endpoint {
  9914. + remote-endpoint = <&codec_endpoint>;
  9915. + bitclock-master = <&codec_endpoint>;
  9916. + frame-master = <&codec_endpoint>;
  9917. + dai-format = "i2s";
  9918. + };
  9919. + };
  9920. + };
  9921. + };
  9922. +
  9923. + fragment@1 {
  9924. + target = <&i2c1>;
  9925. + __overlay__ {
  9926. + #address-cells = <1>;
  9927. + #size-cells = <0>;
  9928. + status = "okay";
  9929. + allo-cs43130@30 {
  9930. + #sound-dai-cells = <0>;
  9931. + compatible = "allo,allo-cs43198";
  9932. + clock44-gpio = <&gpio 5 0>;
  9933. + clock48-gpio = <&gpio 6 0>;
  9934. + reg = <0x30>;
  9935. + port {
  9936. + codec_endpoint: endpoint {
  9937. + remote-endpoint = <&cpu_endpoint>;
  9938. + };
  9939. + };
  9940. + };
  9941. + };
  9942. + };
  9943. +
  9944. + fragment@2 {
  9945. + target = <&sound>;
  9946. + boss2_dac: __overlay__ {
  9947. + compatible = "audio-graph-card";
  9948. + label = "Allo Boss2";
  9949. + dais = <&cpu_port>;
  9950. + status = "okay";
  9951. + };
  9952. + };
  9953. +};
  9954. +
  9955. diff --git a/arch/arm/boot/dts/overlays/allo-digione-overlay.dts b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
  9956. new file mode 100644
  9957. index 000000000000..ea018ace34d4
  9958. --- /dev/null
  9959. +++ b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
  9960. @@ -0,0 +1,44 @@
  9961. +// Definitions for Allo DigiOne
  9962. +/dts-v1/;
  9963. +/plugin/;
  9964. +
  9965. +/ {
  9966. + compatible = "brcm,bcm2835";
  9967. +
  9968. + fragment@0 {
  9969. + target = <&i2s>;
  9970. + __overlay__ {
  9971. + status = "okay";
  9972. + };
  9973. + };
  9974. +
  9975. + fragment@1 {
  9976. + target = <&i2c1>;
  9977. + __overlay__ {
  9978. + #address-cells = <1>;
  9979. + #size-cells = <0>;
  9980. + status = "okay";
  9981. +
  9982. + wm8804@3b {
  9983. + #sound-dai-cells = <0>;
  9984. + compatible = "wlf,wm8804";
  9985. + reg = <0x3b>;
  9986. + PVDD-supply = <&vdd_3v3_reg>;
  9987. + DVDD-supply = <&vdd_3v3_reg>;
  9988. + status = "okay";
  9989. + wlf,reset-gpio = <&gpio 17 0>;
  9990. + };
  9991. + };
  9992. + };
  9993. +
  9994. + fragment@2 {
  9995. + target = <&sound>;
  9996. + __overlay__ {
  9997. + compatible = "allo,allo-digione";
  9998. + i2s-controller = <&i2s>;
  9999. + status = "okay";
  10000. + clock44-gpio = <&gpio 5 0>;
  10001. + clock48-gpio = <&gpio 6 0>;
  10002. + };
  10003. + };
  10004. +};
  10005. diff --git a/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
  10006. new file mode 100644
  10007. index 000000000000..b25fd681f09f
  10008. --- /dev/null
  10009. +++ b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
  10010. @@ -0,0 +1,57 @@
  10011. +/*
  10012. + * Definitions for Allo Katana DAC boards
  10013. + */
  10014. +
  10015. +/dts-v1/;
  10016. +/plugin/;
  10017. +
  10018. +/ {
  10019. + compatible = "brcm,bcm2835";
  10020. +
  10021. + fragment@0 {
  10022. + target = <&i2s>;
  10023. + __overlay__ {
  10024. + #sound-dai-cells = <0>;
  10025. + status = "okay";
  10026. + cpu_port: port {
  10027. + cpu_endpoint: endpoint {
  10028. + remote-endpoint = <&codec_endpoint>;
  10029. + bitclock-master = <&codec_endpoint>;
  10030. + frame-master = <&codec_endpoint>;
  10031. + dai-format = "i2s";
  10032. + };
  10033. + };
  10034. + };
  10035. + };
  10036. +
  10037. + fragment@1 {
  10038. + target = <&i2c1>;
  10039. + __overlay__ {
  10040. + #address-cells = <1>;
  10041. + #size-cells = <0>;
  10042. + status = "okay";
  10043. +
  10044. + allo-katana-codec@30 {
  10045. + #sound-dai-cells = <0>;
  10046. + compatible = "allo,allo-katana-codec";
  10047. + reg = <0x30>;
  10048. + port {
  10049. + codec_endpoint: endpoint {
  10050. + remote-endpoint = <&cpu_endpoint>;
  10051. + };
  10052. + };
  10053. + };
  10054. + };
  10055. + };
  10056. +
  10057. + fragment@2 {
  10058. + target = <&sound>;
  10059. + katana_dac: __overlay__ {
  10060. + compatible = "audio-graph-card";
  10061. + label = "Allo Katana";
  10062. + dais = <&cpu_port>;
  10063. + status = "okay";
  10064. + };
  10065. + };
  10066. +};
  10067. +
  10068. diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
  10069. new file mode 100644
  10070. index 000000000000..bfc66da6295a
  10071. --- /dev/null
  10072. +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
  10073. @@ -0,0 +1,54 @@
  10074. +/*
  10075. + * Definitions for Allo Piano DAC (2.0/2.1) boards
  10076. + *
  10077. + * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo
  10078. + * (left/right) and the other provides a subwoofer output, using DSP on the
  10079. + * chip for digital high/low pass crossover.
  10080. + * The initial support for this hardware, that doesn't require any codec driver
  10081. + * modifications, uses only one DAC chip for stereo (left/right) output, the
  10082. + * chip with 0x4c slave address. The other chip at 0x4d is currently ignored!
  10083. + */
  10084. +
  10085. +/dts-v1/;
  10086. +/plugin/;
  10087. +
  10088. +/ {
  10089. + compatible = "brcm,bcm2835";
  10090. +
  10091. + fragment@0 {
  10092. + target = <&i2s>;
  10093. + __overlay__ {
  10094. + status = "okay";
  10095. + };
  10096. + };
  10097. +
  10098. + fragment@1 {
  10099. + target = <&i2c1>;
  10100. + __overlay__ {
  10101. + #address-cells = <1>;
  10102. + #size-cells = <0>;
  10103. + status = "okay";
  10104. +
  10105. + pcm5142@4c {
  10106. + #sound-dai-cells = <0>;
  10107. + compatible = "ti,pcm5142";
  10108. + reg = <0x4c>;
  10109. + status = "okay";
  10110. + };
  10111. + };
  10112. + };
  10113. +
  10114. + fragment@2 {
  10115. + target = <&sound>;
  10116. + piano_dac: __overlay__ {
  10117. + compatible = "allo,piano-dac";
  10118. + i2s-controller = <&i2s>;
  10119. + status = "okay";
  10120. + };
  10121. + };
  10122. +
  10123. + __overrides__ {
  10124. + 24db_digital_gain =
  10125. + <&piano_dac>,"allo,24db_digital_gain?";
  10126. + };
  10127. +};
  10128. diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
  10129. new file mode 100644
  10130. index 000000000000..d47a35def4f7
  10131. --- /dev/null
  10132. +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
  10133. @@ -0,0 +1,57 @@
  10134. +// Definitions for Piano DAC
  10135. +/dts-v1/;
  10136. +/plugin/;
  10137. +
  10138. +/ {
  10139. + compatible = "brcm,bcm2835";
  10140. +
  10141. + fragment@0 {
  10142. + target = <&i2s>;
  10143. + __overlay__ {
  10144. + status = "okay";
  10145. + };
  10146. + };
  10147. +
  10148. + fragment@1 {
  10149. + target = <&i2c1>;
  10150. + __overlay__ {
  10151. + #address-cells = <1>;
  10152. + #size-cells = <0>;
  10153. + status = "okay";
  10154. +
  10155. + allo_pcm5122_4c: pcm5122@4c {
  10156. + #sound-dai-cells = <0>;
  10157. + compatible = "ti,pcm5122";
  10158. + reg = <0x4c>;
  10159. + sound-name-prefix = "Main";
  10160. + status = "okay";
  10161. + };
  10162. + allo_pcm5122_4d: pcm5122@4d {
  10163. + #sound-dai-cells = <0>;
  10164. + compatible = "ti,pcm5122";
  10165. + reg = <0x4d>;
  10166. + sound-name-prefix = "Sub";
  10167. + status = "okay";
  10168. + };
  10169. + };
  10170. + };
  10171. +
  10172. + fragment@2 {
  10173. + target = <&sound>;
  10174. + piano_dac: __overlay__ {
  10175. + compatible = "allo,piano-dac-plus";
  10176. + audio-codec = <&allo_pcm5122_4c &allo_pcm5122_4d>;
  10177. + i2s-controller = <&i2s>;
  10178. + mute1-gpios = <&gpio 6 1>;
  10179. + mute2-gpios = <&gpio 25 1>;
  10180. + status = "okay";
  10181. + };
  10182. + };
  10183. +
  10184. + __overrides__ {
  10185. + 24db_digital_gain =
  10186. + <&piano_dac>,"allo,24db_digital_gain?";
  10187. + glb_mclk =
  10188. + <&piano_dac>,"allo,glb_mclk?";
  10189. + };
  10190. +};
  10191. diff --git a/arch/arm/boot/dts/overlays/anyspi-overlay.dts b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
  10192. new file mode 100755
  10193. index 000000000000..87523dcca318
  10194. --- /dev/null
  10195. +++ b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
  10196. @@ -0,0 +1,205 @@
  10197. +/*
  10198. + * Universal device tree overlay for SPI devices
  10199. + */
  10200. +
  10201. +/dts-v1/;
  10202. +/plugin/;
  10203. +
  10204. +/ {
  10205. + compatible = "brcm,bcm2835";
  10206. +
  10207. + fragment@0 {
  10208. + target = <&spidev0>;
  10209. + __dormant__ {
  10210. + status = "disabled";
  10211. + };
  10212. + };
  10213. +
  10214. + fragment@1 {
  10215. + target = <&spidev1>;
  10216. + __dormant__ {
  10217. + status = "disabled";
  10218. + };
  10219. + };
  10220. +
  10221. + fragment@2 {
  10222. + target-path = "spi1/spidev@0";
  10223. + __dormant__ {
  10224. + status = "disabled";
  10225. + };
  10226. + };
  10227. +
  10228. + fragment@3 {
  10229. + target-path = "spi1/spidev@1";
  10230. + __dormant__ {
  10231. + status = "disabled";
  10232. + };
  10233. + };
  10234. +
  10235. + fragment@4 {
  10236. + target-path = "spi1/spidev@2";
  10237. + __dormant__ {
  10238. + status = "disabled";
  10239. + };
  10240. + };
  10241. +
  10242. + fragment@5 {
  10243. + target-path = "spi2/spidev@0";
  10244. + __dormant__ {
  10245. + status = "disabled";
  10246. + };
  10247. + };
  10248. +
  10249. + fragment@6 {
  10250. + target-path = "spi2/spidev@1";
  10251. + __dormant__ {
  10252. + status = "disabled";
  10253. + };
  10254. + };
  10255. +
  10256. + fragment@7 {
  10257. + target-path = "spi2/spidev@2";
  10258. + __dormant__ {
  10259. + status = "disabled";
  10260. + };
  10261. + };
  10262. +
  10263. + fragment@8 {
  10264. + target = <&spi0>;
  10265. + __dormant__ {
  10266. + status = "okay";
  10267. + #address-cells = <1>;
  10268. + #size-cells = <0>;
  10269. +
  10270. + anyspi_00: anyspi@0 {
  10271. + reg = <0>;
  10272. + spi-max-frequency = <500000>;
  10273. + };
  10274. + };
  10275. + };
  10276. +
  10277. + fragment@9 {
  10278. + target = <&spi0>;
  10279. + __dormant__ {
  10280. + status = "okay";
  10281. + #address-cells = <1>;
  10282. + #size-cells = <0>;
  10283. +
  10284. + anyspi_01: anyspi@1 {
  10285. + reg = <1>;
  10286. + spi-max-frequency = <500000>;
  10287. + };
  10288. + };
  10289. + };
  10290. +
  10291. + fragment@10 {
  10292. + target = <&spi1>;
  10293. + __dormant__ {
  10294. + status = "okay";
  10295. + #address-cells = <1>;
  10296. + #size-cells = <0>;
  10297. +
  10298. + anyspi_10: anyspi@0 {
  10299. + reg = <0>;
  10300. + spi-max-frequency = <500000>;
  10301. + };
  10302. + };
  10303. + };
  10304. +
  10305. + fragment@11 {
  10306. + target = <&spi1>;
  10307. + __dormant__ {
  10308. + status = "okay";
  10309. + #address-cells = <1>;
  10310. + #size-cells = <0>;
  10311. +
  10312. + anyspi_11: anyspi@1 {
  10313. + reg = <1>;
  10314. + spi-max-frequency = <500000>;
  10315. + };
  10316. + };
  10317. + };
  10318. +
  10319. + fragment@12 {
  10320. + target = <&spi1>;
  10321. + __dormant__ {
  10322. + status = "okay";
  10323. + #address-cells = <1>;
  10324. + #size-cells = <0>;
  10325. +
  10326. + anyspi_12: anyspi@2 {
  10327. + reg = <2>;
  10328. + spi-max-frequency = <500000>;
  10329. + };
  10330. + };
  10331. + };
  10332. +
  10333. + fragment@13 {
  10334. + target = <&spi2>;
  10335. + __dormant__ {
  10336. + status = "okay";
  10337. + #address-cells = <1>;
  10338. + #size-cells = <0>;
  10339. +
  10340. + anyspi_20: anyspi@0 {
  10341. + reg = <0>;
  10342. + spi-max-frequency = <500000>;
  10343. + };
  10344. + };
  10345. + };
  10346. +
  10347. + fragment@14 {
  10348. + target = <&spi2>;
  10349. + __dormant__ {
  10350. + status = "okay";
  10351. + #address-cells = <1>;
  10352. + #size-cells = <0>;
  10353. +
  10354. + anyspi_21: anyspi@1 {
  10355. + reg = <1>;
  10356. + spi-max-frequency = <500000>;
  10357. + };
  10358. + };
  10359. + };
  10360. +
  10361. + fragment@15 {
  10362. + target = <&spi2>;
  10363. + __dormant__ {
  10364. + status = "okay";
  10365. + #address-cells = <1>;
  10366. + #size-cells = <0>;
  10367. +
  10368. + anyspi_22: anyspi@2 {
  10369. + reg = <2>;
  10370. + spi-max-frequency = <500000>;
  10371. + };
  10372. + };
  10373. + };
  10374. +
  10375. + __overrides__ {
  10376. + spi0-0 = <0>, "+0+8";
  10377. + spi0-1 = <0>, "+1+9";
  10378. + spi1-0 = <0>, "+2+10";
  10379. + spi1-1 = <0>, "+3+11";
  10380. + spi1-2 = <0>, "+4+12";
  10381. + spi2-0 = <0>, "+5+13";
  10382. + spi2-1 = <0>, "+6+14";
  10383. + spi2-2 = <0>, "+7+15";
  10384. + dev = <&anyspi_00>,"compatible",
  10385. + <&anyspi_01>,"compatible",
  10386. + <&anyspi_10>,"compatible",
  10387. + <&anyspi_11>,"compatible",
  10388. + <&anyspi_12>,"compatible",
  10389. + <&anyspi_20>,"compatible",
  10390. + <&anyspi_21>,"compatible",
  10391. + <&anyspi_22>,"compatible";
  10392. + speed = <&anyspi_00>, "spi-max-frequency:0",
  10393. + <&anyspi_01>, "spi-max-frequency:0",
  10394. + <&anyspi_10>, "spi-max-frequency:0",
  10395. + <&anyspi_11>, "spi-max-frequency:0",
  10396. + <&anyspi_12>, "spi-max-frequency:0",
  10397. + <&anyspi_20>, "spi-max-frequency:0",
  10398. + <&anyspi_21>, "spi-max-frequency:0",
  10399. + <&anyspi_22>, "spi-max-frequency:0";
  10400. + };
  10401. +};
  10402. diff --git a/arch/arm/boot/dts/overlays/apds9960-overlay.dts b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
  10403. new file mode 100644
  10404. index 000000000000..c216932278ab
  10405. --- /dev/null
  10406. +++ b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
  10407. @@ -0,0 +1,57 @@
  10408. +// Definitions for APDS-9960 ambient light and gesture sensor
  10409. +
  10410. +/dts-v1/;
  10411. +/plugin/;
  10412. +
  10413. +/ {
  10414. + compatible = "brcm,bcm2835";
  10415. +
  10416. + fragment@0 {
  10417. + target = <&i2c1>;
  10418. + __overlay__ {
  10419. + status = "okay";
  10420. + };
  10421. + };
  10422. +
  10423. + fragment@1 {
  10424. + target = <&gpio>;
  10425. + __overlay__ {
  10426. + apds9960_pins: apds9960_pins@39 {
  10427. + brcm,pins = <4>;
  10428. + brcm,function = <0>;
  10429. + };
  10430. + };
  10431. + };
  10432. +
  10433. + fragment@2 {
  10434. + target = <&i2c1>;
  10435. + __overlay__ {
  10436. + #address-cells = <1>;
  10437. + #size-cells = <0>;
  10438. +
  10439. + apds9960: apds@39 {
  10440. + compatible = "avago,apds9960";
  10441. + reg = <0x39>;
  10442. + status = "okay";
  10443. + };
  10444. + };
  10445. + };
  10446. +
  10447. + fragment@3 {
  10448. + target = <&i2c1>;
  10449. + __overlay__ {
  10450. + apds9960_irq: apds@39 {
  10451. + #interrupt-cells=<2>;
  10452. + interrupt-parent = <&gpio>;
  10453. + interrupts = <4 1>;
  10454. + };
  10455. + };
  10456. + };
  10457. +
  10458. + __overrides__ {
  10459. + gpiopin = <&apds9960_pins>,"brcm,pins:0",
  10460. + <&apds9960_irq>,"interrupts:0";
  10461. + noints = <0>,"!1!3";
  10462. + };
  10463. +};
  10464. +
  10465. diff --git a/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
  10466. new file mode 100644
  10467. index 000000000000..4769296ec9d6
  10468. --- /dev/null
  10469. +++ b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
  10470. @@ -0,0 +1,57 @@
  10471. +/dts-v1/;
  10472. +/plugin/;
  10473. +
  10474. +/ {
  10475. + compatible = "brcm,bcm2835";
  10476. +
  10477. + fragment@0 {
  10478. + target = <&sound>;
  10479. + __overlay__ {
  10480. + compatible = "simple-audio-card";
  10481. + simple-audio-card,name = "ApplePi-DAC";
  10482. +
  10483. + status = "okay";
  10484. +
  10485. + playback_link: simple-audio-card,dai-link@1 {
  10486. + format = "i2s";
  10487. +
  10488. + p_cpu_dai: cpu {
  10489. + sound-dai = <&i2s>;
  10490. + dai-tdm-slot-num = <2>;
  10491. + dai-tdm-slot-width = <32>;
  10492. + };
  10493. +
  10494. + p_codec_dai: codec {
  10495. + sound-dai = <&codec_out>;
  10496. + };
  10497. + };
  10498. + };
  10499. + };
  10500. +
  10501. + fragment@1 {
  10502. + target-path = "/";
  10503. + __overlay__ {
  10504. + codec_out: pcm1794a-codec {
  10505. + #sound-dai-cells = <0>;
  10506. + compatible = "ti,pcm1794a";
  10507. + status = "okay";
  10508. + };
  10509. + };
  10510. + };
  10511. +
  10512. + fragment@2 {
  10513. + target = <&i2s>;
  10514. + __overlay__ {
  10515. + #sound-dai-cells = <0>;
  10516. + status = "okay";
  10517. + };
  10518. + };
  10519. +};
  10520. +
  10521. +/*
  10522. + Written by: Leonid Ayzenshtat
  10523. + Company: Orchard Audio (www.orchardaudio.com)
  10524. +
  10525. + compile with:
  10526. + dtc -@ -H epapr -O dtb -o ApplePi-DAC.dtbo -W no-unit_address_vs_reg ApplePi-DAC.dts
  10527. +*/
  10528. diff --git a/arch/arm/boot/dts/overlays/at86rf233-overlay.dts b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
  10529. new file mode 100644
  10530. index 000000000000..5a3f4571ee78
  10531. --- /dev/null
  10532. +++ b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
  10533. @@ -0,0 +1,57 @@
  10534. +/dts-v1/;
  10535. +/plugin/;
  10536. +
  10537. +/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */
  10538. +
  10539. +/ {
  10540. + compatible = "brcm,bcm2835";
  10541. +
  10542. + fragment@0 {
  10543. + target = <&spi0>;
  10544. + __overlay__ {
  10545. + #address-cells = <1>;
  10546. + #size-cells = <0>;
  10547. +
  10548. + status = "okay";
  10549. +
  10550. + lowpan0: at86rf233@0 {
  10551. + compatible = "atmel,at86rf233";
  10552. + reg = <0>;
  10553. + interrupt-parent = <&gpio>;
  10554. + interrupts = <23 4>; /* active high */
  10555. + reset-gpio = <&gpio 24 1>;
  10556. + sleep-gpio = <&gpio 25 1>;
  10557. + spi-max-frequency = <3000000>;
  10558. + xtal-trim = /bits/ 8 <0xf>;
  10559. + };
  10560. + };
  10561. + };
  10562. +
  10563. + fragment@1 {
  10564. + target = <&spidev0>;
  10565. + __overlay__ {
  10566. + status = "disabled";
  10567. + };
  10568. + };
  10569. +
  10570. + fragment@2 {
  10571. + target = <&gpio>;
  10572. + __overlay__ {
  10573. + lowpan0_pins: lowpan0_pins {
  10574. + brcm,pins = <23 24 25>;
  10575. + brcm,function = <0 1 1>; /* in out out */
  10576. + };
  10577. + };
  10578. + };
  10579. +
  10580. + __overrides__ {
  10581. + interrupt = <&lowpan0>, "interrupts:0",
  10582. + <&lowpan0_pins>, "brcm,pins:0";
  10583. + reset = <&lowpan0>, "reset-gpio:4",
  10584. + <&lowpan0_pins>, "brcm,pins:4";
  10585. + sleep = <&lowpan0>, "sleep-gpio:4",
  10586. + <&lowpan0_pins>, "brcm,pins:8";
  10587. + speed = <&lowpan0>, "spi-max-frequency:0";
  10588. + trim = <&lowpan0>, "xtal-trim.0";
  10589. + };
  10590. +};
  10591. diff --git a/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
  10592. new file mode 100644
  10593. index 000000000000..57a66eac8e9b
  10594. --- /dev/null
  10595. +++ b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
  10596. @@ -0,0 +1,60 @@
  10597. +// Definitions for audioinjector.net audio add on soundcard
  10598. +/dts-v1/;
  10599. +/plugin/;
  10600. +
  10601. +/ {
  10602. + compatible = "brcm,bcm2835";
  10603. +
  10604. + fragment@0 {
  10605. + target = <&i2s>;
  10606. + __overlay__ {
  10607. + status = "okay";
  10608. + };
  10609. + };
  10610. +
  10611. + fragment@1 {
  10612. + target-path = "/";
  10613. + __overlay__ {
  10614. + cs42448_mclk: codec-mclk {
  10615. + compatible = "fixed-clock";
  10616. + #clock-cells = <0>;
  10617. + clock-frequency = <49152000>;
  10618. + };
  10619. + };
  10620. + };
  10621. +
  10622. + fragment@2 {
  10623. + target = <&i2c1>;
  10624. + __overlay__ {
  10625. + #address-cells = <1>;
  10626. + #size-cells = <0>;
  10627. + status = "okay";
  10628. +
  10629. + cs42448: cs42448@48 {
  10630. + #sound-dai-cells = <0>;
  10631. + compatible = "cirrus,cs42448";
  10632. + reg = <0x48>;
  10633. + clocks = <&cs42448_mclk>;
  10634. + clock-names = "mclk";
  10635. + status = "okay";
  10636. + };
  10637. + };
  10638. + };
  10639. +
  10640. + fragment@3 {
  10641. + target = <&sound>;
  10642. + snd: __overlay__ {
  10643. + compatible = "ai,audioinjector-octo-soundcard";
  10644. + mult-gpios = <&gpio 27 0>, <&gpio 22 0>, <&gpio 23 0>,
  10645. + <&gpio 24 0>;
  10646. + reset-gpios = <&gpio 5 0>;
  10647. + i2s-controller = <&i2s>;
  10648. + codec = <&cs42448>;
  10649. + status = "okay";
  10650. + };
  10651. + };
  10652. +
  10653. + __overrides__ {
  10654. + non-stop-clocks = <&snd>, "non-stop-clocks?";
  10655. + };
  10656. +};
  10657. diff --git a/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
  10658. new file mode 100644
  10659. index 000000000000..63e05cf9665d
  10660. --- /dev/null
  10661. +++ b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
  10662. @@ -0,0 +1,55 @@
  10663. +// Definitions for audioinjector.net audio isolated soundcard
  10664. +/dts-v1/;
  10665. +/plugin/;
  10666. +
  10667. +/ {
  10668. + compatible = "brcm,bcm2835";
  10669. +
  10670. + fragment@0 {
  10671. + target = <&i2s>;
  10672. + __overlay__ {
  10673. + status = "okay";
  10674. + };
  10675. + };
  10676. +
  10677. + fragment@1 {
  10678. + target-path = "/";
  10679. + __overlay__ {
  10680. + cs4272_mclk: codec-mclk {
  10681. + compatible = "fixed-clock";
  10682. + #clock-cells = <0>;
  10683. + clock-frequency = <24576000>;
  10684. + };
  10685. + };
  10686. + };
  10687. +
  10688. + fragment@2 {
  10689. + target = <&i2c1>;
  10690. + __overlay__ {
  10691. + #address-cells = <1>;
  10692. + #size-cells = <0>;
  10693. + status = "okay";
  10694. +
  10695. + cs4272: cs4271@10 {
  10696. + #sound-dai-cells = <0>;
  10697. + compatible = "cirrus,cs4271";
  10698. + reg = <0x10>;
  10699. + reset-gpio = <&gpio 5 0>;
  10700. + clocks = <&cs4272_mclk>;
  10701. + clock-names = "mclk";
  10702. + status = "okay";
  10703. + };
  10704. + };
  10705. + };
  10706. +
  10707. + fragment@3 {
  10708. + target = <&sound>;
  10709. + snd: __overlay__ {
  10710. + compatible = "ai,audioinjector-isolated-soundcard";
  10711. + mute-gpios = <&gpio 17 0>;
  10712. + i2s-controller = <&i2s>;
  10713. + codec = <&cs4272>;
  10714. + status = "okay";
  10715. + };
  10716. + };
  10717. +};
  10718. diff --git a/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
  10719. new file mode 100644
  10720. index 000000000000..fb4a4678a17a
  10721. --- /dev/null
  10722. +++ b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
  10723. @@ -0,0 +1,71 @@
  10724. +// Definitions for audioinjector.net audio add on soundcard
  10725. +/dts-v1/;
  10726. +/plugin/;
  10727. +
  10728. +/ {
  10729. + compatible = "brcm,bcm2835";
  10730. +
  10731. + fragment@0 {
  10732. + target = <&i2s>;
  10733. + __overlay__ {
  10734. + status = "okay";
  10735. + };
  10736. + };
  10737. +
  10738. + fragment@1 {
  10739. + target = <&i2c1>;
  10740. + __overlay__ {
  10741. + #address-cells = <1>;
  10742. + #size-cells = <0>;
  10743. + status = "okay";
  10744. +
  10745. + cs4265: cs4265@4e {
  10746. + #sound-dai-cells = <0>;
  10747. + compatible = "cirrus,cs4265";
  10748. + reg = <0x4e>;
  10749. + reset-gpios = <&gpio 5 0>;
  10750. + status = "okay";
  10751. + };
  10752. + };
  10753. + };
  10754. +
  10755. + fragment@2 {
  10756. + target = <&sound>;
  10757. + __overlay__ {
  10758. + compatible = "simple-audio-card";
  10759. + i2s-controller = <&i2s>;
  10760. + status = "okay";
  10761. +
  10762. + simple-audio-card,name = "audioinjector-ultra";
  10763. +
  10764. + simple-audio-card,widgets =
  10765. + "Line", "OUTPUTS",
  10766. + "Line", "INPUTS";
  10767. +
  10768. + simple-audio-card,routing =
  10769. + "OUTPUTS","LINEOUTL",
  10770. + "OUTPUTS","LINEOUTR",
  10771. + "OUTPUTS","SPDIFOUT",
  10772. + "LINEINL","INPUTS",
  10773. + "LINEINR","INPUTS",
  10774. + "MICL","INPUTS",
  10775. + "MICR","INPUTS";
  10776. +
  10777. + simple-audio-card,format = "i2s";
  10778. +
  10779. + simple-audio-card,bitclock-master = <&sound_master>;
  10780. + simple-audio-card,frame-master = <&sound_master>;
  10781. +
  10782. + simple-audio-card,cpu {
  10783. + sound-dai = <&i2s>;
  10784. + dai-tdm-slot-num = <2>;
  10785. + dai-tdm-slot-width = <32>;
  10786. + };
  10787. +
  10788. + sound_master: simple-audio-card,codec {
  10789. + sound-dai = <&cs4265>;
  10790. + system-clock-frequency = <12288000>;
  10791. + };
  10792. + };
  10793. + };
  10794. +};
  10795. diff --git a/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
  10796. new file mode 100644
  10797. index 000000000000..68f4427d86c3
  10798. --- /dev/null
  10799. +++ b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
  10800. @@ -0,0 +1,39 @@
  10801. +// Definitions for audioinjector.net audio add on soundcard
  10802. +/dts-v1/;
  10803. +/plugin/;
  10804. +
  10805. +/ {
  10806. + compatible = "brcm,bcm2835";
  10807. +
  10808. + fragment@0 {
  10809. + target = <&i2s>;
  10810. + __overlay__ {
  10811. + status = "okay";
  10812. + };
  10813. + };
  10814. +
  10815. + fragment@1 {
  10816. + target = <&i2c1>;
  10817. + __overlay__ {
  10818. + #address-cells = <1>;
  10819. + #size-cells = <0>;
  10820. + status = "okay";
  10821. +
  10822. + wm8731@1a {
  10823. + #sound-dai-cells = <0>;
  10824. + compatible = "wlf,wm8731";
  10825. + reg = <0x1a>;
  10826. + status = "okay";
  10827. + };
  10828. + };
  10829. + };
  10830. +
  10831. + fragment@2 {
  10832. + target = <&sound>;
  10833. + __overlay__ {
  10834. + compatible = "ai,audioinjector-pi-soundcard";
  10835. + i2s-controller = <&i2s>;
  10836. + status = "okay";
  10837. + };
  10838. + };
  10839. +};
  10840. diff --git a/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
  10841. new file mode 100644
  10842. index 000000000000..81af26374d92
  10843. --- /dev/null
  10844. +++ b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
  10845. @@ -0,0 +1,82 @@
  10846. +// Definitions for audiosense add on soundcard
  10847. +/dts-v1/;
  10848. +/plugin/;
  10849. +#include <dt-bindings/pinctrl/bcm2835.h>
  10850. +#include <dt-bindings/gpio/gpio.h>
  10851. +
  10852. +/ {
  10853. + compatible = "brcm,bcm2835";
  10854. +
  10855. + fragment@0 {
  10856. + target = <&i2s>;
  10857. + __overlay__ {
  10858. + status = "okay";
  10859. + };
  10860. + };
  10861. +
  10862. + fragment@1 {
  10863. + target-path = "/";
  10864. + __overlay__ {
  10865. + codec_reg_1v8: codec-reg-1v8 {
  10866. + compatible = "regulator-fixed";
  10867. + regulator-name = "tlv320aic3204_1v8";
  10868. + regulator-min-microvolt = <1800000>;
  10869. + regulator-max-microvolt = <1800000>;
  10870. + regulator-always-on;
  10871. + };
  10872. +
  10873. + /* audio external oscillator */
  10874. + codec_osc: codec_osc {
  10875. + compatible = "fixed-clock";
  10876. + #clock-cells = <0>;
  10877. + clock-frequency = <12000000>; /* 12 MHz */
  10878. + };
  10879. + };
  10880. + };
  10881. +
  10882. + fragment@2 {
  10883. + target = <&gpio>;
  10884. + __overlay__ {
  10885. + codec_rst: codec-rst {
  10886. + brcm,pins = <26>;
  10887. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  10888. + };
  10889. + };
  10890. + };
  10891. +
  10892. + fragment@3 {
  10893. + target = <&i2c1>;
  10894. + __overlay__ {
  10895. + #address-cells = <1>;
  10896. + #size-cells = <0>;
  10897. + status = "okay";
  10898. +
  10899. + codec: tlv320aic32x4@18 {
  10900. + #sound-dai-cells = <0>;
  10901. + compatible = "ti,tlv320aic32x4";
  10902. + reg = <0x18>;
  10903. +
  10904. + clocks = <&codec_osc>;
  10905. + clock-names = "mclk";
  10906. +
  10907. + iov-supply = <&vdd_3v3_reg>;
  10908. + ldoin-supply = <&vdd_3v3_reg>;
  10909. +
  10910. + gpio-controller;
  10911. + #gpio-cells = <2>;
  10912. + reset-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
  10913. +
  10914. + status = "okay";
  10915. + };
  10916. + };
  10917. + };
  10918. +
  10919. + fragment@4 {
  10920. + target = <&sound>;
  10921. + __overlay__ {
  10922. + compatible = "as,audiosense-pi";
  10923. + i2s-controller = <&i2s>;
  10924. + status = "okay";
  10925. + };
  10926. + };
  10927. +};
  10928. diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts
  10929. new file mode 100644
  10930. index 000000000000..7324890ead86
  10931. --- /dev/null
  10932. +++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
  10933. @@ -0,0 +1,42 @@
  10934. +/dts-v1/;
  10935. +/plugin/;
  10936. +
  10937. +/ {
  10938. + compatible = "brcm,bcm2835";
  10939. +
  10940. + fragment@0 {
  10941. + target = <&audio_pins>;
  10942. + frag0: __overlay__ {
  10943. + };
  10944. + };
  10945. +
  10946. + fragment@1 {
  10947. + target = <&audio_pins>;
  10948. + __overlay__ {
  10949. + brcm,pins = < 12 13 >;
  10950. + brcm,function = < 4 >; /* alt0 alt0 */
  10951. + };
  10952. + };
  10953. +
  10954. + fragment@2 {
  10955. + target = <&audio_pins>;
  10956. + __dormant__ {
  10957. + brcm,pins = < 18 19 >;
  10958. + brcm,function = < 2 >; /* alt5 alt5 */
  10959. + };
  10960. + };
  10961. +
  10962. + fragment@3 {
  10963. + target = <&audio>;
  10964. + __overlay__ {
  10965. + brcm,disable-headphones = <0>;
  10966. + };
  10967. + };
  10968. +
  10969. + __overrides__ {
  10970. + swap_lr = <&frag0>, "swap_lr?";
  10971. + enable_jack = <&frag0>, "enable_jack?";
  10972. + pins_12_13 = <0>,"+1-2";
  10973. + pins_18_19 = <0>,"-1+2";
  10974. + };
  10975. +};
  10976. diff --git a/arch/arm/boot/dts/overlays/balena-fin-overlay.dts b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
  10977. new file mode 100644
  10978. index 000000000000..e7ead7cdf5f5
  10979. --- /dev/null
  10980. +++ b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
  10981. @@ -0,0 +1,125 @@
  10982. +/dts-v1/;
  10983. +/plugin/;
  10984. +
  10985. +#include <dt-bindings/gpio/gpio.h>
  10986. +
  10987. +/{
  10988. + compatible = "brcm,bcm2835";
  10989. +
  10990. + fragment@0 {
  10991. + target = <&mmcnr>;
  10992. + __overlay__ {
  10993. + pinctrl-names = "default";
  10994. + pinctrl-0 = <&sdio_pins>;
  10995. + bus-width = <4>;
  10996. + brcm,overclock-50 = <35>;
  10997. + status = "okay";
  10998. + };
  10999. + };
  11000. +
  11001. + fragment@1 {
  11002. + target = <&gpio>;
  11003. + __overlay__ {
  11004. + sdio_pins: sdio_pins {
  11005. + brcm,pins = <34 35 36 37 38 39>;
  11006. + brcm,function = <7>; /* ALT3 = SD1 */
  11007. + brcm,pull = <0 2 2 2 2 2>;
  11008. + };
  11009. +
  11010. + power_ctrl_pins: power_ctrl_pins {
  11011. + brcm,pins = <40>;
  11012. + brcm,function = <1>; // out
  11013. + };
  11014. + };
  11015. + };
  11016. +
  11017. + fragment@2 {
  11018. + target-path = "/";
  11019. + __overlay__ {
  11020. + // We should switch to mmc-pwrseq-sd8787 after making it
  11021. + // compatible with sd8887
  11022. + // Currently that module requires two GPIOs to function since it
  11023. + // targets a slightly different chip
  11024. + power_ctrl: power_ctrl {
  11025. + compatible = "gpio-poweroff";
  11026. + gpios = <&gpio 40 1>;
  11027. + force;
  11028. + pinctrl-names = "default";
  11029. + pinctrl-0 = <&power_ctrl_pins>;
  11030. + };
  11031. +
  11032. + i2c_soft: i2c@0 {
  11033. + compatible = "i2c-gpio";
  11034. + gpios = <&gpio 43 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
  11035. + &gpio 42 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */>;
  11036. + i2c-gpio,delay-us = <5>;
  11037. + i2c-gpio,scl-open-drain;
  11038. + i2c-gpio,sda-open-drain;
  11039. + #address-cells = <1>;
  11040. + #size-cells = <0>;
  11041. + };
  11042. +
  11043. + sd8xxx-wlan {
  11044. + drvdbg = <0x6>;
  11045. + drv_mode = <0x1>;
  11046. + cfg80211_wext = <0xf>;
  11047. + sta_name = "wlan";
  11048. + wfd_name = "p2p";
  11049. + cal_data_cfg = "none";
  11050. + };
  11051. + };
  11052. + };
  11053. +
  11054. + fragment@3 {
  11055. + target = <&i2c_soft>;
  11056. + __overlay__ {
  11057. + #address-cells = <1>;
  11058. + #size-cells = <0>;
  11059. + status = "okay";
  11060. +
  11061. + gpio_expander: gpio_expander@20 {
  11062. + compatible = "nxp,pca9554";
  11063. + gpio-controller;
  11064. + #gpio-cells = <2>;
  11065. + reg = <0x20>;
  11066. + status = "okay";
  11067. + };
  11068. +
  11069. + // rtc clock
  11070. + ds1307: ds1307@68 {
  11071. + compatible = "dallas,ds1307";
  11072. + reg = <0x68>;
  11073. + status = "okay";
  11074. + };
  11075. +
  11076. + // RGB LEDs (>= v1.1.0)
  11077. + pca9633: pca9633@62 {
  11078. + compatible = "nxp,pca9633";
  11079. + reg = <0x62>;
  11080. + #address-cells = <1>;
  11081. + #size-cells = <0>;
  11082. +
  11083. + red@0 {
  11084. + label = "red";
  11085. + reg = <0>;
  11086. + linux,default-trigger = "none";
  11087. + };
  11088. + green@1 {
  11089. + label = "green";
  11090. + reg = <1>;
  11091. + linux,default-trigger = "none";
  11092. + };
  11093. + blue@2 {
  11094. + label = "blue";
  11095. + reg = <2>;
  11096. + linux,default-trigger = "none";
  11097. + };
  11098. + unused@3 {
  11099. + label = "unused";
  11100. + reg = <3>;
  11101. + linux,default-trigger = "none";
  11102. + };
  11103. + };
  11104. + };
  11105. + };
  11106. +};
  11107. diff --git a/arch/arm/boot/dts/overlays/cap1106-overlay.dts b/arch/arm/boot/dts/overlays/cap1106-overlay.dts
  11108. new file mode 100644
  11109. index 000000000000..0a585e725f84
  11110. --- /dev/null
  11111. +++ b/arch/arm/boot/dts/overlays/cap1106-overlay.dts
  11112. @@ -0,0 +1,52 @@
  11113. +// Overlay for cap1106 from Microchip Semiconductor
  11114. +// add CONFIG_KEYBOARD_CAP11XX=y
  11115. +
  11116. +/dts-v1/;
  11117. +/plugin/;
  11118. +
  11119. +/ {
  11120. + compatible = "brcm,bcm2835";
  11121. + fragment@0 {
  11122. + target = <&i2c1>;
  11123. + __overlay__{
  11124. + status = "okay";
  11125. + cap1106: cap1106@28 {
  11126. + compatible = "microchip,cap1106";
  11127. + pinctrl-0 = <&cap1106_pins>;
  11128. + pinctrl-names = "default";
  11129. + interrupt-parent = <&gpio>;
  11130. + interrupts = <4 2>;
  11131. + reg = <0x28>;
  11132. + autorepeat;
  11133. + microchip,sensor-gain = <2>;
  11134. +
  11135. + linux,keycodes = <2>, /* KEY_1 */
  11136. + <3>, /* KEY_2 */
  11137. + <4>, /* KEY_3 */
  11138. + <5>, /* KEY_4 */
  11139. + <6>, /* KEY_5 */
  11140. + <7>; /* KEY_6 */
  11141. +
  11142. + #address-cells = <1>;
  11143. + #size-cells = <0>;
  11144. + status = "okay";
  11145. +
  11146. + };
  11147. + };
  11148. + };
  11149. + fragment@1 {
  11150. + target = <&gpio>;
  11151. + __overlay__ {
  11152. + cap1106_pins: cap1106_pins {
  11153. + brcm,pins = <4>;
  11154. + brcm,function = <0>; /* in */
  11155. + brcm,pull = <0>; /* none */
  11156. + };
  11157. + };
  11158. + };
  11159. +
  11160. + __overrides__ {
  11161. + int_pin = <&cap1106>, "interrupts:0",
  11162. + <&cap1106_pins>, "brcm,pins:0";
  11163. + };
  11164. +};
  11165. diff --git a/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts b/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
  11166. new file mode 100644
  11167. index 000000000000..09c7417b4707
  11168. --- /dev/null
  11169. +++ b/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
  11170. @@ -0,0 +1,46 @@
  11171. +/*
  11172. + * Device Tree overlay for ChipDip DAC
  11173. + */
  11174. +
  11175. +/dts-v1/;
  11176. +/plugin/;
  11177. +
  11178. +/ {
  11179. + compatible = "brcm,bcm2835";
  11180. +
  11181. + fragment@0 {
  11182. + target = <&i2s>;
  11183. + __overlay__ {
  11184. + status = "okay";
  11185. + };
  11186. + };
  11187. +
  11188. + fragment@1 {
  11189. + target-path = "/";
  11190. + __overlay__ {
  11191. + spdif-transmitter {
  11192. + #address-cells = <0>;
  11193. + #size-cells = <0>;
  11194. + #sound-dai-cells = <0>;
  11195. + compatible = "linux,spdif-dit";
  11196. + status = "okay";
  11197. + };
  11198. + };
  11199. + };
  11200. +
  11201. + fragment@2 {
  11202. + target = <&sound>;
  11203. + __overlay__ {
  11204. + compatible = "chipdip,chipdip-dac";
  11205. + i2s-controller = <&i2s>;
  11206. + sr0-gpios = <&gpio 5 0>;
  11207. + sr1-gpios = <&gpio 6 0>;
  11208. + sr2-gpios = <&gpio 12 0>;
  11209. + res0-gpios = <&gpio 24 0>;
  11210. + res1-gpios = <&gpio 27 0>;
  11211. + mute-gpios = <&gpio 4 0>;
  11212. + sdwn-gpios = <&gpio 13 0>;
  11213. + status = "okay";
  11214. + };
  11215. + };
  11216. +};
  11217. diff --git a/arch/arm/boot/dts/overlays/cma-overlay.dts b/arch/arm/boot/dts/overlays/cma-overlay.dts
  11218. new file mode 100644
  11219. index 000000000000..1d87c599f909
  11220. --- /dev/null
  11221. +++ b/arch/arm/boot/dts/overlays/cma-overlay.dts
  11222. @@ -0,0 +1,36 @@
  11223. +/*
  11224. + * cma.dts
  11225. + */
  11226. +
  11227. +/dts-v1/;
  11228. +/plugin/;
  11229. +
  11230. +/ {
  11231. + compatible = "brcm,bcm2835";
  11232. +
  11233. + fragment@0 {
  11234. + target = <&cma>;
  11235. + frag0: __overlay__ {
  11236. + /*
  11237. + * The default size when using this overlay is 256 MB
  11238. + * and should be kept as is for backwards
  11239. + * compatibility.
  11240. + */
  11241. + size = <0x10000000>;
  11242. + };
  11243. + };
  11244. +
  11245. + __overrides__ {
  11246. + cma-512 = <&frag0>,"size:0=",<0x20000000>;
  11247. + cma-448 = <&frag0>,"size:0=",<0x1c000000>;
  11248. + cma-384 = <&frag0>,"size:0=",<0x18000000>;
  11249. + cma-320 = <&frag0>,"size:0=",<0x14000000>;
  11250. + cma-256 = <&frag0>,"size:0=",<0x10000000>;
  11251. + cma-192 = <&frag0>,"size:0=",<0xC000000>;
  11252. + cma-128 = <&frag0>,"size:0=",<0x8000000>;
  11253. + cma-96 = <&frag0>,"size:0=",<0x6000000>;
  11254. + cma-64 = <&frag0>,"size:0=",<0x4000000>;
  11255. + cma-size = <&frag0>,"size:0"; /* in bytes, 4MB aligned */
  11256. + cma-default = <0>,"-0";
  11257. + };
  11258. +};
  11259. diff --git a/arch/arm/boot/dts/overlays/dht11-overlay.dts b/arch/arm/boot/dts/overlays/dht11-overlay.dts
  11260. new file mode 100644
  11261. index 000000000000..6feeeb402493
  11262. --- /dev/null
  11263. +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
  11264. @@ -0,0 +1,41 @@
  11265. +/*
  11266. + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
  11267. + */
  11268. +/dts-v1/;
  11269. +/plugin/;
  11270. +
  11271. +/ {
  11272. + compatible = "brcm,bcm2835";
  11273. +
  11274. + fragment@0 {
  11275. + target-path = "/";
  11276. + __overlay__ {
  11277. +
  11278. + dht11: dht11@0 {
  11279. + compatible = "dht11";
  11280. + pinctrl-names = "default";
  11281. + pinctrl-0 = <&dht11_pins>;
  11282. + gpios = <&gpio 4 0>;
  11283. + status = "okay";
  11284. + };
  11285. + };
  11286. + };
  11287. +
  11288. + fragment@1 {
  11289. + target = <&gpio>;
  11290. + __overlay__ {
  11291. + dht11_pins: dht11_pins@0 {
  11292. + brcm,pins = <4>;
  11293. + brcm,function = <0>; // in
  11294. + brcm,pull = <0>; // off
  11295. + };
  11296. + };
  11297. + };
  11298. +
  11299. + __overrides__ {
  11300. + gpiopin = <&dht11_pins>,"brcm,pins:0",
  11301. + <&dht11_pins>, "reg:0",
  11302. + <&dht11>,"gpios:4",
  11303. + <&dht11>,"reg:0";
  11304. + };
  11305. +};
  11306. diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
  11307. new file mode 100644
  11308. index 000000000000..d863e5c167cc
  11309. --- /dev/null
  11310. +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
  11311. @@ -0,0 +1,39 @@
  11312. +// Definitions for Dion Audio LOCO DAC-AMP
  11313. +
  11314. +/*
  11315. + * PCM5242 DAC (in hardware mode) and TPA3118 AMP.
  11316. + */
  11317. +
  11318. +/dts-v1/;
  11319. +/plugin/;
  11320. +
  11321. +/ {
  11322. + compatible = "brcm,bcm2835";
  11323. +
  11324. + fragment@0 {
  11325. + target = <&i2s>;
  11326. + __overlay__ {
  11327. + status = "okay";
  11328. + };
  11329. + };
  11330. +
  11331. + fragment@1 {
  11332. + target-path = "/";
  11333. + __overlay__ {
  11334. + pcm5102a-codec {
  11335. + #sound-dai-cells = <0>;
  11336. + compatible = "ti,pcm5102a";
  11337. + status = "okay";
  11338. + };
  11339. + };
  11340. + };
  11341. +
  11342. + fragment@2 {
  11343. + target = <&sound>;
  11344. + __overlay__ {
  11345. + compatible = "dionaudio,loco-pcm5242-tpa3118";
  11346. + i2s-controller = <&i2s>;
  11347. + status = "okay";
  11348. + };
  11349. + };
  11350. +};
  11351. diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
  11352. new file mode 100644
  11353. index 000000000000..dfb8922a654b
  11354. --- /dev/null
  11355. +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
  11356. @@ -0,0 +1,49 @@
  11357. +/*
  11358. + * Definitions for Dion Audio LOCO-V2 DAC-AMP
  11359. + * eg. dtoverlay=dionaudio-loco-v2
  11360. + *
  11361. + * PCM5242 DAC (in software mode) and TPA3255 AMP.
  11362. + */
  11363. +
  11364. +/dts-v1/;
  11365. +/plugin/;
  11366. +
  11367. +/ {
  11368. + compatible = "brcm,bcm2835";
  11369. +
  11370. + fragment@0 {
  11371. + target = <&sound>;
  11372. + frag0: __overlay__ {
  11373. + compatible = "dionaudio,dionaudio-loco-v2";
  11374. + i2s-controller = <&i2s>;
  11375. + status = "okay";
  11376. + };
  11377. + };
  11378. +
  11379. + fragment@1 {
  11380. + target = <&i2s>;
  11381. + __overlay__ {
  11382. + status = "okay";
  11383. + };
  11384. + };
  11385. +
  11386. + fragment@2 {
  11387. + target = <&i2c1>;
  11388. + __overlay__ {
  11389. + #address-cells = <1>;
  11390. + #size-cells = <0>;
  11391. + status = "okay";
  11392. +
  11393. + pcm5122@4c {
  11394. + #sound-dai-cells = <0>;
  11395. + compatible = "ti,pcm5122";
  11396. + reg = <0x4d>;
  11397. + status = "okay";
  11398. + };
  11399. + };
  11400. + };
  11401. +
  11402. + __overrides__ {
  11403. + 24db_digital_gain = <&frag0>,"dionaudio,24db_digital_gain?";
  11404. + };
  11405. +};
  11406. diff --git a/arch/arm/boot/dts/overlays/disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
  11407. new file mode 100644
  11408. index 000000000000..d5a66e5d76a9
  11409. --- /dev/null
  11410. +++ b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
  11411. @@ -0,0 +1,64 @@
  11412. +/dts-v1/;
  11413. +/plugin/;
  11414. +
  11415. +/* Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15.
  11416. + To disable the systemd service that initialises the modem so it doesn't use
  11417. + the UART:
  11418. +
  11419. + sudo systemctl disable hciuart
  11420. +*/
  11421. +
  11422. +#include <dt-bindings/gpio/gpio.h>
  11423. +
  11424. +/{
  11425. + compatible = "brcm,bcm2835";
  11426. +
  11427. + fragment@0 {
  11428. + target = <&uart1>;
  11429. + __overlay__ {
  11430. + status = "disabled";
  11431. + };
  11432. + };
  11433. +
  11434. + fragment@1 {
  11435. + target = <&uart0>;
  11436. + __overlay__ {
  11437. + pinctrl-names = "default";
  11438. + pinctrl-0 = <&uart0_pins>;
  11439. + status = "okay";
  11440. + };
  11441. + };
  11442. +
  11443. + fragment@2 {
  11444. + target = <&bt>;
  11445. + __overlay__ {
  11446. + status = "disabled";
  11447. + };
  11448. + };
  11449. +
  11450. + fragment@3 {
  11451. + target = <&uart0_pins>;
  11452. + __overlay__ {
  11453. + brcm,pins;
  11454. + brcm,function;
  11455. + brcm,pull;
  11456. + };
  11457. + };
  11458. +
  11459. + fragment@4 {
  11460. + target = <&bt_pins>;
  11461. + __overlay__ {
  11462. + brcm,pins;
  11463. + brcm,function;
  11464. + brcm,pull;
  11465. + };
  11466. + };
  11467. +
  11468. + fragment@5 {
  11469. + target-path = "/aliases";
  11470. + __overlay__ {
  11471. + serial0 = "/soc/serial@7e201000";
  11472. + serial1 = "/soc/serial@7e215040";
  11473. + };
  11474. + };
  11475. +};
  11476. diff --git a/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
  11477. new file mode 100644
  11478. index 000000000000..75e046463900
  11479. --- /dev/null
  11480. +++ b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
  11481. @@ -0,0 +1,20 @@
  11482. +/dts-v1/;
  11483. +/plugin/;
  11484. +
  11485. +/{
  11486. + compatible = "brcm,bcm2835";
  11487. +
  11488. + fragment@0 {
  11489. + target = <&mmc>;
  11490. + __overlay__ {
  11491. + status = "disabled";
  11492. + };
  11493. + };
  11494. +
  11495. + fragment@1 {
  11496. + target = <&mmcnr>;
  11497. + __overlay__ {
  11498. + status = "disabled";
  11499. + };
  11500. + };
  11501. +};
  11502. diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
  11503. new file mode 100644
  11504. index 000000000000..4abe5be744db
  11505. --- /dev/null
  11506. +++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
  11507. @@ -0,0 +1,39 @@
  11508. +/dts-v1/;
  11509. +/plugin/;
  11510. +
  11511. +/{
  11512. + compatible = "brcm,bcm2835";
  11513. +
  11514. + // There is no DPI driver module, but we need a platform device
  11515. + // node (that doesn't already use pinctrl) to hang the pinctrl
  11516. + // reference on - leds will do
  11517. +
  11518. + fragment@0 {
  11519. + target = <&fb>;
  11520. + __overlay__ {
  11521. + pinctrl-names = "default";
  11522. + pinctrl-0 = <&dpi18_pins>;
  11523. + };
  11524. + };
  11525. +
  11526. + fragment@1 {
  11527. + target = <&vc4>;
  11528. + __overlay__ {
  11529. + pinctrl-names = "default";
  11530. + pinctrl-0 = <&dpi18_pins>;
  11531. + };
  11532. + };
  11533. +
  11534. + fragment@2 {
  11535. + target = <&gpio>;
  11536. + __overlay__ {
  11537. + dpi18_pins: dpi18_pins {
  11538. + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
  11539. + 12 13 14 15 16 17 18 19 20
  11540. + 21>;
  11541. + brcm,function = <6>; /* alt2 */
  11542. + brcm,pull = <0>; /* no pull */
  11543. + };
  11544. + };
  11545. + };
  11546. +};
  11547. diff --git a/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts b/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
  11548. new file mode 100644
  11549. index 000000000000..50c88a1ed299
  11550. --- /dev/null
  11551. +++ b/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
  11552. @@ -0,0 +1,26 @@
  11553. +/*
  11554. + * dpi18cpadhi-overlay.dts
  11555. + */
  11556. +
  11557. +/dts-v1/;
  11558. +/plugin/;
  11559. +
  11560. +/{
  11561. + compatible = "brcm,bcm2835";
  11562. +
  11563. + fragment@0 {
  11564. + target = <&fb>;
  11565. + __overlay__ {
  11566. + pinctrl-names = "default";
  11567. + pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>;
  11568. + };
  11569. + };
  11570. +
  11571. + fragment@1 {
  11572. + target = <&vc4>;
  11573. + __overlay__ {
  11574. + pinctrl-names = "default";
  11575. + pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>;
  11576. + };
  11577. + };
  11578. +};
  11579. diff --git a/arch/arm/boot/dts/overlays/dpi24-overlay.dts b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
  11580. new file mode 100644
  11581. index 000000000000..44335cc81277
  11582. --- /dev/null
  11583. +++ b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
  11584. @@ -0,0 +1,39 @@
  11585. +/dts-v1/;
  11586. +/plugin/;
  11587. +
  11588. +/{
  11589. + compatible = "brcm,bcm2835";
  11590. +
  11591. + // There is no DPI driver module, but we need a platform device
  11592. + // node (that doesn't already use pinctrl) to hang the pinctrl
  11593. + // reference on - leds will do
  11594. +
  11595. + fragment@0 {
  11596. + target = <&fb>;
  11597. + __overlay__ {
  11598. + pinctrl-names = "default";
  11599. + pinctrl-0 = <&dpi24_pins>;
  11600. + };
  11601. + };
  11602. +
  11603. + fragment@1 {
  11604. + target = <&vc4>;
  11605. + __overlay__ {
  11606. + pinctrl-names = "default";
  11607. + pinctrl-0 = <&dpi24_pins>;
  11608. + };
  11609. + };
  11610. +
  11611. + fragment@2 {
  11612. + target = <&gpio>;
  11613. + __overlay__ {
  11614. + dpi24_pins: dpi24_pins {
  11615. + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
  11616. + 12 13 14 15 16 17 18 19 20
  11617. + 21 22 23 24 25 26 27>;
  11618. + brcm,function = <6>; /* alt2 */
  11619. + brcm,pull = <0>; /* no pull */
  11620. + };
  11621. + };
  11622. + };
  11623. +};
  11624. diff --git a/arch/arm/boot/dts/overlays/draws-overlay.dts b/arch/arm/boot/dts/overlays/draws-overlay.dts
  11625. new file mode 100644
  11626. index 000000000000..d18187d7f343
  11627. --- /dev/null
  11628. +++ b/arch/arm/boot/dts/overlays/draws-overlay.dts
  11629. @@ -0,0 +1,208 @@
  11630. +#include <dt-bindings/clock/bcm2835.h>
  11631. +/*
  11632. + * Device tree overlay for the DRAWS Hardware
  11633. + */
  11634. +
  11635. +/dts-v1/;
  11636. +/plugin/;
  11637. +
  11638. +/ {
  11639. + compatible = "brcm,bcm2835";
  11640. + fragment@0 {
  11641. + target = <&i2s>;
  11642. + __overlay__ {
  11643. + status = "okay";
  11644. + };
  11645. + };
  11646. +
  11647. + fragment@1 {
  11648. + target-path = "/";
  11649. + __overlay__ {
  11650. + regulators {
  11651. + compatible = "simple-bus";
  11652. + #address-cells = <1>;
  11653. + #size-cells = <0>;
  11654. +
  11655. + udrc0_ldoin: udrc0_ldoin {
  11656. + compatible = "regulator-fixed";
  11657. + regulator-name = "ldoin";
  11658. + regulator-min-microvolt = <3300000>;
  11659. + regulator-max-microvolt = <3300000>;
  11660. + regulator-always-on;
  11661. + };
  11662. +
  11663. + sc16is752_clk: sc16is752_draws_clk {
  11664. + compatible = "fixed-clock";
  11665. + #clock-cells = <0>;
  11666. + clock-frequency = <1843200>;
  11667. + };
  11668. + };
  11669. +
  11670. + pps: pps {
  11671. + compatible = "pps-gpio";
  11672. + pinctrl-names = "default";
  11673. + pinctrl-0 = <&pps_pins>;
  11674. + gpios = <&gpio 7 0>;
  11675. + status = "okay";
  11676. + };
  11677. +
  11678. + iio-hwmon {
  11679. + compatible = "iio-hwmon";
  11680. + status = "okay";
  11681. + io-channels = <&tla2024 4>, <&tla2024 5>, <&tla2024 6>,
  11682. + <&tla2024 7>;
  11683. + };
  11684. + };
  11685. + };
  11686. +
  11687. + fragment@2 {
  11688. + target = <&i2c_arm>;
  11689. + __overlay__ {
  11690. + #address-cells = <1>;
  11691. + #size-cells = <0>;
  11692. + status = "okay";
  11693. +
  11694. + tlv320aic32x4: tlv320aic32x4@18 {
  11695. + compatible = "ti,tlv320aic32x4";
  11696. + reg = <0x18>;
  11697. + #sound-dai-cells = <0>;
  11698. + status = "okay";
  11699. +
  11700. + clocks = <&clocks BCM2835_CLOCK_GP0>;
  11701. + clock-names = "mclk";
  11702. + assigned-clocks = <&clocks BCM2835_CLOCK_GP0>;
  11703. + assigned-clock-rates = <25000000>;
  11704. +
  11705. + pinctrl-names = "default";
  11706. + pinctrl-0 = <&gpclk0_pin &aic3204_reset>;
  11707. +
  11708. + reset-gpios = <&gpio 13 0>;
  11709. +
  11710. + iov-supply = <&udrc0_ldoin>;
  11711. + ldoin-supply = <&udrc0_ldoin>;
  11712. + };
  11713. +
  11714. + sc16is752: sc16is752@50 {
  11715. + compatible = "nxp,sc16is752";
  11716. + reg = <0x50>;
  11717. + clocks = <&sc16is752_clk>;
  11718. + interrupt-parent = <&gpio>;
  11719. + interrupts = <17 2>; /* IRQ_TYPE_EDGE_FALLING */
  11720. +
  11721. + pinctrl-names = "default";
  11722. + pinctrl-0 = <&sc16is752_irq>;
  11723. + };
  11724. +
  11725. + tla2024: tla2024@48 {
  11726. + compatible = "ti,ads1015";
  11727. + reg = <0x48>;
  11728. + #address-cells = <1>;
  11729. + #size-cells = <0>;
  11730. + #io-channel-cells = <1>;
  11731. +
  11732. + adc_ch4: channel@4 {
  11733. + reg = <4>;
  11734. + ti,gain = <1>;
  11735. + ti,datarate = <4>;
  11736. + };
  11737. +
  11738. + adc_ch5: channel@5 {
  11739. + reg = <5>;
  11740. + ti,gain = <1>;
  11741. + ti,datarate = <4>;
  11742. + };
  11743. +
  11744. + adc_ch6: channel@6 {
  11745. + reg = <6>;
  11746. + ti,gain = <2>;
  11747. + ti,datarate = <4>;
  11748. + };
  11749. +
  11750. + adc_ch7: channel@7 {
  11751. + reg = <7>;
  11752. + ti,gain = <2>;
  11753. + ti,datarate = <4>;
  11754. + };
  11755. + };
  11756. + };
  11757. + };
  11758. +
  11759. + fragment@3 {
  11760. + target = <&sound>;
  11761. + snd: __overlay__ {
  11762. + compatible = "simple-audio-card";
  11763. + i2s-controller = <&i2s>;
  11764. + status = "okay";
  11765. +
  11766. + simple-audio-card,name = "draws";
  11767. + simple-audio-card,format = "i2s";
  11768. +
  11769. + simple-audio-card,bitclock-master = <&dailink0_master>;
  11770. + simple-audio-card,frame-master = <&dailink0_master>;
  11771. +
  11772. + simple-audio-card,widgets =
  11773. + "Line", "Line In",
  11774. + "Line", "Line Out";
  11775. +
  11776. + simple-audio-card,routing =
  11777. + "IN1_R", "Line In",
  11778. + "IN1_L", "Line In",
  11779. + "CM_L", "Line In",
  11780. + "CM_R", "Line In",
  11781. + "Line Out", "LOR",
  11782. + "Line Out", "LOL";
  11783. +
  11784. + dailink0_master: simple-audio-card,cpu {
  11785. + sound-dai = <&i2s>;
  11786. + };
  11787. +
  11788. + simple-audio-card,codec {
  11789. + sound-dai = <&tlv320aic32x4>;
  11790. + };
  11791. + };
  11792. + };
  11793. +
  11794. + fragment@4 {
  11795. + target = <&gpio>;
  11796. + __overlay__ {
  11797. + gpclk0_pin: gpclk0_pin {
  11798. + brcm,pins = <4>;
  11799. + brcm,function = <4>;
  11800. + };
  11801. +
  11802. + aic3204_reset: aic3204_reset {
  11803. + brcm,pins = <13>;
  11804. + brcm,function = <1>;
  11805. + brcm,pull = <1>;
  11806. + };
  11807. +
  11808. + aic3204_gpio: aic3204_gpio {
  11809. + brcm,pins = <26>;
  11810. + };
  11811. +
  11812. + sc16is752_irq: sc16is752_irq {
  11813. + brcm,pins = <17>;
  11814. + brcm,function = <0>;
  11815. + brcm,pull = <2>;
  11816. + };
  11817. +
  11818. + pps_pins: pps_pins {
  11819. + brcm,pins = <7>;
  11820. + brcm,function = <0>;
  11821. + brcm,pull = <0>;
  11822. + };
  11823. + };
  11824. + };
  11825. +
  11826. + __overrides__ {
  11827. + draws_adc_ch4_gain = <&adc_ch4>,"ti,gain:0";
  11828. + draws_adc_ch4_datarate = <&adc_ch4>,"ti,datarate:0";
  11829. + draws_adc_ch5_gain = <&adc_ch5>,"ti,gain:0";
  11830. + draws_adc_ch5_datarate = <&adc_ch5>,"ti,datarate:0";
  11831. + draws_adc_ch6_gain = <&adc_ch6>,"ti,gain:0";
  11832. + draws_adc_ch6_datarate = <&adc_ch6>,"ti,datarate:0";
  11833. + draws_adc_ch7_gain = <&adc_ch7>,"ti,gain:0";
  11834. + draws_adc_ch7_datarate = <&adc_ch7>,"ti,datarate:0";
  11835. + alsaname = <&snd>, "simple-audio-card,name";
  11836. + };
  11837. +};
  11838. diff --git a/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
  11839. new file mode 100644
  11840. index 000000000000..78c5e9f85048
  11841. --- /dev/null
  11842. +++ b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
  11843. @@ -0,0 +1,14 @@
  11844. +/dts-v1/;
  11845. +/plugin/;
  11846. +
  11847. +/{
  11848. + compatible = "brcm,bcm2835";
  11849. +
  11850. + fragment@0 {
  11851. + target = <&usb>;
  11852. + __overlay__ {
  11853. + compatible = "brcm,bcm2708-usb";
  11854. + status = "okay";
  11855. + };
  11856. + };
  11857. +};
  11858. diff --git a/arch/arm/boot/dts/overlays/dwc2-overlay.dts b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
  11859. new file mode 100644
  11860. index 000000000000..0d83e344ad97
  11861. --- /dev/null
  11862. +++ b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
  11863. @@ -0,0 +1,26 @@
  11864. +/dts-v1/;
  11865. +/plugin/;
  11866. +
  11867. +/{
  11868. + compatible = "brcm,bcm2835";
  11869. +
  11870. + fragment@0 {
  11871. + target = <&usb>;
  11872. + #address-cells = <1>;
  11873. + #size-cells = <1>;
  11874. + dwc2_usb: __overlay__ {
  11875. + compatible = "brcm,bcm2835-usb";
  11876. + dr_mode = "otg";
  11877. + g-np-tx-fifo-size = <32>;
  11878. + g-rx-fifo-size = <558>;
  11879. + g-tx-fifo-size = <512 512 512 512 512 256 256>;
  11880. + status = "okay";
  11881. + };
  11882. + };
  11883. +
  11884. + __overrides__ {
  11885. + dr_mode = <&dwc2_usb>, "dr_mode";
  11886. + g-np-tx-fifo-size = <&dwc2_usb>,"g-np-tx-fifo-size:0";
  11887. + g-rx-fifo-size = <&dwc2_usb>,"g-rx-fifo-size:0";
  11888. + };
  11889. +};
  11890. diff --git a/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
  11891. new file mode 100644
  11892. index 000000000000..f82b4d0e5047
  11893. --- /dev/null
  11894. +++ b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
  11895. @@ -0,0 +1,10 @@
  11896. +/*
  11897. + * Device Tree overlay for EDT 5406 touchscreen controller, as used on the
  11898. + * Raspberry Pi 7" panel
  11899. + *
  11900. + */
  11901. +
  11902. +/dts-v1/;
  11903. +/plugin/;
  11904. +
  11905. +#include "edt-ft5406.dtsi"
  11906. diff --git a/arch/arm/boot/dts/overlays/edt-ft5406.dtsi b/arch/arm/boot/dts/overlays/edt-ft5406.dtsi
  11907. new file mode 100644
  11908. index 000000000000..0473ff17f19f
  11909. --- /dev/null
  11910. +++ b/arch/arm/boot/dts/overlays/edt-ft5406.dtsi
  11911. @@ -0,0 +1,55 @@
  11912. +/*
  11913. + * Device Tree overlay for an EDT FT5406 touchscreen
  11914. + *
  11915. + * Note that this is included from vc4-kms-dsi-7inch, hence the
  11916. + * fragment numbers not starting at 0.
  11917. + */
  11918. +
  11919. +/ {
  11920. + compatible = "brcm,bcm2835";
  11921. +
  11922. + fragment@10 {
  11923. + target = <&ft5406>;
  11924. + __overlay__ {
  11925. + touchscreen-inverted-x;
  11926. + };
  11927. + };
  11928. +
  11929. + fragment@11 {
  11930. + target = <&ft5406>;
  11931. + __overlay__ {
  11932. + touchscreen-inverted-y;
  11933. + };
  11934. + };
  11935. +
  11936. + fragment@12 {
  11937. + target = <&i2c_csi_dsi>;
  11938. + __overlay__ {
  11939. + #address-cells = <1>;
  11940. + #size-cells = <0>;
  11941. + status = "okay";
  11942. + ft5406: ts@38 {
  11943. + compatible = "edt,edt-ft5406";
  11944. + reg = <0x38>;
  11945. +
  11946. + touchscreen-size-x = < 800 >;
  11947. + touchscreen-size-y = < 480 >;
  11948. + };
  11949. + };
  11950. + };
  11951. +
  11952. + fragment@13 {
  11953. + target = <&i2c0if>;
  11954. + __overlay__ {
  11955. + status = "okay";
  11956. + };
  11957. + };
  11958. +
  11959. + __overrides__ {
  11960. + sizex = <&ft5406>,"touchscreen-size-x:0";
  11961. + sizey = <&ft5406>,"touchscreen-size-y:0";
  11962. + invx = <0>, "-10";
  11963. + invy = <0>, "-11";
  11964. + swapxy = <&ft5406>,"touchscreen-swapped-x-y?";
  11965. + };
  11966. +};
  11967. diff --git a/arch/arm/boot/dts/overlays/enc28j60-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
  11968. new file mode 100644
  11969. index 000000000000..7af5c2e607ea
  11970. --- /dev/null
  11971. +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
  11972. @@ -0,0 +1,53 @@
  11973. +// Overlay for the Microchip ENC28J60 Ethernet Controller
  11974. +/dts-v1/;
  11975. +/plugin/;
  11976. +
  11977. +/ {
  11978. + compatible = "brcm,bcm2835";
  11979. +
  11980. + fragment@0 {
  11981. + target = <&spi0>;
  11982. + __overlay__ {
  11983. + /* needed to avoid dtc warning */
  11984. + #address-cells = <1>;
  11985. + #size-cells = <0>;
  11986. +
  11987. + status = "okay";
  11988. +
  11989. + eth1: enc28j60@0{
  11990. + compatible = "microchip,enc28j60";
  11991. + reg = <0>; /* CE0 */
  11992. + pinctrl-names = "default";
  11993. + pinctrl-0 = <&eth1_pins>;
  11994. + interrupt-parent = <&gpio>;
  11995. + interrupts = <25 0x2>; /* falling edge */
  11996. + spi-max-frequency = <12000000>;
  11997. + status = "okay";
  11998. + };
  11999. + };
  12000. + };
  12001. +
  12002. + fragment@1 {
  12003. + target = <&spidev0>;
  12004. + __overlay__ {
  12005. + status = "disabled";
  12006. + };
  12007. + };
  12008. +
  12009. + fragment@2 {
  12010. + target = <&gpio>;
  12011. + __overlay__ {
  12012. + eth1_pins: eth1_pins {
  12013. + brcm,pins = <25>;
  12014. + brcm,function = <0>; /* in */
  12015. + brcm,pull = <0>; /* none */
  12016. + };
  12017. + };
  12018. + };
  12019. +
  12020. + __overrides__ {
  12021. + int_pin = <&eth1>, "interrupts:0",
  12022. + <&eth1_pins>, "brcm,pins:0";
  12023. + speed = <&eth1>, "spi-max-frequency:0";
  12024. + };
  12025. +};
  12026. diff --git a/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
  12027. new file mode 100644
  12028. index 000000000000..17cb5b8fa485
  12029. --- /dev/null
  12030. +++ b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
  12031. @@ -0,0 +1,47 @@
  12032. +// Overlay for the Microchip ENC28J60 Ethernet Controller - SPI2 Compute Module
  12033. +// Interrupt pin: 39
  12034. +/dts-v1/;
  12035. +/plugin/;
  12036. +
  12037. +/ {
  12038. + compatible = "brcm,bcm2835";
  12039. +
  12040. + fragment@0 {
  12041. + target = <&spi2>;
  12042. + __overlay__ {
  12043. + /* needed to avoid dtc warning */
  12044. + #address-cells = <1>;
  12045. + #size-cells = <0>;
  12046. +
  12047. + status = "okay";
  12048. +
  12049. + eth1: enc28j60@0{
  12050. + compatible = "microchip,enc28j60";
  12051. + reg = <0>; /* CE0 */
  12052. + pinctrl-names = "default";
  12053. + pinctrl-0 = <&eth1_pins>;
  12054. + interrupt-parent = <&gpio>;
  12055. + interrupts = <39 0x2>; /* falling edge */
  12056. + spi-max-frequency = <12000000>;
  12057. + status = "okay";
  12058. + };
  12059. + };
  12060. + };
  12061. +
  12062. + fragment@1 {
  12063. + target = <&gpio>;
  12064. + __overlay__ {
  12065. + eth1_pins: eth1_pins {
  12066. + brcm,pins = <39>;
  12067. + brcm,function = <0>; /* in */
  12068. + brcm,pull = <0>; /* none */
  12069. + };
  12070. + };
  12071. + };
  12072. +
  12073. + __overrides__ {
  12074. + int_pin = <&eth1>, "interrupts:0",
  12075. + <&eth1_pins>, "brcm,pins:0";
  12076. + speed = <&eth1>, "spi-max-frequency:0";
  12077. + };
  12078. +};
  12079. diff --git a/arch/arm/boot/dts/overlays/exc3000-overlay.dts b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
  12080. new file mode 100644
  12081. index 000000000000..6f087fb20661
  12082. --- /dev/null
  12083. +++ b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
  12084. @@ -0,0 +1,48 @@
  12085. +// Device tree overlay for I2C connected EETI EXC3000 multiple touch controller
  12086. +/dts-v1/;
  12087. +/plugin/;
  12088. +
  12089. +/ {
  12090. + compatible = "brcm,bcm2835";
  12091. +
  12092. + fragment@0 {
  12093. + target = <&gpio>;
  12094. + __overlay__ {
  12095. + exc3000_pins: exc3000_pins {
  12096. + brcm,pins = <4>; // interrupt
  12097. + brcm,function = <0>; // in
  12098. + brcm,pull = <2>; // pull-up
  12099. + };
  12100. + };
  12101. + };
  12102. +
  12103. + fragment@1 {
  12104. + target = <&i2c1>;
  12105. + __overlay__ {
  12106. + #address-cells = <1>;
  12107. + #size-cells = <0>;
  12108. + status = "okay";
  12109. +
  12110. + exc3000: exc3000@2a {
  12111. + compatible = "eeti,exc3000";
  12112. + reg = <0x2a>;
  12113. + pinctrl-names = "default";
  12114. + pinctrl-0 = <&exc3000_pins>;
  12115. + interrupt-parent = <&gpio>;
  12116. + interrupts = <4 8>; // active low level-sensitive
  12117. + touchscreen-size-x = <4096>;
  12118. + touchscreen-size-y = <4096>;
  12119. + };
  12120. + };
  12121. + };
  12122. +
  12123. + __overrides__ {
  12124. + interrupt = <&exc3000_pins>,"brcm,pins:0",
  12125. + <&exc3000>,"interrupts:0";
  12126. + sizex = <&exc3000>,"touchscreen-size-x:0";
  12127. + sizey = <&exc3000>,"touchscreen-size-y:0";
  12128. + invx = <&exc3000>,"touchscreen-inverted-x?";
  12129. + invy = <&exc3000>,"touchscreen-inverted-y?";
  12130. + swapxy = <&exc3000>,"touchscreen-swapped-x-y?";
  12131. + };
  12132. +};
  12133. diff --git a/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
  12134. new file mode 100644
  12135. index 000000000000..743f14ae5768
  12136. --- /dev/null
  12137. +++ b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
  12138. @@ -0,0 +1,70 @@
  12139. +// Definitions for Fe-Pi Audio
  12140. +/dts-v1/;
  12141. +/plugin/;
  12142. +
  12143. +/ {
  12144. + compatible = "brcm,bcm2835";
  12145. +
  12146. + fragment@0 {
  12147. + target-path = "/";
  12148. + __overlay__ {
  12149. + sgtl5000_mclk: sgtl5000_mclk {
  12150. + compatible = "fixed-clock";
  12151. + #clock-cells = <0>;
  12152. + clock-frequency = <12288000>;
  12153. + clock-output-names = "sgtl5000-mclk";
  12154. + };
  12155. + };
  12156. + };
  12157. +
  12158. + fragment@1 {
  12159. + target = <&soc>;
  12160. + __overlay__ {
  12161. + reg_1v8: reg_1v8@0 {
  12162. + compatible = "regulator-fixed";
  12163. + regulator-name = "1V8";
  12164. + regulator-min-microvolt = <1800000>;
  12165. + regulator-max-microvolt = <1800000>;
  12166. + regulator-always-on;
  12167. + };
  12168. + };
  12169. + };
  12170. +
  12171. + fragment@2 {
  12172. + target = <&i2c1>;
  12173. + __overlay__ {
  12174. + #address-cells = <1>;
  12175. + #size-cells = <0>;
  12176. + status = "okay";
  12177. +
  12178. + sgtl5000@0a {
  12179. + #sound-dai-cells = <0>;
  12180. + compatible = "fsl,sgtl5000";
  12181. + reg = <0x0a>;
  12182. + clocks = <&sgtl5000_mclk>;
  12183. + micbias-resistor-k-ohms = <2>;
  12184. + micbias-voltage-m-volts = <3000>;
  12185. + VDDA-supply = <&vdd_3v3_reg>;
  12186. + VDDIO-supply = <&vdd_3v3_reg>;
  12187. + VDDD-supply = <&reg_1v8>;
  12188. + status = "okay";
  12189. + };
  12190. + };
  12191. + };
  12192. +
  12193. + fragment@3 {
  12194. + target = <&i2s>;
  12195. + __overlay__ {
  12196. + status = "okay";
  12197. + };
  12198. + };
  12199. +
  12200. + fragment@4 {
  12201. + target = <&sound>;
  12202. + __overlay__ {
  12203. + compatible = "fe-pi,fe-pi-audio";
  12204. + i2s-controller = <&i2s>;
  12205. + status = "okay";
  12206. + };
  12207. + };
  12208. +};
  12209. diff --git a/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
  12210. new file mode 100644
  12211. index 000000000000..e9944f5cd258
  12212. --- /dev/null
  12213. +++ b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
  12214. @@ -0,0 +1,104 @@
  12215. +// Demo overlay for the gpio-fsm driver
  12216. +/dts-v1/;
  12217. +/plugin/;
  12218. +
  12219. +#include <dt-bindings/gpio/gpio-fsm.h>
  12220. +
  12221. +#define BUTTON1 GF_IP(0)
  12222. +#define BUTTON2 GF_SW(0)
  12223. +#define RED GF_OP(0) // GPIO7
  12224. +#define AMBER GF_OP(1) // GPIO8
  12225. +#define GREEN GF_OP(2) // GPIO25
  12226. +
  12227. +/{
  12228. + compatible = "brcm,bcm2835";
  12229. +
  12230. + fragment@0 {
  12231. + target-path = "/";
  12232. + __overlay__ {
  12233. + fsm_demo: fsm-demo {
  12234. + compatible = "rpi,gpio-fsm";
  12235. +
  12236. + debug = <0>;
  12237. + gpio-controller;
  12238. + #gpio-cells = <2>;
  12239. + num-swgpios = <1>;
  12240. + gpio-line-names = "button2";
  12241. + input-gpios = <&gpio 6 1>; // BUTTON1 (active-low)
  12242. + output-gpios = <&gpio 7 0>, // RED
  12243. + <&gpio 8 0>, // AMBER
  12244. + <&gpio 25 0>; // GREEN
  12245. + shutdown-timeout-ms = <2000>;
  12246. +
  12247. + start {
  12248. + start_state;
  12249. + set = <RED 1>, <AMBER 0>, <GREEN 0>;
  12250. + start2 = <GF_DELAY 250>;
  12251. + };
  12252. +
  12253. + start2 {
  12254. + set = <RED 0>, <AMBER 1>;
  12255. + go = <GF_DELAY 250>;
  12256. + };
  12257. +
  12258. + go {
  12259. + set = <RED 0>, <AMBER 0>, <GREEN 1>;
  12260. + ready_wait = <BUTTON1 0>;
  12261. + shutdown1 = <GF_SHUTDOWN 0>;
  12262. + };
  12263. +
  12264. + ready_wait {
  12265. + // Clear the soft GPIO
  12266. + set = <BUTTON2 0>;
  12267. + ready = <GF_DELAY 1000>;
  12268. + shutdown1 = <GF_SHUTDOWN 0>;
  12269. + };
  12270. +
  12271. + ready {
  12272. + stopping = <BUTTON1 1>, <BUTTON2 1>;
  12273. + shutdown1 = <GF_SHUTDOWN 0>;
  12274. + };
  12275. +
  12276. + stopping {
  12277. + set = <GREEN 0>, <AMBER 1>;
  12278. + stopped = <GF_DELAY 1000>;
  12279. + };
  12280. +
  12281. + stopped {
  12282. + set = <AMBER 0>, <RED 1>;
  12283. + get_set = <GF_DELAY 3000>;
  12284. + shutdown1 = <GF_SHUTDOWN 0>;
  12285. + };
  12286. +
  12287. + get_set {
  12288. + set = <AMBER 1>;
  12289. + go = <GF_DELAY 1000>;
  12290. + };
  12291. +
  12292. + shutdown1 {
  12293. + set = <RED 0>, <AMBER 0>, <GREEN 1>;
  12294. + shutdown2 = <GF_SHUTDOWN 250>;
  12295. + };
  12296. +
  12297. + shutdown2 {
  12298. + set = <AMBER 1>, <GREEN 0>;
  12299. + shutdown3 = <GF_SHUTDOWN 250>;
  12300. + };
  12301. +
  12302. + shutdown3 {
  12303. + set = <RED 1>, <AMBER 0>;
  12304. + shutdown4 = <GF_SHUTDOWN 250>;
  12305. + };
  12306. +
  12307. + shutdown4 {
  12308. + shutdown_state;
  12309. + set = <RED 0>, <AMBER 0>, <GREEN 0>;
  12310. + };
  12311. + };
  12312. + };
  12313. + };
  12314. +
  12315. + __overrides__ {
  12316. + fsm_debug = <&fsm_demo>,"debug:0";
  12317. + };
  12318. +};
  12319. diff --git a/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
  12320. new file mode 100644
  12321. index 000000000000..7509e00679c8
  12322. --- /dev/null
  12323. +++ b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
  12324. @@ -0,0 +1,145 @@
  12325. +// Overlay for the PCM5122-based Ghost amplifier using gpio-fsm
  12326. +/dts-v1/;
  12327. +/plugin/;
  12328. +
  12329. +#include <dt-bindings/gpio/gpio-fsm.h>
  12330. +
  12331. +#define ENABLE GF_SW(0)
  12332. +#define FAULT GF_IP(0) // GPIO5
  12333. +#define RELAY1 GF_OP(0) // GPIO22
  12334. +#define RELAY2 GF_OP(1) // GPIO23
  12335. +#define RELAYSSR GF_OP(2) // GPIO24
  12336. +
  12337. +/ {
  12338. + compatible = "brcm,bcm2835";
  12339. +
  12340. + fragment@0 {
  12341. + target = <&i2s>;
  12342. + __overlay__ {
  12343. + status = "okay";
  12344. + };
  12345. + };
  12346. +
  12347. + fragment@1 {
  12348. + target = <&i2c1>;
  12349. + __overlay__ {
  12350. + #address-cells = <1>;
  12351. + #size-cells = <0>;
  12352. + status = "okay";
  12353. +
  12354. + pcm5122@4c {
  12355. + #sound-dai-cells = <0>;
  12356. + compatible = "ti,pcm5122";
  12357. + reg = <0x4c>;
  12358. + AVDD-supply = <&vdd_3v3_reg>;
  12359. + DVDD-supply = <&vdd_3v3_reg>;
  12360. + CPVDD-supply = <&vdd_3v3_reg>;
  12361. + status = "okay";
  12362. + };
  12363. + };
  12364. + };
  12365. +
  12366. + fragment@2 {
  12367. + target = <&sound>;
  12368. + iqaudio_dac: __overlay__ {
  12369. + compatible = "iqaudio,iqaudio-dac";
  12370. + i2s-controller = <&i2s>;
  12371. + mute-gpios = <&amp 0 0>;
  12372. + iqaudio-dac,auto-mute-amp;
  12373. + status = "okay";
  12374. + };
  12375. + };
  12376. +
  12377. + fragment@3 {
  12378. + target-path = "/";
  12379. + __overlay__ {
  12380. + amp: ghost-amp {
  12381. + compatible = "rpi,gpio-fsm";
  12382. + pinctrl-names = "default";
  12383. + pinctrl-0 = <&ghost_amp_pins>;
  12384. +
  12385. + debug = <0>;
  12386. + gpio-controller;
  12387. + #gpio-cells = <2>;
  12388. + num-swgpios = <1>;
  12389. + gpio-line-names = "enable";
  12390. + input-gpios = <&gpio 5 1>; // FAULT (active low)
  12391. + output-gpios = <&gpio 22 0>, // RELAY1
  12392. + <&gpio 23 0>, // RELAY2
  12393. + <&gpio 24 0>; // RELAYSSR
  12394. + shutdown-timeout-ms = <1000>;
  12395. +
  12396. + amp_off {
  12397. + start_state;
  12398. + shutdown_state;
  12399. +
  12400. + set = <RELAYSSR 0>,
  12401. + <RELAY2 0>,
  12402. + <RELAY1 0>;
  12403. + amp_on_1 = <ENABLE 1>;
  12404. + fault = <FAULT 1>;
  12405. + };
  12406. +
  12407. + amp_on_1 {
  12408. + set = <RELAY1 1>;
  12409. + amp_on_2 = <GF_DELAY 1000>;
  12410. + amp_off = <GF_SHUTDOWN 0>;
  12411. + fault = <FAULT 1>;
  12412. + };
  12413. +
  12414. + amp_on_2 {
  12415. + set = <RELAY2 1>;
  12416. + amp_on_wait = <ENABLE 0>;
  12417. + amp_on = <GF_DELAY 1>;
  12418. + fault = <FAULT 1>;
  12419. + };
  12420. +
  12421. + amp_on {
  12422. + set = <RELAYSSR 1>;
  12423. + amp_on_wait = <ENABLE 0>;
  12424. + fault = <FAULT 1>;
  12425. + };
  12426. +
  12427. + amp_on_wait {
  12428. + set = <RELAYSSR 0>;
  12429. + amp_off_1 = <GF_DELAY (30*60*1000)>,
  12430. + <GF_SHUTDOWN 0>;
  12431. + amp_on = <ENABLE 1>;
  12432. + fault = <FAULT 1>;
  12433. + };
  12434. +
  12435. + amp_off_1 {
  12436. + set = <RELAY2 0>;
  12437. + amp_on = <ENABLE 1>;
  12438. + amp_off = <GF_DELAY 100>;
  12439. + fault = <FAULT 1>;
  12440. + };
  12441. +
  12442. + // Keep this a distinct state to prevent
  12443. + // changes and for the diagnostic output
  12444. + fault {
  12445. + set = <RELAYSSR 0>,
  12446. + <RELAY2 0>,
  12447. + <RELAY1 0>;
  12448. + amp_off = <FAULT 0>;
  12449. + shutdown_state;
  12450. + };
  12451. + };
  12452. + };
  12453. + };
  12454. +
  12455. + fragment@4 {
  12456. + target = <&gpio>;
  12457. + __overlay__ {
  12458. + ghost_amp_pins: ghost_amp_pins {
  12459. + brcm,pins = <5 22 23 24>;
  12460. + brcm,function = <0 1 1 1>; /* in out out out */
  12461. + brcm,pull = <2 0 0 0>; /* up none none none */
  12462. + };
  12463. + };
  12464. + };
  12465. +
  12466. + __overrides__ {
  12467. + fsm_debug = <&amp>,"debug:0";
  12468. + };
  12469. +};
  12470. diff --git a/arch/arm/boot/dts/overlays/goodix-overlay.dts b/arch/arm/boot/dts/overlays/goodix-overlay.dts
  12471. new file mode 100644
  12472. index 000000000000..8571527de49a
  12473. --- /dev/null
  12474. +++ b/arch/arm/boot/dts/overlays/goodix-overlay.dts
  12475. @@ -0,0 +1,46 @@
  12476. +// Device tree overlay for I2C connected Goodix gt9271 multiple touch controller
  12477. +/dts-v1/;
  12478. +/plugin/;
  12479. +
  12480. +/ {
  12481. + compatible = "brcm,bcm2835";
  12482. +
  12483. + fragment@0 {
  12484. + target = <&gpio>;
  12485. + __overlay__ {
  12486. + goodix_pins: goodix_pins {
  12487. + brcm,pins = <4 17>; // interrupt and reset
  12488. + brcm,function = <0 0>; // in
  12489. + brcm,pull = <2 2>; // pull-up
  12490. + };
  12491. + };
  12492. + };
  12493. +
  12494. + fragment@1 {
  12495. + target = <&i2c1>;
  12496. + __overlay__ {
  12497. + #address-cells = <1>;
  12498. + #size-cells = <0>;
  12499. + status = "okay";
  12500. +
  12501. + gt9271: gt9271@14 {
  12502. + compatible = "goodix,gt9271";
  12503. + reg = <0x14>;
  12504. + pinctrl-names = "default";
  12505. + pinctrl-0 = <&goodix_pins>;
  12506. + interrupt-parent = <&gpio>;
  12507. + interrupts = <4 2>; // high-to-low edge triggered
  12508. + irq-gpios = <&gpio 4 0>; // Pin7 on GPIO header
  12509. + reset-gpios = <&gpio 17 0>; // Pin11 on GPIO header
  12510. + };
  12511. + };
  12512. + };
  12513. +
  12514. + __overrides__ {
  12515. + interrupt = <&goodix_pins>,"brcm,pins:0",
  12516. + <&gt9271>,"interrupts:0",
  12517. + <&gt9271>,"irq-gpios:4";
  12518. + reset = <&goodix_pins>,"brcm,pins:4",
  12519. + <&gt9271>,"reset-gpios:4";
  12520. + };
  12521. +};
  12522. diff --git a/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
  12523. new file mode 100644
  12524. index 000000000000..e443be1f9a0e
  12525. --- /dev/null
  12526. +++ b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
  12527. @@ -0,0 +1,49 @@
  12528. +// Definitions for Google voiceHAT v1 soundcard overlay
  12529. +/dts-v1/;
  12530. +/plugin/;
  12531. +
  12532. +/ {
  12533. + compatible = "brcm,bcm2835";
  12534. +
  12535. + fragment@0 {
  12536. + target = <&i2s>;
  12537. + __overlay__ {
  12538. + status = "okay";
  12539. + };
  12540. + };
  12541. +
  12542. + fragment@1 {
  12543. + target = <&gpio>;
  12544. + __overlay__ {
  12545. + googlevoicehat_pins: googlevoicehat_pins {
  12546. + brcm,pins = <16>;
  12547. + brcm,function = <1>; /* out */
  12548. + brcm,pull = <0>; /* up */
  12549. + };
  12550. + };
  12551. + };
  12552. +
  12553. +
  12554. + fragment@2 {
  12555. + target-path = "/";
  12556. + __overlay__ {
  12557. + voicehat-codec {
  12558. + #sound-dai-cells = <0>;
  12559. + compatible = "google,voicehat";
  12560. + pinctrl-names = "default";
  12561. + pinctrl-0 = <&googlevoicehat_pins>;
  12562. + sdmode-gpios= <&gpio 16 0>;
  12563. + status = "okay";
  12564. + };
  12565. + };
  12566. + };
  12567. +
  12568. + fragment@3 {
  12569. + target = <&sound>;
  12570. + __overlay__ {
  12571. + compatible = "googlevoicehat,googlevoicehat-soundcard";
  12572. + i2s-controller = <&i2s>;
  12573. + status = "okay";
  12574. + };
  12575. + };
  12576. +};
  12577. diff --git a/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
  12578. new file mode 100644
  12579. index 000000000000..77a7bbb41e3b
  12580. --- /dev/null
  12581. +++ b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
  12582. @@ -0,0 +1,79 @@
  12583. +/*
  12584. + * Overlay for the Raspberry Pi GPIO Fan @ BCM GPIO12.
  12585. + * References:
  12586. + * - https://www.raspberrypi.org/forums/viewtopic.php?f=107&p=1367135#p1365084
  12587. + *
  12588. + * Optional parameters:
  12589. + * - "gpiopin" - BCM number of the pin driving the fan, default 12 (GPIO12);
  12590. + * - "temp" - CPU temperature at which fan is started in millicelsius, default 55000;
  12591. + *
  12592. + * Requires:
  12593. + * - kernel configurations: CONFIG_SENSORS_GPIO_FAN=m;
  12594. + * - kernel rebuild;
  12595. + * - N-MOSFET connected to gpiopin, 2N7002-[https://en.wikipedia.org/wiki/2N7000];
  12596. + * - DC Fan connected to N-MOSFET Drain terminal, a 12V fan is working fine and quite silently;
  12597. + * [https://www.tme.eu/en/details/ee40101s1-999-a/dc12v-fans/sunon/ee40101s1-1000u-999/]
  12598. + *
  12599. + * ┌─────────────────────┐
  12600. + * │Fan negative terminal│
  12601. + * └┬────────────────────┘
  12602. + * │D
  12603. + * G │──┘
  12604. + * [GPIO12]──────┤ │<─┐ 2N7002
  12605. + * │──┤
  12606. + * │S
  12607. + * ─┴─
  12608. + * GND
  12609. + *
  12610. + * Build:
  12611. + * - `sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/gpio-fan.dtbo gpio-fan-overlay.dts`
  12612. + * Activate:
  12613. + * - sudo nano /boot/config.txt add "dtoverlay=gpio-fan" or "dtoverlay=gpio-fan,gpiopin=12,temp=45000"
  12614. + * or
  12615. + * - sudo sh -c 'printf "\n# Enable PI GPIO-Fan Default\ndtoverlay=gpio-fan\n" >> /boot/config.txt'
  12616. + * - sudo sh -c 'printf "\n# Enable PI GPIO-Fan Custom\ndtoverlay=gpio-fan,gpiopin=12,temp=45000\n" >> /boot/config.txt'
  12617. + *
  12618. + */
  12619. +/dts-v1/;
  12620. +/plugin/;
  12621. +
  12622. +/ {
  12623. + compatible = "brcm,bcm2835";
  12624. +
  12625. + fragment@0 {
  12626. + target-path = "/";
  12627. + __overlay__ {
  12628. + fan0: gpio-fan@0 {
  12629. + compatible = "gpio-fan";
  12630. + gpios = <&gpio 12 0>;
  12631. + gpio-fan,speed-map = <0 0>,
  12632. + <5000 1>;
  12633. + #cooling-cells = <2>;
  12634. + };
  12635. + };
  12636. + };
  12637. +
  12638. + fragment@1 {
  12639. + target = <&cpu_thermal>;
  12640. + polling-delay = <2000>; /* milliseconds */
  12641. + __overlay__ {
  12642. + trips {
  12643. + cpu_hot: trip-point@0 {
  12644. + temperature = <55000>; /* (millicelsius) Fan started at 55°C */
  12645. + hysteresis = <10000>; /* (millicelsius) Fan stopped at 45°C */
  12646. + type = "active";
  12647. + };
  12648. + };
  12649. + cooling-maps {
  12650. + map0 {
  12651. + trip = <&cpu_hot>;
  12652. + cooling-device = <&fan0 1 1>;
  12653. + };
  12654. + };
  12655. + };
  12656. + };
  12657. + __overrides__ {
  12658. + gpiopin = <&fan0>,"gpios:4", <&fan0>,"brcm,pins:0";
  12659. + temp = <&cpu_hot>,"temperature:0";
  12660. + };
  12661. +};
  12662. diff --git a/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
  12663. new file mode 100644
  12664. index 000000000000..162b6ce07dc9
  12665. --- /dev/null
  12666. +++ b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
  12667. @@ -0,0 +1,49 @@
  12668. +// Definitions for ir-gpio module
  12669. +/dts-v1/;
  12670. +/plugin/;
  12671. +
  12672. +/ {
  12673. + compatible = "brcm,bcm2835";
  12674. +
  12675. + fragment@0 {
  12676. + target-path = "/";
  12677. + __overlay__ {
  12678. + gpio_ir: ir-receiver@12 {
  12679. + compatible = "gpio-ir-receiver";
  12680. + pinctrl-names = "default";
  12681. + pinctrl-0 = <&gpio_ir_pins>;
  12682. +
  12683. + // pin number, high or low
  12684. + gpios = <&gpio 18 1>;
  12685. +
  12686. + // parameter for keymap name
  12687. + linux,rc-map-name = "rc-rc6-mce";
  12688. +
  12689. + status = "okay";
  12690. + };
  12691. + };
  12692. + };
  12693. +
  12694. + fragment@1 {
  12695. + target = <&gpio>;
  12696. + __overlay__ {
  12697. + gpio_ir_pins: gpio_ir_pins@12 {
  12698. + brcm,pins = <18>; // pin 18
  12699. + brcm,function = <0>; // in
  12700. + brcm,pull = <2>; // up
  12701. + };
  12702. + };
  12703. + };
  12704. +
  12705. + __overrides__ {
  12706. + // parameters
  12707. + gpio_pin = <&gpio_ir>,"gpios:4", // pin number
  12708. + <&gpio_ir>,"reg:0",
  12709. + <&gpio_ir_pins>,"brcm,pins:0",
  12710. + <&gpio_ir_pins>,"reg:0";
  12711. + gpio_pull = <&gpio_ir_pins>,"brcm,pull:0"; // pull-up/down state
  12712. + invert = <&gpio_ir>,"gpios:8"; // 0 = active high input
  12713. +
  12714. + rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
  12715. + };
  12716. +};
  12717. diff --git a/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
  12718. new file mode 100644
  12719. index 000000000000..3625431b7560
  12720. --- /dev/null
  12721. +++ b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
  12722. @@ -0,0 +1,36 @@
  12723. +/dts-v1/;
  12724. +/plugin/;
  12725. +
  12726. +/ {
  12727. + compatible = "brcm,bcm2835";
  12728. +
  12729. + fragment@0 {
  12730. + target = <&gpio>;
  12731. + __overlay__ {
  12732. + gpio_ir_tx_pins: gpio_ir_tx_pins@12 {
  12733. + brcm,pins = <18>;
  12734. + brcm,function = <1>; // out
  12735. + };
  12736. + };
  12737. + };
  12738. +
  12739. + fragment@1 {
  12740. + target-path = "/";
  12741. + __overlay__ {
  12742. + gpio_ir_tx: gpio-ir-transmitter@12 {
  12743. + compatible = "gpio-ir-tx";
  12744. + pinctrl-names = "default";
  12745. + pinctrl-0 = <&gpio_ir_tx_pins>;
  12746. + gpios = <&gpio 18 0>;
  12747. + };
  12748. + };
  12749. + };
  12750. +
  12751. + __overrides__ {
  12752. + gpio_pin = <&gpio_ir_tx>, "gpios:4", // pin number
  12753. + <&gpio_ir_tx>, "reg:0",
  12754. + <&gpio_ir_tx_pins>, "brcm,pins:0",
  12755. + <&gpio_ir_tx_pins>, "reg:0";
  12756. + invert = <&gpio_ir_tx>, "gpios:8"; // 1 = active low
  12757. + };
  12758. +};
  12759. diff --git a/arch/arm/boot/dts/overlays/gpio-key-overlay.dts b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
  12760. new file mode 100644
  12761. index 000000000000..2e7253d1d0ab
  12762. --- /dev/null
  12763. +++ b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
  12764. @@ -0,0 +1,48 @@
  12765. +// Definitions for gpio-key module
  12766. +/dts-v1/;
  12767. +/plugin/;
  12768. +
  12769. +/ {
  12770. + compatible = "brcm,bcm2835";
  12771. +
  12772. + fragment@0 {
  12773. + // Configure the gpio pin controller
  12774. + target = <&gpio>;
  12775. + __overlay__ {
  12776. + pin_state: button_pins@0 {
  12777. + brcm,pins = <3>; // gpio number
  12778. + brcm,function = <0>; // 0 = input, 1 = output
  12779. + brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
  12780. + };
  12781. + };
  12782. + };
  12783. + fragment@1 {
  12784. + target-path = "/";
  12785. + __overlay__ {
  12786. + button: button@0 {
  12787. + compatible = "gpio-keys";
  12788. + pinctrl-names = "default";
  12789. + pinctrl-0 = <&pin_state>;
  12790. + status = "okay";
  12791. +
  12792. + key: key {
  12793. + linux,code = <116>;
  12794. + gpios = <&gpio 3 1>;
  12795. + label = "KEY_POWER";
  12796. + };
  12797. + };
  12798. + };
  12799. + };
  12800. +
  12801. + __overrides__ {
  12802. + gpio = <&key>,"gpios:4",
  12803. + <&button>,"reg:0",
  12804. + <&pin_state>,"brcm,pins:0",
  12805. + <&pin_state>,"reg:0";
  12806. + label = <&key>,"label";
  12807. + keycode = <&key>,"linux,code:0";
  12808. + gpio_pull = <&pin_state>,"brcm,pull:0";
  12809. + active_low = <&key>,"gpios:8";
  12810. + };
  12811. +
  12812. +};
  12813. diff --git a/arch/arm/boot/dts/overlays/gpio-led-overlay.dts b/arch/arm/boot/dts/overlays/gpio-led-overlay.dts
  12814. new file mode 100755
  12815. index 000000000000..d8e9d53f1b61
  12816. --- /dev/null
  12817. +++ b/arch/arm/boot/dts/overlays/gpio-led-overlay.dts
  12818. @@ -0,0 +1,97 @@
  12819. +// SPDX-License-Identifier: GPL-2.0-or-later
  12820. +/*
  12821. + * gpio-led - generic connection of kernel's LED framework to the RPI's GPIO.
  12822. + * Copyright (C) 2021 House Gordon Software Company Ltd. <[email protected]>
  12823. + *
  12824. + * Based on information from:
  12825. + * https://mjoldfield.com/atelier/2017/03/rpi-devicetree.html
  12826. + * https://www.raspberrypi.org/documentation/configuration/device-tree.md
  12827. + * https://www.kernel.org/doc/html/latest/leds/index.html
  12828. + *
  12829. + * compile with:
  12830. + * dtc -@ -Hepapr -I dts -O dtb -o gpio-led.dtbo gpio-led-overlay.dts
  12831. + *
  12832. + * There will be some warnings (can be ignored):
  12833. + * Warning (label_is_string): /__overrides__:label: property is not a string
  12834. + * Warning (unit_address_vs_reg): /fragment@0/__overlay__/led_pins@0:
  12835. + * node has a unit name, but no reg property
  12836. + * Warning (unit_address_vs_reg): /fragment@1/__overlay__/leds@0:
  12837. + * node has a unit name, but no reg property
  12838. + * Warning (gpios_property): /__overrides__: Missing property
  12839. + * '#gpio-cells' in node /fragment@1/__overlay__/leds@0/led
  12840. + * or bad phandle (referred from gpio[0])
  12841. + *
  12842. + * Typical electrical connection is:
  12843. + * RPI-GPIO.19 -> LED -> 300ohm resister -> RPI-GND
  12844. + * The GPIO pin number can be changed with the 'gpio=' parameter.
  12845. + *
  12846. + * Test from user-space with:
  12847. + * # if nothing is shown, the overlay file isn't found in /boot/overlays
  12848. + * dtoverlay -a | grep gpio-led
  12849. + *
  12850. + * # Load the overlay
  12851. + * dtoverlay gpio-led label=moo gpio=19
  12852. + *
  12853. + * # if nothing is shown, the overlay wasn't loaded successfully
  12854. + * dtoverlay -l | grep gpio-led
  12855. + *
  12856. + * echo 1 > /sys/class/leds/moo/brightness
  12857. + * echo 0 > /sys/class/leds/moo/brightness
  12858. + * echo cpu > /sys/class/leds/moo/trigger
  12859. + * echo heartbeat > /sys/class/leds/moo/trigger
  12860. + *
  12861. + * # unload the overlay
  12862. + * dtoverlay -r gpio-led
  12863. + *
  12864. + * To load in /boot/config.txt add lines such as:
  12865. + * dtoverlay=gpio-led,gpio=19,label=heart,trigger=heartbeat
  12866. + * dtoverlay=gpio-led,gpio=26,label=brain,trigger=cpu
  12867. + */
  12868. +
  12869. +/dts-v1/;
  12870. +/plugin/;
  12871. +
  12872. +/ {
  12873. + compatible = "brcm,bcm2835";
  12874. +
  12875. + fragment@0 {
  12876. + // Configure the gpio pin controller
  12877. + target = <&gpio>;
  12878. + __overlay__ {
  12879. + led_pin: led_pins@19 {
  12880. + brcm,pins = <19>; // gpio number
  12881. + brcm,function = <1>; // 0 = input, 1 = output
  12882. + brcm,pull = <0>; // 0 = none, 1 = pull down, 2 = pull up
  12883. + };
  12884. + };
  12885. + };
  12886. + fragment@1 {
  12887. + target-path = "/";
  12888. + __overlay__ {
  12889. + leds: leds@0 {
  12890. + compatible = "gpio-leds";
  12891. + pinctrl-names = "default";
  12892. + pinctrl-0 = <&led_pin>;
  12893. + status = "okay";
  12894. +
  12895. + led: led {
  12896. + label = "myled1";
  12897. + gpios = <&gpio 19 0>;
  12898. + linux,default-trigger = "none";
  12899. + };
  12900. + };
  12901. + };
  12902. + };
  12903. +
  12904. + __overrides__ {
  12905. + gpio = <&led>,"gpios:4",
  12906. + <&leds>,"reg:0",
  12907. + <&led_pin>,"brcm,pins:0",
  12908. + <&led_pin>,"reg:0";
  12909. + label = <&led>,"label";
  12910. + active_low = <&led>,"gpios:8";
  12911. + trigger = <&led>,"linux,default-trigger";
  12912. + };
  12913. +
  12914. +};
  12915. +
  12916. diff --git a/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
  12917. new file mode 100755
  12918. index 000000000000..96cbe80820b7
  12919. --- /dev/null
  12920. +++ b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
  12921. @@ -0,0 +1,14 @@
  12922. +/dts-v1/;
  12923. +/plugin/;
  12924. +
  12925. +/ {
  12926. + compatible = "brcm,bcm2835";
  12927. +
  12928. + fragment@0 {
  12929. + // Configure the gpio pin controller
  12930. + target = <&gpio>;
  12931. + __overlay__ {
  12932. + interrupts = <255 255>, <2 18>;
  12933. + };
  12934. + };
  12935. +};
  12936. diff --git a/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
  12937. new file mode 100644
  12938. index 000000000000..55f9bff3a8f6
  12939. --- /dev/null
  12940. +++ b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
  12941. @@ -0,0 +1,14 @@
  12942. +/dts-v1/;
  12943. +/plugin/;
  12944. +
  12945. +/ {
  12946. + compatible = "brcm,bcm2835";
  12947. +
  12948. + fragment@0 {
  12949. + // Configure the gpio pin controller
  12950. + target = <&gpio>;
  12951. + __overlay__ {
  12952. + interrupts;
  12953. + };
  12954. + };
  12955. +};
  12956. diff --git a/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
  12957. new file mode 100644
  12958. index 000000000000..416aa2bc797a
  12959. --- /dev/null
  12960. +++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
  12961. @@ -0,0 +1,37 @@
  12962. +// Definitions for gpio-poweroff module
  12963. +/dts-v1/;
  12964. +/plugin/;
  12965. +
  12966. +/ {
  12967. + compatible = "brcm,bcm2835";
  12968. +
  12969. + fragment@0 {
  12970. + target-path = "/";
  12971. + __overlay__ {
  12972. + power_ctrl: power_ctrl {
  12973. + compatible = "gpio-poweroff";
  12974. + gpios = <&gpio 26 0>;
  12975. + force;
  12976. + };
  12977. + };
  12978. + };
  12979. +
  12980. + fragment@1 {
  12981. + target = <&gpio>;
  12982. + __overlay__ {
  12983. + power_ctrl_pins: power_ctrl_pins {
  12984. + brcm,pins = <26>;
  12985. + brcm,function = <1>; // out
  12986. + };
  12987. + };
  12988. + };
  12989. +
  12990. + __overrides__ {
  12991. + gpiopin = <&power_ctrl>,"gpios:4",
  12992. + <&power_ctrl_pins>,"brcm,pins:0";
  12993. + active_low = <&power_ctrl>,"gpios:8";
  12994. + input = <&power_ctrl>,"input?";
  12995. + export = <&power_ctrl>,"export?";
  12996. + timeout_ms = <&power_ctrl>,"timeout-ms:0";
  12997. + };
  12998. +};
  12999. diff --git a/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
  13000. new file mode 100644
  13001. index 000000000000..da148064aedd
  13002. --- /dev/null
  13003. +++ b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
  13004. @@ -0,0 +1,86 @@
  13005. +// Definitions for gpio-poweroff module
  13006. +/dts-v1/;
  13007. +/plugin/;
  13008. +
  13009. +// This overlay sets up an input device that generates KEY_POWER events
  13010. +// when a given GPIO pin changes. It defaults to using GPIO3, which can
  13011. +// also be used to wake up (start) the Rpi again after shutdown.
  13012. +// Raspberry Pi 1 Model B rev 1 can be wake up only by GPIO1 pin, so for
  13013. +// these boards change default GPIO pin to 1 via gpio_pin parameter. Since
  13014. +// wakeup is active-low, this defaults to active-low with a pullup
  13015. +// enabled, but all of this can be changed using overlay parameters (but
  13016. +// note that GPIO3 has an external pullup on at least some boards).
  13017. +
  13018. +/ {
  13019. + compatible = "brcm,bcm2835";
  13020. +
  13021. + fragment@0 {
  13022. + // Configure the gpio pin controller
  13023. + target = <&gpio>;
  13024. + __overlay__ {
  13025. + // Define a pinctrl state, that sets up the gpio
  13026. + // as an input with a pullup enabled. This does
  13027. + // not take effect by itself, only when referenced
  13028. + // by a "pinctrl client", as is done below. See:
  13029. + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
  13030. + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
  13031. + pin_state: shutdown_button_pins@3 {
  13032. + brcm,pins = <3>; // gpio number
  13033. + brcm,function = <0>; // 0 = input, 1 = output
  13034. + brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
  13035. + };
  13036. + };
  13037. + };
  13038. + fragment@1 {
  13039. + // Add a new device to the /soc devicetree node
  13040. + target-path = "/soc";
  13041. + __overlay__ {
  13042. + shutdown_button: shutdown_button@3 {
  13043. + // Let the gpio-keys driver handle this device. See:
  13044. + // https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.txt
  13045. + compatible = "gpio-keys";
  13046. +
  13047. + // Declare a single pinctrl state (referencing the one declared above) and name it
  13048. + // default, so it is activated automatically.
  13049. + pinctrl-names = "default";
  13050. + pinctrl-0 = <&pin_state>;
  13051. +
  13052. + // Enable this device
  13053. + status = "okay";
  13054. +
  13055. + // Define a single key, called "shutdown" that monitors the gpio and sends KEY_POWER
  13056. + // (keycode 116, see
  13057. + // https://github.com/torvalds/linux/blob/v4.12/include/uapi/linux/input-event-codes.h#L190)
  13058. + button: shutdown {
  13059. + label = "shutdown";
  13060. + linux,code = <116>; // KEY_POWER
  13061. + gpios = <&gpio 3 1>;
  13062. + debounce-interval = <100>; // ms
  13063. + };
  13064. + };
  13065. + };
  13066. + };
  13067. +
  13068. + // This defines parameters that can be specified when loading
  13069. + // the overlay. Each foo = line specifies one parameter, named
  13070. + // foo. The rest of the specification gives properties where the
  13071. + // parameter value is inserted into (changing the values above
  13072. + // or adding new ones).
  13073. + __overrides__ {
  13074. + // Allow overriding the GPIO number.
  13075. + gpio_pin = <&button>,"gpios:4",
  13076. + <&shutdown_button>,"reg:0",
  13077. + <&pin_state>,"reg:0",
  13078. + <&pin_state>,"brcm,pins:0";
  13079. +
  13080. + // Allow changing the internal pullup/down state. 0 = none, 1 = pulldown, 2 = pullup
  13081. + // Note that GPIO3 and GPIO2 are the I2c pins and have an external pullup (at least
  13082. + // on some boards). Same applies for GPIO1 on Raspberry Pi 1 Model B rev 1.
  13083. + gpio_pull = <&pin_state>,"brcm,pull:0";
  13084. +
  13085. + // Allow setting the active_low flag. 0 = active high, 1 = active low
  13086. + active_low = <&button>,"gpios:8";
  13087. + debounce = <&button>,"debounce-interval:0";
  13088. + };
  13089. +
  13090. +};
  13091. diff --git a/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
  13092. new file mode 100644
  13093. index 000000000000..ee726669ff51
  13094. --- /dev/null
  13095. +++ b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
  13096. @@ -0,0 +1,46 @@
  13097. +/dts-v1/;
  13098. +/plugin/;
  13099. +
  13100. +/ {
  13101. + compatible = "brcm,bcm2835";
  13102. +
  13103. + fragment@0 {
  13104. + target-path = "/";
  13105. + __overlay__ {
  13106. + lcd_screen: auxdisplay {
  13107. + compatible = "hit,hd44780";
  13108. +
  13109. + data-gpios = <&gpio 6 0>,
  13110. + <&gpio 13 0>,
  13111. + <&gpio 19 0>,
  13112. + <&gpio 26 0>;
  13113. + enable-gpios = <&gpio 21 0>;
  13114. + rs-gpios = <&gpio 20 0>;
  13115. +
  13116. + display-height-chars = <2>;
  13117. + display-width-chars = <16>;
  13118. + };
  13119. +
  13120. + };
  13121. + };
  13122. +
  13123. + fragment@1 {
  13124. + target = <&lcd_screen>;
  13125. + __dormant__ {
  13126. + backlight-gpios = <&gpio 12 0>;
  13127. + };
  13128. + };
  13129. +
  13130. + __overrides__ {
  13131. + pin_d4 = <&lcd_screen>,"data-gpios:4";
  13132. + pin_d5 = <&lcd_screen>,"data-gpios:16";
  13133. + pin_d6 = <&lcd_screen>,"data-gpios:28";
  13134. + pin_d7 = <&lcd_screen>,"data-gpios:40";
  13135. + pin_en = <&lcd_screen>,"enable-gpios:4";
  13136. + pin_rs = <&lcd_screen>,"rs-gpios:4";
  13137. + pin_bl = <0>,"+1", <&lcd_screen>,"backlight-gpios:4";
  13138. + display_height = <&lcd_screen>,"display-height-chars:0";
  13139. + display_width = <&lcd_screen>,"display-width-chars:0";
  13140. + };
  13141. +
  13142. +};
  13143. diff --git a/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
  13144. new file mode 100644
  13145. index 000000000000..50b9a2665c80
  13146. --- /dev/null
  13147. +++ b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
  13148. @@ -0,0 +1,47 @@
  13149. +/*
  13150. + * Devicetree overlay for GPIO based backlight on/off capability.
  13151. + *
  13152. + * Use this if you have one of those HDMI displays whose backlight cannot be
  13153. + * controlled via DPMS over HDMI and plan to do a little soldering to use an
  13154. + * RPi gpio pin for on/off switching.
  13155. + *
  13156. + * See: https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)#Backlight_Control
  13157. + *
  13158. + */
  13159. +/dts-v1/;
  13160. +/plugin/;
  13161. +
  13162. +/ {
  13163. + compatible = "brcm,bcm2835";
  13164. +
  13165. + fragment@1 {
  13166. + target = <&gpio>;
  13167. + __overlay__ {
  13168. + hdmi_backlight_hwhack_gpio_pins: hdmi_backlight_hwhack_gpio_pins {
  13169. + brcm,pins = <17>;
  13170. + brcm,function = <1>; /* out */
  13171. + };
  13172. + };
  13173. + };
  13174. +
  13175. + fragment@2 {
  13176. + target-path = "/";
  13177. + __overlay__ {
  13178. + hdmi_backlight_hwhack_gpio: hdmi_backlight_hwhack_gpio {
  13179. + compatible = "gpio-backlight";
  13180. +
  13181. + pinctrl-names = "default";
  13182. + pinctrl-0 = <&hdmi_backlight_hwhack_gpio_pins>;
  13183. +
  13184. + gpios = <&gpio 17 0>;
  13185. + default-on;
  13186. + };
  13187. + };
  13188. + };
  13189. +
  13190. + __overrides__ {
  13191. + gpio_pin = <&hdmi_backlight_hwhack_gpio>,"gpios:4",
  13192. + <&hdmi_backlight_hwhack_gpio_pins>,"brcm,pins:0";
  13193. + active_low = <&hdmi_backlight_hwhack_gpio>,"gpios:8";
  13194. + };
  13195. +};
  13196. diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
  13197. new file mode 100644
  13198. index 000000000000..142518ab348b
  13199. --- /dev/null
  13200. +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
  13201. @@ -0,0 +1,39 @@
  13202. +// Definitions for HiFiBerry Amp/Amp+
  13203. +/dts-v1/;
  13204. +/plugin/;
  13205. +
  13206. +/ {
  13207. + compatible = "brcm,bcm2835";
  13208. +
  13209. + fragment@0 {
  13210. + target = <&i2s>;
  13211. + __overlay__ {
  13212. + status = "okay";
  13213. + };
  13214. + };
  13215. +
  13216. + fragment@1 {
  13217. + target = <&i2c1>;
  13218. + __overlay__ {
  13219. + #address-cells = <1>;
  13220. + #size-cells = <0>;
  13221. + status = "okay";
  13222. +
  13223. + tas5713@1b {
  13224. + #sound-dai-cells = <0>;
  13225. + compatible = "ti,tas5713";
  13226. + reg = <0x1b>;
  13227. + status = "okay";
  13228. + };
  13229. + };
  13230. + };
  13231. +
  13232. + fragment@2 {
  13233. + target = <&sound>;
  13234. + __overlay__ {
  13235. + compatible = "hifiberry,hifiberry-amp";
  13236. + i2s-controller = <&i2s>;
  13237. + status = "okay";
  13238. + };
  13239. + };
  13240. +};
  13241. diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts
  13242. new file mode 100644
  13243. index 000000000000..ebdef55d6110
  13244. --- /dev/null
  13245. +++ b/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts
  13246. @@ -0,0 +1,64 @@
  13247. +// Definitions for HiFiBerry AMP100
  13248. +/dts-v1/;
  13249. +/plugin/;
  13250. +
  13251. +/ {
  13252. + compatible = "brcm,bcm2835";
  13253. +
  13254. + fragment@0 {
  13255. + target-path = "/";
  13256. + __overlay__ {
  13257. + dacpro_osc: dacpro_osc {
  13258. + compatible = "hifiberry,dacpro-clk";
  13259. + #clock-cells = <0>;
  13260. + };
  13261. + };
  13262. + };
  13263. +
  13264. + fragment@1 {
  13265. + target = <&i2s>;
  13266. + __overlay__ {
  13267. + status = "okay";
  13268. + };
  13269. + };
  13270. +
  13271. + fragment@2 {
  13272. + target = <&i2c1>;
  13273. + __overlay__ {
  13274. + #address-cells = <1>;
  13275. + #size-cells = <0>;
  13276. + status = "okay";
  13277. +
  13278. + pcm5122@4d {
  13279. + #sound-dai-cells = <0>;
  13280. + compatible = "ti,pcm5122";
  13281. + reg = <0x4d>;
  13282. + clocks = <&dacpro_osc>;
  13283. + AVDD-supply = <&vdd_3v3_reg>;
  13284. + DVDD-supply = <&vdd_3v3_reg>;
  13285. + CPVDD-supply = <&vdd_3v3_reg>;
  13286. + status = "okay";
  13287. + };
  13288. + };
  13289. + };
  13290. +
  13291. + fragment@3 {
  13292. + target = <&sound>;
  13293. + hifiberry_dacplus: __overlay__ {
  13294. + compatible = "hifiberry,hifiberry-dacplus";
  13295. + i2s-controller = <&i2s>;
  13296. + status = "okay";
  13297. + mute-gpio = <&gpio 4 0>;
  13298. + reset-gpio = <&gpio 17 0x11>;
  13299. + };
  13300. + };
  13301. +
  13302. + __overrides__ {
  13303. + 24db_digital_gain =
  13304. + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
  13305. + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
  13306. + leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
  13307. + mute_ext_ctl = <&hifiberry_dacplus>,"hifiberry-dacplus,mute_ext_ctl:0";
  13308. + auto_mute = <&hifiberry_dacplus>,"hifiberry-dacplus,auto_mute?";
  13309. + };
  13310. +};
  13311. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
  13312. new file mode 100644
  13313. index 000000000000..ea8a6c8f36c0
  13314. --- /dev/null
  13315. +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
  13316. @@ -0,0 +1,34 @@
  13317. +// Definitions for HiFiBerry DAC
  13318. +/dts-v1/;
  13319. +/plugin/;
  13320. +
  13321. +/ {
  13322. + compatible = "brcm,bcm2835";
  13323. +
  13324. + fragment@0 {
  13325. + target = <&i2s>;
  13326. + __overlay__ {
  13327. + status = "okay";
  13328. + };
  13329. + };
  13330. +
  13331. + fragment@1 {
  13332. + target-path = "/";
  13333. + __overlay__ {
  13334. + pcm5102a-codec {
  13335. + #sound-dai-cells = <0>;
  13336. + compatible = "ti,pcm5102a";
  13337. + status = "okay";
  13338. + };
  13339. + };
  13340. + };
  13341. +
  13342. + fragment@2 {
  13343. + target = <&sound>;
  13344. + __overlay__ {
  13345. + compatible = "hifiberry,hifiberry-dac";
  13346. + i2s-controller = <&i2s>;
  13347. + status = "okay";
  13348. + };
  13349. + };
  13350. +};
  13351. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
  13352. new file mode 100644
  13353. index 000000000000..ff19015ba656
  13354. --- /dev/null
  13355. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
  13356. @@ -0,0 +1,65 @@
  13357. +// Definitions for HiFiBerry DAC+
  13358. +/dts-v1/;
  13359. +/plugin/;
  13360. +
  13361. +/ {
  13362. + compatible = "brcm,bcm2835";
  13363. +
  13364. + fragment@0 {
  13365. + target-path = "/";
  13366. + __overlay__ {
  13367. + dacpro_osc: dacpro_osc {
  13368. + compatible = "hifiberry,dacpro-clk";
  13369. + #clock-cells = <0>;
  13370. + };
  13371. + };
  13372. + };
  13373. +
  13374. + fragment@1 {
  13375. + target = <&i2s>;
  13376. + __overlay__ {
  13377. + status = "okay";
  13378. + };
  13379. + };
  13380. +
  13381. + fragment@2 {
  13382. + target = <&i2c1>;
  13383. + __overlay__ {
  13384. + #address-cells = <1>;
  13385. + #size-cells = <0>;
  13386. + status = "okay";
  13387. +
  13388. + pcm5122@4d {
  13389. + #sound-dai-cells = <0>;
  13390. + compatible = "ti,pcm5122";
  13391. + reg = <0x4d>;
  13392. + clocks = <&dacpro_osc>;
  13393. + AVDD-supply = <&vdd_3v3_reg>;
  13394. + DVDD-supply = <&vdd_3v3_reg>;
  13395. + CPVDD-supply = <&vdd_3v3_reg>;
  13396. + status = "okay";
  13397. + };
  13398. + hpamp: hpamp@60 {
  13399. + compatible = "ti,tpa6130a2";
  13400. + reg = <0x60>;
  13401. + status = "disabled";
  13402. + };
  13403. + };
  13404. + };
  13405. +
  13406. + fragment@3 {
  13407. + target = <&sound>;
  13408. + hifiberry_dacplus: __overlay__ {
  13409. + compatible = "hifiberry,hifiberry-dacplus";
  13410. + i2s-controller = <&i2s>;
  13411. + status = "okay";
  13412. + };
  13413. + };
  13414. +
  13415. + __overrides__ {
  13416. + 24db_digital_gain =
  13417. + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
  13418. + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
  13419. + leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
  13420. + };
  13421. +};
  13422. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
  13423. new file mode 100644
  13424. index 000000000000..540563dec10f
  13425. --- /dev/null
  13426. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
  13427. @@ -0,0 +1,72 @@
  13428. +// Definitions for HiFiBerry DAC+ADC
  13429. +/dts-v1/;
  13430. +/plugin/;
  13431. +
  13432. +/ {
  13433. + compatible = "brcm,bcm2835";
  13434. +
  13435. + fragment@0 {
  13436. + target-path = "/";
  13437. + __overlay__ {
  13438. + dacpro_osc: dacpro_osc {
  13439. + compatible = "hifiberry,dacpro-clk";
  13440. + #clock-cells = <0>;
  13441. + };
  13442. + };
  13443. + };
  13444. +
  13445. + fragment@1 {
  13446. + target = <&i2s>;
  13447. + __overlay__ {
  13448. + status = "okay";
  13449. + };
  13450. + };
  13451. +
  13452. + fragment@2 {
  13453. + target = <&i2c1>;
  13454. + __overlay__ {
  13455. + #address-cells = <1>;
  13456. + #size-cells = <0>;
  13457. + status = "okay";
  13458. +
  13459. + pcm_codec: pcm5122@4d {
  13460. + #sound-dai-cells = <0>;
  13461. + compatible = "ti,pcm5122";
  13462. + reg = <0x4d>;
  13463. + clocks = <&dacpro_osc>;
  13464. + AVDD-supply = <&vdd_3v3_reg>;
  13465. + DVDD-supply = <&vdd_3v3_reg>;
  13466. + CPVDD-supply = <&vdd_3v3_reg>;
  13467. + status = "okay";
  13468. + };
  13469. + };
  13470. + };
  13471. +
  13472. + fragment@3 {
  13473. + target-path = "/";
  13474. + __overlay__ {
  13475. + dmic {
  13476. + #sound-dai-cells = <0>;
  13477. + compatible = "dmic-codec";
  13478. + num-channels = <2>;
  13479. + status = "okay";
  13480. + };
  13481. + };
  13482. + };
  13483. +
  13484. + fragment@4 {
  13485. + target = <&sound>;
  13486. + hifiberry_dacplusadc: __overlay__ {
  13487. + compatible = "hifiberry,hifiberry-dacplusadc";
  13488. + i2s-controller = <&i2s>;
  13489. + status = "okay";
  13490. + };
  13491. + };
  13492. +
  13493. + __overrides__ {
  13494. + 24db_digital_gain =
  13495. + <&hifiberry_dacplusadc>,"hifiberry,24db_digital_gain?";
  13496. + slave = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,slave?";
  13497. + leds_off = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,leds_off?";
  13498. + };
  13499. +};
  13500. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
  13501. new file mode 100644
  13502. index 000000000000..cafa2ccd7ff7
  13503. --- /dev/null
  13504. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
  13505. @@ -0,0 +1,65 @@
  13506. +// Definitions for HiFiBerry DAC+ADC PRO
  13507. +/dts-v1/;
  13508. +/plugin/;
  13509. +
  13510. +/ {
  13511. + compatible = "brcm,bcm2835";
  13512. +
  13513. + fragment@0 {
  13514. + target-path = "/";
  13515. + __overlay__ {
  13516. + dacpro_osc: dacpro_osc {
  13517. + compatible = "hifiberry,dacpro-clk";
  13518. + #clock-cells = <0>;
  13519. + };
  13520. + };
  13521. + };
  13522. +
  13523. + fragment@1 {
  13524. + target = <&i2s>;
  13525. + __overlay__ {
  13526. + status = "okay";
  13527. + };
  13528. + };
  13529. +
  13530. + fragment@2 {
  13531. + target = <&i2c1>;
  13532. + __overlay__ {
  13533. + #address-cells = <1>;
  13534. + #size-cells = <0>;
  13535. + status = "okay";
  13536. +
  13537. + hb_dac: pcm5122@4d {
  13538. + #sound-dai-cells = <0>;
  13539. + compatible = "ti,pcm5122";
  13540. + reg = <0x4d>;
  13541. + clocks = <&dacpro_osc>;
  13542. + status = "okay";
  13543. + };
  13544. + hb_adc: pcm186x@4a {
  13545. + #sound-dai-cells = <0>;
  13546. + compatible = "ti,pcm1863";
  13547. + reg = <0x4a>;
  13548. + clocks = <&dacpro_osc>;
  13549. + status = "okay";
  13550. + };
  13551. + };
  13552. + };
  13553. +
  13554. + fragment@3 {
  13555. + target = <&sound>;
  13556. + hifiberry_dacplusadcpro: __overlay__ {
  13557. + compatible = "hifiberry,hifiberry-dacplusadcpro";
  13558. + audio-codec = <&hb_dac &hb_adc>;
  13559. + i2s-controller = <&i2s>;
  13560. + status = "okay";
  13561. + };
  13562. + };
  13563. +
  13564. + __overrides__ {
  13565. + 24db_digital_gain =
  13566. + <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,24db_digital_gain?";
  13567. + slave = <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,slave?";
  13568. + leds_off = <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,leds_off?";
  13569. + };
  13570. +};
  13571. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
  13572. new file mode 100644
  13573. index 000000000000..63432e8b983f
  13574. --- /dev/null
  13575. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
  13576. @@ -0,0 +1,34 @@
  13577. +// Definitions for hifiberry DAC+DSP soundcard overlay
  13578. +/dts-v1/;
  13579. +/plugin/;
  13580. +
  13581. +/ {
  13582. + compatible = "brcm,bcm2835";
  13583. +
  13584. + fragment@0 {
  13585. + target = <&i2s>;
  13586. + __overlay__ {
  13587. + status = "okay";
  13588. + };
  13589. + };
  13590. +
  13591. + fragment@1 {
  13592. + target-path = "/";
  13593. + __overlay__ {
  13594. + dacplusdsp-codec {
  13595. + #sound-dai-cells = <0>;
  13596. + compatible = "hifiberry,dacplusdsp";
  13597. + status = "okay";
  13598. + };
  13599. + };
  13600. + };
  13601. +
  13602. + fragment@2 {
  13603. + target = <&sound>;
  13604. + __overlay__ {
  13605. + compatible = "hifiberrydacplusdsp,hifiberrydacplusdsp-soundcard";
  13606. + i2s-controller = <&i2s>;
  13607. + status = "okay";
  13608. + };
  13609. + };
  13610. +};
  13611. diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
  13612. new file mode 100644
  13613. index 000000000000..c5583e010339
  13614. --- /dev/null
  13615. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
  13616. @@ -0,0 +1,106 @@
  13617. +// Definitions for HiFiBerry DAC+ HD
  13618. +/dts-v1/;
  13619. +/plugin/;
  13620. +
  13621. +#include <dt-bindings/gpio/gpio.h>
  13622. +
  13623. +/ {
  13624. + compatible = "brcm,bcm2835";
  13625. +
  13626. + fragment@0 {
  13627. + target-path = "/";
  13628. + __overlay__ {
  13629. + dachd_osc: pll_dachd_osc {
  13630. + compatible = "hifiberry,dachd-clk";
  13631. + #clock-cells = <0>;
  13632. + };
  13633. + };
  13634. + };
  13635. +
  13636. + fragment@1 {
  13637. + target = <&i2s>;
  13638. + __overlay__ {
  13639. + status = "okay";
  13640. + };
  13641. + };
  13642. +
  13643. + fragment@2 {
  13644. + target = <&i2c1>;
  13645. + __overlay__ {
  13646. + #address-cells = <1>;
  13647. + #size-cells = <0>;
  13648. + status = "okay";
  13649. +
  13650. + pcm1792a@4c {
  13651. + compatible = "ti,pcm1792a";
  13652. + #sound-dai-cells = <0>;
  13653. + #clock-cells = <0>;
  13654. + clocks = <&dachd_osc>;
  13655. + reg = <0x4c>;
  13656. + status = "okay";
  13657. + };
  13658. + pll: pll@62 {
  13659. + compatible = "hifiberry,dachd-clk";
  13660. + #clock-cells = <0>;
  13661. + reg = <0x62>;
  13662. + clocks = <&dachd_osc>;
  13663. + status = "okay";
  13664. + common_pll_regs = [
  13665. + 02 53 03 00 07 20 0F 00
  13666. + 10 0D 11 1D 12 0D 13 8C
  13667. + 14 8C 15 8C 16 8C 17 8C
  13668. + 18 2A 1C 00 1D 0F 1F 00
  13669. + 2A 00 2C 00 2F 00 30 00
  13670. + 31 00 32 00 34 00 37 00
  13671. + 38 00 39 00 3A 00 3B 01
  13672. + 3E 00 3F 00 40 00 41 00
  13673. + 5A 00 5B 00 95 00 96 00
  13674. + 97 00 98 00 99 00 9A 00
  13675. + 9B 00 A2 00 A3 00 A4 00
  13676. + B7 92 ];
  13677. + 192k_pll_regs = [
  13678. + 1A 0C 1B 35 1E F0 20 09
  13679. + 21 50 2B 02 2D 10 2E 40
  13680. + 33 01 35 22 36 80 3C 22
  13681. + 3D 46 ];
  13682. + 96k_pll_regs = [
  13683. + 1A 0C 1B 35 1E F0 20 09
  13684. + 21 50 2B 02 2D 10 2E 40
  13685. + 33 01 35 47 36 00 3C 32
  13686. + 3D 46 ];
  13687. + 48k_pll_regs = [
  13688. + 1A 0C 1B 35 1E F0 20 09
  13689. + 21 50 2B 02 2D 10 2E 40
  13690. + 33 01 35 90 36 00 3C 42
  13691. + 3D 46 ];
  13692. + 176k4_pll_regs = [
  13693. + 1A 3D 1B 09 1E F3 20 13
  13694. + 21 75 2B 04 2D 11 2E E0
  13695. + 33 02 35 25 36 C0 3C 22
  13696. + 3D 7A ];
  13697. + 88k2_pll_regs = [
  13698. + 1A 3D 1B 09 1E F3 20 13
  13699. + 21 75 2B 04 2D 11 2E E0
  13700. + 33 01 35 4D 36 80 3C 32
  13701. + 3D 7A ];
  13702. + 44k1_pll_regs = [
  13703. + 1A 3D 1B 09 1E F3 20 13
  13704. + 21 75 2B 04 2D 11 2E E0
  13705. + 33 01 35 9D 36 00 3C 42
  13706. + 3D 7A ];
  13707. + };
  13708. + };
  13709. + };
  13710. +
  13711. + fragment@3 {
  13712. + target = <&sound>;
  13713. + __overlay__ {
  13714. + compatible = "hifiberry,hifiberry-dacplushd";
  13715. + i2s-controller = <&i2s>;
  13716. + clocks = <&pll 0>;
  13717. + reset-gpio = <&gpio 16 GPIO_ACTIVE_LOW>;
  13718. + status = "okay";
  13719. + };
  13720. + };
  13721. +
  13722. +};
  13723. diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
  13724. new file mode 100644
  13725. index 000000000000..a2309a50e8d8
  13726. --- /dev/null
  13727. +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
  13728. @@ -0,0 +1,41 @@
  13729. +// Definitions for HiFiBerry Digi
  13730. +/dts-v1/;
  13731. +/plugin/;
  13732. +
  13733. +/ {
  13734. + compatible = "brcm,bcm2835";
  13735. +
  13736. + fragment@0 {
  13737. + target = <&i2s>;
  13738. + __overlay__ {
  13739. + status = "okay";
  13740. + };
  13741. + };
  13742. +
  13743. + fragment@1 {
  13744. + target = <&i2c1>;
  13745. + __overlay__ {
  13746. + #address-cells = <1>;
  13747. + #size-cells = <0>;
  13748. + status = "okay";
  13749. +
  13750. + wm8804@3b {
  13751. + #sound-dai-cells = <0>;
  13752. + compatible = "wlf,wm8804";
  13753. + reg = <0x3b>;
  13754. + PVDD-supply = <&vdd_3v3_reg>;
  13755. + DVDD-supply = <&vdd_3v3_reg>;
  13756. + status = "okay";
  13757. + };
  13758. + };
  13759. + };
  13760. +
  13761. + fragment@2 {
  13762. + target = <&sound>;
  13763. + __overlay__ {
  13764. + compatible = "hifiberry,hifiberry-digi";
  13765. + i2s-controller = <&i2s>;
  13766. + status = "okay";
  13767. + };
  13768. + };
  13769. +};
  13770. diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
  13771. new file mode 100644
  13772. index 000000000000..83de602e76ba
  13773. --- /dev/null
  13774. +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
  13775. @@ -0,0 +1,43 @@
  13776. +// Definitions for HiFiBerry Digi Pro
  13777. +/dts-v1/;
  13778. +/plugin/;
  13779. +
  13780. +/ {
  13781. + compatible = "brcm,bcm2835";
  13782. +
  13783. + fragment@0 {
  13784. + target = <&i2s>;
  13785. + __overlay__ {
  13786. + status = "okay";
  13787. + };
  13788. + };
  13789. +
  13790. + fragment@1 {
  13791. + target = <&i2c1>;
  13792. + __overlay__ {
  13793. + #address-cells = <1>;
  13794. + #size-cells = <0>;
  13795. + status = "okay";
  13796. +
  13797. + wm8804@3b {
  13798. + #sound-dai-cells = <0>;
  13799. + compatible = "wlf,wm8804";
  13800. + reg = <0x3b>;
  13801. + PVDD-supply = <&vdd_3v3_reg>;
  13802. + DVDD-supply = <&vdd_3v3_reg>;
  13803. + status = "okay";
  13804. + };
  13805. + };
  13806. + };
  13807. +
  13808. + fragment@2 {
  13809. + target = <&sound>;
  13810. + __overlay__ {
  13811. + compatible = "hifiberry,hifiberry-digi";
  13812. + i2s-controller = <&i2s>;
  13813. + status = "okay";
  13814. + clock44-gpio = <&gpio 5 0>;
  13815. + clock48-gpio = <&gpio 6 0>;
  13816. + };
  13817. + };
  13818. +};
  13819. diff --git a/arch/arm/boot/dts/overlays/highperi-overlay.dts b/arch/arm/boot/dts/overlays/highperi-overlay.dts
  13820. new file mode 100644
  13821. index 000000000000..46cb76c2d34f
  13822. --- /dev/null
  13823. +++ b/arch/arm/boot/dts/overlays/highperi-overlay.dts
  13824. @@ -0,0 +1,63 @@
  13825. +/*
  13826. + * highperi.dts
  13827. + */
  13828. +
  13829. +/dts-v1/;
  13830. +/plugin/;
  13831. +
  13832. +/ {
  13833. + compatible = "brcm,bcm2711";
  13834. +
  13835. + fragment@0 {
  13836. + target = <&soc>;
  13837. + #address-cells = <2>;
  13838. + #size-cells = <1>;
  13839. +
  13840. + __overlay__ {
  13841. + #address-cells = <1>;
  13842. + #size-cells = <1>;
  13843. + ranges = <0x7c000000 0x4 0x7c000000 0x04000000>,
  13844. + <0x40000000 0x4 0xc0000000 0x00800000>;
  13845. + };
  13846. + };
  13847. +
  13848. + fragment@1 {
  13849. + target = <&scb>;
  13850. + #address-cells = <2>;
  13851. + #size-cells = <1>;
  13852. +
  13853. + __overlay__ {
  13854. + #address-cells = <2>;
  13855. + #size-cells = <2>;
  13856. + ranges = <0x0 0x7c000000 0x4 0x7c000000 0x0 0x04000000>,
  13857. + <0x0 0x40000000 0x4 0xc0000000 0x0 0x00800000>,
  13858. + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>;
  13859. + dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x2 0x00000000>;
  13860. + };
  13861. + };
  13862. +
  13863. + fragment@2 {
  13864. + target = <&v3dbus>;
  13865. + #address-cells = <2>;
  13866. + #size-cells = <1>;
  13867. +
  13868. + __overlay__ {
  13869. + #address-cells = <1>;
  13870. + #size-cells = <2>;
  13871. + ranges = <0x7c500000 0x4 0x7c500000 0x0 0x03300000>,
  13872. + <0x40000000 0x4 0xc0000000 0x0 0x00800000>;
  13873. + };
  13874. + };
  13875. +
  13876. + fragment@3 {
  13877. + target = <&emmc2bus>;
  13878. + #address-cells = <2>;
  13879. + #size-cells = <1>;
  13880. +
  13881. + __overlay__ {
  13882. + #address-cells = <2>;
  13883. + #size-cells = <1>;
  13884. + ranges = <0x0 0x7e000000 0x4 0x7e000000 0x01800000>;
  13885. + };
  13886. + };
  13887. +};
  13888. diff --git a/arch/arm/boot/dts/overlays/hy28a-overlay.dts b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
  13889. new file mode 100644
  13890. index 000000000000..5843a5e9c86a
  13891. --- /dev/null
  13892. +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
  13893. @@ -0,0 +1,93 @@
  13894. +/*
  13895. + * Device Tree overlay for HY28A display
  13896. + *
  13897. + */
  13898. +
  13899. +/dts-v1/;
  13900. +/plugin/;
  13901. +
  13902. +/ {
  13903. + compatible = "brcm,bcm2835";
  13904. +
  13905. + fragment@0 {
  13906. + target = <&spi0>;
  13907. + __overlay__ {
  13908. + status = "okay";
  13909. + };
  13910. + };
  13911. +
  13912. + fragment@1 {
  13913. + target = <&spidev0>;
  13914. + __overlay__ {
  13915. + status = "disabled";
  13916. + };
  13917. + };
  13918. +
  13919. + fragment@2 {
  13920. + target = <&spidev1>;
  13921. + __overlay__ {
  13922. + status = "disabled";
  13923. + };
  13924. + };
  13925. +
  13926. + fragment@3 {
  13927. + target = <&gpio>;
  13928. + __overlay__ {
  13929. + hy28a_pins: hy28a_pins {
  13930. + brcm,pins = <17 25 18>;
  13931. + brcm,function = <0 1 1>; /* in out out */
  13932. + };
  13933. + };
  13934. + };
  13935. +
  13936. + fragment@4 {
  13937. + target = <&spi0>;
  13938. + __overlay__ {
  13939. + /* needed to avoid dtc warning */
  13940. + #address-cells = <1>;
  13941. + #size-cells = <0>;
  13942. +
  13943. + hy28a: hy28a@0{
  13944. + compatible = "ilitek,ili9320";
  13945. + reg = <0>;
  13946. + pinctrl-names = "default";
  13947. + pinctrl-0 = <&hy28a_pins>;
  13948. +
  13949. + spi-max-frequency = <32000000>;
  13950. + spi-cpol;
  13951. + spi-cpha;
  13952. + rotate = <270>;
  13953. + bgr;
  13954. + fps = <50>;
  13955. + buswidth = <8>;
  13956. + startbyte = <0x70>;
  13957. + reset-gpios = <&gpio 25 1>;
  13958. + led-gpios = <&gpio 18 1>;
  13959. + debug = <0>;
  13960. + };
  13961. +
  13962. + hy28a_ts: hy28a-ts@1 {
  13963. + compatible = "ti,ads7846";
  13964. + reg = <1>;
  13965. +
  13966. + spi-max-frequency = <2000000>;
  13967. + interrupts = <17 2>; /* high-to-low edge triggered */
  13968. + interrupt-parent = <&gpio>;
  13969. + pendown-gpio = <&gpio 17 0>;
  13970. + ti,x-plate-ohms = /bits/ 16 <100>;
  13971. + ti,pressure-max = /bits/ 16 <255>;
  13972. + };
  13973. + };
  13974. + };
  13975. + __overrides__ {
  13976. + speed = <&hy28a>,"spi-max-frequency:0";
  13977. + rotate = <&hy28a>,"rotate:0";
  13978. + fps = <&hy28a>,"fps:0";
  13979. + debug = <&hy28a>,"debug:0";
  13980. + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
  13981. + resetgpio = <&hy28a>,"reset-gpios:4",
  13982. + <&hy28a_pins>, "brcm,pins:4";
  13983. + ledgpio = <&hy28a>,"led-gpios:4",
  13984. + <&hy28a_pins>, "brcm,pins:8";
  13985. + };
  13986. +};
  13987. diff --git a/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
  13988. new file mode 100644
  13989. index 000000000000..95bfb1eadc20
  13990. --- /dev/null
  13991. +++ b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
  13992. @@ -0,0 +1,152 @@
  13993. +/*
  13994. + * Device Tree overlay for HY28b display shield by Texy.
  13995. + * Modified for 2017 version with ILI9325 D chip
  13996. + */
  13997. +
  13998. +/dts-v1/;
  13999. +/plugin/;
  14000. +
  14001. +/ {
  14002. + compatible = "brcm,bcm2835";
  14003. +
  14004. + fragment@0 {
  14005. + target = <&spi0>;
  14006. + __overlay__ {
  14007. + status = "okay";
  14008. + };
  14009. + };
  14010. +
  14011. + fragment@1 {
  14012. + target = <&spidev0>;
  14013. + __overlay__ {
  14014. + status = "disabled";
  14015. + };
  14016. + };
  14017. +
  14018. + fragment@2 {
  14019. + target = <&spidev1>;
  14020. + __overlay__ {
  14021. + status = "disabled";
  14022. + };
  14023. + };
  14024. +
  14025. + fragment@3 {
  14026. + target = <&gpio>;
  14027. + __overlay__ {
  14028. + hy28b_pins: hy28b_pins {
  14029. + brcm,pins = <17 25 18>;
  14030. + brcm,function = <0 1 1>; /* in out out */
  14031. + };
  14032. + };
  14033. + };
  14034. +
  14035. + fragment@4 {
  14036. + target = <&spi0>;
  14037. + __overlay__ {
  14038. + /* needed to avoid dtc warning */
  14039. + #address-cells = <1>;
  14040. + #size-cells = <0>;
  14041. +
  14042. + hy28b: hy28b@0{
  14043. + compatible = "ilitek,ili9325";
  14044. + reg = <0>;
  14045. + pinctrl-names = "default";
  14046. + pinctrl-0 = <&hy28b_pins>;
  14047. +
  14048. + spi-max-frequency = <48000000>;
  14049. + spi-cpol;
  14050. + spi-cpha;
  14051. + rotate = <270>;
  14052. + bgr;
  14053. + fps = <50>;
  14054. + buswidth = <8>;
  14055. + startbyte = <0x70>;
  14056. + reset-gpios = <&gpio 25 1>;
  14057. + led-gpios = <&gpio 18 1>;
  14058. +
  14059. + init = <0x10000e5 0x78F0
  14060. + 0x1000001 0x0100
  14061. + 0x1000002 0x0700
  14062. + 0x1000003 0x1030
  14063. + 0x1000004 0x0000
  14064. + 0x1000008 0x0207
  14065. + 0x1000009 0x0000
  14066. + 0x100000a 0x0000
  14067. + 0x100000c 0x0000
  14068. + 0x100000d 0x0000
  14069. + 0x100000f 0x0000
  14070. + 0x1000010 0x0000
  14071. + 0x1000011 0x0007
  14072. + 0x1000012 0x0000
  14073. + 0x1000013 0x0000
  14074. + 0x1000007 0x0001
  14075. + 0x2000032
  14076. + 0x2000032
  14077. + 0x2000032
  14078. + 0x2000032
  14079. + 0x1000010 0x1090
  14080. + 0x1000011 0x0227
  14081. + 0x2000032
  14082. + 0x1000012 0x001f
  14083. + 0x2000032
  14084. + 0x1000013 0x1500
  14085. + 0x1000029 0x0027
  14086. + 0x100002b 0x000d
  14087. + 0x2000032
  14088. + 0x1000020 0x0000
  14089. + 0x1000021 0x0000
  14090. + 0x2000032
  14091. + 0x1000030 0x0000
  14092. + 0x1000031 0x0707
  14093. + 0x1000032 0x0307
  14094. + 0x1000035 0x0200
  14095. + 0x1000036 0x0008
  14096. + 0x1000037 0x0004
  14097. + 0x1000038 0x0000
  14098. + 0x1000039 0x0707
  14099. + 0x100003c 0x0002
  14100. + 0x100003d 0x1d04
  14101. + 0x1000050 0x0000
  14102. + 0x1000051 0x00ef
  14103. + 0x1000052 0x0000
  14104. + 0x1000053 0x013f
  14105. + 0x1000060 0xa700
  14106. + 0x1000061 0x0001
  14107. + 0x100006a 0x0000
  14108. + 0x1000080 0x0000
  14109. + 0x1000081 0x0000
  14110. + 0x1000082 0x0000
  14111. + 0x1000083 0x0000
  14112. + 0x1000084 0x0000
  14113. + 0x1000085 0x0000
  14114. + 0x1000090 0x0010
  14115. + 0x1000092 0x0600
  14116. + 0x1000007 0x0133>;
  14117. + debug = <0>;
  14118. + };
  14119. +
  14120. + hy28b_ts: hy28b-ts@1 {
  14121. + compatible = "ti,ads7846";
  14122. + reg = <1>;
  14123. +
  14124. + spi-max-frequency = <2000000>;
  14125. + interrupts = <17 2>; /* high-to-low edge triggered */
  14126. + interrupt-parent = <&gpio>;
  14127. + pendown-gpio = <&gpio 17 0>;
  14128. + ti,x-plate-ohms = /bits/ 16 <100>;
  14129. + ti,pressure-max = /bits/ 16 <255>;
  14130. + };
  14131. + };
  14132. + };
  14133. + __overrides__ {
  14134. + speed = <&hy28b>,"spi-max-frequency:0";
  14135. + rotate = <&hy28b>,"rotate:0";
  14136. + fps = <&hy28b>,"fps:0";
  14137. + debug = <&hy28b>,"debug:0";
  14138. + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
  14139. + resetgpio = <&hy28b>,"reset-gpios:4",
  14140. + <&hy28b_pins>, "brcm,pins:4";
  14141. + ledgpio = <&hy28b>,"led-gpios:4",
  14142. + <&hy28b_pins>, "brcm,pins:8";
  14143. + };
  14144. +};
  14145. diff --git a/arch/arm/boot/dts/overlays/hy28b-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
  14146. new file mode 100644
  14147. index 000000000000..9edd0848d555
  14148. --- /dev/null
  14149. +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
  14150. @@ -0,0 +1,148 @@
  14151. +/*
  14152. + * Device Tree overlay for HY28b display shield by Texy
  14153. + *
  14154. + */
  14155. +
  14156. +/dts-v1/;
  14157. +/plugin/;
  14158. +
  14159. +/ {
  14160. + compatible = "brcm,bcm2835";
  14161. +
  14162. + fragment@0 {
  14163. + target = <&spi0>;
  14164. + __overlay__ {
  14165. + status = "okay";
  14166. + };
  14167. + };
  14168. +
  14169. + fragment@1 {
  14170. + target = <&spidev0>;
  14171. + __overlay__ {
  14172. + status = "disabled";
  14173. + };
  14174. + };
  14175. +
  14176. + fragment@2 {
  14177. + target = <&spidev1>;
  14178. + __overlay__ {
  14179. + status = "disabled";
  14180. + };
  14181. + };
  14182. +
  14183. + fragment@3 {
  14184. + target = <&gpio>;
  14185. + __overlay__ {
  14186. + hy28b_pins: hy28b_pins {
  14187. + brcm,pins = <17 25 18>;
  14188. + brcm,function = <0 1 1>; /* in out out */
  14189. + };
  14190. + };
  14191. + };
  14192. +
  14193. + fragment@4 {
  14194. + target = <&spi0>;
  14195. + __overlay__ {
  14196. + /* needed to avoid dtc warning */
  14197. + #address-cells = <1>;
  14198. + #size-cells = <0>;
  14199. +
  14200. + hy28b: hy28b@0{
  14201. + compatible = "ilitek,ili9325";
  14202. + reg = <0>;
  14203. + pinctrl-names = "default";
  14204. + pinctrl-0 = <&hy28b_pins>;
  14205. +
  14206. + spi-max-frequency = <48000000>;
  14207. + spi-cpol;
  14208. + spi-cpha;
  14209. + rotate = <270>;
  14210. + bgr;
  14211. + fps = <50>;
  14212. + buswidth = <8>;
  14213. + startbyte = <0x70>;
  14214. + reset-gpios = <&gpio 25 1>;
  14215. + led-gpios = <&gpio 18 1>;
  14216. +
  14217. + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
  14218. +
  14219. + init = <0x10000e7 0x0010
  14220. + 0x1000000 0x0001
  14221. + 0x1000001 0x0100
  14222. + 0x1000002 0x0700
  14223. + 0x1000003 0x1030
  14224. + 0x1000004 0x0000
  14225. + 0x1000008 0x0207
  14226. + 0x1000009 0x0000
  14227. + 0x100000a 0x0000
  14228. + 0x100000c 0x0001
  14229. + 0x100000d 0x0000
  14230. + 0x100000f 0x0000
  14231. + 0x1000010 0x0000
  14232. + 0x1000011 0x0007
  14233. + 0x1000012 0x0000
  14234. + 0x1000013 0x0000
  14235. + 0x2000032
  14236. + 0x1000010 0x1590
  14237. + 0x1000011 0x0227
  14238. + 0x2000032
  14239. + 0x1000012 0x009c
  14240. + 0x2000032
  14241. + 0x1000013 0x1900
  14242. + 0x1000029 0x0023
  14243. + 0x100002b 0x000e
  14244. + 0x2000032
  14245. + 0x1000020 0x0000
  14246. + 0x1000021 0x0000
  14247. + 0x2000032
  14248. + 0x1000050 0x0000
  14249. + 0x1000051 0x00ef
  14250. + 0x1000052 0x0000
  14251. + 0x1000053 0x013f
  14252. + 0x1000060 0xa700
  14253. + 0x1000061 0x0001
  14254. + 0x100006a 0x0000
  14255. + 0x1000080 0x0000
  14256. + 0x1000081 0x0000
  14257. + 0x1000082 0x0000
  14258. + 0x1000083 0x0000
  14259. + 0x1000084 0x0000
  14260. + 0x1000085 0x0000
  14261. + 0x1000090 0x0010
  14262. + 0x1000092 0x0000
  14263. + 0x1000093 0x0003
  14264. + 0x1000095 0x0110
  14265. + 0x1000097 0x0000
  14266. + 0x1000098 0x0000
  14267. + 0x1000007 0x0133
  14268. + 0x1000020 0x0000
  14269. + 0x1000021 0x0000
  14270. + 0x2000064>;
  14271. + debug = <0>;
  14272. + };
  14273. +
  14274. + hy28b_ts: hy28b-ts@1 {
  14275. + compatible = "ti,ads7846";
  14276. + reg = <1>;
  14277. +
  14278. + spi-max-frequency = <2000000>;
  14279. + interrupts = <17 2>; /* high-to-low edge triggered */
  14280. + interrupt-parent = <&gpio>;
  14281. + pendown-gpio = <&gpio 17 0>;
  14282. + ti,x-plate-ohms = /bits/ 16 <100>;
  14283. + ti,pressure-max = /bits/ 16 <255>;
  14284. + };
  14285. + };
  14286. + };
  14287. + __overrides__ {
  14288. + speed = <&hy28b>,"spi-max-frequency:0";
  14289. + rotate = <&hy28b>,"rotate:0";
  14290. + fps = <&hy28b>,"fps:0";
  14291. + debug = <&hy28b>,"debug:0";
  14292. + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
  14293. + resetgpio = <&hy28b>,"reset-gpios:4",
  14294. + <&hy28b_pins>, "brcm,pins:4";
  14295. + ledgpio = <&hy28b>,"led-gpios:4",
  14296. + <&hy28b_pins>, "brcm,pins:8";
  14297. + };
  14298. +};
  14299. diff --git a/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
  14300. new file mode 100644
  14301. index 000000000000..0c4cff354674
  14302. --- /dev/null
  14303. +++ b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
  14304. @@ -0,0 +1,39 @@
  14305. +// Definitions for I-Sabre Q2M
  14306. +/dts-v1/;
  14307. +/plugin/;
  14308. +
  14309. +/ {
  14310. + compatible = "brcm,bcm2835";
  14311. +
  14312. + fragment@0 {
  14313. + target = <&sound>;
  14314. + frag0: __overlay__ {
  14315. + compatible = "audiophonics,i-sabre-q2m";
  14316. + i2s-controller = <&i2s>;
  14317. + status = "okay";
  14318. + };
  14319. + };
  14320. +
  14321. + fragment@1 {
  14322. + target = <&i2s>;
  14323. + __overlay__ {
  14324. + status = "okay";
  14325. + };
  14326. + };
  14327. +
  14328. + fragment@2 {
  14329. + target = <&i2c1>;
  14330. + __overlay__ {
  14331. + #address-cells = <1>;
  14332. + #size-cells = <0>;
  14333. + status = "okay";
  14334. +
  14335. + i-sabre-codec@48 {
  14336. + #sound-dai-cells = <0>;
  14337. + compatible = "audiophonics,i-sabre-codec";
  14338. + reg = <0x48>;
  14339. + status = "okay";
  14340. + };
  14341. + };
  14342. + };
  14343. +};
  14344. diff --git a/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
  14345. new file mode 100644
  14346. index 000000000000..8204b6b3aef8
  14347. --- /dev/null
  14348. +++ b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
  14349. @@ -0,0 +1,13 @@
  14350. +/dts-v1/;
  14351. +/plugin/;
  14352. +
  14353. +/{
  14354. + compatible = "brcm,bcm2835";
  14355. +
  14356. + fragment@0 {
  14357. + target = <&i2c_arm>;
  14358. + __overlay__ {
  14359. + compatible = "brcm,bcm2708-i2c";
  14360. + };
  14361. + };
  14362. +};
  14363. diff --git a/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
  14364. new file mode 100644
  14365. index 000000000000..63231b5d7c0c
  14366. --- /dev/null
  14367. +++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
  14368. @@ -0,0 +1,47 @@
  14369. +// Overlay for i2c_gpio bitbanging host bus.
  14370. +/dts-v1/;
  14371. +/plugin/;
  14372. +
  14373. +#include <dt-bindings/gpio/gpio.h>
  14374. +
  14375. +/ {
  14376. + compatible = "brcm,bcm2835";
  14377. +
  14378. + fragment@0 {
  14379. + target-path = "/";
  14380. +
  14381. + __overlay__ {
  14382. + i2c_gpio: i2c@0 {
  14383. + reg = <0xffffffff>;
  14384. + compatible = "i2c-gpio";
  14385. + gpios = <&gpio 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
  14386. + &gpio 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
  14387. + >;
  14388. + i2c-gpio,delay-us = <2>; /* ~100 kHz */
  14389. + #address-cells = <1>;
  14390. + #size-cells = <0>;
  14391. + };
  14392. + };
  14393. + };
  14394. +
  14395. + fragment@1 {
  14396. + target-path = "/aliases";
  14397. + __overlay__ {
  14398. + i2c_gpio = "/i2c@0";
  14399. + };
  14400. + };
  14401. +
  14402. + fragment@2 {
  14403. + target-path = "/__symbols__";
  14404. + __overlay__ {
  14405. + i2c_gpio = "/i2c@0";
  14406. + };
  14407. + };
  14408. +
  14409. + __overrides__ {
  14410. + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
  14411. + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
  14412. + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
  14413. + bus = <&i2c_gpio>, "reg:0";
  14414. + };
  14415. +};
  14416. diff --git a/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
  14417. new file mode 100644
  14418. index 000000000000..112aed91ecb2
  14419. --- /dev/null
  14420. +++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
  14421. @@ -0,0 +1,139 @@
  14422. +// Umbrella I2C Mux overlay
  14423. +
  14424. +/dts-v1/;
  14425. +/plugin/;
  14426. +
  14427. +/{
  14428. + compatible = "brcm,bcm2835";
  14429. +
  14430. + fragment@0 {
  14431. + target = <&i2c_arm>;
  14432. + __dormant__ {
  14433. + #address-cells = <1>;
  14434. + #size-cells = <0>;
  14435. + status = "okay";
  14436. +
  14437. + pca9542: mux@70 {
  14438. + compatible = "nxp,pca9542";
  14439. + reg = <0x70>;
  14440. + #address-cells = <1>;
  14441. + #size-cells = <0>;
  14442. +
  14443. + i2c@0 {
  14444. + #address-cells = <1>;
  14445. + #size-cells = <0>;
  14446. + reg = <0>;
  14447. + };
  14448. + i2c@1 {
  14449. + #address-cells = <1>;
  14450. + #size-cells = <0>;
  14451. + reg = <1>;
  14452. + };
  14453. + };
  14454. + };
  14455. + };
  14456. +
  14457. + fragment@1 {
  14458. + target = <&i2c_arm>;
  14459. + __dormant__ {
  14460. + #address-cells = <1>;
  14461. + #size-cells = <0>;
  14462. + status = "okay";
  14463. +
  14464. + pca9545: mux@70 {
  14465. + compatible = "nxp,pca9545";
  14466. + reg = <0x70>;
  14467. + #address-cells = <1>;
  14468. + #size-cells = <0>;
  14469. +
  14470. + i2c@0 {
  14471. + #address-cells = <1>;
  14472. + #size-cells = <0>;
  14473. + reg = <0>;
  14474. + };
  14475. + i2c@1 {
  14476. + #address-cells = <1>;
  14477. + #size-cells = <0>;
  14478. + reg = <1>;
  14479. + };
  14480. + i2c@2 {
  14481. + #address-cells = <1>;
  14482. + #size-cells = <0>;
  14483. + reg = <2>;
  14484. + };
  14485. + i2c@3 {
  14486. + #address-cells = <1>;
  14487. + #size-cells = <0>;
  14488. + reg = <3>;
  14489. + };
  14490. + };
  14491. + };
  14492. + };
  14493. +
  14494. + fragment@2 {
  14495. + target = <&i2c_arm>;
  14496. + __dormant__ {
  14497. + #address-cells = <1>;
  14498. + #size-cells = <0>;
  14499. + status = "okay";
  14500. +
  14501. + pca9548: mux@70 {
  14502. + compatible = "nxp,pca9548";
  14503. + reg = <0x70>;
  14504. + #address-cells = <1>;
  14505. + #size-cells = <0>;
  14506. +
  14507. + i2c@0 {
  14508. + #address-cells = <1>;
  14509. + #size-cells = <0>;
  14510. + reg = <0>;
  14511. + };
  14512. + i2c@1 {
  14513. + #address-cells = <1>;
  14514. + #size-cells = <0>;
  14515. + reg = <1>;
  14516. + };
  14517. + i2c@2 {
  14518. + #address-cells = <1>;
  14519. + #size-cells = <0>;
  14520. + reg = <2>;
  14521. + };
  14522. + i2c@3 {
  14523. + #address-cells = <1>;
  14524. + #size-cells = <0>;
  14525. + reg = <3>;
  14526. + };
  14527. + i2c@4 {
  14528. + #address-cells = <1>;
  14529. + #size-cells = <0>;
  14530. + reg = <4>;
  14531. + };
  14532. + i2c@5 {
  14533. + #address-cells = <1>;
  14534. + #size-cells = <0>;
  14535. + reg = <5>;
  14536. + };
  14537. + i2c@6 {
  14538. + #address-cells = <1>;
  14539. + #size-cells = <0>;
  14540. + reg = <6>;
  14541. + };
  14542. + i2c@7 {
  14543. + #address-cells = <1>;
  14544. + #size-cells = <0>;
  14545. + reg = <7>;
  14546. + };
  14547. + };
  14548. + };
  14549. + };
  14550. +
  14551. + __overrides__ {
  14552. + pca9542 = <0>, "+0";
  14553. + pca9545 = <0>, "+1";
  14554. + pca9548 = <0>, "+2";
  14555. +
  14556. + addr = <&pca9542>,"reg:0",
  14557. + <&pca9545>,"reg:0",
  14558. + <&pca9548>,"reg:0";
  14559. + };
  14560. +};
  14561. diff --git a/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
  14562. new file mode 100644
  14563. index 000000000000..9bb16465a50e
  14564. --- /dev/null
  14565. +++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
  14566. @@ -0,0 +1,26 @@
  14567. +// Definitions for NXP PCA9685A I2C PWM controller on ARM I2C bus.
  14568. +/dts-v1/;
  14569. +/plugin/;
  14570. +
  14571. +/{
  14572. + compatible = "brcm,bcm2835";
  14573. +
  14574. + fragment@0 {
  14575. + target = <&i2c_arm>;
  14576. + __overlay__ {
  14577. + #address-cells = <1>;
  14578. + #size-cells = <0>;
  14579. + status = "okay";
  14580. +
  14581. + pca: pca@40 {
  14582. + compatible = "nxp,pca9685-pwm";
  14583. + #pwm-cells = <2>;
  14584. + reg = <0x40>;
  14585. + status = "okay";
  14586. + };
  14587. + };
  14588. + };
  14589. + __overrides__ {
  14590. + addr = <&pca>,"reg:0";
  14591. + };
  14592. +};
  14593. diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi b/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi
  14594. new file mode 100644
  14595. index 000000000000..7f749fc2d802
  14596. --- /dev/null
  14597. +++ b/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi
  14598. @@ -0,0 +1,323 @@
  14599. +// Definitions for several I2C based Real Time Clocks
  14600. +
  14601. +/ {
  14602. + compatible = "brcm,bcm2835";
  14603. +
  14604. + fragment@0 {
  14605. + target = <&i2cbus>;
  14606. + __dormant__ {
  14607. + #address-cells = <1>;
  14608. + #size-cells = <0>;
  14609. +
  14610. + abx80x: abx80x@69 {
  14611. + compatible = "abracon,abx80x";
  14612. + reg = <0x69>;
  14613. + abracon,tc-diode = "standard";
  14614. + abracon,tc-resistor = <0>;
  14615. + };
  14616. + };
  14617. + };
  14618. +
  14619. + fragment@1 {
  14620. + target = <&i2cbus>;
  14621. + __dormant__ {
  14622. + #address-cells = <1>;
  14623. + #size-cells = <0>;
  14624. +
  14625. + ds1307: ds1307@68 {
  14626. + compatible = "dallas,ds1307";
  14627. + reg = <0x68>;
  14628. + };
  14629. + };
  14630. + };
  14631. +
  14632. + fragment@2 {
  14633. + target = <&i2cbus>;
  14634. + __dormant__ {
  14635. + #address-cells = <1>;
  14636. + #size-cells = <0>;
  14637. +
  14638. + ds1339: ds1339@68 {
  14639. + compatible = "dallas,ds1339";
  14640. + trickle-resistor-ohms = <0>;
  14641. + reg = <0x68>;
  14642. + };
  14643. + };
  14644. + };
  14645. +
  14646. + fragment@3 {
  14647. + target = <&i2cbus>;
  14648. + __dormant__ {
  14649. + #address-cells = <1>;
  14650. + #size-cells = <0>;
  14651. +
  14652. + ds3231: ds3231@68 {
  14653. + compatible = "maxim,ds3231";
  14654. + reg = <0x68>;
  14655. + };
  14656. + };
  14657. + };
  14658. +
  14659. + fragment@4 {
  14660. + target = <&i2cbus>;
  14661. + __dormant__ {
  14662. + #address-cells = <1>;
  14663. + #size-cells = <0>;
  14664. +
  14665. + mcp7940x: mcp7940x@6f {
  14666. + compatible = "microchip,mcp7940x";
  14667. + reg = <0x6f>;
  14668. + };
  14669. + };
  14670. + };
  14671. +
  14672. + fragment@5 {
  14673. + target = <&i2cbus>;
  14674. + __dormant__ {
  14675. + #address-cells = <1>;
  14676. + #size-cells = <0>;
  14677. +
  14678. + mcp7941x: mcp7941x@6f {
  14679. + compatible = "microchip,mcp7941x";
  14680. + reg = <0x6f>;
  14681. + };
  14682. + };
  14683. + };
  14684. +
  14685. + fragment@6 {
  14686. + target = <&i2cbus>;
  14687. + __dormant__ {
  14688. + #address-cells = <1>;
  14689. + #size-cells = <0>;
  14690. +
  14691. + pcf2127@51 {
  14692. + compatible = "nxp,pcf2127";
  14693. + reg = <0x51>;
  14694. + };
  14695. + };
  14696. + };
  14697. +
  14698. + fragment@7 {
  14699. + target = <&i2cbus>;
  14700. + __dormant__ {
  14701. + #address-cells = <1>;
  14702. + #size-cells = <0>;
  14703. +
  14704. + pcf8523: pcf8523@68 {
  14705. + compatible = "nxp,pcf8523";
  14706. + reg = <0x68>;
  14707. + };
  14708. + };
  14709. + };
  14710. +
  14711. + fragment@8 {
  14712. + target = <&i2cbus>;
  14713. + __dormant__ {
  14714. + #address-cells = <1>;
  14715. + #size-cells = <0>;
  14716. +
  14717. + pcf8563: pcf8563@51 {
  14718. + compatible = "nxp,pcf8563";
  14719. + reg = <0x51>;
  14720. + };
  14721. + };
  14722. + };
  14723. +
  14724. + fragment@9 {
  14725. + target = <&i2cbus>;
  14726. + __dormant__ {
  14727. + #address-cells = <1>;
  14728. + #size-cells = <0>;
  14729. +
  14730. + m41t62: m41t62@68 {
  14731. + compatible = "st,m41t62";
  14732. + reg = <0x68>;
  14733. + };
  14734. + };
  14735. + };
  14736. +
  14737. + fragment@10 {
  14738. + target = <&i2cbus>;
  14739. + __dormant__ {
  14740. + #address-cells = <1>;
  14741. + #size-cells = <0>;
  14742. +
  14743. + rv3028: rv3028@52 {
  14744. + compatible = "microcrystal,rv3028";
  14745. + reg = <0x52>;
  14746. + };
  14747. + };
  14748. + };
  14749. +
  14750. + fragment@11 {
  14751. + target = <&i2cbus>;
  14752. + __dormant__ {
  14753. + #address-cells = <1>;
  14754. + #size-cells = <0>;
  14755. +
  14756. + pcf2129@51 {
  14757. + compatible = "nxp,pcf2129";
  14758. + reg = <0x51>;
  14759. + };
  14760. + };
  14761. + };
  14762. +
  14763. + fragment@12 {
  14764. + target = <&i2cbus>;
  14765. + __dormant__ {
  14766. + #address-cells = <1>;
  14767. + #size-cells = <0>;
  14768. +
  14769. + pcf85363@51 {
  14770. + compatible = "nxp,pcf85363";
  14771. + reg = <0x51>;
  14772. + };
  14773. + };
  14774. + };
  14775. +
  14776. + fragment@13 {
  14777. + target = <&i2cbus>;
  14778. + __dormant__ {
  14779. + #address-cells = <1>;
  14780. + #size-cells = <0>;
  14781. +
  14782. + rv1805: rv1805@69 {
  14783. + compatible = "microcrystal,rv1805";
  14784. + reg = <0x69>;
  14785. + abracon,tc-diode = "standard";
  14786. + abracon,tc-resistor = <0>;
  14787. + };
  14788. + };
  14789. + };
  14790. +
  14791. + fragment@14 {
  14792. + target = <&i2cbus>;
  14793. + __dormant__ {
  14794. + #address-cells = <1>;
  14795. + #size-cells = <0>;
  14796. +
  14797. + sd3078: sd3078@32 {
  14798. + compatible = "whwave,sd3078";
  14799. + reg = <0x32>;
  14800. + };
  14801. + };
  14802. + };
  14803. +
  14804. + fragment@15 {
  14805. + target = <&i2cbus>;
  14806. + __dormant__ {
  14807. + #address-cells = <1>;
  14808. + #size-cells = <0>;
  14809. +
  14810. + pcf85063@51 {
  14811. + compatible = "nxp,pcf85063";
  14812. + reg = <0x51>;
  14813. + };
  14814. + };
  14815. + };
  14816. +
  14817. + fragment@16 {
  14818. + target = <&i2cbus>;
  14819. + __dormant__ {
  14820. + #address-cells = <1>;
  14821. + #size-cells = <0>;
  14822. +
  14823. + pcf85063a@51 {
  14824. + compatible = "nxp,pcf85063a";
  14825. + reg = <0x51>;
  14826. + };
  14827. + };
  14828. + };
  14829. +
  14830. + fragment@17 {
  14831. + target = <&i2cbus>;
  14832. + __dormant__ {
  14833. + #address-cells = <1>;
  14834. + #size-cells = <0>;
  14835. +
  14836. + ds1340: ds1340@68 {
  14837. + compatible = "dallas,ds1340";
  14838. + trickle-resistor-ohms = <0>;
  14839. + reg = <0x68>;
  14840. + };
  14841. + };
  14842. + };
  14843. +
  14844. + fragment@18 {
  14845. + target = <&i2cbus>;
  14846. + __dormant__ {
  14847. + #address-cells = <1>;
  14848. + #size-cells = <0>;
  14849. +
  14850. + s35390a: s35390a@30 {
  14851. + compatible = "ablic,s35390a";
  14852. + reg = <0x30>;
  14853. + };
  14854. + };
  14855. + };
  14856. +
  14857. + fragment@19 {
  14858. + target = <&i2cbus>;
  14859. + __dormant__ {
  14860. + #address-cells = <1>;
  14861. + #size-cells = <0>;
  14862. +
  14863. + bq32000: bq32000@68 {
  14864. + compatible = "ti,bq32000";
  14865. + trickle-resistor-ohms = <0>;
  14866. + reg = <0x68>;
  14867. + };
  14868. + };
  14869. + };
  14870. +
  14871. +
  14872. + __overrides__ {
  14873. + abx80x = <0>,"+0";
  14874. + ds1307 = <0>,"+1";
  14875. + ds1339 = <0>,"+2";
  14876. + ds1340 = <0>,"+17";
  14877. + ds3231 = <0>,"+3";
  14878. + mcp7940x = <0>,"+4";
  14879. + mcp7941x = <0>,"+5";
  14880. + pcf2127 = <0>,"+6";
  14881. + pcf8523 = <0>,"+7";
  14882. + pcf8563 = <0>,"+8";
  14883. + m41t62 = <0>,"+9";
  14884. + rv3028 = <0>,"+10";
  14885. + pcf2129 = <0>,"+11";
  14886. + pcf85363 = <0>,"+12";
  14887. + rv1805 = <0>,"+13";
  14888. + sd3078 = <0>,"+14";
  14889. + pcf85063 = <0>,"+15";
  14890. + pcf85063a = <0>,"+16";
  14891. + s35390a = <0>,"+18";
  14892. + bq32000 = <0>,"+19";
  14893. +
  14894. + addr = <&abx80x>, "reg:0",
  14895. + <&ds1307>, "reg:0",
  14896. + <&ds1339>, "reg:0",
  14897. + <&ds3231>, "reg:0",
  14898. + <&mcp7940x>, "reg:0",
  14899. + <&mcp7941x>, "reg:0",
  14900. + <&pcf8523>, "reg:0",
  14901. + <&pcf8563>, "reg:0",
  14902. + <&m41t62>, "reg:0",
  14903. + <&rv1805>, "reg:0",
  14904. + <&s35390a>, "reg:0";
  14905. + trickle-diode-disable = <&bq32000>,"trickle-diode-disable?";
  14906. + trickle-diode-type = <&abx80x>,"abracon,tc-diode",
  14907. + <&rv1805>,"abracon,tc-diode";
  14908. + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
  14909. + <&ds1340>,"trickle-resistor-ohms:0",
  14910. + <&abx80x>,"abracon,tc-resistor:0",
  14911. + <&rv3028>,"trickle-resistor-ohms:0",
  14912. + <&rv1805>,"abracon,tc-resistor:0",
  14913. + <&bq32000>,"abracon,tc-resistor:0";
  14914. + backup-switchover-mode = <&rv3028>,"backup-switchover-mode:0";
  14915. + wakeup-source = <&ds1339>,"wakeup-source?",
  14916. + <&ds3231>,"wakeup-source?",
  14917. + <&mcp7940x>,"wakeup-source?",
  14918. + <&mcp7941x>,"wakeup-source?",
  14919. + <&m41t62>,"wakeup-source?";
  14920. + };
  14921. +};
  14922. diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
  14923. new file mode 100644
  14924. index 000000000000..c83480c1c327
  14925. --- /dev/null
  14926. +++ b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
  14927. @@ -0,0 +1,31 @@
  14928. +// Definitions for several I2C based Real Time Clocks
  14929. +// Available through i2c-gpio
  14930. +/dts-v1/;
  14931. +/plugin/;
  14932. +
  14933. +#include <dt-bindings/gpio/gpio.h>
  14934. +
  14935. +#include "i2c-rtc-common.dtsi"
  14936. +
  14937. +/ {
  14938. + fragment@100 {
  14939. + target-path = "/";
  14940. + __overlay__ {
  14941. + i2cbus: i2c-gpio-rtc@0 {
  14942. + compatible = "i2c-gpio";
  14943. + gpios = <&gpio 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
  14944. + &gpio 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
  14945. + >;
  14946. + i2c-gpio,delay-us = <2>; /* ~100 kHz */
  14947. + #address-cells = <1>;
  14948. + #size-cells = <0>;
  14949. + };
  14950. + };
  14951. + };
  14952. +
  14953. + __overrides__ {
  14954. + i2c_gpio_sda = <&i2cbus>,"gpios:4";
  14955. + i2c_gpio_scl = <&i2cbus>,"gpios:16";
  14956. + i2c_gpio_delay_us = <&i2cbus>,"i2c-gpio,delay-us:0";
  14957. + };
  14958. +};
  14959. diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
  14960. new file mode 100644
  14961. index 000000000000..1eae9e1a5c96
  14962. --- /dev/null
  14963. +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
  14964. @@ -0,0 +1,34 @@
  14965. +// Definitions for several I2C based Real Time Clocks
  14966. +/dts-v1/;
  14967. +/plugin/;
  14968. +
  14969. +#include "i2c-rtc-common.dtsi"
  14970. +
  14971. +/ {
  14972. + frag100: fragment@100 {
  14973. + target = <&i2c_arm>;
  14974. + i2cbus: __overlay__ {
  14975. + status = "okay";
  14976. + };
  14977. + };
  14978. +
  14979. + fragment@101 {
  14980. + target = <&i2c0if>;
  14981. + __dormant__ {
  14982. + status = "okay";
  14983. + };
  14984. + };
  14985. +
  14986. + fragment@102 {
  14987. + target = <&i2c0mux>;
  14988. + __dormant__ {
  14989. + status = "okay";
  14990. + };
  14991. + };
  14992. +
  14993. + __overrides__ {
  14994. + i2c0 = <&frag100>, "target:0=",<&i2c0>;
  14995. + i2c_csi_dsi = <&frag100>, "target:0=",<&i2c_csi_dsi>,
  14996. + <0>,"+101+102";
  14997. + };
  14998. +};
  14999. diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
  15000. new file mode 100755
  15001. index 000000000000..b05b0fa91942
  15002. --- /dev/null
  15003. +++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
  15004. @@ -0,0 +1,320 @@
  15005. +// Definitions for I2C based sensors using the Industrial IO or HWMON interface.
  15006. +/dts-v1/;
  15007. +/plugin/;
  15008. +
  15009. +/ {
  15010. + compatible = "brcm,bcm2835";
  15011. +
  15012. + fragment@0 {
  15013. + target = <&i2c_arm>;
  15014. + __dormant__ {
  15015. + #address-cells = <1>;
  15016. + #size-cells = <0>;
  15017. + status = "okay";
  15018. +
  15019. + bme280: bme280@76 {
  15020. + compatible = "bosch,bme280";
  15021. + reg = <0x76>;
  15022. + status = "okay";
  15023. + };
  15024. + };
  15025. + };
  15026. +
  15027. + fragment@1 {
  15028. + target = <&i2c_arm>;
  15029. + __dormant__ {
  15030. + #address-cells = <1>;
  15031. + #size-cells = <0>;
  15032. + status = "okay";
  15033. +
  15034. + bmp085: bmp085@77 {
  15035. + compatible = "bosch,bmp085";
  15036. + reg = <0x77>;
  15037. + default-oversampling = <3>;
  15038. + status = "okay";
  15039. + };
  15040. + };
  15041. + };
  15042. +
  15043. + fragment@2 {
  15044. + target = <&i2c_arm>;
  15045. + __dormant__ {
  15046. + #address-cells = <1>;
  15047. + #size-cells = <0>;
  15048. + status = "okay";
  15049. +
  15050. + bmp180: bmp180@77 {
  15051. + compatible = "bosch,bmp180";
  15052. + reg = <0x77>;
  15053. + status = "okay";
  15054. + };
  15055. + };
  15056. + };
  15057. +
  15058. + fragment@3 {
  15059. + target = <&i2c_arm>;
  15060. + __dormant__ {
  15061. + #address-cells = <1>;
  15062. + #size-cells = <0>;
  15063. + status = "okay";
  15064. +
  15065. + bmp280: bmp280@76 {
  15066. + compatible = "bosch,bmp280";
  15067. + reg = <0x76>;
  15068. + status = "okay";
  15069. + };
  15070. + };
  15071. + };
  15072. +
  15073. + fragment@4 {
  15074. + target = <&i2c_arm>;
  15075. + __dormant__ {
  15076. + #address-cells = <1>;
  15077. + #size-cells = <0>;
  15078. + status = "okay";
  15079. +
  15080. + htu21: htu21@40 {
  15081. + compatible = "htu21";
  15082. + reg = <0x40>;
  15083. + status = "okay";
  15084. + };
  15085. + };
  15086. + };
  15087. +
  15088. + fragment@5 {
  15089. + target = <&i2c_arm>;
  15090. + __dormant__ {
  15091. + #address-cells = <1>;
  15092. + #size-cells = <0>;
  15093. + status = "okay";
  15094. +
  15095. + lm75: lm75@4f {
  15096. + compatible = "lm75";
  15097. + reg = <0x4f>;
  15098. + status = "okay";
  15099. + };
  15100. + };
  15101. + };
  15102. +
  15103. + fragment@6 {
  15104. + target = <&i2c_arm>;
  15105. + __dormant__ {
  15106. + #address-cells = <1>;
  15107. + #size-cells = <0>;
  15108. + status = "okay";
  15109. +
  15110. + si7020: si7020@40 {
  15111. + compatible = "si7020";
  15112. + reg = <0x40>;
  15113. + status = "okay";
  15114. + };
  15115. + };
  15116. + };
  15117. +
  15118. + fragment@7 {
  15119. + target = <&i2c_arm>;
  15120. + __dormant__ {
  15121. + #address-cells = <1>;
  15122. + #size-cells = <0>;
  15123. + status = "okay";
  15124. +
  15125. + tmp102: tmp102@48 {
  15126. + compatible = "ti,tmp102";
  15127. + reg = <0x48>;
  15128. + status = "okay";
  15129. + };
  15130. + };
  15131. + };
  15132. +
  15133. + fragment@8 {
  15134. + target = <&i2c_arm>;
  15135. + __dormant__ {
  15136. + #address-cells = <1>;
  15137. + #size-cells = <0>;
  15138. + status = "okay";
  15139. +
  15140. + hdc100x: hdc100x@40 {
  15141. + compatible = "hdc100x";
  15142. + reg = <0x40>;
  15143. + status = "okay";
  15144. + };
  15145. + };
  15146. + };
  15147. +
  15148. + fragment@9 {
  15149. + target = <&i2c_arm>;
  15150. + __dormant__ {
  15151. + #address-cells = <1>;
  15152. + #size-cells = <0>;
  15153. + status = "okay";
  15154. +
  15155. + tsl4531: tsl4531@29 {
  15156. + compatible = "tsl4531";
  15157. + reg = <0x29>;
  15158. + status = "okay";
  15159. + };
  15160. + };
  15161. + };
  15162. +
  15163. + fragment@10 {
  15164. + target = <&i2c_arm>;
  15165. + __dormant__ {
  15166. + #address-cells = <1>;
  15167. + #size-cells = <0>;
  15168. + status = "okay";
  15169. +
  15170. + veml6070: veml6070@38 {
  15171. + compatible = "veml6070";
  15172. + reg = <0x38>;
  15173. + status = "okay";
  15174. + };
  15175. + };
  15176. + };
  15177. +
  15178. + fragment@11 {
  15179. + target = <&i2c_arm>;
  15180. + __dormant__ {
  15181. + #address-cells = <1>;
  15182. + #size-cells = <0>;
  15183. + status = "okay";
  15184. +
  15185. + sht3x: sht3x@44 {
  15186. + compatible = "sht3x";
  15187. + reg = <0x44>;
  15188. + status = "okay";
  15189. + };
  15190. + };
  15191. + };
  15192. +
  15193. + fragment@12 {
  15194. + target = <&i2c_arm>;
  15195. + __dormant__ {
  15196. + #address-cells = <1>;
  15197. + #size-cells = <0>;
  15198. + status = "okay";
  15199. +
  15200. + ds1621: ds1621@48 {
  15201. + compatible = "ds1621";
  15202. + reg = <0x48>;
  15203. + status = "okay";
  15204. + };
  15205. + };
  15206. + };
  15207. +
  15208. + fragment@13 {
  15209. + target = <&i2c_arm>;
  15210. + __dormant__ {
  15211. + #address-cells = <1>;
  15212. + #size-cells = <0>;
  15213. + status = "okay";
  15214. +
  15215. + max17040: max17040@36 {
  15216. + compatible = "maxim,max17040";
  15217. + reg = <0x36>;
  15218. + status = "okay";
  15219. + };
  15220. + };
  15221. + };
  15222. +
  15223. + fragment@14 {
  15224. + target = <&i2c_arm>;
  15225. + __dormant__ {
  15226. + #address-cells = <1>;
  15227. + #size-cells = <0>;
  15228. + status = "okay";
  15229. +
  15230. + bme680: bme680@76 {
  15231. + compatible = "bosch,bme680";
  15232. + reg = <0x76>;
  15233. + status = "okay";
  15234. + };
  15235. + };
  15236. + };
  15237. +
  15238. + fragment@15 {
  15239. + target = <&i2c_arm>;
  15240. + __dormant__ {
  15241. + #address-cells = <1>;
  15242. + #size-cells = <0>;
  15243. + status = "okay";
  15244. +
  15245. + sps30: sps30@69 {
  15246. + compatible = "sensirion,sps30";
  15247. + reg = <0x69>;
  15248. + status = "okay";
  15249. + };
  15250. + };
  15251. + };
  15252. +
  15253. + fragment@16 {
  15254. + target = <&i2c_arm>;
  15255. + __dormant__ {
  15256. + #address-cells = <1>;
  15257. + #size-cells = <0>;
  15258. + status = "okay";
  15259. +
  15260. + sgp30: sgp30@58 {
  15261. + compatible = "sensirion,sgp30";
  15262. + reg = <0x58>;
  15263. + status = "okay";
  15264. + };
  15265. + };
  15266. + };
  15267. +
  15268. + fragment@17 {
  15269. + target = <&i2c_arm>;
  15270. + __dormant__ {
  15271. + #address-cells = <1>;
  15272. + #size-cells = <0>;
  15273. + status = "okay";
  15274. +
  15275. + ccs811: ccs811@5b {
  15276. + compatible = "ccs811";
  15277. + reg = <0x5b>;
  15278. + status = "okay";
  15279. + };
  15280. + };
  15281. + };
  15282. +
  15283. + fragment@18 {
  15284. + target = <&i2c_arm>;
  15285. + __dormant__ {
  15286. + #address-cells = <1>;
  15287. + #size-cells = <0>;
  15288. + status = "okay";
  15289. +
  15290. + bh1750: bh1750@23 {
  15291. + compatible = "bh1750";
  15292. + reg = <0x23>;
  15293. + status = "okay";
  15294. + };
  15295. + };
  15296. + };
  15297. +
  15298. + __overrides__ {
  15299. + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0",
  15300. + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0",
  15301. + <&ds1621>,"reg:0", <&bme680>,"reg:0", <&ccs811>,"reg:0",
  15302. + <&bh1750>,"reg:0";
  15303. + bme280 = <0>,"+0";
  15304. + bmp085 = <0>,"+1";
  15305. + bmp180 = <0>,"+2";
  15306. + bmp280 = <0>,"+3";
  15307. + htu21 = <0>,"+4";
  15308. + lm75 = <0>,"+5";
  15309. + lm75addr = <&lm75>,"reg:0";
  15310. + si7020 = <0>,"+6";
  15311. + tmp102 = <0>,"+7";
  15312. + hdc100x = <0>,"+8";
  15313. + tsl4531 = <0>,"+9";
  15314. + veml6070 = <0>,"+10";
  15315. + sht3x = <0>,"+11";
  15316. + ds1621 = <0>,"+12";
  15317. + max17040 = <0>,"+13";
  15318. + bme680 = <0>,"+14";
  15319. + sps30 = <0>,"+15";
  15320. + sgp30 = <0>,"+16";
  15321. + ccs811 = <0>, "+17";
  15322. + bh1750 = <0>, "+18";
  15323. + };
  15324. +};
  15325. diff --git a/arch/arm/boot/dts/overlays/i2c0-overlay.dts b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
  15326. new file mode 100644
  15327. index 000000000000..46bf1bf2dc5c
  15328. --- /dev/null
  15329. +++ b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
  15330. @@ -0,0 +1,83 @@
  15331. +/dts-v1/;
  15332. +/plugin/;
  15333. +
  15334. +/{
  15335. + compatible = "brcm,bcm2835";
  15336. +
  15337. + fragment@0 {
  15338. + target = <&i2c0if>;
  15339. + __overlay__ {
  15340. + status = "okay";
  15341. + pinctrl-names = "default";
  15342. + pinctrl-0 = <&i2c0_pins>;
  15343. + };
  15344. + };
  15345. +
  15346. + fragment@1 {
  15347. + target = <&i2c0_pins>;
  15348. + pins1: __overlay__ {
  15349. + brcm,pins = <0 1>;
  15350. + brcm,function = <4>; /* alt0 */
  15351. + };
  15352. + };
  15353. +
  15354. + fragment@2 {
  15355. + target = <&i2c0_pins>;
  15356. + pins2: __dormant__ {
  15357. + brcm,pins = <28 29>;
  15358. + brcm,function = <4>; /* alt0 */
  15359. + };
  15360. + };
  15361. +
  15362. + fragment@3 {
  15363. + target = <&i2c0_pins>;
  15364. + pins3: __dormant__ {
  15365. + brcm,pins = <44 45>;
  15366. + brcm,function = <5>; /* alt1 */
  15367. + };
  15368. + };
  15369. +
  15370. + fragment@4 {
  15371. + target = <&i2c0_pins>;
  15372. + pins4: __dormant__ {
  15373. + brcm,pins = <46 47>;
  15374. + brcm,function = <4>; /* alt0 */
  15375. + };
  15376. + };
  15377. +
  15378. + fragment@5 {
  15379. + target = <&i2c0>;
  15380. + __dormant__ {
  15381. + compatible = "brcm,bcm2708-i2c";
  15382. + };
  15383. + };
  15384. +
  15385. + fragment@6 {
  15386. + target = <&i2c0mux>;
  15387. + __overlay__ {
  15388. + status = "disabled";
  15389. + };
  15390. + };
  15391. +
  15392. + fragment@7 {
  15393. + target-path = "/aliases";
  15394. + __overlay__ {
  15395. + i2c0 = "/soc/i2c@7e205000";
  15396. + };
  15397. + };
  15398. +
  15399. + fragment@8 {
  15400. + target-path = "/__symbols__";
  15401. + __overlay__ {
  15402. + i2c0 = "/soc/i2c@7e205000";
  15403. + };
  15404. + };
  15405. +
  15406. + __overrides__ {
  15407. + pins_0_1 = <0>,"+1-2-3-4";
  15408. + pins_28_29 = <0>,"-1+2-3-4";
  15409. + pins_44_45 = <0>,"-1-2+3-4";
  15410. + pins_46_47 = <0>,"-1-2-3+4";
  15411. + combine = <0>, "!5";
  15412. + };
  15413. +};
  15414. diff --git a/arch/arm/boot/dts/overlays/i2c1-overlay.dts b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
  15415. new file mode 100644
  15416. index 000000000000..addaed73e665
  15417. --- /dev/null
  15418. +++ b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
  15419. @@ -0,0 +1,44 @@
  15420. +/dts-v1/;
  15421. +/plugin/;
  15422. +
  15423. +/{
  15424. + compatible = "brcm,bcm2835";
  15425. +
  15426. + fragment@0 {
  15427. + target = <&i2c1>;
  15428. + __overlay__ {
  15429. + status = "okay";
  15430. + pinctrl-names = "default";
  15431. + pinctrl-0 = <&i2c1_pins>;
  15432. + };
  15433. + };
  15434. +
  15435. + fragment@1 {
  15436. + target = <&i2c1_pins>;
  15437. + pins1: __overlay__ {
  15438. + brcm,pins = <2 3>;
  15439. + brcm,function = <4>; /* alt 0 */
  15440. + };
  15441. + };
  15442. +
  15443. + fragment@2 {
  15444. + target = <&i2c1_pins>;
  15445. + pins2: __dormant__ {
  15446. + brcm,pins = <44 45>;
  15447. + brcm,function = <6>; /* alt 2 */
  15448. + };
  15449. + };
  15450. +
  15451. + fragment@3 {
  15452. + target = <&i2c1>;
  15453. + __dormant__ {
  15454. + compatible = "brcm,bcm2708-i2c";
  15455. + };
  15456. + };
  15457. +
  15458. + __overrides__ {
  15459. + pins_2_3 = <0>,"=1!2";
  15460. + pins_44_45 = <0>,"!1=2";
  15461. + combine = <0>, "!3";
  15462. + };
  15463. +};
  15464. diff --git a/arch/arm/boot/dts/overlays/i2c3-overlay.dts b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
  15465. new file mode 100644
  15466. index 000000000000..e24a1df21f99
  15467. --- /dev/null
  15468. +++ b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
  15469. @@ -0,0 +1,36 @@
  15470. +/dts-v1/;
  15471. +/plugin/;
  15472. +
  15473. +/{
  15474. + compatible = "brcm,bcm2711";
  15475. +
  15476. + fragment@0 {
  15477. + target = <&i2c3>;
  15478. + frag0: __overlay__ {
  15479. + status = "okay";
  15480. + pinctrl-names = "default";
  15481. + pinctrl-0 = <&i2c3_pins>;
  15482. + clock-frequency = <100000>;
  15483. + };
  15484. + };
  15485. +
  15486. + fragment@1 {
  15487. + target = <&i2c3_pins>;
  15488. + __dormant__ {
  15489. + brcm,pins = <2 3>;
  15490. + };
  15491. + };
  15492. +
  15493. + fragment@2 {
  15494. + target = <&i2c3_pins>;
  15495. + __overlay__ {
  15496. + brcm,pins = <4 5>;
  15497. + };
  15498. + };
  15499. +
  15500. + __overrides__ {
  15501. + pins_2_3 = <0>,"=1!2";
  15502. + pins_4_5 = <0>,"!1=2";
  15503. + baudrate = <&frag0>, "clock-frequency:0";
  15504. + };
  15505. +};
  15506. diff --git a/arch/arm/boot/dts/overlays/i2c4-overlay.dts b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
  15507. new file mode 100644
  15508. index 000000000000..14c7f4d1da4c
  15509. --- /dev/null
  15510. +++ b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
  15511. @@ -0,0 +1,36 @@
  15512. +/dts-v1/;
  15513. +/plugin/;
  15514. +
  15515. +/{
  15516. + compatible = "brcm,bcm2711";
  15517. +
  15518. + fragment@0 {
  15519. + target = <&i2c4>;
  15520. + frag0: __overlay__ {
  15521. + status = "okay";
  15522. + pinctrl-names = "default";
  15523. + pinctrl-0 = <&i2c4_pins>;
  15524. + clock-frequency = <100000>;
  15525. + };
  15526. + };
  15527. +
  15528. + fragment@1 {
  15529. + target = <&i2c4_pins>;
  15530. + __dormant__ {
  15531. + brcm,pins = <6 7>;
  15532. + };
  15533. + };
  15534. +
  15535. + fragment@2 {
  15536. + target = <&i2c4_pins>;
  15537. + __overlay__ {
  15538. + brcm,pins = <8 9>;
  15539. + };
  15540. + };
  15541. +
  15542. + __overrides__ {
  15543. + pins_6_7 = <0>,"=1!2";
  15544. + pins_8_9 = <0>,"!1=2";
  15545. + baudrate = <&frag0>, "clock-frequency:0";
  15546. + };
  15547. +};
  15548. diff --git a/arch/arm/boot/dts/overlays/i2c5-overlay.dts b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
  15549. new file mode 100644
  15550. index 000000000000..7953621112de
  15551. --- /dev/null
  15552. +++ b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
  15553. @@ -0,0 +1,36 @@
  15554. +/dts-v1/;
  15555. +/plugin/;
  15556. +
  15557. +/{
  15558. + compatible = "brcm,bcm2711";
  15559. +
  15560. + fragment@0 {
  15561. + target = <&i2c5>;
  15562. + frag0: __overlay__ {
  15563. + status = "okay";
  15564. + pinctrl-names = "default";
  15565. + pinctrl-0 = <&i2c5_pins>;
  15566. + clock-frequency = <100000>;
  15567. + };
  15568. + };
  15569. +
  15570. + fragment@1 {
  15571. + target = <&i2c5_pins>;
  15572. + __dormant__ {
  15573. + brcm,pins = <10 11>;
  15574. + };
  15575. + };
  15576. +
  15577. + fragment@2 {
  15578. + target = <&i2c5_pins>;
  15579. + __overlay__ {
  15580. + brcm,pins = <12 13>;
  15581. + };
  15582. + };
  15583. +
  15584. + __overrides__ {
  15585. + pins_10_11 = <0>,"=1!2";
  15586. + pins_12_13 = <0>,"!1=2";
  15587. + baudrate = <&frag0>, "clock-frequency:0";
  15588. + };
  15589. +};
  15590. diff --git a/arch/arm/boot/dts/overlays/i2c6-overlay.dts b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
  15591. new file mode 100644
  15592. index 000000000000..555305a7ee1f
  15593. --- /dev/null
  15594. +++ b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
  15595. @@ -0,0 +1,36 @@
  15596. +/dts-v1/;
  15597. +/plugin/;
  15598. +
  15599. +/{
  15600. + compatible = "brcm,bcm2711";
  15601. +
  15602. + fragment@0 {
  15603. + target = <&i2c6>;
  15604. + frag0: __overlay__ {
  15605. + status = "okay";
  15606. + pinctrl-names = "default";
  15607. + pinctrl-0 = <&i2c6_pins>;
  15608. + clock-frequency = <100000>;
  15609. + };
  15610. + };
  15611. +
  15612. + fragment@1 {
  15613. + target = <&i2c6_pins>;
  15614. + __dormant__ {
  15615. + brcm,pins = <0 1>;
  15616. + };
  15617. + };
  15618. +
  15619. + fragment@2 {
  15620. + target = <&i2c6_pins>;
  15621. + __overlay__ {
  15622. + brcm,pins = <22 23>;
  15623. + };
  15624. + };
  15625. +
  15626. + __overrides__ {
  15627. + pins_0_1 = <0>,"=1!2";
  15628. + pins_22_23 = <0>,"!1=2";
  15629. + baudrate = <&frag0>, "clock-frequency:0";
  15630. + };
  15631. +};
  15632. diff --git a/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
  15633. new file mode 100644
  15634. index 000000000000..cf43094c6ff4
  15635. --- /dev/null
  15636. +++ b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
  15637. @@ -0,0 +1,18 @@
  15638. +/*
  15639. + * Device tree overlay to move i2s to gpio 28 to 31 on CM
  15640. + */
  15641. +
  15642. +/dts-v1/;
  15643. +/plugin/;
  15644. +
  15645. +/ {
  15646. + compatible = "brcm,bcm2835";
  15647. +
  15648. + fragment@0 {
  15649. + target = <&i2s_pins>;
  15650. + __overlay__ {
  15651. + brcm,pins = <28 29 30 31>;
  15652. + brcm,function = <6>; /* alt2 */
  15653. + };
  15654. + };
  15655. +};
  15656. diff --git a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
  15657. new file mode 100644
  15658. index 000000000000..551aba591d26
  15659. --- /dev/null
  15660. +++ b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
  15661. @@ -0,0 +1,45 @@
  15662. +// Device tree overlay for I2C connected Ilitek multiple touch controller
  15663. +/dts-v1/;
  15664. +/plugin/;
  15665. +
  15666. + / {
  15667. + compatible = "brcm,bcm2835";
  15668. +
  15669. + fragment@0 {
  15670. + target = <&gpio>;
  15671. + __overlay__ {
  15672. + ili251x_pins: ili251x_pins {
  15673. + brcm,pins = <4>; // interrupt
  15674. + brcm,function = <0>; // in
  15675. + brcm,pull = <2>; // pull-up //
  15676. + };
  15677. + };
  15678. + };
  15679. +
  15680. + fragment@1 {
  15681. + target = <&i2c1>;
  15682. + __overlay__ {
  15683. + #address-cells = <1>;
  15684. + #size-cells = <0>;
  15685. + status = "okay";
  15686. +
  15687. + ili251x: ili251x@41 {
  15688. + compatible = "ilitek,ili251x";
  15689. + reg = <0x41>;
  15690. + pinctrl-names = "default";
  15691. + pinctrl-0 = <&ili251x_pins>;
  15692. + interrupt-parent = <&gpio>;
  15693. + interrupts = <4 8>; // high-to-low edge triggered
  15694. + touchscreen-size-x = <16384>;
  15695. + touchscreen-size-y = <9600>;
  15696. + };
  15697. + };
  15698. + };
  15699. +
  15700. + __overrides__ {
  15701. + interrupt = <&ili251x_pins>,"brcm,pins:0",
  15702. + <&ili251x>,"interrupts:0";
  15703. + sizex = <&ili251x>,"touchscreen-size-x:0";
  15704. + sizey = <&ili251x>,"touchscreen-size-y:0";
  15705. + };
  15706. +};
  15707. diff --git a/arch/arm/boot/dts/overlays/imx219-overlay.dts b/arch/arm/boot/dts/overlays/imx219-overlay.dts
  15708. new file mode 100644
  15709. index 000000000000..0c065bf09f54
  15710. --- /dev/null
  15711. +++ b/arch/arm/boot/dts/overlays/imx219-overlay.dts
  15712. @@ -0,0 +1,115 @@
  15713. +// SPDX-License-Identifier: GPL-2.0-only
  15714. +// Definitions for IMX219 camera module on VC I2C bus
  15715. +/dts-v1/;
  15716. +/plugin/;
  15717. +
  15718. +#include <dt-bindings/gpio/gpio.h>
  15719. +
  15720. +/{
  15721. + compatible = "brcm,bcm2835";
  15722. +
  15723. + fragment@0 {
  15724. + target = <&i2c_csi_dsi>;
  15725. + __overlay__ {
  15726. + #address-cells = <1>;
  15727. + #size-cells = <0>;
  15728. + status = "okay";
  15729. +
  15730. + imx219: imx219@10 {
  15731. + compatible = "sony,imx219";
  15732. + reg = <0x10>;
  15733. + status = "okay";
  15734. +
  15735. + clocks = <&imx219_clk>;
  15736. + clock-names = "xclk";
  15737. +
  15738. + VANA-supply = <&cam1_reg>; /* 2.8v */
  15739. + VDIG-supply = <&imx219_vdig>; /* 1.8v */
  15740. + VDDL-supply = <&imx219_vddl>; /* 1.2v */
  15741. +
  15742. + rotation = <180>;
  15743. + orientation = <2>;
  15744. +
  15745. + port {
  15746. + imx219_0: endpoint {
  15747. + remote-endpoint = <&csi1_ep>;
  15748. + clock-lanes = <0>;
  15749. + data-lanes = <1 2>;
  15750. + clock-noncontinuous;
  15751. + link-frequencies =
  15752. + /bits/ 64 <456000000>;
  15753. + };
  15754. + };
  15755. + };
  15756. + };
  15757. + };
  15758. +
  15759. + fragment@1 {
  15760. + target = <&csi1>;
  15761. + __overlay__ {
  15762. + status = "okay";
  15763. +
  15764. + port {
  15765. + csi1_ep: endpoint {
  15766. + remote-endpoint = <&imx219_0>;
  15767. + clock-lanes = <0>;
  15768. + data-lanes = <1 2>;
  15769. + clock-noncontinuous;
  15770. + };
  15771. + };
  15772. + };
  15773. + };
  15774. +
  15775. + fragment@2 {
  15776. + target = <&i2c0if>;
  15777. + __overlay__ {
  15778. + status = "okay";
  15779. + };
  15780. + };
  15781. +
  15782. + fragment@3 {
  15783. + target-path="/";
  15784. + __overlay__ {
  15785. + imx219_vdig: fixedregulator@1 {
  15786. + compatible = "regulator-fixed";
  15787. + regulator-name = "imx219_vdig";
  15788. + regulator-min-microvolt = <1800000>;
  15789. + regulator-max-microvolt = <1800000>;
  15790. + };
  15791. + imx219_vddl: fixedregulator@2 {
  15792. + compatible = "regulator-fixed";
  15793. + regulator-name = "imx219_vddl";
  15794. + regulator-min-microvolt = <1200000>;
  15795. + regulator-max-microvolt = <1200000>;
  15796. + };
  15797. +
  15798. + imx219_clk: camera-clk {
  15799. + compatible = "fixed-clock";
  15800. + #clock-cells = <0>;
  15801. + clock-frequency = <24000000>;
  15802. + };
  15803. + };
  15804. + };
  15805. +
  15806. + fragment@4 {
  15807. + target = <&i2c0mux>;
  15808. + __overlay__ {
  15809. + status = "okay";
  15810. + };
  15811. + };
  15812. +
  15813. + fragment@5 {
  15814. + target = <&cam1_reg>;
  15815. + __overlay__ {
  15816. + status = "okay";
  15817. + regulator-name = "imx219_vana";
  15818. + regulator-min-microvolt = <2800000>;
  15819. + regulator-max-microvolt = <2800000>;
  15820. + };
  15821. + };
  15822. +
  15823. + __overrides__ {
  15824. + rotation = <&imx219>,"rotation:0";
  15825. + orientation = <&imx219>,"orientation:0";
  15826. + };
  15827. +};
  15828. diff --git a/arch/arm/boot/dts/overlays/imx290-overlay.dts b/arch/arm/boot/dts/overlays/imx290-overlay.dts
  15829. new file mode 100644
  15830. index 000000000000..e536aa7f9e33
  15831. --- /dev/null
  15832. +++ b/arch/arm/boot/dts/overlays/imx290-overlay.dts
  15833. @@ -0,0 +1,32 @@
  15834. +// SPDX-License-Identifier: GPL-2.0-only
  15835. +// Definitions for IMX290 camera module on VC I2C bus
  15836. +/dts-v1/;
  15837. +/plugin/;
  15838. +
  15839. +#include <dt-bindings/gpio/gpio.h>
  15840. +#include "imx290_327-overlay.dtsi"
  15841. +
  15842. +/{
  15843. + compatible = "brcm,bcm2835";
  15844. +
  15845. + // Fragment numbers deliberately high to avoid conflicts with the
  15846. + // included imx290_327 overlay file.
  15847. +
  15848. + fragment@101 {
  15849. + target = <&imx290>;
  15850. + __overlay__ {
  15851. + compatible = "sony,imx290";
  15852. + };
  15853. + };
  15854. +
  15855. + fragment@102 {
  15856. + target = <&imx290>;
  15857. + __dormant__ {
  15858. + compatible = "sony,imx290-mono";
  15859. + };
  15860. + };
  15861. +
  15862. + __overrides__ {
  15863. + mono = <0>, "-101+102";
  15864. + };
  15865. +};
  15866. diff --git a/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
  15867. new file mode 100644
  15868. index 000000000000..d4a5ed6dbbcf
  15869. --- /dev/null
  15870. +++ b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
  15871. @@ -0,0 +1,144 @@
  15872. +// SPDX-License-Identifier: GPL-2.0-only
  15873. +// Partial definitions for IMX290 or IMX327 camera module on VC I2C bus
  15874. +// The compatible string should be set in an overlay that then includes this one
  15875. +/dts-v1/;
  15876. +/plugin/;
  15877. +
  15878. +#include <dt-bindings/gpio/gpio.h>
  15879. +
  15880. +/{
  15881. + compatible = "brcm,bcm2835";
  15882. +
  15883. + fragment@0 {
  15884. + target = <&i2c_csi_dsi>;
  15885. + __overlay__ {
  15886. + #address-cells = <1>;
  15887. + #size-cells = <0>;
  15888. + status = "okay";
  15889. +
  15890. + imx290: imx290@1a {
  15891. + reg = <0x1a>;
  15892. + status = "okay";
  15893. +
  15894. + clocks = <&imx290_clk>;
  15895. + clock-names = "xclk";
  15896. + clock-frequency = <37125000>;
  15897. +
  15898. + rotation = <0>;
  15899. + orientation = <2>;
  15900. +
  15901. + vdda-supply = <&cam1_reg>; /* 2.8v */
  15902. + vdddo-supply = <&imx290_vdddo>; /* 1.8v */
  15903. + vddd-supply = <&imx290_vddd>; /* 1.5v */
  15904. +
  15905. + port {
  15906. + imx290_0: endpoint {
  15907. + remote-endpoint = <&csi1_ep>;
  15908. + clock-lanes = <0>;
  15909. + };
  15910. + };
  15911. + };
  15912. + };
  15913. + };
  15914. +
  15915. + fragment@1 {
  15916. + target = <&csi1>;
  15917. + __overlay__ {
  15918. + status = "okay";
  15919. +
  15920. + port {
  15921. + csi1_ep: endpoint {
  15922. + remote-endpoint = <&imx290_0>;
  15923. + };
  15924. + };
  15925. + };
  15926. + };
  15927. +
  15928. + fragment@2 {
  15929. + target = <&i2c0if>;
  15930. + __overlay__ {
  15931. + status = "okay";
  15932. + };
  15933. + };
  15934. +
  15935. + fragment@3 {
  15936. + target-path="/";
  15937. + __overlay__ {
  15938. + imx290_vdddo: fixedregulator@1 {
  15939. + compatible = "regulator-fixed";
  15940. + regulator-name = "imx290_vdddo";
  15941. + regulator-min-microvolt = <1800000>;
  15942. + regulator-max-microvolt = <1800000>;
  15943. + };
  15944. + imx290_vddd: fixedregulator@2 {
  15945. + compatible = "regulator-fixed";
  15946. + regulator-name = "imx290_vddd";
  15947. + regulator-min-microvolt = <1500000>;
  15948. + regulator-max-microvolt = <1500000>;
  15949. + };
  15950. +
  15951. + imx290_clk: camera-clk {
  15952. + compatible = "fixed-clock";
  15953. + #clock-cells = <0>;
  15954. + clock-frequency = <37125000>;
  15955. + };
  15956. + };
  15957. + };
  15958. +
  15959. + fragment@4 {
  15960. + target = <&i2c0mux>;
  15961. + __overlay__ {
  15962. + status = "okay";
  15963. + };
  15964. + };
  15965. +
  15966. + fragment@5 {
  15967. + target = <&cam1_reg>;
  15968. + __overlay__ {
  15969. + status = "okay";
  15970. + regulator-name = "imx290_vdda";
  15971. + regulator-min-microvolt = <2800000>;
  15972. + regulator-max-microvolt = <2800000>;
  15973. + };
  15974. + };
  15975. +
  15976. + fragment@6 {
  15977. + target = <&imx290_0>;
  15978. + __overlay__ {
  15979. + data-lanes = <1 2>;
  15980. + link-frequencies =
  15981. + /bits/ 64 <445500000 297000000>;
  15982. + };
  15983. + };
  15984. +
  15985. + fragment@7 {
  15986. + target = <&imx290_0>;
  15987. + __dormant__ {
  15988. + data-lanes = <1 2 3 4>;
  15989. + link-frequencies =
  15990. + /bits/ 64 <222750000 148500000>;
  15991. + };
  15992. + };
  15993. +
  15994. + fragment@8 {
  15995. + target = <&csi1_ep>;
  15996. + __overlay__ {
  15997. + data-lanes = <1 2>;
  15998. + };
  15999. + };
  16000. +
  16001. + fragment@9 {
  16002. + target = <&csi1_ep>;
  16003. + __dormant__ {
  16004. + data-lanes = <1 2 3 4>;
  16005. + };
  16006. + };
  16007. +
  16008. + __overrides__ {
  16009. + 4lane = <0>, "-6+7-8+9";
  16010. + clock-frequency = <&imx290_clk>,"clock-frequency:0",
  16011. + <&imx290>,"clock-frequency:0";
  16012. + rotation = <&imx290>,"rotation:0";
  16013. + orientation = <&imx290>,"orientation:0";
  16014. + };
  16015. +};
  16016. diff --git a/arch/arm/boot/dts/overlays/imx378-overlay.dts b/arch/arm/boot/dts/overlays/imx378-overlay.dts
  16017. new file mode 100644
  16018. index 000000000000..74c7288d12f5
  16019. --- /dev/null
  16020. +++ b/arch/arm/boot/dts/overlays/imx378-overlay.dts
  16021. @@ -0,0 +1,10 @@
  16022. +// SPDX-License-Identifier: GPL-2.0-only
  16023. +// Definitions for IMX378 camera module on VC I2C bus
  16024. +/dts-v1/;
  16025. +/plugin/;
  16026. +
  16027. +#include "imx477_378-overlay.dtsi"
  16028. +
  16029. +&imx477 {
  16030. + compatible = "sony,imx378";
  16031. +};
  16032. diff --git a/arch/arm/boot/dts/overlays/imx477-overlay.dts b/arch/arm/boot/dts/overlays/imx477-overlay.dts
  16033. new file mode 100644
  16034. index 000000000000..ca315d120e6b
  16035. --- /dev/null
  16036. +++ b/arch/arm/boot/dts/overlays/imx477-overlay.dts
  16037. @@ -0,0 +1,10 @@
  16038. +// SPDX-License-Identifier: GPL-2.0-only
  16039. +// Definitions for IMX477 camera module on VC I2C bus
  16040. +/dts-v1/;
  16041. +/plugin/;
  16042. +
  16043. +#include "imx477_378-overlay.dtsi"
  16044. +
  16045. +&imx477 {
  16046. + compatible = "sony,imx477";
  16047. +};
  16048. diff --git a/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi
  16049. new file mode 100644
  16050. index 000000000000..bb9a9acdbbd7
  16051. --- /dev/null
  16052. +++ b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi
  16053. @@ -0,0 +1,110 @@
  16054. +// SPDX-License-Identifier: GPL-2.0-only
  16055. +// Definitions for IMX477 camera module on VC I2C bus
  16056. +
  16057. +/{
  16058. + compatible = "brcm,bcm2835";
  16059. +
  16060. + fragment@0 {
  16061. + target = <&i2c_csi_dsi>;
  16062. + __overlay__ {
  16063. + #address-cells = <1>;
  16064. + #size-cells = <0>;
  16065. + status = "okay";
  16066. +
  16067. + imx477: imx477@1a {
  16068. + reg = <0x1a>;
  16069. + status = "okay";
  16070. +
  16071. + clocks = <&imx477_clk>;
  16072. + clock-names = "xclk";
  16073. +
  16074. + VANA-supply = <&cam1_reg>; /* 2.8v */
  16075. + VDIG-supply = <&imx477_vdig>; /* 1.05v */
  16076. + VDDL-supply = <&imx477_vddl>; /* 1.8v */
  16077. +
  16078. + rotation = <180>;
  16079. + orientation = <2>;
  16080. +
  16081. + port {
  16082. + imx477_0: endpoint {
  16083. + remote-endpoint = <&csi1_ep>;
  16084. + clock-lanes = <0>;
  16085. + data-lanes = <1 2>;
  16086. + clock-noncontinuous;
  16087. + link-frequencies =
  16088. + /bits/ 64 <450000000>;
  16089. + };
  16090. + };
  16091. + };
  16092. + };
  16093. + };
  16094. +
  16095. + fragment@1 {
  16096. + target = <&csi1>;
  16097. + __overlay__ {
  16098. + status = "okay";
  16099. +
  16100. + port {
  16101. + csi1_ep: endpoint {
  16102. + remote-endpoint = <&imx477_0>;
  16103. + clock-lanes = <0>;
  16104. + data-lanes = <1 2>;
  16105. + clock-noncontinuous;
  16106. + };
  16107. + };
  16108. + };
  16109. + };
  16110. +
  16111. + fragment@2 {
  16112. + target = <&i2c0if>;
  16113. + __overlay__ {
  16114. + status = "okay";
  16115. + };
  16116. + };
  16117. +
  16118. + fragment@3 {
  16119. + target-path="/";
  16120. + __overlay__ {
  16121. + imx477_vdig: fixedregulator@0 {
  16122. + compatible = "regulator-fixed";
  16123. + regulator-name = "imx477_vdig";
  16124. + regulator-min-microvolt = <1050000>;
  16125. + regulator-max-microvolt = <1050000>;
  16126. + };
  16127. + imx477_vddl: fixedregulator@1 {
  16128. + compatible = "regulator-fixed";
  16129. + regulator-name = "imx477_vddl";
  16130. + regulator-min-microvolt = <1800000>;
  16131. + regulator-max-microvolt = <1800000>;
  16132. + };
  16133. + imx477_clk: camera-clk {
  16134. + compatible = "fixed-clock";
  16135. + #clock-cells = <0>;
  16136. + clock-frequency = <24000000>;
  16137. + };
  16138. + };
  16139. + };
  16140. +
  16141. + fragment@4 {
  16142. + target = <&i2c0mux>;
  16143. + __overlay__ {
  16144. + status = "okay";
  16145. + };
  16146. + };
  16147. +
  16148. + fragment@5 {
  16149. + target = <&cam1_reg>;
  16150. + __overlay__ {
  16151. + status = "okay";
  16152. + regulator-name = "imx477_vana";
  16153. + startup-delay-us = <300000>;
  16154. + regulator-min-microvolt = <2800000>;
  16155. + regulator-max-microvolt = <2800000>;
  16156. + };
  16157. + };
  16158. +
  16159. + __overrides__ {
  16160. + rotation = <&imx477>,"rotation:0";
  16161. + orientation = <&imx477>,"orientation:0";
  16162. + };
  16163. +};
  16164. diff --git a/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
  16165. new file mode 100644
  16166. index 000000000000..9110f5d34298
  16167. --- /dev/null
  16168. +++ b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
  16169. @@ -0,0 +1,42 @@
  16170. +// Definitions for IQaudIO CODEC
  16171. +/dts-v1/;
  16172. +/plugin/;
  16173. +
  16174. +/ {
  16175. + compatible = "brcm,bcm2835";
  16176. +
  16177. + fragment@0 {
  16178. + target = <&i2s>;
  16179. + __overlay__ {
  16180. + status = "okay";
  16181. + };
  16182. + };
  16183. +
  16184. + fragment@1 {
  16185. + target = <&i2c1>;
  16186. + __overlay__ {
  16187. + #address-cells = <1>;
  16188. + #size-cells = <0>;
  16189. + status = "okay";
  16190. +
  16191. + da2713@1a {
  16192. + #sound-dai-cells = <0>;
  16193. + compatible = "dlg,da7213";
  16194. + reg = <0x1a>;
  16195. + status = "okay";
  16196. + };
  16197. + };
  16198. + };
  16199. +
  16200. + fragment@2 {
  16201. + target = <&sound>;
  16202. + iqaudio_dac: __overlay__ {
  16203. + compatible = "iqaudio,iqaudio-codec";
  16204. + i2s-controller = <&i2s>;
  16205. + status = "okay";
  16206. + };
  16207. + };
  16208. +
  16209. + __overrides__ {
  16210. + };
  16211. +};
  16212. diff --git a/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
  16213. new file mode 100644
  16214. index 000000000000..24073cadd0ef
  16215. --- /dev/null
  16216. +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
  16217. @@ -0,0 +1,46 @@
  16218. +// Definitions for IQaudIO DAC
  16219. +/dts-v1/;
  16220. +/plugin/;
  16221. +
  16222. +/ {
  16223. + compatible = "brcm,bcm2835";
  16224. +
  16225. + fragment@0 {
  16226. + target = <&i2s>;
  16227. + __overlay__ {
  16228. + status = "okay";
  16229. + };
  16230. + };
  16231. +
  16232. + fragment@1 {
  16233. + target = <&i2c1>;
  16234. + __overlay__ {
  16235. + #address-cells = <1>;
  16236. + #size-cells = <0>;
  16237. + status = "okay";
  16238. +
  16239. + pcm5122@4c {
  16240. + #sound-dai-cells = <0>;
  16241. + compatible = "ti,pcm5122";
  16242. + reg = <0x4c>;
  16243. + AVDD-supply = <&vdd_3v3_reg>;
  16244. + DVDD-supply = <&vdd_3v3_reg>;
  16245. + CPVDD-supply = <&vdd_3v3_reg>;
  16246. + status = "okay";
  16247. + };
  16248. + };
  16249. + };
  16250. +
  16251. + fragment@2 {
  16252. + target = <&sound>;
  16253. + frag2: __overlay__ {
  16254. + compatible = "iqaudio,iqaudio-dac";
  16255. + i2s-controller = <&i2s>;
  16256. + status = "okay";
  16257. + };
  16258. + };
  16259. +
  16260. + __overrides__ {
  16261. + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
  16262. + };
  16263. +};
  16264. diff --git a/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
  16265. new file mode 100644
  16266. index 000000000000..7c70b25e58d7
  16267. --- /dev/null
  16268. +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
  16269. @@ -0,0 +1,49 @@
  16270. +// Definitions for IQaudIO DAC+
  16271. +/dts-v1/;
  16272. +/plugin/;
  16273. +
  16274. +/ {
  16275. + compatible = "brcm,bcm2835";
  16276. +
  16277. + fragment@0 {
  16278. + target = <&i2s>;
  16279. + __overlay__ {
  16280. + status = "okay";
  16281. + };
  16282. + };
  16283. +
  16284. + fragment@1 {
  16285. + target = <&i2c1>;
  16286. + __overlay__ {
  16287. + #address-cells = <1>;
  16288. + #size-cells = <0>;
  16289. + status = "okay";
  16290. +
  16291. + pcm5122@4c {
  16292. + #sound-dai-cells = <0>;
  16293. + compatible = "ti,pcm5122";
  16294. + reg = <0x4c>;
  16295. + AVDD-supply = <&vdd_3v3_reg>;
  16296. + DVDD-supply = <&vdd_3v3_reg>;
  16297. + CPVDD-supply = <&vdd_3v3_reg>;
  16298. + status = "okay";
  16299. + };
  16300. + };
  16301. + };
  16302. +
  16303. + fragment@2 {
  16304. + target = <&sound>;
  16305. + iqaudio_dac: __overlay__ {
  16306. + compatible = "iqaudio,iqaudio-dac";
  16307. + i2s-controller = <&i2s>;
  16308. + mute-gpios = <&gpio 22 0>;
  16309. + status = "okay";
  16310. + };
  16311. + };
  16312. +
  16313. + __overrides__ {
  16314. + 24db_digital_gain = <&iqaudio_dac>,"iqaudio,24db_digital_gain?";
  16315. + auto_mute_amp = <&iqaudio_dac>,"iqaudio-dac,auto-mute-amp?";
  16316. + unmute_amp = <&iqaudio_dac>,"iqaudio-dac,unmute-amp?";
  16317. + };
  16318. +};
  16319. diff --git a/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
  16320. new file mode 100644
  16321. index 000000000000..ee54095c869b
  16322. --- /dev/null
  16323. +++ b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
  16324. @@ -0,0 +1,47 @@
  16325. +// Definitions for IQAudIO Digi WM8804 audio board
  16326. +/dts-v1/;
  16327. +/plugin/;
  16328. +
  16329. +/ {
  16330. + compatible = "brcm,bcm2835";
  16331. +
  16332. + fragment@0 {
  16333. + target = <&i2s>;
  16334. + __overlay__ {
  16335. + status = "okay";
  16336. + };
  16337. + };
  16338. +
  16339. + fragment@1 {
  16340. + target = <&i2c1>;
  16341. + __overlay__ {
  16342. + #address-cells = <1>;
  16343. + #size-cells = <0>;
  16344. + status = "okay";
  16345. +
  16346. + wm8804@3b {
  16347. + #sound-dai-cells = <0>;
  16348. + compatible = "wlf,wm8804";
  16349. + reg = <0x3b>;
  16350. + status = "okay";
  16351. + DVDD-supply = <&vdd_3v3_reg>;
  16352. + PVDD-supply = <&vdd_3v3_reg>;
  16353. + };
  16354. + };
  16355. + };
  16356. +
  16357. + fragment@2 {
  16358. + target = <&sound>;
  16359. + wm8804_digi: __overlay__ {
  16360. + compatible = "iqaudio,wm8804-digi";
  16361. + i2s-controller = <&i2s>;
  16362. + status = "okay";
  16363. + };
  16364. + };
  16365. +
  16366. + __overrides__ {
  16367. + card_name = <&wm8804_digi>,"wm8804-digi,card-name";
  16368. + dai_name = <&wm8804_digi>,"wm8804-digi,dai-name";
  16369. + dai_stream_name = <&wm8804_digi>,"wm8804-digi,dai-stream-name";
  16370. + };
  16371. +};
  16372. diff --git a/arch/arm/boot/dts/overlays/irs1125-overlay.dts b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
  16373. new file mode 100644
  16374. index 000000000000..e926e18e71fc
  16375. --- /dev/null
  16376. +++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
  16377. @@ -0,0 +1,85 @@
  16378. +// SPDX-License-Identifier: GPL-2.0-only
  16379. +// Definitions for IRS1125 camera module on VC I2C bus
  16380. +/dts-v1/;
  16381. +/plugin/;
  16382. +
  16383. +/{
  16384. + compatible = "brcm,bcm2835";
  16385. +
  16386. + fragment@0 {
  16387. + target = <&i2c_csi_dsi>;
  16388. + __overlay__ {
  16389. + #address-cells = <1>;
  16390. + #size-cells = <0>;
  16391. + status = "okay";
  16392. +
  16393. + irs1125: irs1125@3D {
  16394. + compatible = "infineon,irs1125";
  16395. + reg = <0x3D>;
  16396. + status = "okay";
  16397. +
  16398. + pwdn-gpios = <&gpio 5 0>;
  16399. + clocks = <&irs1125_clk>;
  16400. +
  16401. + port {
  16402. + irs1125_0: endpoint {
  16403. + remote-endpoint = <&csi1_ep>;
  16404. + clock-lanes = <0>;
  16405. + data-lanes = <1 2>;
  16406. + clock-noncontinuous;
  16407. + link-frequencies =
  16408. + /bits/ 64 <297000000>;
  16409. + };
  16410. + };
  16411. + };
  16412. + };
  16413. + };
  16414. +
  16415. + fragment@1 {
  16416. + target = <&csi1>;
  16417. + __overlay__ {
  16418. + status = "okay";
  16419. +
  16420. + port {
  16421. + csi1_ep: endpoint {
  16422. + remote-endpoint = <&irs1125_0>;
  16423. + data-lanes = <1 2>;
  16424. + clock-noncontinuous;
  16425. + };
  16426. + };
  16427. + };
  16428. + };
  16429. +
  16430. + fragment@2 {
  16431. + target = <&i2c0if>;
  16432. + __overlay__ {
  16433. + status = "okay";
  16434. + };
  16435. + };
  16436. +
  16437. + fragment@3 {
  16438. + target = <&i2c0mux>;
  16439. + __overlay__ {
  16440. + status = "okay";
  16441. + };
  16442. + };
  16443. +
  16444. + fragment@4 {
  16445. + target-path="/__overrides__";
  16446. + __overlay__ {
  16447. + cam0-pwdn-ctrl = <&irs1125>,"pwdn-gpios:0";
  16448. + cam0-pwdn = <&irs1125>,"pwdn-gpios:4";
  16449. + };
  16450. + };
  16451. +
  16452. + fragment@5 {
  16453. + target-path = "/";
  16454. + __overlay__ {
  16455. + irs1125_clk: camera-clk {
  16456. + compatible = "fixed-clock";
  16457. + #clock-cells = <0>;
  16458. + clock-frequency = <26000000>;
  16459. + };
  16460. + };
  16461. + };
  16462. +};
  16463. diff --git a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
  16464. new file mode 100644
  16465. index 000000000000..585c7dbcdf7f
  16466. --- /dev/null
  16467. +++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
  16468. @@ -0,0 +1,309 @@
  16469. +// Overlay for JEDEC SPI-NOR Flash Devices (aka m25p80)
  16470. +
  16471. +// dtparams:
  16472. +// flash-spi<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
  16473. +// flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
  16474. +//
  16475. +// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  16476. +//
  16477. +// Example: A single flash device with fast read capability on SPI0, CS#0:
  16478. +// dtoverlay=jedec-spi-nor:flash-fastr-spi0-0
  16479. +
  16480. +/dts-v1/;
  16481. +/plugin/;
  16482. +
  16483. +/ {
  16484. + compatible = "brcm,bcm2835";
  16485. +
  16486. + // disable spi-dev on spi0.0
  16487. + fragment@0 {
  16488. + target = <&spidev0>;
  16489. + __dormant__ {
  16490. + status = "disabled";
  16491. + };
  16492. + };
  16493. +
  16494. + // disable spi-dev on spi0.1
  16495. + fragment@1 {
  16496. + target = <&spidev1>;
  16497. + __dormant__ {
  16498. + status = "disabled";
  16499. + };
  16500. + };
  16501. +
  16502. + // disable spi-dev on spi1.0
  16503. + fragment@2 {
  16504. + target-path = "spi1/spidev@0";
  16505. + __dormant__ {
  16506. + status = "disabled";
  16507. + };
  16508. + };
  16509. +
  16510. + // disable spi-dev on spi1.1
  16511. + fragment@3 {
  16512. + target-path = "spi1/spidev@1";
  16513. + __dormant__ {
  16514. + status = "disabled";
  16515. + };
  16516. + };
  16517. +
  16518. + // disable spi-dev on spi1.2
  16519. + fragment@4 {
  16520. + target-path = "spi1/spidev@2";
  16521. + __dormant__ {
  16522. + status = "disabled";
  16523. + };
  16524. + };
  16525. +
  16526. + // disable spi-dev on spi2.0
  16527. + fragment@5 {
  16528. + target-path = "spi2/spidev@0";
  16529. + __dormant__ {
  16530. + status = "disabled";
  16531. + };
  16532. + };
  16533. +
  16534. + // disable spi-dev on spi2.1
  16535. + fragment@6 {
  16536. + target-path = "spi2/spidev@1";
  16537. + __dormant__ {
  16538. + status = "disabled";
  16539. + };
  16540. + };
  16541. +
  16542. + // disable spi-dev on spi2.2
  16543. + fragment@7 {
  16544. + target-path = "spi2/spidev@2";
  16545. + __dormant__ {
  16546. + status = "disabled";
  16547. + };
  16548. + };
  16549. +
  16550. + // enable flash on spi0.0
  16551. + fragment@8 {
  16552. + target = <&spi0>;
  16553. + __dormant__ {
  16554. + status = "okay";
  16555. + #address-cells = <1>;
  16556. + #size-cells = <0>;
  16557. + spi_nor_00: spi_nor@0 {
  16558. + #address-cells = <1>;
  16559. + #size-cells = <1>;
  16560. + compatible = "jedec,spi-nor";
  16561. + reg = <0>;
  16562. + spi-max-frequency = <500000>;
  16563. + };
  16564. + };
  16565. + };
  16566. +
  16567. + // enable flash on spi0.1
  16568. + fragment@9 {
  16569. + target = <&spi0>;
  16570. + __dormant__ {
  16571. + status = "okay";
  16572. + #address-cells = <1>;
  16573. + #size-cells = <0>;
  16574. + spi_nor_01: spi_nor@1 {
  16575. + #address-cells = <1>;
  16576. + #size-cells = <1>;
  16577. + compatible = "jedec,spi-nor";
  16578. + reg = <1>;
  16579. + spi-max-frequency = <500000>;
  16580. + };
  16581. + };
  16582. + };
  16583. +
  16584. + // enable flash on spi1.0
  16585. + fragment@10 {
  16586. + target = <&spi1>;
  16587. + __dormant__ {
  16588. + status = "okay";
  16589. + #address-cells = <1>;
  16590. + #size-cells = <0>;
  16591. + spi_nor_10: spi_nor@0 {
  16592. + #address-cells = <1>;
  16593. + #size-cells = <1>;
  16594. + compatible = "jedec,spi-nor";
  16595. + reg = <0>;
  16596. + spi-max-frequency = <500000>;
  16597. + };
  16598. + };
  16599. + };
  16600. +
  16601. + // enable flash on spi1.1
  16602. + fragment@11 {
  16603. + target = <&spi1>;
  16604. + __dormant__ {
  16605. + status = "okay";
  16606. + #address-cells = <1>;
  16607. + #size-cells = <0>;
  16608. + spi_nor_11: spi_nor@1 {
  16609. + #address-cells = <1>;
  16610. + #size-cells = <1>;
  16611. + compatible = "jedec,spi-nor";
  16612. + reg = <1>;
  16613. + spi-max-frequency = <500000>;
  16614. + };
  16615. + };
  16616. + };
  16617. +
  16618. + // enable flash on spi1.2
  16619. + fragment@12 {
  16620. + target = <&spi1>;
  16621. + __dormant__ {
  16622. + status = "okay";
  16623. + #address-cells = <1>;
  16624. + #size-cells = <0>;
  16625. + spi_nor_12: spi_nor@2 {
  16626. + #address-cells = <1>;
  16627. + #size-cells = <1>;
  16628. + compatible = "jedec,spi-nor";
  16629. + reg = <2>;
  16630. + spi-max-frequency = <500000>;
  16631. + };
  16632. + };
  16633. + };
  16634. +
  16635. + // enable flash on spi2.0
  16636. + fragment@13 {
  16637. + target = <&spi2>;
  16638. + __dormant__ {
  16639. + status = "okay";
  16640. + #address-cells = <1>;
  16641. + #size-cells = <0>;
  16642. + spi_nor_20: spi_nor@0 {
  16643. + #address-cells = <1>;
  16644. + #size-cells = <1>;
  16645. + compatible = "jedec,spi-nor";
  16646. + reg = <0>;
  16647. + spi-max-frequency = <500000>;
  16648. + };
  16649. + };
  16650. + };
  16651. +
  16652. + // enable flash on spi2.1
  16653. + fragment@14 {
  16654. + target = <&spi2>;
  16655. + __dormant__ {
  16656. + status = "okay";
  16657. + #address-cells = <1>;
  16658. + #size-cells = <0>;
  16659. + spi_nor_21: spi_nor@1 {
  16660. + #address-cells = <1>;
  16661. + #size-cells = <1>;
  16662. + compatible = "jedec,spi-nor";
  16663. + reg = <1>;
  16664. + spi-max-frequency = <500000>;
  16665. + };
  16666. + };
  16667. + };
  16668. +
  16669. + // enable flash on spi2.2
  16670. + fragment@15 {
  16671. + target = <&spi2>;
  16672. + __dormant__ {
  16673. + status = "okay";
  16674. + #address-cells = <1>;
  16675. + #size-cells = <0>;
  16676. + spi_nor_22: spi_nor@2 {
  16677. + #address-cells = <1>;
  16678. + #size-cells = <1>;
  16679. + compatible = "jedec,spi-nor";
  16680. + reg = <2>;
  16681. + spi-max-frequency = <500000>;
  16682. + };
  16683. + };
  16684. + };
  16685. +
  16686. + // Enable fast read for device on spi0.0.
  16687. + // Use default active low interrupt signalling.
  16688. + fragment@16 {
  16689. + target = <&spi_nor_00>;
  16690. + __dormant__ {
  16691. + m25p,fast-read;
  16692. + };
  16693. + };
  16694. +
  16695. + // Enable fast read for device on spi0.1.
  16696. + // Use default active low interrupt signalling.
  16697. + fragment@17 {
  16698. + target = <&spi_nor_01>;
  16699. + __dormant__ {
  16700. + m25p,fast-read;
  16701. + };
  16702. + };
  16703. +
  16704. + // Enable fast read for device on spi1.0.
  16705. + // Use default active low interrupt signalling.
  16706. + fragment@18 {
  16707. + target = <&spi_nor_10>;
  16708. + __dormant__ {
  16709. + m25p,fast-read;
  16710. + };
  16711. + };
  16712. +
  16713. + // Enable fast read for device on spi1.1.
  16714. + // Use default active low interrupt signalling.
  16715. + fragment@19 {
  16716. + target = <&spi_nor_11>;
  16717. + __dormant__ {
  16718. + m25p,fast-read;
  16719. + };
  16720. + };
  16721. +
  16722. + // Enable fast read for device on spi1.2.
  16723. + // Use default active low interrupt signalling.
  16724. + fragment@20 {
  16725. + target = <&spi_nor_12>;
  16726. + __dormant__ {
  16727. + m25p,fast-read;
  16728. + };
  16729. + };
  16730. +
  16731. + // Enable fast read for device on spi2.0.
  16732. + // Use default active low interrupt signalling.
  16733. + fragment@21 {
  16734. + target = <&spi_nor_20>;
  16735. + __dormant__ {
  16736. + m25p,fast-read;
  16737. + };
  16738. + };
  16739. +
  16740. + // Enable fast read for device on spi2.1.
  16741. + // Use default active low interrupt signalling.
  16742. + fragment@22 {
  16743. + target = <&spi_nor_21>;
  16744. + __dormant__ {
  16745. + m25p,fast-read;
  16746. + };
  16747. + };
  16748. +
  16749. + // Enable fast read for device on spi2.2.
  16750. + // Use default active low interrupt signalling.
  16751. + fragment@23 {
  16752. + target = <&spi_nor_22>;
  16753. + __dormant__ {
  16754. + m25p,fast-read;
  16755. + };
  16756. + };
  16757. +
  16758. + __overrides__ {
  16759. + flash-spi0-0 = <0>,"+0+8";
  16760. + flash-spi0-1 = <0>,"+1+9";
  16761. + flash-spi1-0 = <0>,"+2+10";
  16762. + flash-spi1-1 = <0>,"+3+11";
  16763. + flash-spi1-2 = <0>,"+4+12";
  16764. + flash-spi2-0 = <0>,"+5+13";
  16765. + flash-spi2-1 = <0>,"+6+14";
  16766. + flash-spi2-2 = <0>,"+7+15";
  16767. + flash-fastr-spi0-0 = <0>,"+0+8+16";
  16768. + flash-fastr-spi0-1 = <0>,"+1+9+17";
  16769. + flash-fastr-spi1-0 = <0>,"+2+10+18";
  16770. + flash-fastr-spi1-1 = <0>,"+3+11+19";
  16771. + flash-fastr-spi1-2 = <0>,"+4+12+20";
  16772. + flash-fastr-spi2-0 = <0>,"+5+13+21";
  16773. + flash-fastr-spi2-1 = <0>,"+6+14+22";
  16774. + flash-fastr-spi2-2 = <0>,"+7+15+23";
  16775. + };
  16776. +};
  16777. +
  16778. diff --git a/arch/arm/boot/dts/overlays/justboom-both-overlay.dts b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
  16779. new file mode 100644
  16780. index 000000000000..9c42670631c0
  16781. --- /dev/null
  16782. +++ b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
  16783. @@ -0,0 +1,65 @@
  16784. +// SPDX-License-Identifier: GPL-2.0
  16785. +// Definitions for JustBoom Both (Digi+DAC)
  16786. +/dts-v1/;
  16787. +/plugin/;
  16788. +
  16789. +/ {
  16790. + compatible = "brcm,bcm2835";
  16791. +
  16792. + fragment@0 {
  16793. + target = <&i2s>;
  16794. + __overlay__ {
  16795. + status = "okay";
  16796. + };
  16797. + };
  16798. +
  16799. + fragment@1 {
  16800. + target = <&i2c1>;
  16801. + __overlay__ {
  16802. + #address-cells = <1>;
  16803. + #size-cells = <0>;
  16804. + status = "okay";
  16805. +
  16806. + wm8804@3b {
  16807. + #sound-dai-cells = <0>;
  16808. + compatible = "wlf,wm8804";
  16809. + reg = <0x3b>;
  16810. + PVDD-supply = <&vdd_3v3_reg>;
  16811. + DVDD-supply = <&vdd_3v3_reg>;
  16812. + status = "okay";
  16813. + };
  16814. + };
  16815. + };
  16816. +
  16817. + fragment@2 {
  16818. + target = <&i2c1>;
  16819. + __overlay__ {
  16820. + #address-cells = <1>;
  16821. + #size-cells = <0>;
  16822. + status = "okay";
  16823. +
  16824. + pcm5122@4d {
  16825. + #sound-dai-cells = <0>;
  16826. + compatible = "ti,pcm5122";
  16827. + reg = <0x4d>;
  16828. + AVDD-supply = <&vdd_3v3_reg>;
  16829. + DVDD-supply = <&vdd_3v3_reg>;
  16830. + CPVDD-supply = <&vdd_3v3_reg>;
  16831. + status = "okay";
  16832. + };
  16833. + };
  16834. + };
  16835. +
  16836. + fragment@3 {
  16837. + target = <&sound>;
  16838. + frag3: __overlay__ {
  16839. + compatible = "justboom,justboom-both";
  16840. + i2s-controller = <&i2s>;
  16841. + status = "okay";
  16842. + };
  16843. + };
  16844. +
  16845. + __overrides__ {
  16846. + 24db_digital_gain = <&frag3>,"justboom,24db_digital_gain?";
  16847. + };
  16848. +};
  16849. diff --git a/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
  16850. new file mode 100644
  16851. index 000000000000..d00515dca419
  16852. --- /dev/null
  16853. +++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
  16854. @@ -0,0 +1,46 @@
  16855. +// Definitions for JustBoom DAC
  16856. +/dts-v1/;
  16857. +/plugin/;
  16858. +
  16859. +/ {
  16860. + compatible = "brcm,bcm2835";
  16861. +
  16862. + fragment@0 {
  16863. + target = <&i2s>;
  16864. + __overlay__ {
  16865. + status = "okay";
  16866. + };
  16867. + };
  16868. +
  16869. + fragment@1 {
  16870. + target = <&i2c1>;
  16871. + __overlay__ {
  16872. + #address-cells = <1>;
  16873. + #size-cells = <0>;
  16874. + status = "okay";
  16875. +
  16876. + pcm5122@4d {
  16877. + #sound-dai-cells = <0>;
  16878. + compatible = "ti,pcm5122";
  16879. + reg = <0x4d>;
  16880. + AVDD-supply = <&vdd_3v3_reg>;
  16881. + DVDD-supply = <&vdd_3v3_reg>;
  16882. + CPVDD-supply = <&vdd_3v3_reg>;
  16883. + status = "okay";
  16884. + };
  16885. + };
  16886. + };
  16887. +
  16888. + fragment@2 {
  16889. + target = <&sound>;
  16890. + frag2: __overlay__ {
  16891. + compatible = "justboom,justboom-dac";
  16892. + i2s-controller = <&i2s>;
  16893. + status = "okay";
  16894. + };
  16895. + };
  16896. +
  16897. + __overrides__ {
  16898. + 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
  16899. + };
  16900. +};
  16901. diff --git a/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
  16902. new file mode 100644
  16903. index 000000000000..e73336029c54
  16904. --- /dev/null
  16905. +++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
  16906. @@ -0,0 +1,41 @@
  16907. +// Definitions for JustBoom Digi
  16908. +/dts-v1/;
  16909. +/plugin/;
  16910. +
  16911. +/ {
  16912. + compatible = "brcm,bcm2835";
  16913. +
  16914. + fragment@0 {
  16915. + target = <&i2s>;
  16916. + __overlay__ {
  16917. + status = "okay";
  16918. + };
  16919. + };
  16920. +
  16921. + fragment@1 {
  16922. + target = <&i2c1>;
  16923. + __overlay__ {
  16924. + #address-cells = <1>;
  16925. + #size-cells = <0>;
  16926. + status = "okay";
  16927. +
  16928. + wm8804@3b {
  16929. + #sound-dai-cells = <0>;
  16930. + compatible = "wlf,wm8804";
  16931. + reg = <0x3b>;
  16932. + PVDD-supply = <&vdd_3v3_reg>;
  16933. + DVDD-supply = <&vdd_3v3_reg>;
  16934. + status = "okay";
  16935. + };
  16936. + };
  16937. + };
  16938. +
  16939. + fragment@2 {
  16940. + target = <&sound>;
  16941. + __overlay__ {
  16942. + compatible = "justboom,justboom-digi";
  16943. + i2s-controller = <&i2s>;
  16944. + status = "okay";
  16945. + };
  16946. + };
  16947. +};
  16948. diff --git a/arch/arm/boot/dts/overlays/ltc294x-overlay.dts b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
  16949. new file mode 100644
  16950. index 000000000000..6d971f3649ca
  16951. --- /dev/null
  16952. +++ b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
  16953. @@ -0,0 +1,86 @@
  16954. +/dts-v1/;
  16955. +/plugin/;
  16956. +
  16957. +
  16958. +/ {
  16959. + compatible = "brcm,bcm2835";
  16960. +
  16961. + fragment@0 {
  16962. + target = <&i2c_arm>;
  16963. + __dormant__ {
  16964. + #address-cells = <1>;
  16965. + #size-cells = <0>;
  16966. + status = "okay";
  16967. +
  16968. + ltc2941: ltc2941@64 {
  16969. + compatible = "lltc,ltc2941";
  16970. + reg = <0x64>;
  16971. + lltc,resistor-sense = <50>;
  16972. + lltc,prescaler-exponent = <7>;
  16973. + };
  16974. + };
  16975. + };
  16976. +
  16977. + fragment@1 {
  16978. + target = <&i2c_arm>;
  16979. + __dormant__ {
  16980. + #address-cells = <1>;
  16981. + #size-cells = <0>;
  16982. + status = "okay";
  16983. +
  16984. + ltc2942: ltc2942@64 {
  16985. + compatible = "lltc,ltc2942";
  16986. + reg = <0x64>;
  16987. + lltc,resistor-sense = <50>;
  16988. + lltc,prescaler-exponent = <7>;
  16989. + };
  16990. + };
  16991. + };
  16992. +
  16993. + fragment@2 {
  16994. + target = <&i2c_arm>;
  16995. + __dormant__ {
  16996. + #address-cells = <1>;
  16997. + #size-cells = <0>;
  16998. + status = "okay";
  16999. +
  17000. + ltc2943: ltc2943@64 {
  17001. + compatible = "lltc,ltc2943";
  17002. + reg = <0x64>;
  17003. + lltc,resistor-sense = <50>;
  17004. + lltc,prescaler-exponent = <7>;
  17005. + };
  17006. + };
  17007. + };
  17008. +
  17009. + fragment@3 {
  17010. + target = <&i2c_arm>;
  17011. + __dormant__ {
  17012. + #address-cells = <1>;
  17013. + #size-cells = <0>;
  17014. + status = "okay";
  17015. +
  17016. + ltc2944: ltc2944@64 {
  17017. + compatible = "lltc,ltc2944";
  17018. + reg = <0x64>;
  17019. + lltc,resistor-sense = <50>;
  17020. + lltc,prescaler-exponent = <7>;
  17021. + };
  17022. + };
  17023. + };
  17024. +
  17025. + __overrides__ {
  17026. + ltc2941 = <0>,"+0";
  17027. + ltc2942 = <0>,"+1";
  17028. + ltc2943 = <0>,"+2";
  17029. + ltc2944 = <0>,"+3";
  17030. + resistor-sense = <&ltc2941>, "lltc,resistor-sense:0",
  17031. + <&ltc2942>, "lltc,resistor-sense:0",
  17032. + <&ltc2943>, "lltc,resistor-sense:0",
  17033. + <&ltc2944>, "lltc,resistor-sense:0";
  17034. + prescaler-exponent = <&ltc2941>, "lltc,prescaler-exponent:0",
  17035. + <&ltc2942>, "lltc,prescaler-exponent:0",
  17036. + <&ltc2943>, "lltc,prescaler-exponent:0",
  17037. + <&ltc2944>, "lltc,prescaler-exponent:0";
  17038. + };
  17039. +};
  17040. diff --git a/arch/arm/boot/dts/overlays/max98357a-overlay.dts b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
  17041. new file mode 100644
  17042. index 000000000000..9e2afb05b7cb
  17043. --- /dev/null
  17044. +++ b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
  17045. @@ -0,0 +1,84 @@
  17046. +// Overlay for Maxim MAX98357A audio DAC
  17047. +
  17048. +// dtparams:
  17049. +// no-sdmode - SD_MODE pin not managed by driver.
  17050. +// sdmode-pin - Specify GPIO pin to which SD_MODE is connected (default 4).
  17051. +
  17052. +/dts-v1/;
  17053. +/plugin/;
  17054. +
  17055. +/ {
  17056. + compatible = "brcm,bcm2835";
  17057. +
  17058. + /* Enable I2S */
  17059. + fragment@0 {
  17060. + target = <&i2s>;
  17061. + __overlay__ {
  17062. + status = "okay";
  17063. + };
  17064. + };
  17065. +
  17066. + /* DAC whose SD_MODE pin is managed by driver (via GPIO pin) */
  17067. + fragment@1 {
  17068. + target-path = "/";
  17069. + __overlay__ {
  17070. + max98357a_dac: max98357a {
  17071. + compatible = "maxim,max98357a";
  17072. + #sound-dai-cells = <0>;
  17073. + sdmode-gpios = <&gpio 4 0>; /* 2nd word overwritten by sdmode-pin parameter */
  17074. + status = "okay";
  17075. + };
  17076. + };
  17077. + };
  17078. +
  17079. + /* DAC whose SD_MODE pin is not managed by driver */
  17080. + fragment@2 {
  17081. + target-path = "/";
  17082. + __dormant__ {
  17083. + max98357a_nsd: max98357a {
  17084. + compatible = "maxim,max98357a";
  17085. + #sound-dai-cells = <0>;
  17086. + status = "okay";
  17087. + };
  17088. + };
  17089. + };
  17090. +
  17091. + /* Soundcard connecting I2S to DAC with SD_MODE */
  17092. + fragment@3 {
  17093. + target = <&sound>;
  17094. + __overlay__ {
  17095. + compatible = "simple-audio-card";
  17096. + simple-audio-card,format = "i2s";
  17097. + simple-audio-card,name = "MAX98357A";
  17098. + status = "okay";
  17099. + simple-audio-card,cpu {
  17100. + sound-dai = <&i2s>;
  17101. + };
  17102. + simple-audio-card,codec {
  17103. + sound-dai = <&max98357a_dac>;
  17104. + };
  17105. + };
  17106. + };
  17107. +
  17108. + /* Soundcard connecting I2S to DAC without SD_MODE */
  17109. + fragment@4 {
  17110. + target = <&sound>;
  17111. + __dormant__ {
  17112. + compatible = "simple-audio-card";
  17113. + simple-audio-card,format = "i2s";
  17114. + simple-audio-card,name = "MAX98357A";
  17115. + status = "okay";
  17116. + simple-audio-card,cpu {
  17117. + sound-dai = <&i2s>;
  17118. + };
  17119. + simple-audio-card,codec {
  17120. + sound-dai = <&max98357a_nsd>;
  17121. + };
  17122. + };
  17123. + };
  17124. +
  17125. + __overrides__ {
  17126. + no-sdmode = <0>,"-1+2-3+4";
  17127. + sdmode-pin = <&max98357a_dac>,"sdmode-gpios:4";
  17128. + };
  17129. +};
  17130. diff --git a/arch/arm/boot/dts/overlays/maxtherm-overlay.dts b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
  17131. new file mode 100644
  17132. index 000000000000..9964e246c14f
  17133. --- /dev/null
  17134. +++ b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
  17135. @@ -0,0 +1,186 @@
  17136. +/*
  17137. + * Universal device tree overlay for SPI devices
  17138. + */
  17139. +
  17140. +/dts-v1/;
  17141. +/plugin/;
  17142. +
  17143. +#include <dt-bindings/iio/temperature/thermocouple.h>
  17144. +
  17145. +/ {
  17146. + compatible = "brcm,bcm2835";
  17147. +
  17148. + fragment@0 {
  17149. + target = <&spidev0>;
  17150. + __dormant__ {
  17151. + status = "disabled";
  17152. + };
  17153. + };
  17154. +
  17155. + fragment@1 {
  17156. + target = <&spidev1>;
  17157. + __dormant__ {
  17158. + status = "disabled";
  17159. + };
  17160. + };
  17161. +
  17162. + fragment@2 {
  17163. + target-path = "spi1/spidev@0";
  17164. + __dormant__ {
  17165. + status = "disabled";
  17166. + };
  17167. + };
  17168. +
  17169. + fragment@3 {
  17170. + target-path = "spi1/spidev@1";
  17171. + __dormant__ {
  17172. + status = "disabled";
  17173. + };
  17174. + };
  17175. +
  17176. + fragment@4 {
  17177. + target-path = "spi1/spidev@2";
  17178. + __dormant__ {
  17179. + status = "disabled";
  17180. + };
  17181. + };
  17182. +
  17183. + fragment@5 {
  17184. + target-path = "spi2/spidev@0";
  17185. + __dormant__ {
  17186. + status = "disabled";
  17187. + };
  17188. + };
  17189. +
  17190. + fragment@6 {
  17191. + target-path = "spi2/spidev@1";
  17192. + __dormant__ {
  17193. + status = "disabled";
  17194. + };
  17195. + };
  17196. +
  17197. + fragment@7 {
  17198. + target-path = "spi2/spidev@2";
  17199. + __dormant__ {
  17200. + status = "disabled";
  17201. + };
  17202. + };
  17203. +
  17204. + maxfrag: fragment@8 {
  17205. + target = <&spi0>;
  17206. + __overlay__ {
  17207. + status = "okay";
  17208. + #address-cells = <1>;
  17209. + #size-cells = <0>;
  17210. +
  17211. + max: maxtherm@0 {
  17212. + compatible = "maxim,max6675";
  17213. + reg = <0>;
  17214. + spi-max-frequency = <500000>;
  17215. + };
  17216. + };
  17217. + };
  17218. +
  17219. + fragment@9 {
  17220. + target = <&max>;
  17221. + __dormant__ {
  17222. + compatible = "maxim,max31855e", "maxim,max31855";
  17223. + };
  17224. + };
  17225. +
  17226. + fragment@10 {
  17227. + target = <&max>;
  17228. + __dormant__ {
  17229. + compatible = "maxim,max31855j", "maxim,max31855";
  17230. + };
  17231. + };
  17232. +
  17233. + fragment@11 {
  17234. + target = <&max>;
  17235. + __dormant__ {
  17236. + compatible = "maxim,max31855k", "maxim,max31855";
  17237. + };
  17238. + };
  17239. +
  17240. + fragment@12 {
  17241. + target = <&max>;
  17242. + __dormant__ {
  17243. + compatible = "maxim,max31855n", "maxim,max31855";
  17244. + };
  17245. + };
  17246. +
  17247. + fragment@13 {
  17248. + target = <&max>;
  17249. + __dormant__ {
  17250. + compatible = "maxim,max31855r", "maxim,max31855";
  17251. + };
  17252. + };
  17253. +
  17254. + fragment@14 {
  17255. + target = <&max>;
  17256. + __dormant__ {
  17257. + compatible = "maxim,max31855s", "maxim,max31855";
  17258. + };
  17259. + };
  17260. +
  17261. + fragment@15 {
  17262. + target = <&max>;
  17263. + __dormant__ {
  17264. + compatible = "maxim,max31855t", "maxim,max31855";
  17265. + };
  17266. + };
  17267. +
  17268. + fragment@16 {
  17269. + target = <&max>;
  17270. + __dormant__ {
  17271. + compatible = "maxim,max31856";
  17272. + spi-cpha;
  17273. + thermocouple-type = <THERMOCOUPLE_TYPE_K>;
  17274. + };
  17275. + };
  17276. +
  17277. + __overrides__ {
  17278. + spi0-0 = <0>, "+0",
  17279. + <&maxfrag>,"target:0=",<&spi0>,
  17280. + <&max>,"reg:0=0";
  17281. + spi0-1 = <0>, "+1",
  17282. + <&maxfrag>,"target:0=",<&spi0>,
  17283. + <&max>,"reg:0=1";
  17284. + spi1-0 = <0>, "+2",
  17285. + <&maxfrag>,"target:0=",<&spi1>,
  17286. + <&max>,"reg:0=0";
  17287. + spi1-1 = <0>, "+3",
  17288. + <&maxfrag>,"target:0=",<&spi1>,
  17289. + <&max>,"reg:0=1";
  17290. + spi1-2 = <0>, "+4",
  17291. + <&maxfrag>,"target:0=",<&spi1>,
  17292. + <&max>,"reg:0=2";
  17293. + spi2-0 = <0>, "+5",
  17294. + <&maxfrag>,"target:0=",<&spi2>,
  17295. + <&max>,"reg:0=0";
  17296. + spi2-1 = <0>, "+6",
  17297. + <&maxfrag>,"target:0=",<&spi2>,
  17298. + <&max>,"reg:0=1";
  17299. + spi2-2 = <0>, "+7",
  17300. + <&maxfrag>,"target:0=",<&spi2>,
  17301. + <&max>,"reg:0=2";
  17302. + max6675 = <&max>,"compatible=maxim,max6675";
  17303. + max31855 = <&max>,"compatible=maxim,max31855";
  17304. + max31855e = <0>,"+9";
  17305. + max31855j = <0>,"+10";
  17306. + max31855k = <0>,"+11";
  17307. + max31855n = <0>,"+12";
  17308. + max31855r = <0>,"+13";
  17309. + max31855s = <0>,"+14";
  17310. + max31855t = <0>,"+15";
  17311. + max31856 = <0>,"+16";
  17312. + type_b = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_B>;
  17313. + type_e = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_E>;
  17314. + type_j = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_J>;
  17315. + type_k = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_K>;
  17316. + type_n = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_N>;
  17317. + type_r = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_R>;
  17318. + type_s = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_S>;
  17319. + type_t = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_T>;
  17320. + };
  17321. +};
  17322. diff --git a/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
  17323. new file mode 100644
  17324. index 000000000000..840dd9b31db4
  17325. --- /dev/null
  17326. +++ b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
  17327. @@ -0,0 +1,64 @@
  17328. +// Definitions for mbed DAC
  17329. +/dts-v1/;
  17330. +/plugin/;
  17331. +
  17332. +/ {
  17333. + compatible = "brcm,bcm2835";
  17334. +
  17335. + fragment@0 {
  17336. + target = <&i2s>;
  17337. + __overlay__ {
  17338. + status = "okay";
  17339. + };
  17340. + };
  17341. +
  17342. + fragment@1 {
  17343. + target = <&i2c1>;
  17344. + __overlay__ {
  17345. + #address-cells = <1>;
  17346. + #size-cells = <0>;
  17347. + status = "okay";
  17348. +
  17349. + tlv320aic23: codec@1a {
  17350. + #sound-dai-cells = <0>;
  17351. + reg = <0x1a>;
  17352. + compatible = "ti,tlv320aic23";
  17353. + status = "okay";
  17354. + };
  17355. + };
  17356. + };
  17357. +
  17358. + fragment@2 {
  17359. + target = <&sound>;
  17360. + __overlay__ {
  17361. + compatible = "simple-audio-card";
  17362. + i2s-controller = <&i2s>;
  17363. + status = "okay";
  17364. +
  17365. + simple-audio-card,name = "mbed-DAC";
  17366. +
  17367. + simple-audio-card,widgets =
  17368. + "Microphone", "Mic Jack",
  17369. + "Line", "Line In",
  17370. + "Headphone", "Headphone Jack";
  17371. +
  17372. + simple-audio-card,routing =
  17373. + "Headphone Jack", "LHPOUT",
  17374. + "Headphone Jack", "RHPOUT",
  17375. + "LLINEIN", "Line In",
  17376. + "RLINEIN", "Line In",
  17377. + "MICIN", "Mic Jack";
  17378. +
  17379. + simple-audio-card,format = "i2s";
  17380. +
  17381. + simple-audio-card,cpu {
  17382. + sound-dai = <&i2s>;
  17383. + };
  17384. +
  17385. + sound_master: simple-audio-card,codec {
  17386. + sound-dai = <&tlv320aic23>;
  17387. + system-clock-frequency = <12288000>;
  17388. + };
  17389. + };
  17390. + };
  17391. +};
  17392. diff --git a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
  17393. new file mode 100644
  17394. index 000000000000..c546d8ba7e6d
  17395. --- /dev/null
  17396. +++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
  17397. @@ -0,0 +1,69 @@
  17398. +// Definitions for MCP23017 Gpio Extender from Microchip Semiconductor
  17399. +
  17400. +/dts-v1/;
  17401. +/plugin/;
  17402. +
  17403. +/ {
  17404. + compatible = "brcm,bcm2835";
  17405. +
  17406. + fragment@0 {
  17407. + target = <&i2c1>;
  17408. + __overlay__ {
  17409. + status = "okay";
  17410. + };
  17411. + };
  17412. +
  17413. + fragment@1 {
  17414. + target = <&gpio>;
  17415. + __overlay__ {
  17416. + mcp23017_pins: mcp23017_pins@20 {
  17417. + brcm,pins = <4>;
  17418. + brcm,function = <0>;
  17419. + };
  17420. + };
  17421. + };
  17422. +
  17423. + fragment@2 {
  17424. + target = <&i2c1>;
  17425. + __overlay__ {
  17426. + #address-cells = <1>;
  17427. + #size-cells = <0>;
  17428. +
  17429. + mcp23017: mcp@20 {
  17430. + compatible = "microchip,mcp23017";
  17431. + reg = <0x20>;
  17432. + gpio-controller;
  17433. + #gpio-cells = <2>;
  17434. +
  17435. + status = "okay";
  17436. + };
  17437. + };
  17438. + };
  17439. +
  17440. + fragment@3 {
  17441. + target = <&mcp23017>;
  17442. + __dormant__ {
  17443. + compatible = "microchip,mcp23008";
  17444. + };
  17445. + };
  17446. +
  17447. + fragment@4 {
  17448. + target = <&mcp23017>;
  17449. + mcp23017_irq: __overlay__ {
  17450. + #interrupt-cells=<2>;
  17451. + interrupt-parent = <&gpio>;
  17452. + interrupts = <4 2>;
  17453. + interrupt-controller;
  17454. + microchip,irq-mirror;
  17455. + };
  17456. + };
  17457. +
  17458. + __overrides__ {
  17459. + gpiopin = <&mcp23017_pins>,"brcm,pins:0",
  17460. + <&mcp23017_irq>,"interrupts:0";
  17461. + addr = <&mcp23017>,"reg:0", <&mcp23017_pins>,"reg:0";
  17462. + mcp23008 = <0>,"=3";
  17463. + noints = <0>,"!1!4";
  17464. + };
  17465. +};
  17466. +
  17467. diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
  17468. new file mode 100644
  17469. index 000000000000..484d64b225fb
  17470. --- /dev/null
  17471. +++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
  17472. @@ -0,0 +1,732 @@
  17473. +// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor
  17474. +
  17475. +// dtparams:
  17476. +// s08-spi<n>-<m>-present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI<n>, CS#<m>.
  17477. +// s17-spi<n>-<m>-present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI<n>, CS#<m>.
  17478. +// s08-spi<n>-<m>-int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI<n>, CS#<m>, specifies the GPIO pin to which INT output is connected.
  17479. +// s17-spi<n>-<m>-int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI<n>, CS#<m>, specifies the GPIO pin to which either INTA or INTB output is connected.
  17480. +//
  17481. +// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
  17482. +// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#.
  17483. +//
  17484. +// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25:
  17485. +// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25
  17486. +//
  17487. +// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7:
  17488. +// dtoverlay=spi1-2cs
  17489. +// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131
  17490. +
  17491. +/dts-v1/;
  17492. +/plugin/;
  17493. +
  17494. +/ {
  17495. + compatible = "brcm,bcm2835";
  17496. +
  17497. + // disable spi-dev on spi0.0
  17498. + fragment@0 {
  17499. + target = <&spidev0>;
  17500. + __dormant__ {
  17501. + status = "disabled";
  17502. + };
  17503. + };
  17504. +
  17505. + // disable spi-dev on spi0.1
  17506. + fragment@1 {
  17507. + target = <&spidev1>;
  17508. + __dormant__ {
  17509. + status = "disabled";
  17510. + };
  17511. + };
  17512. +
  17513. + // disable spi-dev on spi1.0
  17514. + fragment@2 {
  17515. + target-path = "spi1/spidev@0";
  17516. + __dormant__ {
  17517. + status = "disabled";
  17518. + };
  17519. + };
  17520. +
  17521. + // disable spi-dev on spi1.1
  17522. + fragment@3 {
  17523. + target-path = "spi1/spidev@1";
  17524. + __dormant__ {
  17525. + status = "disabled";
  17526. + };
  17527. + };
  17528. +
  17529. + // disable spi-dev on spi1.2
  17530. + fragment@4 {
  17531. + target-path = "spi1/spidev@2";
  17532. + __dormant__ {
  17533. + status = "disabled";
  17534. + };
  17535. + };
  17536. +
  17537. + // disable spi-dev on spi2.0
  17538. + fragment@5 {
  17539. + target-path = "spi2/spidev@0";
  17540. + __dormant__ {
  17541. + status = "disabled";
  17542. + };
  17543. + };
  17544. +
  17545. + // disable spi-dev on spi2.1
  17546. + fragment@6 {
  17547. + target-path = "spi2/spidev@1";
  17548. + __dormant__ {
  17549. + status = "disabled";
  17550. + };
  17551. + };
  17552. +
  17553. + // disable spi-dev on spi2.2
  17554. + fragment@7 {
  17555. + target-path = "spi2/spidev@2";
  17556. + __dormant__ {
  17557. + status = "disabled";
  17558. + };
  17559. + };
  17560. +
  17561. + // enable one or more mcp23s08s on spi0.0
  17562. + fragment@8 {
  17563. + target = <&spi0>;
  17564. + __dormant__ {
  17565. + status = "okay";
  17566. + #address-cells = <1>;
  17567. + #size-cells = <0>;
  17568. + mcp23s08_00: mcp23s08@0 {
  17569. + compatible = "microchip,mcp23s08";
  17570. + gpio-controller;
  17571. + #gpio-cells = <2>;
  17572. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */
  17573. + reg = <0>;
  17574. + spi-max-frequency = <500000>;
  17575. + status = "okay";
  17576. + #interrupt-cells=<2>;
  17577. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */
  17578. + };
  17579. + };
  17580. + };
  17581. +
  17582. + // enable one or more mcp23s08s on spi0.1
  17583. + fragment@9 {
  17584. + target = <&spi0>;
  17585. + __dormant__ {
  17586. + status = "okay";
  17587. + #address-cells = <1>;
  17588. + #size-cells = <0>;
  17589. + mcp23s08_01: mcp23s08@1 {
  17590. + compatible = "microchip,mcp23s08";
  17591. + gpio-controller;
  17592. + #gpio-cells = <2>;
  17593. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */
  17594. + reg = <1>;
  17595. + spi-max-frequency = <500000>;
  17596. + status = "okay";
  17597. + #interrupt-cells=<2>;
  17598. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */
  17599. + };
  17600. + };
  17601. + };
  17602. +
  17603. + // enable one or more mcp23s08s on spi1.0
  17604. + fragment@10 {
  17605. + target = <&spi1>;
  17606. + __dormant__ {
  17607. + status = "okay";
  17608. + #address-cells = <1>;
  17609. + #size-cells = <0>;
  17610. + mcp23s08_10: mcp23s08@0 {
  17611. + compatible = "microchip,mcp23s08";
  17612. + gpio-controller;
  17613. + #gpio-cells = <2>;
  17614. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */
  17615. + reg = <0>;
  17616. + spi-max-frequency = <500000>;
  17617. + status = "okay";
  17618. + #interrupt-cells=<2>;
  17619. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */
  17620. + };
  17621. + };
  17622. + };
  17623. +
  17624. + // enable one or more mcp23s08s on spi1.1
  17625. + fragment@11 {
  17626. + target = <&spi1>;
  17627. + __dormant__ {
  17628. + status = "okay";
  17629. + #address-cells = <1>;
  17630. + #size-cells = <0>;
  17631. + mcp23s08_11: mcp23s08@1 {
  17632. + compatible = "microchip,mcp23s08";
  17633. + gpio-controller;
  17634. + #gpio-cells = <2>;
  17635. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */
  17636. + reg = <1>;
  17637. + spi-max-frequency = <500000>;
  17638. + status = "okay";
  17639. + #interrupt-cells=<2>;
  17640. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */
  17641. + };
  17642. + };
  17643. + };
  17644. +
  17645. + // enable one or more mcp23s08s on spi1.2
  17646. + fragment@12 {
  17647. + target = <&spi1>;
  17648. + __dormant__ {
  17649. + status = "okay";
  17650. + #address-cells = <1>;
  17651. + #size-cells = <0>;
  17652. + mcp23s08_12: mcp23s08@2 {
  17653. + compatible = "microchip,mcp23s08";
  17654. + gpio-controller;
  17655. + #gpio-cells = <2>;
  17656. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */
  17657. + reg = <2>;
  17658. + spi-max-frequency = <500000>;
  17659. + status = "okay";
  17660. + #interrupt-cells=<2>;
  17661. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */
  17662. + };
  17663. + };
  17664. + };
  17665. +
  17666. + // enable one or more mcp23s08s on spi2.0
  17667. + fragment@13 {
  17668. + target = <&spi2>;
  17669. + __dormant__ {
  17670. + status = "okay";
  17671. + #address-cells = <1>;
  17672. + #size-cells = <0>;
  17673. + mcp23s08_20: mcp23s08@0 {
  17674. + compatible = "microchip,mcp23s08";
  17675. + gpio-controller;
  17676. + #gpio-cells = <2>;
  17677. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */
  17678. + reg = <0>;
  17679. + spi-max-frequency = <500000>;
  17680. + status = "okay";
  17681. + #interrupt-cells=<2>;
  17682. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */
  17683. + };
  17684. + };
  17685. + };
  17686. +
  17687. + // enable one or more mcp23s08s on spi2.1
  17688. + fragment@14 {
  17689. + target = <&spi2>;
  17690. + __dormant__ {
  17691. + status = "okay";
  17692. + #address-cells = <1>;
  17693. + #size-cells = <0>;
  17694. + mcp23s08_21: mcp23s08@1 {
  17695. + compatible = "microchip,mcp23s08";
  17696. + gpio-controller;
  17697. + #gpio-cells = <2>;
  17698. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */
  17699. + reg = <1>;
  17700. + spi-max-frequency = <500000>;
  17701. + status = "okay";
  17702. + #interrupt-cells=<2>;
  17703. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */
  17704. + };
  17705. + };
  17706. + };
  17707. +
  17708. + // enable one or more mcp23s08s on spi2.2
  17709. + fragment@15 {
  17710. + target = <&spi2>;
  17711. + __dormant__ {
  17712. + status = "okay";
  17713. + #address-cells = <1>;
  17714. + #size-cells = <0>;
  17715. + mcp23s08_22: mcp23s08@2 {
  17716. + compatible = "microchip,mcp23s08";
  17717. + gpio-controller;
  17718. + #gpio-cells = <2>;
  17719. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */
  17720. + reg = <2>;
  17721. + spi-max-frequency = <500000>;
  17722. + status = "okay";
  17723. + #interrupt-cells=<2>;
  17724. + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */
  17725. + };
  17726. + };
  17727. + };
  17728. +
  17729. + // enable one or more mcp23s17s on spi0.0
  17730. + fragment@16 {
  17731. + target = <&spi0>;
  17732. + __dormant__ {
  17733. + status = "okay";
  17734. + #address-cells = <1>;
  17735. + #size-cells = <0>;
  17736. + mcp23s17_00: mcp23s17@0 {
  17737. + compatible = "microchip,mcp23s17";
  17738. + gpio-controller;
  17739. + #gpio-cells = <2>;
  17740. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */
  17741. + reg = <0>;
  17742. + spi-max-frequency = <500000>;
  17743. + status = "okay";
  17744. + #interrupt-cells=<2>;
  17745. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */
  17746. + };
  17747. + };
  17748. + };
  17749. +
  17750. + // enable one or more mcp23s17s on spi0.1
  17751. + fragment@17 {
  17752. + target = <&spi0>;
  17753. + __dormant__ {
  17754. + status = "okay";
  17755. + #address-cells = <1>;
  17756. + #size-cells = <0>;
  17757. + mcp23s17_01: mcp23s17@1 {
  17758. + compatible = "microchip,mcp23s17";
  17759. + gpio-controller;
  17760. + #gpio-cells = <2>;
  17761. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */
  17762. + reg = <1>;
  17763. + spi-max-frequency = <500000>;
  17764. + status = "okay";
  17765. + #interrupt-cells=<2>;
  17766. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */
  17767. + };
  17768. + };
  17769. + };
  17770. +
  17771. + // enable one or more mcp23s17s on spi1.0
  17772. + fragment@18 {
  17773. + target = <&spi1>;
  17774. + __dormant__ {
  17775. + status = "okay";
  17776. + #address-cells = <1>;
  17777. + #size-cells = <0>;
  17778. + mcp23s17_10: mcp23s17@0 {
  17779. + compatible = "microchip,mcp23s17";
  17780. + gpio-controller;
  17781. + #gpio-cells = <2>;
  17782. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */
  17783. + reg = <0>;
  17784. + spi-max-frequency = <500000>;
  17785. + status = "okay";
  17786. + #interrupt-cells=<2>;
  17787. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */
  17788. + };
  17789. + };
  17790. + };
  17791. +
  17792. + // enable one or more mcp23s17s on spi1.1
  17793. + fragment@19 {
  17794. + target = <&spi1>;
  17795. + __dormant__ {
  17796. + status = "okay";
  17797. + #address-cells = <1>;
  17798. + #size-cells = <0>;
  17799. + mcp23s17_11: mcp23s17@1 {
  17800. + compatible = "microchip,mcp23s17";
  17801. + gpio-controller;
  17802. + #gpio-cells = <2>;
  17803. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */
  17804. + reg = <1>;
  17805. + spi-max-frequency = <500000>;
  17806. + status = "okay";
  17807. + #interrupt-cells=<2>;
  17808. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */
  17809. + };
  17810. + };
  17811. + };
  17812. +
  17813. + // enable one or more mcp23s17s on spi1.2
  17814. + fragment@20 {
  17815. + target = <&spi1>;
  17816. + __dormant__ {
  17817. + status = "okay";
  17818. + #address-cells = <1>;
  17819. + #size-cells = <0>;
  17820. + mcp23s17_12: mcp23s17@2 {
  17821. + compatible = "microchip,mcp23s17";
  17822. + gpio-controller;
  17823. + #gpio-cells = <2>;
  17824. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */
  17825. + reg = <2>;
  17826. + spi-max-frequency = <500000>;
  17827. + status = "okay";
  17828. + #interrupt-cells=<2>;
  17829. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */
  17830. + };
  17831. + };
  17832. + };
  17833. +
  17834. + // enable one or more mcp23s17s on spi2.0
  17835. + fragment@21 {
  17836. + target = <&spi2>;
  17837. + __dormant__ {
  17838. + status = "okay";
  17839. + #address-cells = <1>;
  17840. + #size-cells = <0>;
  17841. + mcp23s17_20: mcp23s17@0 {
  17842. + compatible = "microchip,mcp23s17";
  17843. + gpio-controller;
  17844. + #gpio-cells = <2>;
  17845. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */
  17846. + reg = <0>;
  17847. + spi-max-frequency = <500000>;
  17848. + status = "okay";
  17849. + #interrupt-cells=<2>;
  17850. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */
  17851. + };
  17852. + };
  17853. + };
  17854. +
  17855. + // enable one or more mcp23s17s on spi2.1
  17856. + fragment@22 {
  17857. + target = <&spi2>;
  17858. + __dormant__ {
  17859. + status = "okay";
  17860. + #address-cells = <1>;
  17861. + #size-cells = <0>;
  17862. + mcp23s17_21: mcp23s17@1 {
  17863. + compatible = "microchip,mcp23s17";
  17864. + gpio-controller;
  17865. + #gpio-cells = <2>;
  17866. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */
  17867. + reg = <1>;
  17868. + spi-max-frequency = <500000>;
  17869. + status = "okay";
  17870. + #interrupt-cells=<2>;
  17871. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */
  17872. + };
  17873. + };
  17874. + };
  17875. +
  17876. + // enable one or more mcp23s17s on spi2.2
  17877. + fragment@23 {
  17878. + target = <&spi2>;
  17879. + __dormant__ {
  17880. + status = "okay";
  17881. + #address-cells = <1>;
  17882. + #size-cells = <0>;
  17883. + mcp23s17_22: mcp23s17@2 {
  17884. + compatible = "microchip,mcp23s17";
  17885. + gpio-controller;
  17886. + #gpio-cells = <2>;
  17887. + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */
  17888. + reg = <2>;
  17889. + spi-max-frequency = <500000>;
  17890. + status = "okay";
  17891. + #interrupt-cells=<2>;
  17892. + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */
  17893. + };
  17894. + };
  17895. + };
  17896. +
  17897. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down
  17898. + fragment@24 {
  17899. + target = <&gpio>;
  17900. + __dormant__ {
  17901. + spi0_0_int_pins: spi0_0_int_pins {
  17902. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */
  17903. + brcm,function = <0>;
  17904. + brcm,pull = <0>;
  17905. + };
  17906. + };
  17907. + };
  17908. +
  17909. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down
  17910. + fragment@25 {
  17911. + target = <&gpio>;
  17912. + __dormant__ {
  17913. + spi0_1_int_pins: spi0_1_int_pins {
  17914. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */
  17915. + brcm,function = <0>;
  17916. + brcm,pull = <0>;
  17917. + };
  17918. + };
  17919. + };
  17920. +
  17921. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down
  17922. + fragment@26 {
  17923. + target = <&gpio>;
  17924. + __dormant__ {
  17925. + spi1_0_int_pins: spi1_0_int_pins {
  17926. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */
  17927. + brcm,function = <0>;
  17928. + brcm,pull = <0>;
  17929. + };
  17930. + };
  17931. + };
  17932. +
  17933. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down
  17934. + fragment@27 {
  17935. + target = <&gpio>;
  17936. + __dormant__ {
  17937. + spi1_1_int_pins: spi1_1_int_pins {
  17938. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */
  17939. + brcm,function = <0>;
  17940. + brcm,pull = <0>;
  17941. + };
  17942. + };
  17943. + };
  17944. +
  17945. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down
  17946. + fragment@28 {
  17947. + target = <&gpio>;
  17948. + __dormant__ {
  17949. + spi1_2_int_pins: spi1_2_int_pins {
  17950. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */
  17951. + brcm,function = <0>;
  17952. + brcm,pull = <0>;
  17953. + };
  17954. + };
  17955. + };
  17956. +
  17957. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down
  17958. + fragment@29 {
  17959. + target = <&gpio>;
  17960. + __dormant__ {
  17961. + spi2_0_int_pins: spi2_0_int_pins {
  17962. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */
  17963. + brcm,function = <0>;
  17964. + brcm,pull = <0>;
  17965. + };
  17966. + };
  17967. + };
  17968. +
  17969. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down
  17970. + fragment@30 {
  17971. + target = <&gpio>;
  17972. + __dormant__ {
  17973. + spi2_1_int_pins: spi2_1_int_pins {
  17974. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */
  17975. + brcm,function = <0>;
  17976. + brcm,pull = <0>;
  17977. + };
  17978. + };
  17979. + };
  17980. +
  17981. + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down
  17982. + fragment@31 {
  17983. + target = <&gpio>;
  17984. + __dormant__ {
  17985. + spi2_2_int_pins: spi2_2_int_pins {
  17986. + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */
  17987. + brcm,function = <0>;
  17988. + brcm,pull = <0>;
  17989. + };
  17990. + };
  17991. + };
  17992. +
  17993. + // Enable interrupts for a mcp23s08 on spi0.0.
  17994. + // Use default active low interrupt signalling.
  17995. + fragment@32 {
  17996. + target = <&mcp23s08_00>;
  17997. + __dormant__ {
  17998. + interrupt-parent = <&gpio>;
  17999. + interrupt-controller;
  18000. + };
  18001. + };
  18002. +
  18003. + // Enable interrupts for a mcp23s08 on spi0.1.
  18004. + // Use default active low interrupt signalling.
  18005. + fragment@33 {
  18006. + target = <&mcp23s08_01>;
  18007. + __dormant__ {
  18008. + interrupt-parent = <&gpio>;
  18009. + interrupt-controller;
  18010. + };
  18011. + };
  18012. +
  18013. + // Enable interrupts for a mcp23s08 on spi1.0.
  18014. + // Use default active low interrupt signalling.
  18015. + fragment@34 {
  18016. + target = <&mcp23s08_10>;
  18017. + __dormant__ {
  18018. + interrupt-parent = <&gpio>;
  18019. + interrupt-controller;
  18020. + };
  18021. + };
  18022. +
  18023. + // Enable interrupts for a mcp23s08 on spi1.1.
  18024. + // Use default active low interrupt signalling.
  18025. + fragment@35 {
  18026. + target = <&mcp23s08_11>;
  18027. + __dormant__ {
  18028. + interrupt-parent = <&gpio>;
  18029. + interrupt-controller;
  18030. + };
  18031. + };
  18032. +
  18033. + // Enable interrupts for a mcp23s08 on spi1.2.
  18034. + // Use default active low interrupt signalling.
  18035. + fragment@36 {
  18036. + target = <&mcp23s08_12>;
  18037. + __dormant__ {
  18038. + interrupt-parent = <&gpio>;
  18039. + interrupt-controller;
  18040. + };
  18041. + };
  18042. +
  18043. + // Enable interrupts for a mcp23s08 on spi2.0.
  18044. + // Use default active low interrupt signalling.
  18045. + fragment@37 {
  18046. + target = <&mcp23s08_20>;
  18047. + __dormant__ {
  18048. + interrupt-parent = <&gpio>;
  18049. + interrupt-controller;
  18050. + };
  18051. + };
  18052. +
  18053. + // Enable interrupts for a mcp23s08 on spi2.1.
  18054. + // Use default active low interrupt signalling.
  18055. + fragment@38 {
  18056. + target = <&mcp23s08_21>;
  18057. + __dormant__ {
  18058. + interrupt-parent = <&gpio>;
  18059. + interrupt-controller;
  18060. + };
  18061. + };
  18062. +
  18063. + // Enable interrupts for a mcp23s08 on spi2.2.
  18064. + // Use default active low interrupt signalling.
  18065. + fragment@39 {
  18066. + target = <&mcp23s08_22>;
  18067. + __dormant__ {
  18068. + interrupt-parent = <&gpio>;
  18069. + interrupt-controller;
  18070. + };
  18071. + };
  18072. +
  18073. + // Enable interrupts for a mcp23s17 on spi0.0.
  18074. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18075. + // Use default active low interrupt signalling.
  18076. + fragment@40 {
  18077. + target = <&mcp23s17_00>;
  18078. + __dormant__ {
  18079. + interrupt-parent = <&gpio>;
  18080. + interrupt-controller;
  18081. + microchip,irq-mirror;
  18082. + };
  18083. + };
  18084. +
  18085. + // Enable interrupts for a mcp23s17 on spi0.1.
  18086. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18087. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18088. + fragment@41 {
  18089. + target = <&mcp23s17_01>;
  18090. + __dormant__ {
  18091. + interrupt-parent = <&gpio>;
  18092. + interrupt-controller;
  18093. + microchip,irq-mirror;
  18094. + };
  18095. + };
  18096. +
  18097. + // Enable interrupts for a mcp23s17 on spi1.0.
  18098. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18099. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18100. + fragment@42 {
  18101. + target = <&mcp23s17_10>;
  18102. + __dormant__ {
  18103. + interrupt-parent = <&gpio>;
  18104. + interrupt-controller;
  18105. + microchip,irq-mirror;
  18106. + };
  18107. + };
  18108. +
  18109. + // Enable interrupts for a mcp23s17 on spi1.1.
  18110. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18111. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18112. + fragment@43 {
  18113. + target = <&mcp23s17_11>;
  18114. + __dormant__ {
  18115. + interrupt-parent = <&gpio>;
  18116. + interrupt-controller;
  18117. + microchip,irq-mirror;
  18118. + };
  18119. + };
  18120. +
  18121. + // Enable interrupts for a mcp23s17 on spi1.2.
  18122. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18123. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18124. + fragment@44 {
  18125. + target = <&mcp23s17_12>;
  18126. + __dormant__ {
  18127. + interrupt-parent = <&gpio>;
  18128. + interrupt-controller;
  18129. + microchip,irq-mirror;
  18130. + };
  18131. + };
  18132. +
  18133. + // Enable interrupts for a mcp23s17 on spi2.0.
  18134. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18135. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18136. + fragment@45 {
  18137. + target = <&mcp23s17_20>;
  18138. + __dormant__ {
  18139. + interrupt-parent = <&gpio>;
  18140. + interrupt-controller;
  18141. + microchip,irq-mirror;
  18142. + };
  18143. + };
  18144. +
  18145. + // Enable interrupts for a mcp23s17 on spi2.1.
  18146. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18147. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18148. + fragment@46 {
  18149. + target = <&mcp23s17_21>;
  18150. + __dormant__ {
  18151. + interrupt-parent = <&gpio>;
  18152. + interrupt-controller;
  18153. + microchip,irq-mirror;
  18154. + };
  18155. + };
  18156. +
  18157. + // Enable interrupts for a mcp23s17 on spi2.2.
  18158. + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
  18159. + // Configure INTA/B outputs of mcp23s08/17 as active low.
  18160. + fragment@47 {
  18161. + target = <&mcp23s17_22>;
  18162. + __dormant__ {
  18163. + interrupt-parent = <&gpio>;
  18164. + interrupt-controller;
  18165. + microchip,irq-mirror;
  18166. + };
  18167. + };
  18168. +
  18169. + __overrides__ {
  18170. + s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0";
  18171. + s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0";
  18172. + s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0";
  18173. + s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0";
  18174. + s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0";
  18175. + s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0";
  18176. + s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0";
  18177. + s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0";
  18178. + s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0";
  18179. + s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0";
  18180. + s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0";
  18181. + s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0";
  18182. + s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0";
  18183. + s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0";
  18184. + s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0";
  18185. + s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0";
  18186. + s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0";
  18187. + s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0";
  18188. + s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0";
  18189. + s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0";
  18190. + s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0";
  18191. + s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0";
  18192. + s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0";
  18193. + s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0";
  18194. + s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0";
  18195. + s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0";
  18196. + s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0";
  18197. + s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0";
  18198. + s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0";
  18199. + s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0";
  18200. + s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0";
  18201. + s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0";
  18202. + };
  18203. +};
  18204. +
  18205. diff --git a/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
  18206. new file mode 100755
  18207. index 000000000000..46f143d809cc
  18208. --- /dev/null
  18209. +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
  18210. @@ -0,0 +1,73 @@
  18211. +/*
  18212. + * Device tree overlay for mcp251x/can0 on spi0.0
  18213. + */
  18214. +
  18215. +/dts-v1/;
  18216. +/plugin/;
  18217. +
  18218. +/ {
  18219. + compatible = "brcm,bcm2835";
  18220. + /* disable spi-dev for spi0.0 */
  18221. + fragment@0 {
  18222. + target = <&spi0>;
  18223. + __overlay__ {
  18224. + status = "okay";
  18225. + };
  18226. + };
  18227. +
  18228. + fragment@1 {
  18229. + target = <&spidev0>;
  18230. + __overlay__ {
  18231. + status = "disabled";
  18232. + };
  18233. + };
  18234. +
  18235. + /* the interrupt pin of the can-controller */
  18236. + fragment@2 {
  18237. + target = <&gpio>;
  18238. + __overlay__ {
  18239. + can0_pins: can0_pins {
  18240. + brcm,pins = <25>;
  18241. + brcm,function = <0>; /* input */
  18242. + };
  18243. + };
  18244. + };
  18245. +
  18246. + /* the clock/oscillator of the can-controller */
  18247. + fragment@3 {
  18248. + target-path = "/";
  18249. + __overlay__ {
  18250. + /* external oscillator of mcp2515 on SPI0.0 */
  18251. + can0_osc: can0_osc {
  18252. + compatible = "fixed-clock";
  18253. + #clock-cells = <0>;
  18254. + clock-frequency = <16000000>;
  18255. + };
  18256. + };
  18257. + };
  18258. +
  18259. + /* the spi config of the can-controller itself binding everything together */
  18260. + fragment@4 {
  18261. + target = <&spi0>;
  18262. + __overlay__ {
  18263. + /* needed to avoid dtc warning */
  18264. + #address-cells = <1>;
  18265. + #size-cells = <0>;
  18266. + can0: mcp2515@0 {
  18267. + reg = <0>;
  18268. + compatible = "microchip,mcp2515";
  18269. + pinctrl-names = "default";
  18270. + pinctrl-0 = <&can0_pins>;
  18271. + spi-max-frequency = <10000000>;
  18272. + interrupt-parent = <&gpio>;
  18273. + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
  18274. + clocks = <&can0_osc>;
  18275. + };
  18276. + };
  18277. + };
  18278. + __overrides__ {
  18279. + oscillator = <&can0_osc>,"clock-frequency:0";
  18280. + spimaxfrequency = <&can0>,"spi-max-frequency:0";
  18281. + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
  18282. + };
  18283. +};
  18284. diff --git a/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
  18285. new file mode 100644
  18286. index 000000000000..0a8dd576818e
  18287. --- /dev/null
  18288. +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
  18289. @@ -0,0 +1,73 @@
  18290. +/*
  18291. + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
  18292. + */
  18293. +
  18294. +/dts-v1/;
  18295. +/plugin/;
  18296. +
  18297. +/ {
  18298. + compatible = "brcm,bcm2835";
  18299. + /* disable spi-dev for spi0.1 */
  18300. + fragment@0 {
  18301. + target = <&spi0>;
  18302. + __overlay__ {
  18303. + status = "okay";
  18304. + };
  18305. + };
  18306. +
  18307. + fragment@1 {
  18308. + target = <&spidev1>;
  18309. + __overlay__ {
  18310. + status = "disabled";
  18311. + };
  18312. + };
  18313. +
  18314. + /* the interrupt pin of the can-controller */
  18315. + fragment@2 {
  18316. + target = <&gpio>;
  18317. + __overlay__ {
  18318. + can1_pins: can1_pins {
  18319. + brcm,pins = <25>;
  18320. + brcm,function = <0>; /* input */
  18321. + };
  18322. + };
  18323. + };
  18324. +
  18325. + /* the clock/oscillator of the can-controller */
  18326. + fragment@3 {
  18327. + target-path = "/";
  18328. + __overlay__ {
  18329. + /* external oscillator of mcp2515 on spi0.1 */
  18330. + can1_osc: can1_osc {
  18331. + compatible = "fixed-clock";
  18332. + #clock-cells = <0>;
  18333. + clock-frequency = <16000000>;
  18334. + };
  18335. + };
  18336. + };
  18337. +
  18338. + /* the spi config of the can-controller itself binding everything together */
  18339. + fragment@4 {
  18340. + target = <&spi0>;
  18341. + __overlay__ {
  18342. + /* needed to avoid dtc warning */
  18343. + #address-cells = <1>;
  18344. + #size-cells = <0>;
  18345. + can1: mcp2515@1 {
  18346. + reg = <1>;
  18347. + compatible = "microchip,mcp2515";
  18348. + pinctrl-names = "default";
  18349. + pinctrl-0 = <&can1_pins>;
  18350. + spi-max-frequency = <10000000>;
  18351. + interrupt-parent = <&gpio>;
  18352. + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
  18353. + clocks = <&can1_osc>;
  18354. + };
  18355. + };
  18356. + };
  18357. + __overrides__ {
  18358. + oscillator = <&can1_osc>,"clock-frequency:0";
  18359. + spimaxfrequency = <&can1>,"spi-max-frequency:0";
  18360. + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
  18361. + };
  18362. +};
  18363. diff --git a/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts b/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts
  18364. new file mode 100644
  18365. index 000000000000..65c861bbd340
  18366. --- /dev/null
  18367. +++ b/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts
  18368. @@ -0,0 +1,226 @@
  18369. +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
  18370. +
  18371. +/dts-v1/;
  18372. +/plugin/;
  18373. +
  18374. +#include <dt-bindings/gpio/gpio.h>
  18375. +#include <dt-bindings/interrupt-controller/irq.h>
  18376. +#include <dt-bindings/pinctrl/bcm2835.h>
  18377. +
  18378. +/ {
  18379. + compatible = "brcm,bcm2835";
  18380. +
  18381. + fragment@0 {
  18382. + target = <&spidev0>;
  18383. + __dormant__ {
  18384. + status = "disabled";
  18385. + };
  18386. + };
  18387. +
  18388. + fragment@1 {
  18389. + target = <&spidev1>;
  18390. + __dormant__ {
  18391. + status = "disabled";
  18392. + };
  18393. + };
  18394. +
  18395. + fragment@2 {
  18396. + target-path = "spi1/spidev@0";
  18397. + __dormant__ {
  18398. + status = "disabled";
  18399. + };
  18400. + };
  18401. +
  18402. + fragment@3 {
  18403. + target-path = "spi1/spidev@1";
  18404. + __dormant__ {
  18405. + status = "disabled";
  18406. + };
  18407. + };
  18408. +
  18409. + fragment@4 {
  18410. + target-path = "spi1/spidev@2";
  18411. + __dormant__ {
  18412. + status = "disabled";
  18413. + };
  18414. + };
  18415. +
  18416. + fragment@5 {
  18417. + target-path = "spi2/spidev@0";
  18418. + __dormant__ {
  18419. + status = "disabled";
  18420. + };
  18421. + };
  18422. +
  18423. + fragment@6 {
  18424. + target-path = "spi2/spidev@1";
  18425. + __dormant__ {
  18426. + status = "disabled";
  18427. + };
  18428. + };
  18429. +
  18430. + fragment@7 {
  18431. + target-path = "spi2/spidev@2";
  18432. + __dormant__ {
  18433. + status = "disabled";
  18434. + };
  18435. + };
  18436. +
  18437. + fragment@8 {
  18438. + target = <&gpio>;
  18439. + __overlay__ {
  18440. + mcp251xfd_pins: mcp251xfd_pins {
  18441. + brcm,pins = <25>;
  18442. + brcm,function = <BCM2835_FSEL_GPIO_IN>;
  18443. + };
  18444. + };
  18445. + };
  18446. +
  18447. + fragment@9 {
  18448. + target-path = "/clocks";
  18449. + __overlay__ {
  18450. + clk_mcp251xfd_osc: mcp251xfd-osc {
  18451. + #clock-cells = <0>;
  18452. + compatible = "fixed-clock";
  18453. + clock-frequency = <40000000>;
  18454. + };
  18455. + };
  18456. + };
  18457. +
  18458. + mcp251xfd_frag: fragment@10 {
  18459. + target = <&spi0>;
  18460. + __overlay__ {
  18461. + status = "okay";
  18462. + #address-cells = <1>;
  18463. + #size-cells = <0>;
  18464. +
  18465. + mcp251xfd: mcp251xfd@0 {
  18466. + compatible = "microchip,mcp251xfd";
  18467. + reg = <0>;
  18468. + pinctrl-names = "default";
  18469. + pinctrl-0 = <&mcp251xfd_pins>;
  18470. + spi-max-frequency = <20000000>;
  18471. + interrupt-parent = <&gpio>;
  18472. + interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
  18473. + clocks = <&clk_mcp251xfd_osc>;
  18474. + };
  18475. + };
  18476. + };
  18477. +
  18478. + fragment@11 {
  18479. + target = <&mcp251xfd>;
  18480. + mcp251xfd_rx_int_gpios: __dormant__ {
  18481. + microchip,rx-int-gpios = <&gpio 255 GPIO_ACTIVE_LOW>;
  18482. + };
  18483. + };
  18484. +
  18485. + fragment@12 {
  18486. + target = <&gpio>;
  18487. + __dormant__ {
  18488. + mcp251xfd_xceiver_pins: mcp251xfd_xceiver_pins {
  18489. + brcm,pins = <255>;
  18490. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  18491. + };
  18492. + };
  18493. + };
  18494. +
  18495. + fragment@13 {
  18496. + target-path = "/";
  18497. + __dormant__ {
  18498. + reg_mcp251xfd_xceiver: reg_mcp251xfd_xceiver {
  18499. + compatible = "regulator-fixed";
  18500. + regulator-name = "mcp251xfd_xceiver";
  18501. + regulator-min-microvolt = <3300000>;
  18502. + regulator-max-microvolt = <3300000>;
  18503. + gpio = <&gpio 4 GPIO_ACTIVE_HIGH>;
  18504. + pinctrl-names = "default";
  18505. + pinctrl-0 = <&mcp251xfd_xceiver_pins>;
  18506. + };
  18507. + };
  18508. + };
  18509. +
  18510. + fragment@14 {
  18511. + target = <&mcp251xfd>;
  18512. + __dormant__ {
  18513. + xceiver-supply = <&reg_mcp251xfd_xceiver>;
  18514. + };
  18515. + };
  18516. +
  18517. + __overrides__ {
  18518. + spi0-0 = <0>, "+0",
  18519. + <&mcp251xfd_frag>, "target:0=", <&spi0>,
  18520. + <&mcp251xfd>, "reg:0=0",
  18521. + <&mcp251xfd_pins>, "name=mcp251xfd_spi0_0_pins",
  18522. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi0-0-osc",
  18523. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi0_0_xceiver_pins",
  18524. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi0-0-xceiver",
  18525. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi0-0-xceiver";
  18526. + spi0-1 = <0>, "+1",
  18527. + <&mcp251xfd_frag>, "target:0=", <&spi0>,
  18528. + <&mcp251xfd>, "reg:0=1",
  18529. + <&mcp251xfd_pins>, "name=mcp251xfd_spi0_1_pins",
  18530. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi0-1-osc",
  18531. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi0_1_xceiver_pins",
  18532. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi0-1-xceiver",
  18533. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi0-1-xceiver";
  18534. + spi1-0 = <0>, "+2",
  18535. + <&mcp251xfd_frag>, "target:0=", <&spi1>,
  18536. + <&mcp251xfd>, "reg:0=0",
  18537. + <&mcp251xfd_pins>, "name=mcp251xfd_spi1_0_pins",
  18538. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi1-0-osc",
  18539. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi1_0_xceiver_pins",
  18540. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi1-0-xceiver",
  18541. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi1-0-xceiver";
  18542. + spi1-1 = <0>, "+3",
  18543. + <&mcp251xfd_frag>, "target:0=", <&spi1>,
  18544. + <&mcp251xfd>, "reg:0=1",
  18545. + <&mcp251xfd_pins>, "name=mcp251xfd_spi1_1_pins",
  18546. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi1-1-osc",
  18547. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi1_1_xceiver_pins",
  18548. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi1-1-xceiver",
  18549. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi1-1-xceiver";
  18550. + spi1-2 = <0>, "+4",
  18551. + <&mcp251xfd_frag>, "target:0=", <&spi1>,
  18552. + <&mcp251xfd>, "reg:0=2",
  18553. + <&mcp251xfd_pins>, "name=mcp251xfd_spi1_2_pins",
  18554. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi1-2-osc",
  18555. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi1_2_xceiver_pins",
  18556. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi1-2-xceiver",
  18557. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi1-2-xceiver";
  18558. + spi2-0 = <0>, "+5",
  18559. + <&mcp251xfd_frag>, "target:0=", <&spi2>,
  18560. + <&mcp251xfd>, "reg:0=0",
  18561. + <&mcp251xfd_pins>, "name=mcp251xfd_spi2_0_pins",
  18562. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi2-0-osc",
  18563. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi2_0_xceiver_pins",
  18564. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi2-0-xceiver",
  18565. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi2-0-xceiver";
  18566. + spi2-1 = <0>, "+6",
  18567. + <&mcp251xfd_frag>, "target:0=", <&spi2>,
  18568. + <&mcp251xfd>, "reg:0=1",
  18569. + <&mcp251xfd_pins>, "name=mcp251xfd_spi2_1_pins",
  18570. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi2-1-osc",
  18571. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi2_1_xceiver_pins",
  18572. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi2-1-xceiver",
  18573. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi2-1-xceiver";
  18574. + spi2-2 = <0>, "+7",
  18575. + <&mcp251xfd_frag>, "target:0=", <&spi2>,
  18576. + <&mcp251xfd>, "reg:0=2",
  18577. + <&mcp251xfd_pins>, "name=mcp251xfd_spi2_2_pins",
  18578. + <&clk_mcp251xfd_osc>, "name=mcp251xfd-spi2-2-osc",
  18579. + <&mcp251xfd_xceiver_pins>, "name=mcp251xfd_spi2_2_xceiver_pins",
  18580. + <&reg_mcp251xfd_xceiver>, "name=reg-mcp251xfd-spi2-2-xceiver",
  18581. + <&reg_mcp251xfd_xceiver>, "regulator-name=mcp251xfd-spi2-2-xceiver";
  18582. + oscillator = <&clk_mcp251xfd_osc>, "clock-frequency:0";
  18583. + speed = <&mcp251xfd>, "spi-max-frequency:0";
  18584. + interrupt = <&mcp251xfd_pins>, "brcm,pins:0",
  18585. + <&mcp251xfd>, "interrupts:0";
  18586. + rx_interrupt = <0>, "+11",
  18587. + <&mcp251xfd_pins>, "brcm,pins:4",
  18588. + <&mcp251xfd_rx_int_gpios>, "microchip,rx-int-gpios:4";
  18589. + xceiver_enable = <0>, "+12+13+14",
  18590. + <&mcp251xfd_xceiver_pins>, "brcm,pins:0",
  18591. + <&reg_mcp251xfd_xceiver>, "gpio:4";
  18592. + xceiver_active_high = <&reg_mcp251xfd_xceiver>, "enable-active-high?";
  18593. + };
  18594. +};
  18595. diff --git a/arch/arm/boot/dts/overlays/mcp3008-overlay.dts b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
  18596. new file mode 100755
  18597. index 000000000000..957fdb9310af
  18598. --- /dev/null
  18599. +++ b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
  18600. @@ -0,0 +1,205 @@
  18601. +/*
  18602. + * Device tree overlay for Microchip mcp3008 10-Bit A/D Converters
  18603. + */
  18604. +
  18605. +/dts-v1/;
  18606. +/plugin/;
  18607. +
  18608. +/ {
  18609. + compatible = "brcm,bcm2835";
  18610. +
  18611. + fragment@0 {
  18612. + target = <&spidev0>;
  18613. + __dormant__ {
  18614. + status = "disabled";
  18615. + };
  18616. + };
  18617. +
  18618. + fragment@1 {
  18619. + target = <&spidev1>;
  18620. + __dormant__ {
  18621. + status = "disabled";
  18622. + };
  18623. + };
  18624. +
  18625. + fragment@2 {
  18626. + target-path = "spi1/spidev@0";
  18627. + __dormant__ {
  18628. + status = "disabled";
  18629. + };
  18630. + };
  18631. +
  18632. + fragment@3 {
  18633. + target-path = "spi1/spidev@1";
  18634. + __dormant__ {
  18635. + status = "disabled";
  18636. + };
  18637. + };
  18638. +
  18639. + fragment@4 {
  18640. + target-path = "spi1/spidev@2";
  18641. + __dormant__ {
  18642. + status = "disabled";
  18643. + };
  18644. + };
  18645. +
  18646. + fragment@5 {
  18647. + target-path = "spi2/spidev@0";
  18648. + __dormant__ {
  18649. + status = "disabled";
  18650. + };
  18651. + };
  18652. +
  18653. + fragment@6 {
  18654. + target-path = "spi2/spidev@1";
  18655. + __dormant__ {
  18656. + status = "disabled";
  18657. + };
  18658. + };
  18659. +
  18660. + fragment@7 {
  18661. + target-path = "spi2/spidev@2";
  18662. + __dormant__ {
  18663. + status = "disabled";
  18664. + };
  18665. + };
  18666. +
  18667. + fragment@8 {
  18668. + target = <&spi0>;
  18669. + __dormant__ {
  18670. + status = "okay";
  18671. + #address-cells = <1>;
  18672. + #size-cells = <0>;
  18673. +
  18674. + mcp3008_00: mcp3008@0 {
  18675. + compatible = "microchip,mcp3008";
  18676. + reg = <0>;
  18677. + spi-max-frequency = <1600000>;
  18678. + };
  18679. + };
  18680. + };
  18681. +
  18682. + fragment@9 {
  18683. + target = <&spi0>;
  18684. + __dormant__ {
  18685. + status = "okay";
  18686. + #address-cells = <1>;
  18687. + #size-cells = <0>;
  18688. +
  18689. + mcp3008_01: mcp3008@1 {
  18690. + compatible = "microchip,mcp3008";
  18691. + reg = <1>;
  18692. + spi-max-frequency = <1600000>;
  18693. + };
  18694. + };
  18695. + };
  18696. +
  18697. + fragment@10 {
  18698. + target = <&spi1>;
  18699. + __dormant__ {
  18700. + status = "okay";
  18701. + #address-cells = <1>;
  18702. + #size-cells = <0>;
  18703. +
  18704. + mcp3008_10: mcp3008@0 {
  18705. + compatible = "microchip,mcp3008";
  18706. + reg = <0>;
  18707. + spi-max-frequency = <1600000>;
  18708. + };
  18709. + };
  18710. + };
  18711. +
  18712. + fragment@11 {
  18713. + target = <&spi1>;
  18714. + __dormant__ {
  18715. + status = "okay";
  18716. + #address-cells = <1>;
  18717. + #size-cells = <0>;
  18718. +
  18719. + mcp3008_11: mcp3008@1 {
  18720. + compatible = "microchip,mcp3008";
  18721. + reg = <1>;
  18722. + spi-max-frequency = <1600000>;
  18723. + };
  18724. + };
  18725. + };
  18726. +
  18727. + fragment@12 {
  18728. + target = <&spi1>;
  18729. + __dormant__ {
  18730. + status = "okay";
  18731. + #address-cells = <1>;
  18732. + #size-cells = <0>;
  18733. +
  18734. + mcp3008_12: mcp3008@2 {
  18735. + compatible = "microchip,mcp3008";
  18736. + reg = <2>;
  18737. + spi-max-frequency = <1600000>;
  18738. + };
  18739. + };
  18740. + };
  18741. +
  18742. + fragment@13 {
  18743. + target = <&spi2>;
  18744. + __dormant__ {
  18745. + status = "okay";
  18746. + #address-cells = <1>;
  18747. + #size-cells = <0>;
  18748. +
  18749. + mcp3008_20: mcp3008@0 {
  18750. + compatible = "microchip,mcp3008";
  18751. + reg = <0>;
  18752. + spi-max-frequency = <1600000>;
  18753. + };
  18754. + };
  18755. + };
  18756. +
  18757. + fragment@14 {
  18758. + target = <&spi2>;
  18759. + __dormant__ {
  18760. + status = "okay";
  18761. + #address-cells = <1>;
  18762. + #size-cells = <0>;
  18763. +
  18764. + mcp3008_21: mcp3008@1 {
  18765. + compatible = "microchip,mcp3008";
  18766. + reg = <1>;
  18767. + spi-max-frequency = <1600000>;
  18768. + };
  18769. + };
  18770. + };
  18771. +
  18772. + fragment@15 {
  18773. + target = <&spi2>;
  18774. + __dormant__ {
  18775. + status = "okay";
  18776. + #address-cells = <1>;
  18777. + #size-cells = <0>;
  18778. +
  18779. + mcp3008_22: mcp3008@2 {
  18780. + compatible = "microchip,mcp3008";
  18781. + reg = <2>;
  18782. + spi-max-frequency = <1600000>;
  18783. + };
  18784. + };
  18785. + };
  18786. +
  18787. + __overrides__ {
  18788. + spi0-0-present = <0>, "+0+8";
  18789. + spi0-1-present = <0>, "+1+9";
  18790. + spi1-0-present = <0>, "+2+10";
  18791. + spi1-1-present = <0>, "+3+11";
  18792. + spi1-2-present = <0>, "+4+12";
  18793. + spi2-0-present = <0>, "+5+13";
  18794. + spi2-1-present = <0>, "+6+14";
  18795. + spi2-2-present = <0>, "+7+15";
  18796. + spi0-0-speed = <&mcp3008_00>, "spi-max-frequency:0";
  18797. + spi0-1-speed = <&mcp3008_01>, "spi-max-frequency:0";
  18798. + spi1-0-speed = <&mcp3008_10>, "spi-max-frequency:0";
  18799. + spi1-1-speed = <&mcp3008_11>, "spi-max-frequency:0";
  18800. + spi1-2-speed = <&mcp3008_12>, "spi-max-frequency:0";
  18801. + spi2-0-speed = <&mcp3008_20>, "spi-max-frequency:0";
  18802. + spi2-1-speed = <&mcp3008_21>, "spi-max-frequency:0";
  18803. + spi2-2-speed = <&mcp3008_22>, "spi-max-frequency:0";
  18804. + };
  18805. +};
  18806. diff --git a/arch/arm/boot/dts/overlays/mcp3202-overlay.dts b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
  18807. new file mode 100755
  18808. index 000000000000..8e4e9f60f285
  18809. --- /dev/null
  18810. +++ b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
  18811. @@ -0,0 +1,205 @@
  18812. +/*
  18813. + * Device tree overlay for Microchip mcp3202 12-Bit A/D Converters
  18814. + */
  18815. +
  18816. +/dts-v1/;
  18817. +/plugin/;
  18818. +
  18819. +/ {
  18820. + compatible = "brcm,bcm2835";
  18821. +
  18822. + fragment@0 {
  18823. + target = <&spidev0>;
  18824. + __dormant__ {
  18825. + status = "disabled";
  18826. + };
  18827. + };
  18828. +
  18829. + fragment@1 {
  18830. + target = <&spidev1>;
  18831. + __dormant__ {
  18832. + status = "disabled";
  18833. + };
  18834. + };
  18835. +
  18836. + fragment@2 {
  18837. + target-path = "spi1/spidev@0";
  18838. + __dormant__ {
  18839. + status = "disabled";
  18840. + };
  18841. + };
  18842. +
  18843. + fragment@3 {
  18844. + target-path = "spi1/spidev@1";
  18845. + __dormant__ {
  18846. + status = "disabled";
  18847. + };
  18848. + };
  18849. +
  18850. + fragment@4 {
  18851. + target-path = "spi1/spidev@2";
  18852. + __dormant__ {
  18853. + status = "disabled";
  18854. + };
  18855. + };
  18856. +
  18857. + fragment@5 {
  18858. + target-path = "spi2/spidev@0";
  18859. + __dormant__ {
  18860. + status = "disabled";
  18861. + };
  18862. + };
  18863. +
  18864. + fragment@6 {
  18865. + target-path = "spi2/spidev@1";
  18866. + __dormant__ {
  18867. + status = "disabled";
  18868. + };
  18869. + };
  18870. +
  18871. + fragment@7 {
  18872. + target-path = "spi2/spidev@2";
  18873. + __dormant__ {
  18874. + status = "disabled";
  18875. + };
  18876. + };
  18877. +
  18878. + fragment@8 {
  18879. + target = <&spi0>;
  18880. + __dormant__ {
  18881. + status = "okay";
  18882. + #address-cells = <1>;
  18883. + #size-cells = <0>;
  18884. +
  18885. + mcp3202_00: mcp3202@0 {
  18886. + compatible = "mcp3202";
  18887. + reg = <0>;
  18888. + spi-max-frequency = <1600000>;
  18889. + };
  18890. + };
  18891. + };
  18892. +
  18893. + fragment@9 {
  18894. + target = <&spi0>;
  18895. + __dormant__ {
  18896. + status = "okay";
  18897. + #address-cells = <1>;
  18898. + #size-cells = <0>;
  18899. +
  18900. + mcp3202_01: mcp3202@1 {
  18901. + compatible = "mcp3202";
  18902. + reg = <1>;
  18903. + spi-max-frequency = <1600000>;
  18904. + };
  18905. + };
  18906. + };
  18907. +
  18908. + fragment@10 {
  18909. + target = <&spi1>;
  18910. + __dormant__ {
  18911. + status = "okay";
  18912. + #address-cells = <1>;
  18913. + #size-cells = <0>;
  18914. +
  18915. + mcp3202_10: mcp3202@0 {
  18916. + compatible = "mcp3202";
  18917. + reg = <0>;
  18918. + spi-max-frequency = <1600000>;
  18919. + };
  18920. + };
  18921. + };
  18922. +
  18923. + fragment@11 {
  18924. + target = <&spi1>;
  18925. + __dormant__ {
  18926. + status = "okay";
  18927. + #address-cells = <1>;
  18928. + #size-cells = <0>;
  18929. +
  18930. + mcp3202_11: mcp3202@1 {
  18931. + compatible = "mcp3202";
  18932. + reg = <1>;
  18933. + spi-max-frequency = <1600000>;
  18934. + };
  18935. + };
  18936. + };
  18937. +
  18938. + fragment@12 {
  18939. + target = <&spi1>;
  18940. + __dormant__ {
  18941. + status = "okay";
  18942. + #address-cells = <1>;
  18943. + #size-cells = <0>;
  18944. +
  18945. + mcp3202_12: mcp3202@2 {
  18946. + compatible = "mcp3202";
  18947. + reg = <2>;
  18948. + spi-max-frequency = <1600000>;
  18949. + };
  18950. + };
  18951. + };
  18952. +
  18953. + fragment@13 {
  18954. + target = <&spi2>;
  18955. + __dormant__ {
  18956. + status = "okay";
  18957. + #address-cells = <1>;
  18958. + #size-cells = <0>;
  18959. +
  18960. + mcp3202_20: mcp3202@0 {
  18961. + compatible = "mcp3202";
  18962. + reg = <0>;
  18963. + spi-max-frequency = <1600000>;
  18964. + };
  18965. + };
  18966. + };
  18967. +
  18968. + fragment@14 {
  18969. + target = <&spi2>;
  18970. + __dormant__ {
  18971. + status = "okay";
  18972. + #address-cells = <1>;
  18973. + #size-cells = <0>;
  18974. +
  18975. + mcp3202_21: mcp3202@1 {
  18976. + compatible = "mcp3202";
  18977. + reg = <1>;
  18978. + spi-max-frequency = <1600000>;
  18979. + };
  18980. + };
  18981. + };
  18982. +
  18983. + fragment@15 {
  18984. + target = <&spi2>;
  18985. + __dormant__ {
  18986. + status = "okay";
  18987. + #address-cells = <1>;
  18988. + #size-cells = <0>;
  18989. +
  18990. + mcp3202_22: mcp3202@2 {
  18991. + compatible = "mcp3202";
  18992. + reg = <2>;
  18993. + spi-max-frequency = <1600000>;
  18994. + };
  18995. + };
  18996. + };
  18997. +
  18998. + __overrides__ {
  18999. + spi0-0-present = <0>, "+0+8";
  19000. + spi0-1-present = <0>, "+1+9";
  19001. + spi1-0-present = <0>, "+2+10";
  19002. + spi1-1-present = <0>, "+3+11";
  19003. + spi1-2-present = <0>, "+4+12";
  19004. + spi2-0-present = <0>, "+5+13";
  19005. + spi2-1-present = <0>, "+6+14";
  19006. + spi2-2-present = <0>, "+7+15";
  19007. + spi0-0-speed = <&mcp3202_00>, "spi-max-frequency:0";
  19008. + spi0-1-speed = <&mcp3202_01>, "spi-max-frequency:0";
  19009. + spi1-0-speed = <&mcp3202_10>, "spi-max-frequency:0";
  19010. + spi1-1-speed = <&mcp3202_11>, "spi-max-frequency:0";
  19011. + spi1-2-speed = <&mcp3202_12>, "spi-max-frequency:0";
  19012. + spi2-0-speed = <&mcp3202_20>, "spi-max-frequency:0";
  19013. + spi2-1-speed = <&mcp3202_21>, "spi-max-frequency:0";
  19014. + spi2-2-speed = <&mcp3202_22>, "spi-max-frequency:0";
  19015. + };
  19016. +};
  19017. diff --git a/arch/arm/boot/dts/overlays/mcp342x-overlay.dts b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
  19018. new file mode 100644
  19019. index 000000000000..714eca5a4b5e
  19020. --- /dev/null
  19021. +++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
  19022. @@ -0,0 +1,164 @@
  19023. +// Overlay for MCP3421-8 ADCs from Microchip Semiconductor
  19024. +
  19025. +/dts-v1/;
  19026. +/plugin/;
  19027. +
  19028. +/ {
  19029. + compatible = "brcm,bcm2835";
  19030. +
  19031. + fragment@0 {
  19032. + target = <&i2c1>;
  19033. + __dormant__ {
  19034. + #address-cells = <1>;
  19035. + #size-cells = <0>;
  19036. +
  19037. + status = "okay";
  19038. +
  19039. + mcp3421: mcp@68 {
  19040. + reg = <0x68>;
  19041. + compatible = "microchip,mcp3421";
  19042. +
  19043. + status = "okay";
  19044. + };
  19045. + };
  19046. + };
  19047. +
  19048. + fragment@1 {
  19049. + target = <&i2c1>;
  19050. + __dormant__ {
  19051. + #address-cells = <1>;
  19052. + #size-cells = <0>;
  19053. +
  19054. + status = "okay";
  19055. +
  19056. + mcp3422: mcp@68 {
  19057. + reg = <0x68>;
  19058. + compatible = "microchip,mcp3422";
  19059. +
  19060. + status = "okay";
  19061. + };
  19062. + };
  19063. + };
  19064. +
  19065. + fragment@2 {
  19066. + target = <&i2c1>;
  19067. + __dormant__ {
  19068. + #address-cells = <1>;
  19069. + #size-cells = <0>;
  19070. +
  19071. + status = "okay";
  19072. +
  19073. + mcp3423: mcp@68 {
  19074. + reg = <0x68>;
  19075. + compatible = "microchip,mcp3423";
  19076. +
  19077. + status = "okay";
  19078. + };
  19079. + };
  19080. + };
  19081. +
  19082. + fragment@3 {
  19083. + target = <&i2c1>;
  19084. + __dormant__ {
  19085. + #address-cells = <1>;
  19086. + #size-cells = <0>;
  19087. +
  19088. + status = "okay";
  19089. +
  19090. + mcp3424: mcp@68 {
  19091. + reg = <0x68>;
  19092. + compatible = "microchip,mcp3424";
  19093. +
  19094. + status = "okay";
  19095. + };
  19096. + };
  19097. + };
  19098. +
  19099. + fragment@4 {
  19100. + target = <&i2c1>;
  19101. + __dormant__ {
  19102. + #address-cells = <1>;
  19103. + #size-cells = <0>;
  19104. +
  19105. + status = "okay";
  19106. +
  19107. + mcp3425: mcp@68 {
  19108. + reg = <0x68>;
  19109. + compatible = "microchip,mcp3425","mcp3425";
  19110. +
  19111. + status = "okay";
  19112. + };
  19113. + };
  19114. + };
  19115. +
  19116. + fragment@5 {
  19117. + target = <&i2c1>;
  19118. + __dormant__ {
  19119. + #address-cells = <1>;
  19120. + #size-cells = <0>;
  19121. +
  19122. + status = "okay";
  19123. +
  19124. + mcp3426: mcp@68 {
  19125. + reg = <0x68>;
  19126. + compatible = "microchip,mcp3426";
  19127. +
  19128. + status = "okay";
  19129. + };
  19130. + };
  19131. + };
  19132. +
  19133. + fragment@6 {
  19134. + target = <&i2c1>;
  19135. + __dormant__ {
  19136. + #address-cells = <1>;
  19137. + #size-cells = <0>;
  19138. +
  19139. + status = "okay";
  19140. +
  19141. + mcp3427: mcp@68 {
  19142. + reg = <0x68>;
  19143. + compatible = "microchip,mcp3427";
  19144. +
  19145. + status = "okay";
  19146. + };
  19147. + };
  19148. + };
  19149. +
  19150. + fragment@7 {
  19151. + target = <&i2c1>;
  19152. + __dormant__ {
  19153. + #address-cells = <1>;
  19154. + #size-cells = <0>;
  19155. +
  19156. + status = "okay";
  19157. +
  19158. + mcp3428: mcp@68 {
  19159. + reg = <0x68>;
  19160. + compatible = "microchip,mcp3428";
  19161. +
  19162. + status = "okay";
  19163. + };
  19164. + };
  19165. + };
  19166. +
  19167. + __overrides__ {
  19168. + addr = <&mcp3421>,"reg:0",
  19169. + <&mcp3422>,"reg:0",
  19170. + <&mcp3423>,"reg:0",
  19171. + <&mcp3424>,"reg:0",
  19172. + <&mcp3425>,"reg:0",
  19173. + <&mcp3426>,"reg:0",
  19174. + <&mcp3427>,"reg:0",
  19175. + <&mcp3428>,"reg:0";
  19176. + mcp3421 = <0>,"=0";
  19177. + mcp3422 = <0>,"=1";
  19178. + mcp3423 = <0>,"=2";
  19179. + mcp3424 = <0>,"=3";
  19180. + mcp3425 = <0>,"=4";
  19181. + mcp3426 = <0>,"=5";
  19182. + mcp3427 = <0>,"=6";
  19183. + mcp3428 = <0>,"=7";
  19184. + };
  19185. +};
  19186. +
  19187. diff --git a/arch/arm/boot/dts/overlays/media-center-overlay.dts b/arch/arm/boot/dts/overlays/media-center-overlay.dts
  19188. new file mode 100644
  19189. index 000000000000..1b56963f4f16
  19190. --- /dev/null
  19191. +++ b/arch/arm/boot/dts/overlays/media-center-overlay.dts
  19192. @@ -0,0 +1,134 @@
  19193. +/*
  19194. + * Device Tree overlay for Media Center HAT by Pi Supply
  19195. + *
  19196. + */
  19197. +
  19198. +/dts-v1/;
  19199. +/plugin/;
  19200. +
  19201. +/ {
  19202. + compatible = "brcm,bcm2835";
  19203. +
  19204. + fragment@0 {
  19205. + target = <&spi0>;
  19206. + __overlay__ {
  19207. + status = "okay";
  19208. +
  19209. + spidev@0{
  19210. + status = "disabled";
  19211. + };
  19212. +
  19213. + spidev@1{
  19214. + status = "disabled";
  19215. + };
  19216. + };
  19217. + };
  19218. +
  19219. + fragment@1 {
  19220. + target = <&gpio>;
  19221. + __overlay__ {
  19222. + rpi_display_pins: rpi_display_pins {
  19223. + brcm,pins = <12 23 24 25>;
  19224. + brcm,function = <1 1 1 0>; /* out out out in */
  19225. + brcm,pull = <0 0 0 2>; /* - - - up */
  19226. + };
  19227. + };
  19228. + };
  19229. +
  19230. + fragment@2 {
  19231. + target = <&spi0>;
  19232. + __overlay__ {
  19233. + /* needed to avoid dtc warning */
  19234. + #address-cells = <1>;
  19235. + #size-cells = <0>;
  19236. +
  19237. + rpidisplay: rpi-display@0{
  19238. + compatible = "ilitek,ili9341";
  19239. + reg = <0>;
  19240. + pinctrl-names = "default";
  19241. + pinctrl-0 = <&rpi_display_pins>;
  19242. +
  19243. + spi-max-frequency = <32000000>;
  19244. + rotate = <90>;
  19245. + bgr;
  19246. + fps = <30>;
  19247. + buswidth = <8>;
  19248. + reset-gpios = <&gpio 23 1>;
  19249. + dc-gpios = <&gpio 24 0>;
  19250. + led-gpios = <&gpio 12 0>;
  19251. + debug = <0>;
  19252. + };
  19253. +
  19254. + rpidisplay_ts: rpi-display-ts@1 {
  19255. + compatible = "ti,ads7846";
  19256. + reg = <1>;
  19257. +
  19258. + spi-max-frequency = <2000000>;
  19259. + interrupts = <25 2>; /* high-to-low edge triggered */
  19260. + interrupt-parent = <&gpio>;
  19261. + pendown-gpio = <&gpio 25 1>;
  19262. + ti,x-plate-ohms = /bits/ 16 <60>;
  19263. + ti,pressure-max = /bits/ 16 <255>;
  19264. + };
  19265. + };
  19266. + };
  19267. +
  19268. + fragment@3 {
  19269. + target-path = "/";
  19270. + __overlay__ {
  19271. + lirc_rpi: lirc_rpi {
  19272. + compatible = "rpi,lirc-rpi";
  19273. + pinctrl-names = "default";
  19274. + pinctrl-0 = <&lirc_pins>;
  19275. + status = "okay";
  19276. +
  19277. + // Override autodetection of IR receiver circuit
  19278. + // (0 = active high, 1 = active low, -1 = no override )
  19279. + rpi,sense = <0xffffffff>;
  19280. +
  19281. + // Software carrier
  19282. + // (0 = off, 1 = on)
  19283. + rpi,softcarrier = <1>;
  19284. +
  19285. + // Invert output
  19286. + // (0 = off, 1 = on)
  19287. + rpi,invert = <0>;
  19288. +
  19289. + // Enable debugging messages
  19290. + // (0 = off, 1 = on)
  19291. + rpi,debug = <0>;
  19292. + };
  19293. + };
  19294. + };
  19295. +
  19296. + fragment@4 {
  19297. + target = <&gpio>;
  19298. + __overlay__ {
  19299. + lirc_pins: lirc_pins {
  19300. + brcm,pins = <6 5>;
  19301. + brcm,function = <1 0>; // out in
  19302. + brcm,pull = <0 1>; // off down
  19303. + };
  19304. + };
  19305. + };
  19306. +
  19307. + __overrides__ {
  19308. + speed = <&rpidisplay>,"spi-max-frequency:0";
  19309. + rotate = <&rpidisplay>,"rotate:0";
  19310. + fps = <&rpidisplay>,"fps:0";
  19311. + debug = <&rpidisplay>,"debug:0",
  19312. + <&lirc_rpi>,"rpi,debug:0";
  19313. + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
  19314. + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
  19315. + backlight = <&rpidisplay>,"led-gpios:4",
  19316. + <&rpi_display_pins>,"brcm,pins:0";
  19317. +
  19318. + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
  19319. + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
  19320. + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
  19321. +
  19322. + sense = <&lirc_rpi>,"rpi,sense:0";
  19323. + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
  19324. + invert = <&lirc_rpi>,"rpi,invert:0";
  19325. + };
  19326. +};
  19327. diff --git a/arch/arm/boot/dts/overlays/merus-amp-overlay.dts b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
  19328. new file mode 100644
  19329. index 000000000000..4501fbdc253d
  19330. --- /dev/null
  19331. +++ b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
  19332. @@ -0,0 +1,60 @@
  19333. +// SPDX-License-Identifier: GPL-2.0-only
  19334. +// Definitions for Infineon Merus-Amp
  19335. +/dts-v1/;
  19336. +/plugin/;
  19337. +#include <dt-bindings/pinctrl/bcm2835.h>
  19338. +#include <dt-bindings/gpio/gpio.h>
  19339. +
  19340. +
  19341. +/ {
  19342. + compatible = "brcm,bcm2835";
  19343. +
  19344. + fragment@0 {
  19345. + target = <&i2s>;
  19346. + __overlay__ {
  19347. + status = "okay";
  19348. + };
  19349. + };
  19350. +
  19351. + fragment@1 {
  19352. + target = <&gpio>;
  19353. + __overlay__ {
  19354. + merus_amp_pins: merus_amp_pins {
  19355. + brcm,pins = <23>;
  19356. + brcm,function = <0>; /* in */
  19357. + brcm,pull = <2>; /* up */
  19358. + };
  19359. + };
  19360. + };
  19361. +
  19362. + fragment@2 {
  19363. + target = <&i2c1>;
  19364. + __overlay__ {
  19365. + #address-cells = <1>;
  19366. + #size-cells = <0>;
  19367. + status = "okay";
  19368. +
  19369. + merus_amp: ma120x0p@20 {
  19370. + #sound-dai-cells = <0>;
  19371. + compatible = "ma,ma120x0p";
  19372. + reg = <0x20>;
  19373. + status = "okay";
  19374. + pinctrl-names = "default";
  19375. + pinctrl-0 = <&merus_amp_pins>;
  19376. + enable_gp-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
  19377. + mute_gp-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
  19378. + booster_gp-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
  19379. + error_gp-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
  19380. + };
  19381. + };
  19382. + };
  19383. +
  19384. + fragment@3 {
  19385. + target = <&sound>;
  19386. + __overlay__ {
  19387. + compatible = "merus,merus-amp";
  19388. + i2s-controller = <&i2s>;
  19389. + status = "okay";
  19390. + };
  19391. + };
  19392. +};
  19393. diff --git a/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
  19394. new file mode 100644
  19395. index 000000000000..f7e44d29e101
  19396. --- /dev/null
  19397. +++ b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
  19398. @@ -0,0 +1,36 @@
  19399. +/dts-v1/;
  19400. +/plugin/;
  19401. +
  19402. +#include <dt-bindings/clock/bcm2835.h>
  19403. +
  19404. +/*
  19405. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19406. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19407. + * 38.4kHz results in an actual 31.25kHz.
  19408. + *
  19409. + * 48000000*38400/31250 = 58982400
  19410. + */
  19411. +
  19412. +/{
  19413. + compatible = "brcm,bcm2835";
  19414. +
  19415. + fragment@0 {
  19416. + target-path = "/";
  19417. + __overlay__ {
  19418. + midi_clk: midi_clk {
  19419. + compatible = "fixed-clock";
  19420. + #clock-cells = <0>;
  19421. + clock-output-names = "uart0_pclk";
  19422. + clock-frequency = <58982400>;
  19423. + };
  19424. + };
  19425. + };
  19426. +
  19427. + fragment@1 {
  19428. + target = <&uart0>;
  19429. + __overlay__ {
  19430. + clocks = <&midi_clk>,
  19431. + <&clocks BCM2835_CLOCK_VPU>;
  19432. + };
  19433. + };
  19434. +};
  19435. diff --git a/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
  19436. new file mode 100644
  19437. index 000000000000..e0bc410acbff
  19438. --- /dev/null
  19439. +++ b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
  19440. @@ -0,0 +1,43 @@
  19441. +/dts-v1/;
  19442. +/plugin/;
  19443. +
  19444. +#include <dt-bindings/clock/bcm2835-aux.h>
  19445. +
  19446. +/*
  19447. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19448. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19449. + * 38.4kHz results in an actual 31.25kHz.
  19450. + *
  19451. + * 48000000*38400/31250 = 58982400
  19452. + */
  19453. +
  19454. +/{
  19455. + compatible = "brcm,bcm2835";
  19456. +
  19457. + fragment@0 {
  19458. + target-path = "/clocks";
  19459. + __overlay__ {
  19460. + midi_clk: clock@5 {
  19461. + compatible = "fixed-factor-clock";
  19462. + #clock-cells = <0>;
  19463. + clocks = <&aux BCM2835_AUX_CLOCK_UART>;
  19464. + clock-mult = <38400>;
  19465. + clock-div = <31250>;
  19466. + };
  19467. + };
  19468. + };
  19469. +
  19470. + fragment@1 {
  19471. + target = <&uart1>;
  19472. + __overlay__ {
  19473. + clocks = <&midi_clk>;
  19474. + };
  19475. + };
  19476. +
  19477. + fragment@2 {
  19478. + target = <&aux>;
  19479. + __overlay__ {
  19480. + clock-output-names = "aux_uart", "aux_spi1", "aux_spi2";
  19481. + };
  19482. + };
  19483. +};
  19484. diff --git a/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
  19485. new file mode 100644
  19486. index 000000000000..66f3092e9a74
  19487. --- /dev/null
  19488. +++ b/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
  19489. @@ -0,0 +1,37 @@
  19490. +/dts-v1/;
  19491. +/plugin/;
  19492. +
  19493. +#include <dt-bindings/clock/bcm2835.h>
  19494. +
  19495. +/*
  19496. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19497. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19498. + * 38.4kHz results in an actual 31.25kHz.
  19499. + *
  19500. + * 48000000*38400/31250 = 58982400
  19501. + */
  19502. +
  19503. +/{
  19504. + compatible = "brcm,bcm2835";
  19505. +
  19506. + fragment@0 {
  19507. + target-path = "/";
  19508. + __overlay__ {
  19509. + midi_clk: midi_clk2 {
  19510. + compatible = "fixed-clock";
  19511. + #clock-cells = <0>;
  19512. + clock-output-names = "uart2_pclk";
  19513. + clock-frequency = <58982400>;
  19514. + };
  19515. + };
  19516. + };
  19517. +
  19518. + fragment@1 {
  19519. + target = <&uart2>;
  19520. + __overlay__ {
  19521. + clocks = <&midi_clk>,
  19522. + <&clocks BCM2835_CLOCK_VPU>;
  19523. + };
  19524. + };
  19525. +};
  19526. +
  19527. diff --git a/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
  19528. new file mode 100644
  19529. index 000000000000..55c6cb94f963
  19530. --- /dev/null
  19531. +++ b/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
  19532. @@ -0,0 +1,38 @@
  19533. +/dts-v1/;
  19534. +/plugin/;
  19535. +
  19536. +#include <dt-bindings/clock/bcm2835.h>
  19537. +
  19538. +/*
  19539. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19540. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19541. + * 38.4kHz results in an actual 31.25kHz.
  19542. + *
  19543. + * 48000000*38400/31250 = 58982400
  19544. + */
  19545. +
  19546. +/{
  19547. + compatible = "brcm,bcm2835";
  19548. +
  19549. + fragment@0 {
  19550. + target-path = "/";
  19551. + __overlay__ {
  19552. + midi_clk: midi_clk3 {
  19553. + compatible = "fixed-clock";
  19554. + #clock-cells = <0>;
  19555. + clock-output-names = "uart3_pclk";
  19556. + clock-frequency = <58982400>;
  19557. + };
  19558. + };
  19559. + };
  19560. +
  19561. + fragment@1 {
  19562. + target = <&uart3>;
  19563. + __overlay__ {
  19564. + clocks = <&midi_clk>,
  19565. + <&clocks BCM2835_CLOCK_VPU>;
  19566. + };
  19567. + };
  19568. +};
  19569. +
  19570. +
  19571. diff --git a/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
  19572. new file mode 100644
  19573. index 000000000000..5819df1a6b2e
  19574. --- /dev/null
  19575. +++ b/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
  19576. @@ -0,0 +1,38 @@
  19577. +/dts-v1/;
  19578. +/plugin/;
  19579. +
  19580. +#include <dt-bindings/clock/bcm2835.h>
  19581. +
  19582. +/*
  19583. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19584. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19585. + * 38.4kHz results in an actual 31.25kHz.
  19586. + *
  19587. + * 48000000*38400/31250 = 58982400
  19588. + */
  19589. +
  19590. +/{
  19591. + compatible = "brcm,bcm2835";
  19592. +
  19593. + fragment@0 {
  19594. + target-path = "/";
  19595. + __overlay__ {
  19596. + midi_clk: midi_clk4 {
  19597. + compatible = "fixed-clock";
  19598. + #clock-cells = <0>;
  19599. + clock-output-names = "uart4_pclk";
  19600. + clock-frequency = <58982400>;
  19601. + };
  19602. + };
  19603. + };
  19604. +
  19605. + fragment@1 {
  19606. + target = <&uart4>;
  19607. + __overlay__ {
  19608. + clocks = <&midi_clk>,
  19609. + <&clocks BCM2835_CLOCK_VPU>;
  19610. + };
  19611. + };
  19612. +};
  19613. +
  19614. +
  19615. diff --git a/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
  19616. new file mode 100644
  19617. index 000000000000..a1d37f7103ff
  19618. --- /dev/null
  19619. +++ b/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
  19620. @@ -0,0 +1,38 @@
  19621. +/dts-v1/;
  19622. +/plugin/;
  19623. +
  19624. +#include <dt-bindings/clock/bcm2835.h>
  19625. +
  19626. +/*
  19627. + * Fake a higher clock rate to get a larger divisor, and thereby a lower
  19628. + * baudrate. The real clock is 48MHz, which we scale so that requesting
  19629. + * 38.4kHz results in an actual 31.25kHz.
  19630. + *
  19631. + * 48000000*38400/31250 = 58982400
  19632. + */
  19633. +
  19634. +/{
  19635. + compatible = "brcm,bcm2835";
  19636. +
  19637. + fragment@0 {
  19638. + target-path = "/";
  19639. + __overlay__ {
  19640. + midi_clk: midi_clk5 {
  19641. + compatible = "fixed-clock";
  19642. + #clock-cells = <0>;
  19643. + clock-output-names = "uart5_pclk";
  19644. + clock-frequency = <58982400>;
  19645. + };
  19646. + };
  19647. + };
  19648. +
  19649. + fragment@1 {
  19650. + target = <&uart5>;
  19651. + __overlay__ {
  19652. + clocks = <&midi_clk>,
  19653. + <&clocks BCM2835_CLOCK_VPU>;
  19654. + };
  19655. + };
  19656. +};
  19657. +
  19658. +
  19659. diff --git a/arch/arm/boot/dts/overlays/minipitft13-overlay.dts b/arch/arm/boot/dts/overlays/minipitft13-overlay.dts
  19660. new file mode 100644
  19661. index 000000000000..b1a0a2a41f72
  19662. --- /dev/null
  19663. +++ b/arch/arm/boot/dts/overlays/minipitft13-overlay.dts
  19664. @@ -0,0 +1,70 @@
  19665. +/*
  19666. + * Device Tree overlay for Adafruit Mini PiTFT 1.3" and 1.5" 240x240 Display
  19667. + *
  19668. + */
  19669. +
  19670. +/dts-v1/;
  19671. +/plugin/;
  19672. +
  19673. +/ {
  19674. + compatible = "brcm,bcm2835";
  19675. +
  19676. + fragment@0 {
  19677. + target = <&spi0>;
  19678. + __overlay__ {
  19679. + status = "okay";
  19680. +
  19681. + spidev@0{
  19682. + status = "disabled";
  19683. + };
  19684. +
  19685. + spidev@1{
  19686. + status = "disabled";
  19687. + };
  19688. + };
  19689. + };
  19690. +
  19691. + fragment@1 {
  19692. + target = <&gpio>;
  19693. + __overlay__ {
  19694. + pitft_pins: pitft_pins {
  19695. + brcm,pins = <25>;
  19696. + brcm,function = <1>; /* out */
  19697. + brcm,pull = <0>; /* none */
  19698. + };
  19699. + };
  19700. + };
  19701. +
  19702. + fragment@2 {
  19703. + target = <&spi0>;
  19704. + __overlay__ {
  19705. + /* needed to avoid dtc warning */
  19706. + #address-cells = <1>;
  19707. + #size-cells = <0>;
  19708. +
  19709. + pitft: pitft@0 {
  19710. + compatible = "fbtft,minipitft13";
  19711. + reg = <0>;
  19712. + pinctrl-names = "default";
  19713. + pinctrl-0 = <&pitft_pins>;
  19714. + spi-max-frequency = <32000000>;
  19715. + rotate = <0>;
  19716. + width = <240>;
  19717. + height = <240>;
  19718. + buswidth = <8>;
  19719. + dc-gpios = <&gpio 25 0>;
  19720. + led-gpios = <&gpio 26 0>;
  19721. + debug = <0>;
  19722. + };
  19723. + };
  19724. + };
  19725. +
  19726. + __overrides__ {
  19727. + speed = <&pitft>,"spi-max-frequency:0";
  19728. + rotate = <&pitft>,"rotate:0";
  19729. + width = <&pitft>,"width:0";
  19730. + height = <&pitft>,"height:0";
  19731. + fps = <&pitft>,"fps:0";
  19732. + debug = <&pitft>,"debug:0";
  19733. + };
  19734. +};
  19735. diff --git a/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
  19736. new file mode 100644
  19737. index 000000000000..da49f14a0940
  19738. --- /dev/null
  19739. +++ b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
  19740. @@ -0,0 +1,93 @@
  19741. +/dts-v1/;
  19742. +/plugin/;
  19743. +
  19744. +/* Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
  19745. + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
  19746. + usable baudrate.
  19747. +
  19748. + It is also necessary to edit /lib/systemd/system/hciuart.service and
  19749. + replace ttyAMA0 with ttyS0, unless you have a system with udev rules
  19750. + that create /dev/serial0 and /dev/serial1, in which case use /dev/serial1
  19751. + instead because it will always be correct.
  19752. +
  19753. + If cmdline.txt uses the alias serial0 to refer to the user-accessable port
  19754. + then the firmware will replace with the appropriate port whether or not
  19755. + this overlay is used.
  19756. +*/
  19757. +
  19758. +#include <dt-bindings/gpio/gpio.h>
  19759. +
  19760. +/{
  19761. + compatible = "brcm,bcm2835";
  19762. +
  19763. + fragment@0 {
  19764. + target = <&uart0>;
  19765. + __overlay__ {
  19766. + pinctrl-names = "default";
  19767. + pinctrl-0 = <&uart0_pins>;
  19768. + status = "okay";
  19769. + };
  19770. + };
  19771. +
  19772. + fragment@1 {
  19773. + target = <&bt>;
  19774. + __overlay__ {
  19775. + status = "disabled";
  19776. + };
  19777. + };
  19778. +
  19779. + fragment@2 {
  19780. + target = <&uart1>;
  19781. + __overlay__ {
  19782. + pinctrl-names = "default";
  19783. + pinctrl-0 = <&uart1_pins &bt_pins &fake_bt_cts>;
  19784. + status = "okay";
  19785. + };
  19786. + };
  19787. +
  19788. + fragment@3 {
  19789. + target = <&uart0_pins>;
  19790. + __overlay__ {
  19791. + brcm,pins;
  19792. + brcm,function;
  19793. + brcm,pull;
  19794. + };
  19795. + };
  19796. +
  19797. + fragment@4 {
  19798. + target = <&uart1_pins>;
  19799. + __overlay__ {
  19800. + brcm,pins = <32 33>;
  19801. + brcm,function = <2>; /* alt5=UART1 */
  19802. + brcm,pull = <0 2>;
  19803. + };
  19804. + };
  19805. +
  19806. + fragment@5 {
  19807. + target = <&gpio>;
  19808. + __overlay__ {
  19809. + fake_bt_cts: fake_bt_cts {
  19810. + brcm,pins = <31>;
  19811. + brcm,function = <1>; /* output */
  19812. + };
  19813. + };
  19814. + };
  19815. +
  19816. + fragment@6 {
  19817. + target-path = "/aliases";
  19818. + __overlay__ {
  19819. + serial0 = "/soc/serial@7e201000";
  19820. + serial1 = "/soc/serial@7e215040";
  19821. + };
  19822. + };
  19823. +
  19824. + fragment@7 {
  19825. + target = <&minibt>;
  19826. + minibt_frag: __overlay__ {
  19827. + };
  19828. + };
  19829. +
  19830. + __overrides__ {
  19831. + krnbt = <&minibt_frag>,"status";
  19832. + };
  19833. +};
  19834. diff --git a/arch/arm/boot/dts/overlays/mmc-overlay.dts b/arch/arm/boot/dts/overlays/mmc-overlay.dts
  19835. new file mode 100644
  19836. index 000000000000..c1a2f691aa1e
  19837. --- /dev/null
  19838. +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
  19839. @@ -0,0 +1,46 @@
  19840. +/dts-v1/;
  19841. +/plugin/;
  19842. +
  19843. +/{
  19844. + compatible = "brcm,bcm2835";
  19845. +
  19846. + fragment@0 {
  19847. + target = <&mmc>;
  19848. + frag0: __overlay__ {
  19849. + pinctrl-names = "default";
  19850. + pinctrl-0 = <&mmc_pins>;
  19851. + bus-width = <4>;
  19852. + brcm,overclock-50 = <0>;
  19853. + status = "okay";
  19854. + };
  19855. + };
  19856. +
  19857. + fragment@1 {
  19858. + target = <&gpio>;
  19859. + __overlay__ {
  19860. + mmc_pins: mmc_pins {
  19861. + brcm,pins = <48 49 50 51 52 53>;
  19862. + brcm,function = <7>; /* alt3 */
  19863. + brcm,pull = <0 2 2 2 2 2>;
  19864. + };
  19865. + };
  19866. + };
  19867. +
  19868. + fragment@2 {
  19869. + target = <&sdhost>;
  19870. + __overlay__ {
  19871. + status = "disabled";
  19872. + };
  19873. + };
  19874. +
  19875. + fragment@3 {
  19876. + target = <&mmcnr>;
  19877. + __overlay__ {
  19878. + status = "disabled";
  19879. + };
  19880. + };
  19881. +
  19882. + __overrides__ {
  19883. + overclock_50 = <&frag0>,"brcm,overclock-50:0";
  19884. + };
  19885. +};
  19886. diff --git a/arch/arm/boot/dts/overlays/mpu6050-overlay.dts b/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
  19887. new file mode 100644
  19888. index 000000000000..1b4c06535687
  19889. --- /dev/null
  19890. +++ b/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
  19891. @@ -0,0 +1,29 @@
  19892. +// Definitions for MPU6050
  19893. +/dts-v1/;
  19894. +/plugin/;
  19895. +
  19896. +/ {
  19897. + compatible = "brcm,bcm2835";
  19898. +
  19899. + fragment@0 {
  19900. + target = <&i2c1>;
  19901. + __overlay__ {
  19902. + #address-cells = <1>;
  19903. + #size-cells = <0>;
  19904. + status = "okay";
  19905. + clock-frequency = <400000>;
  19906. +
  19907. + mpu6050: mpu6050@68 {
  19908. + compatible = "invensense,mpu6050";
  19909. + reg = <0x68>;
  19910. + interrupt-parent = <&gpio>;
  19911. + interrupts = <4 1>;
  19912. + };
  19913. + };
  19914. + };
  19915. +
  19916. + __overrides__ {
  19917. + interrupt = <&mpu6050>,"interrupts:0";
  19918. + addr = <&mpu6050>,"reg:0";
  19919. + };
  19920. +};
  19921. diff --git a/arch/arm/boot/dts/overlays/mz61581-overlay.dts b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
  19922. new file mode 100644
  19923. index 000000000000..6e00e8b2ddf2
  19924. --- /dev/null
  19925. +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
  19926. @@ -0,0 +1,117 @@
  19927. +/*
  19928. + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
  19929. + *
  19930. + */
  19931. +
  19932. +/dts-v1/;
  19933. +/plugin/;
  19934. +
  19935. +/ {
  19936. + compatible = "brcm,bcm2835";
  19937. +
  19938. + fragment@0 {
  19939. + target = <&spi0>;
  19940. + __overlay__ {
  19941. + status = "okay";
  19942. + };
  19943. + };
  19944. +
  19945. + fragment@1 {
  19946. + target = <&spidev0>;
  19947. + __overlay__ {
  19948. + status = "disabled";
  19949. + };
  19950. + };
  19951. +
  19952. + fragment@2 {
  19953. + target = <&spidev1>;
  19954. + __overlay__ {
  19955. + status = "disabled";
  19956. + };
  19957. + };
  19958. +
  19959. + fragment@3 {
  19960. + target = <&gpio>;
  19961. + __overlay__ {
  19962. + mz61581_pins: mz61581_pins {
  19963. + brcm,pins = <4 15 18 25>;
  19964. + brcm,function = <0 1 1 1>; /* in out out out */
  19965. + };
  19966. + };
  19967. + };
  19968. +
  19969. + fragment@4 {
  19970. + target = <&spi0>;
  19971. + __overlay__ {
  19972. + /* needed to avoid dtc warning */
  19973. + #address-cells = <1>;
  19974. + #size-cells = <0>;
  19975. +
  19976. + mz61581: mz61581@0{
  19977. + compatible = "samsung,s6d02a1";
  19978. + reg = <0>;
  19979. + pinctrl-names = "default";
  19980. + pinctrl-0 = <&mz61581_pins>;
  19981. +
  19982. + spi-max-frequency = <128000000>;
  19983. + spi-cpol;
  19984. + spi-cpha;
  19985. +
  19986. + width = <320>;
  19987. + height = <480>;
  19988. + rotate = <270>;
  19989. + bgr;
  19990. + fps = <30>;
  19991. + buswidth = <8>;
  19992. + txbuflen = <32768>;
  19993. +
  19994. + reset-gpios = <&gpio 15 1>;
  19995. + dc-gpios = <&gpio 25 0>;
  19996. + led-gpios = <&gpio 18 0>;
  19997. +
  19998. + init = <0x10000b0 00
  19999. + 0x1000011
  20000. + 0x20000ff
  20001. + 0x10000b3 0x02 0x00 0x00 0x00
  20002. + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
  20003. + 0x10000c1 0x08 0x16 0x08 0x08
  20004. + 0x10000c4 0x11 0x07 0x03 0x03
  20005. + 0x10000c6 0x00
  20006. + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
  20007. + 0x1000035 0x00
  20008. + 0x1000036 0xa0
  20009. + 0x100003a 0x55
  20010. + 0x1000044 0x00 0x01
  20011. + 0x10000d0 0x07 0x07 0x1d 0x03
  20012. + 0x10000d1 0x03 0x30 0x10
  20013. + 0x10000d2 0x03 0x14 0x04
  20014. + 0x1000029
  20015. + 0x100002c>;
  20016. +
  20017. + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
  20018. + debug = <3>;
  20019. + };
  20020. +
  20021. + mz61581_ts: mz61581_ts@1 {
  20022. + compatible = "ti,ads7846";
  20023. + reg = <1>;
  20024. +
  20025. + spi-max-frequency = <2000000>;
  20026. + interrupts = <4 2>; /* high-to-low edge triggered */
  20027. + interrupt-parent = <&gpio>;
  20028. + pendown-gpio = <&gpio 4 0>;
  20029. +
  20030. + ti,x-plate-ohms = /bits/ 16 <60>;
  20031. + ti,pressure-max = /bits/ 16 <255>;
  20032. + };
  20033. + };
  20034. + };
  20035. + __overrides__ {
  20036. + speed = <&mz61581>, "spi-max-frequency:0";
  20037. + rotate = <&mz61581>, "rotate:0";
  20038. + fps = <&mz61581>, "fps:0";
  20039. + txbuflen = <&mz61581>, "txbuflen:0";
  20040. + debug = <&mz61581>, "debug:0";
  20041. + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
  20042. + };
  20043. +};
  20044. diff --git a/arch/arm/boot/dts/overlays/ov5647-overlay.dts b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
  20045. new file mode 100644
  20046. index 000000000000..d7ed4703c9b0
  20047. --- /dev/null
  20048. +++ b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
  20049. @@ -0,0 +1,94 @@
  20050. +// SPDX-License-Identifier: GPL-2.0-only
  20051. +// Definitions for OV5647 camera module on VC I2C bus
  20052. +/dts-v1/;
  20053. +/plugin/;
  20054. +
  20055. +/{
  20056. + compatible = "brcm,bcm2835";
  20057. +
  20058. + fragment@0 {
  20059. + target = <&i2c_csi_dsi>;
  20060. + __overlay__ {
  20061. + #address-cells = <1>;
  20062. + #size-cells = <0>;
  20063. + status = "okay";
  20064. +
  20065. + ov5647: ov5647@36 {
  20066. + compatible = "ovti,ov5647";
  20067. + reg = <0x36>;
  20068. + status = "okay";
  20069. +
  20070. + pwdn-gpios = <&gpio 41 1>, <&gpio 32 1>;
  20071. + clocks = <&ov5647_clk>;
  20072. +
  20073. + rotation = <0>;
  20074. + orientation = <2>;
  20075. +
  20076. + port {
  20077. + ov5647_0: endpoint {
  20078. + remote-endpoint = <&csi1_ep>;
  20079. + clock-lanes = <0>;
  20080. + data-lanes = <1 2>;
  20081. + clock-noncontinuous;
  20082. + link-frequencies =
  20083. + /bits/ 64 <297000000>;
  20084. + };
  20085. + };
  20086. + };
  20087. + };
  20088. + };
  20089. +
  20090. + fragment@1 {
  20091. + target = <&csi1>;
  20092. + __overlay__ {
  20093. + status = "okay";
  20094. +
  20095. + port {
  20096. + csi1_ep: endpoint {
  20097. + remote-endpoint = <&ov5647_0>;
  20098. + data-lanes = <1 2>;
  20099. + };
  20100. + };
  20101. + };
  20102. + };
  20103. +
  20104. + fragment@2 {
  20105. + target = <&i2c0if>;
  20106. + __overlay__ {
  20107. + status = "okay";
  20108. + };
  20109. + };
  20110. +
  20111. + fragment@3 {
  20112. + target = <&i2c0mux>;
  20113. + __overlay__ {
  20114. + status = "okay";
  20115. + };
  20116. + };
  20117. +
  20118. + fragment@4 {
  20119. + target-path="/__overrides__";
  20120. + __overlay__ {
  20121. + cam0-pwdn-ctrl = <&ov5647>,"pwdn-gpios:0";
  20122. + cam0-pwdn = <&ov5647>,"pwdn-gpios:4";
  20123. + cam0-led-ctrl = <&ov5647>,"pwdn-gpios:12";
  20124. + cam0-led = <&ov5647>,"pwdn-gpios:16";
  20125. + };
  20126. + };
  20127. +
  20128. + fragment@5 {
  20129. + target-path = "/";
  20130. + __overlay__ {
  20131. + ov5647_clk: camera-clk {
  20132. + compatible = "fixed-clock";
  20133. + #clock-cells = <0>;
  20134. + clock-frequency = <25000000>;
  20135. + };
  20136. + };
  20137. + };
  20138. +
  20139. + __overrides__ {
  20140. + rotation = <&ov5647>,"rotation:0";
  20141. + orientation = <&ov5647>,"orientation:0";
  20142. + };
  20143. +};
  20144. diff --git a/arch/arm/boot/dts/overlays/ov7251-overlay.dts b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
  20145. new file mode 100644
  20146. index 000000000000..09dbeda39d06
  20147. --- /dev/null
  20148. +++ b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
  20149. @@ -0,0 +1,113 @@
  20150. +// SPDX-License-Identifier: GPL-2.0-only
  20151. +// Definitions for OV7251 camera module on VC I2C bus
  20152. +/dts-v1/;
  20153. +/plugin/;
  20154. +
  20155. +#include <dt-bindings/gpio/gpio.h>
  20156. +
  20157. +/{
  20158. + compatible = "brcm,bcm2835";
  20159. +
  20160. + fragment@0 {
  20161. + target = <&i2c_csi_dsi>;
  20162. + __overlay__ {
  20163. + #address-cells = <1>;
  20164. + #size-cells = <0>;
  20165. + status = "okay";
  20166. +
  20167. + ov7251: ov7251@60 {
  20168. + compatible = "ovti,ov7251";
  20169. + reg = <0x60>;
  20170. + status = "okay";
  20171. +
  20172. + clocks = <&ov7251_clk>;
  20173. + clock-names = "xclk";
  20174. + clock-frequency = <24000000>;
  20175. +
  20176. + vdddo-supply = <&ov7251_dovdd>;
  20177. + vdda-supply = <&cam1_reg>;
  20178. + vddd-supply = <&ov7251_dvdd>;
  20179. +
  20180. + rotation = <0>;
  20181. + orientation = <2>;
  20182. +
  20183. + port {
  20184. + ov7251_0: endpoint {
  20185. + remote-endpoint = <&csi1_ep>;
  20186. + clock-lanes = <0>;
  20187. + data-lanes = <1>;
  20188. + clock-noncontinuous;
  20189. + link-frequencies =
  20190. + /bits/ 64 <456000000>;
  20191. + };
  20192. + };
  20193. + };
  20194. + };
  20195. + };
  20196. +
  20197. + fragment@1 {
  20198. + target = <&csi1>;
  20199. + __overlay__ {
  20200. + status = "okay";
  20201. +
  20202. + port {
  20203. + csi1_ep: endpoint {
  20204. + remote-endpoint = <&ov7251_0>;
  20205. + data-lanes = <1>;
  20206. + };
  20207. + };
  20208. + };
  20209. + };
  20210. +
  20211. + fragment@2 {
  20212. + target = <&i2c0if>;
  20213. + __overlay__ {
  20214. + status = "okay";
  20215. + };
  20216. + };
  20217. +
  20218. + fragment@3 {
  20219. + target-path="/";
  20220. + __overlay__ {
  20221. + ov7251_dovdd: fixedregulator@1 {
  20222. + compatible = "regulator-fixed";
  20223. + regulator-name = "ov7251_dovdd";
  20224. + regulator-min-microvolt = <1800000>;
  20225. + regulator-max-microvolt = <1800000>;
  20226. + };
  20227. + ov7251_dvdd: fixedregulator@2 {
  20228. + compatible = "regulator-fixed";
  20229. + regulator-name = "ov7251_dvdd";
  20230. + regulator-min-microvolt = <1200000>;
  20231. + regulator-max-microvolt = <1200000>;
  20232. + };
  20233. + ov7251_clk: ov7251-clk {
  20234. + compatible = "fixed-clock";
  20235. + #clock-cells = <0>;
  20236. + clock-frequency = <24000000>;
  20237. + };
  20238. + };
  20239. + };
  20240. +
  20241. + fragment@4 {
  20242. + target = <&i2c0mux>;
  20243. + __overlay__ {
  20244. + status = "okay";
  20245. + };
  20246. + };
  20247. +
  20248. + fragment@5 {
  20249. + target = <&cam1_reg>;
  20250. + __overlay__ {
  20251. + status = "okay";
  20252. + regulator-name = "ov7251_avdd";
  20253. + regulator-min-microvolt = <2800000>;
  20254. + regulator-max-microvolt = <2800000>;
  20255. + };
  20256. + };
  20257. +
  20258. + __overrides__ {
  20259. + rotation = <&ov7251>,"rotation:0";
  20260. + orientation = <&ov7251>,"orientation:0";
  20261. + };
  20262. +};
  20263. diff --git a/arch/arm/boot/dts/overlays/ov9281-overlay.dts b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
  20264. new file mode 100644
  20265. index 000000000000..277236c03358
  20266. --- /dev/null
  20267. +++ b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
  20268. @@ -0,0 +1,113 @@
  20269. +// SPDX-License-Identifier: GPL-2.0-only
  20270. +// Definitions for OV9281 camera module on VC I2C bus
  20271. +/dts-v1/;
  20272. +/plugin/;
  20273. +
  20274. +#include <dt-bindings/gpio/gpio.h>
  20275. +
  20276. +/{
  20277. + compatible = "brcm,bcm2835";
  20278. +
  20279. + fragment@0 {
  20280. + target = <&i2c_csi_dsi>;
  20281. + __overlay__ {
  20282. + #address-cells = <1>;
  20283. + #size-cells = <0>;
  20284. + status = "okay";
  20285. +
  20286. + ov9281: ov9281@60 {
  20287. + compatible = "ovti,ov9281";
  20288. + reg = <0x60>;
  20289. + status = "okay";
  20290. +
  20291. + clocks = <&ov9281_clk>;
  20292. + clock-names = "xvclk";
  20293. +
  20294. + avdd-supply = <&cam1_reg>;
  20295. + dovdd-supply = <&ov9281_dovdd>;
  20296. + dvdd-supply = <&ov9281_dvdd>;
  20297. +
  20298. + rotation = <0>;
  20299. + orientation = <2>;
  20300. +
  20301. + port {
  20302. + ov9281_0: endpoint {
  20303. + remote-endpoint = <&csi1_ep>;
  20304. + clock-lanes = <0>;
  20305. + data-lanes = <1 2>;
  20306. + clock-noncontinuous;
  20307. + link-frequencies =
  20308. + /bits/ 64 <400000000>;
  20309. + };
  20310. + };
  20311. + };
  20312. + };
  20313. + };
  20314. +
  20315. + fragment@1 {
  20316. + target = <&csi1>;
  20317. + __overlay__ {
  20318. + status = "okay";
  20319. +
  20320. + port {
  20321. + csi1_ep: endpoint {
  20322. + remote-endpoint = <&ov9281_0>;
  20323. + data-lanes = <1 2>;
  20324. + clock-noncontinuous;
  20325. + };
  20326. + };
  20327. + };
  20328. + };
  20329. +
  20330. + fragment@2 {
  20331. + target = <&i2c0if>;
  20332. + __overlay__ {
  20333. + status = "okay";
  20334. + };
  20335. + };
  20336. +
  20337. + fragment@3 {
  20338. + target-path="/";
  20339. + __overlay__ {
  20340. + ov9281_dovdd: fixedregulator@1 {
  20341. + compatible = "regulator-fixed";
  20342. + regulator-name = "ov9281_dovdd";
  20343. + regulator-min-microvolt = <1800000>;
  20344. + regulator-max-microvolt = <1800000>;
  20345. + };
  20346. + ov9281_dvdd: fixedregulator@2 {
  20347. + compatible = "regulator-fixed";
  20348. + regulator-name = "ov9281_dvdd";
  20349. + regulator-min-microvolt = <1200000>;
  20350. + regulator-max-microvolt = <1200000>;
  20351. + };
  20352. + ov9281_clk: ov9281-clk {
  20353. + compatible = "fixed-clock";
  20354. + #clock-cells = <0>;
  20355. + clock-frequency = <24000000>;
  20356. + };
  20357. + };
  20358. + };
  20359. +
  20360. + fragment@4 {
  20361. + target = <&i2c0mux>;
  20362. + __overlay__ {
  20363. + status = "okay";
  20364. + };
  20365. + };
  20366. +
  20367. + fragment@5 {
  20368. + target = <&cam1_reg>;
  20369. + __overlay__ {
  20370. + status = "okay";
  20371. + regulator-name = "ov9281_avdd";
  20372. + regulator-min-microvolt = <2800000>;
  20373. + regulator-max-microvolt = <2800000>;
  20374. + };
  20375. + };
  20376. +
  20377. + __overrides__ {
  20378. + rotation = <&ov9281>,"rotation:0";
  20379. + orientation = <&ov9281>,"orientation:0";
  20380. + };
  20381. +};
  20382. diff --git a/arch/arm/boot/dts/overlays/overlay_map.dts b/arch/arm/boot/dts/overlays/overlay_map.dts
  20383. new file mode 100644
  20384. index 000000000000..bc6e3bce22c7
  20385. --- /dev/null
  20386. +++ b/arch/arm/boot/dts/overlays/overlay_map.dts
  20387. @@ -0,0 +1,158 @@
  20388. +/dts-v1/;
  20389. +
  20390. +/ {
  20391. + bmp085_i2c-sensor {
  20392. + deprecated = "use i2c-sensor,bmp085";
  20393. + };
  20394. +
  20395. + highperi {
  20396. + bcm2711;
  20397. + };
  20398. +
  20399. + i2c0-bcm2708 {
  20400. + deprecated = "use i2c0";
  20401. + };
  20402. +
  20403. + i2c1-bcm2708 {
  20404. + deprecated = "use i2c1";
  20405. + };
  20406. +
  20407. + i2c3 {
  20408. + bcm2711;
  20409. + };
  20410. +
  20411. + i2c4 {
  20412. + bcm2711;
  20413. + };
  20414. +
  20415. + i2c5 {
  20416. + bcm2711;
  20417. + };
  20418. +
  20419. + i2c6 {
  20420. + bcm2711;
  20421. + };
  20422. +
  20423. + lirc-rpi {
  20424. + deprecated = "use gpio-ir";
  20425. + };
  20426. +
  20427. + pcie-32bit-dma {
  20428. + bcm2711;
  20429. + };
  20430. +
  20431. + pi3-act-led {
  20432. + renamed = "act-led";
  20433. + };
  20434. +
  20435. + pi3-disable-bt {
  20436. + renamed = "disable-bt";
  20437. + };
  20438. +
  20439. + pi3-disable-wifi {
  20440. + renamed = "disable-wifi";
  20441. + };
  20442. +
  20443. + pi3-miniuart-bt {
  20444. + renamed = "miniuart-bt";
  20445. + };
  20446. +
  20447. + rpivid-v4l2 {
  20448. + bcm2711;
  20449. + };
  20450. +
  20451. + sdio-1bit {
  20452. + deprecated = "use sdio,bus_width=1,gpios_22_25";
  20453. + };
  20454. +
  20455. + sdtweak {
  20456. + deprecated = "use 'dtparam=sd_poll_once' etc.";
  20457. + };
  20458. +
  20459. + spi0-cs {
  20460. + renamed = "spi0-2cs";
  20461. + };
  20462. +
  20463. + spi0-hw-cs {
  20464. + deprecated = "no longer necessary";
  20465. + };
  20466. +
  20467. + spi3-1cs {
  20468. + bcm2711;
  20469. + };
  20470. +
  20471. + spi3-2cs {
  20472. + bcm2711;
  20473. + };
  20474. +
  20475. + spi4-1cs {
  20476. + bcm2711;
  20477. + };
  20478. +
  20479. + spi4-2cs {
  20480. + bcm2711;
  20481. + };
  20482. +
  20483. + spi5-1cs {
  20484. + bcm2711;
  20485. + };
  20486. +
  20487. + spi5-2cs {
  20488. + bcm2711;
  20489. + };
  20490. +
  20491. + spi6-1cs {
  20492. + bcm2711;
  20493. + };
  20494. +
  20495. + spi6-2cs {
  20496. + bcm2711;
  20497. + };
  20498. +
  20499. + uart2 {
  20500. + bcm2711;
  20501. + };
  20502. +
  20503. + uart3 {
  20504. + bcm2711;
  20505. + };
  20506. +
  20507. + uart4 {
  20508. + bcm2711;
  20509. + };
  20510. +
  20511. + uart5 {
  20512. + bcm2711;
  20513. + };
  20514. +
  20515. + upstream {
  20516. + bcm2835;
  20517. + bcm2711 = "upstream-pi4";
  20518. + };
  20519. +
  20520. + upstream-aux-interrupt {
  20521. + deprecated = "no longer necessary";
  20522. + };
  20523. +
  20524. + upstream-pi4 {
  20525. + bcm2711;
  20526. + };
  20527. +
  20528. + vc4-fkms-v3d {
  20529. + bcm2835;
  20530. + bcm2711 = "vc4-fkms-v3d-pi4";
  20531. + };
  20532. +
  20533. + vc4-fkms-v3d-pi4 {
  20534. + bcm2711;
  20535. + };
  20536. +
  20537. + vc4-kms-v3d {
  20538. + bcm2835;
  20539. + bcm2711 = "vc4-kms-v3d-pi4";
  20540. + };
  20541. +
  20542. + vc4-kms-v3d-pi4 {
  20543. + bcm2711;
  20544. + };
  20545. +};
  20546. diff --git a/arch/arm/boot/dts/overlays/papirus-overlay.dts b/arch/arm/boot/dts/overlays/papirus-overlay.dts
  20547. new file mode 100644
  20548. index 000000000000..7b6bcfd49c86
  20549. --- /dev/null
  20550. +++ b/arch/arm/boot/dts/overlays/papirus-overlay.dts
  20551. @@ -0,0 +1,89 @@
  20552. +/* PaPiRus ePaper Screen by Pi Supply */
  20553. +
  20554. +/dts-v1/;
  20555. +/plugin/;
  20556. +
  20557. +/ {
  20558. + compatible = "brcm,bcm2835";
  20559. +
  20560. + fragment@0 {
  20561. + target = <&i2c_arm>;
  20562. + __overlay__ {
  20563. + #address-cells = <1>;
  20564. + #size-cells = <0>;
  20565. + status = "okay";
  20566. +
  20567. + display_temp: lm75@48 {
  20568. + compatible = "lm75b";
  20569. + reg = <0x48>;
  20570. + status = "okay";
  20571. + #thermal-sensor-cells = <0>;
  20572. + };
  20573. + };
  20574. + };
  20575. +
  20576. + fragment@1 {
  20577. + target-path = "/";
  20578. + __overlay__ {
  20579. + thermal-zones {
  20580. + display {
  20581. + polling-delay-passive = <0>;
  20582. + polling-delay = <0>;
  20583. + thermal-sensors = <&display_temp>;
  20584. + };
  20585. + };
  20586. + };
  20587. + };
  20588. +
  20589. + fragment@2 {
  20590. + target = <&spi0>;
  20591. + __overlay__ {
  20592. + status = "okay";
  20593. +
  20594. + spidev@0{
  20595. + status = "disabled";
  20596. + };
  20597. + };
  20598. + };
  20599. +
  20600. + fragment@3 {
  20601. + target = <&gpio>;
  20602. + __overlay__ {
  20603. + repaper_pins: repaper_pins {
  20604. + brcm,pins = <14 15 23 24 25>;
  20605. + brcm,function = <1 1 1 1 0>; /* out out out out in */
  20606. + };
  20607. + };
  20608. + };
  20609. +
  20610. + fragment@4 {
  20611. + target = <&spi0>;
  20612. + __overlay__ {
  20613. + /* needed to avoid dtc warning */
  20614. + #address-cells = <1>;
  20615. + #size-cells = <0>;
  20616. +
  20617. + repaper: repaper@0{
  20618. + compatible = "not_set";
  20619. + reg = <0>;
  20620. + pinctrl-names = "default";
  20621. + pinctrl-0 = <&repaper_pins>;
  20622. +
  20623. + spi-max-frequency = <8000000>;
  20624. +
  20625. + panel-on-gpios = <&gpio 23 0>;
  20626. + border-gpios = <&gpio 14 0>;
  20627. + discharge-gpios = <&gpio 15 0>;
  20628. + reset-gpios = <&gpio 24 0>;
  20629. + busy-gpios = <&gpio 25 0>;
  20630. +
  20631. + repaper-thermal-zone = "display";
  20632. + };
  20633. + };
  20634. + };
  20635. +
  20636. + __overrides__ {
  20637. + panel = <&repaper>, "compatible";
  20638. + speed = <&repaper>, "spi-max-frequency:0";
  20639. + };
  20640. +};
  20641. diff --git a/arch/arm/boot/dts/overlays/pca953x-overlay.dts b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
  20642. new file mode 100644
  20643. index 000000000000..8b6ee44665ce
  20644. --- /dev/null
  20645. +++ b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
  20646. @@ -0,0 +1,240 @@
  20647. +// Definitions for NXP PCA953x family of I2C GPIO controllers on ARM I2C bus.
  20648. +/dts-v1/;
  20649. +/plugin/;
  20650. +
  20651. +/{
  20652. + compatible = "brcm,bcm2835";
  20653. +
  20654. + fragment@0 {
  20655. + target = <&i2c_arm>;
  20656. + __overlay__ {
  20657. + #address-cells = <1>;
  20658. + #size-cells = <0>;
  20659. + status = "okay";
  20660. +
  20661. + pca: pca@20 {
  20662. + compatible = "nxp,pca9534";
  20663. + reg = <0x20>;
  20664. + gpio-controller;
  20665. + #gpio-cells = <2>;
  20666. +
  20667. + status = "okay";
  20668. + };
  20669. + };
  20670. + };
  20671. +
  20672. + fragment@1 {
  20673. + target = <&pca>;
  20674. + __dormant__ {
  20675. + compatible = "nxp,pca6416";
  20676. + };
  20677. + };
  20678. + fragment@2 {
  20679. + target = <&pca>;
  20680. + __dormant__ {
  20681. + compatible = "nxp,pca9505";
  20682. + };
  20683. + };
  20684. + fragment@3 {
  20685. + target = <&pca>;
  20686. + __dormant__ {
  20687. + compatible = "nxp,pca9535";
  20688. + };
  20689. + };
  20690. + fragment@4 {
  20691. + target = <&pca>;
  20692. + __dormant__ {
  20693. + compatible = "nxp,pca9536";
  20694. + };
  20695. + };
  20696. + fragment@5 {
  20697. + target = <&pca>;
  20698. + __dormant__ {
  20699. + compatible = "nxp,pca9537";
  20700. + };
  20701. + };
  20702. + fragment@6 {
  20703. + target = <&pca>;
  20704. + __dormant__ {
  20705. + compatible = "nxp,pca9538";
  20706. + };
  20707. + };
  20708. + fragment@7 {
  20709. + target = <&pca>;
  20710. + __dormant__ {
  20711. + compatible = "nxp,pca9539";
  20712. + };
  20713. + };
  20714. + fragment@8 {
  20715. + target = <&pca>;
  20716. + __dormant__ {
  20717. + compatible = "nxp,pca9554";
  20718. + };
  20719. + };
  20720. + fragment@9 {
  20721. + target = <&pca>;
  20722. + __dormant__ {
  20723. + compatible = "nxp,pca9555";
  20724. + };
  20725. + };
  20726. + fragment@10 {
  20727. + target = <&pca>;
  20728. + __dormant__ {
  20729. + compatible = "nxp,pca9556";
  20730. + };
  20731. + };
  20732. + fragment@11 {
  20733. + target = <&pca>;
  20734. + __dormant__ {
  20735. + compatible = "nxp,pca9557";
  20736. + };
  20737. + };
  20738. + fragment@12 {
  20739. + target = <&pca>;
  20740. + __dormant__ {
  20741. + compatible = "nxp,pca9574";
  20742. + };
  20743. + };
  20744. + fragment@13 {
  20745. + target = <&pca>;
  20746. + __dormant__ {
  20747. + compatible = "nxp,pca9575";
  20748. + };
  20749. + };
  20750. + fragment@14 {
  20751. + target = <&pca>;
  20752. + __dormant__ {
  20753. + compatible = "nxp,pca9698";
  20754. + };
  20755. + };
  20756. + fragment@15 {
  20757. + target = <&pca>;
  20758. + __dormant__ {
  20759. + compatible = "nxp,pca16416";
  20760. + };
  20761. + };
  20762. + fragment@16 {
  20763. + target = <&pca>;
  20764. + __dormant__ {
  20765. + compatible = "nxp,pca16524";
  20766. + };
  20767. + };
  20768. + fragment@17 {
  20769. + target = <&pca>;
  20770. + __dormant__ {
  20771. + compatible = "nxp,pca19555a";
  20772. + };
  20773. + };
  20774. + fragment@18 {
  20775. + target = <&pca>;
  20776. + __dormant__ {
  20777. + compatible = "maxim,max7310";
  20778. + };
  20779. + };
  20780. + fragment@19 {
  20781. + target = <&pca>;
  20782. + __dormant__ {
  20783. + compatible = "maxim,max7312";
  20784. + };
  20785. + };
  20786. + fragment@20 {
  20787. + target = <&pca>;
  20788. + __dormant__ {
  20789. + compatible = "maxim,max7313";
  20790. + };
  20791. + };
  20792. + fragment@21 {
  20793. + target = <&pca>;
  20794. + __dormant__ {
  20795. + compatible = "maxim,max7315";
  20796. + };
  20797. + };
  20798. + fragment@22 {
  20799. + target = <&pca>;
  20800. + __dormant__ {
  20801. + compatible = "ti,pca6107";
  20802. + };
  20803. + };
  20804. + fragment@23 {
  20805. + target = <&pca>;
  20806. + __dormant__ {
  20807. + compatible = "ti,tca6408";
  20808. + };
  20809. + };
  20810. + fragment@24 {
  20811. + target = <&pca>;
  20812. + __dormant__ {
  20813. + compatible = "ti,tca6416";
  20814. + };
  20815. + };
  20816. + fragment@25 {
  20817. + target = <&pca>;
  20818. + __dormant__ {
  20819. + compatible = "ti,tca6424";
  20820. + };
  20821. + };
  20822. + fragment@26 {
  20823. + target = <&pca>;
  20824. + __dormant__ {
  20825. + compatible = "ti,tca9539";
  20826. + };
  20827. + };
  20828. + fragment@27 {
  20829. + target = <&pca>;
  20830. + __dormant__ {
  20831. + compatible = "ti,tca9554";
  20832. + };
  20833. + };
  20834. + fragment@28 {
  20835. + target = <&pca>;
  20836. + __dormant__ {
  20837. + compatible = "onnn,cat9554";
  20838. + };
  20839. + };
  20840. + fragment@29 {
  20841. + target = <&pca>;
  20842. + __dormant__ {
  20843. + compatible = "onnn,pca9654";
  20844. + };
  20845. + };
  20846. + fragment@30 {
  20847. + target = <&pca>;
  20848. + __dormant__ {
  20849. + compatible = "exar,xra1202";
  20850. + };
  20851. + };
  20852. +
  20853. + __overrides__ {
  20854. + addr = <&pca>,"reg:0";
  20855. + pca6416 = <0>, "+1";
  20856. + pca9505 = <0>, "+2";
  20857. + pca9535 = <0>, "+3";
  20858. + pca9536 = <0>, "+4";
  20859. + pca9537 = <0>, "+5";
  20860. + pca9538 = <0>, "+6";
  20861. + pca9539 = <0>, "+7";
  20862. + pca9554 = <0>, "+8";
  20863. + pca9555 = <0>, "+9";
  20864. + pca9556 = <0>, "+10";
  20865. + pca9557 = <0>, "+11";
  20866. + pca9574 = <0>, "+12";
  20867. + pca9575 = <0>, "+13";
  20868. + pca9698 = <0>, "+14";
  20869. + pca16416 = <0>, "+15";
  20870. + pca16524 = <0>, "+16";
  20871. + pca19555a = <0>, "+17";
  20872. + max7310 = <0>, "+18";
  20873. + max7312 = <0>, "+19";
  20874. + max7313 = <0>, "+20";
  20875. + max7315 = <0>, "+21";
  20876. + pca6107 = <0>, "+22";
  20877. + tca6408 = <0>, "+23";
  20878. + tca6416 = <0>, "+24";
  20879. + tca6424 = <0>, "+25";
  20880. + tca9539 = <0>, "+26";
  20881. + tca9554 = <0>, "+27";
  20882. + cat9554 = <0>, "+28";
  20883. + pca9654 = <0>, "+29";
  20884. + xra1202 = <0>, "+30";
  20885. + };
  20886. +};
  20887. diff --git a/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts b/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts
  20888. new file mode 100644
  20889. index 000000000000..cca3e83721b7
  20890. --- /dev/null
  20891. +++ b/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts
  20892. @@ -0,0 +1,18 @@
  20893. +/*
  20894. + * pcie-32bit-dma-overlay.dts
  20895. + */
  20896. +
  20897. +/dts-v1/;
  20898. +/plugin/;
  20899. +
  20900. +/ {
  20901. + compatible = "brcm,bcm2711";
  20902. +
  20903. + fragment@0 {
  20904. + target-path = "/aliases";
  20905. + __overlay__ {
  20906. + pcie0 = "";
  20907. + };
  20908. + };
  20909. +
  20910. +};
  20911. diff --git a/arch/arm/boot/dts/overlays/pibell-overlay.dts b/arch/arm/boot/dts/overlays/pibell-overlay.dts
  20912. new file mode 100644
  20913. index 000000000000..9333a9b09772
  20914. --- /dev/null
  20915. +++ b/arch/arm/boot/dts/overlays/pibell-overlay.dts
  20916. @@ -0,0 +1,81 @@
  20917. +/dts-v1/;
  20918. +/plugin/;
  20919. +
  20920. +/ {
  20921. + compatible = "brcm,bcm2835";
  20922. +
  20923. + fragment@0 {
  20924. + target-path = "/";
  20925. + __overlay__ {
  20926. + codec_out: spdif-transmitter {
  20927. + #address-cells = <0>;
  20928. + #size-cells = <0>;
  20929. + #sound-dai-cells = <0>;
  20930. + compatible = "linux,spdif-dit";
  20931. + status = "okay";
  20932. + };
  20933. +
  20934. + codec_in: card-codec {
  20935. + #sound-dai-cells = <0>;
  20936. + compatible = "invensense,ics43432";
  20937. + status = "okay";
  20938. + };
  20939. + };
  20940. + };
  20941. +
  20942. + fragment@1 {
  20943. + target = <&i2s>;
  20944. + __overlay__ {
  20945. + #sound-dai-cells = <0>;
  20946. + status = "okay";
  20947. + };
  20948. + };
  20949. +
  20950. + fragment@2 {
  20951. + target = <&sound>;
  20952. + snd: __overlay__ {
  20953. + compatible = "simple-audio-card";
  20954. + simple-audio-card,name = "PiBell";
  20955. +
  20956. + status="okay";
  20957. +
  20958. + capture_link: simple-audio-card,dai-link@0 {
  20959. + format = "i2s";
  20960. +
  20961. + r_cpu_dai: cpu {
  20962. + sound-dai = <&i2s>;
  20963. +
  20964. +/* example TDM slot configuration
  20965. + dai-tdm-slot-num = <2>;
  20966. + dai-tdm-slot-width = <32>;
  20967. +*/
  20968. + };
  20969. +
  20970. + r_codec_dai: codec {
  20971. + sound-dai = <&codec_in>;
  20972. + };
  20973. + };
  20974. +
  20975. + playback_link: simple-audio-card,dai-link@1 {
  20976. + format = "i2s";
  20977. +
  20978. + p_cpu_dai: cpu {
  20979. + sound-dai = <&i2s>;
  20980. +
  20981. +/* example TDM slot configuration
  20982. + dai-tdm-slot-num = <2>;
  20983. + dai-tdm-slot-width = <32>;
  20984. +*/
  20985. + };
  20986. +
  20987. + p_codec_dai: codec {
  20988. + sound-dai = <&codec_out>;
  20989. + };
  20990. + };
  20991. + };
  20992. + };
  20993. +
  20994. + __overrides__ {
  20995. + alsaname = <&snd>, "simple-audio-card,name";
  20996. + };
  20997. +};
  20998. diff --git a/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
  20999. new file mode 100644
  21000. index 000000000000..532a858683d6
  21001. --- /dev/null
  21002. +++ b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
  21003. @@ -0,0 +1,144 @@
  21004. +// SPDX-License-Identifier: GPL-2.0-only
  21005. +/*
  21006. + * PiFace Digital, Device Tree Overlay.
  21007. + * Copyright (C) 2020 Thomas Preston <[email protected]>
  21008. + *
  21009. + * The PiFace Digital is a convenient breakout board for the Microchip mcp23s17
  21010. + * SPI GPIO port expander.
  21011. + *
  21012. + * The first eight GPIOs 0..7 (bank A) are connected to eight output terminals
  21013. + * and LEDs, plus two relays on the first two outputs. These output loads are
  21014. + * active-high.
  21015. + *
  21016. + * The next eight GPIOs 8..15 (bank B) are connected to eight input terminals
  21017. + * with four on-board switches connecting them to ground. Inputs devices are
  21018. + * therefore expected to bridge terminals to ground, so the mcp23s17 pullups are
  21019. + * activated for GPIO bank B.
  21020. + *
  21021. + * On PiFace Digital, the mcp23s17 is connected to the Raspberry Pi's SPI0 CS0
  21022. + * bus. Each SPI bus supports up to eight addressable child devices. The PiFace
  21023. + * Digital only supports addresses 0-4, which can be configured by jumpers JP1
  21024. + * and JP2.
  21025. + *
  21026. + * You can tell the driver about these jumper configurations with the
  21027. + * spi-present-mask bitmask:
  21028. + *
  21029. + * | JP1 | JP2 | dtoverlay line in /boot/config.txt |
  21030. + * | --- | --- | ------------------------------------------ |
  21031. + * | 0 | 0 | dtoverlay=pifacedigital |
  21032. + * | 0 | 0 | dtoverlay=pifacedigital:spi-present-mask=1 |
  21033. + * | 0 | 1 | dtoverlay=pifacedigital:spi-present-mask=2 |
  21034. + * | 1 | 0 | dtoverlay=pifacedigital:spi-present-mask=4 |
  21035. + * | 1 | 1 | dtoverlay=pifacedigital:spi-present-mask=8 |
  21036. + *
  21037. + * # Example
  21038. + * Set the dtoverlay config in /boot/config.txt and power off the Raspberry Pi:
  21039. + *
  21040. + * $ grep pifacedigital /boot/config.txt
  21041. + * dtoverlay=pifacedigital
  21042. + * $ sudo systemctl poweroff
  21043. + *
  21044. + * Attach the PiFace Digital and power on the Raspberry Pi.
  21045. + * Then use the libgpiod tools to query the device:
  21046. + *
  21047. + * $ sudo apt install gpiod
  21048. + * $ gpiodetect | grep mcp23s17
  21049. + * gpiochip2 [mcp23s17.0] (16 lines)
  21050. + *
  21051. + * Set GPIO outputs 0, 2 and 5:
  21052. + *
  21053. + * $ gpioset gpiochip2 0=1 2=1 5=1
  21054. + *
  21055. + * Get GPIO status (input GPIO 8..15 are high, because they are active-low):
  21056. + *
  21057. + * $ gpioget gpiochip2 {8..15}
  21058. + * 1 1 1 1 1 1 1 1
  21059. + *
  21060. + * And even monitor interrupts:
  21061. + *
  21062. + * $ gpiomon gpiochip2 {8..15}
  21063. + * event: FALLING EDGE offset: 11 timestamp: [1597361662.926741667]
  21064. + * event: RISING EDGE offset: 11 timestamp: [1597361663.062555051]
  21065. + *
  21066. + */
  21067. +
  21068. +/dts-v1/;
  21069. +/plugin/;
  21070. +
  21071. +/ {
  21072. + compatible = "brcm,bcm2835";
  21073. +
  21074. + /* Disable exposing /dev/spidev0.0 */
  21075. + fragment@0 {
  21076. + target = <&spidev0>;
  21077. + __overlay__ {
  21078. + status = "disabled";
  21079. + };
  21080. + };
  21081. +
  21082. + /* Add the PiFace Digital device node to the spi0.0 device. */
  21083. + fragment@1 {
  21084. + target = <&spi0>;
  21085. + __overlay__ {
  21086. + status = "okay";
  21087. + #address-cells = <1>;
  21088. + #size-cells = <0>;
  21089. +
  21090. + pfdigital: pifacedigital@0 {
  21091. + compatible = "microchip,mcp23s17";
  21092. + reg = <0>;
  21093. +
  21094. + /* Set devices present with 8-bit mask. */
  21095. + microchip,spi-present-mask = <0x01>;
  21096. + spi-max-frequency = <500000>;
  21097. +
  21098. + gpio-controller;
  21099. + #gpio-cells = <2>;
  21100. +
  21101. + /* This device can pass through interrupts. */
  21102. + interrupt-controller;
  21103. + #interrupt-cells = <2>;
  21104. +
  21105. + /* INTB is connected to GPIO 25.
  21106. + * 0x8 active-low level-sensitive
  21107. + */
  21108. + interrupts = <25 0x8>;
  21109. + interrupt-parent = <&gpio>;
  21110. +
  21111. + /* Configure pull-ups on bank B GPIOs */
  21112. + pinctrl-0 = <&pfdigital_irq &pfdigital_pullups>;
  21113. + pinctrl-names = "default";
  21114. + pfdigital_pullups: pinmux {
  21115. + pins =
  21116. + "gpio8",
  21117. + "gpio9",
  21118. + "gpio10",
  21119. + "gpio11",
  21120. + "gpio12",
  21121. + "gpio13",
  21122. + "gpio14",
  21123. + "gpio15";
  21124. + bias-pull-up;
  21125. + };
  21126. + };
  21127. + };
  21128. + };
  21129. +
  21130. + /* PiFace Digital mcp23s17 INTB pin is connected to GPIO 25. The INTB
  21131. + * pin is configured active-low (0 on interrupt), so expect to see
  21132. + * FALLING_EDGE when inputs are bridged to ground (switch is pressed).
  21133. + */
  21134. + fragment@3 {
  21135. + target = <&gpio>;
  21136. + __overlay__ {
  21137. + pfdigital_irq: pifacedigital_irq {
  21138. + brcm,pins = <25>;
  21139. + brcm,function = <0>; /* input */
  21140. + };
  21141. + };
  21142. + };
  21143. +
  21144. + __overrides__ {
  21145. + spi-present-mask = <&pfdigital>, "microchip,spi-present-mask:0";
  21146. + };
  21147. +};
  21148. diff --git a/arch/arm/boot/dts/overlays/pifi-40-overlay.dts b/arch/arm/boot/dts/overlays/pifi-40-overlay.dts
  21149. new file mode 100644
  21150. index 000000000000..51a20e54977f
  21151. --- /dev/null
  21152. +++ b/arch/arm/boot/dts/overlays/pifi-40-overlay.dts
  21153. @@ -0,0 +1,50 @@
  21154. +// Definitions for PiFi-40 Amp
  21155. +/dts-v1/;
  21156. +/plugin/;
  21157. +#include <dt-bindings/gpio/gpio.h>
  21158. +/ {
  21159. + compatible = "brcm,bcm2835";
  21160. +
  21161. + fragment@0 {
  21162. + target = <&i2s>;
  21163. + __overlay__ {
  21164. + status = "okay";
  21165. + };
  21166. + };
  21167. +
  21168. + fragment@1 {
  21169. + target = <&i2c1>;
  21170. + __overlay__ {
  21171. + #address-cells = <1>;
  21172. + #size-cells = <0>;
  21173. + status = "okay";
  21174. +
  21175. + tas5711l: audio-codec@1a {
  21176. + compatible = "ti,tas5711";
  21177. + reg = <0x1a>;
  21178. + #sound-dai-cells = <0>;
  21179. + sound-name-prefix = "Left";
  21180. + status = "okay";
  21181. + };
  21182. +
  21183. + tas5711r: audio-codec@1b {
  21184. + compatible = "ti,tas5711";
  21185. + reg = <0x1b>;
  21186. + #sound-dai-cells = <0>;
  21187. + sound-name-prefix = "Right";
  21188. + status = "okay";
  21189. + };
  21190. + };
  21191. + };
  21192. +
  21193. + fragment@2 {
  21194. + target = <&sound>;
  21195. + pifi_40: __overlay__ {
  21196. + compatible = "pifi,pifi-40";
  21197. + audio-codec = <&tas5711l &tas5711r>;
  21198. + i2s-controller = <&i2s>;
  21199. + pdn-gpios = <&gpio 23 1>;
  21200. + status = "okay";
  21201. + };
  21202. + };
  21203. +};
  21204. diff --git a/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts b/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts
  21205. new file mode 100644
  21206. index 000000000000..67f50db7861a
  21207. --- /dev/null
  21208. +++ b/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts
  21209. @@ -0,0 +1,49 @@
  21210. +// Overlay for PiFi-DAC-HD
  21211. +/dts-v1/;
  21212. +/plugin/;
  21213. +
  21214. +/ {
  21215. + compatible = "brcm,bcm2835";
  21216. +
  21217. + fragment@0 {
  21218. + target = <&i2s>;
  21219. + __overlay__ {
  21220. + status = "okay";
  21221. + };
  21222. + };
  21223. +
  21224. + fragment@1 {
  21225. + target = <&i2c1>;
  21226. + __overlay__ {
  21227. + status = "okay";
  21228. + #address-cells = <1>;
  21229. + #size-cells =<0>;
  21230. +
  21231. + pcm5142: pcm5142@4c {
  21232. + #sound-dai-cells = <0>;
  21233. + compatible = "ti,pcm5142";
  21234. + reg = <0x4c>;
  21235. + status = "okay";
  21236. + };
  21237. + };
  21238. + };
  21239. +
  21240. + fragment@2 {
  21241. + target = <&sound>;
  21242. + __overlay__ {
  21243. + compatible = "simple-audio-card";
  21244. + simple-audio-card,name = "PiFi-DAC-HD";
  21245. + status = "okay";
  21246. +
  21247. + simple-audio-card,dai-link@1 {
  21248. + format = "i2s";
  21249. + cpu {
  21250. + sound-dai = <&i2s>;
  21251. + };
  21252. + codec {
  21253. + sound-dai = <&pcm5142>;
  21254. + };
  21255. + };
  21256. + };
  21257. + };
  21258. +};
  21259. diff --git a/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts b/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts
  21260. new file mode 100644
  21261. index 000000000000..645ea74cb435
  21262. --- /dev/null
  21263. +++ b/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts
  21264. @@ -0,0 +1,49 @@
  21265. +// Overlay for PiFi-DAC-Zero
  21266. +/dts-v1/;
  21267. +/plugin/;
  21268. +
  21269. +/ {
  21270. + compatible = "brcm,bcm2835";
  21271. +
  21272. + fragment@0 {
  21273. + target = <&sound>;
  21274. + __overlay__ {
  21275. + compatible = "simple-audio-card";
  21276. + simple-audio-card,name = "PiFi-DAC-Zero";
  21277. + status = "okay";
  21278. +
  21279. + simple-audio-card,dai-link@1 {
  21280. + format = "i2s";
  21281. +
  21282. + cpu {
  21283. + sound-dai = <&i2s>;
  21284. + dai-tdm-slot-num = <2>;
  21285. + dai-tdm-slot-width = <32>;
  21286. + };
  21287. +
  21288. + codec {
  21289. + sound-dai = <&codec_out>;
  21290. + };
  21291. + };
  21292. + };
  21293. + };
  21294. +
  21295. + fragment@1 {
  21296. + target-path = "/";
  21297. + __overlay__ {
  21298. + codec_out: pcm5102a-codec {
  21299. + #sound-dai-cells = <0>;
  21300. + compatible = "ti,pcm5102a";
  21301. + status = "okay";
  21302. + };
  21303. + };
  21304. + };
  21305. +
  21306. + fragment@2 {
  21307. + target = <&i2s>;
  21308. + __overlay__ {
  21309. + #sound-dai-cells = <0>;
  21310. + status = "okay";
  21311. + };
  21312. + };
  21313. +};
  21314. diff --git a/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts b/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts
  21315. new file mode 100644
  21316. index 000000000000..963597d611b5
  21317. --- /dev/null
  21318. +++ b/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts
  21319. @@ -0,0 +1,42 @@
  21320. +// Definitions for PiFi Mini 210
  21321. +/dts-v1/;
  21322. +/plugin/;
  21323. +
  21324. +/ {
  21325. + compatible = "brcm,bcm2835";
  21326. +
  21327. + fragment@0 {
  21328. + target = <&i2s>;
  21329. + __overlay__ {
  21330. + status = "okay";
  21331. + };
  21332. + };
  21333. +
  21334. + fragment@1 {
  21335. + target = <&i2c1>;
  21336. + __overlay__ {
  21337. + #address-cells = <1>;
  21338. + #size-cells = <0>;
  21339. + status = "okay";
  21340. +
  21341. + tas5711@1a {
  21342. + #sound-dai-cells = <0>;
  21343. + compatible = "ti,tas5711";
  21344. + reg = <0x1a>;
  21345. + status = "okay";
  21346. + pdn-gpios = <&gpio 23 1>;
  21347. + reset-gpios = <&gpio 24 1>;
  21348. + };
  21349. + };
  21350. + };
  21351. +
  21352. + fragment@2 {
  21353. + target = <&sound>;
  21354. + __overlay__ {
  21355. + compatible = "pifi,pifi-mini-210";
  21356. + i2s-controller = <&i2s>;
  21357. +
  21358. + status = "okay";
  21359. + };
  21360. + };
  21361. +};
  21362. diff --git a/arch/arm/boot/dts/overlays/piglow-overlay.dts b/arch/arm/boot/dts/overlays/piglow-overlay.dts
  21363. new file mode 100644
  21364. index 000000000000..075bceef158c
  21365. --- /dev/null
  21366. +++ b/arch/arm/boot/dts/overlays/piglow-overlay.dts
  21367. @@ -0,0 +1,97 @@
  21368. +// Definitions for SN3218 LED driver from Si-En Technology on PiGlow
  21369. +/dts-v1/;
  21370. +/plugin/;
  21371. +
  21372. +/ {
  21373. + compatible = "brcm,bcm2835";
  21374. +
  21375. + fragment@0 {
  21376. + target = <&i2c_arm>;
  21377. + __overlay__ {
  21378. + #address-cells = <1>;
  21379. + #size-cells = <0>;
  21380. + status = "okay";
  21381. +
  21382. + sn3218@54 {
  21383. + compatible = "si-en,sn3218";
  21384. + reg = <0x54>;
  21385. + #address-cells = <1>;
  21386. + #size-cells = <0>;
  21387. + status = "okay";
  21388. +
  21389. + led@1 {
  21390. + reg = <1>;
  21391. + label = "piglow:red:led1";
  21392. + };
  21393. + led@2 {
  21394. + reg = <2>;
  21395. + label = "piglow:orange:led2";
  21396. + };
  21397. + led@3 {
  21398. + reg = <3>;
  21399. + label = "piglow:yellow:led3";
  21400. + };
  21401. + led@4 {
  21402. + reg = <4>;
  21403. + label = "piglow:green:led4";
  21404. + };
  21405. + led@5 {
  21406. + reg = <5>;
  21407. + label = "piglow:blue:led5";
  21408. + };
  21409. + led@6 {
  21410. + reg = <6>;
  21411. + label = "piglow:green:led6";
  21412. + };
  21413. + led@7 {
  21414. + reg = <7>;
  21415. + label = "piglow:red:led7";
  21416. + };
  21417. + led@8 {
  21418. + reg = <8>;
  21419. + label = "piglow:orange:led8";
  21420. + };
  21421. + led@9 {
  21422. + reg = <9>;
  21423. + label = "piglow:yellow:led9";
  21424. + };
  21425. + led@10 {
  21426. + reg = <10>;
  21427. + label = "piglow:white:led10";
  21428. + };
  21429. + led@11 {
  21430. + reg = <11>;
  21431. + label = "piglow:white:led11";
  21432. + };
  21433. + led@12 {
  21434. + reg = <12>;
  21435. + label = "piglow:blue:led12";
  21436. + };
  21437. + led@13 {
  21438. + reg = <13>;
  21439. + label = "piglow:white:led13";
  21440. + };
  21441. + led@14 {
  21442. + reg = <14>;
  21443. + label = "piglow:green:led14";
  21444. + };
  21445. + led@15 {
  21446. + reg = <15>;
  21447. + label = "piglow:blue:led15";
  21448. + };
  21449. + led@16 {
  21450. + reg = <16>;
  21451. + label = "piglow:yellow:led16";
  21452. + };
  21453. + led@17 {
  21454. + reg = <17>;
  21455. + label = "piglow:orange:led17";
  21456. + };
  21457. + led@18 {
  21458. + reg = <18>;
  21459. + label = "piglow:red:led18";
  21460. + };
  21461. + };
  21462. + };
  21463. + };
  21464. +};
  21465. diff --git a/arch/arm/boot/dts/overlays/piscreen-overlay.dts b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
  21466. new file mode 100644
  21467. index 000000000000..1ac75a248fab
  21468. --- /dev/null
  21469. +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
  21470. @@ -0,0 +1,102 @@
  21471. +/*
  21472. + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
  21473. + *
  21474. + */
  21475. +
  21476. +/dts-v1/;
  21477. +/plugin/;
  21478. +
  21479. +/ {
  21480. + compatible = "brcm,bcm2835";
  21481. +
  21482. + fragment@0 {
  21483. + target = <&spi0>;
  21484. + __overlay__ {
  21485. + status = "okay";
  21486. + };
  21487. + };
  21488. +
  21489. + fragment@1 {
  21490. + target = <&spidev0>;
  21491. + __overlay__ {
  21492. + status = "disabled";
  21493. + };
  21494. + };
  21495. +
  21496. + fragment@2 {
  21497. + target = <&spidev1>;
  21498. + __overlay__ {
  21499. + status = "disabled";
  21500. + };
  21501. + };
  21502. +
  21503. + fragment@3 {
  21504. + target = <&gpio>;
  21505. + __overlay__ {
  21506. + piscreen_pins: piscreen_pins {
  21507. + brcm,pins = <17 25 24 22>;
  21508. + brcm,function = <0 1 1 1>; /* in out out out */
  21509. + };
  21510. + };
  21511. + };
  21512. +
  21513. + fragment@4 {
  21514. + target = <&spi0>;
  21515. + __overlay__ {
  21516. + /* needed to avoid dtc warning */
  21517. + #address-cells = <1>;
  21518. + #size-cells = <0>;
  21519. +
  21520. + piscreen: piscreen@0{
  21521. + compatible = "ilitek,ili9486";
  21522. + reg = <0>;
  21523. + pinctrl-names = "default";
  21524. + pinctrl-0 = <&piscreen_pins>;
  21525. +
  21526. + spi-max-frequency = <24000000>;
  21527. + rotate = <270>;
  21528. + bgr;
  21529. + fps = <30>;
  21530. + buswidth = <8>;
  21531. + regwidth = <16>;
  21532. + reset-gpios = <&gpio 25 1>;
  21533. + dc-gpios = <&gpio 24 0>;
  21534. + led-gpios = <&gpio 22 0>;
  21535. + debug = <0>;
  21536. +
  21537. + init = <0x10000b0 0x00
  21538. + 0x1000011
  21539. + 0x20000ff
  21540. + 0x100003a 0x55
  21541. + 0x1000036 0x28
  21542. + 0x10000c2 0x44
  21543. + 0x10000c5 0x00 0x00 0x00 0x00
  21544. + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
  21545. + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
  21546. + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
  21547. + 0x1000011
  21548. + 0x1000029>;
  21549. + };
  21550. +
  21551. + piscreen_ts: piscreen-ts@1 {
  21552. + compatible = "ti,ads7846";
  21553. + reg = <1>;
  21554. +
  21555. + spi-max-frequency = <2000000>;
  21556. + interrupts = <17 2>; /* high-to-low edge triggered */
  21557. + interrupt-parent = <&gpio>;
  21558. + pendown-gpio = <&gpio 17 0>;
  21559. + ti,swap-xy;
  21560. + ti,x-plate-ohms = /bits/ 16 <100>;
  21561. + ti,pressure-max = /bits/ 16 <255>;
  21562. + };
  21563. + };
  21564. + };
  21565. + __overrides__ {
  21566. + speed = <&piscreen>,"spi-max-frequency:0";
  21567. + rotate = <&piscreen>,"rotate:0";
  21568. + fps = <&piscreen>,"fps:0";
  21569. + debug = <&piscreen>,"debug:0";
  21570. + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
  21571. + };
  21572. +};
  21573. diff --git a/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
  21574. new file mode 100644
  21575. index 000000000000..9d2b51101969
  21576. --- /dev/null
  21577. +++ b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
  21578. @@ -0,0 +1,106 @@
  21579. + /*
  21580. + * Device Tree overlay for PiScreen2 3.5" TFT with resistive touch by Ozzmaker.com
  21581. + *
  21582. + */
  21583. +
  21584. +/dts-v1/;
  21585. +/plugin/;
  21586. +
  21587. +/ {
  21588. + compatible = "brcm,bcm2835";
  21589. +
  21590. + fragment@0 {
  21591. + target = <&spi0>;
  21592. + __overlay__ {
  21593. + status = "okay";
  21594. + };
  21595. + };
  21596. +
  21597. + fragment@1 {
  21598. + target = <&spidev0>;
  21599. + __overlay__ {
  21600. + status = "disabled";
  21601. + };
  21602. + };
  21603. +
  21604. + fragment@2 {
  21605. + target = <&spidev1>;
  21606. + __overlay__ {
  21607. + status = "disabled";
  21608. + };
  21609. + };
  21610. +
  21611. + fragment@3 {
  21612. + target = <&gpio>;
  21613. + __overlay__ {
  21614. + piscreen2_pins: piscreen2_pins {
  21615. + brcm,pins = <17 25 24 22>;
  21616. + brcm,function = <0 1 1 1>; /* in out out out */
  21617. + };
  21618. + };
  21619. + };
  21620. +
  21621. + fragment@4 {
  21622. + target = <&spi0>;
  21623. + __overlay__ {
  21624. + /* needed to avoid dtc warning */
  21625. + #address-cells = <1>;
  21626. + #size-cells = <0>;
  21627. +
  21628. + piscreen2: piscreen2@0{
  21629. + compatible = "ilitek,ili9486";
  21630. + reg = <0>;
  21631. + pinctrl-names = "default";
  21632. + pinctrl-0 = <&piscreen2_pins>;
  21633. + bgr;
  21634. + spi-max-frequency = <64000000>;
  21635. + rotate = <90>;
  21636. + fps = <30>;
  21637. + buswidth = <8>;
  21638. + regwidth = <16>;
  21639. + txbuflen = <32768>;
  21640. + reset-gpios = <&gpio 25 1>;
  21641. + dc-gpios = <&gpio 24 0>;
  21642. + led-gpios = <&gpio 22 0>;
  21643. + debug = <0>;
  21644. +
  21645. + init = <0x10000b0 0x00
  21646. + 0x1000011
  21647. + 0x20000ff
  21648. + 0x100003a 0x55
  21649. + 0x1000036 0x28
  21650. + 0x10000c0 0x11 0x09
  21651. + 0x10000c1 0x41
  21652. + 0x10000c5 0x00 0x00 0x00 0x00
  21653. + 0x10000b6 0x00 0x02
  21654. + 0x10000f7 0xa9 0x51 0x2c 0x2
  21655. + 0x10000be 0x00 0x04
  21656. + 0x10000e9 0x00
  21657. + 0x1000011
  21658. + 0x1000029>;
  21659. +
  21660. + };
  21661. +
  21662. + piscreen2_ts: piscreen2-ts@1 {
  21663. + compatible = "ti,ads7846";
  21664. + reg = <1>;
  21665. +
  21666. + spi-max-frequency = <2000000>;
  21667. + interrupts = <17 2>; /* high-to-low edge triggered */
  21668. + interrupt-parent = <&gpio>;
  21669. + pendown-gpio = <&gpio 17 0>;
  21670. + ti,swap-xy;
  21671. + ti,x-plate-ohms = /bits/ 16 <100>;
  21672. + ti,pressure-max = /bits/ 16 <255>;
  21673. + };
  21674. + };
  21675. + };
  21676. + __overrides__ {
  21677. + speed = <&piscreen2>,"spi-max-frequency:0";
  21678. + rotate = <&piscreen2>,"rotate:0";
  21679. + fps = <&piscreen2>,"fps:0";
  21680. + debug = <&piscreen2>,"debug:0";
  21681. + xohms = <&piscreen2_ts>,"ti,x-plate-ohms;0";
  21682. + };
  21683. +};
  21684. +
  21685. diff --git a/arch/arm/boot/dts/overlays/pisound-overlay.dts b/arch/arm/boot/dts/overlays/pisound-overlay.dts
  21686. new file mode 100644
  21687. index 000000000000..49efb2b768fb
  21688. --- /dev/null
  21689. +++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
  21690. @@ -0,0 +1,120 @@
  21691. +/*
  21692. + * Pisound Linux kernel module.
  21693. + * Copyright (C) 2016-2017 Vilniaus Blokas UAB, https://blokas.io/pisound
  21694. + *
  21695. + * This program is free software; you can redistribute it and/or
  21696. + * modify it under the terms of the GNU General Public License
  21697. + * as published by the Free Software Foundation; version 2 of the
  21698. + * License.
  21699. + *
  21700. + * This program is distributed in the hope that it will be useful,
  21701. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21702. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  21703. + * GNU General Public License for more details.
  21704. + *
  21705. + * You should have received a copy of the GNU General Public License
  21706. + * along with this program; if not, write to the Free Software
  21707. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  21708. + */
  21709. +
  21710. +/dts-v1/;
  21711. +/plugin/;
  21712. +
  21713. +#include <dt-bindings/gpio/gpio.h>
  21714. +
  21715. +/ {
  21716. + compatible = "brcm,bcm2835";
  21717. +
  21718. + fragment@0 {
  21719. + target = <&spi0>;
  21720. + __overlay__ {
  21721. + status = "okay";
  21722. + };
  21723. + };
  21724. +
  21725. + fragment@1 {
  21726. + target = <&spidev0>;
  21727. + __overlay__ {
  21728. + status = "disabled";
  21729. + };
  21730. + };
  21731. +
  21732. + fragment@2 {
  21733. + target = <&spidev1>;
  21734. + __overlay__ {
  21735. + status = "okay";
  21736. + };
  21737. + };
  21738. +
  21739. + fragment@3 {
  21740. + target = <&spi0>;
  21741. + __overlay__ {
  21742. + #address-cells = <1>;
  21743. + #size-cells = <0>;
  21744. +
  21745. + pisound_spi: pisound_spi@0{
  21746. + compatible = "blokaslabs,pisound-spi";
  21747. + reg = <0>;
  21748. + pinctrl-names = "default";
  21749. + pinctrl-0 = <&spi0_pins>;
  21750. + spi-max-frequency = <1000000>;
  21751. + };
  21752. + };
  21753. + };
  21754. +
  21755. + fragment@4 {
  21756. + target-path = "/";
  21757. + __overlay__ {
  21758. + pcm5102a-codec {
  21759. + #sound-dai-cells = <0>;
  21760. + compatible = "ti,pcm5102a";
  21761. + status = "okay";
  21762. + };
  21763. + };
  21764. + };
  21765. +
  21766. + fragment@5 {
  21767. + target = <&sound>;
  21768. + __overlay__ {
  21769. + compatible = "blokaslabs,pisound";
  21770. + i2s-controller = <&i2s>;
  21771. + status = "okay";
  21772. +
  21773. + pinctrl-0 = <&pisound_button_pins>;
  21774. +
  21775. + osr-gpios =
  21776. + <&gpio 13 GPIO_ACTIVE_HIGH>,
  21777. + <&gpio 26 GPIO_ACTIVE_HIGH>,
  21778. + <&gpio 16 GPIO_ACTIVE_HIGH>;
  21779. +
  21780. + reset-gpios =
  21781. + <&gpio 12 GPIO_ACTIVE_HIGH>,
  21782. + <&gpio 24 GPIO_ACTIVE_HIGH>;
  21783. +
  21784. + data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
  21785. +
  21786. + button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
  21787. + };
  21788. + };
  21789. +
  21790. + fragment@6 {
  21791. + target = <&gpio>;
  21792. + __overlay__ {
  21793. + pinctrl-names = "default";
  21794. + pinctrl-0 = <&pisound_button_pins>;
  21795. +
  21796. + pisound_button_pins: pisound_button_pins {
  21797. + brcm,pins = <17>;
  21798. + brcm,function = <0>; // Input
  21799. + brcm,pull = <2>; // Pull-Up
  21800. + };
  21801. + };
  21802. + };
  21803. +
  21804. + fragment@7 {
  21805. + target = <&i2s>;
  21806. + __overlay__ {
  21807. + status = "okay";
  21808. + };
  21809. + };
  21810. +};
  21811. diff --git a/arch/arm/boot/dts/overlays/pitft22-overlay.dts b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
  21812. new file mode 100644
  21813. index 000000000000..589ad13795b1
  21814. --- /dev/null
  21815. +++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
  21816. @@ -0,0 +1,69 @@
  21817. +/*
  21818. + * Device Tree overlay for pitft by Adafruit
  21819. + *
  21820. + */
  21821. +
  21822. +/dts-v1/;
  21823. +/plugin/;
  21824. +
  21825. +/ {
  21826. + compatible = "brcm,bcm2835";
  21827. +
  21828. + fragment@0 {
  21829. + target = <&spi0>;
  21830. + __overlay__ {
  21831. + status = "okay";
  21832. +
  21833. + spidev@0{
  21834. + status = "disabled";
  21835. + };
  21836. +
  21837. + spidev@1{
  21838. + status = "disabled";
  21839. + };
  21840. + };
  21841. + };
  21842. +
  21843. + fragment@1 {
  21844. + target = <&gpio>;
  21845. + __overlay__ {
  21846. + pitft_pins: pitft_pins {
  21847. + brcm,pins = <25>;
  21848. + brcm,function = <1>; /* out */
  21849. + brcm,pull = <0>; /* none */
  21850. + };
  21851. + };
  21852. + };
  21853. +
  21854. + fragment@2 {
  21855. + target = <&spi0>;
  21856. + __overlay__ {
  21857. + /* needed to avoid dtc warning */
  21858. + #address-cells = <1>;
  21859. + #size-cells = <0>;
  21860. +
  21861. + pitft: pitft@0{
  21862. + compatible = "ilitek,ili9340";
  21863. + reg = <0>;
  21864. + pinctrl-names = "default";
  21865. + pinctrl-0 = <&pitft_pins>;
  21866. +
  21867. + spi-max-frequency = <32000000>;
  21868. + rotate = <90>;
  21869. + fps = <25>;
  21870. + bgr;
  21871. + buswidth = <8>;
  21872. + dc-gpios = <&gpio 25 0>;
  21873. + debug = <0>;
  21874. + };
  21875. +
  21876. + };
  21877. + };
  21878. +
  21879. + __overrides__ {
  21880. + speed = <&pitft>,"spi-max-frequency:0";
  21881. + rotate = <&pitft>,"rotate:0";
  21882. + fps = <&pitft>,"fps:0";
  21883. + debug = <&pitft>,"debug:0";
  21884. + };
  21885. +};
  21886. diff --git a/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
  21887. new file mode 100644
  21888. index 000000000000..33901ee1db7a
  21889. --- /dev/null
  21890. +++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
  21891. @@ -0,0 +1,91 @@
  21892. +/*
  21893. + * Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
  21894. + *
  21895. + */
  21896. +
  21897. +/dts-v1/;
  21898. +/plugin/;
  21899. +
  21900. +/ {
  21901. + compatible = "brcm,bcm2835";
  21902. +
  21903. + fragment@0 {
  21904. + target = <&spi0>;
  21905. + __overlay__ {
  21906. + status = "okay";
  21907. + };
  21908. + };
  21909. +
  21910. + fragment@1 {
  21911. + target = <&spidev0>;
  21912. + __overlay__ {
  21913. + status = "disabled";
  21914. + };
  21915. + };
  21916. +
  21917. + fragment@2 {
  21918. + target = <&gpio>;
  21919. + __overlay__ {
  21920. + pitft_pins: pitft_pins {
  21921. + brcm,pins = <24 25>;
  21922. + brcm,function = <0 1>; /* in out */
  21923. + brcm,pull = <2 0>; /* pullup none */
  21924. + };
  21925. + };
  21926. + };
  21927. +
  21928. + fragment@3 {
  21929. + target = <&spi0>;
  21930. + __overlay__ {
  21931. + /* needed to avoid dtc warning */
  21932. + #address-cells = <1>;
  21933. + #size-cells = <0>;
  21934. +
  21935. + pitft: pitft@0{
  21936. + compatible = "ilitek,ili9340";
  21937. + reg = <0>;
  21938. + pinctrl-names = "default";
  21939. + pinctrl-0 = <&pitft_pins>;
  21940. +
  21941. + spi-max-frequency = <32000000>;
  21942. + rotate = <90>;
  21943. + fps = <25>;
  21944. + bgr;
  21945. + buswidth = <8>;
  21946. + dc-gpios = <&gpio 25 0>;
  21947. + debug = <0>;
  21948. + };
  21949. + };
  21950. + };
  21951. +
  21952. + fragment@4 {
  21953. + target = <&i2c1>;
  21954. + __overlay__ {
  21955. + /* needed to avoid dtc warning */
  21956. + #address-cells = <1>;
  21957. + #size-cells = <0>;
  21958. +
  21959. + ft6236: ft6236@38 {
  21960. + compatible = "focaltech,ft6236";
  21961. + reg = <0x38>;
  21962. +
  21963. + interrupt-parent = <&gpio>;
  21964. + interrupts = <24 2>;
  21965. + touchscreen-size-x = <240>;
  21966. + touchscreen-size-y = <320>;
  21967. + };
  21968. + };
  21969. + };
  21970. +
  21971. + __overrides__ {
  21972. + speed = <&pitft>,"spi-max-frequency:0";
  21973. + rotate = <&pitft>,"rotate:0";
  21974. + fps = <&pitft>,"fps:0";
  21975. + debug = <&pitft>,"debug:0";
  21976. + touch-sizex = <&ft6236>,"touchscreen-size-x?";
  21977. + touch-sizey = <&ft6236>,"touchscreen-size-y?";
  21978. + touch-invx = <&ft6236>,"touchscreen-inverted-x?";
  21979. + touch-invy = <&ft6236>,"touchscreen-inverted-y?";
  21980. + touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
  21981. + };
  21982. +};
  21983. diff --git a/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
  21984. new file mode 100644
  21985. index 000000000000..4a4a3f44c29d
  21986. --- /dev/null
  21987. +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
  21988. @@ -0,0 +1,119 @@
  21989. +/*
  21990. + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
  21991. + *
  21992. + */
  21993. +
  21994. +/dts-v1/;
  21995. +/plugin/;
  21996. +
  21997. +/ {
  21998. + compatible = "brcm,bcm2835";
  21999. +
  22000. + fragment@0 {
  22001. + target = <&spi0>;
  22002. + __overlay__ {
  22003. + status = "okay";
  22004. + };
  22005. + };
  22006. +
  22007. + fragment@1 {
  22008. + target = <&spidev0>;
  22009. + __overlay__ {
  22010. + status = "disabled";
  22011. + };
  22012. + };
  22013. +
  22014. + fragment@2 {
  22015. + target = <&spidev1>;
  22016. + __overlay__ {
  22017. + status = "disabled";
  22018. + };
  22019. + };
  22020. +
  22021. + fragment@3 {
  22022. + target = <&gpio>;
  22023. + __overlay__ {
  22024. + pitft_pins: pitft_pins {
  22025. + brcm,pins = <24 25>;
  22026. + brcm,function = <0 1>; /* in out */
  22027. + brcm,pull = <2 0>; /* pullup none */
  22028. + };
  22029. + };
  22030. + };
  22031. +
  22032. + fragment@4 {
  22033. + target = <&spi0>;
  22034. + __overlay__ {
  22035. + /* needed to avoid dtc warning */
  22036. + #address-cells = <1>;
  22037. + #size-cells = <0>;
  22038. +
  22039. + pitft: pitft@0{
  22040. + compatible = "ilitek,ili9340";
  22041. + reg = <0>;
  22042. + pinctrl-names = "default";
  22043. + pinctrl-0 = <&pitft_pins>;
  22044. +
  22045. + spi-max-frequency = <32000000>;
  22046. + rotate = <90>;
  22047. + fps = <25>;
  22048. + bgr;
  22049. + buswidth = <8>;
  22050. + dc-gpios = <&gpio 25 0>;
  22051. + debug = <0>;
  22052. + };
  22053. +
  22054. + pitft_ts@1 {
  22055. + compatible = "st,stmpe610";
  22056. + reg = <1>;
  22057. +
  22058. + spi-max-frequency = <500000>;
  22059. + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
  22060. + interrupts = <24 2>; /* high-to-low edge triggered */
  22061. + interrupt-parent = <&gpio>;
  22062. + interrupt-controller;
  22063. +
  22064. + stmpe_touchscreen {
  22065. + compatible = "st,stmpe-ts";
  22066. + st,sample-time = <4>;
  22067. + st,mod-12b = <1>;
  22068. + st,ref-sel = <0>;
  22069. + st,adc-freq = <2>;
  22070. + st,ave-ctrl = <3>;
  22071. + st,touch-det-delay = <4>;
  22072. + st,settling = <2>;
  22073. + st,fraction-z = <7>;
  22074. + st,i-drive = <0>;
  22075. + };
  22076. +
  22077. + stmpe_gpio: stmpe_gpio {
  22078. + #gpio-cells = <2>;
  22079. + compatible = "st,stmpe-gpio";
  22080. + /*
  22081. + * only GPIO2 is wired/available
  22082. + * and it is wired to the backlight
  22083. + */
  22084. + st,norequest-mask = <0x7b>;
  22085. + };
  22086. + };
  22087. + };
  22088. + };
  22089. +
  22090. + fragment@5 {
  22091. + target-path = "/soc";
  22092. + __overlay__ {
  22093. + backlight {
  22094. + compatible = "gpio-backlight";
  22095. + gpios = <&stmpe_gpio 2 0>;
  22096. + default-on;
  22097. + };
  22098. + };
  22099. + };
  22100. +
  22101. + __overrides__ {
  22102. + speed = <&pitft>,"spi-max-frequency:0";
  22103. + rotate = <&pitft>,"rotate:0";
  22104. + fps = <&pitft>,"fps:0";
  22105. + debug = <&pitft>,"debug:0";
  22106. + };
  22107. +};
  22108. diff --git a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
  22109. new file mode 100644
  22110. index 000000000000..37629f18a740
  22111. --- /dev/null
  22112. +++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
  22113. @@ -0,0 +1,119 @@
  22114. +/*
  22115. + * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen
  22116. + *
  22117. + */
  22118. +
  22119. +/dts-v1/;
  22120. +/plugin/;
  22121. +
  22122. +/ {
  22123. + compatible = "brcm,bcm2835";
  22124. +
  22125. + fragment@0 {
  22126. + target = <&spi0>;
  22127. + __overlay__ {
  22128. + status = "okay";
  22129. + };
  22130. + };
  22131. +
  22132. + fragment@1 {
  22133. + target = <&spidev0>;
  22134. + __overlay__ {
  22135. + status = "disabled";
  22136. + };
  22137. + };
  22138. +
  22139. + fragment@2 {
  22140. + target = <&spidev1>;
  22141. + __overlay__ {
  22142. + status = "disabled";
  22143. + };
  22144. + };
  22145. +
  22146. + fragment@3 {
  22147. + target = <&gpio>;
  22148. + __overlay__ {
  22149. + pitft_pins: pitft_pins {
  22150. + brcm,pins = <24 25>;
  22151. + brcm,function = <0 1>; /* in out */
  22152. + brcm,pull = <2 0>; /* pullup none */
  22153. + };
  22154. + };
  22155. + };
  22156. +
  22157. + fragment@4 {
  22158. + target = <&spi0>;
  22159. + __overlay__ {
  22160. + /* needed to avoid dtc warning */
  22161. + #address-cells = <1>;
  22162. + #size-cells = <0>;
  22163. +
  22164. + pitft: pitft@0{
  22165. + compatible = "himax,hx8357d", "adafruit,yx350hv15";
  22166. + reg = <0>;
  22167. + pinctrl-names = "default";
  22168. + pinctrl-0 = <&pitft_pins>;
  22169. +
  22170. + spi-max-frequency = <32000000>;
  22171. + rotate = <90>;
  22172. + fps = <25>;
  22173. + bgr;
  22174. + buswidth = <8>;
  22175. + dc-gpios = <&gpio 25 0>;
  22176. + debug = <0>;
  22177. + };
  22178. +
  22179. + pitft_ts@1 {
  22180. + compatible = "st,stmpe610";
  22181. + reg = <1>;
  22182. +
  22183. + spi-max-frequency = <500000>;
  22184. + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
  22185. + interrupts = <24 2>; /* high-to-low edge triggered */
  22186. + interrupt-parent = <&gpio>;
  22187. + interrupt-controller;
  22188. +
  22189. + stmpe_touchscreen {
  22190. + compatible = "st,stmpe-ts";
  22191. + st,sample-time = <4>;
  22192. + st,mod-12b = <1>;
  22193. + st,ref-sel = <0>;
  22194. + st,adc-freq = <2>;
  22195. + st,ave-ctrl = <3>;
  22196. + st,touch-det-delay = <4>;
  22197. + st,settling = <2>;
  22198. + st,fraction-z = <7>;
  22199. + st,i-drive = <0>;
  22200. + };
  22201. +
  22202. + stmpe_gpio: stmpe_gpio {
  22203. + #gpio-cells = <2>;
  22204. + compatible = "st,stmpe-gpio";
  22205. + /*
  22206. + * only GPIO2 is wired/available
  22207. + * and it is wired to the backlight
  22208. + */
  22209. + st,norequest-mask = <0x7b>;
  22210. + };
  22211. + };
  22212. + };
  22213. + };
  22214. +
  22215. + fragment@5 {
  22216. + target-path = "/soc";
  22217. + __overlay__ {
  22218. + backlight {
  22219. + compatible = "gpio-backlight";
  22220. + gpios = <&stmpe_gpio 2 0>;
  22221. + default-on;
  22222. + };
  22223. + };
  22224. + };
  22225. +
  22226. + __overrides__ {
  22227. + speed = <&pitft>,"spi-max-frequency:0";
  22228. + rotate = <&pitft>,"rotate:0";
  22229. + fps = <&pitft>,"fps:0";
  22230. + debug = <&pitft>,"debug:0";
  22231. + };
  22232. +};
  22233. diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
  22234. new file mode 100644
  22235. index 000000000000..524a1c1d3670
  22236. --- /dev/null
  22237. +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
  22238. @@ -0,0 +1,38 @@
  22239. +/dts-v1/;
  22240. +/plugin/;
  22241. +
  22242. +/ {
  22243. + compatible = "brcm,bcm2835";
  22244. + fragment@0 {
  22245. + target-path = "/";
  22246. + __overlay__ {
  22247. + pps: pps@12 {
  22248. + compatible = "pps-gpio";
  22249. + pinctrl-names = "default";
  22250. + pinctrl-0 = <&pps_pins>;
  22251. + gpios = <&gpio 18 0>;
  22252. + status = "okay";
  22253. + };
  22254. + };
  22255. + };
  22256. +
  22257. + fragment@1 {
  22258. + target = <&gpio>;
  22259. + __overlay__ {
  22260. + pps_pins: pps_pins@12 {
  22261. + brcm,pins = <18>;
  22262. + brcm,function = <0>; // in
  22263. + brcm,pull = <0>; // off
  22264. + };
  22265. + };
  22266. + };
  22267. +
  22268. + __overrides__ {
  22269. + gpiopin = <&pps>,"gpios:4",
  22270. + <&pps>,"reg:0",
  22271. + <&pps_pins>,"brcm,pins:0",
  22272. + <&pps_pins>,"reg:0";
  22273. + assert_falling_edge = <&pps>,"assert-falling-edge?";
  22274. + capture_clear = <&pps>,"capture-clear?";
  22275. + };
  22276. +};
  22277. diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
  22278. new file mode 100644
  22279. index 000000000000..4ddbbfa04065
  22280. --- /dev/null
  22281. +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
  22282. @@ -0,0 +1,49 @@
  22283. +/dts-v1/;
  22284. +/plugin/;
  22285. +
  22286. +/*
  22287. +This is the 2-channel overlay - only use it if you need both channels.
  22288. +
  22289. +Legal pin,function combinations for each channel:
  22290. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  22291. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  22292. +
  22293. +N.B.:
  22294. + 1) Pin 18 is the only one available on all platforms, and
  22295. + it is the one used by the I2S audio interface.
  22296. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  22297. + 2) The onboard analogue audio output uses both PWM channels.
  22298. + 3) So be careful mixing audio and PWM.
  22299. +*/
  22300. +
  22301. +/ {
  22302. + compatible = "brcm,bcm2835";
  22303. +
  22304. + fragment@0 {
  22305. + target = <&gpio>;
  22306. + __overlay__ {
  22307. + pwm_pins: pwm_pins {
  22308. + brcm,pins = <18 19>;
  22309. + brcm,function = <2 2>; /* Alt5 */
  22310. + };
  22311. + };
  22312. + };
  22313. +
  22314. + fragment@1 {
  22315. + target = <&pwm>;
  22316. + frag1: __overlay__ {
  22317. + pinctrl-names = "default";
  22318. + pinctrl-0 = <&pwm_pins>;
  22319. + assigned-clock-rates = <100000000>;
  22320. + status = "okay";
  22321. + };
  22322. + };
  22323. +
  22324. + __overrides__ {
  22325. + pin = <&pwm_pins>,"brcm,pins:0";
  22326. + pin2 = <&pwm_pins>,"brcm,pins:4";
  22327. + func = <&pwm_pins>,"brcm,function:0";
  22328. + func2 = <&pwm_pins>,"brcm,function:4";
  22329. + clock = <&frag1>,"assigned-clock-rates:0";
  22330. + };
  22331. +};
  22332. diff --git a/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
  22333. new file mode 100644
  22334. index 000000000000..119caf746b3b
  22335. --- /dev/null
  22336. +++ b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
  22337. @@ -0,0 +1,40 @@
  22338. +/dts-v1/;
  22339. +/plugin/;
  22340. +
  22341. +/ {
  22342. + compatible = "brcm,bcm2835";
  22343. +
  22344. + fragment@0 {
  22345. + target = <&gpio>;
  22346. + __overlay__ {
  22347. + pwm0_pins: pwm0_pins {
  22348. + brcm,pins = <18>;
  22349. + brcm,function = <2>; /* Alt5 */
  22350. + };
  22351. + };
  22352. + };
  22353. +
  22354. + fragment@1 {
  22355. + target = <&pwm>;
  22356. + __overlay__ {
  22357. + pinctrl-names = "default";
  22358. + pinctrl-0 = <&pwm0_pins>;
  22359. + status = "okay";
  22360. + };
  22361. + };
  22362. +
  22363. + fragment@2 {
  22364. + target-path = "/";
  22365. + __overlay__ {
  22366. + pwm-ir-transmitter {
  22367. + compatible = "pwm-ir-tx";
  22368. + pwms = <&pwm 0 100>;
  22369. + };
  22370. + };
  22371. + };
  22372. +
  22373. + __overrides__ {
  22374. + gpio_pin = <&pwm0_pins>, "brcm,pins:0";
  22375. + func = <&pwm0_pins>,"brcm,function:0";
  22376. + };
  22377. +};
  22378. diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts
  22379. new file mode 100644
  22380. index 000000000000..92876ab3bc8c
  22381. --- /dev/null
  22382. +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
  22383. @@ -0,0 +1,45 @@
  22384. +/dts-v1/;
  22385. +/plugin/;
  22386. +
  22387. +/*
  22388. +Legal pin,function combinations for each channel:
  22389. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  22390. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  22391. +
  22392. +N.B.:
  22393. + 1) Pin 18 is the only one available on all platforms, and
  22394. + it is the one used by the I2S audio interface.
  22395. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  22396. + 2) The onboard analogue audio output uses both PWM channels.
  22397. + 3) So be careful mixing audio and PWM.
  22398. +*/
  22399. +
  22400. +/ {
  22401. + compatible = "brcm,bcm2835";
  22402. +
  22403. + fragment@0 {
  22404. + target = <&gpio>;
  22405. + __overlay__ {
  22406. + pwm_pins: pwm_pins {
  22407. + brcm,pins = <18>;
  22408. + brcm,function = <2>; /* Alt5 */
  22409. + };
  22410. + };
  22411. + };
  22412. +
  22413. + fragment@1 {
  22414. + target = <&pwm>;
  22415. + frag1: __overlay__ {
  22416. + pinctrl-names = "default";
  22417. + pinctrl-0 = <&pwm_pins>;
  22418. + assigned-clock-rates = <100000000>;
  22419. + status = "okay";
  22420. + };
  22421. + };
  22422. +
  22423. + __overrides__ {
  22424. + pin = <&pwm_pins>,"brcm,pins:0";
  22425. + func = <&pwm_pins>,"brcm,function:0";
  22426. + clock = <&frag1>,"assigned-clock-rates:0";
  22427. + };
  22428. +};
  22429. diff --git a/arch/arm/boot/dts/overlays/qca7000-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
  22430. new file mode 100644
  22431. index 000000000000..f695f36024fa
  22432. --- /dev/null
  22433. +++ b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
  22434. @@ -0,0 +1,55 @@
  22435. +// Overlay for the Qualcomm Atheros QCA7000 on PLC Stamp micro EVK
  22436. +// Visit: https://in-tech-smartcharging.com/products/evaluation-tools/plc-stamp-micro-2-evaluation-board for details
  22437. +
  22438. +/dts-v1/;
  22439. +/plugin/;
  22440. +
  22441. +/ {
  22442. + compatible = "brcm,bcm2835";
  22443. +
  22444. + fragment@0 {
  22445. + target = <&spidev0>;
  22446. + __overlay__ {
  22447. + status = "disabled";
  22448. + };
  22449. + };
  22450. +
  22451. + fragment@1 {
  22452. + target = <&spi0>;
  22453. + __overlay__ {
  22454. + /* needed to avoid dtc warning */
  22455. + #address-cells = <1>;
  22456. + #size-cells = <0>;
  22457. +
  22458. + status = "okay";
  22459. +
  22460. + eth1: qca7000@0 {
  22461. + compatible = "qca,qca7000";
  22462. + reg = <0>; /* CE0 */
  22463. + pinctrl-names = "default";
  22464. + pinctrl-0 = <&eth1_pins>;
  22465. + interrupt-parent = <&gpio>;
  22466. + interrupts = <23 0x1>; /* rising edge */
  22467. + spi-max-frequency = <12000000>;
  22468. + status = "okay";
  22469. + };
  22470. + };
  22471. + };
  22472. +
  22473. + fragment@2 {
  22474. + target = <&gpio>;
  22475. + __overlay__ {
  22476. + eth1_pins: eth1_pins {
  22477. + brcm,pins = <23>;
  22478. + brcm,function = <0>; /* in */
  22479. + brcm,pull = <0>; /* none */
  22480. + };
  22481. + };
  22482. + };
  22483. +
  22484. + __overrides__ {
  22485. + int_pin = <&eth1>, "interrupts:0",
  22486. + <&eth1_pins>, "brcm,pins:0";
  22487. + speed = <&eth1>, "spi-max-frequency:0";
  22488. + };
  22489. +};
  22490. diff --git a/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts
  22491. new file mode 100644
  22492. index 000000000000..5dee70853289
  22493. --- /dev/null
  22494. +++ b/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts
  22495. @@ -0,0 +1,46 @@
  22496. +// Overlay for the Qualcomm Atheros QCA7000 on PLC Stamp micro EVK
  22497. +// Visit: https://in-tech-smartcharging.com/products/evaluation-tools/plc-stamp-micro-2-evaluation-board for details
  22498. +
  22499. +/dts-v1/;
  22500. +/plugin/;
  22501. +
  22502. +/ {
  22503. + compatible = "brcm,bcm2835";
  22504. +
  22505. + fragment@0 {
  22506. + target = <&uart0>;
  22507. + __overlay__ {
  22508. + pinctrl-names = "default";
  22509. + pinctrl-0 = <&uart0_pins>;
  22510. + status = "okay";
  22511. +
  22512. + eth2: qca7000 {
  22513. + compatible = "qca,qca7000";
  22514. + current-speed = <115200>;
  22515. + };
  22516. + };
  22517. + };
  22518. +
  22519. + fragment@1 {
  22520. + target = <&gpio>;
  22521. + __overlay__ {
  22522. + uart0_pins: uart0_pins {
  22523. + brcm,pins = <14 15>;
  22524. + brcm,function = <4>; /* alt0 */
  22525. + brcm,pull = <0 2>;
  22526. + };
  22527. + };
  22528. + };
  22529. +
  22530. + fragment@2 {
  22531. + target-path = "/aliases";
  22532. + __overlay__ {
  22533. + serial0 = "/soc/serial@7e201000";
  22534. + serial1 = "/soc/serial@7e215040";
  22535. + };
  22536. + };
  22537. +
  22538. + __overrides__ {
  22539. + baudrate = <&eth2>, "current-speed:0";
  22540. + };
  22541. +};
  22542. diff --git a/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
  22543. new file mode 100644
  22544. index 000000000000..ea1d952734e9
  22545. --- /dev/null
  22546. +++ b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
  22547. @@ -0,0 +1,59 @@
  22548. +// Device tree overlay for GPIO connected rotary encoder.
  22549. +/dts-v1/;
  22550. +/plugin/;
  22551. +
  22552. +/ {
  22553. + compatible = "brcm,bcm2835";
  22554. +
  22555. + fragment@0 {
  22556. + target = <&gpio>;
  22557. + __overlay__ {
  22558. + rotary_pins: rotary_pins@4 {
  22559. + brcm,pins = <4 17>; /* gpio 4 17 */
  22560. + brcm,function = <0 0>; /* input */
  22561. + brcm,pull = <2 2>; /* pull-up */
  22562. + };
  22563. +
  22564. + };
  22565. + };
  22566. +
  22567. + fragment@1 {
  22568. + target-path = "/";
  22569. + __overlay__ {
  22570. + rotary: rotary@4 {
  22571. + compatible = "rotary-encoder";
  22572. + status = "okay";
  22573. + pinctrl-names = "default";
  22574. + pinctrl-0 = <&rotary_pins>;
  22575. + gpios = <&gpio 4 0>, <&gpio 17 0>;
  22576. + linux,axis = <0>; /* REL_X */
  22577. + rotary-encoder,encoding = "gray";
  22578. + rotary-encoder,steps = <24>; /* 24 default */
  22579. + rotary-encoder,steps-per-period = <1>; /* corresponds to full period mode. See README */
  22580. + };
  22581. + };
  22582. +
  22583. + };
  22584. +
  22585. + __overrides__ {
  22586. + pin_a = <&rotary>,"gpios:4",
  22587. + <&rotary_pins>,"brcm,pins:0",
  22588. + /* modify reg values to allow multiple instantiation */
  22589. + <&rotary>,"reg:0",
  22590. + <&rotary_pins>,"reg:0";
  22591. + pin_b = <&rotary>,"gpios:16",
  22592. + <&rotary_pins>,"brcm,pins:4";
  22593. + relative_axis = <&rotary>,"rotary-encoder,relative-axis?";
  22594. + linux_axis = <&rotary>,"linux,axis:0";
  22595. + rollover = <&rotary>,"rotary-encoder,rollover?";
  22596. + steps-per-period = <&rotary>,"rotary-encoder,steps-per-period:0";
  22597. + steps = <&rotary>,"rotary-encoder,steps:0";
  22598. + wakeup = <&rotary>,"wakeup-source?";
  22599. + encoding = <&rotary>,"rotary-encoder,encoding";
  22600. + /* legacy parameters*/
  22601. + rotary0_pin_a = <&rotary>,"gpios:4",
  22602. + <&rotary_pins>,"brcm,pins:0";
  22603. + rotary0_pin_b = <&rotary>,"gpios:16",
  22604. + <&rotary_pins>,"brcm,pins:4";
  22605. + };
  22606. +};
  22607. diff --git a/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
  22608. new file mode 100644
  22609. index 000000000000..cac5e44c6ec5
  22610. --- /dev/null
  22611. +++ b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
  22612. @@ -0,0 +1,21 @@
  22613. +/*
  22614. + * Devicetree overlay for mailbox-driven Raspberry Pi DSI Display
  22615. + * backlight controller
  22616. + */
  22617. +/dts-v1/;
  22618. +/plugin/;
  22619. +
  22620. +/ {
  22621. + compatible = "brcm,bcm2835";
  22622. +
  22623. + fragment@0 {
  22624. + target-path = "/";
  22625. + __overlay__ {
  22626. + rpi_backlight: rpi_backlight {
  22627. + compatible = "raspberrypi,rpi-backlight";
  22628. + firmware = <&firmware>;
  22629. + status = "okay";
  22630. + };
  22631. + };
  22632. + };
  22633. +};
  22634. diff --git a/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
  22635. new file mode 100644
  22636. index 000000000000..ed0c2745399f
  22637. --- /dev/null
  22638. +++ b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
  22639. @@ -0,0 +1,172 @@
  22640. +// Definitions for the Cirrus Logic Audio Card
  22641. +/dts-v1/;
  22642. +/plugin/;
  22643. +#include <dt-bindings/pinctrl/bcm2835.h>
  22644. +#include <dt-bindings/gpio/gpio.h>
  22645. +#include <dt-bindings/mfd/arizona.h>
  22646. +
  22647. +/ {
  22648. + compatible = "brcm,bcm2835";
  22649. +
  22650. + fragment@0 {
  22651. + target = <&i2s>;
  22652. + __overlay__ {
  22653. + status = "okay";
  22654. + };
  22655. + };
  22656. +
  22657. + fragment@1 {
  22658. + target = <&gpio>;
  22659. + __overlay__ {
  22660. + wlf_5102_pins: wlf_5102_pins {
  22661. + brcm,pins = <17 22 27>;
  22662. + brcm,function = <
  22663. + BCM2835_FSEL_GPIO_OUT
  22664. + BCM2835_FSEL_GPIO_OUT
  22665. + BCM2835_FSEL_GPIO_IN
  22666. + >;
  22667. + };
  22668. + wlf_8804_pins: wlf_8804_pins {
  22669. + brcm,pins = <8>;
  22670. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  22671. + };
  22672. + };
  22673. + };
  22674. +
  22675. + fragment@2 {
  22676. + target = <&spi0_cs_pins>;
  22677. + __overlay__ {
  22678. + brcm,pins = <7>;
  22679. + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
  22680. + };
  22681. + };
  22682. +
  22683. +
  22684. + fragment@3 {
  22685. + target-path = "/";
  22686. + __overlay__ {
  22687. + rpi_cirrus_reg_1v8: rpi_cirrus_reg_1v8 {
  22688. + compatible = "regulator-fixed";
  22689. + regulator-name = "RPi-Cirrus 1v8";
  22690. + regulator-min-microvolt = <1800000>;
  22691. + regulator-max-microvolt = <1800000>;
  22692. + regulator-always-on;
  22693. + };
  22694. + };
  22695. + };
  22696. +
  22697. + fragment@4 {
  22698. + target = <&spidev0>;
  22699. + __overlay__ {
  22700. + status = "disabled";
  22701. + };
  22702. + };
  22703. +
  22704. + fragment@5 {
  22705. + target = <&spidev1>;
  22706. + __overlay__ {
  22707. + status = "disabled";
  22708. + };
  22709. + };
  22710. +
  22711. + fragment@6 {
  22712. + target = <&spi0>;
  22713. + __overlay__ {
  22714. + #address-cells = <1>;
  22715. + #size-cells = <0>;
  22716. + status = "okay";
  22717. + cs-gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
  22718. +
  22719. + wm5102@0{
  22720. + compatible = "wlf,wm5102";
  22721. + reg = <0>;
  22722. +
  22723. + pinctrl-names = "default";
  22724. + pinctrl-0 = <&wlf_5102_pins>;
  22725. +
  22726. + spi-max-frequency = <500000>;
  22727. +
  22728. + interrupt-parent = <&gpio>;
  22729. + interrupts = <27 8>;
  22730. + interrupt-controller;
  22731. + #interrupt-cells = <2>;
  22732. +
  22733. + gpio-controller;
  22734. + #gpio-cells = <2>;
  22735. +
  22736. + LDOVDD-supply = <&rpi_cirrus_reg_1v8>;
  22737. + AVDD-supply = <&rpi_cirrus_reg_1v8>;
  22738. + DBVDD1-supply = <&rpi_cirrus_reg_1v8>;
  22739. + DBVDD2-supply = <&vdd_3v3_reg>;
  22740. + DBVDD3-supply = <&vdd_3v3_reg>;
  22741. + CPVDD-supply = <&rpi_cirrus_reg_1v8>;
  22742. + SPKVDDL-supply = <&vdd_5v0_reg>;
  22743. + SPKVDDR-supply = <&vdd_5v0_reg>;
  22744. + DCVDD-supply = <&arizona_ldo1>;
  22745. +
  22746. + reset-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
  22747. + wlf,ldoena = <&gpio 22 GPIO_ACTIVE_HIGH>;
  22748. + wlf,gpio-defaults = <
  22749. + ARIZONA_GP_DEFAULT
  22750. + ARIZONA_GP_DEFAULT
  22751. + ARIZONA_GP_DEFAULT
  22752. + ARIZONA_GP_DEFAULT
  22753. + ARIZONA_GP_DEFAULT
  22754. + >;
  22755. + wlf,micd-configs = <0 1 0>;
  22756. + wlf,dmic-ref = <
  22757. + ARIZONA_DMIC_MICVDD
  22758. + ARIZONA_DMIC_MICBIAS2
  22759. + ARIZONA_DMIC_MICVDD
  22760. + ARIZONA_DMIC_MICVDD
  22761. + >;
  22762. + wlf,inmode = <
  22763. + ARIZONA_INMODE_DIFF
  22764. + ARIZONA_INMODE_DMIC
  22765. + ARIZONA_INMODE_SE
  22766. + ARIZONA_INMODE_DIFF
  22767. + >;
  22768. + status = "okay";
  22769. +
  22770. + arizona_ldo1: ldo1 {
  22771. + regulator-name = "LDO1";
  22772. + // default constraints as in
  22773. + // arizona-ldo1.c
  22774. + regulator-min-microvolt = <1200000>;
  22775. + regulator-max-microvolt = <1800000>;
  22776. + };
  22777. + };
  22778. + };
  22779. + };
  22780. +
  22781. + fragment@7 {
  22782. + target = <&i2c1>;
  22783. + __overlay__ {
  22784. + status = "okay";
  22785. + #address-cells = <1>;
  22786. + #size-cells = <0>;
  22787. +
  22788. + wm8804@3b {
  22789. + compatible = "wlf,wm8804";
  22790. + reg = <0x3b>;
  22791. + status = "okay";
  22792. +
  22793. + pinctrl-names = "default";
  22794. + pinctrl-0 = <&wlf_8804_pins>;
  22795. +
  22796. + PVDD-supply = <&vdd_3v3_reg>;
  22797. + DVDD-supply = <&vdd_3v3_reg>;
  22798. + wlf,reset-gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
  22799. + };
  22800. + };
  22801. + };
  22802. +
  22803. + fragment@8 {
  22804. + target = <&sound>;
  22805. + __overlay__ {
  22806. + compatible = "wlf,rpi-cirrus";
  22807. + i2s-controller = <&i2s>;
  22808. + status = "okay";
  22809. + };
  22810. + };
  22811. +};
  22812. diff --git a/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
  22813. new file mode 100644
  22814. index 000000000000..07a915342702
  22815. --- /dev/null
  22816. +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
  22817. @@ -0,0 +1,34 @@
  22818. +// Definitions for RPi DAC
  22819. +/dts-v1/;
  22820. +/plugin/;
  22821. +
  22822. +/ {
  22823. + compatible = "brcm,bcm2835";
  22824. +
  22825. + fragment@0 {
  22826. + target = <&i2s>;
  22827. + __overlay__ {
  22828. + status = "okay";
  22829. + };
  22830. + };
  22831. +
  22832. + fragment@1 {
  22833. + target-path = "/";
  22834. + __overlay__ {
  22835. + pcm1794a-codec {
  22836. + #sound-dai-cells = <0>;
  22837. + compatible = "ti,pcm1794a";
  22838. + status = "okay";
  22839. + };
  22840. + };
  22841. + };
  22842. +
  22843. + fragment@2 {
  22844. + target = <&sound>;
  22845. + __overlay__ {
  22846. + compatible = "rpi,rpi-dac";
  22847. + i2s-controller = <&i2s>;
  22848. + status = "okay";
  22849. + };
  22850. + };
  22851. +};
  22852. diff --git a/arch/arm/boot/dts/overlays/rpi-display-overlay.dts b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
  22853. new file mode 100644
  22854. index 000000000000..de87432ff2be
  22855. --- /dev/null
  22856. +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
  22857. @@ -0,0 +1,91 @@
  22858. +/*
  22859. + * Device Tree overlay for rpi-display by Watterott
  22860. + *
  22861. + */
  22862. +
  22863. +/dts-v1/;
  22864. +/plugin/;
  22865. +
  22866. +/ {
  22867. + compatible = "brcm,bcm2835";
  22868. +
  22869. + fragment@0 {
  22870. + target = <&spi0>;
  22871. + __overlay__ {
  22872. + status = "okay";
  22873. + };
  22874. + };
  22875. +
  22876. + fragment@1 {
  22877. + target = <&spidev0>;
  22878. + __overlay__ {
  22879. + status = "disabled";
  22880. + };
  22881. + };
  22882. +
  22883. + fragment@2 {
  22884. + target = <&spidev1>;
  22885. + __overlay__ {
  22886. + status = "disabled";
  22887. + };
  22888. + };
  22889. +
  22890. + fragment@3 {
  22891. + target = <&gpio>;
  22892. + __overlay__ {
  22893. + rpi_display_pins: rpi_display_pins {
  22894. + brcm,pins = <18 23 24 25>;
  22895. + brcm,function = <1 1 1 0>; /* out out out in */
  22896. + brcm,pull = <0 0 0 2>; /* - - - up */
  22897. + };
  22898. + };
  22899. + };
  22900. +
  22901. + fragment@4 {
  22902. + target = <&spi0>;
  22903. + __overlay__ {
  22904. + /* needed to avoid dtc warning */
  22905. + #address-cells = <1>;
  22906. + #size-cells = <0>;
  22907. +
  22908. + rpidisplay: rpi-display@0{
  22909. + compatible = "ilitek,ili9341";
  22910. + reg = <0>;
  22911. + pinctrl-names = "default";
  22912. + pinctrl-0 = <&rpi_display_pins>;
  22913. +
  22914. + spi-max-frequency = <32000000>;
  22915. + rotate = <270>;
  22916. + bgr;
  22917. + fps = <30>;
  22918. + buswidth = <8>;
  22919. + reset-gpios = <&gpio 23 1>;
  22920. + dc-gpios = <&gpio 24 0>;
  22921. + led-gpios = <&gpio 18 0>;
  22922. + debug = <0>;
  22923. + };
  22924. +
  22925. + rpidisplay_ts: rpi-display-ts@1 {
  22926. + compatible = "ti,ads7846";
  22927. + reg = <1>;
  22928. +
  22929. + spi-max-frequency = <2000000>;
  22930. + interrupts = <25 2>; /* high-to-low edge triggered */
  22931. + interrupt-parent = <&gpio>;
  22932. + pendown-gpio = <&gpio 25 1>;
  22933. + ti,x-plate-ohms = /bits/ 16 <60>;
  22934. + ti,pressure-max = /bits/ 16 <255>;
  22935. + };
  22936. + };
  22937. + };
  22938. + __overrides__ {
  22939. + speed = <&rpidisplay>,"spi-max-frequency:0";
  22940. + rotate = <&rpidisplay>,"rotate:0";
  22941. + fps = <&rpidisplay>,"fps:0";
  22942. + debug = <&rpidisplay>,"debug:0";
  22943. + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
  22944. + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
  22945. + backlight = <&rpidisplay>,"led-gpios:4",
  22946. + <&rpi_display_pins>,"brcm,pins:0";
  22947. + };
  22948. +};
  22949. diff --git a/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
  22950. new file mode 100644
  22951. index 000000000000..8483c4f4b2eb
  22952. --- /dev/null
  22953. +++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
  22954. @@ -0,0 +1,25 @@
  22955. +/dts-v1/;
  22956. +/plugin/;
  22957. +
  22958. +/ {
  22959. + compatible = "brcm,bcm2835";
  22960. +
  22961. + fragment@0 {
  22962. + target-path = "/soc/firmware";
  22963. + __overlay__ {
  22964. + ts: touchscreen {
  22965. + compatible = "raspberrypi,firmware-ts";
  22966. + touchscreen-size-x = <800>;
  22967. + touchscreen-size-y = <480>;
  22968. + };
  22969. + };
  22970. + };
  22971. +
  22972. + __overrides__ {
  22973. + touchscreen-size-x = <&ts>,"touchscreen-size-x:0";
  22974. + touchscreen-size-y = <&ts>,"touchscreen-size-y:0";
  22975. + touchscreen-inverted-x = <&ts>,"touchscreen-inverted-x?";
  22976. + touchscreen-inverted-y = <&ts>,"touchscreen-inverted-y?";
  22977. + touchscreen-swapped-x-y = <&ts>,"touchscreen-swapped-x-y?";
  22978. + };
  22979. +};
  22980. diff --git a/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
  22981. new file mode 100644
  22982. index 000000000000..1eeac4854db4
  22983. --- /dev/null
  22984. +++ b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
  22985. @@ -0,0 +1,102 @@
  22986. +/*
  22987. + * Overlay for the Raspberry Pi POE HAT.
  22988. + */
  22989. +/dts-v1/;
  22990. +/plugin/;
  22991. +
  22992. +/ {
  22993. + compatible = "brcm,bcm2835";
  22994. +
  22995. + fragment@0 {
  22996. + target = <&firmware>;
  22997. + __overlay__ {
  22998. + fwpwm: pwm {
  22999. + compatible = "raspberrypi,firmware-poe-pwm";
  23000. + #pwm-cells = <2>;
  23001. + };
  23002. + };
  23003. + };
  23004. +
  23005. + fragment@1 {
  23006. + target-path = "/";
  23007. + __overlay__ {
  23008. + fan: pwm-fan {
  23009. + compatible = "pwm-fan";
  23010. + cooling-levels = <0 1 10 100 255>;
  23011. + #cooling-cells = <2>;
  23012. + pwms = <&fwpwm 0 80000>;
  23013. + };
  23014. + };
  23015. + };
  23016. +
  23017. + fragment@2 {
  23018. + target = <&cpu_thermal>;
  23019. + __overlay__ {
  23020. + trips {
  23021. + trip0: trip0 {
  23022. + temperature = <40000>;
  23023. + hysteresis = <2000>;
  23024. + type = "active";
  23025. + };
  23026. + trip1: trip1 {
  23027. + temperature = <45000>;
  23028. + hysteresis = <2000>;
  23029. + type = "active";
  23030. + };
  23031. + trip2: trip2 {
  23032. + temperature = <50000>;
  23033. + hysteresis = <2000>;
  23034. + type = "active";
  23035. + };
  23036. + trip3: trip3 {
  23037. + temperature = <55000>;
  23038. + hysteresis = <5000>;
  23039. + type = "active";
  23040. + };
  23041. + };
  23042. + cooling-maps {
  23043. + map0 {
  23044. + trip = <&trip0>;
  23045. + cooling-device = <&fan 0 1>;
  23046. + };
  23047. + map1 {
  23048. + trip = <&trip1>;
  23049. + cooling-device = <&fan 1 2>;
  23050. + };
  23051. + map2 {
  23052. + trip = <&trip2>;
  23053. + cooling-device = <&fan 2 3>;
  23054. + };
  23055. + map3 {
  23056. + trip = <&trip3>;
  23057. + cooling-device = <&fan 3 4>;
  23058. + };
  23059. + };
  23060. + };
  23061. + };
  23062. +
  23063. + fragment@3 {
  23064. + target-path = "/__overrides__";
  23065. + __overlay__ {
  23066. + poe_fan_temp0 = <&trip0>,"temperature:0";
  23067. + poe_fan_temp0_hyst = <&trip0>,"hysteresis:0";
  23068. + poe_fan_temp1 = <&trip1>,"temperature:0";
  23069. + poe_fan_temp1_hyst = <&trip1>,"hysteresis:0";
  23070. + poe_fan_temp2 = <&trip2>,"temperature:0";
  23071. + poe_fan_temp2_hyst = <&trip2>,"hysteresis:0";
  23072. + poe_fan_temp3 = <&trip3>,"temperature:0";
  23073. + poe_fan_temp3_hyst = <&trip3>,"hysteresis:0";
  23074. + };
  23075. + };
  23076. +
  23077. + __overrides__ {
  23078. + poe_fan_temp0 = <&trip0>,"temperature:0";
  23079. + poe_fan_temp0_hyst = <&trip0>,"hysteresis:0";
  23080. + poe_fan_temp1 = <&trip1>,"temperature:0";
  23081. + poe_fan_temp1_hyst = <&trip1>,"hysteresis:0";
  23082. + poe_fan_temp2 = <&trip2>,"temperature:0";
  23083. + poe_fan_temp2_hyst = <&trip2>,"hysteresis:0";
  23084. + poe_fan_temp3 = <&trip3>,"temperature:0";
  23085. + poe_fan_temp3_hyst = <&trip3>,"hysteresis:0";
  23086. + };
  23087. +};
  23088. diff --git a/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts b/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts
  23089. new file mode 100644
  23090. index 000000000000..011f92ad33f3
  23091. --- /dev/null
  23092. +++ b/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts
  23093. @@ -0,0 +1,23 @@
  23094. +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
  23095. +// Overlay for the Raspberry Pi PoE+ HAT.
  23096. +
  23097. +#include "rpi-poe-overlay.dts"
  23098. +
  23099. +/ {
  23100. + compatible = "brcm,bcm2835";
  23101. +
  23102. + fragment@10 {
  23103. + target-path = "/";
  23104. + __overlay__ {
  23105. + rpi_poe_power_supply: rpi-poe-power-supply {
  23106. + compatible = "raspberrypi,rpi-poe-power-supply";
  23107. + firmware = <&firmware>;
  23108. + status = "okay";
  23109. + };
  23110. + };
  23111. + };
  23112. +};
  23113. +
  23114. +&fan {
  23115. + cooling-levels = <0 32 64 128 255>;
  23116. +};
  23117. diff --git a/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
  23118. new file mode 100644
  23119. index 000000000000..9cda044a0f62
  23120. --- /dev/null
  23121. +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
  23122. @@ -0,0 +1,39 @@
  23123. +// Definitions for Rpi-Proto
  23124. +/dts-v1/;
  23125. +/plugin/;
  23126. +
  23127. +/ {
  23128. + compatible = "brcm,bcm2835";
  23129. +
  23130. + fragment@0 {
  23131. + target = <&i2s>;
  23132. + __overlay__ {
  23133. + status = "okay";
  23134. + };
  23135. + };
  23136. +
  23137. + fragment@1 {
  23138. + target = <&i2c1>;
  23139. + __overlay__ {
  23140. + #address-cells = <1>;
  23141. + #size-cells = <0>;
  23142. + status = "okay";
  23143. +
  23144. + wm8731@1a {
  23145. + #sound-dai-cells = <0>;
  23146. + compatible = "wlf,wm8731";
  23147. + reg = <0x1a>;
  23148. + status = "okay";
  23149. + };
  23150. + };
  23151. + };
  23152. +
  23153. + fragment@2 {
  23154. + target = <&sound>;
  23155. + __overlay__ {
  23156. + compatible = "rpi,rpi-proto";
  23157. + i2s-controller = <&i2s>;
  23158. + status = "okay";
  23159. + };
  23160. + };
  23161. +};
  23162. diff --git a/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
  23163. new file mode 100644
  23164. index 000000000000..89d8d2ea6b2e
  23165. --- /dev/null
  23166. +++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
  23167. @@ -0,0 +1,47 @@
  23168. +// rpi-sense HAT
  23169. +/dts-v1/;
  23170. +/plugin/;
  23171. +
  23172. +/ {
  23173. + compatible = "brcm,bcm2835";
  23174. +
  23175. + fragment@0 {
  23176. + target = <&i2c1>;
  23177. + __overlay__ {
  23178. + #address-cells = <1>;
  23179. + #size-cells = <0>;
  23180. + status = "okay";
  23181. +
  23182. + rpi-sense@46 {
  23183. + compatible = "rpi,rpi-sense";
  23184. + reg = <0x46>;
  23185. + keys-int-gpios = <&gpio 23 1>;
  23186. + status = "okay";
  23187. + };
  23188. +
  23189. + lsm9ds1-magn@1c {
  23190. + compatible = "st,lsm9ds1-magn";
  23191. + reg = <0x1c>;
  23192. + status = "okay";
  23193. + };
  23194. +
  23195. + lsm9ds1-accel6a {
  23196. + compatible = "st,lsm9ds1-accel";
  23197. + reg = <0x6a>;
  23198. + status = "okay";
  23199. + };
  23200. +
  23201. + lps25h-press@5c {
  23202. + compatible = "st,lps25h-press";
  23203. + reg = <0x5c>;
  23204. + status = "okay";
  23205. + };
  23206. +
  23207. + hts221-humid@5f {
  23208. + compatible = "st,hts221-humid", "st,hts221";
  23209. + reg = <0x5f>;
  23210. + status = "okay";
  23211. + };
  23212. + };
  23213. + };
  23214. +};
  23215. diff --git a/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
  23216. new file mode 100644
  23217. index 000000000000..3c97a545d820
  23218. --- /dev/null
  23219. +++ b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
  23220. @@ -0,0 +1,34 @@
  23221. +// rpi-tv HAT
  23222. +
  23223. +/dts-v1/;
  23224. +/plugin/;
  23225. +
  23226. +/ {
  23227. + compatible = "brcm,bcm2835";
  23228. +
  23229. + fragment@0 {
  23230. + target = <&spidev0>;
  23231. + __overlay__ {
  23232. + status = "disabled";
  23233. + };
  23234. + };
  23235. +
  23236. + fragment@1 {
  23237. + target = <&spi0>;
  23238. + __overlay__ {
  23239. + /* needed to avoid dtc warning */
  23240. + #address-cells = <1>;
  23241. + #size-cells = <0>;
  23242. +
  23243. + status = "okay";
  23244. +
  23245. + cxd2880@0 {
  23246. + compatible = "sony,cxd2880";
  23247. + reg = <0>; /* CE0 */
  23248. + spi-max-frequency = <50000000>;
  23249. + status = "okay";
  23250. + };
  23251. + };
  23252. + };
  23253. +
  23254. +};
  23255. diff --git a/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts b/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
  23256. new file mode 100644
  23257. index 000000000000..bdd1c0e5a915
  23258. --- /dev/null
  23259. +++ b/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
  23260. @@ -0,0 +1,50 @@
  23261. +// SPDX-License-Identifier: GPL-2.0-only
  23262. +// Definitions for Raspberry Pi video decode engine
  23263. +/dts-v1/;
  23264. +/plugin/;
  23265. +
  23266. +#include <dt-bindings/interrupt-controller/arm-gic.h>
  23267. +
  23268. +/{
  23269. + compatible = "brcm,bcm2711";
  23270. +
  23271. + fragment@0 {
  23272. + target = <&scb>;
  23273. + __overlay__ {
  23274. + /* needed to avoid dtc warning */
  23275. + #address-cells = <2>;
  23276. + #size-cells = <2>;
  23277. +
  23278. + codec@7eb10000 {
  23279. + compatible = "raspberrypi,rpivid-vid-decoder";
  23280. + reg = <0x0 0x7eb10000 0x0 0x1000>, /* INTC */
  23281. + <0x0 0x7eb00000 0x0 0x10000>; /* HEVC */
  23282. + reg-names = "intc",
  23283. + "hevc";
  23284. +
  23285. + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  23286. +
  23287. + clocks = <&firmware_clocks 11>;
  23288. + clock-names = "hevc";
  23289. + };
  23290. + };
  23291. + };
  23292. +
  23293. + fragment@1 {
  23294. + target = <&scb>;
  23295. + __overlay__ {
  23296. + hevc-decoder@7eb00000 {
  23297. + status = "disabled";
  23298. + };
  23299. + rpivid-local-intc@7eb10000 {
  23300. + status = "disabled";
  23301. + };
  23302. + h264-decoder@7eb20000 {
  23303. + status = "disabled";
  23304. + };
  23305. + vp9-decoder@7eb30000 {
  23306. + status = "disabled";
  23307. + };
  23308. + };
  23309. + };
  23310. +};
  23311. diff --git a/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
  23312. new file mode 100644
  23313. index 000000000000..87e9a326eff1
  23314. --- /dev/null
  23315. +++ b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
  23316. @@ -0,0 +1,49 @@
  23317. +// Definitions for RRA DigiDAC1 Audio card
  23318. +/dts-v1/;
  23319. +/plugin/;
  23320. +
  23321. +/ {
  23322. + compatible = "brcm,bcm2835";
  23323. +
  23324. + fragment@0 {
  23325. + target = <&i2s>;
  23326. + __overlay__ {
  23327. + status = "okay";
  23328. + };
  23329. + };
  23330. +
  23331. + fragment@1 {
  23332. + target = <&i2c1>;
  23333. + __overlay__ {
  23334. + #address-cells = <1>;
  23335. + #size-cells = <0>;
  23336. + status = "okay";
  23337. +
  23338. + wm8804@3b {
  23339. + #sound-dai-cells = <0>;
  23340. + compatible = "wlf,wm8804";
  23341. + reg = <0x3b>;
  23342. + status = "okay";
  23343. + PVDD-supply = <&vdd_3v3_reg>;
  23344. + DVDD-supply = <&vdd_3v3_reg>;
  23345. + };
  23346. +
  23347. + wm8742: wm8741@1a {
  23348. + compatible = "wlf,wm8741";
  23349. + reg = <0x1a>;
  23350. + status = "okay";
  23351. + AVDD-supply = <&vdd_5v0_reg>;
  23352. + DVDD-supply = <&vdd_3v3_reg>;
  23353. + };
  23354. + };
  23355. + };
  23356. +
  23357. + fragment@2 {
  23358. + target = <&sound>;
  23359. + __overlay__ {
  23360. + compatible = "rra,digidac1-soundcard";
  23361. + i2s-controller = <&i2s>;
  23362. + status = "okay";
  23363. + };
  23364. + };
  23365. +};
  23366. diff --git a/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
  23367. new file mode 100644
  23368. index 000000000000..c51f1c030a55
  23369. --- /dev/null
  23370. +++ b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
  23371. @@ -0,0 +1,52 @@
  23372. +/*
  23373. + * Device Tree overlay for the Sainsmart 1.8" TFT LCD with ST7735R chip 160x128
  23374. + */
  23375. +
  23376. +/dts-v1/;
  23377. +/plugin/;
  23378. +
  23379. +/ {
  23380. + compatible = "brcm,bcm2835";
  23381. +
  23382. + fragment@0 {
  23383. + target = <&spidev0>;
  23384. + __overlay__ {
  23385. + status = "disabled";
  23386. + };
  23387. + };
  23388. +
  23389. + fragment@1 {
  23390. + target = <&spi0>;
  23391. + __overlay__ {
  23392. + /* needed to avoid dtc warning */
  23393. + #address-cells = <1>;
  23394. + #size-cells = <0>;
  23395. + status = "okay";
  23396. +
  23397. + ss18: sainsmart18@0 {
  23398. + compatible = "fbtft,sainsmart18";
  23399. + reg = <0>;
  23400. + pinctrl-names = "default";
  23401. + spi-max-frequency = <40000000>;
  23402. + rotate = <90>;
  23403. + buswidth = <8>;
  23404. + fps = <50>;
  23405. + height = <160>;
  23406. + width = <128>;
  23407. + reset-gpios = <&gpio 25 1>;
  23408. + dc-gpios = <&gpio 24 0>;
  23409. + debug = <0>;
  23410. + };
  23411. + };
  23412. + };
  23413. +
  23414. + __overrides__ {
  23415. + speed = <&ss18>,"spi-max-frequency:0";
  23416. + rotate = <&ss18>,"rotate:0";
  23417. + fps = <&ss18>,"fps:0";
  23418. + bgr = <&ss18>,"bgr?";
  23419. + debug = <&ss18>,"debug:0";
  23420. + dc_pin = <&ss18>,"dc-gpios:4";
  23421. + reset_pin = <&ss18>,"reset-gpios:4";
  23422. + };
  23423. +};
  23424. diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
  23425. new file mode 100644
  23426. index 000000000000..04d74d62897b
  23427. --- /dev/null
  23428. +++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
  23429. @@ -0,0 +1,43 @@
  23430. +/dts-v1/;
  23431. +/plugin/;
  23432. +
  23433. +/ {
  23434. + compatible = "brcm,bcm2835";
  23435. +
  23436. + fragment@0 {
  23437. + target = <&i2c_arm>;
  23438. + __overlay__ {
  23439. + #address-cells = <1>;
  23440. + #size-cells = <0>;
  23441. + status = "okay";
  23442. +
  23443. + sc16is750: sc16is750@48 {
  23444. + compatible = "nxp,sc16is750";
  23445. + reg = <0x48>; /* i2c address */
  23446. + clocks = <&sc16is750_clk>;
  23447. + interrupt-parent = <&gpio>;
  23448. + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
  23449. + gpio-controller;
  23450. + #gpio-cells = <2>;
  23451. + i2c-max-frequency = <400000>;
  23452. + };
  23453. + };
  23454. + };
  23455. +
  23456. + fragment@1 {
  23457. + target-path = "/";
  23458. + __overlay__ {
  23459. + sc16is750_clk: sc16is750_i2c_clk@48 {
  23460. + compatible = "fixed-clock";
  23461. + #clock-cells = <0>;
  23462. + clock-frequency = <14745600>;
  23463. + };
  23464. + };
  23465. + };
  23466. +
  23467. + __overrides__ {
  23468. + int_pin = <&sc16is750>,"interrupts:0";
  23469. + addr = <&sc16is750>,"reg:0", <&sc16is750_clk>,"name";
  23470. + xtal = <&sc16is750_clk>,"clock-frequency:0";
  23471. + };
  23472. +};
  23473. diff --git a/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
  23474. new file mode 100644
  23475. index 000000000000..da05e981314c
  23476. --- /dev/null
  23477. +++ b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
  23478. @@ -0,0 +1,43 @@
  23479. +/dts-v1/;
  23480. +/plugin/;
  23481. +
  23482. +/ {
  23483. + compatible = "brcm,bcm2835";
  23484. +
  23485. + fragment@0 {
  23486. + target = <&i2c_arm>;
  23487. + __overlay__ {
  23488. + #address-cells = <1>;
  23489. + #size-cells = <0>;
  23490. + status = "okay";
  23491. +
  23492. + sc16is752: sc16is752@48 {
  23493. + compatible = "nxp,sc16is752";
  23494. + reg = <0x48>; /* i2c address */
  23495. + clocks = <&sc16is752_clk>;
  23496. + interrupt-parent = <&gpio>;
  23497. + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
  23498. + gpio-controller;
  23499. + #gpio-cells = <2>;
  23500. + i2c-max-frequency = <400000>;
  23501. + };
  23502. + };
  23503. + };
  23504. +
  23505. + fragment@1 {
  23506. + target-path = "/";
  23507. + __overlay__ {
  23508. + sc16is752_clk: sc16is752_i2c_clk@48 {
  23509. + compatible = "fixed-clock";
  23510. + #clock-cells = <0>;
  23511. + clock-frequency = <14745600>;
  23512. + };
  23513. + };
  23514. + };
  23515. +
  23516. + __overrides__ {
  23517. + int_pin = <&sc16is752>,"interrupts:0";
  23518. + addr = <&sc16is752>,"reg:0",<&sc16is752_clk>,"name";
  23519. + xtal = <&sc16is752_clk>,"clock-frequency:0";
  23520. + };
  23521. +};
  23522. diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
  23523. new file mode 100644
  23524. index 000000000000..a49a04722b99
  23525. --- /dev/null
  23526. +++ b/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
  23527. @@ -0,0 +1,49 @@
  23528. +/dts-v1/;
  23529. +/plugin/;
  23530. +
  23531. +/ {
  23532. + compatible = "brcm,bcm2835";
  23533. +
  23534. + fragment@0 {
  23535. + target = <&spi0>;
  23536. + __overlay__ {
  23537. + #address-cells = <1>;
  23538. + #size-cells = <0>;
  23539. + status = "okay";
  23540. +
  23541. + sc16is752: sc16is752@0 {
  23542. + compatible = "nxp,sc16is752";
  23543. + reg = <0>; /* CE0 */
  23544. + clocks = <&sc16is752_clk>;
  23545. + interrupt-parent = <&gpio>;
  23546. + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
  23547. + gpio-controller;
  23548. + #gpio-cells = <2>;
  23549. + spi-max-frequency = <4000000>;
  23550. + };
  23551. + };
  23552. + };
  23553. +
  23554. + fragment@1 {
  23555. + target = <&spidev0>;
  23556. + __overlay__ {
  23557. + status = "disabled";
  23558. + };
  23559. + };
  23560. +
  23561. + fragment@2 {
  23562. + target-path = "/";
  23563. + __overlay__ {
  23564. + sc16is752_clk: sc16is752_spi0_0_clk {
  23565. + compatible = "fixed-clock";
  23566. + #clock-cells = <0>;
  23567. + clock-frequency = <14745600>;
  23568. + };
  23569. + };
  23570. + };
  23571. +
  23572. + __overrides__ {
  23573. + int_pin = <&sc16is752>,"interrupts:0";
  23574. + xtal = <&sc16is752_clk>,"clock-frequency:0";
  23575. + };
  23576. +};
  23577. diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
  23578. new file mode 100644
  23579. index 000000000000..730c6e8cd614
  23580. --- /dev/null
  23581. +++ b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
  23582. @@ -0,0 +1,67 @@
  23583. +/dts-v1/;
  23584. +/plugin/;
  23585. +
  23586. +/ {
  23587. + compatible = "brcm,bcm2835";
  23588. +
  23589. + fragment@0 {
  23590. + target = <&gpio>;
  23591. + __overlay__ {
  23592. + spi1_pins: spi1_pins {
  23593. + brcm,pins = <19 20 21>;
  23594. + brcm,function = <3>; /* alt4 */
  23595. + };
  23596. +
  23597. + spi1_cs_pins: spi1_cs_pins {
  23598. + brcm,pins = <18>;
  23599. + brcm,function = <1>; /* output */
  23600. + };
  23601. + };
  23602. + };
  23603. +
  23604. + fragment@1 {
  23605. + target = <&spi1>;
  23606. + __overlay__ {
  23607. + #address-cells = <1>;
  23608. + #size-cells = <0>;
  23609. + pinctrl-names = "default";
  23610. + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
  23611. + cs-gpios = <&gpio 18 1>;
  23612. + status = "okay";
  23613. +
  23614. + sc16is752: sc16is752@0 {
  23615. + compatible = "nxp,sc16is752";
  23616. + reg = <0>; /* CE0 */
  23617. + clocks = <&sc16is752_clk>;
  23618. + interrupt-parent = <&gpio>;
  23619. + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
  23620. + gpio-controller;
  23621. + #gpio-cells = <2>;
  23622. + spi-max-frequency = <4000000>;
  23623. + };
  23624. + };
  23625. + };
  23626. +
  23627. + fragment@2 {
  23628. + target = <&aux>;
  23629. + __overlay__ {
  23630. + status = "okay";
  23631. + };
  23632. + };
  23633. +
  23634. + fragment@3 {
  23635. + target-path = "/";
  23636. + __overlay__ {
  23637. + sc16is752_clk: sc16is752_spi1_0_clk {
  23638. + compatible = "fixed-clock";
  23639. + #clock-cells = <0>;
  23640. + clock-frequency = <14745600>;
  23641. + };
  23642. + };
  23643. + };
  23644. +
  23645. + __overrides__ {
  23646. + int_pin = <&sc16is752>,"interrupts:0";
  23647. + xtal = <&sc16is752_clk>,"clock-frequency:0";
  23648. + };
  23649. +};
  23650. diff --git a/arch/arm/boot/dts/overlays/sdhost-overlay.dts b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
  23651. new file mode 100644
  23652. index 000000000000..0b72b4eeac88
  23653. --- /dev/null
  23654. +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
  23655. @@ -0,0 +1,38 @@
  23656. +/dts-v1/;
  23657. +/plugin/;
  23658. +
  23659. +/* Provide backwards compatible aliases for the old sdhost dtparams. */
  23660. +
  23661. +/{
  23662. + compatible = "brcm,bcm2835";
  23663. +
  23664. + fragment@0 {
  23665. + target = <&sdhost>;
  23666. + frag0: __overlay__ {
  23667. + brcm,overclock-50 = <0>;
  23668. + brcm,pio-limit = <1>;
  23669. + status = "okay";
  23670. + };
  23671. + };
  23672. +
  23673. + fragment@1 {
  23674. + target = <&mmc>;
  23675. + __overlay__ {
  23676. + status = "disabled";
  23677. + };
  23678. + };
  23679. +
  23680. + fragment@2 {
  23681. + target = <&mmcnr>;
  23682. + __overlay__ {
  23683. + status = "disabled";
  23684. + };
  23685. + };
  23686. +
  23687. + __overrides__ {
  23688. + overclock_50 = <&frag0>,"brcm,overclock-50:0";
  23689. + force_pio = <&frag0>,"brcm,force-pio?";
  23690. + pio_limit = <&frag0>,"brcm,pio-limit:0";
  23691. + debug = <&frag0>,"brcm,debug?";
  23692. + };
  23693. +};
  23694. diff --git a/arch/arm/boot/dts/overlays/sdio-overlay.dts b/arch/arm/boot/dts/overlays/sdio-overlay.dts
  23695. new file mode 100644
  23696. index 000000000000..873e49056379
  23697. --- /dev/null
  23698. +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
  23699. @@ -0,0 +1,77 @@
  23700. +/dts-v1/;
  23701. +/plugin/;
  23702. +
  23703. +/* Enable SDIO from MMC interface via various GPIO groups */
  23704. +
  23705. +/{
  23706. + compatible = "brcm,bcm2835";
  23707. +
  23708. + fragment@0 {
  23709. + target = <&mmcnr>;
  23710. + __overlay__ {
  23711. + status = "disabled";
  23712. + };
  23713. + };
  23714. +
  23715. + fragment@1 {
  23716. + target = <&mmc>;
  23717. + sdio_ovl: __overlay__ {
  23718. + pinctrl-0 = <&sdio_ovl_pins>;
  23719. + pinctrl-names = "default";
  23720. + non-removable;
  23721. + bus-width = <4>;
  23722. + status = "okay";
  23723. + };
  23724. + };
  23725. +
  23726. + fragment@2 {
  23727. + target = <&gpio>;
  23728. + __overlay__ {
  23729. + sdio_ovl_pins: sdio_ovl_pins {
  23730. + brcm,pins = <22 23 24 25 26 27>;
  23731. + brcm,function = <7>; /* ALT3 = SD1 */
  23732. + brcm,pull = <0 2 2 2 2 2>;
  23733. + };
  23734. + };
  23735. + };
  23736. +
  23737. + fragment@3 {
  23738. + target = <&sdio_ovl_pins>;
  23739. + __dormant__ {
  23740. + brcm,pins = <22 23 24 25>;
  23741. + brcm,pull = <0 2 2 2>;
  23742. + };
  23743. + };
  23744. +
  23745. + fragment@4 {
  23746. + target = <&sdio_ovl_pins>;
  23747. + __dormant__ {
  23748. + brcm,pins = <34 35 36 37>;
  23749. + brcm,pull = <0 2 2 2>;
  23750. + };
  23751. + };
  23752. +
  23753. + fragment@5 {
  23754. + target = <&sdio_ovl_pins>;
  23755. + __dormant__ {
  23756. + brcm,pins = <34 35 36 37 38 39>;
  23757. + brcm,pull = <0 2 2 2 2 2>;
  23758. + };
  23759. + };
  23760. +
  23761. + fragment@6 {
  23762. + target-path = "/aliases";
  23763. + __overlay__ {
  23764. + mmc1 = "/soc/mmc@7e300000";
  23765. + };
  23766. + };
  23767. +
  23768. + __overrides__ {
  23769. + poll_once = <&sdio_ovl>,"non-removable?";
  23770. + bus_width = <&sdio_ovl>,"bus-width:0";
  23771. + sdio_overclock = <&sdio_ovl>,"brcm,overclock-50:0";
  23772. + gpios_22_25 = <0>,"=3";
  23773. + gpios_34_37 = <0>,"=4";
  23774. + gpios_34_39 = <0>,"=5";
  23775. + };
  23776. +};
  23777. diff --git a/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts
  23778. new file mode 100644
  23779. index 000000000000..210d027a073e
  23780. --- /dev/null
  23781. +++ b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts
  23782. @@ -0,0 +1,138 @@
  23783. +// redo: ovmerge -c spi1-1cs-overlay.dts,cs0_pin=18,cs0_spidev=false mcp251xfd-overlay.dts,spi0-0,interrupt=25 mcp251xfd-overlay.dts,spi1-0,interrupt=24
  23784. +
  23785. +// Device tree overlay for https://www.seeedstudio.com/2-Channel-CAN-BUS-FD-Shield-for-Raspberry-Pi-p-4072.html
  23786. +
  23787. +/dts-v1/;
  23788. +/plugin/;
  23789. +
  23790. +#include <dt-bindings/gpio/gpio.h>
  23791. +#include <dt-bindings/interrupt-controller/irq.h>
  23792. +#include <dt-bindings/pinctrl/bcm2835.h>
  23793. +
  23794. +/ {
  23795. + compatible = "brcm,bcm2835";
  23796. + fragment@0 {
  23797. + target = <&gpio>;
  23798. + __overlay__ {
  23799. + spi1_pins: spi1_pins {
  23800. + brcm,pins = <19 20 21>;
  23801. + brcm,function = <3>;
  23802. + };
  23803. + spi1_cs_pins: spi1_cs_pins {
  23804. + brcm,pins = <18>;
  23805. + brcm,function = <1>;
  23806. + };
  23807. + };
  23808. + };
  23809. + fragment@1 {
  23810. + target = <&spi1>;
  23811. + __overlay__ {
  23812. + #address-cells = <1>;
  23813. + #size-cells = <0>;
  23814. + pinctrl-names = "default";
  23815. + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
  23816. + cs-gpios = <&gpio 18 1>;
  23817. + status = "okay";
  23818. + spidev@0 {
  23819. + compatible = "spidev";
  23820. + reg = <0>;
  23821. + #address-cells = <1>;
  23822. + #size-cells = <0>;
  23823. + spi-max-frequency = <125000000>;
  23824. + status = "disabled";
  23825. + };
  23826. + };
  23827. + };
  23828. + fragment@2 {
  23829. + target = <&aux>;
  23830. + __overlay__ {
  23831. + status = "okay";
  23832. + };
  23833. + };
  23834. + fragment@3 {
  23835. + target = <&spidev0>;
  23836. + __overlay__ {
  23837. + status = "disabled";
  23838. + };
  23839. + };
  23840. + fragment@4 {
  23841. + target = <&gpio>;
  23842. + __overlay__ {
  23843. + mcp251xfd_pins: mcp251xfd_spi0_0_pins {
  23844. + brcm,pins = <25>;
  23845. + brcm,function = <BCM2835_FSEL_GPIO_IN>;
  23846. + };
  23847. + };
  23848. + };
  23849. + fragment@5 {
  23850. + target-path = "/clocks";
  23851. + __overlay__ {
  23852. + clk_mcp251xfd_osc: mcp251xfd-spi0-0-osc {
  23853. + #clock-cells = <0>;
  23854. + compatible = "fixed-clock";
  23855. + clock-frequency = <40000000>;
  23856. + };
  23857. + };
  23858. + };
  23859. + fragment@6 {
  23860. + target = <&spi0>;
  23861. + __overlay__ {
  23862. + status = "okay";
  23863. + #address-cells = <1>;
  23864. + #size-cells = <0>;
  23865. + mcp251xfd@0 {
  23866. + compatible = "microchip,mcp251xfd";
  23867. + reg = <0>;
  23868. + pinctrl-names = "default";
  23869. + pinctrl-0 = <&mcp251xfd_pins>;
  23870. + spi-max-frequency = <20000000>;
  23871. + interrupt-parent = <&gpio>;
  23872. + interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
  23873. + clocks = <&clk_mcp251xfd_osc>;
  23874. + };
  23875. + };
  23876. + };
  23877. + fragment@7 {
  23878. + target-path = "spi1/spidev@0";
  23879. + __overlay__ {
  23880. + status = "disabled";
  23881. + };
  23882. + };
  23883. + fragment@8 {
  23884. + target = <&gpio>;
  23885. + __overlay__ {
  23886. + mcp251xfd_pins_1: mcp251xfd_spi1_0_pins {
  23887. + brcm,pins = <24>;
  23888. + brcm,function = <BCM2835_FSEL_GPIO_IN>;
  23889. + };
  23890. + };
  23891. + };
  23892. + fragment@9 {
  23893. + target-path = "/clocks";
  23894. + __overlay__ {
  23895. + clk_mcp251xfd_osc_1: mcp251xfd-spi1-0-osc {
  23896. + #clock-cells = <0>;
  23897. + compatible = "fixed-clock";
  23898. + clock-frequency = <40000000>;
  23899. + };
  23900. + };
  23901. + };
  23902. + fragment@10 {
  23903. + target = <&spi1>;
  23904. + __overlay__ {
  23905. + status = "okay";
  23906. + #address-cells = <1>;
  23907. + #size-cells = <0>;
  23908. + mcp251xfd@0 {
  23909. + compatible = "microchip,mcp251xfd";
  23910. + reg = <0>;
  23911. + pinctrl-names = "default";
  23912. + pinctrl-0 = <&mcp251xfd_pins_1>;
  23913. + spi-max-frequency = <20000000>;
  23914. + interrupt-parent = <&gpio>;
  23915. + interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
  23916. + clocks = <&clk_mcp251xfd_osc_1>;
  23917. + };
  23918. + };
  23919. + };
  23920. +};
  23921. diff --git a/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts
  23922. new file mode 100644
  23923. index 000000000000..e843d0b19745
  23924. --- /dev/null
  23925. +++ b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts
  23926. @@ -0,0 +1,117 @@
  23927. +// redo: ovmerge -c mcp251xfd-overlay.dts,spi0-0,interrupt=25 mcp251xfd-overlay.dts,spi0-1,interrupt=24 i2c-rtc-overlay.dts,pcf85063
  23928. +
  23929. +// Device tree overlay for https://www.seeedstudio.com/CAN-BUS-FD-HAT-for-Raspberry-Pi-p-4742.html
  23930. +
  23931. +/dts-v1/;
  23932. +/plugin/;
  23933. +
  23934. +#include <dt-bindings/gpio/gpio.h>
  23935. +#include <dt-bindings/interrupt-controller/irq.h>
  23936. +#include <dt-bindings/pinctrl/bcm2835.h>
  23937. +
  23938. +/ {
  23939. + compatible = "brcm,bcm2835";
  23940. + fragment@0 {
  23941. + target = <&spidev0>;
  23942. + __overlay__ {
  23943. + status = "disabled";
  23944. + };
  23945. + };
  23946. + fragment@1 {
  23947. + target = <&gpio>;
  23948. + __overlay__ {
  23949. + mcp251xfd_pins: mcp251xfd_spi0_0_pins {
  23950. + brcm,pins = <25>;
  23951. + brcm,function = <BCM2835_FSEL_GPIO_IN>;
  23952. + };
  23953. + };
  23954. + };
  23955. + fragment@2 {
  23956. + target-path = "/clocks";
  23957. + __overlay__ {
  23958. + clk_mcp251xfd_osc: mcp251xfd-spi0-0-osc {
  23959. + #clock-cells = <0>;
  23960. + compatible = "fixed-clock";
  23961. + clock-frequency = <40000000>;
  23962. + };
  23963. + };
  23964. + };
  23965. + fragment@3 {
  23966. + target = <&spi0>;
  23967. + __overlay__ {
  23968. + status = "okay";
  23969. + #address-cells = <1>;
  23970. + #size-cells = <0>;
  23971. + mcp251xfd@0 {
  23972. + compatible = "microchip,mcp251xfd";
  23973. + reg = <0>;
  23974. + pinctrl-names = "default";
  23975. + pinctrl-0 = <&mcp251xfd_pins>;
  23976. + spi-max-frequency = <20000000>;
  23977. + interrupt-parent = <&gpio>;
  23978. + interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
  23979. + clocks = <&clk_mcp251xfd_osc>;
  23980. + };
  23981. + };
  23982. + };
  23983. + fragment@4 {
  23984. + target = <&spidev1>;
  23985. + __overlay__ {
  23986. + status = "disabled";
  23987. + };
  23988. + };
  23989. + fragment@5 {
  23990. + target = <&gpio>;
  23991. + __overlay__ {
  23992. + mcp251xfd_pins_1: mcp251xfd_spi0_1_pins {
  23993. + brcm,pins = <24>;
  23994. + brcm,function = <BCM2835_FSEL_GPIO_IN>;
  23995. + };
  23996. + };
  23997. + };
  23998. + fragment@6 {
  23999. + target-path = "/clocks";
  24000. + __overlay__ {
  24001. + clk_mcp251xfd_osc_1: mcp251xfd-spi0-1-osc {
  24002. + #clock-cells = <0>;
  24003. + compatible = "fixed-clock";
  24004. + clock-frequency = <40000000>;
  24005. + };
  24006. + };
  24007. + };
  24008. + fragment@7 {
  24009. + target = <&spi0>;
  24010. + __overlay__ {
  24011. + status = "okay";
  24012. + #address-cells = <1>;
  24013. + #size-cells = <0>;
  24014. + mcp251xfd@1 {
  24015. + compatible = "microchip,mcp251xfd";
  24016. + reg = <1>;
  24017. + pinctrl-names = "default";
  24018. + pinctrl-0 = <&mcp251xfd_pins_1>;
  24019. + spi-max-frequency = <20000000>;
  24020. + interrupt-parent = <&gpio>;
  24021. + interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
  24022. + clocks = <&clk_mcp251xfd_osc_1>;
  24023. + };
  24024. + };
  24025. + };
  24026. + fragment@8 {
  24027. + target = <&i2cbus>;
  24028. + __overlay__ {
  24029. + #address-cells = <1>;
  24030. + #size-cells = <0>;
  24031. + pcf85063@51 {
  24032. + compatible = "nxp,pcf85063";
  24033. + reg = <0x51>;
  24034. + };
  24035. + };
  24036. + };
  24037. + fragment@9 {
  24038. + target = <&i2c_arm>;
  24039. + i2cbus: __overlay__ {
  24040. + status = "okay";
  24041. + };
  24042. + };
  24043. +};
  24044. diff --git a/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
  24045. new file mode 100644
  24046. index 000000000000..57a0cc9b1741
  24047. --- /dev/null
  24048. +++ b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
  24049. @@ -0,0 +1,84 @@
  24050. +/*
  24051. + * Device Tree overlay for SH1106 based SPI OLED display
  24052. + *
  24053. + */
  24054. +
  24055. +/dts-v1/;
  24056. +/plugin/;
  24057. +
  24058. +/ {
  24059. + compatible = "brcm,bcm2835";
  24060. +
  24061. + fragment@0 {
  24062. + target = <&spi0>;
  24063. + __overlay__ {
  24064. + status = "okay";
  24065. + };
  24066. + };
  24067. +
  24068. + fragment@1 {
  24069. + target = <&spidev0>;
  24070. + __overlay__ {
  24071. + status = "disabled";
  24072. + };
  24073. + };
  24074. +
  24075. + fragment@2 {
  24076. + target = <&spidev1>;
  24077. + __overlay__ {
  24078. + status = "disabled";
  24079. + };
  24080. + };
  24081. +
  24082. + fragment@3 {
  24083. + target = <&gpio>;
  24084. + __overlay__ {
  24085. + sh1106_pins: sh1106_pins {
  24086. + brcm,pins = <25 24>;
  24087. + brcm,function = <1 1>; /* out out */
  24088. + };
  24089. + };
  24090. + };
  24091. +
  24092. + fragment@4 {
  24093. + target = <&spi0>;
  24094. + __overlay__ {
  24095. + /* needed to avoid dtc warning */
  24096. + #address-cells = <1>;
  24097. + #size-cells = <0>;
  24098. +
  24099. + sh1106: sh1106@0{
  24100. + compatible = "sinowealth,sh1106";
  24101. + reg = <0>;
  24102. + pinctrl-names = "default";
  24103. + pinctrl-0 = <&sh1106_pins>;
  24104. +
  24105. + spi-max-frequency = <4000000>;
  24106. + bgr = <0>;
  24107. + bpp = <1>;
  24108. + rotate = <0>;
  24109. + fps = <25>;
  24110. + buswidth = <8>;
  24111. + reset-gpios = <&gpio 25 1>;
  24112. + dc-gpios = <&gpio 24 0>;
  24113. + debug = <0>;
  24114. +
  24115. + sinowealth,height = <64>;
  24116. + sinowealth,width = <128>;
  24117. + sinowealth,page-offset = <0>;
  24118. + };
  24119. + };
  24120. + };
  24121. +
  24122. + __overrides__ {
  24123. + speed = <&sh1106>,"spi-max-frequency:0";
  24124. + rotate = <&sh1106>,"rotate:0";
  24125. + fps = <&sh1106>,"fps:0";
  24126. + debug = <&sh1106>,"debug:0";
  24127. + dc_pin = <&sh1106>,"dc-gpios:4",
  24128. + <&sh1106_pins>,"brcm,pins:4";
  24129. + reset_pin = <&sh1106>,"reset-gpios:4",
  24130. + <&sh1106_pins>,"brcm,pins:0";
  24131. + height = <&sh1106>,"sinowealth,height:0";
  24132. + };
  24133. +};
  24134. diff --git a/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts b/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts
  24135. new file mode 100644
  24136. index 000000000000..90495f0941fb
  24137. --- /dev/null
  24138. +++ b/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts
  24139. @@ -0,0 +1,53 @@
  24140. +// Overlay for the SiLabs Si446X Controller - SPI0
  24141. +// Default Interrupt Pin: 17
  24142. +// Default SDN Pin: 27
  24143. +/dts-v1/;
  24144. +/plugin/;
  24145. +
  24146. + / {
  24147. + compatible = "brcm,bcm2835";
  24148. +
  24149. + fragment@0 {
  24150. + target = <&spi0>;
  24151. + __overlay__ {
  24152. + // needed to avoid dtc warning
  24153. + #address-cells = <1>;
  24154. + #size-cells = <0>;
  24155. +
  24156. + status = "okay";
  24157. +
  24158. + uhf0: si446x@0{
  24159. + compatible = "silabs,si446x";
  24160. + reg = <0>; // CE0
  24161. + pinctrl-names = "default";
  24162. + pinctrl-0 = <&uhf0_pins>;
  24163. + interrupt-parent = <&gpio>;
  24164. + interrupts = <17 0x2>; // falling edge
  24165. + spi-max-frequency = <4000000>;
  24166. + sdn_pin = <27>;
  24167. + irq_pin = <17>;
  24168. + status = "okay";
  24169. + };
  24170. + };
  24171. + };
  24172. +
  24173. + fragment@1 {
  24174. + target = <&gpio>;
  24175. + __overlay__ {
  24176. + uhf0_pins: uhf0_pins {
  24177. + brcm,pins = <17 27>;
  24178. + brcm,function = <0 1>; // in, out
  24179. + brcm,pull = <2 0>; // high, none
  24180. + };
  24181. + };
  24182. + };
  24183. +
  24184. + __overrides__ {
  24185. + int_pin = <&uhf0>, "interrupts:0",
  24186. + <&uhf0>, "irq_pin:0",
  24187. + <&uhf0_pins>, "brcm,pins:0";
  24188. + reset_pin = <&uhf0>, "sdn_pin:0",
  24189. + <&uhf0_pins>, "brcm,pins:4";
  24190. + speed = <&uhf0>, "spi-max-frequency:0";
  24191. + };
  24192. +};
  24193. diff --git a/arch/arm/boot/dts/overlays/smi-dev-overlay.dts b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
  24194. new file mode 100644
  24195. index 000000000000..bafab6c92506
  24196. --- /dev/null
  24197. +++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
  24198. @@ -0,0 +1,20 @@
  24199. +// Description: Overlay to enable character device interface for SMI.
  24200. +// Author: Luke Wren <[email protected]>
  24201. +
  24202. +/dts-v1/;
  24203. +/plugin/;
  24204. +
  24205. +/{
  24206. + compatible = "brcm,bcm2835";
  24207. +
  24208. + fragment@0 {
  24209. + target = <&soc>;
  24210. + __overlay__ {
  24211. + smi_dev {
  24212. + compatible = "brcm,bcm2835-smi-dev";
  24213. + smi_handle = <&smi>;
  24214. + status = "okay";
  24215. + };
  24216. + };
  24217. + };
  24218. +};
  24219. diff --git a/arch/arm/boot/dts/overlays/smi-nand-overlay.dts b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
  24220. new file mode 100644
  24221. index 000000000000..ae1e50329d66
  24222. --- /dev/null
  24223. +++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
  24224. @@ -0,0 +1,66 @@
  24225. +// Description: Overlay to enable NAND flash through
  24226. +// the secondary memory interface
  24227. +// Author: Luke Wren
  24228. +
  24229. +/dts-v1/;
  24230. +/plugin/;
  24231. +
  24232. +/{
  24233. + compatible = "brcm,bcm2835";
  24234. +
  24235. + fragment@0 {
  24236. + target = <&smi>;
  24237. + __overlay__ {
  24238. + pinctrl-names = "default";
  24239. + pinctrl-0 = <&smi_pins>;
  24240. + status = "okay";
  24241. + };
  24242. + };
  24243. +
  24244. + fragment@1 {
  24245. + target = <&soc>;
  24246. + __overlay__ {
  24247. + nand: flash@0 {
  24248. + compatible = "brcm,bcm2835-smi-nand";
  24249. + smi_handle = <&smi>;
  24250. + #address-cells = <1>;
  24251. + #size-cells = <1>;
  24252. + status = "okay";
  24253. +
  24254. + partition@0 {
  24255. + label = "stage2";
  24256. + // 128k
  24257. + reg = <0 0x20000>;
  24258. + read-only;
  24259. + };
  24260. + partition@1 {
  24261. + label = "firmware";
  24262. + // 16M
  24263. + reg = <0x20000 0x1000000>;
  24264. + read-only;
  24265. + };
  24266. + partition@2 {
  24267. + label = "root";
  24268. + // 2G (will need to use 64 bit for >=4G)
  24269. + reg = <0x1020000 0x80000000>;
  24270. + };
  24271. + };
  24272. + };
  24273. + };
  24274. +
  24275. + fragment@2 {
  24276. + target = <&gpio>;
  24277. + __overlay__ {
  24278. + smi_pins: smi_pins {
  24279. + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
  24280. + 12 13 14 15>;
  24281. + /* Alt 1: SMI */
  24282. + brcm,function = <5 5 5 5 5 5 5 5 5 5 5
  24283. + 5 5 5 5 5>;
  24284. + /* /CS, /WE and /OE are pulled high, as they are
  24285. + generally active low signals */
  24286. + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
  24287. + };
  24288. + };
  24289. + };
  24290. +};
  24291. diff --git a/arch/arm/boot/dts/overlays/smi-overlay.dts b/arch/arm/boot/dts/overlays/smi-overlay.dts
  24292. new file mode 100644
  24293. index 000000000000..bb8c7830df23
  24294. --- /dev/null
  24295. +++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
  24296. @@ -0,0 +1,37 @@
  24297. +// Description: Overlay to enable the secondary memory interface peripheral
  24298. +// Author: Luke Wren
  24299. +
  24300. +/dts-v1/;
  24301. +/plugin/;
  24302. +
  24303. +/{
  24304. + compatible = "brcm,bcm2835";
  24305. +
  24306. + fragment@0 {
  24307. + target = <&smi>;
  24308. + __overlay__ {
  24309. + pinctrl-names = "default";
  24310. + pinctrl-0 = <&smi_pins>;
  24311. + status = "okay";
  24312. + };
  24313. + };
  24314. +
  24315. + fragment@1 {
  24316. + target = <&gpio>;
  24317. + __overlay__ {
  24318. + smi_pins: smi_pins {
  24319. + /* Don't configure the top two address bits, as
  24320. + these are already used as ID_SD and ID_SC */
  24321. + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15
  24322. + 16 17 18 19 20 21 22 23 24 25>;
  24323. + /* Alt 1: SMI */
  24324. + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
  24325. + 5 5 5 5 5 5 5 5 5>;
  24326. + /* /CS, /WE and /OE are pulled high, as they are
  24327. + generally active low signals */
  24328. + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
  24329. + 0 0 0 0 0 0 0>;
  24330. + };
  24331. + };
  24332. + };
  24333. +};
  24334. diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
  24335. new file mode 100644
  24336. index 000000000000..a132b8637c31
  24337. --- /dev/null
  24338. +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
  24339. @@ -0,0 +1,31 @@
  24340. +/*
  24341. + * Device tree overlay to move spi0 to gpio 35 to 39 on CM
  24342. + */
  24343. +
  24344. +/dts-v1/;
  24345. +/plugin/;
  24346. +
  24347. +/ {
  24348. + compatible = "brcm,bcm2835";
  24349. +
  24350. + fragment@0 {
  24351. + target = <&spi0>;
  24352. + __overlay__ {
  24353. + cs-gpios = <&gpio 36 1>, <&gpio 35 1>;
  24354. + };
  24355. + };
  24356. +
  24357. + fragment@1 {
  24358. + target = <&spi0_cs_pins>;
  24359. + __overlay__ {
  24360. + brcm,pins = <36 35>;
  24361. + };
  24362. + };
  24363. +
  24364. + fragment@2 {
  24365. + target = <&spi0_pins>;
  24366. + __overlay__ {
  24367. + brcm,pins = <37 38 39>;
  24368. + };
  24369. + };
  24370. +};
  24371. diff --git a/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
  24372. new file mode 100644
  24373. index 000000000000..9ebcaf1b5ea0
  24374. --- /dev/null
  24375. +++ b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
  24376. @@ -0,0 +1,36 @@
  24377. +/*
  24378. + * Boot EEPROM overlay
  24379. + */
  24380. +
  24381. +/dts-v1/;
  24382. +/plugin/;
  24383. +
  24384. +/ {
  24385. + compatible = "brcm,bcm2835";
  24386. +
  24387. + fragment@0 {
  24388. + target = <&spi0>;
  24389. + __overlay__ {
  24390. + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
  24391. + status = "okay";
  24392. + };
  24393. + };
  24394. +
  24395. + fragment@1 {
  24396. + target = <&spi0_cs_pins>;
  24397. + __overlay__ {
  24398. + brcm,pins = <45 44 43>;
  24399. + brcm,function = <1>; /* output */
  24400. + status = "okay";
  24401. + };
  24402. + };
  24403. +
  24404. + fragment@2 {
  24405. + target = <&spi0_pins>;
  24406. + __overlay__ {
  24407. + brcm,pins = <40 41 42>;
  24408. + brcm,function = <3>; /* alt4 */
  24409. + status = "okay";
  24410. + };
  24411. + };
  24412. +};
  24413. diff --git a/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
  24414. new file mode 100644
  24415. index 000000000000..51b7fec281c0
  24416. --- /dev/null
  24417. +++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
  24418. @@ -0,0 +1,75 @@
  24419. +// Definitions for several SPI-based Real Time Clocks
  24420. +/dts-v1/;
  24421. +/plugin/;
  24422. +
  24423. +/ {
  24424. + compatible = "brcm,bcm2835";
  24425. +
  24426. + fragment@0 {
  24427. + target = <&rtc>;
  24428. + __dormant__ {
  24429. + compatible = "maxim,ds3232";
  24430. + };
  24431. + };
  24432. +
  24433. + fragment@1 {
  24434. + target = <&rtc>;
  24435. + __dormant__ {
  24436. + compatible = "maxim,ds3234";
  24437. + };
  24438. + };
  24439. +
  24440. + fragment@2 {
  24441. + target = <&rtc>;
  24442. + __dormant__ {
  24443. + compatible = "nxp,rtc-pcf2123";
  24444. + };
  24445. + };
  24446. +
  24447. + spidev: fragment@100 {
  24448. + target = <&spidev0>;
  24449. + __overlay__ {
  24450. + status = "disabled";
  24451. + };
  24452. + };
  24453. +
  24454. + frag101: fragment@101 {
  24455. + target = <&spi0>;
  24456. + __overlay__ {
  24457. + #address-cells = <1>;
  24458. + #size-cells = <0>;
  24459. + status = "okay";
  24460. +
  24461. + rtc: rtc@0 {
  24462. + reg = <0>;
  24463. + spi-max-frequency = <5000000>;
  24464. + };
  24465. + };
  24466. + };
  24467. +
  24468. + __overrides__ {
  24469. + spi0_0 = <&spidev>, "target:0=",<&spidev0>,
  24470. + <&frag101>, "target:0=",<&spi0>,
  24471. + <&rtc>, "reg:0=0";
  24472. + spi0_1 = <&spidev>, "target:0=",<&spidev1>,
  24473. + <&frag101>, "target:0=",<&spi0>,
  24474. + <&rtc>, "reg:0=1";
  24475. + spi1_0 = <0>,"-100",
  24476. + <&frag101>, "target:0=",<&spi1>,
  24477. + <&rtc>, "reg:0=0";
  24478. + spi1_1 = <0>,"-100",
  24479. + <&frag101>, "target:0=",<&spi1>,
  24480. + <&rtc>, "reg:0=1";
  24481. + spi2_0 = <0>,"-100",
  24482. + <&frag101>, "target:0=",<&spi2>,
  24483. + <&rtc>, "reg:0=0";
  24484. + spi2_1 = <0>,"-100",
  24485. + <&frag101>, "target:0=",<&spi2>,
  24486. + <&rtc>, "reg:0=1";
  24487. + cs_high = <&rtc>, "spi-cs-high?";
  24488. +
  24489. + ds3232 = <0>,"+0";
  24490. + ds3234 = <0>,"+1";
  24491. + pcf2123 = <0>,"+2";
  24492. + };
  24493. +};
  24494. diff --git a/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
  24495. new file mode 100644
  24496. index 000000000000..e6eb66e2076a
  24497. --- /dev/null
  24498. +++ b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
  24499. @@ -0,0 +1,42 @@
  24500. +/dts-v1/;
  24501. +/plugin/;
  24502. +
  24503. +
  24504. +/ {
  24505. + compatible = "brcm,bcm2835";
  24506. +
  24507. + fragment@0 {
  24508. + target = <&spi0_cs_pins>;
  24509. + frag0: __overlay__ {
  24510. + brcm,pins = <8>;
  24511. + };
  24512. + };
  24513. +
  24514. + fragment@1 {
  24515. + target = <&spi0>;
  24516. + frag1: __overlay__ {
  24517. + cs-gpios = <&gpio 8 1>;
  24518. + status = "okay";
  24519. + };
  24520. + };
  24521. +
  24522. + fragment@2 {
  24523. + target = <&spidev1>;
  24524. + __overlay__ {
  24525. + status = "disabled";
  24526. + };
  24527. + };
  24528. +
  24529. + fragment@3 {
  24530. + target = <&spi0_pins>;
  24531. + __dormant__ {
  24532. + brcm,pins = <10 11>;
  24533. + };
  24534. + };
  24535. +
  24536. + __overrides__ {
  24537. + cs0_pin = <&frag0>,"brcm,pins:0",
  24538. + <&frag1>,"cs-gpios:4";
  24539. + no_miso = <0>,"=3";
  24540. + };
  24541. +};
  24542. diff --git a/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
  24543. new file mode 100644
  24544. index 000000000000..df6519537c3a
  24545. --- /dev/null
  24546. +++ b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
  24547. @@ -0,0 +1,37 @@
  24548. +/dts-v1/;
  24549. +/plugin/;
  24550. +
  24551. +
  24552. +/ {
  24553. + compatible = "brcm,bcm2835";
  24554. +
  24555. + fragment@0 {
  24556. + target = <&spi0_cs_pins>;
  24557. + frag0: __overlay__ {
  24558. + brcm,pins = <8 7>;
  24559. + };
  24560. + };
  24561. +
  24562. + fragment@1 {
  24563. + target = <&spi0>;
  24564. + frag1: __overlay__ {
  24565. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  24566. + status = "okay";
  24567. + };
  24568. + };
  24569. +
  24570. + fragment@2 {
  24571. + target = <&spi0_pins>;
  24572. + __dormant__ {
  24573. + brcm,pins = <10 11>;
  24574. + };
  24575. + };
  24576. +
  24577. + __overrides__ {
  24578. + cs0_pin = <&frag0>,"brcm,pins:0",
  24579. + <&frag1>,"cs-gpios:4";
  24580. + cs1_pin = <&frag0>,"brcm,pins:4",
  24581. + <&frag1>,"cs-gpios:16";
  24582. + no_miso = <0>,"=2";
  24583. + };
  24584. +};
  24585. diff --git a/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
  24586. new file mode 100644
  24587. index 000000000000..ea2794bc5fd5
  24588. --- /dev/null
  24589. +++ b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
  24590. @@ -0,0 +1,57 @@
  24591. +/dts-v1/;
  24592. +/plugin/;
  24593. +
  24594. +
  24595. +/ {
  24596. + compatible = "brcm,bcm2835";
  24597. +
  24598. + fragment@0 {
  24599. + target = <&gpio>;
  24600. + __overlay__ {
  24601. + spi1_pins: spi1_pins {
  24602. + brcm,pins = <19 20 21>;
  24603. + brcm,function = <3>; /* alt4 */
  24604. + };
  24605. +
  24606. + spi1_cs_pins: spi1_cs_pins {
  24607. + brcm,pins = <18>;
  24608. + brcm,function = <1>; /* output */
  24609. + };
  24610. + };
  24611. + };
  24612. +
  24613. + fragment@1 {
  24614. + target = <&spi1>;
  24615. + frag1: __overlay__ {
  24616. + /* needed to avoid dtc warning */
  24617. + #address-cells = <1>;
  24618. + #size-cells = <0>;
  24619. + pinctrl-names = "default";
  24620. + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
  24621. + cs-gpios = <&gpio 18 1>;
  24622. + status = "okay";
  24623. +
  24624. + spidev1_0: spidev@0 {
  24625. + compatible = "spidev";
  24626. + reg = <0>; /* CE0 */
  24627. + #address-cells = <1>;
  24628. + #size-cells = <0>;
  24629. + spi-max-frequency = <125000000>;
  24630. + status = "okay";
  24631. + };
  24632. + };
  24633. + };
  24634. +
  24635. + fragment@2 {
  24636. + target = <&aux>;
  24637. + __overlay__ {
  24638. + status = "okay";
  24639. + };
  24640. + };
  24641. +
  24642. + __overrides__ {
  24643. + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
  24644. + <&frag1>,"cs-gpios:4";
  24645. + cs0_spidev = <&spidev1_0>,"status";
  24646. + };
  24647. +};
  24648. diff --git a/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
  24649. new file mode 100644
  24650. index 000000000000..dab34ee79ae2
  24651. --- /dev/null
  24652. +++ b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
  24653. @@ -0,0 +1,69 @@
  24654. +/dts-v1/;
  24655. +/plugin/;
  24656. +
  24657. +
  24658. +/ {
  24659. + compatible = "brcm,bcm2835";
  24660. +
  24661. + fragment@0 {
  24662. + target = <&gpio>;
  24663. + __overlay__ {
  24664. + spi1_pins: spi1_pins {
  24665. + brcm,pins = <19 20 21>;
  24666. + brcm,function = <3>; /* alt4 */
  24667. + };
  24668. +
  24669. + spi1_cs_pins: spi1_cs_pins {
  24670. + brcm,pins = <18 17>;
  24671. + brcm,function = <1>; /* output */
  24672. + };
  24673. + };
  24674. + };
  24675. +
  24676. + fragment@1 {
  24677. + target = <&spi1>;
  24678. + frag1: __overlay__ {
  24679. + /* needed to avoid dtc warning */
  24680. + #address-cells = <1>;
  24681. + #size-cells = <0>;
  24682. + pinctrl-names = "default";
  24683. + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
  24684. + cs-gpios = <&gpio 18 1>, <&gpio 17 1>;
  24685. + status = "okay";
  24686. +
  24687. + spidev1_0: spidev@0 {
  24688. + compatible = "spidev";
  24689. + reg = <0>; /* CE0 */
  24690. + #address-cells = <1>;
  24691. + #size-cells = <0>;
  24692. + spi-max-frequency = <125000000>;
  24693. + status = "okay";
  24694. + };
  24695. +
  24696. + spidev1_1: spidev@1 {
  24697. + compatible = "spidev";
  24698. + reg = <1>; /* CE1 */
  24699. + #address-cells = <1>;
  24700. + #size-cells = <0>;
  24701. + spi-max-frequency = <125000000>;
  24702. + status = "okay";
  24703. + };
  24704. + };
  24705. + };
  24706. +
  24707. + fragment@2 {
  24708. + target = <&aux>;
  24709. + __overlay__ {
  24710. + status = "okay";
  24711. + };
  24712. + };
  24713. +
  24714. + __overrides__ {
  24715. + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
  24716. + <&frag1>,"cs-gpios:4";
  24717. + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
  24718. + <&frag1>,"cs-gpios:16";
  24719. + cs0_spidev = <&spidev1_0>,"status";
  24720. + cs1_spidev = <&spidev1_1>,"status";
  24721. + };
  24722. +};
  24723. diff --git a/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
  24724. new file mode 100644
  24725. index 000000000000..bc7e7d04324b
  24726. --- /dev/null
  24727. +++ b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
  24728. @@ -0,0 +1,81 @@
  24729. +/dts-v1/;
  24730. +/plugin/;
  24731. +
  24732. +
  24733. +/ {
  24734. + compatible = "brcm,bcm2835";
  24735. +
  24736. + fragment@0 {
  24737. + target = <&gpio>;
  24738. + __overlay__ {
  24739. + spi1_pins: spi1_pins {
  24740. + brcm,pins = <19 20 21>;
  24741. + brcm,function = <3>; /* alt4 */
  24742. + };
  24743. +
  24744. + spi1_cs_pins: spi1_cs_pins {
  24745. + brcm,pins = <18 17 16>;
  24746. + brcm,function = <1>; /* output */
  24747. + };
  24748. + };
  24749. + };
  24750. +
  24751. + fragment@1 {
  24752. + target = <&spi1>;
  24753. + frag1: __overlay__ {
  24754. + /* needed to avoid dtc warning */
  24755. + #address-cells = <1>;
  24756. + #size-cells = <0>;
  24757. + pinctrl-names = "default";
  24758. + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
  24759. + cs-gpios = <&gpio 18 1>, <&gpio 17 1>, <&gpio 16 1>;
  24760. + status = "okay";
  24761. +
  24762. + spidev1_0: spidev@0 {
  24763. + compatible = "spidev";
  24764. + reg = <0>; /* CE0 */
  24765. + #address-cells = <1>;
  24766. + #size-cells = <0>;
  24767. + spi-max-frequency = <125000000>;
  24768. + status = "okay";
  24769. + };
  24770. +
  24771. + spidev1_1: spidev@1 {
  24772. + compatible = "spidev";
  24773. + reg = <1>; /* CE1 */
  24774. + #address-cells = <1>;
  24775. + #size-cells = <0>;
  24776. + spi-max-frequency = <125000000>;
  24777. + status = "okay";
  24778. + };
  24779. +
  24780. + spidev1_2: spidev@2 {
  24781. + compatible = "spidev";
  24782. + reg = <2>; /* CE2 */
  24783. + #address-cells = <1>;
  24784. + #size-cells = <0>;
  24785. + spi-max-frequency = <125000000>;
  24786. + status = "okay";
  24787. + };
  24788. + };
  24789. + };
  24790. +
  24791. + fragment@2 {
  24792. + target = <&aux>;
  24793. + __overlay__ {
  24794. + status = "okay";
  24795. + };
  24796. + };
  24797. +
  24798. + __overrides__ {
  24799. + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
  24800. + <&frag1>,"cs-gpios:4";
  24801. + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
  24802. + <&frag1>,"cs-gpios:16";
  24803. + cs2_pin = <&spi1_cs_pins>,"brcm,pins:8",
  24804. + <&frag1>,"cs-gpios:28";
  24805. + cs0_spidev = <&spidev1_0>,"status";
  24806. + cs1_spidev = <&spidev1_1>,"status";
  24807. + cs2_spidev = <&spidev1_2>,"status";
  24808. + };
  24809. +};
  24810. diff --git a/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
  24811. new file mode 100644
  24812. index 000000000000..2a29750462af
  24813. --- /dev/null
  24814. +++ b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
  24815. @@ -0,0 +1,57 @@
  24816. +/dts-v1/;
  24817. +/plugin/;
  24818. +
  24819. +
  24820. +/ {
  24821. + compatible = "brcm,bcm2835";
  24822. +
  24823. + fragment@0 {
  24824. + target = <&gpio>;
  24825. + __overlay__ {
  24826. + spi2_pins: spi2_pins {
  24827. + brcm,pins = <40 41 42>;
  24828. + brcm,function = <3>; /* alt4 */
  24829. + };
  24830. +
  24831. + spi2_cs_pins: spi2_cs_pins {
  24832. + brcm,pins = <43>;
  24833. + brcm,function = <1>; /* output */
  24834. + };
  24835. + };
  24836. + };
  24837. +
  24838. + fragment@1 {
  24839. + target = <&spi2>;
  24840. + frag1: __overlay__ {
  24841. + /* needed to avoid dtc warning */
  24842. + #address-cells = <1>;
  24843. + #size-cells = <0>;
  24844. + pinctrl-names = "default";
  24845. + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
  24846. + cs-gpios = <&gpio 43 1>;
  24847. + status = "okay";
  24848. +
  24849. + spidev2_0: spidev@0 {
  24850. + compatible = "spidev";
  24851. + reg = <0>; /* CE0 */
  24852. + #address-cells = <1>;
  24853. + #size-cells = <0>;
  24854. + spi-max-frequency = <125000000>;
  24855. + status = "okay";
  24856. + };
  24857. + };
  24858. + };
  24859. +
  24860. + fragment@2 {
  24861. + target = <&aux>;
  24862. + __overlay__ {
  24863. + status = "okay";
  24864. + };
  24865. + };
  24866. +
  24867. + __overrides__ {
  24868. + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
  24869. + <&frag1>,"cs-gpios:4";
  24870. + cs0_spidev = <&spidev2_0>,"status";
  24871. + };
  24872. +};
  24873. diff --git a/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
  24874. new file mode 100644
  24875. index 000000000000..642678fc9ddd
  24876. --- /dev/null
  24877. +++ b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
  24878. @@ -0,0 +1,69 @@
  24879. +/dts-v1/;
  24880. +/plugin/;
  24881. +
  24882. +
  24883. +/ {
  24884. + compatible = "brcm,bcm2835";
  24885. +
  24886. + fragment@0 {
  24887. + target = <&gpio>;
  24888. + __overlay__ {
  24889. + spi2_pins: spi2_pins {
  24890. + brcm,pins = <40 41 42>;
  24891. + brcm,function = <3>; /* alt4 */
  24892. + };
  24893. +
  24894. + spi2_cs_pins: spi2_cs_pins {
  24895. + brcm,pins = <43 44>;
  24896. + brcm,function = <1>; /* output */
  24897. + };
  24898. + };
  24899. + };
  24900. +
  24901. + fragment@1 {
  24902. + target = <&spi2>;
  24903. + frag1: __overlay__ {
  24904. + /* needed to avoid dtc warning */
  24905. + #address-cells = <1>;
  24906. + #size-cells = <0>;
  24907. + pinctrl-names = "default";
  24908. + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
  24909. + cs-gpios = <&gpio 43 1>, <&gpio 44 1>;
  24910. + status = "okay";
  24911. +
  24912. + spidev2_0: spidev@0 {
  24913. + compatible = "spidev";
  24914. + reg = <0>; /* CE0 */
  24915. + #address-cells = <1>;
  24916. + #size-cells = <0>;
  24917. + spi-max-frequency = <125000000>;
  24918. + status = "okay";
  24919. + };
  24920. +
  24921. + spidev2_1: spidev@1 {
  24922. + compatible = "spidev";
  24923. + reg = <1>; /* CE1 */
  24924. + #address-cells = <1>;
  24925. + #size-cells = <0>;
  24926. + spi-max-frequency = <125000000>;
  24927. + status = "okay";
  24928. + };
  24929. + };
  24930. + };
  24931. +
  24932. + fragment@2 {
  24933. + target = <&aux>;
  24934. + __overlay__ {
  24935. + status = "okay";
  24936. + };
  24937. + };
  24938. +
  24939. + __overrides__ {
  24940. + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
  24941. + <&frag1>,"cs-gpios:4";
  24942. + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
  24943. + <&frag1>,"cs-gpios:16";
  24944. + cs0_spidev = <&spidev2_0>,"status";
  24945. + cs1_spidev = <&spidev2_1>,"status";
  24946. + };
  24947. +};
  24948. diff --git a/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
  24949. new file mode 100644
  24950. index 000000000000..28d40c6c3c37
  24951. --- /dev/null
  24952. +++ b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
  24953. @@ -0,0 +1,81 @@
  24954. +/dts-v1/;
  24955. +/plugin/;
  24956. +
  24957. +
  24958. +/ {
  24959. + compatible = "brcm,bcm2835";
  24960. +
  24961. + fragment@0 {
  24962. + target = <&gpio>;
  24963. + __overlay__ {
  24964. + spi2_pins: spi2_pins {
  24965. + brcm,pins = <40 41 42>;
  24966. + brcm,function = <3>; /* alt4 */
  24967. + };
  24968. +
  24969. + spi2_cs_pins: spi2_cs_pins {
  24970. + brcm,pins = <43 44 45>;
  24971. + brcm,function = <1>; /* output */
  24972. + };
  24973. + };
  24974. + };
  24975. +
  24976. + fragment@1 {
  24977. + target = <&spi2>;
  24978. + frag1: __overlay__ {
  24979. + /* needed to avoid dtc warning */
  24980. + #address-cells = <1>;
  24981. + #size-cells = <0>;
  24982. + pinctrl-names = "default";
  24983. + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
  24984. + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
  24985. + status = "okay";
  24986. +
  24987. + spidev2_0: spidev@0 {
  24988. + compatible = "spidev";
  24989. + reg = <0>; /* CE0 */
  24990. + #address-cells = <1>;
  24991. + #size-cells = <0>;
  24992. + spi-max-frequency = <125000000>;
  24993. + status = "okay";
  24994. + };
  24995. +
  24996. + spidev2_1: spidev@1 {
  24997. + compatible = "spidev";
  24998. + reg = <1>; /* CE1 */
  24999. + #address-cells = <1>;
  25000. + #size-cells = <0>;
  25001. + spi-max-frequency = <125000000>;
  25002. + status = "okay";
  25003. + };
  25004. +
  25005. + spidev2_2: spidev@2 {
  25006. + compatible = "spidev";
  25007. + reg = <2>; /* CE2 */
  25008. + #address-cells = <1>;
  25009. + #size-cells = <0>;
  25010. + spi-max-frequency = <125000000>;
  25011. + status = "okay";
  25012. + };
  25013. + };
  25014. + };
  25015. +
  25016. + fragment@2 {
  25017. + target = <&aux>;
  25018. + __overlay__ {
  25019. + status = "okay";
  25020. + };
  25021. + };
  25022. +
  25023. + __overrides__ {
  25024. + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
  25025. + <&frag1>,"cs-gpios:4";
  25026. + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
  25027. + <&frag1>,"cs-gpios:16";
  25028. + cs2_pin = <&spi2_cs_pins>,"brcm,pins:8",
  25029. + <&frag1>,"cs-gpios:28";
  25030. + cs0_spidev = <&spidev2_0>,"status";
  25031. + cs1_spidev = <&spidev2_1>,"status";
  25032. + cs2_spidev = <&spidev2_2>,"status";
  25033. + };
  25034. +};
  25035. diff --git a/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
  25036. new file mode 100644
  25037. index 000000000000..335af8637051
  25038. --- /dev/null
  25039. +++ b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
  25040. @@ -0,0 +1,44 @@
  25041. +/dts-v1/;
  25042. +/plugin/;
  25043. +
  25044. +
  25045. +/ {
  25046. + compatible = "brcm,bcm2711";
  25047. +
  25048. + fragment@0 {
  25049. + target = <&spi3_cs_pins>;
  25050. + frag0: __overlay__ {
  25051. + brcm,pins = <0>;
  25052. + brcm,function = <1>; /* output */
  25053. + };
  25054. + };
  25055. +
  25056. + fragment@1 {
  25057. + target = <&spi3>;
  25058. + frag1: __overlay__ {
  25059. + /* needed to avoid dtc warning */
  25060. + #address-cells = <1>;
  25061. + #size-cells = <0>;
  25062. +
  25063. + pinctrl-names = "default";
  25064. + pinctrl-0 = <&spi3_pins &spi3_cs_pins>;
  25065. + cs-gpios = <&gpio 0 1>;
  25066. + status = "okay";
  25067. +
  25068. + spidev3_0: spidev@0 {
  25069. + compatible = "spidev";
  25070. + reg = <0>; /* CE0 */
  25071. + #address-cells = <1>;
  25072. + #size-cells = <0>;
  25073. + spi-max-frequency = <125000000>;
  25074. + status = "okay";
  25075. + };
  25076. + };
  25077. + };
  25078. +
  25079. + __overrides__ {
  25080. + cs0_pin = <&frag0>,"brcm,pins:0",
  25081. + <&frag1>,"cs-gpios:4";
  25082. + cs0_spidev = <&spidev3_0>,"status";
  25083. + };
  25084. +};
  25085. diff --git a/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
  25086. new file mode 100644
  25087. index 000000000000..ce65da27f767
  25088. --- /dev/null
  25089. +++ b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
  25090. @@ -0,0 +1,56 @@
  25091. +/dts-v1/;
  25092. +/plugin/;
  25093. +
  25094. +
  25095. +/ {
  25096. + compatible = "brcm,bcm2711";
  25097. +
  25098. + fragment@0 {
  25099. + target = <&spi3_cs_pins>;
  25100. + frag0: __overlay__ {
  25101. + brcm,pins = <0 24>;
  25102. + brcm,function = <1>; /* output */
  25103. + };
  25104. + };
  25105. +
  25106. + fragment@1 {
  25107. + target = <&spi3>;
  25108. + frag1: __overlay__ {
  25109. + /* needed to avoid dtc warning */
  25110. + #address-cells = <1>;
  25111. + #size-cells = <0>;
  25112. +
  25113. + pinctrl-names = "default";
  25114. + pinctrl-0 = <&spi3_pins &spi3_cs_pins>;
  25115. + cs-gpios = <&gpio 0 1>, <&gpio 24 1>;
  25116. + status = "okay";
  25117. +
  25118. + spidev3_0: spidev@0 {
  25119. + compatible = "spidev";
  25120. + reg = <0>; /* CE0 */
  25121. + #address-cells = <1>;
  25122. + #size-cells = <0>;
  25123. + spi-max-frequency = <125000000>;
  25124. + status = "okay";
  25125. + };
  25126. +
  25127. + spidev3_1: spidev@1 {
  25128. + compatible = "spidev";
  25129. + reg = <1>; /* CE1 */
  25130. + #address-cells = <1>;
  25131. + #size-cells = <0>;
  25132. + spi-max-frequency = <125000000>;
  25133. + status = "okay";
  25134. + };
  25135. + };
  25136. + };
  25137. +
  25138. + __overrides__ {
  25139. + cs0_pin = <&frag0>,"brcm,pins:0",
  25140. + <&frag1>,"cs-gpios:4";
  25141. + cs1_pin = <&frag0>,"brcm,pins:4",
  25142. + <&frag1>,"cs-gpios:16";
  25143. + cs0_spidev = <&spidev3_0>,"status";
  25144. + cs1_spidev = <&spidev3_1>,"status";
  25145. + };
  25146. +};
  25147. diff --git a/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
  25148. new file mode 100644
  25149. index 000000000000..85d70b40352b
  25150. --- /dev/null
  25151. +++ b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
  25152. @@ -0,0 +1,44 @@
  25153. +/dts-v1/;
  25154. +/plugin/;
  25155. +
  25156. +
  25157. +/ {
  25158. + compatible = "brcm,bcm2711";
  25159. +
  25160. + fragment@0 {
  25161. + target = <&spi4_cs_pins>;
  25162. + frag0: __overlay__ {
  25163. + brcm,pins = <4>;
  25164. + brcm,function = <1>; /* output */
  25165. + };
  25166. + };
  25167. +
  25168. + fragment@1 {
  25169. + target = <&spi4>;
  25170. + frag1: __overlay__ {
  25171. + /* needed to avoid dtc warning */
  25172. + #address-cells = <1>;
  25173. + #size-cells = <0>;
  25174. +
  25175. + pinctrl-names = "default";
  25176. + pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
  25177. + cs-gpios = <&gpio 4 1>;
  25178. + status = "okay";
  25179. +
  25180. + spidev4_0: spidev@0 {
  25181. + compatible = "spidev";
  25182. + reg = <0>; /* CE0 */
  25183. + #address-cells = <1>;
  25184. + #size-cells = <0>;
  25185. + spi-max-frequency = <125000000>;
  25186. + status = "okay";
  25187. + };
  25188. + };
  25189. + };
  25190. +
  25191. + __overrides__ {
  25192. + cs0_pin = <&frag0>,"brcm,pins:0",
  25193. + <&frag1>,"cs-gpios:4";
  25194. + cs0_spidev = <&spidev4_0>,"status";
  25195. + };
  25196. +};
  25197. diff --git a/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
  25198. new file mode 100644
  25199. index 000000000000..8bc2215a6a7e
  25200. --- /dev/null
  25201. +++ b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
  25202. @@ -0,0 +1,56 @@
  25203. +/dts-v1/;
  25204. +/plugin/;
  25205. +
  25206. +
  25207. +/ {
  25208. + compatible = "brcm,bcm2711";
  25209. +
  25210. + fragment@0 {
  25211. + target = <&spi4_cs_pins>;
  25212. + frag0: __overlay__ {
  25213. + brcm,pins = <4 25>;
  25214. + brcm,function = <1>; /* output */
  25215. + };
  25216. + };
  25217. +
  25218. + fragment@1 {
  25219. + target = <&spi4>;
  25220. + frag1: __overlay__ {
  25221. + /* needed to avoid dtc warning */
  25222. + #address-cells = <1>;
  25223. + #size-cells = <0>;
  25224. +
  25225. + pinctrl-names = "default";
  25226. + pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
  25227. + cs-gpios = <&gpio 4 1>, <&gpio 25 1>;
  25228. + status = "okay";
  25229. +
  25230. + spidev4_0: spidev@0 {
  25231. + compatible = "spidev";
  25232. + reg = <0>; /* CE0 */
  25233. + #address-cells = <1>;
  25234. + #size-cells = <0>;
  25235. + spi-max-frequency = <125000000>;
  25236. + status = "okay";
  25237. + };
  25238. +
  25239. + spidev4_1: spidev@1 {
  25240. + compatible = "spidev";
  25241. + reg = <1>; /* CE1 */
  25242. + #address-cells = <1>;
  25243. + #size-cells = <0>;
  25244. + spi-max-frequency = <125000000>;
  25245. + status = "okay";
  25246. + };
  25247. + };
  25248. + };
  25249. +
  25250. + __overrides__ {
  25251. + cs0_pin = <&frag0>,"brcm,pins:0",
  25252. + <&frag1>,"cs-gpios:4";
  25253. + cs1_pin = <&frag0>,"brcm,pins:4",
  25254. + <&frag1>,"cs-gpios:16";
  25255. + cs0_spidev = <&spidev4_0>,"status";
  25256. + cs1_spidev = <&spidev4_1>,"status";
  25257. + };
  25258. +};
  25259. diff --git a/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
  25260. new file mode 100644
  25261. index 000000000000..c0f8cb8510ee
  25262. --- /dev/null
  25263. +++ b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
  25264. @@ -0,0 +1,44 @@
  25265. +/dts-v1/;
  25266. +/plugin/;
  25267. +
  25268. +
  25269. +/ {
  25270. + compatible = "brcm,bcm2711";
  25271. +
  25272. + fragment@0 {
  25273. + target = <&spi5_cs_pins>;
  25274. + frag0: __overlay__ {
  25275. + brcm,pins = <12>;
  25276. + brcm,function = <1>; /* output */
  25277. + };
  25278. + };
  25279. +
  25280. + fragment@1 {
  25281. + target = <&spi5>;
  25282. + frag1: __overlay__ {
  25283. + /* needed to avoid dtc warning */
  25284. + #address-cells = <1>;
  25285. + #size-cells = <0>;
  25286. +
  25287. + pinctrl-names = "default";
  25288. + pinctrl-0 = <&spi5_pins &spi5_cs_pins>;
  25289. + cs-gpios = <&gpio 12 1>;
  25290. + status = "okay";
  25291. +
  25292. + spidev5_0: spidev@0 {
  25293. + compatible = "spidev";
  25294. + reg = <0>; /* CE0 */
  25295. + #address-cells = <1>;
  25296. + #size-cells = <0>;
  25297. + spi-max-frequency = <125000000>;
  25298. + status = "okay";
  25299. + };
  25300. + };
  25301. + };
  25302. +
  25303. + __overrides__ {
  25304. + cs0_pin = <&frag0>,"brcm,pins:0",
  25305. + <&frag1>,"cs-gpios:4";
  25306. + cs0_spidev = <&spidev5_0>,"status";
  25307. + };
  25308. +};
  25309. diff --git a/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
  25310. new file mode 100644
  25311. index 000000000000..7758b9c00b4e
  25312. --- /dev/null
  25313. +++ b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
  25314. @@ -0,0 +1,56 @@
  25315. +/dts-v1/;
  25316. +/plugin/;
  25317. +
  25318. +
  25319. +/ {
  25320. + compatible = "brcm,bcm2711";
  25321. +
  25322. + fragment@0 {
  25323. + target = <&spi5_cs_pins>;
  25324. + frag0: __overlay__ {
  25325. + brcm,pins = <12 26>;
  25326. + brcm,function = <1>; /* output */
  25327. + };
  25328. + };
  25329. +
  25330. + fragment@1 {
  25331. + target = <&spi5>;
  25332. + frag1: __overlay__ {
  25333. + /* needed to avoid dtc warning */
  25334. + #address-cells = <1>;
  25335. + #size-cells = <0>;
  25336. +
  25337. + pinctrl-names = "default";
  25338. + pinctrl-0 = <&spi5_pins &spi5_cs_pins>;
  25339. + cs-gpios = <&gpio 12 1>, <&gpio 26 1>;
  25340. + status = "okay";
  25341. +
  25342. + spidev5_0: spidev@0 {
  25343. + compatible = "spidev";
  25344. + reg = <0>; /* CE0 */
  25345. + #address-cells = <1>;
  25346. + #size-cells = <0>;
  25347. + spi-max-frequency = <125000000>;
  25348. + status = "okay";
  25349. + };
  25350. +
  25351. + spidev5_1: spidev@1 {
  25352. + compatible = "spidev";
  25353. + reg = <1>; /* CE1 */
  25354. + #address-cells = <1>;
  25355. + #size-cells = <0>;
  25356. + spi-max-frequency = <125000000>;
  25357. + status = "okay";
  25358. + };
  25359. + };
  25360. + };
  25361. +
  25362. + __overrides__ {
  25363. + cs0_pin = <&frag0>,"brcm,pins:0",
  25364. + <&frag1>,"cs-gpios:4";
  25365. + cs1_pin = <&frag0>,"brcm,pins:4",
  25366. + <&frag1>,"cs-gpios:16";
  25367. + cs0_spidev = <&spidev5_0>,"status";
  25368. + cs1_spidev = <&spidev5_1>,"status";
  25369. + };
  25370. +};
  25371. diff --git a/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
  25372. new file mode 100644
  25373. index 000000000000..8c8a953eca01
  25374. --- /dev/null
  25375. +++ b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
  25376. @@ -0,0 +1,44 @@
  25377. +/dts-v1/;
  25378. +/plugin/;
  25379. +
  25380. +
  25381. +/ {
  25382. + compatible = "brcm,bcm2711";
  25383. +
  25384. + fragment@0 {
  25385. + target = <&spi6_cs_pins>;
  25386. + frag0: __overlay__ {
  25387. + brcm,pins = <18>;
  25388. + brcm,function = <1>; /* output */
  25389. + };
  25390. + };
  25391. +
  25392. + fragment@1 {
  25393. + target = <&spi6>;
  25394. + frag1: __overlay__ {
  25395. + /* needed to avoid dtc warning */
  25396. + #address-cells = <1>;
  25397. + #size-cells = <0>;
  25398. +
  25399. + pinctrl-names = "default";
  25400. + pinctrl-0 = <&spi6_pins &spi6_cs_pins>;
  25401. + cs-gpios = <&gpio 18 1>;
  25402. + status = "okay";
  25403. +
  25404. + spidev6_0: spidev@0 {
  25405. + compatible = "spidev";
  25406. + reg = <0>; /* CE0 */
  25407. + #address-cells = <1>;
  25408. + #size-cells = <0>;
  25409. + spi-max-frequency = <125000000>;
  25410. + status = "okay";
  25411. + };
  25412. + };
  25413. + };
  25414. +
  25415. + __overrides__ {
  25416. + cs0_pin = <&frag0>,"brcm,pins:0",
  25417. + <&frag1>,"cs-gpios:4";
  25418. + cs0_spidev = <&spidev6_0>,"status";
  25419. + };
  25420. +};
  25421. diff --git a/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
  25422. new file mode 100644
  25423. index 000000000000..2ff897f21aed
  25424. --- /dev/null
  25425. +++ b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
  25426. @@ -0,0 +1,56 @@
  25427. +/dts-v1/;
  25428. +/plugin/;
  25429. +
  25430. +
  25431. +/ {
  25432. + compatible = "brcm,bcm2711";
  25433. +
  25434. + fragment@0 {
  25435. + target = <&spi6_cs_pins>;
  25436. + frag0: __overlay__ {
  25437. + brcm,pins = <18 27>;
  25438. + brcm,function = <1>; /* output */
  25439. + };
  25440. + };
  25441. +
  25442. + fragment@1 {
  25443. + target = <&spi6>;
  25444. + frag1: __overlay__ {
  25445. + /* needed to avoid dtc warning */
  25446. + #address-cells = <1>;
  25447. + #size-cells = <0>;
  25448. +
  25449. + pinctrl-names = "default";
  25450. + pinctrl-0 = <&spi6_pins &spi6_cs_pins>;
  25451. + cs-gpios = <&gpio 18 1>, <&gpio 27 1>;
  25452. + status = "okay";
  25453. +
  25454. + spidev6_0: spidev@0 {
  25455. + compatible = "spidev";
  25456. + reg = <0>; /* CE0 */
  25457. + #address-cells = <1>;
  25458. + #size-cells = <0>;
  25459. + spi-max-frequency = <125000000>;
  25460. + status = "okay";
  25461. + };
  25462. +
  25463. + spidev6_1: spidev@1 {
  25464. + compatible = "spidev";
  25465. + reg = <1>; /* CE1 */
  25466. + #address-cells = <1>;
  25467. + #size-cells = <0>;
  25468. + spi-max-frequency = <125000000>;
  25469. + status = "okay";
  25470. + };
  25471. + };
  25472. + };
  25473. +
  25474. + __overrides__ {
  25475. + cs0_pin = <&frag0>,"brcm,pins:0",
  25476. + <&frag1>,"cs-gpios:4";
  25477. + cs1_pin = <&frag0>,"brcm,pins:4",
  25478. + <&frag1>,"cs-gpios:16";
  25479. + cs0_spidev = <&spidev6_0>,"status";
  25480. + cs1_spidev = <&spidev6_1>,"status";
  25481. + };
  25482. +};
  25483. diff --git a/arch/arm/boot/dts/overlays/ssd1306-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
  25484. new file mode 100644
  25485. index 000000000000..84cf10e489d3
  25486. --- /dev/null
  25487. +++ b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
  25488. @@ -0,0 +1,36 @@
  25489. +// Overlay for SSD1306 128x64 and 128x32 OLED displays
  25490. +/dts-v1/;
  25491. +/plugin/;
  25492. +
  25493. +/ {
  25494. + compatible = "brcm,bcm2835";
  25495. +
  25496. + fragment@0 {
  25497. + target = <&i2c1>;
  25498. + __overlay__ {
  25499. + status = "okay";
  25500. +
  25501. + #address-cells = <1>;
  25502. + #size-cells = <0>;
  25503. +
  25504. + ssd1306: oled@3c{
  25505. + compatible = "solomon,ssd1306fb-i2c";
  25506. + reg = <0x3c>;
  25507. + solomon,width = <128>;
  25508. + solomon,height = <64>;
  25509. + solomon,page-offset = <0>;
  25510. + };
  25511. + };
  25512. + };
  25513. +
  25514. + __overrides__ {
  25515. + address = <&ssd1306>,"reg:0";
  25516. + width = <&ssd1306>,"solomon,width:0";
  25517. + height = <&ssd1306>,"solomon,height:0";
  25518. + offset = <&ssd1306>,"solomon,page-offset:0";
  25519. + normal = <&ssd1306>,"solomon,segment-no-remap?";
  25520. + sequential = <&ssd1306>,"solomon,com-seq?";
  25521. + remapped = <&ssd1306>,"solomon,com-lrremap?";
  25522. + inverted = <&ssd1306>,"solomon,com-invdir?";
  25523. + };
  25524. +};
  25525. diff --git a/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
  25526. new file mode 100644
  25527. index 000000000000..ffc90c7cecf6
  25528. --- /dev/null
  25529. +++ b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
  25530. @@ -0,0 +1,84 @@
  25531. +/*
  25532. + * Device Tree overlay for SSD1306 based SPI OLED display
  25533. + *
  25534. + */
  25535. +
  25536. +/dts-v1/;
  25537. +/plugin/;
  25538. +
  25539. +/ {
  25540. + compatible = "brcm,bcm2835";
  25541. +
  25542. + fragment@0 {
  25543. + target = <&spi0>;
  25544. + __overlay__ {
  25545. + status = "okay";
  25546. + };
  25547. + };
  25548. +
  25549. + fragment@1 {
  25550. + target = <&spidev0>;
  25551. + __overlay__ {
  25552. + status = "disabled";
  25553. + };
  25554. + };
  25555. +
  25556. + fragment@2 {
  25557. + target = <&spidev1>;
  25558. + __overlay__ {
  25559. + status = "disabled";
  25560. + };
  25561. + };
  25562. +
  25563. + fragment@3 {
  25564. + target = <&gpio>;
  25565. + __overlay__ {
  25566. + ssd1306_pins: ssd1306_pins {
  25567. + brcm,pins = <25 24>;
  25568. + brcm,function = <1 1>; /* out out */
  25569. + };
  25570. + };
  25571. + };
  25572. +
  25573. + fragment@4 {
  25574. + target = <&spi0>;
  25575. + __overlay__ {
  25576. + /* needed to avoid dtc warning */
  25577. + #address-cells = <1>;
  25578. + #size-cells = <0>;
  25579. +
  25580. + ssd1306: ssd1306@0{
  25581. + compatible = "solomon,ssd1306";
  25582. + reg = <0>;
  25583. + pinctrl-names = "default";
  25584. + pinctrl-0 = <&ssd1306_pins>;
  25585. +
  25586. + spi-max-frequency = <10000000>;
  25587. + bgr = <0>;
  25588. + bpp = <1>;
  25589. + rotate = <0>;
  25590. + fps = <25>;
  25591. + buswidth = <8>;
  25592. + reset-gpios = <&gpio 25 1>;
  25593. + dc-gpios = <&gpio 24 0>;
  25594. + debug = <0>;
  25595. +
  25596. + solomon,height = <64>;
  25597. + solomon,width = <128>;
  25598. + solomon,page-offset = <0>;
  25599. + };
  25600. + };
  25601. + };
  25602. +
  25603. + __overrides__ {
  25604. + speed = <&ssd1306>,"spi-max-frequency:0";
  25605. + rotate = <&ssd1306>,"rotate:0";
  25606. + fps = <&ssd1306>,"fps:0";
  25607. + debug = <&ssd1306>,"debug:0";
  25608. + dc_pin = <&ssd1306>,"dc-gpios:4",
  25609. + <&ssd1306_pins>,"brcm,pins:4";
  25610. + reset_pin = <&ssd1306>,"reset-gpios:4",
  25611. + <&ssd1306_pins>,"brcm,pins:0";
  25612. + height = <&ssd1306>,"solomon,height:0";
  25613. + };
  25614. +};
  25615. diff --git a/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts
  25616. new file mode 100644
  25617. index 000000000000..9fd5ebf2feda
  25618. --- /dev/null
  25619. +++ b/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts
  25620. @@ -0,0 +1,83 @@
  25621. +/*
  25622. + * Device Tree overlay for SSD1331 based SPI OLED display
  25623. + *
  25624. + */
  25625. +
  25626. +/dts-v1/;
  25627. +/plugin/;
  25628. +
  25629. +/ {
  25630. + compatible = "brcm,bcm2835";
  25631. +
  25632. + fragment@0 {
  25633. + target = <&spi0>;
  25634. + __overlay__ {
  25635. + status = "okay";
  25636. + };
  25637. + };
  25638. +
  25639. + fragment@1 {
  25640. + target = <&spidev0>;
  25641. + __overlay__ {
  25642. + status = "disabled";
  25643. + };
  25644. + };
  25645. +
  25646. + fragment@2 {
  25647. + target = <&spidev1>;
  25648. + __overlay__ {
  25649. + status = "disabled";
  25650. + };
  25651. + };
  25652. +
  25653. + fragment@3 {
  25654. + target = <&gpio>;
  25655. + __overlay__ {
  25656. + ssd1331_pins: ssd1331_pins {
  25657. + brcm,pins = <25 24>;
  25658. + brcm,function = <1 1>; /* out out */
  25659. + };
  25660. + };
  25661. + };
  25662. +
  25663. + fragment@4 {
  25664. + target = <&spi0>;
  25665. + __overlay__ {
  25666. + /* needed to avoid dtc warning */
  25667. + #address-cells = <1>;
  25668. + #size-cells = <0>;
  25669. +
  25670. + ssd1331: ssd1331@0{
  25671. + compatible = "solomon,ssd1331";
  25672. + reg = <0>;
  25673. + pinctrl-names = "default";
  25674. + pinctrl-0 = <&ssd1331_pins>;
  25675. +
  25676. + spi-max-frequency = <4500000>;
  25677. + bgr = <0>;
  25678. + bpp = <16>;
  25679. + rotate = <0>;
  25680. + fps = <25>;
  25681. + buswidth = <8>;
  25682. + reset-gpios = <&gpio 25 1>;
  25683. + dc-gpios = <&gpio 24 0>;
  25684. + debug = <0>;
  25685. +
  25686. + solomon,height = <64>;
  25687. + solomon,width = <96>;
  25688. + solomon,page-offset = <0>;
  25689. + };
  25690. + };
  25691. + };
  25692. +
  25693. + __overrides__ {
  25694. + speed = <&ssd1331>,"spi-max-frequency:0";
  25695. + rotate = <&ssd1331>,"rotate:0";
  25696. + fps = <&ssd1331>,"fps:0";
  25697. + debug = <&ssd1331>,"debug:0";
  25698. + dc_pin = <&ssd1331>,"dc-gpios:4",
  25699. + <&ssd1331_pins>,"brcm,pins:4";
  25700. + reset_pin = <&ssd1331>,"reset-gpios:4",
  25701. + <&ssd1331_pins>,"brcm,pins:0";
  25702. + };
  25703. +};
  25704. diff --git a/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
  25705. new file mode 100644
  25706. index 000000000000..ffc872c60648
  25707. --- /dev/null
  25708. +++ b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
  25709. @@ -0,0 +1,83 @@
  25710. +/*
  25711. + * Device Tree overlay for SSD1351 based SPI OLED display
  25712. + *
  25713. + */
  25714. +
  25715. +/dts-v1/;
  25716. +/plugin/;
  25717. +
  25718. +/ {
  25719. + compatible = "brcm,bcm2835";
  25720. +
  25721. + fragment@0 {
  25722. + target = <&spi0>;
  25723. + __overlay__ {
  25724. + status = "okay";
  25725. + };
  25726. + };
  25727. +
  25728. + fragment@1 {
  25729. + target = <&spidev0>;
  25730. + __overlay__ {
  25731. + status = "disabled";
  25732. + };
  25733. + };
  25734. +
  25735. + fragment@2 {
  25736. + target = <&spidev1>;
  25737. + __overlay__ {
  25738. + status = "disabled";
  25739. + };
  25740. + };
  25741. +
  25742. + fragment@3 {
  25743. + target = <&gpio>;
  25744. + __overlay__ {
  25745. + ssd1351_pins: ssd1351_pins {
  25746. + brcm,pins = <25 24>;
  25747. + brcm,function = <1 1>; /* out out */
  25748. + };
  25749. + };
  25750. + };
  25751. +
  25752. + fragment@4 {
  25753. + target = <&spi0>;
  25754. + __overlay__ {
  25755. + /* needed to avoid dtc warning */
  25756. + #address-cells = <1>;
  25757. + #size-cells = <0>;
  25758. +
  25759. + ssd1351: ssd1351@0{
  25760. + compatible = "solomon,ssd1351";
  25761. + reg = <0>;
  25762. + pinctrl-names = "default";
  25763. + pinctrl-0 = <&ssd1351_pins>;
  25764. +
  25765. + spi-max-frequency = <4500000>;
  25766. + bgr = <0>;
  25767. + bpp = <16>;
  25768. + rotate = <0>;
  25769. + fps = <25>;
  25770. + buswidth = <8>;
  25771. + reset-gpios = <&gpio 25 1>;
  25772. + dc-gpios = <&gpio 24 0>;
  25773. + debug = <0>;
  25774. +
  25775. + solomon,height = <128>;
  25776. + solomon,width = <128>;
  25777. + solomon,page-offset = <0>;
  25778. + };
  25779. + };
  25780. + };
  25781. +
  25782. + __overrides__ {
  25783. + speed = <&ssd1351>,"spi-max-frequency:0";
  25784. + rotate = <&ssd1351>,"rotate:0";
  25785. + fps = <&ssd1351>,"fps:0";
  25786. + debug = <&ssd1351>,"debug:0";
  25787. + dc_pin = <&ssd1351>,"dc-gpios:4",
  25788. + <&ssd1351_pins>,"brcm,pins:4";
  25789. + reset_pin = <&ssd1351>,"reset-gpios:4",
  25790. + <&ssd1351_pins>,"brcm,pins:0";
  25791. + };
  25792. +};
  25793. diff --git a/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
  25794. new file mode 100755
  25795. index 000000000000..bad61535981e
  25796. --- /dev/null
  25797. +++ b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
  25798. @@ -0,0 +1,73 @@
  25799. +// Definitions for SuperAudioBoard
  25800. +/dts-v1/;
  25801. +/plugin/;
  25802. +
  25803. +/ {
  25804. + compatible = "brcm,bcm2835";
  25805. +
  25806. + fragment@0 {
  25807. + target = <&sound>;
  25808. + __overlay__ {
  25809. + compatible = "simple-audio-card";
  25810. + i2s-controller = <&i2s>;
  25811. + status = "okay";
  25812. +
  25813. + simple-audio-card,name = "SuperAudioBoard";
  25814. +
  25815. + simple-audio-card,widgets =
  25816. + "Line", "Line In",
  25817. + "Line", "Line Out";
  25818. +
  25819. + simple-audio-card,routing =
  25820. + "Line Out","AOUTA+",
  25821. + "Line Out","AOUTA-",
  25822. + "Line Out","AOUTB+",
  25823. + "Line Out","AOUTB-",
  25824. + "AINA","Line In",
  25825. + "AINB","Line In";
  25826. +
  25827. + simple-audio-card,format = "i2s";
  25828. +
  25829. + simple-audio-card,bitclock-master = <&sound_master>;
  25830. + simple-audio-card,frame-master = <&sound_master>;
  25831. +
  25832. + simple-audio-card,cpu {
  25833. + sound-dai = <&i2s>;
  25834. + dai-tdm-slot-num = <2>;
  25835. + dai-tdm-slot-width = <32>;
  25836. + };
  25837. +
  25838. + sound_master: simple-audio-card,codec {
  25839. + sound-dai = <&cs4271>;
  25840. + system-clock-frequency = <24576000>;
  25841. + };
  25842. + };
  25843. + };
  25844. +
  25845. + fragment@1 {
  25846. + target = <&i2s>;
  25847. + __overlay__ {
  25848. + status = "okay";
  25849. + };
  25850. + };
  25851. +
  25852. + fragment@2 {
  25853. + target = <&i2c1>;
  25854. + __overlay__ {
  25855. + #address-cells = <1>;
  25856. + #size-cells = <0>;
  25857. + status = "okay";
  25858. +
  25859. + cs4271: cs4271@10 {
  25860. + #sound-dai-cells = <0>;
  25861. + compatible = "cirrus,cs4271";
  25862. + reg = <0x10>;
  25863. + status = "okay";
  25864. + reset-gpio = <&gpio 26 0>; /* Pin 26, active high */
  25865. + };
  25866. + };
  25867. + };
  25868. + __overrides__ {
  25869. + gpiopin = <&cs4271>,"reset-gpio:4";
  25870. + };
  25871. +};
  25872. diff --git a/arch/arm/boot/dts/overlays/sx150x-overlay.dts b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
  25873. new file mode 100644
  25874. index 000000000000..1d1069345da2
  25875. --- /dev/null
  25876. +++ b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
  25877. @@ -0,0 +1,1706 @@
  25878. +// Definitions for SX150x I2C GPIO Expanders from Semtech
  25879. +
  25880. +// dtparams:
  25881. +// sx150<x>-<n>-<m> - Enables SX150X device on I2C#<n> with slave address <m>. <x> may be 1-9.
  25882. +// <n> may be 0 or 1. Permissible values of <m> (which is denoted in hex)
  25883. +// depend on the device variant.
  25884. +// For SX1501, SX1502, SX1504 and SX1505, <m> may be 20 or 21.
  25885. +// For SX1503 and SX1506, <m> may be 20.
  25886. +// For SX1507 and SX1509, <m> may be 3E, 3F, 70 or 71.
  25887. +// For SX1508, <m> may be 20, 21, 22 or 23.
  25888. +// sx150<x>-<n>-<m>-int-gpio - Integer, enables interrupts on SX150X device on I2C#<n> with slave address <m>,
  25889. +// specifies the GPIO pin to which NINT output of SX150X is connected.
  25890. +//
  25891. +//
  25892. +// Example 1: A single SX1505 device on I2C#1 with its slave address set to 0x20 and NINT output connected to GPIO25:
  25893. +// dtoverlay=sx150x:sx1505-1-20,sx1505-1-20-int-gpio=25
  25894. +//
  25895. +// Example 2: Two SX1507 devices on I2C#0 with their slave addresses set to 0x3E and 0x70 (interrupts not used):
  25896. +// dtoverlay=sx150x:sx1507-0-3E,sx1507-0-70
  25897. +
  25898. +/dts-v1/;
  25899. +/plugin/;
  25900. +
  25901. +/ {
  25902. + compatible = "brcm,bcm2835";
  25903. +
  25904. + // Enable I2C#0 interface
  25905. + fragment@0 {
  25906. + target = <&i2c0>;
  25907. + __dormant__ {
  25908. + status = "okay";
  25909. + };
  25910. + };
  25911. +
  25912. + // Enable I2C#1 interface
  25913. + fragment@1 {
  25914. + target = <&i2c1>;
  25915. + __dormant__ {
  25916. + status = "okay";
  25917. + };
  25918. + };
  25919. +
  25920. + // Enable a SX1501 on I2C#0 at slave addr 0x20
  25921. + fragment@2 {
  25922. + target = <&i2c0>;
  25923. + __dormant__ {
  25924. + #address-cells = <1>;
  25925. + #size-cells = <0>;
  25926. +
  25927. + sx1501_0_20: sx150x@20 {
  25928. + compatible = "semtech,sx1501q";
  25929. + reg = <0x20>;
  25930. + gpio-controller;
  25931. + #gpio-cells = <2>;
  25932. + #interrupt-cells = <2>;
  25933. + interrupts = <25 2>; /* 1st word overwritten by sx1501-0-20-int-gpio parameter
  25934. + 2nd word is 2 for falling-edge triggered */
  25935. + status = "okay";
  25936. + };
  25937. + };
  25938. + };
  25939. +
  25940. + // Enable a SX1501 on I2C#1 at slave addr 0x20
  25941. + fragment@3 {
  25942. + target = <&i2c1>;
  25943. + __dormant__ {
  25944. + #address-cells = <1>;
  25945. + #size-cells = <0>;
  25946. +
  25947. + sx1501_1_20: sx150x@20 {
  25948. + compatible = "semtech,sx1501q";
  25949. + reg = <0x20>;
  25950. + gpio-controller;
  25951. + #gpio-cells = <2>;
  25952. + #interrupt-cells = <2>;
  25953. + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-20-int-gpio parameter
  25954. + 2nd word is 2 for falling-edge triggered */
  25955. + status = "okay";
  25956. + };
  25957. + };
  25958. + };
  25959. +
  25960. + // Enable a SX1501 on I2C#0 at slave addr 0x21
  25961. + fragment@4 {
  25962. + target = <&i2c0>;
  25963. + __dormant__ {
  25964. + #address-cells = <1>;
  25965. + #size-cells = <0>;
  25966. +
  25967. + sx1501_0_21: sx150x@21 {
  25968. + compatible = "semtech,sx1501q";
  25969. + reg = <0x21>;
  25970. + gpio-controller;
  25971. + #gpio-cells = <2>;
  25972. + #interrupt-cells = <2>;
  25973. + interrupts = <25 2>; /* 1st word overwritten by sx1501-0-21-int-gpio parameter
  25974. + 2nd word is 2 for falling-edge triggered */
  25975. + status = "okay";
  25976. + };
  25977. + };
  25978. + };
  25979. +
  25980. + // Enable a SX1501 on I2C#1 at slave addr 0x21
  25981. + fragment@5 {
  25982. + target = <&i2c1>;
  25983. + __dormant__ {
  25984. + #address-cells = <1>;
  25985. + #size-cells = <0>;
  25986. +
  25987. + sx1501_1_21: sx150x@21 {
  25988. + compatible = "semtech,sx1501q";
  25989. + reg = <0x21>;
  25990. + gpio-controller;
  25991. + #gpio-cells = <2>;
  25992. + #interrupt-cells = <2>;
  25993. + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-21-int-gpio parameter
  25994. + 2nd word is 2 for falling-edge triggered */
  25995. + status = "okay";
  25996. + };
  25997. + };
  25998. + };
  25999. +
  26000. + // Enable a SX1502 on I2C#0 at slave addr 0x20
  26001. + fragment@6 {
  26002. + target = <&i2c0>;
  26003. + __dormant__ {
  26004. + #address-cells = <1>;
  26005. + #size-cells = <0>;
  26006. +
  26007. + sx1502_0_20: sx150x@20 {
  26008. + compatible = "semtech,sx1502q";
  26009. + reg = <0x20>;
  26010. + gpio-controller;
  26011. + #gpio-cells = <2>;
  26012. + #interrupt-cells = <2>;
  26013. + interrupts = <25 2>; /* 1st word overwritten by sx1502-0-20-int-gpio parameter
  26014. + 2nd word is 2 for falling-edge triggered */
  26015. + status = "okay";
  26016. + };
  26017. + };
  26018. + };
  26019. +
  26020. + // Enable a SX1502 on I2C#1 at slave addr 0x20
  26021. + fragment@7 {
  26022. + target = <&i2c1>;
  26023. + __dormant__ {
  26024. + #address-cells = <1>;
  26025. + #size-cells = <0>;
  26026. +
  26027. + sx1502_1_20: sx150x@20 {
  26028. + compatible = "semtech,sx1502q";
  26029. + reg = <0x20>;
  26030. + gpio-controller;
  26031. + #gpio-cells = <2>;
  26032. + #interrupt-cells = <2>;
  26033. + interrupts = <25 2>; /* 1st word overwritten by sx1502-1-20-int-gpio parameter
  26034. + 2nd word is 2 for falling-edge triggered */
  26035. + status = "okay";
  26036. + };
  26037. + };
  26038. + };
  26039. +
  26040. + // Enable a SX1502 on I2C#0 at slave addr 0x21
  26041. + fragment@8 {
  26042. + target = <&i2c0>;
  26043. + __dormant__ {
  26044. + #address-cells = <1>;
  26045. + #size-cells = <0>;
  26046. +
  26047. + sx1502_0_21: sx150x@21 {
  26048. + compatible = "semtech,sx1502q";
  26049. + reg = <0x21>;
  26050. + gpio-controller;
  26051. + #gpio-cells = <2>;
  26052. + #interrupt-cells = <2>;
  26053. + interrupts = <25 2>; /* 1st word overwritten by sx1502-0-21-int-gpio parameter
  26054. + 2nd word is 2 for falling-edge triggered */
  26055. + status = "okay";
  26056. + };
  26057. + };
  26058. + };
  26059. +
  26060. + // Enable a SX1502 on I2C#1 at slave addr 0x21
  26061. + fragment@9 {
  26062. + target = <&i2c1>;
  26063. + __dormant__ {
  26064. + #address-cells = <1>;
  26065. + #size-cells = <0>;
  26066. +
  26067. + sx1502_1_21: sx150x@21 {
  26068. + compatible = "semtech,sx1502q";
  26069. + reg = <0x21>;
  26070. + gpio-controller;
  26071. + #gpio-cells = <2>;
  26072. + #interrupt-cells = <2>;
  26073. + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-21-int-gpio parameter
  26074. + 2nd word is 2 for falling-edge triggered */
  26075. + status = "okay";
  26076. + };
  26077. + };
  26078. + };
  26079. +
  26080. + // Enable a SX1503 on I2C#0 at slave addr 0x20
  26081. + fragment@10 {
  26082. + target = <&i2c0>;
  26083. + __dormant__ {
  26084. + #address-cells = <1>;
  26085. + #size-cells = <0>;
  26086. +
  26087. + sx1503_0_20: sx150x@20 {
  26088. + compatible = "semtech,sx1503q";
  26089. + reg = <0x20>;
  26090. + gpio-controller;
  26091. + #gpio-cells = <2>;
  26092. + #interrupt-cells = <2>;
  26093. + interrupts = <25 2>; /* 1st word overwritten by sx1503-0-20-int-gpio parameter
  26094. + 2nd word is 2 for falling-edge triggered */
  26095. + status = "okay";
  26096. + };
  26097. + };
  26098. + };
  26099. +
  26100. + // Enable a SX1503 on I2C#1 at slave addr 0x20
  26101. + fragment@11 {
  26102. + target = <&i2c1>;
  26103. + __dormant__ {
  26104. + #address-cells = <1>;
  26105. + #size-cells = <0>;
  26106. +
  26107. + sx1503_1_20: sx150x@20 {
  26108. + compatible = "semtech,sx1503q";
  26109. + reg = <0x20>;
  26110. + gpio-controller;
  26111. + #gpio-cells = <2>;
  26112. + #interrupt-cells = <2>;
  26113. + interrupts = <25 2>; /* 1st word overwritten by sx1503-1-20-int-gpio parameter
  26114. + 2nd word is 2 for falling-edge triggered */
  26115. + status = "okay";
  26116. + };
  26117. + };
  26118. + };
  26119. +
  26120. + // Enable a SX1504 on I2C#0 at slave addr 0x20
  26121. + fragment@12 {
  26122. + target = <&i2c0>;
  26123. + __dormant__ {
  26124. + #address-cells = <1>;
  26125. + #size-cells = <0>;
  26126. +
  26127. + sx1504_0_20: sx150x@20 {
  26128. + compatible = "semtech,sx1504q";
  26129. + reg = <0x20>;
  26130. + gpio-controller;
  26131. + #gpio-cells = <2>;
  26132. + #interrupt-cells = <2>;
  26133. + interrupts = <25 2>; /* 1st word overwritten by sx1504-0-20-int-gpio parameter
  26134. + 2nd word is 2 for falling-edge triggered */
  26135. + status = "okay";
  26136. + };
  26137. + };
  26138. + };
  26139. +
  26140. + // Enable a SX1504 on I2C#1 at slave addr 0x20
  26141. + fragment@13 {
  26142. + target = <&i2c1>;
  26143. + __dormant__ {
  26144. + #address-cells = <1>;
  26145. + #size-cells = <0>;
  26146. +
  26147. + sx1504_1_20: sx150x@20 {
  26148. + compatible = "semtech,sx1504q";
  26149. + reg = <0x20>;
  26150. + gpio-controller;
  26151. + #gpio-cells = <2>;
  26152. + #interrupt-cells = <2>;
  26153. + interrupts = <25 2>; /* 1st word overwritten by sx1504-1-20-int-gpio parameter
  26154. + 2nd word is 2 for falling-edge triggered */
  26155. + status = "okay";
  26156. + };
  26157. + };
  26158. + };
  26159. +
  26160. + // Enable a SX1504 on I2C#0 at slave addr 0x21
  26161. + fragment@14 {
  26162. + target = <&i2c0>;
  26163. + __dormant__ {
  26164. + #address-cells = <1>;
  26165. + #size-cells = <0>;
  26166. +
  26167. + sx1504_0_21: sx150x@21 {
  26168. + compatible = "semtech,sx1504q";
  26169. + reg = <0x21>;
  26170. + gpio-controller;
  26171. + #gpio-cells = <2>;
  26172. + #interrupt-cells = <2>;
  26173. + interrupts = <25 2>; /* 1st word overwritten by sx1504-0-21-int-gpio parameter
  26174. + 2nd word is 2 for falling-edge triggered */
  26175. + status = "okay";
  26176. + };
  26177. + };
  26178. + };
  26179. +
  26180. + // Enable a SX1504 on I2C#1 at slave addr 0x21
  26181. + fragment@15 {
  26182. + target = <&i2c1>;
  26183. + __dormant__ {
  26184. + #address-cells = <1>;
  26185. + #size-cells = <0>;
  26186. +
  26187. + sx1504_1_21: sx150x@21 {
  26188. + compatible = "semtech,sx1504q";
  26189. + reg = <0x21>;
  26190. + gpio-controller;
  26191. + #gpio-cells = <2>;
  26192. + #interrupt-cells = <2>;
  26193. + interrupts = <25 2>; /* 1st word overwritten by sx1504-1-20-int-gpio parameter
  26194. + 2nd word is 2 for falling-edge triggered */
  26195. + status = "okay";
  26196. + };
  26197. + };
  26198. + };
  26199. +
  26200. + // Enable a SX1505 on I2C#0 at slave addr 0x20
  26201. + fragment@16 {
  26202. + target = <&i2c0>;
  26203. + __dormant__ {
  26204. + #address-cells = <1>;
  26205. + #size-cells = <0>;
  26206. +
  26207. + sx1505_0_20: sx150x@20 {
  26208. + compatible = "semtech,sx1505q";
  26209. + reg = <0x20>;
  26210. + gpio-controller;
  26211. + #gpio-cells = <2>;
  26212. + #interrupt-cells = <2>;
  26213. + interrupts = <25 2>; /* 1st word overwritten by sx1505-0-20-int-gpio parameter
  26214. + 2nd word is 2 for falling-edge triggered */
  26215. + status = "okay";
  26216. + };
  26217. + };
  26218. + };
  26219. +
  26220. + // Enable a SX1505 on I2C#1 at slave addr 0x20
  26221. + fragment@17 {
  26222. + target = <&i2c1>;
  26223. + __dormant__ {
  26224. + #address-cells = <1>;
  26225. + #size-cells = <0>;
  26226. +
  26227. + sx1505_1_20: sx150x@20 {
  26228. + compatible = "semtech,sx1505q";
  26229. + reg = <0x20>;
  26230. + gpio-controller;
  26231. + #gpio-cells = <2>;
  26232. + #interrupt-cells = <2>;
  26233. + interrupts = <25 2>; /* 1st word overwritten by sx1505-1-20-int-gpio parameter
  26234. + 2nd word is 2 for falling-edge triggered */
  26235. + status = "okay";
  26236. + };
  26237. + };
  26238. + };
  26239. +
  26240. + // Enable a SX1505 on I2C#0 at slave addr 0x21
  26241. + fragment@18 {
  26242. + target = <&i2c0>;
  26243. + __dormant__ {
  26244. + #address-cells = <1>;
  26245. + #size-cells = <0>;
  26246. +
  26247. + sx1505_0_21: sx150x@21 {
  26248. + compatible = "semtech,sx1505q";
  26249. + reg = <0x21>;
  26250. + gpio-controller;
  26251. + #gpio-cells = <2>;
  26252. + #interrupt-cells = <2>;
  26253. + interrupts = <25 2>; /* 1st word overwritten by sx1505-0-21-int-gpio parameter
  26254. + 2nd word is 2 for falling-edge triggered */
  26255. + status = "okay";
  26256. + };
  26257. + };
  26258. + };
  26259. +
  26260. + // Enable a SX1505 on I2C#1 at slave addr 0x21
  26261. + fragment@19 {
  26262. + target = <&i2c1>;
  26263. + __dormant__ {
  26264. + #address-cells = <1>;
  26265. + #size-cells = <0>;
  26266. +
  26267. + sx1505_1_21: sx150x@21 {
  26268. + compatible = "semtech,sx1505q";
  26269. + reg = <0x21>;
  26270. + gpio-controller;
  26271. + #gpio-cells = <2>;
  26272. + #interrupt-cells = <2>;
  26273. + interrupts = <25 2>; /* 1st word overwritten by sx1505-1-21-int-gpio parameter
  26274. + 2nd word is 2 for falling-edge triggered */
  26275. + status = "okay";
  26276. + };
  26277. + };
  26278. + };
  26279. +
  26280. + // Enable a SX1506 on I2C#0 at slave addr 0x20
  26281. + fragment@20 {
  26282. + target = <&i2c0>;
  26283. + __dormant__ {
  26284. + #address-cells = <1>;
  26285. + #size-cells = <0>;
  26286. +
  26287. + sx1506_0_20: sx150x@20 {
  26288. + compatible = "semtech,sx1506q";
  26289. + reg = <0x20>;
  26290. + gpio-controller;
  26291. + #gpio-cells = <2>;
  26292. + #interrupt-cells = <2>;
  26293. + interrupts = <25 2>; /* 1st word overwritten by sx1506-0-20-int-gpio parameter
  26294. + 2nd word is 2 for falling-edge triggered */
  26295. + status = "okay";
  26296. + };
  26297. + };
  26298. + };
  26299. +
  26300. + // Enable a SX1506 on I2C#1 at slave addr 0x20
  26301. + fragment@21 {
  26302. + target = <&i2c1>;
  26303. + __dormant__ {
  26304. + #address-cells = <1>;
  26305. + #size-cells = <0>;
  26306. +
  26307. + sx1506_1_20: sx150x@20 {
  26308. + compatible = "semtech,sx1506q";
  26309. + reg = <0x20>;
  26310. + gpio-controller;
  26311. + #gpio-cells = <2>;
  26312. + #interrupt-cells = <2>;
  26313. + interrupts = <25 2>; /* 1st word overwritten by sx1506-1-20-int-gpio parameter
  26314. + 2nd word is 2 for falling-edge triggered */
  26315. + status = "okay";
  26316. + };
  26317. + };
  26318. + };
  26319. +
  26320. + // Enable a SX1507 on I2C#0 at slave addr 0x3E
  26321. + fragment@22 {
  26322. + target = <&i2c0>;
  26323. + __dormant__ {
  26324. + #address-cells = <1>;
  26325. + #size-cells = <0>;
  26326. +
  26327. + sx1507_0_3E: sx150x@3E {
  26328. + compatible = "semtech,sx1507q";
  26329. + reg = <0x3E>;
  26330. + gpio-controller;
  26331. + #gpio-cells = <2>;
  26332. + #interrupt-cells = <2>;
  26333. + interrupts = <25 2>; /* 1st word overwritten by sx1507_0_3E-int-gpio parameter
  26334. + 2nd word is 2 for falling-edge triggered */
  26335. + status = "okay";
  26336. + };
  26337. + };
  26338. + };
  26339. +
  26340. + // Enable a SX1507 on I2C#1 at slave addr 0x3E
  26341. + fragment@23 {
  26342. + target = <&i2c1>;
  26343. + __dormant__ {
  26344. + #address-cells = <1>;
  26345. + #size-cells = <0>;
  26346. +
  26347. + sx1507_1_3E: sx150x@3E {
  26348. + compatible = "semtech,sx1507q";
  26349. + reg = <0x3E>;
  26350. + gpio-controller;
  26351. + #gpio-cells = <2>;
  26352. + #interrupt-cells = <2>;
  26353. + interrupts = <25 2>; /* 1st word overwritten by sx1507_1_3E-int-gpio parameter
  26354. + 2nd word is 2 for falling-edge triggered */
  26355. + status = "okay";
  26356. + };
  26357. + };
  26358. + };
  26359. +
  26360. + // Enable a SX1507 on I2C#0 at slave addr 0x3F
  26361. + fragment@24 {
  26362. + target = <&i2c0>;
  26363. + __dormant__ {
  26364. + #address-cells = <1>;
  26365. + #size-cells = <0>;
  26366. +
  26367. + sx1507_0_3F: sx150x@3F {
  26368. + compatible = "semtech,sx1507q";
  26369. + reg = <0x3F>;
  26370. + gpio-controller;
  26371. + #gpio-cells = <2>;
  26372. + #interrupt-cells = <2>;
  26373. + interrupts = <25 2>; /* 1st word overwritten by sx1507_0_3F-int-gpio parameter
  26374. + 2nd word is 2 for falling-edge triggered */
  26375. + status = "okay";
  26376. + };
  26377. + };
  26378. + };
  26379. +
  26380. + // Enable a SX1507 on I2C#1 at slave addr 0x3F
  26381. + fragment@25 {
  26382. + target = <&i2c1>;
  26383. + __dormant__ {
  26384. + #address-cells = <1>;
  26385. + #size-cells = <0>;
  26386. +
  26387. + sx1507_1_3F: sx150x@3F {
  26388. + compatible = "semtech,sx1507q";
  26389. + reg = <0x3F>;
  26390. + gpio-controller;
  26391. + #gpio-cells = <2>;
  26392. + #interrupt-cells = <2>;
  26393. + interrupts = <25 2>; /* 1st word overwritten by sx1507_1_3F-int-gpio parameter
  26394. + 2nd word is 2 for falling-edge triggered */
  26395. + status = "okay";
  26396. + };
  26397. + };
  26398. + };
  26399. +
  26400. + // Enable a SX1507 on I2C#0 at slave addr 0x70
  26401. + fragment@26 {
  26402. + target = <&i2c0>;
  26403. + __dormant__ {
  26404. + #address-cells = <1>;
  26405. + #size-cells = <0>;
  26406. +
  26407. + sx1507_0_70: sx150x@70 {
  26408. + compatible = "semtech,sx1507q";
  26409. + reg = <0x70>;
  26410. + gpio-controller;
  26411. + #gpio-cells = <2>;
  26412. + #interrupt-cells = <2>;
  26413. + interrupts = <25 2>; /* 1st word overwritten by sx1507-0-70-int-gpio parameter
  26414. + 2nd word is 2 for falling-edge triggered */
  26415. + status = "okay";
  26416. + };
  26417. + };
  26418. + };
  26419. +
  26420. + // Enable a SX1507 on I2C#1 at slave addr 0x70
  26421. + fragment@27 {
  26422. + target = <&i2c1>;
  26423. + __dormant__ {
  26424. + #address-cells = <1>;
  26425. + #size-cells = <0>;
  26426. +
  26427. + sx1507_1_70: sx150x@70 {
  26428. + compatible = "semtech,sx1507q";
  26429. + reg = <0x70>;
  26430. + gpio-controller;
  26431. + #gpio-cells = <2>;
  26432. + #interrupt-cells = <2>;
  26433. + interrupts = <25 2>; /* 1st word overwritten by sx1507-1-70-int-gpio parameter
  26434. + 2nd word is 2 for falling-edge triggered */
  26435. + status = "okay";
  26436. + };
  26437. + };
  26438. + };
  26439. +
  26440. + // Enable a SX1507 on I2C#0 at slave addr 0x71
  26441. + fragment@28 {
  26442. + target = <&i2c0>;
  26443. + __dormant__ {
  26444. + #address-cells = <1>;
  26445. + #size-cells = <0>;
  26446. +
  26447. + sx1507_0_71: sx150x@71 {
  26448. + compatible = "semtech,sx1507q";
  26449. + reg = <0x71>;
  26450. + gpio-controller;
  26451. + #gpio-cells = <2>;
  26452. + #interrupt-cells = <2>;
  26453. + interrupts = <25 2>; /* 1st word overwritten by sx1507-0-71-int-gpio parameter
  26454. + 2nd word is 2 for falling-edge triggered */
  26455. + status = "okay";
  26456. + };
  26457. + };
  26458. + };
  26459. +
  26460. + // Enable a SX1507 on I2C#1 at slave addr 0x71
  26461. + fragment@29 {
  26462. + target = <&i2c1>;
  26463. + __dormant__ {
  26464. + #address-cells = <1>;
  26465. + #size-cells = <0>;
  26466. +
  26467. + sx1507_1_71: sx150x@71 {
  26468. + compatible = "semtech,sx1507q";
  26469. + reg = <0x71>;
  26470. + gpio-controller;
  26471. + #gpio-cells = <2>;
  26472. + #interrupt-cells = <2>;
  26473. + interrupts = <25 2>; /* 1st word overwritten by sx1507-1-71-int-gpio parameter
  26474. + 2nd word is 2 for falling-edge triggered */
  26475. + status = "okay";
  26476. + };
  26477. + };
  26478. + };
  26479. +
  26480. + // Enable a SX1508 on I2C#0 at slave addr 0x20
  26481. + fragment@30 {
  26482. + target = <&i2c0>;
  26483. + __dormant__ {
  26484. + #address-cells = <1>;
  26485. + #size-cells = <0>;
  26486. +
  26487. + sx1508_0_20: sx150x@20 {
  26488. + compatible = "semtech,sx1508q";
  26489. + reg = <0x20>;
  26490. + gpio-controller;
  26491. + #gpio-cells = <2>;
  26492. + #interrupt-cells = <2>;
  26493. + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-20-int-gpio parameter
  26494. + 2nd word is 2 for falling-edge triggered */
  26495. + status = "okay";
  26496. + };
  26497. + };
  26498. + };
  26499. +
  26500. + // Enable a SX1508 on I2C#1 at slave addr 0x20
  26501. + fragment@31 {
  26502. + target = <&i2c1>;
  26503. + __dormant__ {
  26504. + #address-cells = <1>;
  26505. + #size-cells = <0>;
  26506. +
  26507. + sx1508_1_20: sx150x@20 {
  26508. + compatible = "semtech,sx1508q";
  26509. + reg = <0x20>;
  26510. + gpio-controller;
  26511. + #gpio-cells = <2>;
  26512. + #interrupt-cells = <2>;
  26513. + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-20-int-gpio parameter
  26514. + 2nd word is 2 for falling-edge triggered */
  26515. + status = "okay";
  26516. + };
  26517. + };
  26518. + };
  26519. +
  26520. + // Enable a SX1508 on I2C#0 at slave addr 0x21
  26521. + fragment@32 {
  26522. + target = <&i2c0>;
  26523. + __dormant__ {
  26524. + #address-cells = <1>;
  26525. + #size-cells = <0>;
  26526. +
  26527. + sx1508_0_21: sx150x@21 {
  26528. + compatible = "semtech,sx1508q";
  26529. + reg = <0x21>;
  26530. + gpio-controller;
  26531. + #gpio-cells = <2>;
  26532. + #interrupt-cells = <2>;
  26533. + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-21-int-gpio parameter
  26534. + 2nd word is 2 for falling-edge triggered */
  26535. + status = "okay";
  26536. + };
  26537. + };
  26538. + };
  26539. +
  26540. + // Enable a SX1508 on I2C#1 at slave addr 0x21
  26541. + fragment@33 {
  26542. + target = <&i2c1>;
  26543. + __dormant__ {
  26544. + #address-cells = <1>;
  26545. + #size-cells = <0>;
  26546. +
  26547. + sx1508_1_21: sx150x@21 {
  26548. + compatible = "semtech,sx1508q";
  26549. + reg = <0x21>;
  26550. + gpio-controller;
  26551. + #gpio-cells = <2>;
  26552. + #interrupt-cells = <2>;
  26553. + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-21-int-gpio parameter
  26554. + 2nd word is 2 for falling-edge triggered */
  26555. + status = "okay";
  26556. + };
  26557. + };
  26558. + };
  26559. +
  26560. + // Enable a SX1508 on I2C#0 at slave addr 0x22
  26561. + fragment@34 {
  26562. + target = <&i2c0>;
  26563. + __dormant__ {
  26564. + #address-cells = <1>;
  26565. + #size-cells = <0>;
  26566. +
  26567. + sx1508_0_22: sx150x@22 {
  26568. + compatible = "semtech,sx1508q";
  26569. + reg = <0x22>;
  26570. + gpio-controller;
  26571. + #gpio-cells = <2>;
  26572. + #interrupt-cells = <2>;
  26573. + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-22-int-gpio parameter
  26574. + 2nd word is 2 for falling-edge triggered */
  26575. + status = "okay";
  26576. + };
  26577. + };
  26578. + };
  26579. +
  26580. + // Enable a SX1508 on I2C#1 at slave addr 0x22
  26581. + fragment@35 {
  26582. + target = <&i2c1>;
  26583. + __dormant__ {
  26584. + #address-cells = <1>;
  26585. + #size-cells = <0>;
  26586. +
  26587. + sx1508_1_22: sx150x@22 {
  26588. + compatible = "semtech,sx1508q";
  26589. + reg = <0x22>;
  26590. + gpio-controller;
  26591. + #gpio-cells = <2>;
  26592. + #interrupt-cells = <2>;
  26593. + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-22-int-gpio parameter
  26594. + 2nd word is 2 for falling-edge triggered */
  26595. + status = "okay";
  26596. + };
  26597. + };
  26598. + };
  26599. +
  26600. + // Enable a SX1508 on I2C#0 at slave addr 0x23
  26601. + fragment@36 {
  26602. + target = <&i2c0>;
  26603. + __dormant__ {
  26604. + #address-cells = <1>;
  26605. + #size-cells = <0>;
  26606. +
  26607. + sx1508_0_23: sx150x@23 {
  26608. + compatible = "semtech,sx1508q";
  26609. + reg = <0x23>;
  26610. + gpio-controller;
  26611. + #gpio-cells = <2>;
  26612. + #interrupt-cells = <2>;
  26613. + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-23-int-gpio parameter
  26614. + 2nd word is 2 for falling-edge triggered */
  26615. + status = "okay";
  26616. + };
  26617. + };
  26618. + };
  26619. +
  26620. + // Enable a SX1508 on I2C#1 at slave addr 0x23
  26621. + fragment@37 {
  26622. + target = <&i2c1>;
  26623. + __dormant__ {
  26624. + #address-cells = <1>;
  26625. + #size-cells = <0>;
  26626. +
  26627. + sx1508_1_23: sx150x@23 {
  26628. + compatible = "semtech,sx1508q";
  26629. + reg = <0x23>;
  26630. + gpio-controller;
  26631. + #gpio-cells = <2>;
  26632. + #interrupt-cells = <2>;
  26633. + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-23-int-gpio parameter
  26634. + 2nd word is 2 for falling-edge triggered */
  26635. + status = "okay";
  26636. + };
  26637. + };
  26638. + };
  26639. +
  26640. + // Enable a SX1509 on I2C#0 at slave addr 0x3E
  26641. + fragment@38 {
  26642. + target = <&i2c0>;
  26643. + __dormant__ {
  26644. + #address-cells = <1>;
  26645. + #size-cells = <0>;
  26646. +
  26647. + sx1509_0_3E: sx150x@3E {
  26648. + compatible = "semtech,sx1509q";
  26649. + reg = <0x3E>;
  26650. + gpio-controller;
  26651. + #gpio-cells = <2>;
  26652. + #interrupt-cells = <2>;
  26653. + interrupts = <25 2>; /* 1st word overwritten by sx1509_0_3E-int-gpio parameter
  26654. + 2nd word is 2 for falling-edge triggered */
  26655. + status = "okay";
  26656. + };
  26657. + };
  26658. + };
  26659. +
  26660. + // Enable a SX1509 on I2C#1 at slave addr 0x3E
  26661. + fragment@39 {
  26662. + target = <&i2c1>;
  26663. + __dormant__ {
  26664. + #address-cells = <1>;
  26665. + #size-cells = <0>;
  26666. +
  26667. + sx1509_1_3E: sx150x@3E {
  26668. + compatible = "semtech,sx1509q";
  26669. + reg = <0x3E>;
  26670. + gpio-controller;
  26671. + #gpio-cells = <2>;
  26672. + #interrupt-cells = <2>;
  26673. + interrupts = <25 2>; /* 1st word overwritten by sx1509_1_3E-int-gpio parameter
  26674. + 2nd word is 2 for falling-edge triggered */
  26675. + status = "okay";
  26676. + };
  26677. + };
  26678. + };
  26679. +
  26680. + // Enable a SX1509 on I2C#0 at slave addr 0x3F
  26681. + fragment@40 {
  26682. + target = <&i2c0>;
  26683. + __dormant__ {
  26684. + #address-cells = <1>;
  26685. + #size-cells = <0>;
  26686. +
  26687. + sx1509_0_3F: sx150x@3F {
  26688. + compatible = "semtech,sx1509q";
  26689. + reg = <0x3F>;
  26690. + gpio-controller;
  26691. + #gpio-cells = <2>;
  26692. + #interrupt-cells = <2>;
  26693. + interrupts = <25 2>; /* 1st word overwritten by sx1509_0_3F-int-gpio parameter
  26694. + 2nd word is 2 for falling-edge triggered */
  26695. + status = "okay";
  26696. + };
  26697. + };
  26698. + };
  26699. +
  26700. + // Enable a SX1509 on I2C#1 at slave addr 0x3F
  26701. + fragment@41 {
  26702. + target = <&i2c1>;
  26703. + __dormant__ {
  26704. + #address-cells = <1>;
  26705. + #size-cells = <0>;
  26706. +
  26707. + sx1509_1_3F: sx150x@3F {
  26708. + compatible = "semtech,sx1509q";
  26709. + reg = <0x3F>;
  26710. + gpio-controller;
  26711. + #gpio-cells = <2>;
  26712. + #interrupt-cells = <2>;
  26713. + interrupts = <25 2>; /* 1st word overwritten by sx1509_1_3F-int-gpio parameter
  26714. + 2nd word is 2 for falling-edge triggered */
  26715. + status = "okay";
  26716. + };
  26717. + };
  26718. + };
  26719. +
  26720. + // Enable a SX1509 on I2C#0 at slave addr 0x70
  26721. + fragment@42 {
  26722. + target = <&i2c0>;
  26723. + __dormant__ {
  26724. + #address-cells = <1>;
  26725. + #size-cells = <0>;
  26726. +
  26727. + sx1509_0_70: sx150x@70 {
  26728. + compatible = "semtech,sx1509q";
  26729. + reg = <0x70>;
  26730. + gpio-controller;
  26731. + #gpio-cells = <2>;
  26732. + #interrupt-cells = <2>;
  26733. + interrupts = <25 2>; /* 1st word overwritten by sx1509-0-70-int-gpio parameter
  26734. + 2nd word is 2 for falling-edge triggered */
  26735. + status = "okay";
  26736. + };
  26737. + };
  26738. + };
  26739. +
  26740. + // Enable a SX1509 on I2C#1 at slave addr 0x70
  26741. + fragment@43 {
  26742. + target = <&i2c1>;
  26743. + __dormant__ {
  26744. + #address-cells = <1>;
  26745. + #size-cells = <0>;
  26746. +
  26747. + sx1509_1_70: sx150x@70 {
  26748. + compatible = "semtech,sx1509q";
  26749. + reg = <0x70>;
  26750. + gpio-controller;
  26751. + #gpio-cells = <2>;
  26752. + #interrupt-cells = <2>;
  26753. + interrupts = <25 2>; /* 1st word overwritten by sx1509-1-70-int-gpio parameter
  26754. + 2nd word is 2 for falling-edge triggered */
  26755. + status = "okay";
  26756. + };
  26757. + };
  26758. + };
  26759. +
  26760. + // Enable a SX1509 on I2C#0 at slave addr 0x71
  26761. + fragment@44 {
  26762. + target = <&i2c0>;
  26763. + __dormant__ {
  26764. + #address-cells = <1>;
  26765. + #size-cells = <0>;
  26766. +
  26767. + sx1509_0_71: sx150x@71 {
  26768. + compatible = "semtech,sx1509q";
  26769. + reg = <0x71>;
  26770. + gpio-controller;
  26771. + #gpio-cells = <2>;
  26772. + #interrupt-cells = <2>;
  26773. + interrupts = <25 2>; /* 1st word overwritten by sx1509-0-71-int-gpio parameter
  26774. + 2nd word is 2 for falling-edge triggered */
  26775. + status = "okay";
  26776. + };
  26777. + };
  26778. + };
  26779. +
  26780. + // Enable a SX1509 on I2C#1 at slave addr 0x71
  26781. + fragment@45 {
  26782. + target = <&i2c1>;
  26783. + __dormant__ {
  26784. + #address-cells = <1>;
  26785. + #size-cells = <0>;
  26786. +
  26787. + sx1509_1_71: sx150x@71 {
  26788. + compatible = "semtech,sx1509q";
  26789. + reg = <0x71>;
  26790. + gpio-controller;
  26791. + #gpio-cells = <2>;
  26792. + #interrupt-cells = <2>;
  26793. + interrupts = <25 2>; /* 1st word overwritten by sx1509-1-71-int-gpio parameter
  26794. + 2nd word is 2 for falling-edge triggered */
  26795. + status = "okay";
  26796. + };
  26797. + };
  26798. + };
  26799. +
  26800. + // Enable interrupts for a SX1501 on I2C#0 at slave addr 0x20
  26801. + fragment@46 {
  26802. + target = <&sx1501_0_20>;
  26803. + __dormant__ {
  26804. + interrupt-parent = <&gpio>;
  26805. + interrupt-controller;
  26806. + pinctrl-names = "default";
  26807. + pinctrl-0 = <&sx150x_0_20_pins>;
  26808. + };
  26809. + };
  26810. +
  26811. + // Enable interrupts for a SX1501 on I2C#1 at slave addr 0x20
  26812. + fragment@47 {
  26813. + target = <&sx1501_1_20>;
  26814. + __dormant__ {
  26815. + interrupt-parent = <&gpio>;
  26816. + interrupt-controller;
  26817. + pinctrl-names = "default";
  26818. + pinctrl-0 = <&sx150x_1_20_pins>;
  26819. + };
  26820. + };
  26821. +
  26822. + // Enable interrupts for a SX1501 on I2C#0 at slave addr 0x21
  26823. + fragment@48 {
  26824. + target = <&sx1501_0_21>;
  26825. + __dormant__ {
  26826. + interrupt-parent = <&gpio>;
  26827. + interrupt-controller;
  26828. + pinctrl-names = "default";
  26829. + pinctrl-0 = <&sx150x_0_21_pins>;
  26830. + };
  26831. + };
  26832. +
  26833. + // Enable interrupts for a SX1501 on I2C#1 at slave addr 0x21
  26834. + fragment@49 {
  26835. + target = <&sx1501_1_21>;
  26836. + __dormant__ {
  26837. + interrupt-parent = <&gpio>;
  26838. + interrupt-controller;
  26839. + pinctrl-names = "default";
  26840. + pinctrl-0 = <&sx150x_1_21_pins>;
  26841. + };
  26842. + };
  26843. +
  26844. + // Enable interrupts for a SX1502 on I2C#0 at slave addr 0x20
  26845. + fragment@50 {
  26846. + target = <&sx1502_0_20>;
  26847. + __dormant__ {
  26848. + interrupt-parent = <&gpio>;
  26849. + interrupt-controller;
  26850. + pinctrl-names = "default";
  26851. + pinctrl-0 = <&sx150x_0_20_pins>;
  26852. + };
  26853. + };
  26854. +
  26855. + // Enable interrupts for a SX1502 on I2C#1 at slave addr 0x20
  26856. + fragment@51 {
  26857. + target = <&sx1502_1_20>;
  26858. + __dormant__ {
  26859. + interrupt-parent = <&gpio>;
  26860. + interrupt-controller;
  26861. + pinctrl-names = "default";
  26862. + pinctrl-0 = <&sx150x_1_20_pins>;
  26863. + };
  26864. + };
  26865. +
  26866. + // Enable interrupts for a SX1502 on I2C#0 at slave addr 0x21
  26867. + fragment@52 {
  26868. + target = <&sx1502_0_21>;
  26869. + __dormant__ {
  26870. + interrupt-parent = <&gpio>;
  26871. + interrupt-controller;
  26872. + pinctrl-names = "default";
  26873. + pinctrl-0 = <&sx150x_0_21_pins>;
  26874. + };
  26875. + };
  26876. +
  26877. + // Enable interrupts for a SX1502 on I2C#1 at slave addr 0x21
  26878. + fragment@53 {
  26879. + target = <&sx1502_1_21>;
  26880. + __dormant__ {
  26881. + interrupt-parent = <&gpio>;
  26882. + interrupt-controller;
  26883. + pinctrl-names = "default";
  26884. + pinctrl-0 = <&sx150x_1_21_pins>;
  26885. + };
  26886. + };
  26887. +
  26888. + // Enable interrupts for a SX1503 on I2C#0 at slave addr 0x20
  26889. + fragment@54 {
  26890. + target = <&sx1503_0_20>;
  26891. + __dormant__ {
  26892. + interrupt-parent = <&gpio>;
  26893. + interrupt-controller;
  26894. + pinctrl-names = "default";
  26895. + pinctrl-0 = <&sx150x_0_20_pins>;
  26896. + };
  26897. + };
  26898. +
  26899. + // Enable interrupts for a SX1503 on I2C#1 at slave addr 0x20
  26900. + fragment@55 {
  26901. + target = <&sx1503_1_20>;
  26902. + __dormant__ {
  26903. + interrupt-parent = <&gpio>;
  26904. + interrupt-controller;
  26905. + pinctrl-names = "default";
  26906. + pinctrl-0 = <&sx150x_1_20_pins>;
  26907. + };
  26908. + };
  26909. +
  26910. + // Enable interrupts for a SX1504 on I2C#0 at slave addr 0x20
  26911. + fragment@56 {
  26912. + target = <&sx1504_0_20>;
  26913. + __dormant__ {
  26914. + interrupt-parent = <&gpio>;
  26915. + interrupt-controller;
  26916. + pinctrl-names = "default";
  26917. + pinctrl-0 = <&sx150x_0_20_pins>;
  26918. + };
  26919. + };
  26920. +
  26921. + // Enable interrupts for a SX1504 on I2C#1 at slave addr 0x20
  26922. + fragment@57 {
  26923. + target = <&sx1504_1_20>;
  26924. + __dormant__ {
  26925. + interrupt-parent = <&gpio>;
  26926. + interrupt-controller;
  26927. + pinctrl-names = "default";
  26928. + pinctrl-0 = <&sx150x_1_20_pins>;
  26929. + };
  26930. + };
  26931. +
  26932. + // Enable interrupts for a SX1504 on I2C#0 at slave addr 0x21
  26933. + fragment@58 {
  26934. + target = <&sx1504_0_21>;
  26935. + __dormant__ {
  26936. + interrupt-parent = <&gpio>;
  26937. + interrupt-controller;
  26938. + pinctrl-names = "default";
  26939. + pinctrl-0 = <&sx150x_0_21_pins>;
  26940. + };
  26941. + };
  26942. +
  26943. + // Enable interrupts for a SX1504 on I2C#1 at slave addr 0x21
  26944. + fragment@59 {
  26945. + target = <&sx1504_1_21>;
  26946. + __dormant__ {
  26947. + interrupt-parent = <&gpio>;
  26948. + interrupt-controller;
  26949. + pinctrl-names = "default";
  26950. + pinctrl-0 = <&sx150x_1_21_pins>;
  26951. + };
  26952. + };
  26953. +
  26954. + // Enable interrupts for a SX1505 on I2C#0 at slave addr 0x20
  26955. + fragment@60 {
  26956. + target = <&sx1505_0_20>;
  26957. + __dormant__ {
  26958. + interrupt-parent = <&gpio>;
  26959. + interrupt-controller;
  26960. + pinctrl-names = "default";
  26961. + pinctrl-0 = <&sx150x_0_20_pins>;
  26962. + };
  26963. + };
  26964. +
  26965. + // Enable interrupts for a SX1505 on I2C#1 at slave addr 0x20
  26966. + fragment@61 {
  26967. + target = <&sx1505_1_20>;
  26968. + __dormant__ {
  26969. + interrupt-parent = <&gpio>;
  26970. + interrupt-controller;
  26971. + pinctrl-names = "default";
  26972. + pinctrl-0 = <&sx150x_1_20_pins>;
  26973. + };
  26974. + };
  26975. +
  26976. + // Enable interrupts for a SX1505 on I2C#0 at slave addr 0x21
  26977. + fragment@62 {
  26978. + target = <&sx1505_0_21>;
  26979. + __dormant__ {
  26980. + interrupt-parent = <&gpio>;
  26981. + interrupt-controller;
  26982. + pinctrl-names = "default";
  26983. + pinctrl-0 = <&sx150x_0_21_pins>;
  26984. + };
  26985. + };
  26986. +
  26987. + // Enable interrupts for a SX1505 on I2C#1 at slave addr 0x21
  26988. + fragment@63 {
  26989. + target = <&sx1505_1_21>;
  26990. + __dormant__ {
  26991. + interrupt-parent = <&gpio>;
  26992. + interrupt-controller;
  26993. + pinctrl-names = "default";
  26994. + pinctrl-0 = <&sx150x_1_21_pins>;
  26995. + };
  26996. + };
  26997. +
  26998. + // Enable interrupts for a SX1506 on I2C#0 at slave addr 0x20
  26999. + fragment@64 {
  27000. + target = <&sx1506_0_20>;
  27001. + __dormant__ {
  27002. + interrupt-parent = <&gpio>;
  27003. + interrupt-controller;
  27004. + pinctrl-names = "default";
  27005. + pinctrl-0 = <&sx150x_0_20_pins>;
  27006. + };
  27007. + };
  27008. +
  27009. + // Enable interrupts for a SX1506 on I2C#1 at slave addr 0x20
  27010. + fragment@65 {
  27011. + target = <&sx1506_1_20>;
  27012. + __dormant__ {
  27013. + interrupt-parent = <&gpio>;
  27014. + interrupt-controller;
  27015. + pinctrl-names = "default";
  27016. + pinctrl-0 = <&sx150x_1_20_pins>;
  27017. + };
  27018. + };
  27019. +
  27020. + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x3E
  27021. + fragment@66 {
  27022. + target = <&sx1507_0_3E>;
  27023. + __dormant__ {
  27024. + interrupt-parent = <&gpio>;
  27025. + interrupt-controller;
  27026. + pinctrl-names = "default";
  27027. + pinctrl-0 = <&sx150x_0_3E_pins>;
  27028. + };
  27029. + };
  27030. +
  27031. + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x3E
  27032. + fragment@67 {
  27033. + target = <&sx1507_1_3E>;
  27034. + __dormant__ {
  27035. + interrupt-parent = <&gpio>;
  27036. + interrupt-controller;
  27037. + pinctrl-names = "default";
  27038. + pinctrl-0 = <&sx150x_1_3E_pins>;
  27039. + };
  27040. + };
  27041. +
  27042. + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x3F
  27043. + fragment@68 {
  27044. + target = <&sx1507_0_3F>;
  27045. + __dormant__ {
  27046. + interrupt-parent = <&gpio>;
  27047. + interrupt-controller;
  27048. + pinctrl-names = "default";
  27049. + pinctrl-0 = <&sx150x_0_3F_pins>;
  27050. + };
  27051. + };
  27052. +
  27053. + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x3F
  27054. + fragment@69 {
  27055. + target = <&sx1507_1_3F>;
  27056. + __dormant__ {
  27057. + interrupt-parent = <&gpio>;
  27058. + interrupt-controller;
  27059. + pinctrl-names = "default";
  27060. + pinctrl-0 = <&sx150x_1_3F_pins>;
  27061. + };
  27062. + };
  27063. +
  27064. + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x70
  27065. + fragment@70 {
  27066. + target = <&sx1507_0_70>;
  27067. + __dormant__ {
  27068. + interrupt-parent = <&gpio>;
  27069. + interrupt-controller;
  27070. + pinctrl-names = "default";
  27071. + pinctrl-0 = <&sx150x_1_70_pins>;
  27072. + };
  27073. + };
  27074. +
  27075. + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x70
  27076. + fragment@71 {
  27077. + target = <&sx1507_1_70>;
  27078. + __dormant__ {
  27079. + interrupt-parent = <&gpio>;
  27080. + interrupt-controller;
  27081. + pinctrl-names = "default";
  27082. + pinctrl-0 = <&sx150x_1_70_pins>;
  27083. + };
  27084. + };
  27085. +
  27086. + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x71
  27087. + fragment@72 {
  27088. + target = <&sx1507_0_71>;
  27089. + __dormant__ {
  27090. + interrupt-parent = <&gpio>;
  27091. + interrupt-controller;
  27092. + pinctrl-names = "default";
  27093. + pinctrl-0 = <&sx150x_0_71_pins>;
  27094. + };
  27095. + };
  27096. +
  27097. + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x71
  27098. + fragment@73 {
  27099. + target = <&sx1507_1_71>;
  27100. + __dormant__ {
  27101. + interrupt-parent = <&gpio>;
  27102. + interrupt-controller;
  27103. + pinctrl-names = "default";
  27104. + pinctrl-0 = <&sx150x_1_71_pins>;
  27105. + };
  27106. + };
  27107. +
  27108. + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x20
  27109. + fragment@74 {
  27110. + target = <&sx1508_0_20>;
  27111. + __dormant__ {
  27112. + interrupt-parent = <&gpio>;
  27113. + interrupt-controller;
  27114. + pinctrl-names = "default";
  27115. + pinctrl-0 = <&sx150x_0_20_pins>;
  27116. + };
  27117. + };
  27118. +
  27119. + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x20
  27120. + fragment@75 {
  27121. + target = <&sx1508_1_20>;
  27122. + __dormant__ {
  27123. + interrupt-parent = <&gpio>;
  27124. + interrupt-controller;
  27125. + pinctrl-names = "default";
  27126. + pinctrl-0 = <&sx150x_1_20_pins>;
  27127. + };
  27128. + };
  27129. +
  27130. + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x21
  27131. + fragment@76 {
  27132. + target = <&sx1508_0_21>;
  27133. + __dormant__ {
  27134. + interrupt-parent = <&gpio>;
  27135. + interrupt-controller;
  27136. + pinctrl-names = "default";
  27137. + pinctrl-0 = <&sx150x_0_21_pins>;
  27138. + };
  27139. + };
  27140. +
  27141. + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x21
  27142. + fragment@77 {
  27143. + target = <&sx1508_1_21>;
  27144. + __dormant__ {
  27145. + interrupt-parent = <&gpio>;
  27146. + interrupt-controller;
  27147. + pinctrl-names = "default";
  27148. + pinctrl-0 = <&sx150x_1_21_pins>;
  27149. + };
  27150. + };
  27151. +
  27152. + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x22
  27153. + fragment@78 {
  27154. + target = <&sx1508_0_22>;
  27155. + __dormant__ {
  27156. + interrupt-parent = <&gpio>;
  27157. + interrupt-controller;
  27158. + pinctrl-names = "default";
  27159. + pinctrl-0 = <&sx150x_0_22_pins>;
  27160. + };
  27161. + };
  27162. +
  27163. + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x22
  27164. + fragment@79 {
  27165. + target = <&sx1508_1_22>;
  27166. + __dormant__ {
  27167. + interrupt-parent = <&gpio>;
  27168. + interrupt-controller;
  27169. + pinctrl-names = "default";
  27170. + pinctrl-0 = <&sx150x_1_22_pins>;
  27171. + };
  27172. + };
  27173. +
  27174. + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x23
  27175. + fragment@80 {
  27176. + target = <&sx1508_0_23>;
  27177. + __dormant__ {
  27178. + interrupt-parent = <&gpio>;
  27179. + interrupt-controller;
  27180. + pinctrl-names = "default";
  27181. + pinctrl-0 = <&sx150x_0_23_pins>;
  27182. + };
  27183. + };
  27184. +
  27185. + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x23
  27186. + fragment@81 {
  27187. + target = <&sx1508_1_23>;
  27188. + __dormant__ {
  27189. + interrupt-parent = <&gpio>;
  27190. + interrupt-controller;
  27191. + pinctrl-names = "default";
  27192. + pinctrl-0 = <&sx150x_1_23_pins>;
  27193. + };
  27194. + };
  27195. +
  27196. + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x3E
  27197. + fragment@82 {
  27198. + target = <&sx1509_0_3E>;
  27199. + __dormant__ {
  27200. + interrupt-parent = <&gpio>;
  27201. + interrupt-controller;
  27202. + pinctrl-names = "default";
  27203. + pinctrl-0 = <&sx150x_0_3E_pins>;
  27204. + };
  27205. + };
  27206. +
  27207. + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x3E
  27208. + fragment@83 {
  27209. + target = <&sx1509_1_3E>;
  27210. + __dormant__ {
  27211. + interrupt-parent = <&gpio>;
  27212. + interrupt-controller;
  27213. + pinctrl-names = "default";
  27214. + pinctrl-0 = <&sx150x_1_3E_pins>;
  27215. + };
  27216. + };
  27217. +
  27218. + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x3F
  27219. + fragment@84 {
  27220. + target = <&sx1509_0_3F>;
  27221. + __dormant__ {
  27222. + interrupt-parent = <&gpio>;
  27223. + interrupt-controller;
  27224. + pinctrl-names = "default";
  27225. + pinctrl-0 = <&sx150x_0_3F_pins>;
  27226. + };
  27227. + };
  27228. +
  27229. + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x3F
  27230. + fragment@85 {
  27231. + target = <&sx1509_1_3F>;
  27232. + __dormant__ {
  27233. + interrupt-parent = <&gpio>;
  27234. + interrupt-controller;
  27235. + pinctrl-names = "default";
  27236. + pinctrl-0 = <&sx150x_1_3F_pins>;
  27237. + };
  27238. + };
  27239. +
  27240. + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x70
  27241. + fragment@86 {
  27242. + target = <&sx1509_0_70>;
  27243. + __dormant__ {
  27244. + interrupt-parent = <&gpio>;
  27245. + interrupt-controller;
  27246. + pinctrl-names = "default";
  27247. + pinctrl-0 = <&sx150x_0_70_pins>;
  27248. + };
  27249. + };
  27250. +
  27251. + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x70
  27252. + fragment@87 {
  27253. + target = <&sx1509_1_70>;
  27254. + __dormant__ {
  27255. + interrupt-parent = <&gpio>;
  27256. + interrupt-controller;
  27257. + pinctrl-names = "default";
  27258. + pinctrl-0 = <&sx150x_1_70_pins>;
  27259. + };
  27260. + };
  27261. +
  27262. + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x71
  27263. + fragment@88 {
  27264. + target = <&sx1509_0_71>;
  27265. + __dormant__ {
  27266. + interrupt-parent = <&gpio>;
  27267. + interrupt-controller;
  27268. + pinctrl-names = "default";
  27269. + pinctrl-0 = <&sx150x_0_71_pins>;
  27270. + };
  27271. + };
  27272. +
  27273. + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x71
  27274. + fragment@89 {
  27275. + target = <&sx1509_1_71>;
  27276. + __dormant__ {
  27277. + interrupt-parent = <&gpio>;
  27278. + interrupt-controller;
  27279. + pinctrl-names = "default";
  27280. + pinctrl-0 = <&sx150x_1_71_pins>;
  27281. + };
  27282. + };
  27283. +
  27284. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x20
  27285. + // Configure as a input with no pull-up/down
  27286. + fragment@90 {
  27287. + target = <&gpio>;
  27288. + __dormant__ {
  27289. + sx150x_0_20_pins: sx150x_0_20_pins {
  27290. + brcm,pins = <0>; /* overwritten by sx150x-0-20-int-gpio parameter */
  27291. + brcm,function = <0>;
  27292. + brcm,pull = <0>;
  27293. + };
  27294. + };
  27295. + };
  27296. +
  27297. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x20
  27298. + // Configure as a input with no pull-up/down
  27299. + fragment@91 {
  27300. + target = <&gpio>;
  27301. + __dormant__ {
  27302. + sx150x_1_20_pins: sx150x_1_20_pins {
  27303. + brcm,pins = <0>; /* overwritten by sx150x-1-20-int-gpio parameter */
  27304. + brcm,function = <0>;
  27305. + brcm,pull = <0>;
  27306. + };
  27307. + };
  27308. + };
  27309. +
  27310. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x21
  27311. + // Configure as a input with no pull-up/down
  27312. + fragment@92 {
  27313. + target = <&gpio>;
  27314. + __dormant__ {
  27315. + sx150x_0_21_pins: sx150x_0_21_pins {
  27316. + brcm,pins = <0>; /* overwritten by sx150x-0-21-int-gpio parameter */
  27317. + brcm,function = <0>;
  27318. + brcm,pull = <0>;
  27319. + };
  27320. + };
  27321. + };
  27322. +
  27323. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x21
  27324. + // Configure as a input with no pull-up/down
  27325. + fragment@93 {
  27326. + target = <&gpio>;
  27327. + __dormant__ {
  27328. + sx150x_1_21_pins: sx150x_1_21_pins {
  27329. + brcm,pins = <0>; /* overwritten by sx150x-1-21-int-gpio parameter */
  27330. + brcm,function = <0>;
  27331. + brcm,pull = <0>;
  27332. + };
  27333. + };
  27334. + };
  27335. +
  27336. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x22
  27337. + // Configure as a input with no pull-up/down
  27338. + fragment@94 {
  27339. + target = <&gpio>;
  27340. + __dormant__ {
  27341. + sx150x_0_22_pins: sx150x_0_22_pins {
  27342. + brcm,pins = <0>; /* overwritten by sx150x-0-22-int-gpio parameter */
  27343. + brcm,function = <0>;
  27344. + brcm,pull = <0>;
  27345. + };
  27346. + };
  27347. + };
  27348. +
  27349. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x22
  27350. + // Configure as a input with no pull-up/down
  27351. + fragment@95 {
  27352. + target = <&gpio>;
  27353. + __dormant__ {
  27354. + sx150x_1_22_pins: sx150x_1_22_pins {
  27355. + brcm,pins = <0>; /* overwritten by sx150x-1-22-int-gpio parameter */
  27356. + brcm,function = <0>;
  27357. + brcm,pull = <0>;
  27358. + };
  27359. + };
  27360. + };
  27361. +
  27362. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x23
  27363. + // Configure as a input with no pull-up/down
  27364. + fragment@96 {
  27365. + target = <&gpio>;
  27366. + __dormant__ {
  27367. + sx150x_0_23_pins: sx150x_0_23_pins {
  27368. + brcm,pins = <0>; /* overwritten by sx150x-0-23-int-gpio parameter */
  27369. + brcm,function = <0>;
  27370. + brcm,pull = <0>;
  27371. + };
  27372. + };
  27373. + };
  27374. +
  27375. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x23
  27376. + // Configure as a input with no pull-up/down
  27377. + fragment@97 {
  27378. + target = <&gpio>;
  27379. + __dormant__ {
  27380. + sx150x_1_23_pins: sx150x_1_23_pins {
  27381. + brcm,pins = <0>; /* overwritten by sx150x-1-23-int-gpio parameter */
  27382. + brcm,function = <0>;
  27383. + brcm,pull = <0>;
  27384. + };
  27385. + };
  27386. + };
  27387. +
  27388. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x3E
  27389. + // Configure as a input with no pull-up/down
  27390. + fragment@98 {
  27391. + target = <&gpio>;
  27392. + __dormant__ {
  27393. + sx150x_0_3E_pins: sx150x_0_3E_pins {
  27394. + brcm,pins = <0>; /* overwritten by sx150x-0-3E-int-gpio parameter */
  27395. + brcm,function = <0>;
  27396. + brcm,pull = <0>;
  27397. + };
  27398. + };
  27399. + };
  27400. +
  27401. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x3E
  27402. + // Configure as a input with no pull-up/down
  27403. + fragment@99 {
  27404. + target = <&gpio>;
  27405. + __dormant__ {
  27406. + sx150x_1_3E_pins: sx150x_1_3E_pins {
  27407. + brcm,pins = <0>; /* overwritten by sx150x-1-3E-int-gpio parameter */
  27408. + brcm,function = <0>;
  27409. + brcm,pull = <0>;
  27410. + };
  27411. + };
  27412. + };
  27413. +
  27414. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x3F
  27415. + // Configure as a input with no pull-up/down
  27416. + fragment@100 {
  27417. + target = <&gpio>;
  27418. + __dormant__ {
  27419. + sx150x_0_3F_pins: sx150x_0_3F_pins {
  27420. + brcm,pins = <0>; /* overwritten by sx150x-0-3F-int-gpio parameter */
  27421. + brcm,function = <0>;
  27422. + brcm,pull = <0>;
  27423. + };
  27424. + };
  27425. + };
  27426. +
  27427. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x3F
  27428. + // Configure as a input with no pull-up/down
  27429. + fragment@101 {
  27430. + target = <&gpio>;
  27431. + __dormant__ {
  27432. + sx150x_1_3F_pins: sx150x_1_3F_pins {
  27433. + brcm,pins = <0>; /* overwritten by sx150x-1-3F-int-gpio parameter */
  27434. + brcm,function = <0>;
  27435. + brcm,pull = <0>;
  27436. + };
  27437. + };
  27438. + };
  27439. +
  27440. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x70
  27441. + // Configure as a input with no pull-up/down
  27442. + fragment@102 {
  27443. + target = <&gpio>;
  27444. + __dormant__ {
  27445. + sx150x_0_70_pins: sx150x_0_70_pins {
  27446. + brcm,pins = <0>; /* overwritten by sx150x-0-70-int-gpio parameter */
  27447. + brcm,function = <0>;
  27448. + brcm,pull = <0>;
  27449. + };
  27450. + };
  27451. + };
  27452. +
  27453. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x70
  27454. + // Configure as a input with no pull-up/down
  27455. + fragment@103 {
  27456. + target = <&gpio>;
  27457. + __dormant__ {
  27458. + sx150x_1_70_pins: sx150x_1_70_pins {
  27459. + brcm,pins = <0>; /* overwritten by sx150x-1-70-int-gpio parameter */
  27460. + brcm,function = <0>;
  27461. + brcm,pull = <0>;
  27462. + };
  27463. + };
  27464. + };
  27465. +
  27466. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x71
  27467. + // Configure as a input with no pull-up/down
  27468. + fragment@104 {
  27469. + target = <&gpio>;
  27470. + __dormant__ {
  27471. + sx150x_0_71_pins: sx150x_0_71_pins {
  27472. + brcm,pins = <0>; /* overwritten by sx150x-0-71-int-gpio parameter */
  27473. + brcm,function = <0>;
  27474. + brcm,pull = <0>;
  27475. + };
  27476. + };
  27477. + };
  27478. +
  27479. + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x71
  27480. + // Configure as a input with no pull-up/down
  27481. + fragment@105 {
  27482. + target = <&gpio>;
  27483. + __dormant__ {
  27484. + sx150x_1_71_pins: sx150x_1_71_pins {
  27485. + brcm,pins = <0>; /* overwritten by sx150x-1-71-int-gpio parameter */
  27486. + brcm,function = <0>;
  27487. + brcm,pull = <0>;
  27488. + };
  27489. + };
  27490. + };
  27491. +
  27492. + __overrides__ {
  27493. + sx1501-0-20 = <0>,"+0+2";
  27494. + sx1501-1-20 = <0>,"+1+3";
  27495. + sx1501-0-21 = <0>,"+0+4";
  27496. + sx1501-1-21 = <0>,"+1+5";
  27497. + sx1502-0-20 = <0>,"+0+6";
  27498. + sx1502-1-20 = <0>,"+1+7";
  27499. + sx1502-0-21 = <0>,"+0+8";
  27500. + sx1502-1-21 = <0>,"+1+9";
  27501. + sx1503-0-20 = <0>,"+0+10";
  27502. + sx1503-1-20 = <0>,"+1+11";
  27503. + sx1504-0-20 = <0>,"+0+12";
  27504. + sx1504-1-20 = <0>,"+1+13";
  27505. + sx1504-0-21 = <0>,"+0+14";
  27506. + sx1504-1-21 = <0>,"+1+15";
  27507. + sx1505-0-20 = <0>,"+0+16";
  27508. + sx1505-1-20 = <0>,"+1+17";
  27509. + sx1505-0-21 = <0>,"+0+18";
  27510. + sx1505-1-21 = <0>,"+1+19";
  27511. + sx1506-0-20 = <0>,"+0+20";
  27512. + sx1506-1-20 = <0>,"+1+21";
  27513. + sx1507-0-3E = <0>,"+0+22";
  27514. + sx1507-1-3E = <0>,"+1+23";
  27515. + sx1507-0-3F = <0>,"+0+24";
  27516. + sx1507-1-3F = <0>,"+1+25";
  27517. + sx1507-0-70 = <0>,"+0+26";
  27518. + sx1507-1-70 = <0>,"+1+27";
  27519. + sx1507-0-71 = <0>,"+0+28";
  27520. + sx1507-1-71 = <0>,"+1+29";
  27521. + sx1508-0-20 = <0>,"+0+30";
  27522. + sx1508-1-20 = <0>,"+1+31";
  27523. + sx1508-0-21 = <0>,"+0+32";
  27524. + sx1508-1-21 = <0>,"+1+33";
  27525. + sx1508-0-22 = <0>,"+0+34";
  27526. + sx1508-1-22 = <0>,"+1+35";
  27527. + sx1508-0-23 = <0>,"+0+36";
  27528. + sx1508-1-23 = <0>,"+1+37";
  27529. + sx1509-0-3E = <0>,"+0+38";
  27530. + sx1509-1-3E = <0>,"+1+39";
  27531. + sx1509-0-3F = <0>,"+0+40";
  27532. + sx1509-1-3F = <0>,"+1+41";
  27533. + sx1509-0-70 = <0>,"+0+42";
  27534. + sx1509-1-70 = <0>,"+1+43";
  27535. + sx1509-0-71 = <0>,"+0+44";
  27536. + sx1509-1-71 = <0>,"+1+45";
  27537. + sx1501-0-20-int-gpio = <0>,"+46+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1501_0_20>,"interrupts:0";
  27538. + sx1501-1-20-int-gpio = <0>,"+47+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1501_1_20>,"interrupts:0";
  27539. + sx1501-0-21-int-gpio = <0>,"+48+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1501_0_21>,"interrupts:0";
  27540. + sx1501-1-21-int-gpio = <0>,"+49+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1501_1_21>,"interrupts:0";
  27541. + sx1502-0-20-int-gpio = <0>,"+50+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1502_0_20>,"interrupts:0";
  27542. + sx1502-1-20-int-gpio = <0>,"+51+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1502_1_20>,"interrupts:0";
  27543. + sx1502-0-21-int-gpio = <0>,"+52+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1502_0_21>,"interrupts:0";
  27544. + sx1502-1-21-int-gpio = <0>,"+53+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1502_1_21>,"interrupts:0";
  27545. + sx1503-0-20-int-gpio = <0>,"+54+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1503_0_20>,"interrupts:0";
  27546. + sx1503-1-20-int-gpio = <0>,"+55+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1503_1_20>,"interrupts:0";
  27547. + sx1504-0-20-int-gpio = <0>,"+56+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1504_0_20>,"interrupts:0";
  27548. + sx1504-1-20-int-gpio = <0>,"+57+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1504_1_20>,"interrupts:0";
  27549. + sx1504-0-21-int-gpio = <0>,"+58+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1504_0_21>,"interrupts:0";
  27550. + sx1504-1-21-int-gpio = <0>,"+59+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1504_1_21>,"interrupts:0";
  27551. + sx1505-0-20-int-gpio = <0>,"+60+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1505_0_20>,"interrupts:0";
  27552. + sx1505-1-20-int-gpio = <0>,"+61+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1505_1_20>,"interrupts:0";
  27553. + sx1505-0-21-int-gpio = <0>,"+62+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1505_0_21>,"interrupts:0";
  27554. + sx1505-1-21-int-gpio = <0>,"+63+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1505_1_21>,"interrupts:0";
  27555. + sx1506-0-20-int-gpio = <0>,"+64+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1506_0_20>,"interrupts:0";
  27556. + sx1506-1-20-int-gpio = <0>,"+65+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1506_1_20>,"interrupts:0";
  27557. + sx1507-0-3E-int-gpio = <0>,"+66+98", <&sx150x_0_3E_pins>,"brcm,pins:0", <&sx1507_0_3E>,"interrupts:0";
  27558. + sx1507-1-3E-int-gpio = <0>,"+67+99", <&sx150x_1_3E_pins>,"brcm,pins:0", <&sx1507_1_3E>,"interrupts:0";
  27559. + sx1507-0-3F-int-gpio = <0>,"+68+100", <&sx150x_0_3F_pins>,"brcm,pins:0", <&sx1507_0_3F>,"interrupts:0";
  27560. + sx1507-1-3F-int-gpio = <0>,"+69+101", <&sx150x_1_3F_pins>,"brcm,pins:0", <&sx1507_1_3F>,"interrupts:0";
  27561. + sx1507-0-70-int-gpio = <0>,"+60+102", <&sx150x_0_70_pins>,"brcm,pins:0", <&sx1507_0_70>,"interrupts:0";
  27562. + sx1507-1-70-int-gpio = <0>,"+71+103", <&sx150x_1_70_pins>,"brcm,pins:0", <&sx1507_1_70>,"interrupts:0";
  27563. + sx1507-0-71-int-gpio = <0>,"+72+104", <&sx150x_0_71_pins>,"brcm,pins:0", <&sx1507_0_71>,"interrupts:0";
  27564. + sx1507-1-71-int-gpio = <0>,"+73+105", <&sx150x_1_71_pins>,"brcm,pins:0", <&sx1507_1_71>,"interrupts:0";
  27565. + sx1508-0-20-int-gpio = <0>,"+74+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1508_0_20>,"interrupts:0";
  27566. + sx1508-1-20-int-gpio = <0>,"+75+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1508_1_20>,"interrupts:0";
  27567. + sx1508-0-21-int-gpio = <0>,"+76+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1508_0_21>,"interrupts:0";
  27568. + sx1508-1-21-int-gpio = <0>,"+77+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1508_1_21>,"interrupts:0";
  27569. + sx1508-0-22-int-gpio = <0>,"+78+94", <&sx150x_0_22_pins>,"brcm,pins:0", <&sx1508_0_22>,"interrupts:0";
  27570. + sx1508-1-22-int-gpio = <0>,"+79+95", <&sx150x_1_22_pins>,"brcm,pins:0", <&sx1508_1_22>,"interrupts:0";
  27571. + sx1508-0-23-int-gpio = <0>,"+80+96", <&sx150x_0_23_pins>,"brcm,pins:0", <&sx1508_0_23>,"interrupts:0";
  27572. + sx1508-1-23-int-gpio = <0>,"+81+97", <&sx150x_1_23_pins>,"brcm,pins:0", <&sx1508_1_23>,"interrupts:0";
  27573. + sx1509-0-3E-int-gpio = <0>,"+82+98", <&sx150x_0_3E_pins>,"brcm,pins:0", <&sx1509_0_3E>,"interrupts:0";
  27574. + sx1509-1-3E-int-gpio = <0>,"+83+99", <&sx150x_1_3E_pins>,"brcm,pins:0", <&sx1509_1_3E>,"interrupts:0";
  27575. + sx1509-0-3F-int-gpio = <0>,"+84+100", <&sx150x_0_3F_pins>,"brcm,pins:0", <&sx1509_0_3F>,"interrupts:0";
  27576. + sx1509-1-3F-int-gpio = <0>,"+85+101", <&sx150x_1_3F_pins>,"brcm,pins:0", <&sx1509_1_3F>,"interrupts:0";
  27577. + sx1509-0-70-int-gpio = <0>,"+86+102", <&sx150x_0_70_pins>,"brcm,pins:0", <&sx1509_0_70>,"interrupts:0";
  27578. + sx1509-1-70-int-gpio = <0>,"+87+103", <&sx150x_1_70_pins>,"brcm,pins:0", <&sx1509_1_70>,"interrupts:0";
  27579. + sx1509-0-71-int-gpio = <0>,"+88+104", <&sx150x_0_71_pins>,"brcm,pins:0", <&sx1509_0_71>,"interrupts:0";
  27580. + sx1509-1-71-int-gpio = <0>,"+89+105", <&sx150x_1_71_pins>,"brcm,pins:0", <&sx1509_1_71>,"interrupts:0";
  27581. + };
  27582. +};
  27583. +
  27584. diff --git a/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
  27585. new file mode 100644
  27586. index 000000000000..047695bb0c71
  27587. --- /dev/null
  27588. +++ b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
  27589. @@ -0,0 +1,52 @@
  27590. +// SPDX-License-Identifier: GPL-2.0-only
  27591. +// Definitions to add I2S audio from the Toshiba TC358743 HDMI to CSI2 bridge.
  27592. +// Requires tc358743 overlay to have been loaded to actually function.
  27593. +/dts-v1/;
  27594. +/plugin/;
  27595. +
  27596. +/ {
  27597. + compatible = "brcm,bcm2835";
  27598. +
  27599. + fragment@0 {
  27600. + target = <&i2s>;
  27601. + __overlay__ {
  27602. + status = "okay";
  27603. + };
  27604. + };
  27605. +
  27606. + fragment@1 {
  27607. + target-path = "/";
  27608. + __overlay__ {
  27609. + tc358743_codec: tc358743-codec {
  27610. + #sound-dai-cells = <0>;
  27611. + compatible = "linux,spdif-dir";
  27612. + status = "okay";
  27613. + };
  27614. + };
  27615. + };
  27616. +
  27617. + fragment@2 {
  27618. + target = <&sound>;
  27619. + sound_overlay: __overlay__ {
  27620. + compatible = "simple-audio-card";
  27621. + simple-audio-card,format = "i2s";
  27622. + simple-audio-card,name = "tc358743";
  27623. + simple-audio-card,bitclock-master = <&dailink0_slave>;
  27624. + simple-audio-card,frame-master = <&dailink0_slave>;
  27625. + status = "okay";
  27626. +
  27627. + simple-audio-card,cpu {
  27628. + sound-dai = <&i2s>;
  27629. + dai-tdm-slot-num = <2>;
  27630. + dai-tdm-slot-width = <32>;
  27631. + };
  27632. + dailink0_slave: simple-audio-card,codec {
  27633. + sound-dai = <&tc358743_codec>;
  27634. + };
  27635. + };
  27636. + };
  27637. +
  27638. + __overrides__ {
  27639. + card-name = <&sound_overlay>,"simple-audio-card,name";
  27640. + };
  27641. +};
  27642. diff --git a/arch/arm/boot/dts/overlays/tc358743-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
  27643. new file mode 100644
  27644. index 000000000000..a1f8af36d2e7
  27645. --- /dev/null
  27646. +++ b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
  27647. @@ -0,0 +1,107 @@
  27648. +// SPDX-License-Identifier: GPL-2.0-only
  27649. +// Definitions for Toshiba TC358743 HDMI to CSI2 bridge on VC I2C bus
  27650. +/dts-v1/;
  27651. +/plugin/;
  27652. +
  27653. +/{
  27654. + compatible = "brcm,bcm2835";
  27655. +
  27656. + fragment@0 {
  27657. + target = <&i2c_csi_dsi>;
  27658. + __overlay__ {
  27659. + #address-cells = <1>;
  27660. + #size-cells = <0>;
  27661. + status = "okay";
  27662. +
  27663. + tc358743@0f {
  27664. + compatible = "toshiba,tc358743";
  27665. + reg = <0x0f>;
  27666. + status = "okay";
  27667. +
  27668. + clocks = <&tc358743_clk>;
  27669. + clock-names = "refclk";
  27670. +
  27671. + port {
  27672. + tc358743: endpoint {
  27673. + remote-endpoint = <&csi1_ep>;
  27674. + clock-lanes = <0>;
  27675. + clock-noncontinuous;
  27676. + link-frequencies =
  27677. + /bits/ 64 <486000000>;
  27678. + };
  27679. + };
  27680. + };
  27681. + };
  27682. + };
  27683. +
  27684. + fragment@1 {
  27685. + target = <&csi1>;
  27686. + __overlay__ {
  27687. + status = "okay";
  27688. +
  27689. + port {
  27690. + csi1_ep: endpoint {
  27691. + remote-endpoint = <&tc358743>;
  27692. + };
  27693. + };
  27694. + };
  27695. + };
  27696. +
  27697. + fragment@2 {
  27698. + target = <&tc358743>;
  27699. + __overlay__ {
  27700. + data-lanes = <1 2>;
  27701. + };
  27702. + };
  27703. +
  27704. + fragment@3 {
  27705. + target = <&tc358743>;
  27706. + __dormant__ {
  27707. + data-lanes = <1 2 3 4>;
  27708. + };
  27709. + };
  27710. +
  27711. + fragment@4 {
  27712. + target = <&i2c0if>;
  27713. + __overlay__ {
  27714. + status = "okay";
  27715. + };
  27716. + };
  27717. +
  27718. + fragment@5 {
  27719. + target = <&i2c0mux>;
  27720. + __overlay__ {
  27721. + status = "okay";
  27722. + };
  27723. + };
  27724. +
  27725. + fragment@6 {
  27726. + target-path = "/";
  27727. + __overlay__ {
  27728. + tc358743_clk: bridge-clk {
  27729. + compatible = "fixed-clock";
  27730. + #clock-cells = <0>;
  27731. + clock-frequency = <27000000>;
  27732. + };
  27733. + };
  27734. + };
  27735. +
  27736. + fragment@7 {
  27737. + target = <&csi1_ep>;
  27738. + __overlay__ {
  27739. + data-lanes = <1 2>;
  27740. + };
  27741. + };
  27742. +
  27743. + fragment@8 {
  27744. + target = <&csi1_ep>;
  27745. + __dormant__ {
  27746. + data-lanes = <1 2 3 4>;
  27747. + };
  27748. + };
  27749. +
  27750. + __overrides__ {
  27751. + 4lane = <0>, "-2+3-7+8";
  27752. + link-frequency = <&tc358743>,"link-frequencies#0";
  27753. + };
  27754. +};
  27755. diff --git a/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
  27756. new file mode 100644
  27757. index 000000000000..a102b09e3ab5
  27758. --- /dev/null
  27759. +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
  27760. @@ -0,0 +1,222 @@
  27761. +/*
  27762. + * tinylcd35-overlay.dts
  27763. + *
  27764. + * -------------------------------------------------
  27765. + * www.tinlylcd.com
  27766. + * -------------------------------------------------
  27767. + * Device---Driver-----BUS GPIO's
  27768. + * display tinylcd35 spi0.0 25 24 18
  27769. + * touch ads7846 spi0.1 5
  27770. + * rtc ds1307 i2c1-0068
  27771. + * rtc pcf8563 i2c1-0051
  27772. + * keypad gpio-keys --------- 17 22 27 23 28
  27773. + *
  27774. + *
  27775. + * TinyLCD.com 3.5 inch TFT
  27776. + *
  27777. + * Version 001
  27778. + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
  27779. + * 10/3/2015 -- [email protected] added ds1307 support.
  27780. + *
  27781. + */
  27782. +
  27783. +/dts-v1/;
  27784. +/plugin/;
  27785. +
  27786. +/ {
  27787. + compatible = "brcm,bcm2835";
  27788. +
  27789. + fragment@0 {
  27790. + target = <&spi0>;
  27791. + __overlay__ {
  27792. + status = "okay";
  27793. + };
  27794. + };
  27795. +
  27796. + fragment@1 {
  27797. + target = <&spidev0>;
  27798. + __overlay__ {
  27799. + status = "disabled";
  27800. + };
  27801. + };
  27802. +
  27803. + fragment@2 {
  27804. + target = <&spidev1>;
  27805. + __overlay__ {
  27806. + status = "disabled";
  27807. + };
  27808. + };
  27809. +
  27810. + fragment@3 {
  27811. + target = <&gpio>;
  27812. + __overlay__ {
  27813. + tinylcd35_pins: tinylcd35_pins {
  27814. + brcm,pins = <25 24 18>;
  27815. + brcm,function = <1>; /* out */
  27816. + };
  27817. + tinylcd35_ts_pins: tinylcd35_ts_pins {
  27818. + brcm,pins = <5>;
  27819. + brcm,function = <0>; /* in */
  27820. + };
  27821. + keypad_pins: keypad_pins {
  27822. + brcm,pins = <4 17 22 23 27>;
  27823. + brcm,function = <0>; /* in */
  27824. + brcm,pull = <1>; /* down */
  27825. + };
  27826. + };
  27827. + };
  27828. +
  27829. + fragment@4 {
  27830. + target = <&spi0>;
  27831. + __overlay__ {
  27832. + /* needed to avoid dtc warning */
  27833. + #address-cells = <1>;
  27834. + #size-cells = <0>;
  27835. +
  27836. + tinylcd35: tinylcd35@0{
  27837. + compatible = "neosec,tinylcd";
  27838. + reg = <0>;
  27839. + pinctrl-names = "default";
  27840. + pinctrl-0 = <&tinylcd35_pins>,
  27841. + <&tinylcd35_ts_pins>;
  27842. +
  27843. + spi-max-frequency = <48000000>;
  27844. + rotate = <270>;
  27845. + fps = <20>;
  27846. + bgr;
  27847. + buswidth = <8>;
  27848. + reset-gpios = <&gpio 25 1>;
  27849. + dc-gpios = <&gpio 24 0>;
  27850. + led-gpios = <&gpio 18 0>;
  27851. + debug = <0>;
  27852. +
  27853. + init = <0x10000B0 0x80
  27854. + 0x10000C0 0x0A 0x0A
  27855. + 0x10000C1 0x01 0x01
  27856. + 0x10000C2 0x33
  27857. + 0x10000C5 0x00 0x42 0x80
  27858. + 0x10000B1 0xD0 0x11
  27859. + 0x10000B4 0x02
  27860. + 0x10000B6 0x00 0x22 0x3B
  27861. + 0x10000B7 0x07
  27862. + 0x1000036 0x58
  27863. + 0x10000F0 0x36 0xA5 0xD3
  27864. + 0x10000E5 0x80
  27865. + 0x10000E5 0x01
  27866. + 0x10000B3 0x00
  27867. + 0x10000E5 0x00
  27868. + 0x10000F0 0x36 0xA5 0x53
  27869. + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
  27870. + 0x100003A 0x55
  27871. + 0x1000011
  27872. + 0x2000001
  27873. + 0x1000029>;
  27874. + };
  27875. +
  27876. + tinylcd35_ts: tinylcd35_ts@1 {
  27877. + compatible = "ti,ads7846";
  27878. + reg = <1>;
  27879. + status = "disabled";
  27880. +
  27881. + spi-max-frequency = <2000000>;
  27882. + interrupts = <5 2>; /* high-to-low edge triggered */
  27883. + interrupt-parent = <&gpio>;
  27884. + pendown-gpio = <&gpio 5 0>;
  27885. + ti,x-plate-ohms = /bits/ 16 <100>;
  27886. + ti,pressure-max = /bits/ 16 <255>;
  27887. + };
  27888. + };
  27889. + };
  27890. +
  27891. + /* RTC */
  27892. +
  27893. + fragment@5 {
  27894. + target = <&i2c1>;
  27895. + __dormant__ {
  27896. + #address-cells = <1>;
  27897. + #size-cells = <0>;
  27898. +
  27899. + status = "okay";
  27900. +
  27901. + pcf8563: pcf8563@51 {
  27902. + compatible = "nxp,pcf8563";
  27903. + reg = <0x51>;
  27904. + status = "okay";
  27905. + };
  27906. + };
  27907. + };
  27908. +
  27909. + fragment@6 {
  27910. + target = <&i2c1>;
  27911. + __dormant__ {
  27912. + #address-cells = <1>;
  27913. + #size-cells = <0>;
  27914. +
  27915. + status = "okay";
  27916. +
  27917. + ds1307: ds1307@68 {
  27918. + compatible = "dallas,ds1307";
  27919. + reg = <0x68>;
  27920. + status = "okay";
  27921. + };
  27922. + };
  27923. + };
  27924. +
  27925. + /*
  27926. + * Values for input event code is found under the
  27927. + * 'Keys and buttons' heading in include/uapi/linux/input.h
  27928. + */
  27929. + fragment@7 {
  27930. + target-path = "/soc";
  27931. + __overlay__ {
  27932. + keypad: keypad {
  27933. + compatible = "gpio-keys";
  27934. + pinctrl-names = "default";
  27935. + pinctrl-0 = <&keypad_pins>;
  27936. + status = "disabled";
  27937. + autorepeat;
  27938. +
  27939. + button@17 {
  27940. + label = "GPIO KEY_UP";
  27941. + linux,code = <103>;
  27942. + gpios = <&gpio 17 0>;
  27943. + };
  27944. + button@22 {
  27945. + label = "GPIO KEY_DOWN";
  27946. + linux,code = <108>;
  27947. + gpios = <&gpio 22 0>;
  27948. + };
  27949. + button@27 {
  27950. + label = "GPIO KEY_LEFT";
  27951. + linux,code = <105>;
  27952. + gpios = <&gpio 27 0>;
  27953. + };
  27954. + button@23 {
  27955. + label = "GPIO KEY_RIGHT";
  27956. + linux,code = <106>;
  27957. + gpios = <&gpio 23 0>;
  27958. + };
  27959. + button@4 {
  27960. + label = "GPIO KEY_ENTER";
  27961. + linux,code = <28>;
  27962. + gpios = <&gpio 4 0>;
  27963. + };
  27964. + };
  27965. + };
  27966. + };
  27967. +
  27968. + __overrides__ {
  27969. + speed = <&tinylcd35>,"spi-max-frequency:0";
  27970. + rotate = <&tinylcd35>,"rotate:0";
  27971. + fps = <&tinylcd35>,"fps:0";
  27972. + debug = <&tinylcd35>,"debug:0";
  27973. + touch = <&tinylcd35_ts>,"status";
  27974. + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
  27975. + <&tinylcd35_ts>,"interrupts:0",
  27976. + <&tinylcd35_ts>,"pendown-gpio:4";
  27977. + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
  27978. + rtc-pcf = <0>,"=5";
  27979. + rtc-ds = <0>,"=6";
  27980. + keypad = <&keypad>,"status";
  27981. + };
  27982. +};
  27983. diff --git a/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
  27984. new file mode 100644
  27985. index 000000000000..e69188503ca3
  27986. --- /dev/null
  27987. +++ b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
  27988. @@ -0,0 +1,44 @@
  27989. +/*
  27990. + * Device Tree overlay for the Infineon SLB9670 Trusted Platform Module add-on
  27991. + * boards, which can be used as a secure key storage and hwrng.
  27992. + * available as "Iridium SLB9670" by Infineon and "LetsTrust TPM" by pi3g.
  27993. + */
  27994. +
  27995. +/dts-v1/;
  27996. +/plugin/;
  27997. +
  27998. +/ {
  27999. + compatible = "brcm,bcm2835";
  28000. +
  28001. + fragment@0 {
  28002. + target = <&spi0>;
  28003. + __overlay__ {
  28004. + status = "okay";
  28005. + };
  28006. + };
  28007. +
  28008. + fragment@1 {
  28009. + target = <&spidev1>;
  28010. + __overlay__ {
  28011. + status = "disabled";
  28012. + };
  28013. + };
  28014. +
  28015. + fragment@2 {
  28016. + target = <&spi0>;
  28017. + __overlay__ {
  28018. + /* needed to avoid dtc warning */
  28019. + #address-cells = <1>;
  28020. + #size-cells = <0>;
  28021. + slb9670: slb9670@1 {
  28022. + compatible = "infineon,slb9670";
  28023. + reg = <1>; /* CE1 */
  28024. + #address-cells = <1>;
  28025. + #size-cells = <0>;
  28026. + spi-max-frequency = <32000000>;
  28027. + status = "okay";
  28028. + };
  28029. +
  28030. + };
  28031. + };
  28032. +};
  28033. diff --git a/arch/arm/boot/dts/overlays/uart0-overlay.dts b/arch/arm/boot/dts/overlays/uart0-overlay.dts
  28034. new file mode 100755
  28035. index 000000000000..73d563bbaabf
  28036. --- /dev/null
  28037. +++ b/arch/arm/boot/dts/overlays/uart0-overlay.dts
  28038. @@ -0,0 +1,32 @@
  28039. +/dts-v1/;
  28040. +/plugin/;
  28041. +
  28042. +/{
  28043. + compatible = "brcm,bcm2835";
  28044. +
  28045. + fragment@0 {
  28046. + target = <&uart0>;
  28047. + __overlay__ {
  28048. + pinctrl-names = "default";
  28049. + pinctrl-0 = <&uart0_pins>;
  28050. + status = "okay";
  28051. + };
  28052. + };
  28053. +
  28054. + fragment@1 {
  28055. + target = <&gpio>;
  28056. + __overlay__ {
  28057. + uart0_pins: uart0_pins {
  28058. + brcm,pins = <14 15>;
  28059. + brcm,function = <4>; /* alt0 */
  28060. + brcm,pull = <0 2>;
  28061. + };
  28062. + };
  28063. + };
  28064. +
  28065. + __overrides__ {
  28066. + txd0_pin = <&uart0_pins>,"brcm,pins:0";
  28067. + rxd0_pin = <&uart0_pins>,"brcm,pins:4";
  28068. + pin_func = <&uart0_pins>,"brcm,function:0";
  28069. + };
  28070. +};
  28071. diff --git a/arch/arm/boot/dts/overlays/uart1-overlay.dts b/arch/arm/boot/dts/overlays/uart1-overlay.dts
  28072. new file mode 100644
  28073. index 000000000000..986d725a2652
  28074. --- /dev/null
  28075. +++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
  28076. @@ -0,0 +1,38 @@
  28077. +/dts-v1/;
  28078. +/plugin/;
  28079. +
  28080. +/{
  28081. + compatible = "brcm,bcm2835";
  28082. +
  28083. + fragment@0 {
  28084. + target = <&uart1>;
  28085. + __overlay__ {
  28086. + pinctrl-names = "default";
  28087. + pinctrl-0 = <&uart1_pins>;
  28088. + status = "okay";
  28089. + };
  28090. + };
  28091. +
  28092. + fragment@1 {
  28093. + target = <&gpio>;
  28094. + __overlay__ {
  28095. + uart1_pins: uart1_pins {
  28096. + brcm,pins = <14 15>;
  28097. + brcm,function = <2>; /* alt5 */
  28098. + brcm,pull = <0 2>;
  28099. + };
  28100. + };
  28101. + };
  28102. +
  28103. + fragment@2 {
  28104. + target-path = "/chosen";
  28105. + __overlay__ {
  28106. + bootargs = "8250.nr_uarts=1";
  28107. + };
  28108. + };
  28109. +
  28110. + __overrides__ {
  28111. + txd1_pin = <&uart1_pins>,"brcm,pins:0";
  28112. + rxd1_pin = <&uart1_pins>,"brcm,pins:4";
  28113. + };
  28114. +};
  28115. diff --git a/arch/arm/boot/dts/overlays/uart2-overlay.dts b/arch/arm/boot/dts/overlays/uart2-overlay.dts
  28116. new file mode 100644
  28117. index 000000000000..9face240aca1
  28118. --- /dev/null
  28119. +++ b/arch/arm/boot/dts/overlays/uart2-overlay.dts
  28120. @@ -0,0 +1,27 @@
  28121. +/dts-v1/;
  28122. +/plugin/;
  28123. +
  28124. +/{
  28125. + compatible = "brcm,bcm2711";
  28126. +
  28127. + fragment@0 {
  28128. + target = <&uart2>;
  28129. + __overlay__ {
  28130. + pinctrl-names = "default";
  28131. + pinctrl-0 = <&uart2_pins>;
  28132. + status = "okay";
  28133. + };
  28134. + };
  28135. +
  28136. + fragment@1 {
  28137. + target = <&uart2_pins>;
  28138. + __dormant__ {
  28139. + brcm,pins = <0 1 2 3>;
  28140. + brcm,pull = <0 2 2 0>;
  28141. + };
  28142. + };
  28143. +
  28144. + __overrides__ {
  28145. + ctsrts = <0>,"=1";
  28146. + };
  28147. +};
  28148. diff --git a/arch/arm/boot/dts/overlays/uart3-overlay.dts b/arch/arm/boot/dts/overlays/uart3-overlay.dts
  28149. new file mode 100644
  28150. index 000000000000..ae9f9fe5ea1d
  28151. --- /dev/null
  28152. +++ b/arch/arm/boot/dts/overlays/uart3-overlay.dts
  28153. @@ -0,0 +1,27 @@
  28154. +/dts-v1/;
  28155. +/plugin/;
  28156. +
  28157. +/{
  28158. + compatible = "brcm,bcm2711";
  28159. +
  28160. + fragment@0 {
  28161. + target = <&uart3>;
  28162. + __overlay__ {
  28163. + pinctrl-names = "default";
  28164. + pinctrl-0 = <&uart3_pins>;
  28165. + status = "okay";
  28166. + };
  28167. + };
  28168. +
  28169. + fragment@1 {
  28170. + target = <&uart3_pins>;
  28171. + __dormant__ {
  28172. + brcm,pins = <4 5 6 7>;
  28173. + brcm,pull = <0 2 2 0>;
  28174. + };
  28175. + };
  28176. +
  28177. + __overrides__ {
  28178. + ctsrts = <0>,"=1";
  28179. + };
  28180. +};
  28181. diff --git a/arch/arm/boot/dts/overlays/uart4-overlay.dts b/arch/arm/boot/dts/overlays/uart4-overlay.dts
  28182. new file mode 100644
  28183. index 000000000000..ac004ffbadbf
  28184. --- /dev/null
  28185. +++ b/arch/arm/boot/dts/overlays/uart4-overlay.dts
  28186. @@ -0,0 +1,27 @@
  28187. +/dts-v1/;
  28188. +/plugin/;
  28189. +
  28190. +/{
  28191. + compatible = "brcm,bcm2711";
  28192. +
  28193. + fragment@0 {
  28194. + target = <&uart4>;
  28195. + __overlay__ {
  28196. + pinctrl-names = "default";
  28197. + pinctrl-0 = <&uart4_pins>;
  28198. + status = "okay";
  28199. + };
  28200. + };
  28201. +
  28202. + fragment@1 {
  28203. + target = <&uart4_pins>;
  28204. + __dormant__ {
  28205. + brcm,pins = <8 9 10 11>;
  28206. + brcm,pull = <0 2 2 0>;
  28207. + };
  28208. + };
  28209. +
  28210. + __overrides__ {
  28211. + ctsrts = <0>,"=1";
  28212. + };
  28213. +};
  28214. diff --git a/arch/arm/boot/dts/overlays/uart5-overlay.dts b/arch/arm/boot/dts/overlays/uart5-overlay.dts
  28215. new file mode 100644
  28216. index 000000000000..04eaf376effe
  28217. --- /dev/null
  28218. +++ b/arch/arm/boot/dts/overlays/uart5-overlay.dts
  28219. @@ -0,0 +1,27 @@
  28220. +/dts-v1/;
  28221. +/plugin/;
  28222. +
  28223. +/{
  28224. + compatible = "brcm,bcm2711";
  28225. +
  28226. + fragment@0 {
  28227. + target = <&uart5>;
  28228. + __overlay__ {
  28229. + pinctrl-names = "default";
  28230. + pinctrl-0 = <&uart5_pins>;
  28231. + status = "okay";
  28232. + };
  28233. + };
  28234. +
  28235. + fragment@1 {
  28236. + target = <&uart5_pins>;
  28237. + __dormant__ {
  28238. + brcm,pins = <12 13 14 15>;
  28239. + brcm,pull = <0 2 2 0>;
  28240. + };
  28241. + };
  28242. +
  28243. + __overrides__ {
  28244. + ctsrts = <0>,"=1";
  28245. + };
  28246. +};
  28247. diff --git a/arch/arm/boot/dts/overlays/udrc-overlay.dts b/arch/arm/boot/dts/overlays/udrc-overlay.dts
  28248. new file mode 100644
  28249. index 000000000000..ae7c37996894
  28250. --- /dev/null
  28251. +++ b/arch/arm/boot/dts/overlays/udrc-overlay.dts
  28252. @@ -0,0 +1,128 @@
  28253. +#include <dt-bindings/clock/bcm2835.h>
  28254. +/*
  28255. + * Device tree overlay for the Universal Digital Radio Controller
  28256. + */
  28257. +
  28258. +/dts-v1/;
  28259. +/plugin/;
  28260. +
  28261. +/ {
  28262. + compatible = "brcm,bcm2835";
  28263. + fragment@0 {
  28264. + target = <&i2s>;
  28265. + __overlay__ {
  28266. + clocks = <&clocks BCM2835_CLOCK_PCM>;
  28267. + clock-names = "pcm";
  28268. + status = "okay";
  28269. + };
  28270. + };
  28271. +
  28272. + fragment@1 {
  28273. + target-path = "/";
  28274. + __overlay__ {
  28275. + regulators {
  28276. + compatible = "simple-bus";
  28277. + #address-cells = <1>;
  28278. + #size-cells = <0>;
  28279. +
  28280. + udrc0_ldoin: udrc0_ldoin {
  28281. + compatible = "regulator-fixed";
  28282. + regulator-name = "ldoin";
  28283. + regulator-min-microvolt = <3300000>;
  28284. + regulator-max-microvolt = <3300000>;
  28285. + regulator-always-on;
  28286. + };
  28287. + };
  28288. + };
  28289. + };
  28290. +
  28291. + fragment@2 {
  28292. + target = <&i2c1>;
  28293. + __overlay__ {
  28294. + #address-cells = <1>;
  28295. + #size-cells = <0>;
  28296. + status = "okay";
  28297. + clocks = <&clocks BCM2835_CLOCK_VPU>;
  28298. + clock-frequency = <400000>;
  28299. +
  28300. + tlv320aic32x4: tlv320aic32x4@18 {
  28301. + compatible = "ti,tlv320aic32x4";
  28302. + #sound-dai-cells = <0>;
  28303. + reg = <0x18>;
  28304. + status = "okay";
  28305. +
  28306. + clocks = <&clocks BCM2835_CLOCK_GP0>;
  28307. + clock-names = "mclk";
  28308. + assigned-clocks = <&clocks BCM2835_CLOCK_GP0>;
  28309. + assigned-clock-rates = <25000000>;
  28310. +
  28311. + pinctrl-names = "default";
  28312. + pinctrl-0 = <&gpclk0_pin &aic3204_reset>;
  28313. +
  28314. + reset-gpios = <&gpio 13 0>;
  28315. +
  28316. + iov-supply = <&udrc0_ldoin>;
  28317. + ldoin-supply = <&udrc0_ldoin>;
  28318. + };
  28319. + };
  28320. + };
  28321. +
  28322. + fragment@3 {
  28323. + target = <&sound>;
  28324. + snd: __overlay__ {
  28325. + compatible = "simple-audio-card";
  28326. + i2s-controller = <&i2s>;
  28327. + status = "okay";
  28328. +
  28329. + simple-audio-card,name = "udrc";
  28330. + simple-audio-card,format = "i2s";
  28331. +
  28332. + simple-audio-card,bitclock-master = <&dailink0_master>;
  28333. + simple-audio-card,frame-master = <&dailink0_master>;
  28334. +
  28335. + simple-audio-card,widgets =
  28336. + "Line", "Line In",
  28337. + "Line", "Line Out";
  28338. +
  28339. + simple-audio-card,routing =
  28340. + "IN1_R", "Line In",
  28341. + "IN1_L", "Line In",
  28342. + "CM_L", "Line In",
  28343. + "CM_R", "Line In",
  28344. + "Line Out", "LOR",
  28345. + "Line Out", "LOL";
  28346. +
  28347. + dailink0_master: simple-audio-card,cpu {
  28348. + sound-dai = <&i2s>;
  28349. + };
  28350. +
  28351. + simple-audio-card,codec {
  28352. + sound-dai = <&tlv320aic32x4>;
  28353. + };
  28354. + };
  28355. + };
  28356. +
  28357. + fragment@4 {
  28358. + target = <&gpio>;
  28359. + __overlay__ {
  28360. + gpclk0_pin: gpclk0_pin {
  28361. + brcm,pins = <4>;
  28362. + brcm,function = <4>;
  28363. + };
  28364. +
  28365. + aic3204_reset: aic3204_reset {
  28366. + brcm,pins = <13>;
  28367. + brcm,function = <1>;
  28368. + brcm,pull = <1>;
  28369. + };
  28370. +
  28371. + aic3204_gpio: aic3204_gpio {
  28372. + brcm,pins = <26>;
  28373. + };
  28374. + };
  28375. + };
  28376. +
  28377. + __overrides__ {
  28378. + alsaname = <&snd>, "simple-audio-card,name";
  28379. + };
  28380. +};
  28381. diff --git a/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts b/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts
  28382. new file mode 100644
  28383. index 000000000000..fc8d9b118068
  28384. --- /dev/null
  28385. +++ b/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts
  28386. @@ -0,0 +1,49 @@
  28387. +// Definitions for the ugreen dabboard I2S
  28388. +/dts-v1/;
  28389. +/plugin/;
  28390. +
  28391. +/ {
  28392. + compatible = "brcm,bcm2835";
  28393. +
  28394. + fragment@0 {
  28395. + target = <&i2s>;
  28396. + __overlay__ {
  28397. + status = "okay";
  28398. + };
  28399. + };
  28400. +
  28401. + fragment@1 {
  28402. + target-path = "/";
  28403. + __overlay__ {
  28404. + dmic_codec: dmic-codec {
  28405. + #sound-dai-cells = <0>;
  28406. + compatible = "dmic-codec";
  28407. + status = "okay";
  28408. + };
  28409. + };
  28410. + };
  28411. +
  28412. + fragment@2 {
  28413. + target = <&sound>;
  28414. + sound_overlay: __overlay__ {
  28415. + compatible = "simple-audio-card";
  28416. + simple-audio-card,format = "i2s";
  28417. + simple-audio-card,name = "dabboard";
  28418. + simple-audio-card,bitclock-master = <&dailink0_slave>;
  28419. + simple-audio-card,frame-master = <&dailink0_slave>;
  28420. + simple-audio-card,widgets = "Microphone", "Microphone Jack";
  28421. + status = "okay";
  28422. + simple-audio-card,cpu {
  28423. + sound-dai = <&i2s>;
  28424. + };
  28425. + dailink0_slave: simple-audio-card,codec {
  28426. + #sound-dai-cells = <0>;
  28427. + sound-dai = <&dmic_codec>;
  28428. + };
  28429. + };
  28430. + };
  28431. +
  28432. + __overrides__ {
  28433. + card-name = <&sound_overlay>,"simple-audio-card,name";
  28434. + };
  28435. +};
  28436. diff --git a/arch/arm/boot/dts/overlays/upstream-overlay.dts b/arch/arm/boot/dts/overlays/upstream-overlay.dts
  28437. new file mode 100644
  28438. index 000000000000..7c4071a7cb27
  28439. --- /dev/null
  28440. +++ b/arch/arm/boot/dts/overlays/upstream-overlay.dts
  28441. @@ -0,0 +1,101 @@
  28442. +// redo: ovmerge -c vc4-kms-v3d-overlay.dts,cma-default dwc2-overlay.dts,dr_mode=otg
  28443. +
  28444. +/dts-v1/;
  28445. +/plugin/;
  28446. +
  28447. +#include <dt-bindings/clock/bcm2835.h>
  28448. +
  28449. +/ {
  28450. + compatible = "brcm,bcm2835";
  28451. + fragment@0 {
  28452. + target = <&i2c2>;
  28453. + __overlay__ {
  28454. + status = "okay";
  28455. + };
  28456. + };
  28457. + fragment@1 {
  28458. + target = <&fb>;
  28459. + __overlay__ {
  28460. + status = "disabled";
  28461. + };
  28462. + };
  28463. + fragment@2 {
  28464. + target = <&pixelvalve0>;
  28465. + __overlay__ {
  28466. + status = "okay";
  28467. + };
  28468. + };
  28469. + fragment@3 {
  28470. + target = <&pixelvalve1>;
  28471. + __overlay__ {
  28472. + status = "okay";
  28473. + };
  28474. + };
  28475. + fragment@4 {
  28476. + target = <&pixelvalve2>;
  28477. + __overlay__ {
  28478. + status = "okay";
  28479. + };
  28480. + };
  28481. + fragment@5 {
  28482. + target = <&hvs>;
  28483. + __overlay__ {
  28484. + status = "okay";
  28485. + };
  28486. + };
  28487. + fragment@6 {
  28488. + target = <&hdmi>;
  28489. + __overlay__ {
  28490. + status = "okay";
  28491. + };
  28492. + };
  28493. + fragment@7 {
  28494. + target = <&v3d>;
  28495. + __overlay__ {
  28496. + status = "okay";
  28497. + };
  28498. + };
  28499. + fragment@8 {
  28500. + target = <&vc4>;
  28501. + __overlay__ {
  28502. + status = "okay";
  28503. + };
  28504. + };
  28505. + fragment@9 {
  28506. + target = <&clocks>;
  28507. + __overlay__ {
  28508. + claim-clocks = <BCM2835_PLLD_DSI0 BCM2835_PLLD_DSI1 BCM2835_PLLH_AUX BCM2835_PLLH_PIX>;
  28509. + };
  28510. + };
  28511. + fragment@10 {
  28512. + target = <&vec>;
  28513. + __overlay__ {
  28514. + status = "okay";
  28515. + };
  28516. + };
  28517. + fragment@11 {
  28518. + target = <&txp>;
  28519. + __overlay__ {
  28520. + status = "okay";
  28521. + };
  28522. + };
  28523. + fragment@12 {
  28524. + target = <&audio>;
  28525. + __overlay__ {
  28526. + brcm,disable-hdmi;
  28527. + };
  28528. + };
  28529. + fragment@13 {
  28530. + target = <&usb>;
  28531. + #address-cells = <1>;
  28532. + #size-cells = <1>;
  28533. + __overlay__ {
  28534. + compatible = "brcm,bcm2835-usb";
  28535. + dr_mode = "otg";
  28536. + g-np-tx-fifo-size = <32>;
  28537. + g-rx-fifo-size = <558>;
  28538. + g-tx-fifo-size = <512 512 512 512 512 256 256>;
  28539. + status = "okay";
  28540. + };
  28541. + };
  28542. +};
  28543. diff --git a/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
  28544. new file mode 100644
  28545. index 000000000000..f4328634542e
  28546. --- /dev/null
  28547. +++ b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
  28548. @@ -0,0 +1,137 @@
  28549. +// redo: ovmerge -c vc4-kms-v3d-pi4-overlay.dts,cma-default dwc2-overlay.dts,dr_mode=otg
  28550. +
  28551. +/dts-v1/;
  28552. +/plugin/;
  28553. +
  28554. +#include <dt-bindings/clock/bcm2835.h>
  28555. +
  28556. +/ {
  28557. + compatible = "brcm,bcm2711";
  28558. + fragment@0 {
  28559. + target = <&ddc0>;
  28560. + __overlay__ {
  28561. + status = "okay";
  28562. + };
  28563. + };
  28564. + fragment@1 {
  28565. + target = <&ddc1>;
  28566. + __overlay__ {
  28567. + status = "okay";
  28568. + };
  28569. + };
  28570. + fragment@2 {
  28571. + target = <&hdmi0>;
  28572. + __overlay__ {
  28573. + status = "okay";
  28574. + };
  28575. + };
  28576. + fragment@3 {
  28577. + target = <&hdmi1>;
  28578. + __overlay__ {
  28579. + status = "okay";
  28580. + };
  28581. + };
  28582. + fragment@4 {
  28583. + target = <&hvs>;
  28584. + __overlay__ {
  28585. + status = "okay";
  28586. + };
  28587. + };
  28588. + fragment@5 {
  28589. + target = <&pixelvalve0>;
  28590. + __overlay__ {
  28591. + status = "okay";
  28592. + };
  28593. + };
  28594. + fragment@6 {
  28595. + target = <&pixelvalve1>;
  28596. + __overlay__ {
  28597. + status = "okay";
  28598. + };
  28599. + };
  28600. + fragment@7 {
  28601. + target = <&pixelvalve2>;
  28602. + __overlay__ {
  28603. + status = "okay";
  28604. + };
  28605. + };
  28606. + fragment@8 {
  28607. + target = <&pixelvalve3>;
  28608. + __overlay__ {
  28609. + status = "okay";
  28610. + };
  28611. + };
  28612. + fragment@9 {
  28613. + target = <&pixelvalve4>;
  28614. + __overlay__ {
  28615. + status = "okay";
  28616. + };
  28617. + };
  28618. + fragment@10 {
  28619. + target = <&v3d>;
  28620. + __overlay__ {
  28621. + status = "okay";
  28622. + };
  28623. + };
  28624. + fragment@11 {
  28625. + target = <&vc4>;
  28626. + __overlay__ {
  28627. + status = "okay";
  28628. + };
  28629. + };
  28630. + fragment@12 {
  28631. + target = <&txp>;
  28632. + __overlay__ {
  28633. + status = "okay";
  28634. + };
  28635. + };
  28636. + fragment@13 {
  28637. + target = <&fb>;
  28638. + __overlay__ {
  28639. + status = "disabled";
  28640. + };
  28641. + };
  28642. + fragment@14 {
  28643. + target = <&firmwarekms>;
  28644. + __overlay__ {
  28645. + status = "disabled";
  28646. + };
  28647. + };
  28648. + fragment@15 {
  28649. + target = <&vec>;
  28650. + __overlay__ {
  28651. + status = "disabled";
  28652. + };
  28653. + };
  28654. + fragment@16 {
  28655. + target = <&audio>;
  28656. + __overlay__ {
  28657. + brcm,disable-hdmi;
  28658. + };
  28659. + };
  28660. + fragment@17 {
  28661. + target = <&dvp>;
  28662. + __overlay__ {
  28663. + status = "okay";
  28664. + };
  28665. + };
  28666. + fragment@18 {
  28667. + target = <&aon_intr>;
  28668. + __overlay__ {
  28669. + status = "okay";
  28670. + };
  28671. + };
  28672. + fragment@19 {
  28673. + target = <&usb>;
  28674. + #address-cells = <1>;
  28675. + #size-cells = <1>;
  28676. + __overlay__ {
  28677. + compatible = "brcm,bcm2835-usb";
  28678. + dr_mode = "otg";
  28679. + g-np-tx-fifo-size = <32>;
  28680. + g-rx-fifo-size = <558>;
  28681. + g-tx-fifo-size = <512 512 512 512 512 256 256>;
  28682. + status = "okay";
  28683. + };
  28684. + };
  28685. +};
  28686. diff --git a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
  28687. new file mode 100644
  28688. index 000000000000..ca344492bed8
  28689. --- /dev/null
  28690. +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
  28691. @@ -0,0 +1,40 @@
  28692. +/*
  28693. + * vc4-fkms-v3d-overlay.dts
  28694. + */
  28695. +
  28696. +/dts-v1/;
  28697. +/plugin/;
  28698. +
  28699. +#include "cma-overlay.dts"
  28700. +
  28701. +/ {
  28702. + compatible = "brcm,bcm2835";
  28703. +
  28704. + fragment@1 {
  28705. + target = <&fb>;
  28706. + __overlay__ {
  28707. + status = "disabled";
  28708. + };
  28709. + };
  28710. +
  28711. + fragment@2 {
  28712. + target = <&firmwarekms>;
  28713. + __overlay__ {
  28714. + status = "okay";
  28715. + };
  28716. + };
  28717. +
  28718. + fragment@3 {
  28719. + target = <&v3d>;
  28720. + __overlay__ {
  28721. + status = "okay";
  28722. + };
  28723. + };
  28724. +
  28725. + fragment@4 {
  28726. + target = <&vc4>;
  28727. + __overlay__ {
  28728. + status = "okay";
  28729. + };
  28730. + };
  28731. +};
  28732. diff --git a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
  28733. new file mode 100644
  28734. index 000000000000..7792ead0cbb3
  28735. --- /dev/null
  28736. +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
  28737. @@ -0,0 +1,44 @@
  28738. +/*
  28739. + * vc4-fkms-v3d-overlay.dts
  28740. + */
  28741. +
  28742. +/dts-v1/;
  28743. +/plugin/;
  28744. +
  28745. +#include "cma-overlay.dts"
  28746. +
  28747. +&frag0 {
  28748. + size = <((320-4)*1024*1024)>;
  28749. +};
  28750. +
  28751. +/ {
  28752. + compatible = "brcm,bcm2711";
  28753. +
  28754. + fragment@1 {
  28755. + target = <&fb>;
  28756. + __overlay__ {
  28757. + status = "disabled";
  28758. + };
  28759. + };
  28760. +
  28761. + fragment@2 {
  28762. + target = <&firmwarekms>;
  28763. + __overlay__ {
  28764. + status = "okay";
  28765. + };
  28766. + };
  28767. +
  28768. + fragment@3 {
  28769. + target = <&v3d>;
  28770. + __overlay__ {
  28771. + status = "okay";
  28772. + };
  28773. + };
  28774. +
  28775. + fragment@4 {
  28776. + target = <&vc4>;
  28777. + __overlay__ {
  28778. + status = "okay";
  28779. + };
  28780. + };
  28781. +};
  28782. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts
  28783. new file mode 100644
  28784. index 000000000000..f7181c9828bf
  28785. --- /dev/null
  28786. +++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts
  28787. @@ -0,0 +1,44 @@
  28788. +/*
  28789. + * vc4-kms-dpi-at056tn53v1-overlay.dts
  28790. + */
  28791. +
  28792. +/dts-v1/;
  28793. +/plugin/;
  28794. +
  28795. +#include <dt-bindings/gpio/gpio.h>
  28796. +#include <dt-bindings/pinctrl/bcm2835.h>
  28797. +
  28798. +/ {
  28799. + compatible = "brcm,bcm2835";
  28800. +
  28801. + fragment@0 {
  28802. + target-path = "/";
  28803. + __overlay__ {
  28804. + panel: panel {
  28805. + compatible = "innolux,at056tn53v1", "simple-panel";
  28806. +
  28807. + port {
  28808. + panel_in: endpoint {
  28809. + remote-endpoint = <&dpi_out>;
  28810. + };
  28811. + };
  28812. + };
  28813. + };
  28814. + };
  28815. +
  28816. + fragment@1 {
  28817. + target = <&dpi>;
  28818. + __overlay__ {
  28819. + status = "okay";
  28820. +
  28821. + pinctrl-names = "default";
  28822. + pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>;
  28823. +
  28824. + port {
  28825. + dpi_out: endpoint {
  28826. + remote-endpoint = <&panel_in>;
  28827. + };
  28828. + };
  28829. + };
  28830. + };
  28831. +};
  28832. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts
  28833. new file mode 100644
  28834. index 000000000000..ecd3bef3d65a
  28835. --- /dev/null
  28836. +++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts
  28837. @@ -0,0 +1,118 @@
  28838. +/*
  28839. + * Device Tree overlay for RaspberryPi 7" Touchscreen panel
  28840. + *
  28841. + */
  28842. +
  28843. +/dts-v1/;
  28844. +/plugin/;
  28845. +
  28846. +#include "edt-ft5406.dtsi"
  28847. +
  28848. +/ {
  28849. + /* No compatible as it will have come from edt-ft5406.dtsi */
  28850. +
  28851. + fragment@0 {
  28852. + target = <&dsi1>;
  28853. + __overlay__ {
  28854. + #address-cells = <1>;
  28855. + #size-cells = <0>;
  28856. + status = "okay";
  28857. + port {
  28858. + dsi_out: endpoint {
  28859. + remote-endpoint = <&bridge_in>;
  28860. + };
  28861. + };
  28862. + bridge@0 {
  28863. + reg = <0>;
  28864. + compatible = "toshiba,tc358762";
  28865. + vddc-supply = <&reg_bridge>;
  28866. + ports {
  28867. + #address-cells = <1>;
  28868. + #size-cells = <0>;
  28869. +
  28870. + port@0 {
  28871. + reg = <0>;
  28872. + bridge_in: endpoint {
  28873. + remote-endpoint = <&dsi_out>;
  28874. + };
  28875. + };
  28876. +
  28877. + port@1 {
  28878. + reg = <1>;
  28879. + bridge_out: endpoint {
  28880. + remote-endpoint = <&panel_in>;
  28881. + };
  28882. + };
  28883. + };
  28884. + };
  28885. + };
  28886. + };
  28887. +
  28888. + fragment@1 {
  28889. + target-path = "/";
  28890. + __overlay__ {
  28891. + panel_disp1: panel_disp1@0 {
  28892. + reg = <0>;
  28893. + compatible = "raspberrypi,7inch-dsi", "simple-panel";
  28894. + backlight = <&reg_display>;
  28895. + power-supply = <&reg_display>;
  28896. +
  28897. + port {
  28898. + panel_in: endpoint {
  28899. + remote-endpoint = <&bridge_out>;
  28900. + };
  28901. + };
  28902. + };
  28903. +
  28904. + reg_bridge: reg_bridge@0 {
  28905. + reg = <0>;
  28906. + compatible = "regulator-fixed";
  28907. + regulator-name = "bridge_reg";
  28908. + gpio = <&reg_display 0 0>;
  28909. + vin-supply = <&reg_display>;
  28910. + enable-active-high;
  28911. + };
  28912. + };
  28913. + };
  28914. +
  28915. + fragment@2 {
  28916. + target = <&i2c_csi_dsi>;
  28917. + __overlay__ {
  28918. + #address-cells = <1>;
  28919. + #size-cells = <0>;
  28920. + status = "okay";
  28921. +
  28922. + reg_display: reg_display@45 {
  28923. + compatible = "raspberrypi,7inch-touchscreen-panel-regulator";
  28924. + reg = <0x45>;
  28925. + gpio-controller;
  28926. + #gpio-cells = <2>;
  28927. + };
  28928. + };
  28929. + };
  28930. +
  28931. + fragment@3 {
  28932. + target = <&i2c0if>;
  28933. + __overlay__ {
  28934. + status = "okay";
  28935. + };
  28936. + };
  28937. +
  28938. + fragment@4 {
  28939. + target = <&i2c0mux>;
  28940. + __overlay__ {
  28941. + status = "okay";
  28942. + };
  28943. + };
  28944. + fragment@5 {
  28945. + target = <&ft5406>;
  28946. + __overlay__ {
  28947. + vcc-supply = <&reg_display>;
  28948. + reset-gpio = <&reg_display 1 1>;
  28949. + };
  28950. + };
  28951. +
  28952. + __overrides__ {
  28953. + disable_touch = <0>, "-10-11-12-13";
  28954. + };
  28955. +};
  28956. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts
  28957. new file mode 100644
  28958. index 000000000000..d7b8f6713804
  28959. --- /dev/null
  28960. +++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts
  28961. @@ -0,0 +1,69 @@
  28962. +/*
  28963. + * Device Tree overlay to connect a JDI LT070ME05000 DSI panel to DSI1.
  28964. + * This uses 4 DSI data lanes, so can only be used with a Compute Module.
  28965. + *
  28966. + * Credit to forum user gizmomouse on
  28967. + * https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=253912 and
  28968. + * Andrey Vostrukhin of Harlab for the overlay.
  28969. + *
  28970. + * Refer to https://github.com/harlab/CM4_LCD_LT070ME05000 for schematics and
  28971. + * other documentation.
  28972. + */
  28973. +
  28974. +/dts-v1/;
  28975. +/plugin/;
  28976. +
  28977. +/ {
  28978. + compatible = "brcm,bcm2835";
  28979. +
  28980. + fragment@0 {
  28981. + target = <&dsi1>;
  28982. + __overlay__{
  28983. + status = "okay";
  28984. + #address-cells = <1>;
  28985. + #size-cells = <0>;
  28986. + port {
  28987. + dsi_out_port:endpoint {
  28988. + remote-endpoint = <&panel_dsi_port>;
  28989. + };
  28990. + };
  28991. +
  28992. + lt070me05000:lt070me05000@0 {
  28993. + compatible = "jdi,lt070me05000";
  28994. + status = "okay";
  28995. + reg = <0>;
  28996. + reset-gpios = <&gpio 17 1>; // LCD RST
  28997. + enable-gpios = <&gpio 4 0>; // LCD Enable
  28998. + dcdc-en-gpios = <&gpio 5 0>; // LCD DC-DC Enable
  28999. + port {
  29000. + panel_dsi_port: endpoint {
  29001. + remote-endpoint = <&dsi_out_port>;
  29002. + };
  29003. + };
  29004. + };
  29005. + };
  29006. + };
  29007. +
  29008. + fragment@1 {
  29009. + target = <&gpio>;
  29010. + __overlay__ {
  29011. + lt070me05000_pins: lt070me05000_pins {
  29012. + brcm,pins = <4 5 17>;
  29013. + brcm,function = <1 1 1>; // out
  29014. + brcm,pull = <0 0 0>; // off
  29015. + };
  29016. + };
  29017. +
  29018. + };
  29019. +
  29020. + __overrides__ {
  29021. + reset = <&lt070me05000_pins>,"brcm,pins:8",
  29022. + <&lt070me05000>,"reset-gpios:4";
  29023. +
  29024. + enable = <&lt070me05000_pins>,"brcm,pins:0",
  29025. + <&lt070me05000>,"enable-gpios:4";
  29026. +
  29027. + dcdc-en = <&lt070me05000_pins>,"brcm,pins:4",
  29028. + <&lt070me05000>,"dcdc-en-gpios:4";
  29029. + };
  29030. +};
  29031. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts
  29032. new file mode 100644
  29033. index 000000000000..5dcd0f2243e2
  29034. --- /dev/null
  29035. +++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts
  29036. @@ -0,0 +1,64 @@
  29037. +/*
  29038. + * Device Tree overlay to connect a JDI LT070ME05000 DSI panel to DSI1.
  29039. + * This uses 4 DSI data lanes, so can only be used with a Compute Module.
  29040. + *
  29041. + * The overlay is for V2 of Harlab's interface board that uses a PCA9536 to
  29042. + * handle the panel's control GPIOs instead of wiring it back to Pi GPIOs.
  29043. + *
  29044. + * Credit to Andrey Vostrukhin of Harlab for the overlay.
  29045. + *
  29046. + * Refer to https://github.com/harlab/CM4_LCD_LT070ME05000 for schematics and
  29047. + * other documentation.
  29048. + */
  29049. +
  29050. +/dts-v1/;
  29051. +/plugin/;
  29052. +
  29053. +/ {
  29054. + compatible = "brcm,bcm2835";
  29055. +
  29056. + fragment@0 {
  29057. + target = <&i2c_csi_dsi>;
  29058. + __overlay__ {
  29059. + #address-cells = <1>;
  29060. + #size-cells = <0>;
  29061. + status = "okay";
  29062. +
  29063. + pca: pca@41 {
  29064. + compatible = "nxp,pca9536";
  29065. + reg = <0x41>;
  29066. + gpio-controller;
  29067. + #gpio-cells = <2>;
  29068. + status = "okay";
  29069. + };
  29070. + };
  29071. + };
  29072. +
  29073. + fragment@1 {
  29074. + target = <&dsi1>;
  29075. + __overlay__{
  29076. + status = "okay";
  29077. + #address-cells = <1>;
  29078. + #size-cells = <0>;
  29079. + port {
  29080. + dsi_out_port:endpoint {
  29081. + remote-endpoint = <&panel_dsi_port>;
  29082. + };
  29083. + };
  29084. +
  29085. + lt070me05000:lt070me05000@0 {
  29086. + compatible = "jdi,lt070me05000";
  29087. + status = "okay";
  29088. + reg = <0>;
  29089. + reset-gpios = <&pca 0 1>;
  29090. + enable-gpios = <&pca 2 0>;
  29091. + dcdc-en-gpios = <&pca 1 0>;
  29092. + port {
  29093. + panel_dsi_port: endpoint {
  29094. + remote-endpoint = <&dsi_out_port>;
  29095. + };
  29096. + };
  29097. + };
  29098. + };
  29099. + };
  29100. +};
  29101. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
  29102. new file mode 100644
  29103. index 000000000000..b03394844abd
  29104. --- /dev/null
  29105. +++ b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
  29106. @@ -0,0 +1,43 @@
  29107. +/*
  29108. + * vc4-kms-v3d-overlay.dts
  29109. + */
  29110. +
  29111. +/dts-v1/;
  29112. +/plugin/;
  29113. +
  29114. +#include <dt-bindings/pinctrl/bcm2835.h>
  29115. +
  29116. +/ {
  29117. + compatible = "brcm,bcm2835";
  29118. +
  29119. + fragment@0 {
  29120. + target-path = "/";
  29121. + __overlay__ {
  29122. + panel: panel {
  29123. + compatible = "ontat,yx700wv03", "simple-panel";
  29124. +
  29125. + port {
  29126. + panel_in: endpoint {
  29127. + remote-endpoint = <&dpi_out>;
  29128. + };
  29129. + };
  29130. + };
  29131. + };
  29132. + };
  29133. +
  29134. + fragment@1 {
  29135. + target = <&dpi>;
  29136. + __overlay__ {
  29137. + status = "okay";
  29138. +
  29139. + pinctrl-names = "default";
  29140. + pinctrl-0 = <&dpi_18bit_gpio0>;
  29141. +
  29142. + port {
  29143. + dpi_out: endpoint@0 {
  29144. + remote-endpoint = <&panel_in>;
  29145. + };
  29146. + };
  29147. + };
  29148. + };
  29149. +};
  29150. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
  29151. new file mode 100644
  29152. index 000000000000..5a4efdeed663
  29153. --- /dev/null
  29154. +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
  29155. @@ -0,0 +1,123 @@
  29156. +/*
  29157. + * vc4-kms-v3d-overlay.dts
  29158. + */
  29159. +
  29160. +/dts-v1/;
  29161. +/plugin/;
  29162. +
  29163. +#include <dt-bindings/clock/bcm2835.h>
  29164. +
  29165. +#include "cma-overlay.dts"
  29166. +
  29167. +/ {
  29168. + compatible = "brcm,bcm2835";
  29169. +
  29170. + fragment@1 {
  29171. + target = <&i2c2>;
  29172. + __overlay__ {
  29173. + status = "okay";
  29174. + };
  29175. + };
  29176. +
  29177. + fragment@2 {
  29178. + target = <&fb>;
  29179. + __overlay__ {
  29180. + status = "disabled";
  29181. + };
  29182. + };
  29183. +
  29184. + fragment@3 {
  29185. + target = <&pixelvalve0>;
  29186. + __overlay__ {
  29187. + status = "okay";
  29188. + };
  29189. + };
  29190. +
  29191. + fragment@4 {
  29192. + target = <&pixelvalve1>;
  29193. + __overlay__ {
  29194. + status = "okay";
  29195. + };
  29196. + };
  29197. +
  29198. + fragment@5 {
  29199. + target = <&pixelvalve2>;
  29200. + __overlay__ {
  29201. + status = "okay";
  29202. + };
  29203. + };
  29204. +
  29205. + fragment@6 {
  29206. + target = <&hvs>;
  29207. + __overlay__ {
  29208. + status = "okay";
  29209. + };
  29210. + };
  29211. +
  29212. + fragment@7 {
  29213. + target = <&hdmi>;
  29214. + __overlay__ {
  29215. + status = "okay";
  29216. + };
  29217. + };
  29218. +
  29219. + fragment@8 {
  29220. + target = <&v3d>;
  29221. + __overlay__ {
  29222. + status = "okay";
  29223. + };
  29224. + };
  29225. +
  29226. + fragment@9 {
  29227. + target = <&vc4>;
  29228. + __overlay__ {
  29229. + status = "okay";
  29230. + };
  29231. + };
  29232. +
  29233. + fragment@10 {
  29234. + target = <&clocks>;
  29235. + __overlay__ {
  29236. + claim-clocks = <
  29237. + BCM2835_PLLD_DSI0
  29238. + BCM2835_PLLD_DSI1
  29239. + BCM2835_PLLH_AUX
  29240. + BCM2835_PLLH_PIX
  29241. + >;
  29242. + };
  29243. + };
  29244. +
  29245. + fragment@11 {
  29246. + target = <&vec>;
  29247. + __overlay__ {
  29248. + status = "okay";
  29249. + };
  29250. + };
  29251. +
  29252. + fragment@12 {
  29253. + target = <&txp>;
  29254. + __overlay__ {
  29255. + status = "okay";
  29256. + };
  29257. + };
  29258. +
  29259. + fragment@13 {
  29260. + target = <&hdmi>;
  29261. + __dormant__ {
  29262. + dmas;
  29263. + };
  29264. + };
  29265. +
  29266. + fragment@14 {
  29267. + target = <&audio>;
  29268. + __overlay__ {
  29269. + brcm,disable-hdmi;
  29270. + };
  29271. + };
  29272. +
  29273. + __overrides__ {
  29274. + audio = <0>,"!13", <0>,"=14";
  29275. + noaudio = <0>,"=13", <0>,"!14";
  29276. + nocomposite = <0>, "!11";
  29277. + };
  29278. +};
  29279. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
  29280. new file mode 100644
  29281. index 000000000000..4285e12a4e53
  29282. --- /dev/null
  29283. +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
  29284. @@ -0,0 +1,197 @@
  29285. +/*
  29286. + * vc4-kms-v3d-pi4-overlay.dts
  29287. + */
  29288. +
  29289. +/dts-v1/;
  29290. +/plugin/;
  29291. +
  29292. +#include <dt-bindings/clock/bcm2835.h>
  29293. +
  29294. +#include "cma-overlay.dts"
  29295. +
  29296. +&frag0 {
  29297. + size = <((320-4)*1024*1024)>;
  29298. +};
  29299. +
  29300. +/ {
  29301. + compatible = "brcm,bcm2711";
  29302. +
  29303. + fragment@1 {
  29304. + target = <&ddc0>;
  29305. + __overlay__ {
  29306. + status = "okay";
  29307. + };
  29308. + };
  29309. +
  29310. + fragment@2 {
  29311. + target = <&ddc1>;
  29312. + __overlay__ {
  29313. + status = "okay";
  29314. + };
  29315. + };
  29316. +
  29317. + fragment@3 {
  29318. + target = <&hdmi0>;
  29319. + __overlay__ {
  29320. + status = "okay";
  29321. + };
  29322. + };
  29323. +
  29324. + fragment@4 {
  29325. + target = <&hdmi1>;
  29326. + __overlay__ {
  29327. + status = "okay";
  29328. + };
  29329. + };
  29330. +
  29331. + fragment@5 {
  29332. + target = <&hvs>;
  29333. + __overlay__ {
  29334. + status = "okay";
  29335. + };
  29336. + };
  29337. +
  29338. + fragment@6 {
  29339. + target = <&pixelvalve0>;
  29340. + __overlay__ {
  29341. + status = "okay";
  29342. + };
  29343. + };
  29344. +
  29345. + fragment@7 {
  29346. + target = <&pixelvalve1>;
  29347. + __overlay__ {
  29348. + status = "okay";
  29349. + };
  29350. + };
  29351. +
  29352. + fragment@8 {
  29353. + target = <&pixelvalve2>;
  29354. + __overlay__ {
  29355. + status = "okay";
  29356. + };
  29357. + };
  29358. +
  29359. + fragment@9 {
  29360. + target = <&pixelvalve3>;
  29361. + __overlay__ {
  29362. + status = "okay";
  29363. + };
  29364. + };
  29365. +
  29366. + fragment@10 {
  29367. + target = <&pixelvalve4>;
  29368. + __overlay__ {
  29369. + status = "okay";
  29370. + };
  29371. + };
  29372. +
  29373. + fragment@11 {
  29374. + target = <&v3d>;
  29375. + __overlay__ {
  29376. + status = "okay";
  29377. + };
  29378. + };
  29379. +
  29380. + fragment@12 {
  29381. + target = <&vc4>;
  29382. + __overlay__ {
  29383. + status = "okay";
  29384. + };
  29385. + };
  29386. +
  29387. + fragment@13 {
  29388. + target = <&txp>;
  29389. + __overlay__ {
  29390. + status = "okay";
  29391. + };
  29392. + };
  29393. +
  29394. + fragment@14 {
  29395. + target = <&fb>;
  29396. + __overlay__ {
  29397. + status = "disabled";
  29398. + };
  29399. + };
  29400. +
  29401. + fragment@15 {
  29402. + target = <&firmwarekms>;
  29403. + __overlay__ {
  29404. + status = "disabled";
  29405. + };
  29406. + };
  29407. +
  29408. + fragment@16 {
  29409. + target = <&vec>;
  29410. + __overlay__ {
  29411. + status = "disabled";
  29412. + };
  29413. + };
  29414. +
  29415. + fragment@17 {
  29416. + target = <&hdmi0>;
  29417. + __dormant__ {
  29418. + dmas;
  29419. + };
  29420. + };
  29421. +
  29422. + fragment@18 {
  29423. + target = <&hdmi1>;
  29424. + __dormant__ {
  29425. + dmas;
  29426. + };
  29427. + };
  29428. +
  29429. + fragment@19 {
  29430. + target = <&audio>;
  29431. + __overlay__ {
  29432. + brcm,disable-hdmi;
  29433. + };
  29434. + };
  29435. +
  29436. + fragment@20 {
  29437. + target = <&dvp>;
  29438. + __overlay__ {
  29439. + status = "okay";
  29440. + };
  29441. + };
  29442. +
  29443. + fragment@21 {
  29444. + target = <&pixelvalve3>;
  29445. + __dormant__ {
  29446. + status = "okay";
  29447. + };
  29448. + };
  29449. +
  29450. + fragment@22 {
  29451. + target = <&vec>;
  29452. + __dormant__ {
  29453. + status = "okay";
  29454. + };
  29455. + };
  29456. +
  29457. + fragment@23 {
  29458. + target = <&aon_intr>;
  29459. + __overlay__ {
  29460. + status = "okay";
  29461. + };
  29462. + };
  29463. +
  29464. + __overrides__ {
  29465. + audio = <0>,"!17";
  29466. + audio1 = <0>,"!18";
  29467. + noaudio = <0>,"=17", <0>,"=18", <0>,"!19";
  29468. + composite = <0>, "!1",
  29469. + <0>, "!2",
  29470. + <0>, "!3",
  29471. + <0>, "!4",
  29472. + <0>, "!6",
  29473. + <0>, "!7",
  29474. + <0>, "!8",
  29475. + <0>, "!9",
  29476. + <0>, "!10",
  29477. + <0>, "!16",
  29478. + <0>, "=21",
  29479. + <0>, "=22";
  29480. + };
  29481. +};
  29482. diff --git a/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts
  29483. new file mode 100644
  29484. index 000000000000..6e787099e861
  29485. --- /dev/null
  29486. +++ b/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts
  29487. @@ -0,0 +1,100 @@
  29488. +/*
  29489. + * vc4-kms-vga666-overlay.dts
  29490. + * Configures a FenLogic or similar VGA666 DPI adapter when using the
  29491. + * vc4-kms-v3d driver.
  29492. + * If a suitable I2C level shifter is connected to GPIOs 0&1 and the VGA
  29493. + * ID1/SDA (pin 12) and ID3/SCL (pin 15) lines, then there is the option to
  29494. + * enable reading the EDID from the display.
  29495. + */
  29496. +
  29497. +/dts-v1/;
  29498. +/plugin/;
  29499. +
  29500. +#include <dt-bindings/pinctrl/bcm2835.h>
  29501. +
  29502. +/ {
  29503. + compatible = "brcm,bcm2835";
  29504. +
  29505. + fragment@0 {
  29506. + target-path = "/";
  29507. + __overlay__ {
  29508. + vga_connector: vga_connector {
  29509. + compatible = "vga-connector";
  29510. + label = "vga";
  29511. +
  29512. + port {
  29513. + vga_con_in: endpoint {
  29514. + remote-endpoint = <&vga666_out>;
  29515. + };
  29516. + };
  29517. + };
  29518. +
  29519. + vga_dac {
  29520. + compatible = "dumb-vga-dac";
  29521. +
  29522. + ports {
  29523. + #address-cells = <1>;
  29524. + #size-cells = <0>;
  29525. +
  29526. + port@0 {
  29527. + reg = <0>;
  29528. +
  29529. + vga666_in: endpoint {
  29530. + remote-endpoint = <&dpi_out>;
  29531. + };
  29532. + };
  29533. +
  29534. + port@1 {
  29535. + reg = <1>;
  29536. +
  29537. + vga666_out: endpoint {
  29538. + remote-endpoint = <&vga_con_in>;
  29539. + };
  29540. + };
  29541. + };
  29542. + };
  29543. +
  29544. + };
  29545. + };
  29546. +
  29547. + fragment@1 {
  29548. + target = <&dpi>;
  29549. + __overlay__ {
  29550. + status = "okay";
  29551. +
  29552. + pinctrl-names = "default";
  29553. + pinctrl-0 = <&dpi_18bit_gpio2>;
  29554. +
  29555. + port {
  29556. + dpi_out: endpoint@0 {
  29557. + remote-endpoint = <&vga666_in>;
  29558. + };
  29559. + };
  29560. + };
  29561. + };
  29562. +
  29563. + fragment@2 {
  29564. + target = <&vga_connector>;
  29565. + __dormant__ {
  29566. + ddc-i2c-bus = <&i2c_vc>;
  29567. + };
  29568. + };
  29569. +
  29570. + fragment@3 {
  29571. + target = <&i2c0if>;
  29572. + __dormant__ {
  29573. + status = "okay";
  29574. + };
  29575. + };
  29576. +
  29577. + fragment@4 {
  29578. + target = <&i2c0mux>;
  29579. + __dormant__ {
  29580. + status = "okay";
  29581. + };
  29582. + };
  29583. +
  29584. + __overrides__ {
  29585. + ddc = <0>,"=2", <0>,"=3", <0>,"=4";
  29586. + };
  29587. +};
  29588. diff --git a/arch/arm/boot/dts/overlays/vga666-overlay.dts b/arch/arm/boot/dts/overlays/vga666-overlay.dts
  29589. new file mode 100644
  29590. index 000000000000..a4968d180a5d
  29591. --- /dev/null
  29592. +++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
  29593. @@ -0,0 +1,30 @@
  29594. +/dts-v1/;
  29595. +/plugin/;
  29596. +
  29597. +/{
  29598. + compatible = "brcm,bcm2835";
  29599. +
  29600. + // There is no VGA driver module, but we need a platform device
  29601. + // node (that doesn't already use pinctrl) to hang the pinctrl
  29602. + // reference on - leds will do
  29603. +
  29604. + fragment@0 {
  29605. + target = <&leds>;
  29606. + __overlay__ {
  29607. + pinctrl-names = "default";
  29608. + pinctrl-0 = <&vga666_pins>;
  29609. + };
  29610. + };
  29611. +
  29612. + fragment@1 {
  29613. + target = <&gpio>;
  29614. + __overlay__ {
  29615. + vga666_pins: vga666_pins {
  29616. + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12
  29617. + 13 14 15 16 17 18 19 20 21>;
  29618. + brcm,function = <6>; /* alt2 */
  29619. + brcm,pull = <0>; /* no pull */
  29620. + };
  29621. + };
  29622. + };
  29623. +};
  29624. diff --git a/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
  29625. new file mode 100644
  29626. index 000000000000..f44e325bc1f2
  29627. --- /dev/null
  29628. +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
  29629. @@ -0,0 +1,40 @@
  29630. +// Definitions for w1-gpio module (without external pullup)
  29631. +/dts-v1/;
  29632. +/plugin/;
  29633. +
  29634. +/ {
  29635. + compatible = "brcm,bcm2835";
  29636. +
  29637. + fragment@0 {
  29638. + target-path = "/";
  29639. + __overlay__ {
  29640. +
  29641. + w1: onewire@0 {
  29642. + compatible = "w1-gpio";
  29643. + pinctrl-names = "default";
  29644. + pinctrl-0 = <&w1_pins>;
  29645. + gpios = <&gpio 4 0>;
  29646. + status = "okay";
  29647. + };
  29648. + };
  29649. + };
  29650. +
  29651. + fragment@1 {
  29652. + target = <&gpio>;
  29653. + __overlay__ {
  29654. + w1_pins: w1_pins@0 {
  29655. + brcm,pins = <4>;
  29656. + brcm,function = <0>; // in (initially)
  29657. + brcm,pull = <0>; // off
  29658. + };
  29659. + };
  29660. + };
  29661. +
  29662. + __overrides__ {
  29663. + gpiopin = <&w1>,"gpios:4",
  29664. + <&w1>,"reg:0",
  29665. + <&w1_pins>,"brcm,pins:0",
  29666. + <&w1_pins>,"reg:0";
  29667. + pullup; // Silently ignore unneeded parameter
  29668. + };
  29669. +};
  29670. diff --git a/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
  29671. new file mode 100644
  29672. index 000000000000..953c6a1aeab9
  29673. --- /dev/null
  29674. +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
  29675. @@ -0,0 +1,42 @@
  29676. +// Definitions for w1-gpio module (with external pullup)
  29677. +/dts-v1/;
  29678. +/plugin/;
  29679. +
  29680. +/ {
  29681. + compatible = "brcm,bcm2835";
  29682. +
  29683. + fragment@0 {
  29684. + target-path = "/";
  29685. + __overlay__ {
  29686. +
  29687. + w1: onewire@0 {
  29688. + compatible = "w1-gpio";
  29689. + pinctrl-names = "default";
  29690. + pinctrl-0 = <&w1_pins>;
  29691. + gpios = <&gpio 4 0>, <&gpio 5 1>;
  29692. + status = "okay";
  29693. + };
  29694. + };
  29695. + };
  29696. +
  29697. + fragment@1 {
  29698. + target = <&gpio>;
  29699. + __overlay__ {
  29700. + w1_pins: w1_pins@0 {
  29701. + brcm,pins = <4 5>;
  29702. + brcm,function = <0 1>; // in out
  29703. + brcm,pull = <0 0>; // off off
  29704. + };
  29705. + };
  29706. + };
  29707. +
  29708. + __overrides__ {
  29709. + gpiopin = <&w1>,"gpios:4",
  29710. + <&w1>,"reg:0",
  29711. + <&w1_pins>,"brcm,pins:0",
  29712. + <&w1_pins>,"reg:0";
  29713. + extpullup = <&w1>,"gpios:16",
  29714. + <&w1_pins>,"brcm,pins:4";
  29715. + pullup; // Silently ignore unneeded parameter
  29716. + };
  29717. +};
  29718. diff --git a/arch/arm/boot/dts/overlays/w5500-overlay.dts b/arch/arm/boot/dts/overlays/w5500-overlay.dts
  29719. new file mode 100644
  29720. index 000000000000..4d3e66296753
  29721. --- /dev/null
  29722. +++ b/arch/arm/boot/dts/overlays/w5500-overlay.dts
  29723. @@ -0,0 +1,63 @@
  29724. +// Overlay for the Wiznet w5500 Ethernet Controller
  29725. +/dts-v1/;
  29726. +/plugin/;
  29727. +
  29728. +/ {
  29729. + compatible = "brcm,bcm2835";
  29730. +
  29731. + fragment@0 {
  29732. + target = <&spidev0>;
  29733. + __overlay__ {
  29734. + status = "disabled";
  29735. + };
  29736. + };
  29737. +
  29738. + fragment@1 {
  29739. + target = <&spidev1>;
  29740. + __dormant__ {
  29741. + status = "disabled";
  29742. + };
  29743. + };
  29744. +
  29745. + fragment@2 {
  29746. + target = <&spi0>;
  29747. + __overlay__ {
  29748. + /* needed to avoid dtc warning */
  29749. + #address-cells = <1>;
  29750. + #size-cells = <0>;
  29751. +
  29752. + status = "okay";
  29753. +
  29754. + eth1: w5500@0{
  29755. + compatible = "wiznet,w5500";
  29756. + reg = <0>; /* CE0 */
  29757. + pinctrl-names = "default";
  29758. + pinctrl-0 = <&eth1_pins>;
  29759. + interrupt-parent = <&gpio>;
  29760. + interrupts = <25 0x8>;
  29761. + spi-max-frequency = <30000000>;
  29762. +// local-mac-address = [aa bb cc dd ee ff];
  29763. + status = "okay";
  29764. + };
  29765. + };
  29766. + };
  29767. +
  29768. + fragment@3 {
  29769. + target = <&gpio>;
  29770. + __overlay__ {
  29771. + eth1_pins: eth1_pins {
  29772. + brcm,pins = <25>;
  29773. + brcm,function = <0>; /* in */
  29774. + brcm,pull = <0>; /* none */
  29775. + };
  29776. + };
  29777. + };
  29778. +
  29779. + __overrides__ {
  29780. + int_pin = <&eth1>, "interrupts:0",
  29781. + <&eth1_pins>, "brcm,pins:0";
  29782. + speed = <&eth1>, "spi-max-frequency:0";
  29783. + cs = <&eth1>, "reg:0",
  29784. + <0>, "!0=1";
  29785. + };
  29786. +};
  29787. diff --git a/arch/arm/boot/dts/overlays/wittypi-overlay.dts b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
  29788. new file mode 100644
  29789. index 000000000000..71ce806186de
  29790. --- /dev/null
  29791. +++ b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
  29792. @@ -0,0 +1,44 @@
  29793. +/*
  29794. + * Device Tree overlay for Witty Pi extension board by UUGear
  29795. + *
  29796. + */
  29797. +
  29798. +/dts-v1/;
  29799. +/plugin/;
  29800. +
  29801. +/ {
  29802. +
  29803. + compatible = "brcm,bcm2835";
  29804. +
  29805. + fragment@0 {
  29806. + target = <&leds>;
  29807. + __overlay__ {
  29808. + compatible = "gpio-leds";
  29809. + wittypi_led: wittypi_led {
  29810. + label = "wittypi_led";
  29811. + linux,default-trigger = "default-on";
  29812. + gpios = <&gpio 17 0>;
  29813. + };
  29814. + };
  29815. + };
  29816. +
  29817. + fragment@1 {
  29818. + target = <&i2c1>;
  29819. + __overlay__ {
  29820. + #address-cells = <1>;
  29821. + #size-cells = <0>;
  29822. +
  29823. + rtc: ds1337@68 {
  29824. + compatible = "dallas,ds1337";
  29825. + reg = <0x68>;
  29826. + wakeup-source;
  29827. + };
  29828. + };
  29829. + };
  29830. +
  29831. + __overrides__ {
  29832. + led_gpio = <&wittypi_led>,"gpios:4";
  29833. + led_trigger = <&wittypi_led>,"linux,default-trigger";
  29834. + };
  29835. +
  29836. +};
  29837. diff --git a/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
  29838. new file mode 100644
  29839. index 000000000000..289fa4dacdf1
  29840. --- /dev/null
  29841. +++ b/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
  29842. @@ -0,0 +1,82 @@
  29843. +// Definitions for Waveshare WM8960 https://github.com/waveshare/WM8960-Audio-HAT
  29844. +/dts-v1/;
  29845. +/plugin/;
  29846. +
  29847. +/ {
  29848. + compatible = "brcm,bcm2835";
  29849. +
  29850. + fragment@0 {
  29851. + target = <&i2s>;
  29852. + __overlay__ {
  29853. + status = "okay";
  29854. + };
  29855. + };
  29856. +
  29857. + fragment@1 {
  29858. + target-path="/";
  29859. + __overlay__ {
  29860. + wm8960_mclk: wm8960_mclk {
  29861. + compatible = "fixed-clock";
  29862. + #clock-cells = <0>;
  29863. + clock-frequency = <12288000>;
  29864. + };
  29865. + };
  29866. + };
  29867. + fragment@2 {
  29868. + target = <&i2c1>;
  29869. + __overlay__ {
  29870. + #address-cells = <1>;
  29871. + #size-cells = <0>;
  29872. + status = "okay";
  29873. +
  29874. + wm8960: wm8960 {
  29875. + compatible = "wlf,wm8960";
  29876. + reg = <0x1a>;
  29877. + #sound-dai-cells = <0>;
  29878. + AVDD-supply = <&vdd_5v0_reg>;
  29879. + DVDD-supply = <&vdd_3v3_reg>;
  29880. + };
  29881. + };
  29882. + };
  29883. +
  29884. +
  29885. + fragment@3 {
  29886. + target = <&sound>;
  29887. + slave_overlay: __overlay__ {
  29888. + compatible = "simple-audio-card";
  29889. + simple-audio-card,format = "i2s";
  29890. + simple-audio-card,name = "wm8960-soundcard";
  29891. + status = "okay";
  29892. +
  29893. + simple-audio-card,widgets =
  29894. + "Microphone", "Mic Jack",
  29895. + "Line", "Line In",
  29896. + "Line", "Line Out",
  29897. + "Speaker", "Speaker",
  29898. + "Headphone", "Headphone Jack";
  29899. + simple-audio-card,routing =
  29900. + "Headphone Jack", "HP_L",
  29901. + "Headphone Jack", "HP_R",
  29902. + "Speaker", "SPK_LP",
  29903. + "Speaker", "SPK_LN",
  29904. + "LINPUT1", "Mic Jack",
  29905. + "LINPUT3", "Mic Jack",
  29906. + "RINPUT1", "Mic Jack",
  29907. + "RINPUT2", "Mic Jack";
  29908. +
  29909. + simple-audio-card,cpu {
  29910. + sound-dai = <&i2s>;
  29911. + };
  29912. + dailink0_slave: simple-audio-card,codec {
  29913. + sound-dai = <&wm8960>;
  29914. + clocks = <&wm8960_mclk>;
  29915. + clock-names = "mclk";
  29916. + };
  29917. + };
  29918. + };
  29919. +
  29920. + __overrides__ {
  29921. + alsaname = <&slave_overlay>,"simple-audio-card,name";
  29922. + compatible = <&wm8960>,"compatible";
  29923. + };
  29924. +};
  29925. diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
  29926. index 639e01a4d855..becca30ad4fe 100644
  29927. --- a/arch/arm64/boot/dts/Makefile
  29928. +++ b/arch/arm64/boot/dts/Makefile
  29929. @@ -30,3 +30,5 @@ subdir-y += synaptics
  29930. subdir-y += ti
  29931. subdir-y += toshiba
  29932. subdir-y += xilinx
  29933. +
  29934. +subdir-y += overlays
  29935. diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
  29936. index 11eae3e3a944..5a90727064ee 100644
  29937. --- a/arch/arm64/boot/dts/broadcom/Makefile
  29938. +++ b/arch/arm64/boot/dts/broadcom/Makefile
  29939. @@ -5,7 +5,19 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
  29940. bcm2837-rpi-3-b.dtb \
  29941. bcm2837-rpi-3-b-plus.dtb \
  29942. bcm2837-rpi-cm3-io3.dtb
  29943. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-2-b.dtb
  29944. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b.dtb
  29945. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b-plus.dtb
  29946. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-4-b.dtb
  29947. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb
  29948. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-cm3.dtb
  29949. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-cm4.dtb
  29950. subdir-y += bcmbca
  29951. subdir-y += northstar2
  29952. subdir-y += stingray
  29953. +
  29954. +# Enable fixups to support overlays on BCM2835 platforms
  29955. +ifeq ($(CONFIG_ARCH_BCM2835),y)
  29956. + DTC_FLAGS += -@
  29957. +endif
  29958. diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
  29959. new file mode 100644
  29960. index 000000000000..36ecea71f0ef
  29961. --- /dev/null
  29962. +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
  29963. @@ -0,0 +1 @@
  29964. +#include "../../../../arm/boot/dts/bcm2710-rpi-2-b.dts"
  29965. diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
  29966. new file mode 100644
  29967. index 000000000000..22fc6a82f2a9
  29968. --- /dev/null
  29969. +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
  29970. @@ -0,0 +1 @@
  29971. +#include "../../../../arm/boot/dts/bcm2710-rpi-3-b-plus.dts"
  29972. diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
  29973. new file mode 100644
  29974. index 000000000000..4cacc5b72ae3
  29975. --- /dev/null
  29976. +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
  29977. @@ -0,0 +1 @@
  29978. +#include "../../../../arm/boot/dts/bcm2710-rpi-3-b.dts"
  29979. diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
  29980. new file mode 100644
  29981. index 000000000000..e1e13784cff6
  29982. --- /dev/null
  29983. +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
  29984. @@ -0,0 +1 @@
  29985. +#include "../../../../arm/boot/dts/bcm2710-rpi-cm3.dts"
  29986. diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
  29987. index d24c53682e44..bf69a4b0b172 100644
  29988. --- a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
  29989. +++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
  29990. @@ -1,2 +1 @@
  29991. -// SPDX-License-Identifier: GPL-2.0
  29992. -#include "arm/bcm2711-rpi-4-b.dts"
  29993. +#include "../../../../arm/boot/dts/bcm2711-rpi-4-b.dts"
  29994. diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-400.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-400.dts
  29995. index b9000f58beb5..90c2b5a195d4 100644
  29996. --- a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-400.dts
  29997. +++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-400.dts
  29998. @@ -1,2 +1 @@
  29999. -// SPDX-License-Identifier: GPL-2.0
  30000. -#include "arm/bcm2711-rpi-400.dts"
  30001. +#include "../../../../arm/boot/dts/bcm2711-rpi-400.dts"
  30002. diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts
  30003. new file mode 100644
  30004. index 000000000000..8064a58155f1
  30005. --- /dev/null
  30006. +++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts
  30007. @@ -0,0 +1 @@
  30008. +#include "../../../../arm/boot/dts/bcm2711-rpi-cm4.dts"
  30009. diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
  30010. new file mode 120000
  30011. index 000000000000..e5c400284467
  30012. --- /dev/null
  30013. +++ b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
  30014. @@ -0,0 +1 @@
  30015. +../../../../arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
  30016. \ No newline at end of file
  30017. diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
  30018. new file mode 120000
  30019. index 000000000000..fc4c05bbe7fd
  30020. --- /dev/null
  30021. +++ b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
  30022. @@ -0,0 +1 @@
  30023. +../../../../arm/boot/dts/bcm283x-rpi-lan7515.dtsi
  30024. \ No newline at end of file
  30025. diff --git a/arch/arm64/boot/dts/overlays b/arch/arm64/boot/dts/overlays
  30026. new file mode 120000
  30027. index 000000000000..ded08646b6f6
  30028. --- /dev/null
  30029. +++ b/arch/arm64/boot/dts/overlays
  30030. @@ -0,0 +1 @@
  30031. +../../../arm/boot/dts/overlays
  30032. \ No newline at end of file
  30033. diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
  30034. index 190d781e84f4..84c46c081218 100644
  30035. --- a/scripts/Makefile.dtbinst
  30036. +++ b/scripts/Makefile.dtbinst
  30037. @@ -18,9 +18,10 @@ include $(srctree)/scripts/Kbuild.include
  30038. include $(src)/Makefile
  30039. dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
  30040. +dtbos := $(addprefix $(dst)/, $(dtbo-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
  30041. subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))
  30042. -__dtbs_install: $(dtbs) $(subdirs)
  30043. +__dtbs_install: $(dtbs) $(dtbos) $(subdirs)
  30044. @:
  30045. quiet_cmd_dtb_install = INSTALL $@
  30046. diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
  30047. index 0a8a4689c3eb..dff7d1ef5ff4 100644
  30048. --- a/scripts/Makefile.lib
  30049. +++ b/scripts/Makefile.lib
  30050. @@ -300,6 +300,7 @@ DTC_FLAGS += -Wno-interrupt_provider
  30051. ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
  30052. DTC_FLAGS += -Wno-unit_address_vs_reg \
  30053. -Wno-unit_address_format \
  30054. + -Wno-gpios_property \
  30055. -Wno-avoid_unnecessary_addr_size \
  30056. -Wno-alias_paths \
  30057. -Wno-graph_child_address \
  30058. @@ -373,6 +374,18 @@ endef
  30059. $(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
  30060. $(call if_changed_rule,dtc)
  30061. +quiet_cmd_dtco = DTCO $@
  30062. +cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \
  30063. + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
  30064. + $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \
  30065. + -i $(dir $<) $(DTC_FLAGS) \
  30066. + -Wno-interrupts_property \
  30067. + -d $(depfile).dtc.tmp $(dtc-tmp) ; \
  30068. + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
  30069. +
  30070. +$(obj)/%.dtbo: $(src)/%-overlay.dts FORCE
  30071. + $(call if_changed_dep,dtco)
  30072. +
  30073. dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
  30074. # Bzip2
  30075. --
  30076. 2.30.2