0051-BCM2708-Add-core-Device-Tree-support.patch 108 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564
  1. From 4dc11d58769fda62ef7cff1ab506d4c68c232270 Mon Sep 17 00:00:00 2001
  2. From: notro <notro@tronnes.org>
  3. Date: Wed, 9 Jul 2014 14:46:08 +0200
  4. Subject: [PATCH 051/381] BCM2708: Add core Device Tree support
  5. Add the bare minimum needed to boot BCM2708 from a Device Tree.
  6. Signed-off-by: Noralf Tronnes <notro@tronnes.org>
  7. BCM2708: DT: change 'axi' nodename to 'soc'
  8. Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
  9. The VC4 bootloader fills in certain properties in the 'axi' subtree,
  10. but since this is part of an upstreaming effort, the name is changed.
  11. Signed-off-by: Noralf Tronnes notro@tronnes.org
  12. BCM2708_DT: Correct length of the peripheral space
  13. Use dts-dirs feature for overlays.
  14. The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
  15. Using this fixes the install_dtbs target, which previously did not install the overlays.
  16. BCM270X_DT: configure I2S DMA channels
  17. Signed-off-by: Matthias Reichl <hias@horus.com>
  18. BCM270X_DT: switch to bcm2835-i2s
  19. I2S soundcard drivers with proper devicetree support (i.e. not linking
  20. to the cpu_dai/platform via name but to cpu/platform via of_node)
  21. will work out of the box without any modifications.
  22. When the kernel is compiled without devicetree support the platform
  23. code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
  24. will link to it via name, as before.
  25. Signed-off-by: Matthias Reichl <hias@horus.com>
  26. SDIO-overlay: add poll_once-boolean parameter
  27. Add paramter to toggle sdio-device-polling
  28. done every second or once at boot-time.
  29. Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
  30. BCM270X_DT: Make mmc overlay compatible with current firmware
  31. The original DT overlay logic followed a merge-then-patch procedure,
  32. i.e. parameters are applied to the loaded overlay before the overlay
  33. is merged into the base DTB. This sequence has been changed to
  34. patch-then-merge, in order to support parameterised node names, and
  35. to protect against bad overlays. As a result, overrides (parameters)
  36. must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.
  37. mmc-overlay.dts (that switches back to the original mmc sdcard
  38. driver) is the only overlay violating that rule, and this patch
  39. fixes it.
  40. bcm270x_dt: Use the sdhost MMC controller by default
  41. The "mmc" overlay reverts to using the other controller.
  42. squash: Add cprman to dt
  43. BCM270X_DT: Use clk_core for I2C interfaces
  44. ---
  45. arch/arm/boot/dts/Makefile | 30 +
  46. arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 145 +++++
  47. arch/arm/boot/dts/bcm2708-rpi-b.dts | 135 +++++
  48. arch/arm/boot/dts/bcm2708-rpi-cm.dts | 102 ++++
  49. arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 40 ++
  50. arch/arm/boot/dts/bcm2708.dtsi | 40 ++
  51. arch/arm/boot/dts/bcm2708_common.dtsi | 347 +++++++++++
  52. arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 145 +++++
  53. arch/arm/boot/dts/bcm2709.dtsi | 102 ++++
  54. arch/arm/boot/dts/bcm2835-rpi-cm.dts | 93 +++
  55. arch/arm/boot/dts/bcm2835-rpi-cm.dtsi | 30 +
  56. arch/arm/boot/dts/overlays/Makefile | 69 +++
  57. arch/arm/boot/dts/overlays/README | 648 +++++++++++++++++++++
  58. arch/arm/boot/dts/overlays/ads7846-overlay.dts | 83 +++
  59. .../dts/overlays/bmp085_i2c-sensor-overlay.dts | 23 +
  60. arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 ++
  61. arch/arm/boot/dts/overlays/enc28j60-overlay.dts | 50 ++
  62. .../boot/dts/overlays/gpio-poweroff-overlay.dts | 34 ++
  63. .../boot/dts/overlays/hifiberry-amp-overlay.dts | 39 ++
  64. .../boot/dts/overlays/hifiberry-dac-overlay.dts | 34 ++
  65. .../dts/overlays/hifiberry-dacplus-overlay.dts | 39 ++
  66. .../boot/dts/overlays/hifiberry-digi-overlay.dts | 39 ++
  67. arch/arm/boot/dts/overlays/hy28a-overlay.dts | 87 +++
  68. arch/arm/boot/dts/overlays/hy28b-overlay.dts | 142 +++++
  69. arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts | 55 ++
  70. arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts | 13 +
  71. arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts | 39 ++
  72. .../boot/dts/overlays/iqaudio-dacplus-overlay.dts | 39 ++
  73. arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts | 57 ++
  74. .../arm/boot/dts/overlays/mcp2515-can0-overlay.dts | 69 +++
  75. .../arm/boot/dts/overlays/mcp2515-can1-overlay.dts | 69 +++
  76. arch/arm/boot/dts/overlays/mmc-overlay.dts | 39 ++
  77. arch/arm/boot/dts/overlays/mz61581-overlay.dts | 111 ++++
  78. arch/arm/boot/dts/overlays/piscreen-overlay.dts | 96 +++
  79. .../dts/overlays/pitft28-resistive-overlay.dts | 115 ++++
  80. arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 34 ++
  81. arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 46 ++
  82. arch/arm/boot/dts/overlays/pwm-overlay.dts | 42 ++
  83. arch/arm/boot/dts/overlays/raspidac3-overlay.dts | 45 ++
  84. arch/arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 ++
  85. arch/arm/boot/dts/overlays/rpi-display-overlay.dts | 82 +++
  86. arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts | 17 +
  87. arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 39 ++
  88. arch/arm/boot/dts/overlays/rpi-sense-overlay.dts | 47 ++
  89. arch/arm/boot/dts/overlays/sdhost-overlay.dts | 29 +
  90. arch/arm/boot/dts/overlays/sdio-overlay.dts | 32 +
  91. arch/arm/boot/dts/overlays/smi-dev-overlay.dts | 18 +
  92. arch/arm/boot/dts/overlays/smi-nand-overlay.dts | 69 +++
  93. arch/arm/boot/dts/overlays/smi-overlay.dts | 37 ++
  94. .../boot/dts/overlays/spi-gpio35-39-overlay.dts | 31 +
  95. arch/arm/boot/dts/overlays/tinylcd35-overlay.dts | 216 +++++++
  96. arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 ++
  97. arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 +
  98. arch/arm/boot/dts/overlays/w1-gpio-overlay.dts | 39 ++
  99. .../boot/dts/overlays/w1-gpio-pullup-overlay.dts | 41 ++
  100. 55 files changed, 4203 insertions(+)
  101. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
  102. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
  103. create mode 100755 arch/arm/boot/dts/bcm2708-rpi-cm.dts
  104. create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
  105. create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
  106. create mode 100644 arch/arm/boot/dts/bcm2708_common.dtsi
  107. create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
  108. create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
  109. create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dts
  110. create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dtsi
  111. create mode 100644 arch/arm/boot/dts/overlays/Makefile
  112. create mode 100644 arch/arm/boot/dts/overlays/README
  113. create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
  114. create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
  115. create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
  116. create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
  117. create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
  118. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
  119. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
  120. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
  121. create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
  122. create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
  123. create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
  124. create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
  125. create mode 100644 arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
  126. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
  127. create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
  128. create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
  129. create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
  130. create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
  131. create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
  132. create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
  133. create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
  134. create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
  135. create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
  136. create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
  137. create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts
  138. create mode 100644 arch/arm/boot/dts/overlays/raspidac3-overlay.dts
  139. create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
  140. create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
  141. create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
  142. create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
  143. create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
  144. create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
  145. create mode 100644 arch/arm/boot/dts/overlays/sdio-overlay.dts
  146. create mode 100644 arch/arm/boot/dts/overlays/smi-dev-overlay.dts
  147. create mode 100644 arch/arm/boot/dts/overlays/smi-nand-overlay.dts
  148. create mode 100644 arch/arm/boot/dts/overlays/smi-overlay.dts
  149. create mode 100644 arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
  150. create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
  151. create mode 100644 arch/arm/boot/dts/overlays/uart1-overlay.dts
  152. create mode 100644 arch/arm/boot/dts/overlays/vga666-overlay.dts
  153. create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
  154. create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
  155. --- a/arch/arm/boot/dts/Makefile
  156. +++ b/arch/arm/boot/dts/Makefile
  157. @@ -1,5 +1,25 @@
  158. ifeq ($(CONFIG_OF),y)
  159. +dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-b.dtb
  160. +dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-b-plus.dtb
  161. +dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-cm.dtb
  162. +dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb
  163. +dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb
  164. +
  165. +# Raspberry Pi
  166. +ifeq ($(CONFIG_ARCH_BCM2708),y)
  167. + RPI_DT_OVERLAYS=y
  168. +endif
  169. +ifeq ($(CONFIG_ARCH_BCM2709),y)
  170. + RPI_DT_OVERLAYS=y
  171. +endif
  172. +ifeq ($(CONFIG_ARCH_BCM2835),y)
  173. + RPI_DT_OVERLAYS=y
  174. +endif
  175. +ifeq ($(RPI_DT_OVERLAYS),y)
  176. + dts-dirs += overlays
  177. +endif
  178. +
  179. dtb-$(CONFIG_ARCH_ALPINE) += \
  180. alpine-db.dtb
  181. dtb-$(CONFIG_MACH_ASM9260) += \
  182. @@ -777,10 +797,20 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
  183. mt8127-moose.dtb \
  184. mt8135-evbp1.dtb
  185. dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
  186. +
  187. +targets += dtbs dtbs_install
  188. +targets += $(dtb-y)
  189. +
  190. endif
  191. dtstree := $(srctree)/$(src)
  192. dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
  193. always := $(dtb-y)
  194. +subdir-y := $(dts-dirs)
  195. clean-files := *.dtb
  196. +
  197. +# Enable fixups to support overlays on BCM2708 platforms
  198. +ifeq ($(RPI_DT_OVERLAYS),y)
  199. + DTC_FLAGS ?= -@
  200. +endif
  201. --- /dev/null
  202. +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
  203. @@ -0,0 +1,145 @@
  204. +/dts-v1/;
  205. +
  206. +#include "bcm2708.dtsi"
  207. +
  208. +/ {
  209. + compatible = "brcm,bcm2708";
  210. + model = "Raspberry Pi Model B+";
  211. +};
  212. +
  213. +&gpio {
  214. + sdhost_pins: sdhost_pins {
  215. + brcm,pins = <48 49 50 51 52 53>;
  216. + brcm,function = <4>; /* alt0 */
  217. + };
  218. +
  219. + spi0_pins: spi0_pins {
  220. + brcm,pins = <9 10 11>;
  221. + brcm,function = <4>; /* alt0 */
  222. + };
  223. +
  224. + spi0_cs_pins: spi0_cs_pins {
  225. + brcm,pins = <8 7>;
  226. + brcm,function = <1>; /* output */
  227. + };
  228. +
  229. + i2c0_pins: i2c0 {
  230. + brcm,pins = <0 1>;
  231. + brcm,function = <4>;
  232. + };
  233. +
  234. + i2c1_pins: i2c1 {
  235. + brcm,pins = <2 3>;
  236. + brcm,function = <4>;
  237. + };
  238. +
  239. + i2s_pins: i2s {
  240. + brcm,pins = <18 19 20 21>;
  241. + brcm,function = <4>; /* alt0 */
  242. + };
  243. +};
  244. +
  245. +&sdhost {
  246. + pinctrl-names = "default";
  247. + pinctrl-0 = <&sdhost_pins>;
  248. + bus-width = <4>;
  249. + status = "okay";
  250. +};
  251. +
  252. +&fb {
  253. + status = "okay";
  254. +};
  255. +
  256. +&uart0 {
  257. + status = "okay";
  258. +};
  259. +
  260. +&spi0 {
  261. + pinctrl-names = "default";
  262. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  263. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  264. +
  265. + spidev@0{
  266. + compatible = "spidev";
  267. + reg = <0>; /* CE0 */
  268. + #address-cells = <1>;
  269. + #size-cells = <0>;
  270. + spi-max-frequency = <500000>;
  271. + };
  272. +
  273. + spidev@1{
  274. + compatible = "spidev";
  275. + reg = <1>; /* CE1 */
  276. + #address-cells = <1>;
  277. + #size-cells = <0>;
  278. + spi-max-frequency = <500000>;
  279. + };
  280. +};
  281. +
  282. +&i2c0 {
  283. + pinctrl-names = "default";
  284. + pinctrl-0 = <&i2c0_pins>;
  285. + clock-frequency = <100000>;
  286. +};
  287. +
  288. +&i2c1 {
  289. + pinctrl-names = "default";
  290. + pinctrl-0 = <&i2c1_pins>;
  291. + clock-frequency = <100000>;
  292. +};
  293. +
  294. +&i2c2 {
  295. + clock-frequency = <100000>;
  296. +};
  297. +
  298. +&i2s {
  299. + #sound-dai-cells = <0>;
  300. + pinctrl-names = "default";
  301. + pinctrl-0 = <&i2s_pins>;
  302. +};
  303. +
  304. +&random {
  305. + status = "okay";
  306. +};
  307. +
  308. +&leds {
  309. + act_led: act {
  310. + label = "led0";
  311. + linux,default-trigger = "mmc0";
  312. + gpios = <&gpio 47 0>;
  313. + };
  314. +
  315. + pwr_led: pwr {
  316. + label = "led1";
  317. + linux,default-trigger = "input";
  318. + gpios = <&gpio 35 0>;
  319. + };
  320. +};
  321. +
  322. +/ {
  323. + __overrides__ {
  324. + uart0 = <&uart0>,"status";
  325. + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
  326. + i2s = <&i2s>,"status";
  327. + spi = <&spi0>,"status";
  328. + i2c0 = <&i2c0>,"status";
  329. + i2c1 = <&i2c1>,"status";
  330. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  331. + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
  332. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  333. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  334. + core_freq = <&clk_core>,"clock-frequency:0";
  335. +
  336. + act_led_gpio = <&act_led>,"gpios:4";
  337. + act_led_activelow = <&act_led>,"gpios:8";
  338. + act_led_trigger = <&act_led>,"linux,default-trigger";
  339. +
  340. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  341. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  342. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  343. +
  344. + audio = <&audio>,"status";
  345. + watchdog = <&watchdog>,"status";
  346. + random = <&random>,"status";
  347. + };
  348. +};
  349. --- /dev/null
  350. +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
  351. @@ -0,0 +1,135 @@
  352. +/dts-v1/;
  353. +
  354. +#include "bcm2708.dtsi"
  355. +
  356. +/ {
  357. + compatible = "brcm,bcm2708";
  358. + model = "Raspberry Pi Model B";
  359. +};
  360. +
  361. +&gpio {
  362. + sdhost_pins: sdhost_pins {
  363. + brcm,pins = <48 49 50 51 52 53>;
  364. + brcm,function = <4>; /* alt0 */
  365. + };
  366. +
  367. + spi0_pins: spi0_pins {
  368. + brcm,pins = <9 10 11>;
  369. + brcm,function = <4>; /* alt0 */
  370. + };
  371. +
  372. + spi0_cs_pins: spi0_cs_pins {
  373. + brcm,pins = <8 7>;
  374. + brcm,function = <1>; /* output */
  375. + };
  376. +
  377. + i2c0_pins: i2c0 {
  378. + brcm,pins = <0 1>;
  379. + brcm,function = <4>;
  380. + };
  381. +
  382. + i2c1_pins: i2c1 {
  383. + brcm,pins = <2 3>;
  384. + brcm,function = <4>;
  385. + };
  386. +
  387. + i2s_pins: i2s {
  388. + brcm,pins = <28 29 30 31>;
  389. + brcm,function = <6>; /* alt2 */
  390. + };
  391. +};
  392. +
  393. +&sdhost {
  394. + pinctrl-names = "default";
  395. + pinctrl-0 = <&sdhost_pins>;
  396. + bus-width = <4>;
  397. + status = "okay";
  398. +};
  399. +
  400. +&fb {
  401. + status = "okay";
  402. +};
  403. +
  404. +&uart0 {
  405. + status = "okay";
  406. +};
  407. +
  408. +&spi0 {
  409. + pinctrl-names = "default";
  410. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  411. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  412. +
  413. + spidev@0{
  414. + compatible = "spidev";
  415. + reg = <0>; /* CE0 */
  416. + #address-cells = <1>;
  417. + #size-cells = <0>;
  418. + spi-max-frequency = <500000>;
  419. + };
  420. +
  421. + spidev@1{
  422. + compatible = "spidev";
  423. + reg = <1>; /* CE1 */
  424. + #address-cells = <1>;
  425. + #size-cells = <0>;
  426. + spi-max-frequency = <500000>;
  427. + };
  428. +};
  429. +
  430. +&i2c0 {
  431. + pinctrl-names = "default";
  432. + pinctrl-0 = <&i2c0_pins>;
  433. + clock-frequency = <100000>;
  434. +};
  435. +
  436. +&i2c1 {
  437. + pinctrl-names = "default";
  438. + pinctrl-0 = <&i2c1_pins>;
  439. + clock-frequency = <100000>;
  440. +};
  441. +
  442. +&i2c2 {
  443. + clock-frequency = <100000>;
  444. +};
  445. +
  446. +&i2s {
  447. + #sound-dai-cells = <0>;
  448. + pinctrl-names = "default";
  449. + pinctrl-0 = <&i2s_pins>;
  450. +};
  451. +
  452. +&random {
  453. + status = "okay";
  454. +};
  455. +
  456. +&leds {
  457. + act_led: act {
  458. + label = "led0";
  459. + linux,default-trigger = "mmc0";
  460. + gpios = <&gpio 16 1>;
  461. + };
  462. +};
  463. +
  464. +/ {
  465. + __overrides__ {
  466. + uart0 = <&uart0>,"status";
  467. + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
  468. + i2s = <&i2s>,"status";
  469. + spi = <&spi0>,"status";
  470. + i2c0 = <&i2c0>,"status";
  471. + i2c1 = <&i2c1>,"status";
  472. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  473. + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
  474. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  475. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  476. + core_freq = <&clk_core>,"clock-frequency:0";
  477. +
  478. + act_led_gpio = <&act_led>,"gpios:4";
  479. + act_led_activelow = <&act_led>,"gpios:8";
  480. + act_led_trigger = <&act_led>,"linux,default-trigger";
  481. +
  482. + audio = <&audio>,"status";
  483. + watchdog = <&watchdog>,"status";
  484. + random = <&random>,"status";
  485. + };
  486. +};
  487. --- /dev/null
  488. +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
  489. @@ -0,0 +1,102 @@
  490. +/dts-v1/;
  491. +
  492. +#include "bcm2708-rpi-cm.dtsi"
  493. +
  494. +/ {
  495. + model = "Raspberry Pi Compute Module";
  496. +};
  497. +
  498. +&uart0 {
  499. + status = "okay";
  500. +};
  501. +
  502. +&gpio {
  503. + spi0_pins: spi0_pins {
  504. + brcm,pins = <9 10 11>;
  505. + brcm,function = <4>; /* alt0 */
  506. + };
  507. +
  508. + spi0_cs_pins: spi0_cs_pins {
  509. + brcm,pins = <8 7>;
  510. + brcm,function = <1>; /* output */
  511. + };
  512. +
  513. + i2c0_pins: i2c0 {
  514. + brcm,pins = <0 1>;
  515. + brcm,function = <4>;
  516. + };
  517. +
  518. + i2c1_pins: i2c1 {
  519. + brcm,pins = <2 3>;
  520. + brcm,function = <4>;
  521. + };
  522. +
  523. + i2s_pins: i2s {
  524. + brcm,pins = <18 19 20 21>;
  525. + brcm,function = <4>; /* alt0 */
  526. + };
  527. +};
  528. +
  529. +&spi0 {
  530. + pinctrl-names = "default";
  531. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  532. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  533. +
  534. + spidev@0{
  535. + compatible = "spidev";
  536. + reg = <0>; /* CE0 */
  537. + #address-cells = <1>;
  538. + #size-cells = <0>;
  539. + spi-max-frequency = <500000>;
  540. + };
  541. +
  542. + spidev@1{
  543. + compatible = "spidev";
  544. + reg = <1>; /* CE1 */
  545. + #address-cells = <1>;
  546. + #size-cells = <0>;
  547. + spi-max-frequency = <500000>;
  548. + };
  549. +};
  550. +
  551. +&i2c0 {
  552. + pinctrl-names = "default";
  553. + pinctrl-0 = <&i2c0_pins>;
  554. + clock-frequency = <100000>;
  555. +};
  556. +
  557. +&i2c1 {
  558. + pinctrl-names = "default";
  559. + pinctrl-0 = <&i2c1_pins>;
  560. + clock-frequency = <100000>;
  561. +};
  562. +
  563. +&i2c2 {
  564. + clock-frequency = <100000>;
  565. +};
  566. +
  567. +&i2s {
  568. + #sound-dai-cells = <0>;
  569. + pinctrl-names = "default";
  570. + pinctrl-0 = <&i2s_pins>;
  571. +};
  572. +
  573. +&random {
  574. + status = "okay";
  575. +};
  576. +
  577. +/ {
  578. + __overrides__ {
  579. + uart0 = <&uart0>,"status";
  580. + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
  581. + i2s = <&i2s>,"status";
  582. + spi = <&spi0>,"status";
  583. + i2c0 = <&i2c0>,"status";
  584. + i2c1 = <&i2c1>,"status";
  585. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  586. + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
  587. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  588. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  589. + core_freq = <&clk_core>,"clock-frequency:0";
  590. + };
  591. +};
  592. --- /dev/null
  593. +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
  594. @@ -0,0 +1,40 @@
  595. +#include "bcm2708.dtsi"
  596. +
  597. +&gpio {
  598. + sdhost_pins: sdhost_pins {
  599. + brcm,pins = <48 49 50 51 52 53>;
  600. + brcm,function = <4>; /* alt0 */
  601. + };
  602. +};
  603. +
  604. +&leds {
  605. + act_led: act {
  606. + label = "led0";
  607. + linux,default-trigger = "mmc0";
  608. + gpios = <&gpio 47 0>;
  609. + };
  610. +};
  611. +
  612. +&sdhost {
  613. + pinctrl-names = "default";
  614. + pinctrl-0 = <&sdhost_pins>;
  615. + bus-width = <4>;
  616. + non-removable;
  617. + status = "okay";
  618. +};
  619. +
  620. +&fb {
  621. + status = "okay";
  622. +};
  623. +
  624. +/ {
  625. + __overrides__ {
  626. + act_led_gpio = <&act_led>,"gpios:4";
  627. + act_led_activelow = <&act_led>,"gpios:8";
  628. + act_led_trigger = <&act_led>,"linux,default-trigger";
  629. +
  630. + audio = <&audio>,"status";
  631. + watchdog = <&watchdog>,"status";
  632. + random = <&random>,"status";
  633. + };
  634. +};
  635. --- /dev/null
  636. +++ b/arch/arm/boot/dts/bcm2708.dtsi
  637. @@ -0,0 +1,40 @@
  638. +#include "bcm2708_common.dtsi"
  639. +
  640. +/ {
  641. + compatible = "brcm,bcm2708";
  642. + model = "BCM2708";
  643. +
  644. + chosen {
  645. + /* No padding required - the boot loader can do that. */
  646. + bootargs = "";
  647. + };
  648. +
  649. + soc {
  650. + ranges = <0x7e000000 0x20000000 0x01000000>;
  651. +
  652. + timer@7e003000 {
  653. + compatible = "brcm,bcm2835-system-timer";
  654. + reg = <0x7e003000 0x1000>;
  655. + interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
  656. + clock-frequency = <1000000>;
  657. + };
  658. +
  659. + arm-pmu {
  660. + compatible = "arm,arm1176-pmu";
  661. + };
  662. +
  663. + gpiomem {
  664. + compatible = "brcm,bcm2835-gpiomem";
  665. + reg = <0x7e200000 0x1000>;
  666. + status = "okay";
  667. + };
  668. + };
  669. +};
  670. +
  671. +&intc {
  672. + compatible = "brcm,bcm2835-armctrl-ic";
  673. +};
  674. +
  675. +&watchdog {
  676. + status = "okay";
  677. +};
  678. --- /dev/null
  679. +++ b/arch/arm/boot/dts/bcm2708_common.dtsi
  680. @@ -0,0 +1,347 @@
  681. +#include "skeleton.dtsi"
  682. +
  683. +/ {
  684. + interrupt-parent = <&intc>;
  685. +
  686. + aliases {
  687. + audio = &audio;
  688. + sound = &sound;
  689. + soc = &soc;
  690. + dma = &dma;
  691. + intc = &intc;
  692. + watchdog = &watchdog;
  693. + random = &random;
  694. + mailbox = &mailbox;
  695. + gpio = &gpio;
  696. + uart0 = &uart0;
  697. + sdhost = &sdhost;
  698. + i2s = &i2s;
  699. + spi0 = &spi0;
  700. + i2c0 = &i2c0;
  701. + uart1 = &uart1;
  702. + mmc = &mmc;
  703. + i2c1 = &i2c1;
  704. + i2c2 = &i2c2;
  705. + usb = &usb;
  706. + leds = &leds;
  707. + fb = &fb;
  708. + vchiq = &vchiq;
  709. + thermal = &thermal;
  710. + clocks = &clocks;
  711. + };
  712. +
  713. + /* Onboard audio */
  714. + audio: audio {
  715. + compatible = "brcm,bcm2835-audio";
  716. + brcm,pwm-channels = <8>;
  717. + status = "disabled";
  718. + };
  719. +
  720. + /* External sound card */
  721. + sound: sound {
  722. + };
  723. +
  724. + soc: soc {
  725. + compatible = "simple-bus";
  726. + #address-cells = <1>;
  727. + #size-cells = <1>;
  728. +
  729. + dma: dma@7e007000 {
  730. + compatible = "brcm,bcm2835-dma";
  731. + reg = <0x7e007000 0xf00>;
  732. + interrupts = <1 16>,
  733. + <1 17>,
  734. + <1 18>,
  735. + <1 19>,
  736. + <1 20>,
  737. + <1 21>,
  738. + <1 22>,
  739. + <1 23>,
  740. + <1 24>,
  741. + <1 25>,
  742. + <1 26>,
  743. + <1 27>;
  744. +
  745. + #dma-cells = <1>;
  746. + brcm,dma-channel-mask = <0x0f35>;
  747. + };
  748. +
  749. + intc: interrupt-controller@7e00b200 {
  750. + compatible = "brcm,bcm2708-armctrl-ic";
  751. + reg = <0x7e00b200 0x200>;
  752. + interrupt-controller;
  753. + #interrupt-cells = <2>;
  754. + };
  755. +
  756. + mailbox: mailbox@7e00b800 {
  757. + compatible = "brcm,bcm2835-mbox";
  758. + reg = <0x7e00b880 0x40>;
  759. + interrupts = <0 1>;
  760. + #mbox-cells = <0>;
  761. + };
  762. +
  763. + watchdog: watchdog@7e100000 {
  764. + compatible = "brcm,bcm2835-pm-wdt";
  765. + reg = <0x7e100000 0x28>;
  766. + status = "disabled";
  767. + };
  768. +
  769. + cprman: cprman@7e101000 {
  770. + compatible = "brcm,bcm2835-cprman";
  771. + #clock-cells = <1>;
  772. + reg = <0x7e101000 0x2000>;
  773. +
  774. + /* CPRMAN derives everything from the platform's
  775. + * oscillator.
  776. + */
  777. + clocks = <&clk_osc>;
  778. + status = "disabled";
  779. + };
  780. +
  781. + random: rng@7e104000 {
  782. + compatible = "brcm,bcm2835-rng";
  783. + reg = <0x7e104000 0x10>;
  784. + status = "disabled";
  785. + };
  786. +
  787. + gpio: gpio@7e200000 {
  788. + compatible = "brcm,bcm2835-gpio";
  789. + reg = <0x7e200000 0xb4>;
  790. + interrupts = <2 17>, <2 18>;
  791. +
  792. + gpio-controller;
  793. + #gpio-cells = <2>;
  794. +
  795. + interrupt-controller;
  796. + #interrupt-cells = <2>;
  797. + };
  798. +
  799. + uart0: uart@7e201000 {
  800. + compatible = "arm,pl011", "arm,primecell";
  801. + reg = <0x7e201000 0x1000>;
  802. + interrupts = <2 25>;
  803. + clocks = <&clk_uart0 &clk_apb_p>;
  804. + clock-names = "uartclk","apb_pclk";
  805. + arm,primecell-periphid = <0x00241011>; // For an explanation, see
  806. + // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038
  807. + status = "disabled";
  808. + };
  809. +
  810. + sdhost: sdhost@7e202000 {
  811. + compatible = "brcm,bcm2835-sdhost";
  812. + reg = <0x7e202000 0x100>;
  813. + interrupts = <2 24>;
  814. + clocks = <&clk_core>;
  815. + dmas = <&dma 13>,
  816. + <&dma 13>;
  817. + dma-names = "tx", "rx";
  818. + brcm,pio-limit = <1>;
  819. + status = "disabled";
  820. + };
  821. +
  822. + i2s: i2s@7e203000 {
  823. + compatible = "brcm,bcm2835-i2s";
  824. + reg = <0x7e203000 0x24>,
  825. + <0x7e101098 0x08>;
  826. +
  827. + dmas = <&dma 2>, <&dma 3>;
  828. + dma-names = "tx", "rx";
  829. + status = "disabled";
  830. + };
  831. +
  832. + spi0: spi@7e204000 {
  833. + compatible = "brcm,bcm2835-spi";
  834. + reg = <0x7e204000 0x1000>;
  835. + interrupts = <2 22>;
  836. + clocks = <&clk_core>;
  837. + #address-cells = <1>;
  838. + #size-cells = <0>;
  839. + status = "disabled";
  840. + /* the dma channels */
  841. + dmas = <&dma 6>, <&dma 7>;
  842. + dma-names = "tx", "rx";
  843. + /* the chipselects used - <0> means native GPIO
  844. + * add more gpios if necessary as <&gpio 6 1>
  845. + * (but do not forget to make them output!)
  846. + */
  847. + cs-gpios = <0>, <0>;
  848. + };
  849. +
  850. + i2c0: i2c@7e205000 {
  851. + compatible = "brcm,bcm2708-i2c";
  852. + reg = <0x7e205000 0x1000>;
  853. + interrupts = <2 21>;
  854. + clocks = <&clk_core>;
  855. + #address-cells = <1>;
  856. + #size-cells = <0>;
  857. + status = "disabled";
  858. + };
  859. +
  860. + pwm: pwm@7e20c000 {
  861. + compatible = "brcm,bcm2835-pwm";
  862. + reg = <0x7e20c000 0x28>;
  863. + clocks = <&clk_pwm>;
  864. + #pwm-cells = <2>;
  865. + status = "disabled";
  866. + };
  867. +
  868. + uart1: uart@7e215040 {
  869. + compatible = "brcm,bcm2835-aux-uart", "ns16550";
  870. + reg = <0x7e215040 0x40>;
  871. + interrupts = <1 29>;
  872. + clocks = <&clk_uart1>;
  873. + reg-shift = <2>;
  874. + no-loopback-test;
  875. + status = "disabled";
  876. + };
  877. +
  878. + mmc: mmc@7e300000 {
  879. + compatible = "brcm,bcm2835-mmc";
  880. + reg = <0x7e300000 0x100>;
  881. + interrupts = <2 30>;
  882. + clocks = <&clk_mmc>;
  883. + dmas = <&dma 11>,
  884. + <&dma 11>;
  885. + dma-names = "tx", "rx";
  886. + status = "disabled";
  887. + };
  888. +
  889. + i2c1: i2c@7e804000 {
  890. + compatible = "brcm,bcm2708-i2c";
  891. + reg = <0x7e804000 0x1000>;
  892. + interrupts = <2 21>;
  893. + clocks = <&clk_core>;
  894. + #address-cells = <1>;
  895. + #size-cells = <0>;
  896. + status = "disabled";
  897. + };
  898. +
  899. + i2c2: i2c@7e805000 {
  900. + // Beware - this is shared with the HDMI module.
  901. + // Careless use may break (really) your display.
  902. + // Caveat emptor.
  903. + compatible = "brcm,bcm2708-i2c";
  904. + reg = <0x7e805000 0x1000>;
  905. + interrupts = <2 21>;
  906. + clocks = <&clk_core>;
  907. + #address-cells = <1>;
  908. + #size-cells = <0>;
  909. + status = "disabled";
  910. + };
  911. +
  912. + smi: smi@7e600000 {
  913. + compatible = "brcm,bcm2835-smi";
  914. + reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
  915. + interrupts = <2 16>;
  916. + brcm,smi-clock-source = <6>;
  917. + brcm,smi-clock-divisor = <4>;
  918. + dmas = <&dma 4>;
  919. + dma-names = "rx-tx";
  920. + status = "disabled";
  921. + };
  922. +
  923. + usb: usb@7e980000 {
  924. + compatible = "brcm,bcm2708-usb";
  925. + reg = <0x7e980000 0x10000>,
  926. + <0x7e006000 0x1000>;
  927. + interrupts = <2 0>,
  928. + <1 9>;
  929. + };
  930. +
  931. + firmware: firmware {
  932. + compatible = "raspberrypi,bcm2835-firmware";
  933. + mboxes = <&mailbox>;
  934. + };
  935. +
  936. + leds: leds {
  937. + compatible = "gpio-leds";
  938. + };
  939. +
  940. + fb: fb {
  941. + compatible = "brcm,bcm2708-fb";
  942. + firmware = <&firmware>;
  943. + status = "disabled";
  944. + };
  945. +
  946. + vchiq: vchiq {
  947. + compatible = "brcm,bcm2835-vchiq";
  948. + reg = <0x7e00b840 0xf>;
  949. + interrupts = <0 2>;
  950. + cache-line-size = <32>;
  951. + firmware = <&firmware>;
  952. + };
  953. +
  954. + thermal: thermal {
  955. + compatible = "brcm,bcm2835-thermal";
  956. + firmware = <&firmware>;
  957. + };
  958. + };
  959. +
  960. + clocks: clocks {
  961. + compatible = "simple-bus";
  962. + #address-cells = <1>;
  963. + #size-cells = <0>;
  964. +
  965. + clk_core: clock@0 {
  966. + compatible = "fixed-clock";
  967. + reg = <0>;
  968. + #clock-cells = <0>;
  969. + clock-output-names = "core";
  970. + clock-frequency = <250000000>;
  971. + };
  972. +
  973. + clk_mmc: clock@1 {
  974. + compatible = "fixed-clock";
  975. + reg = <1>;
  976. + #clock-cells = <0>;
  977. + clock-output-names = "mmc";
  978. + clock-frequency = <250000000>;
  979. + };
  980. +
  981. + clk_uart0: clock@2 {
  982. + compatible = "fixed-clock";
  983. + reg = <2>;
  984. + #clock-cells = <0>;
  985. + clock-output-names = "uart0_pclk";
  986. + clock-frequency = <3000000>;
  987. + };
  988. +
  989. + clk_apb_p: clock@3 {
  990. + compatible = "fixed-clock";
  991. + reg = <3>;
  992. + #clock-cells = <0>;
  993. + clock-output-names = "apb_pclk";
  994. + clock-frequency = <126000000>;
  995. + };
  996. +
  997. + clk_pwm: clock@4 {
  998. + compatible = "fixed-clock";
  999. + reg = <4>;
  1000. + #clock-cells = <0>;
  1001. + clock-output-names = "pwm";
  1002. + clock-frequency = <100000000>;
  1003. + };
  1004. +
  1005. + clk_uart1: clock@5 {
  1006. + compatible = "fixed-factor-clock";
  1007. + reg = <5>;
  1008. + clocks = <&clk_core>;
  1009. + #clock-cells = <0>;
  1010. + clock-div = <1>;
  1011. + clock-mult = <2>;
  1012. + };
  1013. +
  1014. + /* The oscillator is the root of the clock tree. */
  1015. + clk_osc: clock@6 {
  1016. + compatible = "fixed-clock";
  1017. + reg = <6>;
  1018. + #clock-cells = <0>;
  1019. + clock-output-names = "osc";
  1020. + clock-frequency = <19200000>;
  1021. + };
  1022. + };
  1023. +
  1024. + __overrides__ {
  1025. + cache_line_size = <&vchiq>, "cache-line-size:0";
  1026. + };
  1027. +};
  1028. --- /dev/null
  1029. +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
  1030. @@ -0,0 +1,145 @@
  1031. +/dts-v1/;
  1032. +
  1033. +#include "bcm2709.dtsi"
  1034. +
  1035. +/ {
  1036. + compatible = "brcm,bcm2709";
  1037. + model = "Raspberry Pi 2 Model B";
  1038. +};
  1039. +
  1040. +&gpio {
  1041. + sdhost_pins: sdhost_pins {
  1042. + brcm,pins = <48 49 50 51 52 53>;
  1043. + brcm,function = <4>; /* alt0 */
  1044. + };
  1045. +
  1046. + spi0_pins: spi0_pins {
  1047. + brcm,pins = <9 10 11>;
  1048. + brcm,function = <4>; /* alt0 */
  1049. + };
  1050. +
  1051. + spi0_cs_pins: spi0_cs_pins {
  1052. + brcm,pins = <8 7>;
  1053. + brcm,function = <1>; /* output */
  1054. + };
  1055. +
  1056. + i2c0_pins: i2c0 {
  1057. + brcm,pins = <0 1>;
  1058. + brcm,function = <4>;
  1059. + };
  1060. +
  1061. + i2c1_pins: i2c1 {
  1062. + brcm,pins = <2 3>;
  1063. + brcm,function = <4>;
  1064. + };
  1065. +
  1066. + i2s_pins: i2s {
  1067. + brcm,pins = <18 19 20 21>;
  1068. + brcm,function = <4>; /* alt0 */
  1069. + };
  1070. +};
  1071. +
  1072. +&sdhost {
  1073. + pinctrl-names = "default";
  1074. + pinctrl-0 = <&sdhost_pins>;
  1075. + bus-width = <4>;
  1076. + status = "okay";
  1077. +};
  1078. +
  1079. +&fb {
  1080. + status = "okay";
  1081. +};
  1082. +
  1083. +&uart0 {
  1084. + status = "okay";
  1085. +};
  1086. +
  1087. +&spi0 {
  1088. + pinctrl-names = "default";
  1089. + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
  1090. + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
  1091. +
  1092. + spidev@0{
  1093. + compatible = "spidev";
  1094. + reg = <0>; /* CE0 */
  1095. + #address-cells = <1>;
  1096. + #size-cells = <0>;
  1097. + spi-max-frequency = <500000>;
  1098. + };
  1099. +
  1100. + spidev@1{
  1101. + compatible = "spidev";
  1102. + reg = <1>; /* CE1 */
  1103. + #address-cells = <1>;
  1104. + #size-cells = <0>;
  1105. + spi-max-frequency = <500000>;
  1106. + };
  1107. +};
  1108. +
  1109. +&i2c0 {
  1110. + pinctrl-names = "default";
  1111. + pinctrl-0 = <&i2c0_pins>;
  1112. + clock-frequency = <100000>;
  1113. +};
  1114. +
  1115. +&i2c1 {
  1116. + pinctrl-names = "default";
  1117. + pinctrl-0 = <&i2c1_pins>;
  1118. + clock-frequency = <100000>;
  1119. +};
  1120. +
  1121. +&i2c2 {
  1122. + clock-frequency = <100000>;
  1123. +};
  1124. +
  1125. +&i2s {
  1126. + #sound-dai-cells = <0>;
  1127. + pinctrl-names = "default";
  1128. + pinctrl-0 = <&i2s_pins>;
  1129. +};
  1130. +
  1131. +&random {
  1132. + status = "okay";
  1133. +};
  1134. +
  1135. +&leds {
  1136. + act_led: act {
  1137. + label = "led0";
  1138. + linux,default-trigger = "mmc0";
  1139. + gpios = <&gpio 47 0>;
  1140. + };
  1141. +
  1142. + pwr_led: pwr {
  1143. + label = "led1";
  1144. + linux,default-trigger = "input";
  1145. + gpios = <&gpio 35 0>;
  1146. + };
  1147. +};
  1148. +
  1149. +/ {
  1150. + __overrides__ {
  1151. + uart0 = <&uart0>,"status";
  1152. + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
  1153. + i2s = <&i2s>,"status";
  1154. + spi = <&spi0>,"status";
  1155. + i2c0 = <&i2c0>,"status";
  1156. + i2c1 = <&i2c1>,"status";
  1157. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  1158. + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
  1159. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  1160. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  1161. + core_freq = <&clk_core>,"clock-frequency:0";
  1162. +
  1163. + act_led_gpio = <&act_led>,"gpios:4";
  1164. + act_led_activelow = <&act_led>,"gpios:8";
  1165. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1166. +
  1167. + pwr_led_gpio = <&pwr_led>,"gpios:4";
  1168. + pwr_led_activelow = <&pwr_led>,"gpios:8";
  1169. + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
  1170. +
  1171. + audio = <&audio>,"status";
  1172. + watchdog = <&watchdog>,"status";
  1173. + random = <&random>,"status";
  1174. + };
  1175. +};
  1176. --- /dev/null
  1177. +++ b/arch/arm/boot/dts/bcm2709.dtsi
  1178. @@ -0,0 +1,102 @@
  1179. +#include "bcm2708_common.dtsi"
  1180. +
  1181. +/ {
  1182. + compatible = "brcm,bcm2709";
  1183. + model = "BCM2709";
  1184. +
  1185. + chosen {
  1186. + /* No padding required - the boot loader can do that. */
  1187. + bootargs = "";
  1188. + };
  1189. +
  1190. + soc {
  1191. + ranges = <0x7e000000 0x3f000000 0x01000000>,
  1192. + <0x40000000 0x40000000 0x00040000>;
  1193. +
  1194. + local_intc: local_intc {
  1195. + compatible = "brcm,bcm2836-l1-intc";
  1196. + reg = <0x40000000 0x100>;
  1197. + interrupt-controller;
  1198. + #interrupt-cells = <1>;
  1199. + interrupt-parent = <&local_intc>;
  1200. + };
  1201. +
  1202. + arm-pmu {
  1203. + compatible = "arm,cortex-a7-pmu";
  1204. + interrupt-parent = <&local_intc>;
  1205. + interrupts = <9>;
  1206. + };
  1207. +
  1208. + gpiomem {
  1209. + compatible = "brcm,bcm2835-gpiomem";
  1210. + reg = <0x7e200000 0x1000>;
  1211. + status = "okay";
  1212. + };
  1213. +
  1214. + timer {
  1215. + compatible = "arm,armv7-timer";
  1216. + clock-frequency = <19200000>;
  1217. + interrupt-parent = <&local_intc>;
  1218. + interrupts = <0>, // PHYS_SECURE_PPI
  1219. + <1>, // PHYS_NONSECURE_PPI
  1220. + <3>, // VIRT_PPI
  1221. + <2>; // HYP_PPI
  1222. + always-on;
  1223. + };
  1224. +
  1225. + syscon@40000000 {
  1226. + compatible = "brcm,bcm2836-arm-local", "syscon";
  1227. + reg = <0x40000000 0x100>;
  1228. + };
  1229. + };
  1230. +
  1231. + cpus: cpus {
  1232. + #address-cells = <1>;
  1233. + #size-cells = <0>;
  1234. +
  1235. + v7_cpu0: cpu@0 {
  1236. + device_type = "cpu";
  1237. + compatible = "arm,cortex-a7";
  1238. + reg = <0xf00>;
  1239. + clock-frequency = <800000000>;
  1240. + };
  1241. +
  1242. + v7_cpu1: cpu@1 {
  1243. + device_type = "cpu";
  1244. + compatible = "arm,cortex-a7";
  1245. + reg = <0xf01>;
  1246. + clock-frequency = <800000000>;
  1247. + };
  1248. +
  1249. + v7_cpu2: cpu@2 {
  1250. + device_type = "cpu";
  1251. + compatible = "arm,cortex-a7";
  1252. + reg = <0xf02>;
  1253. + clock-frequency = <800000000>;
  1254. + };
  1255. +
  1256. + v7_cpu3: cpu@3 {
  1257. + device_type = "cpu";
  1258. + compatible = "arm,cortex-a7";
  1259. + reg = <0xf03>;
  1260. + clock-frequency = <800000000>;
  1261. + };
  1262. + };
  1263. +
  1264. + __overrides__ {
  1265. + arm_freq = <&v7_cpu0>, "clock-frequency:0",
  1266. + <&v7_cpu1>, "clock-frequency:0",
  1267. + <&v7_cpu2>, "clock-frequency:0",
  1268. + <&v7_cpu3>, "clock-frequency:0";
  1269. + };
  1270. +};
  1271. +
  1272. +&watchdog {
  1273. + status = "okay";
  1274. +};
  1275. +
  1276. +&intc {
  1277. + compatible = "brcm,bcm2836-armctrl-ic";
  1278. + interrupt-parent = <&local_intc>;
  1279. + interrupts = <8>;
  1280. +};
  1281. --- /dev/null
  1282. +++ b/arch/arm/boot/dts/bcm2835-rpi-cm.dts
  1283. @@ -0,0 +1,93 @@
  1284. +/dts-v1/;
  1285. +
  1286. +#include "bcm2835-rpi-cm.dtsi"
  1287. +
  1288. +/ {
  1289. + model = "Raspberry Pi Compute Module";
  1290. +};
  1291. +
  1292. +&uart0 {
  1293. + status = "okay";
  1294. +};
  1295. +
  1296. +&gpio {
  1297. + spi0_pins: spi0_pins {
  1298. + brcm,pins = <7 8 9 10 11>;
  1299. + brcm,function = <4>; /* alt0 */
  1300. + };
  1301. +
  1302. + i2c0_pins: i2c0 {
  1303. + brcm,pins = <0 1>;
  1304. + brcm,function = <4>;
  1305. + };
  1306. +
  1307. + i2c1_pins: i2c1 {
  1308. + brcm,pins = <2 3>;
  1309. + brcm,function = <4>;
  1310. + };
  1311. +
  1312. + i2s_pins: i2s {
  1313. + brcm,pins = <18 19 20 21>;
  1314. + brcm,function = <4>; /* alt0 */
  1315. + };
  1316. +};
  1317. +
  1318. +&spi0 {
  1319. + pinctrl-names = "default";
  1320. + pinctrl-0 = <&spi0_pins>;
  1321. +
  1322. + spidev@0{
  1323. + compatible = "spidev";
  1324. + reg = <0>; /* CE0 */
  1325. + #address-cells = <1>;
  1326. + #size-cells = <0>;
  1327. + spi-max-frequency = <500000>;
  1328. + };
  1329. +
  1330. + spidev@1{
  1331. + compatible = "spidev";
  1332. + reg = <1>; /* CE1 */
  1333. + #address-cells = <1>;
  1334. + #size-cells = <0>;
  1335. + spi-max-frequency = <500000>;
  1336. + };
  1337. +};
  1338. +
  1339. +&i2c0 {
  1340. + pinctrl-names = "default";
  1341. + pinctrl-0 = <&i2c0_pins>;
  1342. + clock-frequency = <100000>;
  1343. +};
  1344. +
  1345. +&i2c1 {
  1346. + pinctrl-names = "default";
  1347. + pinctrl-0 = <&i2c1_pins>;
  1348. + clock-frequency = <100000>;
  1349. +};
  1350. +
  1351. +&i2c2 {
  1352. + clock-frequency = <100000>;
  1353. +};
  1354. +
  1355. +&i2s {
  1356. + #sound-dai-cells = <0>;
  1357. + pinctrl-names = "default";
  1358. + pinctrl-0 = <&i2s_pins>;
  1359. +};
  1360. +
  1361. +/ {
  1362. + __overrides__ {
  1363. + uart0 = <&uart0>,"status";
  1364. + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
  1365. + uart1_clkrate = <&uart1>,"clock-frequency:0";
  1366. + i2s = <&i2s>,"status";
  1367. + spi = <&spi0>,"status";
  1368. + i2c0 = <&i2c0>,"status";
  1369. + i2c1 = <&i2c1>,"status";
  1370. + i2c2_iknowwhatimdoing = <&i2c2>,"status";
  1371. + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
  1372. + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
  1373. + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
  1374. + core_freq = <&clk_core>,"clock-frequency:0";
  1375. + };
  1376. +};
  1377. --- /dev/null
  1378. +++ b/arch/arm/boot/dts/bcm2835-rpi-cm.dtsi
  1379. @@ -0,0 +1,30 @@
  1380. +#include "bcm2835.dtsi"
  1381. +
  1382. +&leds {
  1383. + act_led: act {
  1384. + label = "led0";
  1385. + linux,default-trigger = "mmc0";
  1386. + gpios = <&gpio 47 0>;
  1387. + };
  1388. +};
  1389. +
  1390. +&mmc {
  1391. + status = "okay";
  1392. + bus-width = <4>;
  1393. +};
  1394. +
  1395. +&fb {
  1396. + status = "okay";
  1397. +};
  1398. +
  1399. +/ {
  1400. + __overrides__ {
  1401. + act_led_gpio = <&act_led>,"gpios:4";
  1402. + act_led_activelow = <&act_led>,"gpios:8";
  1403. + act_led_trigger = <&act_led>,"linux,default-trigger";
  1404. +
  1405. + audio = <&audio>,"status";
  1406. + watchdog = <&watchdog>,"status";
  1407. + random = <&random>,"status";
  1408. + };
  1409. +};
  1410. --- /dev/null
  1411. +++ b/arch/arm/boot/dts/overlays/Makefile
  1412. @@ -0,0 +1,69 @@
  1413. +ifeq ($(CONFIG_OF),y)
  1414. +
  1415. +# Overlays for the Raspberry Pi platform
  1416. +
  1417. +ifeq ($(CONFIG_ARCH_BCM2708),y)
  1418. + RPI_DT_OVERLAYS=y
  1419. +endif
  1420. +ifeq ($(CONFIG_ARCH_BCM2709),y)
  1421. + RPI_DT_OVERLAYS=y
  1422. +endif
  1423. +ifeq ($(CONFIG_ARCH_BCM2835),y)
  1424. + RPI_DT_OVERLAYS=y
  1425. +endif
  1426. +
  1427. +dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb
  1428. +dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb
  1429. +dtb-$(RPI_DT_OVERLAYS) += dht11-overlay.dtb
  1430. +dtb-$(RPI_DT_OVERLAYS) += enc28j60-overlay.dtb
  1431. +dtb-$(RPI_DT_OVERLAYS) += gpio-poweroff-overlay.dtb
  1432. +dtb-$(RPI_DT_OVERLAYS) += hifiberry-amp-overlay.dtb
  1433. +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dac-overlay.dtb
  1434. +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dacplus-overlay.dtb
  1435. +dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb
  1436. +dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb
  1437. +dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb
  1438. +dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb
  1439. +dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb
  1440. +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb
  1441. +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb
  1442. +dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb
  1443. +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb
  1444. +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can1-overlay.dtb
  1445. +dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
  1446. +dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
  1447. +dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
  1448. +dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb
  1449. +dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb
  1450. +dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb
  1451. +dtb-$(RPI_DT_OVERLAYS) += pwm-2chan-overlay.dtb
  1452. +dtb-$(RPI_DT_OVERLAYS) += raspidac3-overlay.dtb
  1453. +dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb
  1454. +dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb
  1455. +dtb-$(RPI_DT_OVERLAYS) += rpi-ft5406-overlay.dtb
  1456. +dtb-$(RPI_DT_OVERLAYS) += rpi-proto-overlay.dtb
  1457. +dtb-$(RPI_DT_OVERLAYS) += rpi-sense-overlay.dtb
  1458. +dtb-$(RPI_DT_OVERLAYS) += sdhost-overlay.dtb
  1459. +dtb-$(RPI_DT_OVERLAYS) += sdio-overlay.dtb
  1460. +dtb-$(RPI_DT_OVERLAYS) += smi-dev-overlay.dtb
  1461. +dtb-$(RPI_DT_OVERLAYS) += smi-nand-overlay.dtb
  1462. +dtb-$(RPI_DT_OVERLAYS) += smi-overlay.dtb
  1463. +dtb-$(RPI_DT_OVERLAYS) += spi-gpio35-39-overlay.dtb
  1464. +dtb-$(RPI_DT_OVERLAYS) += tinylcd35-overlay.dtb
  1465. +dtb-$(RPI_DT_OVERLAYS) += uart1-overlay.dtb
  1466. +dtb-$(RPI_DT_OVERLAYS) += vga666-overlay.dtb
  1467. +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb
  1468. +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-pullup-overlay.dtb
  1469. +
  1470. +targets += dtbs dtbs_install
  1471. +targets += $(dtb-y)
  1472. +
  1473. +endif
  1474. +
  1475. +always := $(dtb-y)
  1476. +clean-files := *.dtb
  1477. +
  1478. +# Enable fixups to support overlays on BCM2708 platforms
  1479. +ifeq ($(RPI_DT_OVERLAYS),y)
  1480. + DTC_FLAGS ?= -@
  1481. +endif
  1482. --- /dev/null
  1483. +++ b/arch/arm/boot/dts/overlays/README
  1484. @@ -0,0 +1,648 @@
  1485. +Introduction
  1486. +============
  1487. +
  1488. +This directory contains Device Tree overlays. Device Tree makes it possible
  1489. +to support many hardware configurations with a single kernel and without the
  1490. +need to explicitly load or blacklist kernel modules. Note that this isn't a
  1491. +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
  1492. +are still configured by the board support code, but the intention is to
  1493. +eventually reach that goal.
  1494. +
  1495. +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
  1496. +default, the Raspberry Pi kernel boots with device tree enabled. You can
  1497. +completely disable DT usage (for now) by adding:
  1498. +
  1499. + device_tree=
  1500. +
  1501. +to your config.txt, which should cause your Pi to revert to the old way of
  1502. +doing things after a reboot.
  1503. +
  1504. +In /boot you will find a .dtb for each base platform. This describes the
  1505. +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
  1506. +siblings) selects the .dtb file appropriate for the platform by name, and reads
  1507. +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
  1508. +are disabled, but they can be enabled using Device Tree parameters:
  1509. +
  1510. + dtparam=i2c=on,i2s=on,spi=on
  1511. +
  1512. +However, this shouldn't be necessary in many use cases because loading an
  1513. +overlay that requires one of those interfaces will cause it to be enabled
  1514. +automatically, and it is advisable to only enable interfaces if they are
  1515. +needed.
  1516. +
  1517. +Configuring additional, optional hardware is done using Device Tree overlays
  1518. +(see below).
  1519. +
  1520. +raspi-config
  1521. +============
  1522. +
  1523. +The Advanced Options section of the raspi-config utility can enable and disable
  1524. +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
  1525. +is possible to both enable an interface and blacklist the driver, if for some
  1526. +reason you should want to defer the loading.
  1527. +
  1528. +Modules
  1529. +=======
  1530. +
  1531. +As well as describing the hardware, Device Tree also gives enough information
  1532. +to allow suitable driver modules to be located and loaded, with the corollary
  1533. +that unneeded modules are not loaded. As a result it should be possible to
  1534. +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
  1535. +have its contents deleted (or commented out).
  1536. +
  1537. +Using Overlays
  1538. +==============
  1539. +
  1540. +Overlays are loaded using the "dtoverlay" directive. As an example, consider the
  1541. +popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
  1542. +pre-DT world this would be loaded from /etc/modules, with an explicit
  1543. +"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
  1544. +this becomes a line in config.txt:
  1545. +
  1546. + dtoverlay=lirc-rpi
  1547. +
  1548. +This causes the file /boot/overlays/lirc-rpi-overlay.dtb to be loaded. By
  1549. +default it will use GPIOs 17 (out) and 18 (in), but this can be modified using
  1550. +DT parameters:
  1551. +
  1552. + dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13
  1553. +
  1554. +Parameters always have default values, although in some cases (e.g. "w1-gpio")
  1555. +it is necessary to provided multiple overlays in order to get the desired
  1556. +behaviour. See the list of overlays below for a description of the parameters and their defaults.
  1557. +
  1558. +The Overlay and Parameter Reference
  1559. +===================================
  1560. +
  1561. +N.B. When editing this file, please preserve the indentation levels to make it simple to parse
  1562. +programmatically. NO HARD TABS.
  1563. +
  1564. +
  1565. +Name: <The base DTB>
  1566. +Info: Configures the base Raspberry Pi hardware
  1567. +Load: <loaded automatically>
  1568. +Params:
  1569. + audio Set to "on" to enable the onboard ALSA audio
  1570. + interface (default "off")
  1571. +
  1572. + i2c_arm Set to "on" to enable the ARM's i2c interface
  1573. + (default "off")
  1574. +
  1575. + i2c_vc Set to "on" to enable the i2c interface
  1576. + usually reserved for the VideoCore processor
  1577. + (default "off")
  1578. +
  1579. + i2c An alias for i2c_arm
  1580. +
  1581. + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
  1582. + (default "100000")
  1583. +
  1584. + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
  1585. + (default "100000")
  1586. +
  1587. + i2c_baudrate An alias for i2c_arm_baudrate
  1588. +
  1589. + i2s Set to "on" to enable the i2s interface
  1590. + (default "off")
  1591. +
  1592. + spi Set to "on" to enable the spi interfaces
  1593. + (default "off")
  1594. +
  1595. + random Set to "on" to enable the hardware random
  1596. + number generator (default "on")
  1597. +
  1598. + uart0 Set to "off" to disable uart0 (default "on")
  1599. +
  1600. + watchdog Set to "on" to enable the hardware watchdog
  1601. + (default "off")
  1602. +
  1603. + act_led_trigger Choose which activity the LED tracks.
  1604. + Use "heartbeat" for a nice load indicator.
  1605. + (default "mmc")
  1606. +
  1607. + act_led_activelow Set to "on" to invert the sense of the LED
  1608. + (default "off")
  1609. +
  1610. + act_led_gpio Set which GPIO to use for the activity LED
  1611. + (in case you want to connect it to an external
  1612. + device)
  1613. + (default "16" on a non-Plus board, "47" on a
  1614. + Plus or Pi 2)
  1615. +
  1616. + pwr_led_trigger
  1617. + pwr_led_activelow
  1618. + pwr_led_gpio
  1619. + As for act_led_*, but using the PWR LED.
  1620. + Not available on Model A/B boards.
  1621. +
  1622. + N.B. It is recommended to only enable those interfaces that are needed.
  1623. + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
  1624. + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
  1625. + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
  1626. + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
  1627. + but deprecated because the ARM/VC assignments differ between board
  1628. + revisions. The same board-specific mapping applies to i2c_baudrate,
  1629. + and the other i2c baudrate parameters.
  1630. +
  1631. +
  1632. +Name: ads7846
  1633. +Info: ADS7846 Touch controller
  1634. +Load: dtoverlay=ads7846,<param>=<val>
  1635. +Params: cs SPI bus Chip Select (default 1)
  1636. + speed SPI bus speed (default 2Mhz, max 3.25MHz)
  1637. + penirq GPIO used for PENIRQ. REQUIRED
  1638. + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
  1639. + swapxy Swap x and y axis
  1640. + xmin Minimum value on the X axis (default 0)
  1641. + ymin Minimum value on the Y axis (default 0)
  1642. + xmax Maximum value on the X axis (default 4095)
  1643. + ymax Maximum value on the Y axis (default 4095)
  1644. + pmin Minimum reported pressure value (default 0)
  1645. + pmax Maximum reported pressure value (default 65535)
  1646. + xohms Touchpanel sensitivity (X-plate resistance)
  1647. + (default 400)
  1648. +
  1649. + penirq is required and usually xohms (60-100) has to be set as well.
  1650. + Apart from that, pmax (255) and swapxy are also common.
  1651. + The rest of the calibration can be done with xinput-calibrator.
  1652. + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
  1653. + Device Tree binding document:
  1654. + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
  1655. +
  1656. +
  1657. +Name: bmp085_i2c-sensor
  1658. +Info: Configures the BMP085/BMP180 digital barometric pressure and temperature
  1659. + sensors from Bosch Sensortec
  1660. +Load: dtoverlay=bmp085_i2c-sensor
  1661. +Params: <None>
  1662. +
  1663. +
  1664. +Name: dht11
  1665. +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
  1666. + Also sometimes found with the part number(s) AM230x.
  1667. +Load: dtoverlay=dht11,<param>=<val>
  1668. +Params: gpiopin GPIO connected to the sensor's DATA output.
  1669. + (default 4)
  1670. +
  1671. +
  1672. +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
  1673. +
  1674. +
  1675. +Name: enc28j60
  1676. +Info: Overlay for the Microchip ENC28J60 Ethernet Controller (SPI)
  1677. +Load: dtoverlay=enc28j60,<param>=<val>
  1678. +Params: int_pin GPIO used for INT (default 25)
  1679. +
  1680. + speed SPI bus speed (default 12000000)
  1681. +
  1682. +
  1683. +Name: gpio-poweroff
  1684. +Info: Drives a GPIO high or low on reboot
  1685. +Load: dtoverlay=gpio-poweroff,<param>=<val>
  1686. +Params: gpiopin GPIO for signalling (default 26)
  1687. +
  1688. + active_low Set if the power control device requires a
  1689. + high->low transition to trigger a power-down.
  1690. + Note that this will require the support of a
  1691. + custom dt-blob.bin to prevent a power-down
  1692. + during the boot process, and that a reboot
  1693. + will also cause the pin to go low.
  1694. +
  1695. +
  1696. +Name: hifiberry-amp
  1697. +Info: Configures the HifiBerry Amp and Amp+ audio cards
  1698. +Load: dtoverlay=hifiberry-amp
  1699. +Params: <None>
  1700. +
  1701. +
  1702. +Name: hifiberry-dac
  1703. +Info: Configures the HifiBerry DAC audio card
  1704. +Load: dtoverlay=hifiberry-dac
  1705. +Params: <None>
  1706. +
  1707. +
  1708. +Name: hifiberry-dacplus
  1709. +Info: Configures the HifiBerry DAC+ audio card
  1710. +Load: dtoverlay=hifiberry-dacplus
  1711. +Params: <None>
  1712. +
  1713. +
  1714. +Name: hifiberry-digi
  1715. +Info: Configures the HifiBerry Digi audio card
  1716. +Load: dtoverlay=hifiberry-digi
  1717. +Params: <None>
  1718. +
  1719. +
  1720. +Name: hy28a
  1721. +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
  1722. + Default values match Texy's display shield
  1723. +Load: dtoverlay=hy28a,<param>=<val>
  1724. +Params: speed Display SPI bus speed
  1725. +
  1726. + rotate Display rotation {0,90,180,270}
  1727. +
  1728. + fps Delay between frame updates
  1729. +
  1730. + debug Debug output level {0-7}
  1731. +
  1732. + xohms Touchpanel sensitivity (X-plate resistance)
  1733. +
  1734. + resetgpio GPIO used to reset controller
  1735. +
  1736. + ledgpio GPIO used to control backlight
  1737. +
  1738. +
  1739. +Name: hy28b
  1740. +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
  1741. + Default values match Texy's display shield
  1742. +Load: dtoverlay=hy28b,<param>=<val>
  1743. +Params: speed Display SPI bus speed
  1744. +
  1745. + rotate Display rotation {0,90,180,270}
  1746. +
  1747. + fps Delay between frame updates
  1748. +
  1749. + debug Debug output level {0-7}
  1750. +
  1751. + xohms Touchpanel sensitivity (X-plate resistance)
  1752. +
  1753. + resetgpio GPIO used to reset controller
  1754. +
  1755. + ledgpio GPIO used to control backlight
  1756. +
  1757. +
  1758. +Name: i2c-rtc
  1759. +Info: Adds support for a number of I2C Real Time Clock devices
  1760. +Load: dtoverlay=i2c-rtc,<param>
  1761. +Params: ds1307 Select the DS1307 device
  1762. +
  1763. + ds3231 Select the DS3231 device
  1764. +
  1765. + mcp7941x Select the MCP7941x device
  1766. +
  1767. + pcf2127 Select the PCF2127 device
  1768. +
  1769. + pcf8523 Select the PCF8523 device
  1770. +
  1771. + pcf8563 Select the PCF8563 device
  1772. +
  1773. +
  1774. +Name: i2s-mmap
  1775. +Info: Enables mmap support in the bcm2708-i2s driver
  1776. +Load: dtoverlay=i2s-mmap
  1777. +Params: <None>
  1778. +
  1779. +
  1780. +Name: iqaudio-dac
  1781. +Info: Configures the IQaudio DAC audio card
  1782. +Load: dtoverlay=iqaudio-dac
  1783. +Params: <None>
  1784. +
  1785. +
  1786. +Name: iqaudio-dacplus
  1787. +Info: Configures the IQaudio DAC+ audio card
  1788. +Load: dtoverlay=iqaudio-dacplus
  1789. +Params: <None>
  1790. +
  1791. +
  1792. +Name: lirc-rpi
  1793. +Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi)
  1794. + Consult the module documentation for more details.
  1795. +Load: dtoverlay=lirc-rpi,<param>=<val>,...
  1796. +Params: gpio_out_pin GPIO for output (default "17")
  1797. +
  1798. + gpio_in_pin GPIO for input (default "18")
  1799. +
  1800. + gpio_in_pull Pull up/down/off on the input pin
  1801. + (default "down")
  1802. +
  1803. + sense Override the IR receive auto-detection logic:
  1804. + "0" = force active-high
  1805. + "1" = force active-low
  1806. + "-1" = use auto-detection
  1807. + (default "-1")
  1808. +
  1809. + softcarrier Turn the software carrier "on" or "off"
  1810. + (default "on")
  1811. +
  1812. + invert "on" = invert the output pin (default "off")
  1813. +
  1814. + debug "on" = enable additional debug messages
  1815. + (default "off")
  1816. +
  1817. +
  1818. +Name: mcp2515-can0
  1819. +Info: Configures the MCP2515 CAN controller on spi0.0
  1820. +Load: dtoverlay=mcp2515-can0,<param>=<val>
  1821. +Params: oscillator Clock frequency for the CAN controller (Hz)
  1822. +
  1823. + spimaxfrequency Maximum SPI frequence (Hz)
  1824. +
  1825. + interrupt GPIO for interrupt signal
  1826. +
  1827. +
  1828. +Name: mcp2515-can1
  1829. +Info: Configures the MCP2515 CAN controller on spi0.1
  1830. +Load: dtoverlay=mcp2515-can1,<param>=<val>
  1831. +Params: oscillator Clock frequency for the CAN controller (Hz)
  1832. +
  1833. + spimaxfrequency Maximum SPI frequence (Hz)
  1834. +
  1835. + interrupt GPIO for interrupt signal
  1836. +
  1837. +
  1838. +Name: mmc
  1839. +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
  1840. +Load: dtoverlay=mmc,<param>=<val>
  1841. +Params: overclock_50 Clock (in MHz) to use when the MMC framework
  1842. + requests 50MHz
  1843. + force_pio Disable DMA support
  1844. +
  1845. +
  1846. +Name: mz61581
  1847. +Info: MZ61581 display by Tontec
  1848. +Load: dtoverlay=mz61581,<param>=<val>
  1849. +Params: speed Display SPI bus speed
  1850. +
  1851. + rotate Display rotation {0,90,180,270}
  1852. +
  1853. + fps Delay between frame updates
  1854. +
  1855. + txbuflen Transmit buffer length (default 32768)
  1856. +
  1857. + debug Debug output level {0-7}
  1858. +
  1859. + xohms Touchpanel sensitivity (X-plate resistance)
  1860. +
  1861. +
  1862. +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
  1863. +
  1864. +
  1865. +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
  1866. +
  1867. +
  1868. +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
  1869. +
  1870. +
  1871. +Name: piscreen
  1872. +Info: PiScreen display by OzzMaker.com
  1873. +Load: dtoverlay=piscreen,<param>=<val>
  1874. +Params: speed Display SPI bus speed
  1875. +
  1876. + rotate Display rotation {0,90,180,270}
  1877. +
  1878. + fps Delay between frame updates
  1879. +
  1880. + debug Debug output level {0-7}
  1881. +
  1882. + xohms Touchpanel sensitivity (X-plate resistance)
  1883. +
  1884. +
  1885. +Name: pitft28-resistive
  1886. +Info: Adafruit PiTFT 2.8" resistive touch screen
  1887. +Load: dtoverlay=pitft28-resistive,<param>=<val>
  1888. +Params: speed Display SPI bus speed
  1889. +
  1890. + rotate Display rotation {0,90,180,270}
  1891. +
  1892. + fps Delay between frame updates
  1893. +
  1894. + debug Debug output level {0-7}
  1895. +
  1896. +
  1897. +Name: pps-gpio
  1898. +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
  1899. +Load: dtoverlay=pps-gpio,<param>=<val>
  1900. +Params: gpiopin Input GPIO (default "18")
  1901. +
  1902. +
  1903. +Name: pwm
  1904. +Info: Configures a single PWM channel
  1905. + Legal pin,function combinations for each channel:
  1906. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  1907. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  1908. + N.B.:
  1909. + 1) Pin 18 is the only one available on all platforms, and
  1910. + it is the one used by the I2S audio interface.
  1911. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  1912. + 2) The onboard analogue audio output uses both PWM channels.
  1913. + 3) So be careful mixing audio and PWM.
  1914. + 4) Currently the clock must have been enabled and configured
  1915. + by other means.
  1916. +Load: dtoverlay=pwm,<param>=<val>
  1917. +Params: pin Output pin (default 18) - see table
  1918. + func Pin function (default 2 = Alt5) - see above
  1919. + clock PWM clock frequency (informational)
  1920. +
  1921. +
  1922. +Name: pwm-2chan
  1923. +Info: Configures both PWM channels
  1924. + Legal pin,function combinations for each channel:
  1925. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  1926. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  1927. + N.B.:
  1928. + 1) Pin 18 is the only one available on all platforms, and
  1929. + it is the one used by the I2S audio interface.
  1930. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  1931. + 2) The onboard analogue audio output uses both PWM channels.
  1932. + 3) So be careful mixing audio and PWM.
  1933. + 4) Currently the clock must have been enabled and configured
  1934. + by other means.
  1935. +Load: dtoverlay=pwm-2chan,<param>=<val>
  1936. +Params: pin Output pin (default 18) - see table
  1937. + pin2 Output pin for other channel (default 19)
  1938. + func Pin function (default 2 = Alt5) - see above
  1939. + func2 Function for pin2 (default 2 = Alt5)
  1940. + clock PWM clock frequency (informational)
  1941. +
  1942. +
  1943. +Name: raspidac3
  1944. +Info: Configures the RaspiDAV Rev.3x audio card
  1945. +Load: dtoverlay=raspidac3
  1946. +Params: <None>
  1947. +
  1948. +
  1949. +Name: rpi-dac
  1950. +Info: Configures the RPi DAC audio card
  1951. +Load: dtoverlay=rpi-dac
  1952. +Params: <None>
  1953. +
  1954. +
  1955. +Name: rpi-display
  1956. +Info: RPi-Display - 2.8" Touch Display by Watterott
  1957. +Load: dtoverlay=rpi-display,<param>=<val>
  1958. +Params: speed Display SPI bus speed
  1959. +
  1960. + rotate Display rotation {0,90,180,270}
  1961. +
  1962. + fps Delay between frame updates
  1963. +
  1964. + debug Debug output level {0-7}
  1965. +
  1966. + xohms Touchpanel sensitivity (X-plate resistance)
  1967. +
  1968. +
  1969. +Name: rpi-ft5406
  1970. +Info: Official Raspberry Pi display touchscreen
  1971. +Load: dtoverlay=rpi-ft5406
  1972. +Params: <None>
  1973. +
  1974. +
  1975. +Name: rpi-proto
  1976. +Info: Configures the RPi Proto audio card
  1977. +Load: dtoverlay=rpi-proto
  1978. +Params: <None>
  1979. +
  1980. +
  1981. +Name: rpi-sense
  1982. +Info: Raspberry Pi Sense HAT
  1983. +Load: dtoverlay=rpi-sense
  1984. +Params: <None>
  1985. +
  1986. +
  1987. +Name: sdhost
  1988. +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock
  1989. +Load: dtoverlay=sdhost,<param>=<val>
  1990. +Params: overclock_50 Clock (in MHz) to use when the MMC framework
  1991. + requests 50MHz
  1992. +
  1993. + force_pio Disable DMA support (default off)
  1994. +
  1995. + pio_limit Number of blocks above which to use DMA
  1996. + (default 1)
  1997. +
  1998. + debug Enable debug output (default off)
  1999. +
  2000. +
  2001. +Name: sdio
  2002. +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
  2003. + and enables SDIO via GPIOs 22-27.
  2004. +Load: dtoverlay=sdio,<param>=<val>
  2005. +Params: overclock_50 Clock (in MHz) to use when the MMC framework
  2006. + requests 50MHz
  2007. +
  2008. + force_pio Disable DMA support (default off)
  2009. +
  2010. + pio_limit Number of blocks above which to use DMA
  2011. + (default 1)
  2012. +
  2013. + debug Enable debug output (default off)
  2014. +
  2015. + poll_once Disable SDIO-device polling every second
  2016. + (default on: polling once at boot-time)
  2017. +
  2018. +
  2019. +Name: smi
  2020. +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
  2021. +Load: dtoverlay=smi
  2022. +Params: <None>
  2023. +
  2024. +
  2025. +Name: smi-dev
  2026. +Info: Enables the userspace interface for the SMI driver
  2027. +Load: dtoverlay=smi-dev
  2028. +Params: <None>
  2029. +
  2030. +
  2031. +Name: smi-nand
  2032. +Info: Enables access to NAND flash via the SMI interface
  2033. +Load: dtoverlay=smi-nand
  2034. +Params: <None>
  2035. +
  2036. +
  2037. +Name: spi-gpio35-39
  2038. +Info: move SPI function block to GPIO 35 to 39
  2039. +Load: dtoverlay=spi-gpio35-39
  2040. +Params: <None>
  2041. +
  2042. +
  2043. +Name: tinylcd35
  2044. +Info: 3.5" Color TFT Display by www.tinylcd.com
  2045. + Options: Touch, RTC, keypad
  2046. +Load: dtoverlay=tinylcd35,<param>=<val>
  2047. +Params: speed Display SPI bus speed
  2048. +
  2049. + rotate Display rotation {0,90,180,270}
  2050. +
  2051. + fps Delay between frame updates
  2052. +
  2053. + debug Debug output level {0-7}
  2054. +
  2055. + touch Enable touch panel
  2056. +
  2057. + touchgpio Touch controller IRQ GPIO
  2058. +
  2059. + xohms Touchpanel: Resistance of X-plate in ohms
  2060. +
  2061. + rtc-pcf PCF8563 Real Time Clock
  2062. +
  2063. + rtc-ds DS1307 Real Time Clock
  2064. +
  2065. + keypad Enable keypad
  2066. +
  2067. + Examples:
  2068. + Display with touchpanel, PCF8563 RTC and keypad:
  2069. + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
  2070. + Old touch display:
  2071. + dtoverlay=tinylcd35,touch,touchgpio=3
  2072. +
  2073. +
  2074. +Name: uart1
  2075. +Info: Enable uart1 in place of uart0
  2076. +Load: dtoverlay=uart1,<param>=<val>
  2077. +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
  2078. +
  2079. + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
  2080. +
  2081. +
  2082. +Name: vga666
  2083. +Info: Overlay for the Fen Logic VGA666 board
  2084. + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds
  2085. + after the kernel has started.
  2086. +Load: dtoverlay=vga666
  2087. +Params: <None>
  2088. +
  2089. +
  2090. +Name: w1-gpio
  2091. +Info: Configures the w1-gpio Onewire interface module.
  2092. + Use this overlay if you *don't* need a GPIO to drive an external pullup.
  2093. +Load: dtoverlay=w1-gpio,<param>=<val>
  2094. +Params: gpiopin GPIO for I/O (default "4")
  2095. +
  2096. + pullup Non-zero, "on", or "y" to enable the parasitic
  2097. + power (2-wire, power-on-data) feature
  2098. +
  2099. +
  2100. +Name: w1-gpio-pullup
  2101. +Info: Configures the w1-gpio Onewire interface module.
  2102. + Use this overlay if you *do* need a GPIO to drive an external pullup.
  2103. +Load: dtoverlay=w1-gpio-pullup,<param>=<val>
  2104. +Params: gpiopin GPIO for I/O (default "4")
  2105. +
  2106. + pullup Non-zero, "on", or "y" to enable the parasitic
  2107. + power (2-wire, power-on-data) feature
  2108. +
  2109. + extpullup GPIO for external pullup (default "5")
  2110. +
  2111. +
  2112. +Troubleshooting
  2113. +===============
  2114. +
  2115. +If you are experiencing problems that you think are DT-related, enable DT
  2116. +diagnostic output by adding this to /boot/config.txt:
  2117. +
  2118. + dtdebug=on
  2119. +
  2120. +and rebooting. Then run:
  2121. +
  2122. + sudo vcdbg log msg
  2123. +
  2124. +and look for relevant messages.
  2125. +
  2126. +Further reading
  2127. +===============
  2128. +
  2129. +This is only meant to be a quick introduction to the subject of Device Tree on
  2130. +Raspberry Pi. There is a more complete explanation here:
  2131. +
  2132. +http://www.raspberrypi.org/documentation/configuration/device-tree.md
  2133. --- /dev/null
  2134. +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
  2135. @@ -0,0 +1,83 @@
  2136. +/*
  2137. + * Generic Device Tree overlay for the ADS7846 touch controller
  2138. + *
  2139. + */
  2140. +
  2141. +/dts-v1/;
  2142. +/plugin/;
  2143. +
  2144. +/ {
  2145. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  2146. +
  2147. + fragment@0 {
  2148. + target = <&spi0>;
  2149. + __overlay__ {
  2150. + status = "okay";
  2151. +
  2152. + spidev@0{
  2153. + status = "disabled";
  2154. + };
  2155. +
  2156. + spidev@1{
  2157. + status = "disabled";
  2158. + };
  2159. + };
  2160. + };
  2161. +
  2162. + fragment@1 {
  2163. + target = <&gpio>;
  2164. + __overlay__ {
  2165. + ads7846_pins: ads7846_pins {
  2166. + brcm,pins = <255>; /* illegal default value */
  2167. + brcm,function = <0>; /* in */
  2168. + brcm,pull = <0>; /* none */
  2169. + };
  2170. + };
  2171. + };
  2172. +
  2173. + fragment@2 {
  2174. + target = <&spi0>;
  2175. + __overlay__ {
  2176. + /* needed to avoid dtc warning */
  2177. + #address-cells = <1>;
  2178. + #size-cells = <0>;
  2179. +
  2180. + ads7846: ads7846@1 {
  2181. + compatible = "ti,ads7846";
  2182. + reg = <1>;
  2183. + pinctrl-names = "default";
  2184. + pinctrl-0 = <&ads7846_pins>;
  2185. +
  2186. + spi-max-frequency = <2000000>;
  2187. + interrupts = <255 2>; /* high-to-low edge triggered */
  2188. + interrupt-parent = <&gpio>;
  2189. + pendown-gpio = <&gpio 255 0>;
  2190. +
  2191. + /* driver defaults */
  2192. + ti,x-min = /bits/ 16 <0>;
  2193. + ti,y-min = /bits/ 16 <0>;
  2194. + ti,x-max = /bits/ 16 <0x0FFF>;
  2195. + ti,y-max = /bits/ 16 <0x0FFF>;
  2196. + ti,pressure-min = /bits/ 16 <0>;
  2197. + ti,pressure-max = /bits/ 16 <0xFFFF>;
  2198. + ti,x-plate-ohms = /bits/ 16 <400>;
  2199. + };
  2200. + };
  2201. + };
  2202. + __overrides__ {
  2203. + cs = <&ads7846>,"reg:0";
  2204. + speed = <&ads7846>,"spi-max-frequency:0";
  2205. + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
  2206. + <&ads7846>,"interrupts:0",
  2207. + <&ads7846>,"pendown-gpio:4";
  2208. + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
  2209. + swapxy = <&ads7846>,"ti,swap-xy?";
  2210. + xmin = <&ads7846>,"ti,x-min;0";
  2211. + ymin = <&ads7846>,"ti,y-min;0";
  2212. + xmax = <&ads7846>,"ti,x-max;0";
  2213. + ymax = <&ads7846>,"ti,y-max;0";
  2214. + pmin = <&ads7846>,"ti,pressure-min;0";
  2215. + pmax = <&ads7846>,"ti,pressure-max;0";
  2216. + xohms = <&ads7846>,"ti,x-plate-ohms;0";
  2217. + };
  2218. +};
  2219. --- /dev/null
  2220. +++ b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
  2221. @@ -0,0 +1,23 @@
  2222. +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec
  2223. +/dts-v1/;
  2224. +/plugin/;
  2225. +
  2226. +/ {
  2227. + compatible = "brcm,bcm2708";
  2228. +
  2229. + fragment@0 {
  2230. + target = <&i2c_arm>;
  2231. + __overlay__ {
  2232. + #address-cells = <1>;
  2233. + #size-cells = <0>;
  2234. + status = "okay";
  2235. +
  2236. + bmp085@77 {
  2237. + compatible = "bosch,bmp085";
  2238. + reg = <0x77>;
  2239. + default-oversampling = <3>;
  2240. + status = "okay";
  2241. + };
  2242. + };
  2243. + };
  2244. +};
  2245. --- /dev/null
  2246. +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
  2247. @@ -0,0 +1,39 @@
  2248. +/*
  2249. + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
  2250. + */
  2251. +/dts-v1/;
  2252. +/plugin/;
  2253. +
  2254. +/ {
  2255. + compatible = "brcm,bcm2708";
  2256. +
  2257. + fragment@0 {
  2258. + target-path = "/";
  2259. + __overlay__ {
  2260. +
  2261. + dht11: dht11@0 {
  2262. + compatible = "dht11";
  2263. + pinctrl-names = "default";
  2264. + pinctrl-0 = <&dht11_pins>;
  2265. + gpios = <&gpio 4 0>;
  2266. + status = "okay";
  2267. + };
  2268. + };
  2269. + };
  2270. +
  2271. + fragment@1 {
  2272. + target = <&gpio>;
  2273. + __overlay__ {
  2274. + dht11_pins: dht11_pins {
  2275. + brcm,pins = <4>;
  2276. + brcm,function = <0>; // in
  2277. + brcm,pull = <0>; // off
  2278. + };
  2279. + };
  2280. + };
  2281. +
  2282. + __overrides__ {
  2283. + gpiopin = <&dht11_pins>,"brcm,pins:0",
  2284. + <&dht11>,"gpios:4";
  2285. + };
  2286. +};
  2287. --- /dev/null
  2288. +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
  2289. @@ -0,0 +1,50 @@
  2290. +// Overlay for the Microchip ENC28J60 Ethernet Controller
  2291. +/dts-v1/;
  2292. +/plugin/;
  2293. +
  2294. +/ {
  2295. + compatible = "brcm,bcm2708";
  2296. +
  2297. + fragment@0 {
  2298. + target = <&spi0>;
  2299. + __overlay__ {
  2300. + /* needed to avoid dtc warning */
  2301. + #address-cells = <1>;
  2302. + #size-cells = <0>;
  2303. +
  2304. + status = "okay";
  2305. +
  2306. + spidev@0{
  2307. + status = "disabled";
  2308. + };
  2309. +
  2310. + eth1: enc28j60@0{
  2311. + compatible = "microchip,enc28j60";
  2312. + reg = <0>; /* CE0 */
  2313. + pinctrl-names = "default";
  2314. + pinctrl-0 = <&eth1_pins>;
  2315. + interrupt-parent = <&gpio>;
  2316. + interrupts = <25 0x2>; /* falling edge */
  2317. + spi-max-frequency = <12000000>;
  2318. + status = "okay";
  2319. + };
  2320. + };
  2321. + };
  2322. +
  2323. + fragment@1 {
  2324. + target = <&gpio>;
  2325. + __overlay__ {
  2326. + eth1_pins: eth1_pins {
  2327. + brcm,pins = <25>;
  2328. + brcm,function = <0>; /* in */
  2329. + brcm,pull = <0>; /* none */
  2330. + };
  2331. + };
  2332. + };
  2333. +
  2334. + __overrides__ {
  2335. + int_pin = <&eth1>, "interrupts:0",
  2336. + <&eth1_pins>, "brcm,pins:0";
  2337. + speed = <&eth1>, "spi-max-frequency:0";
  2338. + };
  2339. +};
  2340. --- /dev/null
  2341. +++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
  2342. @@ -0,0 +1,34 @@
  2343. +// Definitions for gpio-poweroff module
  2344. +/dts-v1/;
  2345. +/plugin/;
  2346. +
  2347. +/ {
  2348. + compatible = "brcm,bcm2708";
  2349. +
  2350. + fragment@0 {
  2351. + target-path = "/";
  2352. + __overlay__ {
  2353. + power_ctrl: power_ctrl {
  2354. + compatible = "gpio-poweroff";
  2355. + gpios = <&gpio 26 0>;
  2356. + force;
  2357. + };
  2358. + };
  2359. + };
  2360. +
  2361. + fragment@1 {
  2362. + target = <&gpio>;
  2363. + __overlay__ {
  2364. + power_ctrl_pins: power_ctrl_pins {
  2365. + brcm,pins = <26>;
  2366. + brcm,function = <1>; // out
  2367. + };
  2368. + };
  2369. + };
  2370. +
  2371. + __overrides__ {
  2372. + gpiopin = <&power_ctrl>,"gpios:4",
  2373. + <&power_ctrl_pins>,"brcm,pins:0";
  2374. + active_low = <&power_ctrl>,"gpios:8";
  2375. + };
  2376. +};
  2377. --- /dev/null
  2378. +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
  2379. @@ -0,0 +1,39 @@
  2380. +// Definitions for HiFiBerry Amp/Amp+
  2381. +/dts-v1/;
  2382. +/plugin/;
  2383. +
  2384. +/ {
  2385. + compatible = "brcm,bcm2708";
  2386. +
  2387. + fragment@0 {
  2388. + target = <&sound>;
  2389. + __overlay__ {
  2390. + compatible = "hifiberry,hifiberry-amp";
  2391. + i2s-controller = <&i2s>;
  2392. + status = "okay";
  2393. + };
  2394. + };
  2395. +
  2396. + fragment@1 {
  2397. + target = <&i2s>;
  2398. + __overlay__ {
  2399. + status = "okay";
  2400. + };
  2401. + };
  2402. +
  2403. + fragment@2 {
  2404. + target = <&i2c1>;
  2405. + __overlay__ {
  2406. + #address-cells = <1>;
  2407. + #size-cells = <0>;
  2408. + status = "okay";
  2409. +
  2410. + tas5713@1b {
  2411. + #sound-dai-cells = <0>;
  2412. + compatible = "ti,tas5713";
  2413. + reg = <0x1b>;
  2414. + status = "okay";
  2415. + };
  2416. + };
  2417. + };
  2418. +};
  2419. --- /dev/null
  2420. +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
  2421. @@ -0,0 +1,34 @@
  2422. +// Definitions for HiFiBerry DAC
  2423. +/dts-v1/;
  2424. +/plugin/;
  2425. +
  2426. +/ {
  2427. + compatible = "brcm,bcm2708";
  2428. +
  2429. + fragment@0 {
  2430. + target = <&sound>;
  2431. + __overlay__ {
  2432. + compatible = "hifiberry,hifiberry-dac";
  2433. + i2s-controller = <&i2s>;
  2434. + status = "okay";
  2435. + };
  2436. + };
  2437. +
  2438. + fragment@1 {
  2439. + target = <&i2s>;
  2440. + __overlay__ {
  2441. + status = "okay";
  2442. + };
  2443. + };
  2444. +
  2445. + fragment@2 {
  2446. + target-path = "/";
  2447. + __overlay__ {
  2448. + pcm5102a-codec {
  2449. + #sound-dai-cells = <0>;
  2450. + compatible = "ti,pcm5102a";
  2451. + status = "okay";
  2452. + };
  2453. + };
  2454. + };
  2455. +};
  2456. --- /dev/null
  2457. +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
  2458. @@ -0,0 +1,39 @@
  2459. +// Definitions for HiFiBerry DAC+
  2460. +/dts-v1/;
  2461. +/plugin/;
  2462. +
  2463. +/ {
  2464. + compatible = "brcm,bcm2708";
  2465. +
  2466. + fragment@0 {
  2467. + target = <&sound>;
  2468. + __overlay__ {
  2469. + compatible = "hifiberry,hifiberry-dacplus";
  2470. + i2s-controller = <&i2s>;
  2471. + status = "okay";
  2472. + };
  2473. + };
  2474. +
  2475. + fragment@1 {
  2476. + target = <&i2s>;
  2477. + __overlay__ {
  2478. + status = "okay";
  2479. + };
  2480. + };
  2481. +
  2482. + fragment@2 {
  2483. + target = <&i2c1>;
  2484. + __overlay__ {
  2485. + #address-cells = <1>;
  2486. + #size-cells = <0>;
  2487. + status = "okay";
  2488. +
  2489. + pcm5122@4d {
  2490. + #sound-dai-cells = <0>;
  2491. + compatible = "ti,pcm5122";
  2492. + reg = <0x4d>;
  2493. + status = "okay";
  2494. + };
  2495. + };
  2496. + };
  2497. +};
  2498. --- /dev/null
  2499. +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
  2500. @@ -0,0 +1,39 @@
  2501. +// Definitions for HiFiBerry Digi
  2502. +/dts-v1/;
  2503. +/plugin/;
  2504. +
  2505. +/ {
  2506. + compatible = "brcm,bcm2708";
  2507. +
  2508. + fragment@0 {
  2509. + target = <&sound>;
  2510. + __overlay__ {
  2511. + compatible = "hifiberry,hifiberry-digi";
  2512. + i2s-controller = <&i2s>;
  2513. + status = "okay";
  2514. + };
  2515. + };
  2516. +
  2517. + fragment@1 {
  2518. + target = <&i2s>;
  2519. + __overlay__ {
  2520. + status = "okay";
  2521. + };
  2522. + };
  2523. +
  2524. + fragment@2 {
  2525. + target = <&i2c1>;
  2526. + __overlay__ {
  2527. + #address-cells = <1>;
  2528. + #size-cells = <0>;
  2529. + status = "okay";
  2530. +
  2531. + wm8804@3b {
  2532. + #sound-dai-cells = <0>;
  2533. + compatible = "wlf,wm8804";
  2534. + reg = <0x3b>;
  2535. + status = "okay";
  2536. + };
  2537. + };
  2538. + };
  2539. +};
  2540. --- /dev/null
  2541. +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
  2542. @@ -0,0 +1,87 @@
  2543. +/*
  2544. + * Device Tree overlay for HY28A display
  2545. + *
  2546. + */
  2547. +
  2548. +/dts-v1/;
  2549. +/plugin/;
  2550. +
  2551. +/ {
  2552. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  2553. +
  2554. + fragment@0 {
  2555. + target = <&spi0>;
  2556. + __overlay__ {
  2557. + status = "okay";
  2558. +
  2559. + spidev@0{
  2560. + status = "disabled";
  2561. + };
  2562. +
  2563. + spidev@1{
  2564. + status = "disabled";
  2565. + };
  2566. + };
  2567. + };
  2568. +
  2569. + fragment@1 {
  2570. + target = <&gpio>;
  2571. + __overlay__ {
  2572. + hy28a_pins: hy28a_pins {
  2573. + brcm,pins = <17 25 18>;
  2574. + brcm,function = <0 1 1>; /* in out out */
  2575. + };
  2576. + };
  2577. + };
  2578. +
  2579. + fragment@2 {
  2580. + target = <&spi0>;
  2581. + __overlay__ {
  2582. + /* needed to avoid dtc warning */
  2583. + #address-cells = <1>;
  2584. + #size-cells = <0>;
  2585. +
  2586. + hy28a: hy28a@0{
  2587. + compatible = "ilitek,ili9320";
  2588. + reg = <0>;
  2589. + pinctrl-names = "default";
  2590. + pinctrl-0 = <&hy28a_pins>;
  2591. +
  2592. + spi-max-frequency = <32000000>;
  2593. + spi-cpol;
  2594. + spi-cpha;
  2595. + rotate = <270>;
  2596. + bgr;
  2597. + fps = <50>;
  2598. + buswidth = <8>;
  2599. + startbyte = <0x70>;
  2600. + reset-gpios = <&gpio 25 0>;
  2601. + led-gpios = <&gpio 18 1>;
  2602. + debug = <0>;
  2603. + };
  2604. +
  2605. + hy28a_ts: hy28a-ts@1 {
  2606. + compatible = "ti,ads7846";
  2607. + reg = <1>;
  2608. +
  2609. + spi-max-frequency = <2000000>;
  2610. + interrupts = <17 2>; /* high-to-low edge triggered */
  2611. + interrupt-parent = <&gpio>;
  2612. + pendown-gpio = <&gpio 17 0>;
  2613. + ti,x-plate-ohms = /bits/ 16 <100>;
  2614. + ti,pressure-max = /bits/ 16 <255>;
  2615. + };
  2616. + };
  2617. + };
  2618. + __overrides__ {
  2619. + speed = <&hy28a>,"spi-max-frequency:0";
  2620. + rotate = <&hy28a>,"rotate:0";
  2621. + fps = <&hy28a>,"fps:0";
  2622. + debug = <&hy28a>,"debug:0";
  2623. + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
  2624. + resetgpio = <&hy28a>,"reset-gpios:4",
  2625. + <&hy28a_pins>, "brcm,pins:1";
  2626. + ledgpio = <&hy28a>,"led-gpios:4",
  2627. + <&hy28a_pins>, "brcm,pins:2";
  2628. + };
  2629. +};
  2630. --- /dev/null
  2631. +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
  2632. @@ -0,0 +1,142 @@
  2633. +/*
  2634. + * Device Tree overlay for HY28b display shield by Texy
  2635. + *
  2636. + */
  2637. +
  2638. +/dts-v1/;
  2639. +/plugin/;
  2640. +
  2641. +/ {
  2642. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  2643. +
  2644. + fragment@0 {
  2645. + target = <&spi0>;
  2646. + __overlay__ {
  2647. + status = "okay";
  2648. +
  2649. + spidev@0{
  2650. + status = "disabled";
  2651. + };
  2652. +
  2653. + spidev@1{
  2654. + status = "disabled";
  2655. + };
  2656. + };
  2657. + };
  2658. +
  2659. + fragment@1 {
  2660. + target = <&gpio>;
  2661. + __overlay__ {
  2662. + hy28b_pins: hy28b_pins {
  2663. + brcm,pins = <17 25 18>;
  2664. + brcm,function = <0 1 1>; /* in out out */
  2665. + };
  2666. + };
  2667. + };
  2668. +
  2669. + fragment@2 {
  2670. + target = <&spi0>;
  2671. + __overlay__ {
  2672. + /* needed to avoid dtc warning */
  2673. + #address-cells = <1>;
  2674. + #size-cells = <0>;
  2675. +
  2676. + hy28b: hy28b@0{
  2677. + compatible = "ilitek,ili9325";
  2678. + reg = <0>;
  2679. + pinctrl-names = "default";
  2680. + pinctrl-0 = <&hy28b_pins>;
  2681. +
  2682. + spi-max-frequency = <48000000>;
  2683. + spi-cpol;
  2684. + spi-cpha;
  2685. + rotate = <270>;
  2686. + bgr;
  2687. + fps = <50>;
  2688. + buswidth = <8>;
  2689. + startbyte = <0x70>;
  2690. + reset-gpios = <&gpio 25 0>;
  2691. + led-gpios = <&gpio 18 1>;
  2692. +
  2693. + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
  2694. +
  2695. + init = <0x10000e7 0x0010
  2696. + 0x1000000 0x0001
  2697. + 0x1000001 0x0100
  2698. + 0x1000002 0x0700
  2699. + 0x1000003 0x1030
  2700. + 0x1000004 0x0000
  2701. + 0x1000008 0x0207
  2702. + 0x1000009 0x0000
  2703. + 0x100000a 0x0000
  2704. + 0x100000c 0x0001
  2705. + 0x100000d 0x0000
  2706. + 0x100000f 0x0000
  2707. + 0x1000010 0x0000
  2708. + 0x1000011 0x0007
  2709. + 0x1000012 0x0000
  2710. + 0x1000013 0x0000
  2711. + 0x2000032
  2712. + 0x1000010 0x1590
  2713. + 0x1000011 0x0227
  2714. + 0x2000032
  2715. + 0x1000012 0x009c
  2716. + 0x2000032
  2717. + 0x1000013 0x1900
  2718. + 0x1000029 0x0023
  2719. + 0x100002b 0x000e
  2720. + 0x2000032
  2721. + 0x1000020 0x0000
  2722. + 0x1000021 0x0000
  2723. + 0x2000032
  2724. + 0x1000050 0x0000
  2725. + 0x1000051 0x00ef
  2726. + 0x1000052 0x0000
  2727. + 0x1000053 0x013f
  2728. + 0x1000060 0xa700
  2729. + 0x1000061 0x0001
  2730. + 0x100006a 0x0000
  2731. + 0x1000080 0x0000
  2732. + 0x1000081 0x0000
  2733. + 0x1000082 0x0000
  2734. + 0x1000083 0x0000
  2735. + 0x1000084 0x0000
  2736. + 0x1000085 0x0000
  2737. + 0x1000090 0x0010
  2738. + 0x1000092 0x0000
  2739. + 0x1000093 0x0003
  2740. + 0x1000095 0x0110
  2741. + 0x1000097 0x0000
  2742. + 0x1000098 0x0000
  2743. + 0x1000007 0x0133
  2744. + 0x1000020 0x0000
  2745. + 0x1000021 0x0000
  2746. + 0x2000064>;
  2747. + debug = <0>;
  2748. + };
  2749. +
  2750. + hy28b_ts: hy28b-ts@1 {
  2751. + compatible = "ti,ads7846";
  2752. + reg = <1>;
  2753. +
  2754. + spi-max-frequency = <2000000>;
  2755. + interrupts = <17 2>; /* high-to-low edge triggered */
  2756. + interrupt-parent = <&gpio>;
  2757. + pendown-gpio = <&gpio 17 0>;
  2758. + ti,x-plate-ohms = /bits/ 16 <100>;
  2759. + ti,pressure-max = /bits/ 16 <255>;
  2760. + };
  2761. + };
  2762. + };
  2763. + __overrides__ {
  2764. + speed = <&hy28b>,"spi-max-frequency:0";
  2765. + rotate = <&hy28b>,"rotate:0";
  2766. + fps = <&hy28b>,"fps:0";
  2767. + debug = <&hy28b>,"debug:0";
  2768. + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
  2769. + resetgpio = <&hy28b>,"reset-gpios:4",
  2770. + <&hy28b_pins>, "brcm,pins:1";
  2771. + ledgpio = <&hy28b>,"led-gpios:4",
  2772. + <&hy28b_pins>, "brcm,pins:2";
  2773. + };
  2774. +};
  2775. --- /dev/null
  2776. +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
  2777. @@ -0,0 +1,55 @@
  2778. +// Definitions for several I2C based Real Time Clocks
  2779. +/dts-v1/;
  2780. +/plugin/;
  2781. +
  2782. +/ {
  2783. + compatible = "brcm,bcm2708";
  2784. +
  2785. + fragment@0 {
  2786. + target = <&i2c_arm>;
  2787. + __overlay__ {
  2788. + #address-cells = <1>;
  2789. + #size-cells = <0>;
  2790. + status = "okay";
  2791. +
  2792. + ds1307: ds1307@68 {
  2793. + compatible = "maxim,ds1307";
  2794. + reg = <0x68>;
  2795. + status = "disable";
  2796. + };
  2797. + mcp7941x: mcp7941x@6f {
  2798. + compatible = "microchip,mcp7941x";
  2799. + reg = <0x6f>;
  2800. + status = "disable";
  2801. + };
  2802. + ds3231: ds3231@68 {
  2803. + compatible = "maxim,ds3231";
  2804. + reg = <0x68>;
  2805. + status = "disable";
  2806. + };
  2807. + pcf2127: pcf2127@51 {
  2808. + compatible = "nxp,pcf2127";
  2809. + reg = <0x51>;
  2810. + status = "disable";
  2811. + };
  2812. + pcf8523: pcf8523@68 {
  2813. + compatible = "nxp,pcf8523";
  2814. + reg = <0x68>;
  2815. + status = "disable";
  2816. + };
  2817. + pcf8563: pcf8563@51 {
  2818. + compatible = "nxp,pcf8563";
  2819. + reg = <0x51>;
  2820. + status = "disable";
  2821. + };
  2822. + };
  2823. + };
  2824. + __overrides__ {
  2825. + ds1307 = <&ds1307>,"status";
  2826. + ds3231 = <&ds3231>,"status";
  2827. + mcp7941x = <&mcp7941x>,"status";
  2828. + pcf2127 = <&pcf2127>,"status";
  2829. + pcf8523 = <&pcf8523>,"status";
  2830. + pcf8563 = <&pcf8563>,"status";
  2831. + };
  2832. +};
  2833. --- /dev/null
  2834. +++ b/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
  2835. @@ -0,0 +1,13 @@
  2836. +/dts-v1/;
  2837. +/plugin/;
  2838. +
  2839. +/{
  2840. + compatible = "brcm,bcm2708";
  2841. +
  2842. + fragment@0 {
  2843. + target = <&i2s>;
  2844. + __overlay__ {
  2845. + brcm,enable-mmap;
  2846. + };
  2847. + };
  2848. +};
  2849. --- /dev/null
  2850. +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
  2851. @@ -0,0 +1,39 @@
  2852. +// Definitions for IQaudIO DAC
  2853. +/dts-v1/;
  2854. +/plugin/;
  2855. +
  2856. +/ {
  2857. + compatible = "brcm,bcm2708";
  2858. +
  2859. + fragment@0 {
  2860. + target = <&sound>;
  2861. + __overlay__ {
  2862. + compatible = "iqaudio,iqaudio-dac";
  2863. + i2s-controller = <&i2s>;
  2864. + status = "okay";
  2865. + };
  2866. + };
  2867. +
  2868. + fragment@1 {
  2869. + target = <&i2s>;
  2870. + __overlay__ {
  2871. + status = "okay";
  2872. + };
  2873. + };
  2874. +
  2875. + fragment@2 {
  2876. + target = <&i2c1>;
  2877. + __overlay__ {
  2878. + #address-cells = <1>;
  2879. + #size-cells = <0>;
  2880. + status = "okay";
  2881. +
  2882. + pcm5122@4c {
  2883. + #sound-dai-cells = <0>;
  2884. + compatible = "ti,pcm5122";
  2885. + reg = <0x4c>;
  2886. + status = "okay";
  2887. + };
  2888. + };
  2889. + };
  2890. +};
  2891. --- /dev/null
  2892. +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
  2893. @@ -0,0 +1,39 @@
  2894. +// Definitions for IQaudIO DAC+
  2895. +/dts-v1/;
  2896. +/plugin/;
  2897. +
  2898. +/ {
  2899. + compatible = "brcm,bcm2708";
  2900. +
  2901. + fragment@0 {
  2902. + target = <&sound>;
  2903. + __overlay__ {
  2904. + compatible = "iqaudio,iqaudio-dac";
  2905. + i2s-controller = <&i2s>;
  2906. + status = "okay";
  2907. + };
  2908. + };
  2909. +
  2910. + fragment@1 {
  2911. + target = <&i2s>;
  2912. + __overlay__ {
  2913. + status = "okay";
  2914. + };
  2915. + };
  2916. +
  2917. + fragment@2 {
  2918. + target = <&i2c1>;
  2919. + __overlay__ {
  2920. + #address-cells = <1>;
  2921. + #size-cells = <0>;
  2922. + status = "okay";
  2923. +
  2924. + pcm5122@4c {
  2925. + #sound-dai-cells = <0>;
  2926. + compatible = "ti,pcm5122";
  2927. + reg = <0x4c>;
  2928. + status = "okay";
  2929. + };
  2930. + };
  2931. + };
  2932. +};
  2933. --- /dev/null
  2934. +++ b/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
  2935. @@ -0,0 +1,57 @@
  2936. +// Definitions for lirc-rpi module
  2937. +/dts-v1/;
  2938. +/plugin/;
  2939. +
  2940. +/ {
  2941. + compatible = "brcm,bcm2708";
  2942. +
  2943. + fragment@0 {
  2944. + target-path = "/";
  2945. + __overlay__ {
  2946. + lirc_rpi: lirc_rpi {
  2947. + compatible = "rpi,lirc-rpi";
  2948. + pinctrl-names = "default";
  2949. + pinctrl-0 = <&lirc_pins>;
  2950. + status = "okay";
  2951. +
  2952. + // Override autodetection of IR receiver circuit
  2953. + // (0 = active high, 1 = active low, -1 = no override )
  2954. + rpi,sense = <0xffffffff>;
  2955. +
  2956. + // Software carrier
  2957. + // (0 = off, 1 = on)
  2958. + rpi,softcarrier = <1>;
  2959. +
  2960. + // Invert output
  2961. + // (0 = off, 1 = on)
  2962. + rpi,invert = <0>;
  2963. +
  2964. + // Enable debugging messages
  2965. + // (0 = off, 1 = on)
  2966. + rpi,debug = <0>;
  2967. + };
  2968. + };
  2969. + };
  2970. +
  2971. + fragment@1 {
  2972. + target = <&gpio>;
  2973. + __overlay__ {
  2974. + lirc_pins: lirc_pins {
  2975. + brcm,pins = <17 18>;
  2976. + brcm,function = <1 0>; // out in
  2977. + brcm,pull = <0 1>; // off down
  2978. + };
  2979. + };
  2980. + };
  2981. +
  2982. + __overrides__ {
  2983. + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
  2984. + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
  2985. + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
  2986. +
  2987. + sense = <&lirc_rpi>,"rpi,sense:0";
  2988. + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
  2989. + invert = <&lirc_rpi>,"rpi,invert:0";
  2990. + debug = <&lirc_rpi>,"rpi,debug:0";
  2991. + };
  2992. +};
  2993. --- /dev/null
  2994. +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
  2995. @@ -0,0 +1,69 @@
  2996. +/*
  2997. + * Device tree overlay for mcp251x/can0 on spi0.0
  2998. + */
  2999. +
  3000. +/dts-v1/;
  3001. +/plugin/;
  3002. +
  3003. +/ {
  3004. + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
  3005. + /* disable spi-dev for spi0.0 */
  3006. + fragment@0 {
  3007. + target = <&spi0>;
  3008. + __overlay__ {
  3009. + status = "okay";
  3010. + spidev@0{
  3011. + status = "disabled";
  3012. + };
  3013. + };
  3014. + };
  3015. +
  3016. + /* the interrupt pin of the can-controller */
  3017. + fragment@1 {
  3018. + target = <&gpio>;
  3019. + __overlay__ {
  3020. + can0_pins: can0_pins {
  3021. + brcm,pins = <25>;
  3022. + brcm,function = <0>; /* input */
  3023. + };
  3024. + };
  3025. + };
  3026. +
  3027. + /* the clock/oscillator of the can-controller */
  3028. + fragment@2 {
  3029. + target-path = "/clocks";
  3030. + __overlay__ {
  3031. + /* external oscillator of mcp2515 on SPI0.0 */
  3032. + can0_osc: can0_osc {
  3033. + compatible = "fixed-clock";
  3034. + #clock-cells = <0>;
  3035. + clock-frequency = <16000000>;
  3036. + };
  3037. + };
  3038. + };
  3039. +
  3040. + /* the spi config of the can-controller itself binding everything together */
  3041. + fragment@3 {
  3042. + target = <&spi0>;
  3043. + __overlay__ {
  3044. + /* needed to avoid dtc warning */
  3045. + #address-cells = <1>;
  3046. + #size-cells = <0>;
  3047. + can0: mcp2515@0 {
  3048. + reg = <0>;
  3049. + compatible = "microchip,mcp2515";
  3050. + pinctrl-names = "default";
  3051. + pinctrl-0 = <&can0_pins>;
  3052. + spi-max-frequency = <10000000>;
  3053. + interrupt-parent = <&gpio>;
  3054. + interrupts = <25 0x2>;
  3055. + clocks = <&can0_osc>;
  3056. + };
  3057. + };
  3058. + };
  3059. + __overrides__ {
  3060. + oscillator = <&can0_osc>,"clock-frequency:0";
  3061. + spimaxfrequency = <&can0>,"spi-max-frequency:0";
  3062. + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
  3063. + };
  3064. +};
  3065. --- /dev/null
  3066. +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
  3067. @@ -0,0 +1,69 @@
  3068. +/*
  3069. + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
  3070. + */
  3071. +
  3072. +/dts-v1/;
  3073. +/plugin/;
  3074. +
  3075. +/ {
  3076. + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
  3077. + /* disable spi-dev for spi0.1 */
  3078. + fragment@0 {
  3079. + target = <&spi0>;
  3080. + __overlay__ {
  3081. + status = "okay";
  3082. + spidev@1{
  3083. + status = "disabled";
  3084. + };
  3085. + };
  3086. + };
  3087. +
  3088. + /* the interrupt pin of the can-controller */
  3089. + fragment@1 {
  3090. + target = <&gpio>;
  3091. + __overlay__ {
  3092. + can1_pins: can1_pins {
  3093. + brcm,pins = <25>;
  3094. + brcm,function = <0>; /* input */
  3095. + };
  3096. + };
  3097. + };
  3098. +
  3099. + /* the clock/oscillator of the can-controller */
  3100. + fragment@2 {
  3101. + target-path = "/clocks";
  3102. + __overlay__ {
  3103. + /* external oscillator of mcp2515 on spi0.1 */
  3104. + can1_osc: can1_osc {
  3105. + compatible = "fixed-clock";
  3106. + #clock-cells = <0>;
  3107. + clock-frequency = <16000000>;
  3108. + };
  3109. + };
  3110. + };
  3111. +
  3112. + /* the spi config of the can-controller itself binding everything together */
  3113. + fragment@3 {
  3114. + target = <&spi0>;
  3115. + __overlay__ {
  3116. + /* needed to avoid dtc warning */
  3117. + #address-cells = <1>;
  3118. + #size-cells = <0>;
  3119. + can1: mcp2515@1 {
  3120. + reg = <1>;
  3121. + compatible = "microchip,mcp2515";
  3122. + pinctrl-names = "default";
  3123. + pinctrl-0 = <&can1_pins>;
  3124. + spi-max-frequency = <10000000>;
  3125. + interrupt-parent = <&gpio>;
  3126. + interrupts = <25 0x2>;
  3127. + clocks = <&can1_osc>;
  3128. + };
  3129. + };
  3130. + };
  3131. + __overrides__ {
  3132. + oscillator = <&can1_osc>,"clock-frequency:0";
  3133. + spimaxfrequency = <&can1>,"spi-max-frequency:0";
  3134. + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
  3135. + };
  3136. +};
  3137. --- /dev/null
  3138. +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
  3139. @@ -0,0 +1,39 @@
  3140. +/dts-v1/;
  3141. +/plugin/;
  3142. +
  3143. +/{
  3144. + compatible = "brcm,bcm2708";
  3145. +
  3146. + fragment@0 {
  3147. + target = <&mmc>;
  3148. + frag0: __overlay__ {
  3149. + pinctrl-names = "default";
  3150. + pinctrl-0 = <&mmc_pins>;
  3151. + bus-width = <4>;
  3152. + brcm,overclock-50 = <0>;
  3153. + status = "okay";
  3154. + };
  3155. + };
  3156. +
  3157. + fragment@1 {
  3158. + target = <&gpio>;
  3159. + __overlay__ {
  3160. + mmc_pins: mmc_pins {
  3161. + brcm,pins = <48 49 50 51 52 53>;
  3162. + brcm,function = <7>; /* alt3 */
  3163. + };
  3164. + };
  3165. + };
  3166. +
  3167. + fragment@2 {
  3168. + target = <&sdhost>;
  3169. + __overlay__ {
  3170. + status = "disabled";
  3171. + };
  3172. + };
  3173. +
  3174. + __overrides__ {
  3175. + overclock_50 = <&frag0>,"brcm,overclock-50:0";
  3176. + force_pio = <&frag0>,"brcm,force-pio?";
  3177. + };
  3178. +};
  3179. --- /dev/null
  3180. +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
  3181. @@ -0,0 +1,111 @@
  3182. +/*
  3183. + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
  3184. + *
  3185. + */
  3186. +
  3187. +/dts-v1/;
  3188. +/plugin/;
  3189. +
  3190. +/ {
  3191. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  3192. +
  3193. + fragment@0 {
  3194. + target = <&spi0>;
  3195. + __overlay__ {
  3196. + status = "okay";
  3197. +
  3198. + spidev@0{
  3199. + status = "disabled";
  3200. + };
  3201. +
  3202. + spidev@1{
  3203. + status = "disabled";
  3204. + };
  3205. + };
  3206. + };
  3207. +
  3208. + fragment@1 {
  3209. + target = <&gpio>;
  3210. + __overlay__ {
  3211. + mz61581_pins: mz61581_pins {
  3212. + brcm,pins = <4 15 18 25>;
  3213. + brcm,function = <0 1 1 1>; /* in out out out */
  3214. + };
  3215. + };
  3216. + };
  3217. +
  3218. + fragment@2 {
  3219. + target = <&spi0>;
  3220. + __overlay__ {
  3221. + /* needed to avoid dtc warning */
  3222. + #address-cells = <1>;
  3223. + #size-cells = <0>;
  3224. +
  3225. + mz61581: mz61581@0{
  3226. + compatible = "samsung,s6d02a1";
  3227. + reg = <0>;
  3228. + pinctrl-names = "default";
  3229. + pinctrl-0 = <&mz61581_pins>;
  3230. +
  3231. + spi-max-frequency = <128000000>;
  3232. + spi-cpol;
  3233. + spi-cpha;
  3234. +
  3235. + width = <320>;
  3236. + height = <480>;
  3237. + rotate = <270>;
  3238. + bgr;
  3239. + fps = <30>;
  3240. + buswidth = <8>;
  3241. + txbuflen = <32768>;
  3242. +
  3243. + reset-gpios = <&gpio 15 0>;
  3244. + dc-gpios = <&gpio 25 0>;
  3245. + led-gpios = <&gpio 18 0>;
  3246. +
  3247. + init = <0x10000b0 00
  3248. + 0x1000011
  3249. + 0x20000ff
  3250. + 0x10000b3 0x02 0x00 0x00 0x00
  3251. + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
  3252. + 0x10000c1 0x08 0x16 0x08 0x08
  3253. + 0x10000c4 0x11 0x07 0x03 0x03
  3254. + 0x10000c6 0x00
  3255. + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
  3256. + 0x1000035 0x00
  3257. + 0x1000036 0xa0
  3258. + 0x100003a 0x55
  3259. + 0x1000044 0x00 0x01
  3260. + 0x10000d0 0x07 0x07 0x1d 0x03
  3261. + 0x10000d1 0x03 0x30 0x10
  3262. + 0x10000d2 0x03 0x14 0x04
  3263. + 0x1000029
  3264. + 0x100002c>;
  3265. +
  3266. + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
  3267. + debug = <3>;
  3268. + };
  3269. +
  3270. + mz61581_ts: mz61581_ts@1 {
  3271. + compatible = "ti,ads7846";
  3272. + reg = <1>;
  3273. +
  3274. + spi-max-frequency = <2000000>;
  3275. + interrupts = <4 2>; /* high-to-low edge triggered */
  3276. + interrupt-parent = <&gpio>;
  3277. + pendown-gpio = <&gpio 4 0>;
  3278. +
  3279. + ti,x-plate-ohms = /bits/ 16 <60>;
  3280. + ti,pressure-max = /bits/ 16 <255>;
  3281. + };
  3282. + };
  3283. + };
  3284. + __overrides__ {
  3285. + speed = <&mz61581>, "spi-max-frequency:0";
  3286. + rotate = <&mz61581>, "rotate:0";
  3287. + fps = <&mz61581>, "fps:0";
  3288. + txbuflen = <&mz61581>, "txbuflen:0";
  3289. + debug = <&mz61581>, "debug:0";
  3290. + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
  3291. + };
  3292. +};
  3293. --- /dev/null
  3294. +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
  3295. @@ -0,0 +1,96 @@
  3296. +/*
  3297. + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
  3298. + *
  3299. + */
  3300. +
  3301. +/dts-v1/;
  3302. +/plugin/;
  3303. +
  3304. +/ {
  3305. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  3306. +
  3307. + fragment@0 {
  3308. + target = <&spi0>;
  3309. + __overlay__ {
  3310. + status = "okay";
  3311. +
  3312. + spidev@0{
  3313. + status = "disabled";
  3314. + };
  3315. +
  3316. + spidev@1{
  3317. + status = "disabled";
  3318. + };
  3319. + };
  3320. + };
  3321. +
  3322. + fragment@1 {
  3323. + target = <&gpio>;
  3324. + __overlay__ {
  3325. + piscreen_pins: piscreen_pins {
  3326. + brcm,pins = <17 25 24 22>;
  3327. + brcm,function = <0 1 1 1>; /* in out out out */
  3328. + };
  3329. + };
  3330. + };
  3331. +
  3332. + fragment@2 {
  3333. + target = <&spi0>;
  3334. + __overlay__ {
  3335. + /* needed to avoid dtc warning */
  3336. + #address-cells = <1>;
  3337. + #size-cells = <0>;
  3338. +
  3339. + piscreen: piscreen@0{
  3340. + compatible = "ilitek,ili9486";
  3341. + reg = <0>;
  3342. + pinctrl-names = "default";
  3343. + pinctrl-0 = <&piscreen_pins>;
  3344. +
  3345. + spi-max-frequency = <24000000>;
  3346. + rotate = <270>;
  3347. + bgr;
  3348. + fps = <30>;
  3349. + buswidth = <8>;
  3350. + regwidth = <16>;
  3351. + reset-gpios = <&gpio 25 0>;
  3352. + dc-gpios = <&gpio 24 0>;
  3353. + led-gpios = <&gpio 22 1>;
  3354. + debug = <0>;
  3355. +
  3356. + init = <0x10000b0 0x00
  3357. + 0x1000011
  3358. + 0x20000ff
  3359. + 0x100003a 0x55
  3360. + 0x1000036 0x28
  3361. + 0x10000c2 0x44
  3362. + 0x10000c5 0x00 0x00 0x00 0x00
  3363. + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
  3364. + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
  3365. + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
  3366. + 0x1000011
  3367. + 0x1000029>;
  3368. + };
  3369. +
  3370. + piscreen_ts: piscreen-ts@1 {
  3371. + compatible = "ti,ads7846";
  3372. + reg = <1>;
  3373. +
  3374. + spi-max-frequency = <2000000>;
  3375. + interrupts = <17 2>; /* high-to-low edge triggered */
  3376. + interrupt-parent = <&gpio>;
  3377. + pendown-gpio = <&gpio 17 0>;
  3378. + ti,swap-xy;
  3379. + ti,x-plate-ohms = /bits/ 16 <100>;
  3380. + ti,pressure-max = /bits/ 16 <255>;
  3381. + };
  3382. + };
  3383. + };
  3384. + __overrides__ {
  3385. + speed = <&piscreen>,"spi-max-frequency:0";
  3386. + rotate = <&piscreen>,"rotate:0";
  3387. + fps = <&piscreen>,"fps:0";
  3388. + debug = <&piscreen>,"debug:0";
  3389. + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
  3390. + };
  3391. +};
  3392. --- /dev/null
  3393. +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
  3394. @@ -0,0 +1,115 @@
  3395. +/*
  3396. + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
  3397. + *
  3398. + */
  3399. +
  3400. +/dts-v1/;
  3401. +/plugin/;
  3402. +
  3403. +/ {
  3404. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  3405. +
  3406. + fragment@0 {
  3407. + target = <&spi0>;
  3408. + __overlay__ {
  3409. + status = "okay";
  3410. +
  3411. + spidev@0{
  3412. + status = "disabled";
  3413. + };
  3414. +
  3415. + spidev@1{
  3416. + status = "disabled";
  3417. + };
  3418. + };
  3419. + };
  3420. +
  3421. + fragment@1 {
  3422. + target = <&gpio>;
  3423. + __overlay__ {
  3424. + pitft_pins: pitft_pins {
  3425. + brcm,pins = <24 25>;
  3426. + brcm,function = <0 1>; /* in out */
  3427. + brcm,pull = <2 0>; /* pullup none */
  3428. + };
  3429. + };
  3430. + };
  3431. +
  3432. + fragment@2 {
  3433. + target = <&spi0>;
  3434. + __overlay__ {
  3435. + /* needed to avoid dtc warning */
  3436. + #address-cells = <1>;
  3437. + #size-cells = <0>;
  3438. +
  3439. + pitft: pitft@0{
  3440. + compatible = "ilitek,ili9340";
  3441. + reg = <0>;
  3442. + pinctrl-names = "default";
  3443. + pinctrl-0 = <&pitft_pins>;
  3444. +
  3445. + spi-max-frequency = <32000000>;
  3446. + rotate = <90>;
  3447. + fps = <25>;
  3448. + bgr;
  3449. + buswidth = <8>;
  3450. + dc-gpios = <&gpio 25 0>;
  3451. + debug = <0>;
  3452. + };
  3453. +
  3454. + pitft_ts@1 {
  3455. + #address-cells = <1>;
  3456. + #size-cells = <0>;
  3457. + compatible = "st,stmpe610";
  3458. + reg = <1>;
  3459. +
  3460. + spi-max-frequency = <500000>;
  3461. + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
  3462. + interrupts = <24 2>; /* high-to-low edge triggered */
  3463. + interrupt-parent = <&gpio>;
  3464. + interrupt-controller;
  3465. +
  3466. + stmpe_touchscreen {
  3467. + compatible = "st,stmpe-ts";
  3468. + st,sample-time = <4>;
  3469. + st,mod-12b = <1>;
  3470. + st,ref-sel = <0>;
  3471. + st,adc-freq = <2>;
  3472. + st,ave-ctrl = <3>;
  3473. + st,touch-det-delay = <4>;
  3474. + st,settling = <2>;
  3475. + st,fraction-z = <7>;
  3476. + st,i-drive = <0>;
  3477. + };
  3478. +
  3479. + stmpe_gpio: stmpe_gpio {
  3480. + #gpio-cells = <2>;
  3481. + compatible = "st,stmpe-gpio";
  3482. + /*
  3483. + * only GPIO2 is wired/available
  3484. + * and it is wired to the backlight
  3485. + */
  3486. + st,norequest-mask = <0x7b>;
  3487. + };
  3488. + };
  3489. + };
  3490. + };
  3491. +
  3492. + fragment@3 {
  3493. + target-path = "/soc";
  3494. + __overlay__ {
  3495. + backlight {
  3496. + compatible = "gpio-backlight";
  3497. + gpios = <&stmpe_gpio 2 0>;
  3498. + default-on;
  3499. + };
  3500. + };
  3501. + };
  3502. +
  3503. + __overrides__ {
  3504. + speed = <&pitft>,"spi-max-frequency:0";
  3505. + rotate = <&pitft>,"rotate:0";
  3506. + fps = <&pitft>,"fps:0";
  3507. + debug = <&pitft>,"debug:0";
  3508. + };
  3509. +};
  3510. --- /dev/null
  3511. +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
  3512. @@ -0,0 +1,34 @@
  3513. +/dts-v1/;
  3514. +/plugin/;
  3515. +
  3516. +/ {
  3517. + compatible = "brcm,bcm2708";
  3518. + fragment@0 {
  3519. + target-path = "/";
  3520. + __overlay__ {
  3521. + pps: pps {
  3522. + compatible = "pps-gpio";
  3523. + pinctrl-names = "default";
  3524. + pinctrl-0 = <&pps_pins>;
  3525. + gpios = <&gpio 18 0>;
  3526. + status = "okay";
  3527. + };
  3528. + };
  3529. + };
  3530. +
  3531. + fragment@1 {
  3532. + target = <&gpio>;
  3533. + __overlay__ {
  3534. + pps_pins: pps_pins {
  3535. + brcm,pins = <18>;
  3536. + brcm,function = <0>; // in
  3537. + brcm,pull = <0>; // off
  3538. + };
  3539. + };
  3540. + };
  3541. +
  3542. + __overrides__ {
  3543. + gpiopin = <&pps>,"gpios:4",
  3544. + <&pps_pins>,"brcm,pins:0";
  3545. + };
  3546. +};
  3547. --- /dev/null
  3548. +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
  3549. @@ -0,0 +1,46 @@
  3550. +/dts-v1/;
  3551. +/plugin/;
  3552. +
  3553. +/*
  3554. +This is the 2-channel overlay - only use it if you need both channels.
  3555. +
  3556. +Legal pin,function combinations for each channel:
  3557. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  3558. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  3559. +
  3560. +N.B.:
  3561. + 1) Pin 18 is the only one available on all platforms, and
  3562. + it is the one used by the I2S audio interface.
  3563. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  3564. + 2) The onboard analogue audio output uses both PWM channels.
  3565. + 3) So be careful mixing audio and PWM.
  3566. +*/
  3567. +
  3568. +/ {
  3569. + fragment@0 {
  3570. + target = <&gpio>;
  3571. + __overlay__ {
  3572. + pwm_pins: pwm_pins {
  3573. + brcm,pins = <18 19>;
  3574. + brcm,function = <2 2>; /* Alt5 */
  3575. + };
  3576. + };
  3577. + };
  3578. +
  3579. + fragment@1 {
  3580. + target = <&pwm>;
  3581. + __overlay__ {
  3582. + pinctrl-names = "default";
  3583. + pinctrl-0 = <&pwm_pins>;
  3584. + status = "okay";
  3585. + };
  3586. + };
  3587. +
  3588. + __overrides__ {
  3589. + pin = <&pwm_pins>,"brcm,pins:0";
  3590. + pin2 = <&pwm_pins>,"brcm,pins:4";
  3591. + func = <&pwm_pins>,"brcm,function:0";
  3592. + func2 = <&pwm_pins>,"brcm,function:4";
  3593. + clock = <&clk_pwm>,"clock-frequency:0";
  3594. + };
  3595. +};
  3596. --- /dev/null
  3597. +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
  3598. @@ -0,0 +1,42 @@
  3599. +/dts-v1/;
  3600. +/plugin/;
  3601. +
  3602. +/*
  3603. +Legal pin,function combinations for each channel:
  3604. + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
  3605. + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
  3606. +
  3607. +N.B.:
  3608. + 1) Pin 18 is the only one available on all platforms, and
  3609. + it is the one used by the I2S audio interface.
  3610. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  3611. + 2) The onboard analogue audio output uses both PWM channels.
  3612. + 3) So be careful mixing audio and PWM.
  3613. +*/
  3614. +
  3615. +/ {
  3616. + fragment@0 {
  3617. + target = <&gpio>;
  3618. + __overlay__ {
  3619. + pwm_pins: pwm_pins {
  3620. + brcm,pins = <18>;
  3621. + brcm,function = <2>; /* Alt5 */
  3622. + };
  3623. + };
  3624. + };
  3625. +
  3626. + fragment@1 {
  3627. + target = <&pwm>;
  3628. + __overlay__ {
  3629. + pinctrl-names = "default";
  3630. + pinctrl-0 = <&pwm_pins>;
  3631. + status = "okay";
  3632. + };
  3633. + };
  3634. +
  3635. + __overrides__ {
  3636. + pin = <&pwm_pins>,"brcm,pins:0";
  3637. + func = <&pwm_pins>,"brcm,function:0";
  3638. + clock = <&clk_pwm>,"clock-frequency:0";
  3639. + };
  3640. +};
  3641. --- /dev/null
  3642. +++ b/arch/arm/boot/dts/overlays/raspidac3-overlay.dts
  3643. @@ -0,0 +1,45 @@
  3644. +// Definitions for RaspiDACv3
  3645. +/dts-v1/;
  3646. +/plugin/;
  3647. +
  3648. +/ {
  3649. + compatible = "brcm,bcm2708";
  3650. +
  3651. + fragment@0 {
  3652. + target = <&sound>;
  3653. + __overlay__ {
  3654. + compatible = "jg,raspidacv3";
  3655. + i2s-controller = <&i2s>;
  3656. + status = "okay";
  3657. + };
  3658. + };
  3659. +
  3660. + fragment@1 {
  3661. + target = <&i2s>;
  3662. + __overlay__ {
  3663. + status = "okay";
  3664. + };
  3665. + };
  3666. +
  3667. + fragment@2 {
  3668. + target = <&i2c1>;
  3669. + __overlay__ {
  3670. + #address-cells = <1>;
  3671. + #size-cells = <0>;
  3672. + status = "okay";
  3673. +
  3674. + pcm5122@4c {
  3675. + #sound-dai-cells = <0>;
  3676. + compatible = "ti,pcm5122";
  3677. + reg = <0x4c>;
  3678. + status = "okay";
  3679. + };
  3680. +
  3681. + tpa6130a2: tpa6130a2@60 {
  3682. + compatible = "ti,tpa6130a2";
  3683. + reg = <0x60>;
  3684. + status = "okay";
  3685. + };
  3686. + };
  3687. + };
  3688. +};
  3689. --- /dev/null
  3690. +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
  3691. @@ -0,0 +1,34 @@
  3692. +// Definitions for RPi DAC
  3693. +/dts-v1/;
  3694. +/plugin/;
  3695. +
  3696. +/ {
  3697. + compatible = "brcm,bcm2708";
  3698. +
  3699. + fragment@0 {
  3700. + target = <&sound>;
  3701. + __overlay__ {
  3702. + compatible = "rpi,rpi-dac";
  3703. + i2s-controller = <&i2s>;
  3704. + status = "okay";
  3705. + };
  3706. + };
  3707. +
  3708. + fragment@1 {
  3709. + target = <&i2s>;
  3710. + __overlay__ {
  3711. + status = "okay";
  3712. + };
  3713. + };
  3714. +
  3715. + fragment@2 {
  3716. + target-path = "/";
  3717. + __overlay__ {
  3718. + pcm1794a-codec {
  3719. + #sound-dai-cells = <0>;
  3720. + compatible = "ti,pcm1794a";
  3721. + status = "okay";
  3722. + };
  3723. + };
  3724. + };
  3725. +};
  3726. --- /dev/null
  3727. +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
  3728. @@ -0,0 +1,82 @@
  3729. +/*
  3730. + * Device Tree overlay for rpi-display by Watterott
  3731. + *
  3732. + */
  3733. +
  3734. +/dts-v1/;
  3735. +/plugin/;
  3736. +
  3737. +/ {
  3738. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  3739. +
  3740. + fragment@0 {
  3741. + target = <&spi0>;
  3742. + __overlay__ {
  3743. + status = "okay";
  3744. +
  3745. + spidev@0{
  3746. + status = "disabled";
  3747. + };
  3748. +
  3749. + spidev@1{
  3750. + status = "disabled";
  3751. + };
  3752. + };
  3753. + };
  3754. +
  3755. + fragment@1 {
  3756. + target = <&gpio>;
  3757. + __overlay__ {
  3758. + rpi_display_pins: rpi_display_pins {
  3759. + brcm,pins = <18 23 24 25>;
  3760. + brcm,function = <1 1 1 0>; /* out out out in */
  3761. + brcm,pull = <0 0 0 2>; /* - - - up */
  3762. + };
  3763. + };
  3764. + };
  3765. +
  3766. + fragment@2 {
  3767. + target = <&spi0>;
  3768. + __overlay__ {
  3769. + /* needed to avoid dtc warning */
  3770. + #address-cells = <1>;
  3771. + #size-cells = <0>;
  3772. +
  3773. + rpidisplay: rpi-display@0{
  3774. + compatible = "ilitek,ili9341";
  3775. + reg = <0>;
  3776. + pinctrl-names = "default";
  3777. + pinctrl-0 = <&rpi_display_pins>;
  3778. +
  3779. + spi-max-frequency = <32000000>;
  3780. + rotate = <270>;
  3781. + bgr;
  3782. + fps = <30>;
  3783. + buswidth = <8>;
  3784. + reset-gpios = <&gpio 23 0>;
  3785. + dc-gpios = <&gpio 24 0>;
  3786. + led-gpios = <&gpio 18 1>;
  3787. + debug = <0>;
  3788. + };
  3789. +
  3790. + rpidisplay_ts: rpi-display-ts@1 {
  3791. + compatible = "ti,ads7846";
  3792. + reg = <1>;
  3793. +
  3794. + spi-max-frequency = <2000000>;
  3795. + interrupts = <25 2>; /* high-to-low edge triggered */
  3796. + interrupt-parent = <&gpio>;
  3797. + pendown-gpio = <&gpio 25 0>;
  3798. + ti,x-plate-ohms = /bits/ 16 <60>;
  3799. + ti,pressure-max = /bits/ 16 <255>;
  3800. + };
  3801. + };
  3802. + };
  3803. + __overrides__ {
  3804. + speed = <&rpidisplay>,"spi-max-frequency:0";
  3805. + rotate = <&rpidisplay>,"rotate:0";
  3806. + fps = <&rpidisplay>,"fps:0";
  3807. + debug = <&rpidisplay>,"debug:0";
  3808. + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
  3809. + };
  3810. +};
  3811. --- /dev/null
  3812. +++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
  3813. @@ -0,0 +1,17 @@
  3814. +/dts-v1/;
  3815. +/plugin/;
  3816. +
  3817. +/ {
  3818. + compatible = "brcm,bcm2708";
  3819. +
  3820. + fragment@0 {
  3821. + target-path = "/";
  3822. + __overlay__ {
  3823. + rpi_ft5406: rpi_ft5406 {
  3824. + compatible = "rpi,rpi-ft5406";
  3825. + firmware = <&firmware>;
  3826. + status = "okay";
  3827. + };
  3828. + };
  3829. + };
  3830. +};
  3831. --- /dev/null
  3832. +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
  3833. @@ -0,0 +1,39 @@
  3834. +// Definitions for Rpi-Proto
  3835. +/dts-v1/;
  3836. +/plugin/;
  3837. +
  3838. +/ {
  3839. + compatible = "brcm,bcm2708";
  3840. +
  3841. + fragment@0 {
  3842. + target = <&sound>;
  3843. + __overlay__ {
  3844. + compatible = "rpi,rpi-proto";
  3845. + i2s-controller = <&i2s>;
  3846. + status = "okay";
  3847. + };
  3848. + };
  3849. +
  3850. + fragment@1 {
  3851. + target = <&i2s>;
  3852. + __overlay__ {
  3853. + status = "okay";
  3854. + };
  3855. + };
  3856. +
  3857. + fragment@2 {
  3858. + target = <&i2c1>;
  3859. + __overlay__ {
  3860. + #address-cells = <1>;
  3861. + #size-cells = <0>;
  3862. + status = "okay";
  3863. +
  3864. + wm8731@1a {
  3865. + #sound-dai-cells = <0>;
  3866. + compatible = "wlf,wm8731";
  3867. + reg = <0x1a>;
  3868. + status = "okay";
  3869. + };
  3870. + };
  3871. + };
  3872. +};
  3873. --- /dev/null
  3874. +++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
  3875. @@ -0,0 +1,47 @@
  3876. +// rpi-sense HAT
  3877. +/dts-v1/;
  3878. +/plugin/;
  3879. +
  3880. +/ {
  3881. + compatible = "brcm,bcm2708", "brcm,bcm2709";
  3882. +
  3883. + fragment@0 {
  3884. + target = <&i2c1>;
  3885. + __overlay__ {
  3886. + #address-cells = <1>;
  3887. + #size-cells = <0>;
  3888. + status = "okay";
  3889. +
  3890. + rpi-sense@46 {
  3891. + compatible = "rpi,rpi-sense";
  3892. + reg = <0x46>;
  3893. + keys-int-gpios = <&gpio 23 1>;
  3894. + status = "okay";
  3895. + };
  3896. +
  3897. + lsm9ds1-magn@1c {
  3898. + compatible = "st,lsm9ds1-magn";
  3899. + reg = <0x1c>;
  3900. + status = "okay";
  3901. + };
  3902. +
  3903. + lsm9ds1-accel6a {
  3904. + compatible = "st,lsm9ds1-accel";
  3905. + reg = <0x6a>;
  3906. + status = "okay";
  3907. + };
  3908. +
  3909. + lps25h-press@5c {
  3910. + compatible = "st,lps25h-press";
  3911. + reg = <0x5c>;
  3912. + status = "okay";
  3913. + };
  3914. +
  3915. + hts221-humid@5f {
  3916. + compatible = "st,hts221-humid";
  3917. + reg = <0x5f>;
  3918. + status = "okay";
  3919. + };
  3920. + };
  3921. + };
  3922. +};
  3923. --- /dev/null
  3924. +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
  3925. @@ -0,0 +1,29 @@
  3926. +/dts-v1/;
  3927. +/plugin/;
  3928. +
  3929. +/{
  3930. + compatible = "brcm,bcm2708";
  3931. +
  3932. + fragment@0 {
  3933. + target = <&mmc>;
  3934. + __overlay__ {
  3935. + status = "disabled";
  3936. + };
  3937. + };
  3938. +
  3939. + fragment@1 {
  3940. + target = <&sdhost>;
  3941. + frag1: __overlay__ {
  3942. + brcm,overclock-50 = <0>;
  3943. + brcm,pio-limit = <1>;
  3944. + status = "okay";
  3945. + };
  3946. + };
  3947. +
  3948. + __overrides__ {
  3949. + overclock_50 = <&frag1>,"brcm,overclock-50:0";
  3950. + force_pio = <&frag1>,"brcm,force-pio?";
  3951. + pio_limit = <&frag1>,"brcm,pio-limit:0";
  3952. + debug = <&frag1>,"brcm,debug?";
  3953. + };
  3954. +};
  3955. --- /dev/null
  3956. +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
  3957. @@ -0,0 +1,32 @@
  3958. +/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
  3959. +
  3960. +/include/ "sdhost-overlay.dts"
  3961. +
  3962. +/{
  3963. + compatible = "brcm,bcm2708";
  3964. +
  3965. + fragment@3 {
  3966. + target = <&mmc>;
  3967. + sdio_mmc: __overlay__ {
  3968. + pinctrl-names = "default";
  3969. + pinctrl-0 = <&sdio_pins>;
  3970. + non-removable;
  3971. + status = "okay";
  3972. + };
  3973. + };
  3974. +
  3975. + fragment@4 {
  3976. + target = <&gpio>;
  3977. + __overlay__ {
  3978. + sdio_pins: sdio_pins {
  3979. + brcm,pins = <22 23 24 25 26 27>;
  3980. + brcm,function = <7 7 7 7 7 7>; /* ALT3 = SD1 */
  3981. + brcm,pull = <0 2 2 2 2 2>;
  3982. + };
  3983. + };
  3984. + };
  3985. +
  3986. + __overrides__ {
  3987. + poll_once = <&sdio_mmc>,"non-removable?";
  3988. + };
  3989. +};
  3990. --- /dev/null
  3991. +++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
  3992. @@ -0,0 +1,18 @@
  3993. +// Description: Overlay to enable character device interface for SMI.
  3994. +// Author: Luke Wren <luke@raspberrypi.org>
  3995. +
  3996. +/dts-v1/;
  3997. +/plugin/;
  3998. +
  3999. +/{
  4000. + fragment@0 {
  4001. + target = <&soc>;
  4002. + __overlay__ {
  4003. + smi_dev {
  4004. + compatible = "brcm,bcm2835-smi-dev";
  4005. + smi_handle = <&smi>;
  4006. + status = "okay";
  4007. + };
  4008. + };
  4009. + };
  4010. +};
  4011. --- /dev/null
  4012. +++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
  4013. @@ -0,0 +1,69 @@
  4014. +// Description: Overlay to enable NAND flash through
  4015. +// the secondary memory interface
  4016. +// Author: Luke Wren
  4017. +
  4018. +/dts-v1/;
  4019. +/plugin/;
  4020. +
  4021. +/{
  4022. + compatible = "brcm,bcm2708";
  4023. +
  4024. + fragment@0 {
  4025. + target = <&smi>;
  4026. + __overlay__ {
  4027. + pinctrl-names = "default";
  4028. + pinctrl-0 = <&smi_pins>;
  4029. + status = "okay";
  4030. + };
  4031. + };
  4032. +
  4033. + fragment@1 {
  4034. + target = <&soc>;
  4035. + __overlay__ {
  4036. + #address-cells = <1>;
  4037. + #size-cells = <1>;
  4038. +
  4039. + nand: flash@0 {
  4040. + compatible = "brcm,bcm2835-smi-nand";
  4041. + smi_handle = <&smi>;
  4042. + #address-cells = <1>;
  4043. + #size-cells = <1>;
  4044. + status = "okay";
  4045. +
  4046. + partition@0 {
  4047. + label = "stage2";
  4048. + // 128k
  4049. + reg = <0 0x20000>;
  4050. + read-only;
  4051. + };
  4052. + partition@1 {
  4053. + label = "firmware";
  4054. + // 16M
  4055. + reg = <0x20000 0x1000000>;
  4056. + read-only;
  4057. + };
  4058. + partition@2 {
  4059. + label = "root";
  4060. + // 2G (will need to use 64 bit for >=4G)
  4061. + reg = <0x1020000 0x80000000>;
  4062. + };
  4063. + };
  4064. + };
  4065. + };
  4066. +
  4067. + fragment@2 {
  4068. + target = <&gpio>;
  4069. + __overlay__ {
  4070. + smi_pins: smi_pins {
  4071. + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
  4072. + 12 13 14 15>;
  4073. + /* Alt 1: SMI */
  4074. + brcm,function = <5 5 5 5 5 5 5 5 5 5 5
  4075. + 5 5 5 5 5>;
  4076. + /* /CS, /WE and /OE are pulled high, as they are
  4077. + generally active low signals */
  4078. + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
  4079. + };
  4080. + };
  4081. + };
  4082. +};
  4083. --- /dev/null
  4084. +++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
  4085. @@ -0,0 +1,37 @@
  4086. +// Description: Overlay to enable the secondary memory interface peripheral
  4087. +// Author: Luke Wren
  4088. +
  4089. +/dts-v1/;
  4090. +/plugin/;
  4091. +
  4092. +/{
  4093. + compatible = "brcm,bcm2708";
  4094. +
  4095. + fragment@0 {
  4096. + target = <&smi>;
  4097. + __overlay__ {
  4098. + pinctrl-names = "default";
  4099. + pinctrl-0 = <&smi_pins>;
  4100. + status = "okay";
  4101. + };
  4102. + };
  4103. +
  4104. + fragment@1 {
  4105. + target = <&gpio>;
  4106. + __overlay__ {
  4107. + smi_pins: smi_pins {
  4108. + /* Don't configure the top two address bits, as
  4109. + these are already used as ID_SD and ID_SC */
  4110. + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15
  4111. + 16 17 18 19 20 21 22 23 24 25>;
  4112. + /* Alt 0: SMI */
  4113. + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
  4114. + 5 5 5 5 5 5 5 5 5>;
  4115. + /* /CS, /WE and /OE are pulled high, as they are
  4116. + generally active low signals */
  4117. + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
  4118. + 0 0 0 0 0 0 0>;
  4119. + };
  4120. + };
  4121. + };
  4122. +};
  4123. --- /dev/null
  4124. +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
  4125. @@ -0,0 +1,31 @@
  4126. +/*
  4127. + * Device tree overlay to move spi0 to gpio 35 to 39 on CM
  4128. + */
  4129. +
  4130. +/dts-v1/;
  4131. +/plugin/;
  4132. +
  4133. +/ {
  4134. + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
  4135. +
  4136. + fragment@0 {
  4137. + target = <&spi0>;
  4138. + __overlay__ {
  4139. + cs-gpios = <&gpio 36 1>, <&gpio 35 1>;
  4140. + };
  4141. + };
  4142. +
  4143. + fragment@1 {
  4144. + target = <&spi0_cs_pins>;
  4145. + __overlay__ {
  4146. + bcrm,pins = <36 35>;
  4147. + };
  4148. + };
  4149. +
  4150. + fragment@2 {
  4151. + target = <&spi0_pins>;
  4152. + __overlay__ {
  4153. + bcrm,pins = <37 38 39>;
  4154. + };
  4155. + };
  4156. +};
  4157. --- /dev/null
  4158. +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
  4159. @@ -0,0 +1,216 @@
  4160. +/*
  4161. + * tinylcd35-overlay.dts
  4162. + *
  4163. + * -------------------------------------------------
  4164. + * www.tinlylcd.com
  4165. + * -------------------------------------------------
  4166. + * Device---Driver-----BUS GPIO's
  4167. + * display tinylcd35 spi0.0 25 24 18
  4168. + * touch ads7846 spi0.1 5
  4169. + * rtc ds1307 i2c1-0068
  4170. + * rtc pcf8563 i2c1-0051
  4171. + * keypad gpio-keys --------- 17 22 27 23 28
  4172. + *
  4173. + *
  4174. + * TinyLCD.com 3.5 inch TFT
  4175. + *
  4176. + * Version 001
  4177. + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
  4178. + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support.
  4179. + *
  4180. + */
  4181. +
  4182. +/dts-v1/;
  4183. +/plugin/;
  4184. +
  4185. +/ {
  4186. + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
  4187. +
  4188. + fragment@0 {
  4189. + target = <&spi0>;
  4190. + __overlay__ {
  4191. + status = "okay";
  4192. +
  4193. + spidev@0{
  4194. + status = "disabled";
  4195. + };
  4196. +
  4197. + spidev@1{
  4198. + status = "disabled";
  4199. + };
  4200. + };
  4201. + };
  4202. +
  4203. + fragment@1 {
  4204. + target = <&gpio>;
  4205. + __overlay__ {
  4206. + tinylcd35_pins: tinylcd35_pins {
  4207. + brcm,pins = <25 24 18>;
  4208. + brcm,function = <1>; /* out */
  4209. + };
  4210. + tinylcd35_ts_pins: tinylcd35_ts_pins {
  4211. + brcm,pins = <5>;
  4212. + brcm,function = <0>; /* in */
  4213. + };
  4214. + keypad_pins: keypad_pins {
  4215. + brcm,pins = <4 17 22 23 27>;
  4216. + brcm,function = <0>; /* in */
  4217. + brcm,pull = <1>; /* down */
  4218. + };
  4219. + };
  4220. + };
  4221. +
  4222. + fragment@2 {
  4223. + target = <&spi0>;
  4224. + __overlay__ {
  4225. + /* needed to avoid dtc warning */
  4226. + #address-cells = <1>;
  4227. + #size-cells = <0>;
  4228. +
  4229. + tinylcd35: tinylcd35@0{
  4230. + compatible = "neosec,tinylcd";
  4231. + reg = <0>;
  4232. + pinctrl-names = "default";
  4233. + pinctrl-0 = <&tinylcd35_pins>,
  4234. + <&tinylcd35_ts_pins>;
  4235. +
  4236. + spi-max-frequency = <48000000>;
  4237. + rotate = <270>;
  4238. + fps = <20>;
  4239. + bgr;
  4240. + buswidth = <8>;
  4241. + reset-gpios = <&gpio 25 0>;
  4242. + dc-gpios = <&gpio 24 0>;
  4243. + led-gpios = <&gpio 18 1>;
  4244. + debug = <0>;
  4245. +
  4246. + init = <0x10000B0 0x80
  4247. + 0x10000C0 0x0A 0x0A
  4248. + 0x10000C1 0x01 0x01
  4249. + 0x10000C2 0x33
  4250. + 0x10000C5 0x00 0x42 0x80
  4251. + 0x10000B1 0xD0 0x11
  4252. + 0x10000B4 0x02
  4253. + 0x10000B6 0x00 0x22 0x3B
  4254. + 0x10000B7 0x07
  4255. + 0x1000036 0x58
  4256. + 0x10000F0 0x36 0xA5 0xD3
  4257. + 0x10000E5 0x80
  4258. + 0x10000E5 0x01
  4259. + 0x10000B3 0x00
  4260. + 0x10000E5 0x00
  4261. + 0x10000F0 0x36 0xA5 0x53
  4262. + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
  4263. + 0x100003A 0x55
  4264. + 0x1000011
  4265. + 0x2000001
  4266. + 0x1000029>;
  4267. + };
  4268. +
  4269. + tinylcd35_ts: tinylcd35_ts@1 {
  4270. + compatible = "ti,ads7846";
  4271. + reg = <1>;
  4272. + status = "disabled";
  4273. +
  4274. + spi-max-frequency = <2000000>;
  4275. + interrupts = <5 2>; /* high-to-low edge triggered */
  4276. + interrupt-parent = <&gpio>;
  4277. + pendown-gpio = <&gpio 5 0>;
  4278. + ti,x-plate-ohms = /bits/ 16 <100>;
  4279. + ti,pressure-max = /bits/ 16 <255>;
  4280. + };
  4281. + };
  4282. + };
  4283. +
  4284. + /* RTC */
  4285. +
  4286. + fragment@3 {
  4287. + target = <&i2c1>;
  4288. + __overlay__ {
  4289. + #address-cells = <1>;
  4290. + #size-cells = <0>;
  4291. +
  4292. + pcf8563: pcf8563@51 {
  4293. + compatible = "nxp,pcf8563";
  4294. + reg = <0x51>;
  4295. + status = "disabled";
  4296. + };
  4297. + };
  4298. + };
  4299. +
  4300. + fragment@4 {
  4301. + target = <&i2c1>;
  4302. + __overlay__ {
  4303. + #address-cells = <1>;
  4304. + #size-cells = <0>;
  4305. +
  4306. + ds1307: ds1307@68 {
  4307. + compatible = "maxim,ds1307";
  4308. + reg = <0x68>;
  4309. + status = "disabled";
  4310. + };
  4311. + };
  4312. + };
  4313. +
  4314. + /*
  4315. + * Values for input event code is found under the
  4316. + * 'Keys and buttons' heading in include/uapi/linux/input.h
  4317. + */
  4318. + fragment@5 {
  4319. + target-path = "/soc";
  4320. + __overlay__ {
  4321. + keypad: keypad {
  4322. + compatible = "gpio-keys";
  4323. + #address-cells = <1>;
  4324. + #size-cells = <0>;
  4325. + pinctrl-names = "default";
  4326. + pinctrl-0 = <&keypad_pins>;
  4327. + status = "disabled";
  4328. + autorepeat;
  4329. +
  4330. + button@17 {
  4331. + label = "GPIO KEY_UP";
  4332. + linux,code = <103>;
  4333. + gpios = <&gpio 17 0>;
  4334. + };
  4335. + button@22 {
  4336. + label = "GPIO KEY_DOWN";
  4337. + linux,code = <108>;
  4338. + gpios = <&gpio 22 0>;
  4339. + };
  4340. + button@27 {
  4341. + label = "GPIO KEY_LEFT";
  4342. + linux,code = <105>;
  4343. + gpios = <&gpio 27 0>;
  4344. + };
  4345. + button@23 {
  4346. + label = "GPIO KEY_RIGHT";
  4347. + linux,code = <106>;
  4348. + gpios = <&gpio 23 0>;
  4349. + };
  4350. + button@4 {
  4351. + label = "GPIO KEY_ENTER";
  4352. + linux,code = <28>;
  4353. + gpios = <&gpio 4 0>;
  4354. + };
  4355. + };
  4356. + };
  4357. + };
  4358. +
  4359. + __overrides__ {
  4360. + speed = <&tinylcd35>,"spi-max-frequency:0";
  4361. + rotate = <&tinylcd35>,"rotate:0";
  4362. + fps = <&tinylcd35>,"fps:0";
  4363. + debug = <&tinylcd35>,"debug:0";
  4364. + touch = <&tinylcd35_ts>,"status";
  4365. + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
  4366. + <&tinylcd35_ts>,"interrupts:0",
  4367. + <&tinylcd35_ts>,"pendown-gpio:4";
  4368. + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
  4369. + rtc-pcf = <&i2c1>,"status",
  4370. + <&pcf8563>,"status";
  4371. + rtc-ds = <&i2c1>,"status",
  4372. + <&ds1307>,"status";
  4373. + keypad = <&keypad>,"status";
  4374. + };
  4375. +};
  4376. --- /dev/null
  4377. +++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
  4378. @@ -0,0 +1,38 @@
  4379. +/dts-v1/;
  4380. +/plugin/;
  4381. +
  4382. +/{
  4383. + compatible = "brcm,bcm2708";
  4384. +
  4385. + fragment@0 {
  4386. + target = <&uart1>;
  4387. + __overlay__ {
  4388. + pinctrl-names = "default";
  4389. + pinctrl-0 = <&uart1_pins>;
  4390. + status = "okay";
  4391. + };
  4392. + };
  4393. +
  4394. + fragment@1 {
  4395. + target = <&gpio>;
  4396. + __overlay__ {
  4397. + uart1_pins: uart1_pins {
  4398. + brcm,pins = <14 15>;
  4399. + brcm,function = <2>; /* alt5 */
  4400. + brcm,pull = <0 2>;
  4401. + };
  4402. + };
  4403. + };
  4404. +
  4405. + fragment@2 {
  4406. + target-path = "/chosen";
  4407. + __overlay__ {
  4408. + bootargs = "8250.nr_uarts=1";
  4409. + };
  4410. + };
  4411. +
  4412. + __overrides__ {
  4413. + txd1_pin = <&uart1_pins>,"brcm,pins:0";
  4414. + rxd1_pin = <&uart1_pins>,"brcm,pins:4";
  4415. + };
  4416. +};
  4417. --- /dev/null
  4418. +++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
  4419. @@ -0,0 +1,30 @@
  4420. +/dts-v1/;
  4421. +/plugin/;
  4422. +
  4423. +/{
  4424. + compatible = "brcm,bcm2708";
  4425. +
  4426. + // There is no VGA driver module, but we need a platform device
  4427. + // node (that doesn't already use pinctrl) to hang the pinctrl
  4428. + // reference on - leds will do
  4429. +
  4430. + fragment@0 {
  4431. + target = <&leds>;
  4432. + __overlay__ {
  4433. + pinctrl-names = "default";
  4434. + pinctrl-0 = <&vga666_pins>;
  4435. + };
  4436. + };
  4437. +
  4438. + fragment@1 {
  4439. + target = <&gpio>;
  4440. + __overlay__ {
  4441. + vga666_pins: vga666_pins {
  4442. + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12
  4443. + 13 14 15 16 17 18 19 20 21>;
  4444. + brcm,function = <6>; /* alt2 */
  4445. + brcm,pull = <0>; /* no pull */
  4446. + };
  4447. + };
  4448. + };
  4449. +};
  4450. --- /dev/null
  4451. +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
  4452. @@ -0,0 +1,39 @@
  4453. +// Definitions for w1-gpio module (without external pullup)
  4454. +/dts-v1/;
  4455. +/plugin/;
  4456. +
  4457. +/ {
  4458. + compatible = "brcm,bcm2708";
  4459. +
  4460. + fragment@0 {
  4461. + target-path = "/";
  4462. + __overlay__ {
  4463. +
  4464. + w1: onewire@0 {
  4465. + compatible = "w1-gpio";
  4466. + pinctrl-names = "default";
  4467. + pinctrl-0 = <&w1_pins>;
  4468. + gpios = <&gpio 4 0>;
  4469. + rpi,parasitic-power = <0>;
  4470. + status = "okay";
  4471. + };
  4472. + };
  4473. + };
  4474. +
  4475. + fragment@1 {
  4476. + target = <&gpio>;
  4477. + __overlay__ {
  4478. + w1_pins: w1_pins {
  4479. + brcm,pins = <4>;
  4480. + brcm,function = <0>; // in (initially)
  4481. + brcm,pull = <0>; // off
  4482. + };
  4483. + };
  4484. + };
  4485. +
  4486. + __overrides__ {
  4487. + gpiopin = <&w1>,"gpios:4",
  4488. + <&w1_pins>,"brcm,pins:0";
  4489. + pullup = <&w1>,"rpi,parasitic-power:0";
  4490. + };
  4491. +};
  4492. --- /dev/null
  4493. +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
  4494. @@ -0,0 +1,41 @@
  4495. +// Definitions for w1-gpio module (with external pullup)
  4496. +/dts-v1/;
  4497. +/plugin/;
  4498. +
  4499. +/ {
  4500. + compatible = "brcm,bcm2708";
  4501. +
  4502. + fragment@0 {
  4503. + target-path = "/";
  4504. + __overlay__ {
  4505. +
  4506. + w1: onewire@0 {
  4507. + compatible = "w1-gpio";
  4508. + pinctrl-names = "default";
  4509. + pinctrl-0 = <&w1_pins>;
  4510. + gpios = <&gpio 4 0>, <&gpio 5 1>;
  4511. + rpi,parasitic-power = <0>;
  4512. + status = "okay";
  4513. + };
  4514. + };
  4515. + };
  4516. +
  4517. + fragment@1 {
  4518. + target = <&gpio>;
  4519. + __overlay__ {
  4520. + w1_pins: w1_pins {
  4521. + brcm,pins = <4 5>;
  4522. + brcm,function = <0 1>; // in out
  4523. + brcm,pull = <0 0>; // off off
  4524. + };
  4525. + };
  4526. + };
  4527. +
  4528. + __overrides__ {
  4529. + gpiopin = <&w1>,"gpios:4",
  4530. + <&w1_pins>,"brcm,pins:0";
  4531. + extpullup = <&w1>,"gpios:16",
  4532. + <&w1_pins>,"brcm,pins:4";
  4533. + pullup = <&w1>,"rpi,parasitic-power:0";
  4534. + };
  4535. +};